
Недавно я перешел с 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).