<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<HTML>
<HEAD>
 <META http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
 <META NAME="GENERATOR" CONTENT="lfparser_2.33">
 <META NAME="LFCATEGORY" CONTENT="UNIXBasics">
 <link rel="icon" href="../../common/images/lf-16.png" type="image/png">
 <TITLE>lf267, UNIXBasics: (X)dialog: Sprechende Shells</TITLE>
<style type="text/css">
<!--
 td.top {font-family: Arial,Geneva,Verdana,Helvetica,sans-serif; font-size:12 }
 pre { font-family:monospace,Courier }
 p.cl { color:#EE9500 }
 a.nodec { text-decoration:none }
 p.trans { font-size:8pt; text-align:right }
 p.clbox { width:50%; alignment:center; background-color:#FFD700; 
           border-style:none; border-width:medium; border-color:#FFD700; 
           padding:0.5cm;  text-align:center }
 p.code { width:80%; alignment:center; background-color:#aedbe8; 
          border-style:none; border-width:medium; border-color:#aedbe8; 
          padding:0.1cm;  text-align:left }
 p.foot { background-color:#AAAAAA; color:#FFFFFF; border-style:none; 
          border-width:medium; border-color:#AAAAAA; padding:0.5cm ; 
          margin-top:0.1cm; margin-right:1cm; margin-left:1cm; 
          text-align:center }
 .mark  { background-color:#e6e6ff }
-->
</style>
 
</HEAD>
<BODY bgcolor="#ffffff" text="#000000">
 <!-- this is generated html code. NEVER use this file for your
 translation work. Instead get the file with the same article number
 and .meta.shtml in its name. Translate this meta file and then
 use lfparser program to generate the final article -->
 <!-- lfparser can be obtained from http://www.linuxfocus.org/~guido/dev/lfparser.html -->

<!-- this is used by a number of tools:
 =LF=AUTHOR: Katja and Guido Socher
 =LF=CAT___: UNIXBasics
 =LF=TITLE_: (X)dialog: Sprechende Shells
 =LF=NUMBER: 267
 =LF=ANAME_: article267.shtml
 -->

<!-- 2pdaIgnoreStart -->

<!-- start navegation bar -->
 <!-- top navegation bar -->
 <TABLE summary="topbar_1" cellspacing="0" cellpadding="0" border="0" align="center" width="90%">
   <TR bgcolor="#2e2292">
     <TD class="top"><TABLE summary="topbar_1_logo" cellspacing="0" cellpadding="0" border="0" width=
       "100%">
         <TR><TD width="319"><IMG src="../../common/images/logolftop_319x45.gif"
           alt="[LinuxFocus-icon]" width="319" height="45" align="left" 
           border="0"></TD>

           <TD class="top">
             <TABLE summary="topbar_1_links" width="100%">
               <TR align="right">
                 <TD class="top"><A class="nodec" href="../index.shtml"><FONT color=
                 "#DDDDDD" size="2">Home</FONT></A> &nbsp;|&nbsp; <A class=
                 "nodec" href="../map.html"><FONT color=
                 "#DDDDDD" size="2">Plan</FONT></A> &nbsp;|&nbsp; <A class=
                 "nodec" href="../indice.html"><FONT color=
                 "#DDDDDD" size="2">Index</FONT></A> &nbsp;|&nbsp; <A class="nodec" href="../Search/index.html"><FONT color=
                 "#DDDDDD" size="2">Suchen</FONT></A> </TD>
               </TR>

               <TR align="right">
                 <TD class="top">
                   <HR width="100%" noshade size="1">
                 </TD>
               </TR>
             </TABLE>
           </TD>
         </TR>
       </TABLE>
     </TD>
   </TR>
 </TABLE>
 <!-- end top navegation bar -->
 <!-- blue bar -->
 <TABLE summary="topbar_2" cellspacing="0" cellpadding="0" border="0" align="center"
 width="90%">
   <TR bgcolor="#00ffff">
     <TD><IMG src="../../common/images/transpix.gif" width="1" height=
     "2" alt=""></TD>
   </TR>
 </TABLE>
 <!-- end blue bar -->
 <!-- bottom navegation bar -->
 <TABLE summary="topbar_3" cellspacing="0" cellpadding="0" border="0" align="center"
 width="94%">
   <TR bgcolor="#000000">
     <TD>
       <TABLE summary="topbar_3_links" cellspacing="0" cellpadding="1" border="0" width=
       "100%">
         <TR align="center">
           <TD WIDTH="20%"><A class="nodec" href="../News/index.shtml"><FONT color=
           "#FFFFFF">Nachrichten</FONT></A> </TD>
           <TD WIDTH="5%"><FONT color="#FFFFFF">|</FONT> </TD>
           <TD WIDTH="20%"><A class="nodec" href="../Archives/index.html"><FONT color=
           "#FFFFFF">Archiv</FONT></A> </TD>
           <TD WIDTH="5%"><FONT color="#FFFFFF">|</FONT> </TD>
           <TD WIDTH="20%"><A class="nodec" href="../Links/index.shtml"><FONT color=
           "#FFFFFF">Links</FONT></A> </TD>
           <TD WIDTH="5%"><FONT color="#FFFFFF">|</FONT> </TD>
           <TD WIDTH="20%"><A class="nodec" href="../aboutus.html"><FONT color=
           "#FFFFFF">&Uuml;ber uns</FONT></A> </TD>
         </TR>
       </TABLE>
     </TD>
   </TR>
 </TABLE>
 <!-- end bottom navegation bar -->
<!-- stop navegation bar -->

<!-- SSI_INFO -->

<!-- tr_staticssi include virtual -->
<!-- tr_staticssi exec cmd -->
<!-- addedByLfdynahead ver 1.4 --><TABLE ALIGN="right" border=0><TR><TD ALIGN="right"><FONT SIZE="-1" FACE="Arial,Helvetica">Dieses Dokument ist verf&uuml;bar auf: <A href="../../English/November2002/article267.shtml">English</a> &nbsp;<A href="../../Castellano/November2002/article267.shtml">Castellano</a> &nbsp;<A href="../../ChineseGB/November2002/article267.shtml">ChineseGB</a> &nbsp;<A href="../../Deutsch/November2002/article267.shtml">Deutsch</a> &nbsp;<A href="../../Francais/November2002/article267.shtml">Francais</a> &nbsp;<A href="../../Italiano/November2002/article267.shtml">Italiano</a> &nbsp;<A href="../../Nederlands/November2002/article267.shtml">Nederlands</a> &nbsp;<A href="../../Russian/November2002/article267.shtml">Russian</a> &nbsp;<A href="../../Turkce/November2002/article267.shtml">Turkce</a> &nbsp;</FONT></TD></TR></TABLE><br>
 


<!-- SSI_INFO STOP -->
<!-- 2pdaIgnoreStop -->

<!-- SHORT BIO ABOUT THE AUTHOR -->
<TABLE ALIGN=LEFT BORDER=0  WIDTH="190" summary="about the author">
<TR>
<TD>

<!-- 2pdaIgnoreStart -->
<!-- PALM DOC -->
<TABLE BORDER=0 hspace=4 vspace=4 summary="pda download"> <TR> <TD>
<font size=1> <img src="../../common/images/2doc.gif" width=34 align=left border=0 height=22 alt="convert to palm"><a href="http://cgi.linuxfocus.org/cgi-bin/2ztxt">Convert to GutenPalm</a><br>or <a href="http://cgi.linuxfocus.org/cgi-bin/2pda">to PalmDoc</a></font>
</TD> </TR> </TABLE>
<!-- END PALM DOC -->
<!-- 2pdaIgnoreStop -->
<br>
<img src="../../common/images/KatjaAndGuido.jpg" alt=
    "[Photo of the Authors]" height="150" width="168">
<BR>von  Katja and Guido Socher <br> <small>&lt;katja(at)linuxfocusorg, guido(at)linuxfocus.org&gt;</small>
<BR><BR>
<I>&Uuml;ber die Autoren:</I><BR>
<p>Katja ist die deutsche Editorin von LinuxFocus. Sie mag Tux,
    Film &amp; Fotografie und das Meer. Ihre Homepage befindet sich
    <a href="http://linuxfocus.org/~katja/">hier</a>.</p><p>Guido ist ein langj&auml;hriger Linuxfan und er mag Linux, weil es von
    ehrlichen und offenen Leuten entworfen wurde. Dies ist einer der Gr&uuml;nde,
    warum wir es Open Source nennen. Seine Homepage befindet sich unter <a href=
    "http://linuxfocus.org/~guido/">linuxfocus.org/~guido</a>.</p>
<!-- TRANSLATED TO de -->
<BR><BR><I>&Uuml;bersetzt ins Deutsche von:</I><BR>
Katja Socher <small>&lt;katja(at)linuxfocus.org&gt;</small>
<br>
<!--
 =LF=TRANSTO=de: Katja Socher
-->
<!-- TRANSLATED TO STOP -->
<BR><i>Inhalt</i>:
<UL>
  <LI><A HREF="#267lfindex0">Einf&uuml;hrung</A></LI>
  <LI><A HREF="#267lfindex1">Komm herein zu (X)dialog...</A></LI>
  <LI><A HREF="#267lfindex2">Wie es arbeitet</A></LI>
  <LI><A HREF="#267lfindex3">Echte Applikationen</A></LI>
  <LI><A HREF="#267lfindex4">Weitere Applikationen</A></LI>
  <LI><A HREF="#267lfindex5">Schlu&szlig;bemerkung</A></LI>
  <LI><A HREF="#267lfindex6">Wo bekommt man Xdialog und dialog?</A></LI>
  <LI><A HREF="#267lfindex7">Referenzen</A></LI>
  <LI><A HREF="http://cgi.linuxfocus.org/cgi-bin/lftalkback?anum=267">Talkback f&uuml;r diesen Artikel</A></LI>
</UL>

</TD></TR></TABLE>
<!-- HEAD OF THE ARTICLE -->
<br>&nbsp;
<H2>(X)dialog: Sprechende Shells</H2>
 <img src="../../common/images/article267/shelltalk.jpg" width="200"
height="202" alt="[Illustration]" hspace="10">
<!-- ABSTRACT OF THE ARTICLE -->
<P><i>Zusammenfassung</i>:
<P>

    Xdialog und dialog sind zwei klassische Utilities, um deine Shellskripte mit
    einer grafischen Bnutzerschnittstelle zu bereichern. Du brauchst ein wenig
    Erfahrung in Shellprogrammierung, um den Artikel verstehen zu k&ouml;nnen. Um die
    Grundlagen der Shellprogrammierung zu lernen, kannst du unseren Artikel &uuml;ber
 <a href="../September2001/article216.shtml">
Shell Programmierung</a> lesen.


    
<br><!-- HR divider --><center><font color="#8282e0"><b>_________________ _________________ _________________</b></font></center><br> 
<!-- BODY OF THE ARTICLE -->


    <A NAME="267lfindex0">&nbsp;</A>
<H2>Einf&uuml;hrung</H2>

    Die UNIX Shell ist eine sehr produktive Umgebung f&uuml;r sich genommen und
    arbeitet sehr gut ohne grafische Benutzerschnittstelle.
    <br>
    In ein paar F&auml;llen macht es allerdings Sinn, einen grafischen Dialog mit der
    Benutzerin zu haben. Ein Beispiel w&auml;re z.B. der Installationsdialog eines
    Programms. Man hat eine Reihe von Optionen f&uuml;r die zu installierenden
    Features und man kann das Zielverzeichnis ausw&auml;hlen....

    <A NAME="267lfindex1">&nbsp;</A>
<H2>Komm herein zu (X)dialog...</H2>

    Mit dialog und Xdialog kann man eine grafische Applikation allein durch
    Schreiben eines kurzen Shellscripts entwerfen. Dialog ist ein rein        terminal-basiertes Programm und
	Xdialog ist ein X11 Programm.<br>
    Hier ist ein Beispiel: <br>
    Du kannst die folgenden Zeilen in ein Shellfenster (xterm, konsole,....)
    tippen (oder kopieren/pasten):

<br clear="all">

    <p class="code">bash<br>
    Xdialog --yesno "Do you want to learn more about Xdialog?" 0 0;\<br>
    case $? in<br>
     0)<br>
     echo "Result: Yes chosen.";;<br>
     1)<br>
     echo "Result: No chosen.";;<br>
     255)<br>
     echo "ESC pressed.";;<br>
    esac<br>
    </p>
   Die Box, die erscheint, sieht so aus: <br>

    <center>
      <br>
      <img src="../../common/images/article267/yesno.gif" width=
      "274" height="95" alt="[yes/no Xdialog]">
    </center>
    <br>
    Wenn du  dialog anstelle von Xdialog benutzt (entferne das X in der zweiten
    Zeile im oben gezeigten Skript), dann bekommst du eine auf curses
    basierende Applikation, die innerhalb von xterm l&auml;uft und kein separates
    Fenster &ouml;ffnet. In einigen F&auml;llen ist das eher f&uuml;r ein Shellscript
    angebracht, da es nur innerhalb des Terminalfensters l&auml;uft. Besonders, wenn
    du es remote mit einer Anzahl verschiedener hosts zwischen deinem Computer
    und dem entfernten host laufen
    lassen willst und kein direktes IP Routing verf&uuml;gbar ist. In diesem Fall l&auml;uft dialog, aber du bist nicht in der Lage,
    eine X11 Applikation wie Xdialog zu starten.<br>

    <center>
      <br>
      <img src="../../common/images/article267/yesno_noX.gif"
      width="440" height="340" alt="[yes/no dialog]">
    </center>
    <br>
    Das obige war ein ziemlich nutzloses Beispiel von dialog/Xdialog, aber es zeigt, wie einfach es ist, einen einfachen graphischen Dialog zu programmieren. Es gibt weitere interessante Dialogboxen. Boxen wie calendar (Kalendar), menus (Men&uuml;s),
filemanager, progess bar, text input, message box, password dialog, ...
La&szlig;

    <p class="code"><a href="../../common/src/article267/dialog_help.html">dialog --help</a><br>
    oder<br>
    <a href="../../common/src/article267/Xdialog_help.html">Xdialog --help</a><br>
    </p>
    laufen, um eine Liste der vorhandenen Dialogboxen zu bekommen. Xdialog hat ein paar mehr Boxen als dialog.

    <A NAME="267lfindex2">&nbsp;</A>
<H2>Wie es arbeitet</H2>


    Die Dialogk&auml;sten werden auf der Kommandozeile konfiguriert.
	<p class="code">dialog --yesno "text string" &lt;height&gt;
    &lt;width&gt;</p>

	Nach dem Tippen von dialog oder Xdialog mu&szlig; man den Namen der gew&uuml;nschten Box angeben, gefolgt von ihren spezifischen Parametern.
 <br><br> Die yesno
    Box verlangt 3 Parameter.

    &lt;height&gt; und &lt;width&gt; k&ouml;nnen auf 0 gesetzt werden, wodurch die Geometrie der Box sich automatisch nach der L&auml;nge des Textes richtet. Das Ergebnis wird als exit status an das Skript in der Variablen "$?" zur&uuml;ckgegeben. Wenn mehr zur&uuml;ckgegeben werden mu&szlig;, wie z.B. die Namen von selektierten Optionen, dann wird dies auf Standarderror zur&uuml;ckgegeben. Standarderror wird normalerweise einfach auf den Bildschirm geschrieben, kann aber mit "&gt;2" umgeleitet werden.<br>
    <br>
    Eine sehr einfache, aber wirkungsvolle L&ouml;sung.

    <A NAME="267lfindex3">&nbsp;</A>
<H2>Echte Applikationen</H2>

    Jetzt eine real world Applikation, wo Xdialog/dialog wirklich einen Vorteil &uuml;ber konventionelle Shellscriptprogramme bieten: Ein Men&uuml;, wo man verschiedene Internet Service Provider ausw&auml;hlen und dann anw&auml;hlen kann, um eine Internetverbindung aufzubauen. Dieses Skript erfordert ppp-on/ppp-off Skripte des M&auml;rz 2001 Artikels <a href=
    "../March2001/article192.shtml">Benutzen verschiedener
    ISPs f&uuml;r deine Internetverbindung</a>. Das Skript hei&szlig;t <a
    href=
    "../../common/src/article267/pppdialout.txt">pppdialout</a> und zeigt ein unterschiedliches Men&uuml;, abh&auml;ngig davon, ob man online ist oder nicht.
    <!-- translators: please do _not_ translate this script -->
<pre>
#!/bin/sh
#
#DIALOG=Xdialog
DIALOG=dialog
#
# name of your default isp:
defaultisp=maxnet
#
error()
{
    echo "$1"
    exit 2
}
help()
{
  cat &lt;&lt;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' &gt; /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" ]&amp;&amp;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&gt; $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
</pre>
    <b>Wie das Skript arbeitet:</b><br>
    Zu Beginn definieren wir einige Funktionen, error und help, als n&auml;chstes &uuml;berpr&uuml;fen wir die Kommandozeilenargumente, dann wird ein Name f&uuml;r eine tempor&auml;re Datei definiert (/tmp/pppdialout.$$). $$ ist der Name des laufenden Prozesses und ist eine einzigartige Zahl f&uuml;r jeden Computer. Das trap
statement wird ausgef&uuml;hrt, wenn das Programm unnormal beendet wird (z.B. wenn die Benutzerin  crtl-C dr&uuml;ckt) und l&ouml;scht in unserem Fall das tempfile. Danach &uuml;berpr&uuml;fen wir, ob wir schon online sind oder nicht (Befehl: /sbin/ifconfig | grep '^ppp'). Wenn wir schon online sind, dann &ouml;ffnet sich eine yesno-box, wie du oben bereits eine gesehen hast, und fragt die Benutzerin, ob sie offline gehen m&ouml;chte. Wenn wir nicht online sind, wird eine Men&uuml;box ge&ouml;ffnet. Wir bekommen alle verf&uuml;gbaren ISPs durch Auflisten der Dateien in /etc/ppp/peers (ls
    /etc/ppp/peers). Die Syntax der Men&uuml;box ist:

    <p class="code">dialog --menu "text" &lt;height&gt;
    &lt;width&gt; &lt;menu height&gt; &lt;tag1&gt;
    &lt;description&gt; ...</p>
     &lt;height&gt;, &lt;width&gt; und &lt;menu height&gt; werden wieder auf 0 gesetzt (automatische L&auml;nge, siehe oben) und dann erwartet das Programm Paare von Zeichenketten (&lt;tag1&gt; &lt;description&gt;). Wir haben keine wirkliche Beschreibung, deshalb setzen wir sie auf etwas Bedeutungsloses(== in diesem Fall). Die Datei in der Variablen isplist sieht so aus:

    <p class="code">isp1 == isp2 == isp3 ==</p>
    Das Ergebnis der Benutzerauswahl wird von (X)dialog in Standarderror geschrieben. Der Shellbefehl "2&gt; $tmpfile" schreibt es in unser
    tmpfile. Die Men&uuml;box bietet auch die M&ouml;glichkeit, auf Abbrechen zu dr&uuml;cken. Deshalb m&uuml;ssen wir $? (exit status) &uuml;berpr&uuml;fen, um herauszufinden, welcher Knopf gedr&uuml;ckt wird. <br>
    <br>
    Ok, genug Theorie. Hier ist, wie es aussieht <br><br>

    <center>
      ... als nettesGTK GUI mit Xdialog:<br><br>
      <img src="../../common/images/article267/xdialog_1.gif"
      width="292" height="167" alt="[pppdialout with xdialog]"><br>
      <img src="../../common/images/article267/xdialog_2.gif"
      width="274" height="95" alt="[pppdialout with xdialog]"><br><br>
      ... mit dem curses basierten dialog in einem Terminal:<br><br>
      <img src="../../common/images/article267/dialog_1.gif" width=
      "503" height="353" alt="[pppdialout with dialog]"><br>
      <img src="../../common/images/article267/dialog_2.gif" width=
      "503" height="353" alt="[pppdialout with dialog]"><br>
      <br>
    </center>

    <A NAME="267lfindex4">&nbsp;</A>
<H2>Weitere Applikationen</H2>

    Wir haben noch eine weitere Anwendung f&uuml;r dich. Sie hei&szlig;t mktgz und
    benutzt die checklist Box von Xdialog. Das einfache terminal-basierte
    dialog besitzt keine Checkliste, deshalb l&auml;uft sie nur mit Xdialog. Du kannst mktgz benutzen, um tar.gz Pakete zu bauen.

    <p class="code">mktgz yourpackage .</p>
    Dies zeigt alle Dateien des aktuellen Arbeitsverzeichnisses
    (".") und du kannst ausw&auml;hlen, welche in dein
    yourpackage.tar.gz Paket mit eingeschlossen werden sollen. Du kannst es <a href=
    "../../common/src/article267/mktgz.txt">hier (mktgz.txt)</a> herunterladen.
Wir gehen nicht Zeile f&uuml;r Zeile durch den Code, da du schon genug wissen solltest, um das Skript lesen zu k&ouml;nnen.

  <br>
  <br>
    Xdialog und dialog kommen mit einem Verzeichnis namens "samples", wo du weitere Beispiele finden kannst (Redhat 7.3 speichert sie unter /usr/share/doc/Xdialog-2.0.5/samples).
	Sei aber vorsichtig, da einige von ihnen wirklich etwas tun und nicht blo&szlig; reine Demoapplikationen sind.
    <A NAME="267lfindex5">&nbsp;</A>
<H2>Schlu&szlig;bemerkung</H2>



   Xdialog und dialog bieten eine Reihe verschiedener Dialogboxen. Nicht alle von ihnen sind immer f&uuml;r alle Typen von Shellscripten angebracht. Die Shell selbst ist auch eine sehr "m&auml;chtige" Umgebung. Vervollst&auml;ndigen eines Pfades mit der tab-Taste kann sehr viel schneller sein, als das Durchsuchen verschiedener Verzeichnisse in einem GUI und sie dann durch Dr&uuml;cken auszuw&auml;hlen.
	Besonders die M&ouml;glichkeit des Pipelinens und Verbindens von Befehlen macht die Shell zu einem sehr m&auml;chtigen Werkzeug. Etwas wie:

<pre>grep -i "somestring" file.txt | sort | uniq | wc -l
</pre>
    <small>(f&uuml;r diejenigen, die nicht so erfahren sind mit Unixshells: Dies z&auml;hlt alle unterschiedlichen Zeilen in file.txt, die die Zeichenkette
    "somestring" enthalten). </small><br>
    Solche Pipelinekonstrukte sind m&ouml;glich, weil alle Befehle von Kommandozeilenargumenten gesteuert werden. In anderen Worten: sie halten nicht an und fragen die Benutzerin, wie sie weitermachen m&ouml;chte. <br>

	Es gibt jedoch Applikationen, wo grafische Dialoge sehr n&uuml;tzlich sind. Xdialog und dialog sind sehr einfach zu benutzen, aber nat&uuml;rlich nicht so m&auml;chtig wie eine echte grafische Anwendung. Sie schlie&szlig;en die L&uuml;cke zwischen einem reinen ASCII
    Shellscript und einer vollst&auml;ndigen grafischen Anwendung. <br>


    <A NAME="267lfindex6">&nbsp;</A>
<H2>Wo bekommt man Xdialog und dialog?</H2>

    Die CDs deiner Linuxdistribution sind der erste Platz, um nach dialog und Xdialog zu suchen. Es k&ouml;nnte sein, da&szlig; sie schon auf deinem Computer installiert sind (frag deinen Computer z.B. rpm -qil Xdialog, dpkg -L Xdialog).
	Die Homepage von Xdialog ist:<br>
    <a href=
    "http://www.chez.com/godefroy/">http://www.chez.com/godefroy/</a><br>

    und dialog ist unter <br>
    <a href=
    "http://hightek.org/dialog/">http://hightek.org/dialog/</a><br>
    Du kannst dialog/Xdialog auch von dort herunterladen.

    <A NAME="267lfindex7">&nbsp;</A>
<H2>Referenzen</H2>


    <ul>
      <li>Xdialog: <a href=
      "http://www.chez.com/godefroy/">http://www.chez.com/godefroy/</a><br>

      dialog: <a href=
      "http://hightek.org/dialog/">http://hightek.org/dialog/</a><br>

      </li>

      <li>Xdialog Dokumentation: <a href=
      "http://www.chez.com/godefroy/doc/index.html">http://www.chez.com/godefroy/doc/index.html</a><br>

      </li>

      <li> Andere LinuxFocus Artikel:<br>
<ul>
      <li><a href="../March2001/article192.shtml">
      Benutzen verschiedener ISPs f&uuml;r deinen Internetzugang</a><br></li>

      <li><a href="../September2001/article216.shtml">
      Shellprogrammierung</a><br></li>
</ul>
</li>

      <li><a href=
      "../../common/src/article267/pppdialout.txt">pppdialout
      script</a></li>

      <li><a href="../../common/src/article267/mktgz.txt">mktgz
      script</a></li>

    </ul>
    <!-- vim: set sw=2 ts=2 et tw=74: -->
  



<!-- 2pdaIgnoreStart -->
<A NAME="talkback">&nbsp;</a>
<h2>Talkback f&uuml;r diesen Artikel</h2>
Jeder Artikel hat seine eigene Seite f&uuml;r Kommentare und R&uuml;ckmeldungen. Auf dieser Seite kann jeder eigene Kommentare abgeben und die Kommentare anderer Leser sehen:
<center>
<table border="0"  CELLSPACING="2" CELLPADDING="1" summary="tb-button-outerpart">
 <tr BGCOLOR="#C2C2C2"><td align=center>
  <table border="3"  CELLSPACING="2" CELLPADDING="1" summary="tb-button">
   <tr BGCOLOR="#C2C2C2"><td align=center>
    <A href="http://cgi.linuxfocus.org/cgi-bin/lftalkback?anum=267"><b>&nbsp;Talkback Seite&nbsp;</b></a>
   </td></tr></table>
</td></tr></table>
</center>

<HR size="2" noshade>
<!-- ARTICLE FOOT -->
<CENTER><TABLE WIDTH="98%" summary="footer">
<TR><TD ALIGN=CENTER BGCOLOR="#9999AA" WIDTH="50%">
<A HREF="../../common/lfteam.html">Der LinuxFocus Redaktion schreiben</A>
<BR><FONT COLOR="#FFFFFF">&copy; Katja and Guido Socher, <a href="../../common/copy.html">FDL</a> <BR><a href="http://www.linuxfocus.org">LinuxFocus.org</a></FONT>
</TD>
<TD BGCOLOR="#9999AA">
<!-- TRANSLATION INFO -->
<font size=2>Autoren und &Uuml;bersetzer:</font>
<TABLE summary="translators">
  <tr><td><font size="2">en --&gt; -- : Katja and Guido Socher <small>&lt;katja(at)linuxfocusorg, guido(at)linuxfocus.org&gt;</small></font></td></tr>
  <tr><td><font size="2">en --&gt; de: Katja Socher &lt;katja(at)linuxfocus.org&gt;</font></td></tr>
</TABLE>
</TD>
</TR></TABLE></CENTER>
<p><font size=1>2002-10-31, generated by lfparser version 2.33</font></p>
<!-- 2pdaIgnoreStop -->
</BODY>
</HTML>