리눅스 명령어 조합의 시작: 파이프(|)와 리다이렉션 완전 정복

Table of Contents

앞선 글에서 ls, grep, cat 같은 기본 명령어를 하나씩 익혔다면, 이번 글은 그것들을 서로 연결하는 법을 다룹니다. 리눅스가 진짜 강력해지는 지점이 바로 여기예요. 명령어 하나하나는 단순하지만, 파이프(|)로 이어 붙이는 순간 마치 레고 블록처럼 원하는 작업을 조립할 수 있게 됩니다.

왜 명령어를 ‘연결’해야 할까?

윈도우에서 “특정 폴더에서 용량이 큰 파일 5개만 골라내기” 같은 작업을 하려면 파일 관리자를 열고, 정렬 기준을 바꾸고, 눈으로 세어야 합니다. 리눅스에서는 이걸 명령어 한 줄로 끝낼 수 있습니다.

핵심은 작은 도구를 조합한다는 리눅스의 철학입니다. 하나의 거대한 프로그램이 모든 걸 하는 대신, 한 가지 일만 잘하는 작은 명령어들을 파이프로 연결해 복잡한 작업을 만들어내는 거죠. 이 개념만 이해하면 리눅스 실력이 한 단계 올라갑니다.

그 연결 고리 역할을 하는 것이 바로 파이프리다이렉션입니다.


1부. 파이프(|): 앞 명령의 결과를 뒤로 넘기기

파이프 기호 |는 키보드에서 보통 백슬래시(\) 자리에 Shift와 함께 입력합니다. 역할은 간단합니다. 왼쪽 명령어의 출력 결과를 오른쪽 명령어의 입력으로 전달하는 것이죠.

말로만 들으면 어려우니 예시로 보겠습니다.

예시 1: 파일 목록 중에서 원하는 것만 걸러내기

현재 폴더에 파일이 수백 개 있다고 해봅시다. 그중 .txt 파일만 보고 싶다면?

ls | grep ".txt"

이 명령은 이렇게 동작합니다.

  1. ls가 폴더 안의 모든 파일 목록을 출력합니다.
  2. 그 목록이 파이프(|)를 타고 grep으로 넘어갑니다.
  3. grep이 그중 .txt가 포함된 줄만 걸러서 보여줍니다.

즉 “목록을 뽑아서(ls) → 그중 원하는 것만 찾는다(grep)”는 두 동작을 한 줄로 이은 겁니다.

예시 2: 실행 중인 프로세스에서 특정 프로그램 찾기

컴퓨터에서 크롬이 실행 중인지 확인하고 싶을 때:

ps aux | grep chrome

ps aux는 실행 중인 모든 프로세스를 출력하는데, 그 양이 어마어마합니다. 파이프로 grep chrome을 연결하면 크롬과 관련된 줄만 쏙 뽑아 볼 수 있습니다.

예시 3: 파이프 여러 개 이어 붙이기

파이프는 두 개, 세 개도 연달아 쓸 수 있습니다. 특정 단어가 들어간 줄이 몇 개인지 세어볼까요?

cat server.log | grep "error" | wc -l

동작 순서는 이렇습니다.

  1. cat이 로그 파일 전체를 출력합니다.
  2. grep "error"가 error가 든 줄만 걸러냅니다.
  3. wc -l이 그 줄의 개수를 셉니다.

결과는 “이 로그 파일에 에러가 총 몇 번 기록됐는가”라는 숫자 하나로 나옵니다. 명령어 세 개가 물 흐르듯 연결된 거죠.

💡 wc -l은 word count의 줄 세기 옵션으로, 입력된 텍스트의 줄 수를 세어줍니다. 파이프와 함께 자주 쓰이는 단짝입니다.


2부. 리다이렉션(>, >>): 결과를 화면 대신 파일로

파이프가 결과를 ‘다른 명령어’로 보낸다면, 리다이렉션은 결과를 ‘파일’로 보냅니다. 화면에 출력하는 대신 파일에 저장하는 것이죠.

> : 파일에 저장하기 (덮어쓰기)

ls > filelist.txt

이 명령은 ls의 결과를 화면에 보여주지 않고 filelist.txt 파일에 저장합니다. 파일이 이미 있으면 기존 내용을 지우고 새로 씁니다.

>> : 파일 끝에 이어 붙이기

echo "오늘 작업 완료" >> log.txt

>>는 기존 내용을 지우지 않고 파일 맨 끝에 새 내용을 추가합니다. 로그를 계속 쌓아갈 때 유용합니다.

⚠️ >>>의 차이를 헷갈리면 소중한 파일 내용이 통째로 날아갈 수 있습니다. > 하나는 “덮어쓰기”, 두 개 >>는 “이어쓰기”로 기억하세요.

파이프와 리다이렉션을 함께 쓰기

앞에서 배운 것들을 한 번에 조합해 보겠습니다. 로그 파일에서 에러만 뽑아 별도 파일로 저장하기:

cat server.log | grep "error" > error_only.txt

로그에서 에러가 든 줄만 걸러(grep), 그 결과를 화면이 아닌 error_only.txt에 저장(>)합니다. 실무에서 정말 자주 쓰는 패턴입니다.


3부. 실전에서 바로 써먹는 조합 예시

배운 것을 종합해서, 실제로 유용한 명령어 몇 개를 소개합니다. 지금 당장 이해가 안 돼도 괜찮습니다. “이런 게 가능하구나” 정도만 느껴도 충분합니다.

현재 폴더에서 용량이 큰 파일 순으로 정렬

ls -lS

텍스트 파일에서 중복 줄 제거하고 정렬

sort names.txt | uniq

sort가 줄을 알파벳순으로 정렬하고, uniq가 연속된 중복 줄을 하나로 합칩니다. 두 명령은 파이프로 짝지어 쓰는 대표적인 조합입니다.

특정 단어가 든 파일을 찾아 개수까지 세기

grep -rl "TODO" ./ | wc -l

폴더 전체에서 “TODO”가 들어간 파일을 찾아(grep -rl), 그 파일이 몇 개인지 셉니다(wc -l).


마무리: 조합이 곧 실력이다

리눅스 명령어를 100개 외우는 것보다, 10개를 파이프로 자유롭게 조합하는 능력이 훨씬 강력합니다. 오늘 배운 내용을 정리하면 이렇습니다.

  • | (파이프): 앞 명령의 결과를 뒤 명령으로 넘긴다
  • > (리다이렉션): 결과를 파일에 저장한다 (덮어쓰기)
  • >> (추가): 결과를 파일 끝에 이어 붙인다

처음에는 파이프 하나만 붙여보는 것부터 시작하세요. ls | grep 파일이름처럼요. 익숙해지면 자연스럽게 두 개, 세 개로 늘려가게 됩니다. 그 순간부터 터미널은 단순한 명령 창이 아니라, 원하는 작업을 조립하는 작업대가 됩니다.

다음 글에서는 개발자가 아니어도 알아두면 좋은 Git 기초를 다룰 예정입니다. 코드를 다루지 않더라도 문서 버전 관리에 유용하게 쓸 수 있는 도구예요. 궁금한 점은 댓글로 남겨주세요.

사용자 리뷰