Tab-Fertigstellung auf SCP mit OpenSSH 1: 6.2p2-6ubuntu0.1 gebrochen

429
AlexO'Neill

Hier ist mein Szenario:

Ich möchte ~/foo.txtauf einen Server übertragen aoneill@bar.

Ich tippe in meine Befehlszeile ein:

aoneill@aoneill-Laptop:~$ scp fo 

An diesem Punkt klicke ich <tab>, um den Dateinamen zu vervollständigen, und mein Terminal bleibt stehen. Es ändert sich nicht aufgrund eines Tastendrucks, und der Cursor bleibt direkt neben der Taste stecken fo, wenn ich nicht <ctrl-C>herausfahre.

Ich verwende Ubuntu 13.10 und füge es . /etc/bash_completionin meinem ein .bashrc.

Dies ist das einzige Programm, mit dem ich wirklich auf dieses Problem stoße, und es scheint kein allgemeines Problem zu sein.

Danke für die Hilfe!

0
Ich denke, wir brauchen mehr Informationen, um das herauszufinden. Kommt das mit jeder Datei und jedem Ordner vor? Es passiert nur bei "scp"? Haben Sie Anpassungen in `~ / .bashrc`? Welche Konfiguration müssen Sie nach Hostnamen suchen, ist es DNS? Kevin Panko vor 10 Jahren 0

2 Antworten auf die Frage

0
JdeBP

An dieser Stelle habe ich tabden Dateinamen vervollständigt,…

... und der Computer, der Ihre Gedanken völlig nicht gelesen hat, tat das, was er tatsächlich tut, wenn er taban diesem Punkt getroffen wird. Versuchen Sie, einen Hostnamen zu vervollständigen und möglicherweise alle möglichen Dinge von der Ausgabe von avahi-browsebis zur Ausgabe von ruptime. Dieser Vorgang kann einige Zeit dauern.

(Der Mutige kann die _known_hosts_realFunktion in sehen /usr/share/bash-completion/bash-completion.)

Um an dieser Stelle einen Dateinamen zu vervollständigen, muss das Wort, das Sie eingegeben haben, entweder einen Schrägstrich ( /) enthalten oder mit einem Punkt ( .) oder einem Tilde ( ~) Zeichen beginnen.

(Der Mutige kann in ähnlicher Weise sehen, warum das von der _scpFunktion in ist /usr/share/bash-completion/completions/scp.)

Perfekt! Vielen Dank. Ich werde mir das merken, wenn ich in der Zukunft ssh / scp benutze! AlexO'Neill vor 10 Jahren 0
0
jjcf89

Ich bin mit Ubuntu 14.04 darauf gestoßen. Die Verwendung von set -x zeigt an, dass die Autovervollständigung zur Laufzeit hing. Als ich versuchte, Ruptime selbst auszuführen, stellte ich fest, dass es nicht installiert war. Nach der Installation des Rwho-Pakets wurde der Hang behoben.

sudo apt-get install rwho

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

Die COMPREPLY-Leitung ruft die Laufzeit ohne Prüfung auf Vorhandensein auf. Und da ich 'COMMAND_NOT_FOUND_INSTALL_PROMPT = 1' aktiviert habe, versucht der Befehl, mich zu fragen, ob ich es installieren möchte, aber die Pipe erfasst die Ausgabe und hängt.

Der Fehler kann also darin liegen, dass COMMAND_NOT_FOUND_INSTALL_PROMPT nicht prüft, ob es in einer Pipe verwendet wird. Oder COMPREPLY prüft nicht, ob der Befehl zuerst installiert wurde.

Fehler in der Gruppe mit dem Befehl nicht gefunden gefunden. https://bugs.launchpad.net/command-not-found/+bug/1534175