Tietokone työvälineenä: UNIX-harjoitukset 5

bash:n (ja muiden shellien) ominaisuuksia

Tee ensin muutamia testitiedostoja kotihakemistoosi, jotta seuraavissa tehtävissä olisi jotain mieltä:

Tab ja Ctrl-D

Kokeile miten tab-täydennys toimii: Tyhjennä rivi (Ctrl-U). Sitten kokeile miten voit katsoa: Täydennä vielä komento loppuun (haluamme katsoa, vaikkapa, tiedosto2:a):

Historiatäydennys

Huom: seuraavat komennot eivät välttämättä toimi oikein ellei niitä anneta oikeassa järjestyksessä johtuen komentohistorian dynaamisesta luonteesta.

Editoi tiedostoa "tiedottomuus" ja lisää sinne pari riviä tekstiä; oletamme että editorisi on vi mutta voit käyttää mitä tahansa, kunhan ilmoitat sille editoimasi tiedoston nimen komentorivillä:

Sitten haluatkin yhtäkkiä laskea rivien, sanojen ja yksittäisten merkkien määrän äsken tekemässäsi tiedostossa (ohjelma wc tekee tämän), muttet halua vaivautua kirjoittamaan pitkää tiedostonimeä uudestaan ja tabitäydennyskin vaikuttaa hankalalta. Käytät komentorivihistoriatäydennystä: Sitten halutaan antaa uudelleen viimeisin komento, joka alkaa "ls": (erittäin yleistä)

Uudelleenohjaus ja putket

Katsopa mitä tiedostoja sisältää hakemisto /usr/local/bin: (jälleen käyttäen tab-täydennystä nokkelasti): Liian pitkä listaus? (Ctrl-C:llä voit aina keskeyttää jos tuntuu siltä) Tähän auttaa ls -l:n tulostuksen (stdout) uudelleenohjaus ohjelmalle less: Muistathan että !! korvautuu aina koko edellisen komentorivin sisällöllä. Ja lessistä pääsee pois painamalla q. Toki voisit tehdä äskeisen myös painamalla ensin nuoli ylös -näppäintä ja lisätä komentoriville "| less", mutta edellistä tapaa on hyvä oppia käyttämään, koska sillä voi esimerkiksi ottaa edeltävän komennon outputin komentoriville, näin (kokeile):

Kääntäminen

Pura omaan kotihakemistoosi ja käännä ohjelma SMULI(tm) 2001. Jos haluat harjoitella ftp:n käyttöä, hae vaikkapa ssh:n paketti osoitteesta ftp://ftp.cs.hut.fi/pub/ssh/ssh-2.3.0.tar.gz

Muistutukseksi: .tar.gz -loppuiset tiedostot puretaan seuraavasti:

Ensin kannattaa tietysti katsoa, mitä paketissa on sisällä, antamalla tarille argumentiksi -ztf -zxvf:n sijaan. Mene sitten hakemistoon, johon ohjelman lähdekoodi purettiin, ja jatka sieltä omatoimisesti.

Vinkkejä

Ajastaminen

Ajasta muutama komento käyttäen seuraavia menetelmiä: Vinkkejä homman hoitamiseen löydän man-sivuilta.

HOX! muista poistaa turhat entryt crontabista. Katso myös saatko hassua mailia cronilta ajon jälkeen. Mieti, miten voit estää tämän (cron ei mailaa olematonta outputtia...).

Shell-skriptaus: smartwrite - write monelle käyttäjälle

Tee skripti smartwrite, joka on muuten kuten write, mutta suorittaa tehtävänsä monelle käyttäjälle lukien käyttäjien tunnukset komentoriviltä ja kirjoitettavan krääsän stdin:sta tämän jälkeen.

Vinkkejä

Simppelisti kannattaa ensin lukea kaikki kirjoitettava data johonkin tilapäiseen tiedostoon, ja sen jälkeen käydä käyttäjät yksitellen läpi. Tilapäisen tiedoston luontiin ja ``varmistamiseen'' voit käyttää vaikkapa seuraavaa pätkää:

PROGNAME=`echo ${0} | sed 's-/-:-g'` TEMP=/tmp/"`id -un`${$}${PROGNAME}" # Sheer, raging paranoia... stmp () { rm -f ${1} || exit 1 touch ${1} || exit 1 chown `id -u`:`id -g` ${1} || exit 1 chmod 600 ${1} || exit 1 > ${1} # zero size } stmp ${TEMP}

Shell-skriptaus: which++ - parannettu which

Tee skripti which++, joka toimii lähes kuten normaali which, toisinsanoen tulostaa komennon sijainnin ja sen tyypin.

Esimerkki

londo ~ % which++ which /bin/which: executable /usr/bin/csh script /usr/bin/which: executable /usr/bin/csh script

Vinkkejä

Vastaukset

Linkit ilmestyvät kurssin kotisivulle ensi viikolla.