S SH завершено из хост-файла - PullRequest
0 голосов
/ 26 февраля 2020

Я получил текстовый файл (/ etc / hosts), который я хотел бы использовать для автозаполнения. Он содержит 'ip' 'hostnames'

1.2.3.4 host1
2.3.4.5 host2
3.4.5.6 ext_host1
4.5.6.7 ext_host2

У меня есть следующая строка, которую я вставил в файл с именем test. sh

cat /etc/hosts | grep -E '\b([0-9]{1,3}\.){3}[0-9]{1,3}\b' | awk '{print $2}' | sort -u | grep ^$1

Это позволяет мне так его называть : ./test.sh ho И он возвращает: host1 host2 в этом случае.

Я хотел бы использовать это для автозаполнения моей команды s sh, поэтому, когда я набираю 's sh ho' и нажимаю tab, что он либо автозаполняется, если доступна только одна опция, либо предлагает хост1 или хост2 в этом случае.

Я имел в виду что-то с командой 'complete' внутри моего bash_profile, но немного озадачен. Например, псевдоним $ 2 означает «второй столбец», а $ 1 - аргумент, который я ему передаю. Но как мне сделать разницу между столбцом и аргументом, который я передаю?

cat .bash_profile
# .bash_profile

alias sshhosts=cat /etc/hosts | grep -E '\b([0-9]{1,3}\.){3}[0-9]{1,3}\b' | awk '{print \$2}' | sort -u | grep ^$1

complete -o default -F "${sshhosts[*]}" ssh
...