bashコマンドでgit checkoutが停止しました。見つかりません。

bashコマンドでgit checkoutが停止しました。見つかりません。

bashLinuxが見つからないコマンドを入力すると、通常は次のことが行われます。

$ 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前に特定のフックをチェックすることを意味します。bashpyp: 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 >

源泉

zsh - 現在のディレクトリがGitリポジトリであることを確認します。

関連情報