Bash

如何修整 CWD,顯示在命令提示符中

  • January 5, 2015

要知道,我在控制台中的 CWD 是什麼,我在 ~/.bash_profile 中添加了以下內容:

export PS1='$(pwd)$ '

因此,pwd結果顯示在$符號之前。這個真好。

但是當我去一個名字很長的目錄時:/var/www/vhosts/beta.sitename.co.uk/httpdocs/sites/beta.sitename.co.uk/modules/bundles

在命令提示符下,我看到:

.co.uk/modules/bundles$ sitename.co.uk/httpdocs/sites/beta.sitename.

這使得 shell 幾乎無法使用。是否可以修剪它,只保留最後一部分或目錄名稱?說,30個字元。

或者,也許更好的主意是pwd在每個cd命令之後列印,這樣我就可以知道我在哪裡?這可以使用別名來完成。

在我的.bashrc中,我的 PS1 被配置為顯示我目前工作目錄的最後一個組件。這可以使用\W(PS1 允許一些特殊序列以及變數)來完成。在你的情況下,那將是:

$ export PS1='\W$'

更多這些序列可以在man bash, at Prompting, see here中找到。您也可以\w使用完整路徑,但$HOME縮寫為~(這會縮短您的大部分路徑)。現在,如果你真的想設置字元限制,你可以使用…

$ export PS1='$(pwd | tail -c30)$' # Limited to 30 characters
$ export PS1='...$(pwd | tail -c30)$'

……或者有點bashism:

$ export PS1='${PWD: -30}$'
$ export PS1='${PWD:(-30)}$'
$ export PS1='...${PWD: -30}$'
$ export PS1='...${PWD:(-30)}$'

引用自:https://unix.stackexchange.com/questions/177346