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에 하나만 있나요 .
?
즉, 이는 다음을 의미합니까?
ls -l
==ls -l .
현재 디렉토리의 모든 내용을 나열합니다.ls -l *
= 현재 디렉터리의 모든 콘텐츠 나열 + 하위 디렉터리의 콘텐츠ls -ld
==ls -ld .
현재 디렉토리를 나열하지만 내용은 나열하지 않습니다(따라서 .)ls -l */
= 현재 디렉토리의 모든 하위 디렉토리 + 해당 내용 나열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에는 하나만 있습니다.
.
이는 하나의 결과를 보여줍니다. 즉 , ! 라는 현재 디렉터리를 보여줍니다 .