Можно ли указать путь, в котором имя каталога является переменным?

less проверяет, является ли его stdout терминалом, и ведет себя как cat , когда это не так (копирует stdin в stdout до EOF).

Эта функция позволяет вам писать сценарии или программы, которые всегда отправляют свой вывод (например, - help output) через less , при этом позволяя легко перенаправлять в файл. Было бы отстойно, если бы some_command --fullhelp> help.txt все еще ждал, пока пробел на стандартном вводе не пролистает текст, или что-то в этом роде. Некоторые команды (например, man ) проверяют свой собственный вывод, чтобы решить, посылать свой вывод через пейджер или нет. Если вы запустите man ls> ls.txt , он никогда не вызовет ваш $ PAGER . Кошачье поведение

less удобно, если вы забыли отредактировать его из однострочника при добавлении дополнительных этапов в конвейер.


less необходимо выяснить размеры терминала (размер экрана, чтобы знать, сколько строк отображать одновременно). ioctl (2) , который он использует в stdout , вернет ENOTTY на нетерминальном устройстве, поэтому в любом случае он не может избежать обработки нетерминального случая. less фактически использует isatty (3) перед проверкой размеров терминала, но isatty работает, пробуя ioctl только для tty и проверяя отсутствие ошибок.

Даже простой пейджер, такой как more (1) (по крайней мере, версия для util-linux), имеет эту функцию, потому что это, вероятно, простейшее разумное поведение для такого случая.


Обратите внимание, что когда вы передаете что-то в less (например, grep foo bar.txt | less ), оно должно открывать / dev / tty для ввода с клавиатуры. (Вы можете увидеть это с помощью echo foo | strace less ).

1
13.04.2017, 15:36
0 ответов

Теги

Похожие вопросы