Linux 奇技淫巧:8 個(gè)有用且有趣的 Bash 提示
在下方公眾號(hào)后臺(tái)回復(fù):面試手冊(cè),可獲取杰哥匯總的 3 份面試 PDF 手冊(cè)。
許多人并不認(rèn)為命令行提示符是一個(gè)有用的元素,甚至不太注意它。然而,一個(gè)有用的提示符可以改變您使用命令行的方式,并通過(guò)擴(kuò)展,改變您的系統(tǒng)。本文通過(guò)示例向您展示了許多有用和有趣的Bash提示。請(qǐng)注意,我們從提示符本身開(kāi)始,然后進(jìn)一步說(shuō)明如何使用它們。
這里我們提供了一些 Bash 提示,并不是所有的都是嚴(yán)肅認(rèn)真的。例如,我們?cè)诹斜碇械牡谝粋€(gè)條目可以為您在使用命令行時(shí)帶來(lái)一點(diǎn)樂(lè)趣!
1、執(zhí)行命令之后顯示“字符表情”
這個(gè)提示很有趣但很有用!這個(gè)想法是,只要你執(zhí)行成功的命令,你的提示就會(huì)顯示一個(gè)快樂(lè)的字符表情。
相反,當(dāng)命令失敗時(shí),你會(huì)看到一個(gè)悲傷的字符表情。
要應(yīng)用它,請(qǐng)使用以下代碼:
PS1="\`if?[?\$??=?0?];?then?echo?\[\e[33m\]^_^\[\e[0m\];?else?echo?\[\e[31m\]O_O\[\e[0m\];?fi\`[\u@\h:\w]\\$"
效果圖如下:

這可能看起來(lái)令人困惑,但我們使用 if 語(yǔ)句來(lái)確定命令是好是壞。從那里,我們?cè)陬佄淖种車(chē)褂靡恍┺D(zhuǎn)義,以確保它們以正確的方式顯示。
2、當(dāng)終端發(fā)出錯(cuò)誤命令時(shí)更改 Bash 提示的顏色
可以說(shuō),這個(gè)提示是列表中最有用的。像上面一樣,如果您的最后一個(gè)命令未能運(yùn)行,提示會(huì)更改顏色,但也會(huì)縮短長(zhǎng)路徑并包含每個(gè)命令的 Bash 歷史記錄編號(hào)以便于檢索。
PROMPT_COMMAND='PS1="\[\033[0;33m\][\!]\`if?[[?\$??=?"0"?]];?then?echo?"\\[\\033[32m\\]";?else?echo?"\\[\\033[31m\\]";?fi\`[\u.\h:?\`if?[[?`pwd|wc?-c|tr?-d?"?"`?>?18?]];?then?echo?"\\W";?else?echo?"\\w";?fi\`]\$\[\033[0m\]?";?echo?-ne?"\033]0;`hostname?-s`:`pwd`\007"'
效果圖如下:

同樣,這看起來(lái)很難實(shí)現(xiàn),但它很簡(jiǎn)單。我們?cè)俅问褂?if 語(yǔ)句以及顏色代碼來(lái)突出顯示各種消息。
您可以將這些顏色設(shè)為您喜歡的任何顏色,但我們會(huì)運(yùn)用一些邏輯思維,更改后的顏色應(yīng)該對(duì)您有所幫助,而不是僅僅為了進(jìn)行更改而更改。
3、將Bash提示擴(kuò)展到多行
有時(shí),你可能希望在 Bash 提示中包含大量信息。這個(gè) Bash 提示可能會(huì)讓你感興趣。它顯示日期、時(shí)間、完整目錄路徑、用戶名和主機(jī)名、活動(dòng)終端,甚至文件計(jì)數(shù)和空間使用情況。
PS1="\n\[\033[35m\]\$(/bin/date)\n\[\033[32m\]\w\n\[\033[1;31m\]\u@\h:?\[\033[1;34m\]\$(/usr/bin/tty?|?/bin/sed?-e?'s:/dev/::'):?\[\033[1;36m\]\$(/bin/ls?-1?|?/usr/bin/wc?-l?|?/bin/sed?'s:?::g')?files?\[\033[1;33m\]\$(/bin/ls?-lah?|?/bin/grep?-m?1?total?|?/bin/sed?'s/total?//')b\[\033[0m\]?->?\[\033[0m\]"
效果圖如下:

在這里,我們不需要 if 語(yǔ)句,因?yàn)樘崾颈旧韺⒕哂徐o態(tài)布局和動(dòng)態(tài)內(nèi)容。您可能還會(huì)發(fā)現(xiàn)很難解析這個(gè)元素中的不同元素。我們的建議是應(yīng)用它,然后逐條運(yùn)行提示。通過(guò)一些交叉引用,您將開(kāi)始了解提示是如何組合的。
4、使用顏色使您的 Bash 提示更具可讀性
除了很好地使用顏色來(lái)分隔不同的信息之外,這個(gè)提示沒(méi)有什么特別之處。如您所見(jiàn),它提供了時(shí)間、用戶名和主機(jī)名以及當(dāng)前目錄。
PS1="\[\033[35m\]\t\[\033[m\]-\[\033[36m\]\u\[\033[m\]@\[\033[32m\]\h:\[\033[33;1m\]\w\[\033[m\]\$"
效果圖如下:

這是最有用的 Bash 提示之一,也是您自定義提示時(shí)首先要查看的區(qū)域。它可以為您學(xué)習(xí)自定義提示的工作原理提供良好的基礎(chǔ)。
5、顯示完整目錄路徑
就像使用顏色一樣,這個(gè)提示是一個(gè)干凈且最少的兩行提示(盡管頂部有一個(gè)空行)。
我們?cè)诘谝恍酗@示完整的工作目錄路徑,然后在底部顯示用戶。
PS1="[\[\033[32m\]\w]\[\033[0m\]\n\[\033[1;36m\]\u\[\033[1;33m\]->?\[\033[0m\]"
效果圖如下:

如果不想在提示中使用空行,可以去掉第一個(gè)\n。但是,請(qǐng)調(diào)整布局和格式,因?yàn)槊總€(gè)終端體驗(yàn)都會(huì)因您的計(jì)算機(jī)和命令行設(shè)置而異。
6、顯示后臺(tái)作業(yè)計(jì)數(shù)
這個(gè)兩行顯示我們尚未在 Bash 提示中使用的信息。我們提供后臺(tái)作業(yè)的運(yùn)行記錄。如果您同時(shí)處理多項(xiàng)任務(wù)但需要密切關(guān)注任何活動(dòng),這將非常有用。
第一行是用戶名和主機(jī)名,以及工作目錄路徑。在第二行,我們有歷史編號(hào)和后臺(tái)運(yùn)行的作業(yè)計(jì)數(shù)。
PS1='\[\e[1;32m\]\u@\H:\[\e[m\]?\[\e[1;37m\]\w\[\e[m\]\n\[\e[1;33m\]hist:\!?\[\e[0;33m\]?\[\e[1;31m\]jobs:\j?\$\[\e[m\]?'
效果圖如下:

盡管它可以為您提供有關(guān)系統(tǒng)活動(dòng)的一些急需的信息,但它沒(méi)有什么特別之處。您甚至可以將其轉(zhuǎn)換為更復(fù)雜的提示,并添加 if 語(yǔ)句和顏色編碼以在作業(yè)達(dá)到特定級(jí)別時(shí)通知您。
7、顯示工作目錄的信息
有了這個(gè),我們會(huì)在第一行顯示用戶名和主機(jī)名、作業(yè)計(jì)數(shù)以及日期和時(shí)間。下面是當(dāng)前目錄,以及目錄中的文件數(shù)量和一些有關(guān)磁盤(pán)使用情況的信息。
PS1="\n\[\e[30;1m\]\[\016\]l\[\017\](\[\e[34;1m\]\u@\h\[\e[30;1m\])-(\[\e[34;1m\]\j\[\e[30;1m\])-(\[\e[34;1m\]\@?\d\[\e[30;1m\])->\[\e[30;1m\]\n\[\016\]m\[\017\]-(\[\[\e[32;1m\]\w\[\e[30;1m\])-(\[\e[32;1m\]\$(/bin/ls?-1?|?/usr/bin/wc?-l?|?/bin/sed?'s:?::g')?files,?\$(/bin/ls?-lah?|?/bin/grep?-m?1?total?|?/bin/sed?'s/total?//')b\[\e[30;1m\])-->?\[\e[0m\]"
效果圖如下:

所有這些提示的最大問(wèn)題是弄清楚圍繞格式化和轉(zhuǎn)義發(fā)生了什么。但是,與多行提示一樣,您應(yīng)該一點(diǎn)一點(diǎn)地解決這個(gè)問(wèn)題,直到您了解整體結(jié)構(gòu)。
您甚至可以一次輸入一部分并注意它是否顯示或是否有錯(cuò)誤,然后處理完整的代碼段。
8、創(chuàng)建你自己的 Bash 提示
自定義 Bash 提示。
您可以結(jié)合以上任何一項(xiàng)和所有內(nèi)容來(lái)創(chuàng)建您自己的自定義 Bash 提示。例如,這是對(duì)列表中第七個(gè)的修改,但已更改為占用更少的空間并包含一些特定和相關(guān)的信息。
雙線式總是更緊湊,因?yàn)槟梢钥吹酵暾窂剑粫?huì)減少您使用的命令的空間。
PS1="\n\[\e[32;1m\](\[\e[37;1m\]\u\[\e[32;1m\])-(\[\e[37;1m\]jobs:\j\[\e[32;1m\])-(\[\e[37;1m\]\w\[\e[32;1m\])\n(\[\[\e[37;1m\]!?\!\[\e[32;1m\])->?\[\e[0m\]"
效果圖如下:

到現(xiàn)在為止,您可能已經(jīng)了解此提示的作用,但我們的建議是嘗試創(chuàng)建自己的提示而不是粘貼此提示。這樣,您就可以開(kāi)始了解不同元素如何協(xié)同工作,甚至可能想出您自己的自定義 Bash 提示。
總結(jié)
如果您經(jīng)常使用命令行,或者在啟動(dòng)終端應(yīng)用程序時(shí)有特定需求,那么自定義提示可能是一個(gè)好主意。不需要太多知識(shí),在很多情況下,您可以從其他開(kāi)發(fā)人員那里找到您需要的提示。
來(lái)自:Linux迷?
鏈接:https://www.linuxmi.com/linux-8-bash.html
推薦閱讀
Linux 性能調(diào)優(yōu)工具9張圖 - 你肯定會(huì)用到

