GNU/Linux >> Znalost Linux >  >> Linux

předat stdout jako název souboru pro příkazový řádek util?

Řešení 1:Použití substituce procesu

Nejpohodlnějším způsobem, jak toho dosáhnout, je použití substituce procesu. V bash vypadá syntaxe takto:

foo -o >(other_command)

(Všimněte si, že se jedná o bashismus. Podobná řešení existují i ​​pro jiné shelly, ale sečteno a podtrženo je, že to není přenosné.)

Řešení 2:Explicitní použití pojmenovaných kanálů

Výše uvedené můžete provést explicitně / ručně takto:

  1. Vytvořte pojmenovaný kanál pomocí mkfifo příkaz.

    mkfifo my_buf
    
  2. Spusťte další příkaz s tímto souborem jako vstup

    other_command < my_buf
    
  3. Spusťte foo a nechte jej zapsat jeho výstup do my_buf

    foo -o my_buf
    

Řešení 3:Použití /dev/stdout

Můžete také použít soubor zařízení /dev/stdout takto

foo -o /dev/stdout | other_command

Můžete použít kouzlo UNIXu a vytvořit pojmenované potrubí :)

  1. Vytvořte potrubí

    $ mknod -p mypipe
    
  2. Spusťte proces, který čte z kanálu

    $ second-process < mypipe
    
  3. Spusťte proces, který zapisuje do roury

    $ foo -o mypipe
    

Aby byl stackoverflow šťastný, dovolte mi napsat dostatečně dlouhou větu, protože mé navrhované řešení má pouze 18 znaků místo požadovaných 30+

foo -o /dev/stdout

Pojmenované kanály fungují dobře, ale máte k dispozici hezčí a přímější syntaxi prostřednictvím substituce procesu bash, která má další výhodu v tom, že nepoužíváte trvale pojmenované kanály, které je třeba později odstranit (náhrada procesu používá dočasné pojmenované kanály za scénou):

foo -o >(other command)

Také, pokud chcete výstup převést do svého příkazu a také uložit výstup do souboru, můžete provést toto:

foo -o >(tee output.txt) | other command


Linux
  1. 8 tipů pro příkazový řádek Linuxu

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

  3. Titan – Správce hesel příkazového řádku pro Linux

  1. ppl – Adresář příkazového řádku pro Linux

  2. Zahodit Stdout Of A Command na T sekund?

  3. K čemu je Linux test – příkazový test?

  1. spuštění příkazu proti každému řádku v textovém souboru

  2. Jak rozdělit soubor jako Split to Stdout pro připojení k příkazu?

  3. Jak předat obsah souboru jako parametr příkazového řádku?