為您的終端和 shell 環境著色?
我大部分時間都在 Unix 環境中工作並使用終端仿真器。我嘗試在命令行上使用顏色,因為顏色使輸出更加有用和直覺。
有哪些選項可以為我的終端環境添加顏色?你使用什麼技巧?你遇到過哪些陷阱?
不幸的是,對顏色的支持因終端類型、作業系統、術語設置、實用程序、錯誤實現等而異。
經過大量實驗,以下是我的設置中的一些提示:
- 我傾向於設置
TERM=xterm-color
,大多數主機(但不是全部)都支持它。- 我在許多不同的主機、不同的作業系統版本等上工作。我使用來自 macOS X、Ubuntu Linux、RHEL/CentOS/Scientific Linux 和 FreeBSD 的所有東西。如果可能的話,我會盡量保持簡單和通用。
- 我使用 GNU 做了很多工作
screen
,這又增加了一層樂趣。- 許多作業系統
dircolors
預設設置和設置,我不想在一百個不同的主機上修改它。所以我嘗試堅持使用預設值。相反,我調整了終端的顏色配置。- 對某些Unix 命令(
ls
、、、、grep
)less
和Bash 提示符vim
使用顏色。這些命令似乎使用標準的“ ANSI 轉義序列”。例如:alias less='less --RAW-CONTROL-CHARS' export LS_OPTS='--color=auto' alias ls='ls ${LS_OPTS}'
我會發布我
.bashrc
的問題並回答我自己的問題 Jeopardy Style。
以下是您可以做的幾件事:
編輯器 + 程式碼
很多編輯器都支持語法高亮顯示。
vim
並emacs
預設開啟。您也可以在 下啟用它nano
。您還可以使用Pygments作為命令行工具在終端上語法高亮程式碼。
grep
grep --color=auto
突出顯示所有匹配項。您還可以使用export GREP_OPTIONS='--color=auto'
它使其在沒有別名的情況下持久化。如果你使用,即使在管道時--color=always
它也會使用顏色,這會使事情變得混亂。ls
ls --color=always
指定顏色:
export LS_COLORS='rs=0:di=01;34:ln=01;36:mh=00:pi=40;33'
(提示:
dircolors
可能會有所幫助)PS1
您可以將 PS1(shell 提示符)設置為使用顏色。例如:
PS1='\e[33;1m\u@\h: \e[31m\W\e[0m\$ '
將產生一個類似的 PS1:
$$ yellow $$盧卡斯@ubuntu:$$ red $$~$$ normal $$$ 你可以通過這個獲得真正的創意。作為一個想法:
PS1='\e[s\e[0;0H\e[1;33m\h \t\n\e[1;32mThis is my computer\e[u[\u@\h: \w]\$ '
在終端頂部放置一個帶有一些隨機資訊的欄。(為了獲得最佳效果,也請使用
alias clear="echo -e '\e[2J\n\n'"
。)擺脫轉義序列
如果某些東西在您不希望輸出顏色時卡住了,我會使用這
sed
條線來去除轉義序列:sed "s/\[^[[0-9;]*[a-zA-Z]//gi"
如果您想要更真實的體驗,您還可以去掉以 開頭的行
\e[8m
,它指示終端隱藏文本。(未得到廣泛支持。)sed "s/^\[^[8m.*$//gi"
另請注意,那些 ^[s 應該是實際的、文字的 ^[s。您可以通過在 bash 中按 ^V^[ 來鍵入它們,即
Ctrl
+V
,Ctrl
+[
。