Diesseits des Kerns

Hier geht es um den Teil den Linux erst zu einem Betriebssystem macht.
Die GNU Tools sind die Werkzeuge um Linux zu bedienen. Der richtige Name von Linux lautet also GNU/Linux. Distributionen machen genau das: Sie stellen den richtigen Linux Kernel mit den richtigen GNU Tools zusammen und bieten dies als ihr Linux Betriebssystem an.


Unterschiede zwischen BSD und Linux Tools

Mich hat zum Beginn meiner Unix Zeit verwirtt was hinter den verschiedenen Optionsarten steht. Einmal gibt es Optionen die mit "--" angestellt werden, und die mit nur "-". Nach längeren Forschen habe ich mitbekommen das dies an der Abstammung des Programms liegt. "--" Programme sind von einer BSD Abstammung. Die "-" Programme kommen aus der Linux Ecke.




; es können mehr als ein Befehl in einer Zeile untergebracht werden, vorausgesetzt die Befehle werden durch den Strichpunkt getrennt
& gibt man einen Befehl gefolgt von dem Et-Zeichen (&) ein, so wird dieser Befehl im Hintergrund ausgeführt, der Befehl nimmt also das Terminal nicht in Anspruch und man kann in dieser Zeit weiterarbeiten; die Standardausgabe dieses Befehls erscheint trotzdem am Bildschirm; wird ein Befehl in den Hintergrun|d geschickt, gibt das UNIX-System automatisch eine Nummer, die Prozeßindentifikationsnummer (siehe ps und kill), dieses Befehls aus

Wildcards

* das Sternchen steht für die Namen (Zeichen) aller Dateien des Verzeichnisses, es kann am Anfang, in der Mitte oder am Ende eines Dateinamens plaziert werden
? das Fragezeichen ist Stellvertreter für genau ein Zeichen
[...] eine Liste von Zeichen, die erlaubt sein können, werden in eckigen Klammern angegebnen, das erste Zeichen muß allerdings kleiner sein bzw. weiter vorn im Alphabet liegen als das letzte Zeichen; Beispiele: [abc], [123], [0-9], [a-z], aber nicht gültige Substitution: [z-f], [5-1]
[!...] ist das erste Zeichen nach der öäffnenden Klammer ein Ausrufezeichen, so wird dadurch der Sinn der Übereinstimmungsprüfung umgekehrt;
Beispiel: [!a-z] = Übereinstimmung mit allen Zeichen ausgenommen Kleinbuchstaben
[...]*[...] mischt der Wertebereich mit anderen Zeichen; Beispiele:
[a-np-z]* alle Kleinbuchstaben außer o
[a-z]*[!0-9] alle Dateien, die mit einem Kleinbuchstaben beginnen und nicht mit einer Zahl enden

Quotings

" " Keine Ersetzung der Metazeichen * ? [ ], jedoch Ersetzung von Shellvariablen (siehe unten) und Ersetzung durch die Ergebnisse von Kommandos (Backquote). Auch \ funktioniert weiterhin. Dazu ein Beispiel:
echo Der * wird hier durch alle Dateinamen ersetzt
echo "Der * wird hier nicht ersetzt"
' ' Das einfache Anführungszeichen unterdrückt jede Substitution. Zum Beispiel:
echo 'Weder * noch `pwd` werden ersetzt'
` ` Zwischen Backquote (Accent Grave) gesetzte Kommandos werden ausgeführt und das Ergebnis wird dann als Parameter übergeben (d. h. die Ausgabe des Kommandos landet als Parameter in der Kommandozeile). Dabei werden Zeilenwechsel zu Leerzeichen. Braucht dieses Kommando Parameter, tritt die normale Parameterersetzung in Kraft. Zum Beispiel:
echo "Aktuelles Verzeichnis: `pwd`"

Weil die verschiedenen Quotes manchmal schwer zu unterscheiden sind, wurde bei der bash eine weitere Möglichkeit eingeführt. Statt in Backquotes wird die Kommandofolge in $( ... ) eingeschlossen., z. B.:
echo "Aktuelles Verzeichnis: $(pwd)"

Eingabeumleitung

< Umlenken des Standardeingabe
> Umlenken der Standardausgabe zum Erzeugen / Überschreiben einer Datei
>> Umlenken der Standardausgabe zum Erzeugen / Anhängen einer Datei
<< Umlenken der Standardeingabe vom folgenden Text
n< öffne für Eingabe von Datei-Deskriptor n
n> öffne für Ausgabe von Datei-Deskriptor n (Überschreiben)
n>> öffne für Ausgabe von Datei-Deskriptor n (Anhängen)
n<< öffne für Eingabe von Datei-Deskriptor n des folgenden Textes
<&amp;n verbinde Standardeingabe mit offener Datei in Datei-Deskriptor n
<&amp;- schließe Standardeingabe
>&amp;n verbinde Standardausgabe mit offener Datei in Datei-Deskriptor n
>&amp;- schließe Standardausgabe
n<&amp;m verbinde für die Eingabe Datei-Deskriptor n mit Datei-Deskriptor m
n<&amp;- schließe Datei in Datei-Deskriptor n
n>&amp;m verbinde für die Ausgabe Datei-Deskriptor n mit Datei-Deskriptor m
n>&amp;- schließe Datei in Datei-Deskriptor n
Befehl 2> file alle Fehlermeldungen, die normalerweise zur Standardfehlerausgabe gelangen würden, werden jetzt in die Datei file umgeleitet

Ausdrücke beim test-Kommando

Eigenschaften von Dateien

Ausdruck Bedeutung
-e < datei > datei existiert
-r < datei > datei existiert und Leserecht
-w <datei> datei existiert und Schreibrecht
-x <datei> datei existiert und Ausführungsrecht
-f <datei> datei existiert und ist einfache Datei
-d <datei> datei existiert und ist Verzeichnis
-h <datei> datei existiert und ist symbolisches Link
-c <datei> datei existiert und ist zeichenor. Gerät
-b <datei> datei existiert und ist blockor. Gerät
-p <datei> datei existiert und ist benannte Pipe
-u <datei> datei existiert und für Eigentümer s-Bit gesetzt
-g <datei> datei existiert und für Gruppe s-Bit gesetzt
-k <datei> datei existiert und t- oder sticky-Bit gesetzt
-s <datei> datei existiert und ist nicht leer
-L <datei> datei ist symbolisches Link
-t <dateikennzahl> dateikennzahl ist einem Terminal zugeordnet

Vergleiche und logische Verknüpfungen

Vergleich von Zeichenketten
Ausdruck Bedeutung
-n <String> wahr, wenn String nicht leer
-z <String> wahr, wenn String leer ist
<String1> = <String2> wahr, wenn die Zeichenketten gleich sind
<String1> != <String2> wahr, wenn Zeichenketten verschieden sind
Algebraische Vergleiche ganzer Zahlen
Operator Bedeutung
-eq equal - gleich
-ne not equal - ungleich
-ge greater than or equal - größer gleich
-gt greater than - größer
-le less than or equal - kleiner gleich
-lt less than - kleiner
Logische Verknüpfung zweier Argumente
UND <bedingung1> -a <bedingung2>
ODER <bedingung1> -o <bedingung2>
Klammern \( <ausdruck> \)
Negation ! <ausdruck>

cat

cat file(s) gibt den Inhalt von file(s) oder, falls kein Argument vorhanden ist, den der Standardausgabe aus

cd (change directory)

cd dir ändert das Arbeitsverzeichnis in dir um

chmod (change modus)

chmod +r file file darf gelesen werden
chmod -r file file darf nicht gelesen werden
chmod +w file file darf geschrieben werden
chmod +x file file darf ausgeführt werden werden
chmod u+r file Leserecht für user der Datei (g=group, o=other)

cp (copy)

cp file1 file2 kopiert file1 in file2; existiert file2, so wird dies überschrieben
cp file(s) dir kopiert file(s) nach dir; existiert dort schon file(s), so wird dies überschrieben

cut

cut -cchars file um Datenfelder einer Datei oder der Ausgabe eines Befehls zu herausschneiden zu können; chars gibt an, welche Zeichen aus jeder Zeile der Datei file extrahiert werden sollen, wird file nicht angegeben, holt sich cut seine Eingabe aud der Standardeingabe, womit cut als Filter in einer Pipeline eingesetzt werden kann; Beispiel: cut -c5- data extrahiert aus der Datei data alle Zeichen einer Zeile ab der 5ten Spalte bis zum Zeilenende und gibt das Resultat auf der Standardausgabe aus; who | gut -c1-8 die Zeilen 1 bis 8 der Standardeingabe werden extrahiert
-d delimiter; mit d wird das Zeichen, welches jedes Datenfeld begrenzt angegebem; wird cut ohne die Option -d eingesetzt, wird das Tabzeichen als standardmäßige Feldbegrenzung eingesetzt
-f field; mit f werden die Felder, die aus file extrahiert werden sollen, angegeben

date

date gibt datum und Uhrzeit aus

echo

echo args gibt args aus

exit

exit ausloggen

grep

grep pattern file(s) jede Zeile jeder Datei file(s), welche pattern enthält, wird auf den Bildschirm ausgegeben
grep '[A-Z] list alle Zeilen von list, die einen Großbuchstaben beinhalten
grep '[0-9]' data alle Zeilen von data, die eine Ziffer beinhalten
grep '[A-Z] ... [0-8]' list alle Zeilen von list, die einen fünf Zeichen langen String beinhalten, der mit einem Großbuchstaben beginnt und mit einer Ziffer endet
grep '\.pic$' filelist alle Zeilen von filelist, die auf .pic enden
grep -v 'UNIX' intro gibt alle Zeilen au, die das Wort UNIX nicht beinhalten
grep -l 'include' file(s).c listet alle Dateien file(s).c auf, die include beinhalten
grep -n 'include' file.c setzt vor jede Datei file.c die include enthält, die relative Zeilenzahl, in welcher sich das Suchmuster befindet

head

head file(s) zeigt den Dateikopf (die ersten 10 Zeilen) der Dateien file(s)

kill

kill 1234 breche Prozeß mit Prozeßnummer 1234 ab, Prozeßnummer liefert ps
kill -g 1234 unbedingtes 'kill' für Prozeß 1234

ln (link)

ln file1 file2 ordnet file1 den zweiten Namen file2 zu
ln file(s) dir Macht file(s) in dir unter gleichem Namen verfügbar

lpr

lpr file(s) Ausgabe auf Zeilendrucker

ls (list)

ls file(s) listet die Dateien file(s) auf
ls dir(s) listet die Dateien des Verzeichnisses dir(s) oder, falls kein Argument angegeben wurde, die im aktuellen Verzeichnis auf
ls -l ermöglicht die detaillierte Beschreibung der Dateien eines Inhaltsverzeichnisses der Form drwxrwxrwx n1 owner n2 date name; dabei ist:
d = file ist directory, sont Anzeige von '-'
rwx = read/write/execute-permission für owner, group, all other
n1 = Anzahl links (Verknüpfunken, die mit ln erstellt wurden)
n2 = Anzahl bytes
date = creation date

man (manual)

man cmd zeigt On-line Manual-Eintrag für das Kommando cmd an

mkdir (make directory)

mkdir dir(s) erzeugt das Verzeichnis dir(s)

more

more file(s) seitenweise Ausgabe von file(s) auf Terminal (blank / break)

mv (move)

mv file1 file2 verschiebt file1 nach file2; befinden sich beide Dateien im selben Verzeichnis, findet eine Umbenennung statt
mv file(s) dir verschiebt file(s) in das Verzeichnis dir

passwd

passwd ändert das Paßwort

paste

paste file(s) fügt Zeilen zusammen und leitet sie an die Standardausgabe weiter, die Felder werden durch Tabzeichen begrenzt
-d sollen die Felder nicht durch Tabzeichen begrenzt werden, kann mit -dchar (char =ein oder mehrere Beliebige Zeichen) die Begrenzungszeichen festgelegt werden
-s weist paste an, alle Zeilen aus einer Datei zusammenzufügen

pipes

| die Pipe (|) verbindet zwei Unix-Befehle miteinander, die Ausgabe des einen Befehls ist die Eingabe für den anderen Befehl; dazu muß es zwischen den betreffenden Befehlen plaziert werden; Beispiel: who | more, seitenweises Auflisten der eingeloggten user; who | wc -l, erstellt eine detaillierte Liste der eingeloggten user

ps (process status)

ps gibt Informationen über die lauvenden Prozesse aus, hierbei gilt:
PID = Prozeßidentifikationsnummer
TTY = Nummer des Terminals, von dem aus der Prozeß gestartet wurde
COMMAND = ist der Name des Prozesses
ps -f weitere Informationen;
PPID = die Elternprozeßnummer
STIME = der Zeitpunkt, zu dem der Prozeß begann
und die Befehlsargumente
ps -l detaillierte Informationen über den Prozeßstatus
ps -a all

pwd (print working directory)

pwd zeigt den Pfad des aktuellen Arbeitsverzeichnisses an

rm (remove)

rm file(s) löscht die Dateien file(s)
rmdir dir(s) löscht das Verzeichnis dir(s), wenn sich keine Dateien mehr im Verzeichnis befinden
rm -r dir(s) löscht das Verzeichnis dir(s) und alle darin enthaltenen Dateien (einschließlich aller Unterverzeichnisse)

sed (stream editor)

sed '5d' lösche Zeile 5
sed '/[Tt]est/d' löscht alle Zeilen, die Test oder test beinhalten
sed -n '20,25p' text gibt nur Zeile 20 bis 25 aus
sed '1,10s/unix/UNIX/g' intro macht aus unix UNIX, egal an welcher Stelle der ersten 10 Zeilen von intro es auftaucht
sed '/jan/s/-1/-5' wechselt das erste -1 in -5 in allen Zeilen, die jan beinhalten
sed 's/...//' data löscht die ersten drei Zeichen jeder Zeile von data
sed 's/...$//' data löscht die letzten drei Zeichen jeder Zeile von data
sed -n '1' text gibt alle Zeilen von text aus, wobei alle nicht druckbaren Zeichen als \nn (nn ist der oktale Wert des Zeichens) und alle Tabzeichen als > ausgegeben werden

sort

sort file(s) sortiert die Zeilen in file(s) oder die der Standardeingabe in steigender Reihenfolge, falls kein Argument angegeben wurde
sort -u file(s) weist sort an, keine Zeilen mit identischem Inhalt zu erzeugen
sort -r file(s) kehrt die Sortierreihenfolge um, d.h. Ausgabe in abfallender Reihenfolge
sort file(s) -o sorted_files sortiert file(s) und leitet die Ausgabe in die Datei sorted_files um
sort -n data die Option -n ist dafür verantwortlich, daß das erste Feld einer Zeile von sort als Zahl behandelt wird und daß die Daten numerisch sortiert werden
sort -Nn data überspringt die ersten N Felder und ordnet danach die Daten numerisch; Felder werden standardmäßig durcj Leer- oder Tabzeichen begrenzt
sort +Nn -tchar data mit der Option -t kann ein Begrenzungszeichen char gewählt werden, welchen anstelle des Leer- oder Tabzeichens bei der Felderbegrenzung verwendet wird

tr

tr char1 char2 wird benutzt, um Zeichen char1 aus der Standardeingabe zu char2 übersetzen
tr : '\nnn' ersetzt den Doppelpunkt durch das Zeichen des entsprechenden oktalen Wertes nn
tr 'X' 'x' ersetze alle großen X durch kleine x
tr '()' '{}' ersetze alle runden Klammern auf durch geschweifte Klammern auf und alle runden Klammern zu durch geschweifte Klammern zu
tr '[a-z]' '[A-Z]' ersetze alle Kleinbuchstaben durch Großbuchstaben
tr '[A-Z]' '[N-Z]' '[A-M]' ersetze alle großen A-M durch N-Z und alle N-Z durch A-M
tr '\11' ' ' ersetze alle Tabzeichen durch ein Leerzeichen
tr -s ' ' ' ' ersetze mehrere aufeinanderfolgende Leerzeichen durch ein einzelnes Leerzeichen
tr -d '\14' lösche alle Seitenvorschubzeichen (oktal 14)
tr -d '[0-9]' löscht alle Ziffern

uniq

unic in_file out_file uniq kopiert in_file in out_file und löscht dabei doppelt voliegende Zeilen; uniq definiert doppelt vorliegende Zeilen als mehrmals aufeinanderfolgende Zeilen, die identisch sind; wird out_file nicht angegeben, wird das Ergebnis an die Standardausgabe weitergegeben, ist hingegen in_file nicht angegeben, funktioniert uniq als Filter und holöt sich seine Eingabe aus der Standardeingabe
uniq -d in_file out_file weist uniq an , lediglich die doppelten Zeilen an out_file weiterzuleiten, diese Zeilen werden nur einmal weitergeleitet, egal, wie oft sie in der Datei aufeinanderfolgen
uniq -c in_file out_file funktioniert genauso wie uniq ohne Optionen mit dem Unterschied, daß vor jede Ausgabezeile eine Zahl gesetzt wird, die angibt, wie oft die Zeile in der Eingabe vorkam

wc (word count)

wc -l file(s) zählt die Anzahl der Zeilen der Dateien file(s) oder die der Standardeingabe, falls kein Argument angegeben wurde
wc -w file(s) zählt die Anzahl der Worte der Dateien file(s) oder die der Standardeingabe, falls kein Argument angegeben wurde
wc -c file(s) zählt die Anzahl der Zeichen der Dateien file(s) oder die der Standardeingabe, falls kein Argument angegeben wurde

who

who zeigt an, wer eingeloggt ist
who am i gibt Informationen über den user selbst aus

Seite druckenSoftlink:0908142Seite bearbeitet: Sunday, 07.09.2008