如何在 Bash 中設定命令提示字元的顏色?

如何在 Bash 中設定命令提示字元的顏色?

在 Bash 中瀏覽最後一個命令的結果有點困難,因為命令提示字元和結果的顏色相同。這使得很難分離連續命令的結果。

例如,如何將顏色變更為粉紅色?

答案1

@Rob是對的;具體來說,要更改為淺紅色(粉紅色不是可用的顏色):

PS1 = "\[\033[1;31m\]\u:\w\$\[\033[0m\] "
#      ^^^^^^^     ^^                    Begin/end ANSI escape
#             ^^^^^                      "light red foreground"
#                    ^^^^^^^             Your original prompt
#                           ^^^^^^^^^^^  Reset color back to default foreground

您需要使用由和1;31m括起來的 ANSI 轉義序列(在本例中為「淺紅色前景」的程式碼)。\[\033[\]

編輯:淺紫色可能更接近您想要的顏色;更改PS1留給讀者當作練習。

參考@linux文檔項目

答案2

如果您想要替代解決方案,您可以建立一個小腳本來設定終端會話 PS1 顏色,而不使其永久化(除非您希望永久顏色遵循 Alex 的解決方案)。

如果我們建立yellow.sh並儲存到/usr/bin目錄,然後使檔案可執行,chmod +x yellow.sh我們可以編輯yellow.sh並新增以下程式碼:

#!/bin/bash
clear

# Yellow color variable
ylw='\x1b[93m'

echo -e "${ylw}"
clear

執行此腳本會將終端顏色變更為黃色。您可以使用以下程式碼以相同的方式重設 PS1 顏色:

#!/bin/bash
clear

# Reset color to default
rst='\x1b[0m'

echo -e "${rst}"
clear

以下是您可以使用的一些顏色代碼變數的快速列表。

black=$'\x1b[90m' # Dark gray. Not used much.
red=$'\x1b[91m'
green=$'\x1b[92m'
yellow=$'\x1b[93m'
blue=$'\x1b[94m'
purple=$'\x1b[95m'
cyan=$'\x1b[96m'
pink=$'\x1b[97m'
default=$'\x1b[0m' # Reset to default color.

簡單腳本中常用指令的用法:

echo -e "${red} $(ls $1) ${default}" # Argument would be the directory you want to list.

這可以相當快地完成,具體取決於您如何設定要使用的顏色。我提供的顏色代碼並非全部。根據您的終端支援的顏色,您可以使用 256 種顏色。

相關內容