[BASH] Vitruální soubory

Tuesday 18.3.2014 10:43:12, Jakuje

Kategorie: Programování | Linux

Již několikrát jsem se zamýšlel nad problémem testování, nebo prací v terminálu s aplikaci, která vyžaduje vstup jako jméno souboru a já bych chtěl soubor předzpracovat jiným programem, nebo vložit jednoduchý text bez toho abych musel vytvářet opravdový soubor.

Řešením jsou virtuální soubory typu FIFO. Zápis je jednoduchý a tedy <(cmd) pro vstup a odbobně >(cmd) pro výstup. Jediný rozdíl oproti obyčejným souborům je, že program se nemůže v souboru pohybovat (seek).

V praxi je použití jednoduché. Poprvé jsem tuto vlastnost BASHe použil ve své bakalářské práci pro porovnávání souborů, které měly jednotlivé atributy různě seřazené a jediným řádkem jsem schopen tyto dva soubory (původně binární, převedené na XML) porovnat.

Zdrojový kód:
$ vimdiff <(gws2xml cart.gws.webos | sort) <(gws2xml cart.gws.emu | sort)

Podobně dnes potřebuji testovat program a nechce se mi vytvářet dočasné soubory. Proto mohu jako vstup našeho překladače v Haskellu vložit řetězec jako vstupní soubor. Tedy asi takto:

 

Zdrojový kód:
$ ./Main <(echo "print(1+1);")

Diskuse:

:
:
:

 
    

Podbarvená pole označená hvězdičkou jsou povinná!