다음과 같은 간단한 구조를 가지고 있습니다:
project
main
aaa
aaa
test
ddd
ddd
pom.xml <--- unique regular file
현재 디렉토리가 project
실행되면 ls
명령이 나타납니다 .
main pom.xml test
여기는 모든 것이 정상입니다. 이제 다음과 같은 man ls
옵션이 d
존재합니다.
-d, --directory
list directories themselves, not their contents
따라서 ls -d
실행 시 다음 명령이 나타납니다.
.
왜? 솔직히 말해서 나는 일반 파일이 아닌 디렉토리만 기대하고 있었습니다. 예를 들어
main test
질문
d
이 명령의 옵션은 정확히 어떻게ls
작동합니까?
추가 질문:
- 무엇인가요그들의 내용이 아니라그게 정확히 무슨 뜻인가요? 각 디렉토리의 내부 내용에 관한 것인가요?
답변1
일반적으로 디렉토리를 입력하면 ls
해당 디렉토리의 내용이 표시됩니다.
예를 들어 귀하의 예에서는 다음과 같습니다.
$ ls project
main test
$ ls project/main
aaa aab
$ ls project/test
dda ddb
이 플래그를 사용하면 -d
디렉터리 자체가 나열됩니다.
$ ls -d project
project
와일드카드 같은 것을 보기 전까지는 지루하게 들립니다.
$ ls project/*
project/main:
aaa aab
project/test:
dda ddb
모든 디렉터리가 일치하는지 확인하고 해당 디렉터리에 있는 파일 목록을 얻을 수 있습니다.
그러나 -d
디렉토리 이름 자체만 얻을 수 있으며 디렉토리 내의 파일은 얻을 수 없습니다.
$ ls -d project/*
project/main project/test
답변2
ls 명령의 d 옵션은 정확히 어떻게 작동합니까?
ls -d
더 이상 디렉토리를 탐색하지 않는 것입니다. ls
인수를 사용하지 않는 것은 동일하므로 출력 ls .
만 표시됩니다 . .
사용 방법의 예는 다음과 같습니다.
$ mkdir -p {foo,bar,baz}/dir
$ ls *
bar:
dir
baz:
dir
foo:
dir
$ ls -d *
bar baz foo
일부 디렉터리 메타데이터를 보려면(예 ls -ld
: .
답변3
당신은매우다양한 문제. 그러나 혼란에 대한 짧은 대답은 다음과 같습니다.토론for ls
(지정되지 않은 경우)는 .
. ls
옵션 없이 실행 하면 다음과 같은 결과가 나타납니다.콘텐츠.
. 달리면 ls -d
얻을 수 있다.
.