'tallentaminen'-avainsanan arkisto

[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.

Kirjanmerkkisijainnit eivät toimi geditissä

Lähtökohta
Olen avannut gedit-tekstieditorin ja luonut siinä uuden HTML-asiakirjan. Painan Työkalupalkin Tallenna-nappia. Avautuvan tiedostovalitsimen Sijainnit-osiosta valitsen Asiakirjat-kirjanmerkin, jonka olen asettanut osoittamaan kotihakemistossani olevan Työpöytä-alihakemiston sisällä olevaan Asiakirjat-hakemistoon. Kirjoitan Nimi: -kenttään tiedostonimen testi.html ja valitsen Tallenna.
Ongelma

Tallennuksen jälkeen asiakirjani sisältävän välilehden otsikkona geditissä on Tallentamaton asiakirja 1 eikä tiedoston nimi, testi.html niin kuin pitäisi olla. Myös Asiakirjat-valikossa asiakirjani on listattu Tallentamaton asiakirja 1:nä sen oikean tiedostonimen sijasta.

Jos nyt painan Tallenna-nappia uudestaan, gedit avaa taas tallennustiedostovalitsimen sen sijaan että se tallentaisi asiakirjan muutokset suoraan äsken tallennettuun tiedostoon kysymättä sen nimeä.

Jos suljen asiakirjani ja avaan sen sitten valitsemalla testi.html -tiedoston avattavan tiedoston valitsimessa Asiakirjat-kirjanmerkin kautta, avautuva Tallentamaton asiakirja 1 -välilehti ei näytä asiakirjani sisältöä. Sen otsikon edessä olevan Gnome-jalan varpaat liikkuvat sen merkiksi, että tiedostoa avataan, ja hiiren osoitin on asiakirjan sisällön päälle vietynä pyörivä sekuntikello varattuna olemisen merkiksi. Välilehden voi kuitenkin sulkea.

Ongelman syy
Ei vielä tiedossa.
Ratkaisu
Ratkaisua ei vielä ole. Ongelman voi kiertää niin tallennettaessa kuin ladattaessakin hakeutumalla tiedostovalitsimessa Asiakirjat-hakemistoon kotihakemiston alla olevan Työpöytä-hakemiston kautta kirjanmerkin käyttämisen sijasta.
Huomautuksia
  • Tiedoston tallentaminen onnistuu ongelmasta huolimatta, eli testi.html luodaan kyllä Asiakirjat-kansioon. Ongelma ilmenee siis vain sen jälkeen geditin tavassa käsitellä juuri tallennettua tiedostoa.
  • Olen kokeillut avaamista ja tallentamista kirjanmerkkisijaintien kautta samanlaisella tiedostovalitsimella geditin lisäksi Firefox-selaimessa ja GIMP-kuvienkäsittelyohjelmassa. Kummassakaan tätä ongelmaa ei ilmennyt missään kokeiluistani.