shell除錯可以設定ps4
$ echo $ps4
+}原貼:
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
[注: 將命令新增到以上任何乙個即可]
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的指令碼輸出:
ramesh@dev-db ~> cat ps3.sh
select i in mon tue wed exit
docase $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的指令碼輸出:
ramesh@dev-db ~> cat ps3.sh
ps3="select a day (1-4): "
select i in mon tue wed exit
docase $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指令碼輸出:
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
++ du -sh /home/ramesh
48k /home/ramesh
[注: 當使用*** -x跟蹤輸出時的提示符為 ++]
設定ps4後的指令碼輸出:
ps4在ps.sh中定義了下面兩個變數
o $0 顯示當前的指令碼名
o $lineno 顯示的當前的行號
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
../ps4.sh.5+ du -sh /home/ramesh
48k /home/ramesh
[注: 使用ps4後使 ".+" 成為set –x的命令提示符]
Linux下PS1 PS2 PS3 PS4使用詳解
shell除錯可以設定ps4 echo ps4 原貼 1 ps1 預設提示符 如下所示,可以通過修改linux下的預設提示符,使其更加實用。在下面的例子中,預設的ps1的值是 s v 顯示出了shell的名稱的版本。我們通過修改,可以使其顯示使用者名稱 主機名和當前工作目錄。bash 3.2 exp...
linux下PS1 PS2 PS3 PS4最全詳解
通過設定環境變數ps1 ps2 ps3以及ps4來自定義使用者命令列的字元顯示。如果要長期永久性修改提示符,可以將修改提示符的命令新增到 home profile或 home bash profile檔案中 ps1 ps1是主提示符變數,也是預設提示符變數。預設值 u h w 顯示使用者主機名稱工作...
linux環境變數設定 PS1,PS2
ps1 就是使用者平時的提示符。ps2 第一行沒輸完,等待第二行輸入的提示符。linux系統提示符是用系統變數ps1來定義的。一般系統預設的形式是 username host 工作目錄 用echo ps1可以得到ps1的值,即ps1 u h w 登入後可以更改ps1的顯示樣式,但是當退出重啟登入進入...