๊ฐœ๋ฐœ๋…ธํŠธ/Linux

[Linux] ๋ฆฌ๋ˆ…์Šค echo ๋ช…๋ น์–ด ์‹ค์ „ ๊ฐ€์ด๋“œ: ๋ฌธ์ž์—ด ์ถœ๋ ฅ๋ถ€ํ„ฐ ์Šคํฌ๋ฆฝํŠธ ์ž๋™ํ™”๊นŒ์ง€ ๐Ÿ“˜

๋กœ๋กœ๋ฝœ 2025. 12. 8. 08:00

๊ฐœ๋ฐœ์„ ํ•˜๋‹ค ๋ณด๋ฉด ๋ณ„๊ฑฐ ์•„๋‹Œ ์ค„ ์•Œ๊ณ  ์ง€๋‚˜์ณค๋˜ ๋ช…๋ น์–ด ํ•˜๋‚˜๊ฐ€,
์‹ค๋ฌด์—์„œ๋Š” “์—†์œผ๋ฉด ์•ˆ ๋˜๋Š” ์กด์žฌ”๊ฐ€ ๋˜๋Š” ๊ฒฝ์šฐ๊ฐ€ ์žˆ๋‹ค.
echo ๋ช…๋ น์–ด๊ฐ€ ๋ฐ”๋กœ ๊ทธ๋Ÿฐ ์ผ€์ด์Šค๋‹ค.

์ฒ˜์Œ์—” "Hello World" ํ•œ ์ค„ ์ถœ๋ ฅํ•˜๋Š” ๋‹จ์ˆœ ๋„๊ตฌ๋กœ ๋ณด์ด์ง€๋งŒ,
์‹ค์ œ๋กœ๋Š” ๋””๋ฒ„๊น…, ์ž๋™ํ™”, ์ž„๋ฒ ๋””๋“œ ์ œ์–ด, ํŒŒ์ผ ์ƒ์„ฑ๊นŒ์ง€ ๋ฆฌ๋ˆ…์Šค์˜ ๊ฑฐ์˜ ๋ชจ๋“  ์˜์—ญ์— ๊นŠ์ˆ™์ด ๋“ค์–ด๊ฐ€ ์žˆ๋‹ค.

  • ์Šคํฌ๋ฆฝํŠธ ์ค‘๊ฐ„ ์ƒํƒœ ํ™•์ธ
  • ํ™˜๊ฒฝ ๋ณ€์ˆ˜ ์ถœ๋ ฅ
  • ์„ค์ • ํŒŒ์ผ ์ž๋™ ์ƒ์„ฑ
  • OpenWrt/์ž„๋ฒ ๋””๋“œ ์žฅ๋น„ ์ œ์–ด
  • ๋กœ๊ทธ ํ…์ŠคํŠธ ํ…œํ”Œ๋ฆฟ ์ œ์ž‘

ํŠนํžˆ OpenWrt๋‚˜ BusyBox์ฒ˜๋Ÿผ ๊ฐ„์†Œํ™”๋œ ํ™˜๊ฒฝ์—์„œ๋Š” printf์กฐ์ฐจ ๋น ์ ธ ์žˆ๋Š” ๊ฒฝ์šฐ๊ฐ€ ๋งŽ์•„์„œ
echo๊ฐ€ ์‚ฌ์‹ค์ƒ “ํ‘œ์ค€ ์ถœ๋ ฅ API”์ฒ˜๋Ÿผ ์“ฐ์ด๊ธฐ๋„ ํ•œ๋‹ค.

๋‚˜ ์—ญ์‹œ ์ฒ˜์Œ์—” echo๋ฅผ ๊ทธ์ € “๋ฌธ์ž ์ถœ๋ ฅ ๋ช…๋ น์–ด”๋ผ๊ณ  ์ƒ๊ฐํ–ˆ์—ˆ๋Š”๋ฐ,
๋นŒ๋“œ/๋ฐฐํฌ ์Šคํฌ๋ฆฝํŠธ, OpenWrt ์ž๋™ํ™”, ํ•˜๋“œ์›จ์–ด ์ œ์–ด ๋“ฑ์„ ๋ฐ˜๋ณตํ•˜๋‹ค ๋ณด๋‹ˆ
“echo๋ฅผ ์–ด๋–ป๊ฒŒ ๋‹ค๋ฃจ๋А๋ƒ์— ๋”ฐ๋ผ ์Šคํฌ๋ฆฝํŠธ ํ’ˆ์งˆ์ด ๋‹ฌ๋ผ์ง„๋‹ค”๋Š” ๊ฑธ ์ ˆ์‹คํžˆ ๋А๊ผˆ๋‹ค.


1. echo ๋ช…๋ น์–ด ๊ธฐ๋ณธ ์‚ฌ์šฉ๋ฒ•

๋ฆฌ๋ˆ…์Šค echo ๋ช…๋ น์–ด๋Š” ๊ธฐ๋ณธ์ ์œผ๋กœ ๋‹ค์Œ์ฒ˜๋Ÿผ ์‚ฌ์šฉํ•œ๋‹ค.

echo "Hello World"
 

์ถœ๋ ฅ:

Hello World

๋”ฑ ๋ณด๋ฉด ๋‹จ์ˆœํ•˜์ง€๋งŒ, echo์˜ ์ง„์งœ ํ•ต์‹ฌ์€
๋ฌธ์ž์—ด์„ ์–ด๋–ป๊ฒŒ ํ•ด์„ํ•˜๋А๋ƒ, ๊ทธ๋ฆฌ๊ณ  ์‰˜๋งˆ๋‹ค ์˜ต์…˜ ์ฒ˜๋ฆฌ ๋ฐฉ์‹์ด ๋‹ค๋ฅด๋‹ค๋Š” ์ ์ด๋‹ค.

๊ทธ๋ž˜์„œ ๊ฐ™์€ ์Šคํฌ๋ฆฝํŠธ๋ผ๋„ Bash์—์„œ๋Š” ์ •์ƒ ์ถœ๋ ฅ๋˜๋Š”๋ฐ
Dash๋‚˜ BusyBox์—์„œ๋Š” ์ถœ๋ ฅ์ด ๊นจ์ง€๋Š” ์ผ์ด ์ข…์ข… ์ƒ๊ธด๋‹ค.
(์ด ๋•Œ๋ฌธ์— ์‹ค๋ฌด์—์„œ echo ๋•Œ๋ฌธ์— ๋””๋ฒ„๊น… ์‹œ๊ฐ„์„ ๋‚ ๋ ค๋ณธ ์‚ฌ๋žŒ์ด ์ •๋ง ๋งŽ๋‹ค.)


2. echo ์˜ต์…˜ ์ •๋ฆฌ

๋ฆฌ๋ˆ…์Šค echo ๋ช…๋ น์–ด ์˜ต์…˜ ์ •๋ฆฌ ํ‘œ
echo -n, -e, -E ์˜ต์…˜ ์ •๋ฆฌ

echo๋Š” ์˜ต์…˜์ด ๋งŽ์ง€๋Š” ์•Š์ง€๋งŒ, ์ด ์„ธ ๊ฐ€์ง€ ์˜ต์…˜๋งŒ ์ดํ•ดํ•ด๋„ ํ™œ์šฉ๋„๊ฐ€ ํฌ๊ฒŒ ๋‹ฌ๋ผ์ง„๋‹ค.


1) -n ์˜ต์…˜: ์ค„๋ฐ”๊ฟˆ ์—†์ด ์ถœ๋ ฅ

์ผ๋ฐ˜์ ์œผ๋กœ echo๋Š” ์ถœ๋ ฅ ๋’ค์— ์ž๋™์œผ๋กœ ์ค„๋ฐ”๊ฟˆ์„ ์ถ”๊ฐ€ํ•œ๋‹ค.
ํ•˜์ง€๋งŒ -n ์˜ต์…˜์„ ์‚ฌ์šฉํ•˜๋ฉด ๋งˆ์ง€๋ง‰ ์ค„๋ฐ”๊ฟˆ์„ ์ œ๊ฑฐํ•œ๋‹ค.

echo -n "Hello "
echo "World"
 

์ถœ๋ ฅ:

Hello World

 

ํ”„๋กฌํ”„ํŠธ ๊ตฌ์„ฑ์ด๋‚˜ ์ง„ํ–‰ ์ค‘์ธ ์ƒํƒœ๋ฅผ ํ•œ ์ค„๋กœ ํ‘œ์‹œํ•  ๋•Œ ์ž์ฃผ ์“ด๋‹ค.


2) -e ์˜ต์…˜: escape ๋ฌธ์ž ํ•ด์„

๋ฆฌ๋ˆ…์Šค echo ๋ช…๋ น์–ด์—์„œ ๊ฐ€์žฅ ์ค‘์š”ํ•œ ์˜ต์…˜ ์ค‘ ํ•˜๋‚˜๊ฐ€ -e์ด๋‹ค.
์ด๋Š” ๋ฌธ์ž์—ด ์•ˆ์˜ \n, \t ๊ฐ™์€ escape ๋ฌธ์ž๋ฅผ ํ•ด์„ํ•˜์—ฌ ์‹ค์ œ ์ œ์–ด๋ฌธ์ž๋กœ ๋ณ€ํ™˜ํ•œ๋‹ค.

echo -e "Line1\nLine2\nLine3"
 

์ถœ๋ ฅ:

Line1
Line2
Line3
 

์ฃผ์š” escape ์ฝ”๋“œ ์„ค๋ช…:

์ฝ”๋“œ ์„ค๋ช…
\n ์ค„๋ฐ”๊ฟˆ
\t ํƒญ
\r ์บ๋ฆฌ์ง€ ๋ฆฌํ„ด
\c ๋’ค ๋‚ด์šฉ ์ถœ๋ ฅํ•˜์ง€ ์•Š๊ณ  ์ข…๋ฃŒ
\\ ์—ญ์Šฌ๋ž˜์‹œ ์ถœ๋ ฅ
\" ํฐ๋”ฐ์˜ดํ‘œ ์ถœ๋ ฅ
\a ์•Œ๋žŒ ์†Œ๋ฆฌ(Bell)

์ด ์˜ต์…˜์€ ๋งŽ์€ ์Šคํฌ๋ฆฝํŠธ์—์„œ ํ•„์š”ํ•œ๋ฐ, ํŠนํžˆ ๋ฉ€ํ‹ฐ๋ผ์ธ ํ…์ŠคํŠธ ์ถœ๋ ฅ, JSON ์ƒ์„ฑ, ํ…œํ”Œ๋ฆฟ ์ž‘์„ฑ์— ์ž์ฃผ ์“ฐ์ธ๋‹ค.


3) -E ์˜ต์…˜: escape ๋ฌธ์ž ํ•ด์„ ๋„๊ธฐ

๋Œ€๋ถ€๋ถ„์˜ ์‰˜์—์„œ echo๋Š” ๊ธฐ๋ณธ์ ์œผ๋กœ escape ๋ฌธ์ž๋ฅผ ํ•ด์„ํ•˜์ง€ ์•Š๋Š”๋‹ค.
๊ทธ๋ž˜์„œ -E๋Š” ๊ฑฐ์˜ ๊ธฐ๋ณธ ๋™์ž‘๊ณผ ๊ฐ™์ง€๋งŒ, ๋‹ค๋ฅธ ํ™˜๊ฒฝ์—์„œ ๋ช…์‹œ์ ์œผ๋กœ ํ•ด์„์„ ๋„๊ณ  ์‹ถ์„ ๋•Œ ์œ ์šฉํ•˜๋‹ค.

echo -E "Hello\nWorld"
 

์ถœ๋ ฅ:

Hello\nWorld
 

3. ์‰˜๋ณ„ echo ๋™์ž‘ ์ฐจ์ด(Bash, Dash, Zsh, BusyBox)

Bash, Dash, Zsh, BusyBox echo ๋™์ž‘ ์ฐจ์ด ํ‘œ
์‰˜๋ณ„ echo ์˜ต์…˜ ์ง€์› ์ฐจ์ด

๋ฆฌ๋ˆ…์Šค echo ๋ช…๋ น์–ด๊ฐ€ ์–ด๋ ค์šด ์ด์œ ๋Š” ๋ชจ๋“  ์‰˜์—์„œ echo ๋™์ž‘์ด ๋™์ผํ•˜์ง€ ์•Š๊ธฐ ๋•Œ๋ฌธ์ด๋‹ค.
๋Œ€ํ‘œ์ ์ธ ์ฐจ์ด๋ฅผ ์‚ดํŽด๋ณด๋ฉด ๋‹ค์Œ๊ณผ ๊ฐ™๋‹ค.


1) Bash echo

  • escape ๋ฌธ์ž ํ•ด์„ ๋ฐฉ์‹ ์œ ์—ฐํ•จ
  • echo -e ์‚ฌ์šฉ ์‹œ ๊ฑฐ์˜ ์˜ˆ์ƒ๋Œ€๋กœ ๋™์ž‘
  • ๋Œ€๋ถ€๋ถ„์˜ Linux ๋ฐฐํฌํŒ์—์„œ ๊ธฐ๋Œ€ํ•˜๋Š” ๋Œ€๋กœ ๋™์ž‘ํ•จ

2) Dash echo (Ubuntu /bin/sh)

  • escape ์ฒ˜๋ฆฌ ์ œํ•œ์ 
  • -e ์˜ต์…˜์ด ๋™์ž‘ํ•˜์ง€ ์•Š์„ ์ˆ˜ ์žˆ์Œ
  • ๊ทธ๋ž˜์„œ Ubuntu์—์„œ sh ์Šคํฌ๋ฆฝํŠธ๋ฅผ ์ž‘์„ฑํ•  ๋•Œ ๋ฌธ์ œ๊ฐ€ ์ž์ฃผ ๋ฐœ์ƒ
    → ์‹ค์ œ๋กœ systemd ์„œ๋น„์Šค์—์„œ dash๋กœ ์‹คํ–‰๋˜๋Š” ์Šคํฌ๋ฆฝํŠธ๊ฐ€ echo ๋•Œ๋ฌธ์— ์ถœ๋ ฅ์ด ๊นจ์ง€๋Š” ๊ฒฝ์šฐ๊ฐ€ ๋งŽ๋‹ค.

3) BusyBox echo (OpenWrt·์ž„๋ฒ ๋””๋“œ)

  • ์˜ต์…˜ ์ง€์›์ด ๋‹ค๋ฅด๊ฑฐ๋‚˜ ์ƒ๋žต๋จ
  • -e๋ฅผ ์ธ์‹ํ•˜์ง€ ์•Š๋Š” ๊ฒฝ์šฐ๊ฐ€ ์žˆ์Œ
  • ์ž„๋ฒ ๋””๋“œ ๋””๋ฒ„๊น… ์‹œ echo๊ฐ€ ์˜ˆ์ƒ๋Œ€๋กœ ์ถœ๋ ฅ๋˜์ง€ ์•Š์•„ ๋กœ๊ทธ ์ •๋ ฌ์ด ๋ง๊ฐ€์ง€๋Š” ์ผ์ด ํ”ํ•จ

4) Zsh echo

  • ์˜ต์…˜ ํ•ด์„ ๋ฐฉ์‹์ด Bash์™€ ์œ ์‚ฌํ•˜์ง€๋งŒ ๊ธฐ๋ณธ ์ƒํƒœ์—์„œ ๋‹ฌ๋ผ์ง€๋Š” ๊ฒฝ์šฐ๊ฐ€ ์žˆ์Œ

์ด ์ฐจ์ด ๋•Œ๋ฌธ์— ๋‹ค์Œ ์ง€์นจ์ด ๋„๋ฆฌ ์•Œ๋ ค์ ธ ์žˆ๋‹ค.

“๋ฆฌ๋ˆ…์Šค ์Šคํฌ๋ฆฝํŠธ์—์„œ escape ๋ฌธ์ž๊ฐ€ ์žˆ๋Š” ์ถœ๋ ฅ์€ echo ๋Œ€์‹  printf ์‚ฌ์šฉํ•˜๋ผ.”

ํ•˜์ง€๋งŒ ๋‹จ์ˆœ ์ถœ๋ ฅ์€ echo๊ฐ€ ์ถฉ๋ถ„ํ•˜๋‹ค.


4. echo ๋ช…๋ น์–ด๋กœ ๋ณ€์ˆ˜ ์ถœ๋ ฅํ•˜๊ธฐ

๋ฆฌ๋ˆ…์Šค echo ๋ช…๋ น์–ด๋Š” ๋ณ€์ˆ˜๋ฅผ ์ถœ๋ ฅํ•˜๋Š” ๋ฐ ๋งค์šฐ ์ž์ฃผ ์‚ฌ์šฉ๋œ๋‹ค.

๊ธฐ๋ณธ ๋ณ€์ˆ˜ ์ถœ๋ ฅ

name="roroppwa"
echo "Hello $name"
echo '$name'
 

์ถœ๋ ฅ:

Hello roroppwa
$name
 

ํฐ๋”ฐ์˜ดํ‘œ๋Š” ๋ณ€์ˆ˜๋ฅผ ํ•ด์„ํ•˜๊ณ ,
์ž‘์€๋”ฐ์˜ดํ‘œ๋Š” ๋ฌธ์ž ๊ทธ๋Œ€๋กœ ์ถœ๋ ฅํ•œ๋‹ค.

์ด ์ฐจ์ด๋ฅผ ๋ชฐ๋ผ์„œ JSON ์ถœ๋ ฅ์ด ๊นจ์ง€๊ฑฐ๋‚˜,
๋ณ€์ˆ˜์™€ ๋ฌธ์ž์—ด์„ ๋ถ™์ผ ๋•Œ ์˜ˆ๊ธฐ์น˜ ์•Š์€ ๊ฒฐ๊ณผ๊ฐ€ ๋‚˜์˜ค๋Š” ๊ฒฝ์šฐ๊ฐ€ ์ •๋ง ๋งŽ๋‹ค.


5. echo ๋ช…๋ น์–ด๋กœ ํŒŒ์ผ ์ƒ์„ฑ ๋ฐ ์ˆ˜์ •ํ•˜๊ธฐ

๋ฆฌ๋ˆ…์Šค ๋ฆฌ๋‹ค์ด๋ ‰์…˜ ์—ฐ์‚ฐ์ž > ์™€ >> ์ฐจ์ด
ํŒŒ์ผ ๋ฎ์–ด์“ฐ๊ธฐ / ์ถ”๊ฐ€ ์“ฐ๊ธฐ ๊ตฌ์กฐ

echo๋Š” ๋‹จ์ˆœ ์ถœ๋ ฅ๋ฟ ์•„๋‹ˆ๋ผ ํŒŒ์ผ ์ƒ์„ฑ์—๋„ ๊ฐ•๋ ฅํ•˜๊ฒŒ ์‚ฌ์šฉ๋œ๋‹ค.


1) ๋ฎ์–ด์“ฐ๊ธฐ (overwrite)

echo "enabled=yes" > config.ini
 

โ€ป >๋Š” ๊ธฐ์กด ๋‚ด์šฉ์„ ๋ฎ์–ด์“ฐ๊ธฐ.

2) ํŒŒ์ผ ๋์— ์ถ”๊ฐ€ (append)

echo "add new line" >> config.ini
 

โ€ป >>๋Š” append(์ถ”๊ฐ€).

3) ๋ฉ€ํ‹ฐ๋ผ์ธ ํŒŒ์ผ ์ƒ์„ฑ

echo -e "line1\nline2\nline3" > file.txt
 

๊ทธ๋ฆฌ๊ณ  ์‹ค๋ฌด์—์„œ ๊ฐ€์žฅ ํ”ํ•œ ์‚ฌ๊ณ ๊ฐ€ ์žˆ๋‹ค.

‘>>’๋ฅผ ์ผ์–ด์•ผ ํ•˜๋Š”๋ฐ ‘>’๋กœ ๋ฎ์–ด์จ์„œ ์„ค์ • ํŒŒ์ผ ์ „์ฒด๋ฅผ ๋‚ ๋ฆฌ๋Š” ๊ฒฝ์šฐ.
๋‚˜๋„ ์„œ๋ฒ„์—์„œ nginx.conf


6. echo๋กœ JSON ์ƒ์„ฑํ•˜๊ธฐ (์ž๋™ํ™” ์‹ค์ „)

CI, ์„œ๋ฒ„ ์Šคํฌ๋ฆฝํŠธ, OpenWrt ์ž‘์—…์—์„œ JSON ์ž๋™ ์ƒ์„ฑ์€ ๋งค์šฐ ํ”ํ•˜๋‹ค.

echo -e "{\n  \"name\": \"roroppwa\",\n  \"status\": \"active\"\n}"

๋ฉ€ํ‹ฐ๋ผ์ธ JSON์€ printf ๋˜๋Š” heredoc์ด ๋” ์•ˆ์ •์ ์ด์ง€๋งŒ,
์งง์€ JSON์€ echo๋กœ ๋” ๋น ๋ฅด๊ฒŒ ์ƒ์„ฑํ•  ์ˆ˜ ์žˆ๋‹ค.


7. echo๋กœ ์ปฌ๋Ÿฌ ์ถœ๋ ฅํ•˜๊ธฐ

ํ„ฐ๋ฏธ๋„์€ ANSI ์ปฌ๋Ÿฌ ์ฝ”๋“œ๋ฅผ ์ง€์›ํ•œ๋‹ค. ์ด๋ฅผ echo์™€ -e ์˜ต์…˜์„ ์‚ฌ์šฉํ•ด ์ถœ๋ ฅํ•  ์ˆ˜ ์žˆ๋‹ค.

echo -e "\033[31mError:\033[0m Something went wrong"
 

์ƒ‰์ƒ ์ฝ”๋“œ ์˜ˆ์‹œ:

  • 31: ๋นจ๊ฐ•
  • 32: ์ดˆ๋ก
  • 33: ๋…ธ๋ž‘
  • 34: ํŒŒ๋ž‘
  • 0: ๊ธฐ๋ณธ ์ƒ‰์ƒ ๋ณต์›

์ปฌ๋Ÿฌ ์ถœ๋ ฅ์€ ๋กœ๊ทธ๋ฅผ ๋ณด๊ธฐ ์ข‹๊ฒŒ ํ•˜๊ธฐ ์œ„ํ•ด ์‹ค๋ฌด์—์„œ ๊ต‰์žฅํžˆ ์ž์ฃผ ์“ฐ์ธ๋‹ค.


8. echo vs printf — ๋ฌด์—‡์„ ์‚ฌ์šฉํ•ด์•ผ ํ• ๊นŒ?

๊ธฐ์ค€ echo printf
์ด์‹์„ฑ ์‰˜๋งˆ๋‹ค ๋‹ค๋ฆ„ POSIX ํ‘œ์ค€, ๋งค์šฐ ์•ˆ์ •์ 
escape ์ฒ˜๋ฆฌ ํ™˜๊ฒฝ์— ๋”ฐ๋ผ ๋‹ค๋ฆ„ ํ•ญ์ƒ ๋™์ผ
ํ˜•์‹ ์ถœ๋ ฅ ๋ถˆ๊ฐ€๋Šฅ ๊ฐ•๋ ฅํ•จ
์†๋„ ๋งค์šฐ ๋น ๋ฆ„ ๋น ๋ฆ„
์ž๋™ ์ค„๋ฐ”๊ฟˆ ์žˆ์Œ ์—†์Œ(์ง์ ‘ \n ๋„ฃ์–ด์•ผ ํ•จ)

์—ฌ๊ธฐ์„œ ๊ธฐ์–ตํ•ด์•ผ ํ•  ์ ์€ ํ•˜๋‚˜๋‹ค.

  • ์ •ํ™•ํ•œ ํฌ๋งท์ด ํ•„์š”ํ•˜๋ฉด → printf
  • ๋‹จ์ˆœํ•œ ์ถœ๋ ฅ์ด๋ฉด → echo

ํŠนํžˆ ์ž„๋ฒ ๋””๋“œ(OpenWrt/BusyBox) ํ™˜๊ฒฝ์€ printf๊ฐ€ ์—†์„ ์ˆ˜๋„ ์žˆ์œผ๋‹ˆ,
ํ™˜๊ฒฝ์— ๋”ฐ๋ผ ๋ฐ˜๋“œ์‹œ ์„ ํƒํ•ด์•ผ ํ•œ๋‹ค.


9. echo๋ฅผ ์ด์šฉํ•œ ์Šคํฌ๋ฆฝํŠธ ๋””๋ฒ„๊น… ๊ธฐ๋ฒ•

์‹ค๋ฌด์—์„œ echo๋Š” ๋””๋ฒ„๊น…์— ๊ฑฐ์˜ ํ•„์ˆ˜๋‹ค.

echo "[DEBUG] starting..."
sleep 1
echo "[DEBUG] finished"

CI/CD ์Šคํฌ๋ฆฝํŠธ, ๋นŒ๋“œ ์ž๋™ํ™”, init.d ์„œ๋น„์Šค ๋“ฑ
์‹ค๋ฌด์—์„œ echo๋Š” ๊ฑฐ์˜ “print debug” ์ˆ˜์ค€์œผ๋กœ ์“ฐ์ธ๋‹ค.
๋””๋ฒ„๊น…ํ•  ๋•Œ ์ด๋ณด๋‹ค ๊ฐ„๋‹จํ•˜๊ณ  ๋น ๋ฅธ ๋ฐฉ๋ฒ•์€ ์—†๋‹ค.


10. echo ๋ช…๋ น์–ด์—์„œ ์ž์ฃผ ๋ฐœ์ƒํ•˜๋Š” ๋ฌธ์ œ

(1) echo -e ๋™์ž‘ ์•ˆ ํ•จ

์›์ธ:

  • BusyBox echo
  • Dash echo

ํ•ด๊ฒฐ:

printf "Line1\nLine2\n"
 

(2) ๋ฌธ์ž์—ด์ด ์ž˜๋ฆฌ๋Š” ๋ฌธ์ œ

์›์ธ: ๋”ฐ์˜ดํ‘œ ๋ˆ„๋ฝ

ํ•ด๊ฒฐ:

echo "path=/usr/local/bin program=on"
 

(3) ๋ช…๋ น์–ด ํ•ด์„ ์ถฉ๋Œ

ํŠน์ˆ˜ ๋ฌธ์ž(*, ?, $, &)๊ฐ€ ํฌํ•จ๋  ๋•Œ ์ฃผ์˜.


11. echo์™€ heredoc ๋น„๊ต

๋ฉ€ํ‹ฐ๋ผ์ธ ์ถœ๋ ฅ ์‹œ echo๋ณด๋‹ค heredoc์ด ๋” ์ ํ•ฉํ•œ ๊ฒฝ์šฐ๊ฐ€ ์žˆ๋‹ค.

cat <<EOF > config.ini
[server]
ip=192.168.1.1
port=8080
EOF

์งง์€ ํ…์ŠคํŠธ๋Š” echo๋กœ ์ถฉ๋ถ„ํ•˜๋‹ค.
๊ธธ์–ด์ง€๋ฉด heredoc์ด ๊ฐ€๋…์„ฑ๊ณผ ์œ ์ง€๋ณด์ˆ˜ ๋ชจ๋‘์—์„œ ์œ ๋ฆฌํ•˜๋‹ค.


12. OpenWrt·์ž„๋ฒ ๋””๋“œ ํ™˜๊ฒฝ์—์„œ echo์˜ ์—ญํ• 

์ž„๋ฒ ๋””๋“œ์—์„œ๋Š” echo๊ฐ€ ํ•˜๋“œ์›จ์–ด ์ œ์–ด ๋„๊ตฌ๊ฐ€ ๋˜๊ธฐ๋„ ํ•œ๋‹ค.

์˜ˆ:

echo "[WAN] IP changed to $NEWIP" >> /var/log/net.log
 

๋˜ํ•œ /sys/class/leds/ ์ œ์–ด์—๋„ echo๋ฅผ ์ž์ฃผ ์‚ฌ์šฉํ•œ๋‹ค.

echo 1 > /sys/class/leds/power/brightness

LED ์ œ์–ด, sysfs ๊ฐ’ ์ฝ๊ธฐ/์“ฐ๊ธฐ, ๋„คํŠธ์›Œํฌ ์„ค์ • ๋ณ€๊ฒฝ ๋“ฑ
OpenWrt ๊ฐœ๋ฐœ์„ ํ•˜๋ฉด echo๋ฅผ “์‹œ์Šคํ…œ ํ˜ธ์ถœ ์ˆ˜์ค€”์œผ๋กœ ์‚ฌ์šฉํ•˜๊ฒŒ ๋œ๋‹ค.


13. echo ๊ณ ๊ธ‰ ํ™œ์šฉ ํŒจํ„ด

ํ™˜๊ฒฝ ๋ณ€์ˆ˜ ๊ฒ€์‚ฌ

[ -z "$TOKEN" ] && echo "TOKEN is empty"
 

ํ™˜๊ฒฝ ์„ค์ • ์ž๋™ ์ƒ์„ฑ

echo "export PATH=/usr/local/bin:\$PATH" >> ~/.bash_profile
 

๋™์  ํ…์ŠคํŠธ ์ƒ์„ฑ

echo "SERVER=$(hostname)" > info.txt
 

์ด๋Ÿฐ ํŒจํ„ด์€ ์ž๋™ํ™” ์Šคํฌ๋ฆฝํŠธ์—์„œ ๋งค์šฐ ์ž์ฃผ ์”€.


14. echo ๋ณด์•ˆ ์ด์Šˆ

ํŠน์ˆ˜ ๋ฌธ์ž ํฌํ•จ ์‹œ ์‹œ์Šคํ…œ ๋ช…๋ น์œผ๋กœ ์ž˜๋ชป ํ•ด์„๋  ์œ„ํ—˜์ด ์žˆ๋‹ค.

์˜ˆ:

echo $USER; rm -rf /
 

๋”ฐ๋ผ์„œ ์•ˆ์ „ํ•˜๊ฒŒ ์ถœ๋ ฅํ•˜๋ ค๋ฉด:

echo "$USER"

๋”ฐ์˜ดํ‘œ๋ฅผ ์•ˆ ์“ฐ๊ณ  ์ถœ๋ ฅํ•˜๋‹ค๊ฐ€ ํŠน์ˆ˜๋ฌธ์ž๊ฐ€ ์˜ˆ์ƒ์น˜ ๋ชปํ•˜๊ฒŒ ๋™์ž‘ํ•˜๋Š” ์‚ฌ๊ณ ๊ฐ€ ์ข…์ข… ๋ฐœ์ƒํ•œ๋‹ค.


15. echo ๋ช…๋ น์–ด์˜ ํ•œ๊ณ„

  • ๋ณต์žกํ•œ ํฌ๋งท์€ ์–ด๋ ต๋‹ค
  • ์ด์‹์„ฑ์ด ๋‚ฎ์„ ์ˆ˜ ์žˆ์Œ
  • ํ™˜๊ฒฝ๋งˆ๋‹ค escape ์ฒ˜๋ฆฌ๊ฐ€ ๋‹ค๋ฆ„
  • ์„ฑ๋Šฅ์— ๋ฏผ๊ฐํ•œ ๊ณ ์ • ํฌ๋งท ์ถœ๋ ฅ์—๋Š” ๋ถ€์ ํ•ฉ

๊ทธ๋ ‡๊ธฐ ๋•Œ๋ฌธ์— ํฌ๋งท์ด ์ค‘์š”ํ•œ ๊ณณ์€ ํ•ญ์ƒ printf ์‚ฌ์šฉ์ด ๊ถŒ์žฅ๋œ๋‹ค.


16. FAQ

Q1. echo์™€ printf ์–ธ์ œ ๊ตฌ๋ถ„ํ•ด์„œ ์จ์•ผ ํ• ๊นŒ?

A. ์ •๋ฐ€ ์ถœ๋ ฅ์ด๋ฉด printf, ๋‹จ์ˆœ ์ถœ๋ ฅ์ด๋ฉด echo.

Q2. BusyBox echo์—์„œ -e๊ฐ€ ์•ˆ ๋จนํžŒ๋‹ค?

A. printf ์‚ฌ์šฉํ•˜๋ฉด ๋œ๋‹ค.

Q3. echo๋กœ ์ปฌ๋Ÿฌ ์ถœ๋ ฅ์€ ํ•ญ์ƒ ๊ฐ€๋Šฅ?

A. ํ„ฐ๋ฏธ๋„์ด ANSI ์ปฌ๋Ÿฌ๋ฅผ ์ง€์›ํ•  ๋•Œ๋งŒ ๊ฐ€๋Šฅ.

Q4. echo๋กœ JSON ์ถœ๋ ฅํ•˜๋ฉด ๋ฌธ์ œ ์—†๋‚˜?

A. ๋ฉ€ํ‹ฐ๋ผ์ธ์€ printf ๋˜๋Š” heredoc๋„ ๊ณ ๋ ค.

Q5. echo์—์„œ ๊ณต๋ฐฑ์ด ์‚ฌ๋ผ์ง€๋Š” ์ด์œ ๋Š”?

A. ๋”ฐ์˜ดํ‘œ ๋ˆ„๋ฝ.


17. echo ๋ช…๋ น์–ด๋Š” ์–ด๋–ค ํšจ๊ณผ๋ฅผ ์ฃผ๋Š”๊ฐ€?

echo ํ•˜๋‚˜๋งŒ ์ตํ˜€๋„ ๋‹ค์Œ์ด ์‰ฌ์›Œ์ง„๋‹ค.

  • ์Šคํฌ๋ฆฝํŠธ ๋””๋ฒ„๊น…
  • ์ž๋™ํ™” ๊ตฌ์„ฑ
  • ์ž„๋ฒ ๋””๋“œ/OpenWrt ๊ฐœ๋ฐœ
  • ์„ค์ • ํŒŒ์ผ ์ƒ์„ฑ
  • ํ…์ŠคํŠธ ํฌ๋งท ์ถœ๋ ฅ

๋‹จ์ˆœํ•œ ๋ช…๋ น์–ด์ง€๋งŒ, ๊นŠ์ด ์ดํ•ดํ•˜๋ฉด ์Šคํฌ๋ฆฝํŠธ ๋ ˆ๋ฒจ์—์„œ์˜ ์ƒ์‚ฐ์„ฑ์ด ๊ทน์ ์œผ๋กœ ์˜ฌ๋ผ๊ฐ„๋‹ค.

“๋‹จ์ˆœํ•œ ๋„๊ตฌ์ผ์ˆ˜๋ก ์ œ๋Œ€๋กœ ์ดํ•ดํ•˜๋ฉด ์ƒ์‚ฐ์„ฑ์ด ํญ๋ฐœํ•œ๋‹ค.”

echo ๋ช…๋ น์–ด๋Š” ๊ทธ ๋Œ€ํ‘œ์ ์ธ ์‚ฌ๋ก€๋‹ค.