[問題] 命令提示字元有辦法加判斷式嗎?

看板Linux作者 (玻璃做的大叔)時間8年前 (2017/04/10 00:52), 編輯推噓7(7010)
留言17則, 9人參與, 最新討論串1/1
之前有請教過如何修改命令提示字元。後來知道是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) -- ※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 180.176.47.36 ※ 文章網址: https://www.ptt.cc/bbs/Linux/M.1491756733.A.B17.html

04/10 01:00, , 1F
PROMPT_COMMAND可以試試
04/10 01:00, 1F

04/10 12:26, , 2F
寫個function在PS1內呼叫即可
04/10 12:26, 2F

04/10 20:54, , 3F
可以啊,像 PS1="`pwd` `date -I`"
04/10 20:54, 3F

04/10 20:55, , 4F
好像不行欸…,但我記得有人做過。
04/10 20:55, 4F

04/10 21:17, , 5F
二樓正解,寫成 function 呼叫就好。
04/10 21:17, 5F

04/10 21:18, , 6F
PS1="$(function_name)" 這樣
04/10 21:18, 6F

04/10 21:48, , 7F
可是我像打 PS1="$(date)" 出來的日期不會更新
04/10 21:48, 7F

04/10 22:06, , 8F
已經印在螢幕上的當然就不會更新了啦。
04/10 22:06, 8F

04/11 03:17, , 9F
是不是要用單'而不是",比如說PS1='$(date)'
04/11 03:17, 9F

04/11 14:07, , 10F
樓上正確,用雙引號會被立即求值。
04/11 14:07, 10F

04/11 20:33, , 11F
你要不要直接試oh-my-zsh...都幫你用好了...
04/11 20:33, 11F

04/12 10:33, , 12F
寫成shell script可能可以?
04/12 10:33, 12F

04/13 14:03, , 13F
`pwd`當然馬可以 我自己寫sh+python這樣呼叫也可以
04/13 14:03, 13F

04/22 13:53, , 14F
function感覺好有趣,但是要寫在哪裡?
04/22 13:53, 14F

04/24 12:27, , 15F
偷懶可以直接寫在.bashrc裡 或者另寫一檔在.bashrc裏面
04/24 12:27, 15F

04/24 12:29, , 16F
用source讀取
04/24 12:29, 16F

04/30 11:28, , 17F
我有寫過C語言的function,但這個真的不曉得要怎麼呼叫耶
04/30 11:28, 17F
文章代碼(AID): #1OwcQziN (Linux)
文章代碼(AID): #1OwcQziN (Linux)