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.dviTä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 teksaaOn mahdollista järjestää asiat niin, että komentotiedoston voi suorittaa kirjoittamalla vain sen nimi, esim.
teksaa.
Tämä edellyttää kahta asiaa:
#!/bin/tcsh
chmod o+x teksaa
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.dviTä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.