본문 바로가기
C.W.K.
Stream
Lesson 08 of 10 · published

wc, head, tail

~10 min · wc, head, tail, follow

Level 0창 구경꾼
0 XP0/95 lessons0/14 achievements
0/100 XP to next level100 XP to go0% complete

사소해 보이지만 평생 쓰는 도구 셋

wc는 개수를 세고, headtail은 입력의 처음과 끝을 보여 줘. 옵션은 몇 개뿐이지만 일상적인 확인 작업에서 계속 쓰게 돼.

wc로 줄·단어·바이트 세기

  • wc -l file은 줄 수를 세며 가장 자주 사용해.
  • wc -w file은 단어 수를 세어.
  • wc -c file은 바이트 수를 세어.
  • wc -m file은 글자 수를 세므로 UTF-8 텍스트에서는 바이트 수와 다를 수 있어.

파이프에 연결하면 find . | wc -l로 경로 수를, git log --oneline | wc -l로 커밋 수를 셀 수 있어. 파일의 바이트 수는 wc -c < file처럼 입력 리디렉션으로 넘기면 돼.

head로 처음 N줄 보기

  • head file은 기본적으로 처음 10줄을 보여 줘.
  • head -n 20 file은 처음 20줄을 보여 줘.
  • head -n -5 file은 GNU 구현에서 마지막 5줄을 뺀 나머지를 보여 줘.
  • head -c 100 file은 처음 100바이트를 보여 줘.

tail로 마지막 N줄 보기

  • tail file은 기본적으로 마지막 10줄을 보여 줘.
  • tail -n 50 file은 마지막 50줄을 보여 줘.
  • tail -n +10 file은 10번째 줄부터 끝까지 보여 줘.
  • tail -f file은 파일에 새로 붙는 줄을 계속 따라가므로 로그를 지켜볼 때 유용해.
  • tail -F file은 로그 파일이 교체된 뒤에도 같은 이름의 새 파일을 다시 따라가.

킬러 콤보

tail -f /var/log/system.log | grep -i error는 새 오류를 골라 보며, find . -name '*.py' | head는 검색 결과의 앞부분을 미리 보여 줘. history | tail -20으로는 최근 명령 20개를 확인할 수 있어.

처음과 끝을 보는 도구는 표본 도구야

headtail은 전체 데이터의 일부만 보여 줘. 앞 몇 줄이 정상이라고 파일 전체가 같은 형식이라는 뜻은 아니고, 끝 몇 줄에 오류가 없다고 이전 오류가 사라지는 것도 아니야. 빠른 초기 진단과 완전한 검증을 구분해.

tail -f에도 회전 경계가 있어

로그 파일이 rename되거나 새 inode로 교체되면 follow 방식에 따라 옛 파일을 계속 보거나 새 파일로 따라갈 수 있어. 운영체제와 옵션을 확인하고, 중요한 서비스 로그는 로그 시스템의 조회 기능을 함께 써.

Code

라이브 로그 follow·bash
# macOS 통합 로그를 보는 방법
log stream --predicate 'eventMessage CONTAINS "error"' --info
# 일반 로그 파일
tail -F /var/log/system.log | grep -i service
흔한 세기 레시피·bash
find . -name '*.ts' -type f | wc -l       # TypeScript 파일 수
git log --oneline | wc -l                 # 커밋 수
wc -l < access.log                        # 파일명 없이 로그 줄 수만 출력
find . -name '*.py' -exec wc -l {} + | tail -1   # 전체 코드 줄 수

External links

Exercise

접근 가능한 로그에서 tail -f를 실행해 새 줄이 나타나는 모습을 본 뒤 Ctrl+C로 종료해. 이어서 find . -type f | wc -l로 현재 트리의 파일 수를 세고, head -3 ~/.zshrctail -10 ~/.zshrc로 같은 파일의 처음과 끝을 비교해.

Progress

Progress is local-only — sign in to sync across devices.
이 페이지에서 버그를 발견하셨거나 피드백이 있으세요?문제 신고

댓글 0

🔔 답글 알림 (로그인 필요)
로그인댓글을 남기려면 로그인해 주세요.

아직 댓글이 없어요. 첫 댓글을 남겨보세요.