sqlite -echo test.sqlite < test44.sql > test44.out 1>&2.
sqlite -echo test.sqlite < test44.sql > test44.out 2>&1.
2つの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コマンドが標準出力に出力されるからです。