【发布时间】:2021-05-28 08:07:55
【问题描述】:
我正在使用 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$
提前致谢!
【问题讨论】:
-
另外,您可以在
PS1中使用换行符 (\n) 将工作目录和实际提示放在不同的行上。 -
另一种方法是在 PS1 的末尾添加一个换行符,这样您就可以看到整个路径,但您仍然可以键入一个长命令而不用换行。反正我就是这样做的:)
-
(抱歉,@ak2 有重复的评论 - 当我点击“添加评论”时,您的评论不在。)
-
这也是一个解决方案,但我个人不喜欢两行提示。太冗长了:)
-
+1 提出了一个非常好的问题。我也不喜欢 2 行提示,并且不得不处理包装在深层嵌套目录中的命令。但是现在我已经按照下面的答案设置了我的环境,并且更喜欢它:)。