
find
macOS에서 명령 별칭을 사용하여 -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는 셸 기능이므로 셸에 있을 때만 존재합니다.find
alias
-exec
run 을 실행하여 셸에서 모든 명령을 실행할 수 있습니다 bash -c command
. 그러나 별칭을 허용하려면 셸을 대화형으로 실행해야 합니다.
를 실행하여 상호작용을 속일 수 있지만 bash -ic sha256
별칭 정의를 그 안에 넣었으므로 .bash_profile
대화형 셸뿐만 아니라 "로그인 셸"에도 속여야 합니다. 파일은 소위 "로그인"을 통해서만 읽을 수 있기 때문입니다. 껍데기" . 즉, 를 실행해야 합니다 bash -lic sha256
. 그러나 이렇게 하면 속도가 느려지고 세션 로그가 오염됩니다.
따라서 별칭 .bashrc
이 bash -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가 불평할 것입니다)