์ด ๋ฌธ์„œ์˜ ์›๋ณธ์€ ์™ธ๋ถ€ ์œ„ํ‚ค์—์„œ ๊ฐ€์ ธ์™”์Šต๋‹ˆ๋‹ค.
CUI์—์„œ ๋„˜์–ด์˜ด


๋Œ€ํ‘œ์ ์ธ CLI ํ™˜๊ฒฝ Bash

1. ๊ฐœ์š”2. ๊ด€๋ จ ๋ฌธ์„œ

1. ๊ฐœ์š”[ํŽธ์ง‘]

๋ช…๋ น์ค„ ์ธํ„ฐํŽ˜์ด์Šค(CLI)๋Š” Command-Line Interface ๋˜๋Š” Character User Interface์ด๋‹ค. TUI์™€๋Š” ์กฐ๊ธˆ ๋‹ค๋ฅธ ๊ฐœ๋…์ด๋‹ค. ๊ฐ€์žฅ ๋Œ€ํ‘œ์ ์ธ ์˜ˆ์‹œ๋กœ๋Š” ๋„์Šค, ๋ช…๋ น ํ”„๋กฌํ”„ํŠธ, bash๋กœ ๋Œ€ํ‘œ๋˜๋Š” ์œ ๋‹‰์Šค ์…ธ ํ™˜๊ฒฝ์ด ์žˆ๋‹ค.

์ผ๋ฐ˜์ ์œผ๋กœ CLI ํ™˜๊ฒฝ์€ ๋ถˆ์นœ์ ˆํ•œ ํ™˜๊ฒฝ์œผ๋กœ ์—ฌ๊ฒจ์ง„๋‹ค. CLI ํ™˜๊ฒฝ์— ์ต์ˆ™ํ•ด์ง€๋ ค๋ฉด ๊ธฐ๋ณธ์ ์ธ ๋ช…๋ น์–ด๋“ค์„ ์™ธ์›Œ์•ผ ํ•˜๋Š” ๊ฒƒ๋ถ€ํ„ฐ ๋‚œ๊ด€์ธ๋ฐ, ๊นŠ๊ฒŒ ๋“ค์–ด๊ฐˆ์ˆ˜๋ก ํ”„๋กœ๊ทธ๋ž˜๋ฐ๊ณผ ๊ด€๋ จ ์žˆ๋Š” ํŒŒ์ดํ”„ ๋ฐ ์…ธ ์Šคํฌ๋ฆฝํŠธ๊นŒ์ง€ ๋‚ด๋ ค๊ฐ€๊ธฐ ๋•Œ๋ฌธ์— ๋ฐฐ์›Œ์•ผ ํ•  ๊ฒŒ ๋์ด ์—†๋‹ค. ๋‹น์—ฐํžˆ ๋Œ€๋ถ€๋ถ„์˜ ์‚ฌ๋žŒ๋“ค์€ ํ‚ค๋ณด๋“œ ๋ฐ ๋งˆ์šฐ์Šค๋ฅผ ํ†ตํ•˜์—ฌ ์ ‘๊ทผํ•˜๋Š” ์ง๊ด€์ ์ธ GUI๋ฅผ ์„ ํ˜ธํ•  ์ˆ˜๋ฐ–์— ์—†๋‹ค. ์ด ๋•Œ๋ฌธ์— CLI๋Š” ์ตœ์ข… ์‚ฌ์šฉ์ž ์ˆ˜์ค€์—์„œ๋Š” GUI๋กœ ์™„์ „ํžˆ ๋Œ€์ฒด๋˜์—ˆ์œผ๋ฉฐ, ์•„์ง๊นŒ์ง€ CLI๊ฐ€ ๋‚จ์•„์žˆ๋Š” ๋ถ„์•ผ๋Š” ์„œ๋ฒ„ ๊ด€๋ฆฌ ๋ฐ ์„œ๋ฒ„ ํ”„๋กœ๊ทธ๋ž˜๋ฐ์ฒ˜๋Ÿผ ํ”„๋กœ๊ทธ๋ž˜๋ฐ๊ณผ ์ ‘์ ์ด ๋‹ฟ์•„์žˆ๋Š” ๋ถ€๋ถ„์ด๋‹ค.

๋ถˆํŽธํ•˜๊ธฐ๋งŒ ํ•ด ๋ณด์ด๋Š” CLI๊ฐ€ ์•„์ง๊นŒ์ง€ ๋‚จ์•„์žˆ๋Š” ์ด์œ ๋Š” GUI๊ฐ€ ๋Œ€์ฒดํ•  ์ˆ˜ ์—†๋Š” CLI๋งŒ์˜ ์žฅ์  ๋•Œ๋ฌธ์ด๋‹ค. ์ผ๋‹จ ๋งŒ์ง€๋Š” ์‚ฌ๋žŒ์ด ์ตœ์ข… ์‚ฌ์šฉ์ž๊ฐ€ ์•„๋‹Œ ์ถฉ๋ถ„ํžˆ ๊ต์œก๋œ ์‚ฌ๋žŒ์ด๊ธฐ์— ์ง„์ž…์žฅ๋ฒฝ์ด ํฌ๊ฒŒ ๋ฌธ์ œ๊ฐ€ ๋˜์ง€ ์•Š์œผ๋ฉฐ, ์ž์›์„ ์ ๊ฒŒ ์žก์•„ ๋จน์œผ๋ฉด์„œ ์•ˆ์ •์ ์ด๊ณ  ๋น ๋ฅด๋‹ค. ๊ฒŒ๋‹ค๊ฐ€ ์›๊ฒฉ์œผ๋กœ ์ž‘์—…ํ•  ๋•Œ ์›ฌ๋งŒํ•œ ๋„คํŠธ์›Œํฌ ํ™˜๊ฒฝ์—์„œ๋„ ์•ˆ์ •์ ์œผ๋กœ ์ž‘์—…ํ•  ์ˆ˜ ์žˆ์œผ๋ฉฐ ์‚ฌ์šฉ๋˜๋Š” ๋ฐ์ดํ„ฐ ์–‘ ์—ญ์‹œ ์••๋„์ ์œผ๋กœ ์ ๋‹ค. ํŠนํžˆ ์„œ๋ฒ„ ์ชฝ์—์„œ๋Š” ์ž‘์—… ์ž๋™ํ™”[1]์™€ ์›๊ฒฉ ์ž‘์—…์ด ํ•„์š”ํ•œ ๊ฒฝ์šฐ๊ฐ€ ๋งŽ์€๋ฐ CLI๋Š” ์ด ๋ถ„์•ผ์—์„œ ์••๋„์ ์ธ ํšจ์œจ์„ ๋ณด์—ฌ์ค€๋‹ค.

์ฃผ๋กœ ๋ฆฌ๋ˆ…์Šค ์ปค๋ฎค๋‹ˆํ‹ฐ ์ชฝ์ด ์ด๋Ÿฐ CLI ํ™˜๊ฒฝ์— ์ต์ˆ™ํ•œ ํŽธ์ด๋‹ค. ์ด๋Ÿฐ ์‚ฌ๋žŒ๋“ค์€ GUI ์œˆ๋„์šฐ ๋งค๋‹ˆ์ € ์œ„์— 'ํ„ฐ๋ฏธ๋„ ์—๋ฎฌ๋ ˆ์ดํ„ฐ'๋ฅผ ์ด์šฉํ•˜์—ฌ CLI๋ฅผ ๋ถ€๋ถ„์ ์œผ๋กœ ํ†ตํ•ฉ์‹œ์ผœ์„œ ์“ด๋‹ค. ์œˆ๋„์—์„œ cmd๋‚˜ COMMAND.COM์„ ๋„์›Œ ๋†“๊ณ  ์‚ฌ์šฉํ•œ๋‹ค๊ณ  ์ƒ๊ฐ ํ•˜๋ฉด ๋œ๋‹ค. ๋ฌผ๋ก  ์ฐจ์ด๋Š” ์—„์ฒญ๋‚˜๋‹ค. ์•ˆ ์ข‹๋‹ค๋Š” ์˜๋ฏธ๊ฐ€ ์•„๋‹ˆ๊ณ  ์‹ฌ์ง€์–ด ๋” ์ข‹์€ ๊ฒฝ์šฐ๊ฐ€ ๋งŽ๋‹ค. ํŠน์ˆ˜ ๊ธ€๊ผด๊ณผ ๋‹ค์–‘ํ•œ ์ƒ‰์ƒ์„ ์ ์šฉ์‹œ์ผœ ํ„ฐ๋ฏธ๋„์„ ์•Œ๋ก๋‹ฌ๋กํ•˜๊ฒŒ, ๊ทธ๋ฆฌ๊ณ  ๊ฐ€๋…์„ฑ ์ข‹๊ฒŒ ๋งŒ๋“ค ์ˆ˜ ์žˆ๋‹ค.[2] ํŠนํžˆ macOS์—์„œ ๋Œ์•„๊ฐ€๋Š” iTerm2๋Š” ์ด ๋ถ„์•ผ์˜ ์ตœ๊ฐ•์ž.

ํ”„๋กœ๊ทธ๋ž˜๋ฐ ๊ต์œก์˜ ๊ฒฝ์šฐ ๋งํ•  ๊ฒƒ๋„ ์—†๋Š”๋ฐ, ๋‹น์žฅ ํ”„๋กœ๊ทธ๋ž˜๋ฐ ์ฒซ ์˜ˆ์ œ๊ฐ€ ๋ฌด์—‡์ธ์ง€ ์ƒ๊ฐํ•˜๋ฉด ๊ฐ„๋‹จํ•  ๊ฒƒ์ด๋‹ค. ์šฐ์„ , GUI ํ”„๋กœ๊ทธ๋ž˜๋ฐ์— ๋น„ํ•ด ์‚ฌ์ „์ง€์‹์ด ๋งค์šฐ ์ ๊ฒŒ ์š”๊ตฌ๋˜๋ฉฐ[3], ์‹ค์ œ๋กœ ํ”„๋กœ๊ทธ๋ž˜๋ฐ์„ ํ•  ๋•Œ ๊ฐ€์žฅ ๋งŽ์ด ๋‹ค๋ฃจ๋Š” ๋ฐ์ดํ„ฐ์…‹์ด ๋ฌธ์ž์—ด์ด๊ธฐ๋„ ํ•œ๋ฐ๋‹ค๊ฐ€, ๋ฌธ์ž์—ด๋งŒ ๊ฐ€์ง€๊ณ ๋„ ๊ฑฐ์˜ ๋ชจ๋“  ์ข…๋ฅ˜์˜ ์•Œ๊ณ ๋ฆฌ์ฆ˜ ์—ฐ์Šต์€ ๋‹ค ๊ฐ€๋Šฅํ•˜๊ธฐ ๋•Œ๋ฌธ์— CLI๋ถ€ํ„ฐ ์‹œ์ž‘ํ•˜๋Š” ๊ฒƒ.

๊ฐœ์ธ์ด ์ง์ ‘ ํ™ˆํŽ˜์ด์ง€๋‚˜ ๋ธ”๋กœ๊ทธ, ์†Œ๊ทœ๋ชจ ์‡ผํ•‘๋ชฐ ๋“ฑ์„ ๋งŒ๋“ค์–ด ์šด์˜ํ•  ๋•Œ๋„ ๋ณด๊ฒŒ ๋œ๋‹ค. ์›น ํ˜ธ์ŠคํŒ… ์„œ๋ฒ„์— ํ™ˆํŽ˜์ด์ง€๋‚˜ ๋ธ”๋กœ๊ทธ ์†Œ์Šค ํŒŒ์ผ ๊ด€๋ฆฌ๋ฅผ ์œ„ํ•ด SSH๋กœ ์ ‘์†ํ•˜๋ฉด ์ด๋ฏธ์ง€ ์—†์ด ๊ธ€์ž๋งŒ ์ฃผ๋ฅด๋ฅต ๋œจ๋Š” ํ™”๋ฉด์ด ๋œจ๋Š”๋ฐ, ๊ทธ๊ฒŒ ๋ฐ”๋กœ CLI ์ค‘ ํ•˜๋‚˜์ธ ๋ฆฌ๋ˆ…์Šค ํ„ฐ๋ฏธ๋„ ํ™˜๊ฒฝ์ด๋‹ค. ๋ฌผ๋ก  ์›น ํ˜ธ์ŠคํŒ… ์—…์ฒด๋„ ๊ฐœ์ธ ํ™ˆํŽ˜์ด์ง€๋‚˜ ๋ธ”๋กœ๊ทธ, ์‡ผํ•‘๋ชฐ ์šด์˜์„ ์œ„ํ•ด ๊ฐœ์ธ์ด CLI ํ™˜๊ฒฝ์„ ๋ฐฐ์šฐ๋Š” ๊ฑด ์–ด๋ ต๋‹ค๋Š” ๊ฒƒ์„ ์•Œ๊ณ  ์žˆ๊ธฐ์— ์ตœ๋Œ€ํ•œ CLI๋ฅผ ๋งŒ๋‚˜์ง€ ์•Š๋„๋ก ์„œ๋น„์Šค๋ฅผ ๊ตฌ์„ฑํ•œ๋‹ค. ๊ทธ๋Ÿฌ๋‚˜ ์กฐ๊ธˆ ํŒŒ๊ณ ๋“ค๋‹ค ๋ณด๋ฉด ์–ด์ฉ” ์ˆ˜ ์—†์ด CLI๋ฅผ ๋งŒ๋‚˜๊ฒŒ ๋˜๋Š” ๊ฒƒ์ด ํ˜„์‹ค. ์ด๊ฒŒ ์‹ซ์œผ๋ฉด ์œˆ๋„์šฐ ์›น ํ˜ธ์ŠคํŒ…์„ ๋ฐ›์œผ๋ฉด ๋˜์ง€๋งŒ ์œˆ๋„์šฐ๋Š” ๋ฌด๋ฃŒ๊ฐ€ ์•„๋‹ˆ๋ผ ํ˜ธ์ŠคํŒ… ๋น„์šฉ๋„ ๋น„์‹ธ๋‹ค(...). ๋ฌผ๋ก  ๋ฆฌ๋ˆ…์Šค๋„ GUI๋ฅผ ์ง€์›ํ•˜๋Š” ๋ฐฐํฌํŒ์ด ์žˆ๊ธฐ๋Š” ํ•˜์ง€๋งŒ[4][5] CLI ํ™˜๊ฒฝ์— ๋น„ํ•ด์„œ ์„ฑ๋Šฅ ์ƒ์œผ๋กœ ๋น„ํšจ์œจ์ ์ธ ๊ฒƒ์€ ์–ด์ฉ” ์ˆ˜ ์—†๋‹ค.

๊ทธ ์™ธ์—๋„ ๋ถ„์•ผ์— ๋”ฐ๋ผ ํ™œ์šฉ๋„๊ฐ€ ๋ฏธ์นœ ๋“ฏ์ด ์˜ฌ๋ผ๊ฐ€๊ธฐ๋„ ํ•œ๋‹ค. ์˜์™ธ๋กœ ๋ฌผ๋ฆฌํ•™์ž๋“ค์ด ๋งŽ์ด ์“ฐ๋Š”๋ฐ, ํŠนํžˆ ์ž…์ž๋ฌผ๋ฆฌ ๊ณ„์—ด์„ ํ•˜๋Š” ์‚ฌ๋žŒ๋“ค์€ ๋Œ€๋ถ€๋ถ„ ์ด ํ™˜๊ฒฝ์—์„œ ์ž‘์—…์„ ํ•œ๋‹ค. ๋Œ€๋ถ€๋ถ„์˜ ์ž…์ž๋ฌผ๋ฆฌ ์šฉ ํ”„๋กœ๊ทธ๋žจ๋“ค์ด ๋ฆฌ๋ˆ…์Šค ํ™˜๊ฒฝ์—์„œ ๋Œ์•„๊ฐ€๊ธฐ ๋•Œ๋ฌธ์— ๊ทธ๋ ‡๋‹ค. ๋ฌผ๋ก  ์ด๋Ÿฐ ๊ฒฝ์šฐ ํ”ํžˆ vim ํ˜น์€ Emacs๋ฅผ ๊ฐ™์ด ์“ฐ๊ธฐ ๋•Œ๋ฌธ์— TUI๋„ ๊ฐ™์ด ์“ด๋‹ค๊ณ  ํ•ด์•ผ ์ •ํ™•ํ•˜๊ฒ ์ง€๋งŒ. ์•„๋ฌดํŠผ, ์ด ๋ถ„์•ผ ์‚ฌ๋žŒ๋“ค์€ ์‚ฌ์‹ค ์ƒ์˜ ๊ฐ•์š”(?!)๋กœ ์ด ํ™˜๊ฒฝ์— ์นœ์ˆ™ํ•ด์ง„ ์ƒํ™ฉ์ด๋ฉฐ, ๊ฐ„ํ˜น ์ž์‹ ์ด ๋ฌผ๋ฆฌํ•™์ž์ธ์ง€ ํ”„๋กœ๊ทธ๋ž˜๋จธ์•„๋‹ˆ, ์ฝ”๋”์ธ์ง€ ํ˜ผ๋ž€์Šค๋Ÿฝ๋‹ค๋Š” ์ž…์ž๋ฌผ๋ฆฌํ•™์ž๋“ค์˜ ์„ฑํ† ๋„ ์žˆ๊ณค ํ•œ๋‹ค.(...)

๋ญ”๊ฐ€ ์•Œ์•„๋ณผ์ˆ˜ ์—†๋Š” ๊ธ€์ž๋“ค์ด ๋‚ด๋ ค์˜ค๋ฉด์„œ ์‹คํ–‰๋˜๋Š” ๋ชจ์Šต์ด ์‹ ๊ธฐํ•œ์ง€, ๋ฏธ๋””์–ด์—์„œ๋Š” ํ•ด์ปค๋‚˜ ์ปดํ“จํ„ฐ ๊ณ„์—ด ์ฒœ์žฌ์†์„ฑ์˜ ์บ๋ฆญํ„ฐ๊ฐ€ ์ž์ฃผ ์‚ฌ์šฉํ•œ๋‹ค. ๊ทธ๋ž˜์„œ ์ด๋Ÿฐ ๊ฒƒ๋„ ๋‚˜์™”๋‹ค. ๊ทธ๋ฆฌ๊ณ  ์œ ๋… ๋ฐ”ํƒ•์ƒ‰์€ ๊ฒ€์ •์ƒ‰์œผ๋กœ ํ•˜๋Š” ๊ฒฝ์šฐ๊ฐ€ ๋งŽ๋‹ค. ์‚ฌ์šฉ์ž๋“ค ์ค‘์—” ๊ฐ€๋…์„ฑ ๋•Œ๋ฌธ์— ํฐ ๋ฐ”ํƒ•์„ ์“ฐ๋Š” ๊ฒฝ์šฐ๋„ ๋งŽ๋‹ค. ๋ฌผ๋ก  ๊ฒ€์€ ๋ฐ”ํƒ•์ด ํœ˜๋„๊ฐ€ ๋‚ฎ์•„ ๋ˆˆ์˜ ํ”ผ๋กœ๊ฐ€ ๋œํ•˜๋‹ค๋Š” ์ด์œ ๋กœ ๊ฒ€๊ฑฐ๋‚˜ ์–ด๋‘์šด ์ƒ‰ ๋ฐ”ํƒ•์„ ์“ฐ๋Š” ์‚ฌ๋žŒ ์—ญ์‹œ ๋งŽ์•„ ๋‹ค ์ทจํ–ฅ๋”ฐ๋ผ ์ œ๊ฐ๊ฐ์ด๊ธด ํ•˜์ง€๋งŒ. ๋‹ค๋งŒ ์–ด๋‘์šด ๊ณณ์—์„œ ์‚ฌ์šฉํ•˜๋Š” ๊ฒฝ์šฐ ๋‹คํฌ ๋ชจ๋“œ๊ฐ€ ๋ˆˆ์— ํ›จ์”ฌ ์ข‹์ง€๋งŒ, ๋ฐ์€ ํ™˜๊ฒฝ์—์„œ ์‚ฌ์šฉํ•  ๊ฒฝ์šฐ์—๋Š” ์˜คํžˆ๋ ค ๋‹คํฌ ๋ชจ๋“œ๊ฐ€ ๋…์ด ๋œ๋‹ค๋Š” ์ ์„ ๋ช…์‹ฌํ•˜์ž.

2. ๊ด€๋ จ ๋ฌธ์„œ[ํŽธ์ง‘]

[1] ์—ฌ๊ธฐ์„œ ํŒŒ์ดํ”„์™€ ์…ธ ์Šคํฌ๋ฆฝํŠธ๊ฐ€ ๊ฐ•์ ์„ ๋ฐœํœ˜ํ•œ๋‹ค. 1000๊ฐœ์˜ ํŒŒ์ผ ์ด๋ฆ„ ํ˜น์€ ๋‚ด์šฉ์„ ํ•œ ๋ฒˆ์— ๋ฐ”๊ฟ”์•ผ ํ•˜๋Š” ๋“ฑ์˜ ์ž‘์—…์„ ํ•ด์•ผ ํ•  ๋•Œ, ์ด๊ฑธ ํ•˜๋‚˜ํ•˜๋‚˜ ์†์œผ๋กœ ๋‹ค ๋ฐ”๊ฟ€ ๊ฒƒ๋„ ์—†์ด ์ด ๋‘˜์„ ์ด์šฉํ•ด์„œ ํ•œ ํ์— ์ˆœ์‹๊ฐ„์— ์ฒ˜๋ฆฌํ•  ์ˆ˜ ์žˆ๋‹ค.
[2] ๋Œ€ํ‘œ์ ์œผ๋กœ zsh(+oh-my-zsh)์„ ์“ฐ๋Š” ์‚ฌ๋žŒ๋“ค์ด ์ด๋Ÿฐ ๊ฑธ ๋งŽ์ด ํ•œ๋‹ค. TUI ์–˜๊ธฐ์ง€๋งŒ vim์˜ ๋ชจ์–‘์ด๋ผ๋“ ๊ฐ€ syntax ๊ธฐ๋Šฅ, ๊ทธ๋ฆฌ๊ณ  tmux ๊ฐ™์€ ๊ฒƒ๋„ ์žˆ๋‹ค.
[3] ๋ฉ”์„ธ์ง€ ๋ฐฉ์‹์ด๋ผ๋“ ๊ฐ€ callback ๋“ฑ ์•Œ์•„์•ผ ํ•  ๊ฒŒ ๋งŽ์œผ๋ฉฐ ์ด๊ฒŒ ์ „ํ˜€ ๊ฐ„๋‹จํ•˜์ง€ ์•Š์€๋ฐ๋‹ค, ๊ฐ„๋‹จํ•œ ์ž‘์—…๋งŒ ํ•˜๋Š” ๊ฑธ ์งœ๋”๋ผ๋„ ์ฝ”๋“œ๊ฐ€ ์ƒ๋‹นํžˆ ๊ธธ์–ด์ง„๋‹ค. ๋‹น์—ฐํ•œ ์–˜๊ธฐ๊ฒ ์ง€๋งŒ, ๊ฒฐ๊ณผ๋ฌผ์ด ๊ฐ„ํŽธํ•˜๊ณ  ์ง๊ด€์ ์ผ์ˆ˜๋ก ๊ทธ ๊ฒฐ๊ณผ๋ฌผ์„ ๋งŒ๋“ค๊ธฐ ์œ„ํ•ด ํˆฌ์—ฌ๋˜๋Š” ๋น„์šฉ์€ ๋Š˜์–ด๋‚˜๊ธฐ ๋งˆ๋ จ์ด๋‹ค.
[4] ์šฐ๋ถ„ํˆฌ๋ถ€ํ„ฐ ์‹œ์ž‘ํ•ด์„œ, ์„œ๋ฒ„์šฉ์œผ๋กœ ๋งŽ์ด ์“ฐ๋Š” CentOS๋„ GUI๋ฅผ ์˜ฌ๋ฆด ์ˆ˜ ์žˆ๋‹ค.
[5] ์‚ฌ์‹ค ๋ฐฐํฌํŒ์ด ๋ญ๊ฐ€ ๋๋“  ๊ฐ„์— ์›ํ•˜๋Š” GUI ํ™˜๊ฒฝ(GNOME, KDE, Unity ๋“ฑ)์„ ์–ผ๋งˆ๋“ ์ง€ ์„ค์น˜ํ•ด์„œ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋‹ค.