Konsole/Terminal - Befehl über mehrere Zeilen editieren

Antworten
Nachricht
Autor
Benutzeravatar
fantaeiner
Beiträge: 53
Registriert: 31. Dez 2004 14:44
Kontaktdaten:

Konsole/Terminal - Befehl über mehrere Zeilen editieren

#1 Beitrag von fantaeiner » 02. Dez 2012 10:43

Hallo Leute,

folgendes Problem habe ich, wenn ich Befehle in der bash über mehrere Zeilen eingebe.
Über die Pfeiltasten können in der bash die Befehle der history aufgerufen werden. Offenbar gibt es dabei nicht sichtbare Zeichen (wie z.B. Zeilenumbruch), die mir ein Bearbeiten der alten Befehle erschweren, z.B.
for i in a1 a2 a3; do echo $i;done
erzeugt
a1
a2
a3
So weit. So gut.
Wenn ich nun den Befehl mit der Pfeiltaste erneut aufrufe und "2" nach von "a2" mit der "<-"-Taste löschen möchte, dann sieht der Befehl nach einmaligem Tippen der "<-"-Taste hinter "a2" so aus:
for i in a1 a3; do echo $i;done
Das Ergebnis ist aber das:
a1
a2
3
in der history sieht der Befehl, der ausgeführt wurde auch passend zur Ausgabe aus: for i in a1 a2 3; do echo $i;done
Sehr schön, aber da ich ja eigentlich "2" löschen wollte, ist das irgendwie nicht so ganz richtig.

Was könnte hier das Problem sein? Es tritt nur im Zusammenhang mit Zeilenumbrüchen auf. Ohne Zeilenumbruch würde im obigen Beispiel die "2" tatsächlich einfach gelöscht werden.

fragt der Fanta

Kleiner Nachtrag:
Beim Kopieren des Befehls
"for i in a1 a2 a3; do echo $i;done"
" in dieses Textfeld sieht der Befehl eigentlich auch so aus:
"for i in a1 a2 a3; do e
cho $i;done"
Also mit Zeilenumbruch. Der ist irgendwie das Problem scheint mir.

Benutzeravatar
Janka
Beiträge: 3581
Registriert: 11. Feb 2006 19:10

#2 Beitrag von Janka » 02. Dez 2012 18:20

Ich hatte dieses Problem immer mit Prompts, die Steuersequenzen enthalten. Versuch mal, ob es mit PS1='$ ' funktioniert.

Janka
Ich vertonne Spam immer in /dev/dsp statt /dev/null.
Ich mag die Schreie.

Benutzeravatar
fantaeiner
Beiträge: 53
Registriert: 31. Dez 2004 14:44
Kontaktdaten:

Problem erst einmal gelöst

#3 Beitrag von fantaeiner » 02. Dez 2012 19:46

Ja, mit PS1='$ ' funktioniert alles bestens.

Das bedeutet wohl: ich habe Steuerzeichen in meinem Prompt. Ich versuche herauszufinden, welche und melde mich dann wieder.

Das Merkwürdige ist, dass es jetzt auch mit dem "normalen Prompt" funktioniert. Wenn das Problem wieder kommt, dann weiß ich jetzt jedenfalls, dass ich mir PS1 genauer anschauen sollte.

Vielen Dank für die Hilfe und viele Grüße
Marko

Benutzeravatar
Janka
Beiträge: 3581
Registriert: 11. Feb 2006 19:10

#4 Beitrag von Janka » 02. Dez 2012 20:56

Man muss die Steuersequenzen richtig schachteln. Viele Leute vergessen das umgebende \[ und \] und wundern sich dann über Murks.

Code: Alles auswählen

Falsch&#58; \033&#91;1;30m
Richtig&#58; \&#91;\033&#91;1;30m\&#93;
Janka
Ich vertonne Spam immer in /dev/dsp statt /dev/null.
Ich mag die Schreie.

Antworten