fmt는 유닉스 계열 운영체제에서 제공되는 표준 텍스트 포맷팅 유틸리티이다. 원래는 베르누이(Berkeley Software Distribution, BSD) 시스템에 포함되었으며, 현재는 GNU coreutils 패키지와 같은 현대적인 유닉스·리눅스 배포판에서도 이용할 수 있다.
정의 및 기능
fmt 명령은 입력된 텍스트를 지정된 너비(기본값은 75 문자) 안에서 단어 경계를 기준으로 자동으로 줄바꿈하여, 가독성이 높은 단락 형태로 재구성한다. 특히 전자우편 본문이나 소스 코드 주석 등에서 고정 폭 텍스트를 정렬할 때 활용된다.
주요 옵션
| 옵션 | 설명 |
|---|---|
-w N, --width=N |
출력 줄의 최대 길이를 N 문자로 지정한다. 기본값은 75이다. |
-c, --crown-margin |
첫 번째 줄을 제외한 모든 줄에 들여쓰기를 적용한다. |
-t, --tagged-paragraph |
각 단락의 첫 번째 줄이 태그(예: > 문자)로 시작하는 경우, 태그를 유지하면서 포맷한다. |
-u, --uniform-spacing |
연속된 공백을 단일 공백으로 압축한다. |
-s, --split-only |
단어가 지정 너비를 초과할 경우, 바로 줄바꿈 없이 그대로 출력한다. |
사용 예시
# 파일 article.txt를 50 문자 너비로 포맷하고 결과를 표준 출력에 표시
fmt -w 50 article.txt
# 파이프라인에서 텍스트를 포맷: echo "긴 문장..." | fmt
echo "This is a very long line that will be wrapped by fmt according to the default width." | fmt
역사·배경
- 초기 구현: 1979년 BSD 2.9BSD에 포함된
fmt는 당시 텍스트 편집기의 기본 기능 중 하나로 설계되었다. - POSIX 표준:
fmt는 IEEE Std 1003.1(또는 POSIX) 표준에 명시되어 있어, 규격을 따르는 모든 유닉스 시스템에서 동작하도록 보장된다. - GNU 구현: GNU coreutils 프로젝트는
fmt의 GNU 버전을 제공하며, 추가 옵션(--crown-margin등)을 도입하여 기존 기능을 확장하였다.
관련 명령·도구
fold– 지정된 너비에서 강제로 줄바꿈을 수행하지만, 단어 경계를 고려하지 않는다.pr– 텍스트를 페이지 형식으로 출력할 때 페이지 나누기와 헤더/풋터 삽입을 지원한다.sed,awk– 복잡한 텍스트 변환 및 포맷팅을 스크립트로 구현할 수 있다.
참고 문헌·외부 링크
- GNU coreutils 매뉴얼: https://www.gnu.org/software/coreutils/manual/html_node/fmt-invocation.html
- POSIX.1-2017
fmt명령 사양: https://pubs.opengroup.org/onlinepubs/9699919799/utilities/fmt.html
(본 내용은 공개된 매뉴얼 및 표준 문서에 근거한 객관적인 서술이며, 추가적인 비공식적 해석을 포함하지 않는다.)