我正在使用 oh-my-bash 的 powerline 主题,并且 cwd 提示符有时会变得太长。我在powerline.base.sh
文件中找到了这个,我认为它正在返回密码:
function __powerline_cwd_prompt {
echo "$(pwd | sed "s|^${HOME}|~|")|${CWD_THEME_PROMPT_COLOR}"
}
我希望修改它,以便压缩长目录,例如 ~/stuff/moreStuff/.../now 之类的内容。我对 BASH 不太了解,所以我想知道我应该怎么做?
答案1
我会很惊讶如果噢我的狂欢没有缩短路径的选项/功能。
尽管如此,这里还是一个缩短器的快速尝试(从一开始就缩短,这往往是传统):
#!/usr/bin/env bash
# Credit: https://stackoverflow.com/a/17841619/2858703
join_by() { local IFS="$1"; shift; echo "$*"; }
short_pwd() {
IFS='/' read -a directory < <(pwd)
local -i trim_level=${1:-3} # default trim level of 3
if [ ${#directory[*]} -ge ${trim_level} ] && [ ${trim_level} -gt 0 ]; then
join_by / "..." "${directory[@]: -${trim_level}}"
else
pwd
fi
}
# examples
short_pwd
short_pwd 2
# these cause no trimming
short_pwd 0
short_pwd -1
short_pwd a
在当前形式下,您需要.
获取它的来源(删除示例)才能使用它。或者将示例替换为short_pwd $1
,您可以将其作为脚本运行(第一个传递的参数决定修剪级别)。
致谢这个答案。
(我意识到这个问题可能以前已经被解决过很多次了,但有时尝试自己解决会很有趣。)
编辑:意识到我设计过度了。现在增添了优雅!