| SCRIPT(1) | User Commands | SCRIPT(1) |
نام (NAME)
script - ضبط و ذخیره تمام تایپها و خروجیهای نشست ترمینال
خلاصه دستور (SYNOPSIS)
script [options] [file] [-- command [argument...]]
توضیحات (DESCRIPTION)
دستور script یک نسخهٔ متنی چاپی (typescript) از همهچیز در نشست ترمینال شما تهیه میکند. دادههای ترمینال به شکل خام در پروندهٔ گزارش (log) ذخیره میشوند و اطلاعات مربوط به زمانبندی در یک پروندهٔ گزارش ساختاریافتهٔ دیگر (اختیاری) ذخیره میگردد. پروندهٔ گزارش زمانبندی برای بازپخش نشست در آینده توسط scriptreplay(1) و همچنین برای ذخیرهٔ اطلاعات بیشتر دربارهٔ نشست لازم است.
از نسخهٔ 2.35، script از چندین جریان پشتیبانی میکند و امکان ثبت ورودی و خروجی را در پروندههای جداگانه یا همگی در یک پرونده فراهم میسازد. این نسخه همچنین از یک پروندهٔ زمانبندی جدید پشتیبانی میکند که اطلاعات بیشتری را ثبت مینماید. سپس دستور scriptreplay --summary تمام این اطلاعات را ارائه میدهد.
اگر آرگومان file یا گزینهٔ --log-out file داده شود، script مکالمه را در این file ذخیره میکند. اگر نام پروندهای داده نشود، مکالمه در پروندهٔ typescript ذخیره خواهد شد.
توجه داشته باشید که ثبت ورودی با استفاده از --log-in یا --log-io ممکن است اطلاعات حساس از نظر امنیتی را ثبت کند، زیرا پروندهٔ گزارش شامل تمام ورودیهای نشست ترمینال (مانند گذرواژهها) صرفنظر از تنظیم پرچم پژواک (echo) ترمینال است.
گزینهها (OPTIONS)
در زیر، آرگومان size میتواند با پسوندهای ضربی KiB (=1024)، MiB (=1024*1024) و به همین ترتیب برای GiB، TiB، PiB، EiB، ZiB و YiB دنبال شود ("iB" اختیاری است، به عنوان مثال "K" همان معنای "KiB" را دارد)، یا پسوندهای KB (=1000)، MB (=1000*1000) و به همین ترتیب برای GB، TB، PB، EB، ZB و YB.
-a, --append
-c, --command command
-E, --echo when
حالت پیشفرض auto است — در این حالت، ECHO برای اسلیو شبهترمینال فعال میشود؛ اگر ورودی استاندارد فعلی یک ترمینال باشد، ECHO برای آن غیرفعال میشود تا از پژواک دوگانه جلوگیری شود؛ اگر ورودی استاندارد فعلی یک ترمینال نباشد (برای مثال لوله: echo date | script)، فعال نگه داشتن ECHO برای اسلیو شبهترمینال امکان مشاهدهٔ دادههای ورودی استاندارد را روی صفحه همزمان با ثبت آنها در گزارش نشست فراهم میکند.
توجه داشته باشید که حالت 'never' بر محتوای گزارش خروجی نشست تأثیر میگذارد، زیرا ورودی کاربران در خروجی تکرار نمیشود.
-e, --return
-f, --flush
--force
-B, --log-io file
-I, --log-in file
از این قابلیت ثبت با احتیاط استفاده کنید زیرا همهٔ ورودیها، از جمله ورودیهایی که در آنها ترمینال پرچم echo را غیرفعال کرده است (مانند وارد کردن گذرواژهها) را ثبت میکند.
-O, --log-out file
-T, --log-timing file
-m, --logging-format format
قالب کلاسیک (Classic format)
قالب پیشرفته (چندجریانی) (Advanced (multi-stream) format)
-o, --output-limit size
-q, --quiet
-t[file], --timing[=file]
-h, --help
-V, --version
سیگنالها (SIGNALS)
به محض دریافت SIGUSR1، دستور script بلافاصله بافر پروندههای خروجی را تخلیه میکند.
محیط (ENVIRONMENT)
متغیر محیطی زیر توسط script استفاده میشود:
SHELL
نکات (NOTES)
اجرای اسکریپت زمانی پایان مییابد که پوستهٔ منشعبشده خارج شود (control-D برای پوستهٔ Bourne (sh(1p))، و exit، logout یا control-d (اگر ignoreeof تنظیم نشده باشد) برای پوستهٔ C، یعنی csh(1)).
برخی دستورات تعاملی مانند vi(1)، دادههای زاید در پروندهٔ typescript ایجاد میکنند. script با دستوراتی که صفحه را دستکاری نمیکنند بهتر کار میکند، نتایج به گونهای در نظر گرفته شدهاند که یک ترمینال نسخهٔ چاپی سختافزاری (hardcopy) را شبیهسازی کنند.
اجرای script در پوستههای غیرتعاملی توصیه نمیشود. پوستهٔ داخلی script همیشه تعاملی است، و این میتواند منجر به نتایج غیرمنتظره شود. اگر از script در پروندهٔ مقداردهی اولیهٔ پوسته استفاده میکنید، باید از افتادن در حلقهٔ بینهایت خودداری نمایید. به عنوان مثال میتوانید از پروندهٔ .profile استفاده کنید که فقط توسط پوستههای ورود (login shells) خوانده میشود:
if test -t 0 ; then
script
exit
fi
همچنین باید از استفاده از script در لولههای دستورات (command pipes) خودداری کنید، زیرا script ممکن است ورودی بیشتری از آنچه انتظار دارید بخواند.
تاریخچه (HISTORY)
دستور script در 3.0BSD پدیدار شد.
اشکالات (BUGS)
دستور script همهچیز را در پروندهٔ گزارش قرار میدهد، از جمله خطهای جدید (linefeed) و نویسههای پسبر (backspace). این چیزی نیست که یک کاربر تازهکار انتظار دارد.
دستور script عمدتاً برای نشستهای تعاملی ترمینال طراحی شده است. هنگامی که stdin یک ترمینال نباشد (برای مثال: echo foo | script)، نشست میتواند متوقف (hang) شود، زیرا پوستهٔ تعاملی درون نشست اسکریپت انتهای پرونده (EOF) را دریافت نمیکند و script اطلاعی از زمان بستن نشست ندارد. برای اطلاعات بیشتر بخش نکات (NOTES) را ببینید.
همچنین ببینید (SEE ALSO)
csh(1) (برای سازوکار history)، scriptreplay(1), scriptlive(1)
گزارش باگها (REPORTING BUGS)
برای گزارش باگها، از ردیاب مشکلات https://github.com/util-linux/util-linux/issues.
دسترسی (AVAILABILITY)
دستور script بخشی از بستهٔ util-linux است که میتوان آن را از بایگانی هسته لینوکس https://www.kernel.org/pub/linux/utils/util-linux.
| 2026-09-02 | util-linux 2.42.3 |