Почему команда «less» не может прочитать данные из стандартного ввода?

Почему команда «less» не может прочитать данные из стандартного ввода?

Команда less < brown_fox.txtпрочитает данные brown_fox.txtи выведет их на экран. Но если я хочу прочитать данные со стандартного ввода или клавиатуры, используя команду less, как мне это сделать?

Я попробовал следующие команды:

less
less <&0

но ни одна из них не увенчалась успехом.

решение1

Для того, чтобы прочитать из stdin, вы можете использовать

less -

Однако это больше подходит для случаев, когда вы хотите передать вывод другой команды в less. Набор с клавиатуры также будет работать, но вы будете печатать вслепую и должны будете нажать , Ctrl-Cчтобы вернуть управление less, что делает такое использование довольно сложным (если не бессмысленным).Обратите внимание, что это недокументировано и может быть вообще непереносимо!

Может быть, вы хотите уточнить, почему вы хотели бы lessпрочитать stdin?

решение2

Если вы пытаетесь отправить команды less, вы можете сделать это с помощью +командной строки, например:

less +G somefile

ls -l | less +G

Это эквивалентно lessоткрытию и последующему вводу Gкоманды в командной строке по умолчанию.


Если вы говорите о lessпостраничном выводе введенной вами информации, вы можете использовать heredoc, но я не уверен в варианте использования для этого:

less << EOF
hello
world
EOF

Связанный контент