표준 입력 (stdin)
100%

Text-Fu · 레슨 2

표준 입력 (stdin)

프로그램이 표준 입력을 읽는 방식과 Bash가 그 스트림을 파일에 연결하는 방법을 배웁니다.

stdin으로 줄여 쓰는 표준 입력은 프로그램이 들어오는 데이터를 보통 읽는 스트림입니다. 대화형 터미널에서 쉘은 일반적으로 stdin을 터미널 입력에 연결해 프로그램이 사용자가 입력한 내용을 읽게 합니다.

표준 입력과 파일 디스크립터 0

관례상 세 표준 스트림은 다음 파일 디스크립터 번호를 사용합니다.

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

프로그램은 이 스트림을 사용할지와 사용 방식을 선택할 수 있습니다. stdin을 읽도록 만든 명령어는 파일 피연산자나 다른 입력 소스가 없으면 흔히 터미널 입력을 기다립니다.

표준 입력을 관례상 나타내는 파일 디스크립터는 무엇인가요?

파일을 stdin으로 리디렉션하기

< 연산자는 Bash가 파일을 읽기용으로 열어 명령어의 stdin에 연결하게 합니다.

$ cat < peanuts.txt
Hello World

쉘은 < peanuts.txt를 처리하고 cat은 파일 디스크립터 0을 읽을 뿐입니다. 경로는 일반 파일 피연산자로 cat에 전달되지 않습니다.

입력 파일이 없거나 열 수 없으면 쉘이 리디렉션 오류를 내고 해당 입력으로 명령어를 시작하지 않습니다.

sortnames.txt에서 표준 입력을 읽게 하는 명령어는 무엇인가요?

파일 피연산자와 입력 리디렉션

일부 명령어는 파일 이름 피연산자나 stdin을 모두 받을 수 있지만 결과가 약간 다를 수 있습니다.

$ wc -l peanuts.txt
1 peanuts.txt
$ wc -l < peanuts.txt
1

두 형식은 같은 데이터의 줄을 셉니다. 첫 번째에서는 wc가 파일 이름을 인자로 받으므로 이름을 알고, 두 번째에서는 stdin 스트림만 받아 출력할 파일 이름이 없습니다.

wc -l < peanuts.txt가 보통 출력에서 peanuts.txt를 생략하는 이유는 무엇인가요?

입력과 출력 리디렉션 결합하기

한 명령줄에서 둘 이상의 스트림을 리디렉션할 수 있습니다.

$ cat < peanuts.txt > banana.txt

쉘은 서로 독립적인 두 연결을 수행합니다.

  1. < peanuts.txtpeanuts.txtcat의 stdin으로 엽니다.
  2. > banana.txtbanana.txt를 만들거나 잘라내고 cat의 stdout에 연결합니다.

cat은 stdin에서 바이트를 읽어 stdout으로 쓰므로 banana.txt가 원본 내용을 받습니다. 일반적인 파일 복사에는 cp peanuts.txt banana.txt가 의도를 더 직접적으로 전달하며, 이 예제는 스트림 연결을 보여 주기 위한 것입니다.

cat < input.txt > output.txt에서 stdin을 제공하는 파일과 stdout을 받는 파일은 각각 무엇인가요?

입출력 리디렉션은 다음 실습에서 연습해 보세요.

  1. 리눅스에서 입력 및 출력 리디렉션 - >, >>, 2> 및 tee 명령과 같은 연산자를 사용하여 표준 출력 (stdout), 표준 오류 (stderr), 표준 입력 (stdin) 을 조작하여 명령의 데이터 흐름을 제어하는 연습을 합니다.
  2. 데이터 스트림 리디렉션 - 리눅스 스트림 리디렉션 기술을 배웁니다. 표준 입력, 출력 및 오류 스트림을 조작하고, 출력을 결합하며, 고급 파일 작업을 위해 /dev/null을 활용합니다.

레슨 완료

표준 입력 (stdin) 완료

이제 쉘을 통해 명령어의 표준 입력을 파일에 연결할 수 있습니다.

  • stdin이 파일 디스크립터 0임을 알 수 있습니다.

  • <로 읽을 수 있는 파일을 리디렉션할 수 있습니다.

  • 파일 이름 피연산자와 리디렉션 입력을 구분할 수 있습니다.

  • stdin과 stdout 리디렉션을 의도적으로 결합할 수 있습니다.

학습 진행 상황 저장

무료 계정을 만들어 이 레슨을 저장하고 어떤 기기에서든 계속 학습하세요.

무료 계정 만들기
다음 수업
Text-Fu(으)로 돌아가기