Linux: ls -l พิมพ์เครื่องหมายคำถามเท่านั้น:


11

ฉันมีปัญหากับรายชื่อของไดเรกทอรีที่มี ls -l:

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

และเพียงแค่ ls ใช้งานได้ดี:

$ ls ./directory
file001.txt file002.txt

เกิดอะไรขึ้น?

คำตอบ:


14

ตรวจสอบการอนุญาตของ./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รุ่นแสดงข้อความแสดงข้อผิดพลาดเมื่อไม่สามารถแสดงข้อมูลเกี่ยวกับไฟล์


แต่จะรู้ได้อย่างไรว่าไฟล์อยู่ในtest ไดเรกทอรีหรือไม่ (ตรวจสอบถ่านสำหรับ '.' และ '.. ')?
osgx

1
@osgx: นี่เป็นส่วนหนึ่งของรายการไฟล์ที่มีชื่อไฟล์และหมายเลข inode man readdirสำหรับรายละเอียดระดับต่ำเพิ่มเติม โปรดทราบว่าพฤติกรรมนี้ไม่ได้ระบุไว้โดย POSIX
BatchyX
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.