Přesměrování

Technology
12 hours ago
8
4
2
Avatar
Author
Albert Flores

The standard streams for input, output, and error Přesměrování je v informatice funkce společná většině interpretů pro příkazový řádek. Využívá se zejména v unixových shellech, kde je přesměrování standardních proudů běžně využíváno. Přesměrování je možné použít též v interpretu příkazového řádku pro DOS (COMMAND.COM) a Windows NT (cmd.exe), i když v nich přesměrování nefunguje univerzálně a ve všech případech.

V unixových systémech provádí programátor přesměrování pomocí systémové volání dup2 nebo vyšších funkcí ze standardní knihovny jazyka C (funkce popen(3) a freopen(3) pro práci se standardními proudy).

Přesměrovávání standardního vstupu a standardního výstupu

Přesměrování je obvykle realizováno umístěním určitého znaku před příkazy. Typická syntaxe těchto znaků je:

$ příkaz1 > soubor1

provede příkaz1 a umístí výstup do soubor1. Výstupní data nahradí existující data v soubor1.

Pro přidání výstupu na konec souboru použijte >> operátor:

$ příkaz1 >> soubor1

$ příkaz1

provede příkaz1, standardní vstup je čten z existujícího souboru.

$ příkaz1 vystupní soubor

kombinace dvou možností: příkaz1 čte ze vstupního souboru a ukládá do výstupního souboru.

Přesměrování z a do standardního souboru pomocí deskriptorů

V Unixových shellech (většinou v Bourne shellech), mohou být první dvě akce také modifikovány umístěním čísla (file descriptor) přímo před znak. To určí, který proud je použitý pro přesměrování. +more Unixové standardní I/O proudy jsou:.

DeskriptorNázevPopis
0stdinStandardní vstup
1stdoutStandardní výstup
2stderrStandardní chyba

Například:

$ příkaz1 2> soubor1

provede příkaz1 a přesměruje stderr proud do souboru1.

V shellech odvozených od csh (the C shell) lze použít & znak místo přesměrovacích znaků s podobným výsledkem.

Další možnost aplikace je přesměrování jednoho standardního souboru do druhého. Nejznámější varianta je vložení stderr do stdout. +more Chybové zprávy tak mohou být zpracovány společně se standardním výstupem (nebo namísto výstupu). Například:.

$ find / -name .profile > výsledek 2>&1

se pokusí najít všechny soubory nazvané . profile. +more Toto se provede bez přesměrování a uloží výstup do stdout a chybu do stderr. Jestliže je stdout nasměrován do souboru “výsledek”, objeví se chybová zpráva na konzoli. Jestliže chceme mít výstup i chybovou zprávu v souboru “výsledek”, sloučíme stderr (deskriptor 2) s stdout (deskriptor 1) použitím 2>&1.

Jestliže je vložený výstup připojen (rourován) do jiného programu, musí sekvenci 2>&1 předcházet symbol roury. Takto:

$ find / -name .profile 2>&1 | less

Zjednodušená forma příkazu:

$ příkaz > soubor 2>&1

je (není k dispozici v Bourne Shell před verzí 4):

$ příkaz &>soubor

nebo:

$ příkaz >&soubor

Externí odkazy

[url=http://www. linfo. +moreorg/redirection. html]Redirection Definition[/url] by The Linux Information Project (LINFO) * [url=http://tldp. org/LDP/abs/html/io-redirection. html]I/O Redirection[/url] in [url=http://tldp. org/]The Linux Documentation Project[/url] * [url=http://technet. microsoft. com/en-us/library/bb490982(en-us). aspx]Redirection in Windows[/url] * [url=http://msdn. microsoft. com/en-us/library/ms682499(VS. 85). aspx]Creating a Child Process with Redirected Input and Output[/url] in Windows.

Kategorie:DOS Kategorie:Skriptovací jazyky Kategorie:Software pro Unix Kategorie:Unix

5 min read
Share this post:
Like it 8

Leave a Comment

Please, enter your name.
Please, provide a valid email address.
Please, enter your comment.
Enjoy this post? Join Cesko.wiki
Don’t forget to share it
Top