gpt4 book ai didi

linux - 在 Linux 中追加到一个新行

转载 作者:太空宇宙 更新时间:2023-11-04 09:33:06 24 4
gpt4 key购买 nike

所以我正在尝试编写一个脚本,将进程的命令存储在/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

关于linux - 在 Linux 中追加到一个新行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29462955/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com