【发布时间】:2020-07-26 11:45:09
【问题描述】:
根据Change gnome-terminal title to reflect the current directory?我尝试过使用:
PROMPT_COMMAND='echo -ne "\033]0;$(basename ${PWD})\007"'
...在我的~/.bashrc 标题栏中标明当前目录的名称。
在大多数情况下它工作正常;但如果我尝试从以下目录打开gnome-terminal:
/run/user/1000/gvfs/mtp:host=%5Busb%3A001%2C008%5D/Internal shared storage/DCIM/Camera
...然后它失败了:
basename: extra operand ‘storage/DCIM/Camera’
Try 'basename --help' for more information.
...每次提示即将显示在终端中。
显然问题在于目录名称中的空格(即使${PWD} 中的花括号原则上应该不需要引号)。所以,我尝试用引号转义,结果证明这不是微不足道的(显然只是单引号转义 \"${PWD}\" 不起作用) - 我能做到的最好的是:
PROMPT_COMMAND='echo -ne "\033]0;$(basename \\\\"${PWD}\\\\")\007"'
... 它可以正常工作 - 但它会在 gnome-terminal 标题中打印一个额外的反斜杠;例如,在本例中,标题为:Camera\。
PROMPT_COMMAND 的正确构造是什么,因此它可以正确处理带有空格的目录,并且只打印没有附加反斜杠的目录(例如 Camera)?
【问题讨论】:
标签: bash whitespace filenames