2016-07-29 8 views
-1

Ich möchte eine 100 Byte Datei von Nullen erstellen. habe ich das Skript:erstellt eine Datei mit 100 Bytes, die Nullen enthält, aber ich kann Nullen nicht sehen

dd if=/dev/zero of=zero_file_100B bs=50 count=2 

Es funktioniert gut, aber wenn ich cat zero_file_100B tut es nichts drucken. Was könnte der Grund dafür sein?

+1

Numeric '0' ist nicht die Wie ASCII '' 0'' –

+1

Probieren Sie 'hexdump -C 100B.file' aus. – user172818

+0

Versuchen Sie 'dd wenn =/dev/zero bs = 50 count = 2 | tr '\ 0' '0'> zero_file' – Cyrus

Antwort

5

Der Grund dafür ist das Zeichen mit ASCII-Code 0 hat keine grafische Darstellung in Ihrem Terminal-Emulator, die das erwartete Verhalten ist. Sie sollten es nicht mit dem Zeichen '0' verwechseln, das den ASCII-Code 48 hat.

Binärdaten eine tragbare Art und Weise zu sehen, könnten Sie od verwenden:

od -v -t u1 zero 
+0

Kommt auch auf Ihr Terminal an. Es könnte als '^ @ 'oder oder eine Anzahl anderer Darstellungen angezeigt werden. Siehe auch https://en.wikipedia.org/wiki/Null_character – tripleee

+0

@tripleee Sie sind richtig. Ich habe tatsächlich geschrieben: "Es hat keine Darstellung in ** Ihrem ** Terminal-Emulator" bereits impliziert es kann einige in anderen haben. – jlliagre

+0

Sicher; Mein Kommentar richtet sich eher an zukünftige Besucher, die möglicherweise unterschiedliche Symptome haben. – tripleee

1

aber wenn ich Katze tun zero_file_100B es druckt nicht alles

vielleicht waren Sie für diese

suchen
$ printf "%0*d" 100 0 > 38650594 
$ ls -l 38650594 
-rw-rw-r-- 1 me me 100 Jul 29 10:32 38650594 # Size is 100 bytes. 
+1

Was für ein seltsamer Name für einen Dateinamen, auch wenn es gerade ist ;-). – jlliagre

+0

@jlliagre: Es ist nichts anderes als die SO Frage Nummer;) – sjsam

+0

Got it! Ich hätte Q38650594 oder SO-38650594 verwendet. – jlliagre

1

Was wollen Sie mit Null? Sie konnten bereits in \ 0, Sie ‚0‘ mit

for i in {1..100}; do printf 0; done` 

Langsamer als andere Lösungen drucken können, aber Sie können dies für andere Anforderungen ändern:

# create file with size 100 only containing strings "zero" 
for i in {1..25}; do printf "zero"; done 

# create file with size 100 only containing strings "zeros" 
for i in {1..20}; do printf "zeros"; done