ls -A 有什么作用?我找到了这个 shell 脚本,但我不知道 ls -A 的作用。说明书上是这样写的,ls -A == do not list implied . and ..
但我不明白这是什么意思。
dir=./$1
if [[ -z $(ls -A $dir) ]]
答案1
通常ls
不打印以点开头的文件名。对于-a
,确实如此,但其中包括.
和..
,它们存在于所有目录中,因此不是很有趣。用-A
它打印除这两个之外的所有内容。
$ touch normal .hidden
$ ls
normal
$ ls -a
./ ../ .hidden normal
$ ls -A
.hidden normal
在该 if 语句中,命令替换$( .. )
捕获 的输出ls
,并[[ -z ... ]]
测试它是否为空字符串。也就是说,目录中没有文件。
通常,读取 的输出ls
并不是一个好主意,如果你想在 shell 中循环文件,你可以使用*
.不过,在这里,它应该可以工作,除了以下事实:如果给定的目录名包含空格(或文件名全局字符),它们将在 的命令行上展开ls
,这可能会弄乱结果。
看: