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 명령이 표준 출력으로 출력되기 때문입니다.

관련 정보