GNU/Linux >> Znalost Linux >  >> Linux

Jak poslat Stdout do více příkazů?

Existují některé příkazy, které filtrují nebo působí na vstup a pak jej předávají jako výstup, myslím, že obvykle do stdout – ale některé příkazy převezmou pouze stdin a dělají s tím, co dělají, a nevydávají nic.

Nejvíc znám OS X, a tak mě hned napadnou dva, pbcopy a pbpaste – což jsou prostředky pro přístup do systémové schránky.

Každopádně vím, že pokud chci vzít stdout a vyplivnout výstup, půjdu do obou stdout a soubor, pak mohu použít tee příkaz. A o xargs něco málo vím , ale nemyslím si, že to je to, co hledám.

Chci vědět, jak mohu rozdělit stdout pro přechod mezi dvěma (nebo více) příkazy. Například:

cat file.txt | stdout-split -c1 pbcopy -c2 grep -i errors

Pravděpodobně existuje lepší příklad než tento, ale opravdu mě zajímá, jak mohu odeslat stdout příkazu, který jej nepřenáší, a přitom zachovat stdout před „utlumením“ – neptám se na to, jak cat soubor a grep její část a zkopírujte ji do schránky – konkrétní příkazy nejsou tak důležité.

Také – neptám se, jak to poslat do souboru a stdout – může to být „duplicitní“ otázka (omlouvám se), ale trochu jsem hledal a našel jsem pouze podobné, které se ptají na to, jak rozdělit mezi stdout a soubor – a odpovědi na tyto otázky se zdály být tee , což si myslím, že pro mě nebude fungovat.

Nakonec se můžete zeptat:„Proč prostě neudělat pbcopy jako poslední věc v řetězci?“ a moje odpověď je 1) co když to chci používat a stále vidím výstup v konzole? 2) co když chci použít dva příkazy, které nemají výstup stdout poté, co zpracují vstup?

Jo a ještě jedna věc – uvědomil jsem si, že bych mohl použít tee a pojmenovaný kanál (mkfifo ), ale doufal jsem ve způsob, jak to lze provést inline, stručně, bez předchozího nastavení 🙂

Přijatá odpověď:

Můžete použít tee a zpracujte nahrazení tohoto:

cat file.txt | tee >(pbcopy) | grep errors

To odešle veškerý výstup cat file.txt na pbcopy a získáte pouze výsledek grep na vaší konzoli.

Související:Ubuntu – XFCE – Odeslat okno na jiný monitor při stisknutí klávesy?

Do tee můžete vložit více procesů část:

cat file.txt | tee >(pbcopy) >(do_stuff) >(do_more_stuff) | grep errors

Linux
  1. Jak spustím více příkazů na pozadí v bash na jednom řádku?

  2. Více standardních vstupů? Jak?

  3. Jak mohu provést více příkazů při použití funkce find?

  1. Jak používat příkazy historie Bash

  2. Odesílejte příkazy do více relací SSH pomocí Terminátora

  3. Jak přidat více hostitelů v phpMyAdmin

  1. Jak komprimovat více souborů v systému Linux

  2. Výuka Unix Sed:Jak provádět více příkazů Sed

  3. Jak časový limit skupiny příkazů v Bash