【问题标题】:Display the current directory name in bash terminal window在 bash 终端窗口中显示当前目录名称
【发布时间】:2014-03-14 15:27:23
【问题描述】:

我在一个窗口中打开了几个终端,标题显示了当前目录的完整路径。我遇到的问题是:路径太长了,很难区分它们。

我想在标题中显示当前目录名(不是完整路径)。

这是我在 .bashrc 中的当前标题

 PROMPT_COMMAND='echo -ne "\033]0;$$ ${BRANCH} ${PWD/#$HOME} \007"' 

我认为只需用 $CWD 替换 $PWD 就可以了,但 bash 没有内置它。下面的这个解决方案只在第一次工作。
https://stackoverflow.com/a/22235278/345097 再次更改目录后,标题永远不会更新。 export DIR=`echo $PWD | rev | cut -f1 -d'/' | rev` export DIR2=`basename ${PWD}` PROMPT_COMMAND='echo -ne "\033]0;$$ ${BRANCH} ${DIR} \007"'

这是我的 PS1 作为参考: PS1="[\033[00;31m]\h [\033[00;32m] \w [\033[00;36m] > [\033[00m]"


示例:

cd /share/project/master/app/src/com/project/dao

当前标题显示

5670 主 /share/project/master/app/src/com/project/dao

欲题
5670道主

【问题讨论】:

    标签: linux bash shell


    【解决方案1】:

    由于$PWD 被保证是一个目录,您可以使用以下任意一种:

    PROMPT_COMMAND='echo -ne "\033]0;$$ ${BRANCH} $(basename "$PWD") \007"'
    PROMPT_COMMAND='echo -ne "\033]0;$$ ${BRANCH} ${PWD##*/} \007"'
    

    【讨论】:

    • 已修复。如果我需要###,我没有考虑清楚。对于#,前缀与找到的第一个/ 匹配;使用##* 匹配它可以匹配/ 之前的最长字符串。
    • 我同意,第二个现在有效。他们都工作,谢谢。
    • 即使我把它放在我的 .bashrc 中,它似乎也不会消失,除非我在每个新标签中找到 .bashrc。有解决办法吗?
    • 注意:为避免波浪号扩展,请使用dirs 而不是$PWD
    • @RudolfAdamkovič $PWD 没有未加引号的扩展可以进行波浪扩展。
    猜你喜欢
    • 2021-10-23
    • 2015-08-06
    • 2021-01-31
    • 2012-06-17
    • 2011-01-18
    • 1970-01-01
    • 1970-01-01
    • 2013-08-29
    • 2020-08-11
    相关资源
    最近更新 更多