Linux Bash shell script

Bash Shell Script 파일 입출력 (cat, tee, >)

임베디드 친구 2025. 2. 1. 10:52
반응형

Bash 스크립트에서 파일 입출력은 데이터를 읽고 쓰는 기본적인 작업입니다. 이 글에서는 cat, tee, 그리고 > 명령어를 사용하여 파일 입출력을 다루는 방법을 설명합니다. 각각의 명령어와 활용 예제를 통해 Bash 스크립트 작성에 대한 이해를 돕겠습니다.


1. cat 명령어로 파일 읽기

cat(concatenate)은 파일의 내용을 출력하거나 여러 파일의 내용을 결합할 때 사용됩니다.

기본 사용법

cat [옵션] [파일명]

주요 옵션

  • -n: 출력 라인에 번호 추가
  • -E: 각 줄 끝에 $ 표시

예제

파일 내용 출력

# sample.txt의 내용을 출력합니다.
cat sample.txt

파일 여러 개 결합

# file1.txt와 file2.txt를 결합하여 출력합니다.
cat file1.txt file2.txt

출력 라인 번호 추가

cat -n sample.txt

줄 끝에 $ 추가

cat -E sample.txt

스크립트 활용 예제

#!/bin/bash
# 모든 txt 파일의 내용을 결합하여 하나의 파일로 저장
output_file="merged.txt"
cat *.txt > $output_file
echo "모든 txt 파일이 $output_file에 병합되었습니다."

2. tee 명령어로 출력 저장 및 화면 출력

tee는 데이터를 표준 출력(화면)으로 출력하면서 동시에 파일에 저장할 수 있습니다.

기본 사용법

command | tee [옵션] [파일명]

주요 옵션

  • -a: 파일에 내용을 추가 (append)

예제

표준 출력과 파일 저장

echo "Hello, World!" | tee output.txt

파일에 내용 추가

echo "추가 내용" | tee -a output.txt

여러 파일에 동시에 저장

echo "여러 파일 저장" | tee file1.txt file2.txt

스크립트 활용 예제

#!/bin/bash
# 시스템 업데이트 로그를 저장 및 출력
log_file="update.log"
echo "시스템 업데이트를 시작합니다."
sudo apt update | tee -a $log_file
echo "시스템 업데이트 완료. 로그는 $log_file에 저장되었습니다."

3. >>>로 파일에 데이터 쓰기

Bash에서 >>>는 출력 리다이렉션에 사용됩니다.

기본 사용법

  • >: 파일에 새로운 내용 쓰기 (기존 내용 덮어쓰기)
  • >>: 파일 끝에 내용 추가 (append)

예제

파일 생성 및 쓰기

echo "새로운 파일 내용" > newfile.txt

파일에 내용 추가

echo "추가 내용" >> newfile.txt

명령어 출력 저장

ls -l > directory_list.txt

스크립트 활용 예제

#!/bin/bash
# 시스템 리소스 상태를 파일로 저장
output_file="system_status.txt"

echo "CPU 정보:" > $output_file
lscpu >> $output_file

echo "메모리 정보:" >> $output_file
free -h >> $output_file

echo "디스크 정보:" >> $output_file
df -h >> $output_file

echo "$output_file에 시스템 상태 정보가 저장되었습니다."

4. 세 명령어를 조합하여 활용하기

cat, tee, >, >>를 조합하면 강력한 입출력 작업이 가능합니다.

예제

여러 파일 병합 및 저장

#!/bin/bash
# 텍스트 파일 병합 및 결과 저장
echo "파일 병합을 시작합니다."
output_file="merged_files.txt"
cat file1.txt file2.txt | tee $output_file

echo "병합된 내용이 $output_file에 저장되었습니다."

명령어 출력 병합 및 로그 저장

#!/bin/bash
# 디렉토리와 파일 정보를 결합하여 저장
log_file="directory_info.log"

echo "디렉토리 정보:" | tee $log_file
ls -l | tee -a $log_file

echo "현재 디스크 상태:" | tee -a $log_file
df -h | tee -a $log_file

echo "정보가 $log_file에 저장되었습니다."

결론

Bash에서 파일 입출력은 스크립트 작성에 필수적인 부분입니다. cat, tee, 그리고 > 를 활용하여 효율적으로 파일을 읽고 쓰며, 데이터를 결합하거나 저장할 수 있습니다. 위의 예제와 스크립트를 참고하여 실습해 보세요. Bash 파일 입출력의 유용성을 더욱 체감할 수 있을 것입니다.

반응형