如果我通过管道发送此脚本:
me:~/git/my-project$ find . -type f -not -path '*bin*' -name '*ignored*sql' -exec cat {} \;
dsadadasda SELECT * FROM some_table;
像这样进入sqlplus
:
me:~/git/my-project$ find . -type f -not -path '*bin*' -name '*ignored*sql' -exec cat {} \; | sqlplus $my_connection_string | grep -i unknown
SQL> SP2-0734: unknown command beginning "dsadadasda..." - rest of line ignored.
然后错误进入STDOUT
而不是STDERR
:
me:~/git/my-project$ find . -type f -not -path '*bin*' -name '*ignored*sql' -exec cat {} \; | sqlplus $my_connection_string 1>/dev/null
me:~/git/my-project$
是否可以配置sqlplus
来执行其他操作?
答案 0 :(得分:-2)
我想在这里引用 Manoj:
文件描述符 1 是标准输出 (stdout
)。
文件描述符 2 是标准错误 (stderr
)。
这是记住这个结构的一种方法(尽管它并不完全准确):起初,2>1
可能看起来是将 stderr 重定向到 stdout 的好方法。但是,它实际上会被解释为“将 stderr 重定向到名为 1 的文件”。 &
表示后面和前面的是文件描述符而不是文件名。所以构造变成:2>&1
.
将 >& 视为重定向合并运算符。