将软件的终端输出发送到文件或 /dev/null

Send terminal output of software to file or /dev/null

我正在使用一个名为 Velvet 的程序(我们在生物信息学中称之为汇编程序)。该软件没有静音或安静模式选项,我有一个脚本 运行s 它多次导致它使我的终端充满当时对我来说没有真正意义的文本(大约 100每次迭代打印文本行)。

我试图通过这样做将此输出发送到 /dev/null

[Terminal@Session]$ velvet -option1 -option2 -file1 -file2 > /dev/null

然而,这会导致 shell 抱怨分段错误,而软件实际上 运行 根本没有。我觉得这是一个语法问题,因为像我那样尝试将内容发送到 /dev/null 可能会干扰预期的软件语法,因此会出现错误。我似乎无法在任何地方找到解决方案。我可以使用任何其他语法来重定向输出吗?

你的语法没问题。 Velvet 崩溃了,这不是 shell 的错。奇怪和不幸的是,当输出被重定向时与它被发送到终端时它运行不同,但这不是你做的。很少有程序关心 stdout 被重定向到哪里。 > /dev/null 对 99% 以上的程序都是安全的。 (有时 stderr 也需要重定向,但那是另一个话题。)

Velvet 是否有命令行选项可以让输出更安静?许多程序有 -q--quiet 或类似的东西。

OP 确认我在评论中的建议有效,即使不知道为什么。
您可以使用

将输出重定向到 'normal' 文件
velvet -option1 -option2 -file1 -file2 > /tmp/velvet1.out 2>/tmp/velvet2.out