728x90
반응형

리눅스 터미널을 처음 접했을 때 가장 어렵게 느껴졌던 게 >와 | 기호였다. 학부에서 공부하고 졸업한지 까마득한 세월이 지나고...
이번 글에서는 부트캠프를 진행하면서 학습한 redirect(> <), pipe(|), grep의 기본 개념과 실전 예제를 함께 정리해본다.
처음엔 단순한 출력 저장, 문자열 검색 정도로 쓰지만, 조금만 익숙해지면 실전 로그 분석, 파일 추출, 조건별 필터링까지 거의 다 할 수 있다.
가볍게 보면서도 바로 따라 해보면 확실히 체감된다.
1. 리다이렉션 (redirect) – 출력 방향 바꾸기
# 표준 출력 → 파일 저장
ls > list.txt
# 표준 에러 → 파일 저장
ls nonexistentfile 2> error.log
# 출력과 에러 모두 저장
ls validfile nonexistentfile > out.log 2>&1
# 파일에 이어쓰기 (append)
echo "추가 내용" >> list.txt- >: 기존 파일을 덮어씀
- >>: 기존 파일에 내용 추가
- 2>: 표준 에러(에러 메시지)를 저장
- 2>&1: 표준 에러를 표준 출력으로 합침
2. 파이프 (pipe) – 출력을 다음 명령어로 넘기기
ps aux | grep nginx- |는 앞 명령의 출력을 뒤 명령의 입력으로 넘겨준다
- 임시 파일 없이 명령어를 연결하는 방식이라 가볍고 빠르다
cat access.log | grep 404 | wc -l- 로그에서 404가 몇 번 나왔는지 카운트
- cat → grep → wc 순으로 연결
꼭 기억할 점: 파이프는 임시 파일 없이 명령어를 연결하는 강력한 방식이다.
3. grep & 친구들 (grep, egrep, fgrep)
grep "login" /var/log/auth.log
| 명령어 | 설명 |
|---|---|
| grep | 기본 grep, BRE(기본 정규표현식) 지원 |
| egrep | grep -E와 동일 (ERE: 확장 정규표현식) |
| fgrep | grep -F와 동일 (정규표현식 무시) |
자주 사용하는 옵션들
grep -i "error" log.txt # 대소문자 무시
grep -v "DEBUG" log.txt # 포함되지 않은 줄
grep -r "TODO" src/ # 디렉토리 재귀 검색
grep -n "main" app.c # 줄 번호 포함
grep -A 3 "fail" log.txt # 매칭된 줄과 아래 3줄
grep -B 2 "disconnect" log.txt # 위 2줄 포함
grep --color "error" syslog # 매칭 문자열 색상 표시간단한 정규표현식 예제
grep "^ERROR" log.txt # ERROR로 시작하는 줄
grep "404$" access.log # 404로 끝나는 줄
grep "[0-9]\{3\}" file # 숫자 3자리
grep -E "user[0-9]+" user.log # user 뒤에 숫자 하나 이상
grep -E "(fail|error|warn)" log # OR 조건| 패턴 | 의미 |
|---|---|
| ^word | 줄의 시작 |
| word$ | 줄의 끝 |
| . | 아무 문자 하나 |
| * | 0개 이상 반복 |
| + | 1개 이상 반복 (-E 필요) |
실전 조합 예시
dmesg | grep -i error > kernel_errors.txt- 시스템 커널 로그에서 에러만 추출해서 파일로 저장
find /var/log -name "*.log" | xargs grep "connection refused"- 모든 로그 파일에서 "connection refused" 검색
curl -s https://example.com | grep "<title>"- 웹사이트 HTML에서 <title> 태그만 추출
마무리 회고
특히 grep은 단독으로도 강력하지만 cat, find, xargs 등과 조합했을 때 훨씬 더 유용해진다.
로그 분석, 시스템 모니터링, 대량 파일 처리 등에서 이 세 가지 도구는 정말 자주 쓰이니, 손에 익혀두면 실무에서도 큰 도움이 된다.
728x90
반응형
'linux' 카테고리의 다른 글
| [리눅스 권한 명령어 정리] chmod, chown, umask (0) | 2025.05.27 |
|---|---|
| [리눅스 유저 & 그룹 관리] useradd, usermod, passwd, groupadd (0) | 2025.05.26 |
| [리눅스 기본기] vi 에디터 단축키 정리 - 이동, 복사, 삭제, 검색, 대치 (0) | 2025.05.22 |
| [리눅스 명령어] find 명령어 완전 정복 (0) | 2025.05.22 |
| [리눅스 명령어] cat, head, tail (0) | 2025.05.22 |