自定義shell提示符

? ? ? ?喜歡玩Linux的人,一般都是一個愛折騰的人,哈哈~~好巧 我就是這么一個愛折騰的人。

? ? ? ?好了,那么接下來的要折騰點什么呢?

? ? ? ?走起。。。下面就開始走入正題:如何在Linux下自定義shell提示符。

介紹

? ? ? ? 最初,所有的shell都是兩個字符:一個字符后跟一個空格。Bourne shell使用一個$(美元字符),C-Shell使用一個%(百分比字符)?,F(xiàn)在,這一傳統(tǒng)仍然保持,因此,如果使用的shell是Bourne shell家族(Bash、Korn shell)中的一員,那么最簡單的shell提示為:$?

? ? ? ? 當今的linux發(fā)行版中,使用最廣泛的shell版本為即為Bourne shell家族的Bash,本文即將討論的也是基于Bash的shell。

? ? ? ? 使用命令 echo $0 或 echo $SHELL 可以查看你當前使用的是哪種shell。如果你使用的是Bash,那么你可以使用 bash --version 來查看你的Bash版本。

環(huán)境

? ? ? ? Ubuntu 16.04.3 LTS 64位 ?(Linux version 4.4.0-97-generic)

? ? ? ? 使用命令:hostnamectl,可以查看當前主機的信息。

shell提示符的修改

? ? ? ? Linux中,shell提示符是由一個環(huán)境變量定義的。對于Bourne shell家族來說,這個環(huán)境變量叫做PS1,我們可以通過 echo 命令來查看 PS1的內容。如:

[14:48:33 root@noseeHost ~]$ echo $PS1

\[\033[0;32m\][\t \u\[\033[0;33m\]@\H \w]$ \[\033[0m\]

? ? ? ? 上面輸出的那個PS1值是我自己設置的,很多看不懂的亂七八糟的數(shù)字、還有一些特殊的字符?不必擔心,看完這篇文章你就會懂了。

? ? ? ? 試試修改一個簡單的提示符,包含主機名和當天時間的信息:

[14:59 root@noseeHost ~]$ PS1="\A \h \$ "

15:00 noseeHost $

? ? ? ? 可以看到命令行的提示符變成了 “15:00 noseeHost $ ”。是的,就是這么簡單,通過修改環(huán)境變量PS1的值,可以實時的改變你的Shell提示符。但是,很快你就會發(fā)現(xiàn),當你下次再登錄上你的主機,或者當你重啟你的主機后,Shell提示符又變回原來的默認樣子了。

? ? ? ? 這是因為系統(tǒng)在每次啟動的時候,都會去讀取一個默認的配置文件,如果你想要你的設置永久生效,那你就需要去直接修改這個文件。

? ? ? ? 不同系統(tǒng)的這個配置文件可以會放在不同和位置和可能是不同的名字,一般是用戶主目錄下的.bashrc文件。為了達到目的,把下面兩行代碼添加到.bashrc文件中即可。

PS1='\[\033[s\033[0;0H\033[0;41m\033[K\033[1;33m\t\033[0m\033[u\]<\u@\h \W>\$ '

export PS1

? ? ? ? 呃,說了這么多,好像還沒說清楚那一個個特殊字符串和數(shù)字怎么回事。為了方便概括,下面就用一個稍微復雜一點的一個提示符來做解剖。

解剖一個提示符

? ? ? ? 首先,設置PS1的值為:

PS1="\[\033[0;32m\][\A \u\[\033[0;33m\]@\H \w]$ \[\033[0m\]"

? ? ? ? 這時你看到的結果如下:

? ? ? ? 1、\[\033[0;32m\]是用于設置文本的顏色,這是一個非打印字符序列(就是它是不會顯示在你的提示符上面,但是會產(chǎn)生一些特殊的效果,如顏色變化)。你看到的 “[15:19 root” 顯示為綠色就是因為它的作用。

? ? ? ? ? ? ? 還有后面的[\033[0;33m\]和\[\033[0m\]都是非打印字符序列。

? ? ? ? 2、\A 和 \u 都是轉義字符,其中\(zhòng)A表示一個24小時制的一個時間表示,\u表示當前登錄的用戶名。

? ? ? ? 3、$,這會顯示一個"$"字符,除非你擁有超級用戶權限。在那種情況下, 它會顯示一個"#"字符。

上面只是通過舉個例子,來加強你對提示符變量PS1的理解。想要更加深刻的理解shell的每個提示符的含義一定要自己親自動手,多去嘗試。下面將會列出幾個附表,一些常用的轉義字符都可以在這里查看。

注意:如果你 shell 提示符的內容和上例不是一模一樣,也不必擔心。每個 Linux 發(fā)行版 定義的提示符稍微有點不同,其中一些相當異乎尋常。

附表1: Shell 提示符中用到的轉義字符

附表2: 用轉義序列來設置文本顏色

附表3: 用轉義序列來設置背景顏色

注意:除了正常的 (0) 和黑體 (1) 字符屬性之外,文本也可以具有下劃線 (4),閃爍 (5), 和反向 (7) 屬性。為了擁有好品味,然而,許多終端仿真器拒絕使用這個閃爍屬性。

附表4:?光標移動轉義序列

? ? ? ? 轉義編碼也可以用來定位光標。這些編碼被普遍地用來,每次當提示符出現(xiàn)的時候,會在屏幕的不同位置 比如說上面一個角落,顯示一個時鐘或者其它一些信息。這里是一系列用來定位光標的轉義編碼:

? ? ? ? 使用上面的編碼,我們將構建一個提示符,每次當這個提示符出現(xiàn)的時候,會在屏幕的上方畫出一個 包含時鐘(由黃色文本渲染)的紅色長條。提示符的編碼就是這個看起來令人敬畏的字符串:

PS1='\[\033[s\033[0;0H\033[0;41m\033[K\033[1;33m\t\033[0m\033[u\]<\u@\h \W>\$ '

? ? ? ? 哈哈,這個很有趣。

參考文獻

《The Linux Command Line》William E. Shotts, Jr. —— 14 – Customizing The Prompt

《Unix&Linux大學教程》Harley Hahn —— 13.9 and 13.10








最后編輯于
?著作權歸作者所有,轉載或內容合作請聯(lián)系作者
【社區(qū)內容提示】社區(qū)部分內容疑似由AI輔助生成,瀏覽時請結合常識與多方信息審慎甄別。
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發(fā)布,文章內容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。

相關閱讀更多精彩內容

  • 文本終端的顏色可以使用“ANSI非常規(guī)字符序列”來生成。舉例: 以上命令設置背景成為藍色,前景白色,閃爍光標,輸出...
    jerehao閱讀 627評論 0 0
  • 緣起 在本地環(huán)境( iTerm2 + zsh) 使用終端工具操作 Git 時, 能夠顯示"當前文件夾名稱"以及" ...
    patiencing閱讀 16,438評論 2 9
  • 概述 首先,咱們來了解一下,什么是Shell。操作系統(tǒng)內核給我們提供了各種接口,同時也提供了各種用戶層的庫,理論上...
    keysaim閱讀 1,525評論 0 0
  • 第二十五章 老太太 “你繼續(xù)下門店去吧?!睏钊鐒傞_始了單方面的報復性活動,這句話剛剛說完就做賊心虛的撂下了電話,...
    chief風閱讀 527評論 0 1
  • 阿彌陀佛 念想,是要有的。 次第,從一開始就已有了要求。 要“素”,不是戒律,是夢想。 抱樸。原始。真如。念頭,從...
    佛聖居士閱讀 546評論 0 0

友情鏈接更多精彩內容