我正在使用 Ubuntu,当我处理一些深层目录层次结构时,我厌倦了 bash 中的长提示。因此,我想调整我的 PS1 以按以下方式缩短工作目录部分:
目前我有:
pajton@dragon:~/workspace/projects/project1/folder1/test$
并希望拥有:
pajton@dragon:~/workspace/.../folder1/test$
如果 len($PWD) 通过给定阈值,则会发生截断。我想始终保留第一个路径组件和至少一个最后一个路径组件。然后,在空间允许的情况下,从右侧添加更多组件。
这就是我目前所拥有的。它有效,但是:1)不保留第一个路径组件,2)不尊重边界处的切割路径:
pwd_length=14
pwd_symbol="..."
newPWD="${PWD/#$HOME/~}"
if [ $(echo -n $newPWD | wc -c | tr -d " ") -gt $pwd_length ]
then
newPWD="...$(echo -n $PWD | sed -e "s/.*\(.\{$pwd_length\}\)/\1/")"
else
newPWD="$(echo -n $PWD)"
fi
结果:
pajton@dragon:...sth/folder1/sample$
提前致谢!
对于寻找更简单的解决方案并且不需要路径中第一个目录的名称的人来说,Bash 对此使用内置支持PROMPT_DIRTRIM
多变的。从文档中 http://www.gnu.org/software/bash/manual/html_node/Bash-Variables.html#index-PROMPT_005fDIRTRIM-226:
提示_DIRTRIM
如果设置为大于零的数字,则该值将用作展开 \w 和 \W 提示字符串转义时要保留的尾随目录组件的数量(请参阅打印提示)。删除的字符将替换为省略号。
例如:
~$ mkdir -p a/b/c/d/e/f
~$ cd a/b/c/d/e/f
~/a/b/c/d/e/f$ export PROMPT_DIRTRIM=2
~/.../e/f$ PROMPT_DIRTRIM=3
~/.../d/e/f$
缺点:这取决于目录级别,而不是路径的长度,这可能是您不想要的。
优点:非常简单。只需添加export PROMPT_DIRTRIM=2
给你的.bashrc
.
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)