bufrovani v roure

Martin Cizek cizek na cmc.hopto.org
Neděle Červen 16 14:41:22 CEST 2002


No pokud nebude trvat na tom, ze ten buffer musi byt v roure,
kde by IMHO buffery jako takove byt nemely, pripada
mi jako elegantni reseni toto:

#!/bin/sh
[ -f "$1" -a -r "$1" ] || exit 1
echo -n "`cat "$1"`" | { tr ...  | /vse,co chcete mit v roure/ > "$1"; } # strednik nutny

Bufferovani udela shell a udela jej se vstupnim souborem jeste nez
se zacne cpat do roury. (pozor na uvozovky). Slozene zavorky jsou
nezbytne, nebot zajisti, ze prirazeni file decriptoru pro STDOUT
(ktere tez znamena smazani obsahu!) na konci roury probehne az pote,
co se nabufferuje vstupni soubor.
A jeste neco k predchozim navrhum:
1. cat soubor.txt | tr 'A' 'B' | program > soubor.txt
Takto dostane cat jiz prazdny soubor, at jiz je program cokoliv, treba
zminovany tac | tac (shell soubor.txt otevre pro zapis driv nez cat pro cteni).
 neja.
3. cat < soubor.txt | tr 'A' 'B' | dobry_buffer > soubor.txt
Cistsi by bylo, aby dobry_buffer dostal soubor jako parametr a otevrel
jej az po EOFu na STDIN. Tim by se zamezilo soucasnemu otevreni
obou souboru.
S pozdravem Martin Cizek

Dne 14.06.2002 v 17:23 Petr Stehlik napsal:
> Zdar,
> 
> kdysi jsem nekde na rootu nebo jinde videl program, ktery umoznoval
> bezstarostne presmerovani do stejneho souboru, ze ktereho data do roury
> vstupovaly - neco takoveho:
> 
> cat soubor.txt | tr 'A' 'B' | neznamy_program > soubor.txt



Další informace o konferenci Linux