Linux Bash에서 Shell Script를 작성할 때 기본 명령어와 표준 입력/출력, 리다이렉션은 필수적으로 알아야 할 중요한 개념입니다. 이번 포스팅에서는 표준 입력/출력과 이를 활용한 리다이렉션(>
, >>
, <
, |
)에 대해 설명하고, 예제를 통해 이해를 돕겠습니다.
표준 입력/출력 기본 개념
Linux 시스템에서는 프로세스가 데이터를 주고받는 데 사용되는 세 가지 표준 스트림이 있습니다.
표준 입력 (Standard Input, stdin)
- 기본 파일 디스크립터 번호:
0
- 사용자 또는 파일로부터 데이터를 읽어들이는 스트림입니다.
- 기본 파일 디스크립터 번호:
표준 출력 (Standard Output, stdout)
- 기본 파일 디스크립터 번호:
1
- 프로세스가 처리한 데이터를 화면에 출력하는 스트림입니다.
- 기본 파일 디스크립터 번호:
표준 에러 (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 스크립트에서 데이터를 효율적으로 처리하고 관리하기 위한 강력한 도구입니다. 본 포스팅에서 다룬 내용과 예제를 통해 표준 입력/출력 및 리다이렉션의 기본 개념과 활용 방법을 익히셨기를 바랍니다.
'Linux Bash shell script' 카테고리의 다른 글
Bash Shell Script 기본 출력 명령어 [ echo, printf ] (0) | 2025.01.17 |
---|---|
Shell Script 파일 권한 설정과 실행 방법 (0) | 2025.01.16 |
Shell Script 실행 환경 설정 (0) | 2025.01.15 |
Shell Script의 용도와 장점 (0) | 2025.01.14 |
Linux Shell의 개념과 종류 소개 (0) | 2025.01.13 |