SW/리눅스

Linux : Bash : stderr에서 stdout로 리다이렉트 방법, 예제, 명령어

얇은생각 2022. 10. 5. 07:30
반응형

명령의 출력을 파일로 리디렉션하거나 다른 명령으로 연결할 때 오류 메시지가 화면에 인쇄될 수 있습니다.

Bash 및 기타 Linux 셸에서는 프로그램이 실행될 때 세 가지 표준 I/O 스트림을 사용합니다. 각 스트림은 숫자 파일 설명자로 표시됩니다.

 

 

Linux : Bash : stderr에서 stdout로 리다이렉트 방법, 예제, 명령어

 

 

0 - stdin, 표준 입력 스트림입니다.

1 - 표준 출력 스트림인 stdout입니다.

2 - stderr, 표준 오류 스트림입니다.

 

파일 설명자는 열린 파일을 나타내는 숫자일 뿐입니다.

입력 스트림은 일반적으로 키보드를 입력하여 프로그램에 정보를 제공합니다.

프로그램 출력은 표준 입력 스트림으로 이동하고 오류 메시지는 표준 오류 스트림으로 이동합니다. 기본적으로 입력 스트림과 오류 스트림이 모두 화면에 인쇄됩니다.

 

 

 

출력을 리디렉션

리디렉션은 프로그램에서 출력을 캡처하여 다른 프로그램이나 파일에 입력으로 보내는 방법입니다.

스트림을 n> 연산자를 사용하여 리디렉션할 수 있습니다. 여기서 n은 파일 설명자 번호입니다.

n이 생략되면 기본값은 표준 출력 스트림인 1입니다. 예를 들어, 다음 두 명령은 동일하며 두 명령 출력(stdout)을 파일로 리디렉션합니다.

command > file
Copy
command 1> file

 

 

 

표준 오류(stderr)를 리디렉션하려면 2> 연산자를 사용합니다.

command 2> file

 

 

 

stderr 및 stdout을 두 개의 개별 파일에 모두 쓸 수 있습니다.

command 2> error.txt 1> output.txt

 

 

 

화면에 오류 메시지가 표시되지 않도록 하려면 stderr을 /dev/null로 리디렉션합니다.

command 2> /dev/null

 

 

 

stderr을 stdout으로 리디렉션

프로그램 출력을 파일로 저장할 때 stderr를 stdout으로 리디렉션하여 한 파일에 모두 저장할 수 있도록 하는 것이 일반적입니다.

stderr을 stdout으로 리디렉션하고 오류 메시지를 표준 출력과 동일한 파일로 보내려면 다음을 사용합니다.

command > file 2>&1

 

 

 

> 파일은 stdout을 파일로 리디렉션하고, 2>&1은 stderr을 stdout의 현재 위치로 리디렉션합니다.

리디렉션 순서가 중요합니다. 예를 들어, 다음 예제는 stdout만 파일로 리디렉션합니다. 이 문제는 stderr가 파일로 리디렉션되기 전에 stdout으로 리디렉션되기 때문에 발생합니다.

command 2>&1 > file

 

 

stderr를 stdout으로 리디렉션하는 또 다른 방법은 &> 구성을 사용하는 것입니다. Bash &>의 의미는 2>&1과 동일합니다.

command &> file

 

 

명령줄에서 작업할 때 리디렉션 및 파일 설명자의 개념을 이해하는 것이 매우 중요합니다.

stderr 및 stdout을 리디렉션하려면 2>&1 또는 &> 구조를 사용합니다.

반응형