コマンドをプロンプトにラップします。

コマンドをプロンプトにラップします。

プロンプトでコマンドの後に区切り文字を挿入できますか?例は次のとおりです。

~/Desktop: ls -al
-------------------------------------
total 80
drwx------+  6 eddie  staff   204B Apr 29 16:57 .
drwxr-xr-x+ 54 eddie  staff   1.8K Apr 30 10:54 ..

~/Desktop:

具体的には、コマンドと結果を区別しやすくするために、コマンドを実行した後に------------部分を追加したいと思います。

答え1

zshではフック機能を定義できます。preexec各コマンドを実行する前に、指定された文字列をエコーし​​ます。

Bashでは、DEBUGトラップを使用して同じタスクを実行するプリランフックを設定できます。

次のように preexec() 関数を定義できます。

preexec () { echo "-------------------------------"; }
preexec_invoke_exec () {
    [ -n "$COMP_LINE" ] && return  # do nothing if completing
    preexec
}
trap 'preexec_invoke_exec' DEBUG

詳細を見るbashには、コマンドを実行する前に実行されるフックがありますか?

私はこれがすべてのバージョンのbashで動作するとは思いません。 bash 3.2.39(1)を実行している古いUbuntuサーバーでは、help trap次のように表示されます。

SIGNAL_SPECがDEBUGの場合はARGを実行します。後ろにすべての簡単なコマンド。

bash 4.1.2(1)を実行している他のサーバーでは、次のように表示されます。

SIGNAL_SPECがDEBUGの場合はARGを実行します。今後すべての簡単なコマンド。

それが私たちに必要なすべてです。だからあなたのbashバージョンにhelp trap今後すべての簡単なコマンド。 」

答え2

シェルがbashまたはkshを使用している場合は、次のようにドットファイル(.profile、.bash_profileなど)のいずれかに関数を生成できます。

function hr {
    echo "--------------------------------------------------------------------------------"
}

&&その後、対応する区切り文字を使用するか、コマンド区切り文字として使用するたびに、コマンドの前に対応する;区切り文字を追加できます。良い:

bash-[534]$ hr && ls
--------------------------------------------------------------------------------
ddtool_23.jnlp  prtconf-pv

または

bash-[536]$ hr ; ls -la
--------------------------------------------------------------------------------
total 36K
drwxr-xr-x  2 tim staff    4 2012-12-06 15:02 ./
drwxr-xr-x 46 tim staff  134 2013-04-30 14:59 ../
-rw-------  1 tim staff 2.7K 2012-12-06 15:00 ddtool_23.jnlp
-rw-r--r--  1 tim staff  24K 2012-12-06 15:02 prtconf-pv

私はこれをします。また、より厚い区切り文字を印刷する第2の機能もあります。

function hr2 {
    echo "================================================================================"
}

hr2私はしばしばシェルスクリプトでこれらの関数を使用して、主要なタスク間、hrループステートメントのエントリ間など、スクリプトのさまざまな部分を分離します。スクリプト出力を読みやすくします。

関連情報