Čas na nějaké základy Linuxu. Protože nejdůležitější v každém oboru je:Mějte své základy v pořádku! Pojďme si tedy promluvit o Pipes and Redirection in Linux .
Co jsou kanály a přesměrování v Linuxu?
Přesměrování
Každý jednotlivý proces v Linuxu má k dispozici alespoň 3 komunikační kanály:
- Standardní vstup – STDIN
- Standardní výstup – STDOUT
- Standardní chyba – STDERR
Samotné jádro nastavuje tyto kanály jménem procesu. Samotný proces nemusí nutně vědět, kam vedou. Většina příkazů systému Linux přijímá vstup z STDIN a zapište výstup do STDOUT . Chybové zprávy se zapisují do STDERR . To vám umožňuje spojovat příkazy dohromady a vytvářet potrubí.
Shell používá symboly < , a > jako instrukce pro přesměrování instrukcí vstupu nebo výstupu příkazu do nebo ze souboru. < symbol spojuje STDIN příkazu k obsahu existujícího souboru. a >> přesměrování symbolů STDOUT . nahradí stávající obsah souboru a >> k nim připojené symboly.
Podívejme se na několik příkladů.
Následující příkaz uloží text, který zadáte, mezi „ “ v souboru. Pokud soubor neexistuje, bude vytvořen.
echo "Test Message" > testmessage
Další příkaz odešle e-mail s obsahem tohoto souboru, tedy pouze text, nikoli soubor samotný, uživateli Peter.
mail -s "testmsg" peter < testmessage
Příklad s příkazem find
Pokud použijeme příkaz find, získáme pěknou ukázku toho, proč byste chtěli pracovat se STDOUT a STDERR samostatně. Pokud spustíme následující příkaz:
find / -name core
Obvykle dostáváme mnoho chybových zpráv Odepřeno oprávnění. Chcete-li zahodit všechny tyto chybové zprávy, můžete místo toho spustit následující příkaz:
find / -name core 2> /dev/null
Což nám dává mnohem čistší výsledek.
Potrubí
Pokud chceme propojit určité příkazy, konkrétněji STDOUT jednoho příkazu a STDIN druhého, můžeme použít symbol Pipe | udělat to. Udělejme příklad:
ls | head -4
To udělá to, že propojí příkaz ls s příkazem head prostřednictvím potrubí | . To znamená, že spouští ls příkaz s hlavou -4 rozšíření, přičemž jsou uvedeny pouze první 4 soubory této složky. Můžete také pokračovat a zadat další příkaz na konci tohoto.
Pokud chcete, aby se druhý příkaz provedl pouze tehdy, když byl první úspěšný, můžete použít && symboly pro to. Například:
lpr /tmp/test && rm /tmp/test
Testovací soubor by se odstranil pouze v případě, že by byl nejprve úspěšně zařazen do fronty k tisku.
Na druhé straně || příkaz by provedl druhý příkaz pouze v případě, že by první příkaz selhal.
Závěr
Pokud s Linuxem pracujete pravidelně, je velmi důležité vědět, co Pipes and Redirection v Linuxu dělá. Hodně je využijete, pokud potřebujete pracovat na Příkazovém řádku. V budoucnu udělám více těch kratších Základů Linuxu. Nechci, aby byly tyto články příliš dlouhé, abyste mohli snáze vstřebat informace. Podívejte se také na některé další Linux &Open Source Tutoriály!