Home / LinuxUser / 2001 / 11 / out of the box

Newsletter abonnieren

Lies uns auf...

Folge LinuxCommunity auf Twitter

Top-Beiträge

Mandriva gibt Distribution in die Hände der Community
(268 Punkte bei 24 Stimmen)
Neues vom Systemd
(161 Punkte bei 4 Stimmen)
Mandriva in Nöten
(161 Punkte bei 4 Stimmen)

Heftarchiv

LinuxUser Heftarchiv

EasyLinux Heftarchiv

Ubuntu User Heftarchiv

Ubuntu User Heftarchiv

Partner-Links:

Shopping
Topsuche
 
Yatego Deutschlands größte Shoppingmall. 10000 Shops,
3.5 Mio Artikel. Alle Bestseller, Servertechnik und Technik Themenwelten.

Notebooks und Netzwerkhardware bei Mercateo günstig kaufen.
Internet Telefonie mit VoIP Telefonen von Gigaset
Das B2B Portal www.Linx.de informiert über Produkte und Dienstleistungen.
Günstige Digitalkameras finden Sie im Preisvergleich.

Frage und Antwort

out of the box

Was darf's denn sein?

Eine relativ neue Option in dialog ist --file. Damit steht eine komfortable Dateiauswahl zur Verfügung. Das Shell-Skript in Listing 2 zeigt ein Anwendungsbeispiel, das jedoch nur mit einem neuen dialog, nicht mit der auf aktuellen Distributionen installierten Version 0.62 oder älter lauffähig ist.

Es zeigt einen Dateiauswahldialog, mit dem man ausgehend vom eigenen Home-Verzeichnis durchs Dateisystem brausen kann. Schließt man den Dialog durch Auswahl des OK-Buttons, erhält man Zeichen- und Zeilenzahl der letztgewählten Datei angezeigt.

Listing 2

Dateiauswahl mit Dialog

#!/bin/sh
 dialog --backtitle "Textdatei öffnen" \
   --title "Dateiauswahl" --clear \
   --file $HOME 15 62 0 2>/tmp/dialog.file
 file=$(cat /tmp/dialog.file)
 rm /tmp/dialog.file
 if [ ! -z $file ] ; then
   echo $file enthält $(wc -l < $file) Zeilen und \
     $(wc -c < $file) Zeichen.
 fi

Der Option --file folgt das Startverzeichnis für die Dateiauswahl (in diesem Fall das Home-Verzeichnis des aktuellen Benutzers, das in der Umgebungsvariablen HOME gespeichert ist). Die nächsten beiden Werte bestimmen die Höhe (15) und Breite (62) der Box. Der nachfolgende Wert gibt den Modus für die Box an, mögliche Modi führt Tabelle 1 auf. Die Auswahl einer existierenden Datei (Modus 0) ist in Abbildung 4 dargestellt.

Ähnlich wie im vorigen Beispiel wird der Rückgabewert zunächst in eine temporäre Datei gespeichert und in die Variable file eingelesen. Ist diese Variable nicht leer (wird mit ! -z geprüft), so gibt das Skript unter Verwendung des Kommandos wc die Zeilen- und Zeichenzahl der gewählten Datei aus.

Abbildung 4: Dateiauswahl

Tabelle 1: Modi für --file

Modus

Bedeutung

0 Auswahl einer existierenden Datei
1 Auswahl eines existierenden Verzeichnisses
2 Eingabe eines existierenden oder nicht existierenden Verzeichnisses
3 Eingabe einer existierenden oder nicht existierenden Datei

RTFM

dialog lässt sich auch als einfacher Pager zum Lesen von Textdateien gebrauchen. Hierzu verwenden Sie die Option --textbox. Um beispielsweise die Datei /etc/services zu lesen, geben Sie in der Shell dialog --title /etc/services --textbox /etc/services 18 70 ein. Zur Navigation im Text stehen die Cursor-Tasten, [Bild hoch],[Bild runter] und die Leertaste zur Verfügung. Mit [/] und [?] können Sie vorwärts bzw. rückwärts suchen.

Hinweise zu weiteren nützlichen dialog-Optionen wie Checklisten oder Eingabefeldern finden sich in der Manpage, die Sie mit man dialog aufrufen.

Kasten 1: Shell-Skripting

Für alle, die bisher noch nicht mit Shell-Skripten zu tun hatten, ein paar Erklärungen zu den Listings in diesem Artikel. Shell-Skripte sind Textdateien mit Folgen von Kommandos, die von der Shell nach dem Aufruf der Datei nacheinander abgearbeitet werden. Sie können die Abarbeitung auch an Bedingungen knüpfen (if-Kommando) oder Teile des Skripts wiederholen lassen (while- und for-Kommandos).

Zum Zwischenspeichern von Werten sind Variablen nützlich, die einfach dadurch entstehen, dass man einen Namen hinschreibt und ihm hinter einem Gleichheitszeichen einen Wert zuweist. An den Inhalt einer Variablen kommt man heran, indem man dem Variablennamen ein $ voranstellt.

Bei if-Konstrukten wird die eigentliche Bedingung oft mit dem Kommando test formuliert, das sich auch abgekürzt [ schreiben lässt. Einfache Vergleiche sind mit = möglich, aber auch Datei- und Zeichenkettenprüfungen werden durch Optionen zur Verfügung gestellt. So testet [ -f foo ], ob foo eine reguläre Datei ist; [ -z $bar ] prüft, ob der Inhalt der Variablen bar leer ist, und [ $a -gt $b ] sieht nach, ob der Inhalt von a (als Zahl interpretiert) größer als ("greater than") der von b ist.

Eine if-Abfrage muss für die Shell immer mit einem fi abgeschlossen werden. Dazwischen darf auch ein else-Zweig stehen, in dem alternative Bearbeitungsmöglichkeiten angegeben werden, die dann zum Zug kommen, wenn die if-Bedingung nicht erfüllt ist.

Die Schreibweise bla=$(kommando) führt zuerst das Kommando in der Klammer aus und setzt dessen Ausgabe dann an dieser Stelle in die restliche Kommandozeile ein, so dass die Ausgabe der Variablen bla zugewiesen wird. Dieser Mechanismus wird Kommandosubstitution genannt.

Um überlange Zeilen in Shell-Skripten lesbarer zu machen, können Sie vor das Zeilenende einen Backslash (\) schreiben. Damit weiß die Shell, dass die nächste Zeile als Fortsetzung der aktuellen anzusehen ist.

Sollen auf einer Zeile hingegen mehrere Kommandos abgesetzt werden, muss man sie mit Semikola voneinander trennen. Dies ist zum Beispiel nach einem if-Test der Fall. Stünde das darauf folgende Schlüsselwort then auf einer eigenen Zeile, wäre kein Semikolon nötig.

Außer der Standardausgabe und dem Standardfehlerausgabe, die normalerweise auf dem Bildschirm landen und mit > bzw. 2> in eine Datei umgeleitet werden können, kennt die Shell auch noch den Standardeingabekanal. Dieser ist normalerweise mit der Tastatur verknüpft, aber ein

Kommando
 < Datei

sorgt dafür, dass das Kommando die Daten bearbeitet, die in Datei stehen. Auf diese Art und Weise erhält das Kommando wc in Listing 2 die zu zählenden Zeilen und Zeichen aus dem in der Variablen file abgelegten Inhalt. (Christian Perle/Patricia Jung)

Glossar

Kernel

Der Betriebssystemkern bildet die Schnittstelle zwischen Hardware und laufenden Prozessen. Außerdem stellt er Multitasking und Speichermanagement zur Verfügung. Das eigentliche Linux ist nur der Kernel.

URL

"Uniform Resource Locator", die eindeutige Adresse einer Ressource im Netz. In der URL ist auch das Übertragungsprotokoll angegeben, z. B. http://www.linux.de/links/Distributionen/ oder ftp://ftp.gwdg.de/linux/mirrors/.

rpm

Mit dem "Red Hat Packet Manager" (den u. a. auch SuSE einsetzt) können Softwarepakete sauber installiert und deinstalliert werden. Das zugehörige Paketformat heißt ebenfalls RPM.

deb

Das Paketformat der Debian-Distribution. Mit dem Paketmanager dpkg oder dem komfortableren Frontend apt lassen sich solche Pakete bequem installieren und deinstallieren.

Shell

Einer der wichtigsten Bestandteile jedes Unix-Systems – die kommandozeilengesteuerte Benutzerschnittstelle.

$

Um den Inhalt einer Shell-Variablen herauszufinden, stellt man den Operator $ vor den Variablennamen.

RTFM

"Read The Fine Manual", der dezente Hinweis darauf, dass eine Dokumentation zum Durchlesen da ist.

Pager

Programm zum seitenweisen Anzeigen einer Datei. Verbreitete Pager sind more und less.

Einem Freund empfehlen    Druckansicht Bookmark and Share
Kommentare

Hits
Wertung: 0 Punkte (0 Stimmen)

Schlecht Gut

Infos zur Publikation

Infos zur Publikation

LinuxUser 06/2012

Aktuelle Ausgabe kaufen:

Heft bestellen Heft als PDF kaufen

LinuxUser erscheint monatlich und kostet in der Nomedia-Ausgabe EUR 5,50 und mit DVD EUR 8,50. Weitere Informationen zum Heft finden Sie auf der LinuxUser-Homepage.

Im LinuxUser-Probeabo erhalten Sie drei Ausgaben für 3 Euro. Das Jahresabo (ab EUR 56,10) können Sie im LNM-Shop bestellen.

Tipp der Woche

Adobe AIR
Adobe-AIR-Programme installieren und (manuell) starten
Tim Schürmann, 14.05.2012 13:09, 0 Kommentare

Es gibt sie noch: neue Anwendungen, die Adobes Integrated Runtime voraussetzen. Aktuellstes und vermutlich auch größtes Beispiel ist das Adventure Botanicula

Aktuelle Fragen

gibt es ein Kommandozeilen Tool, um ein X11-Fenster in ein Anderes einzubetten?
GoaSkin , 21.05.2012 16:44, 0 Antworten
Das XEmbed-Protokoll ist u.A. dazu gedacht, dass man eine X11-Anwendung in eine andere wie ein Wi...
Apache2, Options -Indexes geht nicht
no no, 12.05.2012 19:01, 8 Antworten
Habe in apache2.conf folgendes stehen: Options -Indexes ...
LInux auf Dell LS H500
Andreas Endresl, 09.05.2012 08:54, 2 Antworten
Habe einen alten Dell Latitude LS H500 nur mit ext. Floppy und CD es geht nur immer eines von den...
Datenwiederherstellung unter Ubuntu 12.04 mit "Simple Backup" nach Umzug von Linux Mint
Christian Lottmann, 07.05.2012 13:33, 0 Antworten
Vor dem Umzug auf Ubuntu 12.04 habe ich unter Linux MInt mit "Simple Backup" voll (15.4.2012) und...
DKMS für den propritären NVIDIA-Treiber
Commander Data, 26.04.2012 22:02, 2 Antworten
Hallo an die Gemeinde. Ich habe hier ein interessantes Stück openSuSE gefunden. http://forums.op...