[LinuxFocus-icon]
��ҳ  |  վ����ͼ  |  ����  |  ����

���� | �����ڿ� | ���� | ����LF
This document is available in: English  Castellano  ChineseGB  Deutsch  Francais  Italiano  Nederlands  Russian  Turkce  

[Photo of the Authors]
by Katja and Guido Socher
<katja(at)linuxfocusorg, %20guido(at)linuxfocus.org>

About the authors:

Katja ��LinuxFocus�ĵ¹��༭. ��ϲ��Tux, ��Ӱ, ��Ӱ�ʹ���. ������������ҳ.

Guido ��һ������linux������. ��ϲ��Linux��Ϊ�����ɳ�ʵ�Ϳ��ŵ��������Ƶ�. ���������dz�֮Ϊ"����Դ����"��ԭ��. ������������ҳ:linuxfocus.org/~guido.


Ŀ¼:


 

(X)dialog: Talking shells

[Illustration]

ժҪ:

Xdialog��dialog��������ʹ����shell�ű��߱�ͼ���û�����(GUI)�Ĺ���.
����Ҫ�߱�һЩshell����֪ʶ���ܿ�����ƪ����. �����Կ����ǵ�Shell Programming��ƪ������ѧһЩshell���̵Ļ���֪ʶ.



 

����

��ʹû��ͼ���û�����, UNIX shell��������һ���dz���Ч�Ĺ�������.
��ijЩԭ��ʹ����һ��ͼ�εĶԻ�����ʹ�û����ø���ֱ��. ����һ�������İ�װ�Ի���. ���д�����ѡ������ѡ����װ������,������ѡ��Ŀ��Ŀ¼....

 

ʹ�� (X)dialog...

ʹ��dialog��Xdialog������Ҫдһ���̶̵�shell�ű��Ϳ���ʵ��һ��ͼ�εĻ�Ӧ�ó���. Dialog��һ����ȫ�������ն˵ij���,  Xdialog����һ��X11����.
������һ������:
����������(�� ����/ճ��)������Щ���䵽һ��shell������(xterm,konsole,...):

bash
Xdialog --yesno "Do you want to learn more about Xdialog?" 0 0;\
case $? in
0)
echo "Result: Yes chosen.";;
1)
echo "Result: No chosen.";;
255)
echo "ESC pressed.";;
esac

���������������:

[yes/no Xdialog]

��������dialog����Xdialog (�������Ľű����ڶ��е� X ȥ��), ���Ϳ��Կ���һ��������xterm���Ļ���curses�ij���,������һ�������Ĵ�����(��ͼ). ��ijЩ������, ���������з�ʽ���ʺ�һ������Ҫ��һ���ն˴������еĽű�. �����������������ڶ�̨�޷�����ֱ��·�ɵ�������. ����������dialog����˳�����ж�Xdialog������.


[yes/no dialog]

������Щdialog/Xdialog������Ư���������ô�, ������˵���˱�дһ��ͼ�λ��ĶԻ��������׵�. ����������Ȥ�ĶԻ���, ����������,�˵�,�ļ�������,������,�ı�����,��Ϣ��,������,.....��������������:

dialog --help
����
Xdialog --help

���õ�һ�����õĶԻ����б�. Xdialog ӵ�еĶԻ�������Ҫ��dialog��.
 

�����������

��Щ�Ի�����ͨ��������������������.

dialog --yesno "text string" <height> <width>

������dialog �� Xdialog ��, ���������Ի��������ֺ��������õ�һ������������.

"yesno"�Ի�����3������. <height>��<width>��������Ϊ0, �Ի����������ı��ij����Զ��������Ⱥ͸߶�. �������ѶԻ�������״̬���ظ��ű���������"$?"������. �������и�����ֵ��Ҫ����,�类ѡ��������, ������ֵ�ᱻ���ص���׼������(standard error). ��׼����ͨ��ֻ�DZ���ӡ����Ļ��,��������"2>"�������ض���.

һ���dz��򵥶���Ч�Ľ����취.
 

�����ij���

����,����������һ��ʵ�õij���,Xdialog/dialog���ȴ�ͳ��shell�ű������ṩ�����ı���: һ���ÿ���ѡ����ͬ��ISP(Internet Service Providers)���ҽ������ӵIJ˵�. �����ű���Ҫ2001��5�µ����� Using different ISPs for your Internet access ���ṩ��ppp-on/ppp-off�ű�. ���������ű����� pppdialout, �����������Ƿ�������ʾ����ͬ�IJ˵�.
#!/bin/sh
#
# pppdialout
#
#DIALOG=Xdialog
DIALOG=dialog
#
# ����Ĭ��ISP������:
defaultisp=maxnet
#
error()
{
echo "$1"
exit 2
}
help()
{
cat <<HELP
pppdialout -- select an ISP and dial out.
All available ISPs must have a config file in /etc/ppp/peers

pppdialout executes the ppp-on/ppp-off scripts as described
in http://linuxfocus.org/English/March2001/article192.shtml

pppdialout, copyright gpl, http://linuxfocus.org/English/November2002
HELP
exit 0
}

# �����������:
while [ -n "$1" ]; do
case $1 in
-h) help;shift 1;; # function help is called
--) shift;break;; # end of options
-*) echo "error: no such option $1. -h for help";exit 1;;
*) break;;
esac
done

tempfile=/tmp/pppdialout.$$
trap "rm -f $tempfile" 1 2 5 15

# �����Ƿ��Ѿ�����internet
if /sbin/ifconfig | grep '^ppp' > /dev/null; then
# �����Ѿ�����
$DIALOG --title "go offline" --yesno "Click YES to \
terminate the ppp connection" 0 0
rval="$?"
clear
if [ "$rval" = "0" ]; then
echo "running /etc/ppp/scripts/ppp-off ..."
/etc/ppp/scripts/ppp-off
fi
else
# û����internet����, ��������
# �� /etc/ppp/peers ȡ�ÿ��õ�ISP�б�
for f in `ls /etc/ppp/peers`; do
if [ -f "/etc/ppp/peers/$f" ]; then
isplist="$isplist $f =="
fi
done
[ -z "$isplist" ]&&error "No isp def found in /etc/ppp/peers"
#
$DIALOG --default-item "$defaultisp" --title "pppdialout" \
--menu "Please select one of\
the following ISPs for dialout" 0 0 0 $isplist 2> $tempfile
rval="$?" # return status, isp name will be in $tempfile
clear
if [ "$rval" = "0" ]; then
isp=`cat $tempfile`
echo "running /etc/ppp/scripts/ppp-on $isp..."
/etc/ppp/scripts/ppp-on "$isp"
else
echo "Cancel..."
fi
rm -f $tempfile
fi
# pppdialout ����
�����ű������ι�����:
��ʼ,���Ƕ�����һЩ����:error��help, ��һ�����Ǽ��������в���,Ȼ��������һ����ʱ�ļ�(/tmp/pppdialout.$$). $$�ǵ�ǰ���е�����,����ÿһ���������ж��Ƕ�����. �ݾ������ڳ�����ǿ���ж�(���û�����Ctrl+C)��ִ�в���ɾ�����Ƕ�������ʱ�ļ�. Ȼ���Ҽ��������Ƿ��Ѿ�����(����:/sbin/ifconfig | grep '^ppp'). ���������Ѿ�����������һ���Ի���, ����������������������, ѯ���û��Ƿ�Ҫ������. �������Dz����߾ʹ���һ���˵��Ի���. ���Ǵ� /etc/ppp/peers (ls /etc/ppp/peers)��ȡ�����п��õ�ISPs. �˵��Ի������﷨��:

dialog --menu "text" <height> <width> <menu height> <tag1> <description> ...

<height>, <width> ��<menu height> ������Ϊ0(�Զ�����,�뿴����),Ȼ���dz���Ԥ�����﷨��ʽ���ַ���(<tag1> <description>). ����û��ʲô����,������һЩ�������Ķ���(==). ����ipslist�е����ݿ�����������:

isp1 == isp2 == isp3 ==

�û���ѡ�������ᱻ��ӡ����׼����. ����"2> $tmpfile" ����һ����д�����ǵ���ʱ�ļ�(tmpfile)��. �����˵��Ի�����cancel��ѡ, �������DZ������� $? (�˳�״̬) ��ȷ����һ����������.

����, �����Ѿ��㹻. ����������������:

... Xdialog������Ư����GTKͼ�ν���:

[pppdialout with xdialog]
[pppdialout with xdialog]

... �ն������� curses �� dialog :

[pppdialout with dialog]
[pppdialout with dialog]

 

�����ij���More applications

���ǻ�����һ������Ҫ�׸���. ����һ������mktgz��ʹ��Xdialog��checklist�Ի����ij���. ����ƽ���ն˵�dialogû��checklist�Ի���,������ֻ��ʹ��Xdialog��. �������� mktgz������ tar.gz ��ѹ����. �÷�:

mktgz yourpackage .

������������ʾ��ǰĿ¼(".")�µ������ļ�, Ȼ��������ѡ����Щ�ļ���Ҫ���뵽yourpackage.tar.gz ����. ������������������������(mktgz.txt). ���Dz���һ��һ���Ľ��������ű�,��Ϊ���Ѿ��ܹ����������ű���.

Xdialog �� dialog �Դ���һЩ������һ����"samples"��Ŀ¼��(Redhat 7.3 ���� /usr/share/doc/Xdialog-2.0.5/samples��). ��ע����Щ�ű�������������ʾ, ���ǻ�����ȥ��һЩ����.

 

�ܽ�

Xdialog �� dialog �ṩ�˴����ĶԻ�������. ������Щ���͵ĶԻ��򲢲��ʺ��������͵Ľű�. shell ��������һ��"ǿ��"�Ļ���. ��tab�����Զ���ȫĿ¼����ͼ���û������е�������Ҫ���ܶ�. �ر��ǹܵ���������������һ��ǿ���Ĺ���. ��������:

grep -i "somestring" file.txt | sort | uniq | wc -l

(UNIX��shellsҪ��ͬ��������û����ô����: ����file.txt������"somestring"�ִ����е���Ŀ)
���������ֹܵ��ṹ����Ϊ��Щ����ȫ�������в���������. ���仰˵: ���Dz���ͣ�������û��������μ�������.
��Ȼ�ڳ�����ͼ�ζԻ����dz�����, Xdialog �� dialog �dz�����ʹ��, ���ؾ�û��������ͼ�λ�����ǿ��. �����һ��ASCII shell�ű���ȫͼ�λ�����������ȱ��.  

���������� Xdialog �� dialog?

���ȿ����ҵĵط�������linux���а�������. Ҳ���Ѿ���װ�������ļ�������(��ѯ���ļ�����: �� rpm -qil Xdialog, dpkg -L Xdialog). Xdialog����ҳ��:
http://www.chez.com/godefroy/
dialog����ҳ��:
http://hightek.org/dialog/
��Ҳ������������ dialog/Xdialog.
 

�����

 

����ƪ���·�������

ÿƪ���¶��и��Եķ���ҳ�档������ҳ����������ύ���ۣ�Ҳ���Բ鿴�������ߵ����ۣ�
 ����ҳ�� 

��ҳ��LinuxFocus�༭��ά��
© Katja and Guido Socher, FDL
LinuxFocus.org

����������LinuxFocus������������������
������Ϣ:
en --> -- : Katja and Guido Socher <katja(at)linuxfocusorg, %20guido(at)linuxfocus.org>
en --> zh: Walte YH <walteyh(at)sohu.com>

2003-04-06, generated by lfparser version 2.25