파일 내용 확인 및 비교

LinuxBeginner
지금 연습하기

소개

리눅스 파일 작업에 관한 실습에 오신 것을 환영합니다! 리눅스가 처음이더라도 걱정하지 마세요. 각 단계를 차근차근 안내해 드립니다. 이번 실습에서는 파일의 내용을 확인하고, 파일의 특정 부분을 살펴보며, 서로 다른 파일을 비교하는 방법을 배웁니다. 이는 리눅스 파일 시스템을 탐색하고 이해하는 데 필요한 가장 기초적이고 중요한 기술입니다.

파일 내용 출력하기

먼저, 바탕화면에서 터미널을 열거나 실습 환경의 터미널 탭으로 전환해 주세요.

Terminal window screenshot

터미널을 열면 보통 $ 기호로 끝나는 명령 프롬프트가 보일 것입니다. 이곳에 명령어를 입력하게 됩니다.

이제 cat 명령어를 사용하여 파일의 내용을 화면에 표시해 보겠습니다.

  1. 터미널에 다음 명령어를 입력하고 Enter 를 누르세요.
cat /tmp/hello

여기서 /tmp/hello는 확인하려는 파일의 경로입니다. /tmp는 시스템의 디렉터리 (폴더) 이며, hello는 해당 디렉터리 안에 있는 파일 이름입니다.

  1. Enter 를 누르면 다음과 같은 파일 내용이 나타납니다.
Hi,
I am Labby!

이것이 /tmp/hello 파일에 담긴 전체 내용입니다. cat 명령어가 터미널에 이를 출력해 주었습니다.

줄 번호와 함께 파일 내용 표시하기

이번에는 cat 명령어를 다시 사용하되, 출력 결과에 줄 번호를 추가해 보겠습니다.

  1. 터미널에 다음 명령어를 입력하고 Enter 를 누르세요.
cat -n /tmp/hello

여기서 -n은 옵션 또는 플래그라고 불립니다. 이는 cat에게 출력되는 모든 줄에 번호를 붙이도록 지시합니다.

  1. 이제 줄 번호가 포함된 파일 내용을 확인할 수 있습니다.
     1 Hi,
     2 I am Labby!

파일의 내용이 길어질 때 특정 위치를 지칭해야 하는 경우 이 기능이 매우 유용합니다.

파일의 앞부분 출력하기

다음으로 head 명령어를 사용해 보겠습니다. 이름에서 알 수 있듯이 head는 파일의 시작 부분, 즉 "머리" 부분을 확인하는 데 사용됩니다.

  1. 터미널에 다음 명령어를 입력하고 Enter 를 누르세요.
head -n1 /tmp/hello

여기서 -n1 옵션은 head에게 첫 번째 줄만 보여달라고 요청하는 것입니다. 숫자 1을 원하는 숫자로 바꾸면 그만큼의 줄을 확인할 수 있습니다.

  1. 다음과 같은 결과가 출력됩니다.
Hi,

파일의 첫 번째 줄만 출력되었습니다. 만약 -n1 옵션 없이 head 명령어만 사용한다면, 기본적으로 파일의 처음 10 줄을 보여줍니다.

파일의 처음 몇 바이트 확인하기

이번에도 head 명령어를 사용하지만, 줄 단위가 아닌 파일 시작 부분부터 특정 바이트 수만큼 확인해 보겠습니다.

  1. 터미널에 다음 명령어를 입력하고 Enter 를 누르세요.
head -c1 /tmp/hello

-c1 옵션은 head에게 파일의 첫 1 바이트 (문자 하나) 만 보여주도록 지시합니다. -n과 마찬가지로 숫자 1을 변경하여 원하는 바이트 수만큼 볼 수 있습니다.

  1. 다음과 같은 결과가 출력됩니다.
H

파일의 첫 번째 글자만 나타났습니다. 텍스트 파일에서 일반적으로 한 문자는 1 바이트를 차지합니다.

파일의 뒷부분 출력하기

이제 tail 명령어로 넘어가 보겠습니다. 짐작하셨겠지만 tailhead와 반대로 파일의 끝부분, 즉 "꼬리" 부분을 보여줍니다.

  1. 터미널에 다음 명령어를 입력하고 Enter 를 누르세요.
tail -n1 /tmp/hello

head와 마찬가지로 -n1 옵션은 tail에게 마지막 한 줄만 보여주도록 지시합니다.

  1. 다음과 같은 결과가 출력됩니다.
I am Labby!

파일의 마지막 줄이 출력되었습니다. 옵션을 지정하지 않으면 tail은 기본적으로 마지막 10 줄을 보여줍니다.

파일의 마지막 몇 바이트 확인하기

head에서 했던 것과 비슷하게, tail을 사용하여 파일 끝부분의 특정 바이트 수를 확인할 수 있습니다.

  1. 먼저 마지막 1 바이트를 확인해 보겠습니다. 터미널에 다음 명령어를 입력하고 Enter 를 누르세요.
tail -c1 /tmp/hello

아무것도 출력되지 않는 것처럼 보일 수 있습니다. 이는 파일의 마지막 문자가 눈에 보이지 않는 줄 바꿈 (newline) 문자일 가능성이 높기 때문입니다.

  1. 대신 마지막 2 바이트를 확인해 보겠습니다. 다음 명령어를 입력하고 Enter 를 누르세요.
tail -c2 /tmp/hello
  1. 이제 다음과 같은 결과가 보일 것입니다.
!

-c2 옵션은 tail에게 파일의 마지막 2 바이트 (문자) 를 보여주도록 합니다. 이 경우 우리 파일에서 마지막으로 눈에 보이는 문자인 느낌표가 출력되었습니다.

파일 비교하기

이제 diff 명령어를 사용하여 두 파일을 비교하고 그 차이점을 찾아내는 방법을 배워보겠습니다.

  1. 먼저 올바른 디렉터리에 있는지 확인합니다. 다음 명령어를 입력하고 Enter 를 누르세요.
cd ~/project

이 명령어는 현재 작업 디렉터리를 홈 디렉터리 아래의 "project" 폴더로 변경합니다. ~ 기호는 홈 디렉터리를 나타내는 약어입니다.

  1. 이제 두 파일을 비교해 보겠습니다. 다음 명령어를 입력하고 Enter 를 누르세요.
diff file1 file2

이 명령은 file1file2의 내용을 비교하도록 diff에 지시합니다.

  1. 다음과 유사한 결과가 출력될 것입니다.
1c1
< this is file1
---
> this is file2

이 출력 결과의 의미를 분석해 보겠습니다. diff 명령어는 첫 번째 파일을 두 번째 파일과 동일하게 만들기 위해 어떤 변경이 필요한지 설명합니다. 파일이 생성되거나 수정된 순서와 상관없이, 명령어를 실행하는 시점의 내용을 비교합니다.

  • 1c1: 첫 번째 파일의 1 행이 두 번째 파일의 1 행과 일치하도록 **변경 (change)**되어야 함을 나타냅니다.
  • < this is file1: < 기호는 첫 번째 파일 (file1) 의 내용을 나타냅니다.
  • ---: 두 파일의 내용을 구분하는 구분선입니다.
  • > this is file2: > 기호는 두 번째 파일 (file2) 의 내용을 나타냅니다.

간단히 말해, diff는 두 파일의 1 행 내용이 서로 다르다는 것을 보여줍니다. file1file2와 똑같이 만들려면 "this is file1"이라는 줄을 "this is file2"로 바꿔야 한다는 뜻입니다.

디렉터리 비교하기

마지막으로 diff 명령어를 사용하여 디렉터리 전체를 비교해 보겠습니다.

  1. 터미널에 다음 명령어를 입력하고 Enter 를 누르세요.
diff -r ~/Desktop ~/Code

-r 옵션은 하위 디렉터리까지 포함하여 재귀적으로 비교하도록 diff에 지시합니다. ~/Desktop~/Code는 비교할 두 디렉터리의 경로입니다.

  1. 다음과 유사한 결과가 나타날 수 있습니다.
Only in /home/labex/Desktop: code.desktop
Only in /home/labex/Desktop: gedit.desktop
Only in /home/labex/Desktop: gvim.desktop
Only in /home/labex/Desktop: xfce4-terminal.desktop

이 출력은 Desktop 디렉터리에는 있지만 Code 디렉터리에는 없는 4 개의 파일을 보여줍니다.

요약

축하합니다! 파일 내용 확인 및 비교 실습을 모두 마쳤습니다. 오늘 배운 내용을 정리해 보겠습니다.

  1. cat을 사용하여 파일의 전체 내용을 확인했습니다.
  2. cat -n을 사용하여 줄 번호와 함께 내용을 보는 방법을 배웠습니다.
  3. head를 사용하여 파일의 앞부분을 줄 단위 또는 바이트 단위로 확인했습니다.
  4. tail을 사용하여 파일의 뒷부분을 줄 단위 또는 바이트 단위로 확인했습니다.
  5. diff를 사용하여 파일 간의 내용 차이를 비교하는 방법을 배웠습니다.
  6. 마지막으로 diff -r을 사용하여 디렉터리 전체를 비교해 보았습니다.

이 명령어들은 리눅스에서 가장 기본이 되는 도구들입니다. 리눅스를 계속 사용하다 보면 파일과 디렉터리를 점검하고 비교하기 위해 이 명령어들을 자주 사용하게 될 것입니다.

명령어 사용법이 기억나지 않을 때는 언제든지 man 뒤에 명령어 이름을 입력하여 (예: man cat) 매뉴얼 페이지를 확인하세요. 각 명령어에서 사용할 수 있는 모든 옵션에 대한 상세한 정보를 얻을 수 있습니다.

다양한 파일과 디렉터리에 이 명령어들을 직접 연습해 보며 익숙해지시기 바랍니다. 더 많이 사용할수록 훨씬 자연스럽게 다룰 수 있게 될 것입니다!