bash
Linux가 찾을 수 없는 명령을 (에) 입력하면 일반적으로 다음과 같은 작업이 수행됩니다.
$ x
x: command not found
그러나 찾을 수 없지만 어떤 의미에서는 다른 가능한 명령과 유사한 명령을 입력하면 응답은 다음과 같습니다.
$ pyp
No command 'pyp' found, did you mean:
Command 'pcp' from package 'pcp' (universe)
Command 'pype' from package 'pype' (universe)
Command 'pgp' from package 'pgpgpg' (universe)
Command 'pp' from package 'libpar-packer-perl' (universe)
Command 'php' from package 'php5-cli' (main)
Command 'gyp' from package 'gyp' (universe)
Command 'pip' from package 'python-pip' (universe)
Command 'pap' from package 'netatalk' (universe)
pyp: command not found
이는 응답에 사용되기 pyp
전에 특정 후크를 확인한다는 의미입니다.bash
pyp: command not found
"command"가 현재 저장소에 있는 브랜치 이름인지 확인하고(실제로 저장소에 있는 경우) 응답하기 전에 체크아웃을 시도하는 후크를 작성하고 싶습니다. command not found
그러나 명령이 실제로 그렇지 않은 경우에만 가능합니다. 설립하다 .
이렇게 하려면 명령을 입력하고 Enter를 누르면 프로세스에 대해 알아야 합니다. “이런 뜻이었나요?”에 답하는 절차는 어떻게 되나요? Bash에서 명령 문자열을 어떻게 얻나요?
답변1
command_not_found_handle
쉘 기능을 교체/변경해야 합니다 .
type command_not_found_handle
답변2
이 command-not-found
패키지는 Debian 및 Ubuntu에서 이러한 동작을 담당합니다. 그러나 자체 핸들러를 정의할 필요는 없습니다. command_not_found_handle
다음과 같이 사용할 수 있습니다 .
command_not_found_handle() {
if [ -d .git ] || git rev-parse --is-git-dir 2>/dev/null; then
git checkout "$1" 2>/dev/null
else
printf '%s: %s: command not found\n' "$0" "$1"
return 127
fi
}
다음과 같은 메시지를 억제합니다.귀하의 지점은 최신 "원본/마스터"입니다., &>
대신 사용 2>
: git checkout "$1" &>/dev/null
.
예
nyuszika7h@cadoth ~ > master
-bash: master: command not found
127 nyuszika7h@cadoth ~ > cd src/github/nyuszika7h/Limnoria/
nyuszika7h@cadoth ~/src/github/nyuszika7h/Limnoria master > testing
Your branch is up-to-date with 'origin/testing'.
nyuszika7h@cadoth ~/src/github/nyuszika7h/Limnoria testing > foobar
-bash: foobar: command not found
127 nyuszika7h@cadoth ~/src/github/nyuszika7h/Limnoria testing >