SCRIPT(1)

NUME
script - face o transcriere a sesiunii de terminal

REZUMAT

script [opțiuni] [fișier] [-- comanda [argument...]]

DESCRIERE

script face o transcriere a tot ceea ce se află în sesiunea de terminal. Datele terminalului sunt stocate în formă brută în fișierul jurnal, iar informațiile despre sincronizare(datele de timp) într-un alt fișier jurnal structurat (opțional). Fișierul jurnal de cronometrare este necesar pentru a reda sesiunea ulterior prin scriptreplay(1) și pentru a stoca informații suplimentare despre sesiune.

Începând cu versiunea 2.35, script suportă fluxuri multiple și permite înregistrarea intrărilor și ieșirilor în fișiere separate sau într-un singur fișier. Această versiune acceptă, de asemenea, un nou fișier de sincronizare care înregistrează informații suplimentare. Comanda scriptreplay --summary oferă apoi toate informațiile.

Dacă este dat argumentul fișier sau opțiunea --log-out fișier, script salvează dialogul în acest fișier. Dacă nu se dă un nume de fișier, dialogul este salvat în fișierul typescript.

Rețineți că înregistrarea datelor de intrare în jurnal utilizând --log-in sau --log-io poate înregistra informații sensibile din punct de vedere al securității, deoarece fișierul jurnal conține toate datele de intrare în sesiunea terminalului (de exemplu, parolele), indiferent de valoarea fanionului ECHO al terminalului.

OPȚIUNI

Mai jos, argumentul dimensiune poate fi urmat de sufixele multiplicative KiB (=1024), MiB (=1024*1024), și așa mai departe pentru GiB, TiB, PiB, EiB, ZiB și YiB („iB” este opțional, de exemplu, „K” are aceeași semnificație ca și „KiB”), sau sufixele KB (=1000), MB (=1000*1000) și așa mai departe pentru GB, TB, PB, EB, ZB și YB.

-a, --append
    Adaugă rezultatul la fișier sau la transcriere, păstrând conținutul anterior.

-c, --command comanda
    Rulează comanda mai degrabă decât un shell interactiv. Acest lucru facilitează capturarea de către un script a ieșirii unui program care se comportă diferit atunci când ieșirea standard a acestuia nu este un terminal tty. În loc să se utilizeze opțiunea -c, comanda poate fi specificată și după două liniuțe (--).

-E, --echo când
    Această opțiune controlează fanionul ECHO pentru capătul sclav al pseudo-terminalului sesiunii. Modurile acceptate sunt always (întotdeauna), never (niciodată) sau auto.

    Valoarea implicită este auto - în acest caz, ECHO este activat pentru pseudo-terminalul sclav; dacă intrarea standard curentă este un terminal, ECHO este dezactivat pentru acesta pentru a preveni „ecoul” dublu; dacă intrarea standard curentă nu este un terminal (de exemplu conductă: echo date | script), atunci menținerea activării ECHO pentru pseudo-terminalul sclav permite vizualizarea pe ecran a datelor de intrare standard și înregistrarea simultană în jurnalul sesiunii.

    Rețineți că modul „never” (niciodată) afectează conținutul jurnalului de ieșire al sesiunii, deoarece datele introduse de utilizatori nu se repetă la ieșire.

-e, --return
    Returnează starea de ieșire a procesului-copil. Folosește același format ca și terminarea bash la primirea semnalului de terminare (adică, starea de ieșire este 128 + numărul semnalului). Starea de ieșire a procesului-copil este întotdeauna stocată și în fișierul de transcriere (typescript).

-f, --flush
    Curăță ieșirea după fiecare scriere. Acest lucru este util pentru telecooperare: o persoană face mkfifo foo; script -f foo, iar alta poate supraveghea în timp real ce se face folosind cat foo. Rețineți că „-flush” (curățarea/golirea) are un impact asupra performanțelor; este posibil să se utilizeze SIGUSR1 pentru a curăța/goli jurnalele la cerere.

--force
    Permite ca fișierul de ieșire implicit transcrierea (typescript) să fie o legătură dură sau simbolică. Comanda va urma o legătură simbolică.

-B, --log-io fișier
    Înregistrează datele de intrare și de ieșire în același fișier. Rețineți că această opțiune are sens numai dacă este specificat și --log-timing, altfel este imposibil să se separe fluxurile de ieșire și de intrare din fișierul de jurnal.

-I, --log-in fișier
    Înregistrează datele de intrare în fișier. Ieșirea de jurnal este dezactivată dacă se specifică doar --log-in.

    Folosiți cu atenție această funcționalitate de înregistrare, deoarece înregistrează toate intrările, inclusiv intrările în cazul în care terminalul a dezactivat fanionul ECHO (de exemplu, intrările de parole).

-O, --log-out fișier
    Înregistrează ieșirea în fișier. Valoarea implicită este de a înregistra ieșirea în fișierul cu numele typescript dacă nu se dă opțiunea --log-out sau --log-in. Ieșirea jurnalului este dezactivată dacă se specifică doar --log-in.

-T, --log-timing fișier
    Înregistrează informațiile de sincronizare (de timp) în fișierul fișier. Acum sunt acceptate două formate de fișiere de cronometrare. Formatul clasic este utilizat atunci când este activată înregistrarea unui singur flux (intrare sau ieșire). Formatul multi-flux este utilizat la --log-io sau atunci când --log-in și --log-out sunt utilizate împreună. A se vedea, de asemenea, --logging-format.

-m, --logging-format format
    Forțează utilizarea formatului de jurnal de cronometrare avansat sau clasic. În mod implicit, se folosește formatul clasic pentru a înregistra numai ieșirile și formatul avansat atunci când se solicită înregistrarea atât a intrărilor, cât și a ieșirilor.

    Formatul clasic
        Jurnalul de cronometrare conține două câmpuri, separate prin câte un spațiu. Primul câmp indică cât timp a trecut de la ieșirea anterioară. Al doilea câmp indică numărul de caractere care au fost emise de această dată.

    *Formatul avansat (multi-flux)
        Primul câmp este un identificator al tipului de intrare („I’nput” (intrarea), „O’utput” (ieșirea), „H’eader” (antetul, titlul), „S’ignal” (semnal)). Al doilea câmp reprezintă timpul care a trecut de la intrarea anterioară, iar restul câmpului este format din date specifice tipului de intrare.

-o, --output-limit dimensiunea
    Limitează dimensiunea fișierelor de transcriere(typescript) și de sincronizare la dimensiunea și oprește procesul-copil după ce această dimensiune este depășită. Dimensiunea calculată a fișierului nu include mesajele de start și de sfârșit pe care comanda script le preia și le adaugă la ieșirea procesului-copil. Din cauza utilizării memoriei tampon, este posibil ca fișierul de ieșire rezultat să fie mai mare decât valoarea specificată.

-q, --quiet
    Stă liniștit (nu scrie mesajele de început și sfârșit la ieșirea standard).

-t[fișier], --timing[=fișier]
    Emite datele de sincronizare către ieșirea de eroare standard sau către fișier, dacă este cazul. Această opțiune este depășită în favoarea --log-timing, unde argumentul fișier nu este opțional.

-h, --help
    Afișează acest mesaj de ajutor și iese.

-V, --version
    Afișează versiunea și iese.

SEMNALE

La primirea semnalului SIGUSR1, script golește imediat fișierele de ieșire.

MEDIU

Următoarea variabilă de mediu este utilizată de script:

SHELL
    Dacă variabila SHELL există, shell-ul bifurcat de script va fi acel shell. Dacă variabila SHELL nu este definită, se va folosi shell-ul Bourne. (Majoritatea shell-urilor definesc automat această variabilă).

NOTE

Scriptul se termină atunci când shell-ul bifurcat iese (un control-D pentru shell-ul Bourne (sh(1p)), și exit, logout sau control-d (dacă ignoreeof nu este activat) pentru C-shell, csh(1)).

Anumite comenzi interactive, cum ar fi vi(1), generează deșeuri în fișierul de transcriere(typescript). script funcționează cel mai bine cu comenzi care nu manipulează ecranul, rezultatele sunt menite să emuleze o copie exactă a unui terminal.

Nu se recomandă rularea de script în shell-uri non-interactive. Shell-ul interior al script este întotdeauna interactiv, ceea ce ar putea duce la rezultate neașteptate. Dacă utilizați script în fișierul de inițializare a shell-ului, trebuie să evitați intrarea într-o buclă infinită. Puteți utiliza, de exemplu, fișierul .profile, care este citit numai de shell-urile de autentificare:

    if test -t 0 ; then
        script
        exit
    fi

De asemenea, ar trebui să evitați utilizarea lui script în conductele de comandă, deoarece script poate citi mai multe date de intrare decât v-ați aștepta.

ISTORIC

Comanda script a apărut în 3.0BSD.

ERORI

script plasează totul în fișierul jurnal, inclusiv salturile de linie și spațiile înapoi.. Nu este ceea ce se așteaptă un utilizator naiv.

script este conceput în primul rând pentru sesiuni interactive de terminal. Atunci când intrarea standard nu este un terminal (de exemplu: echo foo | script), atunci sesiunea se poate bloca, deoarece shell-ului interactiv din cadrul sesiunii de script îi lipsește EOF, iar script nu știe când să închidă sesiunea. Pentru mai multe informații, consultați secțiunea NOTE.

CONSULTAȚI ȘI

csh(1) (pentru mecanismul istoric), scriptreplay(1), scriptlive(1)

RAPORTAREA ERORILOR

Pentru rapoarte de eroare, folosiți

DISPONIBILITATE

Comanda script face parte din pachetul util-linux care poate fi descărcat de la