我想删除..和。输入ls
输出。然而,运行
ls . | sed '/^\.\./d;/^\.\//d'
对我不起作用(./
仍然在这里),我无法弄清楚原因。
答案 0 :(得分:3)
ls
有-A
选项:
ls -A
来自man ls
:
-A, --almost-all
do not list implied . and ..
答案 1 :(得分:1)
默认情况下,ls
不会首先打印这些条目,也不会打印名称以.
开头的任何其他条目。它也不会在目录名后打印一个尾部斜杠。您的普通ls
命令正在执行这些操作表明您在环境中具有别名(很可能)或可能是该函数的shell函数。您可以使用命令alias -p
列出shell环境中的当前别名。
无论哪种方式,您都可以使用绝对路径来回避别名/功能而不删除它:/bin/ls
。至少在别名的情况下,您可以指定-A
选项来禁止.
和..
,但如果支持那个(非标准)选项,则意味着它对于GNU和BSD ls
,它不会抑制其他dotfiles(这可能正是你想要的)。