서브 쉘에서 ls * .txt를 사용할 수없는 이유는 무엇입니까? example.txt Music

~$ 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


답변