GNU/Linux >> Znalost Linux >  >> Linux

Pipes a přesměrování v Linuxu – vysvětleno!

Č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!


Linux
  1. Io Redirection and the Head Command?

  2. Linuxový příkaz grep

  3. V příkladech příkazů v Linuxu

  1. Práce s Input Output a přesměrováním chyb v Linuxu

  2. Příkaz wc pro Linux vysvětlený pro začátečníky (6 příkladů)

  3. Příkaz wc pro Linux

  1. Úvod do rour a pojmenovaných rour v Linuxu

  2. Linux Tail Command

  3. Linux Touch Command