Unix Power Tools의 이상한 별칭 "find . -name '*\!{*}*' -ls"

Unix Power Tools의 이상한 별칭 "find . -name '*\!{*}*' -ls"

Unix Power Tools 3판 175페이지에서:

섹션 9.27에서는 디렉터리 중간 경로를 일치시키는 방법을 보여줍니다. 다음은 매우 편리할 수 있는 더 간단한 "파일 찾기" 별칭입니다.

alias ff "find . -name '*\!{*}*' -ls"

파일이나 디렉터리 이름을 지정하면 별칭은 해당 인수가 포함된 파일이나 디렉터리 이름의 긴 목록을 제공합니다.

(이것도사용 가능한 온라인.)

-name나는 운영자의 주장을 전혀 이해하지 못합니다. 이것은 철자 오류인가요? 특정 버전에서만 작동합니까 find? 백슬래시, 중괄호 및 중괄호는 무엇을 합니까?

답변1

이것은 csh별칭입니다. 주어진 인수는 -name인터프리터가 아닌 쉘에 의해 해석됩니다 find. 내가 올바르게 이해했다면 는 \!{*}주어진 인수로 대체됩니다 ff(보통은 \!*). 이 책이 쉘을 지정하지 않는다는 것이 정말 이상합니다.

기본적으로 별칭을 정의하려면 다음을 입력하십시오.

ff test

달리다

find . -name '*test*' -ls

(그리고 여러 인수를 정상적으로 처리하지 않습니다).

이 책의 두 번째 판에서 텍스트는 질문에 제공된 것과 동일한 방식으로 별칭을 정의하고 csh_init함께 제공되는 CD의 및를 가리킵니다. sh_init(이것은 섹션 17.04입니다.) 흥미롭게도 csh_initCD에는 별칭이 정의되어 있지 않지만 sh_init동등한 기능은 다음과 같습니다 ff.

ff() { find . -name "*$1*" -ls; }

관련 정보