C語言中文網 目錄
首頁 > Shell腳本 閱讀:12,957

Shell提示符:#和$

啟動終端模擬包或者從 Linux 控制臺登錄后,便可以看到 Shell 提示符。提示符是通往 Shell 的大門,是輸入 Shell 命令的地方。

對于普通用戶,Base shell 默認的提示符是美元符號$;對于超級用戶(root 用戶),Bash Shell 默認的提示符是井號#。該符號表示 Shell 等待輸入命令。

不同的 Linux 發行版使用的提示符格式不同。例如在 CentOS 中,默認的提示符格式為:

[mozhiyan@localhost ~]$

這種格式包含了以下三個方面的信息:
  • 啟動 Shell 的用戶名,也即 mozhiyan;
  • 本地主機名稱,也即 localhost;
  • 當前目錄,波浪號~是主目錄的簡寫表示法。

Shell 通過PS1PS2兩個環境變量來控制提示符格式:
  • PS1 控制最外層命令行的提示符格式。
  • PS2 控制第二層命令行的提示符格式。

在 Shell 中初次輸入命令,使用的是 PS1 指定的提示符格式;如果輸入一個命令后還需要輸入附加信息,Shell 就使用 PS2 指定的提示符格式。請看下面的例子:
[mozhiyan@localhost ~]$ echo "C語言中文網"
C語言中文網
[mozhiyan@localhost ~]$ echo "http://www.frifeb11.com"
http://www.frifeb11.com
[mozhiyan@localhost ~]$ echo "
> yan
> chang
> sheng
> "

yan
chang
sheng

[mozhiyan@localhost ~]$ 
echo 是一個輸出命令,可以用來輸出數字、變量、字符串等;本例中,我們使用 echo 來輸出字符串。

字符串是一組由" "包圍起來的字符序列,echo 將第一個"作為字符串的開端,將第二個"作為字符串的結尾。此處的字符串就可以看做 echo 命令的附加信息。

本例中,前兩次使用 echo 命令時都是在后面緊跟字符串,一行之內輸入了完整的附加信息。第三次使用 echo 時,將字符串分成多行,echo 遇到第一個"認為是不完整的附加信息,所以會繼續等待用戶輸入,直到遇見第二個"。輸入的附加信息就是第二層命令,所以使用>作為提示符。

要顯示提示符的當前格式,可以使用 echo 輸出 PS1 和 PS2:
[mozhiyan@localhost ~]$ echo $PS1
[\u@\h \W]\$
[mozhiyan@localhost ~]$ echo $PS2
>
[mozhiyan@localhost ~]$ 
Shell 使用以\為前導的特殊字符來表示命令提示符中包含的要素,這使得 PS1 和 PS2 的格式看起來可能有點奇怪。下表展示了可以在 PS1 和 PS2 中使用的特殊字符。
Bash shell 提示符可以包含的要素
字符 描述
\a 鈴聲字符
\d 格式為“日 月 年”的日期
\e ASCII轉義字符
\h 本地主機名
\H 完全合格的限定域主機名
\j shell當前管理的作業數
\1 shell終端設備名的基本名稱
\n ASCII換行字符
\r ASCII回車
\s shell的名稱
\t 格式為“小時:分鐘:秒”的24小時制的當前時間
\T 格式為“小時:分鐘:秒”的12小時制的當前時間
\@ 格式為am/pm的12小時制的當前時間
\u 當前用戶的用戶名
\v bash shell的版本
\V bash shell的發布級別
\w 當前工作目錄
\W 當前工作目錄的基本名稱
\! 該命令的bash shell歷史數
\# 該命令的命令數量
\$ 如果是普通用戶,則為美元符號$;如果超級用戶(root 用戶),則為井號#。
\nnn 對應于八進制值 nnn 的字符
\\ 斜杠
\[ 控制碼序列的開頭
\] 控制碼序列的結尾

注意,所有的特殊字符均以反斜杠\開頭,目的是與普通字符區分開來。您可以在命令提示符中使用以上任何特殊字符的組合。

我們可以通過修改 PS1 變量來修改提示符格式,例如:
[mozhiyan@localhost ~]$ PS1="[\t][\u]\$ "
[17:27:34][mozhiyan]$ 
新的 Shell 提示符現在可以顯示當前的時間和用戶名。不過這個新定義的 PS1 變量只在當前 Shell 會話期間有效,再次啟動 Shell 時將重新使用默認的提示符格式。

精美而實用的網站,提供C語言、C++、STL、Linux、Shell、Java、Go語言等教程,以及socket、GCC、vi、Swing、設計模式、JSP等專題。

Copyright ?2011-2018 biancheng.net, 陜ICP備15000209號

底部Logo