systemctl
no parece tener un mecanismo para especificar cuándo colorear la salida. Una solución rápida sería calzar isatty(3)
para volver siempre verdadero, por lo que engañar systemctl
a pensar que stdout es interactivo. A saber, podrías hacer:
# echo "int isatty(int fd) { return 1; }" | gcc -O2 -fpic -shared -ldl -o isatty.so -xc -
# LD_PRELOAD=./isatty.so watch -n300 --color systemctl status plexmediaserver
Al -xc -
final del gcc
comando le dice gcc
que compile el código C ( -xc
) a partir de stdin ( -
). El resto de las banderas le indican gcc
que cree un archivo de objeto compartido llamado isatty.so
. Tenga en cuenta que esto podría muy bien romper otros programas que dependen isatty
para devolver un valor legítimo. Sin embargo, parece estar bien, systemctl
ya que isatty
parece ser utilizado únicamente con el fin de determinar si debe colorear su salida.