ssh bash 완료: sed: -e 표현식 #1, 문자 97: 's' 명령의 RHS에 대한 잘못된 참조 \2

ssh bash 완료: sed: -e 표현식 #1, 문자 97: 's' 명령의 RHS에 대한 잘못된 참조 \2

우분투 14.04.5 LTS를 사용하고 있습니다.

파일의 모든 호스트에서 ssh bash 완료가 ~/.ssh/config작동하지 않습니다.

$ 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

답변1

내 시스템에서 sed별칭은 다음과 같습니다.sed -E

따라서 실제로 자주 사용되는 이 별칭을 제거하는 대신 스크립트 _known_hosts_real의 함수를 업데이트하기로 결정했습니다 /usr/share/bash-completion/bash_completion(실제로 권장되지는 않습니다).

$ type _known_hosts_real | grep -w sed
        local hosts=$( sed -ne 's/^[ \t]*[Hh][Oo][Ss][Tt]\([Nn][Aa][Mm][Ee]\)\{0,1\}['"$'\t '"']\{1,\}\([^#*?]*\)\(#.*\)\{0,1\}$/\2/p' "${config[@]}" );

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\}['"$'\t '"']\{1,\}\([^#*?]*\)\(#.*\)\{0,1\}$/\2/p' "${config[@]}" )
    COMPREPLY+=( $( compgen -P "$prefix$user" \
        -S "$suffix" -W "$hosts" -- "$cur" ) )
fi

bash-completion그러나 패키지가 업데이트되면 이러한 변경 사항이 손실됩니다.

관련 정보