может команда больше читать со стандартного ввода? - PullRequest
2 голосов
/ 20 февраля 2012

Обычно команда больше используется. больше обычно используется с трубой. поэтому я думаю, что больше имеет способность читать со стандартного ввода. каждая команда, разделенная конвейером, является процессом, а предыдущая команда просто создает конвейер и дублирует канал записи в stdin для more. но я обнаружил, что если я наберу «more» в консоли, появятся только некоторые варианты использования. так в чем дело?

Ответы [ 3 ]

2 голосов
/ 20 февраля 2012

Почему вы думаете, что что-то не так? Для терминала выводится больше страниц, так какой смысл ждать достаточно набранного ввода stdin на страницу?

Если вы наберете more и одно или несколько имен файлов, оно будет отображать этот ввод. Так что поведение выглядит примерно так:

am I attached to a terminal? ("isatty")
   are there filenames in argv
       page files
   else
       display help
else
   page pipe input
2 голосов
/ 20 февраля 2012

Для чего, я посмотрел пакет с исходным кодом, предоставленный репозиториями в моем дистрибутиве Linux, и обнаружил следующее:

if (!no_intty && nfiles == 0) {
usage(argv[0]);
exit(1);
}

Таким образом, в действительности поведение заключается в отображении сообщения об использовании, если вход не обнаружен.

2 голосов
/ 20 февраля 2012

Это особенность.Он обнаруживает, что его стандартный вход подключен к терминалу, и отображает сообщение справки вместо продолжения.Вряд ли есть ситуация, когда имеет смысл запускать пейджер при вводе, когда вы вводите его вручную.Если вы действительно хотите, попробуйте, например, cat | more.

...