Завершення вкладки Розбито на SCP з OpenSSH 1: 6.2p2-6ubuntu0.1


0

Ось мій сценарій:

Я хочу перенести ~/foo.txtна сервер aoneill@bar.

Я починаю вводити командний рядок:

aoneill@aoneill-Laptop:~$ scp fo

У цей момент я натискаю, <tab>щоб завершити ім'я файлу, і мій термінал просто застигає. Він не зміниться на основі будь-якого натискання клавіші, і курсор просто застряг поруч із fo, якщо я не <ctrl-C>вийду.

Я запускаю Ubuntu 13.10, і я його включаю . /etc/bash_completionдо свого .bashrc.

Це єдина програма, з якою я справді стикаюся з цим питанням, і це, здається, не є загальною проблемою.

Дякую за допомогу!


Я думаю, нам потрібна додаткова інформація, щоб розібратися в цьому. Це трапляється з кожним файлом і кожною папкою? Це буває тільки з scp? Чи є у вас якісь налаштування ~/.bashrc? У якій конфігурації потрібно шукати імена хостів, це DNS?
Кевін Панько

Відповіді:


0

У цей момент я натиснув tabна завершення назви файлу,…

… І комп'ютер, не в змозі прочитати вашу думку , зробив те, що він насправді робить, коли tabпотрапив у цю точку, що намагається заповнити ім’я хоста , можливо, порадившись з усіма речами від виходу avahi-browseдо виходу ruptime. Цей процес може зайняти деякий час.

(Хоробрі можуть піти і подивитися на _known_hosts_realфункцію /usr/share/bash-completion/bash-completion.)

Для того, щоб у цей момент було введено ім’я файлу , введене вами слово повинно містити /символ slash ( ) або починатись із символу dot ( .) або tilde ( ~).

(Хоробрі можуть аналогічно зрозуміти, чому це від _scpфункції в /usr/share/bash-completion/completions/scp.)


Ідеально! Дякую. Я буду пам’ятати про це, коли в майбутньому буду використовувати ssh / scp!
AlexO'Neill

0

Я зіткнувся з цим з Ubuntu 14.04. Використання set -x показує, що автозаповнення висіло під час виконання. Коли я спробував запустити час виконання програми, я виявив, що він не встановлений. Після встановлення пакета rwho виправлення було виправлено.

sudo apt-get install rwho

COMPREPLY+=($( compgen -W         "$( ruptime 2>/dev/null | awk '!/^ruptime:/ { print $1 }' )"         -- "$cur" ))
+++ ruptime
+++ awk '!/^ruptime:/ { print $1 }'

Лінія КОМПЛЕКТУВАННЯ викликає час виконання без перевірки, щоб перевірити, чи існує. А оскільки у мене ввімкнено 'COMMAND_NOT_FOUND_INSTALL_PROMPT = 1', команда намагається запитати мене, чи хочу я його встановити, але труба фіксує вихід і зависає.

Тож помилка може бути в тому, що COMMAND_NOT_FOUND_INSTALL_PROMPT не перевіряє, чи використовується в трубі. Або що COMPREPLY не перевіряє, чи команда встановлена ​​спочатку.

Опубліковано помилку з групою, що не знайдена командами. https://bugs.launchpad.net/command-not-found/+bug/1534175

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.