Linux: ls -l sadece soru işaretlerini yazdırır:


11

Ls -l ile bazı dizini listeleme ile ilgili bir sorun var:

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

ve sadece ls iyi çalışıyor:

$ ls ./directory
file001.txt file002.txt

Yanlış olan ne?

Yanıtlar:


14

Şu izinleri kontrol edin ./directory: okuma izniniz varsa ancak bu dizinde izinleri yürütmüyorsanız, o dizindeki dosyaların listesini okumak için yeterli haklara sahip olursunuz, ancak bu dosyaları kullanamaz veya bunlar hakkında bilgi alamazsınız.

örnek oturum:

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

Bazı lssürümler dosyalar hakkında bilgi görüntüleyemediklerinde hata iletileri gösterir.


Ama ls nasıl bilir, dosya test dizin içinde mi değil mi (d. '.' Ve '..' için kontrol edin)?
osgx

1
@osgx: Bu, dosya adının ve inode numarasının bulunduğu dosya listesinin bir parçasıdır. man readdirdaha düşük seviye ayrıntı için. Bu davranışın POSIX tarafından belirtilmediğini unutmayın.
BatchyX
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.