head, tail, cat 으로 파일 보기

LinuxBeginner
지금 연습하기

소개

Linux 에서 파일을 확인하는 방법을 살펴봅니다. 이전 모듈에서는 파일을 정리하는 방법을 배웠습니다. 이제 파일을 열고 내용을 읽어봅니다.

이 실습에서는 파일 내용을 확인하는 세 가지 기본 방법을 배웁니다.

  1. cat: 파일 전체를 한 번에 읽습니다. 작은 메모 파일에 적합합니다.
  2. head: 파일의 시작 부분만 읽습니다. 파일의 주제를 빠르게 확인할 때 적합합니다.
  3. tail: 파일의 끝부분만 읽습니다. 로그 파일의 최신 업데이트를 확인할 때 적합합니다.

또한 파일이 업데이트되는 모습을 실시간으로 확인하는 특별한 방법도 배웁니다.

이 과정은 Linux 를 다루는 데 중요한 단계입니다. 앞선 모듈에서는 파일이 어떻게 구성되는지 배웠습니다. 이제 파일 내용과 직접 상호작용하기 시작합니다. 실제 시스템 관리 작업의 상당 부분은 필요한 텍스트 파일을 올바른 방법으로 읽는 일입니다.

파일 전체 보기 (cat)

cat 명령은 "이 파일의 모든 내용을 보여 주세요"라는 작업을 수행하는 표준 방법입니다.

작은 파일에서 가장 잘 작동합니다. 매우 큰 파일에 사용하면 텍스트가 너무 빠르게 지나가서 읽기 어렵습니다.

cat은 concatenate의 줄임말입니다. 원래 파일 내용을 연결하고 출력하도록 설계된 명령이기 때문입니다. 많은 초보자는 cat을 파일 보기 명령으로 처음 접하지만, 역사적으로는 더 폭넓은 텍스트 처리 방식의 일부였습니다.

실습을 위해 sample.txt라는 작은 파일을 준비했습니다.

먼저 프로젝트 디렉터리로 이동합니다.

cd ~/project

이제 파일 내용을 화면에 출력합니다.

cat sample.txt

다음과 같이 전체 내용이 즉시 출력됩니다.

Line 1: This is a sample file.
Line 2: It is used to demonstrate the cat command.
Line 3: The cat command displays the full content.
Line 4: This file is short enough to read easily.
Line 5: End of the sample file.

더 큰 파일을 다룰 때는 더 적합한 도구가 필요합니다.

파일 시작 부분 보기 (head)

제목이나 처음 몇 줄만 확인하면 되는 경우가 있습니다. 이때 head를 사용합니다. head는 파일의 "머리 부분", 즉 시작 부분을 보여줍니다.

기본적으로 head는 처음 10 줄을 표시합니다.

이 기본값이 유용한 이유는 파일 시작 부분에 헤더, 주석, 열 이름 또는 첫 번째 레코드와 같은 맥락 정보가 포함되는 경우가 많기 때문입니다. 즉, head는 파일을 빠르게 표본 확인하는 도구입니다.

/etc/passwd를 확인해봅니다. 이 파일은 사용자 정보가 들어 있는 긴 시스템 파일입니다.

head /etc/passwd

처음 10 줄만 표시되는지 확인합니다.

표시 범위 지정하기

처음 5 줄만 확인하려면 어떻게 해야 할까요? -n(number) 옵션으로 표시할 줄 수를 지정할 수 있습니다.

head -n 5 /etc/passwd

이 방법을 사용하면 파일 전체를 읽지 않고도 파일의 일부를 빠르게 확인할 수 있습니다.

파일 끝부분 보기 (tail)

head가 시작 부분을 보여준다면 tail은 끝부분을 보여줍니다. tail 명령은 파일의 마지막 줄들을 표시합니다.

Linux 에서는 로그가 순서대로 기록됩니다. 가장 "최신" 항목은 항상 아래쪽에 추가됩니다. 따라서 지금 문제가 발생했다면 오류 메시지는 파일 끝부분에 있을 가능성이 높습니다.

이 때문에 tail은 운영 작업에서 자주 사용됩니다. 로그에는 새 줄이 계속 추가되므로 현재 문제를 설명할 가능성이 가장 높은 부분이 파일 아래쪽에 있습니다.

시스템 로그 파일 /var/log/syslog를 확인합니다.

tail /var/log/syslog

마지막 10 개 항목이 표시됩니다.

head와 마찬가지로 표시할 줄 수를 제한할 수 있습니다. 마지막 5 개 이벤트를 확인하려면 다음 명령을 실행합니다.

tail -n 5 /var/log/syslog

이 명령은 시스템 관리자가 가장 자주 사용하는 기본 명령 중 하나입니다. 서버에 장애가 발생하면 보통 가장 먼저 tail을 입력합니다.

로그 실시간 확인하기 (tail -f)

정적인 파일보다 실시간 데이터가 더 흥미롭습니다. tail 명령에는 -f 옵션이 있습니다. 이 옵션은 follow를 의미합니다.

-f를 사용하면 tail은 대기합니다. 프로그램이 해당 파일에 새 줄을 기록하면 tail이 이를 감지해 즉시 출력합니다. 실시간 뉴스 속보를 보는 것과 비슷합니다.

이 기능을 사용하면 터미널이 정적인 화면이 아니라 상호작용하는 공간처럼 느껴지기 시작합니다. 이미 완성된 파일을 읽는 대신, 프로그램이 이벤트를 생성할 때마다 이벤트가 나타나는 모습을 확인할 수 있습니다.

두 개의 터미널로 실습해봅니다.

터미널 1(감시자)

로그 파일을 감시하기 시작합니다.

tail -f ~/project/app.log

커서가 멈춘 것처럼 보입니다. 터미널이 "멈춘" 것 같지만 실제로는 새 내용을 기다리고 있습니다.

터미널 2(작업 수행자)

두 번째 터미널을 엽니다 (탭 옆의 + 버튼을 클릭합니다). 이제 로그 파일에 내용을 기록합니다.

echo "New log entry at $(date)" >> ~/project/app.log

빠르게 터미널 1로 돌아갑니다. 메시지가 나타나는 것을 확인할 수 있습니다.

다시 터미널 2로 이동해 이벤트를 더 기록합니다.

echo "Another event happened" >> ~/project/app.log
echo "System is running smoothly" >> ~/project/app.log

터미널 2 에서 Enter 키를 누르면 즉시 터미널 1 에 텍스트가 나타납니다. 이것이 엔지니어가 서버를 실시간으로 모니터링하는 방법입니다.

실습을 마치려면 터미널 1로 돌아갑니다. Ctrl+C를 눌러 파일 추적을 중지하고 셸 프롬프트로 돌아갑니다.

요약

축하합니다! 이제 Linux 에서 파일을 확인하는 기본 도구를 사용할 수 있습니다.

  • cat: 파일 전체를 읽습니다. 작은 파일에 적합합니다.
  • head: 파일 시작 부분을 읽습니다. 빠른 확인에 적합합니다.
  • tail: 파일 끝부분을 읽습니다. 로그 확인에 적합합니다.
  • tail -f: 파일을 실시간으로 감시합니다.

이 명령을 사용하면 "이 파일에는 무엇이 들어 있을까?"라는 질문에 답할 수 있습니다.