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