Linux의 bash 스크립트에서 GUI 메시지 상자를 표시하는 방법은 무엇입니까?
문제
저는 Ubuntu Linux에서 몇 가지 작은 bash 스크립트를 작성하고 있습니다.입력을 입력하거나 출력을 보기 위해 터미널 창 없이 GUI에서 실행할 수 있기를 원합니다.
지금까지 필요한 유일한 입력은 sudo에 대한 비밀번호이며 gksudo는 이를 잘 처리합니다.하지만 아직 메시지 상자를 표시하는 쉬운 방법을 찾지 못했습니다.일종의 'gkmessage' 명령을 사용할 수 있나요?기본 Ubuntu 설치에 있는 것을 선호하지만 필요한 경우 새 패키지를 설치해도 괜찮습니다.
다른 팁
당신이 사용하는 경우 우분투 많은 배포판 notify-send
명령은 오른쪽 상단에 사라지기 쉬운 알림 중 하나를 표시합니다.다음과 같습니다:
notify-send "My name is bash and I rock da house"
아름다운!
모두가 젠티(zenity)를 언급하고 있고, 다른 사람들도 많이 있는 것 같습니다.혼합되어 있지만 흥미로운 목록은 다음과 같습니다. http://alternativeto.net/software/zenity/
먼저, 텍스트 서식 지정 마크업, 창 제목, 버튼 레이블을 갖춘 zenity의 예입니다.
zenity \
--info \
--text="<span size=\"xx-large\">Time is $(date +%Hh%M).</span>\n\nGet your <b>coffee</b>." \
--title="Coffee time" \
--ok-label="Sip"
gx메시지
gxmessage "my text"
x메시지
xmessage
매우 오래되었기 때문에 안정적이며 아마도 X를 사용하는 모든 배포판에서 사용할 수 있습니다(X와 함께 배포되므로).이는 Linux 또는 Unix를 오랫동안 사용하여 이것이 무엇을 의미하는지 알 수 있도록 X 리소스를 통해 사용자 정의할 수 있습니다(.Xdefaults
, 누구나 ?).
xmessage -buttons Ok:0,"Not sure":1,Cancel:2 -default Ok -nearmouse "Is xmessage enough for the job ?" -timeout 10
k대화
(검증되지 않은)
PPA에서
야드:Zenity On Steroids [쉘 스크립트에서 그래픽 대화 상자 표시] ~ Web Upd8:우분투/리눅스 블로그.자동 크기 대화 상자가 아닌 것 같습니다.
echo My text | yad \
--text-info \
--width=400 \
--height=200
더 큰 예
yad \
--title="Desktop entry editor" \
--text="Simple desktop entry editor" \
--form \
--field="Type:CB" \
--field="Name" \
--field="Generic name" \
--field="Comment" \
--field="Command:FL" \
--field="Icon" \
--field="In terminal:CHK" \
--field="Startup notify:CHK" "Application" "Name" "Generic name" "This is the comment" "/usr/bin/yad" "yad" FALSE TRUE \
--button="WebUpd8:2" \
--button="gtk-ok:0" \
--button="gtk-cancel:1"
우분투 표준 저장소에 없는 기타
- 쉘구이
- x대화상자
- gtk대화
주제에서 벗어남(터미널의 경우)
whiptail --msgbox "my text" 10 20
dialog --msgbox "my text" 10 20
자유롭게 편집하세요.
그만큼 제니티 응용 프로그램이 당신이 찾고 있는 것 같습니다.
다음에서 입력을 받으려면 제니티, 변수를 지정하고 다음과 같은 출력을 얻을 수 있습니다. 제니티 --엔트리 그것에 저장되었습니다.다음과 같이 보입니다.
my_variable=$(zenity --entry)
의 값을 보면 내_변수 이제는 zenity 팝업 항목 대화 상자에 입력된 내용이 됩니다.
사용자(또는 당신)가 대화 상자에 무엇을 입력해야 하는지에 대한 일종의 프롬프트를 제공하려면 다음을 추가하십시오. --텍스트 원하는 라벨로 전환하세요.다음과 같이 보입니다.
my_variable=$(zenity --entry --text="What's my variable:")
Zenity에는 특정 작업을 위한 다른 멋진 옵션이 많이 있으므로 다음을 통해 해당 옵션도 확인해 보는 것이 좋습니다. 제니티 --도움말.한 가지 예는 --달력 그래픽 달력에서 날짜를 선택할 수 있는 옵션입니다.
my_date=$(zenity --calendar)
사용자가 클릭한 내용을 기반으로 멋진 형식의 날짜가 제공됩니다.
echo ${my_date}
다음을 제공합니다:
08/05/2009
슬라이더 선택기, 오류, 목록 등에 대한 옵션도 있습니다.
도움이 되었기를 바랍니다.
나는 찾았다 x메시지 명령이면 충분합니다.
여기에 당신이 원하는 것을 할 수 있는 작은 Tcl 스크립트가 있습니다.Wish 통역사는 Ubuntu에 기본적으로 설치되어야 합니다.
#!/usr/bin/wish
pack [label .msg -text [lindex $argv 0]]
pack [entry .ent]
bind .ent <KeyPress-Return> { puts [.ent get]; destroy . }
focus .ent
다음과 같이 호출하세요.
myanswer=`gui-prompt "type your answer and press enter"`
alert
그리고 notify-send
같은 것인 것 같습니다.나는 사용한다 notify-send
입력되지 않은 메시지의 경우 포커스를 훔치지 않고 zenity 등을 중지하는 방법을 찾을 수 없습니다.이 일을 하는 것부터.
예를 들어
# This will display message and then disappear after a delay:
notify-send "job complete"
# This will display message and stay on-screen until clicked:
notify-send -u critical "job complete"
도 있습니다 dialog
그리고 KDE 버전 kdialog
. dialog
슬랙웨어에서 사용되므로 다른 배포판에서는 즉시 사용하지 못할 수도 있습니다.
우분투는 어떻습니까? 알리다.모든 작업 후에 완료를 알리는 데 사용할 수 있으며 작업이 오류로 종료된 경우 적십자 아이콘도 표시할 수 있습니다.
ls -la; alert
다른 것이 없다면.다음과 같이 xterm을 실행하고 에코할 수 있습니다.
xterm -e bash -c 'echo "this is the message";echo;echo -n "press enter to continue "; stty sane -echo;answer=$( while ! head -c 1;do true ;done);'
Kdialog와 다이얼로그 둘 다 좋지만 저는 Zenity를 추천하고 싶습니다.빠르고 쉬우며 xmessage나 대화상자가 훨씬 더 보기 좋습니다.