Com 1>&2
você redireciona a saída padrão para onde quer que o erro padrão esteja ocorrendo. Isso não é feito com frequência.
Com 2>&1
você faz o oposto, o que é mais comum.
Fazendo isso:
$ echo "hello world" >hello.out 1>&2
hello world
$ cat hello.out
Eu recebo "hello world" no fluxo de erros, mas >hello.out
também cria um arquivo hello.out
vazio (ou o trunca se existir).
É o último redirecionamento na linha que "ganha", mas o arquivo é criado quando o redirecionamento é analisado da esquerda para a direita, antes de o comando ser executado.
No seu caso (aqueles .
no final das linhas de comando que você tem é provavelmente um erro de digitação, certo?):
$ sqlite -echo test.sqlite <test44.sql >test44.out 1>&2
Isso deve funcionar de maneira equivalente ao meu teste echo
acima, desde sqlite
(ou pelo menos sqlite3
no OpenBSD com o qual estou testando), envia os comandos SQL executados para a saída padrão.