命令提示字元有辦法加判斷式嗎? - Linux

Table of Contents

之前有請教過如何修改命令提示字元。後來知道是PS1的參數,譬如我用


PS1='[\D{%M:%S} \e[1;34m\u\e[0m \e[1;45m$?\e[0m \e[1;32m\W\e[0m]\$ '

就會變成

[46:47 root 0 ~]#
這樣,可以看看執行前後的時間差,還有error code之類的,算是個人興趣。
我想請問的是,有辦法讓error code的表現根據數字不同而改變嗎?
譬如說$?==0,就不要有背景,或是根本不顯示。如果$?不等於0,就會高亮顯示。

請問這能辦到嗎?

--
起初,他們追殺共產主義者,我沒有說話,因為我不是共產主義者;
接著,他們追殺猶太人,我沒有說話,因為我不是猶太人;
後來,他們追殺工會成員,我沒有說話,因為我不是工會成員;
此後,他們追殺天主教徒,我沒有說話,因為我是新教教徒;
最後,他們奔我而來,卻再也沒有人站起來為我說話了。
《First They Came(他們首次來時)》,Martin Niemoller牧師(1892-1984)

--

All Comments

Freda avatarFreda2017-04-10
PROMPT_COMMAND可以試試
Agnes avatarAgnes2017-04-14
寫個function在PS1內呼叫即可
Charlotte avatarCharlotte2017-04-17
可以啊,像 PS1="`pwd` `date -I`"
Suhail Hany avatarSuhail Hany2017-04-19
好像不行欸…,但我記得有人做過。
Xanthe avatarXanthe2017-04-19
二樓正解,寫成 function 呼叫就好。
Dora avatarDora2017-04-22
PS1="$(function_name)" 這樣
Audriana avatarAudriana2017-04-22
可是我像打 PS1="$(date)" 出來的日期不會更新
Joe avatarJoe2017-04-25
已經印在螢幕上的當然就不會更新了啦。
Caitlin avatarCaitlin2017-04-29
是不是要用單'而不是",比如說PS1='$(date)'
Dorothy avatarDorothy2017-05-02
樓上正確,用雙引號會被立即求值。
Rae avatarRae2017-05-03
你要不要直接試oh-my-zsh...都幫你用好了...
Jacky avatarJacky2017-05-06
寫成shell script可能可以?
Leila avatarLeila2017-05-10
`pwd`當然馬可以 我自己寫sh+python這樣呼叫也可以
Necoo avatarNecoo2017-05-13
function感覺好有趣,但是要寫在哪裡?
Catherine avatarCatherine2017-05-13
偷懶可以直接寫在.bashrc裡 或者另寫一檔在.bashrc裏面
Rebecca avatarRebecca2017-05-13
用source讀取
Megan avatarMegan2017-05-15
我有寫過C語言的function,但這個真的不曉得要怎麼呼叫耶