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

NAZWA

       script - tworzy maszynopis sesji

SKŁADNIA

       script [opcje] [plik]

OPIS

       script tworzy maszynopis wszystkiego, co zostało wypisane w danej sesji terminala. Dane terminala są
       zachowywane w surowej postaci w pliku dziennika, a informacje związane z czasem są zapisywane do innego
       (opcjonalnego) ustrukturyzowanego pliku dziennika synchronizacji. Plik dziennika synchronizacji jest
       wymagany, aby później odtworzyć sesję za pomocą programu scriptreplay(1) i do zachowania dodatkowych
       informacji o sesji.

       Od wersji 2.35, script obsługuje wiele strumieni i pozwala na zapisywanie wejścia i wyjścia do
       oddzielnych plików lub do wspólnego pliku. Wersja ta obsługuje również nowy plik synchronizacji, który
       zapisuje dodatkowe informacje. Polecenie scriptreplay --summary udostępni wówczas pełne informacje.

       Jeżeli poda się argument plik lub opcję --log-out, script zapisuje cały dialog w pliku. Jeżeli nie poda
       się nazwy pliku, maszynopis jest zapisywany w pliku typescript.

       Proszę zauważyć, że zapisanie wejścia za pomocą --log-in lub --log-io może zachować wrażliwe informacje
       związane z zabezpieczeniami, ponieważ plik dziennika zawiera pełne wejście sesji terminala (np. hasła),
       niezależnie od ustawienia ukrywania wyświetlania znaków na terminalu.

OPCJE

       Poniżej, po argumencie rozmiar mogą wystąpić przyrostki oznaczające wielokrotność KiB (=1024), MiB
       (=1024*1024) itd. dla GiB, TiB, PiB, EiB, ZiB i YiB (cząstka "iB" jest opcjonalna, np. "K" ma to samo
       znaczenie co "KiB") albo przyrostki KB (=1000), MB (=1000*1000) itd. dla GB, TB, PB, EB, ZB i YB.

       -a, --append
           Dołącza wyjście do podanego pliku albo pliku typescript, zachowując uprzednią zawartość.

       -c, --command polecenie
           Uruchamia polecenie zamiast powłoki interaktywnej. Dzięki temu można łatwiej przechwycić wyjście
           programu zachowującego się inaczej, gdy jego standardowym wyjściem nie jest terminal.

       -E, --echo kiedy
           Opcja steruje flagą ECHO dla końcówki podrzędnej pseudoterminala sesji. Obsługiwanymi trybami są:
           always, never lub auto.

           Domyślne jest auto — w takim przypadku ECHO dla podrzędnego pseudoterminala jest włączone; jeśli
           bieżącym standardowym wejściem jest terminal, ECHO jest wyłączone, aby uniknąć podwójnego odbijania;
           jeśli bieżącym standardowym wejściem nie jest terminal (lecz np. potok: echo date | script) to
           utrzymanie włączonego ECHO dla podrzędnego pseudoterminala umożliwia oglądanie danych wejściowych na
           ekranie, przy jednoczesnym ich zapisywaniu do dziennika sesji.

           Proszę zauważyć, że tryb "never" wpływa na zawartość dziennika wyjściowego sesji, ponieważ wejście
           wprowadzone przez użytkowników nie jest odbijane na wyjściu.

       -e, --return
           Zwraca status zakończenia procesu potomnego. Używa tego samego formatu jak kod zakończenia basha przy
           przerwaniu sygnałem (tj. status zakończenia wynosi 128 + numer sygnału). Status zakończenia procesu
           potomnego jest również zawsze zachowywany w pliku maszynopisu.

       -f, --flush
           Opróżnia wyjście po każdym zapisie. Jest to użyteczne w przypadku współpracy kilku osób: pierwsza
           wykonuje mkfifo foo; script -f foo, a druga w czasie rzeczywistym nadzoruje jej poczynania, używając
           cat foo. Proszę zauważyć, że opróżnianie może mieć wpływ na wydajność; można skorzystać z sygnału
           SIGUSR1, aby opróżniać dzienniki na żądanie.

       --force
           Zezwala, aby domyślny plik wyjściowy typescript był dowiązaniem zwykłym (twardym) lub symbolicznym.
           Polecenie podąży za dowiązaniem symbolicznym.

       -B, --log-io plik
           Zapisuje wejście i wyjście do tego samego pliku. Proszę zauważyć, że opcja ta ma sens tylko w
           połączeniu z --log-timing, w innym przypadku nie da się oddzielić strumienia wejściowego i
           wyjściowego w dzienniku plik.

       -I, --log-in plik
           Zapisuje wejście do pliku. Zapisywanie wyjścia będzie wyłączone, jeśli podano tylko opcję --log-in.

           Należy korzystać z tej opcji z dużą dozą ostrożności, ponieważ zapisuje pełne wejście, włącznie z
           wejściem, które nie jest odbijane na terminalu (np. wprowadzane hasła).

       -O, --log-out plik
           Zapisuje wyjście do pliku. Domyślnie, jeśli nie podano opcji --log-out lub --log-in, wyjście jest
           zapisywane do pliku o nazwie typescript. Zapisywanie wyjścia będzie wyłączone, jeśli podano tylko
           opcję --log-in.

       -T, --log-timing plik
           Zapisuje dziennik synchronizacji do pliku. Obecnie, obsługiwane są dwa formaty pliku synchronizacji.
           Format klasyczny używany jest, gdy włączone jest zapisywanie tylko jednego strumienia (wejścia lub
           wyjścia). Format wielostrumieniowy używany jest, gdy podano opcję --log-io albo podano opcje --log-in
           i --log-out jednocześnie. Zob. też --logging-format.

       -m, --logging-format format
           Wymusza użycie formatu advanced (zaawansowanego) lub classic (klasycznego) dziennika synchronizacji.
           Domyślny jest format klasyczny, gdy zapisywane jest tylko wyjście i format zaawansowany, gdy zażądano
           zapisywania wejścia i wyjścia.

           Format klasyczny
               Dziennik synchronizacji zawiera dwa pola, rozdzielone spacją. Pierwsze pole zawiera informację,
               jak dużo czasu upłynęło od poprzedniego wyjścia. Drugie pole określa, ile znaków zostało
               wypisanych tym razem.

           Format zaawansowany (wielostrumieniowy)
               Pierwsze pole zawiera identyfikator typu wpisu ('I’nput (wejście), 'O’utput (wyjście), 'H’eader
               (nagłówek), 'S’ygnał). Drugie pole zawiera informację, jak dużo czasu upłynęło od poprzedniego
               wpisu, a reszta wpisu zawiera dane zależne od typu wpisu.

       -o, --output-limit rozmiar
           Ogranicza rozmiar pliku maszynopisu i synchronizacji do rozmiaru i zatrzymuje proces potomny, po
           przekroczeniu tej wartości. Obliczony rozmiar pliku nie obejmuje początkowego i końcowego komunikatu,
           dołączanego przez polecenie script przed i za wyjściem procesu potomnego. Ze względu na buforowanie,
           wynikowy plik wyjściowy może być większy niż podana wartość.

       -q, --quiet
           Tryb cichy (bez wypisywania komunikatu początkowego i końcowego na standardowe wyjście).

       -t[plik], --timing[=plik]
           Wypisuje dane synchronizacji na standardowe wyjście błędów lub do pliku, jeśli go podano. Opcja
           przestarzała na rzecz --log-timing, gdzie argument plik nie jest opcjonalny.

       -h, --help
           Wyświetla ten tekst i wychodzi.

       -V, --version
           Wyświetla wersję i wychodzi.

SYGNAŁY

       Po otrzymaniu SIGUSR1, script natychmiast opróżnia pliki wyjściowe.

ŚRODOWISKO

       Następująca zmienna środowiskowa jest wykorzystywana przez script:

       SHELL
           Jeżeli zmienna SHELL istnieje, powłoka rozwidlona przez script będzie tą powłoką. Jeżeli SHELL nie
           jest ustawiona, wówczas przybierana jest powłoka Bourne (większość powłok ustawia tę zmienną
           automatycznie).

UWAGI

       Skrypt kończy się, gdy wyjdzie się z rozwidlonej powłoki. W powłoce Bourne’a (sh(1p)) za pomocą
       control-D, albo w przypadku powłoki C csh(1) korzystając z exit, logout lub control-d (jeżeli ignoreeof
       nie jest ustawiona).

       Pewne interakcyjne komendy, takie jak vi(1), tworzą śmieci w pliku maszynopisu. script działa najlepiej z
       komendami, które nie manipulują ekranem, rezultaty mają naśladować wydruk terminala.

       Nie zaleca się uruchamiać script w powłokach nieinteraktywnych. Wewnętrzna powłoka script jest zawsze
       interaktywna, co może dać niespodziewane wyniki. Jeśli korzysta się z programu script w swoim pliku
       inicjalizacji powłoki, konieczne jest unikanie wejścia w nieskończoną pętlę. Można to zrobić np. w pliku
       .profile, który jest odczytywany tylko przez powłokę zgłoszeniową (logowania):

           if test -t 0 ; then
               script
               exit
           fi

       Proszę unikać również korzystania z script w potokach, ponieważ script może odczytać więcej wejścia, niż
       się tego można było spodziewać.

HISTORIA

       Polecenie script pojawiło się w 3.0BSD.

USTERKI

       script umieszcza w pliku dziennika wszystko, wliczając znaki wysuwu wiersza i znaki cofania się
       (backspace). Nie jest to coś, czego mógłby się spodziewać niedoświadczony użytkownik.

       script zaprojektowano głównie do interaktywnych sesji terminala. Gdy standardowe wejście nie jest
       terminalem (przykład: echo foo | script), to sesja może się zawiesić, ponieważ powłoka interaktywna
       wewnątrz sesji script nie otrzyma EOF (znaku końca pliku) i script nie będzie miał pojęcia, kiedy należy
       ją zamknąć. Więcej informacji w rozdziale UWAGI.

ZOBACZ TAKŻE

       csh(1) (mechanizm history), scriptreplay(1), scriptlive(1)

ZGŁASZANIE BŁĘDÓW

       Problemy należy zgłaszać w systemie śledzenia błędów <https://github.com/util-linux/util-linux/issues>.

DOSTĘPNOŚĆ

       Polecenie script jest częścią pakietu util-linux, który można pobrać ze strony Archiwum jądra Linux
       <https://www.kernel.org/pub/linux/utils/util-linux/>.

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