CLI ํ๊ฒฝ์์๋ ๋ํํ UI๋ฅผ ๋ง๋ค ์ ์๋ค๋ฉด ์ฌ์ฉ์ ๊ฒฝํ์ด ํจ์ฌ ๋์์ง๋๋ค. dialog๋ ํฐ๋ฏธ๋์์ ๋ฉ์์ง, ์
๋ ฅ์ฐฝ, ๋ฉ๋ด ๋ฑ์ ๋์ธ ์ ์๊ฒ ํด์ฃผ๋ ์ ํธ๋ฆฌํฐ๋ก, ๊ฐ๋จํ ์ค์น ๋์ฐ๋ฏธ๋ถํฐ ์ค์ ๋ง๋ฒ์ฌ๊น์ง ๋ค์ํ๊ฒ ํ์ฉํ ์ ์์ต๋๋ค.
๊ฐ๋จํ๊ฒ ์์ ํ๋ฉด ๋ณด์ฌ๋๋ฆด๊ฒ์.

์๋๋ dialog๋ฅผ ํ์ฉํ ๊ฐ๋จํ ์ค์น ์คํฌ๋ฆฝํธ ์์์
๋๋ค. ์ด ์คํฌ๋ฆฝํธ๋ ์ฌ์ฉ์์ ์ด๋ฆ๊ณผ ์ํ๋ ํฌํธ๋ฅผ ์
๋ ฅ๋ฐ์ ์ค์ ํ์ผ์ ์์ฑํ๋ ํํ์
๋๋ค.
โ ์ค์น ์ ์ค๋น
sudo apt update
sudo apt install dialog -y
๐ฆ ์ค์น ๋์ฐ๋ฏธ ์คํฌ๋ฆฝํธ ์์
#!/bin/bash
# dialog๊ฐ ์ค์น๋์ด ์๋์ง ํ์ธ
if ! command -v dialog >/dev/null 2>&1; then
echo "dialog๊ฐ ์ค์น๋์ด ์์ง ์์ต๋๋ค. ์ค์น ์ค..."
sudo apt update && sudo apt install dialog -y
fi
# ์ฌ์ฉ์ ์
๋ ฅ ๋ฐ๊ธฐ
get_user_input() {
local prompt="$1"
local default="$2"
local result
result=$(dialog --clear --inputbox "$prompt" 10 50 "$default" 2>&1 >/dev/tty)
local exit_code=$?
if [ $exit_code -ne 0 ]; then
echo "์ฌ์ฉ์๊ฐ ์
๋ ฅ์ ์ทจ์ํ์ต๋๋ค."
exit 1
fi
echo "$result"
}
# ์
๋ ฅ๊ฐ ๋ฐ๊ธฐ
USERNAME=$(get_user_input "์ฌ์ฉ์ ์ด๋ฆ์ ์
๋ ฅํ์ธ์:" "admin")
PORT=$(get_user_input "์ฌ์ฉํ ํฌํธ๋ฅผ ์
๋ ฅํ์ธ์:" "8080")
# ์ค์ ํ์ผ ์์ฑ
CONFIG_FILE="./config.txt"
cat > "$CONFIG_FILE" <<EOF
# ์ค์ ํ์ผ
username=$USERNAME
port=$PORT
EOF
dialog --msgbox "์ค์ ํ์ผ์ด ์์ฑ๋์์ต๋๋ค:\\n$CONFIG_FILE" 8 50
clear
๐งพ ์คํ ๊ฒฐ๊ณผ
์ด ์คํฌ๋ฆฝํธ๋ฅผ ์คํํ๋ฉด ์๋์ ๊ฐ์ ๋ํํ ์ ๋ ฅ์ฐฝ์ด ํฐ๋ฏธ๋์ ํ์๋ฉ๋๋ค:
- ์ฌ์ฉ์ ์ด๋ฆ ์ ๋ ฅ
- ํฌํธ ๋ฒํธ ์ ๋ ฅ
- ์๋ฃ ๋ฉ์์ง
์๋ฃ ํ, ๋ค์๊ณผ ๊ฐ์ ๋ด์ฉ์ config.txt ํ์ผ์ด ์์ฑ๋ฉ๋๋ค:
# ์ค์ ํ์ผ
username=admin
port=8080
๐ ์ ๋ฆฌ
dialog๋ ๊ฐ๋จํ ์ค์น ๋ง๋ฒ์ฌ๋ ์ค์ UI๋ฅผ ํฐ๋ฏธ๋์์๋ ๊ตฌํํ ์ ์๊ฒ ๋์์ค๋๋ค.- GUI ์์ด๋ ์ฌ์ฉ์ ์นํ์ ์ธ CLI ๋๊ตฌ๋ฅผ ๋ง๋ค๊ณ ์ถ๋ค๋ฉด ๊ผญ ํ์ฉํด๋ณผ ๋งํ ๋๊ตฌ์ ๋๋ค.
- ์ ๋ ฅ, ํ์ธ, ๋ฉ๋ด ์ ํ ๋ฑ ๋ค์ํ ์ปดํฌ๋ํธ๋ฅผ ์ง์ํ๋ฏ๋ก ํ์ฅ์ฑ๋ ์ข์ต๋๋ค.
์ด ์์๋ฅผ ๋ฐํ์ผ๋ก ์ฌ๋ฌ๋ถ์ ํ๊ฒฝ์ด๋ ์๋น์ค์ ๋ง๋ CLI ๋์ฐ๋ฏธ๋ฅผ ๋ง๋ค์ด๋ณด์ธ์!
ํ์ํ๋ค๋ฉด ๋ฉ๋ด ์ถ๊ฐ, ์ฒดํฌ๋ฆฌ์คํธ, ์งํ ๋ฐ(progress bar) ๋ฑ๋ ๋ฃ์ ์ ์์ต๋๋ค.
์ํ๋ค๋ฉด ์ฒดํฌ๋ฆฌ์คํธ, ๋ฉ๋ด, ๋ฐฑ ๋ฒํผ ๊ธฐ๋ฅ์ด ์๋ ๋ฒ์ ๋ ๋ง๋ค์ด ๋๋ฆด๊ฒ์