Provided by: util-linux-locales_2.41-4ubuntu3_all bug

BEZEICHNUNG

       script - Eingabeskript einer Terminalsitzung anlegen

ÜBERSICHT

       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 späteren Wiedergabe der Sitzung mit scriptreplay(1) und zum Speichern
       zusätzlicher Informationen zur Sitzung notwendig.

       Seit Version 2.35 unterstützt script mehrere Datenströme und ermöglicht die Protokollierung der Ein- und
       Ausgaben entweder in separate Dateien oder in eine Datei. Diese Version unterstützt auch eine neue
       Timing-Datei, welche zusätzliche 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 können, da
       die Protokolldatei sämtliche Eingaben der Terminalsitzung beinhaltet (auch Passwörter), unabhängig davon,
       wie der Echo-Schalter des Terminals gesetzt ist.

OPTIONEN

       Nachfolgend kann dem Argument Größe eines der multiplikativen Suffixe KiB (=1024), MiB (=1024*1024) und
       so weiter für 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 für GB, TB, PB, EB,
       ZB und YB folgen.

       -a, --append
           hängt die Ausgabe an Datei oder Eingabeskript an, wobei der vorherige Inhalt erhalten bleibt.

       -c, --command Befehl
           führt den Befehl anstelle einer interaktiven Shell aus. Das erleichtert es einem Skript, die Ausgabe
           eines Programms aufzuzeichnen, das sich anders verhält, wenn die Standardausgabe kein TTY ist.

       -E, --echo wann
           steuert den ECHO-Schalter des Pseudoterminals innerhalb der Sitzung. Unterstützte 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 zurück. Dafür 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 für 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 möglich, bei Bedarf Protokolle mit SIGUSR1 zu aktualisieren.

       --force
           ermöglicht, dass die standardmäßige 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 unmöglich, Ein- und Ausgabedatenströme für
           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 Protokollierungsfunktionalität 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. Standardmäßig 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 unterstützt. 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 enthält 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 für 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 Größe
           begrenzt die Größe der Eingabeskript- und Zeitmessungsdateien auf den angegebenen Wert und stoppt den
           Kindprozess, nachdem diese Größe überschritten wurde. In die Berechnung der Dateigröße werden die
           Start- und Ende-Meldungen nicht einbezogen, die der Befehl script der Ausgabe des Kindprozesses
           voranstellt bzw. anhängt. Wegen der Pufferung kann die Ausgabedatei größer als der angegebene Wert
           sein.

       -q, --quiet
           unterdrückt 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 für die Bourne-Shell
       (sh(1p)) und exit, logout oder Strg-d (falls ignoreeof nicht gesetzt ist) für die C-Shell, csh(1)).

       Bestimmte interaktive Befehle, wie vi(1), erzeugen Datenmüll 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 auszuführen. Die innere Shell von script ist
       immer interaktiv, was zu unerwarteten Ergebnissen führen könnte. Falls Sie script in der
       Shell-Initialisierungsdatei verwenden, müssen Sie verhindern, dass es eine Endlosschleife durchläuft. Sie
       können 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 würden.

GESCHICHTE

       Der Befehl script erschien in 3.0BSD.

FEHLER

       script schreibt alles in die Protokolldatei, auch Zeilenvorschübe und Rückschritte. Das ist nicht das,
       was der naive Benutzer erwartet.

       script wurde primär für interaktive Terminalsitzungen entworfen. Wenn die Standardeingabe kein Terminal
       ist (zum Beispiel: echo foo | script), dann könnte die Sitzung hängenbleiben, weil der interaktiven Shell
       innerhalb der script-Sitzung die Dateiende-Markierung (EOF) fehlt und script keinen Anhaltspunkt hat,
       wann es die Sitzung schließen soll. Im Abschnitt ANMERKUNGEN finden Sie weitere Informationen.

SIEHE AUCH

       csh(1) (für den history-Mechanismus), scriptreplay(1), scriptlive(1)

FEHLER MELDEN

       For bug reports, use the issue tracker <https://github.com/util-linux/util-linux/issues>.

VERFÜGBARKEIT

       Der Befehl script ist Teil des Pakets util-linux, welches aus dem Linux-Kernel-Archiv
       <https://www.kernel.org/pub/linux/utils/util-linux/> heruntergeladen werden kann.

util-linux 2.41                                    2025-07-02                                          SCRIPT(1)