2017-02-02 58 views
-1

當我在mac上讀取終端中bash命令的輸出時,發現很難找到命令輸出開始的位置。我想用紅色將最新命令的輸出着色,然後當我運行一個新命令時,只有該命令的輸出爲紅色,而先前命令的輸出爲黑色。終端中最後一個命令的顏色輸出

編輯:

作爲一個例子,

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]。我個人無法解析'我想用紅色將最後一個命令的輸出着色,然後當我運行一個新命令時,讓其餘的輸出重新着色爲黑色,並且新的最新輸出爲紅色。 「其餘」是什麼意思?這與「新的最新」還是別的?你是否試圖在背景中同時運行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鍵,則更改爲選擇前一個標記。這些可以更容易地找到命令輸出的開始。