개요
`printf`는 형식 문자열과 인수를 사용하여 출력을 정밀하게 제어합니다. 이는 스크립트에서 보고서 생성, 로그 메시지 포맷팅 등 다양한 용도로 활용됩니다.
주요 특징
- 다양한 형식 지정자 지원 (%s, %d, %f 등)
- 이스케이프 시퀀스 지원 (\n, \t, \x 등)
- 정수, 부동 소수점, 문자열 등 데이터 타입별 출력
- 출력 너비, 정밀도, 정렬 제어 가능
주요 옵션 (형식 지정자 및 이스케이프 시퀀스)
`printf` 명령어는 전통적인 `-`로 시작하는 옵션보다는 형식 문자열 내에 포함되는 '형식 지정자'와 '이스케이프 시퀀스'를 통해 동작을 제어합니다. 다음은 자주 사용되는 것들입니다.
형식 지정자
이스케이프 시퀀스
생성된 명령어:
명령어를 조합해 보세요.
설명:
`printf` 명령어를 실행합니다.
위 옵션들을 조합하여 AI와 함께 가상으로 명령어를 실행해 보세요.
사용 예시
다양한 형식 지정자와 이스케이프 시퀀스를 활용한 `printf` 사용 예시입니다.
기본 문자열 출력
printf "Hello, World!\n"
간단한 문자열을 출력하고 줄 바꿈합니다.
정수 및 문자열 혼합 출력
printf "이름: %s, 나이: %d세\n" "홍길동" 30
정수와 문자열을 함께 포맷하여 출력합니다.
부동 소수점 정밀도 지정
printf "원주율: %.2f\n" 3.141592
부동 소수점 숫자를 소수점 이하 두 자리까지 출력합니다.
출력 너비 및 정렬
printf "%-10s %5d\n" "상품명" 123
문자열을 10칸 너비로 왼쪽 정렬하고, 정수를 5칸 너비로 오른쪽 정렬합니다.
16진수 및 8진수 출력
printf "10진수: %d, 16진수: %x, 8진수: %o\n" 255 255 255
숫자를 16진수와 8진수로 출력합니다.
변수와 함께 사용
NAME="김철수"
SCORE=95
printf "학생: %s, 점수: %d점\n" "$NAME" "$SCORE"
셸 변수를 `printf`의 인수로 사용하여 출력합니다.
팁 & 주의사항
`printf`를 효과적으로 사용하기 위한 팁과 주의할 점입니다.
`echo`와의 차이점
`echo`는 주로 간단한 문자열 출력에 사용되며, 이스케이프 시퀀스 해석(`-e` 옵션 필요)이나 형식 지정에 제한적입니다. 반면 `printf`는 형식 지정자를 통해 출력 형식을 정밀하게 제어할 수 있으며, 이스케이프 시퀀스를 항상 해석합니다.
- 이스케이프 시퀀스: `printf`는 항상 이스케이프 시퀀스를 해석합니다. `echo`는 `-e` 옵션이 필요합니다.
- 형식 지정: `printf`는 `%s`, `%d` 등 다양한 형식 지정자를 지원하여 출력 형식을 세밀하게 제어할 수 있습니다. `echo`는 이러한 기능이 없습니다.
- 줄 바꿈: `echo`는 기본적으로 출력 후 줄 바꿈을 하지만, `printf`는 `\n`을 명시적으로 지정해야 합니다.
형식 문자열과 인수의 일치
형식 문자열의 형식 지정자 수와 제공되는 인수의 수가 일치해야 합니다. 인수가 부족하면 셸에 따라 기본값(예: 0 또는 빈 문자열)이 사용될 수 있으며, 인수가 너무 많으면 초과된 인수는 무시됩니다. 이는 예상치 못한 결과를 초래할 수 있으므로 주의해야 합니다.
이스케이프 시퀀스 사용 시 주의
특히 `\` 문자를 출력하려면 `\\`와 같이 두 번 사용해야 합니다. 셸이 먼저 백슬래시를 해석할 수 있으므로, `printf`에 전달되기 전에 이스케이프 처리가 필요할 수 있습니다. 일반적으로 형식 문자열을 큰따옴표("")로 묶는 것이 안전합니다.