ubuntuusers.de

Script: Datei typescript nachbearbeiten

Status: Ungelöst | Ubuntu-Version: Ubuntu 8.04 (Hardy Heron)
Antworten |

FRHbaldham

Anmeldungsdatum:
20. Dezember 2008

Beiträge: 9

Das bash-Kommando script ist sehr nützlich, um Sitzungen im Terminalfenster zu protokollieren (per default in der Datei typescript). Will man jedoch Teile des Protokolls aus typescript mit Hilfe eines Editors herausschneiden, um sie in eine andere Datei zu übertragen, wird es schwierig: im Editor-Fenster sieht man jede Menge Steuerzeichen, die auf dem Bildschirm nicht zu sehen waren.

Ich habe nach einer Funktion gesucht, um das Problem zu lösen – vergeblich. (Es ist schließlich die Funktion, welche cat verwendet!)

Inzwischen benutze ich folgendes Verfahren:

im Terminal mit „Bearbeiten/Momentan verwendetes Profil...“ das Fenster „Rollbalken“ aufsuchen und das Feld „Zurückrollen“ auf eine hinreichend große Zeilenzahl setzen (z.B. 5000)

den Texteditor (über „Anwendungen/Zubehör“) öffnen ODER in einem zweiten Terminal den Editor „vi“ öffnen

in Terminal 1 das Kommando cat typescript ausführen; die Datei typescript wird angezeigt. Alles selektieren und „Bearbeiten/Kopieren“ klicken

Im Editor „Bearbeiten/Einfügen“ klicken: die Datei typescript ist in „richtiger“ Form verfügbar und kann abgespeichert werden, z.B. als typscript.list ODER falls man vi verwendet: „O“ tippen und dann „Bearbeiten/Einfügen“ klicken; nach ESC kann die Datei mit :wq typescript.list abgespeichert werden

Die Datei typescript.list kann jetzt beliebig weiter verwendet werden. Dieses Verfahren ist zwar nicht besonders elegant, aber es funktioniert! Ich hoffe, damit anderen helfen zu können. Wenn jemand eine bessere Lösung hat: bitte Antwort.

Marc_BlackJack_Rintsch Team-Icon

Ehemalige
Avatar von Marc_BlackJack_Rintsch

Anmeldungsdatum:
16. Juni 2006

Beiträge: 4686

Wohnort: Berlin

@FRHbaldham: script ist kein Bash-Kommando, sondern ein ganz normales Programm.

Man könnte sich ein kleines Skript schreiben, welches Steuerzeichen entfernt. Etwas in dieser Richtung:

sed -re 's/\x1b(\[[0-9;]*[a-zA-Z@]|\][0-9]*;|)|\x07//g'

FRHbaldham

(Themenstarter)

Anmeldungsdatum:
20. Dezember 2008

Beiträge: 9

Marc 'BlackJack' Rintsch schrieb:

@FRHbaldham: script ist kein Bash-Kommando, sondern ein ganz normales Programm.

Man könnte sich ein kleines Skript schreiben, welches Steuerzeichen entfernt. Etwas in dieser Richtung:

sed -re 's/\x1b(\[[0-9;]*[a-zA-Z@]|\][0-9]*;|)|\x07//g'

Ob script ein Kommando oder ein Programm ist, ist letzlich egal - man kann es dem Namen nicht ansehen. Ich habe mich vielleicht sehr knapp ausgedrückt: es handelt sich nicht nur um Sonderzeichen entfernen. Diese Zeichen sind Steuersymbole, die den Text verarbeiten - mit einem Programm, welches in cat steckt.

Wenn man allerdings cat typesript > ttt eingibt, wird typescript kopiert. Damit ist also nichts gewonnen.

Was man bräuchte, wäre genau dieses Programm, welches in cat steckt, mit der Möglichkeit, die Ausgabe statt auf ein Terminal in eine Datei zu schreiben.

Antiqua Team-Icon

Avatar von Antiqua

Anmeldungsdatum:
30. Dezember 2008

Beiträge: 4534

öhm... entweder versteh ich das Falsch, oder du kennst die history-Funktionen der bash nicht.

Der File .bash_history in deinem $HOME ist vermutlich genau was du suchst. $HISTSIZE $HISTFILE $HISTCONTROL und noch einpaar bash-eigene Variablen kümmern sich da drumm, kann man schön anpassen wie man will. Näheres in der Man-Page von bash.


Edith sagt, ich habs komplett falsch verstanden ☹

Marc_BlackJack_Rintsch Team-Icon

Ehemalige
Avatar von Marc_BlackJack_Rintsch

Anmeldungsdatum:
16. Juni 2006

Beiträge: 4686

Wohnort: Berlin

@FRHbaldham: Ich verstehe nicht so ganz was Du mit dem "Programm was in cat steckt" sagen willst. cat ist cat das kopiert einfach nur und macht sonst nichts weiter.

FRHbaldham

(Themenstarter)

Anmeldungsdatum:
20. Dezember 2008

Beiträge: 9

Antiqua schrieb:

öhm... entweder versteh ich das Falsch, oder du kennst die history-Funktionen der bash nicht.

Der File .bash_history in deinem $HOME ist vermutlich genau was du suchst. $HISTSIZE $HISTFILE $HISTCONTROL und noch einpaar bash-eigene Variablen kümmern sich da drumm, kann man schön anpassen wie man will. Näheres in der Man-Page von bash.


Edith sagt, ich habs komplett falsch verstanden ☹

Liebe(r) Antiqua: Die HISTORY Funktion ist nicht, was ich brauche, dort werden nur die von mir eingetippten bash Kommandos gezeigt. Als Beispiel: ich habe ein Programmpaket mit apt-get installiert und möchte gern meine eigene Eingabe und die Ausgabe von apt-get, so wie sie auf dem Bildschirm erscheint, protokollieren. Was auf dem Bildschirm erscheint, ist ein sehr dynamisches Geschehen. Z.B. erscheint eine Zeile Abhängigkeitsbaum wird aufgebaut... 0% wobei die 0% sich ändern in 50%, und schließlich 6 Blanks. Das ist das, was ich schließlich auf dem Bildschirm sehe und gerne protokolliert haben möchte. Wenn man das typescript aber anschaut, sieht man alle Zwischenstufen, etc. D.h. script erzeugt eine Datei mit Information und Steuersymbolen. Wenn sie ausgeführt werden, z.B. mit cat, erscheint auf dem Bildschirm der gewünschte Text. Schickt man die Ausgabe von cat in eine Datei, wird typescript einfach kopiert. Die beiden Versionen der typescript Datei sind im Anhang. Gruß FRHbaldham

script-roh (9.4 KiB)
die ausgelesene Datei typescript
Download script-roh
script-lesbar (5.5 KiB)
die Datei typescript in lesbare Form gebracht
Download script-lesbar

FRHbaldham

(Themenstarter)

Anmeldungsdatum:
20. Dezember 2008

Beiträge: 9

Marc 'BlackJack' Rintsch schrieb:

@FRHbaldham: Ich verstehe nicht so ganz was Du mit dem "Programm was in cat steckt" sagen willst. cat ist cat das kopiert einfach nur und macht sonst nichts weiter.

@Marc 'BlackJack' Rintsch: Stimmt wohl. Die Prozedur zum Interpretieren der Datei ist irgendwo auf dem Weg zur Bildschirm-Darstellung - ich weiß aber nicht wo. Siehe auch meine Antwort an AYntiqua. Gruß, FRHbaldham

Marc_BlackJack_Rintsch Team-Icon

Ehemalige
Avatar von Marc_BlackJack_Rintsch

Anmeldungsdatum:
16. Juni 2006

Beiträge: 4686

Wohnort: Berlin

Was für ein Terminal verwendest Du denn? Bei Konsole unter KDE kann man z.B. unter Edit→Save History As… die Ausgabe so wie sie gerendert wurde als Textdatei abspeichern.

FRHbaldham

(Themenstarter)

Anmeldungsdatum:
20. Dezember 2008

Beiträge: 9

Marc 'BlackJack' Rintsch schrieb:

Was für ein Terminal verwendest Du denn? Bei Konsole unter KDE kann man z.B. unter Edit→Save History As… die Ausgabe so wie sie gerendert wurde als Textdatei abspeichern.

Lieber BlackJack: ich verwende das Standard-Terminal in GNOME. Mir ist nicht aufgefallen, dass es da so eine Option gäbe.

Antiqua Team-Icon

Avatar von Antiqua

Anmeldungsdatum:
30. Dezember 2008

Beiträge: 4534

FRHbaldham schrieb:

Antiqua schrieb:


Edith sagt, ich habs komplett falsch verstanden ☹

Liebe(r) Antiqua: Die HISTORY Funktion ist nicht, was ich brauche, dort werden nur die von mir eingetippten bash Kommandos gezeigt. Als Beispiel: ich habe ein Programmpaket mit apt-get installiert und möchte gern meine eigene Eingabe und die Ausgabe von apt-get, so wie sie auf dem Bildschirm erscheint, protokollieren. Was auf dem Bildschirm erscheint, ist ein sehr dynamisches Geschehen.

ja, schon klar ☺

deshalb auch das Edith, übrigens hab ich mein Missverständnis kurz nach dem Absenden meines Beitrags bemerkt. Ich hätte auch meinen ganzen Text löschen können, aber ich mag es nicht, gemachte Fehler so zu korigieren... 😉

aber zurück zum Topic: ich wüßte jetzt nicht genau wie, aber könnte man nicht mit der REDIRECTION (FD 0,1 u.2) der bash das gewünschte Verhalten hinbiegen?

Gruß FRHbaldham

LG Antiqua

Antworten |