Пусть меньше работает, как кошка, если только один экран, полный текста
На моей машине Debian здесь, less
всегда открывает альтернативный экран, чтобы показать вещи.
Это раздражает, если отображаются только 2 или 3 строки. мне бы хотелось less
чтобы:
работать как пейджер, если информации больше, чем экран
и работать как
cat
если нет
По-видимому, less
имеет -F
флаг для случаев "одного экрана":
-F или --quit-if-one-screen
Вызывает автоматическое завершение меньше, если весь файл может быть отображен на первом экране.
Но в моем случае он просто выходит снова, и информация не отображается. Это больше похоже cat /dev/null
и, следовательно, не очень полезно.
Есть у кого идея, как этого добиться less
поведение?
3 ответа
Вы можете объединить -F
с -X
, который отключает последовательность инициализации terminfo.
export LESS=-FX
Это имеет (не) преимущество, которое less
не очищает отображаемый текст при выходе, независимо от того, как долго файл был.
Как упомянуто grawity, вы можете передать -F -X
достичь этого, но это значит less
оставит много текста в вашем терминале прокрутки (и это может быть даже не в порядке, если вы прыгаете вокруг текста в less
). less
ничего не выводить, когда вы только проходите -F
Известна проблема № 303.
Вместо этого вы можете использовать скрипт-обертку. Для медленных входов, таких как git log -Gregex
, вы хотите:
A) Строки, которые должны появиться на главном экране по мере их поступления, затем переключаются на альтернативный экран, когда необходима прокрутка (поэтому первая $LINES
вывода всегда будет отображаться в вашем прокрутке); если так, продолжайте со вторым из ответов Жиля на подобный вопрос.
B) строки, которые должны появиться на альтернативном экране, но выйдите из альтернативного экрана и распечатайте строки на главном экране, если прокрутка окажется ненужной (таким образом, никакой вывод не появится в вашем прокрутке, если требуется прокрутка); если так, посмотрите на мой ответ на подобный вопрос.
Вы можете создать небольшой скрипт-обертку, например:
#!/bin/bash
if (( $(wc -l < "$1") < ${LINES:-20} ))
then
cat "$1"
else
less "$1"
fi
Если вы создадите это в /usr/local/bin
или же ~/bin
как файл называется что-то вроде less2
(вы можете использовать очень короткое имя, например l
для удобства ввода), и убедитесь, что он исполняется с chmod a+x /usr/local/bin/less2
, вы можете использовать его вместо less
для команд вида less filename
т.е. less2 filename
(или же l filename
).
Это не будет работать, если вы передаете вывод другой команды через less
или если вы укажете опцию (и) или несколько имен файлов.
Без сомнения, будет возможно сделать то же самое без дополнительного файла сценария, определив псевдоним функцию, если вы предпочитаете.