web-dev-qa-db-ja.com

バッシュをできるだけ魚に近づけます

私は魚のシェルが大好きでMacOSでのみ使用しますが、インストールされているのはそれだけなのでbashをどこでも使用します。 2つのシェルの構成ファイルを維持するのに苦労したので、魚の使用をやめ、代わりにbashに戻ることにしました。できるだけ簡単にするには、bashでどの構成オプション/プラグイン/などを使用して、できるだけ魚に近づける必要がありますか?

私が最も見逃しているもの:

  • 自動補完サポート:fishはすべてのコマンドを記憶し、部分的(場合によっては巨大な)コマンドで補完を行い、使用するすべてのcmd-lineアプリを理解し、コマンドで補完を提供するようです。コマンドごとに、魚は淡色表示されます。コマンドを入力すると、タブを押すと自動補完されます。
  • git support:githubリポジトリにあるかどうか、ブランチの名前、変更されているかどうか、またはusername @ hostnameの横に素敵な色を使用して明確に表示されているかどうかをfishが表示します。これをbashにも追加したいと思います
9
gnzlbg

bashを構成するための多くのオプションがあります。次のコマンドを使用して、簡単なコマンド履歴アクセスを提供します:-

bind '"\e[A": history-search-backward'
bind '"\e[B": history-search-forward'

これらは Up そして Down 矢印を使用して、コマンドラインのカーソルの前の文字で始まるコマンドのコマンド履歴を上下にスキャンします(WindowsのTCCと同様)。

プロンプトに関しては、プロンプトが出力されるたびに実行されるコマンドを置くことができます。私が使う:-

PS1="\`curspos -n>/dev/tty\`\`[ \$BASH_LEVEL != 1 ]&&echo \"[\$BASH_LEVEL]\"\`\\t[\\w/]\\\$ "

これにより、各プロンプトで2つのコマンドが呼び出されます。

  • cursposは、カーソルの位置を確認し、最初の列にない場合は新しい行を出力するために私が作成したスクリプトです(不要な空白行に悩まされました)。
  • BASH_LEVELが1でない場合、プロンプトの前に角かっこで囲まれたレベルが表示されるので、子シェル(例:[2]15:55:32[~/]$)。

これらはどちらも要件に直接答えるものではありませんが、プロンプト文字列で使用できる能力を示しています。あなたの場合、単にスクリプトまたは関数(gitcheckなど)を先頭に追加して、プロンプトの残りの部分の前に実行することができます。これにより、表示したい情報をプロンプトの一部として目的の形式で出力できます。

最後に、fishは多くのLinuxディストリビューション(Ubuntuリポジトリなど)で使用できるため、パッケージをインストールできない場合にのみ、これらのbashカスタマイズを行う必要があるとコメントします。

6
AFH

自動補完に関して、bashはGNU Readlineを使用して、タブ補完、および履歴のルックアップと補完を提供します。タブ補完は、コマンド名、ファイル、および-補完スクリプトがあります—オプションと引数。 Up または Down 履歴を直線的に移動します。または、検索するには次のように入力します CtrlR 覚えているコマンドの任意の部分。 Readlineは、bashがインストールされているほぼすべての場所にインストールされ、特に最近のOSに当てはまります。

Gitの懸念に答えるために、Git自体に プロンプトに色を付ける を実行し、bashシェルなどに対して tab-completion を実行するスクリプトが含まれています。 Git for Windowsをインストールしたとき、それと一緒に配布されたbashプログラムは、これらを自動的に使用するように事前に調理されています。

Bashに慣れている場合は、おそらく Macにgitプロンプトを追加 するのは難しくありません。 BashはPS1変数の内容からプロンプトを生成します。これにより、任意の関数を実行してプロンプトの一部を生成でき、これらの巧妙なスクリプトを実行できます。他のシェルと同様に、bashは色を生成するために基礎となる端末エミュレーターに依存しています。プロンプトに設定したテキストを端末エミュレータに渡すだけです。適切な ANSIコードPS1プロンプトに追加するだけで、カラー出力が得られます。

3
jpaugh