나의 .ssh/config
가명은 점점 늘어나기 시작했고 그것을 기억하는 것이 점점 더 어려워졌습니다.
점점 늘어나는 컬렉션을 더 효과적으로 관리하기 위한 제안 사항이 있습니까?
예를 들어 특정 유형을 입력하면 ssh
자동 완성이 되나요 ?
답변1
Bash에 대한 매우 나쁜 1-완성:
function _ssh_complete () {
local match=${COMP_WORDS[${COMP_CWORD}]}
local hosts=
local default=
local _ssh_complete_hostlist=$( \
grep "^\s*Host\s*=" ~/.ssh/config 2>/dev/null \
| sed -r "s/^[^=]+= *//;s/ /\n/g" \
| sort )
for h in $_ssh_complete_hostlist; do
if [[ $h =~ ^$match ]]; then
hosts="$hosts $h"
fi
done
if ! (( ${COMP_CWORD} == ${#COMP_WORDS[@]}-1 )); then
default=$( compgen -f ${COMP_WORDS[${COMP_CWORD}]} )
fi
COMPREPLY=($hosts $default)
}
complete -F _ssh_complete ssh
$_ssh_complete_hostlist
완료 기능 외부에서(예: 쉘 초기화 중) 초기화를 수행 할 수 있습니다 . 그렇지 않으면 각 완료 테스트에 대해 세 개의 프로그램이 생성됩니다. 구성 파일은 자주 변경되지 않으므로 필요할 때 초기화 함수를 수동으로 호출할 수 있습니다.
1) 예를 들어 줄 끝에서만 완성되므로 원격 호스트 이름을 입력하고 완성하기 전에 모든 옵션을 선언해야 합니다.