linux - 输出一个文本文件,包括用于生成它的命令

标签 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

最佳答案

您可以在 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

希望这对您有所帮助。

关于linux - 输出一个文本文件,包括用于生成它的命令,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54763431/

相关文章:

linux - 使用 Linux pipeline() 的进程编程模型

C使用管道传输数据以使用共享内存写入文件

c - 如何在C中制作父子双向管道

node.js - 获取node.js中所有嵌套子进程的标准输出

c - 通过 Makefile 构建并构建脚本有效,但等效的 Makefile.am 没有。(给出 undefined reference 错误)

c# - C# 中的 UDP 代理?需要一点帮助

linux - 通过 inode 打开文件

linux - 将内存中正在运行的进程与磁盘中的可执行文件进行比较

python - 将从 python 字典中提取的信息写入文件

android - 不同语言的两个进程是否可以使用UDP进行通信