Linux: ls -l печатает только вопросительные знаки:

9423
osgx

У меня проблема с перечислением некоторых каталогов с помощью ls -l:

$ ls -l ./directory -????????? ? ? ? ? ? file001.txt -????????? ? ? ? ? ? file002.txt 

и просто ls работает хорошо:

$ ls ./directory file001.txt file002.txt 

Что случилось?

9

1 ответ на вопрос

12
BatchyX

Проверьте разрешения ./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версии показывают сообщения об ошибках, когда они не могут отобразить информацию о файлах.

Но как ls может узнать, находится ли файл в каталоге `test` или нет (проверьте d char для '.' И '..')? osgx 11 лет назад 0
@osgx: это часть списка файлов с именем файла и номером индекса. `man readdir` для более низкого уровня детализации. Обратите внимание, что это поведение не указано в POSIX. BatchyX 11 лет назад 0

Похожие вопросы