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.