SCRIPT(1) Användarkommandon SCRIPT(1)

script - skapa ett maskinskrivet manus av terminalsessionen

script [options] [file] [-- command [argument...]]

script gör ett typskript av allt som händer i din terminalsession. Terminaldata lagras i rå form i loggfilen och information om timing i en annan (valfri) strukturerad loggfil. Loggfilen med tidsangivelser behövs för att senare kunna spela upp sessionen med scriptreplay(1) och för att lagra ytterligare information om sessionen.

Sedan version 2.35 har script stöd för flera strömmar och gör det möjligt att logga in- och utdata i separata filer eller i en och samma fil. Den här versionen stöder också en ny timingfil som registrerar ytterligare information. Kommandot scriptreplay --summary ger då all information.

Om argumentet fil eller flaggan --log-out fil anges, sparar script dialogen i denna fil. Om inget filnamn anges sparas dialogen i filen typescript.

Observera att loggning av inmatning med --log-in eller --log-io kan registrera säkerhetskänslig information eftersom loggfilen innehåller all inmatning från terminalsessionen (t.ex. lösenord) oberoende av inställningen för terminalens ekoflagga.

Nedan kan storlek-argumentet följas av de multiplikativa suffixen KiB (=1024), MiB (=1024*1024), och så vidare för GiB, TiB, PiB, EiB, ZiB och YiB ("iB" är valfritt, t.ex. har "K" samma betydelse som "KiB"), eller suffixen KB (=1000), MB (=1000*1000), och så vidare för GB, TB, PB, EB, ZB och YB.

-a, --append

Lägg till utdata till fil eller till typescript, med bibehållande av tidigare innehåll.

-c, --command kommando

Run the command rather than an interactive shell. This makes it easy for a script to capture the output of a program that behaves differently when its stdout is not a tty. Instead of using option -c, the command may also be specified after a double dash (--).

-E, --echo när

Denna flagga styr flaggan ECHO för slavänden av sessionens pseudoterminal. De lägen som stöds är always, never eller auto.

Standardinställningen är auto - i det här fallet är ECHO aktiverat för pseudoterminalens slav; om den aktuella standardinmatningen är en terminal inaktiveras ECHO för att förhindra dubbeleko; om den aktuella standardinmatningen inte är en terminal (t.ex. pipe: echo date | script) gör aktiveringen av ECHO för pseudoterminalens slav att standardinmatningsdata kan visas på skärmen samtidigt som de registreras i sessionsloggen.

Observera att läget "never" påverkar innehållet i sessionens utdatalogg, eftersom användarens inmatning inte upprepas i utdata.

-e, --return

Returnerar utgångsstatus för underordnad process. Använder samma format som bash-terminering vid signalavslutning (dvs. exitstatus är 128 + signalnumret). Avslutningsstatusen för den underordnade processen lagras alltid även i skriptfilen av typen.

-f, --flush

Spola utdata efter varje skrivning. Detta är bra för telekooperation: en person gör mkfifo foo; script -f foo, och en annan kan övervaka i realtid vad som görs med hjälp av cat foo. Observera att flush påverkar prestandan; det är möjligt att använda SIGUSR1 för att spola loggar på begäran.

--force

Låt standardutdatafilen typescript vara en hård eller symbolisk länk. Kommandot kommer att följa en symbolisk länk.

-B, --log-io fil

Logga in- och utdata till samma fil. Observera att den här flaggan endast är meningsfullt om --log-timing också anges, annars är det omöjligt att separera in- och utdataströmmar från loggfilen fil.

-I, --log-in fil

Logga inmatning till fil. Loggutmatningen är inaktiverad om endast --log-in anges.

Använd denna loggningsfunktion med försiktighet eftersom den loggar all inmatning, även inmatning när terminalen har inaktiverat ekoflaggan (t.ex. lösenordsinmatning).

-O, --log-out fil

Logga utdata till fil. Standardinställningen är att logga utdata till filen med namnet typescript om flaggan --log-out eller --log-in inte anges. Loggutmatningen inaktiveras om endast --log-in anges.

-T, --log-timing fil

Logga tidsinformation till filen. Nu finns stöd för två filformat för timing. Det klassiska formatet används när endast loggning av en ström (in- eller utmatning) är aktiverad. Multistream-formatet används vid --log-io eller när --log-in och --log-out används tillsammans. Se även --loggningsformat.

-m, --logging-format format

Tvinga fram användning av avancerat eller klassiskt loggningsformat för timing. Standard är det klassiska formatet för att logga endast utdata och det avancerade formatet när loggning av både inmatning och utdata begärs.

Klassiskt format

Tidsloggen innehåller två fält som åtskiljs av ett mellanslag. Det första fältet anger hur lång tid som har gått sedan föregående utmatning. Det andra fältet anger hur många tecken som matades ut den här gången.

Avancerat format (flera strömmar)

Det första fältet är en identifiering av posttyp ("I’nput", "O’utput", "H’eader", "S’ignal"). Det andra fältet anger hur lång tid som förflutit sedan föregående inmatning, och resten av inmatningen är typspecifika data.

-o, --output-limit storlek

Begränsa storleken på typskript- och tidsfilerna till storlek och stoppa barnprocessen när denna storlek överskrids. Den beräknade filstorleken inkluderar inte de start- och slutmeddelanden som kommandot script preppar och lägger till i den underordnade processens utdata. På grund av buffring kan den resulterande utdatafilen vara större än det angivna värdet.

-q, --quiet

Var tyst (skriv inte start- och slutmeddelanden till standardutdata).

-t[fil], --timing[=fil]

Skriv ut tidsdata till standardfelet, eller till fil om det anges. Denna flagga är inte längre aktuellt till förmån för --log-timing där argumentet fil inte är valfritt.

-h, --help

Visa hjälptext och avsluta.

-V, --version

Visa version och avsluta.

När SIGUSR1 tas emot rensar script omedelbart utdatafilerna.

Följande miljövariabel används av script:

SKAL

Om variabeln SHELL finns, kommer det skal som script förgrenar sig till att vara detta skal. Om SHELL inte är inställd, antas Bourne-skalet. (De flesta skal ställer in denna variabel automatiskt).

Skriptet avslutas när det förgrenade skalet avslutas (en control-D för Bourne-skalet (sh(1p)), och exit, logout eller control-d (om ignoreeof inte är inställt) för C-skalet, csh(1)).

Vissa interaktiva kommandon, t.ex. vi(1), skapar skräp i typescript-filen. script fungerar bäst med kommandon som inte manipulerar skärmen, resultaten är avsedda att emulera en terminal för papperskopiering.

Det är inte rekommenderat att köra script i icke-interaktiva skal. Det inre skalet i script är alltid interaktivt, och det kan leda till oväntade resultat. Om du använder script i skalets initieringsfil måste du undvika att hamna i en oändlig slinga. Du kan t.ex. använda filen .profile, som endast läses av inloggade skal:

if test -t 0 ; då
    skript
    avsluta
fi

Du bör också undvika att använda script i kommandorör, eftersom script kan läsa mer indata än du förväntar dig.

Kommandot script dök upp i 3.0BSD.

script placerar allt i loggfilen, inklusive radmatningar och mellanslag. Detta är inte vad den naiva användaren förväntar sig.

script är främst utformat för interaktiva terminalsessioner. När stdin inte är en terminal (t.ex. echo foo | script) kan sessionen hänga sig, eftersom det interaktiva skalet i skriptsessionen missar EOF och script inte har någon aning om när sessionen ska stängas. Se avsnittet NOTER för mer information.

csh(1) (för history-mekanismen), scriptreplay(1), scriptlive(1)

För felrapporter, använd felhanteraren https://github.com/util-linux/util-linux/issues.

Kommandot script ingår i paketet util-linux som kan hämtas från Linux Kernel Archive https://www.kernel.org/pub/linux/utils/util-linux/.

2026-05-18 util-linux 2.42.1