我在使用 ls -l 列出某些目录时遇到问题:
$ ls -l ./directory
-????????? ? ? ? ? ? file001.txt
-????????? ? ? ? ? ? file002.txt
并且 ls 工作正常:
$ ls ./directory
file001.txt file002.txt
怎么了?
答案1
检查权限./directory
:如果您对此目录具有读取权限但没有执行权限,那么您有足够的权限读取该目录中的文件列表,但您实际上无法使用这些文件或获取有关它们的信息。
示例会话:
$ cd /tmp/
$ mkdir /tmp/test
$ touch /tmp/test/file
$ ls -la test/
total 44
drwxr-xr-x 2 myself myself 4096 janv. 5 11:01 .
drwxrwxrwt 42 root root 54242 janv. 5 11:01 ..
-rw-r--r-- 1 myself myself 0 janv. 5 11:01 file
$ chmod a-x /tmp/test # remove execute permission for all
$ ls -la test/
total 0
d????????? ? ? ? ? ? .
d????????? ? ? ? ? ? ..
-????????? ? ? ? ? ? file
$ ls -ld test/
drw-r--r-- 2 myself myself 4096 Jan 5 11:01 test/
$ cat test/file
cat: test/file: Permission denied
$ chmod a+x /tmp/test # readd execute permission for all
$ ls -la test/
total 44
drwxr-xr-x 2 myself myself 4096 janv. 5 11:01 .
drwxrwxrwt 42 root root 54242 janv. 5 11:01 ..
-rw-r--r-- 1 myself myself 0 janv. 5 11:01 file
$ ls -ld test/
drwxr-xr-x 2 myself myself 4096 Jan 5 11:01 test/
$ cat test/file
$
当某些ls
版本无法显示有关文件的信息时,会显示错误消息。