如何在 Linux 中更改 Bash Shell 提示多彩

我們大多數人都使用 shell 提示符。 大多數情況下,Linux 發行版顯示主機名和當前工作目錄。 但可能只有少數人知道自定義 Bash 提示。 您會很高興知道您可以通過在工作時向命令提示符添加一些重要信息來更改 shell 提示的顏色來給您的朋友留下深刻印像或讓您的生活變得輕鬆。

在本文中,我將解釋如何以一些簡單的方式更改顏色或自定義 Bash 提示。

了解 BASH

這 bash shell 是任何 Linux 發行版下的默認設置。 提示是通過稱為 PS1 的特殊 shell 變量進行控制的。 還有其他變量,如 PS2、PS3 和 PS4。 當 Bash 準備好讀取命令時,它會顯示主要提示 PS1。 當需要更多輸入來完成命令時,它會顯示輔助提示 PS2。

簡而言之, bash 允許通過插入許多反斜杠轉義的特殊字符來自定義這些提示字符串。

顯示當前的 Bash 提示

您可以通過運行以下命令來查看當前的 Bash Prompt 狀態:

# echo $PS1
[u@h W]$

默認情況下,命令提示符設置為 [u@h W]$。 每個反斜杠轉義的特殊字符都可以按如下方式解碼:

  • u : 顯示當前用戶名。
  • h : 顯示主機名
  • W : 打印當前工作目錄的基址。
  • $ : 如果有效UID為0則顯示#(表示root用戶),否則顯示$。

對於 root 以外的 Unix 用戶,將顯示如下:

[linodadmin@centos-01 ~]$

修改 Bash 提示

如前所述, bash prompt 由一個名為 PS1 的變量控制,我們可以在你的 .bashrc 文件中調整這個變量來自定義你的提示。

此外,如果您想讓這些更改對系統上的所有系統用戶或全局可用,您需要做的就是在 /etc/bash.bashrc 文件(在 Debian 和 Ubuntu 系統上)或 /etc/bashrc(在其他 Linux 發行版上)而不是 ~/.bashrc。

Bash 允許您使用一些快捷方式來檢索詳細信息,例如用戶名、主機名、當前工作目錄、日期和時間等。這些快捷方式稱為轉義序列。

拿一個 example,您想以 12 小時格式顯示用戶名、主機名、當前目錄和時間,後跟 $。 然後可以通過使用這些顯示所需信息的轉義序列修改 PS1 變量來檢索它,如下所示:

  • u : 顯示當前用戶名。
  • h : 顯示主機名
  • W : 打印當前工作目錄的基址。
  • @ : 以 12 小時 am/pm 格式顯示當前時間
$ export PS1="[u@h W @]$"
[linodadmin@centos-01 ~ 01:50 PM]$

這將只允許臨時更改您的 Bash 提示。 如果您需要對後續終端進行永久更改,您可以使用此 PS1 值 (PS1=”[u@h W @]$”) 到文件末尾。

查看一些轉義序列列表,它們將幫助我們檢索所需的信息。

  • u 當前用戶的用戶名,
  • w 當前工作目錄
  • W 當前工作目錄的最後一個片段。 為了 example,如果您當前位於 /home/linodadmin/var,這將為您提供 var。
  • h 計算機的名稱,最多為一個點 (.)。 為了 example, 如果您的計算機名為 centos-01.linoxide.com ,則它會為您提供 centos-01。
  • H FQDN 主機名
  • d “Weekday Month Date”格式的日期(例如“Tue 21 March”)
  • t 24 小時 HH:MM:SS 格式的當前時間
  • T 12 小時 HH:MM:SS 格式的當前時間
  • @ 12 小時制 AM/PM 格式的當前時間
  • n 移至下一行。
  • ! : 此命令的歷史編號
  • # : 該命令的命令號
  • $ : 如果有效 UID 為 0,則為 #,否則為 $
  • j :當前由外殼管理的作業數

為提示添加顏色

大多數情況下,系統管理員希望為他們沉悶的 shell 提示添加一些顏色。 這可以藉助 PS1 變量中的 ANSI 轉義序列來實現。 這些轉義序列需要包含在 [ and ] 以便正常工作。 以一種簡單的方式,我們可以使用此命令語法為 shell 提示添加顏色。

'e[x;ym $PS1 e[m'

Where:

  • e[ : Start color scheme.
  • x;y : Color pair to use (x;y)
  • $PS1 : Your shell prompt variable.
  • e[m : Stop color scheme.

Check out the list of color codes which can be used:

txtblk='e[0;30m' # Black - Regular
txtred='e[0;31m' # Red
txtgrn='e[0;32m' # Green
txtylw='e[0;33m' # 
txtblu='e[0;34m' # Blue
txtpur="e[0;35m" # Purple
txtcyn='e[0;36m' # Cyan
txtwht="e[0;37m" # White
bldblk='e[1;30m' # Black - Bold
bldred='e[1;31m' # Red
bldgrn='e[1;32m' # Green
bldylw='e[1;33m' # 
bldblu='e[1;34m' # Blue
bldpur="e[1;35m" # Purple
bldcyn='e[1;36m' # Cyan
bldwht="e[1;37m" # White
unkblk='e[4;30m' # Black - Underline
undred='e[4;31m' # Red
undgrn='e[4;32m' # Green
undylw='e[4;33m' # 
undblu='e[4;34m' # Blue
undpur="e[4;35m" # Purple
undcyn='e[4;36m' # Cyan
undwht="e[4;37m" # White
bakblk='e[40m' # Black - Background
bakred='e[41m' # Red
bakgrn='e[42m' # Green
bakylw='e[43m' # 
bakblu='e[44m' # Blue
bakpur="e[45m" # Purple
bakcyn='e[46m' # Cyan
bakwht="e[47m" # White
txtrst="e[0m" # Text Reset

Let’s see the examples using these color codes.

Suppose, you want to use different colors in one terminal statement itself like you want to show the username in and the directory path in cyan, followed by a , bold $ symbol. You need to use escape sequences separately as required.  For example, the escape sequences for red is e[31m, for cyan, it is e[36m, and for , it is e[33m. For bold text, we need to use e[1m. In addition, we need the reset ANSI escape sequence, which prevents styles from affecting the rest of the text in the shell. The reset sequence is e[0m. The PS1 variable for this will look like this.

export PS1='[e[32mu] [e[36mw] [e[33m][e[1m]$[e[0m]'

導出語句應添加到您的 $HOME/.bashrc 文件中以進行永久更改。

使用 tput 命令

我們甚至可以使用 tput 命令來修改提示設置。 為了 example, 要使用 tput 顯示顏色提示,我們可以使用以下命令:

export PS1="[$(tput setaf 3)]u@h:w $ [$(tput sgr0)]"

下面列出了一些 tput 命令行選項:

  • tput bold – 大膽的效果
  • tput rev – 顯示反色
  • tput sgr0 – 重置一切
  • tput setaf {CODE}– 設置前景色,請參閱下面的顏色 {CODE} 表了解更多信息。
  • tput setab {CODE}– 設置背景顏色,請參閱下面的顏色 {CODE} 表了解更多信息。

tput 命令行選項的顏色代碼

查看使用以下 tput 命令的示例:

使用 Bashish 修改提示設置

Bashish 是一個文本終端的主題環境。 它可以在每個應用程序的基礎上更改顏色、字體、透明度和背景圖像。 此外,它還支持在常見的 shell 上進行快速更改,例如 bash, zsh 和 tcsh。 我們可以從以下位置為我們的 Linux 發行版安裝這些工具 下載 關聯。

我使用它安裝了它 焦油提取物.

root@centos-01:/home/bashish-2.2.4 $ ./configure
checking for a BSD-compatible install... /usr/bin/install -c
configure: creating ./config.status
config.status: creating data/main/prompt/sh/autoload
config.status: creating data/bashish-version
config.status: creating Makefile
config.status: creating bashish.spec
config.status: creating man/bashish.1
config.status: creating bin/bashish

Bashish configuration:

prefix: /usr/local

Now run 'make' and 'make install'
root@centos-01:/home/bashish-2.2.4 $ make
root@centos-01:/home/bashish-2.2.4 $ make install

現在我們需要運行 害羞的 安裝用戶配置文件。

$bashish
This will enable Bashish prompt and terminal themeing

the following files will be modified:
~/.profile
~/.bashrc
~/.bash_profile (if already exists)
~/.zprofile (if already exists)
~/.zshrc
press ENTER to enable Bashish theming
or hit CTRL+C to quit

Bashish is now installed.

Restart your terminal or logoff and logon again to start theming your shell.

接下來,您必須通過鍵入以下命令來重新啟動 shell:

$exec bash

┌────[root@centos-01]───────[15:58:35]───────[/home/bashish-2.2.4]─────────────────────────────────────────────────────────────────────────────
└──#

你可以輸入命令 害羞的名單 查看所有可用的自定義主題和 bashish –help 查看更多選項。

─# bashish list
amiga
amigados
appchat
appcompress
appeditor
appeditornofont
appeditor_reversed
appevilroot
appgeneric
apphearttracker
appinvertfgbg

您可以通過鍵入 bashish THEMENAME 將所需的更改應用於命令提示符,例如 example

$bashish moo

這將像快照中一樣修改您的命令提示符。

同樣,您可以應用任何這些自定義主題來修改您的命令提示符或終端設置。

在提示上添加笑臉

此外,您會很高興地知道,我們甚至可以在提示上顯示笑臉,以在提示上顯示與我們的工作(成功/失敗)嘗試相對應的表情。 為了 example,您想在我們成功的嘗試中顯示綠色的快樂笑臉,在我們的失敗嘗試中顯示紅色的悲​​傷笑臉。 然後我們可以設置一個邏輯腳本來抓取布爾值來顯示返回的變量值對應的笑臉。

export PS1='$(if [[ $? == 0 ]]; then echo "[e[32m]:)"; else echo "[e[31m]:("; fi)[e[0m] u w $ '

美元? 變量保存前一個程序的返回值。 如果成功,它包含一個 0,如果失敗則包含一個非零值。 $(if … fi) 塊包含顯示笑臉的邏輯。

在提示上添加表情符號

您可以使用表情符號的 Unicode 字符而不是笑臉來修改相同的邏輯字符串,以更有效地傳達情感。 請查看帶有我們笑臉提示的表情符號變體的修改後的字符串。 🙂 表示為 xf0x9fx98x83,而 🙁 表示為 xf0x9fx99x81。

export PS1='$(if [[ $? == 0 ]]; then printf "xf0x9fx98x83"; else printf "xf0x9fx99x81"; fi)[e[0m] u w $ '

但是,根據終端模擬器和我們系統上使用的字體,我們可以看到單色表情符號甚至亂碼。

結論

我希望你喜歡閱讀這幾個很好的著色技巧 bash 迅速的。 通過顏色的視覺區分是我們可以在終端中做的事情,使我們的工作更加愉快和跟踪。 對某些信息進行著色可以使它們脫穎而出,並且可以幫助您在滾動終端歷史記錄時找到最後一個提示。 您甚至可以自定義顏色模式以將您的根用戶與其他用戶區分開來。

現在,是時候有效地利用它來簡化您的工作了。 我很樂意閱讀您對此的寶貴意見和建議。