๋ณธ๋ฌธ ๋ฐ”๋กœ๊ฐ€๊ธฐ
๋”ฐ๋ฐฐ์…ธ

[๋”ฐ๋ฐฐ์…ธ] 7. Input&Output

by Engineer-Lee 2025. 2. 13.
๋ฐ˜์‘ํ˜•

๐Ÿ“Œ ์˜์ƒ ์š”์•ฝ: ๋ฐฐ์‹œ ์‰˜์—์„œ ์ž…๋ ฅ๊ณผ ์ถœ๋ ฅ ์ฒ˜๋ฆฌ ๋ฐฉ๋ฒ•

์ด ์˜์ƒ์—์„œ๋Š” ๋ฆฌ๋ˆ…์Šค ๋ฐฐ์‹œ(Bash)์—์„œ ์ž…๋ ฅ์„ ๋ฐ›๊ณ  ์ถœ๋ ฅ์„ ์ฒ˜๋ฆฌํ•˜๋Š” ๋ฐฉ๋ฒ•์„ ๋‹ค๋ฃฌ๋‹ค.
์ฆ‰, ํ”„๋กœ๊ทธ๋žจ์ด ์‚ฌ์šฉ์ž์™€ ์ƒํ˜ธ์ž‘์šฉํ•˜๋Š” ๋ฐฉ๋ฒ•์„ ๋ฐฐ์šฐ๋Š” ๋‚ด์šฉ์ด๋‹ค.


๐Ÿ”น 1. ์ถœ๋ ฅ ์ฒ˜๋ฆฌ (์—์ฝ” echo vs ํ”„๋ฆฐํŠธ printf)

โœ… echo (๊ฐ„๋‹จํ•œ ์ถœ๋ ฅ)

  • ๋ฌธ์ž์—ด์ด๋‚˜ ๋ณ€์ˆ˜๋ฅผ ํ™”๋ฉด์— ์ถœ๋ ฅํ•˜๋Š” ๊ธฐ๋ณธ์ ์ธ ๋ช…๋ น์–ด
  • ์ž๋™ ์ค„ ๋ฐ”๊ฟˆ์ด ํฌํ•จ๋จ

๐Ÿ“Œ ๊ธฐ๋ณธ ์‚ฌ์šฉ๋ฒ•

echo "Hello, Linux!"
 

์ถœ๋ ฅ:

Hello, Linux!
 

๐Ÿ“Œ ์ค„๋ฐ”๊ฟˆ ์—†์ด ์ถœ๋ ฅ (-n ์˜ต์…˜)

 
echo -n "Hello, Linux!"
 

์ถœ๋ ฅ:

Hello, Linux!_ (์ค„๋ฐ”๊ฟˆ ์—†์Œ)
 

๐Ÿ“Œ ์ด์Šค์ผ€์ดํ”„ ๋ฌธ์ž ํ•ด์„ (-e ์˜ต์…˜)

 
echo -e "Hello\nLinux!"
 

์ถœ๋ ฅ:

Hello Linux!

 


โœ… printf (์ถœ๋ ฅ ํ˜•์‹ ์ง€์ •)

  • echo๋ณด๋‹ค ๊ฐ•๋ ฅํ•œ ํฌ๋งท ์ง€์ • ๊ธฐ๋Šฅ ์ œ๊ณต
  • C ์–ธ์–ด์˜ printf() ํ•จ์ˆ˜์™€ ์œ ์‚ฌํ•จ

๐Ÿ“Œ ๊ธฐ๋ณธ ์‚ฌ์šฉ๋ฒ•

 
printf "Hello, Linux!\n"
 

์ถœ๋ ฅ:

Hello, Linux!
 

๐Ÿ“Œ ๋ฌธ์ž์—ด๊ณผ ์ˆซ์ž ์ถœ๋ ฅ

 
name="Ubuntu" score=95 printf "OS: %s, Score: %d\n" "$name" "$score"
 

์ถœ๋ ฅ:

OS: Ubuntu, Score: 95
 

๐Ÿ“Œ ์ •๋ ฌ ๋ฐ ์„œ์‹ ์ง€์ •

 
printf "%-10s | %10s\n" "Name" "Score" printf "%-10s | %10d\n" "Alice" 90 printf "%-10s | %10d\n" "Bob" 85

 

์ถœ๋ ฅ:

Name | Score Alice | 90 Bob | 85

๐Ÿ”น 2. ์ž…๋ ฅ ์ฒ˜๋ฆฌ (read)

read ๋ช…๋ น์–ด๋Š” ์‚ฌ์šฉ์ž๋กœ๋ถ€ํ„ฐ ์ž…๋ ฅ์„ ๋ฐ›์„ ๋•Œ ์‚ฌ์šฉ๋จ.

โœ… ๊ธฐ๋ณธ ์‚ฌ์šฉ๋ฒ•

 
echo "์ด๋ฆ„์„ ์ž…๋ ฅํ•˜์„ธ์š”:" read name echo "์ž…๋ ฅํ•œ ์ด๋ฆ„: $name"
 

์‹คํ–‰ ํ›„ ์ž…๋ ฅ:

์ด๋ฆ„์„ ์ž…๋ ฅํ•˜์„ธ์š”: ํ™๊ธธ๋™ ์ž…๋ ฅํ•œ ์ด๋ฆ„: ํ™๊ธธ๋™

โœ… ์—ฌ๋Ÿฌ ๊ฐœ์˜ ์ž…๋ ฅ ๋ฐ›๊ธฐ

 
echo "์ด๋ฆ„๊ณผ ๋‚˜์ด๋ฅผ ์ž…๋ ฅํ•˜์„ธ์š”:" read name age echo "์ด๋ฆ„: $name, ๋‚˜์ด: $age"
 

์ž…๋ ฅ:

์ด๋ฆ„๊ณผ ๋‚˜์ด๋ฅผ ์ž…๋ ฅํ•˜์„ธ์š”: ํ™๊ธธ๋™ 25 ์ด๋ฆ„: ํ™๊ธธ๋™, ๋‚˜์ด: 25

โœ… ๋น„๋ฐ€๋ฒˆํ˜ธ ์ž…๋ ฅ (๋ฌธ์ž ์ˆจ๊น€, -s ์˜ต์…˜)

 
echo "๋น„๋ฐ€๋ฒˆํ˜ธ๋ฅผ ์ž…๋ ฅํ•˜์„ธ์š”:" read -s password echo "๋น„๋ฐ€๋ฒˆํ˜ธ๊ฐ€ ์ž…๋ ฅ๋˜์—ˆ์Šต๋‹ˆ๋‹ค."
 

์ž…๋ ฅ ์‹œ ํ™”๋ฉด์— ๋ณด์ด์ง€ ์•Š์Œ.

โœ… ์ œํ•œ๋œ ๊ธธ์ด๋งŒ ์ž…๋ ฅ๋ฐ›๊ธฐ (-n ์˜ต์…˜)

 
read -n 5 name

→ 5๊ธ€์ž๊นŒ์ง€๋งŒ ์ž…๋ ฅ๋ฐ›๊ณ  ์ž๋™ ์ข…๋ฃŒ๋จ.

โœ… ์ž…๋ ฅ ์ œํ•œ ์‹œ๊ฐ„ ์„ค์ • (-t ์˜ต์…˜)

 
read -t 10 name

→ 10์ดˆ ๋™์•ˆ ์ž…๋ ฅ์„ ๊ธฐ๋‹ค๋ฆฐ ํ›„, ์ž…๋ ฅ์ด ์—†์œผ๋ฉด ์ข…๋ฃŒ๋จ.


๐Ÿ”น 3. ์—์ฝ”์™€ ๋ฆฌ๋“œ๋ฅผ ํ™œ์šฉํ•œ ๋Œ€ํ™”ํ˜• ์Šคํฌ๋ฆฝํŠธ

echo์™€ read๋ฅผ ์กฐํ•ฉํ•˜๋ฉด ๋Œ€ํ™”ํ˜• ์‰˜ ์Šคํฌ๋ฆฝํŠธ๋ฅผ ๋งŒ๋“ค ์ˆ˜ ์žˆ์Œ.

 
#!/bin/bash echo -n "์ด๋ฆ„์„ ์ž…๋ ฅํ•˜์„ธ์š”: " read name echo -n "๋‚˜์ด๋ฅผ ์ž…๋ ฅํ•˜์„ธ์š”: " read age echo "์•ˆ๋…•ํ•˜์„ธ์š”, $name ๋‹˜! ๋‹น์‹ ์˜ ๋‚˜์ด๋Š” $age ์„ธ ์ž…๋‹ˆ๋‹ค."

 

์‹คํ–‰:

์ด๋ฆ„์„ ์ž…๋ ฅํ•˜์„ธ์š”: ๊น€์ฒ ์ˆ˜ ๋‚˜์ด๋ฅผ ์ž…๋ ฅํ•˜์„ธ์š”: 30 ์•ˆ๋…•ํ•˜์„ธ์š”, ๊น€์ฒ ์ˆ˜ ๋‹˜! ๋‹น์‹ ์˜ ๋‚˜์ด๋Š” 30์„ธ ์ž…๋‹ˆ๋‹ค.

๐Ÿ“Œ ๐Ÿ’ก ์ •๋ฆฌ

  • echo → ๊ธฐ๋ณธ ์ถœ๋ ฅ (๊ฐ„๋‹จํ•œ ๋ฉ”์‹œ์ง€ ์ถœ๋ ฅ)
  • printf → ํฌ๋งท ์ง€์ • ์ถœ๋ ฅ (C ์–ธ์–ด ์Šคํƒ€์ผ, ์ •๋ ฌ ๊ฐ€๋Šฅ)
  • read → ์‚ฌ์šฉ์ž ์ž…๋ ฅ ๋ฐ›๊ธฐ (-s ๋น„๋ฐ€๋ฒˆํ˜ธ ์ˆจ๊น€, -t ์ œํ•œ ์‹œ๊ฐ„, -n ๊ธ€์ž ์ˆ˜ ์ œํ•œ)
  • echo + read → ๋Œ€ํ™”ํ˜• ์Šคํฌ๋ฆฝํŠธ ์ œ์ž‘ ๊ฐ€๋Šฅ

๐Ÿš€ ์‰˜ ์Šคํฌ๋ฆฝํŠธ์—์„œ ์‚ฌ์šฉ์ž ์ž…๋ ฅ์„ ๋ฐ›๋Š” ๋‹ค์–‘ํ•œ ๋ฐฉ๋ฒ•์„ ์ตํžˆ๋ฉด ๋”์šฑ ๊ฐ•๋ ฅํ•œ ์ž๋™ํ™” ์Šคํฌ๋ฆฝํŠธ๋ฅผ ๋งŒ๋“ค ์ˆ˜ ์žˆ์Œ

๋ฐ˜์‘ํ˜•