표준 입력과 표준 출력

컴퓨터에서 표준 입력(Standard Input), 표준 출력(Standard Output), 그리고 표준 오류 출력(Standard Error)은 프로그램과 사용자 또는 다른 프로그램 간의 데이터 통신을 위한 기본적인 방법입니다.

  1. 표준 입력(Standard Input): 프로그램에 데이터를 제공하는 기본적인 방법입니다. 대부분의 경우, 키보드에서 입력하는 데이터를 의미합니다. 예를 들어, 터미널에서 명령어를 입력하면, 그 명령어는 표준 입력을 통해 프로그램에 전달됩니다.
  2. 표준 출력(Standard Output): 프로그램이 결과를 출력하는 기본적인 방법입니다. 대부분의 경우, 모니터에 표시되는 데이터를 의미합니다. 예를 들어, 터미널에서 'ls' 명령어를 입력하면, 그 결과는 표준 출력을 통해 화면에 표시됩니다.
  3. 표준 오류 출력(Standard Error): 프로그램이 오류 메시지나 진단을 출력하는 표준적인 방법입니다. 표준 출력과 비슷하게, 대부분의 경우 모니터에 표시되는 데이터를 의미합니다. 하지만 표준 출력과는 다르게, 표준 오류 출력은 프로그램의 주요 결과가 아닌 오류 메시지나 진단 정보를 출력하는 데 사용됩니다.

이 세 가지는 프로그램이 사용자와 상호작용하거나 다른 프로그램과 데이터를 주고받을 수 있는 가장 기본적인 인터페이스를 제공합니다. 이들은 터미널 환경에서 특히 중요하며, 리다이렉션(입출력의 방향을 바꾸는 것)과 파이프라인(한 프로그램의 출력을 다른 프로그램의 입력으로 사용하는 것)과 같은 고급 기능을 가능하게 합니다.

리다이렉트

리눅스에서의 리다이렉션(Redirection)은 표준 입력(Standard Input, stdin), 표준 출력(Standard Output, stdout), 그리고 표준 에러(Standard Error, stderr)의 데이터 흐름을 조절하는데 사용됩니다.

이를 통해, 출력 결과를 파일에 저장하거나, 파일로부터 입력을 받는 등의 작업을 수행할 수 있습니다. 아래에 간단한 사용 예시를 들어 설명하겠습니다.

  1. 표준 출력을 파일로 리다이렉션: 명령의 출력을 파일에 저장하려면, '>' 문자를 사용합니다. 예를 들어, ls 명령의 출력을 file.txt 파일에 저장하려면 다음과 같이 명령을 실행합니다.

    ls > file.txt
    

    위 명령은 ls 명령의 출력 결과를 file.txt 파일에 저장합니다. 만약 file.txt 파일이 이미 존재하면 기존 내용을 모두 삭제한 후 새로운 결과를 씁니다.

  2. 표준 출력을 파일로 추가: 기존의 파일에 결과를 추가하려면, '>>' 문자를 사용합니다.

    ls >> file.txt
    

    위 명령은 ls 명령의 출력 결과를 file.txt 파일의 마지막에 추가합니다.

  3. 표준 입력을 파일로부터 받기: 명령에 입력을 파일로부터 받으려면, '<' 문자를 사용합니다.

    sort < file.txt
    

    위 명령은 file.txt 파일의 내용을 sort 명령에 입력으로 제공합니다.

  4. 표준 에러를 파일로 리다이렉션: 명령의 에러 메시지를 파일에 저장하려면, '2>' 문자를 사용합니다.

    ls /nonexistent_directory 2> error.txt
    

    위 명령은 **/nonexistent_directory**에 대한 ls 명령의 에러 메시지를 error.txt 파일에 저장합니다.

이와 같이 리눅스에서는 리다이렉션을 통해 입출력의 흐름을 원하는 대로 조정할 수 있습니다.