Przyjrzyjrzyjmy się innemu przykładowi. Biorąc pod uwagę następujące dwa polecenia: pierwsze (ls) jest prawidłowym poleceniem, podczas gdy drugie (ls -0) jest nieprawidłowym poleceniem, ponieważ zawiera nielegalną opcję -0.
To jest prawidłowe polecenie:
$ ls
Applications Documents Library Music Public$ echo $?
0
Teraz spójrzmy na nieprawidłowe polecenie:
$ ls -0
ls: illegal option -- 0
usage: ls $ echo $?
1
Problem z drugim skryptem polega na tym, że wyświetla on wszelkie komunikaty o błędach w STDERR. Jednak w przypadku naszych skryptów, chcemy wyłączyć komunikaty o błędach. Na szczęście istnieje hack, który robi dokładnie to, co chcemy.
Spróbujmy tego ponownie z > /dev/null 2>&1:
$ ls -0 > /dev/null 2>&1
$ echo $?
1
Zauważmy tym razem, że nie zobaczyliśmy żadnych komunikatów o błędach. Aby to rozłożyć na czynniki pierwsze, tłumimy wyjście błędu (stderr) polecenia ls -0, przekierowujemy je na standardowe wyjście (stdout), zapisujemy je do /dev/null, a tym samym natychmiast je wyrzucamy. Symbol >& jest operatorem, który kopiuje wyjście pierwszego deskryptora pliku (2) i przekierowuje na wyjście drugiego deskryptora pliku (1).
Teraz zobaczmy, co reprezentują liczby w 2>&1, patrząc na ten wykres deskryptorów plików.

  
Możemy to zweryfikować, zapisując dane wyjściowe do zwykłego pliku zamiast /dev/null.
$ ls -0 > /tmp/devnull 2>&1
$ echo $?
1$ cat /tmp/devnull
ls: illegal option -- 0
usage: ls
.