Linux Bash shell script

Linux Bash Shell Script 표준 입력/출력 및 리다이렉션

임베디드 친구 2025. 1. 18. 10:05
반응형

Linux Bash에서 Shell Script를 작성할 때 기본 명령어와 표준 입력/출력, 리다이렉션은 필수적으로 알아야 할 중요한 개념입니다. 이번 포스팅에서는 표준 입력/출력과 이를 활용한 리다이렉션(>, >>, <, |)에 대해 설명하고, 예제를 통해 이해를 돕겠습니다.

표준 입력/출력 기본 개념

Linux 시스템에서는 프로세스가 데이터를 주고받는 데 사용되는 세 가지 표준 스트림이 있습니다.

  1. 표준 입력 (Standard Input, stdin)

    • 기본 파일 디스크립터 번호: 0
    • 사용자 또는 파일로부터 데이터를 읽어들이는 스트림입니다.
  2. 표준 출력 (Standard Output, stdout)

    • 기본 파일 디스크립터 번호: 1
    • 프로세스가 처리한 데이터를 화면에 출력하는 스트림입니다.
  3. 표준 에러 (Standard Error, stderr)

    • 기본 파일 디스크립터 번호: 2
    • 에러 메시지를 출력하는 스트림입니다.

리다이렉션의 개념

리다이렉션은 입력/출력을 다른 위치로 변경하는 기능입니다. 기본적으로 출력은 화면으로, 입력은 키보드에서 오지만, 이를 파일이나 다른 명령으로 변경할 수 있습니다.

출력 리다이렉션 (>)

>는 명령의 출력을 파일로 저장합니다. 만약 파일이 존재하면 내용을 덮어씁니다.

예제

# hello.txt 파일에 "Hello, World!" 출력
echo "Hello, World!" > hello.txt

# hello.txt 파일 내용 확인
cat hello.txt

출력 추가 리다이렉션 (>>)

>>는 명령의 출력을 파일 끝에 추가합니다. 기존 파일의 내용은 유지됩니다.

예제

# hello.txt 파일에 "Appending Line" 추가
echo "Appending Line" >> hello.txt

# hello.txt 파일 내용 확인
cat hello.txt

입력 리다이렉션 (<)

<는 파일에서 입력을 읽어 명령으로 전달합니다.

예제

# input.txt 파일 생성
echo -e "Line 1\nLine 2" > input.txt

# input.txt 내용을 cat 명령에 입력
cat < input.txt

파이프 (|)

|는 한 명령의 출력을 다른 명령의 입력으로 연결합니다.

예제

# ls 명령 결과를 grep으로 전달하여 특정 파일 검색
ls | grep .txt

파일 디스크립터와 리다이렉션

리다이렉션은 파일 디스크립터를 명시적으로 지정하여 더 정밀하게 제어할 수 있습니다.

표준 출력 리다이렉션

# stdout을 output.txt에 저장
ls > output.txt

표준 에러 리다이렉션

# stderr을 error.txt에 저장
ls nonexistent_file 2> error.txt

표준 출력과 표준 에러 모두 리다이렉션

# stdout과 stderr을 함께 저장
ls nonexistent_file > output.txt 2>&1

/dev/null 사용

/dev/null은 데이터를 버리는 특수 파일입니다.

예제

# 에러 메시지를 무시
ls nonexistent_file 2> /dev/null

실습 예제: 로그 파일 관리

다음은 로그 파일을 생성하고 관리하는 예제입니다.

예제

# log.txt 파일에 로그 저장
for i in {1..5}; do
  echo "Log Entry $i: $(date)" >> log.txt
  sleep 1
done

# log.txt 파일 내용 출력
cat log.txt

# 오류 로그 생성 및 저장
ls nonexistent_file 2>> error.log

# error.log 파일 내용 출력
cat error.log

결론

리다이렉션은 Bash 스크립트에서 데이터를 효율적으로 처리하고 관리하기 위한 강력한 도구입니다. 본 포스팅에서 다룬 내용과 예제를 통해 표준 입력/출력 및 리다이렉션의 기본 개념과 활용 방법을 익히셨기를 바랍니다.

반응형