Computer >> 컴퓨터 >  >> 프로그래밍 >> Bash 프로그래밍

리눅스 cat 명령어 완벽 가이드 – 파일 생성부터 연결(Concatenate)까지

리눅스에서 cat 명령어는 'concatenate'(연결하다, 합치다)라는 단어에서 유래했습니다. 이름 그대로 무언가를 합치는 기능이 핵심이지만, 실제로는 그보다 훨씬 다재다능한 명령어입니다. 실제 고양이처럼 귀엽고 포근하지는 않지만, cat 명령어 하나만으로 문자열, 파일, 출력 결과를 활용한 다양한 작업을 처리할 수 있습니다.

cat 명령어의 세 가지 주요 기능

cat 명령어는 텍스트 파일을 대상으로 크게 세 가지 작업을 수행합니다.

  • 생성(Create) – 새로운 파일 만들기
  • 읽기/표시(Read/Display) – 파일 내용 확인하기
  • 수정/추가(Update/Modify) – 기존 파일에 내용 덧붙이기

이제 각 기능별로 필요한 명령어와 옵션을 하나씩 살펴보겠습니다.

시작하기: 파일 생성하기

먼저 실습용으로 foo.txtspam.txt라는 두 개의 파일을 만들어 보겠습니다.

터미널에서 다음 명령어를 입력해 foo.txt를 생성합니다.

cat > foo.txt

주의: 이미 같은 이름의 파일이 존재한다면, > 연산자를 사용한 cat 명령은 기존 파일을 덮어쓰기(overwrite) 하므로 주의해야 합니다.

명령어를 실행하면 커서가 새 줄로 이동하며, 원하는 텍스트를 바로 입력할 수 있습니다. 이번 예제에서는 아래 내용을 입력해 보겠습니다.

FILE 1
foo
bar
baz

텍스트 입력을 마치고 명령줄로 돌아가려면 CTRL + D를 누르면 됩니다. 이렇게 하면 입력한 내용으로 파일이 생성됩니다.

같은 방식으로 spam.txt도 만들어 보겠습니다.

cat > spam.txt

그리고 아래 내용을 입력한 뒤 CTRL + D로 종료합니다.

FILE 2
spam
ham
eggs

파일에 내용 추가하기(Append)

이미 존재하는 파일에 새로운 내용을 덧붙이고 싶다면 > 대신 >> 연산자를 사용합니다.

cat >> FILENAME

핵심 정리:

  • cat > FILENAME → 파일을 새로 생성하거나 기존 내용을 덮어씁니다.
  • cat >> FILENAME → 기존 파일 끝에 내용을 추가(append)합니다.
  • 텍스트 입력 후 CTRL + D를 누르면 편집이 종료되고 파일이 저장됩니다.

텍스트 에디터를 열 필요 없이 명령줄에서 즉석으로 간단한 텍스트 파일을 만들 수 있으니, 시간과 노력을 크게 절약할 수 있습니다.

파일 내용 읽기

파일을 만들었으니 이제 제대로 저장되었는지 확인해 볼 차례입니다.

여기서 중요한 점은 명령어에 >>> 연산자가 없다는 것입니다. 파일명만 지정하면 됩니다.

cat foo.txt

실행 결과는 다음과 같습니다.

FILE 1
foo
bar
baz

즉, cat foo.txt는 파일의 내용을 화면에 그대로 출력해 줍니다.

-n 옵션으로 줄 번호 표시하기

작업 중인 파일이 몇 줄인지 알고 싶을 때는 -n 옵션이 유용합니다.

cat -n foo.txt

실행 결과:

  1  FILE 1
  2  foo
  3  bar
  4  baz

-n 옵션을 사용하면 각 줄마다 번호가 붙어 파일의 전체 길이를 한눈에 파악할 수 있습니다. 특히 정해진 길이의 파일을 반복문으로 처리할 때 매우 편리합니다.

ConCATenating: 파일 연결하기

지금까지 cat으로 파일을 만들고 읽는 방법을 살펴봤습니다. 이제 이름의 유래이기도 한 '연결(concatenating)' 기능을 알아볼 차례입니다.

앞서 만든 foo.txtspam.txt를 사용해 보겠습니다. 먼저 두 파일의 내용을 한 번에 확인하는 방법부터 시작합니다.

cat foo.txt spam.txt

실행 결과:

FILE 1
foo
bar
baz
FILE 2
spam
ham
eggs

주의할 점: 위 명령어는 두 파일의 내용을 화면에 보여주기만 할 뿐입니다. 아직 새 파일로 합쳐진 것은 아닙니다.

두 파일을 하나의 새 파일로 합치려면 > 연산자와 함께 결과를 저장할 파일명을 지정하면 됩니다.

cat foo.txt spam.txt > fooSpam.txt

이제 fooSpam.txt 파일이 생성되었으며, 내용을 확인해 보겠습니다.

cat fooSpam.txt

실행 결과:

FILE 1
foo
bar
baz
FILE 2
spam
ham
eggs

이 방법은 두 개 이상의 파일을 하나로 합칠 때도 동일하게 적용됩니다.

핵심 정리:

  • cat FILENAME1 FILENAME2 → 여러 파일의 내용을 한 번에 조회합니다.
  • cat FILENAME1 FILENAME2 > FILENAME3 → 여러 파일을 하나의 새 파일로 합칩니다.

숨겨진 문자 찾기: -A 옵션 활용법

파일을 다루다 보면 파일 끝부분에서 계속 오류가 발생하거나, 예상보다 줄 수가 많아 보이는 경우가 있습니다. 이런 문제를 파악하려면 -A 옵션을 사용해 보세요.

-A 옵션은 다음 정보를 보여줍니다.

  • 줄의 끝을 $ 기호로 표시
  • 탭(tab) 문자를 ^I로 표시
  • 그 밖의 출력되지 않는(non-printing) 문자들 표시

예를 들어, 출력 불가능한 문자가 포함된 파일을 일반 cat 명령으로 확인하면 다음과 같이 빈 공백만 보일 수 있습니다.

cat nonPrintExample.txt

이 상태로는 어떤 문자나 문자열이 문제를 일으키는지 파악하기 어렵습니다.

반면 -A 옵션을 사용하면 훨씬 유용한 정보를 얻을 수 있습니다.

cat -A nonPrintExample.txt

실행 결과:

^I^I$
$
^L$
$
^G^H^H^H^Y^I^N^O^P^@$
^@^@^[g^[f^[d^[g^[6^[5^[4^[6^[=$
$
$
^X$

이제 탭, 줄바꿈(line feed), 캐리지 리턴(return) 등 어떤 문자들이 숨어 있는지 한눈에 확인할 수 있습니다.

핵심 정리: cat -A FILENAME을 사용하면 작업 중인 파일에 대한 더 깊이 있는 세부 정보를 확인할 수 있습니다.

마무리

지금까지 리눅스 cat 명령어의 기본 개념과 주요 기능을 살펴봤습니다. 파일 생성(>), 내용 추가(>>), 파일 읽기, 줄 번호 표시(-n), 여러 파일 연결, 그리고 숨겨진 문자 확인(-A)까지 — cat 명령어만 잘 활용해도 터미널에서의 텍스트 파일 작업이 한결 수월해질 것입니다.