| 일 | 월 | 화 | 수 | 목 | 금 | 토 |
|---|---|---|---|---|---|---|
| 1 | 2 | |||||
| 3 | 4 | 5 | 6 | 7 | 8 | 9 |
| 10 | 11 | 12 | 13 | 14 | 15 | 16 |
| 17 | 18 | 19 | 20 | 21 | 22 | 23 |
| 24 | 25 | 26 | 27 | 28 | 29 | 30 |
| 31 |
- 해킹
- TryHackMe
- cert
- web hacking
- 사이버 보안
- Cross-Site Scripting
- Web
- 워게임
- linux
- OverTheWire
- 모의해킹
- 리눅스
- Blue Team
- 블루팀
- 해킹 스터디
- Cyber Security
- 정보보안
- THM
- 보안 스터디
- Bandit
- 리눅스 기초
- http
- CTF
- IR
- 정보보호
- write-up
- 해커
- SoC
- 보안 관제
- XSS
- Today
- Total
AnbyMata의 해킹 노트
[Linux 기초] EP.9 - 파일 내용 확인하기 (cat, file, more) 본문
지금까지 우리는 파일의 내용을 확인할 때 vi 명령어를 사용하여 vi 편집기 내부로 들어가서 확인해야 했습니다.
그러나 이 방법은 단순히 내용 확인이 목적일때는 번거롭습니다.
그래서 오늘은 vi 편집기에 들어가기 않아도 파일의 내용을 확인할 수 있는 명령어를 배워보겠습니다.
[1] 명령어 'cat' : 리눅스에서 파일 내용을 확인하기
'cat' 명령어를 사용하면 파일의 전체 내용을 터미널 화면에 출력할 수 있습니다.
좀더 구체적으로 말하자면 'cat' 이란 단어는 "concatenate" 라는 단어에서 유래했습니다. "concatenate"의 의미는 '연쇄시키다, 연관시키다, 연결된'으로, '출력한다'하고는 거리가 있어 보입니다.
그러나 실제로 'cat' 명령어는 파일의 내용을 화면에 출력하거나 여러 파일을 연결해서 한 번에 보여주는 명령어입니다.
즉, 단순 '출력'뿐 아니라 '파일을 이어 붙여 보여주는 역할'까지 수행하는 명령어입니다.
자! 우리의 실습 환경인 칼리의 터미널에서 한 번 사용해봅시다.
우선, cat 명령어의 사용법은
$ cat [파일_이름]
# 가장 일반적으로 사용하는 방식
$ cat [옵션] [파일_이름]
# cat 명령어에는 옵션이 있지만, 잘 사용되진 않음
입니다.
cat 명령어 같은 경우 일반적으로는 옵션 없이 단순히 내용 확인용으로 사용됩니다.
그래서 옵션을 사용할 수는 있지만, 주로 사용되진 않습니다. 그래서 옵션에 관한 내용은 다루지 않겠습니다. (궁금하면 따로 찾아보세요..)
그나마 자주 사용되는 옵션은 '-n' 으로 줄 번호를 표시해줍니다. (ex. "cat -n test.txt")
EP.8에서의 연습으로 현재 홈 디렉토리엔 "test.txt" 파일이 남아있을 것입니다.
ls 명령어로 확인해보면,

"test.txt" 파일이 있습니다.
이제 이 파일의 내용을 vi 편집기로 들어가지 않고,
지금 보고 있는 터미널 화면에서 확인해보겠습니다.
'cat test.txt' 명령어를 입력하면,


이런식으로 터미널 화면에 "test.txt"의 내용이 출력되게 됩니다.
[2] 'cat'으로 내용을 볼 수 없는 파일?
과연 'cat' 명령어는 무적일까요?
한번 다른 파일들을 확인해봅시다.
현재 우리는 홈 디렉토리에 위치해 있는 상태입니다. ('~' 에 있으니까!)
이제 "/etc/hostname"라는 파일을 'cat' 명령어로 읽어보기 위해,
'cat /etc/hostname' 명령어를 입력하면,

"kali" 라는 "/etc/hostname"의 파일 내용이 나오는걸 확인할 수 있습니다!
이번에는 "/bin/bash"라는 파일을 'cat' 명령어로 읽기 위해,
'cat /bin/bash'라는 명령어를 입력하면,

이런식으로 알 수 없는 내용이 나오게 됩니다. (파일이 깨졌다?!)

사실 우리가 지금 사용하고 있는 'cat' 명령어는 텍스트 파일만을 열람할 수 있습니다.
그리고 우리가 지금 시도한 "/bin/bash" 파일의 경우 실행 파일로 내용이 바이너리(binary) 코드로 이루어져 있어 'cat' 명령어로는 읽어낼 수 없어서 이상하게 나온 것입니다.
텍스트(text) 파일은 사람인 우리가 읽을 수 있는 문자들로 이루어진 파일입니다.
바이너리(binary) 파일은 컴퓨터가 이해하는는 0과 1의 조합인 기계어로 이루어진 파일입니다.
대략적으로 설명하자면, 사람이 읽는 문자와 컴퓨터가 읽는 기계어는 서로 다른 규칙으로 저장되어 있습니다.
그래서 사람이 읽을 수 있는 문자를 보여줄 수 있는 'cat' 명령어는 이와 다른 규칙, 형식의 기계어로 저장된 바이너리 파일의 내용을 제대로 읽어낼 수 없습니다.
(일단은 이렇게 이해합시다)
여기서 말하는 binary는 2진법입니다. 2진법은 0과 1로만 이루어진 숫자 체계입니다.
비교하자면, 우리가 흔히 사용하는 0~9의 10가지 숫자로 이루어진 숫자 체계는 10진법입니다.
(숫자를 2개만 쓰니 2진법... 10개를 쓰면 10진법, 16개를 쓰면 16진법..)
자세한건 나중에 알아보시거나 ai 선생님께 물어보세요.. (여기서 설명하기엔 좀;;)
[3] 명령어 'file' : 지정한 파일이 어떤 형식의 파일인지 판별하기
우리는 현재 파일의 형식에 따라 할 수 있는 것들이 달라짐을 'cat' 명령어를 통해 확인했습니다.
그렇다면, 분명 "파일 형식을 미리 알 수 있는 방법이 있지 않을까?" 라고 의문이 생깁니다.
이때 사용할 수 있는 명령어가 바로 'file' 입니다.
'file' 명령어의 사용법은,
$ file [파일_이름]
입니다.
우리가 위에서 'cat' 명령어를 실행했던 "/etc/hostname" 과 "/bin/bash" 의 파일 타입을 확인해봅시다.
먼저, 'file /etc/hostname' 을 입력해보면,

"ASCII text" 즉, "/etc/hostname" 파일은 text(텍스트) 파일임을 알 수 있습니다.
텍스트 파일이였기에 'cat' 명령어로 내용을 확인할 수 있었던 것이죠.
이번에는 'file /bin/bash" 를 입력하면,

"ELF 64-bit LSB pie executable" 이라고 나오는데, 여기서 주황색으로 밑줄친 "executable"을 통해 '/bin/bash' 파일은 실행 파일임을 알 수 있습니다.
실행 파일은 binary code, 즉, 기계어로 구성되어 있어 'cat' 명령어로 내용을 확인할 수 없었던 것입니다.
[4] 명령어 'more' : 긴 텍스트 파일을 페이지 단위로 나눠서 보기
알다시피 우리는 'cat' 명령어로 text 파일의 데이터를 확인할 수 있습니다.
그렇다면, 내용이 매우 긴 파일을 'cat' 명령어로 확인한다면 어떨까요?
'cat /usr/share/dirb/wordlists/big.txt' 라는 명령어를 입력해보면,

파일의 내용이 너무 많아서 스크롤을 올려도 올려도 끝이 없습니다..
이럴때, 사용하는 명령어가 파일의 내용을 페이지 단위로 볼 수 있는 'more' 명령어입니다.
'more' 명령어는 'cat' 명령어처럼 text 파일의 데이터를 확인할 수 있지만, 표시해주는 방식이 한 페이지씩 구분하여 보여줍니다.
즉, 긴 파일을 한 번에 다 보여주는 'cat'과 달리, 'more'는 사용자가 천천히 내용을 읽을 수 있도록 도와줍니다.
'more /usr/share/dirb/wordlists/big.txt' 로 사용해봅시다.

한 페이지만 출력되었습니다! (옆의 스크롤바가 보이시죠?)
'more' 명령어 결과창을 사용하는 방법으로는,
- 'Enter' 키를 누르면 한 줄씩 내려갑니다.
- 'Space bar' 키를 누르면 다음 페이지로 넘어갑니다.
- 그리고 'more' 명령어의 결과를 그만 보려면 키보드 'q' 키를 누르면 종료됩니다.
(종료 = 파일 보기 모드에서 나와서 다시 터미널 명령 입력 상태로 돌아감)
[5] 파일 이름 = 파일 경로?
오늘 예시들을 보면, 파일 이름에 대부분 경로와 같은 방식으로 입력했습니다.
"/etc/hostname", "/bin/bash" 처럼 파일 이름 부분에 경로를 집어넣었습니다.
그래서 현재 디렉토리인 홈 디렉토리에서 'ls' 명령어를 사용해봐도 저런 이름의 파일은 없을 것입니다. (궁금하면 'ls' 쳐보세요)
정리하면, 파일이 다른 디렉터리에 있더라도, 경로를 함께 입력하면 현재 위치와 관계없이 접근할 수 있습니다.
("파일 이름"만 적는 대신에, "파일이 위치한 경로를 포함해 지정하는 방식"도 존재한다!)
EP.9 - 파일 내용 확인하기 (cat, file, more). END.
EP.10 - 파일/디렉토리의 복사, 삭제, 이동 (cp, rm, mv). Continue...
'[Linux 기초]' 카테고리의 다른 글
| [Linux 기초] EP.11 - UID, GID (useradd, id, su, exit) (1) | 2026.01.05 |
|---|---|
| [Linux 기초] EP.10 - 파일/디렉토리의 복사, 삭제, 이동 (cp, rm, mv) (1) | 2025.10.09 |
| [Linux 기초] EP.8 - vi 편집기로 파일 생성, 입력, 저장하기 (vi) (2) | 2025.10.04 |
| [Linux 기초] EP.7 - 리눅스 편리하게 사용하기 - man과 자동완성 (0) | 2025.09.23 |
| [Linux 기초] EP.6 - 절대 경로? 상대 경로? (1) | 2025.09.22 |