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버전은 파일에 대한 정보를 표시 할 수 없을 때 오류 메시지를 표시합니다.


그러나 ls가 알 수있는 방법은 파일이 test 디렉토리에 있는지 아닌지 (d char에서 '.'및 '..'을 확인하십시오)?
osgx

1
@osgx : 파일 이름과 inode 번호가있는 파일 목록의 일부입니다. man readdir더 낮은 수준의 세부 사항. 이 동작은 POSIX에 의해 지정되지 않았습니다.
BatchyX
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.