Lad os se på et andet eksempel. Givet følgende to kommandoer: Den første (ls
) er en gyldig kommando, mens den anden (ls -0
) er en ugyldig kommando, fordi den indeholder en ulovlig indstilling -0
.
Dette er en gyldig kommando:
$ ls
Applications Documents Library Music Public$ echo $?
0
Nu skal vi se på den ugyldige kommando:
$ ls -0
ls: illegal option -- 0
usage: ls $ echo $?
1
Problemet med det andet script er, at det viser eventuelle fejlmeddelelser i STDERR
. Men for vores scripts ønsker vi at undertrykke fejlmeddelelser. Heldigvis findes der et hack til at gøre præcis det, vi ønsker.
Lad os prøve det igen med > /dev/null 2>&1
:
$ ls -0 > /dev/null 2>&1
$ echo $?
1
Bemærk denne gang, at vi ikke fik vist nogen fejlmeddelelser. For at bryde dette ned, undertrykker vi fejloutputtet (stderr
) fra ls -0
-kommandoen, omdirigerer det til standardudgangen (stdout
), skriver det til /dev/null
og kasserer det derved straks. Symbolet >&
er en operatør, der kopierer output fra den første fildeskriptor (2) og omdirigerer til output fra den anden fildeskriptor (1).
Nu skal vi se, hvad tallene i 2>&1
repræsenterer ved at se på dette skema over fildeskriptorer.
Vi kan verificere dette ved at udstede til en almindelig fil i stedet for /dev/null
.
$ ls -0 > /tmp/devnull 2>&1
$ echo $?
1$ cat /tmp/devnull
ls: illegal option -- 0
usage: ls