命令提示符的幾種設定

2021-07-31 16:41:07 字數 3191 閱讀 9854

寫在開始之前(環境介紹):

其實沒什麼配置之前拿來撘路由環境的centos6.8,shell使用的是bash,

ps1=hello
也可以寫在bash的配置檔案中:

希望所有人登入有效可以寫在 /etc/bashrc中,僅希望對單個使用者有效,那麼可以寫在個人家目錄的~/.bashrc中

注意:bash的檔案的載入順序為 ~/.bashrc --->  /etc/bashrc ,所以如果~/.bashrc    /etc/bashrc 同時存在對ps1的設定,後面的設定會對前面的設定產生覆蓋,也就是說/etc/bashrc 的ps1賦值會最終生效.

這樣:

命令提示符每次顯示都是顯示ps1中的值,將值設定為空就好了 :

ps1=
這時還是有ps1變數的,只是值為空

set |grep ps1

ps1=

或者直接刪除ps1變數

在命令提示符的下一行輸入新命令在,可在變數中加入乙個回車,將這個回車表示出來方法很多種.

ps1="[\u@\h:\w]\$\n"

這是最簡單的,賦值時使用雙引號或單引號,否則\不會產生轉義效果

ps1='[\u@\h:\w]\$

>'

這樣,回車被單引號接收,這時bash不認為這是命令結束,而是被單引號包圍的回車,直到另外乙個單引號出現

也許這個設定並沒有什麼用,但是如果想在每條命令的輸出之間加上乙個回車,以便更好的區分每條執行結果,把結尾的回車加在開始就可以了,還可以多加幾個。(設定在下面)

ps1="\n\n\n[\u@\h:\w]\$"

雖然 \w也能達成效果但是這會失去發現新大陸的機會,設定如下:

#$ps1="\n\`pwd\`\n[\u@\h]\$"
也許這樣能整潔寫在閱讀上

ps1=" 空行

>\ `pwd\` 執行命令輸出當前工作目錄,然後換行

> [\u@\h:\w]\\$" 列印其他資訊

上面\$與\\$是有區別的 \$ 是對$  進行轉義,\\$是對\進行轉義,所以乙個列印出的是$本身,乙個列印出的管理員的識別符號(\$具有特殊意義)

或者使用單引號 進行設定,這裡最主要的是經過bash解釋後賦給ps1的值是否是預期的值

但是 這裡要說的是在輸出ps1中的資訊時會對特殊字元進行解釋(反引號),但是使用雙引號賦值時其中的反引號也會被解釋,所以使用\轉義。

懶得不想畫圖我用文字描述下流程吧:

$ps1="\n\`pwd\`\n[\u@\h]\\$"     賦值,使用轉義\使所有帶有特殊意義的字元失去特殊意義

\n`pwd`\n[\u@\h]\$ 這是最終賦值給ps1的值

在命令提示符輸出的時候 \n 會被解釋成換行 `pwd` 會以命令執行 然後\n換行 然後解釋其他定義的特殊引數

命令提示符只要設定正確可以執行命令,這就可以將一些命令加入到ps1中了,比如當前時間,比如上一條命令的執行結果,等等

在寫乙個顯示命令執行結果的

#ps1="( $? ) [\u@\h]\$" 

( 127 ) [root@localhost]$

這樣對了麼,當然沒有

[root@localhost]$ps1="( $? ) [\u@\h]\$"

( 127 ) [root@localhost]$echo

( 127 ) [root@localhost]$echo

( 127 ) [root@localhost]$^c

echo命令已經執行成功了,但是狀態還是127.

#ps1="( $? ) [\u@\h]\$"( 127 ) [root@localhost]$ls這樣對了麼,當然沒有( 127 ) [root@localhost]$ps1="( $? ) [\u@\h]\$"( 127 ) [root@localhost]$echo( 127 ) [root@localhost]$echo( 127 ) [root@localhost]$^cecho命令已經執行成功了,但是狀態還是127.

其中$? 在 賦值之前就已經被bash解釋了 ,所以賦給ps1 的值應該是 (127)[\u@\h]$"

正確的在下面:

$ps1="( \$? ) [\u@\h]\\$"
不要怪我囉嗦,中午吃的有點多。

ps1='`if [ $? = 0 ]; then echo \[\e[33m\]^_^\[\e[0m\]; else echo \[\e[31m\]o_o\[\e[0m\]; fi`[\u@\h:\w]\$'
ps1="\`if [\ $? = 0 ]; then echo \[\e[33m\]^_^\[\e[0m\]; else echo \[\e[31m\]o_o\[\e[0m\]; fi\`[\u@\h:\w]\\$"
上面兩行最終效果一致,不同的是一行使用了雙引號一行使用了單引號。執行效果是當前命令成功則列印笑臉失敗則哭臉。

注意:不要對上面兩條直接複製,網頁加入了特殊不可見符號。

如果將整個指令碼檔案傳給ps1,那麼會怎樣,未完。。。。。

bash 命令提示符設定

不知道這個要怎麼寫開頭,隨便寫一下吧!目的是想提提神!所以開頭並不重要看圖!bash命令提示符的顯示格式 是通過乙個系統變數ps1控制的 我們改變命令提示符的格式其實就是改變ps1 的值。下面是一些ps1 變數的值 從上面的可以看出 每個不同的變數值都會帶了命令提示符顯示效果的不同,但是這些字元又代...

命令提示符

cd 改變當前目錄 dir 顯示檔案列表 diskcopy 複製軟盤 format 格式化磁碟 md 建立子目錄 type 顯示檔案內容 rd 刪除目錄 ren 改變檔名 cls 清屏 正在執行命令的命令提示符 正在執行命令的命令提示符 適用場合 螢幕上太亂了,或是螢幕上出現亂碼了,清除螢幕上顯示內...

Linux shell命令提示符

如果您很容易使 shell 提示行變得色彩絢爛斕且帶有更多資訊,為什麼還要堅持用單調的標準 shell 提示行呢?在這篇技巧中,daniel robbins 將說明如何獲得符合您的意願的 shell 提示行,並會說明如何動態更新 x 終端的標題欄。作為 linux unix 人,我們有很長的時間是在...