Linux: ls -l druckt nur Fragezeichen:

11

Ich habe ein Problem mit der Auflistung eines Verzeichnisses mit ls -l:

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

und es funktioniert einfach gut:

$ ls ./directory
file001.txt file002.txt

Was ist falsch?

osgx
quelle

Antworten:

14

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

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.

BatchyX
quelle
Aber wie kann ich wissen, test ob sich die Datei im Verzeichnis befindet oder nicht (überprüfen Sie d char auf '.' Und '..')?
Osgx
1
@osgx: Dies ist Teil der Dateiliste mit dem Dateinamen und der Inode-Nummer. man readdirfür mehr Details auf niedriger Ebene. Beachten Sie, dass dieses Verhalten von POSIX nicht angegeben wird.
BatchyX