Je sais comment créer un fichier vide:
touch /var/tmp/nullbytes
mais comment puis-je créer un fichier de 1 Mo qui ne contient que des octets null sur la ligne de commande avec bash?
command-line
files
rubo77
la source
la source
Réponses:
Avec GNU
truncate
:(en supposant qu'il
nullbytes
n'existait pas auparavant) créerait un fichier fragmenté de 1 mégaoctet. C'est un fichier qui semble rempli de zéros mais qui ne prend pas de place sur le disque.Sans
truncate
, vous pouvez utiliser à ladd
place:(avec certaines
dd
implémentations, vous pouvez remplacer 1048576 par1M
)Si vous préférez que l'espace disque soit alloué , sous Linux et certains systèmes de fichiers, vous pouvez faire:
Cela alloue l'espace sans réellement écrire de données sur le disque (l'espace est réservé mais marqué comme non initialisé).
Écrira en fait les zéros sur le disque. C'est le moins efficace, mais si vous avez besoin que vos disques tournent pour accéder à ce fichier, c'est celui que vous voudrez.
Ou la manière de @ mikeserv de tromper
dd
pour générer les octets NUL:Une alternative avec GNU
head
qui n'implique pas d'avoir à spécifier une taille de bloc (1M est OK, mais 10G par exemple ne le ferait pas):Ou pour obtenir une barre de progression:
la source
truncate
pour créer un fichier vide à utiliser comme volume d'échange… cela ne fonctionnera pas! Utilisezdd
dans ce cas à la place.dd
peut également créer des fichiers clairsemés comme je l'ai montré.bs=1kx1k
. Ou<&1 dd bs=1kx1k conv=sync,noerror count="$rpt" | cat >file
pour l'écriture littérale sur le disque. Pas 100% sur la perte d'efficacité en forçant l'erreur de lecture.la source