Sözdizimi
script [-aeFkqr] [-t time] [file [command ...]]
script -p [-deq] [-T fmt] [file]
Açıklama
script aracı, terminalinizde yazdırılan her şeyin yazılı bir dökümünü çıkarır. Döküm dosyası daha sonra lpr(1) ile yazdırılabileceğinden, bir ödevin kanıtı olarak etkileşimli bir oturumun basılı bir kaydına ihtiyaç duyan öğrenciler için kullanışlıdır.
file argümanı verilirse, script tüm diyaloğu file dosyasına kaydeder. Eğer bir dosya adı verilmezse, döküm typescript adlı dosyaya kaydedilir.
command argümanı verilirse, script etkileşimli bir kabuk yerine belirtilen komutu isteğe bağlı bir argüman vektörüyle çalıştırır.
Aşağıdaki seçenekler mevcuttur:
-a: Önceki içeriği koruyarak çıktıyı file dosyasına veya typescript dosyasına ekler.-d: Zaman damgalı bir oturum -p bayrağı ile oynatılırken, kayıtlar arasında bekleme yapmaz.-e: util-linux script aracıyla uyumluluk için kabul edilir. Alt komutun çıkış durumu her zaman script aracının çıkış durumudur.-F: Her yazma işleminden sonra çıktıyı hemen boşaltır. Bu, bir kullanıcının mkfifo(1) kullanarak adlandırılmış bir boru hattı oluşturmasına ve başka bir kullanıcının cat(1) gibi bir araç yardımıyla canlı oturumu izlemesine olanak tanır.-k: Çıktının yanı sıra programa gönderilen tuşları da günlüğe kaydeder.-p: -r bayrağı ile kaydedilmiş bir oturumu gerçek zamanlı olarak oynatır.-q: Sessiz modda çalışır; başlangıç, durdurma ve komut durumu mesajlarını göstermez.-r: Girdi, çıktı ve zaman damgaları ile birlikte bir oturumu kaydeder.-t time: script çıktı dosyasının diske yazılma aralığını saniye cinsinden belirtir. 0 değeri, script aracının her karakter G/Ç olayından sonra boşaltma yapmasına neden olur. Varsayılan aralık 30 saniyedir.-T fmt: -p seçeneğini ima eder, ancak yalnızca her çıktının zaman damgasını bildirir. Bu, olayların zamanlamasını değerlendirmek için oldukça kullanışlıdır.
Eğer fmt herhangi bir '%' karakteri içermiyorsa, hem araçlar hem de insanlar tarafından okunması kolay olan varsayılan biçimi belirtir: '%n@ %s [%Y-%m-%d %T]%n' kullanılmalıdır. Zaman damgalarının yalnızca bir önceki damgadan farklı olduğunda çıktı olarak verileceğini unutmayın.
script, çatallanan kabuk (veya komut) sonlandığında sona erer (Bourne shell (sh(1)) uygulamasından çıkmak için Control-D, C-shell (csh(1)) için ise exit, logout veya Control-D (eğer ignoreeof ayarlanmamışsa)).
vi(1) gibi bazı etkileşimli komutlar döküm dosyasında gereksiz veriler oluşturur. script aracı, ekranı manipüle etmeyen komutlarla en iyi şekilde çalışır. Elde edilen sonuçlar, yönlendirilebilir bir terminali değil, basılı kopya veren bir terminali taklit etmeyi amaçlar.
Ortam Değişkenleri
script tarafından aşağıdaki ortam değişkenleri kullanılır:
SCRIPT SCRIPT ortam değişkeni alt kabuğa eklenir. Eğer kullanıcının ortamında SCRIPT zaten mevcutsa, alt kabuk içinde değeri üzerine yazılır. SCRIPT değeri döküm dosyasının adıdır.
SHELL Eğer SHELL değişkeni mevcutsa, script tarafından çatallanan kabuk bu kabuk olacaktır. Eğer SHELL ayarlanmamışsa, Bourne shell olduğu varsayılır. (Çoğu kabuk bu değişkeni otomatik olarak ayarlar).
Örnekler
Girdi, çıktı ve zaman damgası gibi ek ayrıntılar olmadan basit bir csh(1) oturumu kaydedin:
$ SHELL=/bin/csh script
Script started, output file is typescript
% date
Tue Jan 5 15:08:10 UTC 2021
% exit
exit
Script done, output file is typescript
Şimdi, bir önceki örnekte kaydedilen oturumu yeniden oynatın:
$ cat ./typescript
Script started on Tue Jan 5 15:08:08 2021
% date
Tue Jan 5 15:08:10 UTC 2021
% exit
exit
Script done on Tue Jan 5 15:08:13 2021
Bir csh(1) oturumu kaydedin, ancak bu sefer zaman damgası gibi ek ayrıntılar ekleyin:
$ SHELL=/bin/csh script -r
Script started, output file is typescript
% date
Tue Jan 5 15:17:11 UTC 2021
% exit
exit
Script done, output file is typescript
-r bayrağı ile kaydedilen oturumları yeniden oynatmak için -p seçeneğini belirtmek gerekir (oturum dosyasında depolanan tüm ek bilgiler nedeniyle cat(1) çalışmayacaktır). Ayrıca, tüm oturumu tek seferde yazdırmak için -d seçeneğini kullanalım:
$ script -dp ./typescript
Script started on Tue Jan 5 15:17:09 2021
% date
Tue Jan 5 15:17:11 UTC 2021
% exit
exit
Script done on Tue Jan 5 15:17:14 2021
Ayrıca Bkz.
csh(1) (geçmiş mekanizması için)
Tarihçe
script komutu ilk olarak 3.0BSD sürümünde görünmüştür.
-d, -p ve -r seçenekleri ilk olarak NetBSD 2.0 sürümünde görünmüş ve FreeBSD 9.2 sürümüne aktarılmıştır.
Hatalar
script aracı, satır besleme ve geri silme karakterleri dahil olmak üzere her şeyi günlük dosyasına yerleştirir. Bu durum, sıradan bir kullanıcının beklediği şey değildir.
Argüman ayrıştırma uyumluluğu sorunları nedeniyle, script dosyasını adlandırmadan bir komut belirtmek mümkün değildir.
-k modunda çalışırken, eko engelleme ideal olmaktan oldukça uzaktır. Manuel eko kaydından ne zaman kaçınılacağını kontrol etmek için ikincil terminal modunun ECHO modu olup olmadığı denetlenir. Bu durum, terminalin ham modda olduğu ve çalıştırılan programın manuel eko yaptığı durumlarda çalışmaz.
Eğer script terminalden sıfır bayt okursa, okunacak veri olana kadar saniyede yalnızca bir kez okuma yapmaya çalıştığı bir moda geçer. Bu durum, script aracının sıfır baytlık okumalarda sürekli döngüye girmesini önler, ancak kullanıcı girdilerinin işlenmesinde 1 saniyelik bir gecikmeye neden olabilir.