scp знает путь к целевой машине?

scp знает путь к целевой машине?

Недавно я перешел с OSX на Linux для личного пользования. У меня есть домашний медиасервер с headless Ubuntu, а теперь ноутбук с Mint. Я привык перемещать вещи на сервер с помощью scp. Раньше, на OSX, когда я печатал, чтобы скопировать цель, я старательно вводил каждый символ пути, потому что если по привычке я пытался завершить Tab, машина начинала капризничать, и мне приходилось начинать все заново. Однако я только что настроил ключи ssh на своем новом компьютере и как раз занимался процессом scpпередачи файла с ноутбука на сервер, когда я случайно нажал Tab, и, к моему большому удивлению, он правильно завершил путь! Это нормальное поведение? Почему это не сработало на term2 на OSX? Обратите внимание, у меня было открытое соединение с сервером в другом окне терминала.

решение1

Это завершение команд вашей оболочки в действии: она «знает», что когда текущая командная строка начинается с scp, в определенных контекстах ей необходимо подключиться к целевой системе (если она может) для завершения путей там. Это можно сделать прозрачно, поскольку вы загрузили свой ключ.

Обычно это реализовано в /usr/share/bash-completion/completions/scp(если вы используете Bash) или /usr/share/zsh/functions/Completion/Unix/_ssh(для Zsh).

Связанный контент