~$ echo $(ls)
arguments.txt cecho.sh Desktop Documents Downloads example.txt Music Pictures Public
~$ echo $(ls "*.txt")
ls: cannot access *.txt: No such file or directory
두 번째 서브 쉘 명령이 실패하는 이유는 무엇입니까?
답변
따옴표를 제거하면 *.txt
제대로 작동합니다. 따옴표로 쉘은 리터럴 filename을 찾습니다 *.txt
. 탐색 / 실험하려면 이름 *.txt
을 가진 파일을 작성 touch '*.txt'
하고 명령을 반복하십시오.
답변
ls "*.txt"
일반 셸에서 실행할 수없는 것과 같은 방식 으로 하위 셸에서도 실행할 수 없습니다. *.txt
따옴표 를 넣을 때 대신 수행해야 할 때라 ls
는 리터럴 파일을 검색 *.txt
했습니다.
$ echo $(ls *.txt) # => file.txt otherfile.txt
이를 수행하는 더 좋은 방법은 전혀 사용하지 않는 것 ls
입니다.
$ echo *.txt # => file.txt otherfile.txt