I/O 重定向可能的正确组合

I/O 重定向可能的正确组合
sqlite -echo test.sqlite < test44.sql > test44.out 1>&2.

sqlite -echo test.sqlite < test44.sql > test44.out 2>&1.

即使交换两个 I/O 重定向器,输出也没有不同。

答案1

您可以1>&2将标准输出重定向到标准错误所在的位置。这并不常见。

2>&1你相反,这是更常见的。

这样做:

$ echo "hello world" >hello.out 1>&2
hello world

$ cat hello.out

我在错误流上收到“hello world”,但>hello.out也创建了一个空hello.out文件(或截断它,如果存在)。

这是“获胜”的行上的最后一个重定向,但在执行命令之前,从左到右解析重定向时会创建该文件。

在你的情况下(.你的命令行末尾的那些可能是一个错字,对吧?):

$ sqlite -echo test.sqlite <test44.sql >test44.out 1>&2

echo这应该以与我上面的测试相同的方式工作,因为sqlite(或者至少sqlite3在我正在测试的 OpenBSD 上),将执行的 SQL 命令输出到标准输出。

相关内容