[Ratkaisu] Komentojen ja niiden ulostulon tallentaminen tiedostoon

Lähtökohta
Aion suorittaa monimutkaisen, paljon eri komentoja sisältävän tehtävän komentorivitulkissa.
Ongelma
Haluan tallentaa ajamani komennot ja kaiken niiden komentotulkkiin tuottaman ulostulon tiedostoon, jotta voin jälkeenpäin käyttää sitä muistiapuna kuvaillessani miten tehtävän suoritin.
Ratkaisu
Voin tallentaa komentorivitulkkiin kirjoittamani komennot ja niiden ulostulon script-komennolla.
Seuraavassa esimerkissä suoritan kaksi echo-komentoa ja yhden cat-komennon niin, että komennot ja niiden ulostulo tallentuvat testi.txt -nimiseen tiedostoon. Tällainen, tavallaan script-komennon sisällä ajettava lohko on nimeltään istunto, ja olen lihavoinut sen sisällön seuraavassa:

jani@shuttle-xpc:~/tmp$ script testi.txt
Skripti käynnistetty, tiedosto on testi.txt
jani@shuttle-xpc:~/tmp$ echo "tämä on testi."
tämä on testi.
jani@shuttle-xpc:~/tmp$ echo "voisin ajaa tässä mitä hyvänsä komentoja" > foo.txt
jani@shuttle-xpc:~/tmp$ cat foo.txt
voisin ajaa tässä mitä hyvänsä komentoja
jani@shuttle-xpc:~/tmp$ exit
Skripti suoritettu, tiedosto on testi.txt
jani@shuttle-xpc:~/tmp$ 

Aloitin istunnon tallentamisen script testi.txt -komennolla ja lopetin sen exit-komennolla. Testi.txt -tiedostoon tallentui kaikki mitä näiden kahden komennon suorituksen välissä tapahtui eli yllä olevassa lihavoimani istunto, sekä lisäksi istunnon aloitus- ja lopetusaika. Tulostan seuraavassa cat-komennolla testi.txt -tiedoston sisällön ja lihavoin sen:

jani@shuttle-xpc:~/tmp$ cat testi.txt
Skripti käynnistetty to 28. helmikuuta 2008 09:36:31
jani@shuttle-xpc:~/tmp$ echo "tämä on testi."
tämä on testi.
jani@shuttle-xpc:~/tmp$ echo "voisin ajaa tässä mitä hyvänsä komentoja" > foo.txt
jani@shuttle-xpc:~/tmp$ cat foo.txt
voisin ajaa tässä mitä hyvänsä komentoja
jani@shuttle-xpc:~/tmp$ exit

Skripti suoritettu to 28. helmikuuta 2008 09:37:19
jani@shuttle-xpc:~/tmp$ 
Huomautuksia
  • Istunnon lopettamiseen voi käyttää exit-komennon sijasta näppäinyhdistelmää Control + D.
  • Script-komennon ohjesivu varoittaa, että jotkin interaktiiviset komennot (kuten vi) saattavat kirjoittaa tallennustiedostoon roskaa, eli satunnaiselta vaikuttavia merkkejä. Niiden käytöstä ei välttämättä jää tallennustiedostoon ymmärrettäviä kirjauksia.
  • Ratkaisussa oleva ensimmäinen esimerkki on sekin tallennettu scriptiä käyttäen; ajoin siis script-komennon istunnossa, jota suoritin toisessa script-komennolla aloitetussa istunnossa. Istuntoja voi siis sisäkkäistää.
  • Kaikki komennot tallentuvat Bash-komentotulkissa käyttäjäkohtaiseen historiaan, jota voi hallita HISTSIZE, HISTFILE ja HISTFILESIZE -muuttujien avulla. Komentohistoriaan tallennetaan kuitenkin vain komennot, ei niiden ulostuloa. Lisäksi komentohistorian koko on rajoitettu.