Linux: ls-l hanya mencetak tanda tanya:


11

Saya punya masalah dengan daftar beberapa direktori dengan ls-l:

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

dan hanya berfungsi dengan baik:

$ ls ./directory
file001.txt file002.txt

Apa yang salah?

Jawaban:


14

Periksa izin ./directory: jika Anda telah membaca izin tetapi tidak menjalankan izin pada direktori ini, maka Anda memiliki hak yang cukup untuk membaca daftar file di direktori itu, tetapi Anda tidak dapat benar-benar menggunakan file-file ini atau mendapatkan informasi tentang mereka.

contoh sesi:

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

Beberapa lsversi menampilkan pesan kesalahan ketika mereka tidak dapat menampilkan informasi tentang file.


Tapi bagaimana saya bisa tahu, apakah file di dalam test direktori atau tidak (periksa d char untuk '.' Dan '..')?
osgx

1
@osgx: Ini adalah bagian dari daftar file, dengan nama file dan nomor inode. man readdiruntuk detail tingkat lebih rendah. Perhatikan bahwa perilaku ini tidak ditentukan oleh POSIX.
BatchyX
Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.