2017-02-02 16 views
-1

端末のbashコマンドの出力をMacで読むと、コマンドの出力の開始位置を特定するのが難しいです。私は最新のコマンドの出力を赤で色付けしたい。新しいコマンドを実行すると、以前のコマンドの出力が黒である間にそのコマンドの出力だけが赤になるようにする。端末の最後のコマンドのカラー出力

編集:私は別のコマンドを入力したときの例として

echo hi 
hi <- should be red 

はその後、ここ

echo hi 
hi <- should be black 
echo 'hi there' 
hi there <- should be red 
+1

一般的な手法は、プロンプトに色を追加することです。たとえば、PS1の初めに、\ 033 [01; 31m'を赤色にして、PS1の末尾に\ 033 [01; 32m]を入れてテキストを緑色に変換します。また、bashがプロンプトの長さを適切に計算してカーソルを正しい場所に置くことができるように、カラーコマンドの前後に '\ ['と '\]'を追加することもできます。 –

+0

ちょうど質問:この質問はなぜ悪いですか?私はMacの端末で何かをする方法を尋ねています。それは非常に特殊な項目であり、特定の答えがあります。これはプログラミング関連です。 – sakurashinken

+0

[mcve]の提供を含む[ask]のルールに従いません。私は個人的に文章を解析できません。最後のコマンドの出力を赤で色付けしたいのですが、次に新しいコマンドを実行し、出力の残りの部分を黒色にし、新しい最新の出力を赤色にします。 「残りの部分」とはどういう意味ですか?それは "新しい最新"と同じですか? 2つのコマンドを同時にバックグラウンドで実行しようとしていますか? [mcve]は非常に便利です。 –

答えて

1

はそれを行うためのシェル関数である:

xtrace() { 
    awk ' 
    BEGIN { 
    d = "\47"; printf "\33[36m" 
    while (++q < ARGC) { 
     x = split(ARGV[q], y, d); y[1] 
     for (z in y) { 
     printf "%s%s", !x || y[z] ~ "[^[:alnum:]%+,./:[email protected]_-]" ? d y[z] d : y[z], 
     z < x ? "\\" d : "" 
     } 
     printf q == ARGC - 1 ? "\33[m\n" : FS 
    } 
    } 
    ' "[email protected]" 
    "[email protected]" 
} 

〜/ .profに入れてIleまたは同様の、このような実行:

$ xtrace echo alfa 'bravo charlie' 
echo alfa 'bravo charlie' 
alfa bravo charlie 

コマンドが正常に印刷コマンド の出力に続いて、青色で印刷されます。

colored output

Source

0

それはあなたが尋ねた正確何はありませんが、ターミナルは "マーク" と呼ばれる機能があります。デフォルトでは、自動的に各コマンドラインがウィンドウに表示されます。マークはウィンドウの余白にかすかな角括弧([、])として表示されます。

[編集]> [ナビゲート]メニューの項目を使用してマーク間をジャンプできます。これらのメニュー項目のキーボードショートカットを使用すると便利です。たとえば、⌘↑(前の項目にジャンプ)。 Shiftキーを押し続けると、Select to Previous Markに変わります。これにより、コマンド出力の開始を簡単に見つけることができます。

関連する問題