앞선 글에서
ls,grep,cat같은 기본 명령어를 하나씩 익혔다면, 이번 글은 그것들을 서로 연결하는 법을 다룹니다. 리눅스가 진짜 강력해지는 지점이 바로 여기예요. 명령어 하나하나는 단순하지만, 파이프(|)로 이어 붙이는 순간 마치 레고 블록처럼 원하는 작업을 조립할 수 있게 됩니다.
왜 명령어를 ‘연결’해야 할까?
윈도우에서 “특정 폴더에서 용량이 큰 파일 5개만 골라내기” 같은 작업을 하려면 파일 관리자를 열고, 정렬 기준을 바꾸고, 눈으로 세어야 합니다. 리눅스에서는 이걸 명령어 한 줄로 끝낼 수 있습니다.
핵심은 작은 도구를 조합한다는 리눅스의 철학입니다. 하나의 거대한 프로그램이 모든 걸 하는 대신, 한 가지 일만 잘하는 작은 명령어들을 파이프로 연결해 복잡한 작업을 만들어내는 거죠. 이 개념만 이해하면 리눅스 실력이 한 단계 올라갑니다.
그 연결 고리 역할을 하는 것이 바로 파이프와 리다이렉션입니다.
1부. 파이프(|): 앞 명령의 결과를 뒤로 넘기기
파이프 기호 |는 키보드에서 보통 백슬래시(\) 자리에 Shift와 함께 입력합니다. 역할은 간단합니다. 왼쪽 명령어의 출력 결과를 오른쪽 명령어의 입력으로 전달하는 것이죠.
말로만 들으면 어려우니 예시로 보겠습니다.
예시 1: 파일 목록 중에서 원하는 것만 걸러내기
현재 폴더에 파일이 수백 개 있다고 해봅시다. 그중 .txt 파일만 보고 싶다면?
ls | grep ".txt"
이 명령은 이렇게 동작합니다.
ls가 폴더 안의 모든 파일 목록을 출력합니다.- 그 목록이 파이프(
|)를 타고grep으로 넘어갑니다. grep이 그중.txt가 포함된 줄만 걸러서 보여줍니다.
즉 “목록을 뽑아서(ls) → 그중 원하는 것만 찾는다(grep)”는 두 동작을 한 줄로 이은 겁니다.
예시 2: 실행 중인 프로세스에서 특정 프로그램 찾기
컴퓨터에서 크롬이 실행 중인지 확인하고 싶을 때:
ps aux | grep chrome
ps aux는 실행 중인 모든 프로세스를 출력하는데, 그 양이 어마어마합니다. 파이프로 grep chrome을 연결하면 크롬과 관련된 줄만 쏙 뽑아 볼 수 있습니다.
예시 3: 파이프 여러 개 이어 붙이기
파이프는 두 개, 세 개도 연달아 쓸 수 있습니다. 특정 단어가 들어간 줄이 몇 개인지 세어볼까요?
cat server.log | grep "error" | wc -l
동작 순서는 이렇습니다.
cat이 로그 파일 전체를 출력합니다.grep "error"가 error가 든 줄만 걸러냅니다.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 기초를 다룰 예정입니다. 코드를 다루지 않더라도 문서 버전 관리에 유용하게 쓸 수 있는 도구예요. 궁금한 점은 댓글로 남겨주세요.