Ubuntu – 파이프(Pipe)/필터(filter)/리다이렉션(redirection)

파이프(Pipe)

파이프(|)는 하나의 명령어 출력을 다른 명령어의 입력으로 전달하는 역할

파이프는 명령어의 출력을 다른 명령어로 전달하는데 매우 유용하며, 이로 인해 복잡한 작업을 단순화할 수 있음

사용법

# command1은 먼저 실행되어 출력을 생성하고, 이 출력이 command2로 전달
command1 | command2
# ls 명령어로 디렉토리 목록을 출력하고, 그 결과를 less 명령어로 페이지 단위로 스크롤할 수 있게 만듬
ls -al | less
ls -al /etc | less
# ps aux로 실행 중인 프로세스를 나열하고, 그 중에서 apache라는 단어가 포함된 항목만 필터링하여 출력
ps aux | grep apache

필터(Filter)

필터는 파이프와 함께 사용되며, 데이터를 수정하거나 변환하는 명령어

보통 출력된 데이터를 필터링하거나 변경할 때 사용

grepawksedsortcut, tail, wc 등의 명령어가 필터에 해당

사용법

  • grep: 패턴에 맞는 줄을 검색
# file.txt에서 keyword를 포함하는 줄만 출력
cat file.txt | grep "keyword"

# ps -ef는 모든 프로세스 번호를 출력하므로 bash 라는 글자가 들어간 프로세스만 출력
ps -ef | grep bash
  • awk: 파일을 특정 구분자로 나누어 처리
# file.txt의 각 줄에서 첫 번째 열만 출력
cat file.txt | awk '{print $1}'
  • sort: 데이터를 정렬
# 디렉토리 내 파일들을 알파벳 순으로 정렬하여 출력
ls | sort
  • cut: 텍스트를 구분자로 나누어 일부만 선택.
# file.txt에서 공백을 기준으로 첫 번째 필드를 출력
cat file.txt | cut -d' ' -f1

  • sed: 텍스트 스트림을 수정(편집).
# file.txt에서 old라는 단어를 new로 바꿔 출력
cat file.txt | sed 's/old/new/g'

리디렉션(Redirection)

리디렉션은 명령어의 출력을 파일로 저장하거나, 파일을 명령어의 입력으로 전달하는 기능

리디렉션은 출력 리디렉션과 입력 리디렉션으로 나눌 수 있음

출력 리디렉션

출력 리디렉션은 명령어의 출력을 파일로 보낼 때 사용 > 또는 >>를 사용

  • > 출력을 새로운 파일에 덮어쓰기
# "Hello, World!"를 hello.txt라는 파일에 덮어씁니다.
echo "Hello, World!" > hello.txt
  • >> 출력을 파일 끝에 추가
# "New line"을 hello.txt 파일에 추가합니다.
echo "New line" >> hello.txt

입력 리디렉션

입력 리디렉션은 파일을 명령어의 입력으로 전달하는 데 사용 < 기호를 사용

  • <: 파일을 명령어의 입력으로 사용
# file.txt의 내용을 정렬하여 출력
sort < file.txt

# list.txt 파일을 정렬하고 out.txt에 쓰기
sort < list.txt > out.txt

표준 오류 리디렉션

표준 오류를 파일로 리디렉션할 수 있습니다. 2> 또는 2>>를 사용

  • 2>: 오류 출력을 파일로 리디렉션
# 명령어의 오류 메시지를 error.log 파일에 저장
command 2> error.log
  • 2>>: 오류 출력을 파일 끝에 추가
# 명령어의 오류 메시지를 error.log 파일 끝에 저장
command 2>> error.log

출력과 오류 모두 리디렉션

출력과 오류를 모두 하나의 파일로 리디렉션

# output.log 파일에 표준 출력과 표준 오류가 모두 기록
command > output.log 2>&1

파이프, 필터, 리디렉션을 결합 예시

여러 명령어를 조합하여 복잡한 작업을 할 수 있습니다.

예를 들어, 특정 로그 파일에서 오류 메시지만 추출하여 정렬하고, 이를 파일로 저장할 수 있습니다.

# /var/log/syslog 파일에서 "error"라는 단어가 포함된 행을 찾고, 그 결과를 정렬하여 error_log.txt에 저장합니다.
cat /var/log/syslog | grep "error" | sort > error_log.txt

댓글 달기

이메일 주소는 공개되지 않습니다. 필수 필드는 *로 표시됩니다

위로 스크롤