[이어드림스쿨 1주차] Linux - 파일 리다이렉션(File Redirection)과 파이프(Pipe), 마운트(Mount)

KiwiChipKiwiChip
4 min read

1. 파일 리다이렉션 (File Redirection)

파일 리다이렉션은 표준 입력(stdin), 표준 출력(stdout), 표준 오류(stderr) 등의 흐름을 변경하여 특정 파일로 저장하거나 다른 곳으로 전달하는 기능을 의미한다.

1.1 표준 스트림 (Standard Stream)

리눅스 시스템에서는 다음과 같은 세 가지 표준 스트림이 존재한다.

스트림설명파일 디스크립터 번호
stdin표준 입력 (키보드 입력)0
stdout표준 출력 (화면 출력)1
stderr표준 오류 출력 (에러 메시지)2

1.2 파일 리다이렉션 연산자

연산자설명예제
>표준 출력을 파일로 저장 (덮어쓰기)ls > ls.txt
>>표준 출력을 파일에 추가ls >> ls.txt
<파일 내용을 표준 입력으로 전달cat < input.txt
2>표준 오류 출력을 파일로 저장python script.py 2> error.log
2>>표준 오류 출력을 파일에 추가python script.py 2>> error.log
&>표준 출력과 표준 오류를 동시에 저장python script.py &> output.log

1.3 파일 리다이렉션 예제

# ls 명령어의 출력 결과를 ls.txt 파일에 저장
ls > ls.txt

# ls 명령어의 결과를 기존 ls.txt 파일에 추가 (덮어쓰지 않음)
ls >> ls.txt

# 표준 입력을 input.txt에서 받아서 cat 실행, 결과는 elice.txt에 저장
cat < input.txt > elice.txt

# Python 프로그램 실행 시 input.txt를 입력 파일로 사용하고, 출력 결과는 result.txt에 추가 저장
python hello.py < input.txt >> result.txt

# 오류 메시지를 error.txt에 저장
python script.py 2> error.txt

2. 파이프 (Pipe, |)

파이프(|)는 한 프로세스의 출력 결과를 다른 프로세스의 입력으로 전달하는 기능을 수행한다.

2.1 파이프의 기본 개념

  • 여러 개의 명령어를 결합하여 중간 결과를 파일 없이 직접 전달 가능.

  • 연속된 명령어를 통해 필터링 및 데이터 처리 가능.

2.2 파이프 예제

# a.txt의 첫 10줄을 출력한 후, 숫자가 포함된 줄만 필터링하여 result.txt에 저장
head a.txt | grep [0-9] > result.txt

# 현재 디렉토리 내에서 "user01"이라는 이름이 포함된 파일을 검색하고 output.txt에 저장
ls | grep user01 > output.txt

3. 파일 리다이렉션과 파이프의 차이

구분설명예제
파일 리다이렉션 (>, <)입력 또는 출력을 파일과 연결python script.py < input.txt > output.txt
파이프 (``)프로세스 간 데이터를 직접 전달 (파일 저장 없음)

예제 비교

  • cat input.txt > output.txt: input.txt 내용을 읽어 output.txt에 저장.

  • cat input.txt | python script.py: input.txt 내용을 python script.py에 직접 전달.


4. 마운트 (Mount)

마운트는 외부 저장 장치를 특정 디렉토리에 연결하여 사용할 수 있도록 하는 과정이다.

4.1 마운트 기본 개념

  • 리눅스에서는 USB, 외장 하드, 추가적인 하드디스크 등 물리적 장치를 연결하기 위해 마운트 작업이 필요.

  • 윈도우에서는 자동으로 연결되는 PnP(Plug and Play) 기능이 있지만, 리눅스에서는 직접 마운트해야 한다.

4.2 마운트 관련 명령어

명령어설명
mount현재 마운트된 디스크 확인
mount [device] [directory]특정 디바이스를 특정 디렉토리에 마운트
umount [device]마운트 해제
df -h마운트된 디스크의 사용량 확인
fdisk -l연결된 디스크 및 파티션 확인

4.3 마운트 예제

# /dev/sdb3 (USB 또는 외장하드) 장치를 /tmp/usb 디렉토리에 마운트
mount /dev/sdb3 /tmp/usb

# 마운트 해제 (USB 제거 전 필요)
umount /tmp/usb

# 현재 마운트된 디스크 정보 확인
df -h

# 연결된 디스크 목록과 파일 시스템 확인
fdisk -l

5. 요약

  1. 파일 리다이렉션 (>, <, 2> 등)

    • 표준 입력/출력/오류를 파일과 연결.

    • >: 출력 저장(덮어쓰기), >>: 출력 추가, <: 파일에서 입력 가져오기.

    • 2>: 오류를 특정 파일에 저장.

  2. 파이프 (|)

    • 프로세스 간 데이터를 직접 전달.

    • ls | grep user01: ls 명령어의 출력을 grep의 입력으로 사용.

  3. 마운트 (mount, umount)

    • 외부 저장 장치를 특정 디렉토리에 연결하여 사용.

    • mount /dev/sdb3 /tmp/usb: /dev/sdb3 장치를 /tmp/usb에 마운트.

💡 팁:
파일 리다이렉션은 입출력을 파일과 연결, 파이프는 프로세스 간 데이터 전달, 마운트는 외부 저장 장치를 시스템에 연결하는 기능!

0
Subscribe to my newsletter

Read articles from KiwiChip directly inside your inbox. Subscribe to the newsletter, and don't miss out.

Written by

KiwiChip
KiwiChip

I'm currently learning Python and studying RAG (Retrieval-Augmented Generation).