ioerror

unexpand 사용법 및 옵션 - 공백 문자를 탭 문자로 변환하는 유닉스/리눅스 명령어 본문

OS

unexpand 사용법 및 옵션 - 공백 문자를 탭 문자로 변환하는 유닉스/리눅스 명령어

반응형

unexpand 사용법 및 옵션 - 공백 문자를 탭 문자로 변환하는 유닉스/리눅스 명령어

unexpand - Convert Spaces to Tabs

텍스트 파일이나 표준 입력으로 들어오는 공백 문자(Space) 연속체를 탭 문자(Tab)로 변환하는 유닉스/리눅스 표준 유틸리티이다. 소스 코드 포맷팅 정리가 필요하거나 탭 기반 들여쓰기 규칙을 적용할 때 사용된다. 기본적으로 줄 시작 부분의 공백만 탭으로 변환하지만, 옵션을 통해 파일 전체의 공백을 변환하도록 지정할 수 있다. POSIX 표준을 따르는 대부분의 유닉스 계열 운영체제에서 기본 제공된다.

1. unexpand 용도

  • 스페이스(공백) 들여쓰기가 사용된 소스 코드를 탭 들여쓰기로 일괄 변환하다.
  • 문서나 데이터 파일의 저장 용량을 줄이고 탭 스타일 규칙을 강제하다.
  • 개발 프로젝트의 포맷팅 스타일 가이드 준수 작업에 사용되다.

2. 명령어 서식

Bash
 
unexpand [OPTION]... [FILE]...

3. 명령어 옵션

옵션 설명 사용가능 OS 및 쉘
-a, --all 줄 시작 부분뿐만 아니라 문장 중간에 위치한 모든 연속 공백을 탭으로 변환하다. All
--first-only 줄 시작 부분의 연속 공백만 탭으로 변환하다. (기본 동작 방식) [Linux GNU]
-t N, --tabs=N 탭 크기를 기본값인 8이 아닌 N개의 공백으로 지정하여 변환하다. All
-t LIST, --tabs=LIST 탭 위치를 콤마로 구분된 리스트로 명시적으로 지정하다. All
-U, --unit-at-a-time 입력 데이터를 유니코드 문자가 아닌 바이트 단위로 처리하다. [FreeBSD] [macOS]
--help 명령어 도움말 정보를 출력하고 종료하다. [Linux GNU]
--version 버전 정보를 출력하고 종료하다. [Linux GNU]

옵션 사용 예시

Bash
 
# 기본 사용: input.txt의 선두 공백을 탭으로 변환하여 output.txt에 저장
unexpand input.txt > output.txt

# -a 옵션: 줄 전체의 모든 연속 공백을 탭으로 변환
unexpand -a code.py > code_tabs.py

# -t 옵션: 탭 너비를 4개 공백 기준으로 지정하고 변환 결과 확인 (cat -T로 탭을 ^I로 표시)
unexpand -t 4 input.txt | cat -T
# ^Ifunction test() {
# ^I^Ireturn true;
# }

# 변환 결과 확인 설명:
# ^I : 공백 4개가 1개의 탭 문자(Tab, \t)로 성공적으로 변환되었음을 나타냄

4. 명령어 특이사항(유의사항)

  • 기본 동작은 줄의 시작 부분(Leading spaces)에 있는 공백만 변환하다. 코드 중간이나 문장 사이의 공백까지 모두 변환하려면 반드시 -a (--all) 옵션을 부여해야 하다.
  • 기본 탭 간격은 8칸이다. 4칸이나 2칸 들여쓰기 기준 소스 코드를 처리할 때는 -t 4 또는 -t 2 옵션을 명시하지 않으면 정렬이 깨지는 현상이 발생하다.
  • Stack Overflow 및 GitHub 이슈에서 가장 빈번하게 언급되는 문제는 파이썬(Python) 소스 코드 처리 시 공백과 탭이 혼용되어 IndentationError가 발생하는 케이스이다. unexpand 처리 전후에 cat -A 또는 cat -T 명령으로 탭 문자가 올바르게 입력되었는지 검증해야 하다.

관련 명령어들

  • expand: 탭 문자를 지정된 개수의 공백 문자로 변환하다.
  • fold: 각 입력 줄의 너비를 지정된 자릿수로 제한하여 줄 바꿈하다.
  • tabify: 일부 편집기나 환경에서 탭 변환 기능을 제공하는 유사 도구이다.
  • cat: -T 또는 -A 옵션을 사용하여 파일 내 탭 문자를 Visual 형태로 출력하다.

https://ioerror.tistory.com/entry/UNIX-Linux-Command-Reference

 

UNIX & Linux Command Reference

유닉스 / 리눅스 명령어 표유닉스와 리눅스 환경에서 자주 사용되는 필수 명령어들을 완벽하게 정리한다. 서버 관리, 프로그래밍, 일상적인 시스템 운영 등 어떤 목적이든 터미널 환경을 능숙하

ioerror.tistory.com

 

 

반응형
Comments