Windows 的「顏色 a」、「顏色 b」在 bash 終端機上等效

Windows 的「顏色 a」、「顏色 b」在 bash 終端機上等效

在 Windows 作業系統上,我可以只輸入color acolor 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 中的螢幕截圖:

在此輸入影像描述

相關內容