如何将控制台输出和命令本身重定向到文件?

时间:2014-06-18 01:17:09

标签: redirect command-line console

如果我可以将控制台输出重定向到文件,我该如何重定向执行的命令呢?

实施例: ffmpeg -i videoFile 1> logFile.txt 2>& 1

logFile不会作为第一行: ffmpeg -i videoFile 1> logFile.txt 2>& 1

感谢。

1 个答案:

答案 0 :(得分:0)

不完全清楚你的目标是什么,所以这里有几件事要尝试。此外,最好包含您正在使用的OS或shell的标记。我希望你不是一个真正的Windows用户: - )

您知道script实用程序吗?您可以运行script logFile,之后的任何命令和输出都将被捕获到logFile。缺点是它捕获一切。做一个快速测试,看看它是否适合你。另请查看man script,了解有关特定操作系统脚本版本固有的时髦性的详细信息。有些人比其他人好。在这种情况下,script -k logFile可能会更好。

否则,如果你真的需要这个,我会做一个小的shell脚本,如:

cat ffmpegwrapper
#!/bin/bash
#  ffmpegWrapper
vidFile="$1"
echo ffmpeg -i "$vidFile"
ffmpeg -i "$vidFile"   

将其保存到PATH中包含的目录,最好是/usr/local/bin

如果您想要更加灵活地使用什么(额外的ffmpeg选项)或多少(更多文件),可以从cmd-line处理,您可以尝试将"$1"的引用更改为{{ 1}},表示“cmd-line上的所有参数,将引用的空格保持为单个参数。即cmd "${@}"只有3个参数,$ 2的值为1 "2 3" 4。只需记住"2 3" 1}}始终是-i将看到的第一个选项

使其可执行

ffmpeg

运行它并捕捉你正在做的输出

chmod 755 ffmpegWrapper

注意,现在您不需要输入-i。

要查看发生了什么,您可能更喜欢使用 ffmpegWrapper videoFile > logFile.txt 2>&1 实用程序,例如

tee

如果您希望历史记录在第一个示例中使用追加重定向,即 ffmpegWrapper videoFile 2>&1 | tee logFile.txt >>选项-a,请不要忘记。

IHTH