以列表格式显示服务

时间:2015-03-17 11:10:53

标签: linux bash

我正在搜索显示带有列表格式的service --status-all命令输出的方法(如ls那样)

我看过很少使用prinf的提示,但我不会理解任何事情:s

想法是这样的:

Status     Service Name     ||    Status    Service Name
 [ + ]     Apache                  [ + ]    cntlm
 [ + ]     MySQL                   [ + ]    cron
 [ - ]     casper
 [ ? ]     irqbalance

而不是

[ + ]    Apache
[ + ]    cntlm
[ + ]    cron
[ + ]    MySQL
[ - ]    casper
[ ? ]    irqbalance

有什么想法吗? :(

2 个答案:

答案 0 :(得分:3)

pr命令可以做到这一点。

echo "$input" | pr -2t

给出

[ + ]    Apache                     [ + ]    MySQL
[ + ]    cntlm                      [ - ]    casper
[ + ]    cron                       [ ? ]    irqbalance

,而

echo "$input" | pr -2at

给出

[ + ]    Apache                     [ + ]    cntlm
[ + ]    cron                       [ + ]    MySQL
[ - ]    casper                     [ ? ]    irqbalance
  • -2表示2列
  • -a表示"跨越"
  • -t跳过页眉

答案 1 :(得分:0)

您也可以使用column命令:

service --status-all 2>&1 | column -c 70

2>&1命令中的service部分会将状态未知的服务重定向到标准输出而不是 stderr ,从而避免[ ? ]个服务被列为分开)

-c 70命令中的column表示您希望列70个字符宽(至少是manual page中指定的那个)