Яка магія дозволяє мені вводити віддалені файли на вкладці під час введення команди scp?


16

Імовірно, це функція, надана деяким плагіном, який я включив у налаштуваннях oh-my-zsh (я використовую zsh вже багато років).

Я помітив з того часу, як я додав свій відкритий ключ до сервера (тепер я можу SSH на сервер, не вводячи пароль), коли я складаю scpкоманду в своїй оболонці, я фактично в змозі пройти повний шлях до віддалених файлів!

напр

$ diff <(scp Remoteuser@remote.domain.net:/var/www/html/

Я потрапляю на вкладку, і це просто працює! (що стосується того, що я намагаюсь виконати із самою командою, я буду використовувати scpдля "копіювання" в stdout і передавати це як файл для розходження. Таким чином я бачу точні зміни, які я розгортаю на сервері до працює rsync)

Мені цікаво, які твори роблять цю роботу настільки вдалою. Це щось вбудоване в scp, що було інтегровано з z shell? Або щось інше?

Відповіді:


16

Ооо, я знайшов пояснення .

Процитуйте відповідну частину:

Оболонка zsh має (більше ніж одну) чудові функції, такі як віддалене завершення вкладки. Якщо ви, наприклад, хочете скопіювати файл через scp, просто натисніть вкладку в будь-якій частині імені файлу на віддаленому хості. zsh може встановити ssh-сеанс на задньому плані та отримати відповідну інформацію для вас, щоб ви могли завершити вкладку через віддалені файли.

Повідомлення продовжує демонструвати деякі zstyleдекларації, які досягають завершення, але я настійно пропоную використовувати пакет zsh, наприклад, згаданий oh-my-zsh, щоб отримати цей матеріал, який підтримується спільнотою OSS для вас.

Щось, здавалося б, актуальне, як видно з моєї системи в моєму .oh-my-zsh dir:

$ ack scp 
plugins/common-aliases/common-aliases.plugin.zsh
85:zstyle -e ':completion:*:(ssh|scp|sftp|rsh|rsync):hosts' hosts 'reply=(${=${${(f)"$(cat {/etc/ssh_,~/.ssh/known_}hosts(|2)(N) /dev/null)"}%%
[# ]*}//,/ })'

<...>

Дивовижний!! Є чи ця функція виключно zsh. Чи можливо в bash.
шивами

1
@shivams це може бути актуально для ваших потреб баш. Здається, налаштувати ой-мі-зш просто набагато простіше, плюс zsh - це справді приємно. Я думаю, що якщо тобі це дійсно все одно, не так багато, що zsh може зробити, що баш не може (і зворотне, звичайно, теж правда). Просто питання про те, скільки роботи ви готові вкласти в неї.
Стівен Лу

7
@shivams Для мене це завжди просто працював у башті - я просто один день інстинктивно натиснув "вкладку" в команді scp і був дуже здивований, побачивши, що він автоматично завершився! Поглянувши навколо, це здається, що вам потрібно встановити пакунок для завершення, якщо у вас його ще немає. Це питання unix.se є актуальним.
Понт
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.