Linux 셸 스크립트에 GUI를 추가하는 방법
게시 됨: 2022-01-29 Bash 스크립트에서 GUI 창, 슬라이더, 라디오 버튼, 진행률 표시줄 등을 사용할 수 있습니다. zenity
툴킷을 사용하고 Bash 스크립트를 개선하는 방법을 배우십시오. 방법을 알려드리겠습니다.
Bash 스크립팅은 강력한 프로그래밍 언어이며 Bash 셸에 내장되어 있으므로 누구나 쉽게 사용할 수 있습니다. 프로그래밍을 시작하기 쉬운 언어입니다. 해석되기 때문에 스크립트를 컴파일할 필요가 없습니다. 스크립트 파일을 편집하고 실행 가능하게 만드는 즉시 실행할 수 있습니다. 이것은 코딩, 실행 및 디버깅 주기를 매우 효율적으로 만듭니다.
사람들이 Bash 스크립트에 대해 갖는 두 가지 주요 불만 사항이 있으며 첫 번째는 속도입니다. Bash 셸은 스크립트의 명령을 해석하기 때문에 컴파일된 코드만큼 빠르게 실행되지 않습니다. 그러나 이것은 트랙터가 자동차만큼 빠르지 않다고 불평하는 것과 같습니다. 그들은 다른 것을 의미합니다.
하지만 속도에는 두 가지 종류가 있습니다. 종종 빠른 스크립트를 함께 사용하여 C와 같은 컴파일된 언어로 솔루션을 개발하는 것보다 훨씬 더 빠르게 작업을 수행할 수 있습니다.
사람들이 Bash 스크립트에 대해 갖는 두 번째 불만은 사용자 인터페이스입니다. 터미널 창입니다. 물론 때로는 인터페이스가 중요하지 않습니다. 스크립트를 사용할 유일한 사람이 작성자라면 인터페이스는 그다지 중요하지 않을 것입니다. 백그라운드 및 배치 유형 처리를 수행하는 스크립트의 경우에도 중요하지 않습니다. 일반적으로 이러한 스크립트는 사용자 상호 작용이 많이 필요하지 않습니다(있는 경우).
터미널 창보다 조금 더 직관적이고 현대적인 것이 필요할 때가 있습니다. 대부분의 사람들은 GUI(그래픽 사용자 인터페이스)에 익숙합니다. 사람들에게 가능한 한 마찰이 없는 경험을 제공하려면 스크립트에서 GUI 요소를 만들고 사용해야 합니다.
제니티 신청
zenity
를 사용하면 Bash 스크립트에 다양한 그래픽 인터페이스 요소를 통합할 수 있습니다. 스크립트에 현대적인 느낌과 현대적이고 친숙한 모양을 제공하는 강력한 툴킷입니다.
zenity
는 Ubuntu, Fedora 및 Manjaro 배포판에 사전 설치되어 있습니다. 그놈의 일부입니다. KDE를 사용하는 경우 zenity
는 모든 데스크탑 환경에서 실행되지만 대신 kdialog
를 확인하고 싶을 수 있습니다.
이 문서의 예제에서는 명령줄에서 다른 대화 상자 창을 만드는 방법, 변수에서 반환 값과 사용자 선택을 캡처하는 방법, 스크립트에서 대화 상자 창을 사용하는 방법을 보여줍니다.
세 가지 유형의 대화 상자 창을 모두 사용하는 작은 응용 프로그램으로 마무리합니다.
캘린더 대화 상자 창
달력 대화창을 통해 누군가가 날짜를 선택할 수 있습니다. zenity
를 사용하여 만들려면 두 단어의 단일 명령이 필요합니다.
제니티 --캘린더
달력 대화 상자 창이 나타납니다. 여기에는 표준 날짜 선택기에서 기대할 수 있는 모든 기능이 있습니다. 월과 연도를 변경할 수 있으며 날짜를 클릭하여 해당 날짜를 선택할 수 있습니다. 기본적으로 창이 나타나면 오늘 날짜가 강조 표시됩니다.
"확인"을 클릭하여 대화창을 닫고 강조 표시된 날짜를 선택하십시오. 날짜를 두 번 클릭해도 동일한 작업이 수행됩니다.
날짜를 선택하지 않으려면 "취소"를 클릭하거나 키보드에서 "Esc" 키를 누르거나 대화 상자 창을 닫습니다.
위의 예에서는 2019년 8월 19일이 선택되었습니다. 사용자가 "확인"을 클릭하면 달력이 닫히고 터미널 창에 선택한 날짜가 인쇄됩니다.
일시적인 부모 없이 매핑된 GTKDialog 줄은 무시해도 됩니다. 이것은 낙담합니다.”
GTK는 GNOME 인터페이스를 개발하는 데 사용되는 툴킷인 GIMP Tool Kit의 약자입니다. 이것은 원래 GNU 이미지 조작 프로그램(GIMP)의 작성자에 의해 고안되었습니다. GNU는 GNU의 Not Unix를 의미합니다.
GTK 엔진은 비표준 방식으로 GTK 구성 요소를 사용했다는 zenity
의 작성자에게 경고합니다.
날짜 값 캡처
터미널에 날짜를 인쇄하는 것은 우리에게 많은 도움이 되지 않습니다. 스크립트 중 하나에서 이 달력을 호출하려면 스크립트에서 유용한 작업을 수행할 수 있도록 선택한 날짜 값을 캡처해야 합니다. 또한 달력을 약간 사용자 정의합니다.
캘린더에서 다음 옵션을 사용합니다. 모두 이중 대시 "-" 플래그와 함께 사용해야 합니다.
- –text : 달력에 표시할 텍스트 문자열을 지정합니다. 기본값인 "아래에서 날짜 선택"을 대체합니다.
- -title : 캘린더 다이얼로그 창의 제목을 설정한다.
- –day : 달력이 열릴 때 선택하는 요일을 설정합니다.
- –month : 달력이 열릴 때 선택되는 월을 설정합니다.
- -year : 달력이 열릴 때 선택되는 연도를 설정합니다.
달력에서 반환된 날짜를 캡처하기 위해 ChosenDate
라는 변수를 사용하고 있습니다. 그리고 echo $ChosenDate
를 사용하여 해당 날짜를 터미널 창에 인쇄합니다.
예, 이전 예에서 동일한 결과를 얻었지만 여기에서는 선택한 날짜가 변수에 저장되어 있습니다. 이전 예에서는 인쇄되어 잊어버렸습니다.
ChosenDate=$(zenity -- calendar --text "날짜 선택" --title "How-To Geek Rota" --일 1 -- 월 9 --년 2019); 에코 $ChosenDate
이제 달력에 프롬프트와 창 제목이 표시됩니다. 날짜는 오늘 날짜가 아닌 선택한 시작 날짜로 설정됩니다.
선택 시 반환되는 날짜 문자열의 형식을 사용자 지정할 수도 있습니다. --date-format
옵션 뒤에는 형식 지정자가 와야 합니다. 이것은 출력에 포함될 데이터와 형식을 정의하는 토큰 문자열입니다. 토큰은 strftime()
C 언어 함수와 함께 사용되는 것과 동일하며 매우 다양합니다.
우리가 사용하는 토큰은 다음과 같습니다.
- %A : 요일의 전체 이름.
- %d : 숫자로 된 월의 일.
- %m : 숫자로 된 월.
- %y : 2자리 연도(세기 없음).
ChosenDate=$(zenity -- calendar --text "날짜 선택" --title "Geek Rota 사용법" --date-format="%A %d/%m/%y" --day 1 -- 9월 -- 2019년); 에코 $ChosenDate
누군가가 날짜를 선택합니다.
그리고 날짜는 우리의 형식을 사용하여 반환됩니다. 그것은 요일의 이름을 표시하고 유럽식 순서로 날짜가 표시됩니다(일, 월, 연도).
파일 선택 대화 상자 창: 파일 선택
파일 선택 대화 상자 창은 매우 복잡합니다. 사람들은 파일 시스템을 탐색하고 파일을 강조 표시한 다음 "확인"을 클릭하여 해당 파일을 선택하거나 선택을 모두 취소할 수 있습니다.
zenity
는 이 모든 기능 등을 제공합니다. 캘린더 대화 상자 창만큼 사용하기 쉽습니다.
우리가 사용할 새 옵션은 다음과 같습니다.
- –file-selection : 파일 선택 대화창을 사용하고자 하는
zenity
를 알려줍니다. - –multiple : 누군가가 둘 이상의 파일을 선택할 수 있도록 합니다.
- –file-filter : 표시할 파일 형식을 파일 대화 상자 창에 알려줍니다.
zenity --file-selection --tile "긱 방법" --multiple --file-filter='*.mm *.png *.page *.sh *.txt'
파일 선택 대화 상자 창은 다른 파일 선택 창처럼 기능합니다.
사용자는 파일 시스템을 탐색하고 원하는 파일을 선택할 수 있습니다.
우리는 새 디렉토리를 탐색하고 "button_hybrid.png"라는 파일을 선택했습니다.
"확인"을 클릭하면 파일 선택 대화 상자가 닫히고 터미널 창에 파일 이름과 경로가 인쇄됩니다.
추가 처리에서 파일 이름을 사용해야 하는 경우 달력의 날짜에 대해 수행한 것처럼 변수에 캡처할 수 있습니다.
파일 선택 대화 상자 창: 파일 저장
하나의 옵션을 추가하면 파일 선택 대화창을 파일 저장 대화창으로 바꿀 수 있습니다. 옵션은 --save
입니다. --confirm-overwrite
옵션도 사용할 것입니다. 그러면 기존 파일을 덮어쓸 것인지 확인하는 메시지가 표시됩니다.
응답=$(zenity --file-selection --save --confirm-overwrite); 에코 $Response
파일 저장 대화창이 나타납니다. 누군가 파일 이름을 입력할 수 있는 텍스트 필드가 있습니다.
사용자는 파일 시스템 내에서 선택한 위치를 찾아보거나 파일 이름을 제공하거나 기존 파일을 클릭하여 덮어쓸 수 있습니다.
위의 예에서 사용자는 기존 파일을 강조 표시했습니다.
"확인"을 클릭하면 기존 파일을 바꿀 것인지 확인하는 확인 대화 상자 창이 나타납니다. 경고 대화 상자에 파일 이름이 나타납니다. 그것이 zenity
에 전문적인 외관을 부여하는 일종의 세부 사항에 대한 관심입니다.
--confirm-overwrite
옵션을 사용하지 않았다면 파일을 자동으로 덮어썼을 것입니다.
파일 이름은 터미널 창에 인쇄되는 Response
변수에 저장됩니다.
알림 대화 상자 창
zenity
를 사용하면 스크립트에 매끄러운 알림 대화 상자 창을 포함하는 것이 수월합니다. 사용자에게 정보, 경고, 오류 메시지 및 질문을 제공하기 위해 호출할 수 있는 재고 대화 상자 창이 있습니다.
오류 메시지 대화 상자 창을 만들려면 다음 명령을 사용합니다.
zenity --error --width 300 --text "권한이 거부되었습니다. 파일에 쓸 수 없습니다."
사용 중인 새 옵션은 다음과 같습니다.
- –error : 오류 대화창을 사용하고 싶다고
zenity
에게 알려줍니다. - –width : 창의 초기 너비를 설정합니다.
오류 대화 상자 창이 지정된 너비로 나타납니다. 표준 GTK 오류 아이콘을 사용합니다.
정보 대화 상자 창을 만들려면 다음 명령을 사용하십시오.
zenity --info --width 300 --text "업데이트가 완료되었습니다. 계속하려면 확인을 클릭하십시오."
우리가 사용하고 있는 새로운 옵션은 --info
로 zenity
에게 정보 대화창을 생성하도록 지시합니다.
질문 대화 창을 만들려면 다음 명령을 사용하세요.
zenity --question --width 300 --text "진행하시겠습니까?"; 에코 $?
우리가 사용하고 있는 새로운 옵션은 --question
으로 zenity
에게 질문 대화창을 생성하도록 지시합니다.
$?
특수 매개변수입니다. 가장 최근에 실행된 포그라운드 파이프라인의 반환 값을 보유합니다. 일반적으로 이것은 가장 최근에 닫힌 프로세스의 값입니다. 0 값은 "확인"을 의미하고 하나 이상의 값은 "취소"를 의미합니다.
이것은 모든 zenity
대화 창에 적용할 수 있는 일반적인 기술입니다. 스크립트에서 이 값을 확인하여 대화 상자 창에서 반환된 데이터를 처리할지 무시할지 여부를 결정할 수 있습니다.
"예"를 클릭했으므로 반환 코드는 "확인"을 나타내는 0입니다.
경고 대화 상자 창을 만들려면 다음 명령을 사용하십시오.
zenity --warning --title "하드 드라이브 공간 부족" --width 300 --text "백업을 저장할 하드 드라이브 공간이 충분하지 않을 수 있습니다."
우리가 사용하고 있는 새 옵션은 --warning
으로 zenity
에 경고 대화 상자 창을 생성하도록 지시합니다.
경고 대화 상자 창이 나타납니다. 질문이 아니므로 버튼이 하나만 있습니다.
진행 대화 창
zenity
진행률 대화 상자 창을 사용하여 스크립트가 얼마나 완료되었는지를 나타내는 진행률 표시줄을 표시할 수 있습니다.
진행률 표시줄은 스크립트에서 파이프된 값에 따라 진행됩니다. 원리를 시연하려면 다음 명령을 사용하십시오.
(for i in $(seq 0 10 100); echo $i; sleep 1; 완료)
명령은 다음과 같이 나뉩니다.
-
seq
명령은 0에서 100까지의 시퀀스를 10단계로 진행합니다. - 각 단계에서 값은 변수
i
에 저장됩니다. 터미널 창에 인쇄됩니다. -
sleep 1
명령으로 인해 명령이 1초 동안 일시 중지됩니다.
zenity
진행률 대화 상자 창과 함께 이것을 사용하여 진행률 표시줄을 시연할 수 있습니다. 이전 명령의 출력을 zenity:
(for i in $(seq 0 10 100); echo $i; sleep 1; 완료) | zenity --progress --title "긱 방법" -- 자동 닫기
사용 중인 새 옵션은 다음과 같습니다.
- –progress :
zenity
에게 진행 대화 창을 사용하고 싶다고 알려줍니다. - –auto-close : 진행률 표시줄이 100%에 도달하면 대화 상자를 닫습니다.
진행률 대화 상자 창이 나타나고 막대가 100%로 이동하여 각 단계 사이에 1초 동안 일시 중지됩니다.
값을 zenity
로 파이핑하여 스크립트에 진행 대화 창을 포함하는 개념을 사용할 수 있습니다.
이 텍스트를 편집기에 입력하고 "progress.sh"로 저장합니다.
!/bin/bash 함수 작업 목록() { echo "# 첫 번째 작업 항목" 에코 "25" 수면 1 echo "# 두 번째 작업 항목" 에코 "50" 수면 1 echo "# 세 번째 작업 항목" 에코 "75" 수면 1 echo "# 마지막 작업 항목" 에코 "100" 수면 1 } 작업 목록 | zenity --progress --title "긱 방법" --auto-close 0번 출구
다음은 스크립트를 분석한 내용입니다.
- 스크립트는
work-list
라는 함수를 정의합니다. 여기에서 실제 작업을 수행하기 위한 명령과 지침을 입력합니다. 각sleep 1
명령을 실제 명령으로 바꿉니다. -
zenity
는echo "# ..."
줄을 수락하고 진행 대화 창에 표시합니다. 이 줄의 텍스트를 변경하여 사용자에게 정보 메시지를 전달합니다. -
echo "25"
와 같이 숫자가 포함된echo
라인도zenity
에서 허용되며 진행률 표시줄의 값을 설정합니다. - 작업 목록 함수가 호출되어
zenity
로 연결됩니다.
다음 명령을 사용하여 스크립트를 실행 가능하게 만드십시오.
chmod +x 진행률.sh
이 명령을 사용하여 스크립트를 실행합니다.
./progress.sh
스크립트가 실행되고 스크립트의 각 단계가 실행됨에 따라 텍스트 메시지가 변경됩니다. 진행률 표시줄이 100%를 향해 단계적으로 이동합니다.
스케일 대화창
척도 대화창에서 누군가가 슬라이더를 움직여 숫자 값을 선택할 수 있습니다. 이것은 그녀가 너무 높거나 낮은 값을 입력할 수 없다는 것을 의미합니다.
사용 중인 새 옵션은 다음과 같습니다.
- –scale : 스케일 대화창을 사용하고 싶다는
zenity
를 알려줍니다. - –min-value : 스케일의 최소값을 설정합니다.
- -max-value : 스케일의 최대값을 설정합니다.
- –step : 화살표 키를 사용할 때 슬라이더가 이동하는 양을 설정합니다. 누군가가 마우스를 사용하는 경우 슬라이더 움직임에는 영향을 미치지 않습니다.
- –value : 슬라이더의 초기값과 위치를 설정합니다.
이것은 우리가 사용하는 명령입니다:
Response=$(zenity --scale --title "How-To Geek" --text "배율 선택." --min-value=0 --max-value=30 --step=3 --value15); 에코 $Response
슬라이더가 15로 설정된 슬라이더 대화 상자 창이 나타납니다.
사용자는 슬라이더를 움직여 새 값을 선택할 수 있습니다.
그녀가 "확인"을 클릭하면 값이 변수 Response
로 전송되고 터미널 창에 인쇄됩니다.
입력 대화 상자 창
입력 대화창에서 누군가가 텍스트를 입력할 수 있습니다.
사용 중인 새 옵션은 다음과 같습니다.
- –entry : 입력 대화창을 사용하고자 하는
zenity
를 알려줍니다. - –entry-text : 텍스트 입력란 에 제안된 값을 입력하고 싶을 때 사용할 수 있습니다. 우리는 빈 필드를 강제로 ""를 사용하고 있습니다. 이것은 꼭 필요한 것은 아니지만 옵션을 문서화하고 싶었습니다.
전체 명령은 다음과 같습니다.
Response=$(zenity --entry --text "검색어를 입력하세요" --title "Howe-To Geek" --entry-text=""); 에코 $Response
텍스트 입력 필드가 포함된 간단한 대화 상자가 나타납니다.
누군가가 텍스트를 입력하고 편집할 수 있습니다.
"확인"을 클릭하면 입력한 값이 변수 Response에 할당됩니다. echo를 사용하여 터미널 창에 변수 값을 인쇄합니다.
함께 모아서
이러한 기술을 결합하여 기능적인 스크립트를 작성해 보겠습니다. 스크립트는 하드웨어 정보 스캔을 수행하고 스크롤하는 텍스트 창에서 사용자에게 결과를 표시합니다. 그녀는 긴 또는 짧은 스캔 유형을 선택할 수 있습니다.
이 스크립트에서는 세 가지 유형의 대화 상자를 사용하며 그 중 두 가지는 새로운 것입니다.
- 첫 번째는 목록 대화 상자 창입니다. 그것은 누군가가 선택을 할 수 있게 해줍니다.
- 두 번째는 사용자에게 어떤 일이 일어나고 있으며 기다려야 한다는 것을 알려주는 진행 대화 창입니다.
- 세 번째는 결과를 사용자에게 표시하는 텍스트 정보 창입니다.
이 텍스트를 편집기에 입력하고 "hardware-info.sh"로 저장합니다.
#!/bin/bash # 이 컴퓨터의 하드웨어 목록 표시 임시 파일=$(mktemp) ListType=`zenity --width=400 --height=275 --list --radiolist \ --title '하드웨어 스캔' \ --text '스캔 유형 선택:' \ --컬럼 '선택' \ --컬럼 '스캔 유형' TRUE "Short" FALSE "Long"` 만약 [[ $? -eq 1 ]]; 그 다음에 # 취소를 누르거나 대화창을 닫았습니다. zenity --error --title="스캔 거부됨" --width=200 \ --text="하드웨어 스캔 건너뛰기" 1번 출구 elif [ $ListType == "짧은" ]; 그 다음에 # 짧은 라디오 버튼을 선택했습니다. 플래그="--짧은" 또 다른 # 긴 라디오 버튼을 선택했습니다. 플래그="" 파이 # $Flag에서 적절한 값으로 하드웨어 정보 검색 hwinfo $Flag | 티 >(천정 --폭=200 --높이=100 \ --title="정보 수집" --progress \ --pulsate --text="하드웨어 확인 중..." \ --auto-kill --auto-close) >${TempFile} # 스크롤 창에 하드웨어 정보 표시 천정 --폭=800 --높이=600 \ --title "하드웨어 세부 정보" \ --text-info --filename="${TempFile}" 0번 출구
다음 명령을 사용하여 실행 가능하게 만드십시오.
chmod +x 하드웨어 정보.sh
이 스크립트는 임시 파일을 만들고 파일 이름은 TempFile 변수에 보관됩니다.
임시 파일=$(mktemp)
스크립트는 --list
옵션을 사용하여 목록 대화 상자 창이라고 하는 zenity
대화 창을 만듭니다. 줄 끝에 있는 "\" 문자는 스크립트가 해당 줄을 감싸는 하나의 긴 줄로 처리하도록 합니다. 다음은 프로세스입니다.
- 창의 너비와 높이를 지정합니다.
- 목록 대화 상자 창은 열을 지원합니다.
--radiolist
옵션은 첫 번째 열이 라디오 버튼 열이 되도록 합니다. - 창의 제목과 텍스트 프롬프트를 설정했습니다.
- 첫 번째 열의 제목을 "선택"으로 설정했습니다. 이 열의 내용은 라디오 버튼이 됩니다.
- 두 번째 열의 제목을 "Select"로 설정하고 두 번째 열의 내용을 제공합니다. 이 열에는 "Short" 및 "Long"이라는 두 개의 텍스트 레이블이 있습니다. TRUE 및 FALSE 표시는 대화 상자 창이 나타날 때 "Short" 옵션이 기본적으로 선택되어 있음을 의미합니다.
- 이 대화창의 결과를
ListType
이라는 변수에 저장하고 있습니다.
ListType=`zenity --width=400 --height=275 --list --radiolist \ --title '하드웨어 스캔' \ --text '스캔 유형 선택:' \ --컬럼 '선택' \ --컬럼 '스캔 유형' TRUE "Short" FALSE "Long"`
사용자가 "Cancel"을 누르면 ListType,
의 값을 확인할 필요가 없으며 간단히 종료할 수 있습니다. 그가 "OK"를 누르면 "Short" 또는 "Long" 라디오 버튼을 선택했는지 알아야 합니다.
- 특수 매개변수
$?
사용자가 "확인"을 누르면 0과 같습니다. "취소"를 누르거나 창을 닫으면 1과 같습니다. - 1과 같으면 스크립트는 오류 정보 대화 상자 창을 표시하고 종료합니다. 그가 "OK"를 누르면
ListType
변수의 값을 테스트하기 위해 이동합니다. -
ListType
변수가 "Short" 값을 보유하는 경우 스크립트는Flag
라는 변수를 "-short"와 동일하게 설정합니다. -
ListType
변수가 "Short" 값을 보유하지 않으면 "Long" 값을 보유해야 합니다. 스크립트는Flag
라는 변수를 빈 문자열인 ""와 동일하게 설정합니다. - 스크립트는 다음 섹션에서
Flag
변수를 사용합니다.
만약 [[ $? -eq 1 ]]; 그 다음에 # 취소를 누르거나 대화창을 닫았습니다. zenity --error --title="검사 거부됨" --width=200 \ --text="하드웨어 검사 건너뛰기" 1번 출구 elif [ $ListType == "짧은" ]; 그 다음에 # 짧은 라디오 버튼을 선택했습니다. 플래그="--짧은" 또 다른 # 긴 라디오 버튼을 선택했습니다. 플래그="" 파이
이제 스크립트가 사용자가 원하는 스캔 유형을 알았으므로 하드웨어 정보 스캔을 수행할 수 있습니다.
- 스크립트는
hwinfo
명령을 호출하고 이를Flag
변수의 값으로 전달합니다. -
Flag
에 "-short"가 포함되어 있으면hwinfo
명령이 짧은 스캔을 수행합니다.Flag
값이 ""이면hwinfo
에 아무 것도 전달되지 않고 기본적으로 긴 스캔이 수행됩니다. - 스크립트는
hwinfo
의 출력을tee
로 파이프합니다.tee
는 출력을zenity
및TempFile
로 보냅니다. - 스크립트는 진행률 표시줄 대화 상자 창을 만듭니다. 대화 상자 창의 너비와 높이, 제목 및 프롬프트 텍스트를 설정합니다.
- 스크립트는
hwinfo
명령이 생성할 정보의 양을 미리 알 수 없으므로 진행률 표시줄을 100%로 올바르게 진행하도록 설정할 수 없습니다.--pulsate
옵션을 사용하면 진행률 대화 상자에 움직이는 표시기가 표시됩니다. 이것은 사용자에게 어떤 일이 일어나고 있음을 알리고 기다려야 합니다. -
--auto-kill
옵션은 누군가 "취소"를 클릭하면 스크립트를 종료합니다. -
--auto-close
옵션을 사용하면 모니터링 중인 프로세스가 완료되면 진행률 대화 상자가 자동으로 닫힙니다.
# $Flag에서 적절한 값으로 하드웨어 정보 검색 hwinfo $Flag | 티 >(천정 --폭=200 --높이=100 \ --title="정보 수집" --progress \ --pulsate --text="하드웨어 확인 중..." \ --auto-kill --auto-close) >${TempFile}
hwinfo
스캔이 완료되면 스크립트는 zenity
를 호출하여 --text-info
옵션이 있는 텍스트 정보 대화 창을 만듭니다. 텍스트 정보 대화 상자 창에는 TempFile
파일의 내용이 표시됩니다.
- 스크립트는 대화 상자 창의 너비와 높이와 제목 텍스트를 설정합니다.
-
--flename
옵션은TempFIle
변수에 있는 파일의 내용을 읽는 데 사용됩니다.
# 스크롤 창에 하드웨어 정보 표시 천정 --폭=800 --높이=600 \ --title "하드웨어 세부 정보" \ --text-info --filename="${TempFile}"
사용자가 텍스트 정보 대화 상자 창을 닫으면 스크립트가 종료됩니다.
0번 출구
불을 켜고 살펴보겠습니다.
./하드웨어 정보.sh
목록 상자가 나타납니다. "짧게" 옵션이 기본적으로 선택되어 있습니다.
"Long"을 선택한 다음 "OK"를 클릭합니다.
진행 창이 슬라이딩 표시와 함께 나타납니다. 하드웨어 스캔이 완료될 때까지 화면에 남아 있습니다.
하드웨어 스캔이 완료되면 스캔의 세부 정보가 포함된 텍스트 정보 대화 상자 창이 나타납니다.
"확인"을 클릭합니다.
완고한 명령줄 기수라도 몇 개의 GUI 대화 상자가 겸손한 Bash 스크립트에 전문적인 터치를 줄 수 있음을 인정해야 합니다.