¿Alguien sabe una alternativa para 'dd', que no truncará el archivo, sin usar:conv=notrunc
. Agregando conv=notrunc
no se admite a través de busybox/toybox debido a la cantidad limitada de espacio.
Por ejemplo, me gustaría el equivalente de
dd bs=4 count=3 skip=2 seek=3 if=file.in of=file.out conv=notrunc
Pero eso funcionaría donde dd
no es compatible con conv=notrunc
.
Respuesta aceptada:
Utilice el <>
estándar sh
operador de redirección que abre el archivo en modo lectura+escritura sin truncamiento .
cat < file.in 1<> file.out
Para copiar el contenido de file.in
al comienzo de file.out
.
Si necesita buscar en el archivo de entrada o salida, y asumiendo su dd
sigue siendo compatible con estas directivas:
dd bs=4 count=3 skip=2 seek=3 < file.in 1<> file.out
Si no tiene dd
en absoluto, puedes probar head -c
, suponiendo que su versión se encargue de dejar el puntero en el archivo en el lugar correcto al salir (lo que no hacían las versiones anteriores de busybox del IIRC).
Por ejemplo, el equivalente de lo anterior sería:
{
head -c 8 > /dev/null # seek input fd to offset 8
head -c 12 <&1 > /dev/null # seek output fd to offset 12
head -c 12 # copy 12 bytes
} < file.in 1<> file.out