SCRIPT(1) Dienstprogramme fur Benutzer SCRIPT(1) BEZEICHNUNG script - Eingabeskript einer Terminalsitzung anlegen UBERSICHT script [Optionen] [Datei] BESCHREIBUNG script erstellt ein Eingabeskript Ihrer gesamten Terminalsitzung. Die Terminal-Rohdaten werden in einer Protokolldatei und Timing-Informationen (optional) in einer weiteren, strukturierten Datei gespeichert. Die Timing-Protokolldatei ist zur spateren Wiedergabe der Sitzung mit scriptreplay(1) und zum Speichern zusatzlicher Informationen zur Sitzung notwendig. Seit Version 2.35 unterstutzt script mehrere Datenstrome und ermoglicht die Protokollierung der Ein- und Ausgaben entweder in separate Dateien oder in eine Datei. Diese Version unterstutzt auch eine neue Timing-Datei, welche zusatzliche Informationen aufzeichnet. Der Befehl scriptreplay --summary stellt dann alle Informationen bereit. Falls das Argument Datei oder die Option --log-out Datei angegeben ist, speichert script den Dialog in dieser Datei. Falls kein Dateiname angegeben ist, wird der Dialog in der Datei typescript gespeichert. Beachten Sie, dass die Protokolleingaben mit --log-in oder --log-io sicherheitskritisch sein konnen, da die Protokolldatei samtliche Eingaben der Terminalsitzung beinhaltet (auch Passworter), unabhangig davon, wie der Echo-Schalter des Terminals gesetzt ist. OPTIONEN Nachfolgend kann dem Argument Grosse eines der multiplikativen Suffixe KiB (=1024), MiB (=1024*1024) und so weiter fur GiB, TiB, PiB, EiB, ZiB und YiB folgen (das >>iB<< ist optional, zum Beispiel ist >>K<< gleichbedeutend mit >>KiB<<) oder die Suffixe KB (=1000), MB (=1000*1000) und so weiter fur GB, TB, PB, EB, ZB und YB folgen. -a, --append hangt die Ausgabe an Datei oder Eingabeskript an, wobei der vorherige Inhalt erhalten bleibt. -c, --command Befehl fuhrt den Befehl anstelle einer interaktiven Shell aus. Das erleichtert es einem Skript, die Ausgabe eines Programms aufzuzeichnen, das sich anders verhalt, wenn die Standardausgabe kein TTY ist. -E, --echo wann steuert den ECHO-Schalter des Pseudoterminals innerhalb der Sitzung. Unterstutzte Modi sind always (immer), never (nie) oder auto (automatisch). Die Voreinstellung ist auto - in diesem Fall wird ECHO deaktiviert, falls die aktuelle Standardeingabe ein Terminal ist, um ein Doppel-Echo zu vermeiden, beziehungsweise aktiviert, falls die Standardeingabe kein Terminal ist (zum Beispiel eine Pipe: echo date | script), um fehlende Eingaben im Sitzungsprotokoll zu vermeiden. Beachten Sie, dass sich der Modus >>never<< auf den Inhalt Sitzungsprotokollausgabe auswirkt, da die Benutzereingaben in der Ausgabe nicht wiederholt werden. -e, --return gibt den Exit-Status des Kindprozesses zuruck. Dafur wird das gleiche Format wie bei der Beendigung der Bash benutzt, bei der der Exit-Status 128 + die Signalnunmmer ist. Der Exit-Status des Kindprozesses wird auch immer in der Eingabeskript-Datei gespeichert. -f, --flush aktualisiert die Ausgabe nach jedem Schreibvorgang. Dies ist fur die Fernzusammenarbeit hilfreich: Eine Person schreibt mkfifo foo; script -f foo und eine andere kann mit cat foo in Echtzeit beaufsichtigen, was geschieht. Beachten Sie, dass sich die Aktualisierung auf die Performance auswirkt. Es ist moglich, bei Bedarf Protokolle mit SIGUSR1 zu aktualisieren. --force ermoglicht, dass die standardmassige Ausgabedatei, also die Eingabeskript-Datei, ein harter oder symbolischer Link sein kann. Der Befehl wird einem symbolischen Link folgen. -B, --log-io Datei protokolliert Ein- und Ausgabe in die gleiche Datei. Beachten Sie, dass diese Option nur Sinn ergibt, wenn auch --log-timing angegeben wird. Anderenfalls ist es unmoglich, Ein- und Ausgabedatenstrome fur die Protokollierung in die Datei zu trennen. -I, --log-in Datei protokolliert die Eingabe in die angegebene Datei. Die Protokollausgabe ist deaktiviert, falls nur --log-in angegeben ist. Verwenden Sie diese Protokollierungsfunktionalitat mit Vorsicht, da sie alle Eingaben protokolliert, auch jene eines Terminals, bei denen der Echo-Schalter deaktiviert ist (zum Beispiel Passworteingaben). -O, --log-out Datei protokolliert die Ausgabe in die angegebene Datei. Standardmassig wird die Ausgabe in eine Datei namens typescript protokolliert, falls die Option --log-out oder --log-in nicht angegeben ist. Falls nur --log-in angegeben ist, wird die Protokollierung der Ausgabe deaktiviert. -T, --log-timing Datei protokolliert die Timing-Informationen in die angegebene Datei. Derzeit werden zwei Formate der Timing-Datei unterstutzt. Das klassische Format wird verwendet, wenn die Protokollierung nur eines Datenstroms (Eingabe oder Ausgabe) aktiviert ist. Das Multi-Datenstrom-Format wird verwendet, wenn --log-io angegeben ist oder --log-in und --log-out zusammen angegeben sind. Siehe auch --logging-format. -m, --logging-format Format erzwingt die Verwendung des erweiterten oder klassischen Timing-Protokollformats. Die Voreinstellung ist das klassische Format, wenn nur die Ausgabe protokolliert wird, beziehungsweise das erweiterte Format, wenn die Protokollierung sowohl der Eingabe als auch der Ausgabe angefordert werden. Klassisches Format Dieses Timing-Protokoll enthalt zwei Felder, die durch Leerraum getrennt sind. Das erste Feld gibt an, wie viel Zeit seit der vorigen Ausgabe vergangen ist. Das zweite Feld gibt die Anzahl der in dieser Zeit ausgegebenen Zeichen an. Erweitertes (Multi-Datenstrom-) Format Das erste Feld ist ein Bezeichner fur den Typ des Eintrags: I (Eingabe), O (Ausgabe), H (Header/Kopfzeilen), S (Signal). Das zweite Feld gibt an, wie viel Zeit seit dem vorigen Eintrag vergangen ist, und der Rest besteht aus typspezifischen Daten. -o, --output-limit Grosse begrenzt die Grosse der Eingabeskript- und Zeitmessungsdateien auf den angegebenen Wert und stoppt den Kindprozess, nachdem diese Grosse uberschritten wurde. In die Berechnung der Dateigrosse werden die Start- und Ende-Meldungen nicht einbezogen, die der Befehl script der Ausgabe des Kindprozesses voranstellt bzw. anhangt. Wegen der Pufferung kann die Ausgabedatei grosser als der angegebene Wert sein. -q, --quiet unterdruckt Meldungen (die Meldungen zu Beginn und Ende werden nicht in die Standardausgabe geschrieben). -t[file], --timing[=file] schreibt die Timing-Daten in die Standardfehlerausgabe oder in die optional angegebene Datei. Diese Option ist veraltet. Sie sollten stattdessen --log-timing verwenden, wobei das Argument Datei obligatorisch ist. -h, --help zeigt einen Hilfetext an und beendet das Programm. -V, --version Display version and exit. SIGNALE Nach dem Empfang des Signals SIGUSR1 aktualisiert script sofort die Ausgabedateien. UMGEBUNGSVARIABLEN Die folgende Umgebungsvariable wird von script verwendet: SHELL Falls die Variable SHELL existiert, dann wird die von script geforkte Shell diese Shell sein. Falls SHELL nicht gesetzt ist, wird die Bourne-Shell angenommen (die meisten Shells setzen diese Variable automatisch). ANMERKUNGEN Das Skript endet, wenn die mit fork gestartete Shell beendet wird (ein Strg-D fur die Bourne-Shell (sh(1p)) und exit, logout oder Strg-d (falls ignoreeof nicht gesetzt ist) fur die C-Shell, csh(1)). Bestimmte interaktive Befehle, wie vi(1), erzeugen Datenmull in der Eingabeskript-Datei. Der Befehl script funktioniert mit Befehlen am besten, die den Bildschirm nicht manipulieren, die Ergebnisse sollen ein Hardcopy-Terminal nachahmen. Es wird nicht empfohlen, script in nicht-interaktiven Shells auszufuhren. Die innere Shell von script ist immer interaktiv, was zu unerwarteten Ergebnissen fuhren konnte. Falls Sie script in der Shell-Initialisierungsdatei verwenden, mussen Sie verhindern, dass es eine Endlosschleife durchlauft. Sie konnen beispielsweise die Datei .profile verwenden, die nur von Anmeldeshells gelesen wird: if test -t 0 ; then script exit fi Sie sollten es auch vermeiden, script in Befehlsweiterleitungen (Pipes) zu verwenden, da script mehr Eingaben lesen kann, als Sie erwarten wurden. GESCHICHTE Der Befehl script erschien in 3.0BSD. FEHLER script schreibt alles in die Protokolldatei, auch Zeilenvorschube und Ruckschritte. Das ist nicht das, was der naive Benutzer erwartet. script wurde primar fur interaktive Terminalsitzungen entworfen. Wenn die Standardeingabe kein Terminal ist (zum Beispiel: echo foo | script), dann konnte die Sitzung hangenbleiben, weil der interaktiven Shell innerhalb der script-Sitzung die Dateiende-Markierung (EOF) fehlt und script keinen Anhaltspunkt hat, wann es die Sitzung schliessen soll. Im Abschnitt ANMERKUNGEN finden Sie weitere Informationen. SIEHE AUCH csh(1) (fur den history-Mechanismus), scriptreplay(1), scriptlive(1) FEHLER MELDEN For bug reports, use the issue tracker . VERFUGBARKEIT Der Befehl script ist Teil des Pakets util-linux, welches aus dem Linux-Kernel-Archiv heruntergeladen werden kann. util-linux 2.41 2025-03-29 SCRIPT(1)