Est-ce que quelqu'un connaît une alternative pour 'dd', qui ne tronquera pas le fichier, sans utiliser :conv=notrunc
. Ajout de conv=notrunc
n'est pas pris en charge via busybox/toybox en raison d'un espace limité.
Par exemple, je voudrais l'équivalent de
dd bs=4 count=3 skip=2 seek=3 if=file.in of=file.out conv=notrunc
Mais cela fonctionnerait où dd
ne prend pas en charge conv=notrunc
.
Réponse acceptée :
Utilisez le <>
standard sh
opérateur de redirection qui ouvre le fichier en mode lecture+écriture sans troncature .
cat < file.in 1<> file.out
Pour copier le contenu de file.in
au début de file.out
.
Si vous devez rechercher dans le fichier d'entrée ou de sortie, et en supposant que votre dd
prend toujours en charge ces directives :
dd bs=4 count=3 skip=2 seek=3 < file.in 1<> file.out
Si vous n'avez pas dd
du tout, vous pouvez essayer head -c
, en supposant que votre version s'occupe de laisser le pointeur dans le fichier au bon endroit à la sortie (ce que les anciennes versions IIRC de busybox ne faisaient pas).
Par exemple, l'équivalent de ce qui précède serait :
{
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