在 Linux 中追加新行
Appending on a new line in Linux
所以我正在尝试编写一个脚本,将进程的命令存储在 /proc 中。这是我的脚本:
$ re='^[0-9]+$
$ for i in `ls /proc`; do if [[ $i =~ $re ]] ; then cd /proc/$i;cat cmdline >> /home/nisarg/CMD;fi; done
$上面是shell提示符。
我首先设置了一个正则表达式 re,它可用于检查子目录是否在 /proc 中具有数字名称。示例 23331。我这样做是因为 /proc 中有几个我不感兴趣的文件和目录。我只对具有数字名称的目录感兴趣,因为它们保存过程数据。然后我遍历 /proc,如果(使用正则表达式)我发现一个目录有一个数字名称,我进入这个目录(使用 cd)并将存储在文件 cmdline 中的值附加到我的主文件夹中名为 CMD 的文件。
我的问题是,当我打开 /home/nisarg 中的 CMD 文件时,我发现所有的命令都存储在一行中。我一直认为 >>
附加到一个新行。不是吗?
如果没有,有什么方法可以将它们分别存储在一个新行中吗?
>>
只是附加到一个文件,它不添加换行符。问题是 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
所以我正在尝试编写一个脚本,将进程的命令存储在 /proc 中。这是我的脚本:
$ re='^[0-9]+$
$ for i in `ls /proc`; do if [[ $i =~ $re ]] ; then cd /proc/$i;cat cmdline >> /home/nisarg/CMD;fi; done
$上面是shell提示符。
我首先设置了一个正则表达式 re,它可用于检查子目录是否在 /proc 中具有数字名称。示例 23331。我这样做是因为 /proc 中有几个我不感兴趣的文件和目录。我只对具有数字名称的目录感兴趣,因为它们保存过程数据。然后我遍历 /proc,如果(使用正则表达式)我发现一个目录有一个数字名称,我进入这个目录(使用 cd)并将存储在文件 cmdline 中的值附加到我的主文件夹中名为 CMD 的文件。
我的问题是,当我打开 /home/nisarg 中的 CMD 文件时,我发现所有的命令都存储在一行中。我一直认为 >>
附加到一个新行。不是吗?
如果没有,有什么方法可以将它们分别存储在一个新行中吗?
>>
只是附加到一个文件,它不添加换行符。问题是 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