PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Bash: Ausgabe nach Steuerzeichenverarbeitung bekommen?



BLUESCREEN3D
10-05-2007, 21:15
Gibt es eine Möglichkeit, per Shellscript (von mir aus auch mit Hilfe von Standardtools) einen String mit Steuerzeichen wie z.B. \b (Backspace) umzuwandeln in den String, der letztendlich auf dem Bildschirm zu sehen ist?

Beispiel: echo -e 'abc\b123'
Ergebnis: ab123
Das c wurde überschrieben.

peschmae
10-05-2007, 22:24
Naja, du lieferst ja die Möglichkeit gleich mit! Wo bleibt die Frage?



peschmae@sid:~$ A=$(echo -e 'abc\b123')
peschmae@sid:~$ echo $A
ab123
peschmae@sid:~$


MfG Peschmä

BLUESCREEN3D
10-05-2007, 22:33
peschmae@sid:~$ A=$(echo -e 'abc\b123')
peschmae@sid:~$ echo $A
ab123
Probier mal echo $A | hexdump -C
Das c ist noch da ...

peschmae
10-05-2007, 23:05
Oops :D

Stimmt, das Verarbeiten von den Sachen macht ja auch gar nicht die Bash, sondern das Terminal. Erst mal keine Ahnung wie du das hinkriegst.

Ich kenne zwar dutzende Terminal-Emulatoren für X - aber keinen einzigen für die Konsole (und sowas bräuchtest du ja um das irgendwie nutzen zu können). Eine (leider nicht all zu hübsche) Möglichkeit wäre natürlich selbst was zu schreiben - z.B. auf Basis von libiterm1 oder so.

MfG Peschmä

jan61
11-05-2007, 20:00
Das Problem ist dabei IMHO, dass auch bei der Ausgabe über das Terminal die Steuerzeichen ja nicht verschwinden - sie werden nur interpretiert. Auch ein Terminal stellt alle Zeichen dar (inkl. der Steuerzeichen) - nur führen letztere eben zu einer Reaktion (Zeichen rückwärts, eine Zeile vor oder zurück, Ändern der Farbe ...) statt zu einem Zeichen auf dem Screen. Niemand entfernt die Steuerzeichen, der ursprüngliche String bleibt so wie er war. Und die Interpretation ist auch noch abhängig vom Terminaltyp (siehe stty).

IMHO kannst Du da nur einen eigenen Parser schreiben, aber das ist wohl ziemlich aufwändig - abhängig davon, wieviele Steuerzeichen Du abfangen willst.

Jan