Bash-completion это очень интересная особенность последних версий оболочки bash. Она позволяет создавать свои, настраиваемые схемы автодополнения команд.
SSH это протокол, позволяющий управлять удалённой системой и передавать файлы. Является стандартом де-факто для удалённого администрирования *nix-серверов.
В этой заметке я постараюсь кратко рассказать (скорее даже просто показать направление движения) об оптимизации работы с SSH с помощью использования bash-completion.
Итак. Все привыкли что если в приглашении bash набрать ssh и два раза нажать клавишу <TAB> - будет отображён список файлов в текущем каталоге. Однако было бы гораздо удобнее если бы вместо файлов в текущем каталоге перечислялись часто используемые хосты. Вот тут и пригодиться наличие возможности программировать автодополнение в bash.
Для программирования автодополнения используется команда complete. Об её использовании можно прочитать набрав команду:
help complete
Команда достаточно функциональна, но мы будем рассматривать самый простой случай. Поэтому нам достаточно ключа -W, который отвечает за список слов, используемых при автодополнении. Типичное использование complete выглядит так:
complete -W '<слово1> <слово2> <слово3>' <команда>
Теперь если набрать в терминале <команда> и два раза нажать <TAB> - будет показан список слов, перечисленных после ключа -W. Этим мы и воспользуемся. Выполним примерно вот такую команду:
complete -W 'host1.com host2.com user1@host3.com' ssh
Чтобы это команда выполнялась автоматически - её нужно поместить в файл ~/.bashrc. Например в моём ~/.bashrc команда вызывается примерно так (большую часть хостов я само собой пропустил:)):
complete -W 'nextrim.ru \ ftp.nextrim.ru \ post.hq.telecet.com \ ghost.hq.telecet.com' ssh
Теперь особо ленивые админы могут ещё настроить авторизацию с помощью DSA-ключей, как это описано, например, здесь и работа превратится в удовольствие:)
Ссылки:
Shlomo 2007-12-07 20:10:15 (#)
Кстати, а почему телесетовские хосты? Ты же вроде в ТНПКО?