GNU file utilities

ArticleCategory

UNIX Basics

AuthorImage:[]

[Foto del Autor]

TranslationInfo:[]

original in es Manuel Muriel Cordero

en to de Katja Socher

AboutTheAuthor:[]

Manuel Muriel Cordero studiert an der Statistik- und Informatikfakultät der Universität von Sevilla.

Abstract:[]

Der vorhergehende Artikel in dieser Serie (Grndlegende UNIX Befehle) vermittelte einen allgemeinen Überblick über Linux. Es war eine Einführung in die Linuxelemente, um Grundfähigkeiten zu erlangen und das Betriebssystem zu verwalten, aber der Benutzer möchte vielleicht die normale Menge von Unixbefehlen erlernen. Durch Benutzen dieser Befehle und der Shell kann man ein sehr effizientes Datei- und Systemmanagement erreichen. Dieser Artikel handelt von diesen fortgeschrittenen, obwohl grundlegenden, Befehlen.

ArticleIllustration:[]

[Ilustracion]

ArticleBody:[]

Einleitung: der Unixweg zu arbeiten

Vor der Beschreibung der Befehle sollte der Leser einige Fakten über ihre Geschichte kennen. Kem Thompsom und Dennis Ritchie wollten, als sie zu Beginn der 70er Unix entwickelten, ein Betriebssystem entwickeln, um das Leben der Programmierer zu erleichtern. Sie entschieden, daß es der beste Weg wäre, um dieses Ziel zu erreichen, eine kleine Anzahl einfacher Werkzeuge zu definieren, die extrem gut in einigen spezialisierten Aufgaben sind. Kompliziertere Aufgaben könnten durch das Verbinden dieser Werkzeuge ausgeführt werden, durch Benutzen der Ausgabe des einen für die Eingabe des anderen.

Die Idee, Informationen auszutauschen , wird über den Standard Input und Output (Bildschirm und Tastatur) realisiert. Aufgrund der Existenz von Pipes und Umleitungen (gesehen im vorhergehenden Artikel) ist es möglich, Befehle miteinander zu verbinden.

Es läßt sich mit einem Beispiel sehr leicht demonstrieren. Ein Benutzer schreibt:

$ who | grep pepe

who und grep sind zwei getrennte Programme, zusammengefügt durch die pipe "|" . who zeigt eine Liste mit allen im Moment eingeloggten Benutzern auf dem Computer. Eine typische Ausgabe könnte etwa so aussehen:

$ who
manolo	tty1	Dec 22	13:15
pepe	ps/2	Dec 22	14:36
root	tty2	Dec 22	10:03
pepe	ps/2	Dec 22	14:37

Die Ausgabe setzt sich aus 4 Feldern, die durch Tabulatoren voneinander getrennt sind, zusammen. Die Felder sind der Benutzername (login), das Loginterminal, das Datum und die Zeit der Verbindung.

"grep pepe" sucht nach Zeilen, die die Zeichenkette "pepe" enthalten.

Und die Ausgabe lautet:

$ who | grep pepe
pepe	ps/2	Dec 22	14:36
pepe	ps/2	Dec 22	14:37

Vielleicht möchtest du etwas einfacheres, als zu wissen, ob jemand eingeloggt ist, oder nicht. Du kannst die Anzahl der in dem Moment benutzten Terminals durch Benutzen des Programms wc überprüfen.

wc ist ein Zeichen-, Wort- und Zeilenzähler. In diesem Fall möchten wir nur die Anzahl der Zeilen wissen und benutzen die Option -l

$ who | wc -l
	4
$ who | grep pepe | wc -l
	2

4 Leute sind insgesamt eingeloggt und pepe ist an 2 Termianls eingeloggt

Wenn wir jetzt prüfen, ob antonio eingeloggt ist

$ who | grep antonio | wc -l
	0

antonio ist nicht eingelogg

Der Anfang der GNU-utils

Richard Stallman, der Gründer des GNU Projekts, brachte die Diskussion über die Steuerung und Kontrolle der wenigen großen Softwarekonzerne auf, die verhinderten, daß die Informatik natürlich wuchs. Nach der Entwicklung des Emacs Editors am MIT mißfiel ihm die Tatsache sehr, daß große kommerzielle Firmen seine Arbeit nahmen und proprietäre Versionen daraus machten. Mit dieser Situation konfrontiert entschied er, ein Projekt zu starten, bei dem der Quellcode der Software für jedermann verfügbar ist. Das war GNU. Das langfristige Ziel war es, ein ganzes Open-Source Betriebssystem zu schreiben. Die ersten Schritte waren eine neue Open Source Version von Emacs und ein C compiler (gcc) sowie einige typische Werkzeuge für Unixsysteme. Diese Werkzeuge werden in diesem Artikel diskutiert.

grep

Unser erstes Beispiel zeigte die Hauptfunktionalität von grep. Jetzt wollen wir es detaillierter erläutern

Der grundlegende Gebrauch von grep ist

$ grep [-options] pattern files

Und die am häufigsten benutzen Optionen sind
-n druckt die Zeilennummer vor die als passend gefundenen Zeilen (nützlich bei der Suche in großen Dateien und um genau zu wissen, wo der Treffer sich befindet)
-c zeigt die Anzahl der gefundenen Treffer an
-v sucht nach nicht-übereinstimmenden Zeilen (sucht nach Zeilen, wo es das Muster nicht gibt)

Das Muster ist eine Gruppe von Zeichen, nach der gesucht werden soll. Wenn sich darin ein Leerzeichen befindet, dann muß das Muster mit doppelten Anführungsstrichen (") versehen werden, um eine Verwechslung zwischen Mustern und den Dateien, in denen gesucht werden soll, zu verhindern. Zum Beispiel

$ grep "Hola mundo" file.txt

Wenn wir nach Zeichenketten suchen, die Wildcards, Apostrophe, Anführungszeichen oder Schrägstriche enthalten, müssen sie escaped (ein backslash "\" muß vorgestellt werden) oder in Anführungsstriche gesetzt werden, um eine Substitution durch die Shell zu vermeiden.

$ grep \*\"\'\?\< file.txt
Dies findet:
Esto es una cadena chunga -> *"'?<

Reguläre Ausdrücke

grep und andere GNU utils sind in der Lage, fortgeschrittenere Suchen durchzuführen. Dies ist mit regulären Ausdrücken möglich. Sie sind shell wildcards ähnlich in dem Sinne, daß sie Zeichen oder Gruppen von Zeichen ersetzen. Am Ende des Artikels unter den Quellen findest du einen Link zu einem separaten Artikel, der reguläre Ausdrücke detailliert erklärt.
Einige Beispiele:

$ grep c.n
sucht nach einem Auftreten einer Zeichenkette mit c, gefolgt von irgendeinem Zeichen und t.

$ grep "[Bc]el"
sucht nach jedem Auftreten von Bel und cel.

$ grep "[m-o]ata"
findet diejenigen Zeilen, die mata, nata oder oata enthalten.

$ grep "[^m-o]ata"
Zeilen mit einer Zeichenkette, die auf ata endet und kein m,n oder o als ersten Buchstaben enthält.

$ grep "^Martin come"
Jede Zeile, die mit 'Martin come' beginnt. Da ^ ohne Klammern steht, ist der Anfang der Zeile gemeint, nicht eine Verneinung der Gruppe wie im vorhergehenden Beispiel.

$ grep "durmiendo$"
Alle Zeilen, die auf die Zeichenkette 'durmiendo' enden. $ steht für das Ende der Zeile.

$ grep "^Caja San Fernando gana la liga$"
Diejenigen Zeilen, die genau mit der Zeichenkette übereinstimmen.

Um die spezielle Bedeutung eines dieser Zeichen zu vermeiden, müssen Schrägstriche nach hinten (Backslash) gesetzt werden. Zum Beispiel:

$ grep "E\.T\."
sucht nach der Zeichenkette 'E.T.'.

Find

Dieser Befehl wird benutzt, um Dateien zu finden. Ein anderer Linuxfocusartikel erklärt diesen Befehl, so daß wir am besten einfach auf ihn verweisen.

cut & paste

Innerhalb von Unix werden Informationen normalerweise in ASCII Dateien Zeilenweise gespeichert und Felder mit einigen speziellen Zeichen, gewöhnlich einem Tabulationszeichen oder einem Semikolon (:), begrenzt. Ein typischer Anwendungsfall ist, einige Felder aus einer Datei zu nehmen und sie mit einer anderen zu verbinden. cut und paste können diese Arbeit machen.

Laßt uns als ein Beispiel die Datei /etc/passwd mit Benutzerinformationen nehmen. Sie enthält 7 Felder, begrenzt durch ":". Die Felder enthalten Informationen über den Loginnamen, das verschlüsselte Paßwort, die Benutzer ID, group ID, geco ( Vorname und Name ), das Home Directory für den Benutzer und seine bevorzugte Shell.

Hier ist ein typisches Stück aus dieser Datei:

root:x:0:0:root:/root:/bin/bash
murie:x:500:500:Manuel Muriel Cordero:/home/murie:/bin/bash
practica:x:501:501:Usuario de practicas para Ksh:/home/practica:/bin/ksh
wizardi:x:502:502:Wizard para nethack:/home/wizard:/bin/bash

Wenn wir die Benutzer und ihre Shells zusammenbringen wollen, müssen wir die Felder 1 und 7 ausschneiden. Laß es uns machen:

$ cut -f1,7 -d: /etc/passwd
root:/bin/bash
murie:/bin/bash
practica:/bin/ksh
wizard:/bin/bash
Die Option -f spezifiziert die Felder, die herausgeschnitten werden sollen und -d definiert den Feldseparator (per default, ohne -d, ist das das Tabulationszeichen).

Und es ist möglich, eine Reihe von Feldern auszuwählen:

$ cut -f5-7 -d: /etc/passwd
root:/root:/bin/bash
Manuel Muriel Cordero:/home/murie:/bin/bash
Usuario de practicas para Ksh:/home/practica:/bin/ksh
Wizard para nethack:/home/wizard:/bin/bash

Wenn wir die Ausgabe mit '>' zu zwei verschiedenen Dateien umgeleitet haben und wir beide Ausgaben verbinden wollen, können wir den Befehl paste benutzen:

$ paste output1 output2
root:/bin/bash:root:/root:/bin/bash
murie:/bin/bash:Manuel Muriel Cordero:/home/murie:/bin/bash
practica:/bin/ksh:Usuario de practicas para Ksk:/home/practica:/bin/ksh
wizard:/bin/bash:Wizard para nethack:/home/wizard:/bin/bash

sort

Laßt uns annehmen, daß wir /etc/passwd unter Benutzung des geco Feldes sortieren wollen. Um dies zu erreichen, benutzen wir sort, das Unixsortierwerkzeug.

$ sort -t: +4 /etc/passwd
murie:x:500:500:Manuel Muriel Cordero:/home/murie:/bin/bash
practica:x:501:501:Usuario de practicas para Ksh:/home/practica:/bin/ksh
wizard:x:502:502:Wizard para nethack:/home/wizard:/bin/bash
root:x:0:0:root:/root:/bin/bash

Es ist sehr leicht zu erkennen, daß die Datei sortiert wurde, wobei aber die ASCII Tabellenordung benutzt wurde. Wenn wir nicht zwischen Groß- und Kleinschreinung unterscheiden wollen, können wir folgendes schreiben:

$ sort -t: +4f  /etc/passwd
murie:x:500:500:Manuel Muriel Cordero:/home/murie:/bin/bash
root:x:0:0:root:/root:/bin/bash
practica:x:501:501:Usuario de practicas para Ksh:/home/practica:/bin/ksh
wizard:x:502:502:Wizard para nethack:/home/wizard:/bin/bash

-t ist die Option, um einen field separator auszuwählen. +4 steht für die Anzahl der Felder, die übersprungen werden sollen, bevor die Zeilen sortiert werden und f bedeutet Sortieren ohne Berücksichtigung von Groß- und Kleinbuchstaben.

Eine viel kompliziertere Sortierung kann durchgeführt werden. Zum Beispiel können wir sortieren und dabei in einem ersten Schritt die Shell benutzen und danach das Sortieren mit geco fortsetzen:

$ sort -t: +6r +4f /etc/passwd
practica:x:501:501:Usuario de practicas para Ksh:/home/practica:/bin/ksh
murie:x:500:500:Manuel Muriel Cordero:/home/murie:/bin/bash
root:x:0:0:root:/root:/bin/bash
wizard:x:502:502:Wizard para nethack:/home/wizard:/bin/bash

Du hast eine Datei mit einigen Leuten, denen du Geld geliehen hast und den Betrag des Geldes, den du ihnen gegeben hast. Nimm ´deudas.txt´ als ein Beispiel:

Son Goku:23450
Son Gohan:4570
Picolo:356700
Ranma 1/2:700

Wenn du wissen willst, wen du zuerst besuchen wirst, brauchst du eine sortierte Liste.
Tipp einfach

$ sort +1 deudas
Ranma 1/2:700
Son Gohan:4570
Son Goku:23450
Picolo:356700

was nicht das gewünschte Ergebnis liefert, weil die Anzahl der Felder nicht dieselbe ist wie in der Datei. Die Lösung ist die ´n´ Option:
$ sort +1n deudas
Picolo:356700
Son Goku:23450
Son Gohan:4570
Ranma 1/2:700

Grundlegende Optionen für sort sind
+n.m springt über die ersten n Felder und die nächsten m Zeichen bevor es anfängt, zu sortieren
-n.m beendet das Sortieren, wenn es bei dem m-ten Zeichen des n-ten Feldes angekommen ist

Das folgende sind Änderungsparameter:
-b springt über führende Leerzeichen
-d Verzeichnissuche (nur Benutzung von Buchstaben, Zahlen und Leerzeichen)
-f ignoriert Groß- und Kleinschreibung
-n sortiert numerisch
-r dreht die Ordnung um

wc

Wie wir zuvor gesehen haben, ist wc ein Zeichen-, Wort- oder Zeilenzähler. Die Defaultausgabe enthält die Anzahl der Zeilen, Worte und Zeichen der Eingabedatei(en).

Der Ausgabetyp ist mit den folgenden Optionen modifizierbar

-l nur Zeilen
-w zeigt nur die Wortanzahl
-c gibt nur die Anzahl der Zeichen aus

Vergleichswerkzeuge : cmp, comm, diff

Manchmal müssen wir die Unterschiede zwischen 2 Versionen derselben Datei kennen. Dies wird besonders beim Programmieren benutzt, wenn verschiedene Leute an demselben Projekt arbeiten und daher Quellcode verändern. Um die Änderungen von einer Version zur anderen zu finden, sind diese Werkzeuge das richtige.

cmp ist der grundlegendste von ihnen. Er vergleicht 2 Dateien und findet den Platz, wo der erste Unterschied auftritt (Zeichenanzahl und Zeile des Unterschieds)

$ cmp old new
old new differ: char 11234, line 333

comm ist ein bißchen weiter fortgeschritten. Seine Ausgabe besteht aus drei Spalten. Die erste besteht aus den einmal vorkommenden Zeilen der ersten Datei, die zweite aus den nur einmal vorkommenden Zeilen der zweiten Datei und die dritte enthält die in beiden Dateien vorhandenen Zeilen. Numerische Parameter erlauben das Entfernen einiger dieser Spalten. -1, -2 und -3 sagen comm, die erste, zweite oder dritte Spalte nicht anzuzeigen. Dieses Beispiel zeigt die Zeilen, die nur in der ersten Datei vorkommen sowie die Zeile, die gleich sind:

$ comm -2 old new

Zuletzt ist da diff. Es ist ein wichtiges Werkzeug für fortgeschrittene Programmierprojekte. Wenn du schon mal einen Kernel zum Kompilieren heruntergeladen hast, weißt du, daß du den Quellcode des neuen herunterladen kannst oder den Patch für die vorherige Version, der viel kleiner ist. Dieser Patch wirde mit diff erzeugt. Dieses Werkzeug kann Editorbefehle benutzen (vi, rcs), um die Dateien identisch zu machen. Dies gilt auch für Verzeichnisse und die Archive, die sie enthalten. Der Anwendungsfall ist ganz offentsichtlich: du lädst weniger Quellcode herunter (nur die Änderungen), du hängst den Patch an und kompilierst. Ohne Parameter spezifiziert die Ausgabe in diesen Formaten wie Änderungen zu machen sind auf die Weise, daß das erste gleich zum 2. wird, mit vi Befehlen .

$ diff old new
3c3
< The Hobbit
---
> The Lord of the Rings
78a79,87
>Three Rings for the Elven-kings under the sky,
>Seven for the Dwarf-lords in their halls of stone,
>Nine for Mortal Men doomed to die,
>One for the Dark Lord on his dark throne
>In the Land of Mordor where the Shadows lie.
>One Ring to rule them all, One Ring to find them,
>One Ring to bring them all and in the darkness bind them
>In the Land of Mordor where the Shadows lie.

3c3 bedeutet in Zeile 3, drei Zeilen müssen geändert werden, wobei "The Hobbit" entfernt und durch "The Lord of the Rings" ersetzt wird. 78a79,87 bedeutet, daß du neue Zeilen von Zeile 79 bis 87 einfügen mußt.

uniq

uniq ist ein Redundanzsäuberer. Wenn wir zum Beispiel wissen wollen, welche Leute gerade mit ihren Computern verbunden sind, müssen wir die Befehle who und cut benutzen.

$ who | cut -f1 -d' '
root
murie
murie
practica

Aber die Ausgabe ist nicht gut. Wir müssen den 2.Eintrag für den Benutzer murie löschen. Und das heißt

$ who | cut -f1 -d' ' | sort | uniq
murie
practica
root

Die Zeichenoption -d' ' bedeutet, daß der fields separator ein Leerzeichen ist, weil die Ausgabe von who dieses Zeichen anstelle des Tabulatorzeichens benutzt .

uniq vergleicht nur aufeinanderfolgende Zeilen. In unserem Fall erschienen die 2 "murie" hintereinander, aber es hätte in anderer Reihenfolge sein können. Es ist deshalb eine gute Idee, die Ausgabe zu sortieren, bevor der Befehl uniq angewendet wird.

sed

sed ist einer der besondersten Unixwerkzeuge. Es steht für stream editor. Normalerweise werden beim Editieren interaktiv die Änderungen, die der Benutzer möchte, akzeptiert. sed erlaubt es uns, kleine shell-Skripte, ähnlich zu Batchdateien in MS-Dos zu erzeugen. Es gibt uns die Fähigkeit, den Inhalt einer Datei ohne Benutzerinteraktion zu ändern. Die Fähigkeiten des Editors sind sehr vollständig und tiefer in das Thema einzusteigen würde den Artikel zu lang werden lassen. Deshalb gibt es nur eine kurze Einführung und dem interessierten Benutzer bleiben die man und info Seiten.

sed wird normalerweise so aufgerufen:

$ sed 'command' files

Nimm als Beispiel eine Datei, wo wir jedes Auftauchen von "Manolo" mit "Fernando" ersetzen wollen. Laß es uns machen:

$ sed 's/Manolo/Fernando/g' file

Und es gibt durch die Standardausgabe die modifizierte Datei zurück. Wenn du das Ergebnis behalten willst, leite es einfach mit ">" um.

Viele Benutzer werden da den gewöhnlichen suche & ersetze vi Befehl erkennen. Tatsächlich sind viele ":" Befehle (solche, die ex aufrufen) Befehle von sed.

Normalerweise sind sed Anweisungen aus ein oder zwei Adressen (zum Auswählen der Zeilen) und dem Befehl zum Ausführen zusammengesetzt. Die Adresse könnte eine Zeile sein, eine Reihe von Zeilen oder ein Muster.
Die am meisten benutzten Befehle sind:

Befehl	  Aktion
-------   ------
a\         fügt die Zeile hinter der adressierten Zeile in die Eingabe hinzu
c\         ändert die adressierten Zeilen, schreibt in die Zeile
d          löscht die Zeile(n)
g          macht globale Substitutionen der Muster anstatt nur das erste
           Auftreten zu ersetzen
i\         fügt Zeilen nach den adressierten Zeilen hinzu
p          druckt die aktuelle Zeile, benutzt sogar die -n Option
q          beendet(quit), wenn es die adressierte Zeile erreicht 
r file     liest die Datei, hängt den Inhalt an die Ausgabe an
s/one/two  ersetzt die Zeichenkette "one" mit der Zeichenkette "two"
w file     kopiert die aktuelle Zeile in eine andere Datei
=          druckt die Zeilennummer
! command  wendet den Befehl auf die aktuelle Zeile an

Bei der Benutzung von sed kannst du spezifizieren, auf welche Zeilen oder welche Reihe von Zeilen gehandelt werden werden soll:

$ sed '3d' file
löscht die dritte Zeile aus der Datei

$ sed '2,4s/e/#/' file
ersetzt das erste Auftreten des Zeichens character "e" mit dem Zeichen "#" in den Zeilen 2 bis 4 (einschließlich der beiden).

Zeilen, die eine Zeichenkette enthalten, können durch Benutzen von regulären Ausdrücken, wie oben beschrieben, ausgewählt werden. Zum Beispiel löscht

$ sed '/[Qq]ueen/d' songs
jede Zeile, die das Wort "Queen" oder "queen" enthält.

Es ist sehr leicht, leere Zeilen aus einer Datei durch das Benutzen von Mustern zu löschen

$ sed '/^$/d' file
obwohl diejenigen Zeilen, die Leerzeichen enthalten, nicht gelöscht werden. Um dies zu erreichen, mußt du ein ein bißchen erweitertes Muster benutzen
$ sed '/^ *$/d' file
wobei das "*" Zeichen jedes Auftreten des vorherigen Zeichens, in diesem Fall " " (Leerzeichen) , bedeutet.

$ sed '/InitMenu/a\
> the text to append' file.txt
Dieses Beispiel sucht eine Zeile, die die Zeichenkette "InitMenu" enthält und fügt dahinter eine neue Zeile ein. Dieses Beispiel arbeitet nur wie gezeigt mit bash oder sh als Shell. Du tippst bis a\ , dann drückst du die Returntaste und tippst den Rest.

Tcsh expandiert newlines innerhalb von Anführungszeichen auf andere Weise. Deshalb mußt du in tcsh einen doppelten Backslash benutzen:

$ sed '/InitMenu/a\\
? the text to append' file.txt
Das ? kommt von der Shell genauso wie das > in dem bash Beispiel.

awk

Und schließlich: awk. Sein außergewöhnlicher Name kam von den Namen der ursprünglichen Entwickler: Alfred Aho Peter Weinberger und Brian Kernighan.

Das awk Programm ist eines der interessantesten unter den Unix utilities. Es ist ein weit entwickletes und komplexes Werkzeug, das erlaubt, von der Kommandozeile eine große Anzahl verschiedener Aktionen auszuführen.

Es sollte angemerkt werden, daß awk und sed die Schlüsselstücke zu komplexeren Shellskripten sind. Es ist wirklich eindrucksvoll was man ohne C oder jede andere kompilierte Sprache tun kann. Das SlackWare Linuxdistribution Setup sowie viele CGI Webprogramme sind einfach Shell Skripte.

Heutzutage werden die Kommandozeilenwerkzeuge links liegengelassen, da sie zu alt sind für die aktuelle Fensterverwaltung und mit der Ankunft von PERL wurden viele Shellskripte durch Perlskripte ersetzt. Es sieht vielleicht so aus, als würden diese Kommandowerkzeuge vergessen. Jedoch sagt meine eigene Erfahrung, daß viele Anwendungen mit ein paar Zeilen im Shellskript gemacht werden können (einschließlich eines kleinen Datenbankmanagers). Davon abgesehen kannst du sehr produktiv sein, wenn du weißt, wie man diese Befehle und die Shell benutzt.

Wenn du die Mächtigkeit von awk und sed verbindest, kannst du Dinge sehr schnell ausführen, die normalerweise mit einem kleinen Datenbankmanager und einer Tabellenkalkulation gemacht werden.

Nimm eine Rechnung, wo du die Artikel, die du gekauft hast, findest, wieviele Stücke von jedem und ihre Preise pro Produkt. Laß uns diese Datei "sales" nennen:

oranges 	5	250
peras   	3	120
apples  	2	360

Es ist eine Datei mit drei Feldern, mit dem Tabulator als Feldseparator. Jetzt möchtest du ein 4.Feld definieren mit dem Gesamtpreis pro Produkt.

$ awk '{total=$2*$3; print $0 , total }' sales
oranges	6	250	1250
peras	3	120	360
apples	2	360	720

total ist die Varable, die das Produkt der Werte, die im 2. und 3. Feld gespeichert werden, enthält. Nach der Berechnung wird die gesamte Eingabe und der Gesamtwert gedruckt.

awk ist beinahe eine eigene Programmierumgebung, sehr gut geeignet für automatisiertes Arbeiten mit Informationen von Textdateien. Wenn du an diesem Werkzeug interessiert bist, ermuntere ich dich, mehr darüber zu lernen, durch Lesen seiner man und info Seiten.

Die Shellskripte

Shellskripte sind Systembefehlsabfolgen, gespeichert in einer Datei, um ausgeführt zu werden.

Shellskripte sind ähnlich zu Batchdateien unter DOS, aber mächtiger. Sie erlauben Benutzern, ihre eigenen Befehle zu erschaffen, einfach durch Kombination von bereits existierenden.

Shellskripte sind natürlich in der Lage, Parameter anzunehmen. Sie sind in Variablen $0 (für den Befehls-/Skriptnamen), $1, $2, ... hoch bis zu $9 gespeichert. Auf alle Befehlszeilenparameter kann mit $* verwiesen werden.

Jeder Texteditor kann Shellskripte erzeugen. Um ein Skript auszuführen, tipp einfach:

$ sh shell-script
Oder, viel besser, du kannst die Ausführungserlaubnis mit
$ chmod 700 shell-script
erteilen und nur durch Tippen des Namens ausführen:
$ shell-script

Wir beenden hier diesen Artikel und verschieben die Diskussion über Shellskripte auf später. Der nächste Artikel wird in die beiden bekanntesten Unixeditoren einführen: vi & emacs. Jeder Linuxbenutzer sollte sie gut kennen.

Quellen

Dies ist ein Einführungsartikel und die Leser könnten weitere Details durch das Lesen anderer Linuxfocusartikel lernen:

Bibliografie

Weiterführende Literatur: