디렉토리 나열 및 ls 이해

디렉토리 나열 및 ls 이해

ls매뉴얼 페이지 에서 나는 이것을 보았다

 -d, --directory

    list directory entries instead of contents, and do not 
    dereference symbolic links

내 현재 폴더에서:

drwxr-xr-x 2 oracle oinstall 4.0K Jul 13 11:52 folderd
drwxr-xr-x 2 oracle oinstall 4.0K Jul 13 11:52 folderc
drwxr-xr-x 2 oracle oinstall 4.0K Jul 13 11:52 folderb
drwxr-xr-x 2 oracle oinstall 4.0K Jul 13 11:52 foldera
-rw-r--r-- 1 oracle oinstall    0 Jul 13 11:52 filed
-rw-r--r-- 1 oracle oinstall    0 Jul 13 11:52 filec
-rw-r--r-- 1 oracle oinstall    0 Jul 13 11:52 fileb
-rw-r--r-- 1 oracle oinstall    0 Jul 13 11:52 filea

q1) ls -ld보여주세요 .- 왜요?

[oracle@centos1 script]$ ls -ld
drwxr-xr-x 6 oracle oinstall 4096 Jul 13 11:52 .

a를 실행하면 ls -l *폴더의 파일을 포함하여 모든 것이 제공됩니다.

[oracle@centos1 script]$ ls -l *
-rw-r--r-- 1 oracle oinstall    0 Jul 13 11:52 filea
-rw-r--r-- 1 oracle oinstall    0 Jul 13 11:52 fileb
-rw-r--r-- 1 oracle oinstall    0 Jul 13 11:52 filec
-rw-r--r-- 1 oracle oinstall    0 Jul 13 11:52 filed

foldera:
total 0
-rw-r--r-- 1 oracle oinstall 0 Jul 13 11:57 fileafolda
-rw-r--r-- 1 oracle oinstall 0 Jul 13 11:55 fileainfolda

folderb:
total 0

folderc:
total 0

folderd:
total 0

이를 실행하면 ls -ld */폴더만 올바른 결과가 표시되었습니다.

[oracle@centos1 script]$ ls -ld */
drwxr-xr-x 2 oracle oinstall 4096 Jul 13 11:57 foldera/
drwxr-xr-x 2 oracle oinstall 4096 Jul 13 11:52 folderb/
drwxr-xr-x 2 oracle oinstall 4096 Jul 13 11:52 folderc/
drwxr-xr-x 2 oracle oinstall 4096 Jul 13 11:52 folderd/

q3) ls실제로 매개변수로 허용되는 것은 무엇입니까? *이는 폴더를 포함한 모든 것을 의미합니다. */폴더만 표시합니다 . -d여기서 폴더 내용을 삭제하세요.

그렇다면 ls -ld결과가 전혀 표시되지 않는 이유는 무엇입니까? q1에 하나만 있나요 .?

즉, 이는 다음을 의미합니까?

  1. ls -l== ls -l .현재 디렉토리의 모든 내용을 나열합니다.
  2. ls -l *= 현재 디렉터리의 모든 콘텐츠 나열 + 하위 디렉터리의 콘텐츠
  3. ls -ld== ls -ld .현재 디렉토리를 나열하지만 내용은 나열하지 않습니다(따라서 .)
  4. ls -l */= 현재 디렉토리의 모든 하위 디렉토리 + 해당 내용 나열
  5. ls -ld */= 현재 디렉토리의 모든 하위 디렉토리를 나열하지만 해당 내용은 나열하지 않습니다.

q1) 그런데 다음 내용이 이해가 안 돼요.

내가 그 안에 있다고 가정해보자 /script.

ls -l *→ 하위 디렉토리의 내용을 포함하여 현재 디렉토리의 모든 내용을 나열합니다.

ls -ld *→ 하위 디렉터리의 콘텐츠를 제외하고 현재 디렉터리의 모든 콘텐츠를 나열합니다.

이는 -d현재 디렉터리 아래의 하위 디렉터리에 적용됩니다.

그러나 ls -ld .→ "-d"는 하위 디렉터리를 의미하는 것이 아니라 실제로는 현재 디렉터리 자체를 의미합니다.

-d왜 그것이 내용이 아닌 현재 디렉토리에 영향을 미치는지 이해할 수 없습니다 .

답변1

q1) ls -ld를 실행하여 다음을 표시합니다. - 이유는 무엇입니까?

인수를 지정하지 않으면 기본값은 디렉터리 ls(또는 디렉터리라고도 함) .의 콘텐츠를 나열하는 것 입니다.-d그 자체, 내용보다는. 이렇게 하면 .현재 디렉터리에 대한 정보를 얻을 수 있습니다.

ls -ld *를 실행하면 폴더의 파일을 포함한 모든 것이 제공됩니다.

아니요, 그렇지 않습니다. 현재 디렉터리에서 일치하는 모든 파일 (숨겨진 파일을 제외한 모든 파일) ls -ld *을 나열 하지만*아니요해당 디렉토리의 내용은 -d.아니요사용 -d.

ls -ld */를 실행하면 올바른 결과가 표시되고 폴더만 표시됩니다.

*/일반 파일 경로 이름 은 /.

q3) "ls"가 실제로 인수로 허용하는 것은 무엇입니까? *여기서는 폴더를 포함한 모든 것을 의미합니다. */는 폴더만 의미하며, -d는 여기에서 폴더 내용을 삭제합니다.

기본적으로 모두 정확합니다. 확장: *숨겨진 파일을 제외한 모든 항목과 일치합니다. */동일하지만 디렉터리만 일치하며 -d이 옵션이 의미하는 바는 무엇이든 맞습니다.

그렇다면 ls -ld가 결과를 전혀 표시하지 않는 이유는 무엇입니까? q1에는 하나만 있습니다.

.이는 하나의 결과를 보여줍니다. 즉 , ! 라는 현재 디렉터리를 보여줍니다 .

관련 정보