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

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

$ ./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 

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

  • bash: перенаправление ввода-вывода, но не с суффиксами
  • Обнаружение захваченного портала, всплывающая реализация?
  • Почему процесс не существует (кажется) существует до того, как читать
  • Почему не работает wget url / mediafile.ext> medafile2.ext?
  • Перенаправление не отображается в качестве аргумента для сценария источника
  • Как перенаправить ввод во время процесса?
  • Как не создать файл nohup.out, но сохранить вывод терминала?
  • труба в оболочке с перенаправлением
  • One Solution collect form web for “Перенаправление ввода (<) добавляет символ новой строки?”

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

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