使 systemd pager 不进行水平滚动,而是换到下一行

使 systemd pager 不进行水平滚动,而是换到下一行

默认情况下,Ubuntu 20.04 focal 上的 systemd (v245),如果我这样做systemctl status $THING,并且输出行比我的屏幕长,那么默认分页器 (less?) 将进行水平滚动。我宁愿将额外的文本放在以下几行上(“自动换行”)

我可以设置什么环境变量来实现从水平滚动到“将该行的剩余部分放在下一行”的改变?

我知道在这种情况下systemctl --no-pager $THINGsystemctl status $THING | cat会起作用,但每次都要输入额外的文本。我希望systemctl status $THING始终无需添加额外的内容即可工作。

答案1

您可以通过导出一个空的环境变量来使无分页器永久存在SYSTEMD_PAGER,即:

export SYSTEMD_PAGER=

-l但您会注意到,现在 systemd 会省略长行,因此您还必须使用,命令行选项关闭此--full功能。遗憾的是,没有环境变量可以更改此功能。


对于完整的解决方案,我建议使用 shell 别名systemctl,例如:

alias systemctl='systemctl --no-pager --full'

答案2

默认情况下,systemctl会生成less分页程序(如果可用,但在大多数系统上都是可用的)。在这种情况下,less给出了参数FRSXMK,其中S负责不折叠长行。

如果SYSTEMD_LESS设置了环境变量,则其内容将作为要赋予的标志处理less,如果less是当前正在使用的分页器。因此,如果您S从变量中省略标志,并执行

export SYSTEMD_LESS="FRXMK"

然后systemctl它将像以前一样运行,除了它会折叠长行。

值得注意的是,您可以less通过键入-S并按回车键来切换行折叠。

相关内容