譯者:Nica < nicaliu at gmail dot com >
當你以命令列管理 Linux/unix 作業系統、使用者,並與系統互動時,乃是透過 shell。本文將探討的是 bash shell 提示符號的一些要點。
(以下實作內容與部份譯文,將視譯者在 CentOS 裡的系統實作,而有所調整)
在許多 Linux 裡,預設的 bash 命令列提示符號是沒有區分顏色的,它通常會顯示使用者名稱、主機,與現行工作目錄這三項資訊。本文接下來的段落,將會看到:透過匯出 bash 提符號:PS{n} 變數的方式,便能輕鬆改變這個預設的設定。Bash 提示符號可以依使用者的需求修改,它可以顯示時間、系統負載、現正使用系統的使用者人數、系統啟動時間等等資訊。
Bash 提示符號變數
一如 Linux 系統裡的其它東西:bash 提示符號也是可以客製化的。用改變 bash PS1、PS2、PS3、PS4 變數值的方式,即可客製化 bash 提示符號。為了簡化,本文將僅著墨在 PS1 與 PS2 變數的部份。
透過 echo 命令,查看現行 PS1 與 PS2 變數值為何。
echo "Bash PS1 variable:" $PS1
echo "Bash PS2 variable:" $PS2
【譯者 CentOS 系統中,實作如下】
[root@jnt2 ~]# echo "Bash PS1 variable:" $PS1
Bash PS1 variable: [\u@\h \W]\$
[root@jnt2 ~]# echo "Bash PS1 variable:" $PS2
Bash PS1 variable: >
[root@jnt2 ~]#
Bash PS1 提示符號變數
PS1 乃主要的提示符號變數。現行內容為 [\u@\h \W]\$ 這些特殊 bash 字元。這在很多 Linux 系統裡是 bash 提示符號的預設架構方式,它會在每一次你使用終端畫面登入的時侯出現。你可以參考 "Bash 提示符號特定字元" 這段,瞭解 \u、\h 與 \W、 \$ 這些符號分別代表的是什麼意思。下面是在預設值下,典型的 bash 提示符號:
【譯者 CentOS 系統中,實作如下】
[root@jnt2 ~]#
Bash PS2 提示符號變數
PS2 bash shell 變數乃第二順位提示符號。此提示符號,是在 shell 等待使用者輸入的時侯所顯示的,例如當你忘了輸入第二個雙引號的時侯:
【譯者 CentOS 系統中,實作如下】
[root@jnt2 ~]# echo "Miss double-quote
>
Bash 提示符號特殊字元
Bash 提示符號可以透過特殊字元的使用,進行客製化。下面的表格內容為 bash 提示符號特殊字元與其解說。
Bash 特殊字元 Bash 特殊字元解說
\a ASCII 警示字元 (07)
\] 結束非列印字元的序列
\h 直至第一個 . 之前的主機名稱
\j 由 shell 管理下,現行的工作數
\n 換行符號
\s shell 名稱,$0 的 basename (接在最後一個斜線之後的那部份)
\T 12 小時格式的現行時間。
\A 24 小時格式的現行時間。
\w 現行工作目錄。
\! 這個命令的歷史訊息編號。
\$ 若實際 UID 為 0,就是 #,否則即為 $。
\\ 反斜線。
\d "週 月 日" 格式的日期 (例 "Tue May 26")。
\e ASCII 跳脫字元 (033)
\H 主機名稱。
\l shell 之終端裝置名稱的 basename
\r 歸位字元 (carriage return)
\t 24 小時 HH:MM:SS 格式的現行時間。
\@ 12 小時 am/pm 格式的現行時間。
\u 現下使用者的 username
\V bash 釋出的版本加上 patch 編號
\W 現行工作目錄的 basename
\# 此命令的命令編號
\nnn 字元對應的八進制編號 nnn
\[ 起始非列印字元的序列,可以用來將終端控制序列嵌入至提示符號中。
\D{format} 此格式將傳送給 strftime(3),然後將結果插入至提示符號字串中;若為空白格式,結果將以本地端指定時間的方式展現。大括弧必指定。
【譯註:若格式為空白,亦必須指定為 \D{},如省略 {},提示符號將直接將 \D 印出來】
Bash 提示符號客製化
使用者登入系統後的使用者環境變數,初始自各式檔案,像是:
.全域性系統檔 /etc/profile 或 /etc/bashrc
.使用者檔案 ~/.bash_profile、~/.bash_login、/profile、~/.bashrc 或 ~/.bash_logout。
在此必須要瞭解的是:所有使用者環境變數的存活時間,就等於終端對話 (session) 的這段時間。當終端對話關閉的同時,使用者的變數 - 包括在終端通訊期間定義的 bash shell 變數都不再有意義,而必須在新終端對話建立時,透過 shell 與 shell 互動的方式,再定義一次。我們可以在此定義兩個變數,證明這件事。
永久性的 bash 變數定義
我們要定義的第一個永久性變數,是放在 bash 初始化檔案之一 ~/bash_profile 裡,第二個變數我們則是在 shell 提示符號下定義:
定義永久性使用者變數:
【譯者 CentOS 系統中,實作如下】
login as: nica
nica@192.168.0.1's password:
Last login: Mon Dec 8 15:18:35 2008 from 192.168.0.102
[nica@jnt2 ~]$ echo "VAR1=PermanentVariable" >> .bash_profile
[nica@jnt2 ~]$ exit
重新登入
login as: nica
nica@192.168.0.1's password:
Last login: Mon Dec 8 15:18:47 2008 from 192.168.0.102
[nica@jnt2 ~]$ echo $VAR1
PermanentVariable
[nica@jnt2 ~]$
在這裡,使用者 nica 修改了自已的 .bash_profile 初始檔 - 也就是放在他/她家目錄下的那個檔案,在該檔,添加了 VAR1 的變數定義。當使用者 nica 登出再登入一次,$var1 變數即已初始化,且可用於新的終端對話之中。
同理,我們可以定義自已的 bash 提示符號。做這件事的最佳位置乃是 bash 初始化檔案 ~/.bashrc。開啟你的 ~/.bashrc 檔,並加入下面這行,定義 PS1 變數:
PS1='MY NEW BASH PROMPT@\t:\w\$ '
注意:你的 ~/.bashrc 檔可能和下面的不大一樣。
【譯者 CentOS 系統中,實作如下】
# .bashrc
# Source global definitions
if [ -f /etc/bashrc ]; then
. /etc/bashrc
fi
PS1='mynew bash prompt@\t:\w\$ ' <<==新增這行
# User specific aliases and functions
新的 bash 提示符號將會以如上的方式歡迎你。此變動對 bash 提示符號而言是永久性的。
提示:
使用 source 命令可以重新取讀 bash 初始檔 .bashrc,重新啟動一個新的終端對話取代之。
【譯者 CentOS 系統中,實作如下】
[nica@jnt2 ~]$ vi .bashrc
[nica@jnt2 ~]$ source .bashrc
mynew bash prompt@16:01:26:~$
或單純的:
【譯者 CentOS 系統中,實作如下】
mynew bash prompt@16:02:25:~$ . .bashrc 【譯註:英文的句點一個、空一格,再加上 .bashrc】
my new2 bash prompt@16:02:41:~$
暫時性 bash 變數定義
暫時性的 bash 變數定義僅存於現下終端對話的生命週期,透過 export 這個命令來作:
【譯者 CentOS 系統中,實作如下】
[nica@jnt2 ~]$ export VAR2=TemporaryVariable
[nica@jnt2 ~]$ echo $VAR1
PermanentVariable
[nica@jnt2 ~]$ echo $VAR2
TemporaryVariable
[nica@jnt2 ~]$ exit
登出再登入
[nica@jnt2 ~]$ echo $VAR1
PermanentVariable
[nica@jnt2 ~]$ echo $VAR2
[nica@jnt2 ~]$
如你所見,使用者關閉他/她的終端對話,變數 $VAR2 即無定義了。而永久性變數 $VAR1 則永遠有來自 bash 初始化檔案 ~/.bash_profile 的定義。我們可以用 export 命令定義新的變數,同樣也可以用它來修改 bash 提示符號 $PS1 變數。欲變更現有 bash 提示符號,使其只顯示時間,我們可以:
export PS1="\t:"
【譯者 CentOS 系統中,實作如下】
[nica@jnt2 ~]$ export PS1="\t:"
17:31:47:
17:31:50:
17:31:51:
17:31:55:
17:31:55:
(…)
原文詳見:Bash prompt basics
如有版權問題,請來信 < nicaliu at gmail dot com > 告知,謝謝
當你以命令列管理 Linux/unix 作業系統、使用者,並與系統互動時,乃是透過 shell。本文將探討的是 bash shell 提示符號的一些要點。
(以下實作內容與部份譯文,將視譯者在 CentOS 裡的系統實作,而有所調整)
在許多 Linux 裡,預設的 bash 命令列提示符號是沒有區分顏色的,它通常會顯示使用者名稱、主機,與現行工作目錄這三項資訊。本文接下來的段落,將會看到:透過匯出 bash 提符號:PS{n} 變數的方式,便能輕鬆改變這個預設的設定。Bash 提示符號可以依使用者的需求修改,它可以顯示時間、系統負載、現正使用系統的使用者人數、系統啟動時間等等資訊。
Bash 提示符號變數
一如 Linux 系統裡的其它東西:bash 提示符號也是可以客製化的。用改變 bash PS1、PS2、PS3、PS4 變數值的方式,即可客製化 bash 提示符號。為了簡化,本文將僅著墨在 PS1 與 PS2 變數的部份。
透過 echo 命令,查看現行 PS1 與 PS2 變數值為何。
echo "Bash PS1 variable:" $PS1
echo "Bash PS2 variable:" $PS2
【譯者 CentOS 系統中,實作如下】
[root@jnt2 ~]# echo "Bash PS1 variable:" $PS1
Bash PS1 variable: [\u@\h \W]\$
[root@jnt2 ~]# echo "Bash PS1 variable:" $PS2
Bash PS1 variable: >
[root@jnt2 ~]#
Bash PS1 提示符號變數
PS1 乃主要的提示符號變數。現行內容為 [\u@\h \W]\$ 這些特殊 bash 字元。這在很多 Linux 系統裡是 bash 提示符號的預設架構方式,它會在每一次你使用終端畫面登入的時侯出現。你可以參考 "Bash 提示符號特定字元" 這段,瞭解 \u、\h 與 \W、 \$ 這些符號分別代表的是什麼意思。下面是在預設值下,典型的 bash 提示符號:
【譯者 CentOS 系統中,實作如下】
[root@jnt2 ~]#
Bash PS2 提示符號變數
PS2 bash shell 變數乃第二順位提示符號。此提示符號,是在 shell 等待使用者輸入的時侯所顯示的,例如當你忘了輸入第二個雙引號的時侯:
【譯者 CentOS 系統中,實作如下】
[root@jnt2 ~]# echo "Miss double-quote
>
Bash 提示符號特殊字元
Bash 提示符號可以透過特殊字元的使用,進行客製化。下面的表格內容為 bash 提示符號特殊字元與其解說。
Bash 特殊字元 Bash 特殊字元解說
\a ASCII 警示字元 (07)
\] 結束非列印字元的序列
\h 直至第一個 . 之前的主機名稱
\j 由 shell 管理下,現行的工作數
\n 換行符號
\s shell 名稱,$0 的 basename (接在最後一個斜線之後的那部份)
\T 12 小時格式的現行時間。
\A 24 小時格式的現行時間。
\w 現行工作目錄。
\! 這個命令的歷史訊息編號。
\$ 若實際 UID 為 0,就是 #,否則即為 $。
\\ 反斜線。
\d "週 月 日" 格式的日期 (例 "Tue May 26")。
\e ASCII 跳脫字元 (033)
\H 主機名稱。
\l shell 之終端裝置名稱的 basename
\r 歸位字元 (carriage return)
\t 24 小時 HH:MM:SS 格式的現行時間。
\@ 12 小時 am/pm 格式的現行時間。
\u 現下使用者的 username
\V bash 釋出的版本加上 patch 編號
\W 現行工作目錄的 basename
\# 此命令的命令編號
\nnn 字元對應的八進制編號 nnn
\[ 起始非列印字元的序列,可以用來將終端控制序列嵌入至提示符號中。
\D{format} 此格式將傳送給 strftime(3),然後將結果插入至提示符號字串中;若為空白格式,結果將以本地端指定時間的方式展現。大括弧必指定。
【譯註:若格式為空白,亦必須指定為 \D{},如省略 {},提示符號將直接將 \D 印出來】
Bash 提示符號客製化
使用者登入系統後的使用者環境變數,初始自各式檔案,像是:
.全域性系統檔 /etc/profile 或 /etc/bashrc
.使用者檔案 ~/.bash_profile、~/.bash_login、/profile、~/.bashrc 或 ~/.bash_logout。
在此必須要瞭解的是:所有使用者環境變數的存活時間,就等於終端對話 (session) 的這段時間。當終端對話關閉的同時,使用者的變數 - 包括在終端通訊期間定義的 bash shell 變數都不再有意義,而必須在新終端對話建立時,透過 shell 與 shell 互動的方式,再定義一次。我們可以在此定義兩個變數,證明這件事。
永久性的 bash 變數定義
我們要定義的第一個永久性變數,是放在 bash 初始化檔案之一 ~/bash_profile 裡,第二個變數我們則是在 shell 提示符號下定義:
定義永久性使用者變數:
【譯者 CentOS 系統中,實作如下】
login as: nica
nica@192.168.0.1's password:
Last login: Mon Dec 8 15:18:35 2008 from 192.168.0.102
[nica@jnt2 ~]$ echo "VAR1=PermanentVariable" >> .bash_profile
[nica@jnt2 ~]$ exit
重新登入
login as: nica
nica@192.168.0.1's password:
Last login: Mon Dec 8 15:18:47 2008 from 192.168.0.102
[nica@jnt2 ~]$ echo $VAR1
PermanentVariable
[nica@jnt2 ~]$
在這裡,使用者 nica 修改了自已的 .bash_profile 初始檔 - 也就是放在他/她家目錄下的那個檔案,在該檔,添加了 VAR1 的變數定義。當使用者 nica 登出再登入一次,$var1 變數即已初始化,且可用於新的終端對話之中。
同理,我們可以定義自已的 bash 提示符號。做這件事的最佳位置乃是 bash 初始化檔案 ~/.bashrc。開啟你的 ~/.bashrc 檔,並加入下面這行,定義 PS1 變數:
PS1='MY NEW BASH PROMPT@\t:\w\$ '
注意:你的 ~/.bashrc 檔可能和下面的不大一樣。
【譯者 CentOS 系統中,實作如下】
# .bashrc
# Source global definitions
if [ -f /etc/bashrc ]; then
. /etc/bashrc
fi
PS1='mynew bash prompt@\t:\w\$ ' <<==新增這行
# User specific aliases and functions
新的 bash 提示符號將會以如上的方式歡迎你。此變動對 bash 提示符號而言是永久性的。
提示:
使用 source 命令可以重新取讀 bash 初始檔 .bashrc,重新啟動一個新的終端對話取代之。
【譯者 CentOS 系統中,實作如下】
[nica@jnt2 ~]$ vi .bashrc
[nica@jnt2 ~]$ source .bashrc
mynew bash prompt@16:01:26:~$
或單純的:
【譯者 CentOS 系統中,實作如下】
mynew bash prompt@16:02:25:~$ . .bashrc 【譯註:英文的句點一個、空一格,再加上 .bashrc】
my new2 bash prompt@16:02:41:~$
暫時性 bash 變數定義
暫時性的 bash 變數定義僅存於現下終端對話的生命週期,透過 export 這個命令來作:
【譯者 CentOS 系統中,實作如下】
[nica@jnt2 ~]$ export VAR2=TemporaryVariable
[nica@jnt2 ~]$ echo $VAR1
PermanentVariable
[nica@jnt2 ~]$ echo $VAR2
TemporaryVariable
[nica@jnt2 ~]$ exit
登出再登入
[nica@jnt2 ~]$ echo $VAR1
PermanentVariable
[nica@jnt2 ~]$ echo $VAR2
[nica@jnt2 ~]$
如你所見,使用者關閉他/她的終端對話,變數 $VAR2 即無定義了。而永久性變數 $VAR1 則永遠有來自 bash 初始化檔案 ~/.bash_profile 的定義。我們可以用 export 命令定義新的變數,同樣也可以用它來修改 bash 提示符號 $PS1 變數。欲變更現有 bash 提示符號,使其只顯示時間,我們可以:
export PS1="\t:"
【譯者 CentOS 系統中,實作如下】
[nica@jnt2 ~]$ export PS1="\t:"
17:31:47:
17:31:50:
17:31:51:
17:31:55:
17:31:55:
(…)
原文詳見:Bash prompt basics
如有版權問題,請來信 < nicaliu at gmail dot com > 告知,謝謝
全站熱搜
留言列表