find exec가 명령 별명과 작동하지 않습니까?

find exec가 명령 별명과 작동하지 않습니까?

findmacOS에서 명령 별칭을 사용하여 -exec작업을 수행 하려고 합니다 .bash_profile. 이 find명령은 다음을 표시합니다.

find: [alias cmd]: No such file or directory

내가 사용할 때

find ./ -iname *.doc -exec sha256 {} \;`

어디 alias sha256="shasum -a 256".

별칭 없이 명령을 실행하면 정상적으로 작동합니다.

정의된 명령 별명에 액세스하는 것이 불가능 해야 합니까 find, 아니면 이것이 버그입니까 find?

답변1

옵션에는 순수 실행 파일이 -exec필요하며 -es는 셸 기능이므로 셸에 있을 때만 존재합니다.findalias

-execrun 을 실행하여 셸에서 모든 명령을 실행할 수 있습니다 bash -c command. 그러나 별칭을 허용하려면 셸을 대화형으로 실행해야 합니다.

를 실행하여 상호작용을 속일 수 있지만 bash -ic sha256별칭 정의를 그 안에 넣었으므로 .bash_profile대화형 셸뿐만 아니라 "로그인 셸"에도 속여야 합니다. 파일은 소위 "로그인"을 통해서만 읽을 수 있기 때문입니다. 껍데기" . 즉, 를 실행해야 합니다 bash -lic sha256. 그러나 이렇게 하면 속도가 느려지고 세션 로그가 오염됩니다.

따라서 별칭 .bashrcbash -i.bash -li

이렇게 하면 전체 명령이 다음과 같이 됩니다.

find ./ -iname *.doc -exec bash -ic 'sha256 "$1"' -- {} \;

별칭 정의를 유지해야 하는 경우 .bash_profile명령은 다음과 같습니다.

find ./ -iname *.doc -exec bash -lic 'sha256 "$1"' -- {} \;

답변2

아니요, 귀하의 별칭은 bash에서 파생되었습니다. find환경 변수 PATH에 실행 파일이 필요합니다. ( which <cmd | alias>입력 후 아무것도 얻지 못하면 find가 불평할 것입니다)

관련 정보