コマンドライン「環境」をプログラムコマンドに変更

コマンドライン「環境」をプログラムコマンドに変更

コンソールで「environment」コマンドで変更できますか?説明のために「git」を例に挙げてみましょう。 gitリポジトリのプログラミングと作業中にリポジトリパスに変更し、「git x...」、「git y...」などの多くの「git」コマンドを実行します。だから私が望むのは、「git」を「git」に変更し、常に「git」を入力する必要なしに「x...」と「y...」だけを入力することです。機能が欲しくないですか?

答え1

「git shell」をリクエストしました。名前もあるようです。git-sh

私が知る限り、普遍的な解決策はありませんが、gitは単に独自のコマンドを実行するためのカスタムシェルを持つ唯一のプログラムではありません。同様の例にはmysql、などがありますtelnetftp実際には、独自のシェル環境を組み込んだプログラムがかなり多くあり、コマンドを引数として提供したり、シェルから始めて内部でコマンドを実行したりできます。

この文脈では、タブの完成も便利です。良いタブ補完ライブラリには、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~/.zshrctoggle_git_aliasesg

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'

走る~/.bashrcgx走ります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など、好きなように使用できます。ちょうどアイデアです。これが私がすることです。

関連情報