Назад | Перейти на главную страницу

Как использовать автозаполнение каталогов с помощью scp

Я использую авторизованный ключ для входа на удаленный сервер ubuntu. Мне нужно использовать scp часто копировать файлы с моей локальной машины на удаленную. Я хочу включить автозаполнение, как это было на моем локальном компьютере, bash-autocompletion.

Как я мог это сделать?

Обновлено

Я попытался zsh(https://github.com/robbyrussell/oh-my-zsh), scp отлично работает с автозаполнением. Как я мог сделать это с моим bash?

Насколько мне известно, Ubuntu и Debian содержат bash-completion упакуйте именно те функции, которые вы просите. Однако если на удаленном сервере реализована схема предотвращения попыток взлома (например, путем ограничения количества подключений в течение заданного временного интервала и блокировки, если клиент превышает его), вы столкнетесь с проблемами.

Проверьте /etc/bash_completion в вашей системе и /etc/bash_completion.d/ssh. Если его не существует, обязательно apt-get install bash-completion. Как только это будет сделано, убедитесь, что ваш .bashrc или .profile загружает этот глобальный файл автозаполнения.

Обычно это дает возможность как автозаполнение имени удаленного хоста из вашего $HOME/.ssh/known_hosts (grep _known_hosts_real /etc/bash_completion) и автозаполнение для удаленных папок на scp.

Одно предупреждение: если удаленный хост выводит дополнительные данные при входе в систему, автозаполнение имеет тенденцию прерываться. Один из способов обойти это может быть (но я обнаружил, что это не работает везде), чтобы выручить без каких-либо выходных данных на удаленном компьютере:

[ -z "$SSH_TTY" ] && exit

... т.е. не показывать баннер или что-то в этом роде. Вы включаете эту строку в /etc/sshd/sshrc на удаленном поле или вверху (под хэшбангом) любого скрипта, который вы выполняете, чтобы показать художественную форму ASCII отпечатка пальца. Обратите внимание, что приведенная выше строка является синтаксисом bourne-shell, при необходимости измените его. Он проверяет, SSH_TTY окр. переменная пуста, и если да, то выходит с кодом выхода 0.

Я думаю, что нет, поскольку у вас нет доступа к удаленной файловой системе, пока вы не нажмете Enter и не аутентифицируетесь при выполнении SCP.

bash-autocompletion срабатывает только после успешного входа в систему на удаленном сервере или после загрузки профиля bash, который в случае локального входа в систему является источником сценария завершения bash.

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