默认情况下,Ubuntu 20.04 focal 上的 systemd (v245),如果我这样做systemctl status $THING
,并且输出行比我的屏幕长,那么默认分页器 (less?) 将进行水平滚动。我宁愿将额外的文本放在以下几行上(“自动换行”)
我可以设置什么环境变量来实现从水平滚动到“将该行的剩余部分放在下一行”的改变?
我知道在这种情况下systemctl --no-pager $THING
或systemctl 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
并按回车键来切换行折叠。