如何抑制运行时打印到服务名称左侧的点systemctl status XXX
?我想将此命令的输出保存到 bash 变量并打印它。输出中点的存在导致我的脚本失败,很可能是因为该点是 unicode 字符。
# systemctl status network
● network.service - LSB: Bring up/down networking
Loaded: loaded (/etc/rc.d/init.d/network; bad; vendor preset: disabled)
Active: active (exited) since Thu 2018-10-11 09:16:29 PDT; 6h ago
Docs: man:systemd-sysv-generator(8)
Oct 11 09:16:24 172.100.139.200 systemd[1]: Starting LSB: Bring up/down networking...
Oct 11 09:16:24 172.100.139.200 network[1376]: Bringing up loopback interface: [ OK ]
Oct 11 09:16:28 172.100.139.200 network[1376]: Bringing up interface eth0: [ OK ]
Oct 11 09:16:29 172.100.139.200 systemd[1]: Started LSB: Bring up/down networking.
答案1
如果您要解决的问题是避免 Unicode 字符作为输出的一部分,那么您可以使用不使用 UTF-8 的区域设置调用 systemd 命令,在这种情况下,systemd 将打印 a*
而不是点。
LC_CTYPE
您可以通过将变量设置为C
或 之类的内容来临时将非 UTF-8 语言环境设置为单个命令POSIX
。
例如:
# LC_CTYPE=C systemctl status network
* network.service - LSB: Bring up/down networking
Loaded: loaded (/etc/rc.d/init.d/network; bad; vendor preset: disabled)
Active: active (exited) since Thu 2018-10-11 09:16:29 PDT; 6h ago
Docs: man:systemd-sysv-generator(8)
Oct 11 09:16:24 172.100.139.200 systemd[1]: Starting LSB: Bring up/down networking...
Oct 11 09:16:24 172.100.139.200 network[1376]: Bringing up loopback interface: [ OK ]
Oct 11 09:16:28 172.100.139.200 network[1376]: Bringing up interface eth0: [ OK ]
Oct 11 09:16:29 172.100.139.200 systemd[1]: Started LSB: Bring up/down networking.
答案2
看man systemctl
:
地位
此函数旨在生成人类可读的输出。如果您正在寻找计算机可解析的输出,请改用
show
。 ...展示
要选择要显示的特定属性,请使用
--property=
。该命令旨在在需要计算机可解析输出时使用。