Katsotaanpa toinen esimerkki. Annetaan seuraavat kaksi komentoa: ensimmäinen (ls) on kelvollinen komento, kun taas toinen (ls -0) on virheellinen komento, koska se sisältää laittoman vaihtoehdon -0.

Tämä on kelvollinen komento:

$ ls
Applications Documents Library Music Public$ echo $?
0

Katsotaan nyt virheellistä komentoa:

$ ls -0
ls: illegal option -- 0
usage: ls $ echo $?
1

Toisen komentosarjan ongelmana on se, että se näyttää mahdolliset virheilmoitukset kohtaan STDERR. Meidän skripteissämme haluamme kuitenkin tukahduttaa virheilmoitukset. Onneksi on olemassa hakkerointi, jolla saamme tehtyä juuri sen, mitä haluamme.

Kokeillaanpa tätä uudestaan komennolla > /dev/null 2>&1:

$ ls -0 > /dev/null 2>&1
$ echo $?
1

Huomaa tällä kertaa, että virheilmoituksia ei näkynyt. Hajottaaksemme tämän, tukahdutamme komennon ls -0 virhetulosteen (stderr), ohjaamme sen uudelleen vakiotulosteeseen (stdout), kirjoitamme sen /dev/null:een ja siten hävitämme sen välittömästi. Symboli >& on operaattori, joka kopioi ensimmäisen tiedoston kuvaajan (2) ulostulon ja ohjaa sen toisen tiedoston kuvaajan (1) ulostuloon.

Katsotaan nyt, mitä numerot 2>&1 merkitsevät tarkastelemalla tätä taulukkoa File Descriptors.

Voidaan todentaa tämä antamalla ulostulo tavalliseen tiedostoon /dev/null:n sijaan.

$ ls -0 > /tmp/devnull 2>&1
$ echo $?
1$ cat /tmp/devnull
ls: illegal option -- 0
usage: ls

Vastaa

Sähköpostiosoitettasi ei julkaista.