ls -d가 어떻게 작동하는지 이해하려고 노력 중입니다. 다른 ls -d 질문을 읽었지만 왜 ls -d *
ls -d와 다르게 작동하는지 묻는 사람은 없습니다 ls -d */
. 마지막 구분 기호가 왜 그렇게 중요한가요?
ls *
같은 방식으로 행동 하므로 같은 방식 으로 ls */
기대 ls -d *
하고 일합니다.ls -d */
대신 현재 디렉터리의 디렉터리 ls -d *
목록을 실행하는 것과 마찬가지로 현재 디렉터리의 모든 파일을 나열하십시오 . 왜 그럴까요?ls
ls -d */
답변1
ls *
그리고ls */
똑같이 행동하세요.
아니요, 그렇지 않습니다. 작업 디렉터리에 파일이 있으면 첫 번째 명령에는 나열되지만 두 번째 명령에는 나열되지 않습니다.
ls
명령줄에 전달된 파일과 디렉터리가 나열됩니다(해당 내용 포함). 쉘 와일드카드를 사용하면 쉘이 대체됩니다.무늬"파일 이름의 알파벳순 목록"(참조파일 이름 확장자).
이 패턴은 *
현재 디렉터리(로 시작하는 숨겨진 파일 제외 .
) 의 모든 파일 및 디렉터리와 일치하며 */
디렉터리(숨겨진 디렉터리 제외)만 일치합니다.
이 스위치는 -d
디렉터리 내용 목록을 비활성화하지만 ls에 전달된 파일은 계속 나열됩니다.
답변2
대답은 다음과 같습니다. 결말은 /
ls가 디렉토리만 보도록 강제합니다.
동작은 일관됩니다( 유무에 관계없이 -d
).
약간의 테스트:
mkdir /tmp/test
touch /tmp/test/a
mkdir /tmp/test/b
touch /tmp/test/b/c
cd /tmp/test
그런 다음 실행하면 ls *
차이점 ls */
을 알 수 있습니다.