(X)dialog
ArticleCategory: [Choose a category, translators: do not
translate this, see list below for available categories]
UNIXBasics
AuthorImage:[Here we need a little image from you]
TranslationInfo:[Author + translation history. mailto: or
http://homepage]
original in en Katja and Guido Socher
en to ru Kirill Pukhlyakov
AboutTheAuthor:[A small biography about the author]
Katja �������� �������� ������. �� �������� Tux,
������ & ���������������� � ����. �� �������� �������� �����������
�����.
Guido ����� ���������� Linux � ��� �������� ��� ��, ������, ���
��� ��������������� ���������� ��������������� � ��������� ������.
��� ���� �� ������ ������ �� �������� �� "open source". ��� ��������
�������� ����� linuxfocus.org/~guido.
Abstract:[Here you write a little summary]
Xdialog � dialog ��� ������������ ������� ��� ���������� ������������
���������� � ����� shell ��������.
��� ��������� ���� ��� ��������� ��������� ���� ���������������� shell.
�� ������ ������� �������� ��� �������
Shell Programming.
ArticleIllustration:[One image that will end up at the top
of the article]
ArticleBody:[The main part of the article]
����������
��� �� ���� UNIX shell ���������� ������ ����������, �� �� ������ ��������
� ��� ���������������� ��� � ����������� ���������.
����������� ��������� ����� ������������ ��� �������� � ���������
������-���� ���������� - ������ ����� ������������ ������ �����,
������� ��� ��������� � �.�..
������������ � (X)dialog...
��� ��� ����� ��� ���������� GUI � ������ shell ������� - ��������� �����
����. Dialog ��� ��������� GUI, � Xdialog - ����������� ( X11 ).
�������� ��������� ������ :
�������� ��������� ��� :
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
� ���������� ������ �������� ����� ���� :
���� �� ����������� dialog ������ Xdialog ������� X �� ������ ������
������� � �� ������� curses ����, ������� �������� � ������� ��������� -
�� ������ ������� ���� ������� ����� �������� ��� shell ��������, ��������
� ������ ���������� ������� ������� ��� ������������ IP ��������.
���� ������ ���������� �����������, �� � ��� ������� �� �������� ���
������ �������� GUI � �������. ����� ��������, ��� ����������
���������� ����� ���������� ���� - ���������, ����, ������������,
�����������, ���� �����, ���� ���������, ��������� � �.�.
��������
dialog --help
���
Xdialog --help
� �� �������� ������ ������ ��������� ����. �������, ��� � Xdialog ��
������� ������.
��� ��� ��������
���� ������������� � ��������� ������.
dialog --yesno "text string" <height>
<width>
������ dialog ��� Xdialog ��� ���� ���� ��� ���� � �������� ���������.
���� yesno ������� ���� ����������.
���� <height> � <width> ����� ����������� � '0' - ������
���� ������������� ����������� ��� ������ ������. ��������� ��������
� ���������� "$?". ���� ���� ������� ������ �������� ( �������� ���������
����� ) ��� �������� � standard error - ������ �� �����, �� �����
������������� � ������� ">2".
�������� ����������
���������� �������� Xdialog/dialog ����������, ������� ������������
��� ������������ shell �������� - ���� ������ �������� ���������� �
����������� � ����. ��� ���������� ������ ��� �����������
ppp-on/ppp-off ������� �� ���������� ������� 2001 �. ( ������������� ������ �����������
��� ������� � Internet ). ������ ���������� pppdialout �
���������� ������ ���� � ����������� �� ���� ���������� �� ��� ���
������ � ����.
#!/bin/sh
#
#DIALOG=Xdialog
DIALOG=dialog
#
# name of your default 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
}
# parse command line:
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
# check if we have a ppp network interface
if /sbin/ifconfig | grep '^ppp' > /dev/null; then
# we are already online
$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
# no ppp connection found, go online
# get the names of all available ISP by listing /etc/ppp/peers
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
# end of pppdialout
��� �������� ������ :
� ������ ������� �� ���������� ������� error � help, ����� ���������
���������� ��������� � �������� ���������� ����� (/tmp/pppdialout.$$).
$$ - ��� �������� ��������. trap ����������� � ������ �������������
���������� ���������� ( �������� � ������ ������� ������������� crtl-C )
� ������� ��������� ���� � ����� ������. ����� ����� ���� �������� - ������
�� ��� ��� ( �������: /sbin/ifconfig | grep '^ppp' ). ���� �� ������ -
���������� ���� yesno ( ��� �� ������ ���� ), � �������� �� ����������.
���� �� ������ - ���������� ���� �� ������� ����������� �� ��������
/etc/ppp/peers ( ������� ls /etc/ppp/peers ). ��������� ���� ��������� :
dialog --menu "text" <height>
<width> <menu height> <tag1>
<description> ...
�������������� <height>, <width> � <menu height> �����
( ����������, ��. ���� ) ����� ���������� ������� ������
(<tag1> <description>). �� �������� ����� ����������
( == ). ������ ���������� isplist �������� ��� :
isp1 == isp2 == isp3 ==
��������� ������ ������������ ��������� � ����������� ����� ������.
�� ������� "2> $tmpfile" �������������� ��� � ��� ��������� ����
( tmpfile ). ���� ���� ��������� ������� �������� "cancel".
������� ��� ���� �������������� ���������� $?, ����� ����� �����
������������.
Ok, ���������� ������ - ��������� ��� ��� ��������
... GTK GUI � Xdialog :
... curses ���� � ��������� :
��� ����������
�� ����������� ��� ���� ���������� ��� ��� � ������� ��� mktgz -
��� ������� �� �������� ��� ������������� ��� �������� �������
tar.gz. �� ���������� ���� checklist, ������� �������� ������
� Xdialog.
mktgz yourpackage .
������������ ��� ����� � ������� �������� ( "." ) � ���
��������������� ����������� ������� ��, ������� �� ������ ���������
� ����� yourpackage.tar.gz. �� ������ ������� ���
����� ( mktgz.txt )
�� ����� ��� ��������� ��������� - �� � ���� ��� ���������� ������,
����� ������ ��� �� ��������.
Xdialog � dialog ������������ � ��������� "samples", ��� �� ������
����� ��� ������� ( � Redhat 7.3 �������� ������� /usr/share/doc/Xdialog-2.0.5/samples).
������ ����������� - ��������� �� ��� ��������� �����-�� �������� - ��
��� ��� ���� ����������.
�����
Xdialog � dialog ������������� ��������� ����������� ����, � ���������
�� ��� ��� �������� ��� shell ��������. ��� ��� ������, ��� shell ��� ��
���� ������ ���������� - ������ ������� ������� ������ ������� "tab"
� ���������� ��������� ����, ��� ������� �� � GUI. �������� ���������
�������� ���������, ����������� ������������� �������, �������� ��� :
grep -i "somestring" file.txt | sort | uniq | wc -l
( ��� ���, ��� ��� �� ����� ������ ��� ������� : �����
�������������� ���������� ������ � ����� file.txt, ������� ��������
������ "somestring")
����� �������� �������� ������, ��� ��� ���������� ������� ������������
������� ���� ����� ��� ���������� dialog ����������, ���� ��� ����
�������� ��������� ����������� �����������. �� ����� �������, ���
dialog ���������� ��������� ������������ ����� shell ��������� �
���������� ������������ ������������.
��� ����� Xdialog � dialog?
��-������ ���������� CD � ����� ������������� linux. �������� ��� ���
����������� �� ��� ��������� ( �������� ������� : rpm -qil Xdialog, dpkg -L Xdialog ).
�������� �������� Xdialog :
http://www.chez.com/godefroy/
� dialog
http://hightek.org/dialog/
������