Unix-opas, luku 6 Komennot:

Komentotiedostot

Jos sinulla esiintyy toistuvasti tarvetta suorittaa sama komentojen jono, voit kirjoittaa komennot tiedostoon jollakin editorilla; tämän jälkeen komentojono on suoritettavissa source-komennolla, jonka argumenttina on kyseisen tiedoston nimi. Komentoja sisältävää tiedostoa kutsutaan tässä nimellä komentotiedosto; usein sellaisesta käytetään nimitystä shell script.

Seuraava esimerkki yksinkertaisesta komentotiedostosta liittyy TeX-ladontaohjelmiston käyttöön. Olennaista asiassa aiheemme kannalta on se, että TeXiä käytettäessä on käyttäjän usein annettava sama komentojono. Tämä johtuu siitä, että käyttäjän kirjoittama tiedosto käsiteltävä TeX-ohjelmalla, jotta se saataisiin haluttuun muotoon, ja lisäksi tulos on käsiteltävä toisella ohjelmalla, jotta se voitaisiin tulostaa paperille. Oletetaan, että käyttäjän kirjoittama tiedosto on nimeltään dityo.tex. Tällöin käyttäjä voisi kirjoittaa seuraavanlaisen komentotiedoston, joka olkoon nimeltään teksaa ja joka sisältää ne komennot, jotka käyttäjä muutoin naputtelisi käsin joka kerta:

use tex
latex dityo.tex
dvips dityo.dvi
Tämän jälkeen halutut asiat (TeXin käyttöönotto, tiedoston käsittely LaTeXillä ja sitten vielä tuloksen muuntaminen PostScript-muotoon mahdollista paperitulostusta varten) voidaan suorittaa komennolla
source teksaa
On mahdollista järjestää asiat niin, että komentotiedoston voi suorittaa kirjoittamalla vain sen nimi, esim. teksaa. Tämä edellyttää kahta asiaa:

Komentotiedostossa voi pelkkien komentojen lisäksi olla selittäviä kommentteja, jotka aloitetaan ristikkomerkillä #, sekä erilaisia ohjausrakenteita kuten ehdollisuuden aikaansaava if ja toiston aikaansaava while.

Tässä oppaassa käsittelemme komentotiedostojen kehittyneemmästä käytöstä vain yhtä tärkeää piirrettä: argumenttien käyttöä. Esimerkiksi edellä esitetystä komentotiedostosta teksaa saataisiin yleiskäyttöisempi seuraavasti:

use tex
latex $1.tex
dvips $1.dvi
Tällöin samaa komentotiedostoa voitaisiin käyttää erinimisten tiedostojen käsittelyyn. Esimerkiksi komento source teksaa dityo tällöin aiheuttaisi saman kuin aiempi teksaa-tiedoston versio. Tässä siis merkintä $1 tarkoittaa sillä komentorivillä olevaa argumenttia, jolla komentotiedosto käynnistetään. Lienee helppo arvata, että jos komentorivillä on useita argumentteja, niihin viitataan yleisesti järjestyksessä merkinnöillä $1, $2, $3 jne.

Ohjausrakenteissa on aika paljon eroja eri shellien välillä. Jos näitä aiheita ryhtyy opiskelemaan, kannattaa harkita, mitä shelliä silloin käyttää komentotiedostoissa. Toisaalta olisi luonnollista käyttää samaa shelliä kuin muutoinkin, siis T-shelliä, mutta toisaalta on melko vakiintunut tapa kirjoittaa komentotiedostot käyttämään Bourne shelliä muun muassa siirrettävyyden takia. Bourne shell löytynee jokaisesta Unixista, esim. T-shell ei suinkaan kaikista.

Oppaassa Ohjelmointi Unixissa on lisätietoja komentotiedostoista.