Frage Warum akzeptiert Ubuntu Terminal kein "\" Zeichen?


Ich kann meine Terminal-Shell nicht dazu bringen, ein zu akzeptieren \ wenn ich es eintippe. Nichts passiert. Ich habe gegoogelt, aber habe nichts gesehen, was das angeht. Ich habe keine Ahnung, wo ich anfangen würde, Probleme zu erschießen.

BEARBEITEN:

Ich kann die \ in eclipse, jeden Texteditor (einschließlich nano oder andere Befehlszeilenwerkzeuge) verwenden. Der genaue Befehl in Frage ist:

find -type f -exec chmod -x {} \;    

Wenn ich diese Zeile kopiere und einfüge, wird die \ Charakter verschwindet. Wenn ich dann versuche, es einzugeben, passiert nichts.

Der einzige Ort, an dem dies ein Problem ist, ist die tatsächliche Befehlszeile der Shell.

Vielen Dank.

EDIT ZWEI:

Es scheint etwas Verwirrung zu sein. Wenn ich den obigen Befehl auf meine Kommandozeile kopiere, OHNE DRÜCKEN ENTER (IE nicht ausgeführt) Das ist was in meiner Shell ist:

$find -type f -exec chmod -x {} ;    

Wenn ich dann versuche ein a einzugeben \ dem zu entkommen ; Das Symbol wird nicht angezeigt. Wenn ich zu einem beliebigen Zeitpunkt die Eingabetaste drücke, während dieser Befehl unter den oben genannten Umständen eingegeben wurde, wird die Ausführung aufgrund der folgenden Bedingungen NICHT ausgeführt: nicht in den Befehl übergeben.

Bearbeiten 3:

Ich benutze GNOME 3.4.1.1 auf Ubuntu 12.04 LTS


4
2017-09-09 16:51


Ursprung


Was ist mit einem Texteditor? Geht es gut ..? - Saurav Kumar
Willkommen bei Ask Ubuntu! Was genau meinst du mit dir "kann das Terminal nicht akzeptieren"? Was meinst du mit "nichts passiert"? Was genau ist der Befehl, den Sie versuchen zu tun? - Alaa Ali
Willst du damit sagen, dass wenn du die \ Taste drückst, sie den Charakter nicht eingibt? oder etwas anderes? Akzeptieren andere Fenster den Tastendruck und zeigen den \ key? Andere Programme machen? - Thomas Ward♦
Thans, siehe Änderungen. - user2757729
Jetzt! Das macht Sinn ... :) - Saurav Kumar


Antworten:


Eine Möglichkeit besteht darin, dass der Backslash-Schlüssel an einen Readline-Befehl gebunden wurde (readline ist die Bibliothek, die es ermöglicht, Shell-Befehle in Echtzeit zu bearbeiten, z. B. zu binden Strg+h zum backward-delete-char Aktion).

Um zu testen, ob das der Fall ist, können Sie versuchen, eine Bash-Subshell zu starten, wobei die Readline-Bearbeitung deaktiviert ist

bash --noediting

Wenn der Backslash-Schlüssel in dieser Subshell funktioniert, sind die Orte, an denen nach der Definition der Snagging-Keys gesucht werden soll /etc/inputrc für die globale Konfiguration und ~/.inputrc für die benutzerspezifische Konfiguration. Sie können auch versuchen, die aktuell definierten Tastenbelegungen über die Befehlszeile mit auszudrucken und zu suchen

bind -P | grep '\\\\'

Die zusätzlichen Backslashes sind erforderlich, da ein literaler Backslash in der Readline-Konfiguration als angezeigt wird \\, von denen jeder eine weitere Flucht in der Schale benötigt. Natürlich können Sie das nur in der Subshell tun, wenn der Backslash in der normalen Shell eingebunden ist.

Zu Ihrer Information gibt es ein bind Befehlsoption, um eine Bindung zu entfernen, aber es ist nicht klar, wie Sie die Eingabe eingeben keyseq Argument, wenn es bereits gebunden ist

-r  keyseq         Remove the binding for KEYSEQ.

Für weitere Informationen siehe help bind in der Bash-Befehlszeile


3
2017-09-10 00:12





\ entkommt, was auch immer Charakter ihm folgt. ; Beendet explizit einen Befehl. \; bedeutet entkommen die ; und übergebe es an den Befehl, den du innerhalb von find aufruft (alles danach -exec. Mit \ gilt das Semikolon für chmod wohingegen ohne Semikolon würde gelten find.

Dein Terminal erkennt es \. Wenn Sie es in Ihr Terminal eingeben, weisen Sie Ihr Terminal an, dem nächsten Zeichen zu entkommen, das Sie nicht bereitstellen.

Wenn du \ als Zeichen anzeigen willst, entkomme es. Art \\.


1
2017-09-09 18:01



Tut mir leid, ich glaube nicht, dass du es verstehst. Es ist nicht so, dass ich den Befehl eingeben kann und alles funktioniert. Das Escape-Zeichen gelangt nie in das Terminal. Siehe zweite Runde der Änderungen. - user2757729
Oh, das tut mir leid. Benutzt du Gnome Terminal? - Jack
Ich bin auf Ubuntu 12.04, Standard-Zeug. Ich denke, das ist Gnome? Wie würde ich nachsehen? - user2757729
Klicken Sie im Menü auf Hilfe -> Info. - Jack
Dieses Detail wurde als Edit 3 hinzugefügt. - user2757729


Keine Ahnung, ob das die Ursache in Ihrem Fall ist, aber ich kann ein ähnliches Verhalten durch Eingabe dieses Befehls reproduzieren:

stty eof \\

Es kann korrigiert werden mit:

stty sane

Sie können den letzten Befehl versuchen, um zu sehen, ob das Ihr Problem behebt.


0
2017-09-09 19:34



Danke, gab das eine Chance. Kein Glück. - user2757729


Ich arbeite an einem "MacBook Air" 2015 mit "Parallels 11" und einer virtuellen Maschine "Ubuntu". Meine Tastatur ist das "reduzierte" Apple Wireless. Ich habe "French Macintosh" (weil ich französisch bin!) Für das Keyboard im MENU gewählt, aber im Terminal von Ubuntu konnte ich zunächst weder ein "noch" ein "|" machen. Also gehe ich zum "Paramètres Système", "Saisie de texte" ("Text eingeben"?) Und klicke auf den Button "Paramètres du clavier" (Keyboard Parameters) in der rechten unteren Ecke des Fensters. Im zweiten neuen Fenster wähle ich "Saisie" ("Typing"?) Und dann die Zeile "Touche de caractères alternatifs" ("alternativer Zeichenschlüssel"?); Wenn Sie jetzt auf das rechte Ende dieser Zeile klicken, können Sie zwischen vielen Sondertasten wählen ... In meinem Fall wurde NO-Taste ursprünglich definiert, und ich habe "Alt Links" gewählt, um die normale Aktion unter Mac zu emulieren OS X. Lange zu erklären, aber schnell und einfach zu machen! Guy de Pernon


0
2018-02-02 15:24