組織 SSH エイリアス

組織 SSH エイリアス

私の.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完了機能の外で(たとえば、シェルの初期化中)、初期化を実行できます。それ以外の場合は、完了テストごとに3つのプログラムが生成されます。構成ファイルは頻繁に変更されないため、必要に応じて手動で初期化関数を呼び出すことができます。

1)たとえば、行末でのみ完了するので、リモートホスト名を入力して完了する前に、すべてのオプションを宣言する必要があります。

おすすめ記事