GNU/Linux >> Znalost Linux >  >> Linux

Co znamená propojení Stdout a Stdin?

Čtu knihu, je tam napsáno:

Každý proces má k dispozici alespoň tři komunikační kanály:„standardní
vstup“ (STDIN), „standardní výstup“ (STDOUT) a „standardní chyba“ (STDERR).

Většina příkazů přijímá svůj vstup ze STDIN a zapisuje svůj výstup do STDOUT.
Zapisují chybové zprávy do STDERR. Tato konvence vám umožňuje spojovat
příkazy dohromady jako stavební bloky pro vytváření složených kanálů.

Shell interpretuje symboly < , > a >> jako instrukce pro přesměrování vstupu nebo výstupu příkazu do nebo ze souboru.

Chcete-li připojit STDOUT jednoho příkazu k STDIN jiného, ​​použijte |
symbol, běžně známý jako dýmka.

ps -ef | grep httpd

V zásadě se tedy říká, že standardní vstup je příkaz, který umožňuje uživateli zapisovat do souboru, zatímco standardní výstup je příkaz, který má výstup pro zápis bash shellu do shellu, a standardní chyba je stejně jako výstup, ale je pouze vyvolán, když dojde k chybě v systému souborů. Pak se dostaneme k části propojení STDOUT a STDIN a já jsem ztracen.

Přijatá odpověď:

Standardní vstup a standardní výstup nejsou příkazy.

Představte si příkazy jako stroje v továrně s montážní linkou. Většina strojů je navržena tak, aby měla jeden dopravníkový pás pro přívod dat a jeden dopravníkový pás pro odvádění dat; jedná se o standardní vstup a standardní výstup. Standardní chybou je otvor na boku stroje, kam může vyhazovat zmetky.

+-------+     +------------------+       +------------------+     +------+
| input |     |    machine A     |       |    machine B     |     |output|
| reser ­­­|=====|<stdin     stdout>|=======|<stdin     stdout>|=====|bucket|
| ‑voir |  →  |      stderr      |   →   |      stderr      |  →  |      |
+-------+     +------------------+       +------------------+     +------+
                      ||                          ||

Výše uvedené schéma ukazuje dopravníkový pás, který prochází dvěma stroji. Data pocházejí ze vstupního zásobníku vlevo, jsou přiváděna do stroje A, poté je výstup dopravován dále do stroje B (pro nějž je vstupem) a výstup stroje B je ukládán do výstupní nádoby vpravo.

V unixových termínech se tomu říká potrubí. Metafora je to instalatérství:potrubí spojuje stroj A se strojem B. Syntaxe shellu pro potrubí výše je

<input-file.txt commandA | commandB >output-file.txt

< symbol přesměrování říká shellu, aby se připojil commandA standardní vstup do souboru input-file.txt před spuštěním commandA . (Přesměrování můžete umístit před nebo za název příkazu.) > symbol přesměrování říká shellu, aby se připojil commandB standardní výstup do output-file.txt . Trubka („| “) symbol uprostřed říká shellu, aby připojil commandA standardní výstup do commandB standardní vstup před jejich spuštěním.

Související:Připojení 2 GND s relativním rozdílem napětí?

Příkazy mohou mít více než jeden vstup a více než jeden výstup, ale to je materiál na jiný den.


Linux
  1. Nakonfigurovat Shell pro tisk Stderr a Stdout v různých barvách?

  2. Způsob, jak přesměrovat výstup programu, a přesto jej přejít na Stdout?

  3. Přesměrování a výstup potrubí?

  1. Iptables a transparentní proxy?

  2. Co jsou U_str, Recv-q a Send-q ve výstupu Ss?

  3. Proč Deis a co to je?

  1. Jak přesměrovat výstup do souboru a stdout

  2. Je možné, aby výstup stdout a stderr měl různé barvy v XTerm nebo Konsole?

  3. Jaký je rozdíl v přesměrování výstupu pomocí >, &>, >&a 2&>?