Terminal Friday: Standard Stream

Vítejte na další pátek ...

Je čas poznat malou část terminálu. Po dlouhém přemýšlení jsem se rozhodl vytvořit příspěvek o standardní proudy; Ačkoli to bude povrchní, myslím, že je to něco, co by měl každý vědět.

Standardní stream

Standardní stream Skládá se z několika komunikačních kanálů mezi uživatelem a terminálem. Tyto vstupní / výstupní „kanály“ zobrazují nebo zachycují informace při provádění příkazu.

Rychlý diagram standardních streamů.

Rychlý diagram standardních streamů.

3 I / O připojení jsou: stdin Standardní vstup, stdout Standardní výstup, stderr Standardní chyba.

stdin: Standardní vstup

Standardní vstup je způsob, jakým zachycujeme informace z příkazu, a to buď pomocí potrubí, přesměrování, klávesnice atd. Identifikujeme jej deskriptorem souboru 0.

Deskriptor je indikátor pro přístup - v tomto případě - ke vstupním a výstupním kanálům. Jedná se o int hodnoty, obvykle 0, 1 a 2.

Příkladem stdin by bylo:

třídit <výpis

Vezme všechny informace, které jsou v seznamu - v tomto případě náhodně zapsaná čísla - a při přesměrování souboru na příkaz ls seřadí číselný seznam podle abecedy. V tomto příkladu jsou příznaky implicitní.

stdout: Standardní výstup

Standardní výstup, jak jeho název napovídá, zobrazuje výstup příkazu přes konzolu. Pokud napíšeme všechny informace, které nám zobrazují na obrazovce, jsou standardním výstupem. Je reprezentován deskriptorem 1.

Nyní se pokusím vytvořit instanci stdin a stdout pomocí skriptu napsaného v bash, jednoduše proto, že miluji bash hahaha. 🙂

test.sh

#! / bin / bash if [-t 0]; potom zopakujte „Používáte standardní výstup“ elif [-t 1]; pak echo "Používáte stdin" else echo "Brutální chyba" fi

Nyní snímek obrazovky, který ukazuje, jak používat skript. Při přesměrování nebo použití kanálu se skriptem použijte test -t vědět, jestli je spuštěn pouze standardní výstup, a pokud ne, je to zjevně standardní.

bash test.sh ls | bash test.sh bash test.sh </ etc / passwd
Dotyčný skript a jeho výstupy ...

Dotyčný skript a jeho výstupy ...

Nezapomeňte upravit příkaz a cvičit, abyste se naučili.

stderr: Standardní chyba

Standardní chyba je způsob, jakým programy zobrazují chyby nebo diagnostiku. Představuje jej deskriptor 2.

Abychom pochopili koncept, je to situace: když chceme uložit chybu z příkazu, první věc, o které přemýšlíme, je přesměrování výstupu na prostý text.

ls> info.txt

To by fungovalo, informace o příkazu budou uloženy v souboru prostého textu. Při ukládání však chybu neukládá, ale zobrazuje ji na obrazovce a prostý textový soubor je prázdný.

Místo toho použijeme 2> k označení uložení stderr v souboru:

je foo 2> info.txt

Nyní uloží informace o chybě do textového souboru.

Většina Skořápka povolit stderr a stdout, aby byly uloženy v jediném příkazovém příkazu s &>, kde Foo je neexistující adresář

ls Ke stažení Foo &> info.txt

Tento soubor bude obsahovat informace o chybě při spuštění ls na Foo a zobrazí seznam adresářů v části Stahování.

A konečně, co je to slavné 2> & 1?

Jednoduché, přesměrujte stderr na standardní výstup. To & ve středu> a 1 znamená, že bude přesměrováno na stdout. Pokud by tam nebyl, bylo by to něco jako ... "přesměrovat chybu do souboru 1".

A s tím je možné přesměrovat:

  • standardní výstup do souboru
  • stderr do souboru
  • stdout to stderr
  • stderr na stdout
  • stderr a stdout do souboru
  • mimo jiné

To je pro dnešní lidi vše. Četli jsme a děkujeme, že jste se zastavili. 😀


Zanechte svůj komentář

Vaše e-mailová adresa nebude zveřejněna. Povinné položky jsou označeny *

*

*

  1. Odpovědný za údaje: Miguel Ángel Gatón
  2. Účel údajů: Ovládací SPAM, správa komentářů.
  3. Legitimace: Váš souhlas
  4. Sdělování údajů: Údaje nebudou sděleny třetím osobám, s výjimkou zákonných povinností.
  5. Úložiště dat: Databáze hostovaná společností Occentus Networks (EU)
  6. Práva: Vaše údaje můžete kdykoli omezit, obnovit a odstranit.

  1.   eliotime3000 řekl

    Zajímavý. Díky vašim tutoriálům se mi Bash líbí mnohem víc.

  2.   Quincy magoo řekl

    Vážení, zajímavé, ale v následujícím řádku máte chybu:

    "A při přesměrování souboru na příkaz ls" by to mělo být "a při přesměrování souboru na příkaz řazení".

    Pozdrav.

  3.   Miguel řekl

    Na začátku textu je chyba, když označíte příkaz „ls“, měl by to být „sort“:
    "Vezměte všechny informace, které jsou v seznamu - v tomto případě náhodně zapsaná čísla - a přesměrujte soubor na příkaz ls (zde by se to dalo třídit)"

    Zdravím a děkuji za sdílení vaší práce

  4.   cestář řekl

    To je skvělé pro cron, kde chcete vyprázdnit výstup (/ dev / null), ale chyby uložit do souborů. Také, když to udělám, obvykle používám příkaz date k určení, kdy přesně selhaly.

    Bash (sh) má tyto nástroje tak vyvinuté unixovou filozofií „dělat jednu věc a dělat to dobře“

  5.   Lolo řekl

    No nic jsem nezjistil

    1.    Hlas řekl

      Haha, to je docela dobře vysvětleno, čemu jsi nerozuměl?