navratove kody

Alexandr Malusek malusek na hroch.ujf.cas.cz
Čtvrtek Březen 19 13:03:48 CET 1998


mkop5230 na ss1000.ms.mff.cuni.cz (Milan Kopacka) writes:

>>>>  2) Pokud napisu prirazeni Z=`neco`, tak jak udelat aby v Z, bylo to co se
>>>> posila na standartni chybovy vystup.
>>> 
>>>    Z=`neco 2>&1 >/dev/null`
>>No to snad ne...
> 
> Ale ano :)
> 
> 2>&1 znamena - presmeruj 2 tam, co ted ukazuje 1 , neznamena to
> presmeruj 2 tam co kdy bude ukazovat 1..

Nekdo proste neuveri, dokud se sam nepresvedci. Snadno se to da
overit takto:

$ cat s1
#!/bin/sh
echo stdout                # Vystup do stdout (file descriptor 1)
echo stderr 1>&2           # Vystup do stderr (file descriptor 2)

$ s1                       # stdout i stderr presmerovany na tty
stdout
stderr

$ s1 2>/dev/null           # stderr presmerovan do /dev/null
stdout

$ s1 1>/dev/null           # stdout presmerovan do /dev/null
stderr                     # 1>/dev/null je ekvivalentni >/dev/null

$ Z=`s1 2>&1 >/dev/null`   # stderr do promenne, stdout do /dev/null
$ echo $Z
stderr

Doporucuji kazdemu, aby si s tim pohral. Zajimave je napr. prohozeni
stdout a stderr:

$ s1 10>&1 1>&2 2>&10
stdout
stderr
$ (s1 10>&1 1>&2 2>&10) 2>/dev/null
stderr
$ (s1 10>&1 1>&2 2>&10) 1>/dev/null
stdout

Snad to snizi pocty tech, kteri se tomu divi. ;-)

--
A. Malusek  (malusek na ujf.cas.cz)
UJF AV CR


Další informace o konferenci Linux