Bash всегда выводит на less, как это отключить?

Не так элегантно, но работает. Пожалуйста, замените ext4 на свою собственную fs (или на grep, если их много). Также замените 10 своим пороговым значением.

for fs in `cat /proc/mounts | grep ext4 | awk ' { print $2 }' | tr '\n' ' '` ;  do SPC=$( df $fs | awk 'END{ print $(NF-1) }' | sed 's/[^0-9]*//g' ) ; if [ $SPC -gt 10 ]; then  echo "$fs used more than 10";  fi done
0
21.08.2018, 03:35
3 ответа

Справочная страница для systemctl (man systemctl) ясно объясняет это поведение и даже предлагает варианты его изменения:

$SYSTEMD_PAGER Пейджер для использования, когда --no-pager не задан; переопределяет $PAGER. Если ни $SYSTEMD_PAGER, ни $PAGER не установлены, по очереди пробуется набор известных реализаций пейджера, включая less(1) и . more(1), пока не будет найдено одно. Если реализация пейджера не обнаружена, пейджер не вызывается. Установка для этой переменной среды пустой строки или значения "cat" эквивалентна передаче --no-pager.

Таким образом, в вашем случае решение состоит в том, чтобы установить переменную среды при входе в систему:

export SYSTEMD_PAGER=cat
5
28.01.2020, 02:19

В более широком смысле вы можете определить среду PAGER в конфигурации среды выполнения bash

# In.bashrc or.bash_profile

export PAGER='cat'
1
05.05.2020, 10:52

Я часто захожу в систему, где менять ~/root/.bashrc, /etc/profileи т. д. — плохая идея. И я не всегда запоминаю имя параметра SYSTEMD_PAGER.

Так что, как ленивый хакер, я просто передаю вывод через catилиless(мой любимый пейджер ), вот так:

systemctl status | cat
systemctl status | less

Этот прием для catработает и для многих других программ. Например, если я не хочу иметь дело с тем, как infoперемещается по своим страницам, я просто делаю это:

info bash | less

0
30.08.2021, 22:09

Теги

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