[gelöst] Bash: Probleme mit Zeilenumbruch

Warum Debian und/oder eine seiner Spielarten? Was muss ich vorher wissen? Wo geht es nach der Installation weiter?
Antworten
Benutzeravatar
mikrokosmos
Beiträge: 225
Registriert: 26.07.2006 19:38:24

[gelöst] Bash: Probleme mit Zeilenumbruch

Beitrag von mikrokosmos » 01.12.2006 20:34:55

Hallo liebe Debiannutzer,

ich habe hier ein Problem mit der bash bezüglich Zeilenumbrüchen bei langen Zeilen.
Und zwar ist es so, dass bei längeren Eingabezeilen der Cursor an den Zeilenursprung zurückgesetzt wird, und den Prompt und die Zeile erst einmal vollständig überschreibt. Da das ganze verbal etwas hakelig zu erklären ist, hier einmal ein Screenshot:
Bild
Ich hatte also angefangen, hinter *@toaster:~$ den "Befehl" zu tippen, bis der Cursor zurücksprang, um den Prompt schon teilweise zu überschreiben. Würde ich die Zeile jetzt weiter mit Zeichen befüllen, dann würde sie die jetzige vorhandene Zeile stur überschreiben und dann ganz normal einen Zeilenumbruch einzufügen (wie sie es eigentlich schon vorher hätte tun sollen).
Benutzt wird hier Debian Etch, die bash ist also folgende:

Code: Alles auswählen

GNU bash, version 3.1.17(1)-release (i486-pc-linux-gnu).
Der Fehler tritt im übrigen nicht nur in X-Terminalemulatoren wie Konsole oder eterm, sondern auch in der virtuellen Konsole ohne X (also per Alt+Strg+F1).

Wie meine Frage lautet, dürfte also nicht allzu schwer zu erraten sein: Wie behebe diesen doch sehr nervigen Fehler?

//Edit: Auf unserem Schulserver läuft ein Slackware mit folgender bash:

Code: Alles auswählen

GNU bash, version 2.05a.0(4)-release (i386-slackware-linux-gnu)
Bei dieser tritt das oben genannte Problem nicht auf.
Zuletzt geändert von mikrokosmos am 02.12.2006 12:21:43, insgesamt 1-mal geändert.

Benutzeravatar
AspeLin
Beiträge: 664
Registriert: 19.06.2003 16:06:16
Wohnort: Berlin

Beitrag von AspeLin » 01.12.2006 22:12:21

Das Problem liegt an der Einfärbung. Da stimmt etwas nicht. Die wird in ~/.bashrc festgelegt. Zur Fehlersuche, hier der entsprechende Ausschnitt von mir:

Code: Alles auswählen

# set a fancy prompt
PS1='\[\033[36;1m\]${USER}@${HOSTNAME}:\[\033[33m\]\w\$\[\033[37m\] '
Vielleicht hilft Dir noch der folgende Link (dort unter "Colorization"):
http://www-128.ibm.com/developerworks/l ... ip-prompt/

EDIT: "abgeschnittenen" Code korrigiert.
Zuletzt geändert von AspeLin am 06.12.2006 16:09:23, insgesamt 1-mal geändert.
Täuschung ist das Silikon der Postmoderne.

Benutzeravatar
Joghurt
Beiträge: 5244
Registriert: 30.01.2003 15:27:31
Wohnort: Hamburg
Kontaktdaten:

Beitrag von Joghurt » 02.12.2006 01:22:01

Wichtig sind die \[ und \]. In diese musst du die Escapesequenzen einschließen, damit bash weiss, dass diese den Cursor nicht weiterbewegen.

Wenn du das gemacht hast, sollte alles funktionieren.

OK, nicht alles, aber wenigstens das Prompt :wink:

Benutzeravatar
mikrokosmos
Beiträge: 225
Registriert: 26.07.2006 19:38:24

Beitrag von mikrokosmos » 02.12.2006 12:21:17

Danke an euch beide.
Das Problem lag tatsächlich darin, dass die die Escape-Sequenzen nicht von \[ und \] eingeschlossen waren. :)

Antworten