Mein Problem ist, dass die Bash-Shell nicht mehr die Zeichen anzeigt, die ich eingebe. Es liest jedoch die Befehle.
Ich bin schon einige Male auf dieses Problem gestoßen und verstehe nicht, woran es liegt. Ich weiß, wie man es löst, aber ich mag es wirklich nicht, wenn ich meine Art, Probleme zu lösen, "voodoo".
Ich beschreibe die beiden Möglichkeiten, auf die ich dieses Problem gestoßen bin:
Ich führe einen bestimmten Prozess aus, http://pythonpaste.org/script/, und manchmal, wenn ich damit aufhöre oder es die Kontrolle bricht, wird die Shell zurückgegeben. Wenn ich dann Befehle in die Shell eingebe, werden die eingegebenen Zeichen nicht angezeigt. Wenn ich die Befehle Eingabetaste drücken werden vorgelegt. Also zum Beispiel:
- Ich tippe "ls"
- Ich sehe nur eine leere Eingabeaufforderung und nichts mehr
- Ich drücke die Eingabetaste und bekomme eine Liste der Dateien, mit anderen Worten: Der Befehl wird ausgeführt
- Wenn ich den Befehl "reset" gebe, funktioniert die Shell wieder normal
Der zweite Weg ist, wenn ich einen Befehl wie diesen gebe:
$ grep foo * -l | xargs vim
Ich benutze grep, um Dateien mit einem bestimmten Muster zu finden, und möchte dann alle Dateien öffnen, die sich aus grep ergeben. Dies funktioniert wie ein Zauber (obwohl nicht so schnell wie ich gehofft hatte). Aber wenn ich Vim verlasse, zeigt meine Shell nicht mehr die Zeichen an, die ich eingebe. Ein Reset-Befehl behebt das Problem.
Meine Vermutung ist, dass beide Probleme einen Grund haben, aber ich bin irgendwie ratlos darüber, wie oder was dieser Grund ist.
Die Suche nach diesem Problem ist an sich problematisch, da die Beschreibung etwas vage ist und keine harten Suchbegriffe enthält.
Bearbeiten
Geben die
stty --all
Befehl gemäß der Anfrage von John S. Gruber gab die folgende Ausgabe aus (Leerzeichen zur besseren Lesbarkeit bearbeitet)
speed 0 baud;
rows 53;
columns 186;
line = 0;
intr = <undef>;
quit = <undef>;
erase = <undef>;
kill = <undef>;
eof = <undef>;
eol = <undef>;
eol2 = <undef>;
swtch = <undef>;
start = <undef>;
stop = <undef>;
susp = <undef>;
rprnt = <undef>;
werase = <undef>;
lnext = <undef>;
flush = <undef>;
min = 0;
time = 0;
-parenb
-parodd cs8
-hupcl
-cstopb cread
-clocal
-crtscts
-ignbrk
-brkint
-ignpar
-parmrk
-inpck
-istrip
-inlcr
-igncr
-icrnl
-ixon
-ixoff
-iuclc
-ixany
-imaxbel
-iutf8
-opost
-olcuc
-ocrnl
-onlcr
-onocr
-onlret
-ofill
-ofdel nl0 cr0 tab0 bs0 vt0 ff0
-isig
-icanon
-iexten
-echo
-echoe
-echok
-echonl
-noflsh
-xcase
-tostop
-echoprt
-echoctl
-echoke
stty --all
zu meiner Frage hinzugefügt . Danke im Voraus!
stty --all
die Ergebnisse ein und tragen Sie sie in Ihre Frage ein. Echo ist eine Eigenschaft, die ausgeschaltet wird. Vim wird dies tun, während es läuft, und es wird auch das Terminal in den Raw-Modus versetzen. Wenn es beendet wird, sollte es die Terminaleinstellungen selbst zurücksetzen. Wenn vim ausgeführt wird, möchten Sie deni
Befehl, der den Editor beispielsweise in den Einfügemodus versetzt, nicht wiederholen. Diese Einstellungen teilen dem tty-Gerät mit, wie es das verarbeiten soll, was Sie eingeben. Während vim läuft, wird darauf geachtet, dass wiedergegeben wird, was wiedergegeben werden soll usw.