Перенаправление ввода (<) добавляет символ новой строки?

Первоначально у меня сложилось впечатление, что

$ ./myprog moo[CTRL-D] 

точно такая же, как

 $ echo moo > cow $ ./myprog < cow 

Но я обнаружил, что myprog всегда считает еще один \n во второй версии, чем в первом. Почему это?

Оказывается, wc делает то же самое …

 $ wc -l moo[CTRL-D]0 

(Возможно, нулевые линии возможны?)

 $ echo moo > cow $ wc -l < cow 1 

Кто-нибудь может мне это объяснить?

  • Awk - выводит вторую строку из нескольких файлов .dat в один файл
  • Как работает cat> file << "END"?
  • Названия stdin / stdout в BASH?
  • Скройте вывод bash во время запуска автоматического сценария.
  • Перенаправление команд в несколько файлов: command> file1> file2
  • перенаправление скриптовой переменной в файл журнала без потери stderr
  • Есть ли способ перенаправить вывод nohup в файл журнала, отличный от nohup.out?
  • Как выводить на экран переопределение перенаправления
  • One Solution collect form web for “Перенаправление ввода (<) добавляет символ новой строки?”

    echo добавляет новую строку, если вы не скажете, что это не так, поместив -n сначала или \c в конце, или положив -e first и \c в конце или … вы действительно не хотите знать все разновидности эха. Используйте printf moo > cow и у вас будет файл с нулевыми строками.

    Linux и Unix - лучшая ОС в мире.