Как стать автором
Обновить

Комментарии 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

это все для wsl может быть справедливо. А я нативно на windows запускаю git bash

Хм, а зачем баш для этого? ssh прекрасно запускается и без него. Для PowerShell уже всё давно придуманно для этого.

Мне как то гит баш привычнее

Кто пользуется OMZ настоятельно рекомендую плагин zsh-ssh, по табу выпадает список хостов с возможностью добавить описания к ним. В принципе без OMZ тоже вроде работает, но не пробовал

Для тренировки норм, но после zsh, где это работает искаропки и где хосты можно стрелочками листать это прям не

у меня так zsh не завелся с такими параметрами. Плюс на винде zsh сходит с ума, если заходишь в папку с git(

мои тщетные попытки заставить его не предлагать мне файлы из текущей директории, которые начинаются по этому паттерну. Если знаете как это сделать, чтобы работало, то буду признателен.

@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

Зарегистрируйтесь на Хабре, чтобы оставить комментарий

Публикации

Истории