在 Windows 作業系統上,我可以只輸入color a
或color b
等待color c
來暫時更改終端機中的字型顏色。
bash 終端機中有執行此操作的命令嗎?
我不想做永久性的改變,只要公開會議就夠了。
答案1
你指的是命令期望值為 0-f(即十進位 0 到 15)。類似的命令將使用tput
:
tput setaf 10
(「a」是 10 的十六進位),對於前景顏色和
tput setab 10
為了背景顏色。這些是分開的術語訊息能力。
此範例假設您的終端描述至少有 16 種顏色。如果只有8個,tput
不會注意到,結果會不理想。你可以透過以下方式看到這個
tput colors
預設情況下,tput
使用 的目前值來$TERM
選擇終端描述。您可以使用該-T
選項覆蓋它。例如,如果您正在使用xterm
(與設定為「xterm」的其他終端相反TERM
),您可以使用xterm-16color
終端描述,如以下螢幕截圖所示:
(您可能會看到tput
第 15 行沒有任何有用的效果,這是預期的,因為10
超出 8 種顏色的範圍)。
終端描述,是否xterm
或者xterm-16color
(或者xterm-256color
) 講述tput
如何建立可寫入終端的轉義序列。您的 bash 提示符號也可能會傳送轉義序列,設定或重設顏色。如果您tput
在 shell 腳本中呼叫並回顯文本,您可能會看到彩色文本,而相同的命令(由 bash 提示字元分隔)的行為可能不同。此外,某些程式(例如ls
)會設定/重設顏色。這些不同的應用程式只能共享一種終端的顏色狀態;終端不會自動在它們之間切換。
測試 shell 腳本比依賴 shell 提示字元的詳細資訊更具可預測性。這是一個例子
#!/bin/sh
case $TERM in
xterm*)
TERM=xterm-256color
;;
linux*)
TERM=linux-16color
;;
esac
export TERM
for p in $(seq 0 15)
do
tput setab $p
for q in $(seq 0 15)
do
tput setaf $q
printf '%x%x' $p $q
done
tput sgr0
printf '\n'
done
以及 xterm 中的螢幕截圖: