以列表格式显示服务

我正在寻找一种方式来显示service --status-all输出service --status-all命令与列表格式(如ls

我已经看到了几个使用prinf的技巧prinf但是我不理解任何东西:s

这个想法是有这样的东西:

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

代替

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

任何想法 ? 🙁

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跳过页眉

你也可以像这样使用column命令:

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

service命令中的2>&1部分将把那些具有未知状态的service重定向到标准输出而不是标准错误 ,从而避免将[ ? ]服务分开列出)

column命令中的-c 70表示需要70个字符的列(至少是手册页中指定的那样)