런타임 시 서비스 이름 왼쪽에 인쇄되는 점을 어떻게 억제할 수 있습니까 systemctl status XXX
? 이 명령의 출력을 bash 변수에 저장하고 인쇄하고 싶습니다. 출력에 점이 있으면 스크립트가 실패하게 됩니다. 이는 점이 유니코드 문자이기 때문일 가능성이 높습니다.
# 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
해결하려는 문제가 출력의 일부로 유니코드 문자를 사용하지 않는 것이라면 UTF-8을 사용하지 않는 로케일로 systemd 명령을 호출할 수 있습니다. 이 경우 systemd는 *
점 대신에 를 인쇄합니다.
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=
. 이 명령은 컴퓨터에서 구문 분석 가능한 출력이 필요할 때 사용하기 위한 것입니다.