Комментарии 16
Не смотрели в сторону fzf? Он умеет в автокомплит SSH из коробки.
А какой линукс используете? Так как в Ubuntu из коробки есть автоподстановка для ssh. И не только названия хостов, но и, например, опций. Так же чтение подключаемых конфигов инструкцией include
Я на windows сижу с 2018. До этого на ubuntu работал, но достали ошибки диска (`fsck -f /dev/sda1` достало вводить после каждой гибернации)
На wsl у меня 22.04 ubuntu, но ей пользуюсь редко.
Круто, что из коробки уже это есть, но я не нашел инфы по этой теме
Должен быть установлен:
sudo apt install bash-completion
https://github.com/scop/bash-completion/tree/main/completions
Autocomplete server names for SSH and SCP
https://unix.stackexchange.com/questions/136351/autocomplete-server-names-for-ssh-and-scp
Autocomplete server names for SSH and SCP for Git Bash
https://gist.github.com/nhthai2005/f956a0e6cfc3b38f72f0df1a239a4e68
ls /usr/share/bash-completion/completions/ | grep ssh
![](https://habrastorage.org/getpro/habr/upload_files/537/002/9a5/5370029a5eef89bf0549419a2f51bcad.png)
Хм, а зачем баш для этого? ssh прекрасно запускается и без него. Для PowerShell уже всё давно придуманно для этого.
Для тренировки норм, но после zsh, где это работает искаропки и где хосты можно стрелочками листать это прям не
мои тщетные попытки заставить его не предлагать мне файлы из текущей директории, которые начинаются по этому паттерну. Если знаете как это сделать, чтобы работало, то буду признателен.
@amorev Попробуйте убрать все лишние опции и начать с нуля, добавляя только нужные :)
Немного переделал для себя autocomplete.sh
, чтобы предлагались в т.ч. и множественные алиасы (Host foo bar baz
), но игнорировались wildcard-конфигурации (Host *
, Host *.host.dev
):
#!/bin/bash
_autocomplete_ssh_host() {
local cword hosts
cword=${COMP_WORDS[COMP_CWORD]}
hosts=$(grep -i '^host ' ~/.ssh/config | cut -c 6- | grep -Fv '*')
COMPREPLY=($(compgen -W "$hosts" -- "$cword"))
}
complete -F _autocomplete_ssh_host ssh
Круто!
Только вот в реальном мире .ssh/config обычно начинается со строки
Include ~/.ssh/config.prod
Насколько помню, bash-completion это умеет из коробки
https://github.com/scop/bash-completion
Как настроить автодополнение для команды ssh с хостами из .ssh/config