기본 문법
echo [-neE] [문자열...]
echo 는 인자로 받은 문자열을 표준출력으로 내보내는 명령어입니다. 변수 값 확인, 스크립트 진행 상황 표시, 짧은 파일 생성과 내용 추가에 자주 쓰입니다.
실무에서는 리다이렉션과 함께 쓰는 경우가 많습니다. `echo 문자열 > 파일` 은 파일을 새로 만들거나 기존 내용을 덮어쓰고, `echo 문자열 >> 파일` 은 파일 끝에 한 줄을 덧붙입니다. /etc/motd 배너 작성이나 /etc/hosts 항목 추가처럼 짧은 내용을 편집기 없이 처리할 때 쓸 수 있지만, 시스템 파일을 직접 수정할 때는 먼저 사본을 백업하고 `>` 대신 `>>` 를 사용하는지 확인해야 합니다. 아래 예제는 모두 /tmp 아래 연습용 파일로 실습합니다.
시험에서는 단독 문제보다 다른 문제의 준비 단계나 결과 확인 단계로 자주 등장합니다. echo 가 셸 내장 명령이면서 /bin/echo(coreutils) 로도 존재해 옵션 처리가 서로 다르다는 점, bash 기본 설정에서는 -e 없이 \n 이 그대로 출력된다는 점이 자주 나오는 함정입니다.
자주 쓰는 옵션
| 옵션 | 의미 | 예 |
|---|---|---|
-n | 출력 끝에 줄바꿈을 붙이지 않음 | echo -n "입력하세요: " |
-e | \n, \t, \\, \c 같은 백슬래시 이스케이프를 해석 | echo -e "이름\t부서" |
-E | 백슬래시 이스케이프를 해석하지 않음(bash 기본 동작) | echo -E "C:\\temp" |
--help | 도움말 출력. /bin/echo 에서만 동작하며, 셸 내장 echo 에서는 문자열로 그대로 출력됨 | /bin/echo --help |
--version | 버전 출력. /bin/echo 에서만 동작하며, 셸 내장 echo 에서는 문자열로 그대로 출력됨 | /bin/echo --version |
실무 예시
문자열 출력
$ echo Hello Learnix
Hello Learnix
인자로 준 문자열이 그대로 출력되고 끝에 줄바꿈이 붙습니다.
변수 값 확인
$ echo "HOME=$HOME SHELL=$SHELL"
HOME=/root SHELL=/bin/bash
큰따옴표 안에서 변수가 값으로 치환됩니다. 환경 변수가 제대로 설정됐는지 확인할 때 씁니다. 출력 값은 실행 계정과 셸에 따라 달라집니다(아래는 root, bash 기준).
-n 과 -e 로 출력 형태 바꾸기
$ echo -n "진행: "; echo -e "1단계\t완료\n2단계\t대기"
진행: 1단계 완료
2단계 대기
-n 은 줄바꿈을 생략해 다음 출력이 같은 줄에 이어지고, -e 는 \t 와 \n 을 각각 탭과 줄바꿈으로 해석합니다.
배너 파일 만들기 (#178 유형)
준비: mkdir -p /tmp/demo
$ echo "Welcome to Learnix Ops" > /tmp/demo/motd; echo "Authorized access only" >> /tmp/demo/motd; cat /tmp/demo/motd
Welcome to Learnix Ops
Authorized access only
> 로 파일을 새로 만들고 >> 로 두 번째 줄을 덧붙여 두 줄짜리 파일을 만듭니다. 실제 /etc/motd 에 적용할 때는 기존 파일을 먼저 백업한 뒤 작업하세요.
hosts 사본에 항목 추가 (#170 유형)
준비: mkdir -p /tmp/demo; printf '127.0.0.1 localhost\n10.10.10.10 web.internal\n' > /tmp/demo/hosts.sample; cp /tmp/demo/hosts.sample /tmp/demo/hosts.final
$ echo "10.10.10.11 db.internal" >> /tmp/demo/hosts.final; echo "10.10.10.12 cache.internal" >> /tmp/demo/hosts.final; cat /tmp/demo/hosts.final
127.0.0.1 localhost
10.10.10.10 web.internal
10.10.10.11 db.internal
10.10.10.12 cache.internal
원본을 복사한 뒤 >> 로 두 줄만 덧붙이므로 기존 줄이 그대로 유지됩니다. /etc/hosts 를 수정할 때도 같은 방식으로 사본을 만들어 확인한 뒤 반영하는 편이 안전합니다.
주의할 점
- > 와 >> 를 혼동하면 기존 파일 내용이 통째로 지워집니다. 줄을 추가할 때는 반드시 >> 를 씁니다.
- /etc/hosts, /etc/motd 같은 시스템 파일에 리다이렉션할 때는 먼저 `cp 원본 원본.bak` 으로 백업하고, 가능하면 사본에서 확인한 뒤 반영합니다.
- 변수를 따옴표 없이 쓰면 공백 기준으로 나뉘고 *, ? 가 파일명으로 확장됩니다. echo "$VAR" 형태를 권장합니다.
- -e 없이 쓴 \n, \t 는 해석되지 않고 문자 그대로 출력됩니다.
- echo 는 셸 내장 명령이면서 /bin/echo 로도 존재해 -e, --help 등의 처리 방식이 다릅니다. 이식성이 필요하면 printf 를 씁니다.
이 명령어로 풀 수 있는 실습 문제
브라우저 웹 터미널에서 바로 풀고 요구사항별로 자동 채점됩니다. 로그인 없이 5분 체험도 가능합니다.
관련 명령어
마지막 검수 2026-09-16 · 내용에 오류가 있으면 문제 페이지의 질문 기능으로 알려 주세요.
