Přesměrování
From Wikipedia, the free encyclopedia
From Wikipedia, the free encyclopedia
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á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 < soubor1
provede příkaz1, standardní vstup je čten z existujícího souboru.
$ příkaz1 < vstupní soubor > vystupní soubor
kombinace dvou možností: příkaz1 čte ze vstupního souboru a ukládá do výstupního souboru.
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í. Unixové standardní I/O proudy jsou:
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. 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. 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
Seamless Wikipedia browsing. On steroids.
Every time you click a link to Wikipedia, Wiktionary or Wikiquote in your browser's search results, it will show the modern Wikiwand interface.
Wikiwand extension is a five stars, simple, with minimum permission required to keep your browsing private, safe and transparent.