
echo
echo는 문자열이나 변수 값을 표준 출력(stdout)에 그대로 출력하는 shell built-in 명령어.
입력한 말을그대로 다시 돌려주는 명령
이라는 점에서
이름이 echo(메아리)임.
다음과 같이 문자열 또는 환경변수의 값을 알아보는데 사용됨.
echo "Hello"
echo $PATH
자주 쓰는 옵션:
-n: 줄바꿈 없이 출력echo -n "Hello"-e: escape sequence 해석 (\n,\t,\a등) 켜기- 주의할 점은 bash에서 기본적으로 disable 상태이나 zsh에서 enable 상태임.
- 해석 기능을 끄려면
-E로 disable 시키면 됨.
echo -e "A\nB"
echo는 script나 터미널에서 메시지 출력, 변수 확인, 파이프·리다이렉션과 결합한 데이터 전달에 가장 많이 사용됨.
shell expansion의 결과를 확인하는데 가장 유용한 도구 중 하나임.
인코딩은 주로 utf-8을 사용하는게 사실상 표준이 되어 특별히 신경쓰지 않아도 된다,
단, Windows에서 사용할 경우 utf-16le, ms949 등이 혼재되어 한글이 깨지기도 함.
인코딩 관련해서 처리가 필요하면 iconv를 사용해볼 것을 권함:
printf
printf는 C 언어의 printf() 함수와 동일한 format string(형식문자열) 모델을 사용하는 출력 명령어임.
- format string을 통해 숫자, 문자열, 정렬, 소수점, 진법 등을 지정할 수 있음
- POSIX 표준이라 정확하고 이식성 있는 출력을 가능하게 함.
다음의 예를 참고할 것.
printf "Hello\n"
printf "PI = %.2f\n" 3.14159
fomat string
format string은 printf에서 format specifier(형식문자)를 포함한 출력 템플릿 문자열 임.
다음의 예를 들어 설명한다.
printf "x=%d, y=%.2f, name=%s, hex=%x\n" 3 1.234 Kim 255
%d,%.2f,%s,%x같은 format specifier가- 각 값의 자료형과 출력 방식을 결정함,
- 이들을 포함한
"x=%d, y=%.2f, name=%s, hex=%x\n"전체가 format string 임.
대표적인 format specifier는 다음과 같음:
%s→ 문자열%d→ 10진수 정수%f→ 실수%.nf→ 소수점 n자리 실수%x→ 16진수%o→ 8진수%c→ 문자 1개%e→ 지수 표기 실수%%→%문자 자체 출력
Python 등에서도 old style로 문자열 출력시 format string model을 사용함: percent formatting이라고 불림.
echo vs. printf
| 구분 | echo |
printf |
| 목적 | 간단한 문자열 출력 | 형식(format) 기반 출력 |
| 줄바꿈 | 기본적으로 자동 추가 | 자동으로 안 붙음 |
| escape 처리 | 셸·구현마다 다름 (-e) |
C printf와 동일 |
| 이식성 | 셸마다 동작 차이 있음 | POSIX 표준, 동작이 안정적 |
| 숫자·서식 | 불가능 | %d, %f, %s 등 지원 |
예제:
echo "x = 3.14"
printf "x = %.2f\n" 3.14159
간단히 정리하면,
echo는 빠르게 찍어보는 용도,printf는 정확한 형식과 스크립트 안정성이 필요한 경우에 사용을 권장.
같이 보면 좋은 자료들
2023.10.02 - [Linux] - [Bash] 입출력 목적지 변경하기 : Redirection Operation
[Bash] 입출력 목적지 변경하기 : Redirection Operation
stdout (표준출력, 1), sdtin(표준입력, 0), stderr(표준에러, 2)을 redirection하는 방법에 대한 문서서버에서 백그라운드로 명령어 수행시 출력이나 error 메시지 등을 stdout이 아닌 file에 남길 때 유용.redirec
ds31x.tistory.com
2023.10.02 - [분류 전체보기] - Shell 과 CLI 명령어 요약 정리
Shell 과 CLI 명령어 요약 정리
Shell 이란?https://dsaint31.me/mkdocs_site/OS/console_terminal_shell_kernel/?h=shell#shell BMEConsole, Terminal, and Shell Console: 컴퓨터(주로 서버)에 command를 작성하여 입력하고 그 결과를 확인할 수 있는 (물리적) 입출력
ds31x.tistory.com