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?
command-line
files
rubo77
quelle
quelle
Antworten:
Mit GNU
truncate
:(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 Siedd
stattdessen verwenden:(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:
Dadurch wird der Speicherplatz zugewiesen, ohne dass tatsächlich Daten auf die Festplatte geschrieben werden (der Speicherplatz ist reserviert, aber als nicht initialisiert markiert).
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:Eine Alternative mit GNU
head
, bei der keine Blockgröße angegeben werden muss (1 MB ist in Ordnung, 10 GB beispielsweise nicht):Oder um einen Fortschrittsbalken zu erhalten:
quelle
truncate
um eine leere Datei zu erstellen, die als Swap-Volume verwendet werden soll. Dies funktioniert nicht. Verwenden Siedd
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.quelle