コンソールで「environment」コマンドで変更できますか?説明のために「git」を例に挙げてみましょう。 gitリポジトリのプログラミングと作業中にリポジトリパスに変更し、「git x...」、「git y...」などの多くの「git」コマンドを実行します。だから私が望むのは、「git」を「git」に変更し、常に「git」を入力する必要なしに「x...」と「y...」だけを入力することです。機能が欲しくないですか?
答え1
「git shell」をリクエストしました。名前もあるようです。git-sh
。
私が知る限り、普遍的な解決策はありませんが、gitは単に独自のコマンドを実行するためのカスタムシェルを持つ唯一のプログラムではありません。同様の例にはmysql
、などがありますtelnet
。ftp
実際には、独自のシェル環境を組み込んだプログラムがかなり多くあり、コマンドを引数として提供したり、シェルから始めて内部でコマンドを実行したりできます。
この文脈では、タブの完成も便利です。良いタブ補完ライブラリには、gitなどのプログラムに対して可能なすべてのコマンドと引数があります。
注:ここでは、「git shell」は正しい用語ですが、システムログインシェルを置き換え、git操作に対する制限された権限のみを提供するように設計された「git-shell」プロジェクトと混同しないでください。
答え2
シェルでは、gitコマンドをエイリアスとして定義できます。 gitコマンドがシェルコマンドでもある場合は、選択する必要があります。たとえばgit diff
、、git mv
...この機能を使用すると、all_git_aliases_on
すべてのgitコマンドをプレフィックスなしで使用でき、シェルgit
コマンドがない場合はunambiguous_git_aliases_on
プレフィックスなしでgitコマンドのみを使用できますgit
。この名前。
この関数はgit_aliases_off
これらのエイリアスを削除します。 gitコマンドと同じ名前のエイリアスがある場合(例:)は復元されalias mv='mv -i'
ず、リセットする必要があります(その定義を関数に追加git_aliases_off
)。
または、unambiguous_git_aliases_on
から電話をかけたり、短いエイリアス(たとえば)を提供したりできます。~/.bashrc
~/.zshrc
toggle_git_aliases
g
git_commands=$(git help -a | grep '^ *[a-z]')
git_aliases=
all_git_aliases_on () {
for x in $git_commands; do
alias $x="git $x"
git_aliases="$git_aliases $x"
done
}
unambiguous_git_aliases_on () {
for x in $git_commands; do
if ! type $x >/dev/null 2>/dev/null; then alias $x="git $x"; fi
git_aliases="$git_aliases $x"
done
}
git_aliases_off () {
unalias $git_aliases
git_aliases=
}
toggle_git_aliases () {
if [ -n "$git_aliases" ]; then
all_git_aliases_on
else
git_aliases_off
fi
}
答え3
ファイルにエイリアスを作成してこれを行うことはできますが、~/.bashrc
どのエイリアスを選択したら他のコマンドラインプログラム/スクリプトを上書きする可能性があるため、注意する必要があります。以下は使用例ですls
。
alias l = 'ls -Alh'
したがって、l
コマンドラインに入力するとbashが実行されますls -Alh
。だからあなたはこれを行うことができます:
alias gx = 'git x'
alias gy = 'git y'
走る~/.bashrc
とgx
走りますgit x
。
私は平均的なプログラムで動作する一般的な解決策を知りません。
答え4
私が作ってみましょうshell emulator
。これは基本的に偽のプロンプトを提供し、特定の入力値を受け入れる小さなスクリプトです。たとえば、次のようになります。
user@host ~$ gitshell
Welcome to git-shell. Type help for command info
>> help
help - display this message
x - do x
y - do y
exit - close the shell
>> exit
user@host ~$
コーディングは難しくありません(PythonやPerlなどを使用して)。 $PATHに入れると終わりです。 git、hg、svnなど、好きなように使用できます。ちょうどアイデアです。これが私がすることです。