table of contents
- experimental 2.41-2
SCRIPT(1) | Polecenia użytkownika | SCRIPT(1) |
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
-c, --command polecenie
-E, --echo kiedy
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
-f, --flush
--force
-B, --log-io plik
-I, --log-in plik
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
-T, --log-timing plik
-m, --logging-format format
Format klasyczny
Format zaawansowany (wielostrumieniowy)
-o, --output-limit rozmiar
-q, --quiet
-t[plik], --timing[=plik]
-h, --help
-V, --version
SYGNAŁY¶
Po otrzymaniu SIGUSR1, script natychmiast opróżnia pliki wyjściowe.
ŚRODOWISKO¶
Następująca zmienna środowiskowa jest wykorzystywana przez script:
SHELL
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/>.
2025-03-19 | util-linux 2.41 |