実行前に各コマンドをキャプチャして装飾します。

実行前に各コマンドをキャプチャして装飾します。

コマンドラインに入力するすべてのコマンドを傍受する必要があります。飾るそれらを。

echo Hiたとえば、私が実際に実行したいものを入力するたびに/bin/wrapper "echo Hi"

再コンパイルする以外に、bashでこれを達成する方法はありますか?

編集:また、for _ in 1 2; do ping -c1 google.com; done必要があります/bin/wrapper "for _ in 1 2; do ping -c1 google.com; done"

ベストアンサー1

あなたはこれを行うことができますbash プリラン

スクリプトのダウンロード:

wget 'https://raw.githubusercontent.com/rcaloras/bash-preexec/master/bash-preexec.sh'

スクリプトソース:

source 'bash-preexec.sh'

今その内容によると使用説明書:

2つの機能事前実行そして辞書コマンドこれで定義でき、存在する場合はbash-preexecによって自動的に呼び出されます。

preexecコマンドを読み、実行直前に直ちに実行します。ユーザーが入力した文字列は最初のパラメータとして渡されます。

precmd各プロンプトの前に実行します。 PROMPT_COMMANDと同じですが、より柔軟で柔軟です。

次のように使用できます。

preexec() { echo "just typed $1"; }

precmd() { echo "printing the prompt"; }

DEBUGbash-preexecは、トラップと環境変数を使用してPROMPT_COMMAND実装されたシェルスクリプトにすぎないことにも言及する価値があります。

トラップの詳細については、DEBUGコマンドのリファレンスドキュメントを参照してくださいtrap

環境変数の詳細については、PROMPT_COMMANDBashマニュアルを参照してください。

おすすめ記事