Oproblemaéquevocênãopodegarantirqueéexecutadoprimeiro.Portanto,vocêprecisaatrasaradesvinculaçãoeagravaçãonoarquivoatétercertezaabsolutadequeoarquivoestáabertoparaleitura.
IssoarmazenaráoarquivonaRAMantesdeescrevê-lo.
catfoo|perl-e'undef$/;@out=<>;openWRT,">",shift; print WRT @out' foo
Vantagem: Mantém as permissões do foo. Se interrompido, você não perdeu o foo original.
Desvantagem: foo deve caber na RAM.
Isso abrirá o arquivo para leitura, removê-lo e cat
dele. É paralelamente esperar que o arquivo desapareça, e quando ele sumir cat
.
(rm foo; cat) < foo | (perl -e 'while(-e "foo"){}'; cat >foo)
Vantagem: curta. Funciona em arquivos maiores que a RAM.
Desvantagem: foo desaparece assim que você começa.
(mv foo bar; cat) < foo | (perl -e 'while(-e "foo"){}'; cat >foo && rm bar)
Vantagem: funciona em arquivos maiores que a RAM. Se falhar, foo é mantido como backup na barra.