2

I'd like to change my Bash configuration, so when I type something (e.g. foo bar) in the command prompt, it really executes h foo bar.

I want to do it because I often use hilite (aliased as h) to color stderr in red, and I would like to make this behaviour permanent.

Other use I see would be interacting with Git, as I write lots of commands like:

git status
git add ...
git commit ...

I guess I could use preexec_invoke_exec to execute something before the command is being run, but I don't know how can I change the command or prevent it from executing.

Any ideas?

4

2 に答える 2

2

returnキーをバインドして挿入することで、これを実現できhます。これをあなたのに追加することでこれを行うことができます.input.rc

Return: "\C-ah\ \n"

またはこれbindをあなたに入れます.bashrc

bind 'RETURN: "\C-ah \n"'   

これらの人への称賛)。

いくつかの問題があります: 明らかに、これは bash のみであり、これは場所によってはかなり奇妙な動作をする可能性があるため (今は適切な例を思いつきません)、これが「良い」バッシングであるとは言えません。とりあえず。

私は個人的にスキップhiliteして、すべてを純粋に保ちbashます。代わりに、ストリームを色付きの/にリダイレクトするために、各コマンドに何かを追加する方法を探してみてください...しかし、それは私が推測する好みの問題です:)stderrechoprintf

于 2012-07-11T16:01:44.097 に答える
0

指定したコマンドとは異なるコマンドを実行するには、キャッチするコマンドの bash 関数を作成するのが最善の策かもしれません。

「hilite」については何も知りませんが、たとえば/usr/bin/hiliteにバイナリをインストールする場合は、次を使用できます。

git () {
  /usr/bin/hilite /usr/bin/git "$@"
}

したがって... gitbash プロンプトで実行すると、bash は実際に を実行hiliteし、/usr/bin/gitおよび残りのコマンド ライン引数を への引数として使用しますh

これは、bash だけでなく、従来の Bourne シェルでも機能することに注意してください。

于 2012-07-11T15:27:03.900 に答える