在Linux上添加新行

时间:2015-04-05 22:32:04

标签: linux io-redirection

所以我试着编写一个脚本来存储/ proc中的进程的cm​​ds。这是我的剧本:

 $ re='^[0-9]+$
 $ for i in `ls /proc`; do if [[ $i =~ $re ]] ; then cd /proc/$i;cat cmdline >> /home/nisarg/CMD;fi; done 

$ above是shell提示符。

我首先设置了一个正则表达式,它有助于检查子目录是否在/ proc中有一个数字名称。例23331.我这样做是因为/ proc中有几个文件和目录对我来说不感兴趣。我只对具有数字名称的目录感兴趣,因为它们包含过程数据。然后我迭代/ proc并且如果(使用正则表达式)我发现目录有一个数字名称,我进入这个目录(使用cd)并将存储在文件cmdline中的值附加到我的主文件夹中名为CMD的文件。 / p>

我的问题是当我在/ home / nisarg中打开CMD文件时,我发现所有cmd都存储在一行中。我一直认为>>附加到新的一行。不是吗?

如果没有,有什么方法可以将它们存储在新的一行上吗?

1 个答案:

答案 0 :(得分:2)

>>只是附加到文件,它不会添加换行符。问题是cmdline并不以换行结束。您只需添加echo即可添加换行符:

(echo ; cat cmdline) >> /home/nisarg/CMD

使用bash及其extglob选项很简单:

#! /bin/bash
shopt -s extglob
for c in /proc/+([0-9])/cmdline ; do
    echo
    cat "$c"
done > ~/CMD
相关问题