2016-10-03 1 views
3

Werfen Sie einen Blick auf dieses Beispiel bitte:Warum sagt das "wc" -Befehl, dass ich nur eine Zeile in einer Datei habe, obwohl es tatsächlich zwei gibt?

$ cat < demo 
man 
car$ 
$ 
$ od -x < demo 
0000000 616d 0a6e 6163 0072 
0000007 
$ 
$ wc < demo 
1 2 7 

Wie Sie sehen können, habe ich 3 Zeichen dort ankam (man: 6d 61 6e) durch eine neue Zeile folgt (\n: 0a) und dann noch drei (car: 63 61 75) mit einem NUL-Zeichen (00) abgeschlossen. Natürlich gibt es zwei Zeilen in dieser Datei, aber der wc-Befehl meldet, dass die Datei nur einen hat. Was gibt? Oder denkst du, dass du, um dich als Unix-Zeile zu qualifizieren, mit einem Newline-Zeichen beenden musst? NUL zählt nicht?

Antwort

3

Oder denken Sie, dass, um sich als eine Zeile in Unix zu qualifizieren, Sie mit einem Newline-Zeichen abgeschlossen sein müssen?

Eigentlich ja - auch POSIX sagt, dass:

Die WC-Dienstprogramm eine oder mehrere Eingabedateien gelesen werden und wird standardmäßig schreiben die Anzahl der newlines, Worte und Bytes enthalten in jeder Eingabedatei an die Standardausgabe.

Verwandte Themen