Linux: ls -l druckt nur Fragezeichen:

9566
osgx

Ich habe ein Problem mit der Auflistung einiger Verzeichnisse mit ls -l:

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

und nur ls funktioniert gut:

$ ls ./directory file001.txt file002.txt 

Was ist falsch?

9

1 Antwort auf die Frage

12
BatchyX

Überprüfen Sie die Berechtigungen von ./directory: Wenn Sie über Leseberechtigungen verfügen, aber keine Berechtigungen für dieses Verzeichnis haben, verfügen Sie über ausreichende Rechte, um die Liste der Dateien in diesem Verzeichnis zu lesen. Sie können diese Dateien jedoch nicht verwenden oder Informationen darüber erhalten.

Beispielsitzung:

$ 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 $ 

Einige lsVersionen zeigen Fehlermeldungen an, wenn sie keine Informationen zu Dateien anzeigen können.

Aber wie kann ich wissen, befindet sich die Datei im `test'-Verzeichnis oder nicht (d Char für '.' Und '..')? osgx vor 11 Jahren 0
@osgx: Dies ist ein Teil der Dateiliste mit dem Dateinamen und der Inode-Nummer. `man readdir` für mehr Details auf niedriger Ebene. Beachten Sie, dass dieses Verhalten von POSIX nicht angegeben wird. BatchyX vor 11 Jahren 0