01
Linux命令行提示符簡介
衆所周知,Linux命令行是系統管理員管理Linux的重要手段,我們管理Linux,首先要面對的就是Linux命令行提示符。
Linux命令行結尾的提示符有“#”和“$”兩種不同的符號,如下所示:
[root@oldboy ~]#
#<==這是超級管理員root用戶對應的命令行。
[oldboy@oldboy ~]$
#<==這是普通用戶oldboy對應的命令行。
其中:
1)#號,是使用超級用戶root登錄後的命令行結尾提示符,而$號是使用普通用戶登錄後的命令行結尾提示符。
2)超級用戶具有管理系統的所有權限,普通用戶的權限比較小,只能進行基本的系統信息查看等操作,無法更改系統配置和管理服務。
3)命令行提示符@前面的字符代表當前登錄的用戶(可用whoami查詢),@後面的爲主機名(可用hostname查詢),~所在的位置是窗口當前用戶所在的路徑。示例如下:
[oldboy@oldboy ~]$
#<==@前的oldboy爲當前用戶, @後的oldboy爲主機名,此處的~表示當前目錄,即家目錄。
4)Linux命令提示符由PS1環境變量控制。示例如下:
[root@oldboy ~]# set|grep PS1
#<==注意PS1是大寫的。
這裏的PS1='[\u@\h \W]\$ ',可以通過全局配置文件/etc/bashrc或/etc/profile中進行按需配置和調整。
02
PS1變量知識說明
Linux系統Bash命令行的提示符是由一個叫做PS1的系統環境變量控制的。PS1對應的知識見表1。
03
提示符的實用技巧來了
★3.1 換一換Linux提示符的顏色
學習Linux和做Linux運維工作壓力都很大,大傢伙不放設置下顏色變化,調整下心情,減輕運維壓力,其次,也可以將測試環境提示符的顏色和正式環境分開,以免誤操作正式環境。
在變量PS1中,設置字符顏色的格式爲:\[\e[F;Bm\],其中“F“爲字體顏色,編號爲30-37,“B”爲背景顏色,編號爲40-47。顏色表如下:
F(前景) |
B(背景) |
顏色說明 |
30 |
40 |
黑色 |
31 |
41 |
紅色 |
32 |
42 |
綠色 |
33 |
43 |
黃色 |
34 |
44 |
藍色 |
35 |
45 |
紫紅色 |
36 |
46 |
青藍色 |
37 |
47 |
白色 |
例如:將命令行字體調整爲黃色,背景和大背景一樣的顏色。
核心內容字符部分爲:PS1='[\[\e[33;40m\]\u@\h \W]# '
怎麼樣?不錯吧?
對應變量是PS1='\[\e[32;1m\][\u@\h \W]\$ \[\e[0m\]'
有關Bash字體及背景色的詳細講解,讀者可以參考《跟老男孩學習Linux運維:Shell編程實戰》的第13章有詳細講解。
★3.2 讓命令提示符顯示當面的系統路徑
我們通過命令行管理Linux時,經常會切換不同的路徑,此時輸入pwd命令就可以知道當前的路徑是啥。
其實,在系統中使用Bash命令行就會自動顯示用戶當前所在的路徑,但是默認情況下這個路徑顯示不全,下面的範例將會帶領讀者配置在命令行直接顯示當前用戶的完整路徑。
[root@oldboy ~]# echo $PS1
#<==打印超級管理員對應的PS1值。
[\u@\h \W]\$
#<== @是一個分隔符,和郵箱地址中的@作用類似。
可修改PS1變量對應的值,來讓命令行顯示全路徑:
[root@oldboy ~]# PS1='[\u@\h \w]\$ '
#<==\w小寫的w
[root@oldboy ~]# cd /usr/local/
[root@oldboy /usr/local]#
#<==可以看到已經是全路徑了。
[root@oldboy ~]# PS1='[\u@\h \w]\$ '
#<==將默認的\W改爲\w(小寫w),僅臨時生效。
[root@oldboy ~]# cd /etc/sysconfig
#<==切換目錄實驗。
[root@oldboy /etc/sysconfig]#
#<==可以看到路徑是全路徑了。
上面的方法只是臨時性的,若要讓PS1變量永久生效,可採用如下配置方法:
編輯/etc/bashrc文件,找到符合下面內容的一行(大約在第36行),將內容中的大寫的W改爲小寫w,即可讓變量永久生效。也就是將:
[ "$PS1" = "\\s-\\v\\\$ " ] && PS1="[\u@\h \W]\\$ "
改爲下面內容,保存並退出。
[ "$PS1" = "\\s-\\v\\\$ " ] && PS1="[\u@\h \w]\\$ "
最後,註銷,重新登錄系統或直接執行source /etc/bashrc使得修改的信息生效。
★3.3 讓命令行顯示當前時間
調整方法爲:PS1='[\[\e[33;40m\]\u@\h \w \t]# ',就是\t就好了。