stdout 및 stderr을 파일로 리디렉션

Redirect Stdout Stderr File



명령 출력을 파일로 리디렉션하면 터미널 창에 오류 메시지가 인쇄되는 것을 알 수 있습니다. bash와 같은 Linux 셸에서 실행되는 모든 명령은 3개의 일반 I/O 스트림을 사용합니다. 숫자 파일 설명자는 각 스트림을 나타내는 데 사용됩니다.

  • 표준 입력 스트림(stdin): 0
  • 표준 출력 스트림(stdout): 1
  • 표준 오류 스트림(stderr): 2

이 게시물에서는 stdout 및 stderr을 파일로 리디렉션하는 정보를 파악합니다.







표준 출력 (표준 출력):

Linux를 기반으로 하는 각 운영 체제는 실행된 명령의 기본 위치에 대한 확신을 가지고 있습니다. 모든 사람들은 이 개념을 stdout 또는 표준 출력이라고 하여 더 쉽게 들립니다. Bash 또는 Zsh 셸은 지속적으로 기본 출력 위치를 찾고 있습니다. 쉘이 새 출력을 감지하면 터미널 화면에 표시하여 볼 수 있습니다. 그렇지 않으면 출력을 기본 위치로 보냅니다.



표준 오차(stderr):

표준 오류 또는 stderr은 표준 입력 및 출력과 유사하지만 오류 메시지를 저장하는 데 사용됩니다. 표준 오류는 터미널을 사용하여 명령줄이나 파일로 리디렉션할 수 있습니다. 별도의 로그 파일에 메시지를 기록 또는 저장하거나 오류 메시지를 숨기려면 stderr을 리디렉션하면 도움이 됩니다. 이제 stdout 및 stderr 리디렉션의 실용적인 측면을 살펴보겠습니다.



stdout 및 stderr을 파일로 리디렉션:

리디렉션은 프로그램 출력을 캡처하여 다른 명령이나 파일에 대한 입력으로 보내는 방법입니다. I/O 스트림은 n> 연산자를 사용하여 리디렉션할 수 있습니다. 여기서 n은 파일 설명자 번호입니다. stdout을 리디렉션하기 위해 1>을 사용하고 stderr의 경우 2>를 연산자로 추가합니다.





리디렉션된 출력을 현재 디렉터리에 저장하기 위해 sample.txt라는 파일을 만들었습니다.



(command > file)은 터미널에 표시된 표준 오류와 함께 표준 출력만 리디렉션하는 고전적인 리디렉션 연산자로 간주됩니다. stderr을 리디렉션하는 다양한 옵션도 보여줍니다.

stderr 및 stdout을 별도의 파일로 리디렉션:

다음은 stdout 및 stderr을 별도의 파일로 리디렉션하는 명령 구문입니다.

명령 >2>오류

아래 주어진 명령은 출력을 출력 파일로 리디렉션하고 오류 메시지를 오류 파일로 리디렉션합니다.

$고양이샘플.txt>2>오류

stderr을 stdout으로 리디렉션:

모든 것을 단일 파일에 저장하기 위해 프로그램의 표준 출력으로 stderr을 리디렉션하는 것이 일반적인 관행입니다. 다음은 stderr을 stdout으로 리디렉션하는 명령 구문입니다.

명령 >2> &1$ >샘플 파일.txt2> &1

$고양이샘플 파일.txt

> out 리디렉션은 표준 출력을 samplefile.txt로 리디렉션하고 2>&1은 표준 출력을 표준 출력의 현재 위치로 리디렉션합니다.

stderr이 먼저 stdout으로 리디렉션되는 경우 아래 주어진 명령을 사용하여 stdout을 파일로 리디렉션합니다.

명령 2> &1 > 파일$ -로 2> &1 >샘플 파일.txt

$고양이샘플 파일.txt

&>는 2>&1이 수행하는 것과 동일한 기능에도 사용됩니다.

명령 &> 파일$ &>샘플 파일.txt

$고양이샘플 파일.txt

stdout 및 stderr을 단일 파일로 리디렉션:

모든 셸은 이 형식 리디렉션을 지원하지 않지만 bash와 Zsh는 지원합니다. 다음 구문을 사용하여 Stdout 및 stderr을 리디렉션할 수 있습니다.

명령 &>$고양이샘플.txt&>

이 기사의 다음 섹션에서는 stdout 및 stderr 리디렉션에 대한 별도의 예를 확인할 것입니다.

stdout을 파일로 리디렉션:

표준 출력은 파일 설명자 번호 목록에서 1로 표시됩니다. 파일 설명자 번호가 없는 리디렉션 명령의 경우 터미널은 값을 1로 설정합니다. 표준 출력을 파일로 리디렉션하는 구문은 다음과 같습니다.

명령 > 파일

ls -al 명령의 표준 출력을 저장하기 위해 sample.file을 사용하고 있습니다.

$ -로 >샘플.txt

$고양이샘플.txt

명령 1> 파일$ 1>샘플.txt

$고양이샘플.txt

stderr을 파일로 리디렉션:

stderr을 파일로 리디렉션하려면 2> 연산자를 사용합니다.

명령 2> 파일 $ -로 2>샘플.txt

단일 리디렉션 명령에서 stderr 및 stdout에 대한 실행을 결합할 수 있습니다.

명령 2>error.txt1>출력.txt

아래 주어진 예에서 오류 메시지는 error.txt에 저장되며, 여기서 output.txt는 ls 명령의 표준 출력을 갖게 됩니다.

$ 2>error.txt1>출력.txt

$고양이출력.txt

결론:

I/O 스트림에 대한 리디렉션 및 파일 설명자의 개념을 갖는 것은 Linux 터미널에서 작업하는 동안 매우 중요합니다. 이 게시물에서 우리는 stdout 및 stderr을 포함한 일반 I/O 스트림에 대해 이야기했습니다. 이 게시물의 첫 번째 섹션에서는 리디렉션, I/O 스트림 및 숫자 파일 설명자에 대한 자세한 정보를 제공합니다. 다음으로 다양한 형식의 stdout 및 stderr 리디렉션에 대한 실제 예를 보았습니다.