2013-07-05 32 views
37

我试图在我的Ubuntu Amazon EC2盒子上更改当天的消息(MOTD),以便在SSH进入时显示我的一个目录的git状态。在shell脚本中缩进多行输出

从所有默认MOTD文件的输出必须在每一行,所以它看起来很好地缩进开始两个空间,但由于我的git status输出跨越几行,如果我做echo -n " "只缩进第一行之前。

任何想法如何让它缩进每一行?

谢谢!

回答

60

将其管理到sed,以在每行的开头插入2个空格。

git status | sed 's/^/ /' 
+0

Perfect-正是我一直在寻找。认为这将是'sed'的东西,但我不是很有经验。谢谢! –

22

@ Barmar的答案建立在,这是做它一个整洁的方式:

indent() { sed 's/^/ /'; } 

git status | indent 
other_command | indent 
+1

实际上并没有太多增加,这是一个shell脚本中的一次性使用情况,所以bash子例程有点矫枉过正,但是谢谢 –

+0

@MattFletcher:嗯,我认为使用子程序编写代码就像这样可以更容易为非bash教授(像我一样)弄清楚发生了什么事情。另外,如果你决定突然想要3个而不是2个空间,那么你只有一个地方可以纠正。 – Vering

+2

@这是真的,我确实明白这样做的好处,我只是更多地建议它可能是一个评论,而不是一个答案本身,因为它几乎是相同的答案,并解决了一个从未出现过的问题第一个地方:) –