Metaznaky shellu
Metaznaky shellu jsou specifické znaky, obecně symboly, které mají v rámci shellu zvláštní význam. Metaznaky podporované v bash jsou uvedeny následovně:
- | :Odešle výstup příkazu doleva jako vstup příkazu napravo od symbolu
- & :Spustí proces na pozadí, což vám umožní pokračovat v práci na příkazovém řádku
- ; :Umožňuje vypsat více příkazů na jednom řádku oddělených tímto znakem
- () :Seskupí příkazy a odešle jejich výstup na stejné místo
- < :Získá vstup pro příkaz nalevo ze souboru uvedeného napravo od tohoto symbolu
- > :Odešle výstup příkazu vlevo do souboru pojmenovaného vpravo od tohoto symbolu
- záložka mezerník
Metaznaky přesměrování
Přesměrování příkazů je povoleno následujícími metaznaky shellu:
- Přesměrování standardního vstupu (<)
- Přesměrování standardního výstupu (>)
- Přesměrování standardní chyby (2>)
- Svislý znak (|)
Deskriptory souborů
Každý proces pracuje s deskriptory souborů. Deskriptory souborů určují, odkud pochází vstup příkazu a kam jsou směrovány výstupy a chybové zprávy. Tabulka vysvětluje popisy souborů.
Číslo deskriptoru souboru | Zkratka deskriptoru souboru | Definice |
---|---|---|
0 | stdin | Standardní příkazový vstup |
1 | stdout | Standardní výstup příkazu |
2 | stderr | Standardní chyba příkazu |
Přesměrování příkazů
Ve výchozím nastavení shell přijímá nebo čte vstup ze standardního vstupu, klávesnice a zobrazuje výstup a chybové zprávy na standardní výstup, obrazovku. Přesměrování vstupu nutí příkaz číst vstup ze souboru namísto z klávesnice. Přesměrování výstupu odesílá výstup z příkazu do souboru namísto odesílání výstupu na obrazovku.
Přesměrování standardního vstupu
Menší než (< ) metaznak zpracovává soubor jako standardní vstup namísto čtení vstupu z klávesnice.
# command < filename
nebo
# command 0< filename
Například použijte soubor data.txt jako vstup pro příkaz mailx.
# mailx -s test [email protected] < data.txt
Přesměrování standardního výstupu
Větší než (> ) metaznak přesměruje standardní výstup do souboru namísto tisku výstupu na obrazovku.
# command > filename
nebo
# command 1> filename
Pokud soubor neexistuje, systém jej vytvoří. Když použijete jeden metaznak větší než (>), příkaz přepíše původní obsah souboru, pokud soubor již existuje. Když použijete dva znaky větší než (>>), příkaz připojí výstup k původnímu obsahu souboru.
$ command >> filename
Standardní chyba přesměrování
Příkaz používající číslo deskriptoru souboru (2) a znaménko větší než (>) přesměruje všechny standardní chybové zprávy do souboru /dev/null.
$ command 2> /dev/null
Následující příklad ukazuje standardní výstup a standardní chybu přesměrovanou do souboru data.txt.
$ ls /tmp 1> data.txt 2>&1Poznámka :Syntaxe 2>&1 instruuje shell k přesměrování stderr (2) do stejného souboru, který přijímá stdout (1).
Postava potrubí
Znak roury přesměruje standardní výstup z jednoho příkazu na standardní vstup jiného příkazu. První příkaz zapíše výstup na standardní výstup a druhý příkaz přečte standardní výstup z předchozího příkazu jako standardní vstup.
$ command | command
Například použijte standardní výstup z příkazu who jako standardní vstup pro příkaz wc -l.
$ who | wc -l 35
Chcete-li zobrazit seznam všech podadresářů umístěných v adresáři /etc, zadejte následující příkaz.
$ ls -F /etc | grep "/" X11/ acct/ apache/ apache2/
Použijte výstup příkazu head jako vstup pro příkaz 'xargs ls'.
head -10 data.txt | xargs ls