输出包括用于生成文本的命令的文本文件

时间:2019-02-19 09:59:51

标签: linux pipe

当然必须有一种更优雅的方式来做到这一点!我想执行一个命令,然后使用命令本身,几行新内容以及命令的输出来创建一个文本文件。

出于上下文考虑,这样做的原因是使查看文本文件的人将能够看到刷新文件内容所必需的命令。

这是一个给出几乎正确结果的示例,但是很麻烦。

cat /proc/meminfo > meminfo.txt; sed -i '1s/^/\/proc\/meminfo pipeSymbol meminfo\.txt \n\n/' meminfo.txt

以下是meminfo.txt文件的内容:

/proc/meminfo pipeSymbol meminfo.txt

MemTotal:       263024768 kB
MemFree:        255517652 kB

如果可能,我想通过以下方式进行改进。但是任何使它更干净的东西也将受到赞赏。

  • 无需手动再次编写命令
  • 无需在sed命令中手动转义特殊符号
  • 如果以上操作无法完成,如何插入>而不是文本pipeSymbol

1 个答案:

答案 0 :(得分:1)

您可以在sed中使用另一个符号作为分隔符。您可以像下面这样编写set语句。

cat /proc/meminfo > meminfo.txt; sed -i '1s#^#/proc/meminfo >  meminfo.txt \n\n#' meminfo.txt

您可以按照以下方式进行操作。首先设置命令并输出到变量。并将它们作为变量执行。

mycmd="ls -l"
out="myout.txt"
eval $mycmd > $out; sed -i -e "1s#^#$mycmd > $out \n\n#" $out

希望这会有所帮助。