Почему wc считает один лишний символ в моем файле?

1.) Я использую Debian 8.4 в виртуальном ящике, и когда я выполнил команду wc sample.txt в файле sample.txt, содержащем:

Hello

Вывод команды был

1 1 6 sample.txt

Является ли дополнительный символ EOF? Если это так, то почему, когда я запускал ту же команду для пустого файла, вывод был...

0 0 0 sample.txt

person Patrick    schedule 20.04.2016    source источник
comment
Кроме того, межсайтовые дубликаты: serverfault.com/questions/287370/ superuser.com/questions/525902/ unix.stackexchange.com/questions/85268/   -  person tripleee    schedule 22.04.2016


Ответы (1)


У вас есть конечная новая строка, и это то, что сообщает wc.

Посмотрите, например, если мы создадим файл с printf:

$ printf "hello" > a
$ cat a | hexdump -c
0000000   h   e   l   l   o
0000005
$ wc a
0 1 5 a

Однако, если мы пишем что-то вроде echo, в конце добавляется новая строка:

$ echo "hello" > a
$ cat a | hexdump -c
0000000   h   e   l   l   o  \n
0000006
$ wc a
1 1 6 a
person fedorqui 'SO stop harming'    schedule 20.04.2016
comment
Если бы это был символ новой строки, разве wc не выводил бы 2 строки вместо 1? - person Patrick; 20.04.2016
comment
Нет, \n — это последний символ в первой строке. - person fedorqui 'SO stop harming'; 20.04.2016
comment
@Patrick, а на самом деле wc подсчитывает, сколько новых строк содержит файл. Вот почему мой первый пример показывает 0 в первом столбце. - person fedorqui 'SO stop harming'; 20.04.2016
comment
Я запустил код выше, и это действительно символ новой строки. Я не ожидал, что новая строка будет добавлена, даже если я ее не вводил. Спасибо! - person Patrick; 20.04.2016
comment
@Patrick, очень часто в конец потоков добавляются новые строки. Это меня тоже удивило, поэтому я спросил Конечная новая строка после передачи в команду: есть ли какой-нибудь стандарт?. - person fedorqui 'SO stop harming'; 20.04.2016
comment
Интересный вопрос. Я углублюсь в это, как только я лучше познакомлюсь с оболочкой, так как я все еще новичок, и эти вещи, как правило, становятся довольно подавляющими. - person Patrick; 20.04.2016
comment
Вы можете увидеть точное содержимое вашего файла, используя od. например od -c sample.txt. - person Mort; 20.04.2016