'\" t
.\"     Title: script
.\"    Author: [see the "AUTHOR(S)" section]
.\" Generator: Asciidoctor 2.0.23
.\"      Date: 2025-03-19
.\"    Manual: Polecenia użytkownika
.\"    Source: util-linux 2.41
.\"  Language: English
.\"
.TH "SCRIPT" "1" "2025-03-19" "util\-linux 2.41" "Polecenia użytkownika"
.ie \n(.g .ds Aq \(aq
.el       .ds Aq '
.ss \n[.ss] 0
.nh
.ad l
.de URL
\fI\\$2\fP <\\$1>\\$3
..
.als MTO URL
.if \n[.g] \{\
.  mso www.tmac
.  am URL
.    ad l
.  .
.  am MTO
.    ad l
.  .
.  LINKSTYLE blue R < >
.\}
.SH "NAZWA"
script \- tworzy maszynopis sesji
.SH "SKŁADNIA"
.sp
\fBscript\fP [opcje] [\fIplik\fP]
.SH "OPIS"
.sp
\fBscript\fP 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 \fBscriptreplay\fP(1) i do zachowania dodatkowych informacji o sesji.
.sp
Od wersji 2.35, \fBscript\fP 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 \fBscriptreplay \-\-summary\fP udostępni wówczas pełne informacje.
.sp
Jeżeli poda się argument \fIplik\fP lub opcję \fB\-\-log\-out\fP, \fBscript\fP zapisuje cały dialog w \fIpliku\fP. Jeżeli nie poda się nazwy pliku, maszynopis jest zapisywany w pliku \fItypescript\fP.
.sp
Proszę zauważyć, że zapisanie wejścia za pomocą \fB\-\-log\-in\fP lub \fB\-\-log\-io\fP 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.
.SH "OPCJE"
.sp
Poniżej, po argumencie \fIrozmiar\fP 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.
.sp
\fB\-a\fP, \fB\-\-append\fP
.RS 4
Dołącza wyjście do podanego \fIpliku\fP albo pliku \fItypescript\fP, zachowując uprzednią zawartość.
.RE
.sp
\fB\-c\fP, \fB\-\-command\fP \fIpolecenie\fP
.RS 4
Uruchamia \fIpolecenie\fP 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.
.RE
.sp
\fB\-E\fP, \fB\-\-echo\fP \fIkiedy\fP
.RS 4
Opcja steruje flagą \fBECHO\fP dla końcówki podrzędnej pseudoterminala sesji. Obsługiwanymi trybami są: \fIalways\fP, \fInever\fP lub \fIauto\fP.
.sp
Domyślne jest \fIauto\fP \(em w takim przypadku \fBECHO\fP dla podrzędnego pseudoterminala jest włączone; jeśli bieżącym standardowym wejściem jest terminal, \fBECHO\fP jest wyłączone, aby uniknąć podwójnego odbijania; jeśli bieżącym standardowym wejściem nie jest terminal (lecz np. potok: \fBecho date | script\fP) to utrzymanie włączonego \fBECHO\fP dla podrzędnego pseudoterminala umożliwia oglądanie danych wejściowych na ekranie, przy jednoczesnym ich zapisywaniu do dziennika sesji.
.sp
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.
.RE
.sp
\fB\-e\fP, \fB\-\-return\fP
.RS 4
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.
.RE
.sp
\fB\-f\fP, \fB\-\-flush\fP
.RS 4
Opróżnia wyjście po każdym zapisie. Jest to użyteczne w przypadku współpracy kilku osób: pierwsza wykonuje \fBmkfifo\fP \fIfoo\fP; \fBscript \-f\fP \fIfoo\fP, a druga w czasie rzeczywistym nadzoruje jej poczynania, używając \fBcat\fP \fIfoo\fP. Proszę zauważyć, że opróżnianie może mieć wpływ na wydajność; można skorzystać z sygnału \fBSIGUSR1\fP, aby opróżniać dzienniki na żądanie.
.RE
.sp
\fB\-\-force\fP
.RS 4
Zezwala, aby domyślny plik wyjściowy \fItypescript\fP był dowiązaniem zwykłym (twardym) lub symbolicznym. Polecenie podąży za dowiązaniem symbolicznym.
.RE
.sp
\fB\-B\fP, \fB\-\-log\-io\fP \fIplik\fP
.RS 4
Zapisuje wejście i wyjście do tego samego \fIpliku\fP. Proszę zauważyć, że opcja ta ma sens tylko w połączeniu z \fB\-\-log\-timing\fP, w innym przypadku nie da się oddzielić strumienia wejściowego i wyjściowego w dzienniku \fIplik\fP.
.RE
.sp
\fB\-I\fP, \fB\-\-log\-in\fP \fIplik\fP
.RS 4
Zapisuje wejście do \fIpliku\fP. Zapisywanie wyjścia będzie wyłączone, jeśli podano tylko opcję \fB\-\-log\-in\fP.
.sp
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).
.RE
.sp
\fB\-O\fP, \fB\-\-log\-out\fP \fIplik\fP
.RS 4
Zapisuje wyjście do \fIpliku\fP. Domyślnie, jeśli nie podano opcji \fB\-\-log\-out\fP lub \fB\-\-log\-in\fP, wyjście jest zapisywane do pliku o nazwie \fItypescript\fP. Zapisywanie wyjścia będzie wyłączone, jeśli podano tylko opcję \fB\-\-log\-in\fP.
.RE
.sp
\fB\-T\fP, \fB\-\-log\-timing\fP \fIplik\fP
.RS 4
Zapisuje dziennik synchronizacji do \fIpliku\fP. 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ę \fB\-\-log\-io\fP albo podano opcje \fB\-\-log\-in\fP i \fB\-\-log\-out\fP jednocześnie. Zob. też \fB\-\-logging\-format\fP.
.RE
.sp
\fB\-m\fP, \fB\-\-logging\-format\fP \fIformat\fP
.RS 4
Wymusza użycie formatu \fIadvanced\fP (zaawansowanego) lub \fIclassic\fP (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.
.sp
\fBFormat klasyczny\fP
.RS 4
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.
.RE
.sp
\fBFormat zaawansowany (wielostrumieniowy)\fP
.RS 4
Pierwsze pole zawiera identyfikator typu wpisu (\*(AqI\(cqnput (wejście), \*(AqO\(cqutput (wyjście), \*(AqH\(cqeader (nagłówek), \*(AqS\(cqygnał). Drugie pole zawiera informację, jak dużo czasu upłynęło od poprzedniego wpisu, a reszta wpisu zawiera dane zależne od typu wpisu.
.RE
.RE
.sp
\fB\-o\fP, \fB\-\-output\-limit\fP \fIrozmiar\fP
.RS 4
Ogranicza rozmiar pliku maszynopisu i synchronizacji do \fIrozmiaru\fP i zatrzymuje proces potomny, po przekroczeniu tej wartości. Obliczony rozmiar pliku nie obejmuje początkowego i końcowego komunikatu, dołączanego przez polecenie \fBscript\fP przed i za wyjściem procesu potomnego. Ze względu na buforowanie, wynikowy plik wyjściowy może być większy niż podana wartość.
.RE
.sp
\fB\-q\fP, \fB\-\-quiet\fP
.RS 4
Tryb cichy (bez wypisywania komunikatu początkowego i końcowego na standardowe wyjście).
.RE
.sp
\fB\-t\fP[\fIplik\fP], \fB\-\-timing\fP[\fB=\fP\fIplik\fP]
.RS 4
Wypisuje dane synchronizacji na standardowe wyjście błędów lub do \fIpliku\fP, jeśli go podano. Opcja przestarzała na rzecz \fB\-\-log\-timing\fP, gdzie argument \fIplik\fP nie jest opcjonalny.
.RE
.sp
\fB\-h\fP, \fB\-\-help\fP
.RS 4
Wyświetla ten tekst i wychodzi.
.RE
.sp
\fB\-V\fP, \fB\-\-version\fP
.RS 4
Wyświetla wersję i wychodzi.
.RE
.SH "SYGNAŁY"
.sp
Po otrzymaniu \fBSIGUSR1\fP, \fBscript\fP natychmiast opróżnia pliki wyjściowe.
.SH "ŚRODOWISKO"
.sp
Następująca zmienna środowiskowa jest wykorzystywana przez \fBscript\fP:
.sp
\fBSHELL\fP
.RS 4
Jeżeli zmienna \fBSHELL\fP istnieje, powłoka rozwidlona przez \fBscript\fP będzie tą powłoką. Jeżeli \fBSHELL\fP nie jest ustawiona, wówczas przybierana jest powłoka Bourne (większość powłok ustawia tę zmienną automatycznie).
.RE
.SH "UWAGI"
.sp
Skrypt kończy się, gdy wyjdzie się z rozwidlonej powłoki. W powłoce Bourne\(cqa (\fBsh\fP(1p)) za pomocą \fIcontrol\-D\fP, albo w przypadku powłoki C \fBcsh\fP(1) korzystając z \fIexit\fP, \fIlogout\fP lub \fIcontrol\-d\fP (jeżeli \fIignoreeof\fP nie jest ustawiona).
.sp
Pewne interakcyjne komendy, takie jak \fBvi\fP(1), tworzą śmieci w pliku maszynopisu. \fBscript\fP działa najlepiej z komendami, które nie manipulują ekranem, rezultaty mają naśladować wydruk terminala.
.sp
Nie zaleca się uruchamiać \fBscript\fP w powłokach nieinteraktywnych. Wewnętrzna powłoka \fBscript\fP jest zawsze interaktywna, co może dać niespodziewane wyniki. Jeśli korzysta się z programu \fBscript\fP w swoim pliku inicjalizacji powłoki, konieczne jest unikanie wejścia w nieskończoną pętlę. Można to zrobić np. w pliku \fB.profile\fP, który jest odczytywany tylko przez powłokę zgłoszeniową (logowania):
.sp
.if n .RS 4
.nf
.fam C
if test \-t 0 ; then
    script
    exit
fi
.fam
.fi
.if n .RE
.sp
Proszę unikać również korzystania z \fBscript\fP w potokach, ponieważ \fBscript\fP może odczytać więcej wejścia, niż się tego można było spodziewać.
.SH "HISTORIA"
.sp
Polecenie \fBscript\fP pojawiło się w 3.0BSD.
.SH "USTERKI"
.sp
\fBscript\fP umieszcza w pliku dziennika \fIwszystko\fP, wliczając znaki wysuwu wiersza i znaki cofania się (backspace). Nie jest to coś, czego mógłby się spodziewać niedoświadczony użytkownik.
.sp
\fBscript\fP zaprojektowano głównie do interaktywnych sesji terminala. Gdy standardowe wejście nie jest terminalem (przykład: \fBecho foo | script\fP), to sesja może się zawiesić, ponieważ powłoka interaktywna wewnątrz sesji script nie otrzyma EOF (znaku końca pliku) i \fBscript\fP nie będzie miał pojęcia, kiedy należy ją zamknąć. Więcej informacji w rozdziale \fBUWAGI\fP.
.SH "ZOBACZ TAKŻE"
.sp
\fBcsh\fP(1) (mechanizm \fIhistory\fP), \fBscriptreplay\fP(1), \fBscriptlive\fP(1)
.SH "ZGŁASZANIE BŁĘDÓW"
.sp
Problemy należy zgłaszać w \c
.URL "https://github.com/util\-linux/util\-linux/issues" "systemie śledzenia błędów" "."
.SH "DOSTĘPNOŚĆ"
.sp
Polecenie \fBscript\fP jest częścią pakietu util\-linux, który można pobrać ze strony \c
.URL "https://www.kernel.org/pub/linux/utils/util\-linux/" "Archiwum jądra Linux" "."
