GNU/Linux >> Znalost Linux >  >> Linux

Vytvořit virtuální soubor, který je ve skutečnosti příkazem?

Existuje nějaký způsob, jak vytvořit virtuální soubor, takže čtení ze souboru skutečně čte z stdout příkazu; zápis do souboru je vlastně zápis do stdin příkazu?

Zatím jsem to zabalil pomocí inotifywait na soubor, který při úpravě souboru zavolá příkaz, převezme jeho vstup ze souboru a zapíše do něj zpět.

Nelíbí se mi, že inotifywait musí být neustále restartován (a musím zajistit, aby vždy běžel). Tento soubor používám snad jen dvakrát týdně.

Přijatá odpověď:

Možná hledáte pojmenované potrubí.

mkfifo f
{
  echo 'V cebqhpr bhgchg.'
  sleep 2
  echo 'Urer vf zber bhgchg.'
} >f
rot13 < f

Zápis do dýmky nespustí poslechový program. Pokud chcete zpracovávat vstup ve smyčce, musíte mít spuštěný poslechový program.

while true; do rot13 <f >decoded-output-$(date +%s.%N); done

Všimněte si, že všechna data zapsaná do kanálu jsou sloučena, i když se zapisuje více procesů. Pokud čte více procesů, data získává pouze jeden. Potrubí tedy nemusí být vhodné pro souběžné situace.

Pojmenovaný soket dokáže zpracovat souběžná připojení, ale to je mimo možnosti základních skriptů shellu.

Na nejsložitějším konci škály jsou vlastní souborové systémy, které vám umožňují navrhnout a připojit souborový systém, kde se každý open , write , atd., spouští funkci v programu. Minimální investice jsou desítky řádků netriviálního kódování, například v Pythonu. Pokud chcete při čtení souborů spouštět pouze příkazy, můžete použít scriptfs nebo fuseflt.


Linux
  1. 8 strašidelných příkazů, které pronásledují terminál

  2. Jeden příkaz pro vytvoření adresáře a souboru v něm linuxový příkaz

  3. Zřetězení souborů do virtuálního souboru v systému Linux

  1. 4 způsoby, jak vytvořit textový soubor v terminálu Linux

  2. Příkaz Linux ln

  3. Vytvářejte soubory pomocí příkazového řádku v Linuxu

  1. Jak si být jisti, že adresář nebo soubor je skutečně smazán?

  2. Použijte příkaz fallocate k vytvoření souborů specifické velikosti v Linuxu

  3. Jak vytvořit řídké soubory v Linuxu pomocí příkazu „dd“.