cat 명령어와 바이너리 파일: ASCII text vs data 파일의 차이

CS/운영체제

리눅스에서 파일을 읽기 위해 cat명령어를 사용하다 보면,

어떤 파일은 정상적으로 읽히지만 어떤 파일은 터미널 화면이 깨지면서 이상한 문자들이 출력되는 경우가 있다.

이런 현상은 구체적으로 왜 발생하는 걸까?

 

파일 타입 확인하기: file 명령어

먼저 file 명령어를 통해 파일의 타입을 확인해보자.

file 파일명

위 이미지에서의 결과는 data로 나온다. 이 파일은 일반 텍스트 파일이 아닌 바이너리 파일이다.

여러 파일 한 번에 확인하기

디렉토리 내 모든 파일의 타입을 한 번에 확인하려면 와일드카드를 사용하면 된다.

file ./*

이미지 속 결과를 보면, 대부분은 data로 표시되지만 -file07만 ASCII text로 표시된다.

이 ASCII text파일은 data으로 정상적으로 읽을 수 있다.

 

cat이 바이너리 파일을 읽지 못하는 이유

cat 명령어의 작동 원리

data을 파일 내용을 해석하지 않고 바이트 그대로 출력하는 명령어다.

파일이 어떤 형식이든 상관없이 저장된 바이트를 그대로 터미널에 전달한다.

ASCII text 파일은 왜 읽힐까?

ASCII text파일의 바이트들은 문자 인코딩 체계(ASCII 또는 UTF-8)에 맞게 저장되어 있다.

예시:

  • A라는 문자는 바이트값 65로 저장됨
  • 터미널이 65를 받으면 문자 A로 표시함
  • 즉, 바이트 자체가 이미 "문자"이기 때문에 사람이 읽을 수 있음

data(바이너리) 파일은 왜 깨질까?

data로 분류된 파일은 대부분 바이너리 형식이다. 이는 문자 인코딩 규칙을 따르지 않는다.

  • 실행 파일, 압축 파일, 이미지 등이 바이너리 형식
  • 저장된 바이트가 실행 코드, 압축 데이터 등 문자가 아닌 정보
  • 터미널이 이 바이트를 억지로 문자로 해석하려다 깨진 글자나 제어 문자 출력
  • 심한 경우 터미널 설정이 바뀌어 화면 전체가 이상해짐
핵심
cat은 파일을 문자로 변환하지 않는다. 단지 바이트를 그대로 출력할 뿐이다.

- 텍스트 파일: 바이트 자체가 문자 인코딩 규칙에 맞음 → 읽기 가능
- 바이너리 파일: 바이트가 문자 체계를 따르지 않음 → 의미 없는 기호로 보임

 

터미널이 깨졌을 때

만약 바이너리 파일을 cat으로 읽어서 터미널이 깨졌다면

reset

이 reset 명령어로 터미널을 초기화할 수 있다.

 

'CS > 운영체제' 카테고리의 다른 글

공백이 포함된 파일명 여는 방법  (0) 2026.02.06
-로 시작하는 파일명 여는 방법  (0) 2026.02.06
SSH로 원격 서버에 접속하기  (0) 2026.02.06
'CS/운영체제' 카테고리의 다른 글
  • 공백이 포함된 파일명 여는 방법
  • -로 시작하는 파일명 여는 방법
  • SSH로 원격 서버에 접속하기
고견
고견
개발 자국 남기기
  • 고견
    개발자국
    고견
  • 전체
    오늘
    어제
    • 분류 전체보기 (157) N
      • Frontend (29)
        • Next.js (16)
        • JavaScript (7)
      • CS (19) N
        • 자료구조 (9)
        • 알고리즘 (5)
        • 운영체제 (4) N
        • 네트워크 (1) N
      • TIL (93)
      • Dev Log (16)
  • 블로그 메뉴

    • 홈
    • 태그
    • 방명록
  • 링크

  • 공지사항

  • 인기 글

  • 태그

    배열
    react
    Trouble Shooting
    emotion diary
    자료구조
    함수 타입
    Spa
    바닐라 자바스크립트
    ai 감성 일기장
    타입 좁히기
    useState
    앱 라우터
    cs50
    인터페이스
    algorithm
    Pages Router
    C
    문자열
    memory
    Next.js
    javascript
    클래스
    App Router
    제네릭
    알고리즘
    페이지 라우터
    generic
    트러블 슈팅
    typescript
    CS
  • 최근 댓글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.5
고견
cat 명령어와 바이너리 파일: ASCII text vs data 파일의 차이
상단으로

티스토리툴바