我怎样才能去掉 ls 输出中的 ./ 和 ../

How can I get rid of the ./ and ../ in the ls output

我想删除 .. 和 . ls 输出中的条目。然而,运行

ls . | sed '/^\.\./d;/^\.\//d'

对我不起作用(./ 仍然在这里),我不明白为什么。

ls-A 选项正是为了这个目的:

ls -A

来自man ls

-A, --almost-all
              do not list implied . and ..

默认情况下 ls 不会首先打印这些条目,也不会打印名称以 . 开头的任何其他条目。它也不会在目录名称后打印尾部斜杠。你的普通 ls 命令正在做这些事情表明你在你的环境中有一个别名(很可能)或者可能是一个 shell 函数。您可以使用命令 alias -p.

列出 shell 环境中的当前别名

无论哪种方式,您都可以使用绝对路径避开别名/函数而不删除它:/bin/ls。在别名的情况下,至少,您可以指定 -A 选项来抑制 ...,但如果支持该(非标准)选项的含义有 GNU 和 BSD ls 然后它不会抑制其他点文件(这可能正是你想要的)。