GUI 추가 · 4 min read · Jan 22, 2026
Linux 셸 스크립트에 kdialog로 간단한 GUI 추가하기
셸 스크립트는 매우 유용한 것입니다. 기본적으로 많은 플래그가 있는 더 복잡한 명령을 대체하는 간단한 명령을 생성하는 것부터, 크론 작업에서 실행할 많은 복잡한 명령을 배치하는 것까지 가능합니다. 좋아하는 터미널에서 빠르게 실행할 수 있기 때문에 훌륭하지만, 경우에 따라 특정 플래그나 옵션의 조합을 기억해야 할 수도 있습니다. 이러한 상황에 처하게 된다면, 작업을 빠르게 진행할 수 있도록 간단한 GUI 대화 상자를 추가할 수 있습니다.
이 튜토리얼을 활용하기 위해서는 다음이 필요합니다:
- 유닉스와 유사한 셸에 대한 접근 (이것은 bash를 염두에 두고 작성되었습니다).
- macOS 및 *nix OS(리눅스와 같은)는 이와 유사한 것이 기본적으로 제공되어야 합니다.
- Windows에서는 CygWin 환경을 설치하거나 최근 버전의 Windows 10에서 “Windows Subsystem for Linux”를 사용할 수 있습니다.
- KDE 데스크탑 환경의 기본 라이브러리. 다른 DE가 이미 설치되어 있다면 전체를 필요로 하지 않습니다.
kdialog를 설치해야 하는 경우는 KDE가 아닌 다른 데스크탑 환경으로 시작했으며, 기계에 다른 KDE 애플리케이션이 없는 경우에만 필요합니다. Ubuntu의 kde-baseapps-bin 패키지의 일부로, Kubuntu에서는 기본적으로 설치되어 있습니다. 다른 파생 배포판에서는 터미널에서 다음 명령어로 설치할 수 있습니다:
터미널에서 kdialog 설치하기.
sudo apt-get install kde-baseapps-bin이는 다른 KDE 라이브러리와 패키지가 함께 설치되므로 상당한 설치가 발생할 수 있습니다. 하지만 하드 드라이브 공간은 저렴하죠, 맞나요?
스크립트는 일반적으로 자동으로 작업을 수행해야 하므로, 다음 상황에서만 이 대화 상자를 표시하면 됩니다:
- 사용자로부터 어떤 입력을 캡처해야 할 경우, 또는;
- 사용자에게 눈에 띄는 방식으로 피드백을 보여주고 싶을 경우 (즉, 단순히 명령줄에서 텍스트를 출력하는 것이 아닙니다).
[drush를 사용하여 Drupal 사이트 백업하기]라는 명령을 사용하는 예를 들어 보겠습니다. 물론, 당신은 신생 인터넷 기업가이므로, 단 하나의 Drupal 사이트만 가지고 있지 않습니다—? 세 개가 있습니다. 모든 사이트를 백업할 때 별도의 명령을 실행하고 싶지 않지만, 동시에 하나의 사이트의 스냅샷을 찍고 싶을 때 긴 경로를 기억하고 싶지 않습니다. 우리는 다음과 같은 대화 상자를 사용하여 스스로를 도울 수 있습니다:
- 백업할 수 있는 사이트 목록을 사용자에게 제시하고 선택하도록 요청하며;
- 각 결과를 성공 또는 실패 여부를 확인하는 메시지를 사용자에게 보여줍니다.
kDialog는 명령줄에서 대화 상자 유형과 해당 유형이 필요로 하는 매개변수 및 대화 상자 제목과 같은 다른 옵션을 함께 호출하여 작동합니다.
필요에 따라 선택할 수 있는 다양한 대화 상자 유형이 있습니다:
kDialog 유형
| 대화 상자 유형 | 샘플 이미지 | 설명 |
|---|---|---|
| 정보 메시지 상자 | ![]() | 닫기 위한 “확인” 버튼이 있는 상자를 표시하며, 텍스트 메시지와 “비치명적” 정보, 경고 또는 오류 아이콘을 제공합니다. |
| 수동 팝업 | ![]() | 몇 초 후에 사라지는 메시지를 표시합니다. 즉, 사용자가 닫거나 해제할 필요가 없습니다. |
| 예/아니오 메시지 상자 | ![]() | “정보 메시지 상자”와 마찬가지로 정보/경고/오류 아이콘이 있는 대화 상자를 표시하며, 사용자의 “예” 또는 “아니오” 선택을 제공합니다. |
| 입력 대화 상자 | ![]() | 사용자가 텍스트를 입력할 수 있는 단일 상자를 제공합니다. |
| 파일 표시 상자 | ![]() | 대화 상자 내에서 (일반 텍스트) 파일의 내용을 표시합니다. |
| 메뉴 및 선택 대화 상자 | ![]() | 항목 목록이 있는 대화 상자를 제공하여 사용자가 하나 이상의 선택을 할 수 있도록 합니다: - 메뉴 및 라디오 목록 대화 상자는 하나의 옵션 선택을 허용합니다. - 체크리스트 대화 상자는 하나, 여러 개 또는 모든 옵션 선택을 허용합니다. - 콤보박스 대화 상자는 드롭다운 메뉴를 사용하여 하나의 옵션 선택을 허용합니다. |
| 파일 선택 대화 상자 | ![]() | 사용자가 파일 시스템의 일부를 선택할 수 있습니다. 포함: - 이름 또는 파일 유형으로 필터링할 수 있는 기존 파일 선택 - 저장/업데이트할 새 파일의 이름 입력 - 디렉토리 |
| 진행 대화 상자 | ![]() | 사용자가 kDialog를 dcop 명령과 결합하여 작업의 진행 상황을 사용자에게 업데이트하는 대화 상자를 생성할 수 있습니다. |
위의 옵션을 살펴보면, 두 가지가 잠재력을 가지고 있습니다:
- “체크리스트 대화 상자”는 백업할 사이트 중 하나 또는 모두를 선택할 수 있게 해줍니다.
- “정보 메시지 상자”는 각 사이트의 성공 또는 실패 여부를 표시하는 데 사용할 수 있습니다.
이러한 옵션을 고려할 때, 우리의 스크립트는 다음과 같은 모습일 것입니다:
SITE1은 여기에 위치합니다 (이것들은 상대 경로가 아닌 전체 경로로 만드세요)
SITE2는 저기에 위치합니다
SITE3은 다른 장소에 위치합니다
display a kDialog with SITE1, SITE2, and SITE3 as options
and tell me which one(s) the user picks
for each one the user picked:
run +drush ard+ on that site, and
record whether it was successful or not.
display another +kDialog+ with each of those results.이 점을 염두에 두고, 바로 시작해 보겠습니다.
먼저 해야 할 일은 선택된 각 사이트에 적용할 drush 명령을 조합하는 것입니다. 모든 사이트가 서로 다른 디렉토리에 있는 동일한 웹 호스트에 있다고 가정하되, 백업을 공통의 “backup” 디렉토리에 저장하고 싶습니다. 우리는 다음을 사용할 수 있습니다:
cd SITE
drush ard --destination=/home/user/backup/SITENAME.tar.gz따라서 변수 설정 및 for 루프에 대한 지식을 사용하여 이 스크립트를 다음과 같이 만들 수 있습니다:
#! /bin/bash
// 참고: 모든 사이트의 경로를 보관할 변수를 생성합니다.
PERSONALSITE='/home/www/mypersonalsite/'
BUSINESSSITE='/home/www/mybusinesssite/'
HOBBYSITE='/home/www/myhobbysite/'
// 참고: 목적지 경로를 보관할 변수를 생성합니다.
DESTINATION='/home/user/backup'
// 참고: 사용자에게 백업할 사이트를 선택하도록 요청하는 대화 상자를 표시합니다.
CHOICES=$(kdialog --checklist "Select sites to back-up:" 1 "Personal site" off 2 "Business Site" off 3 "Hobby site" off)
// 참고: 대화 상자에서 반환된 각 선택에 대한 성공/실패 메시지를 기록합니다.
for each in $CHOICES
do
case {
1)
cd $PERSONALSITE
drush ard --destination=$DESTINATION/mypersonalsite.tar.gz
if [$?=="0"]
then
RESULTS += "Personal site backup: Succeeded\n"
else
RESULTS += "Personal site backup: Failed\n"
fi
2)
cd $BUSINESSSITE
drush ard --destination=$DESTINATION/mybusinesssite.tar.gz
if [$?=="0"]
then
RESULTS += "Business site backup: Succeeded\n"
else
RESULTS += "Business site backup: Failed\n"
fi
3)
cd $HOBBYSITE
drush ard --destination=$DESTINATION/myhobbysite.tar.gz
if [$?=="0"]
then
RESULTS += "Hobby site backup: Succeeded\n"
else
RESULTS += "Hobby site backup: Failed\n"
fi
esac
// 참고: 모든 백업 작업의 결과를 표시하는 대화 상자를 표시합니다.
kdialog --msgbox $RESULTS이것을 저장하고 첫 번째 Bash 시리즈 기사에서 설명한 대로 실행할 수 있다면, 단일 명령을 실행하고, 사이트를 선택하기 위한 사용하기 쉬운 대화 상자를 얻고, 모든 것이 어떻게 진행되었는지 보고하는 멋진 창을 볼 수 있습니다.
이 스크립트는 몇 가지 방법으로 최적화할 수 있지만, kdialog를 사용하여 사용자 입력을 수집하고 스크립트 내에서 단일 프로그램을 실행하여 결과를 표시하는 방법을 보여줍니다.
새 게시물을 받은 편지함에서 받기
스팸은 없습니다. 언제든지 구독 해지 가능합니다.







