(轉)Linux下PS1、PS2、PS3、PS4使用詳解

Linux下PS1、PS2、PS3、PS4使用詳解

原文:http://www.linuxidc.com/Linux/2016-10/136597.htm

1、PS1——默認提示符

如下所示,可以通過修改Linux下的默認提示符,使其更加實用。在下面的例子中,默認的PS1的值是“\s-\v\$”,顯示出了shell的名稱的版本。我們通過修改,可以使其顯示用戶名、主機名和當前工作目錄。

-bash-3.2$ export PS1="\u@\h \w> "?
ramesh@dev-db ~> cd /etc/mail?
ramesh@dev-db /etc/mail>

[注: 提示符修改為 "username@hostname current-dir>的形式]

本例中PS1使用的一些代碼如下:

o \u -- 用戶名?
o \h -- 主機名?
o \w -- 當前目錄的完整路徑。請注意當你在主目錄下的時候,如上面所示只會顯示~

注意,在PS1值之后有一個空格。從個人角度來講,使用這個空格可以增加一定的可讀性。

將export PS1=”\u@\h \w>" 添加到.bash_profile 或者 .bashrc中,則可以保證其永久有效。

ramesh@dev-db ~> vi ~/.bash_profile?
ramesh@dev-db ~> vi ~/.bashrc

[注: 將命令添加到以上任何一個即可]

PS(Prompt Sign): 是指命令提示符,例如在Fedora?12的終端下:[linuxidc@liutao ~]$ ,在設定PS1環境變量時,我們需要用到預設的一些特殊符號來設定PS1。

Linux中PS1設置:
在/etc/.bashrc中,找到PS1變量的定義,如果沒有,手動加上:
可以將顯示輸出到標題欄上:

[root@elk-node1 ~]#?vim /root/.bashrc
...........
export PS1="\[\e]2;\u@\H \w\a\e[32;1m\]>\[\e[0m\]"
[root@elk-node1 ~]#?source /root/.bashrc
export PS1="\[\e]2;\u@\H \w\a\e[32;1m\]>\[\e[0m\]"
[root@elk-node1 ~]#?. /root/.bashrc
>cd /usr/local/
>pwd
/usr/local
>

最常見的設置:

1)粉紅色的

[root@elk-node1 ~]#?vim /root/.bashrc
...........
export PS1="\[\e[35;1m\][\u@\h \W]$>\[\e[0m\]"
[root@elk-node1 ~]#?source /root/.bashrc
[root@elk-node1 local]$>cd /usr/local/
[root@elk-node1 ~]$>cd /usr/local/
[root@elk-node1 local]$>pwd
/usr/local
[root@elk-node1 local]$>

2)綠色設置

[root@elk-node1 ~]#?vim /root/.bashrc
...........
export PS1="\[\e[32;1m\][\u@\h \W]$>\[\e[0m\]"
[root@elk-node1 ~]#?source /root/.bashrc
[root@elk-node1 local]$>cd /usr/local/
[root@elk-node1 ~]$>cd /usr/local/
[root@elk-node1 local]$>pwd
/usr/local
[root@elk-node1 local]$>

?

------------------------------------------------------------------------------------------

上面切換到顯示的是當前簡介路徑。那么如何讓linux終端命令提示符號顯示全路徑,而不是當前簡介路徑?

下面兩種方法:

1)第一種方法:在/root/.bashrc文件下添加下面內容
[root@elk-node1 ~]# vim /root/.bashrc?
.......
export PS1="[\u@\h \w]\$"
[root@elk-node1 ~]# source /root/.bashrc
[root@elk-node1 ~]$cd /usr/local/
[root@elk-node1 /usr/local]$ ? ? ? ? ? ? ? ??#顯示的是全路徑

如果將上面的內容改為export PS1="[\u@\h \w]"#,那么顯示的就是#符號

[root@elk-node1 ~]# vim /root/.bashrc?
.......
export PS1="[\u@\h \w]"#
[root@elk-node1 ~]# source /root/.bashrc
[root@elk-node1 ~]#cd /usr/local/
[root@elk-node1 /usr/local]#?? ? ? ? ? ? ? ??#顯示的是全路徑

注意:默認的PS1="[\u@\h \W]\$",其中\W就是路徑的設置選項,大寫的W是簡介模式,小寫的w為全路徑模式。

2)第二種方法:在/root/.bashrc文件下添加下面內容:

[root@elk-node1 ~]# vim /root/.bashrc?
.......
export PS1="[\u@\h \`pwd\`]$"
[root@elk-node1 ~]# source /root/.bashrc
[root@elk-node1 ~]$cd /usr/local/
[root@elk-node1 /usr/local]$ ???#顯示的是全路徑


改為#號
[root@elk-node1 ~]# vim /root/.bashrc?
.......
export PS1="[\u@\h \`pwd\`]#"
[root@elk-node1 ~]# source /root/.bashrc
[root@elk-node1 ~]$cd /usr/local/
[root@elk-node1 /usr/local]$ ? ???#顯示的是全路徑

?

-------------------------------------------------------------------------------------------------------------------------------

?使用方法:

# PS1='自定義內容'

注意兩邊的單引號

示例: PS1='(\u@\H \d\t)\$'

----------------------------------------------------------------------------------------------------------------

PS1:就是用戶平時的提示符。

PS2:第一行沒輸完,等待第二行輸入的提示符。?

Linux系統提示符是用系統變量PS1來定義的。一般系統默認的形式是:[username@host工作目錄]$.?
用echo $PS1可以得到PS1的值,即PS1="[\u@\h \w]"\$?
登錄后可以更改PS1的顯示樣式,但是當退出重啟登錄進入系統后,樣式又變成系統默認的樣式了,如果要徹底改變它的樣式,只能從配置文件中改。
PS是在用戶根目錄下的.bash_profile中定義的。

如:

# .bash_profile

# Get the aliases and functions

if [ -f ~/.bashrc ]; then

. ~/.bashrc

fi

# User specific environment and startupprograms

#以下是設定的PS1的值?

PS1="[\u@\h \w]\$"

PATH=$PATH:$HOME/bin

#使用export把PS1輸出,以使它可以在子shell中生效,這會造成ROOT用戶的也采用此樣式

#export PS1 要慎用?

export PATH?

unset USERNAME

下面簡單說說環境下默認的特殊符號所代表的意義:

\d :代表日期,格式為weekday month date,例如:"Mon Aug1"

\H:完整的主機名稱。例如:我的機器名稱為:fc4.linux,則這個名稱就是fc4.linux

\h :僅取主機的第一個名字,如上例,則為fc4,.linux則被省略?

\t :顯示時間為24小時格式,如:HH:MM:SS?

\T :顯示時間為12小時格式?

\A :顯示時間為24小時格式:HH:MM?

\u :當前用戶的賬號名稱

\v :BASH的版本信息

\w :完整的工作目錄名稱。家目錄會以 ~代替

\W :利用basename取得工作目錄名稱,所以只會列出最后一個目錄

\# :下達的第幾個命令

\$ :提示字符,如果是root時,提示符為:# ,普通用戶則為:$

==================================================

我們可以通過設置PS1變量使提示符成為彩色。在PS1中設置字符序列顏色的格式為:
\[\e[F;Bm\]
其中``F''為字體顏色,編號30~37;``B''為背景色,編號40~47。
可通過``\e[0m''關閉顏色輸出;特別的,當B為1時,將顯示加亮加粗的文字,詳細請看下面的顏色表與代碼表。

顏色表

前景 背景 顏色
---------------------------------------
30 40 黑色
31 41 紅色
32 42 綠色
33 43 黃色
34 44 藍色
35 45 紫紅色
36 46 青藍色
37 47 白色

?

代碼 意義
-------------------------
0 OFF
1 高亮顯示
4 underline
5 閃爍
7 反白顯示
8 不可見

如果想要設置終端提示符的樣式只要把$PS1在~/.bahrc指定即可比,比如我的設置如下:
設置一:
PS1="\[\e[32m\][\u@\h \w]$\[\e[m\]"
export PS1
效果:
[LinuxSong@test ~]$?

設置二:

if [ $TERM = 'linux' ]; then
export PS1="[\[\e[36;1m\]\u@\h\[\e[31;1m\]\w\[\e[32;1m\]]> "
zhcon --utf8
clear
elif [ $TERM = "xterm" ]; then
export PS1="[\[\e[31;1m\]\w\e[0m]> "
fi

本文永久更新鏈接地址:http://www.linuxidc.com/Linux/2016-10/136597.htm

?

2、PS2——再談提示符

一個非常長的命令可以通過在末尾加“\”使其分行顯示。多行命令的默認提示符是“>”。 我們可以通過修改PS2 ,將提示符修改為"continue->" 。

ramesh@dev-db ~> myisamchk --silent --force --fast --update-state \?
> --key_buffer_size=512M --sort_buffer_size=512M \?
> --read_buffer_size=4M --write_buffer_size=4M \?
> /var/lib/mysql/bugs/*.MYI
[注: 這里使用 ">" 作為默認提示符]
ramesh@dev-db ~> export PS2="continue-> "?
ramesh@dev-db ~> myisamchk --silent --force --fast --update-state \?
continue-> --key_buffer_size=512M --sort_buffer_size=512M \?
continue-> --read_buffer_size=4M --write_buffer_size=4M \?
continue-> /var/lib/mysql/bugs/*.MYI
[注: 與上面類似,用 "continue-> " 作提示符]

當用“\”使長命令分行顯示,我發現非常易讀。當然我也見過有的人不喜歡分行顯示命令

3、PS3——Shell腳本中使用select時的提示符

你可以像下面示范的那樣,用環境變量PS3定制shell腳本的select提示:

不使用PS3的腳本輸出:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
ramesh@dev-db ~> cat ps3.sh
select i in mon tue wed exit
do
case $i in
mon) echo "Monday";;
tue) echo "Tuesday";;
wed) echo "Wednesday";;
exit) exit;;
esac
done
ramesh@dev-db ~> ./ps3.sh
1) mon
2) tue
3) wed
4) exit
#? 1
Monday
#? 4

[注: 缺省的提示符是 #?]

使用PS3的腳本輸出:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
ramesh@dev-db ~> cat ps3.sh
PS3="Select a day (1-4): "
select i in mon tue wed exit
do
case $i in
mon) echo "Monday";;
tue) echo "Tuesday";;
wed) echo "Wednesday";;
exit) exit;;
esac
done
ramesh@dev-db ~> ./ps3.sh
1) mon
2) tue
3) wed
4) exit
Select a day (1-4): 1
Monday
Select a day (1-4): 4

[注: 設置了PS3變量后,命令提示符已經成為 "Select a day (1-4):"]

4、PS4——PS4-“set -x"用來修改跟蹤輸出的前綴

如果你像下面那樣在調試模式下的腳本中,PS4環境變量可以定制提示信息:

沒有設置PS4時的shell腳本輸出:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
ramesh@dev-db ~> cat ps4.sh
set –x
echo "PS4 demo script"
ls -l /etc/ | wc –l du -sh ~
ramesh@dev-db ~> ./ps4.sh
++ echo 'PS4 demo script'
PS4 demo script
++ ls -l /etc/
++ wc –l
243
++ du -sh /home/ramesh
48K /home/ramesh

[注: 當使用sex -x跟蹤輸出時的提示符為 ++]

設置PS4后的腳本輸出:

PS4在ps.sh中定義了下面兩個變量

o $0 顯示當前的腳本名?
o $LINENO 顯示的當前的行號

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
ramesh@dev-db ~> cat ps4.sh
export PS4='$0.$LINENO+ '
set -x
echo "PS4 demo script"
ls -l /etc/ | wc -l
du -sh ~
ramesh@dev-db ~> ./ps4.sh
../ps4.sh.3+ echo 'PS4 demo script'
PS4 demo script
../ps4.sh.4+ ls -l /etc/
../ps4.sh.4+ wc -l
243
../ps4.sh.5+ du -sh /home/ramesh
48K /home/ramesh

[注: 使用PS4后使 "{script-name}.{line-number}+" 成為set –x的命令提示符]

【編輯推薦】

    1. 如何在RHEL5.7下搭建和配置DHCP服務器
    2. Linux服務器的16個監控命令
    3. 服務器性能指標:撥開服務器評測體系迷霧

轉載于:https://www.cnblogs.com/liujiacai/p/8059566.html

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/453853.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/453853.shtml
英文地址,請注明出處:http://en.pswp.cn/news/453853.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

開放平臺大抉擇

開放平臺大抉擇之新浪SAE:為個人應用開發帶來福音 導讀:繼上期淘寶網副總裁王文彬從平臺功能特色、運營狀況等多方面分享了淘寶開放平臺的歷程和挑戰之后。國內另一家云平臺服務方的典型代表——Sina App Engine(簡稱SAE),作為新浪研發中心于…

ip68級防水可以泡多久_iPhone8防水級別升級至IP68:能在1.5米深水中堅持30分鐘

1月15日,業界最新的泄密消息顯示,蘋果擬在今年推出的“iPhone 8”智能手機會是一款革命性的手機,功能和配置就不多說了。蘋果還將解決iPhone 7的一個重要缺陷,就是大大增強iPhone 8的防水性能,防水級別達IP68。《韓國先…

HTTP POST 發送數據的參數 application/x-www-form-urlencoded、multipart/form-data、text/plain

HTTP 簡介 HTTP/1.1 協議規定的 HTTP 請求方法有 OPTIONS、GET、HEAD、POST、PUT、DELETE、TRACE、CONNECT 這幾種。 其中 POST 一般用來向服務端提交數據,本文主要討論 POST 提交數據的幾種方式。 我們知道,HTTP 協議是以 ASCII 碼傳輸,建…

vue 二進制文件的下載(解決亂碼和解壓報錯)

問題描述:項目中使用的是vue框架進行開發,因為文件下載存在權限問題,所以并不能通過 a 鏈接的 href 屬性直接賦值 URL進行下載, (如果你的文件沒有下載權限,可以直接通過href屬性賦值URL的方法進行文件下載…

Python 第三方模塊之 psutil - 獲取系統運行的進程和系統利用率信息

一、psutil模塊: 官方網址:http://pythonhosted.org/psutil/ 1.psutil是一個跨平臺庫(http://pythonhosted.org/psutil/)能夠輕松實現獲取系統運行的進程和系統利用率(包括CPU、內存、磁盤、網絡等)信息。它主要用來做系統監控,…

石頭機器人紅燈快閃_機器人集體“快閃”活動爆紅網絡 “我是AI”與您相約智能新時代...

原標題:機器人集體“快閃”活動爆紅網絡 “我是AI”與您相約智能新時代3月10日下午,天津科學技術館內,悠揚美妙的歌聲《我和我的祖國》突然響起,隨后50個身形矯健的阿爾法機器人伴隨著歌聲翩翩起舞,動作整齊、科技感十…

淺談云計算與數據中心計算

文/林仕鼎 云計算概念發端于Google和Amazon等超大規模的互聯網公司,隨著這些公司業務的成功,作為其支撐技術的云計算也得到了業界的高度認可和廣泛傳播。時至今日,云計算已被普遍認為是IT產業發展的新階段,從而被賦予了很多產業和…

無線網絡實體圖生成工具airgraph-ng

無線網絡實體圖生成工具airgraph-ngairgraph-ng是aircrack-ng套件提供的一個圖表生成工具。該工具可以根據airodump工具生成的CSV文件繪制PNG格式的圖。繪制的圖有兩種類型,分別為AP-客戶端關聯圖和通用探測圖。通過AP-客戶端關聯圖,可以更為直觀的了解無…

高等代數期末考試題庫及答案_數學類高等代數期末考試試題A卷(含答案)

數學類高等代數期末考試試題A卷(含答案)課程編號MTH17063 北京理工大學2010-2011學年第一學期2009級數學類高等代數期末考試試題A卷班級 學號 姓名 成績 一、(25分)設表示域上的所有階矩陣構成的上的線性空間。取定,對于任意的,定義。(1)證明為上的一個線…

cocos2d-lua3.7組件篇(三)-http通信demo

客戶端使用lua、服務端使用QT做為服務器。 步驟: 客戶端 -----------Post 用戶名和密碼 服務端接受Post請求,讀取數據,返回response一、客戶端代碼 loadingImg require"app.scenes.LoadingLayer"local LoginScene class(&qu…

數據挖掘:如何尋找相關項

導讀:隨著大數據時代浪潮的到來數據科學家這一新興職業也越來越受到人們的關注。本文作者Alexandru Nedelcu就將數學挖掘算法與大數據有機的結合起來,并無縫的應用在面臨大數據浪潮的網站之中。 數據科學家需要具備專業領域知識并研究相應的算法以分析對…

Python 第三方模塊之 selenium - 模擬操作 Chrome 瀏覽器

1、安裝selenium 1.1、Python 安裝 selenium 模塊 pip install selenium1.2、下載驅動 選擇和自己chrom版本相對應的驅動到本地,下載地址 http://npm.taobao.org/mirrors/chromedriver/2、Python 操作 from selenium import webdriver import time import json…

jupyter notebook代碼導出_Jupyter Notebook導出包含中文的pdf_親測有效

Jupyter Notebook是很好的數據科學創作環境,是非常方便的Python代碼編輯器。jupyter提供導出的格式有.py、.html、.md、.pdf等。目前用其導出包含中文的pdf會遇到很多坑,網上也有一些解決方案,大致分為兩種方式,一是安裝 pandoc并…

前端之使用 POST 提交數據并跳轉

GET 方式 window.location.href是我們常用來在js中實現頁面跳轉的方法,這是使用get方式發送請求,示例如下 window.location.href url;優點是簡單易用,缺點是如果有參數的話,參數會暴露在url地址中,這降低了系統的安…

cef js返回c++的代碼_CEF3開發者系列之外篇——IE中JS與C++交互

使用IE內核開發客戶端產品,系統和前端頁面之間的交互,通常給開發和維護帶來很大的便利性。但操作系統和前端之間的交互卻是比較復雜的。具體來說就是腳本語言和編譯語言的交互。在IE內核中html和css雖然不兼容,但是IE編程接口是完全一樣的,這得益于微軟的…

多線程編程指南 part 2

多線程編程指南Sun Microsystems, Inc.4150 Network CircleSanta Clara, CA95054U.S.A.文件號碼819–7051–102006 年10 月版權所有2005 Sun Microsystems, Inc. 4150 Network Circle, Santa Clara, CA95054 U.S.A. 保留所有權利。本文檔及其相關產品的使用、復制、分發和反編譯…

00030_ArrayList集合

1、數組可以保存多個元素,但在某些情況下無法確定到底要保存多少個元素,此時數組將不再適用,因為數組的長度不可變 2、JDK中提供了一系列特殊的類,這些類可以存儲任意類型的元素,并且長度可變,統稱為集合 3…

1.3tf的varible\labelencoder

1.tf的varible變量 import tensorflow as tf #定義變量--這里是計數的變量 statetf.Variable(0,namecounter) print (state.name) #輸出變量值 onetf.constant(1) #常量new_valuetf.add(state,one) updatetf.assign(state,new_value)#初始化所有變量 inittf.initialize_all_var…

kafka 日志相關配置

日志目錄 ${kafka.logs.dir}/server.log :服務器日志${kafka.logs.dir}/state-change.log:狀態變化日志${kafka.logs.dir}/kafka-request.log:請求處理日志${kafka.logs.dir}/log-cleaner.log:日志清理${kafka.logs.dir}/control…

linux mc服務器 mod_如何在linux搭建MC服務器

摘要:前言Q:為什么要用linux搭建MC服務器?A:因為linux系統占用率低,跑服務器效果非常好Q:看不懂linux ssh,后期自己無力運維怎么辦A:沒關系,這個教程是通過安裝BT...前言…