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 >