- 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 kaksiecho
-komentoa ja yhdencat
-komennon niin, että komennot ja niiden ulostulo tallentuvattesti.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 senexit
-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 tallennustiedostoonroskaa
, 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 hallitaHISTSIZE
,HISTFILE
jaHISTFILESIZE
-muuttujien avulla. Komentohistoriaan tallennetaan kuitenkin vain komennot, ei niiden ulostuloa. Lisäksi komentohistorian koko on rajoitettu.
- Istunnon lopettamiseen voi käyttää exit-komennon sijasta näppäinyhdistelmää