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

时间:2018-10-29 16:22:15

标签: shell io-redirection dev-null

我正在使用一个名为Velvet(在生物信息学中称为汇编程序)的程序。该软件没有静默模式或静默模式选项,并且我有一个脚本可以运行几次,从而使该终端饱和那段对我而言毫无意义的文本(大约打印了100行文本)每次迭代)。

我已尝试通过以下方式将此输出发送到/dev/null

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

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

2 个答案:

答案 0 :(得分:1)

您的语法很好。 Velvet崩溃了,这不是外壳的问题。奇怪和不幸的是,输出重定向和发送到终端时,它的运行方式不同,但这不是您要做的。程序很少关心将stdout重定向到何处。 > /dev/null对于99%以上的程序都是安全的。 (有时还需要重定向stderr,但这是一个不同的主题。)

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

答案 1 :(得分:0)

OP确认了我的提案中的提议奏效了,即使不知道为什么。
您可以使用以下命令将输出重定向到“普通”文件

velvet -option1 -option2 -file1 -file2 > /tmp/velvet1.out 2>/tmp/velvet2.out