前言
如果想要把命令的输出保存到文件中,你会怎么做?
一个常用的方法就是使用IO重定向吧
ls >/tmp/ls.txt 2>&1
如果需要在将命令输出保存到文件中的同时还需要将内容也输出到屏幕中的话,那么我们可以使用 tee 命令
ls |tee /tmp/ls.txt
不过,我今天发现还有一个 logsave 的命令,也可以做到将命令输出保存到文件的同时将内容页输出到屏幕中。
logsave 的语法非常简单:
logsave [ -asv ] logfile cmd_prog [args ... ]
选项
-a:追加信息到指定的日志文件中。
参数
logsave 会执行 cmd_prog args... 并将命令输出的副本保存到 logfile 中. 而它厉害的地方在于 即使logfile所在的目录不存在,logsave也会将输出保存到内存中,等到logfile所在的目录建立后再将内容写入到日志文件中
logsave 的这个特性使得它很适合用于系统启动脚本中,将输出的内容保存到内存中,直到 /var/ 目录挂载后再将内容写入 /var/log/ 中
比如下面这个例子
# 删除存放logfile的目录 rm -rf /tmp/logdir # 使用logsave保存logfile logsave /tmp/logdir/logfile bash -c "sleep 2;date" # 创建logdir mkdir /tmp/logdir echo 查看logfile是否生成: ls -l /tmp/logdir echo 等待2s后: sleep 2 echo 再次查看logfile是否生成: ls -l /tmp/logdir echo 查看logfile的内容: cat /tmp/logdir/logfile
2018年 05月 14日 星期一 16:31:44 CST 查看logfile是否生成: 总用量 0 等待2s后: 再次查看logfile是否生成: 总用量 4 -rw-r--r-- 1 lujun9972 lujun9972 141 5月 14 16:31 logfile 查看logfile的内容: Log of bash -c sleep 2;date Mon May 14 16:31:42 2018 2018年 05月 14日 星期一 16:31:44 CST Mon May 14 16:31:44 2018 ----------------
从中可以看到:
logsave 中的 cmd_prog 可以是一个特殊的 - ,这表示 logsave 从标准输入中获取要记录日志的内容,这使得 logsave 可以像 tee 一样被使用
ls |wc -l |logsave /tmp/1.txt - >/dev/null cat /tmp/1.txt
总结
以上就是这篇文章的全部内容了,希望本文的内容对大家的学习或者工作具有一定的参考学习价值,如果有疑问大家可以留言交流,谢谢大家对小牛知识库的支持。
问题内容: 我想将此命令保存到另一个文本:awk’{print $ 2}’,它从文本中提取出来。现在我想将输出另存为文本。谢谢 问题答案: =>这将重定向到文件。如果文件不存在,它将创建它。如果文件存在,它将清除(有效)内容并向其中写入新数据 =>这与上面的意思相同,但是如果文件存在,它将向其追加新数据。 例如: 或者,您可以使用命令进行重定向。该命令将重定向到指定的文件以及终端屏幕 有关外壳重定
问题内容: 我想要的是将git命令的输出(例如git status)存储在shell脚本的变量内。当我说输出时,我说的是在终端上执行命令时返回的文本,例如:在回购之外执行git status时: 我尝试了这个: 但是’var’没有存储任何东西。 问题答案: 您可以使用: 即将stderr重定向到stdout,然后捕获输出。 否则,当会写上错误消息并且您的命令:仅正在捕获时。
问题内容: 我想通过Python将Shell命令的输出保存到文本文件中。这是我实际的,非常基本的python代码: 编辑 这里是最终脚本,谢谢您的帮助:) 问题答案: 尝试这样的事情: 编辑 :满足您的需求
问题内容: 我在Linux上使用bash shell。我有这个简单的脚本…… 但是,当我运行此脚本时 打印所有输出而没有回车/换行。不知道这是我将输出存储到$ TEMP还是echo命令本身的方式。 如何将命令的输出存储到变量并保留换行符/回车符? 问题答案: 引用 您的变量。原因如下: 不带引号的外壳将替换为其包含的字符(其中之一是换行符)。然后,在调用shell 之前,先使用(IFS)将该字符串
问题内容: 我有以下代码: 试图从阅读器中读取内容已挂起。我该如何解决?我该如何寻找正在发生的事情? 问题答案: 在等待命令完成的同时,必须连续读取输出。否则,如果命令产生足够的输出以填充输出缓冲区,则该命令将挂起,等待缓冲区被消耗,这将永远不会发生。这样您就陷入僵局。 以下示例在监视命令状态的同时连续读取stdout和stderr。它基于官方的JSch 示例 (仅添加了stderr的阅读)。 如
问题内容: 我尝试使用,但它并没有涉及整个结构和层次结构。 另一方面这样做,但我无法保存。 在输出中,我可以将所有子项一个一个地展开,然后选择并复制/粘贴,但是结构非常重要。 问题答案: 更新: 您现在可以右键单击 在“控制台”面板中右键单击>另存为,将记录的消息保存到文件中。 原始答案: 您可以使用下面显示的devtools片段创建console.save方法。它从输入中创建一个FileBlob