Ich kann eine leere Datei erstellen:
touch /var/tmp/nullbytes
aber wie kann ich mit bash eine 1MB-Datei erstellen, die nur Nullbytes in der Kommandozeile enthält?
Ich kann eine leere Datei erstellen:
touch /var/tmp/nullbytes
aber wie kann ich mit bash eine 1MB-Datei erstellen, die nur Nullbytes in der Kommandozeile enthält?
Antworten:
Mit GNU truncate
:
truncate -s 1M nullbytes
(vorausgesetzt, nullbytes
es existierte vorher nicht) würde eine 1-Mebibyte-Sparse-Datei erstellen. Dies ist eine Datei, die mit Nullen gefüllt erscheint, aber keinen Platz auf der Festplatte beansprucht.
Ohne truncate
können Sie dd
stattdessen verwenden:
dd bs=1048576 seek=1 of=nullbytes count=0
(Bei einigen dd
Implementierungen können Sie 1048576 durch ersetzen. 1M
)
Wenn Sie möchten, dass der Speicherplatz auf Linux und einigen Dateisystemen zugewiesen wird, können Sie Folgendes tun:
fallocate -l 1M nullbytes
Dadurch wird der Speicherplatz zugewiesen, ohne dass tatsächlich Daten auf die Festplatte geschrieben werden (der Speicherplatz ist reserviert, aber als nicht initialisiert markiert).
dd < /dev/zero bs=1048576 count=1 > nullbytes
Schreibt die Nullen tatsächlich auf die Festplatte. Das ist am wenigsten effizient, aber wenn Sie beim Zugriff auf diese Datei eine Drehung Ihrer Laufwerke benötigen, ist dies diejenige, für die Sie sich entscheiden möchten.
Oder @ mikeservs Art, dd
die NUL-Bytes zu erzeugen:
dd bs=1048576 count=1 conv=sync,noerror 0> /dev/null > nullbytes
Eine Alternative mit GNU head
, bei der keine Blockgröße angegeben werden muss (1 MB ist in Ordnung, 10 GB beispielsweise nicht):
head -c 1M < /dev/zero > nullbytes
Oder um einen Fortschrittsbalken zu erhalten:
pv -Ss 1M < /dev/zero > nullbytes
truncate
um eine leere Datei zu erstellen, die als Swap-Volume verwendet werden soll. Dies funktioniert nicht. Verwenden Sie dd
in diesem Fall stattdessen.
dd
kann spärliche Dateien erstellen, wie ich auch gezeigt habe.
bs=1kx1k
. Oder <&1 dd bs=1kx1k conv=sync,noerror count="$rpt" | cat >file
für das wörtliche Schreiben auf die Festplatte. Nicht 100% davon, wie viel Effizienz beim Erzwingen des Lesefehlers verloren gehen könnte.