我正在使用Ubuntu14.04.5LTS。
文件~/.ssh/config的任何主机上的ssh完成都不能工作:
$ ssh b2sed: -e expression #1, char 97: invalid reference \2 on `s' command's RHS用于ssh完成的包已经安装:
$ dpkg -S /usr/share/bash-completion/completions/ssh
bash-completion: /usr/share/bash-completion/completions/ssh发布于 2019-02-23 18:52:39
我发现在我的系统中,sed被别名为sed -E
因此,实际上,我没有删除这个别名,而是决定更新/usr/share/bash-completion/bash_completion脚本中的D3函数(我认为这并不是真正的命令):
$ type _known_hosts_real | grep -w sed
local hosts=$( sed -ne 's/^[ \t]*[Hh][Oo][Ss][Tt]\([Nn][Aa][Mm][Ee]\)\{0,1\}['"通过将sed -ne替换为command sed -ne,这样:# append any available aliases from config files
if [[ ${#config[@]} -gt 0 && -n "$aliases" ]]; then
local hosts=$( command sed -ne 's/^[ \t]*[Hh][Oo][Ss][Tt]\([Nn][Aa][Mm][Ee]\)\{0,1\}['"但是,当更新bash-completion包时,这些更改将丢失。\t '"']\{1,\}\([^#*?]*\)\(#.*\)\{0,1\}$/\2/p' "${config[@]}" );通过将D5替换为D6,这样:A7但是,当更新D8包时,这些更改将丢失。\t '"']\{1,\}\([^#*?]*\)\(#.*\)\{0,1\}$/\2/p' "${config[@]}" )
COMPREPLY+=( $( compgen -P "$prefix$user" \
-S "$suffix" -W "$hosts" -- "$cur" ) )
fi但是,当更新D8包时,这些更改将丢失。
\t '"']\{1,\}\([^#*?]*\)\(#.*\)\{0,1\}$/\2/p' "${config[@]}" );
通过将D5替换为D6,这样:
A7
但是,当更新D8包时,这些更改将丢失。
https://unix.stackexchange.com/questions/502527
复制相似问题