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

Ama*_*rus 3 terminal systemd

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

我可以设置什么环境变量来将水平滚动更改为“将行的其余部分放在下一行”?

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

Lac*_*cek 9

默认情况下,作为寻呼机systemctl生成less(如果可用,但在大多数系统上都是如此)。在这种情况下,less给出参数FRSXMK,其S负责不折叠长行。

如果SYSTEMD_LESS设置了环境变量,则其内容将作为要赋予 的标志进行处理less(如果less是当前正在使用的寻呼机)。因此,如果您S从变量中省略标志,然后执行

export SYSTEMD_LESS="FRXMK"
Run Code Online (Sandbox Code Playgroud)

thensystemctl的行为与以前完全相同,只是它会折叠长线。

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


Mic*_*ton 5

您可以通过导出空环境变量来使无寻呼机永久化SYSTEMD_PAGER,即:

export SYSTEMD_PAGER=
Run Code Online (Sandbox Code Playgroud)

但您会注意到,现在 systemd 省略了长行,因此您还必须使用-l,--full命令行选项将其关闭。不幸的是,没有环境变量可以改变这一点。


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

alias systemctl='systemctl --no-pager --full'
Run Code Online (Sandbox Code Playgroud)