Shell:命令提示符


Blog:博客園 個人
參考:命令提示符

概述

用戶進入 Bash 以后,Bash 會顯示一個命令提示符,用來提示用戶在該位置后面輸入命令。

環境變量 PS1

命令提示符通常是美元符號$,對於根用戶則是井號#。這個符號是環境變量PS1決定的,執行下面的命令,可以看到當前命令提示符的定義。

$ echo $PS1

Bash 允許用戶自定義命令提示符,只要改寫這個變量即可。改寫后的PS1,可以放在用戶的 Bash 配置文件.bashrc里面,以后新建 Bash 對話時,新的提示符就會生效。要在當前窗口看到修改后的提示符,可以執行下面的命令。

$ source ~/.bashrc

命令提示符的定義,可以包含特殊的轉義字符,表示特定內容。

  • \a:響鈴,計算機發出一記聲音。
  • \d:以星期、月、日格式表示當前日期,例如“Mon May 26”。
  • \h:本機的主機名。
  • \H:完整的主機名。
  • \j:運行在當前 Shell 會話的工作數。
  • \l:當前終端設備名。
  • \n:一個換行符。
  • \r:一個回車符。
  • \s:Shell 的名稱。
  • \t:24小時制的hours:minutes:seconds格式表示當前時間。
  • \T:12小時制的當前時間。
  • \@:12小時制的AM/PM格式表示當前時間。
  • \A:24小時制的hours:minutes表示當前時間。
  • \u:當前用戶名。
  • \v:Shell 的版本號。
  • \V:Shell 的版本號和發布號。
  • \w:當前的工作路徑。
  • \W:當前目錄名。
  • \!:當前命令在命令歷史中的編號。
  • \#:當前 shell 會話中的命令數。
  • \$:普通用戶顯示為$字符,根用戶顯示為#字符。
  • \[:非打印字符序列的開始標志。
  • \]:非打印字符序列的結束標志。

舉例來說,[\u@\h \W]\$這個提示符定義,顯示出來就是[user@host ~]$(具體的顯示內容取決於你的系統)。

[user@host ~]$ echo $PS1
[\u@\h \W]\$

改寫PS1變量,就可以改變這個命令提示符。

$ PS1="\A \h \$ "
17:33 host $

注意,$后面最好跟一個空格,這樣的話,用戶的輸入與提示符就不會連在一起。

顏色

默認情況下,命令提示符是顯示終端預定義的顏色。Bash 允許自定義提示符顏色。

使用下面的代碼,可以設定其后文本的顏色。

  • \033[0;30m:黑色
  • \033[1;30m:深灰色
  • \033[0;31m:紅色
  • \033[1;31m:淺紅色
  • \033[0;32m:綠色
  • \033[1;32m:淺綠色
  • \033[0;33m:棕色
  • \033[1;33m:黃色
  • \033[0;34m:藍色
  • \033[1;34m:淺藍色
  • \033[0;35m:粉紅
  • \033[1;35m:淺粉色
  • \033[0;36m:青色
  • \033[1;36m:淺青色
  • \033[0;37m:淺灰色
  • \033[1;37m:白色

舉例來說,如果要將提示符設為紅色,可以將PS1設成下面的代碼。

PS1='\[\033[0;31m\]<\u@\h \W>\$'

但是,上面這樣設置以后,用戶在提示符后面輸入的文本也是紅色的。為了解決這個問題, 可以在結尾添加另一個特殊代碼\[\033[00m\],表示將其后的文本恢復到默認顏色。

PS1='\[\033[0;31m\]<\u@\h \W>\$\[\033[00m\]'

除了設置前景顏色,Bash 還允許設置背景顏色。

  • \033[0;40m:藍色
  • \033[1;44m:黑色
  • \033[0;41m:紅色
  • \033[1;45m:粉紅
  • \033[0;42m:綠色
  • \033[1;46m:青色
  • \033[0;43m:棕色
  • \033[1;47m:淺灰色

下面是一個帶有紅色背景的提示符。

PS1='\[\033[0;41m\]<\u@\h \W>\$\[\033[0m\] '

環境變量 PS2,PS3,PS4

除了PS1,Bash 還提供了提示符相關的另外三個環境變量。

環境變量PS2是命令行折行輸入時系統的提示符,默認為>

$ echo "hello
> world"

上面命令中,輸入hello以后按下回車鍵,系統會提示繼續輸入。這時,第二行顯示的提示符就是PS2定義的>

環境變量PS3是使用select命令時,系統輸入菜單的提示符。

環境變量PS4默認為+。它是使用 Bash 的-x參數執行腳本時,每一行命令在執行前都會先打印出來,並且在行首出現的那個提示符。

比如下面是腳本test.sh

#!/bin/bash

echo "hello world"

使用-x參數執行這個腳本。

$ bash -x test.sh
+ echo 'hello world'
hello world

上面例子中,輸出的第一行前面有一個+,這就是變量PS4定義的。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM