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