Linux設定SHEEL提示符的格式和顏色
本文的內容在Red Hat Enterprise Linux Server release 6.5 (Santiago)下測試通過。
1.瞭解SP1和SP2引數
SP1:bash中命令輸入的主提示符,如“[oracle@prod ~]$”。
SP2:當命令特別長的時候,換行輸入時的提示符,預設是“>”。
可以在終端中輸入命令檢視系統預設引數:
-
[root@prod ~]# echo $PS1
-
[\u@\h \W]\$
-
[root@prod ~]# echo $PS2
- >
或者可以檢視set值:
-
[root@prod ~]# set | grep PS1
-
PS1='[\u@\h \W]\$ '
-
[root@prod ~]# set | grep PS2
- PS2='> '
如果需要檢視提示符引數中各部分的定義,可以執行man bash命令,找到PROMPTING部分說明:
- PROMPTING
- When executing interactively, bash displays the primary prompt PS1 when it is ready to read a command, and the secondary prompt PS2 when it needs more input to complete a command. Bash allows these prompt strings to be customized by inserting a number of backslash-escaped special characters that are decoded as follows:
-
\a an ASCII bell character (07)
-
\d the date in "Weekday Month Date" format (e.g., "Tue May 26")
-
\D{format}
-
the format is passed to strftime(3) and the result is inserted into the prompt string; an empty format results in a locale-specific time representation.
-
The braces are required
-
\e an ASCII escape character (033)
-
\h the hostname up to the first ‘.’
-
\H the hostname
-
\j the number of jobs currently managed by the shell
-
\l the basename of the shell’s terminal device name
-
\n newline
-
\r carriage return
-
\s the name of the shell, the basename of $0 (the portion following the final slash)
-
\t the current time in 24-hour HH:MM:SS format
-
\T the current time in 12-hour HH:MM:SS format
-
\@ the current time in 12-hour am/pm format
-
\A the current time in 24-hour HH:MM format
-
\u the username of the current user
-
\v the version of bash (e.g., 2.00)
-
\V the release of bash, version + patch level (e.g., 2.00.0)
-
\w the current working directory, with $HOME abbreviated with a tilde (uses the value of the PROMPT_DIRTRIM variable)
-
\W the basename of the current working directory, with $HOME abbreviated with a tilde
-
\! the history number of this command
-
\# the command number of this command
-
\$ if the effective UID is 0, a #, otherwise a $
-
\nnn the character corresponding to the octal number nnn
-
\\ a backslash
-
\[ begin a sequence of non-printing characters, which could be used to embed a terminal control sequence into the prompt
-
\] end a sequence of non-printing characters
-
- The command number and the history number are usually different: the history number of a command is its position in the history list, which may include commands restored from the history file (see HISTORY below), while the command number is the position in the sequence of commands executed during the current shell session. After the string is decoded, it is expanded via parameter expansion, command substitution, arithmetic expansion, and quote removal, subject to the value of the promptvars shell option (see the description of the shopt command under SHELL BUILTIN COMMANDS below).
簡單翻譯一下序列說明:
-
\a 一個ASCII響鈴字元(07)
-
\d "Weekday Month Date"格式的日期(比如"Tue May 26")
-
\D{format} 通過向strftime傳值後回顯自定義日期格式
-
\e ASCII轉義字元(033)
-
\h 主機名的第一部分,擷取到第一個'.'
-
\H 主機的全稱
-
\j 在當前shell中管理的程式數
-
\l shell的終端裝置名稱的基名
-
\n 換行符
-
\r 回車符
-
\s shell的名稱,當前指令碼的名稱,不包括路徑
-
\t HH:MM:SS格式的24小時制時間
-
\T HH:MM:SS格式的12小時制時間
-
\@ am/pm格式的12小時制時間
-
\A HH:MM格式的12小時制時間
-
\u 當前使用者的使用者名稱
-
\v bash的的版本(如2.00)
-
\V bash版本,包括補丁級別(如2.00.0)
-
\w 當前工作目錄,包括路徑
-
\W 當前工作目錄的基名,不包括路徑
-
\! 當前命令的歷史記錄編號
-
\# 命令編號(只要您鍵入內容,它就會在每次提示時累加)
-
\$ 如果您不是超級使用者 (root),則提示"$";如果您是超級使用者,則提示"#"
-
\nnn 對應於八進位制數nnn的字元
-
\\ 反斜槓
-
\[ 開始一系列非列印字元,可以將終端控制序列嵌入到提示符中
- \] 結束一系列非列印字元
2.測試SP1和SP2引數
這裡做一些關於SP1引數的測試(當然,使用者可以根據自己的喜好自行調整):
- [root@prod ~]# su - oracle
- [oracle@prod ~]$ set | grep PS1
- PS1='[\u@\h \W]\$ '
- [oracle@prod ~]$ export PS1='[\u@\h\d \W]\$ '
- [oracle@prodSun Sep 10 ~]$ export PS1='[\u@\h \v \W]\$ '
- [oracle@prod 4.1 ~]$ export PS1='[\u@\h \@ \W]\$ '
- [oracle@prod 07:07 AM ~]$ export PS1='[\u#\h \w]\$ '
- [oracle#prod ~]$ export PS1='[my oracle zone->\h \W]\$ '
- [my oracle zone->prod ~]$ cd /u01/app/oracle
- [my oracle zone->prod oracle]$ export PS1='[\u@\h \w]\$ '
- [oracle@prod /u01/app/oracle]$ export PS1='[\u@\h \W]\$ '
- [oracle@prod oracle]$ export PS1='[you can write some information here...\n\u@\h \W]\$ '
- [you can write some information here...
- oracle@prod oracle]$export PS1='[\u@\h \W]\$ '
- [oracle@prod oracle]$
當然,SP2引數也是可以做一些設定的:
- [oracle@prod oracle]$ set | grep PS2
- PS2='> '
- [oracle@prod oracle]$ export PS2='[\u@\h \W]> '
- [oracle@prod oracle]$ ls
- admin cfgtoollogs checkpoints diag fast_recovery_area oradata product
- [oracle@prod oracle]$ ll \
- [oracle@prod oracle]> fast_recovery_area/
- total 4
- drwxr-x---. 3 oracle oinstall 4096 Sep 9 09:46 PROD
- [oracle@prod oracle]$ export PS2='continue > '
- [oracle@prod oracle]$ ll \
- continue > fast_recovery_area/
- total 4
- drwxr-x---. 3 oracle oinstall 4096 Sep 9 09:46 PROD
- [oracle@prod oracle]$ export PS2='> '
- [oracle@prod oracle]$ ll \
- > fast_recovery_area
- total 4
- drwxr-x---. 3 oracle oinstall 4096 Sep 9 09:46 PROD
- [oracle@prod oracle]$
3.為提示符配置顏色
我們可以通過設定PS1和PS2變數使提示符成為彩色,這樣就可以方便的找到頁面中輸入過的命令。
設定字元序列顏色的格式為: \e[F;Bm
結束字元序列顏色的格式為: \e[0m
如果需要為字元設定顏色,可以這樣設定:\e[F;Bm需要設定顏色的部分\e[0m
其中F為字型顏色,編號30~37;B為背景色,編號40~47。
顏色資訊表如下:
- F B
- 30 40 黑色
- 31 41 紅色
- 32 42 綠色
- 33 43 黃色
- 34 44 藍色
- 35 45 紫紅色
- 36 46 青藍色
- 37 47 白色
如果需要設定特殊顯示,如高亮顯示顯示,可以將字元序列顏色的格式中\e[F;Bm中的F;B設定為1,即\e[1m,然後和顏色資訊加配置在一起,如\e[31;40m\e[1m。
設定特殊顯示錶如下:
- 0 OFF,關閉顏色
- 1 高亮顯示
- 4 顯示下劃線
- 5 閃爍顯示
- 7 反白顯示
- 8 顏色不可見
通過上述顏色資訊表和設定特殊顯示錶對顏色引數進行配置,即可為終端提示符設定個性化的顏色。
如現在的提示符為:PS1='[\u@\h \W]\$ '
現在要進行如下配置:
- 設定使用者名稱為紅色黑底,並且高亮顯示,即為:\e[31;40m\e[1m使用者名稱\e[0m
- 設定主機名為黃色白底,並且顯示下劃線,即為:\e[33;47m\e[4m主機名\e[0m
- 設定路徑為紫紅色黑底,即為:\e[35;40m路徑\e[0m
調整後的提示符為:
- PS1='[\e[31;40m\e[1m\u\e[0m@\e[33;47m\e[4m\h\e[0m \e[35;40m\W\e[0m]\$ '
當然,使用者可以自行對SP1和SP2引數進行多次測試,完成顏色的調整。
注意:更多情況下可以通過Xshell,SecureCRT設定終端顯示顏色,如白底黑字,黑底白字,黑底綠字等,調整的過程可以和工具相結合,以獲取最舒適的顏色配置。
4.配置持久化儲存
通過在終端中執行export命令設定的變更只對當前終端有效,關閉之後再開啟另一個終端就會失效。如果需要將修改進行持久化儲存,需要將修改配置到系統配置檔案中。
將export語句寫入/etc/profile或/etc/bashrc對全部使用者生效,寫入~/.bash_profile或~/.bashrc 只對當前使用者生效。
- [root@prod ~]# echo "export PS1='\e[33;40m[\u@\h \W]\$\e[0m '" >> /etc/bashrc
- [root@prod ~]# cat /etc/bashrc | grep PS1
- if [ "$PS1" ]; then
- [ "$PS1" = "\\s-\\v\\\$ " ] && PS1="[\u@\h \W]\\$ "
- # if [ "$PS1" ]; then
- # PS1="[\u@\h:\l \W]\\$ "
- if [ "$PS1" ]; then
- export PS1='\e[33;40m[\u@\h \W]$\e[0m '
- [root@prod ~]# source /etc/bashrc
這樣,就可以保持修改的永久生效,而且,通過顏色的配置,還可以在整頁的命令中快速定位到上一條輸入的命令位置。
通過上述配置,即可實現在Linux系統中自定義設定SHEEL提示符的格式和顏色。
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/31394774/viewspace-2144749/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- 設定toast的字型顏色和背景顏色AST
- Linux 中如何修改終端提示符顏色?Linux
- CSS 設定字型顏色和大小CSS
- markdown字型顏色和背景設定
- AUTOCAD——設定顏色
- 我的SCRT顏色設定
- JavaScript WebGL 設定顏色JavaScriptWeb
- CAD如何設定顏色
- CSS設定元素的背景顏色CSS
- Ubuntu Linux終端顏色個性化設定技巧UbuntuLinux
- svg 圖示設定背景顏色SVG
- CSS設定選中網頁文字時的背景和顏色CSS網頁
- 【HarmonyOS NEXT】氣泡預設顏色和API 10不同,設定popupColor屬性無法修改氣泡顏色API
- Flutter實戰: 如何同時設定Container的圖片和顏色FlutterAI
- CSS 設定文字框游標顏色CSS
- 如何決定介面設計中顏色
- word字型顏色怎麼快速設定?
- CSS設定滑鼠選中文字的顏色CSS
- CSS設定一個文字兩種顏色CSS
- win10系統如何設定Word背景顏色_win10 word頁面背景顏色設定步驟Win10
- Markdown(入門)——文字設定 ->(字型、字號、顏色和背景色)
- win10 windows顏色還原怎麼操作_Win10怎麼恢復/設定系統預設顏色設定Win10Windows
- QTableView設定單元格顏色未生效的問題QTView
- Linux檔案的顏色程式碼Linux
- typora編寫md檔案文字設定顏色
- bootstrap datepicker 單獨設定某些日期的特殊背景顏色和某些月份特殊背景boot
- 直播帶貨系統原始碼利用TextView設定部分字型的顏色和大小原始碼TextView
- win10 工作列顏色怎麼改_win10怎麼設定工作列顏色Win10
- win10修改字型顏色怎麼操作 windows10字型顏色設定方法Win10Windows
- 如何設定小程式頁面各個部分的背景顏色?
- JavaScript點選設定背景顏色的選項卡程式碼JavaScript
- js設定頁面TR 的屬性 背景顏色 樣式JS
- Android開發筆記——TextView文字設定不同顏色Android筆記TextView
- UE富文字框RichTextBlock的內容設定不同的字型顏色BloC
- linux中顯示有顏色的字元......Linux字元
- linux改變shell的輸出顏色Linux
- 1909win10怎麼設定工作列顏色_1909win10工作列顏色如何改Win10
- JavaScript 十六進位制顏色和RGB顏色值的相互轉換JavaScript
- qt 設定QTextEdit文字框中指定內容塊的背景顏色QT