a menudo tienen tareas de programación shell donde me encuentro con este patrón:¿La mejor manera de modificar un archivo cuando se usan tubos?
cat file | some_script > file
Esto no es seguro - gato puede no haber leído en todo el archivo antes de some_script empieza a escribir en él. Realmente no quiero escribir el resultado en un archivo temporal (es lento, y no quiero la complicación adicional de pensar un nuevo nombre único).
Tal vez, hay un comando de shell estándar que almacenará en búfer una secuencia completa hasta que se alcance EOF. Algo como:
cat file | bufferUntilEOF | script > file
Ideas?
Um, xargs debería hacer el truco, ¿verdad? –
No lo creo. Bueno, quizás sí, pero su documentación dice que el problema que resuelve es manejar casos donde se excede el límite del argumento del comando. No dice que almacena temporalmente todo stdin antes de abrir stdout. – user48956
Creo que hay opciones para xargs que se ocupan del tamaño del almacenamiento en búfer. –