これはある程度率直であるべきだと思います...
デフォルトでは、一部のコマンドでは、そのコマンドのすべての引数の範囲を指定する他のコマンドを呼び出すことができるようにしたいです。だから...
git commit -am "test"
なります...
./shell_comand git
>commit -am "test"
>status
その場合、オートコンプリートなどの機能は当然動作しません。しかし、そうでない場合、どの程度は可能ではないかと思います。どうなるかわかりません...
答え1
私はこれがそれ自体で可能でなければならないと思いますgit
が、私はgitの専門家ではないので、シェル関数でそれを使用します。sh
互換性(たとえば)では、バイナリの代わりに呼び出される関数をbash
簡単に作成できます(不要な再帰を防ぐために、関数の内部またはBASHでバイナリへのフルパスを使用するように注意してください)。git
git
command git
function git () {
case "$1" in
"commit")
# do your stuff
/path/to/git ...
;;
*)
# call git binary with the same arguments
/path/to/git "$@"
;;
}
コマンドエイリアス()のみを使用することもできますが、alias
関数を使用するとより多くの柔軟性が得られます。
完了については、シェルの完了機能を確認してください(マンページでbash
参照してくださいcomplete
)。確実に動作するようにすることができ、複雑すぎる必要もありません。
答え2
1つの方法は、各gitコマンドのエイリアスを定義することです。通常のシェルコマンドを引き続き実行できます。必要でない場合は、PATH
存在しないディレクトリに設定します。 gitコマンドの代わりにシェルコマンドを実行するには、コマンドの前にバックスラッシュを追加します(\rm foo
ファイルの削除など)。
git_commands=$(COLUMNS=2 git --help --all | sed -n -e '1,/^----/d' -e '1,/^$/p')
for c in $git_commands; do
alias "$c=git $c"
done
zshでは、オプションが設定されている場合はこれを行うこともできますcomplete_aliases
。バッシュを知らない。