停止 systemctl 打印控制字符?

停止 systemctl 打印控制字符?

Systemd 喜欢使用控制代码在状态行前面插入一个点:

$ systemctl status sshd
● sshd.service - OpenSSH server daemon

vis(注意 20 空格之前的 e2 97 8f):

$ systemctl status sshd | od -tx1 | head -1
0000000 e2 97 8f 20 73 73 68 64 2e 73 65 72 76 69 63 65

我怎样才能阻止这个并让 systemd 仅使用 ASCII 字符集?

使用 TERM=dumb、LANG=C 和 SYSTEMD_COLORS=false 只是改变点的颜色,并且:

systemctl | strings

感觉就像黑客。

答案1

它本身不是一个控制字符,只是一个奇特的 Unicode 字形(U+25CF黑圈)。如果systemctl使用它取决于语言环境。告诉它您没有 Unicode 语言环境,您会得到 ASCII 星号:

$ LC_CTYPE=C systemctl status sshd
* ssh.service - OpenBSD Secure Shell server
     Loaded: loaded (/lib/systemd/system/ssh.service; enabled; vendor preset: enabled)
     Active: active (running) since...

或者LC_ALL=C使用更重的锤子。

答案2

显然是以下组合:

$ LANG=C SYSTEMD_COLORS=false systemctl status sshd
* sshd.service - OpenSSH server daemon

做正确的事(恶心)。

答案3

我无法使语言环境 ( LC_CTYPE, LC_ALL) 更改生效,但这样做了:

export PAGER=cat
systemctl status myservice

相关内容