껍질의 특징을 움켜 쥐고 있습니까? 하나 개 이상의 파일이있는

나는 이것이것 과 같은 많은 질문과 답변을 읽습니다.

명령을 실행하기 전에 셸에서 와일드 카드를 확장했으며 셸의 기능이라는 것을 알고 있습니다. 또한 와일드 카드는 많은 인수를 허용 할 수있는 명령과 함께 작동합니다. 에서 find . -name *.rb 우리는 현재 디렉토리에있는 하나 개 이상의 파일이있는 경우 find발견 여러 인자와이있는 해결 방법을 받아 들일 수 없기 때문에 우리에게 오류를 줄 것이다 :

find . -name "*.rb"
find . -name '*.rb'
find . -name \*.rb

별표에서 벗어나 쉘의 확장을 방지하지만 와일드 카드는 쉘의 기능입니다. 별표 셸을 탈출하면 그 의미를 알지 못하고이라는 파일을 찾아야 *.rb하므로이 경우 별표가 어떻게 확장됩니까?



답변

예, 쉘 *은 디렉토리에 문자가있는 *.rb모든 파일과 문자가 있고 끝나는 모든 파일로 이해 .rb하여 확장합니다.

find명령 자체는 globbing을 받아들입니다.

당신이 인용하지 않으면 *다음 쉘은 그것을 확장됩니다 전에find 명령을 인수, 그래서 대신 글로브 볼 *.rb에 전달 find, 전달 될 디렉토리에있는 글로브 일치하는 모든 파일의 이름을 find, 그리고 find그 해석을 시도합니다 인수로, 오류가 발생하거나 적어도 원하는 결과가 아닐 수 있습니다 (현재 디렉토리에 일치하는 파일이없는 경우에만 올바르게 작동 함)