将以下代码添加到您的代码中,.bashrc
将扩展cd
的完成以表示三个加号标记
_cd_dot_expansion() {
local path="${COMP_WORDS[COMP_CWORD]}"
if [[ "${path}" =~ ^\.{3,} ]]; then
local dots="${BASH_REMATCH}"
local levels="${#dots}"
local tail="${path##*...}"
local expanded_dots='..'
# the loop starts at two because the first set of dots is
# assigned to `expanded_dots` when it is initialized
for (( i = 2; i < "${levels}"; i++ )); do
expanded_dots+='/..'
done
path="${expanded_dots}${tail}"
COMPREPLY=( $( compgen -A file "${path}" ) )
return
fi
_cd
}
complete -o nospace -F _cd_dot_expansion cd
在您的bash shell中运行此代码段后,例如,键入cd .../
和命中<TAB>
将完成指向../../
两个目录的所有目录的路径并列出其相对路径。
更新:bash-completion
必须安装才能访问_cd
上面的代码中引用的方法。可通过大多数命令行程序包管理器安装
cd ...
“。”的位置 将是要上升的级别数。这会导致我不知道的冲突吗?