<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="de">
	<id>https://www.xinux.net/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=192.168.178.46</id>
	<title>Xinux Wiki - Benutzerbeiträge [de]</title>
	<link rel="self" type="application/atom+xml" href="https://www.xinux.net/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=192.168.178.46"/>
	<link rel="alternate" type="text/html" href="https://www.xinux.net/index.php/Spezial:Beitr%C3%A4ge/192.168.178.46"/>
	<updated>2026-06-11T13:29:04Z</updated>
	<subtitle>Benutzerbeiträge</subtitle>
	<generator>MediaWiki 1.35.1</generator>
	<entry>
		<id>https://www.xinux.net/index.php?title=Screen&amp;diff=126</id>
		<title>Screen</title>
		<link rel="alternate" type="text/html" href="https://www.xinux.net/index.php?title=Screen&amp;diff=126"/>
		<updated>2009-07-08T07:34:12Z</updated>

		<summary type="html">&lt;p&gt;192.168.178.46: /* Prinzip */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=Prinzip=&lt;br /&gt;
screen ist ein nettes Tool, um mit mehreren Personen gemeinsam auf einem Bildschirm (engl. &amp;quot;screen&amp;quot;) zu arbeiten, genauergesagt in einem Terminal(xterm oder Konsole spielt keine Rolle). Man kann so z.B. jemand beim Konfigurieren zuschauen (oder jemand zuschauen lassen, wie man etwas konfiguriert).  Auch sehr praktisch ist screen für unzuverlässige Verbindungen. bricht die Verbindung zum ferngewarteten Server ab, dann wählt man sich einfach wieder neu ein und schaltet sich erneut auf screen auf - die Bildschirminhalte sind dann genauso wie vor dem Abbruch! &lt;br /&gt;
&lt;br /&gt;
==Die wichtigsten Optionen==  &lt;br /&gt;
{| border=1 cellpadding=&amp;quot;2&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Option&lt;br /&gt;
! Funktion&lt;br /&gt;
|-&lt;br /&gt;
|&amp;quot;-r &amp;lt;PID&amp;gt;&amp;quot;&lt;br /&gt;
|Rettache eine Session&lt;br /&gt;
|-&lt;br /&gt;
|&amp;quot;-R&amp;quot;&lt;br /&gt;
|Reattach wenn Möglich sonst starte eine neue Session. &lt;br /&gt;
|-&lt;br /&gt;
|&amp;quot;-d -m&amp;quot;&lt;br /&gt;
|Starte screen im &amp;quot;detached&amp;quot; modus. (nützlich für Skripte)&lt;br /&gt;
|-&lt;br /&gt;
|&amp;quot;-h 1000&amp;quot;&lt;br /&gt;
|&amp;quot;1000 Zeilen der Historie werden im Buffer gespeichert&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
|&amp;quot;-D -m&amp;quot;&lt;br /&gt;
|Starte screen im &amp;quot;detached&amp;quot; modus ohne zu forken. (nützlich für Skripte)&lt;br /&gt;
|-&lt;br /&gt;
|&amp;quot;-x&amp;quot;&lt;br /&gt;
|Attache zu einer nicht “detached” screen session. (Multi display mode).&lt;br /&gt;
|-&lt;br /&gt;
|&amp;quot;-l&amp;quot;&lt;br /&gt;
|Login Modus an (update /var/run/utmp)&lt;br /&gt;
|-&lt;br /&gt;
|&amp;quot;-t title&amp;quot;&lt;br /&gt;
|setze  Überschrift. (Name des Fensters).&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==die wichtigsten Kommandos==&lt;br /&gt;
{| border=1 cellpadding=&amp;quot;2&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Kommando&lt;br /&gt;
! Funktion&lt;br /&gt;
|-&lt;br /&gt;
|Strg-a ?&lt;br /&gt;
|eingebauter Hilfebildschirm&lt;br /&gt;
|-&lt;br /&gt;
|Strg-a c&lt;br /&gt;
|(&amp;quot;create&amp;quot;) erzeugt einen neuen von Screen verwalteten Bildschirm&lt;br /&gt;
|-&lt;br /&gt;
|Strg-a n&lt;br /&gt;
|(&amp;quot;next&amp;quot;) schaltet um auf den nächsten Bildschirm&lt;br /&gt;
|- &lt;br /&gt;
|Strg-a &amp;lt;Leertaste&amp;gt;&lt;br /&gt;
|auch (&amp;quot;next&amp;quot;), aber u.U. handlicher zu bedienen&lt;br /&gt;
|-&lt;br /&gt;
|Strg-a p &lt;br /&gt;
|(&amp;quot;previous&amp;quot;) schaltet um auf den vorherigen Bildschirm&lt;br /&gt;
|-&lt;br /&gt;
|Strg-a 0 bis Strg-a 9&lt;br /&gt;
|schaltet um auf Bildschirm 0..9&lt;br /&gt;
|-&lt;br /&gt;
|Strg-a x&lt;br /&gt;
|sperrt die Konsole, bis das Passwort des Benutzers eingegeben wurde&lt;br /&gt;
|-&lt;br /&gt;
|Strg-a d&lt;br /&gt;
|(&amp;quot;detach&amp;quot;) verlässt screen, ohne es zu stoppen.&lt;br /&gt;
|}&lt;/div&gt;</summary>
		<author><name>192.168.178.46</name></author>
	</entry>
	<entry>
		<id>https://www.xinux.net/index.php?title=Screen&amp;diff=125</id>
		<title>Screen</title>
		<link rel="alternate" type="text/html" href="https://www.xinux.net/index.php?title=Screen&amp;diff=125"/>
		<updated>2009-07-08T07:33:28Z</updated>

		<summary type="html">&lt;p&gt;192.168.178.46: /* Die wichtigsten Optionen */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=Prinzip=&lt;br /&gt;
screen ist ein nettes Tool, um mit mehreren Personen gemeinsam auf einem Bildschirm (engl. &amp;quot;screen&amp;quot;) zu arbeiten, genauergesagt in einem Terminal(xterm oder Konsole spielt keine Rolle). Man kann so z.B. jemand beim Konfigurieren zuschauen (oder jemand zuschauen lassen, wie man etwas konfiguriert).  Auch sehr praktisch ist screen für unzuverlässige Verbindungen. bricht die Verbindung zum ferngewarteten Server ab, dann wählt man sich einfach wieder neu ein und schaltet sich erneut auf screen auf - die Bildschirminhalte sind dann genauso wie vor dem Abbruch! &lt;br /&gt;
&lt;br /&gt;
==Die wichtigsten Optionen==  &lt;br /&gt;
{| border=1 cellpadding=&amp;quot;2&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Option&lt;br /&gt;
! Funktion&lt;br /&gt;
|-&lt;br /&gt;
|&amp;quot;-r &amp;lt;PID&amp;gt;&amp;quot;&lt;br /&gt;
|Rettache eine Session&lt;br /&gt;
|-&lt;br /&gt;
|&amp;quot;-R&amp;quot;&lt;br /&gt;
|Reattach wenn Möglich sonst starte eine neue Session. &lt;br /&gt;
|-&lt;br /&gt;
|&amp;quot;-d -m&amp;quot;&lt;br /&gt;
|Starte screen im &amp;quot;detached&amp;quot; modus. (nützlich für Skripte)&lt;br /&gt;
|-&lt;br /&gt;
|&amp;quot;-h 1000&amp;quot;&lt;br /&gt;
|&amp;quot;1000 Zeilen der Historie werden im Buffer gespeichert&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
|&amp;quot;-D -m&amp;quot;&lt;br /&gt;
|Starte screen im &amp;quot;detached&amp;quot; modus ohne zu forken. (nützlich für Skripte)&lt;br /&gt;
|-&lt;br /&gt;
|&amp;quot;-x&amp;quot;&lt;br /&gt;
|Attache zu einer nicht “detached” screen session. (Multi display mode).&lt;br /&gt;
|-&lt;br /&gt;
|&amp;quot;-l&amp;quot;&lt;br /&gt;
|Login Modus an (update /var/run/utmp)&lt;br /&gt;
|-&lt;br /&gt;
|&amp;quot;-t title&amp;quot;&lt;br /&gt;
|setze  Überschrift. (Name des Fensters).&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==die wichtigsten Kommandos==&lt;br /&gt;
&lt;br /&gt;
Strg-a ?			eingebauter Hilfebildschirm&lt;br /&gt;
 &lt;br /&gt;
Strg-a c			(&amp;quot;create&amp;quot;) erzeugt einen neuen von Screen verwalteten Bildschirm&lt;br /&gt;
 &lt;br /&gt;
Strg-a n			(&amp;quot;next&amp;quot;) schaltet um auf den nächsten Bildschirm&lt;br /&gt;
 &lt;br /&gt;
Strg-a &amp;lt;Leertaste&amp;gt;  		auch (&amp;quot;next&amp;quot;), aber u.U. handlicher zu bedienen&lt;br /&gt;
 &lt;br /&gt;
Strg-a p : (&amp;quot;previous&amp;quot;) 	schaltet um auf den vorherigen Bildschirm&lt;br /&gt;
 &lt;br /&gt;
Strg-a 0 bis Strg-a 9		schaltet um auf Bildschirm 0..9&lt;br /&gt;
 &lt;br /&gt;
Strg-a x :			sperrt die Konsole, bis das Passwort des Benutzers eingegeben wurde&lt;br /&gt;
 &lt;br /&gt;
Strg-a d :			(&amp;quot;detach&amp;quot;) verlässt screen, ohne es zu stoppen.&lt;/div&gt;</summary>
		<author><name>192.168.178.46</name></author>
	</entry>
	<entry>
		<id>https://www.xinux.net/index.php?title=Screen&amp;diff=124</id>
		<title>Screen</title>
		<link rel="alternate" type="text/html" href="https://www.xinux.net/index.php?title=Screen&amp;diff=124"/>
		<updated>2009-07-08T07:33:15Z</updated>

		<summary type="html">&lt;p&gt;192.168.178.46: /* Die wichtigsten Optionen */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=Prinzip=&lt;br /&gt;
screen ist ein nettes Tool, um mit mehreren Personen gemeinsam auf einem Bildschirm (engl. &amp;quot;screen&amp;quot;) zu arbeiten, genauergesagt in einem Terminal(xterm oder Konsole spielt keine Rolle). Man kann so z.B. jemand beim Konfigurieren zuschauen (oder jemand zuschauen lassen, wie man etwas konfiguriert).  Auch sehr praktisch ist screen für unzuverlässige Verbindungen. bricht die Verbindung zum ferngewarteten Server ab, dann wählt man sich einfach wieder neu ein und schaltet sich erneut auf screen auf - die Bildschirminhalte sind dann genauso wie vor dem Abbruch! &lt;br /&gt;
&lt;br /&gt;
==Die wichtigsten Optionen==  &lt;br /&gt;
{| border=1 cellpadding=&amp;quot;2&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Option&lt;br /&gt;
! Funktion&lt;br /&gt;
|-&lt;br /&gt;
|&amp;quot;-r &amp;lt;PID&amp;gt;&amp;quot;&lt;br /&gt;
|Rettache eine Session&lt;br /&gt;
|-&lt;br /&gt;
|&amp;quot;-R&amp;quot;&lt;br /&gt;
|Reattach wenn Möglich sonst starte eine neue Session. &lt;br /&gt;
|-&lt;br /&gt;
|&amp;quot;-d -m&amp;quot;&lt;br /&gt;
|Starte screen im &amp;quot;detached&amp;quot; modus. (nützlich für Skripte)&lt;br /&gt;
|&amp;quot;-h 1000&amp;quot;&lt;br /&gt;
|&amp;quot;1000 Zeilen der Historie werden im Buffer gespeichert&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
|&amp;quot;-D -m&amp;quot;&lt;br /&gt;
|Starte screen im &amp;quot;detached&amp;quot; modus ohne zu forken. (nützlich für Skripte)&lt;br /&gt;
|-&lt;br /&gt;
|&amp;quot;-x&amp;quot;&lt;br /&gt;
|Attache zu einer nicht “detached” screen session. (Multi display mode).&lt;br /&gt;
|-&lt;br /&gt;
|&amp;quot;-l&amp;quot;&lt;br /&gt;
|Login Modus an (update /var/run/utmp)&lt;br /&gt;
|-&lt;br /&gt;
|&amp;quot;-t title&amp;quot;&lt;br /&gt;
|setze  Überschrift. (Name des Fensters).&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==die wichtigsten Kommandos==&lt;br /&gt;
&lt;br /&gt;
Strg-a ?			eingebauter Hilfebildschirm&lt;br /&gt;
 &lt;br /&gt;
Strg-a c			(&amp;quot;create&amp;quot;) erzeugt einen neuen von Screen verwalteten Bildschirm&lt;br /&gt;
 &lt;br /&gt;
Strg-a n			(&amp;quot;next&amp;quot;) schaltet um auf den nächsten Bildschirm&lt;br /&gt;
 &lt;br /&gt;
Strg-a &amp;lt;Leertaste&amp;gt;  		auch (&amp;quot;next&amp;quot;), aber u.U. handlicher zu bedienen&lt;br /&gt;
 &lt;br /&gt;
Strg-a p : (&amp;quot;previous&amp;quot;) 	schaltet um auf den vorherigen Bildschirm&lt;br /&gt;
 &lt;br /&gt;
Strg-a 0 bis Strg-a 9		schaltet um auf Bildschirm 0..9&lt;br /&gt;
 &lt;br /&gt;
Strg-a x :			sperrt die Konsole, bis das Passwort des Benutzers eingegeben wurde&lt;br /&gt;
 &lt;br /&gt;
Strg-a d :			(&amp;quot;detach&amp;quot;) verlässt screen, ohne es zu stoppen.&lt;/div&gt;</summary>
		<author><name>192.168.178.46</name></author>
	</entry>
	<entry>
		<id>https://www.xinux.net/index.php?title=Screen&amp;diff=123</id>
		<title>Screen</title>
		<link rel="alternate" type="text/html" href="https://www.xinux.net/index.php?title=Screen&amp;diff=123"/>
		<updated>2009-07-08T07:33:01Z</updated>

		<summary type="html">&lt;p&gt;192.168.178.46: Die Seite wurde neu angelegt: =Prinzip= screen ist ein nettes Tool, um mit mehreren Personen gemeinsam auf einem Bildschirm (engl. &amp;quot;screen&amp;quot;) zu arbeiten, genauergesagt in einem Terminal(xterm oder K...&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=Prinzip=&lt;br /&gt;
screen ist ein nettes Tool, um mit mehreren Personen gemeinsam auf einem Bildschirm (engl. &amp;quot;screen&amp;quot;) zu arbeiten, genauergesagt in einem Terminal(xterm oder Konsole spielt keine Rolle). Man kann so z.B. jemand beim Konfigurieren zuschauen (oder jemand zuschauen lassen, wie man etwas konfiguriert).  Auch sehr praktisch ist screen für unzuverlässige Verbindungen. bricht die Verbindung zum ferngewarteten Server ab, dann wählt man sich einfach wieder neu ein und schaltet sich erneut auf screen auf - die Bildschirminhalte sind dann genauso wie vor dem Abbruch! &lt;br /&gt;
&lt;br /&gt;
==Die wichtigsten Optionen==  &lt;br /&gt;
{| border=1 cellpadding=&amp;quot;2&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Option&lt;br /&gt;
! Funktion&lt;br /&gt;
|-&lt;br /&gt;
|&amp;quot;-r &amp;lt;PID&amp;gt;&amp;quot;&lt;br /&gt;
|Rettache eine Session&lt;br /&gt;
|-&lt;br /&gt;
|&amp;quot;-R&amp;quot;&lt;br /&gt;
|Reattach wenn Möglich sonst starte eine neue Session. &lt;br /&gt;
|-&lt;br /&gt;
|&amp;quot;-d -m&amp;quot;&lt;br /&gt;
|Starte screen im &amp;quot;detached&amp;quot; modus. (nützlich für Skripte)&lt;br /&gt;
|&amp;quot;-h 1000&amp;quot;&lt;br /&gt;
|&amp;quot;1000 Zeilen der Historie werden im Buffer gespeichert&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
|&amp;quot;-D -m&amp;quot;&lt;br /&gt;
|Starte screen im &amp;quot;detached&amp;quot; modus ohne zu forken. (nützlich für Skripte)&lt;br /&gt;
|-&lt;br /&gt;
|&amp;quot;-x&amp;quot;&lt;br /&gt;
|Attache zu einer nicht “detached” screen session. (Multi display mode).&lt;br /&gt;
|-&lt;br /&gt;
|&amp;quot;-l&amp;quot;&lt;br /&gt;
|Login Modus an (update /var/run/utmp)&lt;br /&gt;
|-&lt;br /&gt;
|&amp;quot;-t title&amp;quot;&lt;br /&gt;
|setze  Überschrift. (Name des Fensters).&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
die wichtigsten -Kommandos&lt;br /&gt;
&lt;br /&gt;
Strg-a ?			eingebauter Hilfebildschirm&lt;br /&gt;
 &lt;br /&gt;
Strg-a c			(&amp;quot;create&amp;quot;) erzeugt einen neuen von Screen verwalteten Bildschirm&lt;br /&gt;
 &lt;br /&gt;
Strg-a n			(&amp;quot;next&amp;quot;) schaltet um auf den nächsten Bildschirm&lt;br /&gt;
 &lt;br /&gt;
Strg-a &amp;lt;Leertaste&amp;gt;  		auch (&amp;quot;next&amp;quot;), aber u.U. handlicher zu bedienen&lt;br /&gt;
 &lt;br /&gt;
Strg-a p : (&amp;quot;previous&amp;quot;) 	schaltet um auf den vorherigen Bildschirm&lt;br /&gt;
 &lt;br /&gt;
Strg-a 0 bis Strg-a 9		schaltet um auf Bildschirm 0..9&lt;br /&gt;
 &lt;br /&gt;
Strg-a x :			sperrt die Konsole, bis das Passwort des Benutzers eingegeben wurde&lt;br /&gt;
 &lt;br /&gt;
Strg-a d :			(&amp;quot;detach&amp;quot;) verlässt screen, ohne es zu stoppen.&lt;/div&gt;</summary>
		<author><name>192.168.178.46</name></author>
	</entry>
	<entry>
		<id>https://www.xinux.net/index.php?title=Hauptseite&amp;diff=122</id>
		<title>Hauptseite</title>
		<link rel="alternate" type="text/html" href="https://www.xinux.net/index.php?title=Hauptseite&amp;diff=122"/>
		<updated>2009-07-08T07:30:53Z</updated>

		<summary type="html">&lt;p&gt;192.168.178.46: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Dokumentation&lt;br /&gt;
&lt;br /&gt;
* [[Installation von Mediawiki unter Ubuntu]]&lt;br /&gt;
* [[Linux Grundlagen]]&lt;br /&gt;
* [[Administration]]&lt;br /&gt;
* [[Bash]]&lt;br /&gt;
* [[Netzwerkkonfiguration unter Ubuntu]]&lt;br /&gt;
* [[Paketmanagement]]&lt;br /&gt;
* [[LVM]]&lt;br /&gt;
* [[RAID]]&lt;br /&gt;
* [[SSH]]&lt;br /&gt;
* [[Bootprozess]]&lt;br /&gt;
* [[NTP]]&lt;br /&gt;
* [[Ssh-tunnel]]&lt;br /&gt;
* [[Screen]]&lt;/div&gt;</summary>
		<author><name>192.168.178.46</name></author>
	</entry>
	<entry>
		<id>https://www.xinux.net/index.php?title=Linux_Grundlagen&amp;diff=121</id>
		<title>Linux Grundlagen</title>
		<link rel="alternate" type="text/html" href="https://www.xinux.net/index.php?title=Linux_Grundlagen&amp;diff=121"/>
		<updated>2009-07-08T07:19:43Z</updated>

		<summary type="html">&lt;p&gt;192.168.178.46: /* Nach Zeit */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Einführung==&lt;br /&gt;
===Geschichte Unix===&lt;br /&gt;
====1969====&lt;br /&gt;
Am Anfang von Linux steht Multics, ein von Bell Laboratories geschaffenes &amp;quot;Betriebssystem&amp;quot;, &lt;br /&gt;
das noch mit Lochkarten arbeitete. Multics wird mit Unterstützung von AT&amp;amp;T und Western &lt;br /&gt;
Electric unter Mitarbeit von Ken Thompson und Dennis Ritchie weiterentwickelt. Obwohl sich &lt;br /&gt;
Bell Laboratories bald zurückzieht, gibt Thompson das Projekt nicht auf.  Zum Entwicklerteam &lt;br /&gt;
gehören auch Rudd Canaday und Brian Kernighan. Letzterer gibt 1970 dem Betriebssystem den Namen UNIX. &lt;br /&gt;
Thompson definiert 7 Richtlinien für UNIX:&lt;br /&gt;
 &lt;br /&gt;
# Hierarchische Anordnung der Dateisysteme&lt;br /&gt;
# Die Ausgabe von Daten an die Peripherie(-geräte) und Dateien soll gleich sein.&lt;br /&gt;
# Prozesse und Programme sollen miteinander kommunizieren.&lt;br /&gt;
# Multitasking (voneinander getrennte Prozesse)&lt;br /&gt;
# Persönliche Shell's&lt;br /&gt;
# Der Compiler soll für viele Programmiersprachen tauglich sein.&lt;br /&gt;
# Portabilität&lt;br /&gt;
&lt;br /&gt;
====1971====&lt;br /&gt;
Bis 1971 ist das für eine DEC PDP-7 geschriebene Unix als Version 1 auf eine PDP-11 portiert. Bis&lt;br /&gt;
zur Version 4 entwickelt Ritchie die Programmier- (Hoch-) Sprache C. Das in Assembler geschriebene&lt;br /&gt;
Unix wird fast völlig nach C übersetzt, wodurch zum erstenmal die geforderte Hardware-Unabhängigkeit&lt;br /&gt;
des Betriebssystems realisiert werden kann.&lt;br /&gt;
&lt;br /&gt;
====1975====&lt;br /&gt;
Da AT&amp;amp;T aufgrund vertraglicher Bindungen mit der US-Bundesregierung Unix nicht kommerziell vermarkten darf, stellt sie den Source Code für ein paar hundert Dollar den Universitäten, Lehr- und Forschungsanstalten zur Verfügung. Dies führt zu einer sehr dynamischen Entwicklung von Unix. 1975 wird die Version 6 als erstes UNIX-System veröffentlicht, die darauffolgende Version 7 wird sehr erfolgreich. Da es keine Standardisierung gibt, entwickeln bald verschiedenste Firmen ihr eigenes UNIX. Ab 1984 wird AT&amp;amp;T per Gerichtsbeschluss erlaubt, Unix zu vermarkten. AT&amp;amp;T verkauft sein Unix V und beginnt, sich um einen internationalen Standard von UNIX zu bemühen. &lt;br /&gt;
&lt;br /&gt;
====1984====&lt;br /&gt;
Durch Richard Stallman wird die Free Software Foundation (FSF) gegründet. Diese initiiert ein Projekt namens GNU (GNU ist Not Unix), welches das Ziel verfolgt, ein freies UNIX System zu schaffen. &lt;br /&gt;
&lt;br /&gt;
====1987====&lt;br /&gt;
AT&amp;amp;T verbietet die Verwendung des Unix Quellcodes an den Universitäten. Während dieser Zeit ist Andrew (Andy) Tannenbaum Professor an der Freien Universität von Amsterdam und entwickelt Minix. Minix ist ein kostengünstiges Lehrbetriebssystem und kommt ohne jeglichen AT&amp;amp;T Code aus, obwohl es die gleiche Funktionalität wie Unix 7 bietet. Im Usenet unter comp.os.minix entsteht eine Minix-Gemeinde, die den Minix Kernel und die Anwendungen rundherum programmiert und verbessert.&lt;br /&gt;
&lt;br /&gt;
====1991====&lt;br /&gt;
Linus Torvalds hat als Student für Computerwissenschaften an der Universität in Helsinki Minix installiert und das Buch von Andy Tannenbaum gelesen. Er beginnt im Sinne der FSF einen Unix ähnlichen Kernel zu programmieren mit der Idee, &amp;quot;ein besseres Minix als Minix&amp;quot; zu bauen. 1992 stellt er die Version 0.02 mit dem Namen Linux der Internetgemeinde zur Verfügung. &lt;br /&gt;
&lt;br /&gt;
====1994====&lt;br /&gt;
Die Linux Version 1.0 wird freigegeben. Das Linux Fieber beginnt... &lt;br /&gt;
&lt;br /&gt;
====1998====&lt;br /&gt;
Der Kreis der Linux Entwickler und Anwender ist kräftig angeschwollen. KDE 1.0 wird veröffentlicht. Die Zuwachsraten von Linux übertreffen die von Windows NT deutlich. &lt;br /&gt;
&lt;br /&gt;
====1999====&lt;br /&gt;
Der lange erwartete stabile Linux Kernel Version 2.2 wird freigegeben. Namhafte Firmen wie IBM kündigen ihre Unterstützung für Linux an. &lt;br /&gt;
&lt;br /&gt;
====2001====&lt;br /&gt;
Der lange erwartete stabile Linux Kernel Version 2.4 wird freigegeben. USB Unterstützung und eine neue Firewallimplementierung zeichnen ihn aus.&lt;br /&gt;
&lt;br /&gt;
====2003====&lt;br /&gt;
Linux Kernel Version 2.6 wird freigegeben. Am auffälligsten sind Änderungen bei der Modulverwaltung.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Distributionen===&lt;br /&gt;
{| Border=1 Cellpadding=2&lt;br /&gt;
| &lt;br /&gt;
|Url&lt;br /&gt;
|Paketformat&lt;br /&gt;
|-&lt;br /&gt;
|Red Hat&lt;br /&gt;
|www.redhat.com&lt;br /&gt;
|rpm&lt;br /&gt;
|-&lt;br /&gt;
|fedora&lt;br /&gt;
|fedora.redhat.com&lt;br /&gt;
|rpm&lt;br /&gt;
|-&lt;br /&gt;
|CentOS&lt;br /&gt;
|www.centos.org&lt;br /&gt;
|rpm&lt;br /&gt;
|-&lt;br /&gt;
|Suse/openSUSE&lt;br /&gt;
|www.opensuse.org&lt;br /&gt;
|rpm&lt;br /&gt;
|-&lt;br /&gt;
|Debian&lt;br /&gt;
|www.debian.org&lt;br /&gt;
|deb&lt;br /&gt;
|-&lt;br /&gt;
|Ubuntu&lt;br /&gt;
|www.ubuntu.com&lt;br /&gt;
|deb&lt;br /&gt;
|-&lt;br /&gt;
|Mandrake&lt;br /&gt;
|www.linux-mandrake.com&lt;br /&gt;
|rpm&lt;br /&gt;
|-&lt;br /&gt;
|Easy Linux&lt;br /&gt;
|www.easy-linux.de&lt;br /&gt;
|rpm&lt;br /&gt;
|-&lt;br /&gt;
|Turbo&lt;br /&gt;
|www.turbolinux.com&lt;br /&gt;
|rpm&lt;br /&gt;
|-&lt;br /&gt;
|minis&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|toms&lt;br /&gt;
|www.toms.net/rb&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|damn small linux&lt;br /&gt;
|www.damnsmalllinux.org&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|pocket-linux&lt;br /&gt;
|www.pocket-linux.org&lt;br /&gt;
|&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
====Bücher====&lt;br /&gt;
 Titel : Das Linux Anwenderhandbuch und Leitfaden für die Systemverwaltung&lt;br /&gt;
 Autor : Sebastian Hetze, Dirk Hohndel, Olaf Kirch und Martin Müller&lt;br /&gt;
 Verlag: Lunetix&lt;br /&gt;
 ISBN : 3-929764-06-7&lt;br /&gt;
&lt;br /&gt;
 Titel : Linux in a Nutshell&lt;br /&gt;
 Autor : Jessica Perry Hekman und die Mitarbeiter von O'Reilly &amp;amp; Associates&lt;br /&gt;
 Verlag: O'Reilly&lt;br /&gt;
 ISBN : 3-930673-57-6&lt;br /&gt;
&lt;br /&gt;
 Titel : Linux - Wegweiser zur Installation und Konfiguration&lt;br /&gt;
 Autor : Matt Welsh, Lar Kaufman, Matthias Kalle Dallheimer&lt;br /&gt;
 Verlag: O'Reilly&lt;br /&gt;
 ISBN : 3-930673-58-4 (deutsch), 1-56592-469-X (englisch)&lt;br /&gt;
&lt;br /&gt;
 Titel : Linux - Installation, Konfiguration, Anwendung&lt;br /&gt;
 Autor : Michael KoflerMultitasking&lt;br /&gt;
 Verlag: Addison-Wesley&lt;br /&gt;
 ISBN : 3-8273-1475-5&lt;br /&gt;
&lt;br /&gt;
 Titel : Linux - Wegweiser für Netzwerker&lt;br /&gt;
 Autor : Olaf Kirch&lt;br /&gt;
 Verlag: O'Reilly&lt;br /&gt;
 ISBN : 3-930673-18-5&lt;br /&gt;
&lt;br /&gt;
 Titel : TCP/IP-Netzwerk-Administration&lt;br /&gt;
 Autor : Craig Hunt&lt;br /&gt;
 Verlag: O'Reilly&lt;br /&gt;
 ISBN : 3-89721-110-6&lt;br /&gt;
&lt;br /&gt;
 Titel : Essential System Administration&lt;br /&gt;
 Autor : Eleen Frisch&lt;br /&gt;
 Verlag: O'Reilly&lt;br /&gt;
 ISBN : 1-56592-127-5&lt;br /&gt;
&lt;br /&gt;
==Betriebssystem==&lt;br /&gt;
===Was ist ein Betriebssystem?===&lt;br /&gt;
&lt;br /&gt;
Ein Betriebssystem liegt logisch gesehen zwischenAnwendungsprogramm und Hardware.&lt;br /&gt;
&lt;br /&gt;
Es nimmt die Anforderungen der Anwendungsprogramme entgegen und leitet&lt;br /&gt;
diese kontrolliert an die Hardware weiter. Kein Anwendungsprogramm sollte&lt;br /&gt;
direkt auf die Hardware zugreifen können. Den zentralen Zugang schafft einzig&lt;br /&gt;
das Betriebssystem. Somit kann das Betriebssystem unsinnige Anforderungen&lt;br /&gt;
oder Bedienungsfehler abblocken.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Image:Linux.jpg]]&lt;br /&gt;
&lt;br /&gt;
===Aufgaben eines Betriebssystems===&lt;br /&gt;
&lt;br /&gt;
# Verbergen der Komplexität der Maschine vor dem Anwender (Abstraktion)&lt;br /&gt;
# Bereitstellen einer Benutzerschnittstelle (&amp;quot;Kommandointerpreter&amp;quot;, &amp;quot;Shell&amp;quot;)&lt;br /&gt;
# Bereitstellen einer normierten Programmierschnittstelle (API)&lt;br /&gt;
# Verwaltung der Ressourcen der Maschine::&lt;br /&gt;
Hauptspeicher&lt;br /&gt;
Prozessor(en)&lt;br /&gt;
Hintergrundspeicher (Platte, Band, etc.)&lt;br /&gt;
Geräte (Terminal, Drucker, Plotter, etc.)&lt;br /&gt;
Rechenzeit&lt;br /&gt;
Koordination von Prozessen&lt;br /&gt;
&lt;br /&gt;
===Aufbau eines Betriebssystems===&lt;br /&gt;
&lt;br /&gt;
Ein Rechensystem besteht aus Hardware, Systemprogrammen und Anwendungs-&lt;br /&gt;
programmen. Unter einem Betriebssystem wird meist die Summe aus Betriebs-&lt;br /&gt;
systemkern (Kernel) und den wichtigsten Systemprogrammen verstanden. Ein&lt;br /&gt;
minimaler LINUX-Kernel besitzt ungefähr eine Größe von 400 - 800 kByte.&lt;br /&gt;
Weitere wichtige Systemkomponenten benötigen zusätzlich 10 - 100 Mbyte&lt;br /&gt;
Plattenplatz.&lt;br /&gt;
&lt;br /&gt;
Ein Betriebssystem stellt den Rechner als erweiterte Maschine (virtuelle&lt;br /&gt;
Maschine) über definierte Software-Schnittstellen zur Verfügung.&lt;br /&gt;
Das Betriebssystem dient als Betriebsmittelverwalter, der Anforderungen&lt;br /&gt;
befriedigt, protokolliert, abrechnet und vermittelt.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Aufgaben des Betriebssystemkerns:&lt;br /&gt;
&lt;br /&gt;
{| Border=1 Cellpadding=2&lt;br /&gt;
|Prozessverwaltung  (dispatching and scheduling)&lt;br /&gt;
| Mehrere Benutzer können mit mehreren Aktionen gleichzeitig im System arbeiten, ohne sich gegenseitig zu beeinflussen. Damit dies möglich ist,  müssen die Aktionen organisiert, koordiniert und verwaltet werden. Die zu verwaltende Einheit nennt man Prozess.&lt;br /&gt;
|-&lt;br /&gt;
|Speicherverwaltung   (memory management)&lt;br /&gt;
|Zuteilen von Speicherbereichen an laufende Prozesse, Schutz der Speicherbereiche vor unbefugten Zugriffen, bei Speicherengpässen: Auslagern von ganzen (swapping) oder von Teilen (paging) von Prozessen auf die Platte (swap file).&lt;br /&gt;
|-&lt;br /&gt;
|Dateiverwaltung  (file handling)&lt;br /&gt;
|Zuteilung von Plattenplatz für Programme, Benutzer und Systemdienste, Schreiben, Lesen und Strukturieren der Daten auf den Massenspeichern; Durch Bereitstellung einer entsprechenden Schnittstelle (VFS, virtual file system) kann der Kern Dateisysteme unterschiedlichster Art (EXT2, FAT, NFS, HPFS, NTFS, ...) ansprechen.&lt;br /&gt;
|-&lt;br /&gt;
|Geräteverwaltung  (resource management)&lt;br /&gt;
|Der Kern ermöglicht und kontrolliert den Zugriff auf die Hardware. Er steuert die Ein- und Ausgabetätigkeiten der Anwender. An den Kern&lt;br /&gt;
gebunden sind die entsprechenden Gerätetreiber (device driver), die damit eine Kommunikation zwischen Kern und Hardware ermöglichen.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
===Multitasking===&lt;br /&gt;
&lt;br /&gt;
Multitasking bedeutet, dass ein Rechner aus Anwendersicht mehrere Aufgaben&lt;br /&gt;
(Tasks) gleichzeitg übernehmen kann. Das Betriebssystem (OS) unterteilt die&lt;br /&gt;
gleichzeitig anstehenden Aufgaben in Einzelarbeitsschritte (Prozesse) und&lt;br /&gt;
managed durch ein Zeitscheibenverfahren (scheduling) die gleichmäßige&lt;br /&gt;
Abarbeitung der Prozesse.&lt;br /&gt;
&lt;br /&gt;
Es wird unterschieden zwischen:&lt;br /&gt;
&lt;br /&gt;
*non-präamptiven (kooperativen=die Ressourcen werden vom aktiven Prozess freigegeben, bei einem Hänger steht das ganze System)&lt;br /&gt;
&lt;br /&gt;
und&lt;br /&gt;
&lt;br /&gt;
*präamptiven (reinem=der Betriebssystemkern steuert Taskwechsel, indem nach einer festgelegten Zeit vom gerade aktiven Prozess zum nächsten weitergeschaltet wird)&lt;br /&gt;
&lt;br /&gt;
===Mehrprozessorbetrieb===&lt;br /&gt;
&lt;br /&gt;
Bei mehreren Prozessoren und Unterstützung durch das OS&lt;br /&gt;
(NT,Linux,Unix,Novell) können mehrere Tasks auf diese verteilt werden und&lt;br /&gt;
gleichzeitig bearbeitet werden. Nachteilig ist, dass dies nicht oder kaum von&lt;br /&gt;
Anwendungsprogrammen unterstützt wird und es zu Kommunikationsproblemen&lt;br /&gt;
zwischen den einzelnen Tasks kommen kann.&lt;br /&gt;
&lt;br /&gt;
===Arten von von Betriebssystemen===&lt;br /&gt;
&lt;br /&gt;
{|Border=1 Cellpadding=2&lt;br /&gt;
|&lt;br /&gt;
|SingleUser  &lt;br /&gt;
|Multiuser&lt;br /&gt;
|-&lt;br /&gt;
|Single Tasking&lt;br /&gt;
|MS - DOS&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|Multi Tasking&lt;br /&gt;
|Windows 3.x&lt;br /&gt;
|UNIX&lt;br /&gt;
|-&lt;br /&gt;
|&lt;br /&gt;
|Windows 95/98&lt;br /&gt;
|Linux&lt;br /&gt;
|-&lt;br /&gt;
|&lt;br /&gt;
|Windows NT4 ohne Erweiterungen&lt;br /&gt;
|VMS&lt;br /&gt;
|-&lt;br /&gt;
|&lt;br /&gt;
|OS/2 &lt;br /&gt;
|Windows NT mit  Erweiterungen&lt;br /&gt;
|-&lt;br /&gt;
|&lt;br /&gt;
|Apple&lt;br /&gt;
|Windows 2000, XP, 2003&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
===SHELL===&lt;br /&gt;
&lt;br /&gt;
Wenn man mit Linux arbeiten will, kann man nicht direkt mit dem Betriebssystem&lt;br /&gt;
kommunizieren. Man braucht dazu ein Hilfsprogramm, welches die&lt;br /&gt;
Kommandoeingaben ordnungsgemäß an das Betriebssystem weiterleitet. Dieses&lt;br /&gt;
Hilfsprogramm hat den Namen Shell.&lt;br /&gt;
&lt;br /&gt;
Die Shell schirmt den Betriebssystemkern von den Anwendungsprogrammen ab.&lt;br /&gt;
Die unterschiedlichen Shells erfüllen alle dieselbe Aufgabe, sie unterscheiden sich&lt;br /&gt;
allerdings in ihrer Syntax.&lt;br /&gt;
&lt;br /&gt;
==Die Installation im Überblick==&lt;br /&gt;
&lt;br /&gt;
Die Installation von Linux geschieht in folgenden Schritten:&lt;br /&gt;
&lt;br /&gt;
# Analyse (Welche Hardware habe ich? ,Hab ich weitere Betriebsysteme?)&lt;br /&gt;
# Booten des Linux-Kernels. (von CD oder Diskette)&lt;br /&gt;
# Laden einer RAM-Disk (das macht das Installationsprogramm automatisch).&lt;br /&gt;
# Partitionieren der Festplatte (fdisk).&lt;br /&gt;
# Einrichten der Swappartition (mkswap), Formatieren der Festplatte (mkfs).&lt;br /&gt;
# Montieren der Dateisysteme (mount), Aktivieren der Swapbereiche (swapon).&lt;br /&gt;
# Kopieren und Auspacken der Daten vom Installationsmedium auf die Festplatte (die eigentliche Installation). (rpm, dpkg oder tar).&lt;br /&gt;
# Geeignete Wahl der Bootmethode unter Berücksichtigung von Punkt 1 (grub, lilo).&lt;br /&gt;
# Konfiguration des Systems (Netz, Modem etc...).&lt;br /&gt;
&lt;br /&gt;
==Erste Schritte==&lt;br /&gt;
===Anmelden===&lt;br /&gt;
Sie können sich nun mit dem Usernamen und dem Passwort, das sie bei der Installation angelegt haben anmelden!&lt;br /&gt;
[[Image:benutzer.jpg]]&lt;br /&gt;
&lt;br /&gt;
[[Image:passwd.jpg]]&lt;br /&gt;
&lt;br /&gt;
===Terminal öffnen===&lt;br /&gt;
&lt;br /&gt;
Ein Terminal öffnen Sie über das Startmenü:&lt;br /&gt;
&lt;br /&gt;
[[Image:Terminalde.jpg]]&lt;br /&gt;
&lt;br /&gt;
Das geöffnete Terminal sieht dann folgendermaßen aus:&lt;br /&gt;
&lt;br /&gt;
[[Image:Terminalde2.jpg]]&lt;br /&gt;
&lt;br /&gt;
===Sudo===&lt;br /&gt;
Rootrechte erlangen sie über den &amp;quot;Sudo&amp;quot;-Befehl&lt;br /&gt;
 &lt;br /&gt;
''Den nächsten Befehl als root ausführen''&lt;br /&gt;
 xinux@zero:~$ sudo cat /etc/shadow&lt;br /&gt;
 [sudo] password for xinux:&lt;br /&gt;
&lt;br /&gt;
''Eine komplette Sitzung als root starten''&lt;br /&gt;
 xinux@zero:~$ sudo -i&lt;br /&gt;
 [sudo] password for xinux:&lt;br /&gt;
 root@zero:~#&lt;br /&gt;
&lt;br /&gt;
===Virtuelle Konsolen===&lt;br /&gt;
&lt;br /&gt;
In die Virtuelle Konsole gelangen sie über &amp;quot;STRG+ALT+(F1-F6)&amp;quot;.&lt;br /&gt;
Sie funktioniert wie ein ganz normales Terminal, und mit &amp;quot;ALT+F7&amp;quot;&lt;br /&gt;
gelangen sie wieder zurück auf die grafische Benutzeroberfläche&lt;br /&gt;
&lt;br /&gt;
===Abmelden===&lt;br /&gt;
&lt;br /&gt;
Abmelden können Sie sich wieder über das Startmenu unter:&lt;br /&gt;
&lt;br /&gt;
[[Image:Logout.jpg]]&lt;br /&gt;
&lt;br /&gt;
Fals sie nur einzelne Sitzungen in einem der Terminals oder &lt;br /&gt;
den Virtuellen Konsolen Abmelden wollen benutzen sie dazu den Befehl: &amp;quot;exit&amp;quot;&lt;br /&gt;
&lt;br /&gt;
===Herunterfahren===&lt;br /&gt;
&lt;br /&gt;
Das Herunterfahren funktioniert auf dem selben Weg.&lt;br /&gt;
&lt;br /&gt;
Entweder sie Benutzen wieder das Startmenü und benutzen diesmal den &amp;quot;Ausschalten ...&amp;quot; Knopf,&lt;br /&gt;
&lt;br /&gt;
Oder sie geben den äquivalenten &amp;quot;shutdown&amp;quot;-Befehl in einem Terminal bzw. der virtuellen Konsole ein.&lt;br /&gt;
&lt;br /&gt;
Allerdings müssen sie dazu als Administrator angemeldet sein s. &amp;quot;Sudo&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Wenn Sie den &amp;quot;shutdown&amp;quot;-Befehl benutzen wollen muss hinter den Befehl&lt;br /&gt;
&lt;br /&gt;
eine Zeitangabe in Minuten oder das wort &amp;quot;now&amp;quot; für sofortiges Ausschalten hinzugefügt werden:&lt;br /&gt;
&lt;br /&gt;
 xinux@zero:~$ sudo -i&lt;br /&gt;
 root@zero:~# shutdown 60&lt;br /&gt;
 &lt;br /&gt;
 Broadcast message from xinux@zero &lt;br /&gt;
         (/dev/pts/3) at 14:29 ...&lt;br /&gt;
 &lt;br /&gt;
 The system is going down for maintenance in 60 minutes!&lt;br /&gt;
&lt;br /&gt;
Sollten sie den Befehl widerrufen wollen dann drücken sie &amp;quot;STRG+C&amp;quot;,&lt;br /&gt;
&lt;br /&gt;
in dem Terminal in dem der shutdown Befehl gestartet wurde,&lt;br /&gt;
&lt;br /&gt;
oder geben sie den &amp;quot;shutdown&amp;quot;-Befehl zusammen mit der Abbruchoption &amp;quot;-c&amp;quot; in einem anderen Terminal ein:&lt;br /&gt;
&lt;br /&gt;
 root@zero:~# shutdown -c&lt;br /&gt;
&lt;br /&gt;
 shutdown: Shutdown cancelled&lt;br /&gt;
 root@zero:~# &lt;br /&gt;
&lt;br /&gt;
Wenn Sie den Rechner Neustarten möchten gibt es dazu die Option &amp;quot;-r&amp;quot; für den &amp;quot;shutdown&amp;quot;-Befehl&lt;br /&gt;
&lt;br /&gt;
oder den &amp;quot;reboot&amp;quot;-Befehl die beide auch als root ausgeführt werden müssen:&lt;br /&gt;
&lt;br /&gt;
 xinux@zero:~$ sudo -i&lt;br /&gt;
 [sudo] password for xinux: &lt;br /&gt;
 root@zero:~# shutdown -r now&lt;br /&gt;
&lt;br /&gt;
 root@zero:~# reboot&lt;br /&gt;
&lt;br /&gt;
===&amp;quot;man&amp;quot;===&lt;br /&gt;
&lt;br /&gt;
Programm zum Einsehen der Online-Manuals&lt;br /&gt;
&lt;br /&gt;
Die Manuals sind in folgende Sektionen unterteilt:&lt;br /&gt;
# Ausführbare Programme oder Shellbefehle&lt;br /&gt;
# Systemaufrufe (Kernelfunktionen)&lt;br /&gt;
# Bibliotheksaufrufe (Funktionen in System-Bibliotheken)&lt;br /&gt;
# Spezielle Dateien (gewöhnlich in /dev)&lt;br /&gt;
# Dateiformate und Konventionen, z. B. /etc/passwd&lt;br /&gt;
# Spiele&lt;br /&gt;
# Makropakete und Konventionen, z. B. man(7), groff(7)&lt;br /&gt;
# Systemadministrationsbefehle (in der Regel nur für root)&lt;br /&gt;
# Kernelroutinen [Nicht Standard]&lt;br /&gt;
&lt;br /&gt;
Aufruf eines Manuals erfolgt durch ''man kommando''&lt;br /&gt;
Beendet wird durch Drücken des Buchstabens q&lt;br /&gt;
Gesucht wird vorwärts durch Eingabe eines /suchausdruck&lt;br /&gt;
Gesucht wird rückwärts durch Eingabe eines ?suchausdruck&lt;br /&gt;
&lt;br /&gt;
Beispiele:&lt;br /&gt;
&lt;br /&gt;
      man passwd        Anschauen der Manualseite zum Programm passwd&lt;br /&gt;
      man 5 passwd      Anschauen der Manualseite zur Datei /etc/passwd&lt;br /&gt;
      man -a passwd     Anschauen aller Manualseiten zu passwd&lt;br /&gt;
      man -k passwd     Durchsucht die Kurzbeschreibungen der Manualseite&lt;br /&gt;
                        nach passwd und gibt alle Treffer aus&lt;br /&gt;
      man -f passwd      Gibt alle gefunden Kurzbescheibungen zu passwd aus&lt;br /&gt;
      man -L en passwd Gibt englische Manualseiten aus&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Was geht vor auf meinem System? (date,who)===&lt;br /&gt;
&lt;br /&gt;
Das Kommando date dient zur Abfrage von Datum und Uhrzeit.&lt;br /&gt;
&lt;br /&gt;
 xinux@zero:~ &amp;gt; date&lt;br /&gt;
 Fre Mär 16 16:35:03 CET 2001&lt;br /&gt;
&lt;br /&gt;
oder auch Anzeige der Grennwich Zeit:&lt;br /&gt;
&lt;br /&gt;
 xinux@zero:~ &amp;gt; date -u&lt;br /&gt;
 Fre Mär 16 15:35:34 UTC 2001&lt;br /&gt;
&lt;br /&gt;
 xinux@zero:~ &amp;gt; date -u &amp;quot;+%X&amp;quot;&lt;br /&gt;
 15:37:19&lt;br /&gt;
&lt;br /&gt;
 xinux@zero:~ &amp;gt; date -u &amp;quot;+%x&amp;quot;&lt;br /&gt;
 01/15/02&lt;br /&gt;
&lt;br /&gt;
who zeigt alle angemeldeten Benutzer an&lt;br /&gt;
&lt;br /&gt;
 thomas@cardassia:~ &amp;gt; who&lt;br /&gt;
 thomas             tty1 Feb 27 16:39&lt;br /&gt;
 thomas             tty2 Mar 2 17:08&lt;br /&gt;
 tina               tty6 Mar 16 16:38&lt;br /&gt;
&lt;br /&gt;
Mit `who --help' bekommen Sie mehr Informationen.&lt;br /&gt;
&lt;br /&gt;
 thomas@cardassia:~ &amp;gt; who --help&lt;br /&gt;
&lt;br /&gt;
Benutzung: who [OPTION]... [ DATEI | ARG1 ARG2 ]&lt;br /&gt;
&lt;br /&gt;
 -H, --heading             print line of column headings&lt;br /&gt;
 -i, -u, --idle            add user idle time as HOURS:MINUTES, . or old&lt;br /&gt;
 -l, --lookup              attempt to canonicalize hostnames via DNS&lt;br /&gt;
 -m                        only hostname and user associated with stdin&lt;br /&gt;
 -q, --count               all login names and number of users logged on&lt;br /&gt;
 -s                        (ignored)&lt;br /&gt;
 -T, -w, --mesg            add user's message status as +, - or ?&lt;br /&gt;
     --message             same as -T&lt;br /&gt;
     --writable            same as -T&lt;br /&gt;
     --help                display this help and exit&lt;br /&gt;
     --version             output version information and exit&lt;br /&gt;
&lt;br /&gt;
==Das UNIX-Dateisystem==&lt;br /&gt;
===Verzeichnisbaum===&lt;br /&gt;
&lt;br /&gt;
[[Image:vztree.jpg]]&lt;br /&gt;
&lt;br /&gt;
Das Betriebssystem UNIX besitzt ein hierarchisches Dateisystem. Es besteht aus:&lt;br /&gt;
* Dateien (Files)&lt;br /&gt;
Dateien speichern Informationen (Text, Bilder, Sound, Videos, Programme) und&lt;br /&gt;
werden über den Dateinamen angesprochen.&lt;br /&gt;
&lt;br /&gt;
* Verzeichnissen (Directories, Kataloge)&lt;br /&gt;
Verzeichnisse besitzen ebenfalls einen Namen und dienen zur Ordnung des&lt;br /&gt;
Dateisystems. Ein Verzeichnis kann Dateien und Unterverzeichnisse&lt;br /&gt;
(Subdirectories) enthalten. Das oberste Verzeichnis im Dateisystem heisst&lt;br /&gt;
Rootverzeichnis oder kurz Root und wird durch / (sprich: slash)&lt;br /&gt;
gekennzeichnet.&lt;br /&gt;
&lt;br /&gt;
Im Gegensatz zu Windows kennt UNIX keine Laufwerke.&lt;br /&gt;
Das obige Bild zeigt ein typisches UNIX-Dateisystem.&lt;br /&gt;
Unterhalb des Rootverzeichnisses befinden sich eine Vielzahl vonVerzeichnissen.&lt;br /&gt;
&lt;br /&gt;
===Wichtige Verzeichnisse===&lt;br /&gt;
&lt;br /&gt;
• '''Homeverzeichnis'''&lt;br /&gt;
&lt;br /&gt;
das Verzeichnis, in dem man sich unmittelbar nach dem Anmelden befindet. Das&lt;br /&gt;
Homeverzeichnis wird vom Systemverwalter eingerichtet; jeder Anwender&lt;br /&gt;
besitzt ein festes Homeverzeichnis. z.B. /home/hans&lt;br /&gt;
&lt;br /&gt;
~ (Tilde) bzw. $HOME (Shellvariable) kennzeichnen das Homeverzeichnis.&lt;br /&gt;
&lt;br /&gt;
• '''Aktuelles Verzeichnis'''&lt;br /&gt;
&lt;br /&gt;
Verzeichnis, in dem man sich aktuell befindet.&lt;br /&gt;
Das aktuelle Verzeichnis wird mit dem Befehl cd (change directory) oder per&lt;br /&gt;
Mausklick verändert.&lt;br /&gt;
Ein einfacher Punkt . kennzeichnet das aktuelle Verzeichnis.&lt;br /&gt;
&lt;br /&gt;
• '''Elternverzeichnis'''&lt;br /&gt;
&lt;br /&gt;
Verzeichnis unmittelbar oberhalb des aktuellen Verzeichnisses.&lt;br /&gt;
Jedes Verzeichnis ausser / besitzt genau ein Elternverzeichnis.&lt;br /&gt;
Zwei Punkte .. kennzeichnen das Elternverzeichnis (abhängig vom aktuellen&lt;br /&gt;
VZ).&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Absoluter Pfadname:===&lt;br /&gt;
&lt;br /&gt;
Beschreibt ausgehend vom Rootverzeichnis den Weg zum Zielverzeichnis oder zur&lt;br /&gt;
Zieldatei. (Welche Verzeichnisse müssen ausgehend von / durchlaufen werden, um&lt;br /&gt;
zum Ziel zu kommen?) Ein absoluter Pfadname beginnt immer mit / .&lt;br /&gt;
&lt;br /&gt;
===Relativer Pfadname:===&lt;br /&gt;
&lt;br /&gt;
Beschreibt ausgehend vom aktuellen Verzeichnis den Weg zum Zielverzeichnis&lt;br /&gt;
oder zur Zieldatei; ein relativer Pfadname beginnt nicht mit / .&lt;br /&gt;
/home/suxer&lt;br /&gt;
absoluter Pfadname für das Verzeichnis sub1 im Homeverzeichnis von suxer&lt;br /&gt;
&lt;br /&gt;
===Verzeichnisstruktur===&lt;br /&gt;
&lt;br /&gt;
 /bin         Kommandos die beim starten benötigt werden (Zugriff hat jeder)&lt;br /&gt;
 /sbin        Wichtige System-Programme (In der Regel root vorberhalten)&lt;br /&gt;
 /boot        Hier findet man die Dateien des Bootmanagers und des Kernel.&lt;br /&gt;
 /dev         In diesem Verzeichnis stehen die Gerätedateien (Devices),&lt;br /&gt;
 /home        Alle Heimatverzeichnisse der Nutzer findet man hier.&lt;br /&gt;
 /lib         Beim Systemstart benötigten Bibliotheken und Modules stehen hier.&lt;br /&gt;
 /mnt         Mountpunkt für temporäre Partitionen&lt;br /&gt;
 /opt         Software, die nicht Installationsumfang von Linux gehören.&lt;br /&gt;
 /root        Heimatverzeichnis des Administrators.&lt;br /&gt;
 /tmp         Temporäre Dateien können hier abgelegt werden&lt;br /&gt;
 /usr         statische Dateien (kann read-only gemountet sein)&lt;br /&gt;
 /var         variable Dateien (muss beschreibar sein )&lt;br /&gt;
 /etc         Konfiguartionsdateien und Startscripte&lt;br /&gt;
 /proc        Virtuelles Dateisystem -&amp;gt; repräsentiert den Kernel&lt;br /&gt;
&lt;br /&gt;
===Unterverzeichnisse von /usr===&lt;br /&gt;
&lt;br /&gt;
 sbin         Programme für root die beim Start nicht benötigt werden&lt;br /&gt;
 bin          Programme für alle die beim Start nicht benötigt werden&lt;br /&gt;
 X11R6        Dateien des X-Window-Sytems&lt;br /&gt;
 bin          Ausführbare Programme&lt;br /&gt;
 doc          Dokumentationen&lt;br /&gt;
 etc          Konfigurationsdateien&lt;br /&gt;
 games        Spiele&lt;br /&gt;
 include      Headerdateien für C-Programme&lt;br /&gt;
 local        Pakete die nicht zur Distribution gehören ähnlich /opt&lt;br /&gt;
 share        Pakete die von mehreren Paketen genutzt werden&lt;br /&gt;
 share/man    Die Manualpages&lt;br /&gt;
 share/info   Seiten des Infosystems&lt;br /&gt;
 share/doc    Dokumentationen&lt;br /&gt;
 src          Sources von Programmen (Kernel und andere)&lt;br /&gt;
&lt;br /&gt;
===Unterverzeichnisse von /var===&lt;br /&gt;
&lt;br /&gt;
 cache        Zwischenspreicher für Progammes&lt;br /&gt;
 games        Variable Daten der Games (Scores etc...)&lt;br /&gt;
 lock         Sperrdateien&lt;br /&gt;
 log          Die Logdateien (wichtiges Verzeichnis für Admins)&lt;br /&gt;
 mail         Das Mailsystem&lt;br /&gt;
 run          Dateien zu laufemdem Prozessen&lt;br /&gt;
 spool        Spooldateien (z.B. für das Drucksystem&lt;br /&gt;
 state        Statusinfos&lt;br /&gt;
 tmp          Wie /tmp eventuell nicht auf root Partion&lt;br /&gt;
&lt;br /&gt;
==Einfache Komandos==&lt;br /&gt;
===cd: Wechseln des Arbeitsverzeichnis===&lt;br /&gt;
&lt;br /&gt;
Um festzustellen in welchem Verzeichnis man sich befindet, sollte man den&lt;br /&gt;
Befehl &amp;quot;pwd&amp;quot; benutzen,&lt;br /&gt;
&lt;br /&gt;
und mit dem Befehl &amp;quot;cd&amp;quot; kann man zwischen den Verzeichnissen wechseln:&lt;br /&gt;
&lt;br /&gt;
Wechsele ins homeverzeichnis von Xinux&lt;br /&gt;
&lt;br /&gt;
 xinux@zero:~$ cd /home/xinux/&lt;br /&gt;
 xinux@zero:~$ pwd&lt;br /&gt;
 /home/xinux&lt;br /&gt;
&lt;br /&gt;
cd ~ -&amp;gt; wechsele ins jeweilige Homeverzeichnis&lt;br /&gt;
&lt;br /&gt;
cd .. -&amp;gt; wechsele ein Verzeichnis höher&lt;br /&gt;
&lt;br /&gt;
cd ../verzeichnis -&amp;gt; wechsele in eine paralleles Verzeichnis &amp;lt;- (ist eine relative Pfadangabe !)&lt;br /&gt;
&lt;br /&gt;
cd - -&amp;gt; wechsele in das Verzeichnis, in dem vorher gearbeitet wurde.&lt;br /&gt;
&lt;br /&gt;
Mit cd / wechselt man in das Wurzelverzeichnis.&lt;br /&gt;
&lt;br /&gt;
 xinux@zero:/var/log$ cd /&lt;br /&gt;
 xinux@zero:/$ pwd&lt;br /&gt;
 /&lt;br /&gt;
&lt;br /&gt;
===ls: Listing===&lt;br /&gt;
&lt;br /&gt;
Den Inhalt von Verzeichnissen kann man sich mit dem Befehl &amp;quot;ls&amp;quot; anzeigen lassen&lt;br /&gt;
wobei &amp;quot;ls&amp;quot; eine Vielzahl von Optionen besitzt:&lt;br /&gt;
&lt;br /&gt;
 ls                                  standard&lt;br /&gt;
 ls -l                               langes listing&lt;br /&gt;
 ls -a                               alle Dateien&lt;br /&gt;
 ls -i                               mit Inode&lt;br /&gt;
 ls -h                               gut lesbare Dateigröße&lt;br /&gt;
 ls -d                               Verzechnis wird angezeigt, nicht der Inhalt&lt;br /&gt;
 ls -L                               sortiert nach Größe&lt;br /&gt;
 ls -t                               sortiert nach Datum&lt;br /&gt;
 ls -F                               mit nützlichem Anhang&lt;br /&gt;
&lt;br /&gt;
 xinux@zero:/$ ls -l /var/log/messages&lt;br /&gt;
 -rw-r----- 1 syslog adm 2296 2009-06-16 10:05 /var/log/messages&lt;br /&gt;
&lt;br /&gt;
===more: Seitenweises Anzeigen von Seiten===&lt;br /&gt;
 root@zero:~# more /var/log/messages&lt;br /&gt;
 ...&lt;br /&gt;
&lt;br /&gt;
===head: erste Zeilen anzeigen===&lt;br /&gt;
Erste 10 Zeilen anzeigen&lt;br /&gt;
 root@zero:~# head /var/log/messages&lt;br /&gt;
 Jun 15 12:37:08 zero syslogd 1.5.0#5ubuntu3: restart.&lt;br /&gt;
 Jun 15 12:38:43 zero kernel: [  830.065036] mtrr: your processor doesn't support write-combining&lt;br /&gt;
 Jun 15 12:46:05 zero pulseaudio[4817]: pid.c: Stale PID file, overwriting.&lt;br /&gt;
 Jun 15 13:05:24 zero -- MARK --&lt;br /&gt;
 ...&lt;br /&gt;
&lt;br /&gt;
Erste zwei Zeilen anzeigen&lt;br /&gt;
 root@zero:~# head -n 2 /var/log/messages&lt;br /&gt;
 Jun 15 12:37:08 zero syslogd 1.5.0#5ubuntu3: restart.&lt;br /&gt;
 Jun 15 12:38:43 zero kernel: [  830.065036] mtrr: your processor doesn't support write-combining&lt;br /&gt;
&lt;br /&gt;
===tail: letzte Zeilen anzeigen===&lt;br /&gt;
 &lt;br /&gt;
 root@zero:~# tail /var/log/syslog&lt;br /&gt;
 ...&lt;br /&gt;
 Jun 19 11:19:35 zero -- MARK --&lt;br /&gt;
 Jun 19 11:39:35 zero -- MARK --&lt;br /&gt;
 Jun 19 11:59:36 zero -- MARK --&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Letze 5 Zeilen anzeigen&lt;br /&gt;
 root@zero:~# tail -n 5 /var/log/auth.log&lt;br /&gt;
 Jun 18 14:30:01 zero CRON[12040]: pam_unix(cron:session): session closed for user root&lt;br /&gt;
 Jun 18 14:39:01 zero CRON[12191]: pam_unix(cron:session): session opened for user root by (uid=0)&lt;br /&gt;
 Jun 18 14:39:01 zero CRON[12191]: pam_unix(cron:session): session closed for user root&lt;br /&gt;
 Jun 18 14:40:01 zero CRON[12237]: pam_unix(cron:session): session opened for user root by (uid=0)&lt;br /&gt;
 Jun 18 14:40:01 zero CRON[12237]: pam_unix(cron:session): session closed for user root&lt;br /&gt;
&lt;br /&gt;
Letze Zeilen anzeigen und fortlaufend aktualisieren&lt;br /&gt;
 root@zero:~# tail -f /var/log/syslog&lt;br /&gt;
 ...&lt;br /&gt;
&lt;br /&gt;
===mkdir: Ein neues Verzeichnis erstellen===&lt;br /&gt;
&lt;br /&gt;
 mkdir        verzeichnis&lt;br /&gt;
Erstellt ein Verzeichnis im working directory (wd)&lt;br /&gt;
&lt;br /&gt;
 mkdir  -p    ver1/ver2&lt;br /&gt;
Erstellt ein Verzeichnis ver2 unterhalb von ver1&lt;br /&gt;
wenn ver1 nicht existiert wird es erstellt&lt;br /&gt;
&lt;br /&gt;
 mkdir -m 753 ver1&lt;br /&gt;
Es wird das Verzeichnis ver1 erstellt mit der mask 753&lt;br /&gt;
&lt;br /&gt;
 mkdir -v     ver1&lt;br /&gt;
Geschwätzige Ausgabe :)&lt;br /&gt;
&lt;br /&gt;
===Zum Löschen von leeren Verzeichnissen wird rmdir benutzt===&lt;br /&gt;
&lt;br /&gt;
 rmdir           ver1&lt;br /&gt;
Löscht das leere Verzeichnis ver1&lt;br /&gt;
&lt;br /&gt;
 rmdir -v        ver1&lt;br /&gt;
Löscht das leere Verzeichnis ver1 und ist geschwätzig&lt;br /&gt;
&lt;br /&gt;
 rmdir -p        /ver1/ver2/ver3&lt;br /&gt;
Löscht das Verzeichnis ver3; wenn dadurch ver2 ein leeres&lt;br /&gt;
Verzeichnis wird, wird dieses auch gelöscht , wenn ver1&lt;br /&gt;
dadurch ein leeres Verzeichnis wird, wird auch dieses gelöscht.&lt;br /&gt;
&lt;br /&gt;
===touch Verändern des Zeitstempels===&lt;br /&gt;
&lt;br /&gt;
Mit touch können wir eine neue leere Datei erzeugen (das ist nicht der eigentliche&lt;br /&gt;
Zweck von touch, eigentlich wird der Zeitstempel geändert)&lt;br /&gt;
&lt;br /&gt;
 touch            dateiname&lt;br /&gt;
&lt;br /&gt;
===Kopieren=== &lt;br /&gt;
cp ist das Kommando um Dateien zu kopieren &lt;br /&gt;
&lt;br /&gt;
Eine Kopie von dat1 mit dem Namen dat2 erstellen:&lt;br /&gt;
&lt;br /&gt;
 xinux@zero:~$ cp dat1 dat2&lt;br /&gt;
&lt;br /&gt;
Eine Kopie von dat1 ins Verzeichnis ver2 erstellen:&lt;br /&gt;
&lt;br /&gt;
 xinux@zero:~$ cp dat1 ver2/&lt;br /&gt;
 &lt;br /&gt;
Eine Kopie erstellen mit ausführlicher Anzeige:&lt;br /&gt;
&lt;br /&gt;
 xinux@zero:~$ cp -v dat1 dat2&lt;br /&gt;
 `dat1' -&amp;gt; `dat2'&lt;br /&gt;
&lt;br /&gt;
Eine Kopie erstellen mit Rückfrage fals etwas überschrieben wird:&lt;br /&gt;
&lt;br /&gt;
 xinux@zero:~$ cp -i dat1 dat2&lt;br /&gt;
 cp: overwrite `dat2'?&lt;br /&gt;
&lt;br /&gt;
Eine Kopie erstellen und die Rückfrage überbrücken:&lt;br /&gt;
&lt;br /&gt;
 xinux@zero:~$ cp -f dat1 dat2&lt;br /&gt;
&lt;br /&gt;
Eine Kopie von dat1 ins Verzeichnis ver2 erstellen fals keine neuere Version von dat1 vorliegt:&lt;br /&gt;
&lt;br /&gt;
 xinux@zero:~$ cp -u dat1 ver2/&lt;br /&gt;
&lt;br /&gt;
Eine Kopie erstellen fals ver2 auf dem selben Dateisystem wie dat1 liegt:&lt;br /&gt;
&lt;br /&gt;
 xinux@zero:~$ cp -x dat1 ver2/&lt;br /&gt;
&lt;br /&gt;
Eine Kopie von ver1, die als ver2 oder unter ver2 als ver1 gespeichert wird erstellen:&lt;br /&gt;
&lt;br /&gt;
 xinux@zero:~$ cp -r ver1/ ver2/&lt;br /&gt;
&lt;br /&gt;
Eine Kopie von einer Datei erstellen und ihre Attribute beibehalten:&lt;br /&gt;
&lt;br /&gt;
 xinux@zero:~$ cp -p sux1 sux2&lt;br /&gt;
&lt;br /&gt;
Eine Kopie erstellen bei der die Links erhalten bleiben:&lt;br /&gt;
&lt;br /&gt;
 xinux@zero:~$ cp -r ver1/ ver2/&lt;br /&gt;
&lt;br /&gt;
Eine Kopie erstellen zum Archivieren (-dpr):&lt;br /&gt;
&lt;br /&gt;
 xinux@zero:~$ cp -a ver1/ ver2/&lt;br /&gt;
&lt;br /&gt;
===rm: Löschen einer Datei===&lt;br /&gt;
&lt;br /&gt;
Um Dateien zu löschen, brauchen wir das Kommando &amp;quot;rm&amp;quot;:&lt;br /&gt;
&lt;br /&gt;
 rm               dat1        dat1 wird gelöscht&lt;br /&gt;
 rm         -i    dat1        dat1 wird nach Bestätigung gelöscht&lt;br /&gt;
 rm         -f    dat1        dat1 wird ohne Rückfragen gelöscht&lt;br /&gt;
 rm         -v    dat1        dat1 wird glöscht (geschwätzige Ausgabe)&lt;br /&gt;
 rm         -r    ver1        Löschen von nicht leeren Verzeichnissen&lt;br /&gt;
                              Achtung !!! Als root kann man sich damit Teile&lt;br /&gt;
                              oder sogar den gesamten Verzeichnisbaum&lt;br /&gt;
                              absägen !!!&lt;br /&gt;
&lt;br /&gt;
===mv: Verschieben===&lt;br /&gt;
&lt;br /&gt;
Mit dem Befehl &amp;quot;mv&amp;quot; werden Daten verschoben, folgendes gilt:&lt;br /&gt;
&lt;br /&gt;
 mv          dat1 dat2         &lt;br /&gt;
Die Datei dat1 wird in dat2 umbenannt&lt;br /&gt;
 mv          dat1 /ver1        &lt;br /&gt;
Die Datei dat1 wird nach /ver1 verschoben&lt;br /&gt;
&lt;br /&gt;
Die Parameter und ihre Bedeutung:&lt;br /&gt;
&lt;br /&gt;
      -i                      wenn eine Datei exisitiert wird vor dem&lt;br /&gt;
                              Überschreiben nachgefragt&lt;br /&gt;
      -v                      verbose (geschwätzig)&lt;br /&gt;
      -u                      nur neuere Daten werden bei Bedarf überschrieben&lt;br /&gt;
      -b                      wenn überschrieben werden soll, wird ein Backup&lt;br /&gt;
                              erstellt&lt;br /&gt;
      -S ENDUNG               das Backup bekommt die Endung ENDUNG&lt;br /&gt;
&lt;br /&gt;
===su Benutzer wechseln===&lt;br /&gt;
&lt;br /&gt;
 su -             &lt;br /&gt;
Wechsel zum Rootaccount, wie wenn dieser sich neu anmelden würde. (Bsp: su -)&lt;br /&gt;
&lt;br /&gt;
 su Benutzernamen &lt;br /&gt;
Wechsel der Identität zu Benutzer (gegebenenfalls Passwortabfrage)&lt;br /&gt;
&lt;br /&gt;
 su -c Kommando   &lt;br /&gt;
Kommando wird als rootaccount ausgeführt&lt;br /&gt;
&lt;br /&gt;
==Der Standard Editor vi==&lt;br /&gt;
Der vi ist der Standardeditor in der Unixwelt. Er ist in jedem Unix-Derivat&lt;br /&gt;
enthalten.&lt;br /&gt;
Der Editor hat zwar den schlechten Ruf umständlich zu bedienen zu sein, ist&lt;br /&gt;
jedoch sehr leistungsfähig und systemübergreifend verfügbar. Beim vi handelt es&lt;br /&gt;
sich um einen rein textorientierten Editor, der mittels eigener Kommandos&lt;br /&gt;
gesteuert wird.&lt;br /&gt;
&lt;br /&gt;
Der Editor VIM ist eine weitere Verbesserung von VI und leichter zu bedienen.&lt;br /&gt;
Und unter Ubuntu/Debian mit &amp;quot;apt-get install vim&amp;quot; zu installieren.&lt;br /&gt;
&lt;br /&gt;
===Starten des Editors:===&lt;br /&gt;
&lt;br /&gt;
Der Editorstart erfolgt einfach durch die Eingabe des Kommandos vi mit dem&lt;br /&gt;
Dateinamen der zu editierenden Datei als Parameter.&lt;br /&gt;
Beispiel:        &lt;br /&gt;
 vi sux.txt&lt;br /&gt;
&lt;br /&gt;
===Die Betriebsmodi des vi:===&lt;br /&gt;
&lt;br /&gt;
Ein Umstand, der dem vi den Ruf der komplizierten Bedienbarkeit zugetragen hat,&lt;br /&gt;
sind die unterschiedlichen Betriebsmodi des Editors. Genauer gesagt verfügt der&lt;br /&gt;
vi über drei Betriebsmodi:&lt;br /&gt;
&lt;br /&gt;
====Kommandomodus:====&lt;br /&gt;
&lt;br /&gt;
Innerhalb dieses Modus werden die eingegebenen Zeichen direkt als Befehle des&lt;br /&gt;
Editors interpretiert und ausgeführt. Dabei gibt es weder ein Bereitschaftszeichen&lt;br /&gt;
(Prompt) noch ein Echo (Ausgabe). Der Kommandomodus ist der Modus, in dem&lt;br /&gt;
sich der vi direkt nach seinem Start befindet.&lt;br /&gt;
&lt;br /&gt;
====Zeilenmodus oder Exmodus:====&lt;br /&gt;
&lt;br /&gt;
Dieser Modus ist der einzige Modus mit einem eigenen Bereitschaftszeichen,&lt;br /&gt;
nämlich dem Doppelpunkt (:). Das Prompt wird ebenso wie die Befehlsausgaben&lt;br /&gt;
in der Statuszeile angezeigt.&lt;br /&gt;
&lt;br /&gt;
====Eingabemodus:====&lt;br /&gt;
&lt;br /&gt;
Der Eingabemodus ist derjenige, in welchem der zu bearbeitende Text bearbeitet&lt;br /&gt;
werden kann. Alle hier eingegebenen Zeichen werden als Text für die aktuelle&lt;br /&gt;
Datei interpretiert. Zwischen den unterschiedlichen Modi kann jederzeit&lt;br /&gt;
gewechselt werden. Von Kommandomodus gelangen Sie durch mehere Wege in&lt;br /&gt;
den Eingabemodus. Man kann durch folgende Aktionen wechslen&lt;br /&gt;
&lt;br /&gt;
{| border=1 cellpadding=2&lt;br /&gt;
|i&lt;br /&gt;
|Text vor der aktuellen Cursorposition einfügen&lt;br /&gt;
|-&lt;br /&gt;
|I&lt;br /&gt;
|Text am Zeilenanfang einfügen&lt;br /&gt;
|-&lt;br /&gt;
|a&lt;br /&gt;
|Text hinter der aktuellen Cursorposition einfügen&lt;br /&gt;
|-&lt;br /&gt;
|A&lt;br /&gt;
|Text am Zeilenende einfügen&lt;br /&gt;
|-&lt;br /&gt;
|o&lt;br /&gt;
|Unterhalb der aktuellen Zeile eine neue Zeile einfügen&lt;br /&gt;
|-&lt;br /&gt;
|O&lt;br /&gt;
|Oberhalb der aktuellen Zeile eine neue Zeile einfügen&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Durch das Drücken der ESC - Taste gelangt man in den Kommandomodus zurück.&lt;br /&gt;
&lt;br /&gt;
Im Kommandomodus können Sie durch den Text navigieren und auch den Text&lt;br /&gt;
selbst bearbeiten, z.B ausschneiden, kopieren usw. Dazu sind einige Kommandos&lt;br /&gt;
nötig, von denen die wichtigsten im Folgenden erläutert werden:&lt;br /&gt;
&lt;br /&gt;
 xinux@zero:/$ vi iwas.txt&lt;br /&gt;
&lt;br /&gt;
[[Image:vim.jpg]]&lt;br /&gt;
&lt;br /&gt;
===Benutzen des Kommandomodus===&lt;br /&gt;
====Steuerung des Cursors durch den Text====&lt;br /&gt;
&lt;br /&gt;
Mittels folgender Kommandos bewegt sich der Cursor durch den Text:&lt;br /&gt;
&lt;br /&gt;
{| border=1 cellpadding=2&lt;br /&gt;
|h&lt;br /&gt;
|Cursor ein Zeichen nach links&lt;br /&gt;
|-&lt;br /&gt;
|l&lt;br /&gt;
|Cursor ein Zeichen nach rechts&lt;br /&gt;
|-&lt;br /&gt;
|k&lt;br /&gt;
|Cursor eine Zeile nach oben&lt;br /&gt;
|-&lt;br /&gt;
|j&lt;br /&gt;
|Cursor eine Zeile nach unten&lt;br /&gt;
|-&lt;br /&gt;
|w&lt;br /&gt;
|Cursor ein Wort nach rechts&lt;br /&gt;
|-&lt;br /&gt;
|b&lt;br /&gt;
|Cursor ein Wort nach links&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Alle diese Kommandos können mit einem vorgestellten Wiederholungsfaktor&lt;br /&gt;
arbeiten. Der Befehl 3w verschiebt demnach den Cursor um 3 Wörter nach rechts.&lt;br /&gt;
&lt;br /&gt;
====Angaben zur Positionierung====&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{| border=1 cellpadding=2&lt;br /&gt;
|STRG+U&lt;br /&gt;
|1⁄2 Bildschirmseite nach oben&lt;br /&gt;
|-&lt;br /&gt;
|STRG+D&lt;br /&gt;
|1⁄2 Bildschirmseite nach unten&lt;br /&gt;
|-&lt;br /&gt;
|STRG+B&lt;br /&gt;
|1 Bildschirmseite nach oben&lt;br /&gt;
|-&lt;br /&gt;
|STRG+F&lt;br /&gt;
|1 Bildschirmseite nach unten&lt;br /&gt;
|-&lt;br /&gt;
|/Ausdruck&lt;br /&gt;
|Sucht den Ausdruck (vorwärts) Weitersuchen mit n , N&lt;br /&gt;
|-&lt;br /&gt;
|?Ausdruck&lt;br /&gt;
|Sucht den Ausdurck (rückwärts) Weitersuchen mit n , N&lt;br /&gt;
|-&lt;br /&gt;
|0&lt;br /&gt;
|Zeilenanfang&lt;br /&gt;
|-&lt;br /&gt;
|$&lt;br /&gt;
|Zeilenende&lt;br /&gt;
|-&lt;br /&gt;
|w&lt;br /&gt;
|Nächstes Wort&lt;br /&gt;
|-&lt;br /&gt;
|b&lt;br /&gt;
|Vorheriges Wort&lt;br /&gt;
|-&lt;br /&gt;
|fc&lt;br /&gt;
|Auf das Zeichen c springen. c steht für ein beliebiges Zeichen&lt;br /&gt;
|-&lt;br /&gt;
|G&lt;br /&gt;
|Letzte Zeile der Datei&lt;br /&gt;
|-&lt;br /&gt;
|ng&lt;br /&gt;
|n-te Zeile der Datei&lt;br /&gt;
|-&lt;br /&gt;
|H&lt;br /&gt;
|Anfang der Bildschirmseite&lt;br /&gt;
|-&lt;br /&gt;
|L&lt;br /&gt;
|Ende der Bildschirmseite&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
====Befehle zur Textbearbeitung -&amp;gt; Was soll geschehen====&lt;br /&gt;
&lt;br /&gt;
{| Border=1 Cellpadding=2&lt;br /&gt;
|x&lt;br /&gt;
|Löscht Zeichen&lt;br /&gt;
|-&lt;br /&gt;
|d&lt;br /&gt;
|Löschen und in den Puffer laden&lt;br /&gt;
|-&lt;br /&gt;
|c&lt;br /&gt;
|Ändern&lt;br /&gt;
|-&lt;br /&gt;
|y&lt;br /&gt;
|In den Puffer laden&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
====Weitere wichtige Befehle:====&lt;br /&gt;
&lt;br /&gt;
{| Border=1 Cellpadding=2&lt;br /&gt;
|p&lt;br /&gt;
|Aus dem Puffer einfügen&lt;br /&gt;
|-&lt;br /&gt;
|u&lt;br /&gt;
|Undo, macht den letzten Befehl rückgängig&lt;br /&gt;
|-&lt;br /&gt;
|STRG+R&lt;br /&gt;
|Redo, macht den letzten Undo rückgängig&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
===Zeilen- oder Exmodus===&lt;br /&gt;
&lt;br /&gt;
Wie schon erwähnt wird der Zeilen oder Exmodus durch einen : eingeleitet.&lt;br /&gt;
Es folgen einige Beispiele.&lt;br /&gt;
&lt;br /&gt;
Befehle zum Speichern und Beenden:&lt;br /&gt;
&lt;br /&gt;
 :w          Schreibt Datei&lt;br /&gt;
 :w Datei2   Schreibt eine Kopie in Datei2&lt;br /&gt;
 :w !        Schreibt Datei (übergehe Schreibschutz)&lt;br /&gt;
 :w ! Datei2 Schreibt eine Kopie in Datei2 (übergehe Schreibschutz)&lt;br /&gt;
 :q          Schließe Datei&lt;br /&gt;
 :q!         Schließe Datei (verwerfe Änderungen)&lt;br /&gt;
 :wq         Schreibe Datei und beende Editor&lt;br /&gt;
 :wq!        Schreibe Datei und beende Editor (übergehe Schreibschutz)&lt;br /&gt;
 :q!         Schließe Datei (verwerfe Änderungen)&lt;br /&gt;
 :h          Hilfe anzeigen, durch drücken von :q Beenden der Hilfe&lt;br /&gt;
 :e Datei3   Editiere Datei3&lt;br /&gt;
 :e #        Editere vorhergehende Datei&lt;br /&gt;
 :1,3co9     Kopiere von der ersten bis zu dritten Zeile &lt;br /&gt;
             und füge den Inhalt unterhalb der neunte Zeile ein.&lt;br /&gt;
&lt;br /&gt;
Interaktionen mit Unix:&lt;br /&gt;
&lt;br /&gt;
 :r Datei4   Fügt Inhalt der Datei4 nach dem Cursor ein&lt;br /&gt;
 :r ! Befehl Fügt Ausgabe des Befehls nach dem Cursor ein&lt;br /&gt;
 :! Befehl   Führt den Befehl aus&lt;br /&gt;
 :sh         Starte Subshell -&amp;gt; mit exit kehrt man wieder zurück&lt;br /&gt;
             Eingabemodus zurück&lt;br /&gt;
&lt;br /&gt;
====Ersetzen von Textteilen====&lt;br /&gt;
&lt;br /&gt;
Die grundsätzliche Syntax lautet:&lt;br /&gt;
&lt;br /&gt;
 :[Zeilennummer,Zeilennummer]s/Muster/Ersetzung/[gc]&lt;br /&gt;
&lt;br /&gt;
 :s/worf/kirn/              der erste worf wird in der aktuellen Zeile durch kirn ersetzt&lt;br /&gt;
 :1,9s/worf/kirn/g          von der 1. bis zur 9. Zeile werden alle worf durch kirn ersetzt&lt;br /&gt;
 :1,$s/worf/kirn/           von der ersten bis zur letzten Zeile ersetze ersten worf durch&lt;br /&gt;
                            kirn&lt;br /&gt;
 :.,$s/worf/kirn/g          von der aktuellen bis zur letzten Zeile ersetze alle worf durch&lt;br /&gt;
                            kirn&lt;br /&gt;
 :1,.s/worf/kirn/c          von der 1. bis zur aktuellen Zeile ersetze worf durch kirn, frage&lt;br /&gt;
                            aber nach&lt;br /&gt;
 :1,$s/^worf/kirn/          von der ersten bis zur letzten Zeile ersetze worf am&lt;br /&gt;
                            Zeilenanfang durch kirn&lt;br /&gt;
 :4,$s/worf$/kirn/          von der 4. bis zur letzten Zeile ersetze worf am Zeilenende&lt;br /&gt;
                            durch kirn&lt;br /&gt;
 :1,$s/^#//                 lösche alle Kommentarzeichen&lt;br /&gt;
 :1,$s/^.orf/kirn/           ersetze alles was am Zeilenanfang ein beliebiges Zeichen hat&lt;br /&gt;
                            gefolgt von einem orf durch kirn&lt;br /&gt;
 :1,$s/^[A-Z]orf/kirn/g     suche nach einem Großbuchstaben am Anfang der Zeile&lt;br /&gt;
                            gefolgt von einem orf und ersetze durch kirn&lt;br /&gt;
 :1,$s/^M[ae][iy]e*r/kirn/  suche alles, was am Anfang der Zeile ein großes M enthält,&lt;br /&gt;
                            gefolgt von einem a oder e , gefolgt von einem i oder y ,&lt;br /&gt;
                            gefolgt von einem e , welches 0 oder N mal vorkommen kann,&lt;br /&gt;
                            gefolgt von einem r und ersetze es durch kirn&lt;br /&gt;
&lt;br /&gt;
==Reguläre Ausdrücke==&lt;br /&gt;
&lt;br /&gt;
{| Border=1 Cellpadding=2&lt;br /&gt;
|c&lt;br /&gt;
|Ein einzelner Buchstabe passt auf sich selbst&lt;br /&gt;
|-&lt;br /&gt;
|.&lt;br /&gt;
|Ein Punkt passt auf jedes Zeichen außer auf das Zeilenende&lt;br /&gt;
|-&lt;br /&gt;
|*&lt;br /&gt;
|Das dem Operator * vorangehende Muster kann 0 oder öfter vorkommen&lt;br /&gt;
|-&lt;br /&gt;
|^&lt;br /&gt;
|(Caret) passt auf den Zeilenanfang&lt;br /&gt;
|-&lt;br /&gt;
|$&lt;br /&gt;
|Passt auf das Zeilenende&lt;br /&gt;
|-&lt;br /&gt;
|\&lt;br /&gt;
|Das folgende Sonderzeichen wird entwertet&lt;br /&gt;
|-&lt;br /&gt;
|[...]&lt;br /&gt;
|Passt auf &amp;quot;genau&amp;quot; eins in [...] angebenen Zeichen&lt;br /&gt;
|-&lt;br /&gt;
|[^...]&lt;br /&gt;
|Passt auf &amp;quot;genau&amp;quot; ein Zeichen welches nicht in [...] angebenen ist&lt;br /&gt;
|-&lt;br /&gt;
|\&amp;lt;&lt;br /&gt;
|Passt auf den Wortanfang&lt;br /&gt;
|-&lt;br /&gt;
|\&amp;gt;&lt;br /&gt;
|Passt auf das Wortende&lt;br /&gt;
|-&lt;br /&gt;
|\+&lt;br /&gt;
|Das dem Operator \+ vorangehende Muster kann 1 oder öfter vorkommen&lt;br /&gt;
|-&lt;br /&gt;
|&amp;amp;&lt;br /&gt;
|Setzt das gefunden Suchmuster ein&lt;br /&gt;
|-&lt;br /&gt;
|\(...\)&lt;br /&gt;
|Speichert den Text auf den das Suchmuster passt zur späteren Verwendung&lt;br /&gt;
|-&lt;br /&gt;
|\n&lt;br /&gt;
|Setzt das vorangehende, mit \(...\) Gefundene wieder ein&lt;br /&gt;
|-&lt;br /&gt;
|(...)&lt;br /&gt;
|Gruppiert Auswahlmöglichkeiten&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;nowiki&amp;gt;|&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
|Trennt Auswahlmöglichkeiten&lt;br /&gt;
|-&lt;br /&gt;
|\b&lt;br /&gt;
|Passt auf den Anfang oder das Ende eines Wortes&lt;br /&gt;
|-&lt;br /&gt;
|\B&lt;br /&gt;
|Symbolisiert den Raum innerhalb eines Wortes&lt;br /&gt;
|-&lt;br /&gt;
|\w&lt;br /&gt;
|Passt auf alle alphanumerischen Zeichen [A-Za-z0-9]&lt;br /&gt;
|-&lt;br /&gt;
|\W&lt;br /&gt;
|Passt auf alle nichtalphanumerischen Zeichen [^A-Za-z0-9]&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Die Rangfolge der Operatoren(von der höchsten zur niedrigsten)&lt;br /&gt;
:(, ), ?, *, + | .&lt;br /&gt;
&lt;br /&gt;
Die anderen Operatoren sind mit den anderen Buchstaben gleichrangig.&lt;br /&gt;
&lt;br /&gt;
===Beispiel zum Suchen===&lt;br /&gt;
&lt;br /&gt;
 Suchmuster               Passt auf&lt;br /&gt;
 ^Tuxer                   Tuxer am Zeilenanfang&lt;br /&gt;
 [tT]uxer                 Tuxer oder tuxer&lt;br /&gt;
 80[23]?86                8086, 80286 oder 80386&lt;br /&gt;
&lt;br /&gt;
===grep===&lt;br /&gt;
&lt;br /&gt;
Mit grep ist es möglich, in Dateien nach regulären Ausdrücken zu suchen. Wenn&lt;br /&gt;
eine Übereinstimmung gefunden wird, wird die komplette Zeile auf die&lt;br /&gt;
Standardausgabe geschrieben. grep kann auch von STDIN lesen.Es ist&lt;br /&gt;
empfehlenswert, sich anzugwöhnen ,das Suchmuster in Anführungszeichen zu&lt;br /&gt;
schreiben. Es gibt 3 Arten fgrep = fastgrep , grep und egrep egrep&lt;br /&gt;
&lt;br /&gt;
Beispiel:&lt;br /&gt;
&lt;br /&gt;
 root@zero:~# cat text&lt;br /&gt;
 quatsch&lt;br /&gt;
 quatsch&lt;br /&gt;
 quatsch&lt;br /&gt;
 wichtig&lt;br /&gt;
 quatsch&lt;br /&gt;
 root@zero:~# grep wichtig text&lt;br /&gt;
 wichtig&lt;br /&gt;
 root@zero:~# &lt;br /&gt;
&lt;br /&gt;
 -c                   meldet nur die Gesamtzahl der Fundstellen&lt;br /&gt;
 -v                   zeigt nur Zeilen, die »Ausdruck« nicht enthalten&lt;br /&gt;
 -i                   ignoriert Groß- und Kleinschreibung&lt;br /&gt;
 -l                    meldet nur Dateinamen mit Fundstellen&lt;br /&gt;
 -n                   listet Zeilennummern zu jeder Fundstelle&lt;br /&gt;
 -f                   Dateiname »Dateiname« enthält die Such-Ausdrücke&lt;br /&gt;
 -E                   ist ein erweiterter regulärer Ausdruck (egrep)&lt;br /&gt;
 -F                   (Muster, Ausdruck) ist ein Muster (String) (fgrep)&lt;br /&gt;
 -b                   listet auch die Position der Fundstellen&lt;br /&gt;
 -C    Anzahl         Anzahl von Zeilen werden nach der Fundstelle ausgegeben&lt;br /&gt;
 -B    Anzahl         Anzahl von Zeilen werden vor der Fundstelle ausgegeben&lt;br /&gt;
 -r                   Durchsucht Verzeichnisse rekursiv&lt;br /&gt;
&lt;br /&gt;
==Useridendifikation==&lt;br /&gt;
===/etc/passwd===&lt;br /&gt;
====Beschreibung====&lt;br /&gt;
passwd ist eine ASCII-Datei, die eine Liste der Benutzer des Systems und deren&lt;br /&gt;
Passwörter enthält. Die Passwortdatei sollte für alle Benutzer lesbar sein, was für&lt;br /&gt;
dieVerschlüsselung notwendig ist; aber nur vom Superuser beschreibbar. Wenn&lt;br /&gt;
Sie eine neue Kennung einrichten, lassen Sie das Passwort-Feld in der Datei frei&lt;br /&gt;
und benutzen Sie passwd(1), um dem System ein Passwort für die neue Kennung&lt;br /&gt;
mitzuteilen.&lt;br /&gt;
&lt;br /&gt;
Die Datei /etc/passwd enthält einen Eintrag pro Zeile mit dem Format:&lt;br /&gt;
login_name:passwd:UID:GID:user_name:directory:shell&lt;br /&gt;
====Die Bedeutung der Felder:====&lt;br /&gt;
# login_name Kennung des Benutzers auf dem System.&lt;br /&gt;
# password   Hier steht bei Shadowsystemen ein x. Die Passwörter sind in der Datei /etc/shadow&lt;br /&gt;
# UID        Die numerische Benutzernummer.&lt;br /&gt;
#  GID        Die numerische Gruppennummer des Benutzers.&lt;br /&gt;
# user_name Ein optionales Kommentarfeld, oft benutzt für den vollen Namen des Benutzers und weitere Informationen (Telefon, Raum-Nummer etc.).&lt;br /&gt;
# directory  Das Heimatverzeichnis $HOME des Benutzers.&lt;br /&gt;
# shell      Das Programm, das beim Einloggen gestartet werden soll (falls nicht nötig, benutzen Sie /bin/bash).&lt;br /&gt;
&lt;br /&gt;
===/etc/group===&lt;br /&gt;
====Beschreibung====&lt;br /&gt;
etc/group ist eine ASCII Datei, die Gruppen definiert, zu denen Benutzer&lt;br /&gt;
gehören. Es gibt nur einen Eintrag pro Zeile; jede Zeile hat folgendes Format:&lt;br /&gt;
         GruppenName:Passwort:GruppenKennung:BenutzerListe&lt;br /&gt;
Beschreibung der Felder:&lt;br /&gt;
#     GruppenName      Die Bezeichnung der Gruppe.&lt;br /&gt;
#     Passwort         Das (verschlüsselte) Gruppen-Passwort. Wenn dieses Feld leer ist, wird kein Passwort benötigt.&lt;br /&gt;
#     GruppenKennung Die numerische Identifikation der Gruppe.&lt;br /&gt;
#     BenutzerListe    Alle Namen der Mitglieder, getrennt durch Kommas.&lt;br /&gt;
&lt;br /&gt;
===/etc/shadow===&lt;br /&gt;
====Beschreibung====&lt;br /&gt;
shadow beinhaltet Informationen zu den verschlüsselten Passwörten, zu den&lt;br /&gt;
Benutzerzugängen und weitere Informationen zur Laufzeit der Passwörter.&lt;br /&gt;
 Name:Passwort:Letzte Änderung:Mintage:Maxtage:Warntage:Inaktiv:Ablauf&lt;br /&gt;
#    Der Loginname&lt;br /&gt;
#    verschlüsseltes Passwort &lt;br /&gt;
&amp;lt;nowiki&amp;gt;*&amp;lt;/nowiki&amp;gt; bedeutet Benutzer kann sich nicht einlogen&lt;br /&gt;
! bedeutet Benutzer hat kein Passwort gesetzt&lt;br /&gt;
#    Tage seit dem 1 Januar 1970 an dem das Passwort letztmals geändert wurde&lt;br /&gt;
#    Tage, die das Passwort behalten werden muss, bevor es wieder geändert werden kann&lt;br /&gt;
#     Die Anzahl der Tage, nach denen der Benutzer das Passwort wieder ändern muss&lt;br /&gt;
#    Anzahl der Tage bevor das Passwort abläuft und der Benutzer gewarnt wird&lt;br /&gt;
#    Wenn der Zugang diese Anzahl von Tagen nicht benutzt wird, wird der Zugang gesperrt&lt;br /&gt;
#    Tag seit dem 1 Januar 1970, an dem der Zugang gesperrt wird&lt;br /&gt;
#    Reserviertes Feld&lt;br /&gt;
&lt;br /&gt;
Die Datei sollte aus Sicherheitgründen nicht für einen normalen Benutzer lesbar&lt;br /&gt;
sein.&lt;br /&gt;
&lt;br /&gt;
==Programme zur Userverwaltung==&lt;br /&gt;
===useradd===&lt;br /&gt;
User anlegen&lt;br /&gt;
 root@zero:~# useradd -m -u 1011 -g users -G admin -d /home/erwin -s /bin/bash -c &amp;quot;Erwin Lehman&amp;quot;  erwin&lt;br /&gt;
{| border=1 cellpadding=2&lt;br /&gt;
|&amp;quot;-m&amp;quot;&lt;br /&gt;
|Lege Homedirectory an&lt;br /&gt;
|-&lt;br /&gt;
|&amp;quot;-u 1011&amp;quot;&lt;br /&gt;
|Userid wird zugeordnet&lt;br /&gt;
|-&lt;br /&gt;
|&amp;quot;-g users&amp;quot;&lt;br /&gt;
|Primäre Gruppe wird zugeordnet&lt;br /&gt;
|-&lt;br /&gt;
|&amp;quot;-G admin&amp;quot;&lt;br /&gt;
|Sekunbdäre Gruppe wird zugeordnet&lt;br /&gt;
|-&lt;br /&gt;
|&amp;quot;-d /home/erwin/&amp;quot;&lt;br /&gt;
|Name des Homedirectory&lt;br /&gt;
|-&lt;br /&gt;
|&amp;quot;-s /bin/bash&amp;quot;&lt;br /&gt;
|Bash wird zugeordnet&lt;br /&gt;
|- &lt;br /&gt;
|&amp;quot;-c Erwin Lehman&amp;quot;&lt;br /&gt;
|Kommentarfeld&lt;br /&gt;
|-&lt;br /&gt;
|&amp;quot;erwin&amp;quot; &lt;br /&gt;
|Name des Users&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Defaulteinstellungen anzeigen&lt;br /&gt;
 root@zero:~# useradd -D&lt;br /&gt;
 GROUP=100&lt;br /&gt;
 HOME=/home&lt;br /&gt;
 INACTIVE=-1&lt;br /&gt;
 EXPIRE=&lt;br /&gt;
 SHELL=/bin/sh&lt;br /&gt;
 SKEL=/etc/skel&lt;br /&gt;
 CREATE_MAIL_SPOOL=no&lt;br /&gt;
&lt;br /&gt;
Defaulteinstellungen ändern&lt;br /&gt;
 useradd -D -s /bin/bash&lt;br /&gt;
&lt;br /&gt;
Konfigurationsdatei&lt;br /&gt;
 root@zero:~# cat /etc/default/useradd &lt;br /&gt;
 SHELL=/bin/bash&lt;br /&gt;
 GROUP=100&lt;br /&gt;
 HOME=/home&lt;br /&gt;
 INACTIVE=-1&lt;br /&gt;
 EXPIRE=&lt;br /&gt;
 SKEL=/etc/skel&lt;br /&gt;
 CREATE_MAIL_SPOOL=no&lt;br /&gt;
&lt;br /&gt;
===usermod===&lt;br /&gt;
User modifizieren&lt;br /&gt;
 root@zero:~# usermod -l fritz -s /bin/sh -G admin,video erwin&lt;br /&gt;
{| border=1 cellpadding=2&lt;br /&gt;
|&amp;quot;-l fritz&amp;quot;&lt;br /&gt;
|Neuer Username&lt;br /&gt;
|-&lt;br /&gt;
|&amp;quot;-s /bin/sh&amp;quot;&lt;br /&gt;
|Neue Shell&lt;br /&gt;
|-&lt;br /&gt;
|&amp;quot;-G admin, video&amp;quot;&lt;br /&gt;
|Sekunbdäre Gruppen werden zugeordnet&lt;br /&gt;
|-&lt;br /&gt;
|&amp;quot;erwin&amp;quot; &lt;br /&gt;
|Name des Users&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
===userdel===&lt;br /&gt;
User inklusive Homedirectory löschen&lt;br /&gt;
 root@zero:~# userdel -r fritz&lt;br /&gt;
&lt;br /&gt;
===passwd===&lt;br /&gt;
Rootpasswort ändern&lt;br /&gt;
 root@zero:~# passwd &lt;br /&gt;
 Geben Sie ein neues UNIX Passwort ein:'''sysadm''' &lt;br /&gt;
 Geben Sie das neue UNIX Passwort erneut ein:'''sysadm''' &lt;br /&gt;
 passwd: Passwort erfolgreich geändert&lt;br /&gt;
&lt;br /&gt;
Passwort von tux ändern&lt;br /&gt;
 root@zero:~# passwd tux&lt;br /&gt;
 Geben Sie ein neues UNIX Passwort ein:'''suxer''' &lt;br /&gt;
 Geben Sie das neue UNIX Passwort erneut ein:'''suxer'''&lt;br /&gt;
 passwd: Passwort erfolgreich geändert&lt;br /&gt;
&lt;br /&gt;
Minimale und Maximale Gültigkeit des Passwortes von tux festlegen&lt;br /&gt;
 root@zero:~# passwd -n 5 -x 120 tux&lt;br /&gt;
&lt;br /&gt;
===groupadd===&lt;br /&gt;
 root@zero:~# groupadd -f -g 2001 xinuxer&lt;br /&gt;
{| border=1 cellpadding=2&lt;br /&gt;
|&amp;quot;-f&amp;quot;&lt;br /&gt;
|Überschreibe bestehende Gruppe&lt;br /&gt;
|-&lt;br /&gt;
|&amp;quot;-g 2001&amp;quot;&lt;br /&gt;
|GID der Gruppe&lt;br /&gt;
|-&lt;br /&gt;
|&amp;quot;xinuxer&amp;quot; &lt;br /&gt;
|Name des Gruppe&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==chmod==&lt;br /&gt;
Die Syntax des Befehls chmod lautet:&lt;br /&gt;
&lt;br /&gt;
'''chmod''' WerWieWas [,WerWieWas,.....] Dateiliste&lt;br /&gt;
&lt;br /&gt;
oder&lt;br /&gt;
&lt;br /&gt;
'''chmod''' Oktalzahl Dateiliste&lt;br /&gt;
&lt;br /&gt;
Durch WerWieWas bzw. Oktalzahl wird die Rechtetabelle definiert. Innerhalb von&lt;br /&gt;
WerWieWas darf es kein Leerzeichen geben. Wer bezeichnet den Benutzerkreis,&lt;br /&gt;
dem man Rechte gibt, Wie die Art, in der die Rechte gegeben werden und Was die&lt;br /&gt;
Rechte als solche. Im einzelnen können folgende Kürzel benutzt werden:&lt;br /&gt;
&lt;br /&gt;
Für Wer kann eines der folgenden Kürzel oder eine Kombination davon stehen:&lt;br /&gt;
 u                   (user) Rechte für den Dateibesitzer&lt;br /&gt;
 g                   (group) Rechte für die Gruppe&lt;br /&gt;
 o                   (others) Rechte für alle anderen Benutzer&lt;br /&gt;
 a                   (all) Rechte für alle Benutzer&lt;br /&gt;
Für Wie steht eines der folgenden Kürzel:&lt;br /&gt;
 +                   Die Rechte werden zu den vorhandenen zusätzlich vergeben&lt;br /&gt;
 -                   Die im Folgenden genannten Rechte werden entzogen&lt;br /&gt;
 =                   Die im Folgenden genannten Rechte ersetzen die bisherigen&lt;br /&gt;
Für Was steht eines der folgenden Kürzel:&lt;br /&gt;
 r                   (read) lesen&lt;br /&gt;
 w                   (write) schreiben&lt;br /&gt;
 x                   (execute) ausführen&lt;br /&gt;
oder diese Sonderformen&lt;br /&gt;
 s                   (usersbit) Programm läuft unter der UID des Besitzers&lt;br /&gt;
 s                   (groupsbit)Programm läuft unter der GID des GRUPPE&lt;br /&gt;
 t                   (stickybit) Dateien im Verzeichnis darf nur Besitzer löschen&lt;br /&gt;
&lt;br /&gt;
===Beispiel===&lt;br /&gt;
Setze für alle Schreib- und Leserecht&lt;br /&gt;
 xinux@zero:~$ chmod a=rw test &lt;br /&gt;
 xinux@zero:~$ ls -l test &lt;br /&gt;
 -rw-rw-rw- 1 xinux xinux 0 2009-06-16 12:01 test&lt;br /&gt;
 xinux@zero:~$ &lt;br /&gt;
&lt;br /&gt;
Erteile Besitzer Ausführungsrecht&lt;br /&gt;
 xinux@zero:~$ chmod u+x test ; ls -l test &lt;br /&gt;
 -rwxrw-rw- 1 xinux xinux 0 2009-06-16 12:01 test&lt;br /&gt;
 xinux@zero:~$ &lt;br /&gt;
&lt;br /&gt;
===chmod oktale Schreibweise===&lt;br /&gt;
 Specialrights        User           Group         Other&lt;br /&gt;
 usbit gsbit sticky    r    w   x     r   w   x     r   w   x&lt;br /&gt;
   1     1      1      1    1   1     1   1   1     1   1   1&lt;br /&gt;
   0     0      0      0    0   0     0   0   0     0   0   0&lt;br /&gt;
 Oktale Wertigkeit pro Recht&lt;br /&gt;
   4     2       1     4    2   1     4   2   1     4   2   1&lt;br /&gt;
&lt;br /&gt;
===Beispiele===&lt;br /&gt;
 xinux@zero:~$ chmod 751 test ; ls -l test&lt;br /&gt;
 -rwxr-x--x 1 xinux xinux 0 2009-06-16 12:01 test&lt;br /&gt;
 xinux@zero:~$ &lt;br /&gt;
&lt;br /&gt;
 xinux@zero:~$ chmod 4770 test ; ls -l test&lt;br /&gt;
 -rwsrwx--- 1 xinux xinux 0 2009-06-16 12:01 test&lt;br /&gt;
 xinux@zero:~$ &lt;br /&gt;
&lt;br /&gt;
 xinux@zero:~$ chmod 0 test ; ls -l test &lt;br /&gt;
 ---------- 1 xinux xinux 0 2009-06-16 12:01 test&lt;br /&gt;
&lt;br /&gt;
===chmod Optionen===&lt;br /&gt;
 -c   (changes) es werden nur die Dateien angezeigt, deren Zugriffsrechte tatsächlich verändert werden&lt;br /&gt;
 -f   (silent, quiet) Fehlermeldungen wegen fehlgeschlagener Änderungsversuche werden unterdrückt&lt;br /&gt;
 -v   (verbose) alle Aktionen werden angezeigt&lt;br /&gt;
 -R   (recursive) die Zugriffsrechte aller Dateien in den Unterverzeichnissen werden ebenfalls geändert&lt;br /&gt;
&lt;br /&gt;
Theoretisch sind alle Kombinationen der Zugriffsrechte denkbar, aber der&lt;br /&gt;
Eigentümer einer Datei darf diese immer lesen, selbst wenn das Lesebit nicht&lt;br /&gt;
gesetzt ist. Genauso macht es wenig Sinn, eine gewöhnliche Textdatei als&lt;br /&gt;
ausführbar zu setzen; die Shell wird damit nichts anfangen können. Ein x für ein&lt;br /&gt;
Verzeichnis gibt an, dass in dieses gewechselt werden kann.&lt;br /&gt;
&lt;br /&gt;
Rechte sind verbindlich&lt;br /&gt;
&lt;br /&gt;
Interessant ist auch ein Konstrukt folgender Art&lt;br /&gt;
 -rwx---rwx&lt;br /&gt;
&lt;br /&gt;
das angibt, dass mit der Datei alles angestellt werden kann, außer durch Nutzer der&lt;br /&gt;
Gruppe. Versucht irgend jemand, der nicht der Gruppe des Eigentümers angehört,&lt;br /&gt;
die Datei zu modifizieren, wird ihm dies gelingen, einem Gruppenmitglied bleibt&lt;br /&gt;
dies versagt, obwohl er ja gleichzeitig ein &amp;quot;Anderer&amp;quot; ist. D.h. die Rechte der&lt;br /&gt;
Gruppe sind verbindlicher, als die Rechte der anderen!&lt;br /&gt;
&lt;br /&gt;
===Bedeutungen der Zugriffsarten===&lt;br /&gt;
====Dateien====&lt;br /&gt;
* r: Der Inhalt der Datei kann gelesen und damit auch kopiert werden. &lt;br /&gt;
 root@zero:~# cat test&lt;br /&gt;
 Dies ist eine Testdatei&lt;br /&gt;
  &lt;br /&gt;
 root@zero:~# cp test backup&lt;br /&gt;
&lt;br /&gt;
* w: Der Inhalt der Datei darf verändert werden. Ob die Datei gelöscht werden kann ist&lt;br /&gt;
keine Eigenschaft der Datei, sondern des Verzeichnisses, indem sich die Datei befindet.&lt;br /&gt;
 root@zero:~# cat &amp;gt; test&lt;br /&gt;
 Hier steht jetzt was anderes&lt;br /&gt;
 ^C&lt;br /&gt;
 root@zero:~# cat test&lt;br /&gt;
 Hier steht jetzt was anderes&lt;br /&gt;
  &lt;br /&gt;
 xinux@zero:~$ ls -ld verzeichnis/&lt;br /&gt;
 dr-xr-xr-x 2 xinux xinux 4096 2009-06-18 11:16 verzeichnis/&lt;br /&gt;
 xinux@zero:~/verzeichnis$ rm text&lt;br /&gt;
 rm: Entfernen von „text“ nicht möglich: Permission denied&lt;br /&gt;
&lt;br /&gt;
* x: Ausführrecht für Programme und Skripte&lt;br /&gt;
 xinux@zero:~$ ./programm&lt;br /&gt;
 -bash: ./programm: Permission denied&lt;br /&gt;
 xinux@zero:~$ chmod +x programm&lt;br /&gt;
 xinux@zero:~$ ./programm&lt;br /&gt;
 Test&lt;br /&gt;
  test&lt;br /&gt;
&lt;br /&gt;
====Verzeichnisse====&lt;br /&gt;
* r: Die Einträge in dem Verzeichnis sind lesbar.&lt;br /&gt;
Leserecht von verzeichnis/ entziehen&lt;br /&gt;
 xinux@zero:~$ chmod a-r verzeichnis/&lt;br /&gt;
 xinux@zero:~$ ls verzeichnis/&lt;br /&gt;
 ls: Öffnen von Verzeichnis verzeichnis/ nicht möglich: Permission denied&lt;br /&gt;
Leserecht für Benutzer und Gruppe vergeben&lt;br /&gt;
 xinux@zero:~$ chmod a+r verzeichnis/&lt;br /&gt;
 xinux@zero:~$ ls verzeichnis/&lt;br /&gt;
 text&lt;br /&gt;
&lt;br /&gt;
* w: Die Einträge in dem Verzeichnis können geändert werden. &lt;br /&gt;
Neue Datei erstellen&lt;br /&gt;
 xinux@zero:~$ touch neu&lt;br /&gt;
 xinux@zero:~$ ls neu&lt;br /&gt;
 neu&lt;br /&gt;
&lt;br /&gt;
Datei löschen&lt;br /&gt;
 xinux@zero:~$ rm neu&lt;br /&gt;
 xinux@zero:~$ ls neu&lt;br /&gt;
 ls: Zugriff auf neu nicht möglich: No such file or directory&lt;br /&gt;
&lt;br /&gt;
* x: Der Name des Verzeichnisses kann in einem Pfadnamen erscheinen.&lt;br /&gt;
Verzeichnis ohne x Recht&lt;br /&gt;
 xinux@zero:~$ chmod a-x verzeichnis/&lt;br /&gt;
Wechseln in Verzeichnis mangels x-Recht nicht möglich&lt;br /&gt;
 xinux@zero:~$ cd verzeichnis/&lt;br /&gt;
 -bash: cd: verzeichnis/: Permission denied&lt;br /&gt;
x-Recht vergeben&lt;br /&gt;
 xinux@zero:~$ chmod a+x verzeichnis/&lt;br /&gt;
damit Wechsel in Verzeichnis möglich&lt;br /&gt;
 xinux@zero:~$ cd verzeichnis/&lt;br /&gt;
 xinux@zero:~/verzeichnis$ pwd&lt;br /&gt;
 /home/xinux/verzeichnis&lt;br /&gt;
&lt;br /&gt;
====umask====&lt;br /&gt;
Neue Dateien und Verzeichnisse werden mit ein und denselben Zufriffsrechten erzeugt.&lt;br /&gt;
 xinux@zero:~$ mkdir text&lt;br /&gt;
 xinux@zero:~$ touch textdat&lt;br /&gt;
 xinux@zero:~$ ls -ld text*&lt;br /&gt;
 drwxr-xr-x 2 xinux xinux 4096 2009-06-18 11:37 text&lt;br /&gt;
 -rw-r--r-- 1 xinux xinux    0 2009-06-18 11:37 textdat&lt;br /&gt;
&lt;br /&gt;
Zuständig für dieses Verhalten ist die sogenannte umask, die oft in der Datei&lt;br /&gt;
/etc/profile auf den Wert 022 voreingestellt ist. Zusätzlich wird noch eine&lt;br /&gt;
Maximalmaske benötigt, die sich für Verzeichnisse und andere Dateien&lt;br /&gt;
unterscheidet. Die bei der Erzeugung gesetzten Rechte entstehen nun, indem von&lt;br /&gt;
der Maximalmaske der durch die umask vorgegebene Wert subtrahiert wird:&lt;br /&gt;
&lt;br /&gt;
{| border=1 cellpadding=2&lt;br /&gt;
!&lt;br /&gt;
! Dateien&lt;br /&gt;
! Verzeichnisse&lt;br /&gt;
|-&lt;br /&gt;
| Systemvorgabe&lt;br /&gt;
| 666&lt;br /&gt;
| 777&lt;br /&gt;
|-&lt;br /&gt;
| -umask&lt;br /&gt;
| 022&lt;br /&gt;
| 022&lt;br /&gt;
|-&lt;br /&gt;
| Ergebnis&lt;br /&gt;
| 644&lt;br /&gt;
| 755&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
 xinux@zero:~$ grep umask /etc/profile&lt;br /&gt;
 umask 022&lt;br /&gt;
&lt;br /&gt;
==Gruppenzugehörigkeit==&lt;br /&gt;
===newgrp===&lt;br /&gt;
Ändert die Gruppenzugehörigkeit eines Benutzers auf die angegebene Gruppe. Wenn keine Gruppe angegeben wird, wird die &lt;br /&gt;
Anmeldegruppe des Benutzers verwendet. Die neue Gruppe wird anschließend fü Zugriffskontrollen verwendet.&lt;br /&gt;
&lt;br /&gt;
 newgrp Gruppenname&lt;br /&gt;
&lt;br /&gt;
 root@zero:~# newgrp hacker&lt;br /&gt;
 root@zero:~# id&lt;br /&gt;
 uid=0(root) gid=1006(hacker) Gruppen=0(root),1006(hacker)&lt;br /&gt;
&lt;br /&gt;
===chgrp===&lt;br /&gt;
Verändert die Besitzugehörigkeit zu der angegebenen Gruppe&lt;br /&gt;
&lt;br /&gt;
 chgrp [Optionen] Gruppe Datei(en)&lt;br /&gt;
&lt;br /&gt;
Optionen:&lt;br /&gt;
 -c Zeigt Veränderungen an&lt;br /&gt;
 -f Unterdrückt die meisten Fehlermeldungen&lt;br /&gt;
 -R Verändert Dateien und Verzeichnisse rekursiv&lt;br /&gt;
 -v Gibt geschwätzige Ausgabe aus.&lt;br /&gt;
&lt;br /&gt;
 root@zero:~# ls -l&lt;br /&gt;
 ...&lt;br /&gt;
 d-wx--x--x  3 root root 4096 2009-06-18 13:34 verzeichnis&lt;br /&gt;
 &lt;br /&gt;
 root@zero:~# chgrp -R xinux verzeichnis/&lt;br /&gt;
 root@zero:~# ls -l&lt;br /&gt;
 ...&lt;br /&gt;
 d-wx--x--x  3 root xinux 4096 2009-06-18 13:34 verzeichnis&lt;br /&gt;
&lt;br /&gt;
 xinux@zero:~$ cd /root/verzeichnis/&lt;br /&gt;
 xinux@zero:/root/verzeichnis$ pwd&lt;br /&gt;
 /root/verzeichnis&lt;br /&gt;
&lt;br /&gt;
===chown===&lt;br /&gt;
Ändert den Eigentümer von einer oder mehreren Dateien in den angegebenen Benutzer. &lt;br /&gt;
chown erlaubt ebenfalls das Ändern der Gruppeneigentümreschaft. Nur der aktuelle Eigentümer einer&lt;br /&gt;
Datei oder der Superuser (root) darf die Eigentumsverhältnisse ändern.&lt;br /&gt;
&lt;br /&gt;
 chown [Optionen] Benutzer(:Gruppe) Dateien&lt;br /&gt;
&lt;br /&gt;
Optionen:&lt;br /&gt;
 -c Gibt Informationen über die veränderten Dateien aus&lt;br /&gt;
 --dereference Symbolischen Links folgen&lt;br /&gt;
 -v Gibt Informationen über alle Dateien aus, die chown zu ändern versucht, egal, ob die Änderung erfolgt ist oder nicht&lt;br /&gt;
 -R Geht rekursiv durch alle Unterverzeichnisse und führt die Änderungen durch. &lt;br /&gt;
&lt;br /&gt;
 root@zero:~# chown -R xinux.xinux verzeichnis/&lt;br /&gt;
 root@zero:~# ls -l&lt;br /&gt;
 insgesamt 12&lt;br /&gt;
 drwx------ 13 root  root  4096 2009-04-21 15:11 profile&lt;br /&gt;
 --w-------  1 root  root     0 2009-06-18 11:13 test&lt;br /&gt;
 -rw-r--r--  1 root  root    40 2009-06-18 12:04 text&lt;br /&gt;
 drwxrwx--x  3 xinux xinux 4096 2009-06-18 13:39 verzeichnis&lt;br /&gt;
 &lt;br /&gt;
 root@zero:~# chown -R -c xinux.xinux verzeichnis/&lt;br /&gt;
 &lt;br /&gt;
 root@zero:~# chown -R -v xinux.xinux verzeichnis/&lt;br /&gt;
 Eigentümer von „verzeichnis/01“ als xinux:xinux erhalten&lt;br /&gt;
 Eigentümer von „verzeichnis/test“ als xinux:xinux erhalten&lt;br /&gt;
 Eigentümer von „verzeichnis/“ als xinux:xinux erhalten&lt;br /&gt;
&lt;br /&gt;
==Eingabe/Ausgabe==&lt;br /&gt;
Standardeingabe (0): Laufende Programme erwarten von hier ihre Eingaben (normalerweise handelt es sich um die Tastatur).&lt;br /&gt;
&lt;br /&gt;
Standardausgabe (1): Programme schreiben auf diese ihre Ausgaben (Bildschirm).&lt;br /&gt;
&lt;br /&gt;
Standardfehlerausgabe (2) : Fehlerausgaben landen hier (Bildschirm, aber nur die aktive Konsole).&lt;br /&gt;
&lt;br /&gt;
[[Bild:std.jpg]]&lt;br /&gt;
&lt;br /&gt;
===cat===&lt;br /&gt;
Das Programm cat liest von STDIN und gibt es STDOUT wieder aus&lt;br /&gt;
&lt;br /&gt;
Einlesen der Datei text&lt;br /&gt;
 root@zero:~# cat &amp;lt; text&lt;br /&gt;
 wichtig&lt;br /&gt;
&lt;br /&gt;
Schreiben in die Datei text, dies überschreibt den bisherigen Inhalt der Datei&lt;br /&gt;
 root@zero:~# cat &amp;gt; text&lt;br /&gt;
 sogar noch wichtiger &lt;br /&gt;
 &lt;br /&gt;
Ausgeben der Datei text&lt;br /&gt;
 root@zero:~# cat text &lt;br /&gt;
 sogar noch wichtiger&lt;br /&gt;
&lt;br /&gt;
Lesen aus der Datei text und schreiben in die Datei neuertext&lt;br /&gt;
 root@zero:~# cat &amp;lt; text &amp;gt; neuertext&lt;br /&gt;
 root@zero:~# cat neuertext&lt;br /&gt;
 sogar noch wichtiger&lt;br /&gt;
&lt;br /&gt;
Anhängen der Ausgabe von date an die Datei neuertext&lt;br /&gt;
 root@zero:~# date &amp;gt;&amp;gt; neuertext&lt;br /&gt;
 root@zero:~# cat neuertext&lt;br /&gt;
 sogar noch wichtiger&lt;br /&gt;
 Do 18. Jun 14:08:58 CEST 2009&lt;br /&gt;
&lt;br /&gt;
Umleiten des Standardfehlerkanals nach error&lt;br /&gt;
 root@zero:~# rm sux 2&amp;gt; error&lt;br /&gt;
 root@zero:~# more error&lt;br /&gt;
 rm: Entfernen von „sux“ nicht möglich: No such file or directory&lt;br /&gt;
&lt;br /&gt;
===Umleitungen===&lt;br /&gt;
Nacheinander auszuführende Kommandos&lt;br /&gt;
 root@zero:~# pwd; date&lt;br /&gt;
 /root&lt;br /&gt;
 Do 18. Jun 14:13:05 CEST 2009&lt;br /&gt;
 &lt;br /&gt;
Übergeben der Ausgabe von tail als Eingabe von grep mit Hilfe der Pipe &amp;quot;|&amp;quot;&lt;br /&gt;
 root@zero:~# tail /var/log/auth.log | grep xinux&lt;br /&gt;
 Jun 18 13:52:33 zero nss_wins[11433]: pam_unix(login:session): session closed for user xinux&lt;br /&gt;
&lt;br /&gt;
Übergeben der letzten 100 Zeilen von syslog als Eingabe von grep&lt;br /&gt;
 root@zero:~# tail /var/log/syslog -n 100 | grep error&lt;br /&gt;
 Jun 18 09:30:54 zero kernel: [154384.692135] end_request: I/O error, dev fd0, sector 0&lt;br /&gt;
 Jun 18 09:30:54 zero kernel: [154384.712137] end_request: I/O error, dev fd0, sector 0&lt;br /&gt;
&lt;br /&gt;
==tr==&lt;br /&gt;
tr ist ein Programm um Zeichen zu übersetzen. Dies betrifft nur die Ausgabe, die Datei selbst bleibt unverändert.&lt;br /&gt;
&lt;br /&gt;
Ersetzt Kleinbuchstaben durch Großbuchstaben aus der Datei text&lt;br /&gt;
 root@zero:~# tr &amp;quot;a-z&amp;quot; &amp;quot;A-Z&amp;quot; &amp;lt; text&lt;br /&gt;
 SOGAR NOCH WICHTIGER&lt;br /&gt;
 123&lt;br /&gt;
 34&lt;br /&gt;
 4711&lt;br /&gt;
 TEST&lt;br /&gt;
&lt;br /&gt;
Ersetzt alle Zahlen durch X&lt;br /&gt;
 root@zero:~# tr &amp;quot;0-9&amp;quot; &amp;quot;X&amp;quot; &amp;lt; text&lt;br /&gt;
 sogar noch wichtiger&lt;br /&gt;
 XXX&lt;br /&gt;
 XX&lt;br /&gt;
 XXXX&lt;br /&gt;
 test&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
 root@zero:~# cat &amp;gt; test&lt;br /&gt;
 +++++&lt;br /&gt;
 ###&lt;br /&gt;
 1111&lt;br /&gt;
&lt;br /&gt;
-s löscht mehrfach kommende Zeichen&lt;br /&gt;
 root@zero:~# tr '''-s''' &amp;quot;+&amp;quot; &amp;lt; test&lt;br /&gt;
 +&lt;br /&gt;
 ###&lt;br /&gt;
 1111&lt;br /&gt;
&lt;br /&gt;
-d löscht vorkommende Zeichen &lt;br /&gt;
 root@zero:~# tr '''-d''' &amp;quot;#&amp;quot; &amp;lt; test&lt;br /&gt;
 +++++ &lt;br /&gt;
 &lt;br /&gt;
 1111&lt;br /&gt;
&lt;br /&gt;
==cut==&lt;br /&gt;
Spalten aus einer Datei schneiden. Dies betrifft nur die Ausgabe, die Datei selbst bleibt unverändert.&lt;br /&gt;
 &lt;br /&gt;
Schneidet die erste Spalte aus, der Delimiter ist : &lt;br /&gt;
 root@zero:~# cut -f 1 -d : /etc/passwd&lt;br /&gt;
 root&lt;br /&gt;
 daemon&lt;br /&gt;
 bin&lt;br /&gt;
 ...&lt;br /&gt;
 xinux&lt;br /&gt;
&lt;br /&gt;
 root@zero:~# more test&lt;br /&gt;
 1234#5678#9999&lt;br /&gt;
 &lt;br /&gt;
Schneidet die zweite Spalte aus, der Delimiter ist #&lt;br /&gt;
 root@zero:~# cut -f 2 -d &amp;quot;#&amp;quot; &amp;lt; test&lt;br /&gt;
 5678&lt;br /&gt;
&lt;br /&gt;
Schneidet bis zum 3 Zeichen ab&lt;br /&gt;
 root@zero:~$ echo S01policykit | cut -c 4-&lt;br /&gt;
 policykit&lt;br /&gt;
&lt;br /&gt;
==expand==&lt;br /&gt;
Ersetzt Tabulatorzeichen durch Folgen von Leerzeichen und schreibt das Ergebnis auf die Standardausgabe&lt;br /&gt;
 root@zero:~# expand /etc/samba/smb.conf&lt;br /&gt;
 ...&lt;br /&gt;
&lt;br /&gt;
==fmt==&lt;br /&gt;
#Setzt den Text der Dateien im Blocksatz der angegebenen Breite durch Auffüllen von Zeilen und Entfernen von Zeilenwechseln.&lt;br /&gt;
Standardgemäß werden Leerzeilen, die Position von Leerzeichen und der Einzug am Zeilenanfang erhalten. fmt versucht, &lt;br /&gt;
Zeilenumbrüche an Satzenden durchzuführen sowie sie nach dem ersten oder vor dem letzten Wort eines Satzes zu vermeiden. &lt;br /&gt;
 &lt;br /&gt;
 fmt [Optionen] [Dateien]&lt;br /&gt;
&lt;br /&gt;
Optionen&lt;br /&gt;
&lt;br /&gt;
* -p ''Präfix'': Formatiert nur Zeilen, die mit ''Präfix'' anfangen&lt;br /&gt;
 root@zero:/tmp# fmt -p '#' text&lt;br /&gt;
 #Setzt den Text der Dateien im Blocksatz der angegebenen Breite durch&lt;br /&gt;
 #Auffüllen von Zeilen und Entfernen von Zeilenwechseln.  Standardgemäß&lt;br /&gt;
 #werden Leerzeilen, die Position von Leerzeichen und der Einzug am&lt;br /&gt;
 #Zeilenanfang erhalten. fmt versucht,&lt;br /&gt;
 Zeilenumbrüche an Satzenden durchzuführen sowie sie nach dem ersten oder vor dem letzten Wort eines Satzes zu vermeiden.&lt;br /&gt;
&lt;br /&gt;
* -u : Erzwingt genau ein Leerzeichen zwischen Wörtern und zwei Leerzeichen zwischen Sätzen&lt;br /&gt;
&lt;br /&gt;
* -w ''Breite'': Setzt die Ausgabebreite auf ''Breite''&lt;br /&gt;
 root@zero:/tmp# fmt -w 30 text&lt;br /&gt;
 #Setzt den Text der Dateien&lt;br /&gt;
 im Blocksatz der angegebenen&lt;br /&gt;
 Breite durch Auffüllen&lt;br /&gt;
 von Zeilen und Entfernen&lt;br /&gt;
 von Zeilenwechseln.&lt;br /&gt;
 #Standardgemäß werden&lt;br /&gt;
 Leerzeilen, die Position von&lt;br /&gt;
 Leerzeichen und der Einzug am&lt;br /&gt;
 Zeilenanfang erhalten. fmt&lt;br /&gt;
 versucht, Zeilenumbrüche&lt;br /&gt;
 an Satzenden durchzuführen&lt;br /&gt;
 sowie sie nach dem ersten&lt;br /&gt;
 oder vor dem letzten Wort&lt;br /&gt;
 eines Satzes zu vermeiden.&lt;br /&gt;
&lt;br /&gt;
==join==&lt;br /&gt;
Führt die Zeilen zweier sortierter Dateien anhand von '''Übereinstimmungen''' in einem gemeinsamen Feld zusammen.&lt;br /&gt;
&lt;br /&gt;
 root@zero:~# more name&lt;br /&gt;
 1. karl&lt;br /&gt;
 2. heinz&lt;br /&gt;
 3. hans&lt;br /&gt;
 4. otto&lt;br /&gt;
 root@zero:~# more tel&lt;br /&gt;
 1. 1234&lt;br /&gt;
 2. 4321&lt;br /&gt;
 3. 222&lt;br /&gt;
 4. 121212&lt;br /&gt;
 root@zero:~# join name tel &amp;gt; telefonbuch&lt;br /&gt;
 root@zero:~# more telefonbuch&lt;br /&gt;
 1. karl 1234&lt;br /&gt;
 2. heinz 4321&lt;br /&gt;
 3. hans 222&lt;br /&gt;
 4. otto 121212&lt;br /&gt;
&lt;br /&gt;
 root@zero:~# join -t : /etc/passwd /etc/shadow&lt;br /&gt;
 ....&lt;br /&gt;
 daemon:x:1:1:daemon:/usr/sbin:/bin/sh:*:14181:0:99999:7:::&lt;br /&gt;
 bin:x:2:2:bin:/bin:/bin/sh:*:14181:0:99999:7:::&lt;br /&gt;
 sys:x:3:3:sys:/dev:/bin/sh:*:14181:0:99999:7:::&lt;br /&gt;
 sync:x:4:65534:sync:/bin:/bin/sync:*:14181:0:99999:7:::&lt;br /&gt;
 ...&lt;br /&gt;
&lt;br /&gt;
join in dat1 nach Feld 3 und in dat2 nach Feld 2&lt;br /&gt;
 thomas@lydia:~$ cat dat1 &lt;br /&gt;
 hugo:ps:1111&lt;br /&gt;
 erwin:zw:2222&lt;br /&gt;
 karl:sb:3333&lt;br /&gt;
 rudi:kl:4444&lt;br /&gt;
 thomas@lydia:~$ cat dat2&lt;br /&gt;
 blau:1111:svn&lt;br /&gt;
 grün:2222:fcs&lt;br /&gt;
 gelb:3333:fch&lt;br /&gt;
 rot:4444:fck&lt;br /&gt;
 thomas@lydia:~$ join -t : -1 3 -2 2 dat1 dat2 &lt;br /&gt;
 1111:hugo:ps:blau:svn&lt;br /&gt;
 2222:erwin:zw:grün:fcs&lt;br /&gt;
 3333:karl:sb:gelb:fch&lt;br /&gt;
 4444:rudi:kl:rot:fck&lt;br /&gt;
&lt;br /&gt;
==nl==&lt;br /&gt;
Nummeriert die Zeilen in einer Datei.&lt;br /&gt;
&lt;br /&gt;
 root@zero:~# nl /etc/passwd                                                   &lt;br /&gt;
     1  root:x:0:0:root:/root:/bin/bash                                       &lt;br /&gt;
     2  daemon:x:1:1:daemon:/usr/sbin:/bin/sh                                 &lt;br /&gt;
     3  bin:x:2:2:bin:/bin:/bin/sh                                            &lt;br /&gt;
     4  sys:x:3:3:sys:/dev:/bin/sh                                            &lt;br /&gt;
     5  sync:x:4:65534:sync:/bin:/bin/sync&lt;br /&gt;
     ...&lt;br /&gt;
Nummereriet mit führenden Nullen der Separatir ist ein :&lt;br /&gt;
 root@zero:~# nl -s : -n rz dat1&lt;br /&gt;
&lt;br /&gt;
==od==&lt;br /&gt;
Gibt Dateien im Oktal und anderen Formaten aus.&lt;br /&gt;
&lt;br /&gt;
 od [Optionen] Datei&lt;br /&gt;
&lt;br /&gt;
* -j ''Bytes'': Überspringt die Anzahl ''Bytes'' einer Datei&lt;br /&gt;
* -N ''Bytes'': Gibt nur die Anzahl ''Bytes'' aus&lt;br /&gt;
* -c : Gebe ASCII Zeichen aus&lt;br /&gt;
* -f : Gebe Fließkommazahlen aus&lt;br /&gt;
* -i : Gebe Dezimal Integer aus&lt;br /&gt;
* -l : Gebe Dezimal Long aus&lt;br /&gt;
* -o : Gebe Oktal 2 Byte Einheiten aus&lt;br /&gt;
* -s : Gebe Dezimal 2 Byte Einheiten aus&lt;br /&gt;
* -x : Gebe Hexadezimale 2 Byte einheiten aus&lt;br /&gt;
&lt;br /&gt;
Beispiele&lt;br /&gt;
&lt;br /&gt;
Gebe Master Boot Record (die ersten 512 Byte der Festplatte /dev/sda) als Hexadezimal aus&lt;br /&gt;
 root@zero:~# od '''-x -N''' 512 /dev/sda&lt;br /&gt;
 0000000 48eb 1090 d08e 00bc b8b0 0000 d88e c08e&lt;br /&gt;
 0000020 befb 7c00 00bf b906 0200 a4f3 21ea 0006&lt;br /&gt;
 0000040 be00 07be 0438 0b75 c683 8110 fefe 7507&lt;br /&gt;
 0000060 ebf3 b416 b002 bb01 7c00 80b2 748a 0203&lt;br /&gt;
 0000100 00ff 2000 0001 0000 0200 90fa f690 80c2&lt;br /&gt;
 ...&lt;br /&gt;
&lt;br /&gt;
Schreibe &amp;quot;suxer&amp;quot; in die Datei test&lt;br /&gt;
 root@zero:~# echo &amp;quot;suxer&amp;quot; &amp;gt; test&lt;br /&gt;
Ausgabe Hexadezimal&lt;br /&gt;
 root@zero:~# od -x test&lt;br /&gt;
 0000000 7573 6578 0a72&lt;br /&gt;
 0000006&lt;br /&gt;
&lt;br /&gt;
Ausgabe ASCII Zeichen&lt;br /&gt;
 root@zero:~# od -c test&lt;br /&gt;
 0000000   s   u   x   e   r  \n&lt;br /&gt;
 0000006&lt;br /&gt;
&lt;br /&gt;
==paste==&lt;br /&gt;
Fügt die Zeilen von zwei oder mehr Dateien horizontal zusammen&lt;br /&gt;
 root@zero:~# paste name tel&lt;br /&gt;
 1. karl 1. 1234&lt;br /&gt;
 2. heinz        2. 4321&lt;br /&gt;
 3. hans 3. 222&lt;br /&gt;
 4. otto 4. 121212&lt;br /&gt;
&lt;br /&gt;
==pr==&lt;br /&gt;
Bereitet Textdateien zum Drucken vor.&lt;br /&gt;
&lt;br /&gt;
 root@zero:~# echo &amp;quot;Plan für heute&amp;quot; &amp;gt; dokument&lt;br /&gt;
 root@zero:~# more dokument&lt;br /&gt;
 Plan für heute&lt;br /&gt;
 root@zero:~# pr dokument   &lt;br /&gt;
  &lt;br /&gt;
 &lt;br /&gt;
 2009-06-19 12:44                    dokument                     Seite 1&lt;br /&gt;
 &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
 Plan für heute&lt;br /&gt;
&lt;br /&gt;
Anmerkung Ausmaße der Bildschirmausgabe wie eine Druckseite.&lt;br /&gt;
&lt;br /&gt;
==sed==&lt;br /&gt;
streaming editor. Mit sed ist es möglich, den Inhalt einer Datei automatisch (nicht interaktiv) zu&lt;br /&gt;
bearbeiten. Wie unter Linux üblich, wird auch hier der Text nicht wirklich verändert sondern die &lt;br /&gt;
Änderung erfolgt über die Standardausgabe, die wieder umgeleitet werden kann. Die Syntax ist ähnlich &lt;br /&gt;
des ex modus von vi. Reguläre Ausdrücke können nach Belieben benutzt werden. &lt;br /&gt;
&lt;br /&gt;
Optionen:&lt;br /&gt;
 -e Zeichenkette  wendet die Editorbefehle aus Zeichenkette auf den Text an.&lt;br /&gt;
 -n gibt nur die Zeilen aus, die explizit (durch &amp;quot;p&amp;quot; ausgedruckt werden sollen&lt;br /&gt;
&lt;br /&gt;
Gibt die dritte Zeile der Datei text aus&lt;br /&gt;
 root@zero:~# sed -n &amp;quot;3p&amp;quot; text&lt;br /&gt;
 34&lt;br /&gt;
&lt;br /&gt;
Gibt die erste bis dritte Zeile von text aus&lt;br /&gt;
 root@zero:~# sed -n &amp;quot;1,3p&amp;quot; text&lt;br /&gt;
 sogar noch wichtiger&lt;br /&gt;
 123&lt;br /&gt;
 34&lt;br /&gt;
&lt;br /&gt;
Löschen der Zeile mit &amp;quot;sogar&amp;quot;&lt;br /&gt;
 root@zero:~# sed -e '/sogar/d' &amp;lt; text&lt;br /&gt;
 123&lt;br /&gt;
 34&lt;br /&gt;
 4711&lt;br /&gt;
 test&lt;br /&gt;
&lt;br /&gt;
und schreiben in text2&lt;br /&gt;
 root@zero:~# sed -e '/sogar/d' &amp;lt; text &amp;gt; text2&lt;br /&gt;
 root@zero:~# more text2&lt;br /&gt;
 123&lt;br /&gt;
 34&lt;br /&gt;
 4711&lt;br /&gt;
 test&lt;br /&gt;
&lt;br /&gt;
Alle 3en durch DREI ersetzen&lt;br /&gt;
 root@zero:~# sed -e 's/3/DREI/g' &amp;lt; text&lt;br /&gt;
 sogar noch wichtiger&lt;br /&gt;
 12DREI&lt;br /&gt;
 DREI4&lt;br /&gt;
 4711&lt;br /&gt;
 test&lt;br /&gt;
&lt;br /&gt;
==wc==&lt;br /&gt;
Zählt die Anzahl von Zeichen, Wörter oder Zeilen&lt;br /&gt;
&lt;br /&gt;
Optionen&lt;br /&gt;
* -m : Zählt die Anzahl der Zeichen&lt;br /&gt;
 root@zero:~# more name&lt;br /&gt;
 1. karl&lt;br /&gt;
 2. heinz&lt;br /&gt;
 3. hans&lt;br /&gt;
 4. otto&lt;br /&gt;
 root@zero:~# wc '''-m''' tel&lt;br /&gt;
 33 tel&lt;br /&gt;
&lt;br /&gt;
* -w : Zählt die Anzahl der Wörter (einschließlich Zahlen und andere Zeichen)&lt;br /&gt;
 root@zero:~# wc '''-w''' name&lt;br /&gt;
 8 name&lt;br /&gt;
&lt;br /&gt;
* -l : Zählt die Anzahl der Zeilen&lt;br /&gt;
 root@zero:~# wc '''-l''' name&lt;br /&gt;
 4 name&lt;br /&gt;
&lt;br /&gt;
==Sort==&lt;br /&gt;
&lt;br /&gt;
Zum sortieren von Dateien nach Feldern benutzt man sort. sort liest von STDIN man kann die Datei aber auch als Argument übergeben. &lt;br /&gt;
&lt;br /&gt;
Sortiert nach dem ersten Feld&lt;br /&gt;
  root@zero:~# sort /etc/passwd 	 &lt;br /&gt;
&lt;br /&gt;
Es wird geprüft ob die Datei schon sortiert ist &lt;br /&gt;
 root@zero:~# sort -c /etc/passwd 	&lt;br /&gt;
&lt;br /&gt;
Sortiert nach dem ersten Feld (Richtungsumkehr)  &lt;br /&gt;
 root@zero:~#  sort -r /etc/passwd&lt;br /&gt;
&lt;br /&gt;
Führende Leersortzeichen werden ignoriert &lt;br /&gt;
 root@zero:~# sort -b /etc/passwd&lt;br /&gt;
&lt;br /&gt;
Ausgabe  in die Datei pass&lt;br /&gt;
 root@zero:~# sort  /etc/passwd   -o pass	 &lt;br /&gt;
&lt;br /&gt;
nimmt : als Trenner -Voreinstellung ist TAB&lt;br /&gt;
  root@zero:~# sort -t : /etc/passwd&lt;br /&gt;
&lt;br /&gt;
sortiert nach dem  3 Feld,  der Trenner ist : und es wird nummerisch sortiert&lt;br /&gt;
&lt;br /&gt;
 root@zero:~# sort -t: +2 -n /etc/passwd		&lt;br /&gt;
&lt;br /&gt;
sortiert nach dem  3 Feld,  der Trenner ist : und es wird nummerisch sortiert&lt;br /&gt;
					&lt;br /&gt;
 root@zero:~# sort -t: -k 3 -n /etc/passwd&lt;br /&gt;
&lt;br /&gt;
Sortiert nach dem  3  bis zum 5 Feld, der Trenner ist : und es wird nummerisch sortiert&lt;br /&gt;
	&lt;br /&gt;
 root@zero:~# sort -t: -k 3,5 -n /etc/passwd	&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==INodes==&lt;br /&gt;
Inode (oder I-Node) wird im Deutschen am besten als Informationsknoten oder&lt;br /&gt;
Indexeintrag bezeichnet. Er fasst alle Attribute einer Datei zusammen außer dem Inhalt&lt;br /&gt;
und dem Namen der Datei.&lt;br /&gt;
&lt;br /&gt;
===Daten===&lt;br /&gt;
{| border=1 cellpadding=2&lt;br /&gt;
|type&lt;br /&gt;
|Der Typ der Datei wird als einzelner Buchstabe angezeigt. Der Typ einer Datei wird beim Anlegen der Datei festgelegt&lt;br /&gt;
|-&lt;br /&gt;
|Permissions &lt;br /&gt;
|Die Zugriffsrechte der Datei werden in den 12 Bit sstrwxrwxrwx abgespeichert.Wenn sie gesetzt sind, werden sie bei &lt;br /&gt;
der Ausgabe an Stelle der x-Rechte ausgegeben. Die Zugriffsrechte können mit dem Kommando chmod verändert werden.&lt;br /&gt;
|-&lt;br /&gt;
|link count&lt;br /&gt;
|In UNIX kann eine Datei mehr als einen Namen haben. Der Link Count gibt die Anzahl der Namen einer Datei an. Er kann&lt;br /&gt;
mit dem Kommando ln erhöht und dem Kommando rm erniedrigt werden.&lt;br /&gt;
|-&lt;br /&gt;
|owner&lt;br /&gt;
|Für den Dateieigentümer gelten die in der ersten rwx-Gruppe festgelegten Zugriffsrechte. Standardmäßig ist der &lt;br /&gt;
Eigentümer einer Datei derjenige Benutzer, der die Datei angelegt hat.&lt;br /&gt;
|-&lt;br /&gt;
|group&lt;br /&gt;
|Für Benutzer, die in der gleichen Gruppe sind, der die Datei angehört, gelten die in der zweiten rwx-Gruppe festgelegten&lt;br /&gt;
Zugriffsrechte. In System V gehört eine Datei standardmäßig der Gruppe an, in der der anlegende Benutzer gerade ist.&lt;br /&gt;
|-&lt;br /&gt;
|size&lt;br /&gt;
|Bei normalen Dateien und Verzeichnissen gibt diese Information die Länge der Datei in Byte an.&lt;br /&gt;
|-&lt;br /&gt;
|access time&lt;br /&gt;
|Die Zugriffszeit gibt den Zeitpunkt des letzten Lesezugriffes auf eine Datei an. Aus Effizienzgründen wird die &lt;br /&gt;
Zugriffszeit an Verzeichnissen nicht gesetzt, wenn ein Verzeichnis durchsucht wird, obwohl man dies erwarten könnte. ''(ls -l --time=atime)''&lt;br /&gt;
|-&lt;br /&gt;
|modification time&lt;br /&gt;
|Die Modifikationszeit gibt die Zeit des letzten Schreibzugriffes auf die Daten der Datei an. Intern speichert UNIX &lt;br /&gt;
die Zeit als Sekunden seit Beginn des Jahres 1970 und in GMT ab. Für die Ausgabe wird dies in ein besser lesbares &lt;br /&gt;
Format in der lokalen Zeitzone umgewandelt. ''(ls -l)''&lt;br /&gt;
|-&lt;br /&gt;
|change time &lt;br /&gt;
|Die Veränderungszeit gibt das Datum der letzten Statusänderung der Datei an. Sie wird immer dann gesetzt, wenn die &lt;br /&gt;
Informationen über die Datei sich ändern (Datum der Erzeugung wird nicht gespeichert) ''(ls -lc)''&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
===Dateiarten===&lt;br /&gt;
{| border=1 cellpadding=2&lt;br /&gt;
!Zeichen&lt;br /&gt;
!Typ&lt;br /&gt;
!Zweck&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;nowiki&amp;gt;-&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
|file&lt;br /&gt;
|normale Datei&lt;br /&gt;
|-&lt;br /&gt;
|d&lt;br /&gt;
|directory&lt;br /&gt;
|Verzeichnis&lt;br /&gt;
|-&lt;br /&gt;
|b&lt;br /&gt;
|block device&lt;br /&gt;
|Gerätedatei&lt;br /&gt;
|-&lt;br /&gt;
|c&lt;br /&gt;
|character device&lt;br /&gt;
|Gerätedatei&lt;br /&gt;
|-&lt;br /&gt;
|l&lt;br /&gt;
|link&lt;br /&gt;
|Querverweis&lt;br /&gt;
|-&lt;br /&gt;
|p&lt;br /&gt;
|named pipe&lt;br /&gt;
|Benannte Pipeline&lt;br /&gt;
|-&lt;br /&gt;
|s&lt;br /&gt;
|socket&lt;br /&gt;
|Netzwerkverbindung&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
====Normale Dateien====&lt;br /&gt;
Unter einer normalen Datei versteht man die Ansammlung von Daten. Dies kann ein Text, Programm, Bild oder sonstiges sein. &lt;br /&gt;
Beispiel&lt;br /&gt;
 root@zero:~# ls -l text | cut -c 1&lt;br /&gt;
 -&lt;br /&gt;
&lt;br /&gt;
====Verzeichnisse====&lt;br /&gt;
Dateien werden in Verzeichnissen gespeichert, nur so ist eine Ordnung möglich. &lt;br /&gt;
 root@zero:~# mkdir -v Ordner&lt;br /&gt;
 mkdir: Verzeichnis „Ordner“ angelegt&lt;br /&gt;
 &lt;br /&gt;
 root@zero:~# ls -ld Ordner | cut -c 1&lt;br /&gt;
 d&lt;br /&gt;
&lt;br /&gt;
====Gerätedateien (Block und Char)====&lt;br /&gt;
Gerätedateien ermöglichen Anwendungsprogrammen unter Benutzung des  Kernels den Zugriff auf die Hardwarekomponenten des Systems. Ansprechbar über Major und Minor Nummern &lt;br /&gt;
&lt;br /&gt;
Beispiele&lt;br /&gt;
&lt;br /&gt;
Sicherung des Master Boot Records der ersten Festplatte&lt;br /&gt;
 root@zero:~# dd if=/dev/sda of=/tmp/mbr.img bs=512 count=1&lt;br /&gt;
&lt;br /&gt;
Block Device &lt;br /&gt;
 root@zero:~# ls -l /dev/sda | cut -c 1 &lt;br /&gt;
 b&lt;br /&gt;
&lt;br /&gt;
Character Device &lt;br /&gt;
 root@zero:~# ls -l /dev/ttyS0  | cut -c 1 &lt;br /&gt;
 c&lt;br /&gt;
&lt;br /&gt;
Erstellen einer Gerätedatei&lt;br /&gt;
 root@zero:/dev# mknod sata1 b 8 0 &lt;br /&gt;
 root@zero:/dev# fdisk -l /dev/sata1 &lt;br /&gt;
 &lt;br /&gt;
 Platte /dev/sata1: 6442 MByte, 6442450944 Byte&lt;br /&gt;
 255 Köpfe, 63 Sektoren/Spuren, 783 Zylinder&lt;br /&gt;
 Einheiten = Zylinder von 16065 × 512 = 8225280 Bytes&lt;br /&gt;
 Disk identifier: 0x0005efab&lt;br /&gt;
 &lt;br /&gt;
       Gerät  boot.     Anfang        Ende     Blöcke   Id  System&lt;br /&gt;
 /dev/sata1p1   *           1         743     5968116   83  Linux&lt;br /&gt;
 /dev/sata1p2             744         783      321300    5  Erweiterte&lt;br /&gt;
 /dev/sata1p5             744         783      321268+  82  Linux Swap / Solaris&lt;br /&gt;
&lt;br /&gt;
====Named Pipes====&lt;br /&gt;
Benannte Pipes (Named Pipes) können dagegen auch zur Kommunikation zwischen Prozessen eingesetzt werden, die nicht miteinander&lt;br /&gt;
verwandt sind und sich darüber hinaus auf unterschiedlichen Rechnern innerhalb eines Netzwerkes befinden dürfen. Sie sind &lt;br /&gt;
flexibler als anonyme Pipes und eignen sich für sogenannte Client-Server-Anwendungen (es lassen sich auch RPCs realisieren).&lt;br /&gt;
Benannte Pipes ermöglichen die gleichzeitige Kommunikation in beide Richtungen, das heißt, Daten können im Vollduplexbetrieb &lt;br /&gt;
zwischen den Prozessen ausgetauscht werden.&lt;br /&gt;
 &lt;br /&gt;
Erstelle Named Pipe mit Namen /tmp/roehre. Schreibe &amp;quot;hallo welt&amp;quot; in die Pipe und bleibe&lt;br /&gt;
 xinux@zero:~$ mkfifo /tmp/roehre&lt;br /&gt;
 xinux@zero:~$ echo hallo welt &amp;gt; /tmp/roehre &lt;br /&gt;
&lt;br /&gt;
Gebe Inhalt der Pipe mit cat aus&lt;br /&gt;
 root@zero:~# cat &amp;lt; /tmp/roehre &lt;br /&gt;
 hallo welt&lt;br /&gt;
 root@zero:~# ls -l /tmp/roehre | cut -c 1&lt;br /&gt;
 p&lt;br /&gt;
&lt;br /&gt;
====Sockets====&lt;br /&gt;
Schnittstelle um es lokalen Anwendungen zu ermöglichen, miteinander Netwerkmässig zu kommunizieren.&lt;br /&gt;
&lt;br /&gt;
 root@lydia:~# netstat  -lnxp | tail -1&lt;br /&gt;
  unix  2 [ ACC ] STREAM HÖRT 21951 6646/nm-applet /tmp/orbit-thomas/linc-19f6-0-2b9b81095cede&lt;br /&gt;
&lt;br /&gt;
 root@lydia:~# ls -l /tmp/orbit-thomas/linc-19f6-0-2b9b81095cede  | cut -c 1 &lt;br /&gt;
 s&lt;br /&gt;
&lt;br /&gt;
====Links====&lt;br /&gt;
Bei Links handelt es sich um symbolische Verweise auf andere Dateien&lt;br /&gt;
&lt;br /&gt;
'''Softlink'''&lt;br /&gt;
Ein Softlink ist eine Datei die nur auf den Namen einer anderen Datei verweist. Wenn die Originaldatei gelöscht wird, zeigt &lt;br /&gt;
der Link ins Leere. &lt;br /&gt;
&lt;br /&gt;
 ln -s datei softlink&lt;br /&gt;
&lt;br /&gt;
{| border=1 cellpadding=2&lt;br /&gt;
| Vorteile&lt;br /&gt;
| Symbolische Links können auch auf Verzeichnisse angelegt werden&amp;lt;br&amp;gt;Sie sind partitionsübergreifend&amp;lt;br&amp;gt;Man kann sie auf Dateien anlegen, die noch nicht existieren&lt;br /&gt;
|-&lt;br /&gt;
| Nachteile&lt;br /&gt;
| Wenn das Original gelöscht ist, ist kein Zugriff mehr möglich&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Beispiel&lt;br /&gt;
 root@zero:~# ln -s text verweis&lt;br /&gt;
 root@zero:~# ls -l verweis&lt;br /&gt;
 lrwxrwxrwx 1 root root 4 2009-06-18 15:48 verweis -&amp;gt; text&lt;br /&gt;
&lt;br /&gt;
'''Hardlinks'''&lt;br /&gt;
 ln datei hardlink&lt;br /&gt;
Eigentlich ist jede Datei ein Hardlink. Ein Hardlink ist ein Verzeichniseintrag,&lt;br /&gt;
der auf eine Inode verweist. Beim Erzeugen einer Datei verweist ein Eintrag auf&lt;br /&gt;
eine Inode. Man kann dann weitere Verweise erzeugen. Der Linkcounter wird&lt;br /&gt;
jeweils um 1 erhöht. Beim Löschen einer Datei wird er jeweils um 1 reduziert.&lt;br /&gt;
Wird der Wert 0 erreicht, ist die Datei gelöscht.&lt;br /&gt;
{| border=1 cellpadding=2&lt;br /&gt;
| Vorteile&lt;br /&gt;
|Zugriff auf die Daten, selbst wenn das Orginal gelöscht ist.&lt;br /&gt;
|-&lt;br /&gt;
|Nachteile&lt;br /&gt;
|Man kann keine Hardlinks auf Verzeichnisse anlegen.&lt;br /&gt;
Ist nur innerhalb einer Partion möglich.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Beispiel&lt;br /&gt;
 root@zero:~# touch 1&lt;br /&gt;
 root@zero:~# echo &amp;quot;text&amp;quot; &amp;gt; 1&lt;br /&gt;
 root@zero:~# ln 1 2&lt;br /&gt;
 root@zero:~# more 2&lt;br /&gt;
 text&lt;br /&gt;
 root@zero:~# echo &amp;quot;doch kein text&amp;quot; &amp;gt; 1&lt;br /&gt;
 root@zero:~# more 1&lt;br /&gt;
 doch kein text&lt;br /&gt;
 root@zero:~# more 2&lt;br /&gt;
 doch kein text&lt;br /&gt;
&lt;br /&gt;
Weitere Optionen:&lt;br /&gt;
 -b sichert Dateien, statt sie zu überschreiben &lt;br /&gt;
 -f Überschreibt bestehende, gleichnamige Dateien&lt;br /&gt;
 -i fragt vor dem Überschreiben nach Bestätigung&lt;br /&gt;
 -v ausführliche Meldungen&lt;br /&gt;
Softlink mit dem Namen passwd im Homeverzeichnis angelegt&lt;br /&gt;
 xinux@zero:~$ ln -vs /etc/passwd .&lt;br /&gt;
 „./passwd“ -&amp;gt; „/etc/passwd“&lt;br /&gt;
Softlink mit dem Namen passwd im Homeverzeichnis angelegt(Original exestiert nicht) &lt;br /&gt;
 xinux@zero:~$ ln -vs /etc/hund .&lt;br /&gt;
 „./hund“ -&amp;gt; „/etc/hund“&lt;br /&gt;
Hardlink mit dem Namen hosts im Homeverzeichnis angelegt&lt;br /&gt;
  xinux@zero:~$ ln -v /etc/hosts .&lt;br /&gt;
 „./hosts“ =&amp;gt; „/etc/hosts“&lt;br /&gt;
Auf eine nicht existierende Datei kann kein Hardlink angelegt werden!&lt;br /&gt;
 xinux@zero:~$ ln -v /etc/katze .&lt;br /&gt;
 ln: Zugriff auf „/etc/katze“: No such file or directory&lt;br /&gt;
&lt;br /&gt;
==Shellsonderzeichen==&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot; cellpadding=&amp;quot;2&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
|;&lt;br /&gt;
|Trenne Kommandos&lt;br /&gt;
|-&lt;br /&gt;
|. oder source&lt;br /&gt;
|Ausführen wie in aktueller Shell&lt;br /&gt;
|-&lt;br /&gt;
|#&lt;br /&gt;
|Kommentar&lt;br /&gt;
|-&lt;br /&gt;
|&amp;amp;&lt;br /&gt;
|Programm im Hintergrund starten &lt;br /&gt;
|-&lt;br /&gt;
|&amp;amp;&amp;amp;&lt;br /&gt;
|UND -Ausführung  (wenn links wahr dann führe rechts aus)&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;nowiki&amp;gt;|&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
|STOUT von links wird zu STDIN von rechts &lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;nowiki&amp;gt;||&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
|ODER -Ausführung (wenn links falsch dann führe rechts aus)&lt;br /&gt;
|-&lt;br /&gt;
|*&lt;br /&gt;
|steht für beliebig viel Zeichen auch 0 &lt;br /&gt;
|-&lt;br /&gt;
|?&lt;br /&gt;
|steht für genau ein Zeichen &lt;br /&gt;
|-&lt;br /&gt;
|[abc]&lt;br /&gt;
|steht für eins der Zeichen in [ ] hier a b oder c &lt;br /&gt;
|-&lt;br /&gt;
|[ausdruck] &lt;br /&gt;
|Andere Schreibweis für test &lt;br /&gt;
|-&lt;br /&gt;
|~&lt;br /&gt;
|das Homeverzeichnis&lt;br /&gt;
|-&lt;br /&gt;
|&amp;gt;    und    &amp;gt;&amp;gt;&lt;br /&gt;
|leite in Datei um   &amp;gt;  überschreibe     &amp;gt;&amp;gt; hänge an &lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;&lt;br /&gt;
|lesen aus Datei &lt;br /&gt;
|-&lt;br /&gt;
|2&amp;gt;&amp;amp;1&lt;br /&gt;
|leite STDERR auf STDOUT&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;&amp;lt; ende&lt;br /&gt;
|Lesen aus Datei (Heredokument)&lt;br /&gt;
|-&lt;br /&gt;
|(...)&lt;br /&gt;
|Alles inhalb von ( ) wird als Subshell ausgeführt&lt;br /&gt;
|-&lt;br /&gt;
|{...}&lt;br /&gt;
|Gruppieren von Komandos &lt;br /&gt;
|-&lt;br /&gt;
|{ ,  ,  , }&lt;br /&gt;
|Zeichenketten zusammensetzen &lt;br /&gt;
|-&lt;br /&gt;
|$&lt;br /&gt;
|Inhalt von Variablen ausgeben $SUX&lt;br /&gt;
|-&lt;br /&gt;
|$* oder $@&lt;br /&gt;
|Liste der übergebenen Parameter&lt;br /&gt;
|-&lt;br /&gt;
|$# &lt;br /&gt;
|Anzahl der übergebenen Parameter &lt;br /&gt;
|-&lt;br /&gt;
|$0&lt;br /&gt;
|Name des Shellprogramms &lt;br /&gt;
|-&lt;br /&gt;
|$?&lt;br /&gt;
|Rückgabewert des letzten Kommandos &lt;br /&gt;
|-&lt;br /&gt;
|$!  und  $$&lt;br /&gt;
|PID des  $!  = letzten Hintergrund  -  , $$ = aktuellen Prozess&lt;br /&gt;
|-&lt;br /&gt;
|$1 ..$9&lt;br /&gt;
|Parameter 1 bis 9 &lt;br /&gt;
|-&lt;br /&gt;
|$() oder `  `&lt;br /&gt;
|Kommandosubstition&lt;br /&gt;
|-&lt;br /&gt;
|${ }&lt;br /&gt;
|Funktion zur Manipulation von Zeichenketten &lt;br /&gt;
|-&lt;br /&gt;
|$(( )) oder $[ ]&lt;br /&gt;
|Arithmetische Berechnung &lt;br /&gt;
|-&lt;br /&gt;
|&amp;quot;...&amp;quot;&lt;br /&gt;
|Entwertung der Sonderzeichen ausser $ ' \&lt;br /&gt;
|-&lt;br /&gt;
|'...'&lt;br /&gt;
|Entwertung sämtlicher Sonderzeichen ausser ' selbst&lt;br /&gt;
|-&lt;br /&gt;
|\  &lt;br /&gt;
|Entwertung des folgenden Sonderzeichens &lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==Prozesse==&lt;br /&gt;
===Was ist ein Prozess?===&lt;br /&gt;
Ein Prozess setzt sich aus zwei Teilen zusammen:&lt;br /&gt;
&lt;br /&gt;
1.Programm, das in den Hauptspeicher geladen wurde&lt;br /&gt;
&lt;br /&gt;
2.Prozessumgebung &lt;br /&gt;
&lt;br /&gt;
Unter einem Prozess versteht man ein Programm (binär), das in den Hauptspeicher&lt;br /&gt;
geladen wurde. Also nicht das Program selbst, das auf der Festplatte liegt ist der&lt;br /&gt;
Prozess, sondern es wird erst durch das Laden in den Hauptspeicher dazu.&lt;br /&gt;
Normalerweise liegt ein Programm als ausführbare Datei irgendwo auf der&lt;br /&gt;
Festplatte oder auf Diskette. Ob es sich bei dem Programm um eine binäre Datei&lt;br /&gt;
handelt, kann man mit dem Befehl '' file '' feststellen.&lt;br /&gt;
 &lt;br /&gt;
 root@zero:~# file /bin/mkdir&lt;br /&gt;
 /bin/mkdir: ELF 32-bit LSB executable, Intel 80386, version 1 (SYSV), dynamically linked (uses shared libs), for GNU/Linux 2.6.8, stripped&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Die Datei liegt im Maschinencode vor und kann in den Hauptspeicher geladen&lt;br /&gt;
werden. Sobald dies geschehen ist, kann der Rechner diesen Maschinencode&lt;br /&gt;
abarbeiten (ausführen).&lt;br /&gt;
&lt;br /&gt;
Da aber ein Programm nicht direkt auf die Hardware zugreifen soll, muss es vom&lt;br /&gt;
Betriebsystem kontrolliert werden. Das Betriebssystem liegt logisch gesehen&lt;br /&gt;
zwischen Hardware und Anwendung. Das Betriebssystem ordnet jedem Prozess&lt;br /&gt;
verschiedene Kenndaten zu, um die Prozesse verwalten zu können. Alle&lt;br /&gt;
Kenndaten, die einem Prozess zugeordnet sind, nennt man die&lt;br /&gt;
Prozessumgebung.Wenn man in der Shell ein Kommando eingibt, wird ein Prozess&lt;br /&gt;
kreiert. Natürlich ist die Shell selbst auch ein Prozess. Ein Prozess kann aber&lt;br /&gt;
genauso gut ein Serverprozess (Dienst) sein, z.B. Apache.&lt;br /&gt;
Ein wesentliches Merkmal eines Prozesses ist die Prozesskommunikation. Über im&lt;br /&gt;
Betriebssystem implementierte Methoden ist es möglich, dass verschiedene&lt;br /&gt;
Prozesse Signale und Daten untereinander austauschen können.&lt;br /&gt;
Dadurch wird auch dem Benutzer ermöglicht, einem Prozeß bestimmte Signale zu&lt;br /&gt;
senden bzw. auf den Status eines Prozesses Einfluss zu nehmen.&lt;br /&gt;
&lt;br /&gt;
===Prozesstabelle (Anzeige mit ps)===&lt;br /&gt;
Da zu jedem Prozess Kenndaten geführt werden, müssen diese auch irgendwo&lt;br /&gt;
festgehalten werden. Das geschieht in der sogenannten Prozesstabelle.&lt;br /&gt;
&lt;br /&gt;
Kenndaten der Prozesse (Auswahl):&lt;br /&gt;
* F Flags (z.B. ausgelagert; Systemprozess; Trace,...)&lt;br /&gt;
* UID Nutzer, mit dessen Rechten der Prozess ausgeführt wird&lt;br /&gt;
* PID Prozess - ID. Diese Nummer gibt eine eindeutige Prozess - Nummer&lt;br /&gt;
an. Sie wird vom System automatisch beim Starten des Prozesses&lt;br /&gt;
vergeben und ist für die Laufzeit eindeutig.&lt;br /&gt;
* PPID Prozessnumer der Eltern-Prozesses&lt;br /&gt;
* PRI Priorität eines Prozesses; je niedriger der Wert ist, desto besser&lt;br /&gt;
* NI ist der Nicewert des Prozesses; Nice erniedrigt den Grundwert&lt;br /&gt;
der Priorität des Prozesses und gibt damit Prozessorzeit für andere&lt;br /&gt;
Prozesse frei.&lt;br /&gt;
* SIZE Speichergröße des Prozesses inklusive Stack (eine Art Zwischenspeicher)&lt;br /&gt;
* RSS Verbrauch an physischen Speicher&lt;br /&gt;
* WCHAN ist der Name der Kernerlfunktion, in der der Prozess schläft&lt;br /&gt;
* STAT Status des Prozesses&lt;br /&gt;
R läuft       S schlafend     D nicht störbarer Schlaf&lt;br /&gt;
T angehalten  Z Zombie        W der Prozess belegt keine Seiten&lt;br /&gt;
* TIME Bisland benötigte Prozessorzeit&lt;br /&gt;
* SIZE ist die Größe von Text, Daten und Stack&lt;br /&gt;
* TTY die Nummer des kontrollierenden Teminal; wenn hier ein ? steht,&lt;br /&gt;
handelt es sich um einen Dämon oder Serverprozess.&lt;br /&gt;
* COMMAND Angabe des Prozesses selbst. Dies ist meist der Programmname.&lt;br /&gt;
&lt;br /&gt;
Weiteres&lt;br /&gt;
* GID Gruppe, unter der der Prozess läuft&lt;br /&gt;
* Verweis auf das aktuellen Arbeitsverzeichnis&lt;br /&gt;
* Um mit relativen Pfadangaben arbeiten zu können braucht man diesen Eintrag&lt;br /&gt;
* Tabelle mit Verweisen auf aktuell geöffnete Dateien&lt;br /&gt;
* 3 sind automatisch geöffnet Standardeingabe, Standardausgabe und&lt;br /&gt;
Standardfehlerkanal&lt;br /&gt;
&lt;br /&gt;
Beispiel&lt;br /&gt;
 root@zero:~# ps -l&lt;br /&gt;
 F S   UID   PID  PPID  C PRI  NI ADDR SZ WCHAN  TTY          TIME CMD&lt;br /&gt;
 4 R     0 18639 18631  0  80   0 -  1080 -      pts/0    00:00:00 bash&lt;br /&gt;
 0 R     0 25904 18639  0  80   0 -   635 -      pts/0    00:00:00 ps&lt;br /&gt;
&lt;br /&gt;
===Eltern und Kinder===&lt;br /&gt;
Jeder Prozess kann weitere Prozesse erzeugen. Die erzeugten Prozesse bezeichnet&lt;br /&gt;
man als Kindprozesse. Jeder Kindprozess weiß anhand der PID, woher er stammt.&lt;br /&gt;
&lt;br /&gt;
Alle Prozesse sind von einem anderen Prozess gestartet worden, mit Ausnahme&lt;br /&gt;
des Pseudoprozesses (noch im Kernel beim Starten erzeugter Prozess). Dieser hat&lt;br /&gt;
die Prozessnummer 0. Er hat die Aufgabe, den Init Prozess ( /sbin/init die Nummer&lt;br /&gt;
1) zu starten, der in System V alle anderen Prozesse direkt oder über seine Kind-&lt;br /&gt;
prozesse startet. (init wird konfiguriert durch die /etc/inittab)&lt;br /&gt;
&lt;br /&gt;
Es gibt zwei Arten wie ein Prozess gestartet werden kann:&lt;br /&gt;
&lt;br /&gt;
# Fork und Exec: Prozessumgebung wird dupliziert, der neue Prozess bekommt eine eigene neue PID&lt;br /&gt;
# Exec: Alter Prozess wird durch neuen Prozess überladen (geht mit dem shell-buildin exec)&lt;br /&gt;
&lt;br /&gt;
'''Rechte auf Objekte UID GID'''&lt;br /&gt;
Ob ein Prozess auf eine Datei zugreifen kann, entscheidet der Kernel anhand der&lt;br /&gt;
Zugriffssrechte, die auf der Datei gesetzt sind. Er checkt anhand der UID und GID&lt;br /&gt;
des Prozesses, ob es erlaubt ist. Mit dieser Technik wird letztendlich geprüft, was&lt;br /&gt;
ein User darf, und was nicht.&lt;br /&gt;
&lt;br /&gt;
===Rechenzeit und Priorität===&lt;br /&gt;
Da auch bei Prozessen eine Gerechtigkeit herschen muss, muss eine Instanz&lt;br /&gt;
darüber entscheiden wie lange ein Prozess Rechenzeit verbrauchen darf.&lt;br /&gt;
Folgende Kenndaten werden dazu benötigt&lt;br /&gt;
* clocktick = Zeiteinheit&lt;br /&gt;
* n = Faktor über den Kernel einstellbar&lt;br /&gt;
* slice = n &amp;lt;nowiki&amp;gt;*&amp;lt;/nowiki&amp;gt; clocktick&lt;br /&gt;
* agingtime = weitere Zeiteinheit über den Kernel einstellbar&lt;br /&gt;
&lt;br /&gt;
Es wird davon ausgegangen das der Prozess mit der niedrigsten Priorität gerade&lt;br /&gt;
rechnet. Pro clocktick erhöht sich die Priorität dieses Prozesses um eins.&lt;br /&gt;
&lt;br /&gt;
Jetzt können 3 Situationen eintreten die alle dazu führen das der Scheduler&lt;br /&gt;
aufgerufen wird.&lt;br /&gt;
&lt;br /&gt;
# Prozess blockiert wegen einer Ausgabe oder Eingabe.&lt;br /&gt;
# Gibt Rechenzeit freiwillig ab.&lt;br /&gt;
# Der Slice endet.&lt;br /&gt;
&lt;br /&gt;
Der Aufruf des Schedulers bewirkt das der Prozess mit der niedrigsten Priorität&lt;br /&gt;
gescheduled wird, er also nun rechnen darf. Nach Ablauf der agingtime werden&lt;br /&gt;
nun die Prozesse &amp;quot;gealtert&amp;quot;. Das geschieht nach folgender Formel&lt;br /&gt;
&lt;br /&gt;
Neue Priorität = Alte Priorität / 2 + Nicewert&lt;br /&gt;
&lt;br /&gt;
Der User hat die Möglichkeit, über den sogenannten Nicewert den Grundwert für&lt;br /&gt;
einen Prozess zu senken. Der Prozess braucht dann länger für seine Abarbeitung.&lt;br /&gt;
Er verhält sich somit netter zu den anderen Prozessen. Normale User können nur&lt;br /&gt;
netter werden, der Systemverwalter kann auch nicht netter (gemeiner) werden. Der&lt;br /&gt;
Bereich liegt zwischen 19 (sehr nett) bis 0 (weniger nett) für die User, und 19 bis&lt;br /&gt;
-20 für root.&lt;br /&gt;
&lt;br /&gt;
[[Image:pri.png]]&lt;br /&gt;
&lt;br /&gt;
'''Signale'''&lt;br /&gt;
&lt;br /&gt;
Mit den Kommando kill und killall kann man Prozessen Signale schicken&lt;br /&gt;
&lt;br /&gt;
 kill -Signalnummer PID &lt;br /&gt;
&lt;br /&gt;
Signalnummer&lt;br /&gt;
{| border=1 cellpadding=2&lt;br /&gt;
!Signalname&lt;br /&gt;
!Wert&lt;br /&gt;
!Aktion&lt;br /&gt;
|-&lt;br /&gt;
|SIGHUP&lt;br /&gt;
|1&lt;br /&gt;
|Neuinitialisierung eines Prozesses&lt;br /&gt;
|-&lt;br /&gt;
|SIGINT&lt;br /&gt;
|2&lt;br /&gt;
|Interrupt-Signal von der Tastatur (STRG+c)&lt;br /&gt;
|-&lt;br /&gt;
|SIGQUIT&lt;br /&gt;
|3&lt;br /&gt;
|Interrupt-Signal von der Tastatur (STRG+c) mit Dump&lt;br /&gt;
|-&lt;br /&gt;
|SIGKILL&lt;br /&gt;
|9&lt;br /&gt;
|unwiderrufliches Beendigungssignal (Töten)&lt;br /&gt;
|-&lt;br /&gt;
|SIGSEGV&lt;br /&gt;
|11&lt;br /&gt;
|Ungültige Speicherreferenz (bedeutet oft auf defekten Speicher)&lt;br /&gt;
|-&lt;br /&gt;
|SIGTERM &lt;br /&gt;
|15&lt;br /&gt;
|Beendigungssignal (geöffnete Dateien werden geschlossen)&lt;br /&gt;
|-&lt;br /&gt;
|SIGCONT &lt;br /&gt;
|18&lt;br /&gt;
|Weiterfahren, wenn gestoppt&lt;br /&gt;
|-&lt;br /&gt;
|SIGSTOP&lt;br /&gt;
|19&lt;br /&gt;
|Prozessstop&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Beispiel&lt;br /&gt;
 root@zero:~# kill -1 7562&lt;br /&gt;
&lt;br /&gt;
===Programme im Zusammenhang mit Prozessen===&lt;br /&gt;
====ps: Zeigt die Prozesse mit ihrem Status an====&lt;br /&gt;
 root@zero:~# ps&lt;br /&gt;
  PID TTY          TIME CMD&lt;br /&gt;
 14134 pts/0    00:00:00 bash&lt;br /&gt;
 14149 pts/0    00:00:00 ps&lt;br /&gt;
&lt;br /&gt;
 root@zero:~# ps -elf | grep apache&lt;br /&gt;
 1 S root      5738     1  0  80   0 -  5461 select Jun16 ?        00:00:00 /usr/sbin/apache2 -k start&lt;br /&gt;
 5 S www-data  5739  5738  0  80   0 -  5581 inet_c Jun16 ?        00:00:00 /usr/sbin/apache2 -k start&lt;br /&gt;
 5 S www-data  5742  5738  0  80   0 -  5461 inet_c Jun16 ?        00:00:00 /usr/sbin/apache2 -k start&lt;br /&gt;
 5 S www-data  5743  5738  0  80   0 -  5461 inet_c Jun16 ?        00:00:00 /usr/sbin/apache2 -k start&lt;br /&gt;
 5 S www-data  5745  5738  0  80   0 -  5461 inet_c Jun16 ?        00:00:00 /usr/sbin/apache2 -k start&lt;br /&gt;
 5 S www-data  5746  5738  0  80   0 -  5461 inet_c Jun16 ?        00:00:00 /usr/sbin/apache2 -k start&lt;br /&gt;
 0 S root     14153 14134  0  80   0 -   837 pipe_w 16:59 pts/0    00:00:00 grep apache&lt;br /&gt;
&lt;br /&gt;
Option 	Beschreibung&lt;br /&gt;
*l langes Format&lt;br /&gt;
*u 	zeige für jeden Prozess Besitzer und Startzeit an&lt;br /&gt;
*j 	Jobs-Format: Zeige PGID und SID an&lt;br /&gt;
*s 	Informationen über Signale ausgeben&lt;br /&gt;
*m 	Speicher-Informationen anzeigen&lt;br /&gt;
*f 	Baumstruktur der Prozesse anzeigen (ähnlich pstree)&lt;br /&gt;
*a 	alle Prozesse (jedes Benutzers) anzeigen&lt;br /&gt;
*x 	kontrollierendes Terminal nicht anzeigen&lt;br /&gt;
*e 	Für den Prozess gültige Umgebungsvariablen mit anzeigen (sinnvollerweise mit mehreren Optionen »w« anwenden, um die Ausgabe nicht am Zeilenende abzuschneiden)&lt;br /&gt;
*w 	längere Ausgabe. »w« kann mehrfach verwendet werden, um die maximale Länge um je eine Zeile zu vergrößern&lt;br /&gt;
*h 	Header mit Feldbezeichnern unterdrücken&lt;br /&gt;
*r 	nur laufende Prozesse ausgeben&lt;br /&gt;
*n 	User-ID statt User-Name ausgeben&lt;br /&gt;
*txx 	nur Prozesse ausgeben, die vom angegebenen Terminal kontrolliert werden. xx kann entweder einer der Terminal-Gerätenamen unter /dev (z.B. tty1) oder die entsprechende Kurzbezeichnung ohne »tty« (z.B. 1) sein.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
====nice: Lässt ein Programm mit verändertem Grundwert der Priorität laufen====&lt;br /&gt;
 root@zero:~# nice&lt;br /&gt;
 0&lt;br /&gt;
 root@zero:~# nice -n 9 bash&lt;br /&gt;
 root@zero:~# nice&lt;br /&gt;
 9&lt;br /&gt;
 root@zero:~#&lt;br /&gt;
&lt;br /&gt;
====renice: Ändert den Grundwert der Priorität eines laufenden Prozesses====&lt;br /&gt;
 root@zero:~# renice 10 5742&lt;br /&gt;
 5742: Alte Priorität: 0, neue Priorität: 10&lt;br /&gt;
&lt;br /&gt;
====top: Zeigt die Prozesse mit ihrem Status an (Abbrechen mit q)====&lt;br /&gt;
 root@zero:~# top&lt;br /&gt;
 top - 08:51:08 up 20 min,  1 user,  load average: 0.00, 0.02, 0.06&lt;br /&gt;
 Tasks:  93 total,   1 running,  92 sleeping,   0 stopped,   0 zombie&lt;br /&gt;
 Cpu(s):  1.6%us,  3.1%sy,  0.1%ni, 84.9%id, 10.2%wa,  0.0%hi,  0.2%si,  0.0%st&lt;br /&gt;
 Mem:    509504k total,   273948k used,   235556k free,    11312k buffers&lt;br /&gt;
 Swap:   321260k total,        0k used,   321260k free,   118380k cached&lt;br /&gt;
 &lt;br /&gt;
  PID USER      PR  NI  VIRT  RES  SHR S %CPU %MEM    TIME+  COMMAND                                                                       &lt;br /&gt;
 2208 mysql     20   0  125m  21m 5552 S  1.7  4.2   0:02.29 mysqld                                                                        &lt;br /&gt;
 3201 root      20   0  2444 1064  828 R  1.7  0.2   0:00.04 top                                                                           &lt;br /&gt;
    1 root      20   0  1908  780  564 S  0.0  0.2   0:02.19 init                                                                          &lt;br /&gt;
    2 root      15  -5     0    0    0 S  0.0  0.0   0:00.00 kthreadd                                                                      &lt;br /&gt;
    3 root      RT  -5     0    0    0 S  0.0  0.0   0:00.00 migration/0                                                                   &lt;br /&gt;
    4 root      15  -5     0    0    0 S  0.0  0.0   0:00.03 ksoftirqd/0                                                                   &lt;br /&gt;
    5 root      RT  -5     0    0    0 S  0.0  0.0   0:00.00 watchdog/0                                                                    &lt;br /&gt;
    6 root      15  -5     0    0    0 S  0.0  0.0   0:00.04 events/0                                                                      &lt;br /&gt;
    7 root      15  -5     0    0    0 S  0.0  0.0   0:00.00 khelper                                                                       &lt;br /&gt;
    8 root      RT  -5     0    0    0 S  0.0  0.0   0:00.00 kstop/0                                                                       &lt;br /&gt;
    9 root      15  -5     0    0    0 S  0.0  0.0   0:00.00 kintegrityd/0                                                                 &lt;br /&gt;
   10 root      15  -5     0    0    0 S  0.0  0.0   0:00.03 kblockd/0                                                                     &lt;br /&gt;
   11 root      15  -5     0    0    0 S  0.0  0.0   0:00.00 kacpid                                                                        &lt;br /&gt;
   12 root      15  -5     0    0    0 S  0.0  0.0   0:00.00 kacpi_notify                                                                  &lt;br /&gt;
   13 root      15  -5     0    0    0 S  0.0  0.0   0:00.00 cqueue                                                                        &lt;br /&gt;
   14 root      15  -5     0    0    0 S  0.0  0.0   0:00.53 ata/0                                                                         &lt;br /&gt;
   15 root      15  -5     0    0    0 S  0.0  0.0   0:00.00 ata_aux&lt;br /&gt;
&lt;br /&gt;
Kommandos&lt;br /&gt;
&lt;br /&gt;
*h - Hilfe&lt;br /&gt;
*u - User&lt;br /&gt;
*k - Kill&lt;br /&gt;
*r - Renice&lt;br /&gt;
*d - Delay (Default 3s)&lt;br /&gt;
*n - Tasks (Default unbegrenzt)&lt;br /&gt;
*W - Schreibe aktuelle Konfiguration in Datei&lt;br /&gt;
*q - Quit&lt;br /&gt;
&lt;br /&gt;
====pstree: Zeigt die Prozesse als Baumstruktur====&lt;br /&gt;
 root@zero:~# pstree&lt;br /&gt;
 init─┬─NetworkManager&lt;br /&gt;
      ├─acpid&lt;br /&gt;
      ├─apache2───5*[apache2]&lt;br /&gt;
      ├─atd&lt;br /&gt;
      ├─bluetoothd&lt;br /&gt;
      ├─console-kit-dae───63*[{console-kit-dae}]&lt;br /&gt;
      ├─cron&lt;br /&gt;
      ├─cupsd&lt;br /&gt;
      ├─dbus-daemon&lt;br /&gt;
      ├─dd&lt;br /&gt;
      ├─gdm───gdm─┬─Xorg&lt;br /&gt;
      │           └─gdmgreeter&lt;br /&gt;
      ├─6*[getty]&lt;br /&gt;
      ├─hald───hald-runner─┬─hald-addon-acpi&lt;br /&gt;
      │                    ├─hald-addon-inpu&lt;br /&gt;
      │                    └─2*[hald-addon-stor]&lt;br /&gt;
      ├─klogd&lt;br /&gt;
      ├─nm-system-setti&lt;br /&gt;
      ├─nmbd&lt;br /&gt;
      ├─nscd───11*[{nscd}]&lt;br /&gt;
      ├─portmap&lt;br /&gt;
      ├─rpc.statd&lt;br /&gt;
      ├─slapd───2*[{slapd}]&lt;br /&gt;
      ├─smbd───smbd&lt;br /&gt;
      ├─sshd───sshd───bash───bash───pstree&lt;br /&gt;
      ├─syslogd&lt;br /&gt;
      ├─system-tools-ba&lt;br /&gt;
      ├─udevd&lt;br /&gt;
      ├─winbindd─┬─winbindd───winbindd&lt;br /&gt;
      │          └─3*[winbindd]&lt;br /&gt;
      └─wpa_supplicant&lt;br /&gt;
&lt;br /&gt;
===Jobs===&lt;br /&gt;
Unter einem Job versteht man ein Programm, welches man von der Shell gelöst&lt;br /&gt;
hat. D. h. man kann ganz normal weiter arbeiten und der Job verrichtet seinen&lt;br /&gt;
Dienst im Hintergrund. Man kann jederzeit zu diesem Job wieder Kontakt&lt;br /&gt;
aufnehmen.&lt;br /&gt;
&lt;br /&gt;
Ein Job kann auf 2 Arten gestarten werden:&lt;br /&gt;
&lt;br /&gt;
# Durch Anhängen des &amp;amp; Zeichens beim Programmstart&lt;br /&gt;
 root@zero:~# tail -f /var/log/messages &amp;amp;&lt;br /&gt;
 Jun 19 06:59:31 zero -- MARK --&lt;br /&gt;
 Jun 19 07:19:31 zero -- MARK --&lt;br /&gt;
 Jun 19 07:39:32 zero -- MARK --&lt;br /&gt;
 Jun 19 07:44:57 zero syslogd 1.5.0#5ubuntu3: restart.&lt;br /&gt;
 Jun 19 07:59:32 zero -- MARK --&lt;br /&gt;
 Jun 19 08:19:32 zero -- MARK --&lt;br /&gt;
 Jun 19 08:39:32 zero -- MARK --&lt;br /&gt;
 Jun 19 08:59:32 zero -- MARK --&lt;br /&gt;
 Jun 19 09:19:33 zero -- MARK --&lt;br /&gt;
 Jun 19 09:39:33 zero -- MARK --&lt;br /&gt;
 [3] 27421&lt;br /&gt;
&lt;br /&gt;
# Durch Stoppen des Prozesses durch Drücken von Strg-Z und in den Hintergrund schicken mit %n (n ist die Jobnummer)&lt;br /&gt;
 root@zero:~# watch cat /proc/cpuinfo&lt;br /&gt;
 Strg-Z&lt;br /&gt;
 [4]+  Stopped                 watch cat /proc/cpuinfo&lt;br /&gt;
 root@zero:~# bg %4&lt;br /&gt;
 [4]+ watch cat /proc/cpuinfo &amp;amp;&lt;br /&gt;
&lt;br /&gt;
Anweisungen im Zusammenhang mit Jobs (n ist die Jobnummer)&lt;br /&gt;
* bg %n : Einen Job in den Hintergrund stellen (wie oben)&lt;br /&gt;
* fg %n : Einen Job in den Vordergrund holen&lt;br /&gt;
 root@zero:~# fg %4&lt;br /&gt;
 watch cat /proc/cpuinfo&lt;br /&gt;
&lt;br /&gt;
* jobs : Aktive Jobs ausgeben&lt;br /&gt;
&lt;br /&gt;
 root@zero:~# jobs&lt;br /&gt;
 [1]   Running                 tail -f /var/log/syslog &amp;amp;&lt;br /&gt;
 [2]   Running                 tail -f /var/log/syslog &amp;amp;&lt;br /&gt;
 [3]-  Running                 tail -f /var/log/messages &amp;amp;&lt;br /&gt;
 [4]+  Stopped                 watch cat /proc/cpuinfo&lt;br /&gt;
&lt;br /&gt;
* Strg-Z : Einen Vordergrund-Job vorübergehend anhalten&lt;br /&gt;
* kill -STOP %n : Unterbricht Job im Hintergrund&lt;br /&gt;
 root@zero:~# kill -STOP %1&lt;br /&gt;
 root@zero:~# jobs&lt;br /&gt;
 [1]+  '''Stopped'''                 tail -f /var/log/syslog&lt;br /&gt;
 [2]   Running                 tail -f /var/log/syslog &amp;amp;&lt;br /&gt;
 [3]   Running                 tail -f /var/log/messages &amp;amp;&lt;br /&gt;
 [4]-  Stopped                 watch cat /proc/cpuinfo&lt;br /&gt;
* kill -CONT %n : Setzt den unterbrochenen Job im Hintergrund fort&lt;br /&gt;
root@zero:~# kill -CONT %1&lt;br /&gt;
root@zero:~# jobs&lt;br /&gt;
 [1]+  '''Running'''                 tail -f /var/log/syslog &amp;amp;&lt;br /&gt;
 [2]   Running                 tail -f /var/log/syslog &amp;amp;&lt;br /&gt;
 [3]   Running                 tail -f /var/log/messages &amp;amp;&lt;br /&gt;
 [4]-  Stopped                 watch cat /proc/cpuinfo&lt;br /&gt;
* kill -KILL %n : Tötet Job im Hintergrund&lt;br /&gt;
 root@zero:~# kill -KILL %1&lt;br /&gt;
 root@zero:~# jobs&lt;br /&gt;
 [1]+  '''Killed'''                  tail -f /var/log/syslog&lt;br /&gt;
 [2]   Running                 tail -f /var/log/syslog &amp;amp;&lt;br /&gt;
 [3]   Running                 tail -f /var/log/messages &amp;amp;&lt;br /&gt;
 [4]-  Stopped                 watch cat /proc/cpuinfo&lt;br /&gt;
 root@zero:~# jobs&lt;br /&gt;
 [2]   Running                 tail -f /var/log/syslog &amp;amp;&lt;br /&gt;
 [3]-  Running                 tail -f /var/log/messages &amp;amp;&lt;br /&gt;
 [4]+  Stopped                 watch cat /proc/cpuinfo&lt;br /&gt;
&lt;br /&gt;
Bedingungen, die zu Jobausführung eingehalten werden sollen:&lt;br /&gt;
* Der Job soll nicht auf den Bildschirm schreiben (Standardausgabe +Standardfehlerkanal).&lt;br /&gt;
* Er soll keine Eingaben vom Benutzer erwarten.&lt;br /&gt;
&lt;br /&gt;
==Suchen von Dateien==&lt;br /&gt;
===find===&lt;br /&gt;
 find ab_wo_wird_gesucht was_wird_gesucht aktion&lt;br /&gt;
 find [Pfad] [Bedingung] [Aktion]&lt;br /&gt;
&lt;br /&gt;
====Nach Namen====&lt;br /&gt;
 find [Pfad] '''-name''' [Name]&lt;br /&gt;
 &lt;br /&gt;
Finde alle Dateien mit Namen test ab dem Verzeichnis /home und gebe diese Zeilenweise aus&lt;br /&gt;
 root@zero:~# find /home -name test -print&lt;br /&gt;
 /home/xinux/test&lt;br /&gt;
 /home/test&lt;br /&gt;
&lt;br /&gt;
Wie oben, jedoch mit Namensanfang test&lt;br /&gt;
 root@zero:/home/xinux# find /home -name 'test*'&lt;br /&gt;
 /home/xinux/testdatei&lt;br /&gt;
 /home/xinux/test&lt;br /&gt;
 /home/test&lt;br /&gt;
&lt;br /&gt;
====Nach Benutzer(Eigentümer)====&lt;br /&gt;
 root@zero:/tmp# find /tmp/ '''-user''' xinux&lt;br /&gt;
 /tmp/datei&lt;br /&gt;
&lt;br /&gt;
====Nach Gruppe====&lt;br /&gt;
 root@zero:/tmp# find /tmp/ '''-group''' hacker&lt;br /&gt;
 /tmp/datei3&lt;br /&gt;
 /tmp/datei2&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
====Nach Typ====&lt;br /&gt;
Es wird nach Dateien anhand Ihrer Art gesucht:&lt;br /&gt;
 find [Pfad] '''-type''' [Typ] &lt;br /&gt;
Typ:&lt;br /&gt;
* f: Normale Dateien&lt;br /&gt;
 root@zero:~# find /tmp/ -type f&lt;br /&gt;
 /tmp/mbr.img&lt;br /&gt;
 /tmp/datei&lt;br /&gt;
 /tmp/zeugs&lt;br /&gt;
 /tmp/.X0-lock&lt;br /&gt;
* d: Verzeichnisse&lt;br /&gt;
 root@zero:~# find /var/log -type d&lt;br /&gt;
 /var/log&lt;br /&gt;
 /var/log/apache2&lt;br /&gt;
 /var/log/unattended-upgrades&lt;br /&gt;
 /var/log/apparmor&lt;br /&gt;
 /var/log/ConsoleKit&lt;br /&gt;
 /var/log/dist-upgrade&lt;br /&gt;
 /var/log/dist-upgrade/20090526-1052&lt;br /&gt;
 /var/log/cups&lt;br /&gt;
 /var/log/apt&lt;br /&gt;
 /var/log/fsck&lt;br /&gt;
 /var/log/samba&lt;br /&gt;
 /var/log/samba/cores&lt;br /&gt;
 /var/log/samba/cores/smbd&lt;br /&gt;
 /var/log/samba/cores/nmbd&lt;br /&gt;
 /var/log/samba/cores/winbindd&lt;br /&gt;
 /var/log/installer&lt;br /&gt;
 /var/log/gdm&lt;br /&gt;
 /var/log/news&lt;br /&gt;
* c: Char Devices (Zeichenorientierte Gerätedatei)&lt;br /&gt;
 root@zero:~# find / -type c&lt;br /&gt;
 /lib/udev/devices/kmem&lt;br /&gt;
 /lib/udev/devices/null&lt;br /&gt;
 /lib/udev/devices/console&lt;br /&gt;
 /lib/udev/devices/ppp&lt;br /&gt;
 /lib/udev/devices/net/tun&lt;br /&gt;
* b: Block Devices (Blockorientierte Gerätedatei)&lt;br /&gt;
* p: Benannte Pipe&lt;br /&gt;
* l: Links&lt;br /&gt;
* s: Sockets&lt;br /&gt;
&lt;br /&gt;
====Nach Modifikation====&lt;br /&gt;
Listet alle Dateien in /etc auf, die innerhalb von zwei Tagen modifiziert wurden&lt;br /&gt;
 root@zero:/var/log# find /etc/ -mtime 2 -print&lt;br /&gt;
 /etc/apache2&lt;br /&gt;
 /etc/apache2/mods-available&lt;br /&gt;
 /etc/apache2/conf.d&lt;br /&gt;
 /etc/apache2/sites-available&lt;br /&gt;
 /etc/bash_completion.d&lt;br /&gt;
 /etc/blkid.tab.old&lt;br /&gt;
 /etc/firefox-3.0/profile&lt;br /&gt;
 /etc/firefox-3.0/profile/chrome&lt;br /&gt;
 /etc/firefox-3.0/pref&lt;br /&gt;
 /etc/profile.d&lt;br /&gt;
 /etc/ufw/applications.d&lt;br /&gt;
 /etc/logrotate.d&lt;br /&gt;
 /etc/xulrunner-1.9&lt;br /&gt;
 /etc/blkid.tab&lt;br /&gt;
 /etc/cron.daily&lt;br /&gt;
 /etc/alternatives&lt;br /&gt;
 /etc/alternatives/x-www-browser&lt;br /&gt;
 /etc/alternatives/xulrunner&lt;br /&gt;
 /etc/gre.d&lt;br /&gt;
 /etc/hal/fdi/policy&lt;br /&gt;
 /etc/dbus-1/system.d&lt;br /&gt;
 /etc/udev/rules.d&lt;br /&gt;
&lt;br /&gt;
====Nach Größe====&lt;br /&gt;
Finde Dateien in /tmp, die größer als 100 MByte sind&lt;br /&gt;
 root@zero:/tmp# find /tmp/ -size +100M&lt;br /&gt;
 /tmp/datei&lt;br /&gt;
&lt;br /&gt;
Finde Dateien in /tmp, die kleiner als 100 KByte sind&lt;br /&gt;
 root@zero:/tmp# find /tmp/ -size -100k&lt;br /&gt;
 /tmp/&lt;br /&gt;
 /tmp/datei3&lt;br /&gt;
 /tmp/backup &lt;br /&gt;
 /tmp/datei2&lt;br /&gt;
 /tmp/.winbindd &lt;br /&gt;
 /tmp/.winbindd/pipe&lt;br /&gt;
 /tmp/mbr.img&lt;br /&gt;
 /tmp/zeugs&lt;br /&gt;
 /tmp/.ICE-unix&lt;br /&gt;
 /tmp/.X0-lock&lt;br /&gt;
 /tmp/datei1&lt;br /&gt;
 /tmp/.X11-unix&lt;br /&gt;
 /tmp/.X11-unix/X0&lt;br /&gt;
 /tmp/pulse-PKdhtXMmr18n&lt;br /&gt;
&lt;br /&gt;
====Nach Berechtigungen====&lt;br /&gt;
Finde Dateien in Home mit der Berechtigung 777 (-rwxrwxrwx)&lt;br /&gt;
 root@zero:/var# find /home/ -perm 777&lt;br /&gt;
 /home/samba&lt;br /&gt;
 /home/xinux/Examples&lt;br /&gt;
 /home/xinux/.pulse/1f0763ee4cf4c7e1d3c07fd149dda37b:runtime&lt;br /&gt;
 /home/test/Examples&lt;br /&gt;
&lt;br /&gt;
====Nach Zeit====&lt;br /&gt;
Modifiziert in der letzten Minute &lt;br /&gt;
 root@zero:~# find /var    -mmin -1&lt;br /&gt;
 /var/log/debug&lt;br /&gt;
 /var/log/kern.log&lt;br /&gt;
 /var/log/syslog&lt;br /&gt;
 /var/run/klogd/kmsg&lt;br /&gt;
&lt;br /&gt;
Modifiziert vor mehr als 9 Tagen&lt;br /&gt;
 root@zero:~# find /var    -mtime +9 &lt;br /&gt;
&lt;br /&gt;
Zugriff vor mehr als 9 Minuten&lt;br /&gt;
 root@zero:~# find /var    -amin +9 &lt;br /&gt;
&lt;br /&gt;
Kenndaten geändert in den letzen 2 Tagen&lt;br /&gt;
 root@zero:~# find /var    -ctime -2 &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Ausführen eines Befehls&lt;br /&gt;
 root@zero:~# find / -name &amp;quot;xinux?&amp;quot; -exec ls -l {} \;&lt;br /&gt;
&lt;br /&gt;
Ausführen eines Befehls mit Rückfrage&lt;br /&gt;
 root@zero:~# find / -name &amp;quot;xinux?&amp;quot; -ok  rm  {} \;&lt;br /&gt;
 &amp;lt; rm ... /tmp/xinux3 &amp;gt; ? y&lt;br /&gt;
 &amp;lt; rm ... /tmp/xinux2 &amp;gt; ? n&lt;br /&gt;
 &amp;lt; rm ... /tmp/xinux1 &amp;gt; ? y&lt;br /&gt;
&lt;br /&gt;
===locate===&lt;br /&gt;
Locate arbeitet über einen Index, der erstellt und aktualisiert werden muss. Aus diesem Grund kann locate teilweise nicht &lt;br /&gt;
akutell sein. Es ist immer schneller als find und es durchsucht immer das ganze Dateisystem. &lt;br /&gt;
 locate [Dateiname]&lt;br /&gt;
 &lt;br /&gt;
Lokalisiere die Datei wvdial.conf. Anmerkung: Der Stern wird beim Suchen automatisch hinzugefügt. Entspricht also&lt;br /&gt;
wvidal.conf*&lt;br /&gt;
 root@zero:~# locate wvdial.conf&lt;br /&gt;
 /etc/wvdial.conf&lt;br /&gt;
 /usr/share/man/man5/wvdial.conf.5.gz&lt;br /&gt;
 /var/lib/dpkg/info/wvdial.conffiles&lt;br /&gt;
 /var/lib/dpkg/info/wvdial.config&lt;br /&gt;
&lt;br /&gt;
Lokalisiere die Datei wvdial.conf und nur diese&lt;br /&gt;
 root@zero:~# locate -b '\wvdial.conf'&lt;br /&gt;
 /etc/wvdial.conf&lt;br /&gt;
&lt;br /&gt;
Aktualisieren des Indexes&lt;br /&gt;
 root@zero:~# updatedb&lt;br /&gt;
&lt;br /&gt;
==Wie wird ein Kommando lokalisiert==&lt;br /&gt;
Wenn die Shell alle Ersetzungen in der Kommandozeile vorgenommen und alle Umleitungen vorbereitet hat, ist der Zeitpunkt &lt;br /&gt;
gekommen, auf den der Anwender die ganze Zeit gewartet hat. Die Shell versucht das Kommando auszuführen. Dazu muss sie &lt;br /&gt;
es aber erst lokalisieren. Das erste passende Kommando wird ausgeführt.&lt;br /&gt;
&lt;br /&gt;
Als Kommandoname wird immer das erste Wort eines einfachen Kommandos erkannt. Ein Kommandoname kann mit Pfadnamen in &lt;br /&gt;
einem Verzeichnis (absolut oder relativ) angegeben werden. Die Shell erkennt dies an (mindestens) einem Slash `/' &lt;br /&gt;
im Kommandonamen. Wenn kein Verzeichnis angegeben ist, versucht die Shell selbst, das Kommando zu finden. Dazu wird &lt;br /&gt;
der Kommandoname zuerst in der Hashtabelle gesucht, dann wird er mit den Synonymen, mit den Scriptfunktionen und &lt;br /&gt;
schließlich mit den Shellfunktionen verglichen. &lt;br /&gt;
&lt;br /&gt;
Wird auf diese Weise kein Programm dieses Namens gefunden, werden alle in der PATH-Umgebungsvariablen aufgeführten &lt;br /&gt;
Verzeichnisse nach einer ausführbaren Datei dieses Namens durchsucht. Wird auch hier kein passendes Kommando gefunden, &lt;br /&gt;
gibt die Shell eine Fehlermeldung aus.&lt;br /&gt;
&lt;br /&gt;
===which und type===&lt;br /&gt;
====which====&lt;br /&gt;
which gibt die vollen Pfadnamen der Dateien aus, die bei Benutzung des angegebenen Befehls ausgeführt werden würden.&lt;br /&gt;
&lt;br /&gt;
 which [-a] Dateiname &lt;br /&gt;
&lt;br /&gt;
Optionen:&lt;br /&gt;
&lt;br /&gt;
* -a : Alle Treffer ausgeben, nicht nur den ersten&lt;br /&gt;
* --skip-dot : Verzeichnisse, die mit einem Punkt beginnen, auslassen&lt;br /&gt;
&lt;br /&gt;
Beispiel&lt;br /&gt;
 root@zero:~# which startx&lt;br /&gt;
 /usr/bin/startx&lt;br /&gt;
&lt;br /&gt;
====type====&lt;br /&gt;
Anzeigen der absoluten Pfadnamen von Befehlen, und ob sich diese Befehle in der Hash-Tabelle der aktuellen&lt;br /&gt;
Shell befinden.&lt;br /&gt;
&lt;br /&gt;
 type [Optionen] Befehle&lt;br /&gt;
&lt;br /&gt;
Beispiel&lt;br /&gt;
 root@zero:~# type ls&lt;br /&gt;
 ls is aliased to `ls --color=auto'&lt;br /&gt;
&lt;br /&gt;
Optionen:&lt;br /&gt;
&lt;br /&gt;
* -a : Alle vorkommenden Befehle werden ausgegeben, nicht nur das, welches aufgerufen werden würde&lt;br /&gt;
 root@zero:~# type '''-a''' ls&lt;br /&gt;
 ls is aliased to `ls --color=auto'&lt;br /&gt;
 ls is /bin/ls&lt;br /&gt;
&lt;br /&gt;
* -p : Anzeigen des Eintrags von Befehl in der Hash-Tabelle. Dieser Wert kann sich vom ersten Auftreten des Befehls in PATH&lt;br /&gt;
unterscheiden&lt;br /&gt;
 root@zero:~# type '''-p''' apache2&lt;br /&gt;
 /usr/sbin/apache2&lt;br /&gt;
&lt;br /&gt;
* -t : Anzeigen, ob Befehl ein Aliasname, ein Schlüsselwort, eine Funktion, ein eingebauter Befehl oder eine Datei ist&lt;br /&gt;
 root@zero:~# type '''-t''' apache2&lt;br /&gt;
 file&lt;/div&gt;</summary>
		<author><name>192.168.178.46</name></author>
	</entry>
	<entry>
		<id>https://www.xinux.net/index.php?title=Linux_Grundlagen&amp;diff=120</id>
		<title>Linux Grundlagen</title>
		<link rel="alternate" type="text/html" href="https://www.xinux.net/index.php?title=Linux_Grundlagen&amp;diff=120"/>
		<updated>2009-07-08T07:19:05Z</updated>

		<summary type="html">&lt;p&gt;192.168.178.46: /* Suchen von Dateien */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Einführung==&lt;br /&gt;
===Geschichte Unix===&lt;br /&gt;
====1969====&lt;br /&gt;
Am Anfang von Linux steht Multics, ein von Bell Laboratories geschaffenes &amp;quot;Betriebssystem&amp;quot;, &lt;br /&gt;
das noch mit Lochkarten arbeitete. Multics wird mit Unterstützung von AT&amp;amp;T und Western &lt;br /&gt;
Electric unter Mitarbeit von Ken Thompson und Dennis Ritchie weiterentwickelt. Obwohl sich &lt;br /&gt;
Bell Laboratories bald zurückzieht, gibt Thompson das Projekt nicht auf.  Zum Entwicklerteam &lt;br /&gt;
gehören auch Rudd Canaday und Brian Kernighan. Letzterer gibt 1970 dem Betriebssystem den Namen UNIX. &lt;br /&gt;
Thompson definiert 7 Richtlinien für UNIX:&lt;br /&gt;
 &lt;br /&gt;
# Hierarchische Anordnung der Dateisysteme&lt;br /&gt;
# Die Ausgabe von Daten an die Peripherie(-geräte) und Dateien soll gleich sein.&lt;br /&gt;
# Prozesse und Programme sollen miteinander kommunizieren.&lt;br /&gt;
# Multitasking (voneinander getrennte Prozesse)&lt;br /&gt;
# Persönliche Shell's&lt;br /&gt;
# Der Compiler soll für viele Programmiersprachen tauglich sein.&lt;br /&gt;
# Portabilität&lt;br /&gt;
&lt;br /&gt;
====1971====&lt;br /&gt;
Bis 1971 ist das für eine DEC PDP-7 geschriebene Unix als Version 1 auf eine PDP-11 portiert. Bis&lt;br /&gt;
zur Version 4 entwickelt Ritchie die Programmier- (Hoch-) Sprache C. Das in Assembler geschriebene&lt;br /&gt;
Unix wird fast völlig nach C übersetzt, wodurch zum erstenmal die geforderte Hardware-Unabhängigkeit&lt;br /&gt;
des Betriebssystems realisiert werden kann.&lt;br /&gt;
&lt;br /&gt;
====1975====&lt;br /&gt;
Da AT&amp;amp;T aufgrund vertraglicher Bindungen mit der US-Bundesregierung Unix nicht kommerziell vermarkten darf, stellt sie den Source Code für ein paar hundert Dollar den Universitäten, Lehr- und Forschungsanstalten zur Verfügung. Dies führt zu einer sehr dynamischen Entwicklung von Unix. 1975 wird die Version 6 als erstes UNIX-System veröffentlicht, die darauffolgende Version 7 wird sehr erfolgreich. Da es keine Standardisierung gibt, entwickeln bald verschiedenste Firmen ihr eigenes UNIX. Ab 1984 wird AT&amp;amp;T per Gerichtsbeschluss erlaubt, Unix zu vermarkten. AT&amp;amp;T verkauft sein Unix V und beginnt, sich um einen internationalen Standard von UNIX zu bemühen. &lt;br /&gt;
&lt;br /&gt;
====1984====&lt;br /&gt;
Durch Richard Stallman wird die Free Software Foundation (FSF) gegründet. Diese initiiert ein Projekt namens GNU (GNU ist Not Unix), welches das Ziel verfolgt, ein freies UNIX System zu schaffen. &lt;br /&gt;
&lt;br /&gt;
====1987====&lt;br /&gt;
AT&amp;amp;T verbietet die Verwendung des Unix Quellcodes an den Universitäten. Während dieser Zeit ist Andrew (Andy) Tannenbaum Professor an der Freien Universität von Amsterdam und entwickelt Minix. Minix ist ein kostengünstiges Lehrbetriebssystem und kommt ohne jeglichen AT&amp;amp;T Code aus, obwohl es die gleiche Funktionalität wie Unix 7 bietet. Im Usenet unter comp.os.minix entsteht eine Minix-Gemeinde, die den Minix Kernel und die Anwendungen rundherum programmiert und verbessert.&lt;br /&gt;
&lt;br /&gt;
====1991====&lt;br /&gt;
Linus Torvalds hat als Student für Computerwissenschaften an der Universität in Helsinki Minix installiert und das Buch von Andy Tannenbaum gelesen. Er beginnt im Sinne der FSF einen Unix ähnlichen Kernel zu programmieren mit der Idee, &amp;quot;ein besseres Minix als Minix&amp;quot; zu bauen. 1992 stellt er die Version 0.02 mit dem Namen Linux der Internetgemeinde zur Verfügung. &lt;br /&gt;
&lt;br /&gt;
====1994====&lt;br /&gt;
Die Linux Version 1.0 wird freigegeben. Das Linux Fieber beginnt... &lt;br /&gt;
&lt;br /&gt;
====1998====&lt;br /&gt;
Der Kreis der Linux Entwickler und Anwender ist kräftig angeschwollen. KDE 1.0 wird veröffentlicht. Die Zuwachsraten von Linux übertreffen die von Windows NT deutlich. &lt;br /&gt;
&lt;br /&gt;
====1999====&lt;br /&gt;
Der lange erwartete stabile Linux Kernel Version 2.2 wird freigegeben. Namhafte Firmen wie IBM kündigen ihre Unterstützung für Linux an. &lt;br /&gt;
&lt;br /&gt;
====2001====&lt;br /&gt;
Der lange erwartete stabile Linux Kernel Version 2.4 wird freigegeben. USB Unterstützung und eine neue Firewallimplementierung zeichnen ihn aus.&lt;br /&gt;
&lt;br /&gt;
====2003====&lt;br /&gt;
Linux Kernel Version 2.6 wird freigegeben. Am auffälligsten sind Änderungen bei der Modulverwaltung.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Distributionen===&lt;br /&gt;
{| Border=1 Cellpadding=2&lt;br /&gt;
| &lt;br /&gt;
|Url&lt;br /&gt;
|Paketformat&lt;br /&gt;
|-&lt;br /&gt;
|Red Hat&lt;br /&gt;
|www.redhat.com&lt;br /&gt;
|rpm&lt;br /&gt;
|-&lt;br /&gt;
|fedora&lt;br /&gt;
|fedora.redhat.com&lt;br /&gt;
|rpm&lt;br /&gt;
|-&lt;br /&gt;
|CentOS&lt;br /&gt;
|www.centos.org&lt;br /&gt;
|rpm&lt;br /&gt;
|-&lt;br /&gt;
|Suse/openSUSE&lt;br /&gt;
|www.opensuse.org&lt;br /&gt;
|rpm&lt;br /&gt;
|-&lt;br /&gt;
|Debian&lt;br /&gt;
|www.debian.org&lt;br /&gt;
|deb&lt;br /&gt;
|-&lt;br /&gt;
|Ubuntu&lt;br /&gt;
|www.ubuntu.com&lt;br /&gt;
|deb&lt;br /&gt;
|-&lt;br /&gt;
|Mandrake&lt;br /&gt;
|www.linux-mandrake.com&lt;br /&gt;
|rpm&lt;br /&gt;
|-&lt;br /&gt;
|Easy Linux&lt;br /&gt;
|www.easy-linux.de&lt;br /&gt;
|rpm&lt;br /&gt;
|-&lt;br /&gt;
|Turbo&lt;br /&gt;
|www.turbolinux.com&lt;br /&gt;
|rpm&lt;br /&gt;
|-&lt;br /&gt;
|minis&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|toms&lt;br /&gt;
|www.toms.net/rb&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|damn small linux&lt;br /&gt;
|www.damnsmalllinux.org&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|pocket-linux&lt;br /&gt;
|www.pocket-linux.org&lt;br /&gt;
|&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
====Bücher====&lt;br /&gt;
 Titel : Das Linux Anwenderhandbuch und Leitfaden für die Systemverwaltung&lt;br /&gt;
 Autor : Sebastian Hetze, Dirk Hohndel, Olaf Kirch und Martin Müller&lt;br /&gt;
 Verlag: Lunetix&lt;br /&gt;
 ISBN : 3-929764-06-7&lt;br /&gt;
&lt;br /&gt;
 Titel : Linux in a Nutshell&lt;br /&gt;
 Autor : Jessica Perry Hekman und die Mitarbeiter von O'Reilly &amp;amp; Associates&lt;br /&gt;
 Verlag: O'Reilly&lt;br /&gt;
 ISBN : 3-930673-57-6&lt;br /&gt;
&lt;br /&gt;
 Titel : Linux - Wegweiser zur Installation und Konfiguration&lt;br /&gt;
 Autor : Matt Welsh, Lar Kaufman, Matthias Kalle Dallheimer&lt;br /&gt;
 Verlag: O'Reilly&lt;br /&gt;
 ISBN : 3-930673-58-4 (deutsch), 1-56592-469-X (englisch)&lt;br /&gt;
&lt;br /&gt;
 Titel : Linux - Installation, Konfiguration, Anwendung&lt;br /&gt;
 Autor : Michael KoflerMultitasking&lt;br /&gt;
 Verlag: Addison-Wesley&lt;br /&gt;
 ISBN : 3-8273-1475-5&lt;br /&gt;
&lt;br /&gt;
 Titel : Linux - Wegweiser für Netzwerker&lt;br /&gt;
 Autor : Olaf Kirch&lt;br /&gt;
 Verlag: O'Reilly&lt;br /&gt;
 ISBN : 3-930673-18-5&lt;br /&gt;
&lt;br /&gt;
 Titel : TCP/IP-Netzwerk-Administration&lt;br /&gt;
 Autor : Craig Hunt&lt;br /&gt;
 Verlag: O'Reilly&lt;br /&gt;
 ISBN : 3-89721-110-6&lt;br /&gt;
&lt;br /&gt;
 Titel : Essential System Administration&lt;br /&gt;
 Autor : Eleen Frisch&lt;br /&gt;
 Verlag: O'Reilly&lt;br /&gt;
 ISBN : 1-56592-127-5&lt;br /&gt;
&lt;br /&gt;
==Betriebssystem==&lt;br /&gt;
===Was ist ein Betriebssystem?===&lt;br /&gt;
&lt;br /&gt;
Ein Betriebssystem liegt logisch gesehen zwischenAnwendungsprogramm und Hardware.&lt;br /&gt;
&lt;br /&gt;
Es nimmt die Anforderungen der Anwendungsprogramme entgegen und leitet&lt;br /&gt;
diese kontrolliert an die Hardware weiter. Kein Anwendungsprogramm sollte&lt;br /&gt;
direkt auf die Hardware zugreifen können. Den zentralen Zugang schafft einzig&lt;br /&gt;
das Betriebssystem. Somit kann das Betriebssystem unsinnige Anforderungen&lt;br /&gt;
oder Bedienungsfehler abblocken.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Image:Linux.jpg]]&lt;br /&gt;
&lt;br /&gt;
===Aufgaben eines Betriebssystems===&lt;br /&gt;
&lt;br /&gt;
# Verbergen der Komplexität der Maschine vor dem Anwender (Abstraktion)&lt;br /&gt;
# Bereitstellen einer Benutzerschnittstelle (&amp;quot;Kommandointerpreter&amp;quot;, &amp;quot;Shell&amp;quot;)&lt;br /&gt;
# Bereitstellen einer normierten Programmierschnittstelle (API)&lt;br /&gt;
# Verwaltung der Ressourcen der Maschine::&lt;br /&gt;
Hauptspeicher&lt;br /&gt;
Prozessor(en)&lt;br /&gt;
Hintergrundspeicher (Platte, Band, etc.)&lt;br /&gt;
Geräte (Terminal, Drucker, Plotter, etc.)&lt;br /&gt;
Rechenzeit&lt;br /&gt;
Koordination von Prozessen&lt;br /&gt;
&lt;br /&gt;
===Aufbau eines Betriebssystems===&lt;br /&gt;
&lt;br /&gt;
Ein Rechensystem besteht aus Hardware, Systemprogrammen und Anwendungs-&lt;br /&gt;
programmen. Unter einem Betriebssystem wird meist die Summe aus Betriebs-&lt;br /&gt;
systemkern (Kernel) und den wichtigsten Systemprogrammen verstanden. Ein&lt;br /&gt;
minimaler LINUX-Kernel besitzt ungefähr eine Größe von 400 - 800 kByte.&lt;br /&gt;
Weitere wichtige Systemkomponenten benötigen zusätzlich 10 - 100 Mbyte&lt;br /&gt;
Plattenplatz.&lt;br /&gt;
&lt;br /&gt;
Ein Betriebssystem stellt den Rechner als erweiterte Maschine (virtuelle&lt;br /&gt;
Maschine) über definierte Software-Schnittstellen zur Verfügung.&lt;br /&gt;
Das Betriebssystem dient als Betriebsmittelverwalter, der Anforderungen&lt;br /&gt;
befriedigt, protokolliert, abrechnet und vermittelt.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Aufgaben des Betriebssystemkerns:&lt;br /&gt;
&lt;br /&gt;
{| Border=1 Cellpadding=2&lt;br /&gt;
|Prozessverwaltung  (dispatching and scheduling)&lt;br /&gt;
| Mehrere Benutzer können mit mehreren Aktionen gleichzeitig im System arbeiten, ohne sich gegenseitig zu beeinflussen. Damit dies möglich ist,  müssen die Aktionen organisiert, koordiniert und verwaltet werden. Die zu verwaltende Einheit nennt man Prozess.&lt;br /&gt;
|-&lt;br /&gt;
|Speicherverwaltung   (memory management)&lt;br /&gt;
|Zuteilen von Speicherbereichen an laufende Prozesse, Schutz der Speicherbereiche vor unbefugten Zugriffen, bei Speicherengpässen: Auslagern von ganzen (swapping) oder von Teilen (paging) von Prozessen auf die Platte (swap file).&lt;br /&gt;
|-&lt;br /&gt;
|Dateiverwaltung  (file handling)&lt;br /&gt;
|Zuteilung von Plattenplatz für Programme, Benutzer und Systemdienste, Schreiben, Lesen und Strukturieren der Daten auf den Massenspeichern; Durch Bereitstellung einer entsprechenden Schnittstelle (VFS, virtual file system) kann der Kern Dateisysteme unterschiedlichster Art (EXT2, FAT, NFS, HPFS, NTFS, ...) ansprechen.&lt;br /&gt;
|-&lt;br /&gt;
|Geräteverwaltung  (resource management)&lt;br /&gt;
|Der Kern ermöglicht und kontrolliert den Zugriff auf die Hardware. Er steuert die Ein- und Ausgabetätigkeiten der Anwender. An den Kern&lt;br /&gt;
gebunden sind die entsprechenden Gerätetreiber (device driver), die damit eine Kommunikation zwischen Kern und Hardware ermöglichen.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
===Multitasking===&lt;br /&gt;
&lt;br /&gt;
Multitasking bedeutet, dass ein Rechner aus Anwendersicht mehrere Aufgaben&lt;br /&gt;
(Tasks) gleichzeitg übernehmen kann. Das Betriebssystem (OS) unterteilt die&lt;br /&gt;
gleichzeitig anstehenden Aufgaben in Einzelarbeitsschritte (Prozesse) und&lt;br /&gt;
managed durch ein Zeitscheibenverfahren (scheduling) die gleichmäßige&lt;br /&gt;
Abarbeitung der Prozesse.&lt;br /&gt;
&lt;br /&gt;
Es wird unterschieden zwischen:&lt;br /&gt;
&lt;br /&gt;
*non-präamptiven (kooperativen=die Ressourcen werden vom aktiven Prozess freigegeben, bei einem Hänger steht das ganze System)&lt;br /&gt;
&lt;br /&gt;
und&lt;br /&gt;
&lt;br /&gt;
*präamptiven (reinem=der Betriebssystemkern steuert Taskwechsel, indem nach einer festgelegten Zeit vom gerade aktiven Prozess zum nächsten weitergeschaltet wird)&lt;br /&gt;
&lt;br /&gt;
===Mehrprozessorbetrieb===&lt;br /&gt;
&lt;br /&gt;
Bei mehreren Prozessoren und Unterstützung durch das OS&lt;br /&gt;
(NT,Linux,Unix,Novell) können mehrere Tasks auf diese verteilt werden und&lt;br /&gt;
gleichzeitig bearbeitet werden. Nachteilig ist, dass dies nicht oder kaum von&lt;br /&gt;
Anwendungsprogrammen unterstützt wird und es zu Kommunikationsproblemen&lt;br /&gt;
zwischen den einzelnen Tasks kommen kann.&lt;br /&gt;
&lt;br /&gt;
===Arten von von Betriebssystemen===&lt;br /&gt;
&lt;br /&gt;
{|Border=1 Cellpadding=2&lt;br /&gt;
|&lt;br /&gt;
|SingleUser  &lt;br /&gt;
|Multiuser&lt;br /&gt;
|-&lt;br /&gt;
|Single Tasking&lt;br /&gt;
|MS - DOS&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|Multi Tasking&lt;br /&gt;
|Windows 3.x&lt;br /&gt;
|UNIX&lt;br /&gt;
|-&lt;br /&gt;
|&lt;br /&gt;
|Windows 95/98&lt;br /&gt;
|Linux&lt;br /&gt;
|-&lt;br /&gt;
|&lt;br /&gt;
|Windows NT4 ohne Erweiterungen&lt;br /&gt;
|VMS&lt;br /&gt;
|-&lt;br /&gt;
|&lt;br /&gt;
|OS/2 &lt;br /&gt;
|Windows NT mit  Erweiterungen&lt;br /&gt;
|-&lt;br /&gt;
|&lt;br /&gt;
|Apple&lt;br /&gt;
|Windows 2000, XP, 2003&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
===SHELL===&lt;br /&gt;
&lt;br /&gt;
Wenn man mit Linux arbeiten will, kann man nicht direkt mit dem Betriebssystem&lt;br /&gt;
kommunizieren. Man braucht dazu ein Hilfsprogramm, welches die&lt;br /&gt;
Kommandoeingaben ordnungsgemäß an das Betriebssystem weiterleitet. Dieses&lt;br /&gt;
Hilfsprogramm hat den Namen Shell.&lt;br /&gt;
&lt;br /&gt;
Die Shell schirmt den Betriebssystemkern von den Anwendungsprogrammen ab.&lt;br /&gt;
Die unterschiedlichen Shells erfüllen alle dieselbe Aufgabe, sie unterscheiden sich&lt;br /&gt;
allerdings in ihrer Syntax.&lt;br /&gt;
&lt;br /&gt;
==Die Installation im Überblick==&lt;br /&gt;
&lt;br /&gt;
Die Installation von Linux geschieht in folgenden Schritten:&lt;br /&gt;
&lt;br /&gt;
# Analyse (Welche Hardware habe ich? ,Hab ich weitere Betriebsysteme?)&lt;br /&gt;
# Booten des Linux-Kernels. (von CD oder Diskette)&lt;br /&gt;
# Laden einer RAM-Disk (das macht das Installationsprogramm automatisch).&lt;br /&gt;
# Partitionieren der Festplatte (fdisk).&lt;br /&gt;
# Einrichten der Swappartition (mkswap), Formatieren der Festplatte (mkfs).&lt;br /&gt;
# Montieren der Dateisysteme (mount), Aktivieren der Swapbereiche (swapon).&lt;br /&gt;
# Kopieren und Auspacken der Daten vom Installationsmedium auf die Festplatte (die eigentliche Installation). (rpm, dpkg oder tar).&lt;br /&gt;
# Geeignete Wahl der Bootmethode unter Berücksichtigung von Punkt 1 (grub, lilo).&lt;br /&gt;
# Konfiguration des Systems (Netz, Modem etc...).&lt;br /&gt;
&lt;br /&gt;
==Erste Schritte==&lt;br /&gt;
===Anmelden===&lt;br /&gt;
Sie können sich nun mit dem Usernamen und dem Passwort, das sie bei der Installation angelegt haben anmelden!&lt;br /&gt;
[[Image:benutzer.jpg]]&lt;br /&gt;
&lt;br /&gt;
[[Image:passwd.jpg]]&lt;br /&gt;
&lt;br /&gt;
===Terminal öffnen===&lt;br /&gt;
&lt;br /&gt;
Ein Terminal öffnen Sie über das Startmenü:&lt;br /&gt;
&lt;br /&gt;
[[Image:Terminalde.jpg]]&lt;br /&gt;
&lt;br /&gt;
Das geöffnete Terminal sieht dann folgendermaßen aus:&lt;br /&gt;
&lt;br /&gt;
[[Image:Terminalde2.jpg]]&lt;br /&gt;
&lt;br /&gt;
===Sudo===&lt;br /&gt;
Rootrechte erlangen sie über den &amp;quot;Sudo&amp;quot;-Befehl&lt;br /&gt;
 &lt;br /&gt;
''Den nächsten Befehl als root ausführen''&lt;br /&gt;
 xinux@zero:~$ sudo cat /etc/shadow&lt;br /&gt;
 [sudo] password for xinux:&lt;br /&gt;
&lt;br /&gt;
''Eine komplette Sitzung als root starten''&lt;br /&gt;
 xinux@zero:~$ sudo -i&lt;br /&gt;
 [sudo] password for xinux:&lt;br /&gt;
 root@zero:~#&lt;br /&gt;
&lt;br /&gt;
===Virtuelle Konsolen===&lt;br /&gt;
&lt;br /&gt;
In die Virtuelle Konsole gelangen sie über &amp;quot;STRG+ALT+(F1-F6)&amp;quot;.&lt;br /&gt;
Sie funktioniert wie ein ganz normales Terminal, und mit &amp;quot;ALT+F7&amp;quot;&lt;br /&gt;
gelangen sie wieder zurück auf die grafische Benutzeroberfläche&lt;br /&gt;
&lt;br /&gt;
===Abmelden===&lt;br /&gt;
&lt;br /&gt;
Abmelden können Sie sich wieder über das Startmenu unter:&lt;br /&gt;
&lt;br /&gt;
[[Image:Logout.jpg]]&lt;br /&gt;
&lt;br /&gt;
Fals sie nur einzelne Sitzungen in einem der Terminals oder &lt;br /&gt;
den Virtuellen Konsolen Abmelden wollen benutzen sie dazu den Befehl: &amp;quot;exit&amp;quot;&lt;br /&gt;
&lt;br /&gt;
===Herunterfahren===&lt;br /&gt;
&lt;br /&gt;
Das Herunterfahren funktioniert auf dem selben Weg.&lt;br /&gt;
&lt;br /&gt;
Entweder sie Benutzen wieder das Startmenü und benutzen diesmal den &amp;quot;Ausschalten ...&amp;quot; Knopf,&lt;br /&gt;
&lt;br /&gt;
Oder sie geben den äquivalenten &amp;quot;shutdown&amp;quot;-Befehl in einem Terminal bzw. der virtuellen Konsole ein.&lt;br /&gt;
&lt;br /&gt;
Allerdings müssen sie dazu als Administrator angemeldet sein s. &amp;quot;Sudo&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Wenn Sie den &amp;quot;shutdown&amp;quot;-Befehl benutzen wollen muss hinter den Befehl&lt;br /&gt;
&lt;br /&gt;
eine Zeitangabe in Minuten oder das wort &amp;quot;now&amp;quot; für sofortiges Ausschalten hinzugefügt werden:&lt;br /&gt;
&lt;br /&gt;
 xinux@zero:~$ sudo -i&lt;br /&gt;
 root@zero:~# shutdown 60&lt;br /&gt;
 &lt;br /&gt;
 Broadcast message from xinux@zero &lt;br /&gt;
         (/dev/pts/3) at 14:29 ...&lt;br /&gt;
 &lt;br /&gt;
 The system is going down for maintenance in 60 minutes!&lt;br /&gt;
&lt;br /&gt;
Sollten sie den Befehl widerrufen wollen dann drücken sie &amp;quot;STRG+C&amp;quot;,&lt;br /&gt;
&lt;br /&gt;
in dem Terminal in dem der shutdown Befehl gestartet wurde,&lt;br /&gt;
&lt;br /&gt;
oder geben sie den &amp;quot;shutdown&amp;quot;-Befehl zusammen mit der Abbruchoption &amp;quot;-c&amp;quot; in einem anderen Terminal ein:&lt;br /&gt;
&lt;br /&gt;
 root@zero:~# shutdown -c&lt;br /&gt;
&lt;br /&gt;
 shutdown: Shutdown cancelled&lt;br /&gt;
 root@zero:~# &lt;br /&gt;
&lt;br /&gt;
Wenn Sie den Rechner Neustarten möchten gibt es dazu die Option &amp;quot;-r&amp;quot; für den &amp;quot;shutdown&amp;quot;-Befehl&lt;br /&gt;
&lt;br /&gt;
oder den &amp;quot;reboot&amp;quot;-Befehl die beide auch als root ausgeführt werden müssen:&lt;br /&gt;
&lt;br /&gt;
 xinux@zero:~$ sudo -i&lt;br /&gt;
 [sudo] password for xinux: &lt;br /&gt;
 root@zero:~# shutdown -r now&lt;br /&gt;
&lt;br /&gt;
 root@zero:~# reboot&lt;br /&gt;
&lt;br /&gt;
===&amp;quot;man&amp;quot;===&lt;br /&gt;
&lt;br /&gt;
Programm zum Einsehen der Online-Manuals&lt;br /&gt;
&lt;br /&gt;
Die Manuals sind in folgende Sektionen unterteilt:&lt;br /&gt;
# Ausführbare Programme oder Shellbefehle&lt;br /&gt;
# Systemaufrufe (Kernelfunktionen)&lt;br /&gt;
# Bibliotheksaufrufe (Funktionen in System-Bibliotheken)&lt;br /&gt;
# Spezielle Dateien (gewöhnlich in /dev)&lt;br /&gt;
# Dateiformate und Konventionen, z. B. /etc/passwd&lt;br /&gt;
# Spiele&lt;br /&gt;
# Makropakete und Konventionen, z. B. man(7), groff(7)&lt;br /&gt;
# Systemadministrationsbefehle (in der Regel nur für root)&lt;br /&gt;
# Kernelroutinen [Nicht Standard]&lt;br /&gt;
&lt;br /&gt;
Aufruf eines Manuals erfolgt durch ''man kommando''&lt;br /&gt;
Beendet wird durch Drücken des Buchstabens q&lt;br /&gt;
Gesucht wird vorwärts durch Eingabe eines /suchausdruck&lt;br /&gt;
Gesucht wird rückwärts durch Eingabe eines ?suchausdruck&lt;br /&gt;
&lt;br /&gt;
Beispiele:&lt;br /&gt;
&lt;br /&gt;
      man passwd        Anschauen der Manualseite zum Programm passwd&lt;br /&gt;
      man 5 passwd      Anschauen der Manualseite zur Datei /etc/passwd&lt;br /&gt;
      man -a passwd     Anschauen aller Manualseiten zu passwd&lt;br /&gt;
      man -k passwd     Durchsucht die Kurzbeschreibungen der Manualseite&lt;br /&gt;
                        nach passwd und gibt alle Treffer aus&lt;br /&gt;
      man -f passwd      Gibt alle gefunden Kurzbescheibungen zu passwd aus&lt;br /&gt;
      man -L en passwd Gibt englische Manualseiten aus&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Was geht vor auf meinem System? (date,who)===&lt;br /&gt;
&lt;br /&gt;
Das Kommando date dient zur Abfrage von Datum und Uhrzeit.&lt;br /&gt;
&lt;br /&gt;
 xinux@zero:~ &amp;gt; date&lt;br /&gt;
 Fre Mär 16 16:35:03 CET 2001&lt;br /&gt;
&lt;br /&gt;
oder auch Anzeige der Grennwich Zeit:&lt;br /&gt;
&lt;br /&gt;
 xinux@zero:~ &amp;gt; date -u&lt;br /&gt;
 Fre Mär 16 15:35:34 UTC 2001&lt;br /&gt;
&lt;br /&gt;
 xinux@zero:~ &amp;gt; date -u &amp;quot;+%X&amp;quot;&lt;br /&gt;
 15:37:19&lt;br /&gt;
&lt;br /&gt;
 xinux@zero:~ &amp;gt; date -u &amp;quot;+%x&amp;quot;&lt;br /&gt;
 01/15/02&lt;br /&gt;
&lt;br /&gt;
who zeigt alle angemeldeten Benutzer an&lt;br /&gt;
&lt;br /&gt;
 thomas@cardassia:~ &amp;gt; who&lt;br /&gt;
 thomas             tty1 Feb 27 16:39&lt;br /&gt;
 thomas             tty2 Mar 2 17:08&lt;br /&gt;
 tina               tty6 Mar 16 16:38&lt;br /&gt;
&lt;br /&gt;
Mit `who --help' bekommen Sie mehr Informationen.&lt;br /&gt;
&lt;br /&gt;
 thomas@cardassia:~ &amp;gt; who --help&lt;br /&gt;
&lt;br /&gt;
Benutzung: who [OPTION]... [ DATEI | ARG1 ARG2 ]&lt;br /&gt;
&lt;br /&gt;
 -H, --heading             print line of column headings&lt;br /&gt;
 -i, -u, --idle            add user idle time as HOURS:MINUTES, . or old&lt;br /&gt;
 -l, --lookup              attempt to canonicalize hostnames via DNS&lt;br /&gt;
 -m                        only hostname and user associated with stdin&lt;br /&gt;
 -q, --count               all login names and number of users logged on&lt;br /&gt;
 -s                        (ignored)&lt;br /&gt;
 -T, -w, --mesg            add user's message status as +, - or ?&lt;br /&gt;
     --message             same as -T&lt;br /&gt;
     --writable            same as -T&lt;br /&gt;
     --help                display this help and exit&lt;br /&gt;
     --version             output version information and exit&lt;br /&gt;
&lt;br /&gt;
==Das UNIX-Dateisystem==&lt;br /&gt;
===Verzeichnisbaum===&lt;br /&gt;
&lt;br /&gt;
[[Image:vztree.jpg]]&lt;br /&gt;
&lt;br /&gt;
Das Betriebssystem UNIX besitzt ein hierarchisches Dateisystem. Es besteht aus:&lt;br /&gt;
* Dateien (Files)&lt;br /&gt;
Dateien speichern Informationen (Text, Bilder, Sound, Videos, Programme) und&lt;br /&gt;
werden über den Dateinamen angesprochen.&lt;br /&gt;
&lt;br /&gt;
* Verzeichnissen (Directories, Kataloge)&lt;br /&gt;
Verzeichnisse besitzen ebenfalls einen Namen und dienen zur Ordnung des&lt;br /&gt;
Dateisystems. Ein Verzeichnis kann Dateien und Unterverzeichnisse&lt;br /&gt;
(Subdirectories) enthalten. Das oberste Verzeichnis im Dateisystem heisst&lt;br /&gt;
Rootverzeichnis oder kurz Root und wird durch / (sprich: slash)&lt;br /&gt;
gekennzeichnet.&lt;br /&gt;
&lt;br /&gt;
Im Gegensatz zu Windows kennt UNIX keine Laufwerke.&lt;br /&gt;
Das obige Bild zeigt ein typisches UNIX-Dateisystem.&lt;br /&gt;
Unterhalb des Rootverzeichnisses befinden sich eine Vielzahl vonVerzeichnissen.&lt;br /&gt;
&lt;br /&gt;
===Wichtige Verzeichnisse===&lt;br /&gt;
&lt;br /&gt;
• '''Homeverzeichnis'''&lt;br /&gt;
&lt;br /&gt;
das Verzeichnis, in dem man sich unmittelbar nach dem Anmelden befindet. Das&lt;br /&gt;
Homeverzeichnis wird vom Systemverwalter eingerichtet; jeder Anwender&lt;br /&gt;
besitzt ein festes Homeverzeichnis. z.B. /home/hans&lt;br /&gt;
&lt;br /&gt;
~ (Tilde) bzw. $HOME (Shellvariable) kennzeichnen das Homeverzeichnis.&lt;br /&gt;
&lt;br /&gt;
• '''Aktuelles Verzeichnis'''&lt;br /&gt;
&lt;br /&gt;
Verzeichnis, in dem man sich aktuell befindet.&lt;br /&gt;
Das aktuelle Verzeichnis wird mit dem Befehl cd (change directory) oder per&lt;br /&gt;
Mausklick verändert.&lt;br /&gt;
Ein einfacher Punkt . kennzeichnet das aktuelle Verzeichnis.&lt;br /&gt;
&lt;br /&gt;
• '''Elternverzeichnis'''&lt;br /&gt;
&lt;br /&gt;
Verzeichnis unmittelbar oberhalb des aktuellen Verzeichnisses.&lt;br /&gt;
Jedes Verzeichnis ausser / besitzt genau ein Elternverzeichnis.&lt;br /&gt;
Zwei Punkte .. kennzeichnen das Elternverzeichnis (abhängig vom aktuellen&lt;br /&gt;
VZ).&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Absoluter Pfadname:===&lt;br /&gt;
&lt;br /&gt;
Beschreibt ausgehend vom Rootverzeichnis den Weg zum Zielverzeichnis oder zur&lt;br /&gt;
Zieldatei. (Welche Verzeichnisse müssen ausgehend von / durchlaufen werden, um&lt;br /&gt;
zum Ziel zu kommen?) Ein absoluter Pfadname beginnt immer mit / .&lt;br /&gt;
&lt;br /&gt;
===Relativer Pfadname:===&lt;br /&gt;
&lt;br /&gt;
Beschreibt ausgehend vom aktuellen Verzeichnis den Weg zum Zielverzeichnis&lt;br /&gt;
oder zur Zieldatei; ein relativer Pfadname beginnt nicht mit / .&lt;br /&gt;
/home/suxer&lt;br /&gt;
absoluter Pfadname für das Verzeichnis sub1 im Homeverzeichnis von suxer&lt;br /&gt;
&lt;br /&gt;
===Verzeichnisstruktur===&lt;br /&gt;
&lt;br /&gt;
 /bin         Kommandos die beim starten benötigt werden (Zugriff hat jeder)&lt;br /&gt;
 /sbin        Wichtige System-Programme (In der Regel root vorberhalten)&lt;br /&gt;
 /boot        Hier findet man die Dateien des Bootmanagers und des Kernel.&lt;br /&gt;
 /dev         In diesem Verzeichnis stehen die Gerätedateien (Devices),&lt;br /&gt;
 /home        Alle Heimatverzeichnisse der Nutzer findet man hier.&lt;br /&gt;
 /lib         Beim Systemstart benötigten Bibliotheken und Modules stehen hier.&lt;br /&gt;
 /mnt         Mountpunkt für temporäre Partitionen&lt;br /&gt;
 /opt         Software, die nicht Installationsumfang von Linux gehören.&lt;br /&gt;
 /root        Heimatverzeichnis des Administrators.&lt;br /&gt;
 /tmp         Temporäre Dateien können hier abgelegt werden&lt;br /&gt;
 /usr         statische Dateien (kann read-only gemountet sein)&lt;br /&gt;
 /var         variable Dateien (muss beschreibar sein )&lt;br /&gt;
 /etc         Konfiguartionsdateien und Startscripte&lt;br /&gt;
 /proc        Virtuelles Dateisystem -&amp;gt; repräsentiert den Kernel&lt;br /&gt;
&lt;br /&gt;
===Unterverzeichnisse von /usr===&lt;br /&gt;
&lt;br /&gt;
 sbin         Programme für root die beim Start nicht benötigt werden&lt;br /&gt;
 bin          Programme für alle die beim Start nicht benötigt werden&lt;br /&gt;
 X11R6        Dateien des X-Window-Sytems&lt;br /&gt;
 bin          Ausführbare Programme&lt;br /&gt;
 doc          Dokumentationen&lt;br /&gt;
 etc          Konfigurationsdateien&lt;br /&gt;
 games        Spiele&lt;br /&gt;
 include      Headerdateien für C-Programme&lt;br /&gt;
 local        Pakete die nicht zur Distribution gehören ähnlich /opt&lt;br /&gt;
 share        Pakete die von mehreren Paketen genutzt werden&lt;br /&gt;
 share/man    Die Manualpages&lt;br /&gt;
 share/info   Seiten des Infosystems&lt;br /&gt;
 share/doc    Dokumentationen&lt;br /&gt;
 src          Sources von Programmen (Kernel und andere)&lt;br /&gt;
&lt;br /&gt;
===Unterverzeichnisse von /var===&lt;br /&gt;
&lt;br /&gt;
 cache        Zwischenspreicher für Progammes&lt;br /&gt;
 games        Variable Daten der Games (Scores etc...)&lt;br /&gt;
 lock         Sperrdateien&lt;br /&gt;
 log          Die Logdateien (wichtiges Verzeichnis für Admins)&lt;br /&gt;
 mail         Das Mailsystem&lt;br /&gt;
 run          Dateien zu laufemdem Prozessen&lt;br /&gt;
 spool        Spooldateien (z.B. für das Drucksystem&lt;br /&gt;
 state        Statusinfos&lt;br /&gt;
 tmp          Wie /tmp eventuell nicht auf root Partion&lt;br /&gt;
&lt;br /&gt;
==Einfache Komandos==&lt;br /&gt;
===cd: Wechseln des Arbeitsverzeichnis===&lt;br /&gt;
&lt;br /&gt;
Um festzustellen in welchem Verzeichnis man sich befindet, sollte man den&lt;br /&gt;
Befehl &amp;quot;pwd&amp;quot; benutzen,&lt;br /&gt;
&lt;br /&gt;
und mit dem Befehl &amp;quot;cd&amp;quot; kann man zwischen den Verzeichnissen wechseln:&lt;br /&gt;
&lt;br /&gt;
Wechsele ins homeverzeichnis von Xinux&lt;br /&gt;
&lt;br /&gt;
 xinux@zero:~$ cd /home/xinux/&lt;br /&gt;
 xinux@zero:~$ pwd&lt;br /&gt;
 /home/xinux&lt;br /&gt;
&lt;br /&gt;
cd ~ -&amp;gt; wechsele ins jeweilige Homeverzeichnis&lt;br /&gt;
&lt;br /&gt;
cd .. -&amp;gt; wechsele ein Verzeichnis höher&lt;br /&gt;
&lt;br /&gt;
cd ../verzeichnis -&amp;gt; wechsele in eine paralleles Verzeichnis &amp;lt;- (ist eine relative Pfadangabe !)&lt;br /&gt;
&lt;br /&gt;
cd - -&amp;gt; wechsele in das Verzeichnis, in dem vorher gearbeitet wurde.&lt;br /&gt;
&lt;br /&gt;
Mit cd / wechselt man in das Wurzelverzeichnis.&lt;br /&gt;
&lt;br /&gt;
 xinux@zero:/var/log$ cd /&lt;br /&gt;
 xinux@zero:/$ pwd&lt;br /&gt;
 /&lt;br /&gt;
&lt;br /&gt;
===ls: Listing===&lt;br /&gt;
&lt;br /&gt;
Den Inhalt von Verzeichnissen kann man sich mit dem Befehl &amp;quot;ls&amp;quot; anzeigen lassen&lt;br /&gt;
wobei &amp;quot;ls&amp;quot; eine Vielzahl von Optionen besitzt:&lt;br /&gt;
&lt;br /&gt;
 ls                                  standard&lt;br /&gt;
 ls -l                               langes listing&lt;br /&gt;
 ls -a                               alle Dateien&lt;br /&gt;
 ls -i                               mit Inode&lt;br /&gt;
 ls -h                               gut lesbare Dateigröße&lt;br /&gt;
 ls -d                               Verzechnis wird angezeigt, nicht der Inhalt&lt;br /&gt;
 ls -L                               sortiert nach Größe&lt;br /&gt;
 ls -t                               sortiert nach Datum&lt;br /&gt;
 ls -F                               mit nützlichem Anhang&lt;br /&gt;
&lt;br /&gt;
 xinux@zero:/$ ls -l /var/log/messages&lt;br /&gt;
 -rw-r----- 1 syslog adm 2296 2009-06-16 10:05 /var/log/messages&lt;br /&gt;
&lt;br /&gt;
===more: Seitenweises Anzeigen von Seiten===&lt;br /&gt;
 root@zero:~# more /var/log/messages&lt;br /&gt;
 ...&lt;br /&gt;
&lt;br /&gt;
===head: erste Zeilen anzeigen===&lt;br /&gt;
Erste 10 Zeilen anzeigen&lt;br /&gt;
 root@zero:~# head /var/log/messages&lt;br /&gt;
 Jun 15 12:37:08 zero syslogd 1.5.0#5ubuntu3: restart.&lt;br /&gt;
 Jun 15 12:38:43 zero kernel: [  830.065036] mtrr: your processor doesn't support write-combining&lt;br /&gt;
 Jun 15 12:46:05 zero pulseaudio[4817]: pid.c: Stale PID file, overwriting.&lt;br /&gt;
 Jun 15 13:05:24 zero -- MARK --&lt;br /&gt;
 ...&lt;br /&gt;
&lt;br /&gt;
Erste zwei Zeilen anzeigen&lt;br /&gt;
 root@zero:~# head -n 2 /var/log/messages&lt;br /&gt;
 Jun 15 12:37:08 zero syslogd 1.5.0#5ubuntu3: restart.&lt;br /&gt;
 Jun 15 12:38:43 zero kernel: [  830.065036] mtrr: your processor doesn't support write-combining&lt;br /&gt;
&lt;br /&gt;
===tail: letzte Zeilen anzeigen===&lt;br /&gt;
 &lt;br /&gt;
 root@zero:~# tail /var/log/syslog&lt;br /&gt;
 ...&lt;br /&gt;
 Jun 19 11:19:35 zero -- MARK --&lt;br /&gt;
 Jun 19 11:39:35 zero -- MARK --&lt;br /&gt;
 Jun 19 11:59:36 zero -- MARK --&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Letze 5 Zeilen anzeigen&lt;br /&gt;
 root@zero:~# tail -n 5 /var/log/auth.log&lt;br /&gt;
 Jun 18 14:30:01 zero CRON[12040]: pam_unix(cron:session): session closed for user root&lt;br /&gt;
 Jun 18 14:39:01 zero CRON[12191]: pam_unix(cron:session): session opened for user root by (uid=0)&lt;br /&gt;
 Jun 18 14:39:01 zero CRON[12191]: pam_unix(cron:session): session closed for user root&lt;br /&gt;
 Jun 18 14:40:01 zero CRON[12237]: pam_unix(cron:session): session opened for user root by (uid=0)&lt;br /&gt;
 Jun 18 14:40:01 zero CRON[12237]: pam_unix(cron:session): session closed for user root&lt;br /&gt;
&lt;br /&gt;
Letze Zeilen anzeigen und fortlaufend aktualisieren&lt;br /&gt;
 root@zero:~# tail -f /var/log/syslog&lt;br /&gt;
 ...&lt;br /&gt;
&lt;br /&gt;
===mkdir: Ein neues Verzeichnis erstellen===&lt;br /&gt;
&lt;br /&gt;
 mkdir        verzeichnis&lt;br /&gt;
Erstellt ein Verzeichnis im working directory (wd)&lt;br /&gt;
&lt;br /&gt;
 mkdir  -p    ver1/ver2&lt;br /&gt;
Erstellt ein Verzeichnis ver2 unterhalb von ver1&lt;br /&gt;
wenn ver1 nicht existiert wird es erstellt&lt;br /&gt;
&lt;br /&gt;
 mkdir -m 753 ver1&lt;br /&gt;
Es wird das Verzeichnis ver1 erstellt mit der mask 753&lt;br /&gt;
&lt;br /&gt;
 mkdir -v     ver1&lt;br /&gt;
Geschwätzige Ausgabe :)&lt;br /&gt;
&lt;br /&gt;
===Zum Löschen von leeren Verzeichnissen wird rmdir benutzt===&lt;br /&gt;
&lt;br /&gt;
 rmdir           ver1&lt;br /&gt;
Löscht das leere Verzeichnis ver1&lt;br /&gt;
&lt;br /&gt;
 rmdir -v        ver1&lt;br /&gt;
Löscht das leere Verzeichnis ver1 und ist geschwätzig&lt;br /&gt;
&lt;br /&gt;
 rmdir -p        /ver1/ver2/ver3&lt;br /&gt;
Löscht das Verzeichnis ver3; wenn dadurch ver2 ein leeres&lt;br /&gt;
Verzeichnis wird, wird dieses auch gelöscht , wenn ver1&lt;br /&gt;
dadurch ein leeres Verzeichnis wird, wird auch dieses gelöscht.&lt;br /&gt;
&lt;br /&gt;
===touch Verändern des Zeitstempels===&lt;br /&gt;
&lt;br /&gt;
Mit touch können wir eine neue leere Datei erzeugen (das ist nicht der eigentliche&lt;br /&gt;
Zweck von touch, eigentlich wird der Zeitstempel geändert)&lt;br /&gt;
&lt;br /&gt;
 touch            dateiname&lt;br /&gt;
&lt;br /&gt;
===Kopieren=== &lt;br /&gt;
cp ist das Kommando um Dateien zu kopieren &lt;br /&gt;
&lt;br /&gt;
Eine Kopie von dat1 mit dem Namen dat2 erstellen:&lt;br /&gt;
&lt;br /&gt;
 xinux@zero:~$ cp dat1 dat2&lt;br /&gt;
&lt;br /&gt;
Eine Kopie von dat1 ins Verzeichnis ver2 erstellen:&lt;br /&gt;
&lt;br /&gt;
 xinux@zero:~$ cp dat1 ver2/&lt;br /&gt;
 &lt;br /&gt;
Eine Kopie erstellen mit ausführlicher Anzeige:&lt;br /&gt;
&lt;br /&gt;
 xinux@zero:~$ cp -v dat1 dat2&lt;br /&gt;
 `dat1' -&amp;gt; `dat2'&lt;br /&gt;
&lt;br /&gt;
Eine Kopie erstellen mit Rückfrage fals etwas überschrieben wird:&lt;br /&gt;
&lt;br /&gt;
 xinux@zero:~$ cp -i dat1 dat2&lt;br /&gt;
 cp: overwrite `dat2'?&lt;br /&gt;
&lt;br /&gt;
Eine Kopie erstellen und die Rückfrage überbrücken:&lt;br /&gt;
&lt;br /&gt;
 xinux@zero:~$ cp -f dat1 dat2&lt;br /&gt;
&lt;br /&gt;
Eine Kopie von dat1 ins Verzeichnis ver2 erstellen fals keine neuere Version von dat1 vorliegt:&lt;br /&gt;
&lt;br /&gt;
 xinux@zero:~$ cp -u dat1 ver2/&lt;br /&gt;
&lt;br /&gt;
Eine Kopie erstellen fals ver2 auf dem selben Dateisystem wie dat1 liegt:&lt;br /&gt;
&lt;br /&gt;
 xinux@zero:~$ cp -x dat1 ver2/&lt;br /&gt;
&lt;br /&gt;
Eine Kopie von ver1, die als ver2 oder unter ver2 als ver1 gespeichert wird erstellen:&lt;br /&gt;
&lt;br /&gt;
 xinux@zero:~$ cp -r ver1/ ver2/&lt;br /&gt;
&lt;br /&gt;
Eine Kopie von einer Datei erstellen und ihre Attribute beibehalten:&lt;br /&gt;
&lt;br /&gt;
 xinux@zero:~$ cp -p sux1 sux2&lt;br /&gt;
&lt;br /&gt;
Eine Kopie erstellen bei der die Links erhalten bleiben:&lt;br /&gt;
&lt;br /&gt;
 xinux@zero:~$ cp -r ver1/ ver2/&lt;br /&gt;
&lt;br /&gt;
Eine Kopie erstellen zum Archivieren (-dpr):&lt;br /&gt;
&lt;br /&gt;
 xinux@zero:~$ cp -a ver1/ ver2/&lt;br /&gt;
&lt;br /&gt;
===rm: Löschen einer Datei===&lt;br /&gt;
&lt;br /&gt;
Um Dateien zu löschen, brauchen wir das Kommando &amp;quot;rm&amp;quot;:&lt;br /&gt;
&lt;br /&gt;
 rm               dat1        dat1 wird gelöscht&lt;br /&gt;
 rm         -i    dat1        dat1 wird nach Bestätigung gelöscht&lt;br /&gt;
 rm         -f    dat1        dat1 wird ohne Rückfragen gelöscht&lt;br /&gt;
 rm         -v    dat1        dat1 wird glöscht (geschwätzige Ausgabe)&lt;br /&gt;
 rm         -r    ver1        Löschen von nicht leeren Verzeichnissen&lt;br /&gt;
                              Achtung !!! Als root kann man sich damit Teile&lt;br /&gt;
                              oder sogar den gesamten Verzeichnisbaum&lt;br /&gt;
                              absägen !!!&lt;br /&gt;
&lt;br /&gt;
===mv: Verschieben===&lt;br /&gt;
&lt;br /&gt;
Mit dem Befehl &amp;quot;mv&amp;quot; werden Daten verschoben, folgendes gilt:&lt;br /&gt;
&lt;br /&gt;
 mv          dat1 dat2         &lt;br /&gt;
Die Datei dat1 wird in dat2 umbenannt&lt;br /&gt;
 mv          dat1 /ver1        &lt;br /&gt;
Die Datei dat1 wird nach /ver1 verschoben&lt;br /&gt;
&lt;br /&gt;
Die Parameter und ihre Bedeutung:&lt;br /&gt;
&lt;br /&gt;
      -i                      wenn eine Datei exisitiert wird vor dem&lt;br /&gt;
                              Überschreiben nachgefragt&lt;br /&gt;
      -v                      verbose (geschwätzig)&lt;br /&gt;
      -u                      nur neuere Daten werden bei Bedarf überschrieben&lt;br /&gt;
      -b                      wenn überschrieben werden soll, wird ein Backup&lt;br /&gt;
                              erstellt&lt;br /&gt;
      -S ENDUNG               das Backup bekommt die Endung ENDUNG&lt;br /&gt;
&lt;br /&gt;
===su Benutzer wechseln===&lt;br /&gt;
&lt;br /&gt;
 su -             &lt;br /&gt;
Wechsel zum Rootaccount, wie wenn dieser sich neu anmelden würde. (Bsp: su -)&lt;br /&gt;
&lt;br /&gt;
 su Benutzernamen &lt;br /&gt;
Wechsel der Identität zu Benutzer (gegebenenfalls Passwortabfrage)&lt;br /&gt;
&lt;br /&gt;
 su -c Kommando   &lt;br /&gt;
Kommando wird als rootaccount ausgeführt&lt;br /&gt;
&lt;br /&gt;
==Der Standard Editor vi==&lt;br /&gt;
Der vi ist der Standardeditor in der Unixwelt. Er ist in jedem Unix-Derivat&lt;br /&gt;
enthalten.&lt;br /&gt;
Der Editor hat zwar den schlechten Ruf umständlich zu bedienen zu sein, ist&lt;br /&gt;
jedoch sehr leistungsfähig und systemübergreifend verfügbar. Beim vi handelt es&lt;br /&gt;
sich um einen rein textorientierten Editor, der mittels eigener Kommandos&lt;br /&gt;
gesteuert wird.&lt;br /&gt;
&lt;br /&gt;
Der Editor VIM ist eine weitere Verbesserung von VI und leichter zu bedienen.&lt;br /&gt;
Und unter Ubuntu/Debian mit &amp;quot;apt-get install vim&amp;quot; zu installieren.&lt;br /&gt;
&lt;br /&gt;
===Starten des Editors:===&lt;br /&gt;
&lt;br /&gt;
Der Editorstart erfolgt einfach durch die Eingabe des Kommandos vi mit dem&lt;br /&gt;
Dateinamen der zu editierenden Datei als Parameter.&lt;br /&gt;
Beispiel:        &lt;br /&gt;
 vi sux.txt&lt;br /&gt;
&lt;br /&gt;
===Die Betriebsmodi des vi:===&lt;br /&gt;
&lt;br /&gt;
Ein Umstand, der dem vi den Ruf der komplizierten Bedienbarkeit zugetragen hat,&lt;br /&gt;
sind die unterschiedlichen Betriebsmodi des Editors. Genauer gesagt verfügt der&lt;br /&gt;
vi über drei Betriebsmodi:&lt;br /&gt;
&lt;br /&gt;
====Kommandomodus:====&lt;br /&gt;
&lt;br /&gt;
Innerhalb dieses Modus werden die eingegebenen Zeichen direkt als Befehle des&lt;br /&gt;
Editors interpretiert und ausgeführt. Dabei gibt es weder ein Bereitschaftszeichen&lt;br /&gt;
(Prompt) noch ein Echo (Ausgabe). Der Kommandomodus ist der Modus, in dem&lt;br /&gt;
sich der vi direkt nach seinem Start befindet.&lt;br /&gt;
&lt;br /&gt;
====Zeilenmodus oder Exmodus:====&lt;br /&gt;
&lt;br /&gt;
Dieser Modus ist der einzige Modus mit einem eigenen Bereitschaftszeichen,&lt;br /&gt;
nämlich dem Doppelpunkt (:). Das Prompt wird ebenso wie die Befehlsausgaben&lt;br /&gt;
in der Statuszeile angezeigt.&lt;br /&gt;
&lt;br /&gt;
====Eingabemodus:====&lt;br /&gt;
&lt;br /&gt;
Der Eingabemodus ist derjenige, in welchem der zu bearbeitende Text bearbeitet&lt;br /&gt;
werden kann. Alle hier eingegebenen Zeichen werden als Text für die aktuelle&lt;br /&gt;
Datei interpretiert. Zwischen den unterschiedlichen Modi kann jederzeit&lt;br /&gt;
gewechselt werden. Von Kommandomodus gelangen Sie durch mehere Wege in&lt;br /&gt;
den Eingabemodus. Man kann durch folgende Aktionen wechslen&lt;br /&gt;
&lt;br /&gt;
{| border=1 cellpadding=2&lt;br /&gt;
|i&lt;br /&gt;
|Text vor der aktuellen Cursorposition einfügen&lt;br /&gt;
|-&lt;br /&gt;
|I&lt;br /&gt;
|Text am Zeilenanfang einfügen&lt;br /&gt;
|-&lt;br /&gt;
|a&lt;br /&gt;
|Text hinter der aktuellen Cursorposition einfügen&lt;br /&gt;
|-&lt;br /&gt;
|A&lt;br /&gt;
|Text am Zeilenende einfügen&lt;br /&gt;
|-&lt;br /&gt;
|o&lt;br /&gt;
|Unterhalb der aktuellen Zeile eine neue Zeile einfügen&lt;br /&gt;
|-&lt;br /&gt;
|O&lt;br /&gt;
|Oberhalb der aktuellen Zeile eine neue Zeile einfügen&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Durch das Drücken der ESC - Taste gelangt man in den Kommandomodus zurück.&lt;br /&gt;
&lt;br /&gt;
Im Kommandomodus können Sie durch den Text navigieren und auch den Text&lt;br /&gt;
selbst bearbeiten, z.B ausschneiden, kopieren usw. Dazu sind einige Kommandos&lt;br /&gt;
nötig, von denen die wichtigsten im Folgenden erläutert werden:&lt;br /&gt;
&lt;br /&gt;
 xinux@zero:/$ vi iwas.txt&lt;br /&gt;
&lt;br /&gt;
[[Image:vim.jpg]]&lt;br /&gt;
&lt;br /&gt;
===Benutzen des Kommandomodus===&lt;br /&gt;
====Steuerung des Cursors durch den Text====&lt;br /&gt;
&lt;br /&gt;
Mittels folgender Kommandos bewegt sich der Cursor durch den Text:&lt;br /&gt;
&lt;br /&gt;
{| border=1 cellpadding=2&lt;br /&gt;
|h&lt;br /&gt;
|Cursor ein Zeichen nach links&lt;br /&gt;
|-&lt;br /&gt;
|l&lt;br /&gt;
|Cursor ein Zeichen nach rechts&lt;br /&gt;
|-&lt;br /&gt;
|k&lt;br /&gt;
|Cursor eine Zeile nach oben&lt;br /&gt;
|-&lt;br /&gt;
|j&lt;br /&gt;
|Cursor eine Zeile nach unten&lt;br /&gt;
|-&lt;br /&gt;
|w&lt;br /&gt;
|Cursor ein Wort nach rechts&lt;br /&gt;
|-&lt;br /&gt;
|b&lt;br /&gt;
|Cursor ein Wort nach links&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Alle diese Kommandos können mit einem vorgestellten Wiederholungsfaktor&lt;br /&gt;
arbeiten. Der Befehl 3w verschiebt demnach den Cursor um 3 Wörter nach rechts.&lt;br /&gt;
&lt;br /&gt;
====Angaben zur Positionierung====&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{| border=1 cellpadding=2&lt;br /&gt;
|STRG+U&lt;br /&gt;
|1⁄2 Bildschirmseite nach oben&lt;br /&gt;
|-&lt;br /&gt;
|STRG+D&lt;br /&gt;
|1⁄2 Bildschirmseite nach unten&lt;br /&gt;
|-&lt;br /&gt;
|STRG+B&lt;br /&gt;
|1 Bildschirmseite nach oben&lt;br /&gt;
|-&lt;br /&gt;
|STRG+F&lt;br /&gt;
|1 Bildschirmseite nach unten&lt;br /&gt;
|-&lt;br /&gt;
|/Ausdruck&lt;br /&gt;
|Sucht den Ausdruck (vorwärts) Weitersuchen mit n , N&lt;br /&gt;
|-&lt;br /&gt;
|?Ausdruck&lt;br /&gt;
|Sucht den Ausdurck (rückwärts) Weitersuchen mit n , N&lt;br /&gt;
|-&lt;br /&gt;
|0&lt;br /&gt;
|Zeilenanfang&lt;br /&gt;
|-&lt;br /&gt;
|$&lt;br /&gt;
|Zeilenende&lt;br /&gt;
|-&lt;br /&gt;
|w&lt;br /&gt;
|Nächstes Wort&lt;br /&gt;
|-&lt;br /&gt;
|b&lt;br /&gt;
|Vorheriges Wort&lt;br /&gt;
|-&lt;br /&gt;
|fc&lt;br /&gt;
|Auf das Zeichen c springen. c steht für ein beliebiges Zeichen&lt;br /&gt;
|-&lt;br /&gt;
|G&lt;br /&gt;
|Letzte Zeile der Datei&lt;br /&gt;
|-&lt;br /&gt;
|ng&lt;br /&gt;
|n-te Zeile der Datei&lt;br /&gt;
|-&lt;br /&gt;
|H&lt;br /&gt;
|Anfang der Bildschirmseite&lt;br /&gt;
|-&lt;br /&gt;
|L&lt;br /&gt;
|Ende der Bildschirmseite&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
====Befehle zur Textbearbeitung -&amp;gt; Was soll geschehen====&lt;br /&gt;
&lt;br /&gt;
{| Border=1 Cellpadding=2&lt;br /&gt;
|x&lt;br /&gt;
|Löscht Zeichen&lt;br /&gt;
|-&lt;br /&gt;
|d&lt;br /&gt;
|Löschen und in den Puffer laden&lt;br /&gt;
|-&lt;br /&gt;
|c&lt;br /&gt;
|Ändern&lt;br /&gt;
|-&lt;br /&gt;
|y&lt;br /&gt;
|In den Puffer laden&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
====Weitere wichtige Befehle:====&lt;br /&gt;
&lt;br /&gt;
{| Border=1 Cellpadding=2&lt;br /&gt;
|p&lt;br /&gt;
|Aus dem Puffer einfügen&lt;br /&gt;
|-&lt;br /&gt;
|u&lt;br /&gt;
|Undo, macht den letzten Befehl rückgängig&lt;br /&gt;
|-&lt;br /&gt;
|STRG+R&lt;br /&gt;
|Redo, macht den letzten Undo rückgängig&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
===Zeilen- oder Exmodus===&lt;br /&gt;
&lt;br /&gt;
Wie schon erwähnt wird der Zeilen oder Exmodus durch einen : eingeleitet.&lt;br /&gt;
Es folgen einige Beispiele.&lt;br /&gt;
&lt;br /&gt;
Befehle zum Speichern und Beenden:&lt;br /&gt;
&lt;br /&gt;
 :w          Schreibt Datei&lt;br /&gt;
 :w Datei2   Schreibt eine Kopie in Datei2&lt;br /&gt;
 :w !        Schreibt Datei (übergehe Schreibschutz)&lt;br /&gt;
 :w ! Datei2 Schreibt eine Kopie in Datei2 (übergehe Schreibschutz)&lt;br /&gt;
 :q          Schließe Datei&lt;br /&gt;
 :q!         Schließe Datei (verwerfe Änderungen)&lt;br /&gt;
 :wq         Schreibe Datei und beende Editor&lt;br /&gt;
 :wq!        Schreibe Datei und beende Editor (übergehe Schreibschutz)&lt;br /&gt;
 :q!         Schließe Datei (verwerfe Änderungen)&lt;br /&gt;
 :h          Hilfe anzeigen, durch drücken von :q Beenden der Hilfe&lt;br /&gt;
 :e Datei3   Editiere Datei3&lt;br /&gt;
 :e #        Editere vorhergehende Datei&lt;br /&gt;
 :1,3co9     Kopiere von der ersten bis zu dritten Zeile &lt;br /&gt;
             und füge den Inhalt unterhalb der neunte Zeile ein.&lt;br /&gt;
&lt;br /&gt;
Interaktionen mit Unix:&lt;br /&gt;
&lt;br /&gt;
 :r Datei4   Fügt Inhalt der Datei4 nach dem Cursor ein&lt;br /&gt;
 :r ! Befehl Fügt Ausgabe des Befehls nach dem Cursor ein&lt;br /&gt;
 :! Befehl   Führt den Befehl aus&lt;br /&gt;
 :sh         Starte Subshell -&amp;gt; mit exit kehrt man wieder zurück&lt;br /&gt;
             Eingabemodus zurück&lt;br /&gt;
&lt;br /&gt;
====Ersetzen von Textteilen====&lt;br /&gt;
&lt;br /&gt;
Die grundsätzliche Syntax lautet:&lt;br /&gt;
&lt;br /&gt;
 :[Zeilennummer,Zeilennummer]s/Muster/Ersetzung/[gc]&lt;br /&gt;
&lt;br /&gt;
 :s/worf/kirn/              der erste worf wird in der aktuellen Zeile durch kirn ersetzt&lt;br /&gt;
 :1,9s/worf/kirn/g          von der 1. bis zur 9. Zeile werden alle worf durch kirn ersetzt&lt;br /&gt;
 :1,$s/worf/kirn/           von der ersten bis zur letzten Zeile ersetze ersten worf durch&lt;br /&gt;
                            kirn&lt;br /&gt;
 :.,$s/worf/kirn/g          von der aktuellen bis zur letzten Zeile ersetze alle worf durch&lt;br /&gt;
                            kirn&lt;br /&gt;
 :1,.s/worf/kirn/c          von der 1. bis zur aktuellen Zeile ersetze worf durch kirn, frage&lt;br /&gt;
                            aber nach&lt;br /&gt;
 :1,$s/^worf/kirn/          von der ersten bis zur letzten Zeile ersetze worf am&lt;br /&gt;
                            Zeilenanfang durch kirn&lt;br /&gt;
 :4,$s/worf$/kirn/          von der 4. bis zur letzten Zeile ersetze worf am Zeilenende&lt;br /&gt;
                            durch kirn&lt;br /&gt;
 :1,$s/^#//                 lösche alle Kommentarzeichen&lt;br /&gt;
 :1,$s/^.orf/kirn/           ersetze alles was am Zeilenanfang ein beliebiges Zeichen hat&lt;br /&gt;
                            gefolgt von einem orf durch kirn&lt;br /&gt;
 :1,$s/^[A-Z]orf/kirn/g     suche nach einem Großbuchstaben am Anfang der Zeile&lt;br /&gt;
                            gefolgt von einem orf und ersetze durch kirn&lt;br /&gt;
 :1,$s/^M[ae][iy]e*r/kirn/  suche alles, was am Anfang der Zeile ein großes M enthält,&lt;br /&gt;
                            gefolgt von einem a oder e , gefolgt von einem i oder y ,&lt;br /&gt;
                            gefolgt von einem e , welches 0 oder N mal vorkommen kann,&lt;br /&gt;
                            gefolgt von einem r und ersetze es durch kirn&lt;br /&gt;
&lt;br /&gt;
==Reguläre Ausdrücke==&lt;br /&gt;
&lt;br /&gt;
{| Border=1 Cellpadding=2&lt;br /&gt;
|c&lt;br /&gt;
|Ein einzelner Buchstabe passt auf sich selbst&lt;br /&gt;
|-&lt;br /&gt;
|.&lt;br /&gt;
|Ein Punkt passt auf jedes Zeichen außer auf das Zeilenende&lt;br /&gt;
|-&lt;br /&gt;
|*&lt;br /&gt;
|Das dem Operator * vorangehende Muster kann 0 oder öfter vorkommen&lt;br /&gt;
|-&lt;br /&gt;
|^&lt;br /&gt;
|(Caret) passt auf den Zeilenanfang&lt;br /&gt;
|-&lt;br /&gt;
|$&lt;br /&gt;
|Passt auf das Zeilenende&lt;br /&gt;
|-&lt;br /&gt;
|\&lt;br /&gt;
|Das folgende Sonderzeichen wird entwertet&lt;br /&gt;
|-&lt;br /&gt;
|[...]&lt;br /&gt;
|Passt auf &amp;quot;genau&amp;quot; eins in [...] angebenen Zeichen&lt;br /&gt;
|-&lt;br /&gt;
|[^...]&lt;br /&gt;
|Passt auf &amp;quot;genau&amp;quot; ein Zeichen welches nicht in [...] angebenen ist&lt;br /&gt;
|-&lt;br /&gt;
|\&amp;lt;&lt;br /&gt;
|Passt auf den Wortanfang&lt;br /&gt;
|-&lt;br /&gt;
|\&amp;gt;&lt;br /&gt;
|Passt auf das Wortende&lt;br /&gt;
|-&lt;br /&gt;
|\+&lt;br /&gt;
|Das dem Operator \+ vorangehende Muster kann 1 oder öfter vorkommen&lt;br /&gt;
|-&lt;br /&gt;
|&amp;amp;&lt;br /&gt;
|Setzt das gefunden Suchmuster ein&lt;br /&gt;
|-&lt;br /&gt;
|\(...\)&lt;br /&gt;
|Speichert den Text auf den das Suchmuster passt zur späteren Verwendung&lt;br /&gt;
|-&lt;br /&gt;
|\n&lt;br /&gt;
|Setzt das vorangehende, mit \(...\) Gefundene wieder ein&lt;br /&gt;
|-&lt;br /&gt;
|(...)&lt;br /&gt;
|Gruppiert Auswahlmöglichkeiten&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;nowiki&amp;gt;|&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
|Trennt Auswahlmöglichkeiten&lt;br /&gt;
|-&lt;br /&gt;
|\b&lt;br /&gt;
|Passt auf den Anfang oder das Ende eines Wortes&lt;br /&gt;
|-&lt;br /&gt;
|\B&lt;br /&gt;
|Symbolisiert den Raum innerhalb eines Wortes&lt;br /&gt;
|-&lt;br /&gt;
|\w&lt;br /&gt;
|Passt auf alle alphanumerischen Zeichen [A-Za-z0-9]&lt;br /&gt;
|-&lt;br /&gt;
|\W&lt;br /&gt;
|Passt auf alle nichtalphanumerischen Zeichen [^A-Za-z0-9]&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Die Rangfolge der Operatoren(von der höchsten zur niedrigsten)&lt;br /&gt;
:(, ), ?, *, + | .&lt;br /&gt;
&lt;br /&gt;
Die anderen Operatoren sind mit den anderen Buchstaben gleichrangig.&lt;br /&gt;
&lt;br /&gt;
===Beispiel zum Suchen===&lt;br /&gt;
&lt;br /&gt;
 Suchmuster               Passt auf&lt;br /&gt;
 ^Tuxer                   Tuxer am Zeilenanfang&lt;br /&gt;
 [tT]uxer                 Tuxer oder tuxer&lt;br /&gt;
 80[23]?86                8086, 80286 oder 80386&lt;br /&gt;
&lt;br /&gt;
===grep===&lt;br /&gt;
&lt;br /&gt;
Mit grep ist es möglich, in Dateien nach regulären Ausdrücken zu suchen. Wenn&lt;br /&gt;
eine Übereinstimmung gefunden wird, wird die komplette Zeile auf die&lt;br /&gt;
Standardausgabe geschrieben. grep kann auch von STDIN lesen.Es ist&lt;br /&gt;
empfehlenswert, sich anzugwöhnen ,das Suchmuster in Anführungszeichen zu&lt;br /&gt;
schreiben. Es gibt 3 Arten fgrep = fastgrep , grep und egrep egrep&lt;br /&gt;
&lt;br /&gt;
Beispiel:&lt;br /&gt;
&lt;br /&gt;
 root@zero:~# cat text&lt;br /&gt;
 quatsch&lt;br /&gt;
 quatsch&lt;br /&gt;
 quatsch&lt;br /&gt;
 wichtig&lt;br /&gt;
 quatsch&lt;br /&gt;
 root@zero:~# grep wichtig text&lt;br /&gt;
 wichtig&lt;br /&gt;
 root@zero:~# &lt;br /&gt;
&lt;br /&gt;
 -c                   meldet nur die Gesamtzahl der Fundstellen&lt;br /&gt;
 -v                   zeigt nur Zeilen, die »Ausdruck« nicht enthalten&lt;br /&gt;
 -i                   ignoriert Groß- und Kleinschreibung&lt;br /&gt;
 -l                    meldet nur Dateinamen mit Fundstellen&lt;br /&gt;
 -n                   listet Zeilennummern zu jeder Fundstelle&lt;br /&gt;
 -f                   Dateiname »Dateiname« enthält die Such-Ausdrücke&lt;br /&gt;
 -E                   ist ein erweiterter regulärer Ausdruck (egrep)&lt;br /&gt;
 -F                   (Muster, Ausdruck) ist ein Muster (String) (fgrep)&lt;br /&gt;
 -b                   listet auch die Position der Fundstellen&lt;br /&gt;
 -C    Anzahl         Anzahl von Zeilen werden nach der Fundstelle ausgegeben&lt;br /&gt;
 -B    Anzahl         Anzahl von Zeilen werden vor der Fundstelle ausgegeben&lt;br /&gt;
 -r                   Durchsucht Verzeichnisse rekursiv&lt;br /&gt;
&lt;br /&gt;
==Useridendifikation==&lt;br /&gt;
===/etc/passwd===&lt;br /&gt;
====Beschreibung====&lt;br /&gt;
passwd ist eine ASCII-Datei, die eine Liste der Benutzer des Systems und deren&lt;br /&gt;
Passwörter enthält. Die Passwortdatei sollte für alle Benutzer lesbar sein, was für&lt;br /&gt;
dieVerschlüsselung notwendig ist; aber nur vom Superuser beschreibbar. Wenn&lt;br /&gt;
Sie eine neue Kennung einrichten, lassen Sie das Passwort-Feld in der Datei frei&lt;br /&gt;
und benutzen Sie passwd(1), um dem System ein Passwort für die neue Kennung&lt;br /&gt;
mitzuteilen.&lt;br /&gt;
&lt;br /&gt;
Die Datei /etc/passwd enthält einen Eintrag pro Zeile mit dem Format:&lt;br /&gt;
login_name:passwd:UID:GID:user_name:directory:shell&lt;br /&gt;
====Die Bedeutung der Felder:====&lt;br /&gt;
# login_name Kennung des Benutzers auf dem System.&lt;br /&gt;
# password   Hier steht bei Shadowsystemen ein x. Die Passwörter sind in der Datei /etc/shadow&lt;br /&gt;
# UID        Die numerische Benutzernummer.&lt;br /&gt;
#  GID        Die numerische Gruppennummer des Benutzers.&lt;br /&gt;
# user_name Ein optionales Kommentarfeld, oft benutzt für den vollen Namen des Benutzers und weitere Informationen (Telefon, Raum-Nummer etc.).&lt;br /&gt;
# directory  Das Heimatverzeichnis $HOME des Benutzers.&lt;br /&gt;
# shell      Das Programm, das beim Einloggen gestartet werden soll (falls nicht nötig, benutzen Sie /bin/bash).&lt;br /&gt;
&lt;br /&gt;
===/etc/group===&lt;br /&gt;
====Beschreibung====&lt;br /&gt;
etc/group ist eine ASCII Datei, die Gruppen definiert, zu denen Benutzer&lt;br /&gt;
gehören. Es gibt nur einen Eintrag pro Zeile; jede Zeile hat folgendes Format:&lt;br /&gt;
         GruppenName:Passwort:GruppenKennung:BenutzerListe&lt;br /&gt;
Beschreibung der Felder:&lt;br /&gt;
#     GruppenName      Die Bezeichnung der Gruppe.&lt;br /&gt;
#     Passwort         Das (verschlüsselte) Gruppen-Passwort. Wenn dieses Feld leer ist, wird kein Passwort benötigt.&lt;br /&gt;
#     GruppenKennung Die numerische Identifikation der Gruppe.&lt;br /&gt;
#     BenutzerListe    Alle Namen der Mitglieder, getrennt durch Kommas.&lt;br /&gt;
&lt;br /&gt;
===/etc/shadow===&lt;br /&gt;
====Beschreibung====&lt;br /&gt;
shadow beinhaltet Informationen zu den verschlüsselten Passwörten, zu den&lt;br /&gt;
Benutzerzugängen und weitere Informationen zur Laufzeit der Passwörter.&lt;br /&gt;
 Name:Passwort:Letzte Änderung:Mintage:Maxtage:Warntage:Inaktiv:Ablauf&lt;br /&gt;
#    Der Loginname&lt;br /&gt;
#    verschlüsseltes Passwort &lt;br /&gt;
&amp;lt;nowiki&amp;gt;*&amp;lt;/nowiki&amp;gt; bedeutet Benutzer kann sich nicht einlogen&lt;br /&gt;
! bedeutet Benutzer hat kein Passwort gesetzt&lt;br /&gt;
#    Tage seit dem 1 Januar 1970 an dem das Passwort letztmals geändert wurde&lt;br /&gt;
#    Tage, die das Passwort behalten werden muss, bevor es wieder geändert werden kann&lt;br /&gt;
#     Die Anzahl der Tage, nach denen der Benutzer das Passwort wieder ändern muss&lt;br /&gt;
#    Anzahl der Tage bevor das Passwort abläuft und der Benutzer gewarnt wird&lt;br /&gt;
#    Wenn der Zugang diese Anzahl von Tagen nicht benutzt wird, wird der Zugang gesperrt&lt;br /&gt;
#    Tag seit dem 1 Januar 1970, an dem der Zugang gesperrt wird&lt;br /&gt;
#    Reserviertes Feld&lt;br /&gt;
&lt;br /&gt;
Die Datei sollte aus Sicherheitgründen nicht für einen normalen Benutzer lesbar&lt;br /&gt;
sein.&lt;br /&gt;
&lt;br /&gt;
==Programme zur Userverwaltung==&lt;br /&gt;
===useradd===&lt;br /&gt;
User anlegen&lt;br /&gt;
 root@zero:~# useradd -m -u 1011 -g users -G admin -d /home/erwin -s /bin/bash -c &amp;quot;Erwin Lehman&amp;quot;  erwin&lt;br /&gt;
{| border=1 cellpadding=2&lt;br /&gt;
|&amp;quot;-m&amp;quot;&lt;br /&gt;
|Lege Homedirectory an&lt;br /&gt;
|-&lt;br /&gt;
|&amp;quot;-u 1011&amp;quot;&lt;br /&gt;
|Userid wird zugeordnet&lt;br /&gt;
|-&lt;br /&gt;
|&amp;quot;-g users&amp;quot;&lt;br /&gt;
|Primäre Gruppe wird zugeordnet&lt;br /&gt;
|-&lt;br /&gt;
|&amp;quot;-G admin&amp;quot;&lt;br /&gt;
|Sekunbdäre Gruppe wird zugeordnet&lt;br /&gt;
|-&lt;br /&gt;
|&amp;quot;-d /home/erwin/&amp;quot;&lt;br /&gt;
|Name des Homedirectory&lt;br /&gt;
|-&lt;br /&gt;
|&amp;quot;-s /bin/bash&amp;quot;&lt;br /&gt;
|Bash wird zugeordnet&lt;br /&gt;
|- &lt;br /&gt;
|&amp;quot;-c Erwin Lehman&amp;quot;&lt;br /&gt;
|Kommentarfeld&lt;br /&gt;
|-&lt;br /&gt;
|&amp;quot;erwin&amp;quot; &lt;br /&gt;
|Name des Users&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Defaulteinstellungen anzeigen&lt;br /&gt;
 root@zero:~# useradd -D&lt;br /&gt;
 GROUP=100&lt;br /&gt;
 HOME=/home&lt;br /&gt;
 INACTIVE=-1&lt;br /&gt;
 EXPIRE=&lt;br /&gt;
 SHELL=/bin/sh&lt;br /&gt;
 SKEL=/etc/skel&lt;br /&gt;
 CREATE_MAIL_SPOOL=no&lt;br /&gt;
&lt;br /&gt;
Defaulteinstellungen ändern&lt;br /&gt;
 useradd -D -s /bin/bash&lt;br /&gt;
&lt;br /&gt;
Konfigurationsdatei&lt;br /&gt;
 root@zero:~# cat /etc/default/useradd &lt;br /&gt;
 SHELL=/bin/bash&lt;br /&gt;
 GROUP=100&lt;br /&gt;
 HOME=/home&lt;br /&gt;
 INACTIVE=-1&lt;br /&gt;
 EXPIRE=&lt;br /&gt;
 SKEL=/etc/skel&lt;br /&gt;
 CREATE_MAIL_SPOOL=no&lt;br /&gt;
&lt;br /&gt;
===usermod===&lt;br /&gt;
User modifizieren&lt;br /&gt;
 root@zero:~# usermod -l fritz -s /bin/sh -G admin,video erwin&lt;br /&gt;
{| border=1 cellpadding=2&lt;br /&gt;
|&amp;quot;-l fritz&amp;quot;&lt;br /&gt;
|Neuer Username&lt;br /&gt;
|-&lt;br /&gt;
|&amp;quot;-s /bin/sh&amp;quot;&lt;br /&gt;
|Neue Shell&lt;br /&gt;
|-&lt;br /&gt;
|&amp;quot;-G admin, video&amp;quot;&lt;br /&gt;
|Sekunbdäre Gruppen werden zugeordnet&lt;br /&gt;
|-&lt;br /&gt;
|&amp;quot;erwin&amp;quot; &lt;br /&gt;
|Name des Users&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
===userdel===&lt;br /&gt;
User inklusive Homedirectory löschen&lt;br /&gt;
 root@zero:~# userdel -r fritz&lt;br /&gt;
&lt;br /&gt;
===passwd===&lt;br /&gt;
Rootpasswort ändern&lt;br /&gt;
 root@zero:~# passwd &lt;br /&gt;
 Geben Sie ein neues UNIX Passwort ein:'''sysadm''' &lt;br /&gt;
 Geben Sie das neue UNIX Passwort erneut ein:'''sysadm''' &lt;br /&gt;
 passwd: Passwort erfolgreich geändert&lt;br /&gt;
&lt;br /&gt;
Passwort von tux ändern&lt;br /&gt;
 root@zero:~# passwd tux&lt;br /&gt;
 Geben Sie ein neues UNIX Passwort ein:'''suxer''' &lt;br /&gt;
 Geben Sie das neue UNIX Passwort erneut ein:'''suxer'''&lt;br /&gt;
 passwd: Passwort erfolgreich geändert&lt;br /&gt;
&lt;br /&gt;
Minimale und Maximale Gültigkeit des Passwortes von tux festlegen&lt;br /&gt;
 root@zero:~# passwd -n 5 -x 120 tux&lt;br /&gt;
&lt;br /&gt;
===groupadd===&lt;br /&gt;
 root@zero:~# groupadd -f -g 2001 xinuxer&lt;br /&gt;
{| border=1 cellpadding=2&lt;br /&gt;
|&amp;quot;-f&amp;quot;&lt;br /&gt;
|Überschreibe bestehende Gruppe&lt;br /&gt;
|-&lt;br /&gt;
|&amp;quot;-g 2001&amp;quot;&lt;br /&gt;
|GID der Gruppe&lt;br /&gt;
|-&lt;br /&gt;
|&amp;quot;xinuxer&amp;quot; &lt;br /&gt;
|Name des Gruppe&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==chmod==&lt;br /&gt;
Die Syntax des Befehls chmod lautet:&lt;br /&gt;
&lt;br /&gt;
'''chmod''' WerWieWas [,WerWieWas,.....] Dateiliste&lt;br /&gt;
&lt;br /&gt;
oder&lt;br /&gt;
&lt;br /&gt;
'''chmod''' Oktalzahl Dateiliste&lt;br /&gt;
&lt;br /&gt;
Durch WerWieWas bzw. Oktalzahl wird die Rechtetabelle definiert. Innerhalb von&lt;br /&gt;
WerWieWas darf es kein Leerzeichen geben. Wer bezeichnet den Benutzerkreis,&lt;br /&gt;
dem man Rechte gibt, Wie die Art, in der die Rechte gegeben werden und Was die&lt;br /&gt;
Rechte als solche. Im einzelnen können folgende Kürzel benutzt werden:&lt;br /&gt;
&lt;br /&gt;
Für Wer kann eines der folgenden Kürzel oder eine Kombination davon stehen:&lt;br /&gt;
 u                   (user) Rechte für den Dateibesitzer&lt;br /&gt;
 g                   (group) Rechte für die Gruppe&lt;br /&gt;
 o                   (others) Rechte für alle anderen Benutzer&lt;br /&gt;
 a                   (all) Rechte für alle Benutzer&lt;br /&gt;
Für Wie steht eines der folgenden Kürzel:&lt;br /&gt;
 +                   Die Rechte werden zu den vorhandenen zusätzlich vergeben&lt;br /&gt;
 -                   Die im Folgenden genannten Rechte werden entzogen&lt;br /&gt;
 =                   Die im Folgenden genannten Rechte ersetzen die bisherigen&lt;br /&gt;
Für Was steht eines der folgenden Kürzel:&lt;br /&gt;
 r                   (read) lesen&lt;br /&gt;
 w                   (write) schreiben&lt;br /&gt;
 x                   (execute) ausführen&lt;br /&gt;
oder diese Sonderformen&lt;br /&gt;
 s                   (usersbit) Programm läuft unter der UID des Besitzers&lt;br /&gt;
 s                   (groupsbit)Programm läuft unter der GID des GRUPPE&lt;br /&gt;
 t                   (stickybit) Dateien im Verzeichnis darf nur Besitzer löschen&lt;br /&gt;
&lt;br /&gt;
===Beispiel===&lt;br /&gt;
Setze für alle Schreib- und Leserecht&lt;br /&gt;
 xinux@zero:~$ chmod a=rw test &lt;br /&gt;
 xinux@zero:~$ ls -l test &lt;br /&gt;
 -rw-rw-rw- 1 xinux xinux 0 2009-06-16 12:01 test&lt;br /&gt;
 xinux@zero:~$ &lt;br /&gt;
&lt;br /&gt;
Erteile Besitzer Ausführungsrecht&lt;br /&gt;
 xinux@zero:~$ chmod u+x test ; ls -l test &lt;br /&gt;
 -rwxrw-rw- 1 xinux xinux 0 2009-06-16 12:01 test&lt;br /&gt;
 xinux@zero:~$ &lt;br /&gt;
&lt;br /&gt;
===chmod oktale Schreibweise===&lt;br /&gt;
 Specialrights        User           Group         Other&lt;br /&gt;
 usbit gsbit sticky    r    w   x     r   w   x     r   w   x&lt;br /&gt;
   1     1      1      1    1   1     1   1   1     1   1   1&lt;br /&gt;
   0     0      0      0    0   0     0   0   0     0   0   0&lt;br /&gt;
 Oktale Wertigkeit pro Recht&lt;br /&gt;
   4     2       1     4    2   1     4   2   1     4   2   1&lt;br /&gt;
&lt;br /&gt;
===Beispiele===&lt;br /&gt;
 xinux@zero:~$ chmod 751 test ; ls -l test&lt;br /&gt;
 -rwxr-x--x 1 xinux xinux 0 2009-06-16 12:01 test&lt;br /&gt;
 xinux@zero:~$ &lt;br /&gt;
&lt;br /&gt;
 xinux@zero:~$ chmod 4770 test ; ls -l test&lt;br /&gt;
 -rwsrwx--- 1 xinux xinux 0 2009-06-16 12:01 test&lt;br /&gt;
 xinux@zero:~$ &lt;br /&gt;
&lt;br /&gt;
 xinux@zero:~$ chmod 0 test ; ls -l test &lt;br /&gt;
 ---------- 1 xinux xinux 0 2009-06-16 12:01 test&lt;br /&gt;
&lt;br /&gt;
===chmod Optionen===&lt;br /&gt;
 -c   (changes) es werden nur die Dateien angezeigt, deren Zugriffsrechte tatsächlich verändert werden&lt;br /&gt;
 -f   (silent, quiet) Fehlermeldungen wegen fehlgeschlagener Änderungsversuche werden unterdrückt&lt;br /&gt;
 -v   (verbose) alle Aktionen werden angezeigt&lt;br /&gt;
 -R   (recursive) die Zugriffsrechte aller Dateien in den Unterverzeichnissen werden ebenfalls geändert&lt;br /&gt;
&lt;br /&gt;
Theoretisch sind alle Kombinationen der Zugriffsrechte denkbar, aber der&lt;br /&gt;
Eigentümer einer Datei darf diese immer lesen, selbst wenn das Lesebit nicht&lt;br /&gt;
gesetzt ist. Genauso macht es wenig Sinn, eine gewöhnliche Textdatei als&lt;br /&gt;
ausführbar zu setzen; die Shell wird damit nichts anfangen können. Ein x für ein&lt;br /&gt;
Verzeichnis gibt an, dass in dieses gewechselt werden kann.&lt;br /&gt;
&lt;br /&gt;
Rechte sind verbindlich&lt;br /&gt;
&lt;br /&gt;
Interessant ist auch ein Konstrukt folgender Art&lt;br /&gt;
 -rwx---rwx&lt;br /&gt;
&lt;br /&gt;
das angibt, dass mit der Datei alles angestellt werden kann, außer durch Nutzer der&lt;br /&gt;
Gruppe. Versucht irgend jemand, der nicht der Gruppe des Eigentümers angehört,&lt;br /&gt;
die Datei zu modifizieren, wird ihm dies gelingen, einem Gruppenmitglied bleibt&lt;br /&gt;
dies versagt, obwohl er ja gleichzeitig ein &amp;quot;Anderer&amp;quot; ist. D.h. die Rechte der&lt;br /&gt;
Gruppe sind verbindlicher, als die Rechte der anderen!&lt;br /&gt;
&lt;br /&gt;
===Bedeutungen der Zugriffsarten===&lt;br /&gt;
====Dateien====&lt;br /&gt;
* r: Der Inhalt der Datei kann gelesen und damit auch kopiert werden. &lt;br /&gt;
 root@zero:~# cat test&lt;br /&gt;
 Dies ist eine Testdatei&lt;br /&gt;
  &lt;br /&gt;
 root@zero:~# cp test backup&lt;br /&gt;
&lt;br /&gt;
* w: Der Inhalt der Datei darf verändert werden. Ob die Datei gelöscht werden kann ist&lt;br /&gt;
keine Eigenschaft der Datei, sondern des Verzeichnisses, indem sich die Datei befindet.&lt;br /&gt;
 root@zero:~# cat &amp;gt; test&lt;br /&gt;
 Hier steht jetzt was anderes&lt;br /&gt;
 ^C&lt;br /&gt;
 root@zero:~# cat test&lt;br /&gt;
 Hier steht jetzt was anderes&lt;br /&gt;
  &lt;br /&gt;
 xinux@zero:~$ ls -ld verzeichnis/&lt;br /&gt;
 dr-xr-xr-x 2 xinux xinux 4096 2009-06-18 11:16 verzeichnis/&lt;br /&gt;
 xinux@zero:~/verzeichnis$ rm text&lt;br /&gt;
 rm: Entfernen von „text“ nicht möglich: Permission denied&lt;br /&gt;
&lt;br /&gt;
* x: Ausführrecht für Programme und Skripte&lt;br /&gt;
 xinux@zero:~$ ./programm&lt;br /&gt;
 -bash: ./programm: Permission denied&lt;br /&gt;
 xinux@zero:~$ chmod +x programm&lt;br /&gt;
 xinux@zero:~$ ./programm&lt;br /&gt;
 Test&lt;br /&gt;
  test&lt;br /&gt;
&lt;br /&gt;
====Verzeichnisse====&lt;br /&gt;
* r: Die Einträge in dem Verzeichnis sind lesbar.&lt;br /&gt;
Leserecht von verzeichnis/ entziehen&lt;br /&gt;
 xinux@zero:~$ chmod a-r verzeichnis/&lt;br /&gt;
 xinux@zero:~$ ls verzeichnis/&lt;br /&gt;
 ls: Öffnen von Verzeichnis verzeichnis/ nicht möglich: Permission denied&lt;br /&gt;
Leserecht für Benutzer und Gruppe vergeben&lt;br /&gt;
 xinux@zero:~$ chmod a+r verzeichnis/&lt;br /&gt;
 xinux@zero:~$ ls verzeichnis/&lt;br /&gt;
 text&lt;br /&gt;
&lt;br /&gt;
* w: Die Einträge in dem Verzeichnis können geändert werden. &lt;br /&gt;
Neue Datei erstellen&lt;br /&gt;
 xinux@zero:~$ touch neu&lt;br /&gt;
 xinux@zero:~$ ls neu&lt;br /&gt;
 neu&lt;br /&gt;
&lt;br /&gt;
Datei löschen&lt;br /&gt;
 xinux@zero:~$ rm neu&lt;br /&gt;
 xinux@zero:~$ ls neu&lt;br /&gt;
 ls: Zugriff auf neu nicht möglich: No such file or directory&lt;br /&gt;
&lt;br /&gt;
* x: Der Name des Verzeichnisses kann in einem Pfadnamen erscheinen.&lt;br /&gt;
Verzeichnis ohne x Recht&lt;br /&gt;
 xinux@zero:~$ chmod a-x verzeichnis/&lt;br /&gt;
Wechseln in Verzeichnis mangels x-Recht nicht möglich&lt;br /&gt;
 xinux@zero:~$ cd verzeichnis/&lt;br /&gt;
 -bash: cd: verzeichnis/: Permission denied&lt;br /&gt;
x-Recht vergeben&lt;br /&gt;
 xinux@zero:~$ chmod a+x verzeichnis/&lt;br /&gt;
damit Wechsel in Verzeichnis möglich&lt;br /&gt;
 xinux@zero:~$ cd verzeichnis/&lt;br /&gt;
 xinux@zero:~/verzeichnis$ pwd&lt;br /&gt;
 /home/xinux/verzeichnis&lt;br /&gt;
&lt;br /&gt;
====umask====&lt;br /&gt;
Neue Dateien und Verzeichnisse werden mit ein und denselben Zufriffsrechten erzeugt.&lt;br /&gt;
 xinux@zero:~$ mkdir text&lt;br /&gt;
 xinux@zero:~$ touch textdat&lt;br /&gt;
 xinux@zero:~$ ls -ld text*&lt;br /&gt;
 drwxr-xr-x 2 xinux xinux 4096 2009-06-18 11:37 text&lt;br /&gt;
 -rw-r--r-- 1 xinux xinux    0 2009-06-18 11:37 textdat&lt;br /&gt;
&lt;br /&gt;
Zuständig für dieses Verhalten ist die sogenannte umask, die oft in der Datei&lt;br /&gt;
/etc/profile auf den Wert 022 voreingestellt ist. Zusätzlich wird noch eine&lt;br /&gt;
Maximalmaske benötigt, die sich für Verzeichnisse und andere Dateien&lt;br /&gt;
unterscheidet. Die bei der Erzeugung gesetzten Rechte entstehen nun, indem von&lt;br /&gt;
der Maximalmaske der durch die umask vorgegebene Wert subtrahiert wird:&lt;br /&gt;
&lt;br /&gt;
{| border=1 cellpadding=2&lt;br /&gt;
!&lt;br /&gt;
! Dateien&lt;br /&gt;
! Verzeichnisse&lt;br /&gt;
|-&lt;br /&gt;
| Systemvorgabe&lt;br /&gt;
| 666&lt;br /&gt;
| 777&lt;br /&gt;
|-&lt;br /&gt;
| -umask&lt;br /&gt;
| 022&lt;br /&gt;
| 022&lt;br /&gt;
|-&lt;br /&gt;
| Ergebnis&lt;br /&gt;
| 644&lt;br /&gt;
| 755&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
 xinux@zero:~$ grep umask /etc/profile&lt;br /&gt;
 umask 022&lt;br /&gt;
&lt;br /&gt;
==Gruppenzugehörigkeit==&lt;br /&gt;
===newgrp===&lt;br /&gt;
Ändert die Gruppenzugehörigkeit eines Benutzers auf die angegebene Gruppe. Wenn keine Gruppe angegeben wird, wird die &lt;br /&gt;
Anmeldegruppe des Benutzers verwendet. Die neue Gruppe wird anschließend fü Zugriffskontrollen verwendet.&lt;br /&gt;
&lt;br /&gt;
 newgrp Gruppenname&lt;br /&gt;
&lt;br /&gt;
 root@zero:~# newgrp hacker&lt;br /&gt;
 root@zero:~# id&lt;br /&gt;
 uid=0(root) gid=1006(hacker) Gruppen=0(root),1006(hacker)&lt;br /&gt;
&lt;br /&gt;
===chgrp===&lt;br /&gt;
Verändert die Besitzugehörigkeit zu der angegebenen Gruppe&lt;br /&gt;
&lt;br /&gt;
 chgrp [Optionen] Gruppe Datei(en)&lt;br /&gt;
&lt;br /&gt;
Optionen:&lt;br /&gt;
 -c Zeigt Veränderungen an&lt;br /&gt;
 -f Unterdrückt die meisten Fehlermeldungen&lt;br /&gt;
 -R Verändert Dateien und Verzeichnisse rekursiv&lt;br /&gt;
 -v Gibt geschwätzige Ausgabe aus.&lt;br /&gt;
&lt;br /&gt;
 root@zero:~# ls -l&lt;br /&gt;
 ...&lt;br /&gt;
 d-wx--x--x  3 root root 4096 2009-06-18 13:34 verzeichnis&lt;br /&gt;
 &lt;br /&gt;
 root@zero:~# chgrp -R xinux verzeichnis/&lt;br /&gt;
 root@zero:~# ls -l&lt;br /&gt;
 ...&lt;br /&gt;
 d-wx--x--x  3 root xinux 4096 2009-06-18 13:34 verzeichnis&lt;br /&gt;
&lt;br /&gt;
 xinux@zero:~$ cd /root/verzeichnis/&lt;br /&gt;
 xinux@zero:/root/verzeichnis$ pwd&lt;br /&gt;
 /root/verzeichnis&lt;br /&gt;
&lt;br /&gt;
===chown===&lt;br /&gt;
Ändert den Eigentümer von einer oder mehreren Dateien in den angegebenen Benutzer. &lt;br /&gt;
chown erlaubt ebenfalls das Ändern der Gruppeneigentümreschaft. Nur der aktuelle Eigentümer einer&lt;br /&gt;
Datei oder der Superuser (root) darf die Eigentumsverhältnisse ändern.&lt;br /&gt;
&lt;br /&gt;
 chown [Optionen] Benutzer(:Gruppe) Dateien&lt;br /&gt;
&lt;br /&gt;
Optionen:&lt;br /&gt;
 -c Gibt Informationen über die veränderten Dateien aus&lt;br /&gt;
 --dereference Symbolischen Links folgen&lt;br /&gt;
 -v Gibt Informationen über alle Dateien aus, die chown zu ändern versucht, egal, ob die Änderung erfolgt ist oder nicht&lt;br /&gt;
 -R Geht rekursiv durch alle Unterverzeichnisse und führt die Änderungen durch. &lt;br /&gt;
&lt;br /&gt;
 root@zero:~# chown -R xinux.xinux verzeichnis/&lt;br /&gt;
 root@zero:~# ls -l&lt;br /&gt;
 insgesamt 12&lt;br /&gt;
 drwx------ 13 root  root  4096 2009-04-21 15:11 profile&lt;br /&gt;
 --w-------  1 root  root     0 2009-06-18 11:13 test&lt;br /&gt;
 -rw-r--r--  1 root  root    40 2009-06-18 12:04 text&lt;br /&gt;
 drwxrwx--x  3 xinux xinux 4096 2009-06-18 13:39 verzeichnis&lt;br /&gt;
 &lt;br /&gt;
 root@zero:~# chown -R -c xinux.xinux verzeichnis/&lt;br /&gt;
 &lt;br /&gt;
 root@zero:~# chown -R -v xinux.xinux verzeichnis/&lt;br /&gt;
 Eigentümer von „verzeichnis/01“ als xinux:xinux erhalten&lt;br /&gt;
 Eigentümer von „verzeichnis/test“ als xinux:xinux erhalten&lt;br /&gt;
 Eigentümer von „verzeichnis/“ als xinux:xinux erhalten&lt;br /&gt;
&lt;br /&gt;
==Eingabe/Ausgabe==&lt;br /&gt;
Standardeingabe (0): Laufende Programme erwarten von hier ihre Eingaben (normalerweise handelt es sich um die Tastatur).&lt;br /&gt;
&lt;br /&gt;
Standardausgabe (1): Programme schreiben auf diese ihre Ausgaben (Bildschirm).&lt;br /&gt;
&lt;br /&gt;
Standardfehlerausgabe (2) : Fehlerausgaben landen hier (Bildschirm, aber nur die aktive Konsole).&lt;br /&gt;
&lt;br /&gt;
[[Bild:std.jpg]]&lt;br /&gt;
&lt;br /&gt;
===cat===&lt;br /&gt;
Das Programm cat liest von STDIN und gibt es STDOUT wieder aus&lt;br /&gt;
&lt;br /&gt;
Einlesen der Datei text&lt;br /&gt;
 root@zero:~# cat &amp;lt; text&lt;br /&gt;
 wichtig&lt;br /&gt;
&lt;br /&gt;
Schreiben in die Datei text, dies überschreibt den bisherigen Inhalt der Datei&lt;br /&gt;
 root@zero:~# cat &amp;gt; text&lt;br /&gt;
 sogar noch wichtiger &lt;br /&gt;
 &lt;br /&gt;
Ausgeben der Datei text&lt;br /&gt;
 root@zero:~# cat text &lt;br /&gt;
 sogar noch wichtiger&lt;br /&gt;
&lt;br /&gt;
Lesen aus der Datei text und schreiben in die Datei neuertext&lt;br /&gt;
 root@zero:~# cat &amp;lt; text &amp;gt; neuertext&lt;br /&gt;
 root@zero:~# cat neuertext&lt;br /&gt;
 sogar noch wichtiger&lt;br /&gt;
&lt;br /&gt;
Anhängen der Ausgabe von date an die Datei neuertext&lt;br /&gt;
 root@zero:~# date &amp;gt;&amp;gt; neuertext&lt;br /&gt;
 root@zero:~# cat neuertext&lt;br /&gt;
 sogar noch wichtiger&lt;br /&gt;
 Do 18. Jun 14:08:58 CEST 2009&lt;br /&gt;
&lt;br /&gt;
Umleiten des Standardfehlerkanals nach error&lt;br /&gt;
 root@zero:~# rm sux 2&amp;gt; error&lt;br /&gt;
 root@zero:~# more error&lt;br /&gt;
 rm: Entfernen von „sux“ nicht möglich: No such file or directory&lt;br /&gt;
&lt;br /&gt;
===Umleitungen===&lt;br /&gt;
Nacheinander auszuführende Kommandos&lt;br /&gt;
 root@zero:~# pwd; date&lt;br /&gt;
 /root&lt;br /&gt;
 Do 18. Jun 14:13:05 CEST 2009&lt;br /&gt;
 &lt;br /&gt;
Übergeben der Ausgabe von tail als Eingabe von grep mit Hilfe der Pipe &amp;quot;|&amp;quot;&lt;br /&gt;
 root@zero:~# tail /var/log/auth.log | grep xinux&lt;br /&gt;
 Jun 18 13:52:33 zero nss_wins[11433]: pam_unix(login:session): session closed for user xinux&lt;br /&gt;
&lt;br /&gt;
Übergeben der letzten 100 Zeilen von syslog als Eingabe von grep&lt;br /&gt;
 root@zero:~# tail /var/log/syslog -n 100 | grep error&lt;br /&gt;
 Jun 18 09:30:54 zero kernel: [154384.692135] end_request: I/O error, dev fd0, sector 0&lt;br /&gt;
 Jun 18 09:30:54 zero kernel: [154384.712137] end_request: I/O error, dev fd0, sector 0&lt;br /&gt;
&lt;br /&gt;
==tr==&lt;br /&gt;
tr ist ein Programm um Zeichen zu übersetzen. Dies betrifft nur die Ausgabe, die Datei selbst bleibt unverändert.&lt;br /&gt;
&lt;br /&gt;
Ersetzt Kleinbuchstaben durch Großbuchstaben aus der Datei text&lt;br /&gt;
 root@zero:~# tr &amp;quot;a-z&amp;quot; &amp;quot;A-Z&amp;quot; &amp;lt; text&lt;br /&gt;
 SOGAR NOCH WICHTIGER&lt;br /&gt;
 123&lt;br /&gt;
 34&lt;br /&gt;
 4711&lt;br /&gt;
 TEST&lt;br /&gt;
&lt;br /&gt;
Ersetzt alle Zahlen durch X&lt;br /&gt;
 root@zero:~# tr &amp;quot;0-9&amp;quot; &amp;quot;X&amp;quot; &amp;lt; text&lt;br /&gt;
 sogar noch wichtiger&lt;br /&gt;
 XXX&lt;br /&gt;
 XX&lt;br /&gt;
 XXXX&lt;br /&gt;
 test&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
 root@zero:~# cat &amp;gt; test&lt;br /&gt;
 +++++&lt;br /&gt;
 ###&lt;br /&gt;
 1111&lt;br /&gt;
&lt;br /&gt;
-s löscht mehrfach kommende Zeichen&lt;br /&gt;
 root@zero:~# tr '''-s''' &amp;quot;+&amp;quot; &amp;lt; test&lt;br /&gt;
 +&lt;br /&gt;
 ###&lt;br /&gt;
 1111&lt;br /&gt;
&lt;br /&gt;
-d löscht vorkommende Zeichen &lt;br /&gt;
 root@zero:~# tr '''-d''' &amp;quot;#&amp;quot; &amp;lt; test&lt;br /&gt;
 +++++ &lt;br /&gt;
 &lt;br /&gt;
 1111&lt;br /&gt;
&lt;br /&gt;
==cut==&lt;br /&gt;
Spalten aus einer Datei schneiden. Dies betrifft nur die Ausgabe, die Datei selbst bleibt unverändert.&lt;br /&gt;
 &lt;br /&gt;
Schneidet die erste Spalte aus, der Delimiter ist : &lt;br /&gt;
 root@zero:~# cut -f 1 -d : /etc/passwd&lt;br /&gt;
 root&lt;br /&gt;
 daemon&lt;br /&gt;
 bin&lt;br /&gt;
 ...&lt;br /&gt;
 xinux&lt;br /&gt;
&lt;br /&gt;
 root@zero:~# more test&lt;br /&gt;
 1234#5678#9999&lt;br /&gt;
 &lt;br /&gt;
Schneidet die zweite Spalte aus, der Delimiter ist #&lt;br /&gt;
 root@zero:~# cut -f 2 -d &amp;quot;#&amp;quot; &amp;lt; test&lt;br /&gt;
 5678&lt;br /&gt;
&lt;br /&gt;
Schneidet bis zum 3 Zeichen ab&lt;br /&gt;
 root@zero:~$ echo S01policykit | cut -c 4-&lt;br /&gt;
 policykit&lt;br /&gt;
&lt;br /&gt;
==expand==&lt;br /&gt;
Ersetzt Tabulatorzeichen durch Folgen von Leerzeichen und schreibt das Ergebnis auf die Standardausgabe&lt;br /&gt;
 root@zero:~# expand /etc/samba/smb.conf&lt;br /&gt;
 ...&lt;br /&gt;
&lt;br /&gt;
==fmt==&lt;br /&gt;
#Setzt den Text der Dateien im Blocksatz der angegebenen Breite durch Auffüllen von Zeilen und Entfernen von Zeilenwechseln.&lt;br /&gt;
Standardgemäß werden Leerzeilen, die Position von Leerzeichen und der Einzug am Zeilenanfang erhalten. fmt versucht, &lt;br /&gt;
Zeilenumbrüche an Satzenden durchzuführen sowie sie nach dem ersten oder vor dem letzten Wort eines Satzes zu vermeiden. &lt;br /&gt;
 &lt;br /&gt;
 fmt [Optionen] [Dateien]&lt;br /&gt;
&lt;br /&gt;
Optionen&lt;br /&gt;
&lt;br /&gt;
* -p ''Präfix'': Formatiert nur Zeilen, die mit ''Präfix'' anfangen&lt;br /&gt;
 root@zero:/tmp# fmt -p '#' text&lt;br /&gt;
 #Setzt den Text der Dateien im Blocksatz der angegebenen Breite durch&lt;br /&gt;
 #Auffüllen von Zeilen und Entfernen von Zeilenwechseln.  Standardgemäß&lt;br /&gt;
 #werden Leerzeilen, die Position von Leerzeichen und der Einzug am&lt;br /&gt;
 #Zeilenanfang erhalten. fmt versucht,&lt;br /&gt;
 Zeilenumbrüche an Satzenden durchzuführen sowie sie nach dem ersten oder vor dem letzten Wort eines Satzes zu vermeiden.&lt;br /&gt;
&lt;br /&gt;
* -u : Erzwingt genau ein Leerzeichen zwischen Wörtern und zwei Leerzeichen zwischen Sätzen&lt;br /&gt;
&lt;br /&gt;
* -w ''Breite'': Setzt die Ausgabebreite auf ''Breite''&lt;br /&gt;
 root@zero:/tmp# fmt -w 30 text&lt;br /&gt;
 #Setzt den Text der Dateien&lt;br /&gt;
 im Blocksatz der angegebenen&lt;br /&gt;
 Breite durch Auffüllen&lt;br /&gt;
 von Zeilen und Entfernen&lt;br /&gt;
 von Zeilenwechseln.&lt;br /&gt;
 #Standardgemäß werden&lt;br /&gt;
 Leerzeilen, die Position von&lt;br /&gt;
 Leerzeichen und der Einzug am&lt;br /&gt;
 Zeilenanfang erhalten. fmt&lt;br /&gt;
 versucht, Zeilenumbrüche&lt;br /&gt;
 an Satzenden durchzuführen&lt;br /&gt;
 sowie sie nach dem ersten&lt;br /&gt;
 oder vor dem letzten Wort&lt;br /&gt;
 eines Satzes zu vermeiden.&lt;br /&gt;
&lt;br /&gt;
==join==&lt;br /&gt;
Führt die Zeilen zweier sortierter Dateien anhand von '''Übereinstimmungen''' in einem gemeinsamen Feld zusammen.&lt;br /&gt;
&lt;br /&gt;
 root@zero:~# more name&lt;br /&gt;
 1. karl&lt;br /&gt;
 2. heinz&lt;br /&gt;
 3. hans&lt;br /&gt;
 4. otto&lt;br /&gt;
 root@zero:~# more tel&lt;br /&gt;
 1. 1234&lt;br /&gt;
 2. 4321&lt;br /&gt;
 3. 222&lt;br /&gt;
 4. 121212&lt;br /&gt;
 root@zero:~# join name tel &amp;gt; telefonbuch&lt;br /&gt;
 root@zero:~# more telefonbuch&lt;br /&gt;
 1. karl 1234&lt;br /&gt;
 2. heinz 4321&lt;br /&gt;
 3. hans 222&lt;br /&gt;
 4. otto 121212&lt;br /&gt;
&lt;br /&gt;
 root@zero:~# join -t : /etc/passwd /etc/shadow&lt;br /&gt;
 ....&lt;br /&gt;
 daemon:x:1:1:daemon:/usr/sbin:/bin/sh:*:14181:0:99999:7:::&lt;br /&gt;
 bin:x:2:2:bin:/bin:/bin/sh:*:14181:0:99999:7:::&lt;br /&gt;
 sys:x:3:3:sys:/dev:/bin/sh:*:14181:0:99999:7:::&lt;br /&gt;
 sync:x:4:65534:sync:/bin:/bin/sync:*:14181:0:99999:7:::&lt;br /&gt;
 ...&lt;br /&gt;
&lt;br /&gt;
join in dat1 nach Feld 3 und in dat2 nach Feld 2&lt;br /&gt;
 thomas@lydia:~$ cat dat1 &lt;br /&gt;
 hugo:ps:1111&lt;br /&gt;
 erwin:zw:2222&lt;br /&gt;
 karl:sb:3333&lt;br /&gt;
 rudi:kl:4444&lt;br /&gt;
 thomas@lydia:~$ cat dat2&lt;br /&gt;
 blau:1111:svn&lt;br /&gt;
 grün:2222:fcs&lt;br /&gt;
 gelb:3333:fch&lt;br /&gt;
 rot:4444:fck&lt;br /&gt;
 thomas@lydia:~$ join -t : -1 3 -2 2 dat1 dat2 &lt;br /&gt;
 1111:hugo:ps:blau:svn&lt;br /&gt;
 2222:erwin:zw:grün:fcs&lt;br /&gt;
 3333:karl:sb:gelb:fch&lt;br /&gt;
 4444:rudi:kl:rot:fck&lt;br /&gt;
&lt;br /&gt;
==nl==&lt;br /&gt;
Nummeriert die Zeilen in einer Datei.&lt;br /&gt;
&lt;br /&gt;
 root@zero:~# nl /etc/passwd                                                   &lt;br /&gt;
     1  root:x:0:0:root:/root:/bin/bash                                       &lt;br /&gt;
     2  daemon:x:1:1:daemon:/usr/sbin:/bin/sh                                 &lt;br /&gt;
     3  bin:x:2:2:bin:/bin:/bin/sh                                            &lt;br /&gt;
     4  sys:x:3:3:sys:/dev:/bin/sh                                            &lt;br /&gt;
     5  sync:x:4:65534:sync:/bin:/bin/sync&lt;br /&gt;
     ...&lt;br /&gt;
Nummereriet mit führenden Nullen der Separatir ist ein :&lt;br /&gt;
 root@zero:~# nl -s : -n rz dat1&lt;br /&gt;
&lt;br /&gt;
==od==&lt;br /&gt;
Gibt Dateien im Oktal und anderen Formaten aus.&lt;br /&gt;
&lt;br /&gt;
 od [Optionen] Datei&lt;br /&gt;
&lt;br /&gt;
* -j ''Bytes'': Überspringt die Anzahl ''Bytes'' einer Datei&lt;br /&gt;
* -N ''Bytes'': Gibt nur die Anzahl ''Bytes'' aus&lt;br /&gt;
* -c : Gebe ASCII Zeichen aus&lt;br /&gt;
* -f : Gebe Fließkommazahlen aus&lt;br /&gt;
* -i : Gebe Dezimal Integer aus&lt;br /&gt;
* -l : Gebe Dezimal Long aus&lt;br /&gt;
* -o : Gebe Oktal 2 Byte Einheiten aus&lt;br /&gt;
* -s : Gebe Dezimal 2 Byte Einheiten aus&lt;br /&gt;
* -x : Gebe Hexadezimale 2 Byte einheiten aus&lt;br /&gt;
&lt;br /&gt;
Beispiele&lt;br /&gt;
&lt;br /&gt;
Gebe Master Boot Record (die ersten 512 Byte der Festplatte /dev/sda) als Hexadezimal aus&lt;br /&gt;
 root@zero:~# od '''-x -N''' 512 /dev/sda&lt;br /&gt;
 0000000 48eb 1090 d08e 00bc b8b0 0000 d88e c08e&lt;br /&gt;
 0000020 befb 7c00 00bf b906 0200 a4f3 21ea 0006&lt;br /&gt;
 0000040 be00 07be 0438 0b75 c683 8110 fefe 7507&lt;br /&gt;
 0000060 ebf3 b416 b002 bb01 7c00 80b2 748a 0203&lt;br /&gt;
 0000100 00ff 2000 0001 0000 0200 90fa f690 80c2&lt;br /&gt;
 ...&lt;br /&gt;
&lt;br /&gt;
Schreibe &amp;quot;suxer&amp;quot; in die Datei test&lt;br /&gt;
 root@zero:~# echo &amp;quot;suxer&amp;quot; &amp;gt; test&lt;br /&gt;
Ausgabe Hexadezimal&lt;br /&gt;
 root@zero:~# od -x test&lt;br /&gt;
 0000000 7573 6578 0a72&lt;br /&gt;
 0000006&lt;br /&gt;
&lt;br /&gt;
Ausgabe ASCII Zeichen&lt;br /&gt;
 root@zero:~# od -c test&lt;br /&gt;
 0000000   s   u   x   e   r  \n&lt;br /&gt;
 0000006&lt;br /&gt;
&lt;br /&gt;
==paste==&lt;br /&gt;
Fügt die Zeilen von zwei oder mehr Dateien horizontal zusammen&lt;br /&gt;
 root@zero:~# paste name tel&lt;br /&gt;
 1. karl 1. 1234&lt;br /&gt;
 2. heinz        2. 4321&lt;br /&gt;
 3. hans 3. 222&lt;br /&gt;
 4. otto 4. 121212&lt;br /&gt;
&lt;br /&gt;
==pr==&lt;br /&gt;
Bereitet Textdateien zum Drucken vor.&lt;br /&gt;
&lt;br /&gt;
 root@zero:~# echo &amp;quot;Plan für heute&amp;quot; &amp;gt; dokument&lt;br /&gt;
 root@zero:~# more dokument&lt;br /&gt;
 Plan für heute&lt;br /&gt;
 root@zero:~# pr dokument   &lt;br /&gt;
  &lt;br /&gt;
 &lt;br /&gt;
 2009-06-19 12:44                    dokument                     Seite 1&lt;br /&gt;
 &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
 Plan für heute&lt;br /&gt;
&lt;br /&gt;
Anmerkung Ausmaße der Bildschirmausgabe wie eine Druckseite.&lt;br /&gt;
&lt;br /&gt;
==sed==&lt;br /&gt;
streaming editor. Mit sed ist es möglich, den Inhalt einer Datei automatisch (nicht interaktiv) zu&lt;br /&gt;
bearbeiten. Wie unter Linux üblich, wird auch hier der Text nicht wirklich verändert sondern die &lt;br /&gt;
Änderung erfolgt über die Standardausgabe, die wieder umgeleitet werden kann. Die Syntax ist ähnlich &lt;br /&gt;
des ex modus von vi. Reguläre Ausdrücke können nach Belieben benutzt werden. &lt;br /&gt;
&lt;br /&gt;
Optionen:&lt;br /&gt;
 -e Zeichenkette  wendet die Editorbefehle aus Zeichenkette auf den Text an.&lt;br /&gt;
 -n gibt nur die Zeilen aus, die explizit (durch &amp;quot;p&amp;quot; ausgedruckt werden sollen&lt;br /&gt;
&lt;br /&gt;
Gibt die dritte Zeile der Datei text aus&lt;br /&gt;
 root@zero:~# sed -n &amp;quot;3p&amp;quot; text&lt;br /&gt;
 34&lt;br /&gt;
&lt;br /&gt;
Gibt die erste bis dritte Zeile von text aus&lt;br /&gt;
 root@zero:~# sed -n &amp;quot;1,3p&amp;quot; text&lt;br /&gt;
 sogar noch wichtiger&lt;br /&gt;
 123&lt;br /&gt;
 34&lt;br /&gt;
&lt;br /&gt;
Löschen der Zeile mit &amp;quot;sogar&amp;quot;&lt;br /&gt;
 root@zero:~# sed -e '/sogar/d' &amp;lt; text&lt;br /&gt;
 123&lt;br /&gt;
 34&lt;br /&gt;
 4711&lt;br /&gt;
 test&lt;br /&gt;
&lt;br /&gt;
und schreiben in text2&lt;br /&gt;
 root@zero:~# sed -e '/sogar/d' &amp;lt; text &amp;gt; text2&lt;br /&gt;
 root@zero:~# more text2&lt;br /&gt;
 123&lt;br /&gt;
 34&lt;br /&gt;
 4711&lt;br /&gt;
 test&lt;br /&gt;
&lt;br /&gt;
Alle 3en durch DREI ersetzen&lt;br /&gt;
 root@zero:~# sed -e 's/3/DREI/g' &amp;lt; text&lt;br /&gt;
 sogar noch wichtiger&lt;br /&gt;
 12DREI&lt;br /&gt;
 DREI4&lt;br /&gt;
 4711&lt;br /&gt;
 test&lt;br /&gt;
&lt;br /&gt;
==wc==&lt;br /&gt;
Zählt die Anzahl von Zeichen, Wörter oder Zeilen&lt;br /&gt;
&lt;br /&gt;
Optionen&lt;br /&gt;
* -m : Zählt die Anzahl der Zeichen&lt;br /&gt;
 root@zero:~# more name&lt;br /&gt;
 1. karl&lt;br /&gt;
 2. heinz&lt;br /&gt;
 3. hans&lt;br /&gt;
 4. otto&lt;br /&gt;
 root@zero:~# wc '''-m''' tel&lt;br /&gt;
 33 tel&lt;br /&gt;
&lt;br /&gt;
* -w : Zählt die Anzahl der Wörter (einschließlich Zahlen und andere Zeichen)&lt;br /&gt;
 root@zero:~# wc '''-w''' name&lt;br /&gt;
 8 name&lt;br /&gt;
&lt;br /&gt;
* -l : Zählt die Anzahl der Zeilen&lt;br /&gt;
 root@zero:~# wc '''-l''' name&lt;br /&gt;
 4 name&lt;br /&gt;
&lt;br /&gt;
==Sort==&lt;br /&gt;
&lt;br /&gt;
Zum sortieren von Dateien nach Feldern benutzt man sort. sort liest von STDIN man kann die Datei aber auch als Argument übergeben. &lt;br /&gt;
&lt;br /&gt;
Sortiert nach dem ersten Feld&lt;br /&gt;
  root@zero:~# sort /etc/passwd 	 &lt;br /&gt;
&lt;br /&gt;
Es wird geprüft ob die Datei schon sortiert ist &lt;br /&gt;
 root@zero:~# sort -c /etc/passwd 	&lt;br /&gt;
&lt;br /&gt;
Sortiert nach dem ersten Feld (Richtungsumkehr)  &lt;br /&gt;
 root@zero:~#  sort -r /etc/passwd&lt;br /&gt;
&lt;br /&gt;
Führende Leersortzeichen werden ignoriert &lt;br /&gt;
 root@zero:~# sort -b /etc/passwd&lt;br /&gt;
&lt;br /&gt;
Ausgabe  in die Datei pass&lt;br /&gt;
 root@zero:~# sort  /etc/passwd   -o pass	 &lt;br /&gt;
&lt;br /&gt;
nimmt : als Trenner -Voreinstellung ist TAB&lt;br /&gt;
  root@zero:~# sort -t : /etc/passwd&lt;br /&gt;
&lt;br /&gt;
sortiert nach dem  3 Feld,  der Trenner ist : und es wird nummerisch sortiert&lt;br /&gt;
&lt;br /&gt;
 root@zero:~# sort -t: +2 -n /etc/passwd		&lt;br /&gt;
&lt;br /&gt;
sortiert nach dem  3 Feld,  der Trenner ist : und es wird nummerisch sortiert&lt;br /&gt;
					&lt;br /&gt;
 root@zero:~# sort -t: -k 3 -n /etc/passwd&lt;br /&gt;
&lt;br /&gt;
Sortiert nach dem  3  bis zum 5 Feld, der Trenner ist : und es wird nummerisch sortiert&lt;br /&gt;
	&lt;br /&gt;
 root@zero:~# sort -t: -k 3,5 -n /etc/passwd	&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==INodes==&lt;br /&gt;
Inode (oder I-Node) wird im Deutschen am besten als Informationsknoten oder&lt;br /&gt;
Indexeintrag bezeichnet. Er fasst alle Attribute einer Datei zusammen außer dem Inhalt&lt;br /&gt;
und dem Namen der Datei.&lt;br /&gt;
&lt;br /&gt;
===Daten===&lt;br /&gt;
{| border=1 cellpadding=2&lt;br /&gt;
|type&lt;br /&gt;
|Der Typ der Datei wird als einzelner Buchstabe angezeigt. Der Typ einer Datei wird beim Anlegen der Datei festgelegt&lt;br /&gt;
|-&lt;br /&gt;
|Permissions &lt;br /&gt;
|Die Zugriffsrechte der Datei werden in den 12 Bit sstrwxrwxrwx abgespeichert.Wenn sie gesetzt sind, werden sie bei &lt;br /&gt;
der Ausgabe an Stelle der x-Rechte ausgegeben. Die Zugriffsrechte können mit dem Kommando chmod verändert werden.&lt;br /&gt;
|-&lt;br /&gt;
|link count&lt;br /&gt;
|In UNIX kann eine Datei mehr als einen Namen haben. Der Link Count gibt die Anzahl der Namen einer Datei an. Er kann&lt;br /&gt;
mit dem Kommando ln erhöht und dem Kommando rm erniedrigt werden.&lt;br /&gt;
|-&lt;br /&gt;
|owner&lt;br /&gt;
|Für den Dateieigentümer gelten die in der ersten rwx-Gruppe festgelegten Zugriffsrechte. Standardmäßig ist der &lt;br /&gt;
Eigentümer einer Datei derjenige Benutzer, der die Datei angelegt hat.&lt;br /&gt;
|-&lt;br /&gt;
|group&lt;br /&gt;
|Für Benutzer, die in der gleichen Gruppe sind, der die Datei angehört, gelten die in der zweiten rwx-Gruppe festgelegten&lt;br /&gt;
Zugriffsrechte. In System V gehört eine Datei standardmäßig der Gruppe an, in der der anlegende Benutzer gerade ist.&lt;br /&gt;
|-&lt;br /&gt;
|size&lt;br /&gt;
|Bei normalen Dateien und Verzeichnissen gibt diese Information die Länge der Datei in Byte an.&lt;br /&gt;
|-&lt;br /&gt;
|access time&lt;br /&gt;
|Die Zugriffszeit gibt den Zeitpunkt des letzten Lesezugriffes auf eine Datei an. Aus Effizienzgründen wird die &lt;br /&gt;
Zugriffszeit an Verzeichnissen nicht gesetzt, wenn ein Verzeichnis durchsucht wird, obwohl man dies erwarten könnte. ''(ls -l --time=atime)''&lt;br /&gt;
|-&lt;br /&gt;
|modification time&lt;br /&gt;
|Die Modifikationszeit gibt die Zeit des letzten Schreibzugriffes auf die Daten der Datei an. Intern speichert UNIX &lt;br /&gt;
die Zeit als Sekunden seit Beginn des Jahres 1970 und in GMT ab. Für die Ausgabe wird dies in ein besser lesbares &lt;br /&gt;
Format in der lokalen Zeitzone umgewandelt. ''(ls -l)''&lt;br /&gt;
|-&lt;br /&gt;
|change time &lt;br /&gt;
|Die Veränderungszeit gibt das Datum der letzten Statusänderung der Datei an. Sie wird immer dann gesetzt, wenn die &lt;br /&gt;
Informationen über die Datei sich ändern (Datum der Erzeugung wird nicht gespeichert) ''(ls -lc)''&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
===Dateiarten===&lt;br /&gt;
{| border=1 cellpadding=2&lt;br /&gt;
!Zeichen&lt;br /&gt;
!Typ&lt;br /&gt;
!Zweck&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;nowiki&amp;gt;-&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
|file&lt;br /&gt;
|normale Datei&lt;br /&gt;
|-&lt;br /&gt;
|d&lt;br /&gt;
|directory&lt;br /&gt;
|Verzeichnis&lt;br /&gt;
|-&lt;br /&gt;
|b&lt;br /&gt;
|block device&lt;br /&gt;
|Gerätedatei&lt;br /&gt;
|-&lt;br /&gt;
|c&lt;br /&gt;
|character device&lt;br /&gt;
|Gerätedatei&lt;br /&gt;
|-&lt;br /&gt;
|l&lt;br /&gt;
|link&lt;br /&gt;
|Querverweis&lt;br /&gt;
|-&lt;br /&gt;
|p&lt;br /&gt;
|named pipe&lt;br /&gt;
|Benannte Pipeline&lt;br /&gt;
|-&lt;br /&gt;
|s&lt;br /&gt;
|socket&lt;br /&gt;
|Netzwerkverbindung&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
====Normale Dateien====&lt;br /&gt;
Unter einer normalen Datei versteht man die Ansammlung von Daten. Dies kann ein Text, Programm, Bild oder sonstiges sein. &lt;br /&gt;
Beispiel&lt;br /&gt;
 root@zero:~# ls -l text | cut -c 1&lt;br /&gt;
 -&lt;br /&gt;
&lt;br /&gt;
====Verzeichnisse====&lt;br /&gt;
Dateien werden in Verzeichnissen gespeichert, nur so ist eine Ordnung möglich. &lt;br /&gt;
 root@zero:~# mkdir -v Ordner&lt;br /&gt;
 mkdir: Verzeichnis „Ordner“ angelegt&lt;br /&gt;
 &lt;br /&gt;
 root@zero:~# ls -ld Ordner | cut -c 1&lt;br /&gt;
 d&lt;br /&gt;
&lt;br /&gt;
====Gerätedateien (Block und Char)====&lt;br /&gt;
Gerätedateien ermöglichen Anwendungsprogrammen unter Benutzung des  Kernels den Zugriff auf die Hardwarekomponenten des Systems. Ansprechbar über Major und Minor Nummern &lt;br /&gt;
&lt;br /&gt;
Beispiele&lt;br /&gt;
&lt;br /&gt;
Sicherung des Master Boot Records der ersten Festplatte&lt;br /&gt;
 root@zero:~# dd if=/dev/sda of=/tmp/mbr.img bs=512 count=1&lt;br /&gt;
&lt;br /&gt;
Block Device &lt;br /&gt;
 root@zero:~# ls -l /dev/sda | cut -c 1 &lt;br /&gt;
 b&lt;br /&gt;
&lt;br /&gt;
Character Device &lt;br /&gt;
 root@zero:~# ls -l /dev/ttyS0  | cut -c 1 &lt;br /&gt;
 c&lt;br /&gt;
&lt;br /&gt;
Erstellen einer Gerätedatei&lt;br /&gt;
 root@zero:/dev# mknod sata1 b 8 0 &lt;br /&gt;
 root@zero:/dev# fdisk -l /dev/sata1 &lt;br /&gt;
 &lt;br /&gt;
 Platte /dev/sata1: 6442 MByte, 6442450944 Byte&lt;br /&gt;
 255 Köpfe, 63 Sektoren/Spuren, 783 Zylinder&lt;br /&gt;
 Einheiten = Zylinder von 16065 × 512 = 8225280 Bytes&lt;br /&gt;
 Disk identifier: 0x0005efab&lt;br /&gt;
 &lt;br /&gt;
       Gerät  boot.     Anfang        Ende     Blöcke   Id  System&lt;br /&gt;
 /dev/sata1p1   *           1         743     5968116   83  Linux&lt;br /&gt;
 /dev/sata1p2             744         783      321300    5  Erweiterte&lt;br /&gt;
 /dev/sata1p5             744         783      321268+  82  Linux Swap / Solaris&lt;br /&gt;
&lt;br /&gt;
====Named Pipes====&lt;br /&gt;
Benannte Pipes (Named Pipes) können dagegen auch zur Kommunikation zwischen Prozessen eingesetzt werden, die nicht miteinander&lt;br /&gt;
verwandt sind und sich darüber hinaus auf unterschiedlichen Rechnern innerhalb eines Netzwerkes befinden dürfen. Sie sind &lt;br /&gt;
flexibler als anonyme Pipes und eignen sich für sogenannte Client-Server-Anwendungen (es lassen sich auch RPCs realisieren).&lt;br /&gt;
Benannte Pipes ermöglichen die gleichzeitige Kommunikation in beide Richtungen, das heißt, Daten können im Vollduplexbetrieb &lt;br /&gt;
zwischen den Prozessen ausgetauscht werden.&lt;br /&gt;
 &lt;br /&gt;
Erstelle Named Pipe mit Namen /tmp/roehre. Schreibe &amp;quot;hallo welt&amp;quot; in die Pipe und bleibe&lt;br /&gt;
 xinux@zero:~$ mkfifo /tmp/roehre&lt;br /&gt;
 xinux@zero:~$ echo hallo welt &amp;gt; /tmp/roehre &lt;br /&gt;
&lt;br /&gt;
Gebe Inhalt der Pipe mit cat aus&lt;br /&gt;
 root@zero:~# cat &amp;lt; /tmp/roehre &lt;br /&gt;
 hallo welt&lt;br /&gt;
 root@zero:~# ls -l /tmp/roehre | cut -c 1&lt;br /&gt;
 p&lt;br /&gt;
&lt;br /&gt;
====Sockets====&lt;br /&gt;
Schnittstelle um es lokalen Anwendungen zu ermöglichen, miteinander Netwerkmässig zu kommunizieren.&lt;br /&gt;
&lt;br /&gt;
 root@lydia:~# netstat  -lnxp | tail -1&lt;br /&gt;
  unix  2 [ ACC ] STREAM HÖRT 21951 6646/nm-applet /tmp/orbit-thomas/linc-19f6-0-2b9b81095cede&lt;br /&gt;
&lt;br /&gt;
 root@lydia:~# ls -l /tmp/orbit-thomas/linc-19f6-0-2b9b81095cede  | cut -c 1 &lt;br /&gt;
 s&lt;br /&gt;
&lt;br /&gt;
====Links====&lt;br /&gt;
Bei Links handelt es sich um symbolische Verweise auf andere Dateien&lt;br /&gt;
&lt;br /&gt;
'''Softlink'''&lt;br /&gt;
Ein Softlink ist eine Datei die nur auf den Namen einer anderen Datei verweist. Wenn die Originaldatei gelöscht wird, zeigt &lt;br /&gt;
der Link ins Leere. &lt;br /&gt;
&lt;br /&gt;
 ln -s datei softlink&lt;br /&gt;
&lt;br /&gt;
{| border=1 cellpadding=2&lt;br /&gt;
| Vorteile&lt;br /&gt;
| Symbolische Links können auch auf Verzeichnisse angelegt werden&amp;lt;br&amp;gt;Sie sind partitionsübergreifend&amp;lt;br&amp;gt;Man kann sie auf Dateien anlegen, die noch nicht existieren&lt;br /&gt;
|-&lt;br /&gt;
| Nachteile&lt;br /&gt;
| Wenn das Original gelöscht ist, ist kein Zugriff mehr möglich&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Beispiel&lt;br /&gt;
 root@zero:~# ln -s text verweis&lt;br /&gt;
 root@zero:~# ls -l verweis&lt;br /&gt;
 lrwxrwxrwx 1 root root 4 2009-06-18 15:48 verweis -&amp;gt; text&lt;br /&gt;
&lt;br /&gt;
'''Hardlinks'''&lt;br /&gt;
 ln datei hardlink&lt;br /&gt;
Eigentlich ist jede Datei ein Hardlink. Ein Hardlink ist ein Verzeichniseintrag,&lt;br /&gt;
der auf eine Inode verweist. Beim Erzeugen einer Datei verweist ein Eintrag auf&lt;br /&gt;
eine Inode. Man kann dann weitere Verweise erzeugen. Der Linkcounter wird&lt;br /&gt;
jeweils um 1 erhöht. Beim Löschen einer Datei wird er jeweils um 1 reduziert.&lt;br /&gt;
Wird der Wert 0 erreicht, ist die Datei gelöscht.&lt;br /&gt;
{| border=1 cellpadding=2&lt;br /&gt;
| Vorteile&lt;br /&gt;
|Zugriff auf die Daten, selbst wenn das Orginal gelöscht ist.&lt;br /&gt;
|-&lt;br /&gt;
|Nachteile&lt;br /&gt;
|Man kann keine Hardlinks auf Verzeichnisse anlegen.&lt;br /&gt;
Ist nur innerhalb einer Partion möglich.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Beispiel&lt;br /&gt;
 root@zero:~# touch 1&lt;br /&gt;
 root@zero:~# echo &amp;quot;text&amp;quot; &amp;gt; 1&lt;br /&gt;
 root@zero:~# ln 1 2&lt;br /&gt;
 root@zero:~# more 2&lt;br /&gt;
 text&lt;br /&gt;
 root@zero:~# echo &amp;quot;doch kein text&amp;quot; &amp;gt; 1&lt;br /&gt;
 root@zero:~# more 1&lt;br /&gt;
 doch kein text&lt;br /&gt;
 root@zero:~# more 2&lt;br /&gt;
 doch kein text&lt;br /&gt;
&lt;br /&gt;
Weitere Optionen:&lt;br /&gt;
 -b sichert Dateien, statt sie zu überschreiben &lt;br /&gt;
 -f Überschreibt bestehende, gleichnamige Dateien&lt;br /&gt;
 -i fragt vor dem Überschreiben nach Bestätigung&lt;br /&gt;
 -v ausführliche Meldungen&lt;br /&gt;
Softlink mit dem Namen passwd im Homeverzeichnis angelegt&lt;br /&gt;
 xinux@zero:~$ ln -vs /etc/passwd .&lt;br /&gt;
 „./passwd“ -&amp;gt; „/etc/passwd“&lt;br /&gt;
Softlink mit dem Namen passwd im Homeverzeichnis angelegt(Original exestiert nicht) &lt;br /&gt;
 xinux@zero:~$ ln -vs /etc/hund .&lt;br /&gt;
 „./hund“ -&amp;gt; „/etc/hund“&lt;br /&gt;
Hardlink mit dem Namen hosts im Homeverzeichnis angelegt&lt;br /&gt;
  xinux@zero:~$ ln -v /etc/hosts .&lt;br /&gt;
 „./hosts“ =&amp;gt; „/etc/hosts“&lt;br /&gt;
Auf eine nicht existierende Datei kann kein Hardlink angelegt werden!&lt;br /&gt;
 xinux@zero:~$ ln -v /etc/katze .&lt;br /&gt;
 ln: Zugriff auf „/etc/katze“: No such file or directory&lt;br /&gt;
&lt;br /&gt;
==Shellsonderzeichen==&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot; cellpadding=&amp;quot;2&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
|;&lt;br /&gt;
|Trenne Kommandos&lt;br /&gt;
|-&lt;br /&gt;
|. oder source&lt;br /&gt;
|Ausführen wie in aktueller Shell&lt;br /&gt;
|-&lt;br /&gt;
|#&lt;br /&gt;
|Kommentar&lt;br /&gt;
|-&lt;br /&gt;
|&amp;amp;&lt;br /&gt;
|Programm im Hintergrund starten &lt;br /&gt;
|-&lt;br /&gt;
|&amp;amp;&amp;amp;&lt;br /&gt;
|UND -Ausführung  (wenn links wahr dann führe rechts aus)&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;nowiki&amp;gt;|&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
|STOUT von links wird zu STDIN von rechts &lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;nowiki&amp;gt;||&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
|ODER -Ausführung (wenn links falsch dann führe rechts aus)&lt;br /&gt;
|-&lt;br /&gt;
|*&lt;br /&gt;
|steht für beliebig viel Zeichen auch 0 &lt;br /&gt;
|-&lt;br /&gt;
|?&lt;br /&gt;
|steht für genau ein Zeichen &lt;br /&gt;
|-&lt;br /&gt;
|[abc]&lt;br /&gt;
|steht für eins der Zeichen in [ ] hier a b oder c &lt;br /&gt;
|-&lt;br /&gt;
|[ausdruck] &lt;br /&gt;
|Andere Schreibweis für test &lt;br /&gt;
|-&lt;br /&gt;
|~&lt;br /&gt;
|das Homeverzeichnis&lt;br /&gt;
|-&lt;br /&gt;
|&amp;gt;    und    &amp;gt;&amp;gt;&lt;br /&gt;
|leite in Datei um   &amp;gt;  überschreibe     &amp;gt;&amp;gt; hänge an &lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;&lt;br /&gt;
|lesen aus Datei &lt;br /&gt;
|-&lt;br /&gt;
|2&amp;gt;&amp;amp;1&lt;br /&gt;
|leite STDERR auf STDOUT&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;&amp;lt; ende&lt;br /&gt;
|Lesen aus Datei (Heredokument)&lt;br /&gt;
|-&lt;br /&gt;
|(...)&lt;br /&gt;
|Alles inhalb von ( ) wird als Subshell ausgeführt&lt;br /&gt;
|-&lt;br /&gt;
|{...}&lt;br /&gt;
|Gruppieren von Komandos &lt;br /&gt;
|-&lt;br /&gt;
|{ ,  ,  , }&lt;br /&gt;
|Zeichenketten zusammensetzen &lt;br /&gt;
|-&lt;br /&gt;
|$&lt;br /&gt;
|Inhalt von Variablen ausgeben $SUX&lt;br /&gt;
|-&lt;br /&gt;
|$* oder $@&lt;br /&gt;
|Liste der übergebenen Parameter&lt;br /&gt;
|-&lt;br /&gt;
|$# &lt;br /&gt;
|Anzahl der übergebenen Parameter &lt;br /&gt;
|-&lt;br /&gt;
|$0&lt;br /&gt;
|Name des Shellprogramms &lt;br /&gt;
|-&lt;br /&gt;
|$?&lt;br /&gt;
|Rückgabewert des letzten Kommandos &lt;br /&gt;
|-&lt;br /&gt;
|$!  und  $$&lt;br /&gt;
|PID des  $!  = letzten Hintergrund  -  , $$ = aktuellen Prozess&lt;br /&gt;
|-&lt;br /&gt;
|$1 ..$9&lt;br /&gt;
|Parameter 1 bis 9 &lt;br /&gt;
|-&lt;br /&gt;
|$() oder `  `&lt;br /&gt;
|Kommandosubstition&lt;br /&gt;
|-&lt;br /&gt;
|${ }&lt;br /&gt;
|Funktion zur Manipulation von Zeichenketten &lt;br /&gt;
|-&lt;br /&gt;
|$(( )) oder $[ ]&lt;br /&gt;
|Arithmetische Berechnung &lt;br /&gt;
|-&lt;br /&gt;
|&amp;quot;...&amp;quot;&lt;br /&gt;
|Entwertung der Sonderzeichen ausser $ ' \&lt;br /&gt;
|-&lt;br /&gt;
|'...'&lt;br /&gt;
|Entwertung sämtlicher Sonderzeichen ausser ' selbst&lt;br /&gt;
|-&lt;br /&gt;
|\  &lt;br /&gt;
|Entwertung des folgenden Sonderzeichens &lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==Prozesse==&lt;br /&gt;
===Was ist ein Prozess?===&lt;br /&gt;
Ein Prozess setzt sich aus zwei Teilen zusammen:&lt;br /&gt;
&lt;br /&gt;
1.Programm, das in den Hauptspeicher geladen wurde&lt;br /&gt;
&lt;br /&gt;
2.Prozessumgebung &lt;br /&gt;
&lt;br /&gt;
Unter einem Prozess versteht man ein Programm (binär), das in den Hauptspeicher&lt;br /&gt;
geladen wurde. Also nicht das Program selbst, das auf der Festplatte liegt ist der&lt;br /&gt;
Prozess, sondern es wird erst durch das Laden in den Hauptspeicher dazu.&lt;br /&gt;
Normalerweise liegt ein Programm als ausführbare Datei irgendwo auf der&lt;br /&gt;
Festplatte oder auf Diskette. Ob es sich bei dem Programm um eine binäre Datei&lt;br /&gt;
handelt, kann man mit dem Befehl '' file '' feststellen.&lt;br /&gt;
 &lt;br /&gt;
 root@zero:~# file /bin/mkdir&lt;br /&gt;
 /bin/mkdir: ELF 32-bit LSB executable, Intel 80386, version 1 (SYSV), dynamically linked (uses shared libs), for GNU/Linux 2.6.8, stripped&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Die Datei liegt im Maschinencode vor und kann in den Hauptspeicher geladen&lt;br /&gt;
werden. Sobald dies geschehen ist, kann der Rechner diesen Maschinencode&lt;br /&gt;
abarbeiten (ausführen).&lt;br /&gt;
&lt;br /&gt;
Da aber ein Programm nicht direkt auf die Hardware zugreifen soll, muss es vom&lt;br /&gt;
Betriebsystem kontrolliert werden. Das Betriebssystem liegt logisch gesehen&lt;br /&gt;
zwischen Hardware und Anwendung. Das Betriebssystem ordnet jedem Prozess&lt;br /&gt;
verschiedene Kenndaten zu, um die Prozesse verwalten zu können. Alle&lt;br /&gt;
Kenndaten, die einem Prozess zugeordnet sind, nennt man die&lt;br /&gt;
Prozessumgebung.Wenn man in der Shell ein Kommando eingibt, wird ein Prozess&lt;br /&gt;
kreiert. Natürlich ist die Shell selbst auch ein Prozess. Ein Prozess kann aber&lt;br /&gt;
genauso gut ein Serverprozess (Dienst) sein, z.B. Apache.&lt;br /&gt;
Ein wesentliches Merkmal eines Prozesses ist die Prozesskommunikation. Über im&lt;br /&gt;
Betriebssystem implementierte Methoden ist es möglich, dass verschiedene&lt;br /&gt;
Prozesse Signale und Daten untereinander austauschen können.&lt;br /&gt;
Dadurch wird auch dem Benutzer ermöglicht, einem Prozeß bestimmte Signale zu&lt;br /&gt;
senden bzw. auf den Status eines Prozesses Einfluss zu nehmen.&lt;br /&gt;
&lt;br /&gt;
===Prozesstabelle (Anzeige mit ps)===&lt;br /&gt;
Da zu jedem Prozess Kenndaten geführt werden, müssen diese auch irgendwo&lt;br /&gt;
festgehalten werden. Das geschieht in der sogenannten Prozesstabelle.&lt;br /&gt;
&lt;br /&gt;
Kenndaten der Prozesse (Auswahl):&lt;br /&gt;
* F Flags (z.B. ausgelagert; Systemprozess; Trace,...)&lt;br /&gt;
* UID Nutzer, mit dessen Rechten der Prozess ausgeführt wird&lt;br /&gt;
* PID Prozess - ID. Diese Nummer gibt eine eindeutige Prozess - Nummer&lt;br /&gt;
an. Sie wird vom System automatisch beim Starten des Prozesses&lt;br /&gt;
vergeben und ist für die Laufzeit eindeutig.&lt;br /&gt;
* PPID Prozessnumer der Eltern-Prozesses&lt;br /&gt;
* PRI Priorität eines Prozesses; je niedriger der Wert ist, desto besser&lt;br /&gt;
* NI ist der Nicewert des Prozesses; Nice erniedrigt den Grundwert&lt;br /&gt;
der Priorität des Prozesses und gibt damit Prozessorzeit für andere&lt;br /&gt;
Prozesse frei.&lt;br /&gt;
* SIZE Speichergröße des Prozesses inklusive Stack (eine Art Zwischenspeicher)&lt;br /&gt;
* RSS Verbrauch an physischen Speicher&lt;br /&gt;
* WCHAN ist der Name der Kernerlfunktion, in der der Prozess schläft&lt;br /&gt;
* STAT Status des Prozesses&lt;br /&gt;
R läuft       S schlafend     D nicht störbarer Schlaf&lt;br /&gt;
T angehalten  Z Zombie        W der Prozess belegt keine Seiten&lt;br /&gt;
* TIME Bisland benötigte Prozessorzeit&lt;br /&gt;
* SIZE ist die Größe von Text, Daten und Stack&lt;br /&gt;
* TTY die Nummer des kontrollierenden Teminal; wenn hier ein ? steht,&lt;br /&gt;
handelt es sich um einen Dämon oder Serverprozess.&lt;br /&gt;
* COMMAND Angabe des Prozesses selbst. Dies ist meist der Programmname.&lt;br /&gt;
&lt;br /&gt;
Weiteres&lt;br /&gt;
* GID Gruppe, unter der der Prozess läuft&lt;br /&gt;
* Verweis auf das aktuellen Arbeitsverzeichnis&lt;br /&gt;
* Um mit relativen Pfadangaben arbeiten zu können braucht man diesen Eintrag&lt;br /&gt;
* Tabelle mit Verweisen auf aktuell geöffnete Dateien&lt;br /&gt;
* 3 sind automatisch geöffnet Standardeingabe, Standardausgabe und&lt;br /&gt;
Standardfehlerkanal&lt;br /&gt;
&lt;br /&gt;
Beispiel&lt;br /&gt;
 root@zero:~# ps -l&lt;br /&gt;
 F S   UID   PID  PPID  C PRI  NI ADDR SZ WCHAN  TTY          TIME CMD&lt;br /&gt;
 4 R     0 18639 18631  0  80   0 -  1080 -      pts/0    00:00:00 bash&lt;br /&gt;
 0 R     0 25904 18639  0  80   0 -   635 -      pts/0    00:00:00 ps&lt;br /&gt;
&lt;br /&gt;
===Eltern und Kinder===&lt;br /&gt;
Jeder Prozess kann weitere Prozesse erzeugen. Die erzeugten Prozesse bezeichnet&lt;br /&gt;
man als Kindprozesse. Jeder Kindprozess weiß anhand der PID, woher er stammt.&lt;br /&gt;
&lt;br /&gt;
Alle Prozesse sind von einem anderen Prozess gestartet worden, mit Ausnahme&lt;br /&gt;
des Pseudoprozesses (noch im Kernel beim Starten erzeugter Prozess). Dieser hat&lt;br /&gt;
die Prozessnummer 0. Er hat die Aufgabe, den Init Prozess ( /sbin/init die Nummer&lt;br /&gt;
1) zu starten, der in System V alle anderen Prozesse direkt oder über seine Kind-&lt;br /&gt;
prozesse startet. (init wird konfiguriert durch die /etc/inittab)&lt;br /&gt;
&lt;br /&gt;
Es gibt zwei Arten wie ein Prozess gestartet werden kann:&lt;br /&gt;
&lt;br /&gt;
# Fork und Exec: Prozessumgebung wird dupliziert, der neue Prozess bekommt eine eigene neue PID&lt;br /&gt;
# Exec: Alter Prozess wird durch neuen Prozess überladen (geht mit dem shell-buildin exec)&lt;br /&gt;
&lt;br /&gt;
'''Rechte auf Objekte UID GID'''&lt;br /&gt;
Ob ein Prozess auf eine Datei zugreifen kann, entscheidet der Kernel anhand der&lt;br /&gt;
Zugriffssrechte, die auf der Datei gesetzt sind. Er checkt anhand der UID und GID&lt;br /&gt;
des Prozesses, ob es erlaubt ist. Mit dieser Technik wird letztendlich geprüft, was&lt;br /&gt;
ein User darf, und was nicht.&lt;br /&gt;
&lt;br /&gt;
===Rechenzeit und Priorität===&lt;br /&gt;
Da auch bei Prozessen eine Gerechtigkeit herschen muss, muss eine Instanz&lt;br /&gt;
darüber entscheiden wie lange ein Prozess Rechenzeit verbrauchen darf.&lt;br /&gt;
Folgende Kenndaten werden dazu benötigt&lt;br /&gt;
* clocktick = Zeiteinheit&lt;br /&gt;
* n = Faktor über den Kernel einstellbar&lt;br /&gt;
* slice = n &amp;lt;nowiki&amp;gt;*&amp;lt;/nowiki&amp;gt; clocktick&lt;br /&gt;
* agingtime = weitere Zeiteinheit über den Kernel einstellbar&lt;br /&gt;
&lt;br /&gt;
Es wird davon ausgegangen das der Prozess mit der niedrigsten Priorität gerade&lt;br /&gt;
rechnet. Pro clocktick erhöht sich die Priorität dieses Prozesses um eins.&lt;br /&gt;
&lt;br /&gt;
Jetzt können 3 Situationen eintreten die alle dazu führen das der Scheduler&lt;br /&gt;
aufgerufen wird.&lt;br /&gt;
&lt;br /&gt;
# Prozess blockiert wegen einer Ausgabe oder Eingabe.&lt;br /&gt;
# Gibt Rechenzeit freiwillig ab.&lt;br /&gt;
# Der Slice endet.&lt;br /&gt;
&lt;br /&gt;
Der Aufruf des Schedulers bewirkt das der Prozess mit der niedrigsten Priorität&lt;br /&gt;
gescheduled wird, er also nun rechnen darf. Nach Ablauf der agingtime werden&lt;br /&gt;
nun die Prozesse &amp;quot;gealtert&amp;quot;. Das geschieht nach folgender Formel&lt;br /&gt;
&lt;br /&gt;
Neue Priorität = Alte Priorität / 2 + Nicewert&lt;br /&gt;
&lt;br /&gt;
Der User hat die Möglichkeit, über den sogenannten Nicewert den Grundwert für&lt;br /&gt;
einen Prozess zu senken. Der Prozess braucht dann länger für seine Abarbeitung.&lt;br /&gt;
Er verhält sich somit netter zu den anderen Prozessen. Normale User können nur&lt;br /&gt;
netter werden, der Systemverwalter kann auch nicht netter (gemeiner) werden. Der&lt;br /&gt;
Bereich liegt zwischen 19 (sehr nett) bis 0 (weniger nett) für die User, und 19 bis&lt;br /&gt;
-20 für root.&lt;br /&gt;
&lt;br /&gt;
[[Image:pri.png]]&lt;br /&gt;
&lt;br /&gt;
'''Signale'''&lt;br /&gt;
&lt;br /&gt;
Mit den Kommando kill und killall kann man Prozessen Signale schicken&lt;br /&gt;
&lt;br /&gt;
 kill -Signalnummer PID &lt;br /&gt;
&lt;br /&gt;
Signalnummer&lt;br /&gt;
{| border=1 cellpadding=2&lt;br /&gt;
!Signalname&lt;br /&gt;
!Wert&lt;br /&gt;
!Aktion&lt;br /&gt;
|-&lt;br /&gt;
|SIGHUP&lt;br /&gt;
|1&lt;br /&gt;
|Neuinitialisierung eines Prozesses&lt;br /&gt;
|-&lt;br /&gt;
|SIGINT&lt;br /&gt;
|2&lt;br /&gt;
|Interrupt-Signal von der Tastatur (STRG+c)&lt;br /&gt;
|-&lt;br /&gt;
|SIGQUIT&lt;br /&gt;
|3&lt;br /&gt;
|Interrupt-Signal von der Tastatur (STRG+c) mit Dump&lt;br /&gt;
|-&lt;br /&gt;
|SIGKILL&lt;br /&gt;
|9&lt;br /&gt;
|unwiderrufliches Beendigungssignal (Töten)&lt;br /&gt;
|-&lt;br /&gt;
|SIGSEGV&lt;br /&gt;
|11&lt;br /&gt;
|Ungültige Speicherreferenz (bedeutet oft auf defekten Speicher)&lt;br /&gt;
|-&lt;br /&gt;
|SIGTERM &lt;br /&gt;
|15&lt;br /&gt;
|Beendigungssignal (geöffnete Dateien werden geschlossen)&lt;br /&gt;
|-&lt;br /&gt;
|SIGCONT &lt;br /&gt;
|18&lt;br /&gt;
|Weiterfahren, wenn gestoppt&lt;br /&gt;
|-&lt;br /&gt;
|SIGSTOP&lt;br /&gt;
|19&lt;br /&gt;
|Prozessstop&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Beispiel&lt;br /&gt;
 root@zero:~# kill -1 7562&lt;br /&gt;
&lt;br /&gt;
===Programme im Zusammenhang mit Prozessen===&lt;br /&gt;
====ps: Zeigt die Prozesse mit ihrem Status an====&lt;br /&gt;
 root@zero:~# ps&lt;br /&gt;
  PID TTY          TIME CMD&lt;br /&gt;
 14134 pts/0    00:00:00 bash&lt;br /&gt;
 14149 pts/0    00:00:00 ps&lt;br /&gt;
&lt;br /&gt;
 root@zero:~# ps -elf | grep apache&lt;br /&gt;
 1 S root      5738     1  0  80   0 -  5461 select Jun16 ?        00:00:00 /usr/sbin/apache2 -k start&lt;br /&gt;
 5 S www-data  5739  5738  0  80   0 -  5581 inet_c Jun16 ?        00:00:00 /usr/sbin/apache2 -k start&lt;br /&gt;
 5 S www-data  5742  5738  0  80   0 -  5461 inet_c Jun16 ?        00:00:00 /usr/sbin/apache2 -k start&lt;br /&gt;
 5 S www-data  5743  5738  0  80   0 -  5461 inet_c Jun16 ?        00:00:00 /usr/sbin/apache2 -k start&lt;br /&gt;
 5 S www-data  5745  5738  0  80   0 -  5461 inet_c Jun16 ?        00:00:00 /usr/sbin/apache2 -k start&lt;br /&gt;
 5 S www-data  5746  5738  0  80   0 -  5461 inet_c Jun16 ?        00:00:00 /usr/sbin/apache2 -k start&lt;br /&gt;
 0 S root     14153 14134  0  80   0 -   837 pipe_w 16:59 pts/0    00:00:00 grep apache&lt;br /&gt;
&lt;br /&gt;
Option 	Beschreibung&lt;br /&gt;
*l langes Format&lt;br /&gt;
*u 	zeige für jeden Prozess Besitzer und Startzeit an&lt;br /&gt;
*j 	Jobs-Format: Zeige PGID und SID an&lt;br /&gt;
*s 	Informationen über Signale ausgeben&lt;br /&gt;
*m 	Speicher-Informationen anzeigen&lt;br /&gt;
*f 	Baumstruktur der Prozesse anzeigen (ähnlich pstree)&lt;br /&gt;
*a 	alle Prozesse (jedes Benutzers) anzeigen&lt;br /&gt;
*x 	kontrollierendes Terminal nicht anzeigen&lt;br /&gt;
*e 	Für den Prozess gültige Umgebungsvariablen mit anzeigen (sinnvollerweise mit mehreren Optionen »w« anwenden, um die Ausgabe nicht am Zeilenende abzuschneiden)&lt;br /&gt;
*w 	längere Ausgabe. »w« kann mehrfach verwendet werden, um die maximale Länge um je eine Zeile zu vergrößern&lt;br /&gt;
*h 	Header mit Feldbezeichnern unterdrücken&lt;br /&gt;
*r 	nur laufende Prozesse ausgeben&lt;br /&gt;
*n 	User-ID statt User-Name ausgeben&lt;br /&gt;
*txx 	nur Prozesse ausgeben, die vom angegebenen Terminal kontrolliert werden. xx kann entweder einer der Terminal-Gerätenamen unter /dev (z.B. tty1) oder die entsprechende Kurzbezeichnung ohne »tty« (z.B. 1) sein.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
====nice: Lässt ein Programm mit verändertem Grundwert der Priorität laufen====&lt;br /&gt;
 root@zero:~# nice&lt;br /&gt;
 0&lt;br /&gt;
 root@zero:~# nice -n 9 bash&lt;br /&gt;
 root@zero:~# nice&lt;br /&gt;
 9&lt;br /&gt;
 root@zero:~#&lt;br /&gt;
&lt;br /&gt;
====renice: Ändert den Grundwert der Priorität eines laufenden Prozesses====&lt;br /&gt;
 root@zero:~# renice 10 5742&lt;br /&gt;
 5742: Alte Priorität: 0, neue Priorität: 10&lt;br /&gt;
&lt;br /&gt;
====top: Zeigt die Prozesse mit ihrem Status an (Abbrechen mit q)====&lt;br /&gt;
 root@zero:~# top&lt;br /&gt;
 top - 08:51:08 up 20 min,  1 user,  load average: 0.00, 0.02, 0.06&lt;br /&gt;
 Tasks:  93 total,   1 running,  92 sleeping,   0 stopped,   0 zombie&lt;br /&gt;
 Cpu(s):  1.6%us,  3.1%sy,  0.1%ni, 84.9%id, 10.2%wa,  0.0%hi,  0.2%si,  0.0%st&lt;br /&gt;
 Mem:    509504k total,   273948k used,   235556k free,    11312k buffers&lt;br /&gt;
 Swap:   321260k total,        0k used,   321260k free,   118380k cached&lt;br /&gt;
 &lt;br /&gt;
  PID USER      PR  NI  VIRT  RES  SHR S %CPU %MEM    TIME+  COMMAND                                                                       &lt;br /&gt;
 2208 mysql     20   0  125m  21m 5552 S  1.7  4.2   0:02.29 mysqld                                                                        &lt;br /&gt;
 3201 root      20   0  2444 1064  828 R  1.7  0.2   0:00.04 top                                                                           &lt;br /&gt;
    1 root      20   0  1908  780  564 S  0.0  0.2   0:02.19 init                                                                          &lt;br /&gt;
    2 root      15  -5     0    0    0 S  0.0  0.0   0:00.00 kthreadd                                                                      &lt;br /&gt;
    3 root      RT  -5     0    0    0 S  0.0  0.0   0:00.00 migration/0                                                                   &lt;br /&gt;
    4 root      15  -5     0    0    0 S  0.0  0.0   0:00.03 ksoftirqd/0                                                                   &lt;br /&gt;
    5 root      RT  -5     0    0    0 S  0.0  0.0   0:00.00 watchdog/0                                                                    &lt;br /&gt;
    6 root      15  -5     0    0    0 S  0.0  0.0   0:00.04 events/0                                                                      &lt;br /&gt;
    7 root      15  -5     0    0    0 S  0.0  0.0   0:00.00 khelper                                                                       &lt;br /&gt;
    8 root      RT  -5     0    0    0 S  0.0  0.0   0:00.00 kstop/0                                                                       &lt;br /&gt;
    9 root      15  -5     0    0    0 S  0.0  0.0   0:00.00 kintegrityd/0                                                                 &lt;br /&gt;
   10 root      15  -5     0    0    0 S  0.0  0.0   0:00.03 kblockd/0                                                                     &lt;br /&gt;
   11 root      15  -5     0    0    0 S  0.0  0.0   0:00.00 kacpid                                                                        &lt;br /&gt;
   12 root      15  -5     0    0    0 S  0.0  0.0   0:00.00 kacpi_notify                                                                  &lt;br /&gt;
   13 root      15  -5     0    0    0 S  0.0  0.0   0:00.00 cqueue                                                                        &lt;br /&gt;
   14 root      15  -5     0    0    0 S  0.0  0.0   0:00.53 ata/0                                                                         &lt;br /&gt;
   15 root      15  -5     0    0    0 S  0.0  0.0   0:00.00 ata_aux&lt;br /&gt;
&lt;br /&gt;
Kommandos&lt;br /&gt;
&lt;br /&gt;
*h - Hilfe&lt;br /&gt;
*u - User&lt;br /&gt;
*k - Kill&lt;br /&gt;
*r - Renice&lt;br /&gt;
*d - Delay (Default 3s)&lt;br /&gt;
*n - Tasks (Default unbegrenzt)&lt;br /&gt;
*W - Schreibe aktuelle Konfiguration in Datei&lt;br /&gt;
*q - Quit&lt;br /&gt;
&lt;br /&gt;
====pstree: Zeigt die Prozesse als Baumstruktur====&lt;br /&gt;
 root@zero:~# pstree&lt;br /&gt;
 init─┬─NetworkManager&lt;br /&gt;
      ├─acpid&lt;br /&gt;
      ├─apache2───5*[apache2]&lt;br /&gt;
      ├─atd&lt;br /&gt;
      ├─bluetoothd&lt;br /&gt;
      ├─console-kit-dae───63*[{console-kit-dae}]&lt;br /&gt;
      ├─cron&lt;br /&gt;
      ├─cupsd&lt;br /&gt;
      ├─dbus-daemon&lt;br /&gt;
      ├─dd&lt;br /&gt;
      ├─gdm───gdm─┬─Xorg&lt;br /&gt;
      │           └─gdmgreeter&lt;br /&gt;
      ├─6*[getty]&lt;br /&gt;
      ├─hald───hald-runner─┬─hald-addon-acpi&lt;br /&gt;
      │                    ├─hald-addon-inpu&lt;br /&gt;
      │                    └─2*[hald-addon-stor]&lt;br /&gt;
      ├─klogd&lt;br /&gt;
      ├─nm-system-setti&lt;br /&gt;
      ├─nmbd&lt;br /&gt;
      ├─nscd───11*[{nscd}]&lt;br /&gt;
      ├─portmap&lt;br /&gt;
      ├─rpc.statd&lt;br /&gt;
      ├─slapd───2*[{slapd}]&lt;br /&gt;
      ├─smbd───smbd&lt;br /&gt;
      ├─sshd───sshd───bash───bash───pstree&lt;br /&gt;
      ├─syslogd&lt;br /&gt;
      ├─system-tools-ba&lt;br /&gt;
      ├─udevd&lt;br /&gt;
      ├─winbindd─┬─winbindd───winbindd&lt;br /&gt;
      │          └─3*[winbindd]&lt;br /&gt;
      └─wpa_supplicant&lt;br /&gt;
&lt;br /&gt;
===Jobs===&lt;br /&gt;
Unter einem Job versteht man ein Programm, welches man von der Shell gelöst&lt;br /&gt;
hat. D. h. man kann ganz normal weiter arbeiten und der Job verrichtet seinen&lt;br /&gt;
Dienst im Hintergrund. Man kann jederzeit zu diesem Job wieder Kontakt&lt;br /&gt;
aufnehmen.&lt;br /&gt;
&lt;br /&gt;
Ein Job kann auf 2 Arten gestarten werden:&lt;br /&gt;
&lt;br /&gt;
# Durch Anhängen des &amp;amp; Zeichens beim Programmstart&lt;br /&gt;
 root@zero:~# tail -f /var/log/messages &amp;amp;&lt;br /&gt;
 Jun 19 06:59:31 zero -- MARK --&lt;br /&gt;
 Jun 19 07:19:31 zero -- MARK --&lt;br /&gt;
 Jun 19 07:39:32 zero -- MARK --&lt;br /&gt;
 Jun 19 07:44:57 zero syslogd 1.5.0#5ubuntu3: restart.&lt;br /&gt;
 Jun 19 07:59:32 zero -- MARK --&lt;br /&gt;
 Jun 19 08:19:32 zero -- MARK --&lt;br /&gt;
 Jun 19 08:39:32 zero -- MARK --&lt;br /&gt;
 Jun 19 08:59:32 zero -- MARK --&lt;br /&gt;
 Jun 19 09:19:33 zero -- MARK --&lt;br /&gt;
 Jun 19 09:39:33 zero -- MARK --&lt;br /&gt;
 [3] 27421&lt;br /&gt;
&lt;br /&gt;
# Durch Stoppen des Prozesses durch Drücken von Strg-Z und in den Hintergrund schicken mit %n (n ist die Jobnummer)&lt;br /&gt;
 root@zero:~# watch cat /proc/cpuinfo&lt;br /&gt;
 Strg-Z&lt;br /&gt;
 [4]+  Stopped                 watch cat /proc/cpuinfo&lt;br /&gt;
 root@zero:~# bg %4&lt;br /&gt;
 [4]+ watch cat /proc/cpuinfo &amp;amp;&lt;br /&gt;
&lt;br /&gt;
Anweisungen im Zusammenhang mit Jobs (n ist die Jobnummer)&lt;br /&gt;
* bg %n : Einen Job in den Hintergrund stellen (wie oben)&lt;br /&gt;
* fg %n : Einen Job in den Vordergrund holen&lt;br /&gt;
 root@zero:~# fg %4&lt;br /&gt;
 watch cat /proc/cpuinfo&lt;br /&gt;
&lt;br /&gt;
* jobs : Aktive Jobs ausgeben&lt;br /&gt;
&lt;br /&gt;
 root@zero:~# jobs&lt;br /&gt;
 [1]   Running                 tail -f /var/log/syslog &amp;amp;&lt;br /&gt;
 [2]   Running                 tail -f /var/log/syslog &amp;amp;&lt;br /&gt;
 [3]-  Running                 tail -f /var/log/messages &amp;amp;&lt;br /&gt;
 [4]+  Stopped                 watch cat /proc/cpuinfo&lt;br /&gt;
&lt;br /&gt;
* Strg-Z : Einen Vordergrund-Job vorübergehend anhalten&lt;br /&gt;
* kill -STOP %n : Unterbricht Job im Hintergrund&lt;br /&gt;
 root@zero:~# kill -STOP %1&lt;br /&gt;
 root@zero:~# jobs&lt;br /&gt;
 [1]+  '''Stopped'''                 tail -f /var/log/syslog&lt;br /&gt;
 [2]   Running                 tail -f /var/log/syslog &amp;amp;&lt;br /&gt;
 [3]   Running                 tail -f /var/log/messages &amp;amp;&lt;br /&gt;
 [4]-  Stopped                 watch cat /proc/cpuinfo&lt;br /&gt;
* kill -CONT %n : Setzt den unterbrochenen Job im Hintergrund fort&lt;br /&gt;
root@zero:~# kill -CONT %1&lt;br /&gt;
root@zero:~# jobs&lt;br /&gt;
 [1]+  '''Running'''                 tail -f /var/log/syslog &amp;amp;&lt;br /&gt;
 [2]   Running                 tail -f /var/log/syslog &amp;amp;&lt;br /&gt;
 [3]   Running                 tail -f /var/log/messages &amp;amp;&lt;br /&gt;
 [4]-  Stopped                 watch cat /proc/cpuinfo&lt;br /&gt;
* kill -KILL %n : Tötet Job im Hintergrund&lt;br /&gt;
 root@zero:~# kill -KILL %1&lt;br /&gt;
 root@zero:~# jobs&lt;br /&gt;
 [1]+  '''Killed'''                  tail -f /var/log/syslog&lt;br /&gt;
 [2]   Running                 tail -f /var/log/syslog &amp;amp;&lt;br /&gt;
 [3]   Running                 tail -f /var/log/messages &amp;amp;&lt;br /&gt;
 [4]-  Stopped                 watch cat /proc/cpuinfo&lt;br /&gt;
 root@zero:~# jobs&lt;br /&gt;
 [2]   Running                 tail -f /var/log/syslog &amp;amp;&lt;br /&gt;
 [3]-  Running                 tail -f /var/log/messages &amp;amp;&lt;br /&gt;
 [4]+  Stopped                 watch cat /proc/cpuinfo&lt;br /&gt;
&lt;br /&gt;
Bedingungen, die zu Jobausführung eingehalten werden sollen:&lt;br /&gt;
* Der Job soll nicht auf den Bildschirm schreiben (Standardausgabe +Standardfehlerkanal).&lt;br /&gt;
* Er soll keine Eingaben vom Benutzer erwarten.&lt;br /&gt;
&lt;br /&gt;
==Suchen von Dateien==&lt;br /&gt;
===find===&lt;br /&gt;
 find ab_wo_wird_gesucht was_wird_gesucht aktion&lt;br /&gt;
 find [Pfad] [Bedingung] [Aktion]&lt;br /&gt;
&lt;br /&gt;
====Nach Namen====&lt;br /&gt;
 find [Pfad] '''-name''' [Name]&lt;br /&gt;
 &lt;br /&gt;
Finde alle Dateien mit Namen test ab dem Verzeichnis /home und gebe diese Zeilenweise aus&lt;br /&gt;
 root@zero:~# find /home -name test -print&lt;br /&gt;
 /home/xinux/test&lt;br /&gt;
 /home/test&lt;br /&gt;
&lt;br /&gt;
Wie oben, jedoch mit Namensanfang test&lt;br /&gt;
 root@zero:/home/xinux# find /home -name 'test*'&lt;br /&gt;
 /home/xinux/testdatei&lt;br /&gt;
 /home/xinux/test&lt;br /&gt;
 /home/test&lt;br /&gt;
&lt;br /&gt;
====Nach Benutzer(Eigentümer)====&lt;br /&gt;
 root@zero:/tmp# find /tmp/ '''-user''' xinux&lt;br /&gt;
 /tmp/datei&lt;br /&gt;
&lt;br /&gt;
====Nach Gruppe====&lt;br /&gt;
 root@zero:/tmp# find /tmp/ '''-group''' hacker&lt;br /&gt;
 /tmp/datei3&lt;br /&gt;
 /tmp/datei2&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
====Nach Typ====&lt;br /&gt;
Es wird nach Dateien anhand Ihrer Art gesucht:&lt;br /&gt;
 find [Pfad] '''-type''' [Typ] &lt;br /&gt;
Typ:&lt;br /&gt;
* f: Normale Dateien&lt;br /&gt;
 root@zero:~# find /tmp/ -type f&lt;br /&gt;
 /tmp/mbr.img&lt;br /&gt;
 /tmp/datei&lt;br /&gt;
 /tmp/zeugs&lt;br /&gt;
 /tmp/.X0-lock&lt;br /&gt;
* d: Verzeichnisse&lt;br /&gt;
 root@zero:~# find /var/log -type d&lt;br /&gt;
 /var/log&lt;br /&gt;
 /var/log/apache2&lt;br /&gt;
 /var/log/unattended-upgrades&lt;br /&gt;
 /var/log/apparmor&lt;br /&gt;
 /var/log/ConsoleKit&lt;br /&gt;
 /var/log/dist-upgrade&lt;br /&gt;
 /var/log/dist-upgrade/20090526-1052&lt;br /&gt;
 /var/log/cups&lt;br /&gt;
 /var/log/apt&lt;br /&gt;
 /var/log/fsck&lt;br /&gt;
 /var/log/samba&lt;br /&gt;
 /var/log/samba/cores&lt;br /&gt;
 /var/log/samba/cores/smbd&lt;br /&gt;
 /var/log/samba/cores/nmbd&lt;br /&gt;
 /var/log/samba/cores/winbindd&lt;br /&gt;
 /var/log/installer&lt;br /&gt;
 /var/log/gdm&lt;br /&gt;
 /var/log/news&lt;br /&gt;
* c: Char Devices (Zeichenorientierte Gerätedatei)&lt;br /&gt;
 root@zero:~# find / -type c&lt;br /&gt;
 /lib/udev/devices/kmem&lt;br /&gt;
 /lib/udev/devices/null&lt;br /&gt;
 /lib/udev/devices/console&lt;br /&gt;
 /lib/udev/devices/ppp&lt;br /&gt;
 /lib/udev/devices/net/tun&lt;br /&gt;
* b: Block Devices (Blockorientierte Gerätedatei)&lt;br /&gt;
* p: Benannte Pipe&lt;br /&gt;
* l: Links&lt;br /&gt;
* s: Sockets&lt;br /&gt;
&lt;br /&gt;
====Nach Modifikation====&lt;br /&gt;
Listet alle Dateien in /etc auf, die innerhalb von zwei Tagen modifiziert wurden&lt;br /&gt;
 root@zero:/var/log# find /etc/ -mtime 2 -print&lt;br /&gt;
 /etc/apache2&lt;br /&gt;
 /etc/apache2/mods-available&lt;br /&gt;
 /etc/apache2/conf.d&lt;br /&gt;
 /etc/apache2/sites-available&lt;br /&gt;
 /etc/bash_completion.d&lt;br /&gt;
 /etc/blkid.tab.old&lt;br /&gt;
 /etc/firefox-3.0/profile&lt;br /&gt;
 /etc/firefox-3.0/profile/chrome&lt;br /&gt;
 /etc/firefox-3.0/pref&lt;br /&gt;
 /etc/profile.d&lt;br /&gt;
 /etc/ufw/applications.d&lt;br /&gt;
 /etc/logrotate.d&lt;br /&gt;
 /etc/xulrunner-1.9&lt;br /&gt;
 /etc/blkid.tab&lt;br /&gt;
 /etc/cron.daily&lt;br /&gt;
 /etc/alternatives&lt;br /&gt;
 /etc/alternatives/x-www-browser&lt;br /&gt;
 /etc/alternatives/xulrunner&lt;br /&gt;
 /etc/gre.d&lt;br /&gt;
 /etc/hal/fdi/policy&lt;br /&gt;
 /etc/dbus-1/system.d&lt;br /&gt;
 /etc/udev/rules.d&lt;br /&gt;
&lt;br /&gt;
====Nach Größe====&lt;br /&gt;
Finde Dateien in /tmp, die größer als 100 MByte sind&lt;br /&gt;
 root@zero:/tmp# find /tmp/ -size +100M&lt;br /&gt;
 /tmp/datei&lt;br /&gt;
&lt;br /&gt;
Finde Dateien in /tmp, die kleiner als 100 KByte sind&lt;br /&gt;
 root@zero:/tmp# find /tmp/ -size -100k&lt;br /&gt;
 /tmp/&lt;br /&gt;
 /tmp/datei3&lt;br /&gt;
 /tmp/backup &lt;br /&gt;
 /tmp/datei2&lt;br /&gt;
 /tmp/.winbindd &lt;br /&gt;
 /tmp/.winbindd/pipe&lt;br /&gt;
 /tmp/mbr.img&lt;br /&gt;
 /tmp/zeugs&lt;br /&gt;
 /tmp/.ICE-unix&lt;br /&gt;
 /tmp/.X0-lock&lt;br /&gt;
 /tmp/datei1&lt;br /&gt;
 /tmp/.X11-unix&lt;br /&gt;
 /tmp/.X11-unix/X0&lt;br /&gt;
 /tmp/pulse-PKdhtXMmr18n&lt;br /&gt;
&lt;br /&gt;
====Nach Berechtigungen====&lt;br /&gt;
Finde Dateien in Home mit der Berechtigung 777 (-rwxrwxrwx)&lt;br /&gt;
 root@zero:/var# find /home/ -perm 777&lt;br /&gt;
 /home/samba&lt;br /&gt;
 /home/xinux/Examples&lt;br /&gt;
 /home/xinux/.pulse/1f0763ee4cf4c7e1d3c07fd149dda37b:runtime&lt;br /&gt;
 /home/test/Examples&lt;br /&gt;
&lt;br /&gt;
====Nach Zeit====&lt;br /&gt;
Modifiziert in der letzten Minute &lt;br /&gt;
 root@zero:~# find /var    -mmin -1&lt;br /&gt;
 /var/log/debug&lt;br /&gt;
 /var/log/kern.log&lt;br /&gt;
 /var/log/syslog&lt;br /&gt;
 /var/run/klogd/kmsg&lt;br /&gt;
&lt;br /&gt;
Modifiziert vor mehr als 9 Tagen&lt;br /&gt;
 root@zero:~# find /var    -mtime +9 &lt;br /&gt;
&lt;br /&gt;
Ausführen eines Befehls&lt;br /&gt;
 root@zero:~# find / -name &amp;quot;xinux?&amp;quot; -exec ls -l {} \;&lt;br /&gt;
&lt;br /&gt;
Ausführen eines Befehls mit Rückfrage&lt;br /&gt;
 root@zero:~# find / -name &amp;quot;xinux?&amp;quot; -ok  rm  {} \;&lt;br /&gt;
 &amp;lt; rm ... /tmp/xinux3 &amp;gt; ? y&lt;br /&gt;
 &amp;lt; rm ... /tmp/xinux2 &amp;gt; ? n&lt;br /&gt;
 &amp;lt; rm ... /tmp/xinux1 &amp;gt; ? y&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===locate===&lt;br /&gt;
Locate arbeitet über einen Index, der erstellt und aktualisiert werden muss. Aus diesem Grund kann locate teilweise nicht &lt;br /&gt;
akutell sein. Es ist immer schneller als find und es durchsucht immer das ganze Dateisystem. &lt;br /&gt;
 locate [Dateiname]&lt;br /&gt;
 &lt;br /&gt;
Lokalisiere die Datei wvdial.conf. Anmerkung: Der Stern wird beim Suchen automatisch hinzugefügt. Entspricht also&lt;br /&gt;
wvidal.conf*&lt;br /&gt;
 root@zero:~# locate wvdial.conf&lt;br /&gt;
 /etc/wvdial.conf&lt;br /&gt;
 /usr/share/man/man5/wvdial.conf.5.gz&lt;br /&gt;
 /var/lib/dpkg/info/wvdial.conffiles&lt;br /&gt;
 /var/lib/dpkg/info/wvdial.config&lt;br /&gt;
&lt;br /&gt;
Lokalisiere die Datei wvdial.conf und nur diese&lt;br /&gt;
 root@zero:~# locate -b '\wvdial.conf'&lt;br /&gt;
 /etc/wvdial.conf&lt;br /&gt;
&lt;br /&gt;
Aktualisieren des Indexes&lt;br /&gt;
 root@zero:~# updatedb&lt;br /&gt;
&lt;br /&gt;
==Wie wird ein Kommando lokalisiert==&lt;br /&gt;
Wenn die Shell alle Ersetzungen in der Kommandozeile vorgenommen und alle Umleitungen vorbereitet hat, ist der Zeitpunkt &lt;br /&gt;
gekommen, auf den der Anwender die ganze Zeit gewartet hat. Die Shell versucht das Kommando auszuführen. Dazu muss sie &lt;br /&gt;
es aber erst lokalisieren. Das erste passende Kommando wird ausgeführt.&lt;br /&gt;
&lt;br /&gt;
Als Kommandoname wird immer das erste Wort eines einfachen Kommandos erkannt. Ein Kommandoname kann mit Pfadnamen in &lt;br /&gt;
einem Verzeichnis (absolut oder relativ) angegeben werden. Die Shell erkennt dies an (mindestens) einem Slash `/' &lt;br /&gt;
im Kommandonamen. Wenn kein Verzeichnis angegeben ist, versucht die Shell selbst, das Kommando zu finden. Dazu wird &lt;br /&gt;
der Kommandoname zuerst in der Hashtabelle gesucht, dann wird er mit den Synonymen, mit den Scriptfunktionen und &lt;br /&gt;
schließlich mit den Shellfunktionen verglichen. &lt;br /&gt;
&lt;br /&gt;
Wird auf diese Weise kein Programm dieses Namens gefunden, werden alle in der PATH-Umgebungsvariablen aufgeführten &lt;br /&gt;
Verzeichnisse nach einer ausführbaren Datei dieses Namens durchsucht. Wird auch hier kein passendes Kommando gefunden, &lt;br /&gt;
gibt die Shell eine Fehlermeldung aus.&lt;br /&gt;
&lt;br /&gt;
===which und type===&lt;br /&gt;
====which====&lt;br /&gt;
which gibt die vollen Pfadnamen der Dateien aus, die bei Benutzung des angegebenen Befehls ausgeführt werden würden.&lt;br /&gt;
&lt;br /&gt;
 which [-a] Dateiname &lt;br /&gt;
&lt;br /&gt;
Optionen:&lt;br /&gt;
&lt;br /&gt;
* -a : Alle Treffer ausgeben, nicht nur den ersten&lt;br /&gt;
* --skip-dot : Verzeichnisse, die mit einem Punkt beginnen, auslassen&lt;br /&gt;
&lt;br /&gt;
Beispiel&lt;br /&gt;
 root@zero:~# which startx&lt;br /&gt;
 /usr/bin/startx&lt;br /&gt;
&lt;br /&gt;
====type====&lt;br /&gt;
Anzeigen der absoluten Pfadnamen von Befehlen, und ob sich diese Befehle in der Hash-Tabelle der aktuellen&lt;br /&gt;
Shell befinden.&lt;br /&gt;
&lt;br /&gt;
 type [Optionen] Befehle&lt;br /&gt;
&lt;br /&gt;
Beispiel&lt;br /&gt;
 root@zero:~# type ls&lt;br /&gt;
 ls is aliased to `ls --color=auto'&lt;br /&gt;
&lt;br /&gt;
Optionen:&lt;br /&gt;
&lt;br /&gt;
* -a : Alle vorkommenden Befehle werden ausgegeben, nicht nur das, welches aufgerufen werden würde&lt;br /&gt;
 root@zero:~# type '''-a''' ls&lt;br /&gt;
 ls is aliased to `ls --color=auto'&lt;br /&gt;
 ls is /bin/ls&lt;br /&gt;
&lt;br /&gt;
* -p : Anzeigen des Eintrags von Befehl in der Hash-Tabelle. Dieser Wert kann sich vom ersten Auftreten des Befehls in PATH&lt;br /&gt;
unterscheiden&lt;br /&gt;
 root@zero:~# type '''-p''' apache2&lt;br /&gt;
 /usr/sbin/apache2&lt;br /&gt;
&lt;br /&gt;
* -t : Anzeigen, ob Befehl ein Aliasname, ein Schlüsselwort, eine Funktion, ein eingebauter Befehl oder eine Datei ist&lt;br /&gt;
 root@zero:~# type '''-t''' apache2&lt;br /&gt;
 file&lt;/div&gt;</summary>
		<author><name>192.168.178.46</name></author>
	</entry>
	<entry>
		<id>https://www.xinux.net/index.php?title=Linux_Grundlagen&amp;diff=119</id>
		<title>Linux Grundlagen</title>
		<link rel="alternate" type="text/html" href="https://www.xinux.net/index.php?title=Linux_Grundlagen&amp;diff=119"/>
		<updated>2009-07-08T07:03:36Z</updated>

		<summary type="html">&lt;p&gt;192.168.178.46: /* top: Zeigt die Prozesse mit ihrem Status an (Abbrechen mit q) */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Einführung==&lt;br /&gt;
===Geschichte Unix===&lt;br /&gt;
====1969====&lt;br /&gt;
Am Anfang von Linux steht Multics, ein von Bell Laboratories geschaffenes &amp;quot;Betriebssystem&amp;quot;, &lt;br /&gt;
das noch mit Lochkarten arbeitete. Multics wird mit Unterstützung von AT&amp;amp;T und Western &lt;br /&gt;
Electric unter Mitarbeit von Ken Thompson und Dennis Ritchie weiterentwickelt. Obwohl sich &lt;br /&gt;
Bell Laboratories bald zurückzieht, gibt Thompson das Projekt nicht auf.  Zum Entwicklerteam &lt;br /&gt;
gehören auch Rudd Canaday und Brian Kernighan. Letzterer gibt 1970 dem Betriebssystem den Namen UNIX. &lt;br /&gt;
Thompson definiert 7 Richtlinien für UNIX:&lt;br /&gt;
 &lt;br /&gt;
# Hierarchische Anordnung der Dateisysteme&lt;br /&gt;
# Die Ausgabe von Daten an die Peripherie(-geräte) und Dateien soll gleich sein.&lt;br /&gt;
# Prozesse und Programme sollen miteinander kommunizieren.&lt;br /&gt;
# Multitasking (voneinander getrennte Prozesse)&lt;br /&gt;
# Persönliche Shell's&lt;br /&gt;
# Der Compiler soll für viele Programmiersprachen tauglich sein.&lt;br /&gt;
# Portabilität&lt;br /&gt;
&lt;br /&gt;
====1971====&lt;br /&gt;
Bis 1971 ist das für eine DEC PDP-7 geschriebene Unix als Version 1 auf eine PDP-11 portiert. Bis&lt;br /&gt;
zur Version 4 entwickelt Ritchie die Programmier- (Hoch-) Sprache C. Das in Assembler geschriebene&lt;br /&gt;
Unix wird fast völlig nach C übersetzt, wodurch zum erstenmal die geforderte Hardware-Unabhängigkeit&lt;br /&gt;
des Betriebssystems realisiert werden kann.&lt;br /&gt;
&lt;br /&gt;
====1975====&lt;br /&gt;
Da AT&amp;amp;T aufgrund vertraglicher Bindungen mit der US-Bundesregierung Unix nicht kommerziell vermarkten darf, stellt sie den Source Code für ein paar hundert Dollar den Universitäten, Lehr- und Forschungsanstalten zur Verfügung. Dies führt zu einer sehr dynamischen Entwicklung von Unix. 1975 wird die Version 6 als erstes UNIX-System veröffentlicht, die darauffolgende Version 7 wird sehr erfolgreich. Da es keine Standardisierung gibt, entwickeln bald verschiedenste Firmen ihr eigenes UNIX. Ab 1984 wird AT&amp;amp;T per Gerichtsbeschluss erlaubt, Unix zu vermarkten. AT&amp;amp;T verkauft sein Unix V und beginnt, sich um einen internationalen Standard von UNIX zu bemühen. &lt;br /&gt;
&lt;br /&gt;
====1984====&lt;br /&gt;
Durch Richard Stallman wird die Free Software Foundation (FSF) gegründet. Diese initiiert ein Projekt namens GNU (GNU ist Not Unix), welches das Ziel verfolgt, ein freies UNIX System zu schaffen. &lt;br /&gt;
&lt;br /&gt;
====1987====&lt;br /&gt;
AT&amp;amp;T verbietet die Verwendung des Unix Quellcodes an den Universitäten. Während dieser Zeit ist Andrew (Andy) Tannenbaum Professor an der Freien Universität von Amsterdam und entwickelt Minix. Minix ist ein kostengünstiges Lehrbetriebssystem und kommt ohne jeglichen AT&amp;amp;T Code aus, obwohl es die gleiche Funktionalität wie Unix 7 bietet. Im Usenet unter comp.os.minix entsteht eine Minix-Gemeinde, die den Minix Kernel und die Anwendungen rundherum programmiert und verbessert.&lt;br /&gt;
&lt;br /&gt;
====1991====&lt;br /&gt;
Linus Torvalds hat als Student für Computerwissenschaften an der Universität in Helsinki Minix installiert und das Buch von Andy Tannenbaum gelesen. Er beginnt im Sinne der FSF einen Unix ähnlichen Kernel zu programmieren mit der Idee, &amp;quot;ein besseres Minix als Minix&amp;quot; zu bauen. 1992 stellt er die Version 0.02 mit dem Namen Linux der Internetgemeinde zur Verfügung. &lt;br /&gt;
&lt;br /&gt;
====1994====&lt;br /&gt;
Die Linux Version 1.0 wird freigegeben. Das Linux Fieber beginnt... &lt;br /&gt;
&lt;br /&gt;
====1998====&lt;br /&gt;
Der Kreis der Linux Entwickler und Anwender ist kräftig angeschwollen. KDE 1.0 wird veröffentlicht. Die Zuwachsraten von Linux übertreffen die von Windows NT deutlich. &lt;br /&gt;
&lt;br /&gt;
====1999====&lt;br /&gt;
Der lange erwartete stabile Linux Kernel Version 2.2 wird freigegeben. Namhafte Firmen wie IBM kündigen ihre Unterstützung für Linux an. &lt;br /&gt;
&lt;br /&gt;
====2001====&lt;br /&gt;
Der lange erwartete stabile Linux Kernel Version 2.4 wird freigegeben. USB Unterstützung und eine neue Firewallimplementierung zeichnen ihn aus.&lt;br /&gt;
&lt;br /&gt;
====2003====&lt;br /&gt;
Linux Kernel Version 2.6 wird freigegeben. Am auffälligsten sind Änderungen bei der Modulverwaltung.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Distributionen===&lt;br /&gt;
{| Border=1 Cellpadding=2&lt;br /&gt;
| &lt;br /&gt;
|Url&lt;br /&gt;
|Paketformat&lt;br /&gt;
|-&lt;br /&gt;
|Red Hat&lt;br /&gt;
|www.redhat.com&lt;br /&gt;
|rpm&lt;br /&gt;
|-&lt;br /&gt;
|fedora&lt;br /&gt;
|fedora.redhat.com&lt;br /&gt;
|rpm&lt;br /&gt;
|-&lt;br /&gt;
|CentOS&lt;br /&gt;
|www.centos.org&lt;br /&gt;
|rpm&lt;br /&gt;
|-&lt;br /&gt;
|Suse/openSUSE&lt;br /&gt;
|www.opensuse.org&lt;br /&gt;
|rpm&lt;br /&gt;
|-&lt;br /&gt;
|Debian&lt;br /&gt;
|www.debian.org&lt;br /&gt;
|deb&lt;br /&gt;
|-&lt;br /&gt;
|Ubuntu&lt;br /&gt;
|www.ubuntu.com&lt;br /&gt;
|deb&lt;br /&gt;
|-&lt;br /&gt;
|Mandrake&lt;br /&gt;
|www.linux-mandrake.com&lt;br /&gt;
|rpm&lt;br /&gt;
|-&lt;br /&gt;
|Easy Linux&lt;br /&gt;
|www.easy-linux.de&lt;br /&gt;
|rpm&lt;br /&gt;
|-&lt;br /&gt;
|Turbo&lt;br /&gt;
|www.turbolinux.com&lt;br /&gt;
|rpm&lt;br /&gt;
|-&lt;br /&gt;
|minis&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|toms&lt;br /&gt;
|www.toms.net/rb&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|damn small linux&lt;br /&gt;
|www.damnsmalllinux.org&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|pocket-linux&lt;br /&gt;
|www.pocket-linux.org&lt;br /&gt;
|&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
====Bücher====&lt;br /&gt;
 Titel : Das Linux Anwenderhandbuch und Leitfaden für die Systemverwaltung&lt;br /&gt;
 Autor : Sebastian Hetze, Dirk Hohndel, Olaf Kirch und Martin Müller&lt;br /&gt;
 Verlag: Lunetix&lt;br /&gt;
 ISBN : 3-929764-06-7&lt;br /&gt;
&lt;br /&gt;
 Titel : Linux in a Nutshell&lt;br /&gt;
 Autor : Jessica Perry Hekman und die Mitarbeiter von O'Reilly &amp;amp; Associates&lt;br /&gt;
 Verlag: O'Reilly&lt;br /&gt;
 ISBN : 3-930673-57-6&lt;br /&gt;
&lt;br /&gt;
 Titel : Linux - Wegweiser zur Installation und Konfiguration&lt;br /&gt;
 Autor : Matt Welsh, Lar Kaufman, Matthias Kalle Dallheimer&lt;br /&gt;
 Verlag: O'Reilly&lt;br /&gt;
 ISBN : 3-930673-58-4 (deutsch), 1-56592-469-X (englisch)&lt;br /&gt;
&lt;br /&gt;
 Titel : Linux - Installation, Konfiguration, Anwendung&lt;br /&gt;
 Autor : Michael KoflerMultitasking&lt;br /&gt;
 Verlag: Addison-Wesley&lt;br /&gt;
 ISBN : 3-8273-1475-5&lt;br /&gt;
&lt;br /&gt;
 Titel : Linux - Wegweiser für Netzwerker&lt;br /&gt;
 Autor : Olaf Kirch&lt;br /&gt;
 Verlag: O'Reilly&lt;br /&gt;
 ISBN : 3-930673-18-5&lt;br /&gt;
&lt;br /&gt;
 Titel : TCP/IP-Netzwerk-Administration&lt;br /&gt;
 Autor : Craig Hunt&lt;br /&gt;
 Verlag: O'Reilly&lt;br /&gt;
 ISBN : 3-89721-110-6&lt;br /&gt;
&lt;br /&gt;
 Titel : Essential System Administration&lt;br /&gt;
 Autor : Eleen Frisch&lt;br /&gt;
 Verlag: O'Reilly&lt;br /&gt;
 ISBN : 1-56592-127-5&lt;br /&gt;
&lt;br /&gt;
==Betriebssystem==&lt;br /&gt;
===Was ist ein Betriebssystem?===&lt;br /&gt;
&lt;br /&gt;
Ein Betriebssystem liegt logisch gesehen zwischenAnwendungsprogramm und Hardware.&lt;br /&gt;
&lt;br /&gt;
Es nimmt die Anforderungen der Anwendungsprogramme entgegen und leitet&lt;br /&gt;
diese kontrolliert an die Hardware weiter. Kein Anwendungsprogramm sollte&lt;br /&gt;
direkt auf die Hardware zugreifen können. Den zentralen Zugang schafft einzig&lt;br /&gt;
das Betriebssystem. Somit kann das Betriebssystem unsinnige Anforderungen&lt;br /&gt;
oder Bedienungsfehler abblocken.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Image:Linux.jpg]]&lt;br /&gt;
&lt;br /&gt;
===Aufgaben eines Betriebssystems===&lt;br /&gt;
&lt;br /&gt;
# Verbergen der Komplexität der Maschine vor dem Anwender (Abstraktion)&lt;br /&gt;
# Bereitstellen einer Benutzerschnittstelle (&amp;quot;Kommandointerpreter&amp;quot;, &amp;quot;Shell&amp;quot;)&lt;br /&gt;
# Bereitstellen einer normierten Programmierschnittstelle (API)&lt;br /&gt;
# Verwaltung der Ressourcen der Maschine::&lt;br /&gt;
Hauptspeicher&lt;br /&gt;
Prozessor(en)&lt;br /&gt;
Hintergrundspeicher (Platte, Band, etc.)&lt;br /&gt;
Geräte (Terminal, Drucker, Plotter, etc.)&lt;br /&gt;
Rechenzeit&lt;br /&gt;
Koordination von Prozessen&lt;br /&gt;
&lt;br /&gt;
===Aufbau eines Betriebssystems===&lt;br /&gt;
&lt;br /&gt;
Ein Rechensystem besteht aus Hardware, Systemprogrammen und Anwendungs-&lt;br /&gt;
programmen. Unter einem Betriebssystem wird meist die Summe aus Betriebs-&lt;br /&gt;
systemkern (Kernel) und den wichtigsten Systemprogrammen verstanden. Ein&lt;br /&gt;
minimaler LINUX-Kernel besitzt ungefähr eine Größe von 400 - 800 kByte.&lt;br /&gt;
Weitere wichtige Systemkomponenten benötigen zusätzlich 10 - 100 Mbyte&lt;br /&gt;
Plattenplatz.&lt;br /&gt;
&lt;br /&gt;
Ein Betriebssystem stellt den Rechner als erweiterte Maschine (virtuelle&lt;br /&gt;
Maschine) über definierte Software-Schnittstellen zur Verfügung.&lt;br /&gt;
Das Betriebssystem dient als Betriebsmittelverwalter, der Anforderungen&lt;br /&gt;
befriedigt, protokolliert, abrechnet und vermittelt.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Aufgaben des Betriebssystemkerns:&lt;br /&gt;
&lt;br /&gt;
{| Border=1 Cellpadding=2&lt;br /&gt;
|Prozessverwaltung  (dispatching and scheduling)&lt;br /&gt;
| Mehrere Benutzer können mit mehreren Aktionen gleichzeitig im System arbeiten, ohne sich gegenseitig zu beeinflussen. Damit dies möglich ist,  müssen die Aktionen organisiert, koordiniert und verwaltet werden. Die zu verwaltende Einheit nennt man Prozess.&lt;br /&gt;
|-&lt;br /&gt;
|Speicherverwaltung   (memory management)&lt;br /&gt;
|Zuteilen von Speicherbereichen an laufende Prozesse, Schutz der Speicherbereiche vor unbefugten Zugriffen, bei Speicherengpässen: Auslagern von ganzen (swapping) oder von Teilen (paging) von Prozessen auf die Platte (swap file).&lt;br /&gt;
|-&lt;br /&gt;
|Dateiverwaltung  (file handling)&lt;br /&gt;
|Zuteilung von Plattenplatz für Programme, Benutzer und Systemdienste, Schreiben, Lesen und Strukturieren der Daten auf den Massenspeichern; Durch Bereitstellung einer entsprechenden Schnittstelle (VFS, virtual file system) kann der Kern Dateisysteme unterschiedlichster Art (EXT2, FAT, NFS, HPFS, NTFS, ...) ansprechen.&lt;br /&gt;
|-&lt;br /&gt;
|Geräteverwaltung  (resource management)&lt;br /&gt;
|Der Kern ermöglicht und kontrolliert den Zugriff auf die Hardware. Er steuert die Ein- und Ausgabetätigkeiten der Anwender. An den Kern&lt;br /&gt;
gebunden sind die entsprechenden Gerätetreiber (device driver), die damit eine Kommunikation zwischen Kern und Hardware ermöglichen.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
===Multitasking===&lt;br /&gt;
&lt;br /&gt;
Multitasking bedeutet, dass ein Rechner aus Anwendersicht mehrere Aufgaben&lt;br /&gt;
(Tasks) gleichzeitg übernehmen kann. Das Betriebssystem (OS) unterteilt die&lt;br /&gt;
gleichzeitig anstehenden Aufgaben in Einzelarbeitsschritte (Prozesse) und&lt;br /&gt;
managed durch ein Zeitscheibenverfahren (scheduling) die gleichmäßige&lt;br /&gt;
Abarbeitung der Prozesse.&lt;br /&gt;
&lt;br /&gt;
Es wird unterschieden zwischen:&lt;br /&gt;
&lt;br /&gt;
*non-präamptiven (kooperativen=die Ressourcen werden vom aktiven Prozess freigegeben, bei einem Hänger steht das ganze System)&lt;br /&gt;
&lt;br /&gt;
und&lt;br /&gt;
&lt;br /&gt;
*präamptiven (reinem=der Betriebssystemkern steuert Taskwechsel, indem nach einer festgelegten Zeit vom gerade aktiven Prozess zum nächsten weitergeschaltet wird)&lt;br /&gt;
&lt;br /&gt;
===Mehrprozessorbetrieb===&lt;br /&gt;
&lt;br /&gt;
Bei mehreren Prozessoren und Unterstützung durch das OS&lt;br /&gt;
(NT,Linux,Unix,Novell) können mehrere Tasks auf diese verteilt werden und&lt;br /&gt;
gleichzeitig bearbeitet werden. Nachteilig ist, dass dies nicht oder kaum von&lt;br /&gt;
Anwendungsprogrammen unterstützt wird und es zu Kommunikationsproblemen&lt;br /&gt;
zwischen den einzelnen Tasks kommen kann.&lt;br /&gt;
&lt;br /&gt;
===Arten von von Betriebssystemen===&lt;br /&gt;
&lt;br /&gt;
{|Border=1 Cellpadding=2&lt;br /&gt;
|&lt;br /&gt;
|SingleUser  &lt;br /&gt;
|Multiuser&lt;br /&gt;
|-&lt;br /&gt;
|Single Tasking&lt;br /&gt;
|MS - DOS&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|Multi Tasking&lt;br /&gt;
|Windows 3.x&lt;br /&gt;
|UNIX&lt;br /&gt;
|-&lt;br /&gt;
|&lt;br /&gt;
|Windows 95/98&lt;br /&gt;
|Linux&lt;br /&gt;
|-&lt;br /&gt;
|&lt;br /&gt;
|Windows NT4 ohne Erweiterungen&lt;br /&gt;
|VMS&lt;br /&gt;
|-&lt;br /&gt;
|&lt;br /&gt;
|OS/2 &lt;br /&gt;
|Windows NT mit  Erweiterungen&lt;br /&gt;
|-&lt;br /&gt;
|&lt;br /&gt;
|Apple&lt;br /&gt;
|Windows 2000, XP, 2003&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
===SHELL===&lt;br /&gt;
&lt;br /&gt;
Wenn man mit Linux arbeiten will, kann man nicht direkt mit dem Betriebssystem&lt;br /&gt;
kommunizieren. Man braucht dazu ein Hilfsprogramm, welches die&lt;br /&gt;
Kommandoeingaben ordnungsgemäß an das Betriebssystem weiterleitet. Dieses&lt;br /&gt;
Hilfsprogramm hat den Namen Shell.&lt;br /&gt;
&lt;br /&gt;
Die Shell schirmt den Betriebssystemkern von den Anwendungsprogrammen ab.&lt;br /&gt;
Die unterschiedlichen Shells erfüllen alle dieselbe Aufgabe, sie unterscheiden sich&lt;br /&gt;
allerdings in ihrer Syntax.&lt;br /&gt;
&lt;br /&gt;
==Die Installation im Überblick==&lt;br /&gt;
&lt;br /&gt;
Die Installation von Linux geschieht in folgenden Schritten:&lt;br /&gt;
&lt;br /&gt;
# Analyse (Welche Hardware habe ich? ,Hab ich weitere Betriebsysteme?)&lt;br /&gt;
# Booten des Linux-Kernels. (von CD oder Diskette)&lt;br /&gt;
# Laden einer RAM-Disk (das macht das Installationsprogramm automatisch).&lt;br /&gt;
# Partitionieren der Festplatte (fdisk).&lt;br /&gt;
# Einrichten der Swappartition (mkswap), Formatieren der Festplatte (mkfs).&lt;br /&gt;
# Montieren der Dateisysteme (mount), Aktivieren der Swapbereiche (swapon).&lt;br /&gt;
# Kopieren und Auspacken der Daten vom Installationsmedium auf die Festplatte (die eigentliche Installation). (rpm, dpkg oder tar).&lt;br /&gt;
# Geeignete Wahl der Bootmethode unter Berücksichtigung von Punkt 1 (grub, lilo).&lt;br /&gt;
# Konfiguration des Systems (Netz, Modem etc...).&lt;br /&gt;
&lt;br /&gt;
==Erste Schritte==&lt;br /&gt;
===Anmelden===&lt;br /&gt;
Sie können sich nun mit dem Usernamen und dem Passwort, das sie bei der Installation angelegt haben anmelden!&lt;br /&gt;
[[Image:benutzer.jpg]]&lt;br /&gt;
&lt;br /&gt;
[[Image:passwd.jpg]]&lt;br /&gt;
&lt;br /&gt;
===Terminal öffnen===&lt;br /&gt;
&lt;br /&gt;
Ein Terminal öffnen Sie über das Startmenü:&lt;br /&gt;
&lt;br /&gt;
[[Image:Terminalde.jpg]]&lt;br /&gt;
&lt;br /&gt;
Das geöffnete Terminal sieht dann folgendermaßen aus:&lt;br /&gt;
&lt;br /&gt;
[[Image:Terminalde2.jpg]]&lt;br /&gt;
&lt;br /&gt;
===Sudo===&lt;br /&gt;
Rootrechte erlangen sie über den &amp;quot;Sudo&amp;quot;-Befehl&lt;br /&gt;
 &lt;br /&gt;
''Den nächsten Befehl als root ausführen''&lt;br /&gt;
 xinux@zero:~$ sudo cat /etc/shadow&lt;br /&gt;
 [sudo] password for xinux:&lt;br /&gt;
&lt;br /&gt;
''Eine komplette Sitzung als root starten''&lt;br /&gt;
 xinux@zero:~$ sudo -i&lt;br /&gt;
 [sudo] password for xinux:&lt;br /&gt;
 root@zero:~#&lt;br /&gt;
&lt;br /&gt;
===Virtuelle Konsolen===&lt;br /&gt;
&lt;br /&gt;
In die Virtuelle Konsole gelangen sie über &amp;quot;STRG+ALT+(F1-F6)&amp;quot;.&lt;br /&gt;
Sie funktioniert wie ein ganz normales Terminal, und mit &amp;quot;ALT+F7&amp;quot;&lt;br /&gt;
gelangen sie wieder zurück auf die grafische Benutzeroberfläche&lt;br /&gt;
&lt;br /&gt;
===Abmelden===&lt;br /&gt;
&lt;br /&gt;
Abmelden können Sie sich wieder über das Startmenu unter:&lt;br /&gt;
&lt;br /&gt;
[[Image:Logout.jpg]]&lt;br /&gt;
&lt;br /&gt;
Fals sie nur einzelne Sitzungen in einem der Terminals oder &lt;br /&gt;
den Virtuellen Konsolen Abmelden wollen benutzen sie dazu den Befehl: &amp;quot;exit&amp;quot;&lt;br /&gt;
&lt;br /&gt;
===Herunterfahren===&lt;br /&gt;
&lt;br /&gt;
Das Herunterfahren funktioniert auf dem selben Weg.&lt;br /&gt;
&lt;br /&gt;
Entweder sie Benutzen wieder das Startmenü und benutzen diesmal den &amp;quot;Ausschalten ...&amp;quot; Knopf,&lt;br /&gt;
&lt;br /&gt;
Oder sie geben den äquivalenten &amp;quot;shutdown&amp;quot;-Befehl in einem Terminal bzw. der virtuellen Konsole ein.&lt;br /&gt;
&lt;br /&gt;
Allerdings müssen sie dazu als Administrator angemeldet sein s. &amp;quot;Sudo&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Wenn Sie den &amp;quot;shutdown&amp;quot;-Befehl benutzen wollen muss hinter den Befehl&lt;br /&gt;
&lt;br /&gt;
eine Zeitangabe in Minuten oder das wort &amp;quot;now&amp;quot; für sofortiges Ausschalten hinzugefügt werden:&lt;br /&gt;
&lt;br /&gt;
 xinux@zero:~$ sudo -i&lt;br /&gt;
 root@zero:~# shutdown 60&lt;br /&gt;
 &lt;br /&gt;
 Broadcast message from xinux@zero &lt;br /&gt;
         (/dev/pts/3) at 14:29 ...&lt;br /&gt;
 &lt;br /&gt;
 The system is going down for maintenance in 60 minutes!&lt;br /&gt;
&lt;br /&gt;
Sollten sie den Befehl widerrufen wollen dann drücken sie &amp;quot;STRG+C&amp;quot;,&lt;br /&gt;
&lt;br /&gt;
in dem Terminal in dem der shutdown Befehl gestartet wurde,&lt;br /&gt;
&lt;br /&gt;
oder geben sie den &amp;quot;shutdown&amp;quot;-Befehl zusammen mit der Abbruchoption &amp;quot;-c&amp;quot; in einem anderen Terminal ein:&lt;br /&gt;
&lt;br /&gt;
 root@zero:~# shutdown -c&lt;br /&gt;
&lt;br /&gt;
 shutdown: Shutdown cancelled&lt;br /&gt;
 root@zero:~# &lt;br /&gt;
&lt;br /&gt;
Wenn Sie den Rechner Neustarten möchten gibt es dazu die Option &amp;quot;-r&amp;quot; für den &amp;quot;shutdown&amp;quot;-Befehl&lt;br /&gt;
&lt;br /&gt;
oder den &amp;quot;reboot&amp;quot;-Befehl die beide auch als root ausgeführt werden müssen:&lt;br /&gt;
&lt;br /&gt;
 xinux@zero:~$ sudo -i&lt;br /&gt;
 [sudo] password for xinux: &lt;br /&gt;
 root@zero:~# shutdown -r now&lt;br /&gt;
&lt;br /&gt;
 root@zero:~# reboot&lt;br /&gt;
&lt;br /&gt;
===&amp;quot;man&amp;quot;===&lt;br /&gt;
&lt;br /&gt;
Programm zum Einsehen der Online-Manuals&lt;br /&gt;
&lt;br /&gt;
Die Manuals sind in folgende Sektionen unterteilt:&lt;br /&gt;
# Ausführbare Programme oder Shellbefehle&lt;br /&gt;
# Systemaufrufe (Kernelfunktionen)&lt;br /&gt;
# Bibliotheksaufrufe (Funktionen in System-Bibliotheken)&lt;br /&gt;
# Spezielle Dateien (gewöhnlich in /dev)&lt;br /&gt;
# Dateiformate und Konventionen, z. B. /etc/passwd&lt;br /&gt;
# Spiele&lt;br /&gt;
# Makropakete und Konventionen, z. B. man(7), groff(7)&lt;br /&gt;
# Systemadministrationsbefehle (in der Regel nur für root)&lt;br /&gt;
# Kernelroutinen [Nicht Standard]&lt;br /&gt;
&lt;br /&gt;
Aufruf eines Manuals erfolgt durch ''man kommando''&lt;br /&gt;
Beendet wird durch Drücken des Buchstabens q&lt;br /&gt;
Gesucht wird vorwärts durch Eingabe eines /suchausdruck&lt;br /&gt;
Gesucht wird rückwärts durch Eingabe eines ?suchausdruck&lt;br /&gt;
&lt;br /&gt;
Beispiele:&lt;br /&gt;
&lt;br /&gt;
      man passwd        Anschauen der Manualseite zum Programm passwd&lt;br /&gt;
      man 5 passwd      Anschauen der Manualseite zur Datei /etc/passwd&lt;br /&gt;
      man -a passwd     Anschauen aller Manualseiten zu passwd&lt;br /&gt;
      man -k passwd     Durchsucht die Kurzbeschreibungen der Manualseite&lt;br /&gt;
                        nach passwd und gibt alle Treffer aus&lt;br /&gt;
      man -f passwd      Gibt alle gefunden Kurzbescheibungen zu passwd aus&lt;br /&gt;
      man -L en passwd Gibt englische Manualseiten aus&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Was geht vor auf meinem System? (date,who)===&lt;br /&gt;
&lt;br /&gt;
Das Kommando date dient zur Abfrage von Datum und Uhrzeit.&lt;br /&gt;
&lt;br /&gt;
 xinux@zero:~ &amp;gt; date&lt;br /&gt;
 Fre Mär 16 16:35:03 CET 2001&lt;br /&gt;
&lt;br /&gt;
oder auch Anzeige der Grennwich Zeit:&lt;br /&gt;
&lt;br /&gt;
 xinux@zero:~ &amp;gt; date -u&lt;br /&gt;
 Fre Mär 16 15:35:34 UTC 2001&lt;br /&gt;
&lt;br /&gt;
 xinux@zero:~ &amp;gt; date -u &amp;quot;+%X&amp;quot;&lt;br /&gt;
 15:37:19&lt;br /&gt;
&lt;br /&gt;
 xinux@zero:~ &amp;gt; date -u &amp;quot;+%x&amp;quot;&lt;br /&gt;
 01/15/02&lt;br /&gt;
&lt;br /&gt;
who zeigt alle angemeldeten Benutzer an&lt;br /&gt;
&lt;br /&gt;
 thomas@cardassia:~ &amp;gt; who&lt;br /&gt;
 thomas             tty1 Feb 27 16:39&lt;br /&gt;
 thomas             tty2 Mar 2 17:08&lt;br /&gt;
 tina               tty6 Mar 16 16:38&lt;br /&gt;
&lt;br /&gt;
Mit `who --help' bekommen Sie mehr Informationen.&lt;br /&gt;
&lt;br /&gt;
 thomas@cardassia:~ &amp;gt; who --help&lt;br /&gt;
&lt;br /&gt;
Benutzung: who [OPTION]... [ DATEI | ARG1 ARG2 ]&lt;br /&gt;
&lt;br /&gt;
 -H, --heading             print line of column headings&lt;br /&gt;
 -i, -u, --idle            add user idle time as HOURS:MINUTES, . or old&lt;br /&gt;
 -l, --lookup              attempt to canonicalize hostnames via DNS&lt;br /&gt;
 -m                        only hostname and user associated with stdin&lt;br /&gt;
 -q, --count               all login names and number of users logged on&lt;br /&gt;
 -s                        (ignored)&lt;br /&gt;
 -T, -w, --mesg            add user's message status as +, - or ?&lt;br /&gt;
     --message             same as -T&lt;br /&gt;
     --writable            same as -T&lt;br /&gt;
     --help                display this help and exit&lt;br /&gt;
     --version             output version information and exit&lt;br /&gt;
&lt;br /&gt;
==Das UNIX-Dateisystem==&lt;br /&gt;
===Verzeichnisbaum===&lt;br /&gt;
&lt;br /&gt;
[[Image:vztree.jpg]]&lt;br /&gt;
&lt;br /&gt;
Das Betriebssystem UNIX besitzt ein hierarchisches Dateisystem. Es besteht aus:&lt;br /&gt;
* Dateien (Files)&lt;br /&gt;
Dateien speichern Informationen (Text, Bilder, Sound, Videos, Programme) und&lt;br /&gt;
werden über den Dateinamen angesprochen.&lt;br /&gt;
&lt;br /&gt;
* Verzeichnissen (Directories, Kataloge)&lt;br /&gt;
Verzeichnisse besitzen ebenfalls einen Namen und dienen zur Ordnung des&lt;br /&gt;
Dateisystems. Ein Verzeichnis kann Dateien und Unterverzeichnisse&lt;br /&gt;
(Subdirectories) enthalten. Das oberste Verzeichnis im Dateisystem heisst&lt;br /&gt;
Rootverzeichnis oder kurz Root und wird durch / (sprich: slash)&lt;br /&gt;
gekennzeichnet.&lt;br /&gt;
&lt;br /&gt;
Im Gegensatz zu Windows kennt UNIX keine Laufwerke.&lt;br /&gt;
Das obige Bild zeigt ein typisches UNIX-Dateisystem.&lt;br /&gt;
Unterhalb des Rootverzeichnisses befinden sich eine Vielzahl vonVerzeichnissen.&lt;br /&gt;
&lt;br /&gt;
===Wichtige Verzeichnisse===&lt;br /&gt;
&lt;br /&gt;
• '''Homeverzeichnis'''&lt;br /&gt;
&lt;br /&gt;
das Verzeichnis, in dem man sich unmittelbar nach dem Anmelden befindet. Das&lt;br /&gt;
Homeverzeichnis wird vom Systemverwalter eingerichtet; jeder Anwender&lt;br /&gt;
besitzt ein festes Homeverzeichnis. z.B. /home/hans&lt;br /&gt;
&lt;br /&gt;
~ (Tilde) bzw. $HOME (Shellvariable) kennzeichnen das Homeverzeichnis.&lt;br /&gt;
&lt;br /&gt;
• '''Aktuelles Verzeichnis'''&lt;br /&gt;
&lt;br /&gt;
Verzeichnis, in dem man sich aktuell befindet.&lt;br /&gt;
Das aktuelle Verzeichnis wird mit dem Befehl cd (change directory) oder per&lt;br /&gt;
Mausklick verändert.&lt;br /&gt;
Ein einfacher Punkt . kennzeichnet das aktuelle Verzeichnis.&lt;br /&gt;
&lt;br /&gt;
• '''Elternverzeichnis'''&lt;br /&gt;
&lt;br /&gt;
Verzeichnis unmittelbar oberhalb des aktuellen Verzeichnisses.&lt;br /&gt;
Jedes Verzeichnis ausser / besitzt genau ein Elternverzeichnis.&lt;br /&gt;
Zwei Punkte .. kennzeichnen das Elternverzeichnis (abhängig vom aktuellen&lt;br /&gt;
VZ).&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Absoluter Pfadname:===&lt;br /&gt;
&lt;br /&gt;
Beschreibt ausgehend vom Rootverzeichnis den Weg zum Zielverzeichnis oder zur&lt;br /&gt;
Zieldatei. (Welche Verzeichnisse müssen ausgehend von / durchlaufen werden, um&lt;br /&gt;
zum Ziel zu kommen?) Ein absoluter Pfadname beginnt immer mit / .&lt;br /&gt;
&lt;br /&gt;
===Relativer Pfadname:===&lt;br /&gt;
&lt;br /&gt;
Beschreibt ausgehend vom aktuellen Verzeichnis den Weg zum Zielverzeichnis&lt;br /&gt;
oder zur Zieldatei; ein relativer Pfadname beginnt nicht mit / .&lt;br /&gt;
/home/suxer&lt;br /&gt;
absoluter Pfadname für das Verzeichnis sub1 im Homeverzeichnis von suxer&lt;br /&gt;
&lt;br /&gt;
===Verzeichnisstruktur===&lt;br /&gt;
&lt;br /&gt;
 /bin         Kommandos die beim starten benötigt werden (Zugriff hat jeder)&lt;br /&gt;
 /sbin        Wichtige System-Programme (In der Regel root vorberhalten)&lt;br /&gt;
 /boot        Hier findet man die Dateien des Bootmanagers und des Kernel.&lt;br /&gt;
 /dev         In diesem Verzeichnis stehen die Gerätedateien (Devices),&lt;br /&gt;
 /home        Alle Heimatverzeichnisse der Nutzer findet man hier.&lt;br /&gt;
 /lib         Beim Systemstart benötigten Bibliotheken und Modules stehen hier.&lt;br /&gt;
 /mnt         Mountpunkt für temporäre Partitionen&lt;br /&gt;
 /opt         Software, die nicht Installationsumfang von Linux gehören.&lt;br /&gt;
 /root        Heimatverzeichnis des Administrators.&lt;br /&gt;
 /tmp         Temporäre Dateien können hier abgelegt werden&lt;br /&gt;
 /usr         statische Dateien (kann read-only gemountet sein)&lt;br /&gt;
 /var         variable Dateien (muss beschreibar sein )&lt;br /&gt;
 /etc         Konfiguartionsdateien und Startscripte&lt;br /&gt;
 /proc        Virtuelles Dateisystem -&amp;gt; repräsentiert den Kernel&lt;br /&gt;
&lt;br /&gt;
===Unterverzeichnisse von /usr===&lt;br /&gt;
&lt;br /&gt;
 sbin         Programme für root die beim Start nicht benötigt werden&lt;br /&gt;
 bin          Programme für alle die beim Start nicht benötigt werden&lt;br /&gt;
 X11R6        Dateien des X-Window-Sytems&lt;br /&gt;
 bin          Ausführbare Programme&lt;br /&gt;
 doc          Dokumentationen&lt;br /&gt;
 etc          Konfigurationsdateien&lt;br /&gt;
 games        Spiele&lt;br /&gt;
 include      Headerdateien für C-Programme&lt;br /&gt;
 local        Pakete die nicht zur Distribution gehören ähnlich /opt&lt;br /&gt;
 share        Pakete die von mehreren Paketen genutzt werden&lt;br /&gt;
 share/man    Die Manualpages&lt;br /&gt;
 share/info   Seiten des Infosystems&lt;br /&gt;
 share/doc    Dokumentationen&lt;br /&gt;
 src          Sources von Programmen (Kernel und andere)&lt;br /&gt;
&lt;br /&gt;
===Unterverzeichnisse von /var===&lt;br /&gt;
&lt;br /&gt;
 cache        Zwischenspreicher für Progammes&lt;br /&gt;
 games        Variable Daten der Games (Scores etc...)&lt;br /&gt;
 lock         Sperrdateien&lt;br /&gt;
 log          Die Logdateien (wichtiges Verzeichnis für Admins)&lt;br /&gt;
 mail         Das Mailsystem&lt;br /&gt;
 run          Dateien zu laufemdem Prozessen&lt;br /&gt;
 spool        Spooldateien (z.B. für das Drucksystem&lt;br /&gt;
 state        Statusinfos&lt;br /&gt;
 tmp          Wie /tmp eventuell nicht auf root Partion&lt;br /&gt;
&lt;br /&gt;
==Einfache Komandos==&lt;br /&gt;
===cd: Wechseln des Arbeitsverzeichnis===&lt;br /&gt;
&lt;br /&gt;
Um festzustellen in welchem Verzeichnis man sich befindet, sollte man den&lt;br /&gt;
Befehl &amp;quot;pwd&amp;quot; benutzen,&lt;br /&gt;
&lt;br /&gt;
und mit dem Befehl &amp;quot;cd&amp;quot; kann man zwischen den Verzeichnissen wechseln:&lt;br /&gt;
&lt;br /&gt;
Wechsele ins homeverzeichnis von Xinux&lt;br /&gt;
&lt;br /&gt;
 xinux@zero:~$ cd /home/xinux/&lt;br /&gt;
 xinux@zero:~$ pwd&lt;br /&gt;
 /home/xinux&lt;br /&gt;
&lt;br /&gt;
cd ~ -&amp;gt; wechsele ins jeweilige Homeverzeichnis&lt;br /&gt;
&lt;br /&gt;
cd .. -&amp;gt; wechsele ein Verzeichnis höher&lt;br /&gt;
&lt;br /&gt;
cd ../verzeichnis -&amp;gt; wechsele in eine paralleles Verzeichnis &amp;lt;- (ist eine relative Pfadangabe !)&lt;br /&gt;
&lt;br /&gt;
cd - -&amp;gt; wechsele in das Verzeichnis, in dem vorher gearbeitet wurde.&lt;br /&gt;
&lt;br /&gt;
Mit cd / wechselt man in das Wurzelverzeichnis.&lt;br /&gt;
&lt;br /&gt;
 xinux@zero:/var/log$ cd /&lt;br /&gt;
 xinux@zero:/$ pwd&lt;br /&gt;
 /&lt;br /&gt;
&lt;br /&gt;
===ls: Listing===&lt;br /&gt;
&lt;br /&gt;
Den Inhalt von Verzeichnissen kann man sich mit dem Befehl &amp;quot;ls&amp;quot; anzeigen lassen&lt;br /&gt;
wobei &amp;quot;ls&amp;quot; eine Vielzahl von Optionen besitzt:&lt;br /&gt;
&lt;br /&gt;
 ls                                  standard&lt;br /&gt;
 ls -l                               langes listing&lt;br /&gt;
 ls -a                               alle Dateien&lt;br /&gt;
 ls -i                               mit Inode&lt;br /&gt;
 ls -h                               gut lesbare Dateigröße&lt;br /&gt;
 ls -d                               Verzechnis wird angezeigt, nicht der Inhalt&lt;br /&gt;
 ls -L                               sortiert nach Größe&lt;br /&gt;
 ls -t                               sortiert nach Datum&lt;br /&gt;
 ls -F                               mit nützlichem Anhang&lt;br /&gt;
&lt;br /&gt;
 xinux@zero:/$ ls -l /var/log/messages&lt;br /&gt;
 -rw-r----- 1 syslog adm 2296 2009-06-16 10:05 /var/log/messages&lt;br /&gt;
&lt;br /&gt;
===more: Seitenweises Anzeigen von Seiten===&lt;br /&gt;
 root@zero:~# more /var/log/messages&lt;br /&gt;
 ...&lt;br /&gt;
&lt;br /&gt;
===head: erste Zeilen anzeigen===&lt;br /&gt;
Erste 10 Zeilen anzeigen&lt;br /&gt;
 root@zero:~# head /var/log/messages&lt;br /&gt;
 Jun 15 12:37:08 zero syslogd 1.5.0#5ubuntu3: restart.&lt;br /&gt;
 Jun 15 12:38:43 zero kernel: [  830.065036] mtrr: your processor doesn't support write-combining&lt;br /&gt;
 Jun 15 12:46:05 zero pulseaudio[4817]: pid.c: Stale PID file, overwriting.&lt;br /&gt;
 Jun 15 13:05:24 zero -- MARK --&lt;br /&gt;
 ...&lt;br /&gt;
&lt;br /&gt;
Erste zwei Zeilen anzeigen&lt;br /&gt;
 root@zero:~# head -n 2 /var/log/messages&lt;br /&gt;
 Jun 15 12:37:08 zero syslogd 1.5.0#5ubuntu3: restart.&lt;br /&gt;
 Jun 15 12:38:43 zero kernel: [  830.065036] mtrr: your processor doesn't support write-combining&lt;br /&gt;
&lt;br /&gt;
===tail: letzte Zeilen anzeigen===&lt;br /&gt;
 &lt;br /&gt;
 root@zero:~# tail /var/log/syslog&lt;br /&gt;
 ...&lt;br /&gt;
 Jun 19 11:19:35 zero -- MARK --&lt;br /&gt;
 Jun 19 11:39:35 zero -- MARK --&lt;br /&gt;
 Jun 19 11:59:36 zero -- MARK --&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Letze 5 Zeilen anzeigen&lt;br /&gt;
 root@zero:~# tail -n 5 /var/log/auth.log&lt;br /&gt;
 Jun 18 14:30:01 zero CRON[12040]: pam_unix(cron:session): session closed for user root&lt;br /&gt;
 Jun 18 14:39:01 zero CRON[12191]: pam_unix(cron:session): session opened for user root by (uid=0)&lt;br /&gt;
 Jun 18 14:39:01 zero CRON[12191]: pam_unix(cron:session): session closed for user root&lt;br /&gt;
 Jun 18 14:40:01 zero CRON[12237]: pam_unix(cron:session): session opened for user root by (uid=0)&lt;br /&gt;
 Jun 18 14:40:01 zero CRON[12237]: pam_unix(cron:session): session closed for user root&lt;br /&gt;
&lt;br /&gt;
Letze Zeilen anzeigen und fortlaufend aktualisieren&lt;br /&gt;
 root@zero:~# tail -f /var/log/syslog&lt;br /&gt;
 ...&lt;br /&gt;
&lt;br /&gt;
===mkdir: Ein neues Verzeichnis erstellen===&lt;br /&gt;
&lt;br /&gt;
 mkdir        verzeichnis&lt;br /&gt;
Erstellt ein Verzeichnis im working directory (wd)&lt;br /&gt;
&lt;br /&gt;
 mkdir  -p    ver1/ver2&lt;br /&gt;
Erstellt ein Verzeichnis ver2 unterhalb von ver1&lt;br /&gt;
wenn ver1 nicht existiert wird es erstellt&lt;br /&gt;
&lt;br /&gt;
 mkdir -m 753 ver1&lt;br /&gt;
Es wird das Verzeichnis ver1 erstellt mit der mask 753&lt;br /&gt;
&lt;br /&gt;
 mkdir -v     ver1&lt;br /&gt;
Geschwätzige Ausgabe :)&lt;br /&gt;
&lt;br /&gt;
===Zum Löschen von leeren Verzeichnissen wird rmdir benutzt===&lt;br /&gt;
&lt;br /&gt;
 rmdir           ver1&lt;br /&gt;
Löscht das leere Verzeichnis ver1&lt;br /&gt;
&lt;br /&gt;
 rmdir -v        ver1&lt;br /&gt;
Löscht das leere Verzeichnis ver1 und ist geschwätzig&lt;br /&gt;
&lt;br /&gt;
 rmdir -p        /ver1/ver2/ver3&lt;br /&gt;
Löscht das Verzeichnis ver3; wenn dadurch ver2 ein leeres&lt;br /&gt;
Verzeichnis wird, wird dieses auch gelöscht , wenn ver1&lt;br /&gt;
dadurch ein leeres Verzeichnis wird, wird auch dieses gelöscht.&lt;br /&gt;
&lt;br /&gt;
===touch Verändern des Zeitstempels===&lt;br /&gt;
&lt;br /&gt;
Mit touch können wir eine neue leere Datei erzeugen (das ist nicht der eigentliche&lt;br /&gt;
Zweck von touch, eigentlich wird der Zeitstempel geändert)&lt;br /&gt;
&lt;br /&gt;
 touch            dateiname&lt;br /&gt;
&lt;br /&gt;
===Kopieren=== &lt;br /&gt;
cp ist das Kommando um Dateien zu kopieren &lt;br /&gt;
&lt;br /&gt;
Eine Kopie von dat1 mit dem Namen dat2 erstellen:&lt;br /&gt;
&lt;br /&gt;
 xinux@zero:~$ cp dat1 dat2&lt;br /&gt;
&lt;br /&gt;
Eine Kopie von dat1 ins Verzeichnis ver2 erstellen:&lt;br /&gt;
&lt;br /&gt;
 xinux@zero:~$ cp dat1 ver2/&lt;br /&gt;
 &lt;br /&gt;
Eine Kopie erstellen mit ausführlicher Anzeige:&lt;br /&gt;
&lt;br /&gt;
 xinux@zero:~$ cp -v dat1 dat2&lt;br /&gt;
 `dat1' -&amp;gt; `dat2'&lt;br /&gt;
&lt;br /&gt;
Eine Kopie erstellen mit Rückfrage fals etwas überschrieben wird:&lt;br /&gt;
&lt;br /&gt;
 xinux@zero:~$ cp -i dat1 dat2&lt;br /&gt;
 cp: overwrite `dat2'?&lt;br /&gt;
&lt;br /&gt;
Eine Kopie erstellen und die Rückfrage überbrücken:&lt;br /&gt;
&lt;br /&gt;
 xinux@zero:~$ cp -f dat1 dat2&lt;br /&gt;
&lt;br /&gt;
Eine Kopie von dat1 ins Verzeichnis ver2 erstellen fals keine neuere Version von dat1 vorliegt:&lt;br /&gt;
&lt;br /&gt;
 xinux@zero:~$ cp -u dat1 ver2/&lt;br /&gt;
&lt;br /&gt;
Eine Kopie erstellen fals ver2 auf dem selben Dateisystem wie dat1 liegt:&lt;br /&gt;
&lt;br /&gt;
 xinux@zero:~$ cp -x dat1 ver2/&lt;br /&gt;
&lt;br /&gt;
Eine Kopie von ver1, die als ver2 oder unter ver2 als ver1 gespeichert wird erstellen:&lt;br /&gt;
&lt;br /&gt;
 xinux@zero:~$ cp -r ver1/ ver2/&lt;br /&gt;
&lt;br /&gt;
Eine Kopie von einer Datei erstellen und ihre Attribute beibehalten:&lt;br /&gt;
&lt;br /&gt;
 xinux@zero:~$ cp -p sux1 sux2&lt;br /&gt;
&lt;br /&gt;
Eine Kopie erstellen bei der die Links erhalten bleiben:&lt;br /&gt;
&lt;br /&gt;
 xinux@zero:~$ cp -r ver1/ ver2/&lt;br /&gt;
&lt;br /&gt;
Eine Kopie erstellen zum Archivieren (-dpr):&lt;br /&gt;
&lt;br /&gt;
 xinux@zero:~$ cp -a ver1/ ver2/&lt;br /&gt;
&lt;br /&gt;
===rm: Löschen einer Datei===&lt;br /&gt;
&lt;br /&gt;
Um Dateien zu löschen, brauchen wir das Kommando &amp;quot;rm&amp;quot;:&lt;br /&gt;
&lt;br /&gt;
 rm               dat1        dat1 wird gelöscht&lt;br /&gt;
 rm         -i    dat1        dat1 wird nach Bestätigung gelöscht&lt;br /&gt;
 rm         -f    dat1        dat1 wird ohne Rückfragen gelöscht&lt;br /&gt;
 rm         -v    dat1        dat1 wird glöscht (geschwätzige Ausgabe)&lt;br /&gt;
 rm         -r    ver1        Löschen von nicht leeren Verzeichnissen&lt;br /&gt;
                              Achtung !!! Als root kann man sich damit Teile&lt;br /&gt;
                              oder sogar den gesamten Verzeichnisbaum&lt;br /&gt;
                              absägen !!!&lt;br /&gt;
&lt;br /&gt;
===mv: Verschieben===&lt;br /&gt;
&lt;br /&gt;
Mit dem Befehl &amp;quot;mv&amp;quot; werden Daten verschoben, folgendes gilt:&lt;br /&gt;
&lt;br /&gt;
 mv          dat1 dat2         &lt;br /&gt;
Die Datei dat1 wird in dat2 umbenannt&lt;br /&gt;
 mv          dat1 /ver1        &lt;br /&gt;
Die Datei dat1 wird nach /ver1 verschoben&lt;br /&gt;
&lt;br /&gt;
Die Parameter und ihre Bedeutung:&lt;br /&gt;
&lt;br /&gt;
      -i                      wenn eine Datei exisitiert wird vor dem&lt;br /&gt;
                              Überschreiben nachgefragt&lt;br /&gt;
      -v                      verbose (geschwätzig)&lt;br /&gt;
      -u                      nur neuere Daten werden bei Bedarf überschrieben&lt;br /&gt;
      -b                      wenn überschrieben werden soll, wird ein Backup&lt;br /&gt;
                              erstellt&lt;br /&gt;
      -S ENDUNG               das Backup bekommt die Endung ENDUNG&lt;br /&gt;
&lt;br /&gt;
===su Benutzer wechseln===&lt;br /&gt;
&lt;br /&gt;
 su -             &lt;br /&gt;
Wechsel zum Rootaccount, wie wenn dieser sich neu anmelden würde. (Bsp: su -)&lt;br /&gt;
&lt;br /&gt;
 su Benutzernamen &lt;br /&gt;
Wechsel der Identität zu Benutzer (gegebenenfalls Passwortabfrage)&lt;br /&gt;
&lt;br /&gt;
 su -c Kommando   &lt;br /&gt;
Kommando wird als rootaccount ausgeführt&lt;br /&gt;
&lt;br /&gt;
==Der Standard Editor vi==&lt;br /&gt;
Der vi ist der Standardeditor in der Unixwelt. Er ist in jedem Unix-Derivat&lt;br /&gt;
enthalten.&lt;br /&gt;
Der Editor hat zwar den schlechten Ruf umständlich zu bedienen zu sein, ist&lt;br /&gt;
jedoch sehr leistungsfähig und systemübergreifend verfügbar. Beim vi handelt es&lt;br /&gt;
sich um einen rein textorientierten Editor, der mittels eigener Kommandos&lt;br /&gt;
gesteuert wird.&lt;br /&gt;
&lt;br /&gt;
Der Editor VIM ist eine weitere Verbesserung von VI und leichter zu bedienen.&lt;br /&gt;
Und unter Ubuntu/Debian mit &amp;quot;apt-get install vim&amp;quot; zu installieren.&lt;br /&gt;
&lt;br /&gt;
===Starten des Editors:===&lt;br /&gt;
&lt;br /&gt;
Der Editorstart erfolgt einfach durch die Eingabe des Kommandos vi mit dem&lt;br /&gt;
Dateinamen der zu editierenden Datei als Parameter.&lt;br /&gt;
Beispiel:        &lt;br /&gt;
 vi sux.txt&lt;br /&gt;
&lt;br /&gt;
===Die Betriebsmodi des vi:===&lt;br /&gt;
&lt;br /&gt;
Ein Umstand, der dem vi den Ruf der komplizierten Bedienbarkeit zugetragen hat,&lt;br /&gt;
sind die unterschiedlichen Betriebsmodi des Editors. Genauer gesagt verfügt der&lt;br /&gt;
vi über drei Betriebsmodi:&lt;br /&gt;
&lt;br /&gt;
====Kommandomodus:====&lt;br /&gt;
&lt;br /&gt;
Innerhalb dieses Modus werden die eingegebenen Zeichen direkt als Befehle des&lt;br /&gt;
Editors interpretiert und ausgeführt. Dabei gibt es weder ein Bereitschaftszeichen&lt;br /&gt;
(Prompt) noch ein Echo (Ausgabe). Der Kommandomodus ist der Modus, in dem&lt;br /&gt;
sich der vi direkt nach seinem Start befindet.&lt;br /&gt;
&lt;br /&gt;
====Zeilenmodus oder Exmodus:====&lt;br /&gt;
&lt;br /&gt;
Dieser Modus ist der einzige Modus mit einem eigenen Bereitschaftszeichen,&lt;br /&gt;
nämlich dem Doppelpunkt (:). Das Prompt wird ebenso wie die Befehlsausgaben&lt;br /&gt;
in der Statuszeile angezeigt.&lt;br /&gt;
&lt;br /&gt;
====Eingabemodus:====&lt;br /&gt;
&lt;br /&gt;
Der Eingabemodus ist derjenige, in welchem der zu bearbeitende Text bearbeitet&lt;br /&gt;
werden kann. Alle hier eingegebenen Zeichen werden als Text für die aktuelle&lt;br /&gt;
Datei interpretiert. Zwischen den unterschiedlichen Modi kann jederzeit&lt;br /&gt;
gewechselt werden. Von Kommandomodus gelangen Sie durch mehere Wege in&lt;br /&gt;
den Eingabemodus. Man kann durch folgende Aktionen wechslen&lt;br /&gt;
&lt;br /&gt;
{| border=1 cellpadding=2&lt;br /&gt;
|i&lt;br /&gt;
|Text vor der aktuellen Cursorposition einfügen&lt;br /&gt;
|-&lt;br /&gt;
|I&lt;br /&gt;
|Text am Zeilenanfang einfügen&lt;br /&gt;
|-&lt;br /&gt;
|a&lt;br /&gt;
|Text hinter der aktuellen Cursorposition einfügen&lt;br /&gt;
|-&lt;br /&gt;
|A&lt;br /&gt;
|Text am Zeilenende einfügen&lt;br /&gt;
|-&lt;br /&gt;
|o&lt;br /&gt;
|Unterhalb der aktuellen Zeile eine neue Zeile einfügen&lt;br /&gt;
|-&lt;br /&gt;
|O&lt;br /&gt;
|Oberhalb der aktuellen Zeile eine neue Zeile einfügen&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Durch das Drücken der ESC - Taste gelangt man in den Kommandomodus zurück.&lt;br /&gt;
&lt;br /&gt;
Im Kommandomodus können Sie durch den Text navigieren und auch den Text&lt;br /&gt;
selbst bearbeiten, z.B ausschneiden, kopieren usw. Dazu sind einige Kommandos&lt;br /&gt;
nötig, von denen die wichtigsten im Folgenden erläutert werden:&lt;br /&gt;
&lt;br /&gt;
 xinux@zero:/$ vi iwas.txt&lt;br /&gt;
&lt;br /&gt;
[[Image:vim.jpg]]&lt;br /&gt;
&lt;br /&gt;
===Benutzen des Kommandomodus===&lt;br /&gt;
====Steuerung des Cursors durch den Text====&lt;br /&gt;
&lt;br /&gt;
Mittels folgender Kommandos bewegt sich der Cursor durch den Text:&lt;br /&gt;
&lt;br /&gt;
{| border=1 cellpadding=2&lt;br /&gt;
|h&lt;br /&gt;
|Cursor ein Zeichen nach links&lt;br /&gt;
|-&lt;br /&gt;
|l&lt;br /&gt;
|Cursor ein Zeichen nach rechts&lt;br /&gt;
|-&lt;br /&gt;
|k&lt;br /&gt;
|Cursor eine Zeile nach oben&lt;br /&gt;
|-&lt;br /&gt;
|j&lt;br /&gt;
|Cursor eine Zeile nach unten&lt;br /&gt;
|-&lt;br /&gt;
|w&lt;br /&gt;
|Cursor ein Wort nach rechts&lt;br /&gt;
|-&lt;br /&gt;
|b&lt;br /&gt;
|Cursor ein Wort nach links&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Alle diese Kommandos können mit einem vorgestellten Wiederholungsfaktor&lt;br /&gt;
arbeiten. Der Befehl 3w verschiebt demnach den Cursor um 3 Wörter nach rechts.&lt;br /&gt;
&lt;br /&gt;
====Angaben zur Positionierung====&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{| border=1 cellpadding=2&lt;br /&gt;
|STRG+U&lt;br /&gt;
|1⁄2 Bildschirmseite nach oben&lt;br /&gt;
|-&lt;br /&gt;
|STRG+D&lt;br /&gt;
|1⁄2 Bildschirmseite nach unten&lt;br /&gt;
|-&lt;br /&gt;
|STRG+B&lt;br /&gt;
|1 Bildschirmseite nach oben&lt;br /&gt;
|-&lt;br /&gt;
|STRG+F&lt;br /&gt;
|1 Bildschirmseite nach unten&lt;br /&gt;
|-&lt;br /&gt;
|/Ausdruck&lt;br /&gt;
|Sucht den Ausdruck (vorwärts) Weitersuchen mit n , N&lt;br /&gt;
|-&lt;br /&gt;
|?Ausdruck&lt;br /&gt;
|Sucht den Ausdurck (rückwärts) Weitersuchen mit n , N&lt;br /&gt;
|-&lt;br /&gt;
|0&lt;br /&gt;
|Zeilenanfang&lt;br /&gt;
|-&lt;br /&gt;
|$&lt;br /&gt;
|Zeilenende&lt;br /&gt;
|-&lt;br /&gt;
|w&lt;br /&gt;
|Nächstes Wort&lt;br /&gt;
|-&lt;br /&gt;
|b&lt;br /&gt;
|Vorheriges Wort&lt;br /&gt;
|-&lt;br /&gt;
|fc&lt;br /&gt;
|Auf das Zeichen c springen. c steht für ein beliebiges Zeichen&lt;br /&gt;
|-&lt;br /&gt;
|G&lt;br /&gt;
|Letzte Zeile der Datei&lt;br /&gt;
|-&lt;br /&gt;
|ng&lt;br /&gt;
|n-te Zeile der Datei&lt;br /&gt;
|-&lt;br /&gt;
|H&lt;br /&gt;
|Anfang der Bildschirmseite&lt;br /&gt;
|-&lt;br /&gt;
|L&lt;br /&gt;
|Ende der Bildschirmseite&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
====Befehle zur Textbearbeitung -&amp;gt; Was soll geschehen====&lt;br /&gt;
&lt;br /&gt;
{| Border=1 Cellpadding=2&lt;br /&gt;
|x&lt;br /&gt;
|Löscht Zeichen&lt;br /&gt;
|-&lt;br /&gt;
|d&lt;br /&gt;
|Löschen und in den Puffer laden&lt;br /&gt;
|-&lt;br /&gt;
|c&lt;br /&gt;
|Ändern&lt;br /&gt;
|-&lt;br /&gt;
|y&lt;br /&gt;
|In den Puffer laden&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
====Weitere wichtige Befehle:====&lt;br /&gt;
&lt;br /&gt;
{| Border=1 Cellpadding=2&lt;br /&gt;
|p&lt;br /&gt;
|Aus dem Puffer einfügen&lt;br /&gt;
|-&lt;br /&gt;
|u&lt;br /&gt;
|Undo, macht den letzten Befehl rückgängig&lt;br /&gt;
|-&lt;br /&gt;
|STRG+R&lt;br /&gt;
|Redo, macht den letzten Undo rückgängig&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
===Zeilen- oder Exmodus===&lt;br /&gt;
&lt;br /&gt;
Wie schon erwähnt wird der Zeilen oder Exmodus durch einen : eingeleitet.&lt;br /&gt;
Es folgen einige Beispiele.&lt;br /&gt;
&lt;br /&gt;
Befehle zum Speichern und Beenden:&lt;br /&gt;
&lt;br /&gt;
 :w          Schreibt Datei&lt;br /&gt;
 :w Datei2   Schreibt eine Kopie in Datei2&lt;br /&gt;
 :w !        Schreibt Datei (übergehe Schreibschutz)&lt;br /&gt;
 :w ! Datei2 Schreibt eine Kopie in Datei2 (übergehe Schreibschutz)&lt;br /&gt;
 :q          Schließe Datei&lt;br /&gt;
 :q!         Schließe Datei (verwerfe Änderungen)&lt;br /&gt;
 :wq         Schreibe Datei und beende Editor&lt;br /&gt;
 :wq!        Schreibe Datei und beende Editor (übergehe Schreibschutz)&lt;br /&gt;
 :q!         Schließe Datei (verwerfe Änderungen)&lt;br /&gt;
 :h          Hilfe anzeigen, durch drücken von :q Beenden der Hilfe&lt;br /&gt;
 :e Datei3   Editiere Datei3&lt;br /&gt;
 :e #        Editere vorhergehende Datei&lt;br /&gt;
 :1,3co9     Kopiere von der ersten bis zu dritten Zeile &lt;br /&gt;
             und füge den Inhalt unterhalb der neunte Zeile ein.&lt;br /&gt;
&lt;br /&gt;
Interaktionen mit Unix:&lt;br /&gt;
&lt;br /&gt;
 :r Datei4   Fügt Inhalt der Datei4 nach dem Cursor ein&lt;br /&gt;
 :r ! Befehl Fügt Ausgabe des Befehls nach dem Cursor ein&lt;br /&gt;
 :! Befehl   Führt den Befehl aus&lt;br /&gt;
 :sh         Starte Subshell -&amp;gt; mit exit kehrt man wieder zurück&lt;br /&gt;
             Eingabemodus zurück&lt;br /&gt;
&lt;br /&gt;
====Ersetzen von Textteilen====&lt;br /&gt;
&lt;br /&gt;
Die grundsätzliche Syntax lautet:&lt;br /&gt;
&lt;br /&gt;
 :[Zeilennummer,Zeilennummer]s/Muster/Ersetzung/[gc]&lt;br /&gt;
&lt;br /&gt;
 :s/worf/kirn/              der erste worf wird in der aktuellen Zeile durch kirn ersetzt&lt;br /&gt;
 :1,9s/worf/kirn/g          von der 1. bis zur 9. Zeile werden alle worf durch kirn ersetzt&lt;br /&gt;
 :1,$s/worf/kirn/           von der ersten bis zur letzten Zeile ersetze ersten worf durch&lt;br /&gt;
                            kirn&lt;br /&gt;
 :.,$s/worf/kirn/g          von der aktuellen bis zur letzten Zeile ersetze alle worf durch&lt;br /&gt;
                            kirn&lt;br /&gt;
 :1,.s/worf/kirn/c          von der 1. bis zur aktuellen Zeile ersetze worf durch kirn, frage&lt;br /&gt;
                            aber nach&lt;br /&gt;
 :1,$s/^worf/kirn/          von der ersten bis zur letzten Zeile ersetze worf am&lt;br /&gt;
                            Zeilenanfang durch kirn&lt;br /&gt;
 :4,$s/worf$/kirn/          von der 4. bis zur letzten Zeile ersetze worf am Zeilenende&lt;br /&gt;
                            durch kirn&lt;br /&gt;
 :1,$s/^#//                 lösche alle Kommentarzeichen&lt;br /&gt;
 :1,$s/^.orf/kirn/           ersetze alles was am Zeilenanfang ein beliebiges Zeichen hat&lt;br /&gt;
                            gefolgt von einem orf durch kirn&lt;br /&gt;
 :1,$s/^[A-Z]orf/kirn/g     suche nach einem Großbuchstaben am Anfang der Zeile&lt;br /&gt;
                            gefolgt von einem orf und ersetze durch kirn&lt;br /&gt;
 :1,$s/^M[ae][iy]e*r/kirn/  suche alles, was am Anfang der Zeile ein großes M enthält,&lt;br /&gt;
                            gefolgt von einem a oder e , gefolgt von einem i oder y ,&lt;br /&gt;
                            gefolgt von einem e , welches 0 oder N mal vorkommen kann,&lt;br /&gt;
                            gefolgt von einem r und ersetze es durch kirn&lt;br /&gt;
&lt;br /&gt;
==Reguläre Ausdrücke==&lt;br /&gt;
&lt;br /&gt;
{| Border=1 Cellpadding=2&lt;br /&gt;
|c&lt;br /&gt;
|Ein einzelner Buchstabe passt auf sich selbst&lt;br /&gt;
|-&lt;br /&gt;
|.&lt;br /&gt;
|Ein Punkt passt auf jedes Zeichen außer auf das Zeilenende&lt;br /&gt;
|-&lt;br /&gt;
|*&lt;br /&gt;
|Das dem Operator * vorangehende Muster kann 0 oder öfter vorkommen&lt;br /&gt;
|-&lt;br /&gt;
|^&lt;br /&gt;
|(Caret) passt auf den Zeilenanfang&lt;br /&gt;
|-&lt;br /&gt;
|$&lt;br /&gt;
|Passt auf das Zeilenende&lt;br /&gt;
|-&lt;br /&gt;
|\&lt;br /&gt;
|Das folgende Sonderzeichen wird entwertet&lt;br /&gt;
|-&lt;br /&gt;
|[...]&lt;br /&gt;
|Passt auf &amp;quot;genau&amp;quot; eins in [...] angebenen Zeichen&lt;br /&gt;
|-&lt;br /&gt;
|[^...]&lt;br /&gt;
|Passt auf &amp;quot;genau&amp;quot; ein Zeichen welches nicht in [...] angebenen ist&lt;br /&gt;
|-&lt;br /&gt;
|\&amp;lt;&lt;br /&gt;
|Passt auf den Wortanfang&lt;br /&gt;
|-&lt;br /&gt;
|\&amp;gt;&lt;br /&gt;
|Passt auf das Wortende&lt;br /&gt;
|-&lt;br /&gt;
|\+&lt;br /&gt;
|Das dem Operator \+ vorangehende Muster kann 1 oder öfter vorkommen&lt;br /&gt;
|-&lt;br /&gt;
|&amp;amp;&lt;br /&gt;
|Setzt das gefunden Suchmuster ein&lt;br /&gt;
|-&lt;br /&gt;
|\(...\)&lt;br /&gt;
|Speichert den Text auf den das Suchmuster passt zur späteren Verwendung&lt;br /&gt;
|-&lt;br /&gt;
|\n&lt;br /&gt;
|Setzt das vorangehende, mit \(...\) Gefundene wieder ein&lt;br /&gt;
|-&lt;br /&gt;
|(...)&lt;br /&gt;
|Gruppiert Auswahlmöglichkeiten&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;nowiki&amp;gt;|&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
|Trennt Auswahlmöglichkeiten&lt;br /&gt;
|-&lt;br /&gt;
|\b&lt;br /&gt;
|Passt auf den Anfang oder das Ende eines Wortes&lt;br /&gt;
|-&lt;br /&gt;
|\B&lt;br /&gt;
|Symbolisiert den Raum innerhalb eines Wortes&lt;br /&gt;
|-&lt;br /&gt;
|\w&lt;br /&gt;
|Passt auf alle alphanumerischen Zeichen [A-Za-z0-9]&lt;br /&gt;
|-&lt;br /&gt;
|\W&lt;br /&gt;
|Passt auf alle nichtalphanumerischen Zeichen [^A-Za-z0-9]&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Die Rangfolge der Operatoren(von der höchsten zur niedrigsten)&lt;br /&gt;
:(, ), ?, *, + | .&lt;br /&gt;
&lt;br /&gt;
Die anderen Operatoren sind mit den anderen Buchstaben gleichrangig.&lt;br /&gt;
&lt;br /&gt;
===Beispiel zum Suchen===&lt;br /&gt;
&lt;br /&gt;
 Suchmuster               Passt auf&lt;br /&gt;
 ^Tuxer                   Tuxer am Zeilenanfang&lt;br /&gt;
 [tT]uxer                 Tuxer oder tuxer&lt;br /&gt;
 80[23]?86                8086, 80286 oder 80386&lt;br /&gt;
&lt;br /&gt;
===grep===&lt;br /&gt;
&lt;br /&gt;
Mit grep ist es möglich, in Dateien nach regulären Ausdrücken zu suchen. Wenn&lt;br /&gt;
eine Übereinstimmung gefunden wird, wird die komplette Zeile auf die&lt;br /&gt;
Standardausgabe geschrieben. grep kann auch von STDIN lesen.Es ist&lt;br /&gt;
empfehlenswert, sich anzugwöhnen ,das Suchmuster in Anführungszeichen zu&lt;br /&gt;
schreiben. Es gibt 3 Arten fgrep = fastgrep , grep und egrep egrep&lt;br /&gt;
&lt;br /&gt;
Beispiel:&lt;br /&gt;
&lt;br /&gt;
 root@zero:~# cat text&lt;br /&gt;
 quatsch&lt;br /&gt;
 quatsch&lt;br /&gt;
 quatsch&lt;br /&gt;
 wichtig&lt;br /&gt;
 quatsch&lt;br /&gt;
 root@zero:~# grep wichtig text&lt;br /&gt;
 wichtig&lt;br /&gt;
 root@zero:~# &lt;br /&gt;
&lt;br /&gt;
 -c                   meldet nur die Gesamtzahl der Fundstellen&lt;br /&gt;
 -v                   zeigt nur Zeilen, die »Ausdruck« nicht enthalten&lt;br /&gt;
 -i                   ignoriert Groß- und Kleinschreibung&lt;br /&gt;
 -l                    meldet nur Dateinamen mit Fundstellen&lt;br /&gt;
 -n                   listet Zeilennummern zu jeder Fundstelle&lt;br /&gt;
 -f                   Dateiname »Dateiname« enthält die Such-Ausdrücke&lt;br /&gt;
 -E                   ist ein erweiterter regulärer Ausdruck (egrep)&lt;br /&gt;
 -F                   (Muster, Ausdruck) ist ein Muster (String) (fgrep)&lt;br /&gt;
 -b                   listet auch die Position der Fundstellen&lt;br /&gt;
 -C    Anzahl         Anzahl von Zeilen werden nach der Fundstelle ausgegeben&lt;br /&gt;
 -B    Anzahl         Anzahl von Zeilen werden vor der Fundstelle ausgegeben&lt;br /&gt;
 -r                   Durchsucht Verzeichnisse rekursiv&lt;br /&gt;
&lt;br /&gt;
==Useridendifikation==&lt;br /&gt;
===/etc/passwd===&lt;br /&gt;
====Beschreibung====&lt;br /&gt;
passwd ist eine ASCII-Datei, die eine Liste der Benutzer des Systems und deren&lt;br /&gt;
Passwörter enthält. Die Passwortdatei sollte für alle Benutzer lesbar sein, was für&lt;br /&gt;
dieVerschlüsselung notwendig ist; aber nur vom Superuser beschreibbar. Wenn&lt;br /&gt;
Sie eine neue Kennung einrichten, lassen Sie das Passwort-Feld in der Datei frei&lt;br /&gt;
und benutzen Sie passwd(1), um dem System ein Passwort für die neue Kennung&lt;br /&gt;
mitzuteilen.&lt;br /&gt;
&lt;br /&gt;
Die Datei /etc/passwd enthält einen Eintrag pro Zeile mit dem Format:&lt;br /&gt;
login_name:passwd:UID:GID:user_name:directory:shell&lt;br /&gt;
====Die Bedeutung der Felder:====&lt;br /&gt;
# login_name Kennung des Benutzers auf dem System.&lt;br /&gt;
# password   Hier steht bei Shadowsystemen ein x. Die Passwörter sind in der Datei /etc/shadow&lt;br /&gt;
# UID        Die numerische Benutzernummer.&lt;br /&gt;
#  GID        Die numerische Gruppennummer des Benutzers.&lt;br /&gt;
# user_name Ein optionales Kommentarfeld, oft benutzt für den vollen Namen des Benutzers und weitere Informationen (Telefon, Raum-Nummer etc.).&lt;br /&gt;
# directory  Das Heimatverzeichnis $HOME des Benutzers.&lt;br /&gt;
# shell      Das Programm, das beim Einloggen gestartet werden soll (falls nicht nötig, benutzen Sie /bin/bash).&lt;br /&gt;
&lt;br /&gt;
===/etc/group===&lt;br /&gt;
====Beschreibung====&lt;br /&gt;
etc/group ist eine ASCII Datei, die Gruppen definiert, zu denen Benutzer&lt;br /&gt;
gehören. Es gibt nur einen Eintrag pro Zeile; jede Zeile hat folgendes Format:&lt;br /&gt;
         GruppenName:Passwort:GruppenKennung:BenutzerListe&lt;br /&gt;
Beschreibung der Felder:&lt;br /&gt;
#     GruppenName      Die Bezeichnung der Gruppe.&lt;br /&gt;
#     Passwort         Das (verschlüsselte) Gruppen-Passwort. Wenn dieses Feld leer ist, wird kein Passwort benötigt.&lt;br /&gt;
#     GruppenKennung Die numerische Identifikation der Gruppe.&lt;br /&gt;
#     BenutzerListe    Alle Namen der Mitglieder, getrennt durch Kommas.&lt;br /&gt;
&lt;br /&gt;
===/etc/shadow===&lt;br /&gt;
====Beschreibung====&lt;br /&gt;
shadow beinhaltet Informationen zu den verschlüsselten Passwörten, zu den&lt;br /&gt;
Benutzerzugängen und weitere Informationen zur Laufzeit der Passwörter.&lt;br /&gt;
 Name:Passwort:Letzte Änderung:Mintage:Maxtage:Warntage:Inaktiv:Ablauf&lt;br /&gt;
#    Der Loginname&lt;br /&gt;
#    verschlüsseltes Passwort &lt;br /&gt;
&amp;lt;nowiki&amp;gt;*&amp;lt;/nowiki&amp;gt; bedeutet Benutzer kann sich nicht einlogen&lt;br /&gt;
! bedeutet Benutzer hat kein Passwort gesetzt&lt;br /&gt;
#    Tage seit dem 1 Januar 1970 an dem das Passwort letztmals geändert wurde&lt;br /&gt;
#    Tage, die das Passwort behalten werden muss, bevor es wieder geändert werden kann&lt;br /&gt;
#     Die Anzahl der Tage, nach denen der Benutzer das Passwort wieder ändern muss&lt;br /&gt;
#    Anzahl der Tage bevor das Passwort abläuft und der Benutzer gewarnt wird&lt;br /&gt;
#    Wenn der Zugang diese Anzahl von Tagen nicht benutzt wird, wird der Zugang gesperrt&lt;br /&gt;
#    Tag seit dem 1 Januar 1970, an dem der Zugang gesperrt wird&lt;br /&gt;
#    Reserviertes Feld&lt;br /&gt;
&lt;br /&gt;
Die Datei sollte aus Sicherheitgründen nicht für einen normalen Benutzer lesbar&lt;br /&gt;
sein.&lt;br /&gt;
&lt;br /&gt;
==Programme zur Userverwaltung==&lt;br /&gt;
===useradd===&lt;br /&gt;
User anlegen&lt;br /&gt;
 root@zero:~# useradd -m -u 1011 -g users -G admin -d /home/erwin -s /bin/bash -c &amp;quot;Erwin Lehman&amp;quot;  erwin&lt;br /&gt;
{| border=1 cellpadding=2&lt;br /&gt;
|&amp;quot;-m&amp;quot;&lt;br /&gt;
|Lege Homedirectory an&lt;br /&gt;
|-&lt;br /&gt;
|&amp;quot;-u 1011&amp;quot;&lt;br /&gt;
|Userid wird zugeordnet&lt;br /&gt;
|-&lt;br /&gt;
|&amp;quot;-g users&amp;quot;&lt;br /&gt;
|Primäre Gruppe wird zugeordnet&lt;br /&gt;
|-&lt;br /&gt;
|&amp;quot;-G admin&amp;quot;&lt;br /&gt;
|Sekunbdäre Gruppe wird zugeordnet&lt;br /&gt;
|-&lt;br /&gt;
|&amp;quot;-d /home/erwin/&amp;quot;&lt;br /&gt;
|Name des Homedirectory&lt;br /&gt;
|-&lt;br /&gt;
|&amp;quot;-s /bin/bash&amp;quot;&lt;br /&gt;
|Bash wird zugeordnet&lt;br /&gt;
|- &lt;br /&gt;
|&amp;quot;-c Erwin Lehman&amp;quot;&lt;br /&gt;
|Kommentarfeld&lt;br /&gt;
|-&lt;br /&gt;
|&amp;quot;erwin&amp;quot; &lt;br /&gt;
|Name des Users&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Defaulteinstellungen anzeigen&lt;br /&gt;
 root@zero:~# useradd -D&lt;br /&gt;
 GROUP=100&lt;br /&gt;
 HOME=/home&lt;br /&gt;
 INACTIVE=-1&lt;br /&gt;
 EXPIRE=&lt;br /&gt;
 SHELL=/bin/sh&lt;br /&gt;
 SKEL=/etc/skel&lt;br /&gt;
 CREATE_MAIL_SPOOL=no&lt;br /&gt;
&lt;br /&gt;
Defaulteinstellungen ändern&lt;br /&gt;
 useradd -D -s /bin/bash&lt;br /&gt;
&lt;br /&gt;
Konfigurationsdatei&lt;br /&gt;
 root@zero:~# cat /etc/default/useradd &lt;br /&gt;
 SHELL=/bin/bash&lt;br /&gt;
 GROUP=100&lt;br /&gt;
 HOME=/home&lt;br /&gt;
 INACTIVE=-1&lt;br /&gt;
 EXPIRE=&lt;br /&gt;
 SKEL=/etc/skel&lt;br /&gt;
 CREATE_MAIL_SPOOL=no&lt;br /&gt;
&lt;br /&gt;
===usermod===&lt;br /&gt;
User modifizieren&lt;br /&gt;
 root@zero:~# usermod -l fritz -s /bin/sh -G admin,video erwin&lt;br /&gt;
{| border=1 cellpadding=2&lt;br /&gt;
|&amp;quot;-l fritz&amp;quot;&lt;br /&gt;
|Neuer Username&lt;br /&gt;
|-&lt;br /&gt;
|&amp;quot;-s /bin/sh&amp;quot;&lt;br /&gt;
|Neue Shell&lt;br /&gt;
|-&lt;br /&gt;
|&amp;quot;-G admin, video&amp;quot;&lt;br /&gt;
|Sekunbdäre Gruppen werden zugeordnet&lt;br /&gt;
|-&lt;br /&gt;
|&amp;quot;erwin&amp;quot; &lt;br /&gt;
|Name des Users&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
===userdel===&lt;br /&gt;
User inklusive Homedirectory löschen&lt;br /&gt;
 root@zero:~# userdel -r fritz&lt;br /&gt;
&lt;br /&gt;
===passwd===&lt;br /&gt;
Rootpasswort ändern&lt;br /&gt;
 root@zero:~# passwd &lt;br /&gt;
 Geben Sie ein neues UNIX Passwort ein:'''sysadm''' &lt;br /&gt;
 Geben Sie das neue UNIX Passwort erneut ein:'''sysadm''' &lt;br /&gt;
 passwd: Passwort erfolgreich geändert&lt;br /&gt;
&lt;br /&gt;
Passwort von tux ändern&lt;br /&gt;
 root@zero:~# passwd tux&lt;br /&gt;
 Geben Sie ein neues UNIX Passwort ein:'''suxer''' &lt;br /&gt;
 Geben Sie das neue UNIX Passwort erneut ein:'''suxer'''&lt;br /&gt;
 passwd: Passwort erfolgreich geändert&lt;br /&gt;
&lt;br /&gt;
Minimale und Maximale Gültigkeit des Passwortes von tux festlegen&lt;br /&gt;
 root@zero:~# passwd -n 5 -x 120 tux&lt;br /&gt;
&lt;br /&gt;
===groupadd===&lt;br /&gt;
 root@zero:~# groupadd -f -g 2001 xinuxer&lt;br /&gt;
{| border=1 cellpadding=2&lt;br /&gt;
|&amp;quot;-f&amp;quot;&lt;br /&gt;
|Überschreibe bestehende Gruppe&lt;br /&gt;
|-&lt;br /&gt;
|&amp;quot;-g 2001&amp;quot;&lt;br /&gt;
|GID der Gruppe&lt;br /&gt;
|-&lt;br /&gt;
|&amp;quot;xinuxer&amp;quot; &lt;br /&gt;
|Name des Gruppe&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==chmod==&lt;br /&gt;
Die Syntax des Befehls chmod lautet:&lt;br /&gt;
&lt;br /&gt;
'''chmod''' WerWieWas [,WerWieWas,.....] Dateiliste&lt;br /&gt;
&lt;br /&gt;
oder&lt;br /&gt;
&lt;br /&gt;
'''chmod''' Oktalzahl Dateiliste&lt;br /&gt;
&lt;br /&gt;
Durch WerWieWas bzw. Oktalzahl wird die Rechtetabelle definiert. Innerhalb von&lt;br /&gt;
WerWieWas darf es kein Leerzeichen geben. Wer bezeichnet den Benutzerkreis,&lt;br /&gt;
dem man Rechte gibt, Wie die Art, in der die Rechte gegeben werden und Was die&lt;br /&gt;
Rechte als solche. Im einzelnen können folgende Kürzel benutzt werden:&lt;br /&gt;
&lt;br /&gt;
Für Wer kann eines der folgenden Kürzel oder eine Kombination davon stehen:&lt;br /&gt;
 u                   (user) Rechte für den Dateibesitzer&lt;br /&gt;
 g                   (group) Rechte für die Gruppe&lt;br /&gt;
 o                   (others) Rechte für alle anderen Benutzer&lt;br /&gt;
 a                   (all) Rechte für alle Benutzer&lt;br /&gt;
Für Wie steht eines der folgenden Kürzel:&lt;br /&gt;
 +                   Die Rechte werden zu den vorhandenen zusätzlich vergeben&lt;br /&gt;
 -                   Die im Folgenden genannten Rechte werden entzogen&lt;br /&gt;
 =                   Die im Folgenden genannten Rechte ersetzen die bisherigen&lt;br /&gt;
Für Was steht eines der folgenden Kürzel:&lt;br /&gt;
 r                   (read) lesen&lt;br /&gt;
 w                   (write) schreiben&lt;br /&gt;
 x                   (execute) ausführen&lt;br /&gt;
oder diese Sonderformen&lt;br /&gt;
 s                   (usersbit) Programm läuft unter der UID des Besitzers&lt;br /&gt;
 s                   (groupsbit)Programm läuft unter der GID des GRUPPE&lt;br /&gt;
 t                   (stickybit) Dateien im Verzeichnis darf nur Besitzer löschen&lt;br /&gt;
&lt;br /&gt;
===Beispiel===&lt;br /&gt;
Setze für alle Schreib- und Leserecht&lt;br /&gt;
 xinux@zero:~$ chmod a=rw test &lt;br /&gt;
 xinux@zero:~$ ls -l test &lt;br /&gt;
 -rw-rw-rw- 1 xinux xinux 0 2009-06-16 12:01 test&lt;br /&gt;
 xinux@zero:~$ &lt;br /&gt;
&lt;br /&gt;
Erteile Besitzer Ausführungsrecht&lt;br /&gt;
 xinux@zero:~$ chmod u+x test ; ls -l test &lt;br /&gt;
 -rwxrw-rw- 1 xinux xinux 0 2009-06-16 12:01 test&lt;br /&gt;
 xinux@zero:~$ &lt;br /&gt;
&lt;br /&gt;
===chmod oktale Schreibweise===&lt;br /&gt;
 Specialrights        User           Group         Other&lt;br /&gt;
 usbit gsbit sticky    r    w   x     r   w   x     r   w   x&lt;br /&gt;
   1     1      1      1    1   1     1   1   1     1   1   1&lt;br /&gt;
   0     0      0      0    0   0     0   0   0     0   0   0&lt;br /&gt;
 Oktale Wertigkeit pro Recht&lt;br /&gt;
   4     2       1     4    2   1     4   2   1     4   2   1&lt;br /&gt;
&lt;br /&gt;
===Beispiele===&lt;br /&gt;
 xinux@zero:~$ chmod 751 test ; ls -l test&lt;br /&gt;
 -rwxr-x--x 1 xinux xinux 0 2009-06-16 12:01 test&lt;br /&gt;
 xinux@zero:~$ &lt;br /&gt;
&lt;br /&gt;
 xinux@zero:~$ chmod 4770 test ; ls -l test&lt;br /&gt;
 -rwsrwx--- 1 xinux xinux 0 2009-06-16 12:01 test&lt;br /&gt;
 xinux@zero:~$ &lt;br /&gt;
&lt;br /&gt;
 xinux@zero:~$ chmod 0 test ; ls -l test &lt;br /&gt;
 ---------- 1 xinux xinux 0 2009-06-16 12:01 test&lt;br /&gt;
&lt;br /&gt;
===chmod Optionen===&lt;br /&gt;
 -c   (changes) es werden nur die Dateien angezeigt, deren Zugriffsrechte tatsächlich verändert werden&lt;br /&gt;
 -f   (silent, quiet) Fehlermeldungen wegen fehlgeschlagener Änderungsversuche werden unterdrückt&lt;br /&gt;
 -v   (verbose) alle Aktionen werden angezeigt&lt;br /&gt;
 -R   (recursive) die Zugriffsrechte aller Dateien in den Unterverzeichnissen werden ebenfalls geändert&lt;br /&gt;
&lt;br /&gt;
Theoretisch sind alle Kombinationen der Zugriffsrechte denkbar, aber der&lt;br /&gt;
Eigentümer einer Datei darf diese immer lesen, selbst wenn das Lesebit nicht&lt;br /&gt;
gesetzt ist. Genauso macht es wenig Sinn, eine gewöhnliche Textdatei als&lt;br /&gt;
ausführbar zu setzen; die Shell wird damit nichts anfangen können. Ein x für ein&lt;br /&gt;
Verzeichnis gibt an, dass in dieses gewechselt werden kann.&lt;br /&gt;
&lt;br /&gt;
Rechte sind verbindlich&lt;br /&gt;
&lt;br /&gt;
Interessant ist auch ein Konstrukt folgender Art&lt;br /&gt;
 -rwx---rwx&lt;br /&gt;
&lt;br /&gt;
das angibt, dass mit der Datei alles angestellt werden kann, außer durch Nutzer der&lt;br /&gt;
Gruppe. Versucht irgend jemand, der nicht der Gruppe des Eigentümers angehört,&lt;br /&gt;
die Datei zu modifizieren, wird ihm dies gelingen, einem Gruppenmitglied bleibt&lt;br /&gt;
dies versagt, obwohl er ja gleichzeitig ein &amp;quot;Anderer&amp;quot; ist. D.h. die Rechte der&lt;br /&gt;
Gruppe sind verbindlicher, als die Rechte der anderen!&lt;br /&gt;
&lt;br /&gt;
===Bedeutungen der Zugriffsarten===&lt;br /&gt;
====Dateien====&lt;br /&gt;
* r: Der Inhalt der Datei kann gelesen und damit auch kopiert werden. &lt;br /&gt;
 root@zero:~# cat test&lt;br /&gt;
 Dies ist eine Testdatei&lt;br /&gt;
  &lt;br /&gt;
 root@zero:~# cp test backup&lt;br /&gt;
&lt;br /&gt;
* w: Der Inhalt der Datei darf verändert werden. Ob die Datei gelöscht werden kann ist&lt;br /&gt;
keine Eigenschaft der Datei, sondern des Verzeichnisses, indem sich die Datei befindet.&lt;br /&gt;
 root@zero:~# cat &amp;gt; test&lt;br /&gt;
 Hier steht jetzt was anderes&lt;br /&gt;
 ^C&lt;br /&gt;
 root@zero:~# cat test&lt;br /&gt;
 Hier steht jetzt was anderes&lt;br /&gt;
  &lt;br /&gt;
 xinux@zero:~$ ls -ld verzeichnis/&lt;br /&gt;
 dr-xr-xr-x 2 xinux xinux 4096 2009-06-18 11:16 verzeichnis/&lt;br /&gt;
 xinux@zero:~/verzeichnis$ rm text&lt;br /&gt;
 rm: Entfernen von „text“ nicht möglich: Permission denied&lt;br /&gt;
&lt;br /&gt;
* x: Ausführrecht für Programme und Skripte&lt;br /&gt;
 xinux@zero:~$ ./programm&lt;br /&gt;
 -bash: ./programm: Permission denied&lt;br /&gt;
 xinux@zero:~$ chmod +x programm&lt;br /&gt;
 xinux@zero:~$ ./programm&lt;br /&gt;
 Test&lt;br /&gt;
  test&lt;br /&gt;
&lt;br /&gt;
====Verzeichnisse====&lt;br /&gt;
* r: Die Einträge in dem Verzeichnis sind lesbar.&lt;br /&gt;
Leserecht von verzeichnis/ entziehen&lt;br /&gt;
 xinux@zero:~$ chmod a-r verzeichnis/&lt;br /&gt;
 xinux@zero:~$ ls verzeichnis/&lt;br /&gt;
 ls: Öffnen von Verzeichnis verzeichnis/ nicht möglich: Permission denied&lt;br /&gt;
Leserecht für Benutzer und Gruppe vergeben&lt;br /&gt;
 xinux@zero:~$ chmod a+r verzeichnis/&lt;br /&gt;
 xinux@zero:~$ ls verzeichnis/&lt;br /&gt;
 text&lt;br /&gt;
&lt;br /&gt;
* w: Die Einträge in dem Verzeichnis können geändert werden. &lt;br /&gt;
Neue Datei erstellen&lt;br /&gt;
 xinux@zero:~$ touch neu&lt;br /&gt;
 xinux@zero:~$ ls neu&lt;br /&gt;
 neu&lt;br /&gt;
&lt;br /&gt;
Datei löschen&lt;br /&gt;
 xinux@zero:~$ rm neu&lt;br /&gt;
 xinux@zero:~$ ls neu&lt;br /&gt;
 ls: Zugriff auf neu nicht möglich: No such file or directory&lt;br /&gt;
&lt;br /&gt;
* x: Der Name des Verzeichnisses kann in einem Pfadnamen erscheinen.&lt;br /&gt;
Verzeichnis ohne x Recht&lt;br /&gt;
 xinux@zero:~$ chmod a-x verzeichnis/&lt;br /&gt;
Wechseln in Verzeichnis mangels x-Recht nicht möglich&lt;br /&gt;
 xinux@zero:~$ cd verzeichnis/&lt;br /&gt;
 -bash: cd: verzeichnis/: Permission denied&lt;br /&gt;
x-Recht vergeben&lt;br /&gt;
 xinux@zero:~$ chmod a+x verzeichnis/&lt;br /&gt;
damit Wechsel in Verzeichnis möglich&lt;br /&gt;
 xinux@zero:~$ cd verzeichnis/&lt;br /&gt;
 xinux@zero:~/verzeichnis$ pwd&lt;br /&gt;
 /home/xinux/verzeichnis&lt;br /&gt;
&lt;br /&gt;
====umask====&lt;br /&gt;
Neue Dateien und Verzeichnisse werden mit ein und denselben Zufriffsrechten erzeugt.&lt;br /&gt;
 xinux@zero:~$ mkdir text&lt;br /&gt;
 xinux@zero:~$ touch textdat&lt;br /&gt;
 xinux@zero:~$ ls -ld text*&lt;br /&gt;
 drwxr-xr-x 2 xinux xinux 4096 2009-06-18 11:37 text&lt;br /&gt;
 -rw-r--r-- 1 xinux xinux    0 2009-06-18 11:37 textdat&lt;br /&gt;
&lt;br /&gt;
Zuständig für dieses Verhalten ist die sogenannte umask, die oft in der Datei&lt;br /&gt;
/etc/profile auf den Wert 022 voreingestellt ist. Zusätzlich wird noch eine&lt;br /&gt;
Maximalmaske benötigt, die sich für Verzeichnisse und andere Dateien&lt;br /&gt;
unterscheidet. Die bei der Erzeugung gesetzten Rechte entstehen nun, indem von&lt;br /&gt;
der Maximalmaske der durch die umask vorgegebene Wert subtrahiert wird:&lt;br /&gt;
&lt;br /&gt;
{| border=1 cellpadding=2&lt;br /&gt;
!&lt;br /&gt;
! Dateien&lt;br /&gt;
! Verzeichnisse&lt;br /&gt;
|-&lt;br /&gt;
| Systemvorgabe&lt;br /&gt;
| 666&lt;br /&gt;
| 777&lt;br /&gt;
|-&lt;br /&gt;
| -umask&lt;br /&gt;
| 022&lt;br /&gt;
| 022&lt;br /&gt;
|-&lt;br /&gt;
| Ergebnis&lt;br /&gt;
| 644&lt;br /&gt;
| 755&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
 xinux@zero:~$ grep umask /etc/profile&lt;br /&gt;
 umask 022&lt;br /&gt;
&lt;br /&gt;
==Gruppenzugehörigkeit==&lt;br /&gt;
===newgrp===&lt;br /&gt;
Ändert die Gruppenzugehörigkeit eines Benutzers auf die angegebene Gruppe. Wenn keine Gruppe angegeben wird, wird die &lt;br /&gt;
Anmeldegruppe des Benutzers verwendet. Die neue Gruppe wird anschließend fü Zugriffskontrollen verwendet.&lt;br /&gt;
&lt;br /&gt;
 newgrp Gruppenname&lt;br /&gt;
&lt;br /&gt;
 root@zero:~# newgrp hacker&lt;br /&gt;
 root@zero:~# id&lt;br /&gt;
 uid=0(root) gid=1006(hacker) Gruppen=0(root),1006(hacker)&lt;br /&gt;
&lt;br /&gt;
===chgrp===&lt;br /&gt;
Verändert die Besitzugehörigkeit zu der angegebenen Gruppe&lt;br /&gt;
&lt;br /&gt;
 chgrp [Optionen] Gruppe Datei(en)&lt;br /&gt;
&lt;br /&gt;
Optionen:&lt;br /&gt;
 -c Zeigt Veränderungen an&lt;br /&gt;
 -f Unterdrückt die meisten Fehlermeldungen&lt;br /&gt;
 -R Verändert Dateien und Verzeichnisse rekursiv&lt;br /&gt;
 -v Gibt geschwätzige Ausgabe aus.&lt;br /&gt;
&lt;br /&gt;
 root@zero:~# ls -l&lt;br /&gt;
 ...&lt;br /&gt;
 d-wx--x--x  3 root root 4096 2009-06-18 13:34 verzeichnis&lt;br /&gt;
 &lt;br /&gt;
 root@zero:~# chgrp -R xinux verzeichnis/&lt;br /&gt;
 root@zero:~# ls -l&lt;br /&gt;
 ...&lt;br /&gt;
 d-wx--x--x  3 root xinux 4096 2009-06-18 13:34 verzeichnis&lt;br /&gt;
&lt;br /&gt;
 xinux@zero:~$ cd /root/verzeichnis/&lt;br /&gt;
 xinux@zero:/root/verzeichnis$ pwd&lt;br /&gt;
 /root/verzeichnis&lt;br /&gt;
&lt;br /&gt;
===chown===&lt;br /&gt;
Ändert den Eigentümer von einer oder mehreren Dateien in den angegebenen Benutzer. &lt;br /&gt;
chown erlaubt ebenfalls das Ändern der Gruppeneigentümreschaft. Nur der aktuelle Eigentümer einer&lt;br /&gt;
Datei oder der Superuser (root) darf die Eigentumsverhältnisse ändern.&lt;br /&gt;
&lt;br /&gt;
 chown [Optionen] Benutzer(:Gruppe) Dateien&lt;br /&gt;
&lt;br /&gt;
Optionen:&lt;br /&gt;
 -c Gibt Informationen über die veränderten Dateien aus&lt;br /&gt;
 --dereference Symbolischen Links folgen&lt;br /&gt;
 -v Gibt Informationen über alle Dateien aus, die chown zu ändern versucht, egal, ob die Änderung erfolgt ist oder nicht&lt;br /&gt;
 -R Geht rekursiv durch alle Unterverzeichnisse und führt die Änderungen durch. &lt;br /&gt;
&lt;br /&gt;
 root@zero:~# chown -R xinux.xinux verzeichnis/&lt;br /&gt;
 root@zero:~# ls -l&lt;br /&gt;
 insgesamt 12&lt;br /&gt;
 drwx------ 13 root  root  4096 2009-04-21 15:11 profile&lt;br /&gt;
 --w-------  1 root  root     0 2009-06-18 11:13 test&lt;br /&gt;
 -rw-r--r--  1 root  root    40 2009-06-18 12:04 text&lt;br /&gt;
 drwxrwx--x  3 xinux xinux 4096 2009-06-18 13:39 verzeichnis&lt;br /&gt;
 &lt;br /&gt;
 root@zero:~# chown -R -c xinux.xinux verzeichnis/&lt;br /&gt;
 &lt;br /&gt;
 root@zero:~# chown -R -v xinux.xinux verzeichnis/&lt;br /&gt;
 Eigentümer von „verzeichnis/01“ als xinux:xinux erhalten&lt;br /&gt;
 Eigentümer von „verzeichnis/test“ als xinux:xinux erhalten&lt;br /&gt;
 Eigentümer von „verzeichnis/“ als xinux:xinux erhalten&lt;br /&gt;
&lt;br /&gt;
==Eingabe/Ausgabe==&lt;br /&gt;
Standardeingabe (0): Laufende Programme erwarten von hier ihre Eingaben (normalerweise handelt es sich um die Tastatur).&lt;br /&gt;
&lt;br /&gt;
Standardausgabe (1): Programme schreiben auf diese ihre Ausgaben (Bildschirm).&lt;br /&gt;
&lt;br /&gt;
Standardfehlerausgabe (2) : Fehlerausgaben landen hier (Bildschirm, aber nur die aktive Konsole).&lt;br /&gt;
&lt;br /&gt;
[[Bild:std.jpg]]&lt;br /&gt;
&lt;br /&gt;
===cat===&lt;br /&gt;
Das Programm cat liest von STDIN und gibt es STDOUT wieder aus&lt;br /&gt;
&lt;br /&gt;
Einlesen der Datei text&lt;br /&gt;
 root@zero:~# cat &amp;lt; text&lt;br /&gt;
 wichtig&lt;br /&gt;
&lt;br /&gt;
Schreiben in die Datei text, dies überschreibt den bisherigen Inhalt der Datei&lt;br /&gt;
 root@zero:~# cat &amp;gt; text&lt;br /&gt;
 sogar noch wichtiger &lt;br /&gt;
 &lt;br /&gt;
Ausgeben der Datei text&lt;br /&gt;
 root@zero:~# cat text &lt;br /&gt;
 sogar noch wichtiger&lt;br /&gt;
&lt;br /&gt;
Lesen aus der Datei text und schreiben in die Datei neuertext&lt;br /&gt;
 root@zero:~# cat &amp;lt; text &amp;gt; neuertext&lt;br /&gt;
 root@zero:~# cat neuertext&lt;br /&gt;
 sogar noch wichtiger&lt;br /&gt;
&lt;br /&gt;
Anhängen der Ausgabe von date an die Datei neuertext&lt;br /&gt;
 root@zero:~# date &amp;gt;&amp;gt; neuertext&lt;br /&gt;
 root@zero:~# cat neuertext&lt;br /&gt;
 sogar noch wichtiger&lt;br /&gt;
 Do 18. Jun 14:08:58 CEST 2009&lt;br /&gt;
&lt;br /&gt;
Umleiten des Standardfehlerkanals nach error&lt;br /&gt;
 root@zero:~# rm sux 2&amp;gt; error&lt;br /&gt;
 root@zero:~# more error&lt;br /&gt;
 rm: Entfernen von „sux“ nicht möglich: No such file or directory&lt;br /&gt;
&lt;br /&gt;
===Umleitungen===&lt;br /&gt;
Nacheinander auszuführende Kommandos&lt;br /&gt;
 root@zero:~# pwd; date&lt;br /&gt;
 /root&lt;br /&gt;
 Do 18. Jun 14:13:05 CEST 2009&lt;br /&gt;
 &lt;br /&gt;
Übergeben der Ausgabe von tail als Eingabe von grep mit Hilfe der Pipe &amp;quot;|&amp;quot;&lt;br /&gt;
 root@zero:~# tail /var/log/auth.log | grep xinux&lt;br /&gt;
 Jun 18 13:52:33 zero nss_wins[11433]: pam_unix(login:session): session closed for user xinux&lt;br /&gt;
&lt;br /&gt;
Übergeben der letzten 100 Zeilen von syslog als Eingabe von grep&lt;br /&gt;
 root@zero:~# tail /var/log/syslog -n 100 | grep error&lt;br /&gt;
 Jun 18 09:30:54 zero kernel: [154384.692135] end_request: I/O error, dev fd0, sector 0&lt;br /&gt;
 Jun 18 09:30:54 zero kernel: [154384.712137] end_request: I/O error, dev fd0, sector 0&lt;br /&gt;
&lt;br /&gt;
==tr==&lt;br /&gt;
tr ist ein Programm um Zeichen zu übersetzen. Dies betrifft nur die Ausgabe, die Datei selbst bleibt unverändert.&lt;br /&gt;
&lt;br /&gt;
Ersetzt Kleinbuchstaben durch Großbuchstaben aus der Datei text&lt;br /&gt;
 root@zero:~# tr &amp;quot;a-z&amp;quot; &amp;quot;A-Z&amp;quot; &amp;lt; text&lt;br /&gt;
 SOGAR NOCH WICHTIGER&lt;br /&gt;
 123&lt;br /&gt;
 34&lt;br /&gt;
 4711&lt;br /&gt;
 TEST&lt;br /&gt;
&lt;br /&gt;
Ersetzt alle Zahlen durch X&lt;br /&gt;
 root@zero:~# tr &amp;quot;0-9&amp;quot; &amp;quot;X&amp;quot; &amp;lt; text&lt;br /&gt;
 sogar noch wichtiger&lt;br /&gt;
 XXX&lt;br /&gt;
 XX&lt;br /&gt;
 XXXX&lt;br /&gt;
 test&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
 root@zero:~# cat &amp;gt; test&lt;br /&gt;
 +++++&lt;br /&gt;
 ###&lt;br /&gt;
 1111&lt;br /&gt;
&lt;br /&gt;
-s löscht mehrfach kommende Zeichen&lt;br /&gt;
 root@zero:~# tr '''-s''' &amp;quot;+&amp;quot; &amp;lt; test&lt;br /&gt;
 +&lt;br /&gt;
 ###&lt;br /&gt;
 1111&lt;br /&gt;
&lt;br /&gt;
-d löscht vorkommende Zeichen &lt;br /&gt;
 root@zero:~# tr '''-d''' &amp;quot;#&amp;quot; &amp;lt; test&lt;br /&gt;
 +++++ &lt;br /&gt;
 &lt;br /&gt;
 1111&lt;br /&gt;
&lt;br /&gt;
==cut==&lt;br /&gt;
Spalten aus einer Datei schneiden. Dies betrifft nur die Ausgabe, die Datei selbst bleibt unverändert.&lt;br /&gt;
 &lt;br /&gt;
Schneidet die erste Spalte aus, der Delimiter ist : &lt;br /&gt;
 root@zero:~# cut -f 1 -d : /etc/passwd&lt;br /&gt;
 root&lt;br /&gt;
 daemon&lt;br /&gt;
 bin&lt;br /&gt;
 ...&lt;br /&gt;
 xinux&lt;br /&gt;
&lt;br /&gt;
 root@zero:~# more test&lt;br /&gt;
 1234#5678#9999&lt;br /&gt;
 &lt;br /&gt;
Schneidet die zweite Spalte aus, der Delimiter ist #&lt;br /&gt;
 root@zero:~# cut -f 2 -d &amp;quot;#&amp;quot; &amp;lt; test&lt;br /&gt;
 5678&lt;br /&gt;
&lt;br /&gt;
Schneidet bis zum 3 Zeichen ab&lt;br /&gt;
 root@zero:~$ echo S01policykit | cut -c 4-&lt;br /&gt;
 policykit&lt;br /&gt;
&lt;br /&gt;
==expand==&lt;br /&gt;
Ersetzt Tabulatorzeichen durch Folgen von Leerzeichen und schreibt das Ergebnis auf die Standardausgabe&lt;br /&gt;
 root@zero:~# expand /etc/samba/smb.conf&lt;br /&gt;
 ...&lt;br /&gt;
&lt;br /&gt;
==fmt==&lt;br /&gt;
#Setzt den Text der Dateien im Blocksatz der angegebenen Breite durch Auffüllen von Zeilen und Entfernen von Zeilenwechseln.&lt;br /&gt;
Standardgemäß werden Leerzeilen, die Position von Leerzeichen und der Einzug am Zeilenanfang erhalten. fmt versucht, &lt;br /&gt;
Zeilenumbrüche an Satzenden durchzuführen sowie sie nach dem ersten oder vor dem letzten Wort eines Satzes zu vermeiden. &lt;br /&gt;
 &lt;br /&gt;
 fmt [Optionen] [Dateien]&lt;br /&gt;
&lt;br /&gt;
Optionen&lt;br /&gt;
&lt;br /&gt;
* -p ''Präfix'': Formatiert nur Zeilen, die mit ''Präfix'' anfangen&lt;br /&gt;
 root@zero:/tmp# fmt -p '#' text&lt;br /&gt;
 #Setzt den Text der Dateien im Blocksatz der angegebenen Breite durch&lt;br /&gt;
 #Auffüllen von Zeilen und Entfernen von Zeilenwechseln.  Standardgemäß&lt;br /&gt;
 #werden Leerzeilen, die Position von Leerzeichen und der Einzug am&lt;br /&gt;
 #Zeilenanfang erhalten. fmt versucht,&lt;br /&gt;
 Zeilenumbrüche an Satzenden durchzuführen sowie sie nach dem ersten oder vor dem letzten Wort eines Satzes zu vermeiden.&lt;br /&gt;
&lt;br /&gt;
* -u : Erzwingt genau ein Leerzeichen zwischen Wörtern und zwei Leerzeichen zwischen Sätzen&lt;br /&gt;
&lt;br /&gt;
* -w ''Breite'': Setzt die Ausgabebreite auf ''Breite''&lt;br /&gt;
 root@zero:/tmp# fmt -w 30 text&lt;br /&gt;
 #Setzt den Text der Dateien&lt;br /&gt;
 im Blocksatz der angegebenen&lt;br /&gt;
 Breite durch Auffüllen&lt;br /&gt;
 von Zeilen und Entfernen&lt;br /&gt;
 von Zeilenwechseln.&lt;br /&gt;
 #Standardgemäß werden&lt;br /&gt;
 Leerzeilen, die Position von&lt;br /&gt;
 Leerzeichen und der Einzug am&lt;br /&gt;
 Zeilenanfang erhalten. fmt&lt;br /&gt;
 versucht, Zeilenumbrüche&lt;br /&gt;
 an Satzenden durchzuführen&lt;br /&gt;
 sowie sie nach dem ersten&lt;br /&gt;
 oder vor dem letzten Wort&lt;br /&gt;
 eines Satzes zu vermeiden.&lt;br /&gt;
&lt;br /&gt;
==join==&lt;br /&gt;
Führt die Zeilen zweier sortierter Dateien anhand von '''Übereinstimmungen''' in einem gemeinsamen Feld zusammen.&lt;br /&gt;
&lt;br /&gt;
 root@zero:~# more name&lt;br /&gt;
 1. karl&lt;br /&gt;
 2. heinz&lt;br /&gt;
 3. hans&lt;br /&gt;
 4. otto&lt;br /&gt;
 root@zero:~# more tel&lt;br /&gt;
 1. 1234&lt;br /&gt;
 2. 4321&lt;br /&gt;
 3. 222&lt;br /&gt;
 4. 121212&lt;br /&gt;
 root@zero:~# join name tel &amp;gt; telefonbuch&lt;br /&gt;
 root@zero:~# more telefonbuch&lt;br /&gt;
 1. karl 1234&lt;br /&gt;
 2. heinz 4321&lt;br /&gt;
 3. hans 222&lt;br /&gt;
 4. otto 121212&lt;br /&gt;
&lt;br /&gt;
 root@zero:~# join -t : /etc/passwd /etc/shadow&lt;br /&gt;
 ....&lt;br /&gt;
 daemon:x:1:1:daemon:/usr/sbin:/bin/sh:*:14181:0:99999:7:::&lt;br /&gt;
 bin:x:2:2:bin:/bin:/bin/sh:*:14181:0:99999:7:::&lt;br /&gt;
 sys:x:3:3:sys:/dev:/bin/sh:*:14181:0:99999:7:::&lt;br /&gt;
 sync:x:4:65534:sync:/bin:/bin/sync:*:14181:0:99999:7:::&lt;br /&gt;
 ...&lt;br /&gt;
&lt;br /&gt;
join in dat1 nach Feld 3 und in dat2 nach Feld 2&lt;br /&gt;
 thomas@lydia:~$ cat dat1 &lt;br /&gt;
 hugo:ps:1111&lt;br /&gt;
 erwin:zw:2222&lt;br /&gt;
 karl:sb:3333&lt;br /&gt;
 rudi:kl:4444&lt;br /&gt;
 thomas@lydia:~$ cat dat2&lt;br /&gt;
 blau:1111:svn&lt;br /&gt;
 grün:2222:fcs&lt;br /&gt;
 gelb:3333:fch&lt;br /&gt;
 rot:4444:fck&lt;br /&gt;
 thomas@lydia:~$ join -t : -1 3 -2 2 dat1 dat2 &lt;br /&gt;
 1111:hugo:ps:blau:svn&lt;br /&gt;
 2222:erwin:zw:grün:fcs&lt;br /&gt;
 3333:karl:sb:gelb:fch&lt;br /&gt;
 4444:rudi:kl:rot:fck&lt;br /&gt;
&lt;br /&gt;
==nl==&lt;br /&gt;
Nummeriert die Zeilen in einer Datei.&lt;br /&gt;
&lt;br /&gt;
 root@zero:~# nl /etc/passwd                                                   &lt;br /&gt;
     1  root:x:0:0:root:/root:/bin/bash                                       &lt;br /&gt;
     2  daemon:x:1:1:daemon:/usr/sbin:/bin/sh                                 &lt;br /&gt;
     3  bin:x:2:2:bin:/bin:/bin/sh                                            &lt;br /&gt;
     4  sys:x:3:3:sys:/dev:/bin/sh                                            &lt;br /&gt;
     5  sync:x:4:65534:sync:/bin:/bin/sync&lt;br /&gt;
     ...&lt;br /&gt;
Nummereriet mit führenden Nullen der Separatir ist ein :&lt;br /&gt;
 root@zero:~# nl -s : -n rz dat1&lt;br /&gt;
&lt;br /&gt;
==od==&lt;br /&gt;
Gibt Dateien im Oktal und anderen Formaten aus.&lt;br /&gt;
&lt;br /&gt;
 od [Optionen] Datei&lt;br /&gt;
&lt;br /&gt;
* -j ''Bytes'': Überspringt die Anzahl ''Bytes'' einer Datei&lt;br /&gt;
* -N ''Bytes'': Gibt nur die Anzahl ''Bytes'' aus&lt;br /&gt;
* -c : Gebe ASCII Zeichen aus&lt;br /&gt;
* -f : Gebe Fließkommazahlen aus&lt;br /&gt;
* -i : Gebe Dezimal Integer aus&lt;br /&gt;
* -l : Gebe Dezimal Long aus&lt;br /&gt;
* -o : Gebe Oktal 2 Byte Einheiten aus&lt;br /&gt;
* -s : Gebe Dezimal 2 Byte Einheiten aus&lt;br /&gt;
* -x : Gebe Hexadezimale 2 Byte einheiten aus&lt;br /&gt;
&lt;br /&gt;
Beispiele&lt;br /&gt;
&lt;br /&gt;
Gebe Master Boot Record (die ersten 512 Byte der Festplatte /dev/sda) als Hexadezimal aus&lt;br /&gt;
 root@zero:~# od '''-x -N''' 512 /dev/sda&lt;br /&gt;
 0000000 48eb 1090 d08e 00bc b8b0 0000 d88e c08e&lt;br /&gt;
 0000020 befb 7c00 00bf b906 0200 a4f3 21ea 0006&lt;br /&gt;
 0000040 be00 07be 0438 0b75 c683 8110 fefe 7507&lt;br /&gt;
 0000060 ebf3 b416 b002 bb01 7c00 80b2 748a 0203&lt;br /&gt;
 0000100 00ff 2000 0001 0000 0200 90fa f690 80c2&lt;br /&gt;
 ...&lt;br /&gt;
&lt;br /&gt;
Schreibe &amp;quot;suxer&amp;quot; in die Datei test&lt;br /&gt;
 root@zero:~# echo &amp;quot;suxer&amp;quot; &amp;gt; test&lt;br /&gt;
Ausgabe Hexadezimal&lt;br /&gt;
 root@zero:~# od -x test&lt;br /&gt;
 0000000 7573 6578 0a72&lt;br /&gt;
 0000006&lt;br /&gt;
&lt;br /&gt;
Ausgabe ASCII Zeichen&lt;br /&gt;
 root@zero:~# od -c test&lt;br /&gt;
 0000000   s   u   x   e   r  \n&lt;br /&gt;
 0000006&lt;br /&gt;
&lt;br /&gt;
==paste==&lt;br /&gt;
Fügt die Zeilen von zwei oder mehr Dateien horizontal zusammen&lt;br /&gt;
 root@zero:~# paste name tel&lt;br /&gt;
 1. karl 1. 1234&lt;br /&gt;
 2. heinz        2. 4321&lt;br /&gt;
 3. hans 3. 222&lt;br /&gt;
 4. otto 4. 121212&lt;br /&gt;
&lt;br /&gt;
==pr==&lt;br /&gt;
Bereitet Textdateien zum Drucken vor.&lt;br /&gt;
&lt;br /&gt;
 root@zero:~# echo &amp;quot;Plan für heute&amp;quot; &amp;gt; dokument&lt;br /&gt;
 root@zero:~# more dokument&lt;br /&gt;
 Plan für heute&lt;br /&gt;
 root@zero:~# pr dokument   &lt;br /&gt;
  &lt;br /&gt;
 &lt;br /&gt;
 2009-06-19 12:44                    dokument                     Seite 1&lt;br /&gt;
 &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
 Plan für heute&lt;br /&gt;
&lt;br /&gt;
Anmerkung Ausmaße der Bildschirmausgabe wie eine Druckseite.&lt;br /&gt;
&lt;br /&gt;
==sed==&lt;br /&gt;
streaming editor. Mit sed ist es möglich, den Inhalt einer Datei automatisch (nicht interaktiv) zu&lt;br /&gt;
bearbeiten. Wie unter Linux üblich, wird auch hier der Text nicht wirklich verändert sondern die &lt;br /&gt;
Änderung erfolgt über die Standardausgabe, die wieder umgeleitet werden kann. Die Syntax ist ähnlich &lt;br /&gt;
des ex modus von vi. Reguläre Ausdrücke können nach Belieben benutzt werden. &lt;br /&gt;
&lt;br /&gt;
Optionen:&lt;br /&gt;
 -e Zeichenkette  wendet die Editorbefehle aus Zeichenkette auf den Text an.&lt;br /&gt;
 -n gibt nur die Zeilen aus, die explizit (durch &amp;quot;p&amp;quot; ausgedruckt werden sollen&lt;br /&gt;
&lt;br /&gt;
Gibt die dritte Zeile der Datei text aus&lt;br /&gt;
 root@zero:~# sed -n &amp;quot;3p&amp;quot; text&lt;br /&gt;
 34&lt;br /&gt;
&lt;br /&gt;
Gibt die erste bis dritte Zeile von text aus&lt;br /&gt;
 root@zero:~# sed -n &amp;quot;1,3p&amp;quot; text&lt;br /&gt;
 sogar noch wichtiger&lt;br /&gt;
 123&lt;br /&gt;
 34&lt;br /&gt;
&lt;br /&gt;
Löschen der Zeile mit &amp;quot;sogar&amp;quot;&lt;br /&gt;
 root@zero:~# sed -e '/sogar/d' &amp;lt; text&lt;br /&gt;
 123&lt;br /&gt;
 34&lt;br /&gt;
 4711&lt;br /&gt;
 test&lt;br /&gt;
&lt;br /&gt;
und schreiben in text2&lt;br /&gt;
 root@zero:~# sed -e '/sogar/d' &amp;lt; text &amp;gt; text2&lt;br /&gt;
 root@zero:~# more text2&lt;br /&gt;
 123&lt;br /&gt;
 34&lt;br /&gt;
 4711&lt;br /&gt;
 test&lt;br /&gt;
&lt;br /&gt;
Alle 3en durch DREI ersetzen&lt;br /&gt;
 root@zero:~# sed -e 's/3/DREI/g' &amp;lt; text&lt;br /&gt;
 sogar noch wichtiger&lt;br /&gt;
 12DREI&lt;br /&gt;
 DREI4&lt;br /&gt;
 4711&lt;br /&gt;
 test&lt;br /&gt;
&lt;br /&gt;
==wc==&lt;br /&gt;
Zählt die Anzahl von Zeichen, Wörter oder Zeilen&lt;br /&gt;
&lt;br /&gt;
Optionen&lt;br /&gt;
* -m : Zählt die Anzahl der Zeichen&lt;br /&gt;
 root@zero:~# more name&lt;br /&gt;
 1. karl&lt;br /&gt;
 2. heinz&lt;br /&gt;
 3. hans&lt;br /&gt;
 4. otto&lt;br /&gt;
 root@zero:~# wc '''-m''' tel&lt;br /&gt;
 33 tel&lt;br /&gt;
&lt;br /&gt;
* -w : Zählt die Anzahl der Wörter (einschließlich Zahlen und andere Zeichen)&lt;br /&gt;
 root@zero:~# wc '''-w''' name&lt;br /&gt;
 8 name&lt;br /&gt;
&lt;br /&gt;
* -l : Zählt die Anzahl der Zeilen&lt;br /&gt;
 root@zero:~# wc '''-l''' name&lt;br /&gt;
 4 name&lt;br /&gt;
&lt;br /&gt;
==Sort==&lt;br /&gt;
&lt;br /&gt;
Zum sortieren von Dateien nach Feldern benutzt man sort. sort liest von STDIN man kann die Datei aber auch als Argument übergeben. &lt;br /&gt;
&lt;br /&gt;
Sortiert nach dem ersten Feld&lt;br /&gt;
  root@zero:~# sort /etc/passwd 	 &lt;br /&gt;
&lt;br /&gt;
Es wird geprüft ob die Datei schon sortiert ist &lt;br /&gt;
 root@zero:~# sort -c /etc/passwd 	&lt;br /&gt;
&lt;br /&gt;
Sortiert nach dem ersten Feld (Richtungsumkehr)  &lt;br /&gt;
 root@zero:~#  sort -r /etc/passwd&lt;br /&gt;
&lt;br /&gt;
Führende Leersortzeichen werden ignoriert &lt;br /&gt;
 root@zero:~# sort -b /etc/passwd&lt;br /&gt;
&lt;br /&gt;
Ausgabe  in die Datei pass&lt;br /&gt;
 root@zero:~# sort  /etc/passwd   -o pass	 &lt;br /&gt;
&lt;br /&gt;
nimmt : als Trenner -Voreinstellung ist TAB&lt;br /&gt;
  root@zero:~# sort -t : /etc/passwd&lt;br /&gt;
&lt;br /&gt;
sortiert nach dem  3 Feld,  der Trenner ist : und es wird nummerisch sortiert&lt;br /&gt;
&lt;br /&gt;
 root@zero:~# sort -t: +2 -n /etc/passwd		&lt;br /&gt;
&lt;br /&gt;
sortiert nach dem  3 Feld,  der Trenner ist : und es wird nummerisch sortiert&lt;br /&gt;
					&lt;br /&gt;
 root@zero:~# sort -t: -k 3 -n /etc/passwd&lt;br /&gt;
&lt;br /&gt;
Sortiert nach dem  3  bis zum 5 Feld, der Trenner ist : und es wird nummerisch sortiert&lt;br /&gt;
	&lt;br /&gt;
 root@zero:~# sort -t: -k 3,5 -n /etc/passwd	&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==INodes==&lt;br /&gt;
Inode (oder I-Node) wird im Deutschen am besten als Informationsknoten oder&lt;br /&gt;
Indexeintrag bezeichnet. Er fasst alle Attribute einer Datei zusammen außer dem Inhalt&lt;br /&gt;
und dem Namen der Datei.&lt;br /&gt;
&lt;br /&gt;
===Daten===&lt;br /&gt;
{| border=1 cellpadding=2&lt;br /&gt;
|type&lt;br /&gt;
|Der Typ der Datei wird als einzelner Buchstabe angezeigt. Der Typ einer Datei wird beim Anlegen der Datei festgelegt&lt;br /&gt;
|-&lt;br /&gt;
|Permissions &lt;br /&gt;
|Die Zugriffsrechte der Datei werden in den 12 Bit sstrwxrwxrwx abgespeichert.Wenn sie gesetzt sind, werden sie bei &lt;br /&gt;
der Ausgabe an Stelle der x-Rechte ausgegeben. Die Zugriffsrechte können mit dem Kommando chmod verändert werden.&lt;br /&gt;
|-&lt;br /&gt;
|link count&lt;br /&gt;
|In UNIX kann eine Datei mehr als einen Namen haben. Der Link Count gibt die Anzahl der Namen einer Datei an. Er kann&lt;br /&gt;
mit dem Kommando ln erhöht und dem Kommando rm erniedrigt werden.&lt;br /&gt;
|-&lt;br /&gt;
|owner&lt;br /&gt;
|Für den Dateieigentümer gelten die in der ersten rwx-Gruppe festgelegten Zugriffsrechte. Standardmäßig ist der &lt;br /&gt;
Eigentümer einer Datei derjenige Benutzer, der die Datei angelegt hat.&lt;br /&gt;
|-&lt;br /&gt;
|group&lt;br /&gt;
|Für Benutzer, die in der gleichen Gruppe sind, der die Datei angehört, gelten die in der zweiten rwx-Gruppe festgelegten&lt;br /&gt;
Zugriffsrechte. In System V gehört eine Datei standardmäßig der Gruppe an, in der der anlegende Benutzer gerade ist.&lt;br /&gt;
|-&lt;br /&gt;
|size&lt;br /&gt;
|Bei normalen Dateien und Verzeichnissen gibt diese Information die Länge der Datei in Byte an.&lt;br /&gt;
|-&lt;br /&gt;
|access time&lt;br /&gt;
|Die Zugriffszeit gibt den Zeitpunkt des letzten Lesezugriffes auf eine Datei an. Aus Effizienzgründen wird die &lt;br /&gt;
Zugriffszeit an Verzeichnissen nicht gesetzt, wenn ein Verzeichnis durchsucht wird, obwohl man dies erwarten könnte. ''(ls -l --time=atime)''&lt;br /&gt;
|-&lt;br /&gt;
|modification time&lt;br /&gt;
|Die Modifikationszeit gibt die Zeit des letzten Schreibzugriffes auf die Daten der Datei an. Intern speichert UNIX &lt;br /&gt;
die Zeit als Sekunden seit Beginn des Jahres 1970 und in GMT ab. Für die Ausgabe wird dies in ein besser lesbares &lt;br /&gt;
Format in der lokalen Zeitzone umgewandelt. ''(ls -l)''&lt;br /&gt;
|-&lt;br /&gt;
|change time &lt;br /&gt;
|Die Veränderungszeit gibt das Datum der letzten Statusänderung der Datei an. Sie wird immer dann gesetzt, wenn die &lt;br /&gt;
Informationen über die Datei sich ändern (Datum der Erzeugung wird nicht gespeichert) ''(ls -lc)''&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
===Dateiarten===&lt;br /&gt;
{| border=1 cellpadding=2&lt;br /&gt;
!Zeichen&lt;br /&gt;
!Typ&lt;br /&gt;
!Zweck&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;nowiki&amp;gt;-&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
|file&lt;br /&gt;
|normale Datei&lt;br /&gt;
|-&lt;br /&gt;
|d&lt;br /&gt;
|directory&lt;br /&gt;
|Verzeichnis&lt;br /&gt;
|-&lt;br /&gt;
|b&lt;br /&gt;
|block device&lt;br /&gt;
|Gerätedatei&lt;br /&gt;
|-&lt;br /&gt;
|c&lt;br /&gt;
|character device&lt;br /&gt;
|Gerätedatei&lt;br /&gt;
|-&lt;br /&gt;
|l&lt;br /&gt;
|link&lt;br /&gt;
|Querverweis&lt;br /&gt;
|-&lt;br /&gt;
|p&lt;br /&gt;
|named pipe&lt;br /&gt;
|Benannte Pipeline&lt;br /&gt;
|-&lt;br /&gt;
|s&lt;br /&gt;
|socket&lt;br /&gt;
|Netzwerkverbindung&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
====Normale Dateien====&lt;br /&gt;
Unter einer normalen Datei versteht man die Ansammlung von Daten. Dies kann ein Text, Programm, Bild oder sonstiges sein. &lt;br /&gt;
Beispiel&lt;br /&gt;
 root@zero:~# ls -l text | cut -c 1&lt;br /&gt;
 -&lt;br /&gt;
&lt;br /&gt;
====Verzeichnisse====&lt;br /&gt;
Dateien werden in Verzeichnissen gespeichert, nur so ist eine Ordnung möglich. &lt;br /&gt;
 root@zero:~# mkdir -v Ordner&lt;br /&gt;
 mkdir: Verzeichnis „Ordner“ angelegt&lt;br /&gt;
 &lt;br /&gt;
 root@zero:~# ls -ld Ordner | cut -c 1&lt;br /&gt;
 d&lt;br /&gt;
&lt;br /&gt;
====Gerätedateien (Block und Char)====&lt;br /&gt;
Gerätedateien ermöglichen Anwendungsprogrammen unter Benutzung des  Kernels den Zugriff auf die Hardwarekomponenten des Systems. Ansprechbar über Major und Minor Nummern &lt;br /&gt;
&lt;br /&gt;
Beispiele&lt;br /&gt;
&lt;br /&gt;
Sicherung des Master Boot Records der ersten Festplatte&lt;br /&gt;
 root@zero:~# dd if=/dev/sda of=/tmp/mbr.img bs=512 count=1&lt;br /&gt;
&lt;br /&gt;
Block Device &lt;br /&gt;
 root@zero:~# ls -l /dev/sda | cut -c 1 &lt;br /&gt;
 b&lt;br /&gt;
&lt;br /&gt;
Character Device &lt;br /&gt;
 root@zero:~# ls -l /dev/ttyS0  | cut -c 1 &lt;br /&gt;
 c&lt;br /&gt;
&lt;br /&gt;
Erstellen einer Gerätedatei&lt;br /&gt;
 root@zero:/dev# mknod sata1 b 8 0 &lt;br /&gt;
 root@zero:/dev# fdisk -l /dev/sata1 &lt;br /&gt;
 &lt;br /&gt;
 Platte /dev/sata1: 6442 MByte, 6442450944 Byte&lt;br /&gt;
 255 Köpfe, 63 Sektoren/Spuren, 783 Zylinder&lt;br /&gt;
 Einheiten = Zylinder von 16065 × 512 = 8225280 Bytes&lt;br /&gt;
 Disk identifier: 0x0005efab&lt;br /&gt;
 &lt;br /&gt;
       Gerät  boot.     Anfang        Ende     Blöcke   Id  System&lt;br /&gt;
 /dev/sata1p1   *           1         743     5968116   83  Linux&lt;br /&gt;
 /dev/sata1p2             744         783      321300    5  Erweiterte&lt;br /&gt;
 /dev/sata1p5             744         783      321268+  82  Linux Swap / Solaris&lt;br /&gt;
&lt;br /&gt;
====Named Pipes====&lt;br /&gt;
Benannte Pipes (Named Pipes) können dagegen auch zur Kommunikation zwischen Prozessen eingesetzt werden, die nicht miteinander&lt;br /&gt;
verwandt sind und sich darüber hinaus auf unterschiedlichen Rechnern innerhalb eines Netzwerkes befinden dürfen. Sie sind &lt;br /&gt;
flexibler als anonyme Pipes und eignen sich für sogenannte Client-Server-Anwendungen (es lassen sich auch RPCs realisieren).&lt;br /&gt;
Benannte Pipes ermöglichen die gleichzeitige Kommunikation in beide Richtungen, das heißt, Daten können im Vollduplexbetrieb &lt;br /&gt;
zwischen den Prozessen ausgetauscht werden.&lt;br /&gt;
 &lt;br /&gt;
Erstelle Named Pipe mit Namen /tmp/roehre. Schreibe &amp;quot;hallo welt&amp;quot; in die Pipe und bleibe&lt;br /&gt;
 xinux@zero:~$ mkfifo /tmp/roehre&lt;br /&gt;
 xinux@zero:~$ echo hallo welt &amp;gt; /tmp/roehre &lt;br /&gt;
&lt;br /&gt;
Gebe Inhalt der Pipe mit cat aus&lt;br /&gt;
 root@zero:~# cat &amp;lt; /tmp/roehre &lt;br /&gt;
 hallo welt&lt;br /&gt;
 root@zero:~# ls -l /tmp/roehre | cut -c 1&lt;br /&gt;
 p&lt;br /&gt;
&lt;br /&gt;
====Sockets====&lt;br /&gt;
Schnittstelle um es lokalen Anwendungen zu ermöglichen, miteinander Netwerkmässig zu kommunizieren.&lt;br /&gt;
&lt;br /&gt;
 root@lydia:~# netstat  -lnxp | tail -1&lt;br /&gt;
  unix  2 [ ACC ] STREAM HÖRT 21951 6646/nm-applet /tmp/orbit-thomas/linc-19f6-0-2b9b81095cede&lt;br /&gt;
&lt;br /&gt;
 root@lydia:~# ls -l /tmp/orbit-thomas/linc-19f6-0-2b9b81095cede  | cut -c 1 &lt;br /&gt;
 s&lt;br /&gt;
&lt;br /&gt;
====Links====&lt;br /&gt;
Bei Links handelt es sich um symbolische Verweise auf andere Dateien&lt;br /&gt;
&lt;br /&gt;
'''Softlink'''&lt;br /&gt;
Ein Softlink ist eine Datei die nur auf den Namen einer anderen Datei verweist. Wenn die Originaldatei gelöscht wird, zeigt &lt;br /&gt;
der Link ins Leere. &lt;br /&gt;
&lt;br /&gt;
 ln -s datei softlink&lt;br /&gt;
&lt;br /&gt;
{| border=1 cellpadding=2&lt;br /&gt;
| Vorteile&lt;br /&gt;
| Symbolische Links können auch auf Verzeichnisse angelegt werden&amp;lt;br&amp;gt;Sie sind partitionsübergreifend&amp;lt;br&amp;gt;Man kann sie auf Dateien anlegen, die noch nicht existieren&lt;br /&gt;
|-&lt;br /&gt;
| Nachteile&lt;br /&gt;
| Wenn das Original gelöscht ist, ist kein Zugriff mehr möglich&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Beispiel&lt;br /&gt;
 root@zero:~# ln -s text verweis&lt;br /&gt;
 root@zero:~# ls -l verweis&lt;br /&gt;
 lrwxrwxrwx 1 root root 4 2009-06-18 15:48 verweis -&amp;gt; text&lt;br /&gt;
&lt;br /&gt;
'''Hardlinks'''&lt;br /&gt;
 ln datei hardlink&lt;br /&gt;
Eigentlich ist jede Datei ein Hardlink. Ein Hardlink ist ein Verzeichniseintrag,&lt;br /&gt;
der auf eine Inode verweist. Beim Erzeugen einer Datei verweist ein Eintrag auf&lt;br /&gt;
eine Inode. Man kann dann weitere Verweise erzeugen. Der Linkcounter wird&lt;br /&gt;
jeweils um 1 erhöht. Beim Löschen einer Datei wird er jeweils um 1 reduziert.&lt;br /&gt;
Wird der Wert 0 erreicht, ist die Datei gelöscht.&lt;br /&gt;
{| border=1 cellpadding=2&lt;br /&gt;
| Vorteile&lt;br /&gt;
|Zugriff auf die Daten, selbst wenn das Orginal gelöscht ist.&lt;br /&gt;
|-&lt;br /&gt;
|Nachteile&lt;br /&gt;
|Man kann keine Hardlinks auf Verzeichnisse anlegen.&lt;br /&gt;
Ist nur innerhalb einer Partion möglich.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Beispiel&lt;br /&gt;
 root@zero:~# touch 1&lt;br /&gt;
 root@zero:~# echo &amp;quot;text&amp;quot; &amp;gt; 1&lt;br /&gt;
 root@zero:~# ln 1 2&lt;br /&gt;
 root@zero:~# more 2&lt;br /&gt;
 text&lt;br /&gt;
 root@zero:~# echo &amp;quot;doch kein text&amp;quot; &amp;gt; 1&lt;br /&gt;
 root@zero:~# more 1&lt;br /&gt;
 doch kein text&lt;br /&gt;
 root@zero:~# more 2&lt;br /&gt;
 doch kein text&lt;br /&gt;
&lt;br /&gt;
Weitere Optionen:&lt;br /&gt;
 -b sichert Dateien, statt sie zu überschreiben &lt;br /&gt;
 -f Überschreibt bestehende, gleichnamige Dateien&lt;br /&gt;
 -i fragt vor dem Überschreiben nach Bestätigung&lt;br /&gt;
 -v ausführliche Meldungen&lt;br /&gt;
Softlink mit dem Namen passwd im Homeverzeichnis angelegt&lt;br /&gt;
 xinux@zero:~$ ln -vs /etc/passwd .&lt;br /&gt;
 „./passwd“ -&amp;gt; „/etc/passwd“&lt;br /&gt;
Softlink mit dem Namen passwd im Homeverzeichnis angelegt(Original exestiert nicht) &lt;br /&gt;
 xinux@zero:~$ ln -vs /etc/hund .&lt;br /&gt;
 „./hund“ -&amp;gt; „/etc/hund“&lt;br /&gt;
Hardlink mit dem Namen hosts im Homeverzeichnis angelegt&lt;br /&gt;
  xinux@zero:~$ ln -v /etc/hosts .&lt;br /&gt;
 „./hosts“ =&amp;gt; „/etc/hosts“&lt;br /&gt;
Auf eine nicht existierende Datei kann kein Hardlink angelegt werden!&lt;br /&gt;
 xinux@zero:~$ ln -v /etc/katze .&lt;br /&gt;
 ln: Zugriff auf „/etc/katze“: No such file or directory&lt;br /&gt;
&lt;br /&gt;
==Shellsonderzeichen==&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot; cellpadding=&amp;quot;2&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
|;&lt;br /&gt;
|Trenne Kommandos&lt;br /&gt;
|-&lt;br /&gt;
|. oder source&lt;br /&gt;
|Ausführen wie in aktueller Shell&lt;br /&gt;
|-&lt;br /&gt;
|#&lt;br /&gt;
|Kommentar&lt;br /&gt;
|-&lt;br /&gt;
|&amp;amp;&lt;br /&gt;
|Programm im Hintergrund starten &lt;br /&gt;
|-&lt;br /&gt;
|&amp;amp;&amp;amp;&lt;br /&gt;
|UND -Ausführung  (wenn links wahr dann führe rechts aus)&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;nowiki&amp;gt;|&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
|STOUT von links wird zu STDIN von rechts &lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;nowiki&amp;gt;||&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
|ODER -Ausführung (wenn links falsch dann führe rechts aus)&lt;br /&gt;
|-&lt;br /&gt;
|*&lt;br /&gt;
|steht für beliebig viel Zeichen auch 0 &lt;br /&gt;
|-&lt;br /&gt;
|?&lt;br /&gt;
|steht für genau ein Zeichen &lt;br /&gt;
|-&lt;br /&gt;
|[abc]&lt;br /&gt;
|steht für eins der Zeichen in [ ] hier a b oder c &lt;br /&gt;
|-&lt;br /&gt;
|[ausdruck] &lt;br /&gt;
|Andere Schreibweis für test &lt;br /&gt;
|-&lt;br /&gt;
|~&lt;br /&gt;
|das Homeverzeichnis&lt;br /&gt;
|-&lt;br /&gt;
|&amp;gt;    und    &amp;gt;&amp;gt;&lt;br /&gt;
|leite in Datei um   &amp;gt;  überschreibe     &amp;gt;&amp;gt; hänge an &lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;&lt;br /&gt;
|lesen aus Datei &lt;br /&gt;
|-&lt;br /&gt;
|2&amp;gt;&amp;amp;1&lt;br /&gt;
|leite STDERR auf STDOUT&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;&amp;lt; ende&lt;br /&gt;
|Lesen aus Datei (Heredokument)&lt;br /&gt;
|-&lt;br /&gt;
|(...)&lt;br /&gt;
|Alles inhalb von ( ) wird als Subshell ausgeführt&lt;br /&gt;
|-&lt;br /&gt;
|{...}&lt;br /&gt;
|Gruppieren von Komandos &lt;br /&gt;
|-&lt;br /&gt;
|{ ,  ,  , }&lt;br /&gt;
|Zeichenketten zusammensetzen &lt;br /&gt;
|-&lt;br /&gt;
|$&lt;br /&gt;
|Inhalt von Variablen ausgeben $SUX&lt;br /&gt;
|-&lt;br /&gt;
|$* oder $@&lt;br /&gt;
|Liste der übergebenen Parameter&lt;br /&gt;
|-&lt;br /&gt;
|$# &lt;br /&gt;
|Anzahl der übergebenen Parameter &lt;br /&gt;
|-&lt;br /&gt;
|$0&lt;br /&gt;
|Name des Shellprogramms &lt;br /&gt;
|-&lt;br /&gt;
|$?&lt;br /&gt;
|Rückgabewert des letzten Kommandos &lt;br /&gt;
|-&lt;br /&gt;
|$!  und  $$&lt;br /&gt;
|PID des  $!  = letzten Hintergrund  -  , $$ = aktuellen Prozess&lt;br /&gt;
|-&lt;br /&gt;
|$1 ..$9&lt;br /&gt;
|Parameter 1 bis 9 &lt;br /&gt;
|-&lt;br /&gt;
|$() oder `  `&lt;br /&gt;
|Kommandosubstition&lt;br /&gt;
|-&lt;br /&gt;
|${ }&lt;br /&gt;
|Funktion zur Manipulation von Zeichenketten &lt;br /&gt;
|-&lt;br /&gt;
|$(( )) oder $[ ]&lt;br /&gt;
|Arithmetische Berechnung &lt;br /&gt;
|-&lt;br /&gt;
|&amp;quot;...&amp;quot;&lt;br /&gt;
|Entwertung der Sonderzeichen ausser $ ' \&lt;br /&gt;
|-&lt;br /&gt;
|'...'&lt;br /&gt;
|Entwertung sämtlicher Sonderzeichen ausser ' selbst&lt;br /&gt;
|-&lt;br /&gt;
|\  &lt;br /&gt;
|Entwertung des folgenden Sonderzeichens &lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==Prozesse==&lt;br /&gt;
===Was ist ein Prozess?===&lt;br /&gt;
Ein Prozess setzt sich aus zwei Teilen zusammen:&lt;br /&gt;
&lt;br /&gt;
1.Programm, das in den Hauptspeicher geladen wurde&lt;br /&gt;
&lt;br /&gt;
2.Prozessumgebung &lt;br /&gt;
&lt;br /&gt;
Unter einem Prozess versteht man ein Programm (binär), das in den Hauptspeicher&lt;br /&gt;
geladen wurde. Also nicht das Program selbst, das auf der Festplatte liegt ist der&lt;br /&gt;
Prozess, sondern es wird erst durch das Laden in den Hauptspeicher dazu.&lt;br /&gt;
Normalerweise liegt ein Programm als ausführbare Datei irgendwo auf der&lt;br /&gt;
Festplatte oder auf Diskette. Ob es sich bei dem Programm um eine binäre Datei&lt;br /&gt;
handelt, kann man mit dem Befehl '' file '' feststellen.&lt;br /&gt;
 &lt;br /&gt;
 root@zero:~# file /bin/mkdir&lt;br /&gt;
 /bin/mkdir: ELF 32-bit LSB executable, Intel 80386, version 1 (SYSV), dynamically linked (uses shared libs), for GNU/Linux 2.6.8, stripped&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Die Datei liegt im Maschinencode vor und kann in den Hauptspeicher geladen&lt;br /&gt;
werden. Sobald dies geschehen ist, kann der Rechner diesen Maschinencode&lt;br /&gt;
abarbeiten (ausführen).&lt;br /&gt;
&lt;br /&gt;
Da aber ein Programm nicht direkt auf die Hardware zugreifen soll, muss es vom&lt;br /&gt;
Betriebsystem kontrolliert werden. Das Betriebssystem liegt logisch gesehen&lt;br /&gt;
zwischen Hardware und Anwendung. Das Betriebssystem ordnet jedem Prozess&lt;br /&gt;
verschiedene Kenndaten zu, um die Prozesse verwalten zu können. Alle&lt;br /&gt;
Kenndaten, die einem Prozess zugeordnet sind, nennt man die&lt;br /&gt;
Prozessumgebung.Wenn man in der Shell ein Kommando eingibt, wird ein Prozess&lt;br /&gt;
kreiert. Natürlich ist die Shell selbst auch ein Prozess. Ein Prozess kann aber&lt;br /&gt;
genauso gut ein Serverprozess (Dienst) sein, z.B. Apache.&lt;br /&gt;
Ein wesentliches Merkmal eines Prozesses ist die Prozesskommunikation. Über im&lt;br /&gt;
Betriebssystem implementierte Methoden ist es möglich, dass verschiedene&lt;br /&gt;
Prozesse Signale und Daten untereinander austauschen können.&lt;br /&gt;
Dadurch wird auch dem Benutzer ermöglicht, einem Prozeß bestimmte Signale zu&lt;br /&gt;
senden bzw. auf den Status eines Prozesses Einfluss zu nehmen.&lt;br /&gt;
&lt;br /&gt;
===Prozesstabelle (Anzeige mit ps)===&lt;br /&gt;
Da zu jedem Prozess Kenndaten geführt werden, müssen diese auch irgendwo&lt;br /&gt;
festgehalten werden. Das geschieht in der sogenannten Prozesstabelle.&lt;br /&gt;
&lt;br /&gt;
Kenndaten der Prozesse (Auswahl):&lt;br /&gt;
* F Flags (z.B. ausgelagert; Systemprozess; Trace,...)&lt;br /&gt;
* UID Nutzer, mit dessen Rechten der Prozess ausgeführt wird&lt;br /&gt;
* PID Prozess - ID. Diese Nummer gibt eine eindeutige Prozess - Nummer&lt;br /&gt;
an. Sie wird vom System automatisch beim Starten des Prozesses&lt;br /&gt;
vergeben und ist für die Laufzeit eindeutig.&lt;br /&gt;
* PPID Prozessnumer der Eltern-Prozesses&lt;br /&gt;
* PRI Priorität eines Prozesses; je niedriger der Wert ist, desto besser&lt;br /&gt;
* NI ist der Nicewert des Prozesses; Nice erniedrigt den Grundwert&lt;br /&gt;
der Priorität des Prozesses und gibt damit Prozessorzeit für andere&lt;br /&gt;
Prozesse frei.&lt;br /&gt;
* SIZE Speichergröße des Prozesses inklusive Stack (eine Art Zwischenspeicher)&lt;br /&gt;
* RSS Verbrauch an physischen Speicher&lt;br /&gt;
* WCHAN ist der Name der Kernerlfunktion, in der der Prozess schläft&lt;br /&gt;
* STAT Status des Prozesses&lt;br /&gt;
R läuft       S schlafend     D nicht störbarer Schlaf&lt;br /&gt;
T angehalten  Z Zombie        W der Prozess belegt keine Seiten&lt;br /&gt;
* TIME Bisland benötigte Prozessorzeit&lt;br /&gt;
* SIZE ist die Größe von Text, Daten und Stack&lt;br /&gt;
* TTY die Nummer des kontrollierenden Teminal; wenn hier ein ? steht,&lt;br /&gt;
handelt es sich um einen Dämon oder Serverprozess.&lt;br /&gt;
* COMMAND Angabe des Prozesses selbst. Dies ist meist der Programmname.&lt;br /&gt;
&lt;br /&gt;
Weiteres&lt;br /&gt;
* GID Gruppe, unter der der Prozess läuft&lt;br /&gt;
* Verweis auf das aktuellen Arbeitsverzeichnis&lt;br /&gt;
* Um mit relativen Pfadangaben arbeiten zu können braucht man diesen Eintrag&lt;br /&gt;
* Tabelle mit Verweisen auf aktuell geöffnete Dateien&lt;br /&gt;
* 3 sind automatisch geöffnet Standardeingabe, Standardausgabe und&lt;br /&gt;
Standardfehlerkanal&lt;br /&gt;
&lt;br /&gt;
Beispiel&lt;br /&gt;
 root@zero:~# ps -l&lt;br /&gt;
 F S   UID   PID  PPID  C PRI  NI ADDR SZ WCHAN  TTY          TIME CMD&lt;br /&gt;
 4 R     0 18639 18631  0  80   0 -  1080 -      pts/0    00:00:00 bash&lt;br /&gt;
 0 R     0 25904 18639  0  80   0 -   635 -      pts/0    00:00:00 ps&lt;br /&gt;
&lt;br /&gt;
===Eltern und Kinder===&lt;br /&gt;
Jeder Prozess kann weitere Prozesse erzeugen. Die erzeugten Prozesse bezeichnet&lt;br /&gt;
man als Kindprozesse. Jeder Kindprozess weiß anhand der PID, woher er stammt.&lt;br /&gt;
&lt;br /&gt;
Alle Prozesse sind von einem anderen Prozess gestartet worden, mit Ausnahme&lt;br /&gt;
des Pseudoprozesses (noch im Kernel beim Starten erzeugter Prozess). Dieser hat&lt;br /&gt;
die Prozessnummer 0. Er hat die Aufgabe, den Init Prozess ( /sbin/init die Nummer&lt;br /&gt;
1) zu starten, der in System V alle anderen Prozesse direkt oder über seine Kind-&lt;br /&gt;
prozesse startet. (init wird konfiguriert durch die /etc/inittab)&lt;br /&gt;
&lt;br /&gt;
Es gibt zwei Arten wie ein Prozess gestartet werden kann:&lt;br /&gt;
&lt;br /&gt;
# Fork und Exec: Prozessumgebung wird dupliziert, der neue Prozess bekommt eine eigene neue PID&lt;br /&gt;
# Exec: Alter Prozess wird durch neuen Prozess überladen (geht mit dem shell-buildin exec)&lt;br /&gt;
&lt;br /&gt;
'''Rechte auf Objekte UID GID'''&lt;br /&gt;
Ob ein Prozess auf eine Datei zugreifen kann, entscheidet der Kernel anhand der&lt;br /&gt;
Zugriffssrechte, die auf der Datei gesetzt sind. Er checkt anhand der UID und GID&lt;br /&gt;
des Prozesses, ob es erlaubt ist. Mit dieser Technik wird letztendlich geprüft, was&lt;br /&gt;
ein User darf, und was nicht.&lt;br /&gt;
&lt;br /&gt;
===Rechenzeit und Priorität===&lt;br /&gt;
Da auch bei Prozessen eine Gerechtigkeit herschen muss, muss eine Instanz&lt;br /&gt;
darüber entscheiden wie lange ein Prozess Rechenzeit verbrauchen darf.&lt;br /&gt;
Folgende Kenndaten werden dazu benötigt&lt;br /&gt;
* clocktick = Zeiteinheit&lt;br /&gt;
* n = Faktor über den Kernel einstellbar&lt;br /&gt;
* slice = n &amp;lt;nowiki&amp;gt;*&amp;lt;/nowiki&amp;gt; clocktick&lt;br /&gt;
* agingtime = weitere Zeiteinheit über den Kernel einstellbar&lt;br /&gt;
&lt;br /&gt;
Es wird davon ausgegangen das der Prozess mit der niedrigsten Priorität gerade&lt;br /&gt;
rechnet. Pro clocktick erhöht sich die Priorität dieses Prozesses um eins.&lt;br /&gt;
&lt;br /&gt;
Jetzt können 3 Situationen eintreten die alle dazu führen das der Scheduler&lt;br /&gt;
aufgerufen wird.&lt;br /&gt;
&lt;br /&gt;
# Prozess blockiert wegen einer Ausgabe oder Eingabe.&lt;br /&gt;
# Gibt Rechenzeit freiwillig ab.&lt;br /&gt;
# Der Slice endet.&lt;br /&gt;
&lt;br /&gt;
Der Aufruf des Schedulers bewirkt das der Prozess mit der niedrigsten Priorität&lt;br /&gt;
gescheduled wird, er also nun rechnen darf. Nach Ablauf der agingtime werden&lt;br /&gt;
nun die Prozesse &amp;quot;gealtert&amp;quot;. Das geschieht nach folgender Formel&lt;br /&gt;
&lt;br /&gt;
Neue Priorität = Alte Priorität / 2 + Nicewert&lt;br /&gt;
&lt;br /&gt;
Der User hat die Möglichkeit, über den sogenannten Nicewert den Grundwert für&lt;br /&gt;
einen Prozess zu senken. Der Prozess braucht dann länger für seine Abarbeitung.&lt;br /&gt;
Er verhält sich somit netter zu den anderen Prozessen. Normale User können nur&lt;br /&gt;
netter werden, der Systemverwalter kann auch nicht netter (gemeiner) werden. Der&lt;br /&gt;
Bereich liegt zwischen 19 (sehr nett) bis 0 (weniger nett) für die User, und 19 bis&lt;br /&gt;
-20 für root.&lt;br /&gt;
&lt;br /&gt;
[[Image:pri.png]]&lt;br /&gt;
&lt;br /&gt;
'''Signale'''&lt;br /&gt;
&lt;br /&gt;
Mit den Kommando kill und killall kann man Prozessen Signale schicken&lt;br /&gt;
&lt;br /&gt;
 kill -Signalnummer PID &lt;br /&gt;
&lt;br /&gt;
Signalnummer&lt;br /&gt;
{| border=1 cellpadding=2&lt;br /&gt;
!Signalname&lt;br /&gt;
!Wert&lt;br /&gt;
!Aktion&lt;br /&gt;
|-&lt;br /&gt;
|SIGHUP&lt;br /&gt;
|1&lt;br /&gt;
|Neuinitialisierung eines Prozesses&lt;br /&gt;
|-&lt;br /&gt;
|SIGINT&lt;br /&gt;
|2&lt;br /&gt;
|Interrupt-Signal von der Tastatur (STRG+c)&lt;br /&gt;
|-&lt;br /&gt;
|SIGQUIT&lt;br /&gt;
|3&lt;br /&gt;
|Interrupt-Signal von der Tastatur (STRG+c) mit Dump&lt;br /&gt;
|-&lt;br /&gt;
|SIGKILL&lt;br /&gt;
|9&lt;br /&gt;
|unwiderrufliches Beendigungssignal (Töten)&lt;br /&gt;
|-&lt;br /&gt;
|SIGSEGV&lt;br /&gt;
|11&lt;br /&gt;
|Ungültige Speicherreferenz (bedeutet oft auf defekten Speicher)&lt;br /&gt;
|-&lt;br /&gt;
|SIGTERM &lt;br /&gt;
|15&lt;br /&gt;
|Beendigungssignal (geöffnete Dateien werden geschlossen)&lt;br /&gt;
|-&lt;br /&gt;
|SIGCONT &lt;br /&gt;
|18&lt;br /&gt;
|Weiterfahren, wenn gestoppt&lt;br /&gt;
|-&lt;br /&gt;
|SIGSTOP&lt;br /&gt;
|19&lt;br /&gt;
|Prozessstop&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Beispiel&lt;br /&gt;
 root@zero:~# kill -1 7562&lt;br /&gt;
&lt;br /&gt;
===Programme im Zusammenhang mit Prozessen===&lt;br /&gt;
====ps: Zeigt die Prozesse mit ihrem Status an====&lt;br /&gt;
 root@zero:~# ps&lt;br /&gt;
  PID TTY          TIME CMD&lt;br /&gt;
 14134 pts/0    00:00:00 bash&lt;br /&gt;
 14149 pts/0    00:00:00 ps&lt;br /&gt;
&lt;br /&gt;
 root@zero:~# ps -elf | grep apache&lt;br /&gt;
 1 S root      5738     1  0  80   0 -  5461 select Jun16 ?        00:00:00 /usr/sbin/apache2 -k start&lt;br /&gt;
 5 S www-data  5739  5738  0  80   0 -  5581 inet_c Jun16 ?        00:00:00 /usr/sbin/apache2 -k start&lt;br /&gt;
 5 S www-data  5742  5738  0  80   0 -  5461 inet_c Jun16 ?        00:00:00 /usr/sbin/apache2 -k start&lt;br /&gt;
 5 S www-data  5743  5738  0  80   0 -  5461 inet_c Jun16 ?        00:00:00 /usr/sbin/apache2 -k start&lt;br /&gt;
 5 S www-data  5745  5738  0  80   0 -  5461 inet_c Jun16 ?        00:00:00 /usr/sbin/apache2 -k start&lt;br /&gt;
 5 S www-data  5746  5738  0  80   0 -  5461 inet_c Jun16 ?        00:00:00 /usr/sbin/apache2 -k start&lt;br /&gt;
 0 S root     14153 14134  0  80   0 -   837 pipe_w 16:59 pts/0    00:00:00 grep apache&lt;br /&gt;
&lt;br /&gt;
Option 	Beschreibung&lt;br /&gt;
*l langes Format&lt;br /&gt;
*u 	zeige für jeden Prozess Besitzer und Startzeit an&lt;br /&gt;
*j 	Jobs-Format: Zeige PGID und SID an&lt;br /&gt;
*s 	Informationen über Signale ausgeben&lt;br /&gt;
*m 	Speicher-Informationen anzeigen&lt;br /&gt;
*f 	Baumstruktur der Prozesse anzeigen (ähnlich pstree)&lt;br /&gt;
*a 	alle Prozesse (jedes Benutzers) anzeigen&lt;br /&gt;
*x 	kontrollierendes Terminal nicht anzeigen&lt;br /&gt;
*e 	Für den Prozess gültige Umgebungsvariablen mit anzeigen (sinnvollerweise mit mehreren Optionen »w« anwenden, um die Ausgabe nicht am Zeilenende abzuschneiden)&lt;br /&gt;
*w 	längere Ausgabe. »w« kann mehrfach verwendet werden, um die maximale Länge um je eine Zeile zu vergrößern&lt;br /&gt;
*h 	Header mit Feldbezeichnern unterdrücken&lt;br /&gt;
*r 	nur laufende Prozesse ausgeben&lt;br /&gt;
*n 	User-ID statt User-Name ausgeben&lt;br /&gt;
*txx 	nur Prozesse ausgeben, die vom angegebenen Terminal kontrolliert werden. xx kann entweder einer der Terminal-Gerätenamen unter /dev (z.B. tty1) oder die entsprechende Kurzbezeichnung ohne »tty« (z.B. 1) sein.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
====nice: Lässt ein Programm mit verändertem Grundwert der Priorität laufen====&lt;br /&gt;
 root@zero:~# nice&lt;br /&gt;
 0&lt;br /&gt;
 root@zero:~# nice -n 9 bash&lt;br /&gt;
 root@zero:~# nice&lt;br /&gt;
 9&lt;br /&gt;
 root@zero:~#&lt;br /&gt;
&lt;br /&gt;
====renice: Ändert den Grundwert der Priorität eines laufenden Prozesses====&lt;br /&gt;
 root@zero:~# renice 10 5742&lt;br /&gt;
 5742: Alte Priorität: 0, neue Priorität: 10&lt;br /&gt;
&lt;br /&gt;
====top: Zeigt die Prozesse mit ihrem Status an (Abbrechen mit q)====&lt;br /&gt;
 root@zero:~# top&lt;br /&gt;
 top - 08:51:08 up 20 min,  1 user,  load average: 0.00, 0.02, 0.06&lt;br /&gt;
 Tasks:  93 total,   1 running,  92 sleeping,   0 stopped,   0 zombie&lt;br /&gt;
 Cpu(s):  1.6%us,  3.1%sy,  0.1%ni, 84.9%id, 10.2%wa,  0.0%hi,  0.2%si,  0.0%st&lt;br /&gt;
 Mem:    509504k total,   273948k used,   235556k free,    11312k buffers&lt;br /&gt;
 Swap:   321260k total,        0k used,   321260k free,   118380k cached&lt;br /&gt;
 &lt;br /&gt;
  PID USER      PR  NI  VIRT  RES  SHR S %CPU %MEM    TIME+  COMMAND                                                                       &lt;br /&gt;
 2208 mysql     20   0  125m  21m 5552 S  1.7  4.2   0:02.29 mysqld                                                                        &lt;br /&gt;
 3201 root      20   0  2444 1064  828 R  1.7  0.2   0:00.04 top                                                                           &lt;br /&gt;
    1 root      20   0  1908  780  564 S  0.0  0.2   0:02.19 init                                                                          &lt;br /&gt;
    2 root      15  -5     0    0    0 S  0.0  0.0   0:00.00 kthreadd                                                                      &lt;br /&gt;
    3 root      RT  -5     0    0    0 S  0.0  0.0   0:00.00 migration/0                                                                   &lt;br /&gt;
    4 root      15  -5     0    0    0 S  0.0  0.0   0:00.03 ksoftirqd/0                                                                   &lt;br /&gt;
    5 root      RT  -5     0    0    0 S  0.0  0.0   0:00.00 watchdog/0                                                                    &lt;br /&gt;
    6 root      15  -5     0    0    0 S  0.0  0.0   0:00.04 events/0                                                                      &lt;br /&gt;
    7 root      15  -5     0    0    0 S  0.0  0.0   0:00.00 khelper                                                                       &lt;br /&gt;
    8 root      RT  -5     0    0    0 S  0.0  0.0   0:00.00 kstop/0                                                                       &lt;br /&gt;
    9 root      15  -5     0    0    0 S  0.0  0.0   0:00.00 kintegrityd/0                                                                 &lt;br /&gt;
   10 root      15  -5     0    0    0 S  0.0  0.0   0:00.03 kblockd/0                                                                     &lt;br /&gt;
   11 root      15  -5     0    0    0 S  0.0  0.0   0:00.00 kacpid                                                                        &lt;br /&gt;
   12 root      15  -5     0    0    0 S  0.0  0.0   0:00.00 kacpi_notify                                                                  &lt;br /&gt;
   13 root      15  -5     0    0    0 S  0.0  0.0   0:00.00 cqueue                                                                        &lt;br /&gt;
   14 root      15  -5     0    0    0 S  0.0  0.0   0:00.53 ata/0                                                                         &lt;br /&gt;
   15 root      15  -5     0    0    0 S  0.0  0.0   0:00.00 ata_aux&lt;br /&gt;
&lt;br /&gt;
Kommandos&lt;br /&gt;
&lt;br /&gt;
*h - Hilfe&lt;br /&gt;
*u - User&lt;br /&gt;
*k - Kill&lt;br /&gt;
*r - Renice&lt;br /&gt;
*d - Delay (Default 3s)&lt;br /&gt;
*n - Tasks (Default unbegrenzt)&lt;br /&gt;
*W - Schreibe aktuelle Konfiguration in Datei&lt;br /&gt;
*q - Quit&lt;br /&gt;
&lt;br /&gt;
====pstree: Zeigt die Prozesse als Baumstruktur====&lt;br /&gt;
 root@zero:~# pstree&lt;br /&gt;
 init─┬─NetworkManager&lt;br /&gt;
      ├─acpid&lt;br /&gt;
      ├─apache2───5*[apache2]&lt;br /&gt;
      ├─atd&lt;br /&gt;
      ├─bluetoothd&lt;br /&gt;
      ├─console-kit-dae───63*[{console-kit-dae}]&lt;br /&gt;
      ├─cron&lt;br /&gt;
      ├─cupsd&lt;br /&gt;
      ├─dbus-daemon&lt;br /&gt;
      ├─dd&lt;br /&gt;
      ├─gdm───gdm─┬─Xorg&lt;br /&gt;
      │           └─gdmgreeter&lt;br /&gt;
      ├─6*[getty]&lt;br /&gt;
      ├─hald───hald-runner─┬─hald-addon-acpi&lt;br /&gt;
      │                    ├─hald-addon-inpu&lt;br /&gt;
      │                    └─2*[hald-addon-stor]&lt;br /&gt;
      ├─klogd&lt;br /&gt;
      ├─nm-system-setti&lt;br /&gt;
      ├─nmbd&lt;br /&gt;
      ├─nscd───11*[{nscd}]&lt;br /&gt;
      ├─portmap&lt;br /&gt;
      ├─rpc.statd&lt;br /&gt;
      ├─slapd───2*[{slapd}]&lt;br /&gt;
      ├─smbd───smbd&lt;br /&gt;
      ├─sshd───sshd───bash───bash───pstree&lt;br /&gt;
      ├─syslogd&lt;br /&gt;
      ├─system-tools-ba&lt;br /&gt;
      ├─udevd&lt;br /&gt;
      ├─winbindd─┬─winbindd───winbindd&lt;br /&gt;
      │          └─3*[winbindd]&lt;br /&gt;
      └─wpa_supplicant&lt;br /&gt;
&lt;br /&gt;
===Jobs===&lt;br /&gt;
Unter einem Job versteht man ein Programm, welches man von der Shell gelöst&lt;br /&gt;
hat. D. h. man kann ganz normal weiter arbeiten und der Job verrichtet seinen&lt;br /&gt;
Dienst im Hintergrund. Man kann jederzeit zu diesem Job wieder Kontakt&lt;br /&gt;
aufnehmen.&lt;br /&gt;
&lt;br /&gt;
Ein Job kann auf 2 Arten gestarten werden:&lt;br /&gt;
&lt;br /&gt;
# Durch Anhängen des &amp;amp; Zeichens beim Programmstart&lt;br /&gt;
 root@zero:~# tail -f /var/log/messages &amp;amp;&lt;br /&gt;
 Jun 19 06:59:31 zero -- MARK --&lt;br /&gt;
 Jun 19 07:19:31 zero -- MARK --&lt;br /&gt;
 Jun 19 07:39:32 zero -- MARK --&lt;br /&gt;
 Jun 19 07:44:57 zero syslogd 1.5.0#5ubuntu3: restart.&lt;br /&gt;
 Jun 19 07:59:32 zero -- MARK --&lt;br /&gt;
 Jun 19 08:19:32 zero -- MARK --&lt;br /&gt;
 Jun 19 08:39:32 zero -- MARK --&lt;br /&gt;
 Jun 19 08:59:32 zero -- MARK --&lt;br /&gt;
 Jun 19 09:19:33 zero -- MARK --&lt;br /&gt;
 Jun 19 09:39:33 zero -- MARK --&lt;br /&gt;
 [3] 27421&lt;br /&gt;
&lt;br /&gt;
# Durch Stoppen des Prozesses durch Drücken von Strg-Z und in den Hintergrund schicken mit %n (n ist die Jobnummer)&lt;br /&gt;
 root@zero:~# watch cat /proc/cpuinfo&lt;br /&gt;
 Strg-Z&lt;br /&gt;
 [4]+  Stopped                 watch cat /proc/cpuinfo&lt;br /&gt;
 root@zero:~# bg %4&lt;br /&gt;
 [4]+ watch cat /proc/cpuinfo &amp;amp;&lt;br /&gt;
&lt;br /&gt;
Anweisungen im Zusammenhang mit Jobs (n ist die Jobnummer)&lt;br /&gt;
* bg %n : Einen Job in den Hintergrund stellen (wie oben)&lt;br /&gt;
* fg %n : Einen Job in den Vordergrund holen&lt;br /&gt;
 root@zero:~# fg %4&lt;br /&gt;
 watch cat /proc/cpuinfo&lt;br /&gt;
&lt;br /&gt;
* jobs : Aktive Jobs ausgeben&lt;br /&gt;
&lt;br /&gt;
 root@zero:~# jobs&lt;br /&gt;
 [1]   Running                 tail -f /var/log/syslog &amp;amp;&lt;br /&gt;
 [2]   Running                 tail -f /var/log/syslog &amp;amp;&lt;br /&gt;
 [3]-  Running                 tail -f /var/log/messages &amp;amp;&lt;br /&gt;
 [4]+  Stopped                 watch cat /proc/cpuinfo&lt;br /&gt;
&lt;br /&gt;
* Strg-Z : Einen Vordergrund-Job vorübergehend anhalten&lt;br /&gt;
* kill -STOP %n : Unterbricht Job im Hintergrund&lt;br /&gt;
 root@zero:~# kill -STOP %1&lt;br /&gt;
 root@zero:~# jobs&lt;br /&gt;
 [1]+  '''Stopped'''                 tail -f /var/log/syslog&lt;br /&gt;
 [2]   Running                 tail -f /var/log/syslog &amp;amp;&lt;br /&gt;
 [3]   Running                 tail -f /var/log/messages &amp;amp;&lt;br /&gt;
 [4]-  Stopped                 watch cat /proc/cpuinfo&lt;br /&gt;
* kill -CONT %n : Setzt den unterbrochenen Job im Hintergrund fort&lt;br /&gt;
root@zero:~# kill -CONT %1&lt;br /&gt;
root@zero:~# jobs&lt;br /&gt;
 [1]+  '''Running'''                 tail -f /var/log/syslog &amp;amp;&lt;br /&gt;
 [2]   Running                 tail -f /var/log/syslog &amp;amp;&lt;br /&gt;
 [3]   Running                 tail -f /var/log/messages &amp;amp;&lt;br /&gt;
 [4]-  Stopped                 watch cat /proc/cpuinfo&lt;br /&gt;
* kill -KILL %n : Tötet Job im Hintergrund&lt;br /&gt;
 root@zero:~# kill -KILL %1&lt;br /&gt;
 root@zero:~# jobs&lt;br /&gt;
 [1]+  '''Killed'''                  tail -f /var/log/syslog&lt;br /&gt;
 [2]   Running                 tail -f /var/log/syslog &amp;amp;&lt;br /&gt;
 [3]   Running                 tail -f /var/log/messages &amp;amp;&lt;br /&gt;
 [4]-  Stopped                 watch cat /proc/cpuinfo&lt;br /&gt;
 root@zero:~# jobs&lt;br /&gt;
 [2]   Running                 tail -f /var/log/syslog &amp;amp;&lt;br /&gt;
 [3]-  Running                 tail -f /var/log/messages &amp;amp;&lt;br /&gt;
 [4]+  Stopped                 watch cat /proc/cpuinfo&lt;br /&gt;
&lt;br /&gt;
Bedingungen, die zu Jobausführung eingehalten werden sollen:&lt;br /&gt;
* Der Job soll nicht auf den Bildschirm schreiben (Standardausgabe +Standardfehlerkanal).&lt;br /&gt;
* Er soll keine Eingaben vom Benutzer erwarten.&lt;br /&gt;
&lt;br /&gt;
==Suchen von Dateien==&lt;br /&gt;
===find===&lt;br /&gt;
 find ab_wo_wird_gesucht was_wird_gesucht aktion&lt;br /&gt;
 find [Pfad] [Bedingung] [Aktion]&lt;br /&gt;
&lt;br /&gt;
====Nach Namen====&lt;br /&gt;
 find [Pfad] '''-name''' [Name]&lt;br /&gt;
 &lt;br /&gt;
Finde alle Dateien mit Namen test ab dem Verzeichnis /home und gebe diese Zeilenweise aus&lt;br /&gt;
 root@zero:~# find /home -name test -print&lt;br /&gt;
 /home/xinux/test&lt;br /&gt;
 /home/test&lt;br /&gt;
&lt;br /&gt;
Wie oben, jedoch mit Namensanfang test&lt;br /&gt;
 root@zero:/home/xinux# find /home -name 'test*'&lt;br /&gt;
 /home/xinux/testdatei&lt;br /&gt;
 /home/xinux/test&lt;br /&gt;
 /home/test&lt;br /&gt;
&lt;br /&gt;
====Nach Benutzer(Eigentümer)====&lt;br /&gt;
 root@zero:/tmp# find /tmp/ '''-user''' xinux&lt;br /&gt;
 /tmp/datei&lt;br /&gt;
&lt;br /&gt;
====Nach Gruppe====&lt;br /&gt;
 root@zero:/tmp# find /tmp/ '''-group''' hacker&lt;br /&gt;
 /tmp/datei3&lt;br /&gt;
 /tmp/datei2&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
====Nach Typ====&lt;br /&gt;
Es wird nach Dateien anhand Ihrer Art gesucht:&lt;br /&gt;
 find [Pfad] '''-type''' [Typ] &lt;br /&gt;
Typ:&lt;br /&gt;
* f: Normale Dateien&lt;br /&gt;
 root@zero:~# find /tmp/ -type f&lt;br /&gt;
 /tmp/mbr.img&lt;br /&gt;
 /tmp/datei&lt;br /&gt;
 /tmp/zeugs&lt;br /&gt;
 /tmp/.X0-lock&lt;br /&gt;
* d: Verzeichnisse&lt;br /&gt;
 root@zero:~# find /var/log -type d&lt;br /&gt;
 /var/log&lt;br /&gt;
 /var/log/apache2&lt;br /&gt;
 /var/log/unattended-upgrades&lt;br /&gt;
 /var/log/apparmor&lt;br /&gt;
 /var/log/ConsoleKit&lt;br /&gt;
 /var/log/dist-upgrade&lt;br /&gt;
 /var/log/dist-upgrade/20090526-1052&lt;br /&gt;
 /var/log/cups&lt;br /&gt;
 /var/log/apt&lt;br /&gt;
 /var/log/fsck&lt;br /&gt;
 /var/log/samba&lt;br /&gt;
 /var/log/samba/cores&lt;br /&gt;
 /var/log/samba/cores/smbd&lt;br /&gt;
 /var/log/samba/cores/nmbd&lt;br /&gt;
 /var/log/samba/cores/winbindd&lt;br /&gt;
 /var/log/installer&lt;br /&gt;
 /var/log/gdm&lt;br /&gt;
 /var/log/news&lt;br /&gt;
* c: Char Devices (Zeichenorientierte Gerätedatei)&lt;br /&gt;
 root@zero:~# find / -type c&lt;br /&gt;
 /lib/udev/devices/kmem&lt;br /&gt;
 /lib/udev/devices/null&lt;br /&gt;
 /lib/udev/devices/console&lt;br /&gt;
 /lib/udev/devices/ppp&lt;br /&gt;
 /lib/udev/devices/net/tun&lt;br /&gt;
* b: Block Devices (Blockorientierte Gerätedatei)&lt;br /&gt;
* p: Benannte Pipe&lt;br /&gt;
* l: Links&lt;br /&gt;
* s: Sockets&lt;br /&gt;
&lt;br /&gt;
====Nach Modifikation====&lt;br /&gt;
Listet alle Dateien in /etc auf, die innerhalb von zwei Tagen modifiziert wurden&lt;br /&gt;
 root@zero:/var/log# find /etc/ -mtime 2 -print&lt;br /&gt;
 /etc/apache2&lt;br /&gt;
 /etc/apache2/mods-available&lt;br /&gt;
 /etc/apache2/conf.d&lt;br /&gt;
 /etc/apache2/sites-available&lt;br /&gt;
 /etc/bash_completion.d&lt;br /&gt;
 /etc/blkid.tab.old&lt;br /&gt;
 /etc/firefox-3.0/profile&lt;br /&gt;
 /etc/firefox-3.0/profile/chrome&lt;br /&gt;
 /etc/firefox-3.0/pref&lt;br /&gt;
 /etc/profile.d&lt;br /&gt;
 /etc/ufw/applications.d&lt;br /&gt;
 /etc/logrotate.d&lt;br /&gt;
 /etc/xulrunner-1.9&lt;br /&gt;
 /etc/blkid.tab&lt;br /&gt;
 /etc/cron.daily&lt;br /&gt;
 /etc/alternatives&lt;br /&gt;
 /etc/alternatives/x-www-browser&lt;br /&gt;
 /etc/alternatives/xulrunner&lt;br /&gt;
 /etc/gre.d&lt;br /&gt;
 /etc/hal/fdi/policy&lt;br /&gt;
 /etc/dbus-1/system.d&lt;br /&gt;
 /etc/udev/rules.d&lt;br /&gt;
&lt;br /&gt;
====Nach Größe====&lt;br /&gt;
Finde Dateien in /tmp, die größer als 100 MByte sind&lt;br /&gt;
 root@zero:/tmp# find /tmp/ -size +100M&lt;br /&gt;
 /tmp/datei&lt;br /&gt;
&lt;br /&gt;
Finde Dateien in /tmp, die kleiner als 100 KByte sind&lt;br /&gt;
 root@zero:/tmp# find /tmp/ -size -100k&lt;br /&gt;
 /tmp/&lt;br /&gt;
 /tmp/datei3&lt;br /&gt;
 /tmp/backup &lt;br /&gt;
 /tmp/datei2&lt;br /&gt;
 /tmp/.winbindd &lt;br /&gt;
 /tmp/.winbindd/pipe&lt;br /&gt;
 /tmp/mbr.img&lt;br /&gt;
 /tmp/zeugs&lt;br /&gt;
 /tmp/.ICE-unix&lt;br /&gt;
 /tmp/.X0-lock&lt;br /&gt;
 /tmp/datei1&lt;br /&gt;
 /tmp/.X11-unix&lt;br /&gt;
 /tmp/.X11-unix/X0&lt;br /&gt;
 /tmp/pulse-PKdhtXMmr18n&lt;br /&gt;
&lt;br /&gt;
====Nach Berechtigungen====&lt;br /&gt;
Finde Dateien in Home mit der Berechtigung 777 (-rwxrwxrwx)&lt;br /&gt;
 root@zero:/var# find /home/ -perm 777&lt;br /&gt;
 /home/samba&lt;br /&gt;
 /home/xinux/Examples&lt;br /&gt;
 /home/xinux/.pulse/1f0763ee4cf4c7e1d3c07fd149dda37b:runtime&lt;br /&gt;
 /home/test/Examples&lt;br /&gt;
&lt;br /&gt;
===locate===&lt;br /&gt;
Locate arbeitet über einen Index, der erstellt und aktualisiert werden muss. Aus diesem Grund kann locate teilweise nicht &lt;br /&gt;
akutell sein. Es ist immer schneller als find und es durchsucht immer das ganze Dateisystem. &lt;br /&gt;
 locate [Dateiname]&lt;br /&gt;
 &lt;br /&gt;
Lokalisiere die Datei wvdial.conf. Anmerkung: Der Stern wird beim Suchen automatisch hinzugefügt. Entspricht also&lt;br /&gt;
wvidal.conf*&lt;br /&gt;
 root@zero:~# locate wvdial.conf&lt;br /&gt;
 /etc/wvdial.conf&lt;br /&gt;
 /usr/share/man/man5/wvdial.conf.5.gz&lt;br /&gt;
 /var/lib/dpkg/info/wvdial.conffiles&lt;br /&gt;
 /var/lib/dpkg/info/wvdial.config&lt;br /&gt;
&lt;br /&gt;
Lokalisiere die Datei wvdial.conf und nur diese&lt;br /&gt;
 root@zero:~# locate -b '\wvdial.conf'&lt;br /&gt;
 /etc/wvdial.conf&lt;br /&gt;
&lt;br /&gt;
Aktualisieren des Indexes&lt;br /&gt;
 root@zero:~# updatedb&lt;br /&gt;
&lt;br /&gt;
==Wie wird ein Kommando lokalisiert==&lt;br /&gt;
Wenn die Shell alle Ersetzungen in der Kommandozeile vorgenommen und alle Umleitungen vorbereitet hat, ist der Zeitpunkt &lt;br /&gt;
gekommen, auf den der Anwender die ganze Zeit gewartet hat. Die Shell versucht das Kommando auszuführen. Dazu muss sie &lt;br /&gt;
es aber erst lokalisieren. Das erste passende Kommando wird ausgeführt.&lt;br /&gt;
&lt;br /&gt;
Als Kommandoname wird immer das erste Wort eines einfachen Kommandos erkannt. Ein Kommandoname kann mit Pfadnamen in &lt;br /&gt;
einem Verzeichnis (absolut oder relativ) angegeben werden. Die Shell erkennt dies an (mindestens) einem Slash `/' &lt;br /&gt;
im Kommandonamen. Wenn kein Verzeichnis angegeben ist, versucht die Shell selbst, das Kommando zu finden. Dazu wird &lt;br /&gt;
der Kommandoname zuerst in der Hashtabelle gesucht, dann wird er mit den Synonymen, mit den Scriptfunktionen und &lt;br /&gt;
schließlich mit den Shellfunktionen verglichen. &lt;br /&gt;
&lt;br /&gt;
Wird auf diese Weise kein Programm dieses Namens gefunden, werden alle in der PATH-Umgebungsvariablen aufgeführten &lt;br /&gt;
Verzeichnisse nach einer ausführbaren Datei dieses Namens durchsucht. Wird auch hier kein passendes Kommando gefunden, &lt;br /&gt;
gibt die Shell eine Fehlermeldung aus.&lt;br /&gt;
&lt;br /&gt;
===which und type===&lt;br /&gt;
====which====&lt;br /&gt;
which gibt die vollen Pfadnamen der Dateien aus, die bei Benutzung des angegebenen Befehls ausgeführt werden würden.&lt;br /&gt;
&lt;br /&gt;
 which [-a] Dateiname &lt;br /&gt;
&lt;br /&gt;
Optionen:&lt;br /&gt;
&lt;br /&gt;
* -a : Alle Treffer ausgeben, nicht nur den ersten&lt;br /&gt;
* --skip-dot : Verzeichnisse, die mit einem Punkt beginnen, auslassen&lt;br /&gt;
&lt;br /&gt;
Beispiel&lt;br /&gt;
 root@zero:~# which startx&lt;br /&gt;
 /usr/bin/startx&lt;br /&gt;
&lt;br /&gt;
====type====&lt;br /&gt;
Anzeigen der absoluten Pfadnamen von Befehlen, und ob sich diese Befehle in der Hash-Tabelle der aktuellen&lt;br /&gt;
Shell befinden.&lt;br /&gt;
&lt;br /&gt;
 type [Optionen] Befehle&lt;br /&gt;
&lt;br /&gt;
Beispiel&lt;br /&gt;
 root@zero:~# type ls&lt;br /&gt;
 ls is aliased to `ls --color=auto'&lt;br /&gt;
&lt;br /&gt;
Optionen:&lt;br /&gt;
&lt;br /&gt;
* -a : Alle vorkommenden Befehle werden ausgegeben, nicht nur das, welches aufgerufen werden würde&lt;br /&gt;
 root@zero:~# type '''-a''' ls&lt;br /&gt;
 ls is aliased to `ls --color=auto'&lt;br /&gt;
 ls is /bin/ls&lt;br /&gt;
&lt;br /&gt;
* -p : Anzeigen des Eintrags von Befehl in der Hash-Tabelle. Dieser Wert kann sich vom ersten Auftreten des Befehls in PATH&lt;br /&gt;
unterscheiden&lt;br /&gt;
 root@zero:~# type '''-p''' apache2&lt;br /&gt;
 /usr/sbin/apache2&lt;br /&gt;
&lt;br /&gt;
* -t : Anzeigen, ob Befehl ein Aliasname, ein Schlüsselwort, eine Funktion, ein eingebauter Befehl oder eine Datei ist&lt;br /&gt;
 root@zero:~# type '''-t''' apache2&lt;br /&gt;
 file&lt;/div&gt;</summary>
		<author><name>192.168.178.46</name></author>
	</entry>
	<entry>
		<id>https://www.xinux.net/index.php?title=Linux_Grundlagen&amp;diff=118</id>
		<title>Linux Grundlagen</title>
		<link rel="alternate" type="text/html" href="https://www.xinux.net/index.php?title=Linux_Grundlagen&amp;diff=118"/>
		<updated>2009-07-08T06:55:38Z</updated>

		<summary type="html">&lt;p&gt;192.168.178.46: /* top: Zeigt die Prozesse mit ihrem Status an (Abbrechen mit q) */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Einführung==&lt;br /&gt;
===Geschichte Unix===&lt;br /&gt;
====1969====&lt;br /&gt;
Am Anfang von Linux steht Multics, ein von Bell Laboratories geschaffenes &amp;quot;Betriebssystem&amp;quot;, &lt;br /&gt;
das noch mit Lochkarten arbeitete. Multics wird mit Unterstützung von AT&amp;amp;T und Western &lt;br /&gt;
Electric unter Mitarbeit von Ken Thompson und Dennis Ritchie weiterentwickelt. Obwohl sich &lt;br /&gt;
Bell Laboratories bald zurückzieht, gibt Thompson das Projekt nicht auf.  Zum Entwicklerteam &lt;br /&gt;
gehören auch Rudd Canaday und Brian Kernighan. Letzterer gibt 1970 dem Betriebssystem den Namen UNIX. &lt;br /&gt;
Thompson definiert 7 Richtlinien für UNIX:&lt;br /&gt;
 &lt;br /&gt;
# Hierarchische Anordnung der Dateisysteme&lt;br /&gt;
# Die Ausgabe von Daten an die Peripherie(-geräte) und Dateien soll gleich sein.&lt;br /&gt;
# Prozesse und Programme sollen miteinander kommunizieren.&lt;br /&gt;
# Multitasking (voneinander getrennte Prozesse)&lt;br /&gt;
# Persönliche Shell's&lt;br /&gt;
# Der Compiler soll für viele Programmiersprachen tauglich sein.&lt;br /&gt;
# Portabilität&lt;br /&gt;
&lt;br /&gt;
====1971====&lt;br /&gt;
Bis 1971 ist das für eine DEC PDP-7 geschriebene Unix als Version 1 auf eine PDP-11 portiert. Bis&lt;br /&gt;
zur Version 4 entwickelt Ritchie die Programmier- (Hoch-) Sprache C. Das in Assembler geschriebene&lt;br /&gt;
Unix wird fast völlig nach C übersetzt, wodurch zum erstenmal die geforderte Hardware-Unabhängigkeit&lt;br /&gt;
des Betriebssystems realisiert werden kann.&lt;br /&gt;
&lt;br /&gt;
====1975====&lt;br /&gt;
Da AT&amp;amp;T aufgrund vertraglicher Bindungen mit der US-Bundesregierung Unix nicht kommerziell vermarkten darf, stellt sie den Source Code für ein paar hundert Dollar den Universitäten, Lehr- und Forschungsanstalten zur Verfügung. Dies führt zu einer sehr dynamischen Entwicklung von Unix. 1975 wird die Version 6 als erstes UNIX-System veröffentlicht, die darauffolgende Version 7 wird sehr erfolgreich. Da es keine Standardisierung gibt, entwickeln bald verschiedenste Firmen ihr eigenes UNIX. Ab 1984 wird AT&amp;amp;T per Gerichtsbeschluss erlaubt, Unix zu vermarkten. AT&amp;amp;T verkauft sein Unix V und beginnt, sich um einen internationalen Standard von UNIX zu bemühen. &lt;br /&gt;
&lt;br /&gt;
====1984====&lt;br /&gt;
Durch Richard Stallman wird die Free Software Foundation (FSF) gegründet. Diese initiiert ein Projekt namens GNU (GNU ist Not Unix), welches das Ziel verfolgt, ein freies UNIX System zu schaffen. &lt;br /&gt;
&lt;br /&gt;
====1987====&lt;br /&gt;
AT&amp;amp;T verbietet die Verwendung des Unix Quellcodes an den Universitäten. Während dieser Zeit ist Andrew (Andy) Tannenbaum Professor an der Freien Universität von Amsterdam und entwickelt Minix. Minix ist ein kostengünstiges Lehrbetriebssystem und kommt ohne jeglichen AT&amp;amp;T Code aus, obwohl es die gleiche Funktionalität wie Unix 7 bietet. Im Usenet unter comp.os.minix entsteht eine Minix-Gemeinde, die den Minix Kernel und die Anwendungen rundherum programmiert und verbessert.&lt;br /&gt;
&lt;br /&gt;
====1991====&lt;br /&gt;
Linus Torvalds hat als Student für Computerwissenschaften an der Universität in Helsinki Minix installiert und das Buch von Andy Tannenbaum gelesen. Er beginnt im Sinne der FSF einen Unix ähnlichen Kernel zu programmieren mit der Idee, &amp;quot;ein besseres Minix als Minix&amp;quot; zu bauen. 1992 stellt er die Version 0.02 mit dem Namen Linux der Internetgemeinde zur Verfügung. &lt;br /&gt;
&lt;br /&gt;
====1994====&lt;br /&gt;
Die Linux Version 1.0 wird freigegeben. Das Linux Fieber beginnt... &lt;br /&gt;
&lt;br /&gt;
====1998====&lt;br /&gt;
Der Kreis der Linux Entwickler und Anwender ist kräftig angeschwollen. KDE 1.0 wird veröffentlicht. Die Zuwachsraten von Linux übertreffen die von Windows NT deutlich. &lt;br /&gt;
&lt;br /&gt;
====1999====&lt;br /&gt;
Der lange erwartete stabile Linux Kernel Version 2.2 wird freigegeben. Namhafte Firmen wie IBM kündigen ihre Unterstützung für Linux an. &lt;br /&gt;
&lt;br /&gt;
====2001====&lt;br /&gt;
Der lange erwartete stabile Linux Kernel Version 2.4 wird freigegeben. USB Unterstützung und eine neue Firewallimplementierung zeichnen ihn aus.&lt;br /&gt;
&lt;br /&gt;
====2003====&lt;br /&gt;
Linux Kernel Version 2.6 wird freigegeben. Am auffälligsten sind Änderungen bei der Modulverwaltung.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Distributionen===&lt;br /&gt;
{| Border=1 Cellpadding=2&lt;br /&gt;
| &lt;br /&gt;
|Url&lt;br /&gt;
|Paketformat&lt;br /&gt;
|-&lt;br /&gt;
|Red Hat&lt;br /&gt;
|www.redhat.com&lt;br /&gt;
|rpm&lt;br /&gt;
|-&lt;br /&gt;
|fedora&lt;br /&gt;
|fedora.redhat.com&lt;br /&gt;
|rpm&lt;br /&gt;
|-&lt;br /&gt;
|CentOS&lt;br /&gt;
|www.centos.org&lt;br /&gt;
|rpm&lt;br /&gt;
|-&lt;br /&gt;
|Suse/openSUSE&lt;br /&gt;
|www.opensuse.org&lt;br /&gt;
|rpm&lt;br /&gt;
|-&lt;br /&gt;
|Debian&lt;br /&gt;
|www.debian.org&lt;br /&gt;
|deb&lt;br /&gt;
|-&lt;br /&gt;
|Ubuntu&lt;br /&gt;
|www.ubuntu.com&lt;br /&gt;
|deb&lt;br /&gt;
|-&lt;br /&gt;
|Mandrake&lt;br /&gt;
|www.linux-mandrake.com&lt;br /&gt;
|rpm&lt;br /&gt;
|-&lt;br /&gt;
|Easy Linux&lt;br /&gt;
|www.easy-linux.de&lt;br /&gt;
|rpm&lt;br /&gt;
|-&lt;br /&gt;
|Turbo&lt;br /&gt;
|www.turbolinux.com&lt;br /&gt;
|rpm&lt;br /&gt;
|-&lt;br /&gt;
|minis&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|toms&lt;br /&gt;
|www.toms.net/rb&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|damn small linux&lt;br /&gt;
|www.damnsmalllinux.org&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|pocket-linux&lt;br /&gt;
|www.pocket-linux.org&lt;br /&gt;
|&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
====Bücher====&lt;br /&gt;
 Titel : Das Linux Anwenderhandbuch und Leitfaden für die Systemverwaltung&lt;br /&gt;
 Autor : Sebastian Hetze, Dirk Hohndel, Olaf Kirch und Martin Müller&lt;br /&gt;
 Verlag: Lunetix&lt;br /&gt;
 ISBN : 3-929764-06-7&lt;br /&gt;
&lt;br /&gt;
 Titel : Linux in a Nutshell&lt;br /&gt;
 Autor : Jessica Perry Hekman und die Mitarbeiter von O'Reilly &amp;amp; Associates&lt;br /&gt;
 Verlag: O'Reilly&lt;br /&gt;
 ISBN : 3-930673-57-6&lt;br /&gt;
&lt;br /&gt;
 Titel : Linux - Wegweiser zur Installation und Konfiguration&lt;br /&gt;
 Autor : Matt Welsh, Lar Kaufman, Matthias Kalle Dallheimer&lt;br /&gt;
 Verlag: O'Reilly&lt;br /&gt;
 ISBN : 3-930673-58-4 (deutsch), 1-56592-469-X (englisch)&lt;br /&gt;
&lt;br /&gt;
 Titel : Linux - Installation, Konfiguration, Anwendung&lt;br /&gt;
 Autor : Michael KoflerMultitasking&lt;br /&gt;
 Verlag: Addison-Wesley&lt;br /&gt;
 ISBN : 3-8273-1475-5&lt;br /&gt;
&lt;br /&gt;
 Titel : Linux - Wegweiser für Netzwerker&lt;br /&gt;
 Autor : Olaf Kirch&lt;br /&gt;
 Verlag: O'Reilly&lt;br /&gt;
 ISBN : 3-930673-18-5&lt;br /&gt;
&lt;br /&gt;
 Titel : TCP/IP-Netzwerk-Administration&lt;br /&gt;
 Autor : Craig Hunt&lt;br /&gt;
 Verlag: O'Reilly&lt;br /&gt;
 ISBN : 3-89721-110-6&lt;br /&gt;
&lt;br /&gt;
 Titel : Essential System Administration&lt;br /&gt;
 Autor : Eleen Frisch&lt;br /&gt;
 Verlag: O'Reilly&lt;br /&gt;
 ISBN : 1-56592-127-5&lt;br /&gt;
&lt;br /&gt;
==Betriebssystem==&lt;br /&gt;
===Was ist ein Betriebssystem?===&lt;br /&gt;
&lt;br /&gt;
Ein Betriebssystem liegt logisch gesehen zwischenAnwendungsprogramm und Hardware.&lt;br /&gt;
&lt;br /&gt;
Es nimmt die Anforderungen der Anwendungsprogramme entgegen und leitet&lt;br /&gt;
diese kontrolliert an die Hardware weiter. Kein Anwendungsprogramm sollte&lt;br /&gt;
direkt auf die Hardware zugreifen können. Den zentralen Zugang schafft einzig&lt;br /&gt;
das Betriebssystem. Somit kann das Betriebssystem unsinnige Anforderungen&lt;br /&gt;
oder Bedienungsfehler abblocken.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Image:Linux.jpg]]&lt;br /&gt;
&lt;br /&gt;
===Aufgaben eines Betriebssystems===&lt;br /&gt;
&lt;br /&gt;
# Verbergen der Komplexität der Maschine vor dem Anwender (Abstraktion)&lt;br /&gt;
# Bereitstellen einer Benutzerschnittstelle (&amp;quot;Kommandointerpreter&amp;quot;, &amp;quot;Shell&amp;quot;)&lt;br /&gt;
# Bereitstellen einer normierten Programmierschnittstelle (API)&lt;br /&gt;
# Verwaltung der Ressourcen der Maschine::&lt;br /&gt;
Hauptspeicher&lt;br /&gt;
Prozessor(en)&lt;br /&gt;
Hintergrundspeicher (Platte, Band, etc.)&lt;br /&gt;
Geräte (Terminal, Drucker, Plotter, etc.)&lt;br /&gt;
Rechenzeit&lt;br /&gt;
Koordination von Prozessen&lt;br /&gt;
&lt;br /&gt;
===Aufbau eines Betriebssystems===&lt;br /&gt;
&lt;br /&gt;
Ein Rechensystem besteht aus Hardware, Systemprogrammen und Anwendungs-&lt;br /&gt;
programmen. Unter einem Betriebssystem wird meist die Summe aus Betriebs-&lt;br /&gt;
systemkern (Kernel) und den wichtigsten Systemprogrammen verstanden. Ein&lt;br /&gt;
minimaler LINUX-Kernel besitzt ungefähr eine Größe von 400 - 800 kByte.&lt;br /&gt;
Weitere wichtige Systemkomponenten benötigen zusätzlich 10 - 100 Mbyte&lt;br /&gt;
Plattenplatz.&lt;br /&gt;
&lt;br /&gt;
Ein Betriebssystem stellt den Rechner als erweiterte Maschine (virtuelle&lt;br /&gt;
Maschine) über definierte Software-Schnittstellen zur Verfügung.&lt;br /&gt;
Das Betriebssystem dient als Betriebsmittelverwalter, der Anforderungen&lt;br /&gt;
befriedigt, protokolliert, abrechnet und vermittelt.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Aufgaben des Betriebssystemkerns:&lt;br /&gt;
&lt;br /&gt;
{| Border=1 Cellpadding=2&lt;br /&gt;
|Prozessverwaltung  (dispatching and scheduling)&lt;br /&gt;
| Mehrere Benutzer können mit mehreren Aktionen gleichzeitig im System arbeiten, ohne sich gegenseitig zu beeinflussen. Damit dies möglich ist,  müssen die Aktionen organisiert, koordiniert und verwaltet werden. Die zu verwaltende Einheit nennt man Prozess.&lt;br /&gt;
|-&lt;br /&gt;
|Speicherverwaltung   (memory management)&lt;br /&gt;
|Zuteilen von Speicherbereichen an laufende Prozesse, Schutz der Speicherbereiche vor unbefugten Zugriffen, bei Speicherengpässen: Auslagern von ganzen (swapping) oder von Teilen (paging) von Prozessen auf die Platte (swap file).&lt;br /&gt;
|-&lt;br /&gt;
|Dateiverwaltung  (file handling)&lt;br /&gt;
|Zuteilung von Plattenplatz für Programme, Benutzer und Systemdienste, Schreiben, Lesen und Strukturieren der Daten auf den Massenspeichern; Durch Bereitstellung einer entsprechenden Schnittstelle (VFS, virtual file system) kann der Kern Dateisysteme unterschiedlichster Art (EXT2, FAT, NFS, HPFS, NTFS, ...) ansprechen.&lt;br /&gt;
|-&lt;br /&gt;
|Geräteverwaltung  (resource management)&lt;br /&gt;
|Der Kern ermöglicht und kontrolliert den Zugriff auf die Hardware. Er steuert die Ein- und Ausgabetätigkeiten der Anwender. An den Kern&lt;br /&gt;
gebunden sind die entsprechenden Gerätetreiber (device driver), die damit eine Kommunikation zwischen Kern und Hardware ermöglichen.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
===Multitasking===&lt;br /&gt;
&lt;br /&gt;
Multitasking bedeutet, dass ein Rechner aus Anwendersicht mehrere Aufgaben&lt;br /&gt;
(Tasks) gleichzeitg übernehmen kann. Das Betriebssystem (OS) unterteilt die&lt;br /&gt;
gleichzeitig anstehenden Aufgaben in Einzelarbeitsschritte (Prozesse) und&lt;br /&gt;
managed durch ein Zeitscheibenverfahren (scheduling) die gleichmäßige&lt;br /&gt;
Abarbeitung der Prozesse.&lt;br /&gt;
&lt;br /&gt;
Es wird unterschieden zwischen:&lt;br /&gt;
&lt;br /&gt;
*non-präamptiven (kooperativen=die Ressourcen werden vom aktiven Prozess freigegeben, bei einem Hänger steht das ganze System)&lt;br /&gt;
&lt;br /&gt;
und&lt;br /&gt;
&lt;br /&gt;
*präamptiven (reinem=der Betriebssystemkern steuert Taskwechsel, indem nach einer festgelegten Zeit vom gerade aktiven Prozess zum nächsten weitergeschaltet wird)&lt;br /&gt;
&lt;br /&gt;
===Mehrprozessorbetrieb===&lt;br /&gt;
&lt;br /&gt;
Bei mehreren Prozessoren und Unterstützung durch das OS&lt;br /&gt;
(NT,Linux,Unix,Novell) können mehrere Tasks auf diese verteilt werden und&lt;br /&gt;
gleichzeitig bearbeitet werden. Nachteilig ist, dass dies nicht oder kaum von&lt;br /&gt;
Anwendungsprogrammen unterstützt wird und es zu Kommunikationsproblemen&lt;br /&gt;
zwischen den einzelnen Tasks kommen kann.&lt;br /&gt;
&lt;br /&gt;
===Arten von von Betriebssystemen===&lt;br /&gt;
&lt;br /&gt;
{|Border=1 Cellpadding=2&lt;br /&gt;
|&lt;br /&gt;
|SingleUser  &lt;br /&gt;
|Multiuser&lt;br /&gt;
|-&lt;br /&gt;
|Single Tasking&lt;br /&gt;
|MS - DOS&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|Multi Tasking&lt;br /&gt;
|Windows 3.x&lt;br /&gt;
|UNIX&lt;br /&gt;
|-&lt;br /&gt;
|&lt;br /&gt;
|Windows 95/98&lt;br /&gt;
|Linux&lt;br /&gt;
|-&lt;br /&gt;
|&lt;br /&gt;
|Windows NT4 ohne Erweiterungen&lt;br /&gt;
|VMS&lt;br /&gt;
|-&lt;br /&gt;
|&lt;br /&gt;
|OS/2 &lt;br /&gt;
|Windows NT mit  Erweiterungen&lt;br /&gt;
|-&lt;br /&gt;
|&lt;br /&gt;
|Apple&lt;br /&gt;
|Windows 2000, XP, 2003&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
===SHELL===&lt;br /&gt;
&lt;br /&gt;
Wenn man mit Linux arbeiten will, kann man nicht direkt mit dem Betriebssystem&lt;br /&gt;
kommunizieren. Man braucht dazu ein Hilfsprogramm, welches die&lt;br /&gt;
Kommandoeingaben ordnungsgemäß an das Betriebssystem weiterleitet. Dieses&lt;br /&gt;
Hilfsprogramm hat den Namen Shell.&lt;br /&gt;
&lt;br /&gt;
Die Shell schirmt den Betriebssystemkern von den Anwendungsprogrammen ab.&lt;br /&gt;
Die unterschiedlichen Shells erfüllen alle dieselbe Aufgabe, sie unterscheiden sich&lt;br /&gt;
allerdings in ihrer Syntax.&lt;br /&gt;
&lt;br /&gt;
==Die Installation im Überblick==&lt;br /&gt;
&lt;br /&gt;
Die Installation von Linux geschieht in folgenden Schritten:&lt;br /&gt;
&lt;br /&gt;
# Analyse (Welche Hardware habe ich? ,Hab ich weitere Betriebsysteme?)&lt;br /&gt;
# Booten des Linux-Kernels. (von CD oder Diskette)&lt;br /&gt;
# Laden einer RAM-Disk (das macht das Installationsprogramm automatisch).&lt;br /&gt;
# Partitionieren der Festplatte (fdisk).&lt;br /&gt;
# Einrichten der Swappartition (mkswap), Formatieren der Festplatte (mkfs).&lt;br /&gt;
# Montieren der Dateisysteme (mount), Aktivieren der Swapbereiche (swapon).&lt;br /&gt;
# Kopieren und Auspacken der Daten vom Installationsmedium auf die Festplatte (die eigentliche Installation). (rpm, dpkg oder tar).&lt;br /&gt;
# Geeignete Wahl der Bootmethode unter Berücksichtigung von Punkt 1 (grub, lilo).&lt;br /&gt;
# Konfiguration des Systems (Netz, Modem etc...).&lt;br /&gt;
&lt;br /&gt;
==Erste Schritte==&lt;br /&gt;
===Anmelden===&lt;br /&gt;
Sie können sich nun mit dem Usernamen und dem Passwort, das sie bei der Installation angelegt haben anmelden!&lt;br /&gt;
[[Image:benutzer.jpg]]&lt;br /&gt;
&lt;br /&gt;
[[Image:passwd.jpg]]&lt;br /&gt;
&lt;br /&gt;
===Terminal öffnen===&lt;br /&gt;
&lt;br /&gt;
Ein Terminal öffnen Sie über das Startmenü:&lt;br /&gt;
&lt;br /&gt;
[[Image:Terminalde.jpg]]&lt;br /&gt;
&lt;br /&gt;
Das geöffnete Terminal sieht dann folgendermaßen aus:&lt;br /&gt;
&lt;br /&gt;
[[Image:Terminalde2.jpg]]&lt;br /&gt;
&lt;br /&gt;
===Sudo===&lt;br /&gt;
Rootrechte erlangen sie über den &amp;quot;Sudo&amp;quot;-Befehl&lt;br /&gt;
 &lt;br /&gt;
''Den nächsten Befehl als root ausführen''&lt;br /&gt;
 xinux@zero:~$ sudo cat /etc/shadow&lt;br /&gt;
 [sudo] password for xinux:&lt;br /&gt;
&lt;br /&gt;
''Eine komplette Sitzung als root starten''&lt;br /&gt;
 xinux@zero:~$ sudo -i&lt;br /&gt;
 [sudo] password for xinux:&lt;br /&gt;
 root@zero:~#&lt;br /&gt;
&lt;br /&gt;
===Virtuelle Konsolen===&lt;br /&gt;
&lt;br /&gt;
In die Virtuelle Konsole gelangen sie über &amp;quot;STRG+ALT+(F1-F6)&amp;quot;.&lt;br /&gt;
Sie funktioniert wie ein ganz normales Terminal, und mit &amp;quot;ALT+F7&amp;quot;&lt;br /&gt;
gelangen sie wieder zurück auf die grafische Benutzeroberfläche&lt;br /&gt;
&lt;br /&gt;
===Abmelden===&lt;br /&gt;
&lt;br /&gt;
Abmelden können Sie sich wieder über das Startmenu unter:&lt;br /&gt;
&lt;br /&gt;
[[Image:Logout.jpg]]&lt;br /&gt;
&lt;br /&gt;
Fals sie nur einzelne Sitzungen in einem der Terminals oder &lt;br /&gt;
den Virtuellen Konsolen Abmelden wollen benutzen sie dazu den Befehl: &amp;quot;exit&amp;quot;&lt;br /&gt;
&lt;br /&gt;
===Herunterfahren===&lt;br /&gt;
&lt;br /&gt;
Das Herunterfahren funktioniert auf dem selben Weg.&lt;br /&gt;
&lt;br /&gt;
Entweder sie Benutzen wieder das Startmenü und benutzen diesmal den &amp;quot;Ausschalten ...&amp;quot; Knopf,&lt;br /&gt;
&lt;br /&gt;
Oder sie geben den äquivalenten &amp;quot;shutdown&amp;quot;-Befehl in einem Terminal bzw. der virtuellen Konsole ein.&lt;br /&gt;
&lt;br /&gt;
Allerdings müssen sie dazu als Administrator angemeldet sein s. &amp;quot;Sudo&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Wenn Sie den &amp;quot;shutdown&amp;quot;-Befehl benutzen wollen muss hinter den Befehl&lt;br /&gt;
&lt;br /&gt;
eine Zeitangabe in Minuten oder das wort &amp;quot;now&amp;quot; für sofortiges Ausschalten hinzugefügt werden:&lt;br /&gt;
&lt;br /&gt;
 xinux@zero:~$ sudo -i&lt;br /&gt;
 root@zero:~# shutdown 60&lt;br /&gt;
 &lt;br /&gt;
 Broadcast message from xinux@zero &lt;br /&gt;
         (/dev/pts/3) at 14:29 ...&lt;br /&gt;
 &lt;br /&gt;
 The system is going down for maintenance in 60 minutes!&lt;br /&gt;
&lt;br /&gt;
Sollten sie den Befehl widerrufen wollen dann drücken sie &amp;quot;STRG+C&amp;quot;,&lt;br /&gt;
&lt;br /&gt;
in dem Terminal in dem der shutdown Befehl gestartet wurde,&lt;br /&gt;
&lt;br /&gt;
oder geben sie den &amp;quot;shutdown&amp;quot;-Befehl zusammen mit der Abbruchoption &amp;quot;-c&amp;quot; in einem anderen Terminal ein:&lt;br /&gt;
&lt;br /&gt;
 root@zero:~# shutdown -c&lt;br /&gt;
&lt;br /&gt;
 shutdown: Shutdown cancelled&lt;br /&gt;
 root@zero:~# &lt;br /&gt;
&lt;br /&gt;
Wenn Sie den Rechner Neustarten möchten gibt es dazu die Option &amp;quot;-r&amp;quot; für den &amp;quot;shutdown&amp;quot;-Befehl&lt;br /&gt;
&lt;br /&gt;
oder den &amp;quot;reboot&amp;quot;-Befehl die beide auch als root ausgeführt werden müssen:&lt;br /&gt;
&lt;br /&gt;
 xinux@zero:~$ sudo -i&lt;br /&gt;
 [sudo] password for xinux: &lt;br /&gt;
 root@zero:~# shutdown -r now&lt;br /&gt;
&lt;br /&gt;
 root@zero:~# reboot&lt;br /&gt;
&lt;br /&gt;
===&amp;quot;man&amp;quot;===&lt;br /&gt;
&lt;br /&gt;
Programm zum Einsehen der Online-Manuals&lt;br /&gt;
&lt;br /&gt;
Die Manuals sind in folgende Sektionen unterteilt:&lt;br /&gt;
# Ausführbare Programme oder Shellbefehle&lt;br /&gt;
# Systemaufrufe (Kernelfunktionen)&lt;br /&gt;
# Bibliotheksaufrufe (Funktionen in System-Bibliotheken)&lt;br /&gt;
# Spezielle Dateien (gewöhnlich in /dev)&lt;br /&gt;
# Dateiformate und Konventionen, z. B. /etc/passwd&lt;br /&gt;
# Spiele&lt;br /&gt;
# Makropakete und Konventionen, z. B. man(7), groff(7)&lt;br /&gt;
# Systemadministrationsbefehle (in der Regel nur für root)&lt;br /&gt;
# Kernelroutinen [Nicht Standard]&lt;br /&gt;
&lt;br /&gt;
Aufruf eines Manuals erfolgt durch ''man kommando''&lt;br /&gt;
Beendet wird durch Drücken des Buchstabens q&lt;br /&gt;
Gesucht wird vorwärts durch Eingabe eines /suchausdruck&lt;br /&gt;
Gesucht wird rückwärts durch Eingabe eines ?suchausdruck&lt;br /&gt;
&lt;br /&gt;
Beispiele:&lt;br /&gt;
&lt;br /&gt;
      man passwd        Anschauen der Manualseite zum Programm passwd&lt;br /&gt;
      man 5 passwd      Anschauen der Manualseite zur Datei /etc/passwd&lt;br /&gt;
      man -a passwd     Anschauen aller Manualseiten zu passwd&lt;br /&gt;
      man -k passwd     Durchsucht die Kurzbeschreibungen der Manualseite&lt;br /&gt;
                        nach passwd und gibt alle Treffer aus&lt;br /&gt;
      man -f passwd      Gibt alle gefunden Kurzbescheibungen zu passwd aus&lt;br /&gt;
      man -L en passwd Gibt englische Manualseiten aus&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Was geht vor auf meinem System? (date,who)===&lt;br /&gt;
&lt;br /&gt;
Das Kommando date dient zur Abfrage von Datum und Uhrzeit.&lt;br /&gt;
&lt;br /&gt;
 xinux@zero:~ &amp;gt; date&lt;br /&gt;
 Fre Mär 16 16:35:03 CET 2001&lt;br /&gt;
&lt;br /&gt;
oder auch Anzeige der Grennwich Zeit:&lt;br /&gt;
&lt;br /&gt;
 xinux@zero:~ &amp;gt; date -u&lt;br /&gt;
 Fre Mär 16 15:35:34 UTC 2001&lt;br /&gt;
&lt;br /&gt;
 xinux@zero:~ &amp;gt; date -u &amp;quot;+%X&amp;quot;&lt;br /&gt;
 15:37:19&lt;br /&gt;
&lt;br /&gt;
 xinux@zero:~ &amp;gt; date -u &amp;quot;+%x&amp;quot;&lt;br /&gt;
 01/15/02&lt;br /&gt;
&lt;br /&gt;
who zeigt alle angemeldeten Benutzer an&lt;br /&gt;
&lt;br /&gt;
 thomas@cardassia:~ &amp;gt; who&lt;br /&gt;
 thomas             tty1 Feb 27 16:39&lt;br /&gt;
 thomas             tty2 Mar 2 17:08&lt;br /&gt;
 tina               tty6 Mar 16 16:38&lt;br /&gt;
&lt;br /&gt;
Mit `who --help' bekommen Sie mehr Informationen.&lt;br /&gt;
&lt;br /&gt;
 thomas@cardassia:~ &amp;gt; who --help&lt;br /&gt;
&lt;br /&gt;
Benutzung: who [OPTION]... [ DATEI | ARG1 ARG2 ]&lt;br /&gt;
&lt;br /&gt;
 -H, --heading             print line of column headings&lt;br /&gt;
 -i, -u, --idle            add user idle time as HOURS:MINUTES, . or old&lt;br /&gt;
 -l, --lookup              attempt to canonicalize hostnames via DNS&lt;br /&gt;
 -m                        only hostname and user associated with stdin&lt;br /&gt;
 -q, --count               all login names and number of users logged on&lt;br /&gt;
 -s                        (ignored)&lt;br /&gt;
 -T, -w, --mesg            add user's message status as +, - or ?&lt;br /&gt;
     --message             same as -T&lt;br /&gt;
     --writable            same as -T&lt;br /&gt;
     --help                display this help and exit&lt;br /&gt;
     --version             output version information and exit&lt;br /&gt;
&lt;br /&gt;
==Das UNIX-Dateisystem==&lt;br /&gt;
===Verzeichnisbaum===&lt;br /&gt;
&lt;br /&gt;
[[Image:vztree.jpg]]&lt;br /&gt;
&lt;br /&gt;
Das Betriebssystem UNIX besitzt ein hierarchisches Dateisystem. Es besteht aus:&lt;br /&gt;
* Dateien (Files)&lt;br /&gt;
Dateien speichern Informationen (Text, Bilder, Sound, Videos, Programme) und&lt;br /&gt;
werden über den Dateinamen angesprochen.&lt;br /&gt;
&lt;br /&gt;
* Verzeichnissen (Directories, Kataloge)&lt;br /&gt;
Verzeichnisse besitzen ebenfalls einen Namen und dienen zur Ordnung des&lt;br /&gt;
Dateisystems. Ein Verzeichnis kann Dateien und Unterverzeichnisse&lt;br /&gt;
(Subdirectories) enthalten. Das oberste Verzeichnis im Dateisystem heisst&lt;br /&gt;
Rootverzeichnis oder kurz Root und wird durch / (sprich: slash)&lt;br /&gt;
gekennzeichnet.&lt;br /&gt;
&lt;br /&gt;
Im Gegensatz zu Windows kennt UNIX keine Laufwerke.&lt;br /&gt;
Das obige Bild zeigt ein typisches UNIX-Dateisystem.&lt;br /&gt;
Unterhalb des Rootverzeichnisses befinden sich eine Vielzahl vonVerzeichnissen.&lt;br /&gt;
&lt;br /&gt;
===Wichtige Verzeichnisse===&lt;br /&gt;
&lt;br /&gt;
• '''Homeverzeichnis'''&lt;br /&gt;
&lt;br /&gt;
das Verzeichnis, in dem man sich unmittelbar nach dem Anmelden befindet. Das&lt;br /&gt;
Homeverzeichnis wird vom Systemverwalter eingerichtet; jeder Anwender&lt;br /&gt;
besitzt ein festes Homeverzeichnis. z.B. /home/hans&lt;br /&gt;
&lt;br /&gt;
~ (Tilde) bzw. $HOME (Shellvariable) kennzeichnen das Homeverzeichnis.&lt;br /&gt;
&lt;br /&gt;
• '''Aktuelles Verzeichnis'''&lt;br /&gt;
&lt;br /&gt;
Verzeichnis, in dem man sich aktuell befindet.&lt;br /&gt;
Das aktuelle Verzeichnis wird mit dem Befehl cd (change directory) oder per&lt;br /&gt;
Mausklick verändert.&lt;br /&gt;
Ein einfacher Punkt . kennzeichnet das aktuelle Verzeichnis.&lt;br /&gt;
&lt;br /&gt;
• '''Elternverzeichnis'''&lt;br /&gt;
&lt;br /&gt;
Verzeichnis unmittelbar oberhalb des aktuellen Verzeichnisses.&lt;br /&gt;
Jedes Verzeichnis ausser / besitzt genau ein Elternverzeichnis.&lt;br /&gt;
Zwei Punkte .. kennzeichnen das Elternverzeichnis (abhängig vom aktuellen&lt;br /&gt;
VZ).&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Absoluter Pfadname:===&lt;br /&gt;
&lt;br /&gt;
Beschreibt ausgehend vom Rootverzeichnis den Weg zum Zielverzeichnis oder zur&lt;br /&gt;
Zieldatei. (Welche Verzeichnisse müssen ausgehend von / durchlaufen werden, um&lt;br /&gt;
zum Ziel zu kommen?) Ein absoluter Pfadname beginnt immer mit / .&lt;br /&gt;
&lt;br /&gt;
===Relativer Pfadname:===&lt;br /&gt;
&lt;br /&gt;
Beschreibt ausgehend vom aktuellen Verzeichnis den Weg zum Zielverzeichnis&lt;br /&gt;
oder zur Zieldatei; ein relativer Pfadname beginnt nicht mit / .&lt;br /&gt;
/home/suxer&lt;br /&gt;
absoluter Pfadname für das Verzeichnis sub1 im Homeverzeichnis von suxer&lt;br /&gt;
&lt;br /&gt;
===Verzeichnisstruktur===&lt;br /&gt;
&lt;br /&gt;
 /bin         Kommandos die beim starten benötigt werden (Zugriff hat jeder)&lt;br /&gt;
 /sbin        Wichtige System-Programme (In der Regel root vorberhalten)&lt;br /&gt;
 /boot        Hier findet man die Dateien des Bootmanagers und des Kernel.&lt;br /&gt;
 /dev         In diesem Verzeichnis stehen die Gerätedateien (Devices),&lt;br /&gt;
 /home        Alle Heimatverzeichnisse der Nutzer findet man hier.&lt;br /&gt;
 /lib         Beim Systemstart benötigten Bibliotheken und Modules stehen hier.&lt;br /&gt;
 /mnt         Mountpunkt für temporäre Partitionen&lt;br /&gt;
 /opt         Software, die nicht Installationsumfang von Linux gehören.&lt;br /&gt;
 /root        Heimatverzeichnis des Administrators.&lt;br /&gt;
 /tmp         Temporäre Dateien können hier abgelegt werden&lt;br /&gt;
 /usr         statische Dateien (kann read-only gemountet sein)&lt;br /&gt;
 /var         variable Dateien (muss beschreibar sein )&lt;br /&gt;
 /etc         Konfiguartionsdateien und Startscripte&lt;br /&gt;
 /proc        Virtuelles Dateisystem -&amp;gt; repräsentiert den Kernel&lt;br /&gt;
&lt;br /&gt;
===Unterverzeichnisse von /usr===&lt;br /&gt;
&lt;br /&gt;
 sbin         Programme für root die beim Start nicht benötigt werden&lt;br /&gt;
 bin          Programme für alle die beim Start nicht benötigt werden&lt;br /&gt;
 X11R6        Dateien des X-Window-Sytems&lt;br /&gt;
 bin          Ausführbare Programme&lt;br /&gt;
 doc          Dokumentationen&lt;br /&gt;
 etc          Konfigurationsdateien&lt;br /&gt;
 games        Spiele&lt;br /&gt;
 include      Headerdateien für C-Programme&lt;br /&gt;
 local        Pakete die nicht zur Distribution gehören ähnlich /opt&lt;br /&gt;
 share        Pakete die von mehreren Paketen genutzt werden&lt;br /&gt;
 share/man    Die Manualpages&lt;br /&gt;
 share/info   Seiten des Infosystems&lt;br /&gt;
 share/doc    Dokumentationen&lt;br /&gt;
 src          Sources von Programmen (Kernel und andere)&lt;br /&gt;
&lt;br /&gt;
===Unterverzeichnisse von /var===&lt;br /&gt;
&lt;br /&gt;
 cache        Zwischenspreicher für Progammes&lt;br /&gt;
 games        Variable Daten der Games (Scores etc...)&lt;br /&gt;
 lock         Sperrdateien&lt;br /&gt;
 log          Die Logdateien (wichtiges Verzeichnis für Admins)&lt;br /&gt;
 mail         Das Mailsystem&lt;br /&gt;
 run          Dateien zu laufemdem Prozessen&lt;br /&gt;
 spool        Spooldateien (z.B. für das Drucksystem&lt;br /&gt;
 state        Statusinfos&lt;br /&gt;
 tmp          Wie /tmp eventuell nicht auf root Partion&lt;br /&gt;
&lt;br /&gt;
==Einfache Komandos==&lt;br /&gt;
===cd: Wechseln des Arbeitsverzeichnis===&lt;br /&gt;
&lt;br /&gt;
Um festzustellen in welchem Verzeichnis man sich befindet, sollte man den&lt;br /&gt;
Befehl &amp;quot;pwd&amp;quot; benutzen,&lt;br /&gt;
&lt;br /&gt;
und mit dem Befehl &amp;quot;cd&amp;quot; kann man zwischen den Verzeichnissen wechseln:&lt;br /&gt;
&lt;br /&gt;
Wechsele ins homeverzeichnis von Xinux&lt;br /&gt;
&lt;br /&gt;
 xinux@zero:~$ cd /home/xinux/&lt;br /&gt;
 xinux@zero:~$ pwd&lt;br /&gt;
 /home/xinux&lt;br /&gt;
&lt;br /&gt;
cd ~ -&amp;gt; wechsele ins jeweilige Homeverzeichnis&lt;br /&gt;
&lt;br /&gt;
cd .. -&amp;gt; wechsele ein Verzeichnis höher&lt;br /&gt;
&lt;br /&gt;
cd ../verzeichnis -&amp;gt; wechsele in eine paralleles Verzeichnis &amp;lt;- (ist eine relative Pfadangabe !)&lt;br /&gt;
&lt;br /&gt;
cd - -&amp;gt; wechsele in das Verzeichnis, in dem vorher gearbeitet wurde.&lt;br /&gt;
&lt;br /&gt;
Mit cd / wechselt man in das Wurzelverzeichnis.&lt;br /&gt;
&lt;br /&gt;
 xinux@zero:/var/log$ cd /&lt;br /&gt;
 xinux@zero:/$ pwd&lt;br /&gt;
 /&lt;br /&gt;
&lt;br /&gt;
===ls: Listing===&lt;br /&gt;
&lt;br /&gt;
Den Inhalt von Verzeichnissen kann man sich mit dem Befehl &amp;quot;ls&amp;quot; anzeigen lassen&lt;br /&gt;
wobei &amp;quot;ls&amp;quot; eine Vielzahl von Optionen besitzt:&lt;br /&gt;
&lt;br /&gt;
 ls                                  standard&lt;br /&gt;
 ls -l                               langes listing&lt;br /&gt;
 ls -a                               alle Dateien&lt;br /&gt;
 ls -i                               mit Inode&lt;br /&gt;
 ls -h                               gut lesbare Dateigröße&lt;br /&gt;
 ls -d                               Verzechnis wird angezeigt, nicht der Inhalt&lt;br /&gt;
 ls -L                               sortiert nach Größe&lt;br /&gt;
 ls -t                               sortiert nach Datum&lt;br /&gt;
 ls -F                               mit nützlichem Anhang&lt;br /&gt;
&lt;br /&gt;
 xinux@zero:/$ ls -l /var/log/messages&lt;br /&gt;
 -rw-r----- 1 syslog adm 2296 2009-06-16 10:05 /var/log/messages&lt;br /&gt;
&lt;br /&gt;
===more: Seitenweises Anzeigen von Seiten===&lt;br /&gt;
 root@zero:~# more /var/log/messages&lt;br /&gt;
 ...&lt;br /&gt;
&lt;br /&gt;
===head: erste Zeilen anzeigen===&lt;br /&gt;
Erste 10 Zeilen anzeigen&lt;br /&gt;
 root@zero:~# head /var/log/messages&lt;br /&gt;
 Jun 15 12:37:08 zero syslogd 1.5.0#5ubuntu3: restart.&lt;br /&gt;
 Jun 15 12:38:43 zero kernel: [  830.065036] mtrr: your processor doesn't support write-combining&lt;br /&gt;
 Jun 15 12:46:05 zero pulseaudio[4817]: pid.c: Stale PID file, overwriting.&lt;br /&gt;
 Jun 15 13:05:24 zero -- MARK --&lt;br /&gt;
 ...&lt;br /&gt;
&lt;br /&gt;
Erste zwei Zeilen anzeigen&lt;br /&gt;
 root@zero:~# head -n 2 /var/log/messages&lt;br /&gt;
 Jun 15 12:37:08 zero syslogd 1.5.0#5ubuntu3: restart.&lt;br /&gt;
 Jun 15 12:38:43 zero kernel: [  830.065036] mtrr: your processor doesn't support write-combining&lt;br /&gt;
&lt;br /&gt;
===tail: letzte Zeilen anzeigen===&lt;br /&gt;
 &lt;br /&gt;
 root@zero:~# tail /var/log/syslog&lt;br /&gt;
 ...&lt;br /&gt;
 Jun 19 11:19:35 zero -- MARK --&lt;br /&gt;
 Jun 19 11:39:35 zero -- MARK --&lt;br /&gt;
 Jun 19 11:59:36 zero -- MARK --&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Letze 5 Zeilen anzeigen&lt;br /&gt;
 root@zero:~# tail -n 5 /var/log/auth.log&lt;br /&gt;
 Jun 18 14:30:01 zero CRON[12040]: pam_unix(cron:session): session closed for user root&lt;br /&gt;
 Jun 18 14:39:01 zero CRON[12191]: pam_unix(cron:session): session opened for user root by (uid=0)&lt;br /&gt;
 Jun 18 14:39:01 zero CRON[12191]: pam_unix(cron:session): session closed for user root&lt;br /&gt;
 Jun 18 14:40:01 zero CRON[12237]: pam_unix(cron:session): session opened for user root by (uid=0)&lt;br /&gt;
 Jun 18 14:40:01 zero CRON[12237]: pam_unix(cron:session): session closed for user root&lt;br /&gt;
&lt;br /&gt;
Letze Zeilen anzeigen und fortlaufend aktualisieren&lt;br /&gt;
 root@zero:~# tail -f /var/log/syslog&lt;br /&gt;
 ...&lt;br /&gt;
&lt;br /&gt;
===mkdir: Ein neues Verzeichnis erstellen===&lt;br /&gt;
&lt;br /&gt;
 mkdir        verzeichnis&lt;br /&gt;
Erstellt ein Verzeichnis im working directory (wd)&lt;br /&gt;
&lt;br /&gt;
 mkdir  -p    ver1/ver2&lt;br /&gt;
Erstellt ein Verzeichnis ver2 unterhalb von ver1&lt;br /&gt;
wenn ver1 nicht existiert wird es erstellt&lt;br /&gt;
&lt;br /&gt;
 mkdir -m 753 ver1&lt;br /&gt;
Es wird das Verzeichnis ver1 erstellt mit der mask 753&lt;br /&gt;
&lt;br /&gt;
 mkdir -v     ver1&lt;br /&gt;
Geschwätzige Ausgabe :)&lt;br /&gt;
&lt;br /&gt;
===Zum Löschen von leeren Verzeichnissen wird rmdir benutzt===&lt;br /&gt;
&lt;br /&gt;
 rmdir           ver1&lt;br /&gt;
Löscht das leere Verzeichnis ver1&lt;br /&gt;
&lt;br /&gt;
 rmdir -v        ver1&lt;br /&gt;
Löscht das leere Verzeichnis ver1 und ist geschwätzig&lt;br /&gt;
&lt;br /&gt;
 rmdir -p        /ver1/ver2/ver3&lt;br /&gt;
Löscht das Verzeichnis ver3; wenn dadurch ver2 ein leeres&lt;br /&gt;
Verzeichnis wird, wird dieses auch gelöscht , wenn ver1&lt;br /&gt;
dadurch ein leeres Verzeichnis wird, wird auch dieses gelöscht.&lt;br /&gt;
&lt;br /&gt;
===touch Verändern des Zeitstempels===&lt;br /&gt;
&lt;br /&gt;
Mit touch können wir eine neue leere Datei erzeugen (das ist nicht der eigentliche&lt;br /&gt;
Zweck von touch, eigentlich wird der Zeitstempel geändert)&lt;br /&gt;
&lt;br /&gt;
 touch            dateiname&lt;br /&gt;
&lt;br /&gt;
===Kopieren=== &lt;br /&gt;
cp ist das Kommando um Dateien zu kopieren &lt;br /&gt;
&lt;br /&gt;
Eine Kopie von dat1 mit dem Namen dat2 erstellen:&lt;br /&gt;
&lt;br /&gt;
 xinux@zero:~$ cp dat1 dat2&lt;br /&gt;
&lt;br /&gt;
Eine Kopie von dat1 ins Verzeichnis ver2 erstellen:&lt;br /&gt;
&lt;br /&gt;
 xinux@zero:~$ cp dat1 ver2/&lt;br /&gt;
 &lt;br /&gt;
Eine Kopie erstellen mit ausführlicher Anzeige:&lt;br /&gt;
&lt;br /&gt;
 xinux@zero:~$ cp -v dat1 dat2&lt;br /&gt;
 `dat1' -&amp;gt; `dat2'&lt;br /&gt;
&lt;br /&gt;
Eine Kopie erstellen mit Rückfrage fals etwas überschrieben wird:&lt;br /&gt;
&lt;br /&gt;
 xinux@zero:~$ cp -i dat1 dat2&lt;br /&gt;
 cp: overwrite `dat2'?&lt;br /&gt;
&lt;br /&gt;
Eine Kopie erstellen und die Rückfrage überbrücken:&lt;br /&gt;
&lt;br /&gt;
 xinux@zero:~$ cp -f dat1 dat2&lt;br /&gt;
&lt;br /&gt;
Eine Kopie von dat1 ins Verzeichnis ver2 erstellen fals keine neuere Version von dat1 vorliegt:&lt;br /&gt;
&lt;br /&gt;
 xinux@zero:~$ cp -u dat1 ver2/&lt;br /&gt;
&lt;br /&gt;
Eine Kopie erstellen fals ver2 auf dem selben Dateisystem wie dat1 liegt:&lt;br /&gt;
&lt;br /&gt;
 xinux@zero:~$ cp -x dat1 ver2/&lt;br /&gt;
&lt;br /&gt;
Eine Kopie von ver1, die als ver2 oder unter ver2 als ver1 gespeichert wird erstellen:&lt;br /&gt;
&lt;br /&gt;
 xinux@zero:~$ cp -r ver1/ ver2/&lt;br /&gt;
&lt;br /&gt;
Eine Kopie von einer Datei erstellen und ihre Attribute beibehalten:&lt;br /&gt;
&lt;br /&gt;
 xinux@zero:~$ cp -p sux1 sux2&lt;br /&gt;
&lt;br /&gt;
Eine Kopie erstellen bei der die Links erhalten bleiben:&lt;br /&gt;
&lt;br /&gt;
 xinux@zero:~$ cp -r ver1/ ver2/&lt;br /&gt;
&lt;br /&gt;
Eine Kopie erstellen zum Archivieren (-dpr):&lt;br /&gt;
&lt;br /&gt;
 xinux@zero:~$ cp -a ver1/ ver2/&lt;br /&gt;
&lt;br /&gt;
===rm: Löschen einer Datei===&lt;br /&gt;
&lt;br /&gt;
Um Dateien zu löschen, brauchen wir das Kommando &amp;quot;rm&amp;quot;:&lt;br /&gt;
&lt;br /&gt;
 rm               dat1        dat1 wird gelöscht&lt;br /&gt;
 rm         -i    dat1        dat1 wird nach Bestätigung gelöscht&lt;br /&gt;
 rm         -f    dat1        dat1 wird ohne Rückfragen gelöscht&lt;br /&gt;
 rm         -v    dat1        dat1 wird glöscht (geschwätzige Ausgabe)&lt;br /&gt;
 rm         -r    ver1        Löschen von nicht leeren Verzeichnissen&lt;br /&gt;
                              Achtung !!! Als root kann man sich damit Teile&lt;br /&gt;
                              oder sogar den gesamten Verzeichnisbaum&lt;br /&gt;
                              absägen !!!&lt;br /&gt;
&lt;br /&gt;
===mv: Verschieben===&lt;br /&gt;
&lt;br /&gt;
Mit dem Befehl &amp;quot;mv&amp;quot; werden Daten verschoben, folgendes gilt:&lt;br /&gt;
&lt;br /&gt;
 mv          dat1 dat2         &lt;br /&gt;
Die Datei dat1 wird in dat2 umbenannt&lt;br /&gt;
 mv          dat1 /ver1        &lt;br /&gt;
Die Datei dat1 wird nach /ver1 verschoben&lt;br /&gt;
&lt;br /&gt;
Die Parameter und ihre Bedeutung:&lt;br /&gt;
&lt;br /&gt;
      -i                      wenn eine Datei exisitiert wird vor dem&lt;br /&gt;
                              Überschreiben nachgefragt&lt;br /&gt;
      -v                      verbose (geschwätzig)&lt;br /&gt;
      -u                      nur neuere Daten werden bei Bedarf überschrieben&lt;br /&gt;
      -b                      wenn überschrieben werden soll, wird ein Backup&lt;br /&gt;
                              erstellt&lt;br /&gt;
      -S ENDUNG               das Backup bekommt die Endung ENDUNG&lt;br /&gt;
&lt;br /&gt;
===su Benutzer wechseln===&lt;br /&gt;
&lt;br /&gt;
 su -             &lt;br /&gt;
Wechsel zum Rootaccount, wie wenn dieser sich neu anmelden würde. (Bsp: su -)&lt;br /&gt;
&lt;br /&gt;
 su Benutzernamen &lt;br /&gt;
Wechsel der Identität zu Benutzer (gegebenenfalls Passwortabfrage)&lt;br /&gt;
&lt;br /&gt;
 su -c Kommando   &lt;br /&gt;
Kommando wird als rootaccount ausgeführt&lt;br /&gt;
&lt;br /&gt;
==Der Standard Editor vi==&lt;br /&gt;
Der vi ist der Standardeditor in der Unixwelt. Er ist in jedem Unix-Derivat&lt;br /&gt;
enthalten.&lt;br /&gt;
Der Editor hat zwar den schlechten Ruf umständlich zu bedienen zu sein, ist&lt;br /&gt;
jedoch sehr leistungsfähig und systemübergreifend verfügbar. Beim vi handelt es&lt;br /&gt;
sich um einen rein textorientierten Editor, der mittels eigener Kommandos&lt;br /&gt;
gesteuert wird.&lt;br /&gt;
&lt;br /&gt;
Der Editor VIM ist eine weitere Verbesserung von VI und leichter zu bedienen.&lt;br /&gt;
Und unter Ubuntu/Debian mit &amp;quot;apt-get install vim&amp;quot; zu installieren.&lt;br /&gt;
&lt;br /&gt;
===Starten des Editors:===&lt;br /&gt;
&lt;br /&gt;
Der Editorstart erfolgt einfach durch die Eingabe des Kommandos vi mit dem&lt;br /&gt;
Dateinamen der zu editierenden Datei als Parameter.&lt;br /&gt;
Beispiel:        &lt;br /&gt;
 vi sux.txt&lt;br /&gt;
&lt;br /&gt;
===Die Betriebsmodi des vi:===&lt;br /&gt;
&lt;br /&gt;
Ein Umstand, der dem vi den Ruf der komplizierten Bedienbarkeit zugetragen hat,&lt;br /&gt;
sind die unterschiedlichen Betriebsmodi des Editors. Genauer gesagt verfügt der&lt;br /&gt;
vi über drei Betriebsmodi:&lt;br /&gt;
&lt;br /&gt;
====Kommandomodus:====&lt;br /&gt;
&lt;br /&gt;
Innerhalb dieses Modus werden die eingegebenen Zeichen direkt als Befehle des&lt;br /&gt;
Editors interpretiert und ausgeführt. Dabei gibt es weder ein Bereitschaftszeichen&lt;br /&gt;
(Prompt) noch ein Echo (Ausgabe). Der Kommandomodus ist der Modus, in dem&lt;br /&gt;
sich der vi direkt nach seinem Start befindet.&lt;br /&gt;
&lt;br /&gt;
====Zeilenmodus oder Exmodus:====&lt;br /&gt;
&lt;br /&gt;
Dieser Modus ist der einzige Modus mit einem eigenen Bereitschaftszeichen,&lt;br /&gt;
nämlich dem Doppelpunkt (:). Das Prompt wird ebenso wie die Befehlsausgaben&lt;br /&gt;
in der Statuszeile angezeigt.&lt;br /&gt;
&lt;br /&gt;
====Eingabemodus:====&lt;br /&gt;
&lt;br /&gt;
Der Eingabemodus ist derjenige, in welchem der zu bearbeitende Text bearbeitet&lt;br /&gt;
werden kann. Alle hier eingegebenen Zeichen werden als Text für die aktuelle&lt;br /&gt;
Datei interpretiert. Zwischen den unterschiedlichen Modi kann jederzeit&lt;br /&gt;
gewechselt werden. Von Kommandomodus gelangen Sie durch mehere Wege in&lt;br /&gt;
den Eingabemodus. Man kann durch folgende Aktionen wechslen&lt;br /&gt;
&lt;br /&gt;
{| border=1 cellpadding=2&lt;br /&gt;
|i&lt;br /&gt;
|Text vor der aktuellen Cursorposition einfügen&lt;br /&gt;
|-&lt;br /&gt;
|I&lt;br /&gt;
|Text am Zeilenanfang einfügen&lt;br /&gt;
|-&lt;br /&gt;
|a&lt;br /&gt;
|Text hinter der aktuellen Cursorposition einfügen&lt;br /&gt;
|-&lt;br /&gt;
|A&lt;br /&gt;
|Text am Zeilenende einfügen&lt;br /&gt;
|-&lt;br /&gt;
|o&lt;br /&gt;
|Unterhalb der aktuellen Zeile eine neue Zeile einfügen&lt;br /&gt;
|-&lt;br /&gt;
|O&lt;br /&gt;
|Oberhalb der aktuellen Zeile eine neue Zeile einfügen&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Durch das Drücken der ESC - Taste gelangt man in den Kommandomodus zurück.&lt;br /&gt;
&lt;br /&gt;
Im Kommandomodus können Sie durch den Text navigieren und auch den Text&lt;br /&gt;
selbst bearbeiten, z.B ausschneiden, kopieren usw. Dazu sind einige Kommandos&lt;br /&gt;
nötig, von denen die wichtigsten im Folgenden erläutert werden:&lt;br /&gt;
&lt;br /&gt;
 xinux@zero:/$ vi iwas.txt&lt;br /&gt;
&lt;br /&gt;
[[Image:vim.jpg]]&lt;br /&gt;
&lt;br /&gt;
===Benutzen des Kommandomodus===&lt;br /&gt;
====Steuerung des Cursors durch den Text====&lt;br /&gt;
&lt;br /&gt;
Mittels folgender Kommandos bewegt sich der Cursor durch den Text:&lt;br /&gt;
&lt;br /&gt;
{| border=1 cellpadding=2&lt;br /&gt;
|h&lt;br /&gt;
|Cursor ein Zeichen nach links&lt;br /&gt;
|-&lt;br /&gt;
|l&lt;br /&gt;
|Cursor ein Zeichen nach rechts&lt;br /&gt;
|-&lt;br /&gt;
|k&lt;br /&gt;
|Cursor eine Zeile nach oben&lt;br /&gt;
|-&lt;br /&gt;
|j&lt;br /&gt;
|Cursor eine Zeile nach unten&lt;br /&gt;
|-&lt;br /&gt;
|w&lt;br /&gt;
|Cursor ein Wort nach rechts&lt;br /&gt;
|-&lt;br /&gt;
|b&lt;br /&gt;
|Cursor ein Wort nach links&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Alle diese Kommandos können mit einem vorgestellten Wiederholungsfaktor&lt;br /&gt;
arbeiten. Der Befehl 3w verschiebt demnach den Cursor um 3 Wörter nach rechts.&lt;br /&gt;
&lt;br /&gt;
====Angaben zur Positionierung====&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{| border=1 cellpadding=2&lt;br /&gt;
|STRG+U&lt;br /&gt;
|1⁄2 Bildschirmseite nach oben&lt;br /&gt;
|-&lt;br /&gt;
|STRG+D&lt;br /&gt;
|1⁄2 Bildschirmseite nach unten&lt;br /&gt;
|-&lt;br /&gt;
|STRG+B&lt;br /&gt;
|1 Bildschirmseite nach oben&lt;br /&gt;
|-&lt;br /&gt;
|STRG+F&lt;br /&gt;
|1 Bildschirmseite nach unten&lt;br /&gt;
|-&lt;br /&gt;
|/Ausdruck&lt;br /&gt;
|Sucht den Ausdruck (vorwärts) Weitersuchen mit n , N&lt;br /&gt;
|-&lt;br /&gt;
|?Ausdruck&lt;br /&gt;
|Sucht den Ausdurck (rückwärts) Weitersuchen mit n , N&lt;br /&gt;
|-&lt;br /&gt;
|0&lt;br /&gt;
|Zeilenanfang&lt;br /&gt;
|-&lt;br /&gt;
|$&lt;br /&gt;
|Zeilenende&lt;br /&gt;
|-&lt;br /&gt;
|w&lt;br /&gt;
|Nächstes Wort&lt;br /&gt;
|-&lt;br /&gt;
|b&lt;br /&gt;
|Vorheriges Wort&lt;br /&gt;
|-&lt;br /&gt;
|fc&lt;br /&gt;
|Auf das Zeichen c springen. c steht für ein beliebiges Zeichen&lt;br /&gt;
|-&lt;br /&gt;
|G&lt;br /&gt;
|Letzte Zeile der Datei&lt;br /&gt;
|-&lt;br /&gt;
|ng&lt;br /&gt;
|n-te Zeile der Datei&lt;br /&gt;
|-&lt;br /&gt;
|H&lt;br /&gt;
|Anfang der Bildschirmseite&lt;br /&gt;
|-&lt;br /&gt;
|L&lt;br /&gt;
|Ende der Bildschirmseite&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
====Befehle zur Textbearbeitung -&amp;gt; Was soll geschehen====&lt;br /&gt;
&lt;br /&gt;
{| Border=1 Cellpadding=2&lt;br /&gt;
|x&lt;br /&gt;
|Löscht Zeichen&lt;br /&gt;
|-&lt;br /&gt;
|d&lt;br /&gt;
|Löschen und in den Puffer laden&lt;br /&gt;
|-&lt;br /&gt;
|c&lt;br /&gt;
|Ändern&lt;br /&gt;
|-&lt;br /&gt;
|y&lt;br /&gt;
|In den Puffer laden&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
====Weitere wichtige Befehle:====&lt;br /&gt;
&lt;br /&gt;
{| Border=1 Cellpadding=2&lt;br /&gt;
|p&lt;br /&gt;
|Aus dem Puffer einfügen&lt;br /&gt;
|-&lt;br /&gt;
|u&lt;br /&gt;
|Undo, macht den letzten Befehl rückgängig&lt;br /&gt;
|-&lt;br /&gt;
|STRG+R&lt;br /&gt;
|Redo, macht den letzten Undo rückgängig&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
===Zeilen- oder Exmodus===&lt;br /&gt;
&lt;br /&gt;
Wie schon erwähnt wird der Zeilen oder Exmodus durch einen : eingeleitet.&lt;br /&gt;
Es folgen einige Beispiele.&lt;br /&gt;
&lt;br /&gt;
Befehle zum Speichern und Beenden:&lt;br /&gt;
&lt;br /&gt;
 :w          Schreibt Datei&lt;br /&gt;
 :w Datei2   Schreibt eine Kopie in Datei2&lt;br /&gt;
 :w !        Schreibt Datei (übergehe Schreibschutz)&lt;br /&gt;
 :w ! Datei2 Schreibt eine Kopie in Datei2 (übergehe Schreibschutz)&lt;br /&gt;
 :q          Schließe Datei&lt;br /&gt;
 :q!         Schließe Datei (verwerfe Änderungen)&lt;br /&gt;
 :wq         Schreibe Datei und beende Editor&lt;br /&gt;
 :wq!        Schreibe Datei und beende Editor (übergehe Schreibschutz)&lt;br /&gt;
 :q!         Schließe Datei (verwerfe Änderungen)&lt;br /&gt;
 :h          Hilfe anzeigen, durch drücken von :q Beenden der Hilfe&lt;br /&gt;
 :e Datei3   Editiere Datei3&lt;br /&gt;
 :e #        Editere vorhergehende Datei&lt;br /&gt;
 :1,3co9     Kopiere von der ersten bis zu dritten Zeile &lt;br /&gt;
             und füge den Inhalt unterhalb der neunte Zeile ein.&lt;br /&gt;
&lt;br /&gt;
Interaktionen mit Unix:&lt;br /&gt;
&lt;br /&gt;
 :r Datei4   Fügt Inhalt der Datei4 nach dem Cursor ein&lt;br /&gt;
 :r ! Befehl Fügt Ausgabe des Befehls nach dem Cursor ein&lt;br /&gt;
 :! Befehl   Führt den Befehl aus&lt;br /&gt;
 :sh         Starte Subshell -&amp;gt; mit exit kehrt man wieder zurück&lt;br /&gt;
             Eingabemodus zurück&lt;br /&gt;
&lt;br /&gt;
====Ersetzen von Textteilen====&lt;br /&gt;
&lt;br /&gt;
Die grundsätzliche Syntax lautet:&lt;br /&gt;
&lt;br /&gt;
 :[Zeilennummer,Zeilennummer]s/Muster/Ersetzung/[gc]&lt;br /&gt;
&lt;br /&gt;
 :s/worf/kirn/              der erste worf wird in der aktuellen Zeile durch kirn ersetzt&lt;br /&gt;
 :1,9s/worf/kirn/g          von der 1. bis zur 9. Zeile werden alle worf durch kirn ersetzt&lt;br /&gt;
 :1,$s/worf/kirn/           von der ersten bis zur letzten Zeile ersetze ersten worf durch&lt;br /&gt;
                            kirn&lt;br /&gt;
 :.,$s/worf/kirn/g          von der aktuellen bis zur letzten Zeile ersetze alle worf durch&lt;br /&gt;
                            kirn&lt;br /&gt;
 :1,.s/worf/kirn/c          von der 1. bis zur aktuellen Zeile ersetze worf durch kirn, frage&lt;br /&gt;
                            aber nach&lt;br /&gt;
 :1,$s/^worf/kirn/          von der ersten bis zur letzten Zeile ersetze worf am&lt;br /&gt;
                            Zeilenanfang durch kirn&lt;br /&gt;
 :4,$s/worf$/kirn/          von der 4. bis zur letzten Zeile ersetze worf am Zeilenende&lt;br /&gt;
                            durch kirn&lt;br /&gt;
 :1,$s/^#//                 lösche alle Kommentarzeichen&lt;br /&gt;
 :1,$s/^.orf/kirn/           ersetze alles was am Zeilenanfang ein beliebiges Zeichen hat&lt;br /&gt;
                            gefolgt von einem orf durch kirn&lt;br /&gt;
 :1,$s/^[A-Z]orf/kirn/g     suche nach einem Großbuchstaben am Anfang der Zeile&lt;br /&gt;
                            gefolgt von einem orf und ersetze durch kirn&lt;br /&gt;
 :1,$s/^M[ae][iy]e*r/kirn/  suche alles, was am Anfang der Zeile ein großes M enthält,&lt;br /&gt;
                            gefolgt von einem a oder e , gefolgt von einem i oder y ,&lt;br /&gt;
                            gefolgt von einem e , welches 0 oder N mal vorkommen kann,&lt;br /&gt;
                            gefolgt von einem r und ersetze es durch kirn&lt;br /&gt;
&lt;br /&gt;
==Reguläre Ausdrücke==&lt;br /&gt;
&lt;br /&gt;
{| Border=1 Cellpadding=2&lt;br /&gt;
|c&lt;br /&gt;
|Ein einzelner Buchstabe passt auf sich selbst&lt;br /&gt;
|-&lt;br /&gt;
|.&lt;br /&gt;
|Ein Punkt passt auf jedes Zeichen außer auf das Zeilenende&lt;br /&gt;
|-&lt;br /&gt;
|*&lt;br /&gt;
|Das dem Operator * vorangehende Muster kann 0 oder öfter vorkommen&lt;br /&gt;
|-&lt;br /&gt;
|^&lt;br /&gt;
|(Caret) passt auf den Zeilenanfang&lt;br /&gt;
|-&lt;br /&gt;
|$&lt;br /&gt;
|Passt auf das Zeilenende&lt;br /&gt;
|-&lt;br /&gt;
|\&lt;br /&gt;
|Das folgende Sonderzeichen wird entwertet&lt;br /&gt;
|-&lt;br /&gt;
|[...]&lt;br /&gt;
|Passt auf &amp;quot;genau&amp;quot; eins in [...] angebenen Zeichen&lt;br /&gt;
|-&lt;br /&gt;
|[^...]&lt;br /&gt;
|Passt auf &amp;quot;genau&amp;quot; ein Zeichen welches nicht in [...] angebenen ist&lt;br /&gt;
|-&lt;br /&gt;
|\&amp;lt;&lt;br /&gt;
|Passt auf den Wortanfang&lt;br /&gt;
|-&lt;br /&gt;
|\&amp;gt;&lt;br /&gt;
|Passt auf das Wortende&lt;br /&gt;
|-&lt;br /&gt;
|\+&lt;br /&gt;
|Das dem Operator \+ vorangehende Muster kann 1 oder öfter vorkommen&lt;br /&gt;
|-&lt;br /&gt;
|&amp;amp;&lt;br /&gt;
|Setzt das gefunden Suchmuster ein&lt;br /&gt;
|-&lt;br /&gt;
|\(...\)&lt;br /&gt;
|Speichert den Text auf den das Suchmuster passt zur späteren Verwendung&lt;br /&gt;
|-&lt;br /&gt;
|\n&lt;br /&gt;
|Setzt das vorangehende, mit \(...\) Gefundene wieder ein&lt;br /&gt;
|-&lt;br /&gt;
|(...)&lt;br /&gt;
|Gruppiert Auswahlmöglichkeiten&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;nowiki&amp;gt;|&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
|Trennt Auswahlmöglichkeiten&lt;br /&gt;
|-&lt;br /&gt;
|\b&lt;br /&gt;
|Passt auf den Anfang oder das Ende eines Wortes&lt;br /&gt;
|-&lt;br /&gt;
|\B&lt;br /&gt;
|Symbolisiert den Raum innerhalb eines Wortes&lt;br /&gt;
|-&lt;br /&gt;
|\w&lt;br /&gt;
|Passt auf alle alphanumerischen Zeichen [A-Za-z0-9]&lt;br /&gt;
|-&lt;br /&gt;
|\W&lt;br /&gt;
|Passt auf alle nichtalphanumerischen Zeichen [^A-Za-z0-9]&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Die Rangfolge der Operatoren(von der höchsten zur niedrigsten)&lt;br /&gt;
:(, ), ?, *, + | .&lt;br /&gt;
&lt;br /&gt;
Die anderen Operatoren sind mit den anderen Buchstaben gleichrangig.&lt;br /&gt;
&lt;br /&gt;
===Beispiel zum Suchen===&lt;br /&gt;
&lt;br /&gt;
 Suchmuster               Passt auf&lt;br /&gt;
 ^Tuxer                   Tuxer am Zeilenanfang&lt;br /&gt;
 [tT]uxer                 Tuxer oder tuxer&lt;br /&gt;
 80[23]?86                8086, 80286 oder 80386&lt;br /&gt;
&lt;br /&gt;
===grep===&lt;br /&gt;
&lt;br /&gt;
Mit grep ist es möglich, in Dateien nach regulären Ausdrücken zu suchen. Wenn&lt;br /&gt;
eine Übereinstimmung gefunden wird, wird die komplette Zeile auf die&lt;br /&gt;
Standardausgabe geschrieben. grep kann auch von STDIN lesen.Es ist&lt;br /&gt;
empfehlenswert, sich anzugwöhnen ,das Suchmuster in Anführungszeichen zu&lt;br /&gt;
schreiben. Es gibt 3 Arten fgrep = fastgrep , grep und egrep egrep&lt;br /&gt;
&lt;br /&gt;
Beispiel:&lt;br /&gt;
&lt;br /&gt;
 root@zero:~# cat text&lt;br /&gt;
 quatsch&lt;br /&gt;
 quatsch&lt;br /&gt;
 quatsch&lt;br /&gt;
 wichtig&lt;br /&gt;
 quatsch&lt;br /&gt;
 root@zero:~# grep wichtig text&lt;br /&gt;
 wichtig&lt;br /&gt;
 root@zero:~# &lt;br /&gt;
&lt;br /&gt;
 -c                   meldet nur die Gesamtzahl der Fundstellen&lt;br /&gt;
 -v                   zeigt nur Zeilen, die »Ausdruck« nicht enthalten&lt;br /&gt;
 -i                   ignoriert Groß- und Kleinschreibung&lt;br /&gt;
 -l                    meldet nur Dateinamen mit Fundstellen&lt;br /&gt;
 -n                   listet Zeilennummern zu jeder Fundstelle&lt;br /&gt;
 -f                   Dateiname »Dateiname« enthält die Such-Ausdrücke&lt;br /&gt;
 -E                   ist ein erweiterter regulärer Ausdruck (egrep)&lt;br /&gt;
 -F                   (Muster, Ausdruck) ist ein Muster (String) (fgrep)&lt;br /&gt;
 -b                   listet auch die Position der Fundstellen&lt;br /&gt;
 -C    Anzahl         Anzahl von Zeilen werden nach der Fundstelle ausgegeben&lt;br /&gt;
 -B    Anzahl         Anzahl von Zeilen werden vor der Fundstelle ausgegeben&lt;br /&gt;
 -r                   Durchsucht Verzeichnisse rekursiv&lt;br /&gt;
&lt;br /&gt;
==Useridendifikation==&lt;br /&gt;
===/etc/passwd===&lt;br /&gt;
====Beschreibung====&lt;br /&gt;
passwd ist eine ASCII-Datei, die eine Liste der Benutzer des Systems und deren&lt;br /&gt;
Passwörter enthält. Die Passwortdatei sollte für alle Benutzer lesbar sein, was für&lt;br /&gt;
dieVerschlüsselung notwendig ist; aber nur vom Superuser beschreibbar. Wenn&lt;br /&gt;
Sie eine neue Kennung einrichten, lassen Sie das Passwort-Feld in der Datei frei&lt;br /&gt;
und benutzen Sie passwd(1), um dem System ein Passwort für die neue Kennung&lt;br /&gt;
mitzuteilen.&lt;br /&gt;
&lt;br /&gt;
Die Datei /etc/passwd enthält einen Eintrag pro Zeile mit dem Format:&lt;br /&gt;
login_name:passwd:UID:GID:user_name:directory:shell&lt;br /&gt;
====Die Bedeutung der Felder:====&lt;br /&gt;
# login_name Kennung des Benutzers auf dem System.&lt;br /&gt;
# password   Hier steht bei Shadowsystemen ein x. Die Passwörter sind in der Datei /etc/shadow&lt;br /&gt;
# UID        Die numerische Benutzernummer.&lt;br /&gt;
#  GID        Die numerische Gruppennummer des Benutzers.&lt;br /&gt;
# user_name Ein optionales Kommentarfeld, oft benutzt für den vollen Namen des Benutzers und weitere Informationen (Telefon, Raum-Nummer etc.).&lt;br /&gt;
# directory  Das Heimatverzeichnis $HOME des Benutzers.&lt;br /&gt;
# shell      Das Programm, das beim Einloggen gestartet werden soll (falls nicht nötig, benutzen Sie /bin/bash).&lt;br /&gt;
&lt;br /&gt;
===/etc/group===&lt;br /&gt;
====Beschreibung====&lt;br /&gt;
etc/group ist eine ASCII Datei, die Gruppen definiert, zu denen Benutzer&lt;br /&gt;
gehören. Es gibt nur einen Eintrag pro Zeile; jede Zeile hat folgendes Format:&lt;br /&gt;
         GruppenName:Passwort:GruppenKennung:BenutzerListe&lt;br /&gt;
Beschreibung der Felder:&lt;br /&gt;
#     GruppenName      Die Bezeichnung der Gruppe.&lt;br /&gt;
#     Passwort         Das (verschlüsselte) Gruppen-Passwort. Wenn dieses Feld leer ist, wird kein Passwort benötigt.&lt;br /&gt;
#     GruppenKennung Die numerische Identifikation der Gruppe.&lt;br /&gt;
#     BenutzerListe    Alle Namen der Mitglieder, getrennt durch Kommas.&lt;br /&gt;
&lt;br /&gt;
===/etc/shadow===&lt;br /&gt;
====Beschreibung====&lt;br /&gt;
shadow beinhaltet Informationen zu den verschlüsselten Passwörten, zu den&lt;br /&gt;
Benutzerzugängen und weitere Informationen zur Laufzeit der Passwörter.&lt;br /&gt;
 Name:Passwort:Letzte Änderung:Mintage:Maxtage:Warntage:Inaktiv:Ablauf&lt;br /&gt;
#    Der Loginname&lt;br /&gt;
#    verschlüsseltes Passwort &lt;br /&gt;
&amp;lt;nowiki&amp;gt;*&amp;lt;/nowiki&amp;gt; bedeutet Benutzer kann sich nicht einlogen&lt;br /&gt;
! bedeutet Benutzer hat kein Passwort gesetzt&lt;br /&gt;
#    Tage seit dem 1 Januar 1970 an dem das Passwort letztmals geändert wurde&lt;br /&gt;
#    Tage, die das Passwort behalten werden muss, bevor es wieder geändert werden kann&lt;br /&gt;
#     Die Anzahl der Tage, nach denen der Benutzer das Passwort wieder ändern muss&lt;br /&gt;
#    Anzahl der Tage bevor das Passwort abläuft und der Benutzer gewarnt wird&lt;br /&gt;
#    Wenn der Zugang diese Anzahl von Tagen nicht benutzt wird, wird der Zugang gesperrt&lt;br /&gt;
#    Tag seit dem 1 Januar 1970, an dem der Zugang gesperrt wird&lt;br /&gt;
#    Reserviertes Feld&lt;br /&gt;
&lt;br /&gt;
Die Datei sollte aus Sicherheitgründen nicht für einen normalen Benutzer lesbar&lt;br /&gt;
sein.&lt;br /&gt;
&lt;br /&gt;
==Programme zur Userverwaltung==&lt;br /&gt;
===useradd===&lt;br /&gt;
User anlegen&lt;br /&gt;
 root@zero:~# useradd -m -u 1011 -g users -G admin -d /home/erwin -s /bin/bash -c &amp;quot;Erwin Lehman&amp;quot;  erwin&lt;br /&gt;
{| border=1 cellpadding=2&lt;br /&gt;
|&amp;quot;-m&amp;quot;&lt;br /&gt;
|Lege Homedirectory an&lt;br /&gt;
|-&lt;br /&gt;
|&amp;quot;-u 1011&amp;quot;&lt;br /&gt;
|Userid wird zugeordnet&lt;br /&gt;
|-&lt;br /&gt;
|&amp;quot;-g users&amp;quot;&lt;br /&gt;
|Primäre Gruppe wird zugeordnet&lt;br /&gt;
|-&lt;br /&gt;
|&amp;quot;-G admin&amp;quot;&lt;br /&gt;
|Sekunbdäre Gruppe wird zugeordnet&lt;br /&gt;
|-&lt;br /&gt;
|&amp;quot;-d /home/erwin/&amp;quot;&lt;br /&gt;
|Name des Homedirectory&lt;br /&gt;
|-&lt;br /&gt;
|&amp;quot;-s /bin/bash&amp;quot;&lt;br /&gt;
|Bash wird zugeordnet&lt;br /&gt;
|- &lt;br /&gt;
|&amp;quot;-c Erwin Lehman&amp;quot;&lt;br /&gt;
|Kommentarfeld&lt;br /&gt;
|-&lt;br /&gt;
|&amp;quot;erwin&amp;quot; &lt;br /&gt;
|Name des Users&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Defaulteinstellungen anzeigen&lt;br /&gt;
 root@zero:~# useradd -D&lt;br /&gt;
 GROUP=100&lt;br /&gt;
 HOME=/home&lt;br /&gt;
 INACTIVE=-1&lt;br /&gt;
 EXPIRE=&lt;br /&gt;
 SHELL=/bin/sh&lt;br /&gt;
 SKEL=/etc/skel&lt;br /&gt;
 CREATE_MAIL_SPOOL=no&lt;br /&gt;
&lt;br /&gt;
Defaulteinstellungen ändern&lt;br /&gt;
 useradd -D -s /bin/bash&lt;br /&gt;
&lt;br /&gt;
Konfigurationsdatei&lt;br /&gt;
 root@zero:~# cat /etc/default/useradd &lt;br /&gt;
 SHELL=/bin/bash&lt;br /&gt;
 GROUP=100&lt;br /&gt;
 HOME=/home&lt;br /&gt;
 INACTIVE=-1&lt;br /&gt;
 EXPIRE=&lt;br /&gt;
 SKEL=/etc/skel&lt;br /&gt;
 CREATE_MAIL_SPOOL=no&lt;br /&gt;
&lt;br /&gt;
===usermod===&lt;br /&gt;
User modifizieren&lt;br /&gt;
 root@zero:~# usermod -l fritz -s /bin/sh -G admin,video erwin&lt;br /&gt;
{| border=1 cellpadding=2&lt;br /&gt;
|&amp;quot;-l fritz&amp;quot;&lt;br /&gt;
|Neuer Username&lt;br /&gt;
|-&lt;br /&gt;
|&amp;quot;-s /bin/sh&amp;quot;&lt;br /&gt;
|Neue Shell&lt;br /&gt;
|-&lt;br /&gt;
|&amp;quot;-G admin, video&amp;quot;&lt;br /&gt;
|Sekunbdäre Gruppen werden zugeordnet&lt;br /&gt;
|-&lt;br /&gt;
|&amp;quot;erwin&amp;quot; &lt;br /&gt;
|Name des Users&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
===userdel===&lt;br /&gt;
User inklusive Homedirectory löschen&lt;br /&gt;
 root@zero:~# userdel -r fritz&lt;br /&gt;
&lt;br /&gt;
===passwd===&lt;br /&gt;
Rootpasswort ändern&lt;br /&gt;
 root@zero:~# passwd &lt;br /&gt;
 Geben Sie ein neues UNIX Passwort ein:'''sysadm''' &lt;br /&gt;
 Geben Sie das neue UNIX Passwort erneut ein:'''sysadm''' &lt;br /&gt;
 passwd: Passwort erfolgreich geändert&lt;br /&gt;
&lt;br /&gt;
Passwort von tux ändern&lt;br /&gt;
 root@zero:~# passwd tux&lt;br /&gt;
 Geben Sie ein neues UNIX Passwort ein:'''suxer''' &lt;br /&gt;
 Geben Sie das neue UNIX Passwort erneut ein:'''suxer'''&lt;br /&gt;
 passwd: Passwort erfolgreich geändert&lt;br /&gt;
&lt;br /&gt;
Minimale und Maximale Gültigkeit des Passwortes von tux festlegen&lt;br /&gt;
 root@zero:~# passwd -n 5 -x 120 tux&lt;br /&gt;
&lt;br /&gt;
===groupadd===&lt;br /&gt;
 root@zero:~# groupadd -f -g 2001 xinuxer&lt;br /&gt;
{| border=1 cellpadding=2&lt;br /&gt;
|&amp;quot;-f&amp;quot;&lt;br /&gt;
|Überschreibe bestehende Gruppe&lt;br /&gt;
|-&lt;br /&gt;
|&amp;quot;-g 2001&amp;quot;&lt;br /&gt;
|GID der Gruppe&lt;br /&gt;
|-&lt;br /&gt;
|&amp;quot;xinuxer&amp;quot; &lt;br /&gt;
|Name des Gruppe&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==chmod==&lt;br /&gt;
Die Syntax des Befehls chmod lautet:&lt;br /&gt;
&lt;br /&gt;
'''chmod''' WerWieWas [,WerWieWas,.....] Dateiliste&lt;br /&gt;
&lt;br /&gt;
oder&lt;br /&gt;
&lt;br /&gt;
'''chmod''' Oktalzahl Dateiliste&lt;br /&gt;
&lt;br /&gt;
Durch WerWieWas bzw. Oktalzahl wird die Rechtetabelle definiert. Innerhalb von&lt;br /&gt;
WerWieWas darf es kein Leerzeichen geben. Wer bezeichnet den Benutzerkreis,&lt;br /&gt;
dem man Rechte gibt, Wie die Art, in der die Rechte gegeben werden und Was die&lt;br /&gt;
Rechte als solche. Im einzelnen können folgende Kürzel benutzt werden:&lt;br /&gt;
&lt;br /&gt;
Für Wer kann eines der folgenden Kürzel oder eine Kombination davon stehen:&lt;br /&gt;
 u                   (user) Rechte für den Dateibesitzer&lt;br /&gt;
 g                   (group) Rechte für die Gruppe&lt;br /&gt;
 o                   (others) Rechte für alle anderen Benutzer&lt;br /&gt;
 a                   (all) Rechte für alle Benutzer&lt;br /&gt;
Für Wie steht eines der folgenden Kürzel:&lt;br /&gt;
 +                   Die Rechte werden zu den vorhandenen zusätzlich vergeben&lt;br /&gt;
 -                   Die im Folgenden genannten Rechte werden entzogen&lt;br /&gt;
 =                   Die im Folgenden genannten Rechte ersetzen die bisherigen&lt;br /&gt;
Für Was steht eines der folgenden Kürzel:&lt;br /&gt;
 r                   (read) lesen&lt;br /&gt;
 w                   (write) schreiben&lt;br /&gt;
 x                   (execute) ausführen&lt;br /&gt;
oder diese Sonderformen&lt;br /&gt;
 s                   (usersbit) Programm läuft unter der UID des Besitzers&lt;br /&gt;
 s                   (groupsbit)Programm läuft unter der GID des GRUPPE&lt;br /&gt;
 t                   (stickybit) Dateien im Verzeichnis darf nur Besitzer löschen&lt;br /&gt;
&lt;br /&gt;
===Beispiel===&lt;br /&gt;
Setze für alle Schreib- und Leserecht&lt;br /&gt;
 xinux@zero:~$ chmod a=rw test &lt;br /&gt;
 xinux@zero:~$ ls -l test &lt;br /&gt;
 -rw-rw-rw- 1 xinux xinux 0 2009-06-16 12:01 test&lt;br /&gt;
 xinux@zero:~$ &lt;br /&gt;
&lt;br /&gt;
Erteile Besitzer Ausführungsrecht&lt;br /&gt;
 xinux@zero:~$ chmod u+x test ; ls -l test &lt;br /&gt;
 -rwxrw-rw- 1 xinux xinux 0 2009-06-16 12:01 test&lt;br /&gt;
 xinux@zero:~$ &lt;br /&gt;
&lt;br /&gt;
===chmod oktale Schreibweise===&lt;br /&gt;
 Specialrights        User           Group         Other&lt;br /&gt;
 usbit gsbit sticky    r    w   x     r   w   x     r   w   x&lt;br /&gt;
   1     1      1      1    1   1     1   1   1     1   1   1&lt;br /&gt;
   0     0      0      0    0   0     0   0   0     0   0   0&lt;br /&gt;
 Oktale Wertigkeit pro Recht&lt;br /&gt;
   4     2       1     4    2   1     4   2   1     4   2   1&lt;br /&gt;
&lt;br /&gt;
===Beispiele===&lt;br /&gt;
 xinux@zero:~$ chmod 751 test ; ls -l test&lt;br /&gt;
 -rwxr-x--x 1 xinux xinux 0 2009-06-16 12:01 test&lt;br /&gt;
 xinux@zero:~$ &lt;br /&gt;
&lt;br /&gt;
 xinux@zero:~$ chmod 4770 test ; ls -l test&lt;br /&gt;
 -rwsrwx--- 1 xinux xinux 0 2009-06-16 12:01 test&lt;br /&gt;
 xinux@zero:~$ &lt;br /&gt;
&lt;br /&gt;
 xinux@zero:~$ chmod 0 test ; ls -l test &lt;br /&gt;
 ---------- 1 xinux xinux 0 2009-06-16 12:01 test&lt;br /&gt;
&lt;br /&gt;
===chmod Optionen===&lt;br /&gt;
 -c   (changes) es werden nur die Dateien angezeigt, deren Zugriffsrechte tatsächlich verändert werden&lt;br /&gt;
 -f   (silent, quiet) Fehlermeldungen wegen fehlgeschlagener Änderungsversuche werden unterdrückt&lt;br /&gt;
 -v   (verbose) alle Aktionen werden angezeigt&lt;br /&gt;
 -R   (recursive) die Zugriffsrechte aller Dateien in den Unterverzeichnissen werden ebenfalls geändert&lt;br /&gt;
&lt;br /&gt;
Theoretisch sind alle Kombinationen der Zugriffsrechte denkbar, aber der&lt;br /&gt;
Eigentümer einer Datei darf diese immer lesen, selbst wenn das Lesebit nicht&lt;br /&gt;
gesetzt ist. Genauso macht es wenig Sinn, eine gewöhnliche Textdatei als&lt;br /&gt;
ausführbar zu setzen; die Shell wird damit nichts anfangen können. Ein x für ein&lt;br /&gt;
Verzeichnis gibt an, dass in dieses gewechselt werden kann.&lt;br /&gt;
&lt;br /&gt;
Rechte sind verbindlich&lt;br /&gt;
&lt;br /&gt;
Interessant ist auch ein Konstrukt folgender Art&lt;br /&gt;
 -rwx---rwx&lt;br /&gt;
&lt;br /&gt;
das angibt, dass mit der Datei alles angestellt werden kann, außer durch Nutzer der&lt;br /&gt;
Gruppe. Versucht irgend jemand, der nicht der Gruppe des Eigentümers angehört,&lt;br /&gt;
die Datei zu modifizieren, wird ihm dies gelingen, einem Gruppenmitglied bleibt&lt;br /&gt;
dies versagt, obwohl er ja gleichzeitig ein &amp;quot;Anderer&amp;quot; ist. D.h. die Rechte der&lt;br /&gt;
Gruppe sind verbindlicher, als die Rechte der anderen!&lt;br /&gt;
&lt;br /&gt;
===Bedeutungen der Zugriffsarten===&lt;br /&gt;
====Dateien====&lt;br /&gt;
* r: Der Inhalt der Datei kann gelesen und damit auch kopiert werden. &lt;br /&gt;
 root@zero:~# cat test&lt;br /&gt;
 Dies ist eine Testdatei&lt;br /&gt;
  &lt;br /&gt;
 root@zero:~# cp test backup&lt;br /&gt;
&lt;br /&gt;
* w: Der Inhalt der Datei darf verändert werden. Ob die Datei gelöscht werden kann ist&lt;br /&gt;
keine Eigenschaft der Datei, sondern des Verzeichnisses, indem sich die Datei befindet.&lt;br /&gt;
 root@zero:~# cat &amp;gt; test&lt;br /&gt;
 Hier steht jetzt was anderes&lt;br /&gt;
 ^C&lt;br /&gt;
 root@zero:~# cat test&lt;br /&gt;
 Hier steht jetzt was anderes&lt;br /&gt;
  &lt;br /&gt;
 xinux@zero:~$ ls -ld verzeichnis/&lt;br /&gt;
 dr-xr-xr-x 2 xinux xinux 4096 2009-06-18 11:16 verzeichnis/&lt;br /&gt;
 xinux@zero:~/verzeichnis$ rm text&lt;br /&gt;
 rm: Entfernen von „text“ nicht möglich: Permission denied&lt;br /&gt;
&lt;br /&gt;
* x: Ausführrecht für Programme und Skripte&lt;br /&gt;
 xinux@zero:~$ ./programm&lt;br /&gt;
 -bash: ./programm: Permission denied&lt;br /&gt;
 xinux@zero:~$ chmod +x programm&lt;br /&gt;
 xinux@zero:~$ ./programm&lt;br /&gt;
 Test&lt;br /&gt;
  test&lt;br /&gt;
&lt;br /&gt;
====Verzeichnisse====&lt;br /&gt;
* r: Die Einträge in dem Verzeichnis sind lesbar.&lt;br /&gt;
Leserecht von verzeichnis/ entziehen&lt;br /&gt;
 xinux@zero:~$ chmod a-r verzeichnis/&lt;br /&gt;
 xinux@zero:~$ ls verzeichnis/&lt;br /&gt;
 ls: Öffnen von Verzeichnis verzeichnis/ nicht möglich: Permission denied&lt;br /&gt;
Leserecht für Benutzer und Gruppe vergeben&lt;br /&gt;
 xinux@zero:~$ chmod a+r verzeichnis/&lt;br /&gt;
 xinux@zero:~$ ls verzeichnis/&lt;br /&gt;
 text&lt;br /&gt;
&lt;br /&gt;
* w: Die Einträge in dem Verzeichnis können geändert werden. &lt;br /&gt;
Neue Datei erstellen&lt;br /&gt;
 xinux@zero:~$ touch neu&lt;br /&gt;
 xinux@zero:~$ ls neu&lt;br /&gt;
 neu&lt;br /&gt;
&lt;br /&gt;
Datei löschen&lt;br /&gt;
 xinux@zero:~$ rm neu&lt;br /&gt;
 xinux@zero:~$ ls neu&lt;br /&gt;
 ls: Zugriff auf neu nicht möglich: No such file or directory&lt;br /&gt;
&lt;br /&gt;
* x: Der Name des Verzeichnisses kann in einem Pfadnamen erscheinen.&lt;br /&gt;
Verzeichnis ohne x Recht&lt;br /&gt;
 xinux@zero:~$ chmod a-x verzeichnis/&lt;br /&gt;
Wechseln in Verzeichnis mangels x-Recht nicht möglich&lt;br /&gt;
 xinux@zero:~$ cd verzeichnis/&lt;br /&gt;
 -bash: cd: verzeichnis/: Permission denied&lt;br /&gt;
x-Recht vergeben&lt;br /&gt;
 xinux@zero:~$ chmod a+x verzeichnis/&lt;br /&gt;
damit Wechsel in Verzeichnis möglich&lt;br /&gt;
 xinux@zero:~$ cd verzeichnis/&lt;br /&gt;
 xinux@zero:~/verzeichnis$ pwd&lt;br /&gt;
 /home/xinux/verzeichnis&lt;br /&gt;
&lt;br /&gt;
====umask====&lt;br /&gt;
Neue Dateien und Verzeichnisse werden mit ein und denselben Zufriffsrechten erzeugt.&lt;br /&gt;
 xinux@zero:~$ mkdir text&lt;br /&gt;
 xinux@zero:~$ touch textdat&lt;br /&gt;
 xinux@zero:~$ ls -ld text*&lt;br /&gt;
 drwxr-xr-x 2 xinux xinux 4096 2009-06-18 11:37 text&lt;br /&gt;
 -rw-r--r-- 1 xinux xinux    0 2009-06-18 11:37 textdat&lt;br /&gt;
&lt;br /&gt;
Zuständig für dieses Verhalten ist die sogenannte umask, die oft in der Datei&lt;br /&gt;
/etc/profile auf den Wert 022 voreingestellt ist. Zusätzlich wird noch eine&lt;br /&gt;
Maximalmaske benötigt, die sich für Verzeichnisse und andere Dateien&lt;br /&gt;
unterscheidet. Die bei der Erzeugung gesetzten Rechte entstehen nun, indem von&lt;br /&gt;
der Maximalmaske der durch die umask vorgegebene Wert subtrahiert wird:&lt;br /&gt;
&lt;br /&gt;
{| border=1 cellpadding=2&lt;br /&gt;
!&lt;br /&gt;
! Dateien&lt;br /&gt;
! Verzeichnisse&lt;br /&gt;
|-&lt;br /&gt;
| Systemvorgabe&lt;br /&gt;
| 666&lt;br /&gt;
| 777&lt;br /&gt;
|-&lt;br /&gt;
| -umask&lt;br /&gt;
| 022&lt;br /&gt;
| 022&lt;br /&gt;
|-&lt;br /&gt;
| Ergebnis&lt;br /&gt;
| 644&lt;br /&gt;
| 755&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
 xinux@zero:~$ grep umask /etc/profile&lt;br /&gt;
 umask 022&lt;br /&gt;
&lt;br /&gt;
==Gruppenzugehörigkeit==&lt;br /&gt;
===newgrp===&lt;br /&gt;
Ändert die Gruppenzugehörigkeit eines Benutzers auf die angegebene Gruppe. Wenn keine Gruppe angegeben wird, wird die &lt;br /&gt;
Anmeldegruppe des Benutzers verwendet. Die neue Gruppe wird anschließend fü Zugriffskontrollen verwendet.&lt;br /&gt;
&lt;br /&gt;
 newgrp Gruppenname&lt;br /&gt;
&lt;br /&gt;
 root@zero:~# newgrp hacker&lt;br /&gt;
 root@zero:~# id&lt;br /&gt;
 uid=0(root) gid=1006(hacker) Gruppen=0(root),1006(hacker)&lt;br /&gt;
&lt;br /&gt;
===chgrp===&lt;br /&gt;
Verändert die Besitzugehörigkeit zu der angegebenen Gruppe&lt;br /&gt;
&lt;br /&gt;
 chgrp [Optionen] Gruppe Datei(en)&lt;br /&gt;
&lt;br /&gt;
Optionen:&lt;br /&gt;
 -c Zeigt Veränderungen an&lt;br /&gt;
 -f Unterdrückt die meisten Fehlermeldungen&lt;br /&gt;
 -R Verändert Dateien und Verzeichnisse rekursiv&lt;br /&gt;
 -v Gibt geschwätzige Ausgabe aus.&lt;br /&gt;
&lt;br /&gt;
 root@zero:~# ls -l&lt;br /&gt;
 ...&lt;br /&gt;
 d-wx--x--x  3 root root 4096 2009-06-18 13:34 verzeichnis&lt;br /&gt;
 &lt;br /&gt;
 root@zero:~# chgrp -R xinux verzeichnis/&lt;br /&gt;
 root@zero:~# ls -l&lt;br /&gt;
 ...&lt;br /&gt;
 d-wx--x--x  3 root xinux 4096 2009-06-18 13:34 verzeichnis&lt;br /&gt;
&lt;br /&gt;
 xinux@zero:~$ cd /root/verzeichnis/&lt;br /&gt;
 xinux@zero:/root/verzeichnis$ pwd&lt;br /&gt;
 /root/verzeichnis&lt;br /&gt;
&lt;br /&gt;
===chown===&lt;br /&gt;
Ändert den Eigentümer von einer oder mehreren Dateien in den angegebenen Benutzer. &lt;br /&gt;
chown erlaubt ebenfalls das Ändern der Gruppeneigentümreschaft. Nur der aktuelle Eigentümer einer&lt;br /&gt;
Datei oder der Superuser (root) darf die Eigentumsverhältnisse ändern.&lt;br /&gt;
&lt;br /&gt;
 chown [Optionen] Benutzer(:Gruppe) Dateien&lt;br /&gt;
&lt;br /&gt;
Optionen:&lt;br /&gt;
 -c Gibt Informationen über die veränderten Dateien aus&lt;br /&gt;
 --dereference Symbolischen Links folgen&lt;br /&gt;
 -v Gibt Informationen über alle Dateien aus, die chown zu ändern versucht, egal, ob die Änderung erfolgt ist oder nicht&lt;br /&gt;
 -R Geht rekursiv durch alle Unterverzeichnisse und führt die Änderungen durch. &lt;br /&gt;
&lt;br /&gt;
 root@zero:~# chown -R xinux.xinux verzeichnis/&lt;br /&gt;
 root@zero:~# ls -l&lt;br /&gt;
 insgesamt 12&lt;br /&gt;
 drwx------ 13 root  root  4096 2009-04-21 15:11 profile&lt;br /&gt;
 --w-------  1 root  root     0 2009-06-18 11:13 test&lt;br /&gt;
 -rw-r--r--  1 root  root    40 2009-06-18 12:04 text&lt;br /&gt;
 drwxrwx--x  3 xinux xinux 4096 2009-06-18 13:39 verzeichnis&lt;br /&gt;
 &lt;br /&gt;
 root@zero:~# chown -R -c xinux.xinux verzeichnis/&lt;br /&gt;
 &lt;br /&gt;
 root@zero:~# chown -R -v xinux.xinux verzeichnis/&lt;br /&gt;
 Eigentümer von „verzeichnis/01“ als xinux:xinux erhalten&lt;br /&gt;
 Eigentümer von „verzeichnis/test“ als xinux:xinux erhalten&lt;br /&gt;
 Eigentümer von „verzeichnis/“ als xinux:xinux erhalten&lt;br /&gt;
&lt;br /&gt;
==Eingabe/Ausgabe==&lt;br /&gt;
Standardeingabe (0): Laufende Programme erwarten von hier ihre Eingaben (normalerweise handelt es sich um die Tastatur).&lt;br /&gt;
&lt;br /&gt;
Standardausgabe (1): Programme schreiben auf diese ihre Ausgaben (Bildschirm).&lt;br /&gt;
&lt;br /&gt;
Standardfehlerausgabe (2) : Fehlerausgaben landen hier (Bildschirm, aber nur die aktive Konsole).&lt;br /&gt;
&lt;br /&gt;
[[Bild:std.jpg]]&lt;br /&gt;
&lt;br /&gt;
===cat===&lt;br /&gt;
Das Programm cat liest von STDIN und gibt es STDOUT wieder aus&lt;br /&gt;
&lt;br /&gt;
Einlesen der Datei text&lt;br /&gt;
 root@zero:~# cat &amp;lt; text&lt;br /&gt;
 wichtig&lt;br /&gt;
&lt;br /&gt;
Schreiben in die Datei text, dies überschreibt den bisherigen Inhalt der Datei&lt;br /&gt;
 root@zero:~# cat &amp;gt; text&lt;br /&gt;
 sogar noch wichtiger &lt;br /&gt;
 &lt;br /&gt;
Ausgeben der Datei text&lt;br /&gt;
 root@zero:~# cat text &lt;br /&gt;
 sogar noch wichtiger&lt;br /&gt;
&lt;br /&gt;
Lesen aus der Datei text und schreiben in die Datei neuertext&lt;br /&gt;
 root@zero:~# cat &amp;lt; text &amp;gt; neuertext&lt;br /&gt;
 root@zero:~# cat neuertext&lt;br /&gt;
 sogar noch wichtiger&lt;br /&gt;
&lt;br /&gt;
Anhängen der Ausgabe von date an die Datei neuertext&lt;br /&gt;
 root@zero:~# date &amp;gt;&amp;gt; neuertext&lt;br /&gt;
 root@zero:~# cat neuertext&lt;br /&gt;
 sogar noch wichtiger&lt;br /&gt;
 Do 18. Jun 14:08:58 CEST 2009&lt;br /&gt;
&lt;br /&gt;
Umleiten des Standardfehlerkanals nach error&lt;br /&gt;
 root@zero:~# rm sux 2&amp;gt; error&lt;br /&gt;
 root@zero:~# more error&lt;br /&gt;
 rm: Entfernen von „sux“ nicht möglich: No such file or directory&lt;br /&gt;
&lt;br /&gt;
===Umleitungen===&lt;br /&gt;
Nacheinander auszuführende Kommandos&lt;br /&gt;
 root@zero:~# pwd; date&lt;br /&gt;
 /root&lt;br /&gt;
 Do 18. Jun 14:13:05 CEST 2009&lt;br /&gt;
 &lt;br /&gt;
Übergeben der Ausgabe von tail als Eingabe von grep mit Hilfe der Pipe &amp;quot;|&amp;quot;&lt;br /&gt;
 root@zero:~# tail /var/log/auth.log | grep xinux&lt;br /&gt;
 Jun 18 13:52:33 zero nss_wins[11433]: pam_unix(login:session): session closed for user xinux&lt;br /&gt;
&lt;br /&gt;
Übergeben der letzten 100 Zeilen von syslog als Eingabe von grep&lt;br /&gt;
 root@zero:~# tail /var/log/syslog -n 100 | grep error&lt;br /&gt;
 Jun 18 09:30:54 zero kernel: [154384.692135] end_request: I/O error, dev fd0, sector 0&lt;br /&gt;
 Jun 18 09:30:54 zero kernel: [154384.712137] end_request: I/O error, dev fd0, sector 0&lt;br /&gt;
&lt;br /&gt;
==tr==&lt;br /&gt;
tr ist ein Programm um Zeichen zu übersetzen. Dies betrifft nur die Ausgabe, die Datei selbst bleibt unverändert.&lt;br /&gt;
&lt;br /&gt;
Ersetzt Kleinbuchstaben durch Großbuchstaben aus der Datei text&lt;br /&gt;
 root@zero:~# tr &amp;quot;a-z&amp;quot; &amp;quot;A-Z&amp;quot; &amp;lt; text&lt;br /&gt;
 SOGAR NOCH WICHTIGER&lt;br /&gt;
 123&lt;br /&gt;
 34&lt;br /&gt;
 4711&lt;br /&gt;
 TEST&lt;br /&gt;
&lt;br /&gt;
Ersetzt alle Zahlen durch X&lt;br /&gt;
 root@zero:~# tr &amp;quot;0-9&amp;quot; &amp;quot;X&amp;quot; &amp;lt; text&lt;br /&gt;
 sogar noch wichtiger&lt;br /&gt;
 XXX&lt;br /&gt;
 XX&lt;br /&gt;
 XXXX&lt;br /&gt;
 test&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
 root@zero:~# cat &amp;gt; test&lt;br /&gt;
 +++++&lt;br /&gt;
 ###&lt;br /&gt;
 1111&lt;br /&gt;
&lt;br /&gt;
-s löscht mehrfach kommende Zeichen&lt;br /&gt;
 root@zero:~# tr '''-s''' &amp;quot;+&amp;quot; &amp;lt; test&lt;br /&gt;
 +&lt;br /&gt;
 ###&lt;br /&gt;
 1111&lt;br /&gt;
&lt;br /&gt;
-d löscht vorkommende Zeichen &lt;br /&gt;
 root@zero:~# tr '''-d''' &amp;quot;#&amp;quot; &amp;lt; test&lt;br /&gt;
 +++++ &lt;br /&gt;
 &lt;br /&gt;
 1111&lt;br /&gt;
&lt;br /&gt;
==cut==&lt;br /&gt;
Spalten aus einer Datei schneiden. Dies betrifft nur die Ausgabe, die Datei selbst bleibt unverändert.&lt;br /&gt;
 &lt;br /&gt;
Schneidet die erste Spalte aus, der Delimiter ist : &lt;br /&gt;
 root@zero:~# cut -f 1 -d : /etc/passwd&lt;br /&gt;
 root&lt;br /&gt;
 daemon&lt;br /&gt;
 bin&lt;br /&gt;
 ...&lt;br /&gt;
 xinux&lt;br /&gt;
&lt;br /&gt;
 root@zero:~# more test&lt;br /&gt;
 1234#5678#9999&lt;br /&gt;
 &lt;br /&gt;
Schneidet die zweite Spalte aus, der Delimiter ist #&lt;br /&gt;
 root@zero:~# cut -f 2 -d &amp;quot;#&amp;quot; &amp;lt; test&lt;br /&gt;
 5678&lt;br /&gt;
&lt;br /&gt;
Schneidet bis zum 3 Zeichen ab&lt;br /&gt;
 root@zero:~$ echo S01policykit | cut -c 4-&lt;br /&gt;
 policykit&lt;br /&gt;
&lt;br /&gt;
==expand==&lt;br /&gt;
Ersetzt Tabulatorzeichen durch Folgen von Leerzeichen und schreibt das Ergebnis auf die Standardausgabe&lt;br /&gt;
 root@zero:~# expand /etc/samba/smb.conf&lt;br /&gt;
 ...&lt;br /&gt;
&lt;br /&gt;
==fmt==&lt;br /&gt;
#Setzt den Text der Dateien im Blocksatz der angegebenen Breite durch Auffüllen von Zeilen und Entfernen von Zeilenwechseln.&lt;br /&gt;
Standardgemäß werden Leerzeilen, die Position von Leerzeichen und der Einzug am Zeilenanfang erhalten. fmt versucht, &lt;br /&gt;
Zeilenumbrüche an Satzenden durchzuführen sowie sie nach dem ersten oder vor dem letzten Wort eines Satzes zu vermeiden. &lt;br /&gt;
 &lt;br /&gt;
 fmt [Optionen] [Dateien]&lt;br /&gt;
&lt;br /&gt;
Optionen&lt;br /&gt;
&lt;br /&gt;
* -p ''Präfix'': Formatiert nur Zeilen, die mit ''Präfix'' anfangen&lt;br /&gt;
 root@zero:/tmp# fmt -p '#' text&lt;br /&gt;
 #Setzt den Text der Dateien im Blocksatz der angegebenen Breite durch&lt;br /&gt;
 #Auffüllen von Zeilen und Entfernen von Zeilenwechseln.  Standardgemäß&lt;br /&gt;
 #werden Leerzeilen, die Position von Leerzeichen und der Einzug am&lt;br /&gt;
 #Zeilenanfang erhalten. fmt versucht,&lt;br /&gt;
 Zeilenumbrüche an Satzenden durchzuführen sowie sie nach dem ersten oder vor dem letzten Wort eines Satzes zu vermeiden.&lt;br /&gt;
&lt;br /&gt;
* -u : Erzwingt genau ein Leerzeichen zwischen Wörtern und zwei Leerzeichen zwischen Sätzen&lt;br /&gt;
&lt;br /&gt;
* -w ''Breite'': Setzt die Ausgabebreite auf ''Breite''&lt;br /&gt;
 root@zero:/tmp# fmt -w 30 text&lt;br /&gt;
 #Setzt den Text der Dateien&lt;br /&gt;
 im Blocksatz der angegebenen&lt;br /&gt;
 Breite durch Auffüllen&lt;br /&gt;
 von Zeilen und Entfernen&lt;br /&gt;
 von Zeilenwechseln.&lt;br /&gt;
 #Standardgemäß werden&lt;br /&gt;
 Leerzeilen, die Position von&lt;br /&gt;
 Leerzeichen und der Einzug am&lt;br /&gt;
 Zeilenanfang erhalten. fmt&lt;br /&gt;
 versucht, Zeilenumbrüche&lt;br /&gt;
 an Satzenden durchzuführen&lt;br /&gt;
 sowie sie nach dem ersten&lt;br /&gt;
 oder vor dem letzten Wort&lt;br /&gt;
 eines Satzes zu vermeiden.&lt;br /&gt;
&lt;br /&gt;
==join==&lt;br /&gt;
Führt die Zeilen zweier sortierter Dateien anhand von '''Übereinstimmungen''' in einem gemeinsamen Feld zusammen.&lt;br /&gt;
&lt;br /&gt;
 root@zero:~# more name&lt;br /&gt;
 1. karl&lt;br /&gt;
 2. heinz&lt;br /&gt;
 3. hans&lt;br /&gt;
 4. otto&lt;br /&gt;
 root@zero:~# more tel&lt;br /&gt;
 1. 1234&lt;br /&gt;
 2. 4321&lt;br /&gt;
 3. 222&lt;br /&gt;
 4. 121212&lt;br /&gt;
 root@zero:~# join name tel &amp;gt; telefonbuch&lt;br /&gt;
 root@zero:~# more telefonbuch&lt;br /&gt;
 1. karl 1234&lt;br /&gt;
 2. heinz 4321&lt;br /&gt;
 3. hans 222&lt;br /&gt;
 4. otto 121212&lt;br /&gt;
&lt;br /&gt;
 root@zero:~# join -t : /etc/passwd /etc/shadow&lt;br /&gt;
 ....&lt;br /&gt;
 daemon:x:1:1:daemon:/usr/sbin:/bin/sh:*:14181:0:99999:7:::&lt;br /&gt;
 bin:x:2:2:bin:/bin:/bin/sh:*:14181:0:99999:7:::&lt;br /&gt;
 sys:x:3:3:sys:/dev:/bin/sh:*:14181:0:99999:7:::&lt;br /&gt;
 sync:x:4:65534:sync:/bin:/bin/sync:*:14181:0:99999:7:::&lt;br /&gt;
 ...&lt;br /&gt;
&lt;br /&gt;
join in dat1 nach Feld 3 und in dat2 nach Feld 2&lt;br /&gt;
 thomas@lydia:~$ cat dat1 &lt;br /&gt;
 hugo:ps:1111&lt;br /&gt;
 erwin:zw:2222&lt;br /&gt;
 karl:sb:3333&lt;br /&gt;
 rudi:kl:4444&lt;br /&gt;
 thomas@lydia:~$ cat dat2&lt;br /&gt;
 blau:1111:svn&lt;br /&gt;
 grün:2222:fcs&lt;br /&gt;
 gelb:3333:fch&lt;br /&gt;
 rot:4444:fck&lt;br /&gt;
 thomas@lydia:~$ join -t : -1 3 -2 2 dat1 dat2 &lt;br /&gt;
 1111:hugo:ps:blau:svn&lt;br /&gt;
 2222:erwin:zw:grün:fcs&lt;br /&gt;
 3333:karl:sb:gelb:fch&lt;br /&gt;
 4444:rudi:kl:rot:fck&lt;br /&gt;
&lt;br /&gt;
==nl==&lt;br /&gt;
Nummeriert die Zeilen in einer Datei.&lt;br /&gt;
&lt;br /&gt;
 root@zero:~# nl /etc/passwd                                                   &lt;br /&gt;
     1  root:x:0:0:root:/root:/bin/bash                                       &lt;br /&gt;
     2  daemon:x:1:1:daemon:/usr/sbin:/bin/sh                                 &lt;br /&gt;
     3  bin:x:2:2:bin:/bin:/bin/sh                                            &lt;br /&gt;
     4  sys:x:3:3:sys:/dev:/bin/sh                                            &lt;br /&gt;
     5  sync:x:4:65534:sync:/bin:/bin/sync&lt;br /&gt;
     ...&lt;br /&gt;
Nummereriet mit führenden Nullen der Separatir ist ein :&lt;br /&gt;
 root@zero:~# nl -s : -n rz dat1&lt;br /&gt;
&lt;br /&gt;
==od==&lt;br /&gt;
Gibt Dateien im Oktal und anderen Formaten aus.&lt;br /&gt;
&lt;br /&gt;
 od [Optionen] Datei&lt;br /&gt;
&lt;br /&gt;
* -j ''Bytes'': Überspringt die Anzahl ''Bytes'' einer Datei&lt;br /&gt;
* -N ''Bytes'': Gibt nur die Anzahl ''Bytes'' aus&lt;br /&gt;
* -c : Gebe ASCII Zeichen aus&lt;br /&gt;
* -f : Gebe Fließkommazahlen aus&lt;br /&gt;
* -i : Gebe Dezimal Integer aus&lt;br /&gt;
* -l : Gebe Dezimal Long aus&lt;br /&gt;
* -o : Gebe Oktal 2 Byte Einheiten aus&lt;br /&gt;
* -s : Gebe Dezimal 2 Byte Einheiten aus&lt;br /&gt;
* -x : Gebe Hexadezimale 2 Byte einheiten aus&lt;br /&gt;
&lt;br /&gt;
Beispiele&lt;br /&gt;
&lt;br /&gt;
Gebe Master Boot Record (die ersten 512 Byte der Festplatte /dev/sda) als Hexadezimal aus&lt;br /&gt;
 root@zero:~# od '''-x -N''' 512 /dev/sda&lt;br /&gt;
 0000000 48eb 1090 d08e 00bc b8b0 0000 d88e c08e&lt;br /&gt;
 0000020 befb 7c00 00bf b906 0200 a4f3 21ea 0006&lt;br /&gt;
 0000040 be00 07be 0438 0b75 c683 8110 fefe 7507&lt;br /&gt;
 0000060 ebf3 b416 b002 bb01 7c00 80b2 748a 0203&lt;br /&gt;
 0000100 00ff 2000 0001 0000 0200 90fa f690 80c2&lt;br /&gt;
 ...&lt;br /&gt;
&lt;br /&gt;
Schreibe &amp;quot;suxer&amp;quot; in die Datei test&lt;br /&gt;
 root@zero:~# echo &amp;quot;suxer&amp;quot; &amp;gt; test&lt;br /&gt;
Ausgabe Hexadezimal&lt;br /&gt;
 root@zero:~# od -x test&lt;br /&gt;
 0000000 7573 6578 0a72&lt;br /&gt;
 0000006&lt;br /&gt;
&lt;br /&gt;
Ausgabe ASCII Zeichen&lt;br /&gt;
 root@zero:~# od -c test&lt;br /&gt;
 0000000   s   u   x   e   r  \n&lt;br /&gt;
 0000006&lt;br /&gt;
&lt;br /&gt;
==paste==&lt;br /&gt;
Fügt die Zeilen von zwei oder mehr Dateien horizontal zusammen&lt;br /&gt;
 root@zero:~# paste name tel&lt;br /&gt;
 1. karl 1. 1234&lt;br /&gt;
 2. heinz        2. 4321&lt;br /&gt;
 3. hans 3. 222&lt;br /&gt;
 4. otto 4. 121212&lt;br /&gt;
&lt;br /&gt;
==pr==&lt;br /&gt;
Bereitet Textdateien zum Drucken vor.&lt;br /&gt;
&lt;br /&gt;
 root@zero:~# echo &amp;quot;Plan für heute&amp;quot; &amp;gt; dokument&lt;br /&gt;
 root@zero:~# more dokument&lt;br /&gt;
 Plan für heute&lt;br /&gt;
 root@zero:~# pr dokument   &lt;br /&gt;
  &lt;br /&gt;
 &lt;br /&gt;
 2009-06-19 12:44                    dokument                     Seite 1&lt;br /&gt;
 &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
 Plan für heute&lt;br /&gt;
&lt;br /&gt;
Anmerkung Ausmaße der Bildschirmausgabe wie eine Druckseite.&lt;br /&gt;
&lt;br /&gt;
==sed==&lt;br /&gt;
streaming editor. Mit sed ist es möglich, den Inhalt einer Datei automatisch (nicht interaktiv) zu&lt;br /&gt;
bearbeiten. Wie unter Linux üblich, wird auch hier der Text nicht wirklich verändert sondern die &lt;br /&gt;
Änderung erfolgt über die Standardausgabe, die wieder umgeleitet werden kann. Die Syntax ist ähnlich &lt;br /&gt;
des ex modus von vi. Reguläre Ausdrücke können nach Belieben benutzt werden. &lt;br /&gt;
&lt;br /&gt;
Optionen:&lt;br /&gt;
 -e Zeichenkette  wendet die Editorbefehle aus Zeichenkette auf den Text an.&lt;br /&gt;
 -n gibt nur die Zeilen aus, die explizit (durch &amp;quot;p&amp;quot; ausgedruckt werden sollen&lt;br /&gt;
&lt;br /&gt;
Gibt die dritte Zeile der Datei text aus&lt;br /&gt;
 root@zero:~# sed -n &amp;quot;3p&amp;quot; text&lt;br /&gt;
 34&lt;br /&gt;
&lt;br /&gt;
Gibt die erste bis dritte Zeile von text aus&lt;br /&gt;
 root@zero:~# sed -n &amp;quot;1,3p&amp;quot; text&lt;br /&gt;
 sogar noch wichtiger&lt;br /&gt;
 123&lt;br /&gt;
 34&lt;br /&gt;
&lt;br /&gt;
Löschen der Zeile mit &amp;quot;sogar&amp;quot;&lt;br /&gt;
 root@zero:~# sed -e '/sogar/d' &amp;lt; text&lt;br /&gt;
 123&lt;br /&gt;
 34&lt;br /&gt;
 4711&lt;br /&gt;
 test&lt;br /&gt;
&lt;br /&gt;
und schreiben in text2&lt;br /&gt;
 root@zero:~# sed -e '/sogar/d' &amp;lt; text &amp;gt; text2&lt;br /&gt;
 root@zero:~# more text2&lt;br /&gt;
 123&lt;br /&gt;
 34&lt;br /&gt;
 4711&lt;br /&gt;
 test&lt;br /&gt;
&lt;br /&gt;
Alle 3en durch DREI ersetzen&lt;br /&gt;
 root@zero:~# sed -e 's/3/DREI/g' &amp;lt; text&lt;br /&gt;
 sogar noch wichtiger&lt;br /&gt;
 12DREI&lt;br /&gt;
 DREI4&lt;br /&gt;
 4711&lt;br /&gt;
 test&lt;br /&gt;
&lt;br /&gt;
==wc==&lt;br /&gt;
Zählt die Anzahl von Zeichen, Wörter oder Zeilen&lt;br /&gt;
&lt;br /&gt;
Optionen&lt;br /&gt;
* -m : Zählt die Anzahl der Zeichen&lt;br /&gt;
 root@zero:~# more name&lt;br /&gt;
 1. karl&lt;br /&gt;
 2. heinz&lt;br /&gt;
 3. hans&lt;br /&gt;
 4. otto&lt;br /&gt;
 root@zero:~# wc '''-m''' tel&lt;br /&gt;
 33 tel&lt;br /&gt;
&lt;br /&gt;
* -w : Zählt die Anzahl der Wörter (einschließlich Zahlen und andere Zeichen)&lt;br /&gt;
 root@zero:~# wc '''-w''' name&lt;br /&gt;
 8 name&lt;br /&gt;
&lt;br /&gt;
* -l : Zählt die Anzahl der Zeilen&lt;br /&gt;
 root@zero:~# wc '''-l''' name&lt;br /&gt;
 4 name&lt;br /&gt;
&lt;br /&gt;
==Sort==&lt;br /&gt;
&lt;br /&gt;
Zum sortieren von Dateien nach Feldern benutzt man sort. sort liest von STDIN man kann die Datei aber auch als Argument übergeben. &lt;br /&gt;
&lt;br /&gt;
Sortiert nach dem ersten Feld&lt;br /&gt;
  root@zero:~# sort /etc/passwd 	 &lt;br /&gt;
&lt;br /&gt;
Es wird geprüft ob die Datei schon sortiert ist &lt;br /&gt;
 root@zero:~# sort -c /etc/passwd 	&lt;br /&gt;
&lt;br /&gt;
Sortiert nach dem ersten Feld (Richtungsumkehr)  &lt;br /&gt;
 root@zero:~#  sort -r /etc/passwd&lt;br /&gt;
&lt;br /&gt;
Führende Leersortzeichen werden ignoriert &lt;br /&gt;
 root@zero:~# sort -b /etc/passwd&lt;br /&gt;
&lt;br /&gt;
Ausgabe  in die Datei pass&lt;br /&gt;
 root@zero:~# sort  /etc/passwd   -o pass	 &lt;br /&gt;
&lt;br /&gt;
nimmt : als Trenner -Voreinstellung ist TAB&lt;br /&gt;
  root@zero:~# sort -t : /etc/passwd&lt;br /&gt;
&lt;br /&gt;
sortiert nach dem  3 Feld,  der Trenner ist : und es wird nummerisch sortiert&lt;br /&gt;
&lt;br /&gt;
 root@zero:~# sort -t: +2 -n /etc/passwd		&lt;br /&gt;
&lt;br /&gt;
sortiert nach dem  3 Feld,  der Trenner ist : und es wird nummerisch sortiert&lt;br /&gt;
					&lt;br /&gt;
 root@zero:~# sort -t: -k 3 -n /etc/passwd&lt;br /&gt;
&lt;br /&gt;
Sortiert nach dem  3  bis zum 5 Feld, der Trenner ist : und es wird nummerisch sortiert&lt;br /&gt;
	&lt;br /&gt;
 root@zero:~# sort -t: -k 3,5 -n /etc/passwd	&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==INodes==&lt;br /&gt;
Inode (oder I-Node) wird im Deutschen am besten als Informationsknoten oder&lt;br /&gt;
Indexeintrag bezeichnet. Er fasst alle Attribute einer Datei zusammen außer dem Inhalt&lt;br /&gt;
und dem Namen der Datei.&lt;br /&gt;
&lt;br /&gt;
===Daten===&lt;br /&gt;
{| border=1 cellpadding=2&lt;br /&gt;
|type&lt;br /&gt;
|Der Typ der Datei wird als einzelner Buchstabe angezeigt. Der Typ einer Datei wird beim Anlegen der Datei festgelegt&lt;br /&gt;
|-&lt;br /&gt;
|Permissions &lt;br /&gt;
|Die Zugriffsrechte der Datei werden in den 12 Bit sstrwxrwxrwx abgespeichert.Wenn sie gesetzt sind, werden sie bei &lt;br /&gt;
der Ausgabe an Stelle der x-Rechte ausgegeben. Die Zugriffsrechte können mit dem Kommando chmod verändert werden.&lt;br /&gt;
|-&lt;br /&gt;
|link count&lt;br /&gt;
|In UNIX kann eine Datei mehr als einen Namen haben. Der Link Count gibt die Anzahl der Namen einer Datei an. Er kann&lt;br /&gt;
mit dem Kommando ln erhöht und dem Kommando rm erniedrigt werden.&lt;br /&gt;
|-&lt;br /&gt;
|owner&lt;br /&gt;
|Für den Dateieigentümer gelten die in der ersten rwx-Gruppe festgelegten Zugriffsrechte. Standardmäßig ist der &lt;br /&gt;
Eigentümer einer Datei derjenige Benutzer, der die Datei angelegt hat.&lt;br /&gt;
|-&lt;br /&gt;
|group&lt;br /&gt;
|Für Benutzer, die in der gleichen Gruppe sind, der die Datei angehört, gelten die in der zweiten rwx-Gruppe festgelegten&lt;br /&gt;
Zugriffsrechte. In System V gehört eine Datei standardmäßig der Gruppe an, in der der anlegende Benutzer gerade ist.&lt;br /&gt;
|-&lt;br /&gt;
|size&lt;br /&gt;
|Bei normalen Dateien und Verzeichnissen gibt diese Information die Länge der Datei in Byte an.&lt;br /&gt;
|-&lt;br /&gt;
|access time&lt;br /&gt;
|Die Zugriffszeit gibt den Zeitpunkt des letzten Lesezugriffes auf eine Datei an. Aus Effizienzgründen wird die &lt;br /&gt;
Zugriffszeit an Verzeichnissen nicht gesetzt, wenn ein Verzeichnis durchsucht wird, obwohl man dies erwarten könnte. ''(ls -l --time=atime)''&lt;br /&gt;
|-&lt;br /&gt;
|modification time&lt;br /&gt;
|Die Modifikationszeit gibt die Zeit des letzten Schreibzugriffes auf die Daten der Datei an. Intern speichert UNIX &lt;br /&gt;
die Zeit als Sekunden seit Beginn des Jahres 1970 und in GMT ab. Für die Ausgabe wird dies in ein besser lesbares &lt;br /&gt;
Format in der lokalen Zeitzone umgewandelt. ''(ls -l)''&lt;br /&gt;
|-&lt;br /&gt;
|change time &lt;br /&gt;
|Die Veränderungszeit gibt das Datum der letzten Statusänderung der Datei an. Sie wird immer dann gesetzt, wenn die &lt;br /&gt;
Informationen über die Datei sich ändern (Datum der Erzeugung wird nicht gespeichert) ''(ls -lc)''&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
===Dateiarten===&lt;br /&gt;
{| border=1 cellpadding=2&lt;br /&gt;
!Zeichen&lt;br /&gt;
!Typ&lt;br /&gt;
!Zweck&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;nowiki&amp;gt;-&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
|file&lt;br /&gt;
|normale Datei&lt;br /&gt;
|-&lt;br /&gt;
|d&lt;br /&gt;
|directory&lt;br /&gt;
|Verzeichnis&lt;br /&gt;
|-&lt;br /&gt;
|b&lt;br /&gt;
|block device&lt;br /&gt;
|Gerätedatei&lt;br /&gt;
|-&lt;br /&gt;
|c&lt;br /&gt;
|character device&lt;br /&gt;
|Gerätedatei&lt;br /&gt;
|-&lt;br /&gt;
|l&lt;br /&gt;
|link&lt;br /&gt;
|Querverweis&lt;br /&gt;
|-&lt;br /&gt;
|p&lt;br /&gt;
|named pipe&lt;br /&gt;
|Benannte Pipeline&lt;br /&gt;
|-&lt;br /&gt;
|s&lt;br /&gt;
|socket&lt;br /&gt;
|Netzwerkverbindung&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
====Normale Dateien====&lt;br /&gt;
Unter einer normalen Datei versteht man die Ansammlung von Daten. Dies kann ein Text, Programm, Bild oder sonstiges sein. &lt;br /&gt;
Beispiel&lt;br /&gt;
 root@zero:~# ls -l text | cut -c 1&lt;br /&gt;
 -&lt;br /&gt;
&lt;br /&gt;
====Verzeichnisse====&lt;br /&gt;
Dateien werden in Verzeichnissen gespeichert, nur so ist eine Ordnung möglich. &lt;br /&gt;
 root@zero:~# mkdir -v Ordner&lt;br /&gt;
 mkdir: Verzeichnis „Ordner“ angelegt&lt;br /&gt;
 &lt;br /&gt;
 root@zero:~# ls -ld Ordner | cut -c 1&lt;br /&gt;
 d&lt;br /&gt;
&lt;br /&gt;
====Gerätedateien (Block und Char)====&lt;br /&gt;
Gerätedateien ermöglichen Anwendungsprogrammen unter Benutzung des  Kernels den Zugriff auf die Hardwarekomponenten des Systems. Ansprechbar über Major und Minor Nummern &lt;br /&gt;
&lt;br /&gt;
Beispiele&lt;br /&gt;
&lt;br /&gt;
Sicherung des Master Boot Records der ersten Festplatte&lt;br /&gt;
 root@zero:~# dd if=/dev/sda of=/tmp/mbr.img bs=512 count=1&lt;br /&gt;
&lt;br /&gt;
Block Device &lt;br /&gt;
 root@zero:~# ls -l /dev/sda | cut -c 1 &lt;br /&gt;
 b&lt;br /&gt;
&lt;br /&gt;
Character Device &lt;br /&gt;
 root@zero:~# ls -l /dev/ttyS0  | cut -c 1 &lt;br /&gt;
 c&lt;br /&gt;
&lt;br /&gt;
Erstellen einer Gerätedatei&lt;br /&gt;
 root@zero:/dev# mknod sata1 b 8 0 &lt;br /&gt;
 root@zero:/dev# fdisk -l /dev/sata1 &lt;br /&gt;
 &lt;br /&gt;
 Platte /dev/sata1: 6442 MByte, 6442450944 Byte&lt;br /&gt;
 255 Köpfe, 63 Sektoren/Spuren, 783 Zylinder&lt;br /&gt;
 Einheiten = Zylinder von 16065 × 512 = 8225280 Bytes&lt;br /&gt;
 Disk identifier: 0x0005efab&lt;br /&gt;
 &lt;br /&gt;
       Gerät  boot.     Anfang        Ende     Blöcke   Id  System&lt;br /&gt;
 /dev/sata1p1   *           1         743     5968116   83  Linux&lt;br /&gt;
 /dev/sata1p2             744         783      321300    5  Erweiterte&lt;br /&gt;
 /dev/sata1p5             744         783      321268+  82  Linux Swap / Solaris&lt;br /&gt;
&lt;br /&gt;
====Named Pipes====&lt;br /&gt;
Benannte Pipes (Named Pipes) können dagegen auch zur Kommunikation zwischen Prozessen eingesetzt werden, die nicht miteinander&lt;br /&gt;
verwandt sind und sich darüber hinaus auf unterschiedlichen Rechnern innerhalb eines Netzwerkes befinden dürfen. Sie sind &lt;br /&gt;
flexibler als anonyme Pipes und eignen sich für sogenannte Client-Server-Anwendungen (es lassen sich auch RPCs realisieren).&lt;br /&gt;
Benannte Pipes ermöglichen die gleichzeitige Kommunikation in beide Richtungen, das heißt, Daten können im Vollduplexbetrieb &lt;br /&gt;
zwischen den Prozessen ausgetauscht werden.&lt;br /&gt;
 &lt;br /&gt;
Erstelle Named Pipe mit Namen /tmp/roehre. Schreibe &amp;quot;hallo welt&amp;quot; in die Pipe und bleibe&lt;br /&gt;
 xinux@zero:~$ mkfifo /tmp/roehre&lt;br /&gt;
 xinux@zero:~$ echo hallo welt &amp;gt; /tmp/roehre &lt;br /&gt;
&lt;br /&gt;
Gebe Inhalt der Pipe mit cat aus&lt;br /&gt;
 root@zero:~# cat &amp;lt; /tmp/roehre &lt;br /&gt;
 hallo welt&lt;br /&gt;
 root@zero:~# ls -l /tmp/roehre | cut -c 1&lt;br /&gt;
 p&lt;br /&gt;
&lt;br /&gt;
====Sockets====&lt;br /&gt;
Schnittstelle um es lokalen Anwendungen zu ermöglichen, miteinander Netwerkmässig zu kommunizieren.&lt;br /&gt;
&lt;br /&gt;
 root@lydia:~# netstat  -lnxp | tail -1&lt;br /&gt;
  unix  2 [ ACC ] STREAM HÖRT 21951 6646/nm-applet /tmp/orbit-thomas/linc-19f6-0-2b9b81095cede&lt;br /&gt;
&lt;br /&gt;
 root@lydia:~# ls -l /tmp/orbit-thomas/linc-19f6-0-2b9b81095cede  | cut -c 1 &lt;br /&gt;
 s&lt;br /&gt;
&lt;br /&gt;
====Links====&lt;br /&gt;
Bei Links handelt es sich um symbolische Verweise auf andere Dateien&lt;br /&gt;
&lt;br /&gt;
'''Softlink'''&lt;br /&gt;
Ein Softlink ist eine Datei die nur auf den Namen einer anderen Datei verweist. Wenn die Originaldatei gelöscht wird, zeigt &lt;br /&gt;
der Link ins Leere. &lt;br /&gt;
&lt;br /&gt;
 ln -s datei softlink&lt;br /&gt;
&lt;br /&gt;
{| border=1 cellpadding=2&lt;br /&gt;
| Vorteile&lt;br /&gt;
| Symbolische Links können auch auf Verzeichnisse angelegt werden&amp;lt;br&amp;gt;Sie sind partitionsübergreifend&amp;lt;br&amp;gt;Man kann sie auf Dateien anlegen, die noch nicht existieren&lt;br /&gt;
|-&lt;br /&gt;
| Nachteile&lt;br /&gt;
| Wenn das Original gelöscht ist, ist kein Zugriff mehr möglich&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Beispiel&lt;br /&gt;
 root@zero:~# ln -s text verweis&lt;br /&gt;
 root@zero:~# ls -l verweis&lt;br /&gt;
 lrwxrwxrwx 1 root root 4 2009-06-18 15:48 verweis -&amp;gt; text&lt;br /&gt;
&lt;br /&gt;
'''Hardlinks'''&lt;br /&gt;
 ln datei hardlink&lt;br /&gt;
Eigentlich ist jede Datei ein Hardlink. Ein Hardlink ist ein Verzeichniseintrag,&lt;br /&gt;
der auf eine Inode verweist. Beim Erzeugen einer Datei verweist ein Eintrag auf&lt;br /&gt;
eine Inode. Man kann dann weitere Verweise erzeugen. Der Linkcounter wird&lt;br /&gt;
jeweils um 1 erhöht. Beim Löschen einer Datei wird er jeweils um 1 reduziert.&lt;br /&gt;
Wird der Wert 0 erreicht, ist die Datei gelöscht.&lt;br /&gt;
{| border=1 cellpadding=2&lt;br /&gt;
| Vorteile&lt;br /&gt;
|Zugriff auf die Daten, selbst wenn das Orginal gelöscht ist.&lt;br /&gt;
|-&lt;br /&gt;
|Nachteile&lt;br /&gt;
|Man kann keine Hardlinks auf Verzeichnisse anlegen.&lt;br /&gt;
Ist nur innerhalb einer Partion möglich.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Beispiel&lt;br /&gt;
 root@zero:~# touch 1&lt;br /&gt;
 root@zero:~# echo &amp;quot;text&amp;quot; &amp;gt; 1&lt;br /&gt;
 root@zero:~# ln 1 2&lt;br /&gt;
 root@zero:~# more 2&lt;br /&gt;
 text&lt;br /&gt;
 root@zero:~# echo &amp;quot;doch kein text&amp;quot; &amp;gt; 1&lt;br /&gt;
 root@zero:~# more 1&lt;br /&gt;
 doch kein text&lt;br /&gt;
 root@zero:~# more 2&lt;br /&gt;
 doch kein text&lt;br /&gt;
&lt;br /&gt;
Weitere Optionen:&lt;br /&gt;
 -b sichert Dateien, statt sie zu überschreiben &lt;br /&gt;
 -f Überschreibt bestehende, gleichnamige Dateien&lt;br /&gt;
 -i fragt vor dem Überschreiben nach Bestätigung&lt;br /&gt;
 -v ausführliche Meldungen&lt;br /&gt;
Softlink mit dem Namen passwd im Homeverzeichnis angelegt&lt;br /&gt;
 xinux@zero:~$ ln -vs /etc/passwd .&lt;br /&gt;
 „./passwd“ -&amp;gt; „/etc/passwd“&lt;br /&gt;
Softlink mit dem Namen passwd im Homeverzeichnis angelegt(Original exestiert nicht) &lt;br /&gt;
 xinux@zero:~$ ln -vs /etc/hund .&lt;br /&gt;
 „./hund“ -&amp;gt; „/etc/hund“&lt;br /&gt;
Hardlink mit dem Namen hosts im Homeverzeichnis angelegt&lt;br /&gt;
  xinux@zero:~$ ln -v /etc/hosts .&lt;br /&gt;
 „./hosts“ =&amp;gt; „/etc/hosts“&lt;br /&gt;
Auf eine nicht existierende Datei kann kein Hardlink angelegt werden!&lt;br /&gt;
 xinux@zero:~$ ln -v /etc/katze .&lt;br /&gt;
 ln: Zugriff auf „/etc/katze“: No such file or directory&lt;br /&gt;
&lt;br /&gt;
==Shellsonderzeichen==&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot; cellpadding=&amp;quot;2&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
|;&lt;br /&gt;
|Trenne Kommandos&lt;br /&gt;
|-&lt;br /&gt;
|. oder source&lt;br /&gt;
|Ausführen wie in aktueller Shell&lt;br /&gt;
|-&lt;br /&gt;
|#&lt;br /&gt;
|Kommentar&lt;br /&gt;
|-&lt;br /&gt;
|&amp;amp;&lt;br /&gt;
|Programm im Hintergrund starten &lt;br /&gt;
|-&lt;br /&gt;
|&amp;amp;&amp;amp;&lt;br /&gt;
|UND -Ausführung  (wenn links wahr dann führe rechts aus)&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;nowiki&amp;gt;|&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
|STOUT von links wird zu STDIN von rechts &lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;nowiki&amp;gt;||&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
|ODER -Ausführung (wenn links falsch dann führe rechts aus)&lt;br /&gt;
|-&lt;br /&gt;
|*&lt;br /&gt;
|steht für beliebig viel Zeichen auch 0 &lt;br /&gt;
|-&lt;br /&gt;
|?&lt;br /&gt;
|steht für genau ein Zeichen &lt;br /&gt;
|-&lt;br /&gt;
|[abc]&lt;br /&gt;
|steht für eins der Zeichen in [ ] hier a b oder c &lt;br /&gt;
|-&lt;br /&gt;
|[ausdruck] &lt;br /&gt;
|Andere Schreibweis für test &lt;br /&gt;
|-&lt;br /&gt;
|~&lt;br /&gt;
|das Homeverzeichnis&lt;br /&gt;
|-&lt;br /&gt;
|&amp;gt;    und    &amp;gt;&amp;gt;&lt;br /&gt;
|leite in Datei um   &amp;gt;  überschreibe     &amp;gt;&amp;gt; hänge an &lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;&lt;br /&gt;
|lesen aus Datei &lt;br /&gt;
|-&lt;br /&gt;
|2&amp;gt;&amp;amp;1&lt;br /&gt;
|leite STDERR auf STDOUT&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;&amp;lt; ende&lt;br /&gt;
|Lesen aus Datei (Heredokument)&lt;br /&gt;
|-&lt;br /&gt;
|(...)&lt;br /&gt;
|Alles inhalb von ( ) wird als Subshell ausgeführt&lt;br /&gt;
|-&lt;br /&gt;
|{...}&lt;br /&gt;
|Gruppieren von Komandos &lt;br /&gt;
|-&lt;br /&gt;
|{ ,  ,  , }&lt;br /&gt;
|Zeichenketten zusammensetzen &lt;br /&gt;
|-&lt;br /&gt;
|$&lt;br /&gt;
|Inhalt von Variablen ausgeben $SUX&lt;br /&gt;
|-&lt;br /&gt;
|$* oder $@&lt;br /&gt;
|Liste der übergebenen Parameter&lt;br /&gt;
|-&lt;br /&gt;
|$# &lt;br /&gt;
|Anzahl der übergebenen Parameter &lt;br /&gt;
|-&lt;br /&gt;
|$0&lt;br /&gt;
|Name des Shellprogramms &lt;br /&gt;
|-&lt;br /&gt;
|$?&lt;br /&gt;
|Rückgabewert des letzten Kommandos &lt;br /&gt;
|-&lt;br /&gt;
|$!  und  $$&lt;br /&gt;
|PID des  $!  = letzten Hintergrund  -  , $$ = aktuellen Prozess&lt;br /&gt;
|-&lt;br /&gt;
|$1 ..$9&lt;br /&gt;
|Parameter 1 bis 9 &lt;br /&gt;
|-&lt;br /&gt;
|$() oder `  `&lt;br /&gt;
|Kommandosubstition&lt;br /&gt;
|-&lt;br /&gt;
|${ }&lt;br /&gt;
|Funktion zur Manipulation von Zeichenketten &lt;br /&gt;
|-&lt;br /&gt;
|$(( )) oder $[ ]&lt;br /&gt;
|Arithmetische Berechnung &lt;br /&gt;
|-&lt;br /&gt;
|&amp;quot;...&amp;quot;&lt;br /&gt;
|Entwertung der Sonderzeichen ausser $ ' \&lt;br /&gt;
|-&lt;br /&gt;
|'...'&lt;br /&gt;
|Entwertung sämtlicher Sonderzeichen ausser ' selbst&lt;br /&gt;
|-&lt;br /&gt;
|\  &lt;br /&gt;
|Entwertung des folgenden Sonderzeichens &lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==Prozesse==&lt;br /&gt;
===Was ist ein Prozess?===&lt;br /&gt;
Ein Prozess setzt sich aus zwei Teilen zusammen:&lt;br /&gt;
&lt;br /&gt;
1.Programm, das in den Hauptspeicher geladen wurde&lt;br /&gt;
&lt;br /&gt;
2.Prozessumgebung &lt;br /&gt;
&lt;br /&gt;
Unter einem Prozess versteht man ein Programm (binär), das in den Hauptspeicher&lt;br /&gt;
geladen wurde. Also nicht das Program selbst, das auf der Festplatte liegt ist der&lt;br /&gt;
Prozess, sondern es wird erst durch das Laden in den Hauptspeicher dazu.&lt;br /&gt;
Normalerweise liegt ein Programm als ausführbare Datei irgendwo auf der&lt;br /&gt;
Festplatte oder auf Diskette. Ob es sich bei dem Programm um eine binäre Datei&lt;br /&gt;
handelt, kann man mit dem Befehl '' file '' feststellen.&lt;br /&gt;
 &lt;br /&gt;
 root@zero:~# file /bin/mkdir&lt;br /&gt;
 /bin/mkdir: ELF 32-bit LSB executable, Intel 80386, version 1 (SYSV), dynamically linked (uses shared libs), for GNU/Linux 2.6.8, stripped&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Die Datei liegt im Maschinencode vor und kann in den Hauptspeicher geladen&lt;br /&gt;
werden. Sobald dies geschehen ist, kann der Rechner diesen Maschinencode&lt;br /&gt;
abarbeiten (ausführen).&lt;br /&gt;
&lt;br /&gt;
Da aber ein Programm nicht direkt auf die Hardware zugreifen soll, muss es vom&lt;br /&gt;
Betriebsystem kontrolliert werden. Das Betriebssystem liegt logisch gesehen&lt;br /&gt;
zwischen Hardware und Anwendung. Das Betriebssystem ordnet jedem Prozess&lt;br /&gt;
verschiedene Kenndaten zu, um die Prozesse verwalten zu können. Alle&lt;br /&gt;
Kenndaten, die einem Prozess zugeordnet sind, nennt man die&lt;br /&gt;
Prozessumgebung.Wenn man in der Shell ein Kommando eingibt, wird ein Prozess&lt;br /&gt;
kreiert. Natürlich ist die Shell selbst auch ein Prozess. Ein Prozess kann aber&lt;br /&gt;
genauso gut ein Serverprozess (Dienst) sein, z.B. Apache.&lt;br /&gt;
Ein wesentliches Merkmal eines Prozesses ist die Prozesskommunikation. Über im&lt;br /&gt;
Betriebssystem implementierte Methoden ist es möglich, dass verschiedene&lt;br /&gt;
Prozesse Signale und Daten untereinander austauschen können.&lt;br /&gt;
Dadurch wird auch dem Benutzer ermöglicht, einem Prozeß bestimmte Signale zu&lt;br /&gt;
senden bzw. auf den Status eines Prozesses Einfluss zu nehmen.&lt;br /&gt;
&lt;br /&gt;
===Prozesstabelle (Anzeige mit ps)===&lt;br /&gt;
Da zu jedem Prozess Kenndaten geführt werden, müssen diese auch irgendwo&lt;br /&gt;
festgehalten werden. Das geschieht in der sogenannten Prozesstabelle.&lt;br /&gt;
&lt;br /&gt;
Kenndaten der Prozesse (Auswahl):&lt;br /&gt;
* F Flags (z.B. ausgelagert; Systemprozess; Trace,...)&lt;br /&gt;
* UID Nutzer, mit dessen Rechten der Prozess ausgeführt wird&lt;br /&gt;
* PID Prozess - ID. Diese Nummer gibt eine eindeutige Prozess - Nummer&lt;br /&gt;
an. Sie wird vom System automatisch beim Starten des Prozesses&lt;br /&gt;
vergeben und ist für die Laufzeit eindeutig.&lt;br /&gt;
* PPID Prozessnumer der Eltern-Prozesses&lt;br /&gt;
* PRI Priorität eines Prozesses; je niedriger der Wert ist, desto besser&lt;br /&gt;
* NI ist der Nicewert des Prozesses; Nice erniedrigt den Grundwert&lt;br /&gt;
der Priorität des Prozesses und gibt damit Prozessorzeit für andere&lt;br /&gt;
Prozesse frei.&lt;br /&gt;
* SIZE Speichergröße des Prozesses inklusive Stack (eine Art Zwischenspeicher)&lt;br /&gt;
* RSS Verbrauch an physischen Speicher&lt;br /&gt;
* WCHAN ist der Name der Kernerlfunktion, in der der Prozess schläft&lt;br /&gt;
* STAT Status des Prozesses&lt;br /&gt;
R läuft       S schlafend     D nicht störbarer Schlaf&lt;br /&gt;
T angehalten  Z Zombie        W der Prozess belegt keine Seiten&lt;br /&gt;
* TIME Bisland benötigte Prozessorzeit&lt;br /&gt;
* SIZE ist die Größe von Text, Daten und Stack&lt;br /&gt;
* TTY die Nummer des kontrollierenden Teminal; wenn hier ein ? steht,&lt;br /&gt;
handelt es sich um einen Dämon oder Serverprozess.&lt;br /&gt;
* COMMAND Angabe des Prozesses selbst. Dies ist meist der Programmname.&lt;br /&gt;
&lt;br /&gt;
Weiteres&lt;br /&gt;
* GID Gruppe, unter der der Prozess läuft&lt;br /&gt;
* Verweis auf das aktuellen Arbeitsverzeichnis&lt;br /&gt;
* Um mit relativen Pfadangaben arbeiten zu können braucht man diesen Eintrag&lt;br /&gt;
* Tabelle mit Verweisen auf aktuell geöffnete Dateien&lt;br /&gt;
* 3 sind automatisch geöffnet Standardeingabe, Standardausgabe und&lt;br /&gt;
Standardfehlerkanal&lt;br /&gt;
&lt;br /&gt;
Beispiel&lt;br /&gt;
 root@zero:~# ps -l&lt;br /&gt;
 F S   UID   PID  PPID  C PRI  NI ADDR SZ WCHAN  TTY          TIME CMD&lt;br /&gt;
 4 R     0 18639 18631  0  80   0 -  1080 -      pts/0    00:00:00 bash&lt;br /&gt;
 0 R     0 25904 18639  0  80   0 -   635 -      pts/0    00:00:00 ps&lt;br /&gt;
&lt;br /&gt;
===Eltern und Kinder===&lt;br /&gt;
Jeder Prozess kann weitere Prozesse erzeugen. Die erzeugten Prozesse bezeichnet&lt;br /&gt;
man als Kindprozesse. Jeder Kindprozess weiß anhand der PID, woher er stammt.&lt;br /&gt;
&lt;br /&gt;
Alle Prozesse sind von einem anderen Prozess gestartet worden, mit Ausnahme&lt;br /&gt;
des Pseudoprozesses (noch im Kernel beim Starten erzeugter Prozess). Dieser hat&lt;br /&gt;
die Prozessnummer 0. Er hat die Aufgabe, den Init Prozess ( /sbin/init die Nummer&lt;br /&gt;
1) zu starten, der in System V alle anderen Prozesse direkt oder über seine Kind-&lt;br /&gt;
prozesse startet. (init wird konfiguriert durch die /etc/inittab)&lt;br /&gt;
&lt;br /&gt;
Es gibt zwei Arten wie ein Prozess gestartet werden kann:&lt;br /&gt;
&lt;br /&gt;
# Fork und Exec: Prozessumgebung wird dupliziert, der neue Prozess bekommt eine eigene neue PID&lt;br /&gt;
# Exec: Alter Prozess wird durch neuen Prozess überladen (geht mit dem shell-buildin exec)&lt;br /&gt;
&lt;br /&gt;
'''Rechte auf Objekte UID GID'''&lt;br /&gt;
Ob ein Prozess auf eine Datei zugreifen kann, entscheidet der Kernel anhand der&lt;br /&gt;
Zugriffssrechte, die auf der Datei gesetzt sind. Er checkt anhand der UID und GID&lt;br /&gt;
des Prozesses, ob es erlaubt ist. Mit dieser Technik wird letztendlich geprüft, was&lt;br /&gt;
ein User darf, und was nicht.&lt;br /&gt;
&lt;br /&gt;
===Rechenzeit und Priorität===&lt;br /&gt;
Da auch bei Prozessen eine Gerechtigkeit herschen muss, muss eine Instanz&lt;br /&gt;
darüber entscheiden wie lange ein Prozess Rechenzeit verbrauchen darf.&lt;br /&gt;
Folgende Kenndaten werden dazu benötigt&lt;br /&gt;
* clocktick = Zeiteinheit&lt;br /&gt;
* n = Faktor über den Kernel einstellbar&lt;br /&gt;
* slice = n &amp;lt;nowiki&amp;gt;*&amp;lt;/nowiki&amp;gt; clocktick&lt;br /&gt;
* agingtime = weitere Zeiteinheit über den Kernel einstellbar&lt;br /&gt;
&lt;br /&gt;
Es wird davon ausgegangen das der Prozess mit der niedrigsten Priorität gerade&lt;br /&gt;
rechnet. Pro clocktick erhöht sich die Priorität dieses Prozesses um eins.&lt;br /&gt;
&lt;br /&gt;
Jetzt können 3 Situationen eintreten die alle dazu führen das der Scheduler&lt;br /&gt;
aufgerufen wird.&lt;br /&gt;
&lt;br /&gt;
# Prozess blockiert wegen einer Ausgabe oder Eingabe.&lt;br /&gt;
# Gibt Rechenzeit freiwillig ab.&lt;br /&gt;
# Der Slice endet.&lt;br /&gt;
&lt;br /&gt;
Der Aufruf des Schedulers bewirkt das der Prozess mit der niedrigsten Priorität&lt;br /&gt;
gescheduled wird, er also nun rechnen darf. Nach Ablauf der agingtime werden&lt;br /&gt;
nun die Prozesse &amp;quot;gealtert&amp;quot;. Das geschieht nach folgender Formel&lt;br /&gt;
&lt;br /&gt;
Neue Priorität = Alte Priorität / 2 + Nicewert&lt;br /&gt;
&lt;br /&gt;
Der User hat die Möglichkeit, über den sogenannten Nicewert den Grundwert für&lt;br /&gt;
einen Prozess zu senken. Der Prozess braucht dann länger für seine Abarbeitung.&lt;br /&gt;
Er verhält sich somit netter zu den anderen Prozessen. Normale User können nur&lt;br /&gt;
netter werden, der Systemverwalter kann auch nicht netter (gemeiner) werden. Der&lt;br /&gt;
Bereich liegt zwischen 19 (sehr nett) bis 0 (weniger nett) für die User, und 19 bis&lt;br /&gt;
-20 für root.&lt;br /&gt;
&lt;br /&gt;
[[Image:pri.png]]&lt;br /&gt;
&lt;br /&gt;
'''Signale'''&lt;br /&gt;
&lt;br /&gt;
Mit den Kommando kill und killall kann man Prozessen Signale schicken&lt;br /&gt;
&lt;br /&gt;
 kill -Signalnummer PID &lt;br /&gt;
&lt;br /&gt;
Signalnummer&lt;br /&gt;
{| border=1 cellpadding=2&lt;br /&gt;
!Signalname&lt;br /&gt;
!Wert&lt;br /&gt;
!Aktion&lt;br /&gt;
|-&lt;br /&gt;
|SIGHUP&lt;br /&gt;
|1&lt;br /&gt;
|Neuinitialisierung eines Prozesses&lt;br /&gt;
|-&lt;br /&gt;
|SIGINT&lt;br /&gt;
|2&lt;br /&gt;
|Interrupt-Signal von der Tastatur (STRG+c)&lt;br /&gt;
|-&lt;br /&gt;
|SIGQUIT&lt;br /&gt;
|3&lt;br /&gt;
|Interrupt-Signal von der Tastatur (STRG+c) mit Dump&lt;br /&gt;
|-&lt;br /&gt;
|SIGKILL&lt;br /&gt;
|9&lt;br /&gt;
|unwiderrufliches Beendigungssignal (Töten)&lt;br /&gt;
|-&lt;br /&gt;
|SIGSEGV&lt;br /&gt;
|11&lt;br /&gt;
|Ungültige Speicherreferenz (bedeutet oft auf defekten Speicher)&lt;br /&gt;
|-&lt;br /&gt;
|SIGTERM &lt;br /&gt;
|15&lt;br /&gt;
|Beendigungssignal (geöffnete Dateien werden geschlossen)&lt;br /&gt;
|-&lt;br /&gt;
|SIGCONT &lt;br /&gt;
|18&lt;br /&gt;
|Weiterfahren, wenn gestoppt&lt;br /&gt;
|-&lt;br /&gt;
|SIGSTOP&lt;br /&gt;
|19&lt;br /&gt;
|Prozessstop&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Beispiel&lt;br /&gt;
 root@zero:~# kill -1 7562&lt;br /&gt;
&lt;br /&gt;
===Programme im Zusammenhang mit Prozessen===&lt;br /&gt;
====ps: Zeigt die Prozesse mit ihrem Status an====&lt;br /&gt;
 root@zero:~# ps&lt;br /&gt;
  PID TTY          TIME CMD&lt;br /&gt;
 14134 pts/0    00:00:00 bash&lt;br /&gt;
 14149 pts/0    00:00:00 ps&lt;br /&gt;
&lt;br /&gt;
 root@zero:~# ps -elf | grep apache&lt;br /&gt;
 1 S root      5738     1  0  80   0 -  5461 select Jun16 ?        00:00:00 /usr/sbin/apache2 -k start&lt;br /&gt;
 5 S www-data  5739  5738  0  80   0 -  5581 inet_c Jun16 ?        00:00:00 /usr/sbin/apache2 -k start&lt;br /&gt;
 5 S www-data  5742  5738  0  80   0 -  5461 inet_c Jun16 ?        00:00:00 /usr/sbin/apache2 -k start&lt;br /&gt;
 5 S www-data  5743  5738  0  80   0 -  5461 inet_c Jun16 ?        00:00:00 /usr/sbin/apache2 -k start&lt;br /&gt;
 5 S www-data  5745  5738  0  80   0 -  5461 inet_c Jun16 ?        00:00:00 /usr/sbin/apache2 -k start&lt;br /&gt;
 5 S www-data  5746  5738  0  80   0 -  5461 inet_c Jun16 ?        00:00:00 /usr/sbin/apache2 -k start&lt;br /&gt;
 0 S root     14153 14134  0  80   0 -   837 pipe_w 16:59 pts/0    00:00:00 grep apache&lt;br /&gt;
&lt;br /&gt;
Option 	Beschreibung&lt;br /&gt;
*l langes Format&lt;br /&gt;
*u 	zeige für jeden Prozess Besitzer und Startzeit an&lt;br /&gt;
*j 	Jobs-Format: Zeige PGID und SID an&lt;br /&gt;
*s 	Informationen über Signale ausgeben&lt;br /&gt;
*m 	Speicher-Informationen anzeigen&lt;br /&gt;
*f 	Baumstruktur der Prozesse anzeigen (ähnlich pstree)&lt;br /&gt;
*a 	alle Prozesse (jedes Benutzers) anzeigen&lt;br /&gt;
*x 	kontrollierendes Terminal nicht anzeigen&lt;br /&gt;
*e 	Für den Prozess gültige Umgebungsvariablen mit anzeigen (sinnvollerweise mit mehreren Optionen »w« anwenden, um die Ausgabe nicht am Zeilenende abzuschneiden)&lt;br /&gt;
*w 	längere Ausgabe. »w« kann mehrfach verwendet werden, um die maximale Länge um je eine Zeile zu vergrößern&lt;br /&gt;
*h 	Header mit Feldbezeichnern unterdrücken&lt;br /&gt;
*r 	nur laufende Prozesse ausgeben&lt;br /&gt;
*n 	User-ID statt User-Name ausgeben&lt;br /&gt;
*txx 	nur Prozesse ausgeben, die vom angegebenen Terminal kontrolliert werden. xx kann entweder einer der Terminal-Gerätenamen unter /dev (z.B. tty1) oder die entsprechende Kurzbezeichnung ohne »tty« (z.B. 1) sein.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
====nice: Lässt ein Programm mit verändertem Grundwert der Priorität laufen====&lt;br /&gt;
 root@zero:~# nice&lt;br /&gt;
 0&lt;br /&gt;
 root@zero:~# nice -n 9 bash&lt;br /&gt;
 root@zero:~# nice&lt;br /&gt;
 9&lt;br /&gt;
 root@zero:~#&lt;br /&gt;
&lt;br /&gt;
====renice: Ändert den Grundwert der Priorität eines laufenden Prozesses====&lt;br /&gt;
 root@zero:~# renice 10 5742&lt;br /&gt;
 5742: Alte Priorität: 0, neue Priorität: 10&lt;br /&gt;
&lt;br /&gt;
====top: Zeigt die Prozesse mit ihrem Status an (Abbrechen mit q)====&lt;br /&gt;
 root@zero:~# top&lt;br /&gt;
 top - 08:51:08 up 20 min,  1 user,  load average: 0.00, 0.02, 0.06&lt;br /&gt;
 Tasks:  93 total,   1 running,  92 sleeping,   0 stopped,   0 zombie&lt;br /&gt;
 Cpu(s):  1.6%us,  3.1%sy,  0.1%ni, 84.9%id, 10.2%wa,  0.0%hi,  0.2%si,  0.0%st&lt;br /&gt;
 Mem:    509504k total,   273948k used,   235556k free,    11312k buffers&lt;br /&gt;
 Swap:   321260k total,        0k used,   321260k free,   118380k cached&lt;br /&gt;
 &lt;br /&gt;
  PID USER      PR  NI  VIRT  RES  SHR S %CPU %MEM    TIME+  COMMAND                                                                       &lt;br /&gt;
 2208 mysql     20   0  125m  21m 5552 S  1.7  4.2   0:02.29 mysqld                                                                        &lt;br /&gt;
 3201 root      20   0  2444 1064  828 R  1.7  0.2   0:00.04 top                                                                           &lt;br /&gt;
    1 root      20   0  1908  780  564 S  0.0  0.2   0:02.19 init                                                                          &lt;br /&gt;
    2 root      15  -5     0    0    0 S  0.0  0.0   0:00.00 kthreadd                                                                      &lt;br /&gt;
    3 root      RT  -5     0    0    0 S  0.0  0.0   0:00.00 migration/0                                                                   &lt;br /&gt;
    4 root      15  -5     0    0    0 S  0.0  0.0   0:00.03 ksoftirqd/0                                                                   &lt;br /&gt;
    5 root      RT  -5     0    0    0 S  0.0  0.0   0:00.00 watchdog/0                                                                    &lt;br /&gt;
    6 root      15  -5     0    0    0 S  0.0  0.0   0:00.04 events/0                                                                      &lt;br /&gt;
    7 root      15  -5     0    0    0 S  0.0  0.0   0:00.00 khelper                                                                       &lt;br /&gt;
    8 root      RT  -5     0    0    0 S  0.0  0.0   0:00.00 kstop/0                                                                       &lt;br /&gt;
    9 root      15  -5     0    0    0 S  0.0  0.0   0:00.00 kintegrityd/0                                                                 &lt;br /&gt;
   10 root      15  -5     0    0    0 S  0.0  0.0   0:00.03 kblockd/0                                                                     &lt;br /&gt;
   11 root      15  -5     0    0    0 S  0.0  0.0   0:00.00 kacpid                                                                        &lt;br /&gt;
   12 root      15  -5     0    0    0 S  0.0  0.0   0:00.00 kacpi_notify                                                                  &lt;br /&gt;
   13 root      15  -5     0    0    0 S  0.0  0.0   0:00.00 cqueue                                                                        &lt;br /&gt;
   14 root      15  -5     0    0    0 S  0.0  0.0   0:00.53 ata/0                                                                         &lt;br /&gt;
   15 root      15  -5     0    0    0 S  0.0  0.0   0:00.00 ata_aux&lt;br /&gt;
&lt;br /&gt;
Kommandos&lt;br /&gt;
&lt;br /&gt;
*h - Hilfe&lt;br /&gt;
*u - User&lt;br /&gt;
*k - Kill&lt;br /&gt;
*r - Renice&lt;br /&gt;
*d - Delay (Default 3s)&lt;br /&gt;
*n - Tasks (Default unbegrenzt)&lt;br /&gt;
*W - Schreibe in Datei&lt;br /&gt;
*q - Quit&lt;br /&gt;
&lt;br /&gt;
====pstree: Zeigt die Prozesse als Baumstruktur====&lt;br /&gt;
 root@zero:~# pstree&lt;br /&gt;
 init─┬─NetworkManager&lt;br /&gt;
      ├─acpid&lt;br /&gt;
      ├─apache2───5*[apache2]&lt;br /&gt;
      ├─atd&lt;br /&gt;
      ├─bluetoothd&lt;br /&gt;
      ├─console-kit-dae───63*[{console-kit-dae}]&lt;br /&gt;
      ├─cron&lt;br /&gt;
      ├─cupsd&lt;br /&gt;
      ├─dbus-daemon&lt;br /&gt;
      ├─dd&lt;br /&gt;
      ├─gdm───gdm─┬─Xorg&lt;br /&gt;
      │           └─gdmgreeter&lt;br /&gt;
      ├─6*[getty]&lt;br /&gt;
      ├─hald───hald-runner─┬─hald-addon-acpi&lt;br /&gt;
      │                    ├─hald-addon-inpu&lt;br /&gt;
      │                    └─2*[hald-addon-stor]&lt;br /&gt;
      ├─klogd&lt;br /&gt;
      ├─nm-system-setti&lt;br /&gt;
      ├─nmbd&lt;br /&gt;
      ├─nscd───11*[{nscd}]&lt;br /&gt;
      ├─portmap&lt;br /&gt;
      ├─rpc.statd&lt;br /&gt;
      ├─slapd───2*[{slapd}]&lt;br /&gt;
      ├─smbd───smbd&lt;br /&gt;
      ├─sshd───sshd───bash───bash───pstree&lt;br /&gt;
      ├─syslogd&lt;br /&gt;
      ├─system-tools-ba&lt;br /&gt;
      ├─udevd&lt;br /&gt;
      ├─winbindd─┬─winbindd───winbindd&lt;br /&gt;
      │          └─3*[winbindd]&lt;br /&gt;
      └─wpa_supplicant&lt;br /&gt;
&lt;br /&gt;
===Jobs===&lt;br /&gt;
Unter einem Job versteht man ein Programm, welches man von der Shell gelöst&lt;br /&gt;
hat. D. h. man kann ganz normal weiter arbeiten und der Job verrichtet seinen&lt;br /&gt;
Dienst im Hintergrund. Man kann jederzeit zu diesem Job wieder Kontakt&lt;br /&gt;
aufnehmen.&lt;br /&gt;
&lt;br /&gt;
Ein Job kann auf 2 Arten gestarten werden:&lt;br /&gt;
&lt;br /&gt;
# Durch Anhängen des &amp;amp; Zeichens beim Programmstart&lt;br /&gt;
 root@zero:~# tail -f /var/log/messages &amp;amp;&lt;br /&gt;
 Jun 19 06:59:31 zero -- MARK --&lt;br /&gt;
 Jun 19 07:19:31 zero -- MARK --&lt;br /&gt;
 Jun 19 07:39:32 zero -- MARK --&lt;br /&gt;
 Jun 19 07:44:57 zero syslogd 1.5.0#5ubuntu3: restart.&lt;br /&gt;
 Jun 19 07:59:32 zero -- MARK --&lt;br /&gt;
 Jun 19 08:19:32 zero -- MARK --&lt;br /&gt;
 Jun 19 08:39:32 zero -- MARK --&lt;br /&gt;
 Jun 19 08:59:32 zero -- MARK --&lt;br /&gt;
 Jun 19 09:19:33 zero -- MARK --&lt;br /&gt;
 Jun 19 09:39:33 zero -- MARK --&lt;br /&gt;
 [3] 27421&lt;br /&gt;
&lt;br /&gt;
# Durch Stoppen des Prozesses durch Drücken von Strg-Z und in den Hintergrund schicken mit %n (n ist die Jobnummer)&lt;br /&gt;
 root@zero:~# watch cat /proc/cpuinfo&lt;br /&gt;
 Strg-Z&lt;br /&gt;
 [4]+  Stopped                 watch cat /proc/cpuinfo&lt;br /&gt;
 root@zero:~# bg %4&lt;br /&gt;
 [4]+ watch cat /proc/cpuinfo &amp;amp;&lt;br /&gt;
&lt;br /&gt;
Anweisungen im Zusammenhang mit Jobs (n ist die Jobnummer)&lt;br /&gt;
* bg %n : Einen Job in den Hintergrund stellen (wie oben)&lt;br /&gt;
* fg %n : Einen Job in den Vordergrund holen&lt;br /&gt;
 root@zero:~# fg %4&lt;br /&gt;
 watch cat /proc/cpuinfo&lt;br /&gt;
&lt;br /&gt;
* jobs : Aktive Jobs ausgeben&lt;br /&gt;
&lt;br /&gt;
 root@zero:~# jobs&lt;br /&gt;
 [1]   Running                 tail -f /var/log/syslog &amp;amp;&lt;br /&gt;
 [2]   Running                 tail -f /var/log/syslog &amp;amp;&lt;br /&gt;
 [3]-  Running                 tail -f /var/log/messages &amp;amp;&lt;br /&gt;
 [4]+  Stopped                 watch cat /proc/cpuinfo&lt;br /&gt;
&lt;br /&gt;
* Strg-Z : Einen Vordergrund-Job vorübergehend anhalten&lt;br /&gt;
* kill -STOP %n : Unterbricht Job im Hintergrund&lt;br /&gt;
 root@zero:~# kill -STOP %1&lt;br /&gt;
 root@zero:~# jobs&lt;br /&gt;
 [1]+  '''Stopped'''                 tail -f /var/log/syslog&lt;br /&gt;
 [2]   Running                 tail -f /var/log/syslog &amp;amp;&lt;br /&gt;
 [3]   Running                 tail -f /var/log/messages &amp;amp;&lt;br /&gt;
 [4]-  Stopped                 watch cat /proc/cpuinfo&lt;br /&gt;
* kill -CONT %n : Setzt den unterbrochenen Job im Hintergrund fort&lt;br /&gt;
root@zero:~# kill -CONT %1&lt;br /&gt;
root@zero:~# jobs&lt;br /&gt;
 [1]+  '''Running'''                 tail -f /var/log/syslog &amp;amp;&lt;br /&gt;
 [2]   Running                 tail -f /var/log/syslog &amp;amp;&lt;br /&gt;
 [3]   Running                 tail -f /var/log/messages &amp;amp;&lt;br /&gt;
 [4]-  Stopped                 watch cat /proc/cpuinfo&lt;br /&gt;
* kill -KILL %n : Tötet Job im Hintergrund&lt;br /&gt;
 root@zero:~# kill -KILL %1&lt;br /&gt;
 root@zero:~# jobs&lt;br /&gt;
 [1]+  '''Killed'''                  tail -f /var/log/syslog&lt;br /&gt;
 [2]   Running                 tail -f /var/log/syslog &amp;amp;&lt;br /&gt;
 [3]   Running                 tail -f /var/log/messages &amp;amp;&lt;br /&gt;
 [4]-  Stopped                 watch cat /proc/cpuinfo&lt;br /&gt;
 root@zero:~# jobs&lt;br /&gt;
 [2]   Running                 tail -f /var/log/syslog &amp;amp;&lt;br /&gt;
 [3]-  Running                 tail -f /var/log/messages &amp;amp;&lt;br /&gt;
 [4]+  Stopped                 watch cat /proc/cpuinfo&lt;br /&gt;
&lt;br /&gt;
Bedingungen, die zu Jobausführung eingehalten werden sollen:&lt;br /&gt;
* Der Job soll nicht auf den Bildschirm schreiben (Standardausgabe +Standardfehlerkanal).&lt;br /&gt;
* Er soll keine Eingaben vom Benutzer erwarten.&lt;br /&gt;
&lt;br /&gt;
==Suchen von Dateien==&lt;br /&gt;
===find===&lt;br /&gt;
 find ab_wo_wird_gesucht was_wird_gesucht aktion&lt;br /&gt;
 find [Pfad] [Bedingung] [Aktion]&lt;br /&gt;
&lt;br /&gt;
====Nach Namen====&lt;br /&gt;
 find [Pfad] '''-name''' [Name]&lt;br /&gt;
 &lt;br /&gt;
Finde alle Dateien mit Namen test ab dem Verzeichnis /home und gebe diese Zeilenweise aus&lt;br /&gt;
 root@zero:~# find /home -name test -print&lt;br /&gt;
 /home/xinux/test&lt;br /&gt;
 /home/test&lt;br /&gt;
&lt;br /&gt;
Wie oben, jedoch mit Namensanfang test&lt;br /&gt;
 root@zero:/home/xinux# find /home -name 'test*'&lt;br /&gt;
 /home/xinux/testdatei&lt;br /&gt;
 /home/xinux/test&lt;br /&gt;
 /home/test&lt;br /&gt;
&lt;br /&gt;
====Nach Benutzer(Eigentümer)====&lt;br /&gt;
 root@zero:/tmp# find /tmp/ '''-user''' xinux&lt;br /&gt;
 /tmp/datei&lt;br /&gt;
&lt;br /&gt;
====Nach Gruppe====&lt;br /&gt;
 root@zero:/tmp# find /tmp/ '''-group''' hacker&lt;br /&gt;
 /tmp/datei3&lt;br /&gt;
 /tmp/datei2&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
====Nach Typ====&lt;br /&gt;
Es wird nach Dateien anhand Ihrer Art gesucht:&lt;br /&gt;
 find [Pfad] '''-type''' [Typ] &lt;br /&gt;
Typ:&lt;br /&gt;
* f: Normale Dateien&lt;br /&gt;
 root@zero:~# find /tmp/ -type f&lt;br /&gt;
 /tmp/mbr.img&lt;br /&gt;
 /tmp/datei&lt;br /&gt;
 /tmp/zeugs&lt;br /&gt;
 /tmp/.X0-lock&lt;br /&gt;
* d: Verzeichnisse&lt;br /&gt;
 root@zero:~# find /var/log -type d&lt;br /&gt;
 /var/log&lt;br /&gt;
 /var/log/apache2&lt;br /&gt;
 /var/log/unattended-upgrades&lt;br /&gt;
 /var/log/apparmor&lt;br /&gt;
 /var/log/ConsoleKit&lt;br /&gt;
 /var/log/dist-upgrade&lt;br /&gt;
 /var/log/dist-upgrade/20090526-1052&lt;br /&gt;
 /var/log/cups&lt;br /&gt;
 /var/log/apt&lt;br /&gt;
 /var/log/fsck&lt;br /&gt;
 /var/log/samba&lt;br /&gt;
 /var/log/samba/cores&lt;br /&gt;
 /var/log/samba/cores/smbd&lt;br /&gt;
 /var/log/samba/cores/nmbd&lt;br /&gt;
 /var/log/samba/cores/winbindd&lt;br /&gt;
 /var/log/installer&lt;br /&gt;
 /var/log/gdm&lt;br /&gt;
 /var/log/news&lt;br /&gt;
* c: Char Devices (Zeichenorientierte Gerätedatei)&lt;br /&gt;
 root@zero:~# find / -type c&lt;br /&gt;
 /lib/udev/devices/kmem&lt;br /&gt;
 /lib/udev/devices/null&lt;br /&gt;
 /lib/udev/devices/console&lt;br /&gt;
 /lib/udev/devices/ppp&lt;br /&gt;
 /lib/udev/devices/net/tun&lt;br /&gt;
* b: Block Devices (Blockorientierte Gerätedatei)&lt;br /&gt;
* p: Benannte Pipe&lt;br /&gt;
* l: Links&lt;br /&gt;
* s: Sockets&lt;br /&gt;
&lt;br /&gt;
====Nach Modifikation====&lt;br /&gt;
Listet alle Dateien in /etc auf, die innerhalb von zwei Tagen modifiziert wurden&lt;br /&gt;
 root@zero:/var/log# find /etc/ -mtime 2 -print&lt;br /&gt;
 /etc/apache2&lt;br /&gt;
 /etc/apache2/mods-available&lt;br /&gt;
 /etc/apache2/conf.d&lt;br /&gt;
 /etc/apache2/sites-available&lt;br /&gt;
 /etc/bash_completion.d&lt;br /&gt;
 /etc/blkid.tab.old&lt;br /&gt;
 /etc/firefox-3.0/profile&lt;br /&gt;
 /etc/firefox-3.0/profile/chrome&lt;br /&gt;
 /etc/firefox-3.0/pref&lt;br /&gt;
 /etc/profile.d&lt;br /&gt;
 /etc/ufw/applications.d&lt;br /&gt;
 /etc/logrotate.d&lt;br /&gt;
 /etc/xulrunner-1.9&lt;br /&gt;
 /etc/blkid.tab&lt;br /&gt;
 /etc/cron.daily&lt;br /&gt;
 /etc/alternatives&lt;br /&gt;
 /etc/alternatives/x-www-browser&lt;br /&gt;
 /etc/alternatives/xulrunner&lt;br /&gt;
 /etc/gre.d&lt;br /&gt;
 /etc/hal/fdi/policy&lt;br /&gt;
 /etc/dbus-1/system.d&lt;br /&gt;
 /etc/udev/rules.d&lt;br /&gt;
&lt;br /&gt;
====Nach Größe====&lt;br /&gt;
Finde Dateien in /tmp, die größer als 100 MByte sind&lt;br /&gt;
 root@zero:/tmp# find /tmp/ -size +100M&lt;br /&gt;
 /tmp/datei&lt;br /&gt;
&lt;br /&gt;
Finde Dateien in /tmp, die kleiner als 100 KByte sind&lt;br /&gt;
 root@zero:/tmp# find /tmp/ -size -100k&lt;br /&gt;
 /tmp/&lt;br /&gt;
 /tmp/datei3&lt;br /&gt;
 /tmp/backup &lt;br /&gt;
 /tmp/datei2&lt;br /&gt;
 /tmp/.winbindd &lt;br /&gt;
 /tmp/.winbindd/pipe&lt;br /&gt;
 /tmp/mbr.img&lt;br /&gt;
 /tmp/zeugs&lt;br /&gt;
 /tmp/.ICE-unix&lt;br /&gt;
 /tmp/.X0-lock&lt;br /&gt;
 /tmp/datei1&lt;br /&gt;
 /tmp/.X11-unix&lt;br /&gt;
 /tmp/.X11-unix/X0&lt;br /&gt;
 /tmp/pulse-PKdhtXMmr18n&lt;br /&gt;
&lt;br /&gt;
====Nach Berechtigungen====&lt;br /&gt;
Finde Dateien in Home mit der Berechtigung 777 (-rwxrwxrwx)&lt;br /&gt;
 root@zero:/var# find /home/ -perm 777&lt;br /&gt;
 /home/samba&lt;br /&gt;
 /home/xinux/Examples&lt;br /&gt;
 /home/xinux/.pulse/1f0763ee4cf4c7e1d3c07fd149dda37b:runtime&lt;br /&gt;
 /home/test/Examples&lt;br /&gt;
&lt;br /&gt;
===locate===&lt;br /&gt;
Locate arbeitet über einen Index, der erstellt und aktualisiert werden muss. Aus diesem Grund kann locate teilweise nicht &lt;br /&gt;
akutell sein. Es ist immer schneller als find und es durchsucht immer das ganze Dateisystem. &lt;br /&gt;
 locate [Dateiname]&lt;br /&gt;
 &lt;br /&gt;
Lokalisiere die Datei wvdial.conf. Anmerkung: Der Stern wird beim Suchen automatisch hinzugefügt. Entspricht also&lt;br /&gt;
wvidal.conf*&lt;br /&gt;
 root@zero:~# locate wvdial.conf&lt;br /&gt;
 /etc/wvdial.conf&lt;br /&gt;
 /usr/share/man/man5/wvdial.conf.5.gz&lt;br /&gt;
 /var/lib/dpkg/info/wvdial.conffiles&lt;br /&gt;
 /var/lib/dpkg/info/wvdial.config&lt;br /&gt;
&lt;br /&gt;
Lokalisiere die Datei wvdial.conf und nur diese&lt;br /&gt;
 root@zero:~# locate -b '\wvdial.conf'&lt;br /&gt;
 /etc/wvdial.conf&lt;br /&gt;
&lt;br /&gt;
Aktualisieren des Indexes&lt;br /&gt;
 root@zero:~# updatedb&lt;br /&gt;
&lt;br /&gt;
==Wie wird ein Kommando lokalisiert==&lt;br /&gt;
Wenn die Shell alle Ersetzungen in der Kommandozeile vorgenommen und alle Umleitungen vorbereitet hat, ist der Zeitpunkt &lt;br /&gt;
gekommen, auf den der Anwender die ganze Zeit gewartet hat. Die Shell versucht das Kommando auszuführen. Dazu muss sie &lt;br /&gt;
es aber erst lokalisieren. Das erste passende Kommando wird ausgeführt.&lt;br /&gt;
&lt;br /&gt;
Als Kommandoname wird immer das erste Wort eines einfachen Kommandos erkannt. Ein Kommandoname kann mit Pfadnamen in &lt;br /&gt;
einem Verzeichnis (absolut oder relativ) angegeben werden. Die Shell erkennt dies an (mindestens) einem Slash `/' &lt;br /&gt;
im Kommandonamen. Wenn kein Verzeichnis angegeben ist, versucht die Shell selbst, das Kommando zu finden. Dazu wird &lt;br /&gt;
der Kommandoname zuerst in der Hashtabelle gesucht, dann wird er mit den Synonymen, mit den Scriptfunktionen und &lt;br /&gt;
schließlich mit den Shellfunktionen verglichen. &lt;br /&gt;
&lt;br /&gt;
Wird auf diese Weise kein Programm dieses Namens gefunden, werden alle in der PATH-Umgebungsvariablen aufgeführten &lt;br /&gt;
Verzeichnisse nach einer ausführbaren Datei dieses Namens durchsucht. Wird auch hier kein passendes Kommando gefunden, &lt;br /&gt;
gibt die Shell eine Fehlermeldung aus.&lt;br /&gt;
&lt;br /&gt;
===which und type===&lt;br /&gt;
====which====&lt;br /&gt;
which gibt die vollen Pfadnamen der Dateien aus, die bei Benutzung des angegebenen Befehls ausgeführt werden würden.&lt;br /&gt;
&lt;br /&gt;
 which [-a] Dateiname &lt;br /&gt;
&lt;br /&gt;
Optionen:&lt;br /&gt;
&lt;br /&gt;
* -a : Alle Treffer ausgeben, nicht nur den ersten&lt;br /&gt;
* --skip-dot : Verzeichnisse, die mit einem Punkt beginnen, auslassen&lt;br /&gt;
&lt;br /&gt;
Beispiel&lt;br /&gt;
 root@zero:~# which startx&lt;br /&gt;
 /usr/bin/startx&lt;br /&gt;
&lt;br /&gt;
====type====&lt;br /&gt;
Anzeigen der absoluten Pfadnamen von Befehlen, und ob sich diese Befehle in der Hash-Tabelle der aktuellen&lt;br /&gt;
Shell befinden.&lt;br /&gt;
&lt;br /&gt;
 type [Optionen] Befehle&lt;br /&gt;
&lt;br /&gt;
Beispiel&lt;br /&gt;
 root@zero:~# type ls&lt;br /&gt;
 ls is aliased to `ls --color=auto'&lt;br /&gt;
&lt;br /&gt;
Optionen:&lt;br /&gt;
&lt;br /&gt;
* -a : Alle vorkommenden Befehle werden ausgegeben, nicht nur das, welches aufgerufen werden würde&lt;br /&gt;
 root@zero:~# type '''-a''' ls&lt;br /&gt;
 ls is aliased to `ls --color=auto'&lt;br /&gt;
 ls is /bin/ls&lt;br /&gt;
&lt;br /&gt;
* -p : Anzeigen des Eintrags von Befehl in der Hash-Tabelle. Dieser Wert kann sich vom ersten Auftreten des Befehls in PATH&lt;br /&gt;
unterscheiden&lt;br /&gt;
 root@zero:~# type '''-p''' apache2&lt;br /&gt;
 /usr/sbin/apache2&lt;br /&gt;
&lt;br /&gt;
* -t : Anzeigen, ob Befehl ein Aliasname, ein Schlüsselwort, eine Funktion, ein eingebauter Befehl oder eine Datei ist&lt;br /&gt;
 root@zero:~# type '''-t''' apache2&lt;br /&gt;
 file&lt;/div&gt;</summary>
		<author><name>192.168.178.46</name></author>
	</entry>
	<entry>
		<id>https://www.xinux.net/index.php?title=Linux_Grundlagen&amp;diff=117</id>
		<title>Linux Grundlagen</title>
		<link rel="alternate" type="text/html" href="https://www.xinux.net/index.php?title=Linux_Grundlagen&amp;diff=117"/>
		<updated>2009-07-08T06:53:48Z</updated>

		<summary type="html">&lt;p&gt;192.168.178.46: /* top: Zeigt die Prozesse mit ihrem Status an (Abbrechen mit q) */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Einführung==&lt;br /&gt;
===Geschichte Unix===&lt;br /&gt;
====1969====&lt;br /&gt;
Am Anfang von Linux steht Multics, ein von Bell Laboratories geschaffenes &amp;quot;Betriebssystem&amp;quot;, &lt;br /&gt;
das noch mit Lochkarten arbeitete. Multics wird mit Unterstützung von AT&amp;amp;T und Western &lt;br /&gt;
Electric unter Mitarbeit von Ken Thompson und Dennis Ritchie weiterentwickelt. Obwohl sich &lt;br /&gt;
Bell Laboratories bald zurückzieht, gibt Thompson das Projekt nicht auf.  Zum Entwicklerteam &lt;br /&gt;
gehören auch Rudd Canaday und Brian Kernighan. Letzterer gibt 1970 dem Betriebssystem den Namen UNIX. &lt;br /&gt;
Thompson definiert 7 Richtlinien für UNIX:&lt;br /&gt;
 &lt;br /&gt;
# Hierarchische Anordnung der Dateisysteme&lt;br /&gt;
# Die Ausgabe von Daten an die Peripherie(-geräte) und Dateien soll gleich sein.&lt;br /&gt;
# Prozesse und Programme sollen miteinander kommunizieren.&lt;br /&gt;
# Multitasking (voneinander getrennte Prozesse)&lt;br /&gt;
# Persönliche Shell's&lt;br /&gt;
# Der Compiler soll für viele Programmiersprachen tauglich sein.&lt;br /&gt;
# Portabilität&lt;br /&gt;
&lt;br /&gt;
====1971====&lt;br /&gt;
Bis 1971 ist das für eine DEC PDP-7 geschriebene Unix als Version 1 auf eine PDP-11 portiert. Bis&lt;br /&gt;
zur Version 4 entwickelt Ritchie die Programmier- (Hoch-) Sprache C. Das in Assembler geschriebene&lt;br /&gt;
Unix wird fast völlig nach C übersetzt, wodurch zum erstenmal die geforderte Hardware-Unabhängigkeit&lt;br /&gt;
des Betriebssystems realisiert werden kann.&lt;br /&gt;
&lt;br /&gt;
====1975====&lt;br /&gt;
Da AT&amp;amp;T aufgrund vertraglicher Bindungen mit der US-Bundesregierung Unix nicht kommerziell vermarkten darf, stellt sie den Source Code für ein paar hundert Dollar den Universitäten, Lehr- und Forschungsanstalten zur Verfügung. Dies führt zu einer sehr dynamischen Entwicklung von Unix. 1975 wird die Version 6 als erstes UNIX-System veröffentlicht, die darauffolgende Version 7 wird sehr erfolgreich. Da es keine Standardisierung gibt, entwickeln bald verschiedenste Firmen ihr eigenes UNIX. Ab 1984 wird AT&amp;amp;T per Gerichtsbeschluss erlaubt, Unix zu vermarkten. AT&amp;amp;T verkauft sein Unix V und beginnt, sich um einen internationalen Standard von UNIX zu bemühen. &lt;br /&gt;
&lt;br /&gt;
====1984====&lt;br /&gt;
Durch Richard Stallman wird die Free Software Foundation (FSF) gegründet. Diese initiiert ein Projekt namens GNU (GNU ist Not Unix), welches das Ziel verfolgt, ein freies UNIX System zu schaffen. &lt;br /&gt;
&lt;br /&gt;
====1987====&lt;br /&gt;
AT&amp;amp;T verbietet die Verwendung des Unix Quellcodes an den Universitäten. Während dieser Zeit ist Andrew (Andy) Tannenbaum Professor an der Freien Universität von Amsterdam und entwickelt Minix. Minix ist ein kostengünstiges Lehrbetriebssystem und kommt ohne jeglichen AT&amp;amp;T Code aus, obwohl es die gleiche Funktionalität wie Unix 7 bietet. Im Usenet unter comp.os.minix entsteht eine Minix-Gemeinde, die den Minix Kernel und die Anwendungen rundherum programmiert und verbessert.&lt;br /&gt;
&lt;br /&gt;
====1991====&lt;br /&gt;
Linus Torvalds hat als Student für Computerwissenschaften an der Universität in Helsinki Minix installiert und das Buch von Andy Tannenbaum gelesen. Er beginnt im Sinne der FSF einen Unix ähnlichen Kernel zu programmieren mit der Idee, &amp;quot;ein besseres Minix als Minix&amp;quot; zu bauen. 1992 stellt er die Version 0.02 mit dem Namen Linux der Internetgemeinde zur Verfügung. &lt;br /&gt;
&lt;br /&gt;
====1994====&lt;br /&gt;
Die Linux Version 1.0 wird freigegeben. Das Linux Fieber beginnt... &lt;br /&gt;
&lt;br /&gt;
====1998====&lt;br /&gt;
Der Kreis der Linux Entwickler und Anwender ist kräftig angeschwollen. KDE 1.0 wird veröffentlicht. Die Zuwachsraten von Linux übertreffen die von Windows NT deutlich. &lt;br /&gt;
&lt;br /&gt;
====1999====&lt;br /&gt;
Der lange erwartete stabile Linux Kernel Version 2.2 wird freigegeben. Namhafte Firmen wie IBM kündigen ihre Unterstützung für Linux an. &lt;br /&gt;
&lt;br /&gt;
====2001====&lt;br /&gt;
Der lange erwartete stabile Linux Kernel Version 2.4 wird freigegeben. USB Unterstützung und eine neue Firewallimplementierung zeichnen ihn aus.&lt;br /&gt;
&lt;br /&gt;
====2003====&lt;br /&gt;
Linux Kernel Version 2.6 wird freigegeben. Am auffälligsten sind Änderungen bei der Modulverwaltung.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Distributionen===&lt;br /&gt;
{| Border=1 Cellpadding=2&lt;br /&gt;
| &lt;br /&gt;
|Url&lt;br /&gt;
|Paketformat&lt;br /&gt;
|-&lt;br /&gt;
|Red Hat&lt;br /&gt;
|www.redhat.com&lt;br /&gt;
|rpm&lt;br /&gt;
|-&lt;br /&gt;
|fedora&lt;br /&gt;
|fedora.redhat.com&lt;br /&gt;
|rpm&lt;br /&gt;
|-&lt;br /&gt;
|CentOS&lt;br /&gt;
|www.centos.org&lt;br /&gt;
|rpm&lt;br /&gt;
|-&lt;br /&gt;
|Suse/openSUSE&lt;br /&gt;
|www.opensuse.org&lt;br /&gt;
|rpm&lt;br /&gt;
|-&lt;br /&gt;
|Debian&lt;br /&gt;
|www.debian.org&lt;br /&gt;
|deb&lt;br /&gt;
|-&lt;br /&gt;
|Ubuntu&lt;br /&gt;
|www.ubuntu.com&lt;br /&gt;
|deb&lt;br /&gt;
|-&lt;br /&gt;
|Mandrake&lt;br /&gt;
|www.linux-mandrake.com&lt;br /&gt;
|rpm&lt;br /&gt;
|-&lt;br /&gt;
|Easy Linux&lt;br /&gt;
|www.easy-linux.de&lt;br /&gt;
|rpm&lt;br /&gt;
|-&lt;br /&gt;
|Turbo&lt;br /&gt;
|www.turbolinux.com&lt;br /&gt;
|rpm&lt;br /&gt;
|-&lt;br /&gt;
|minis&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|toms&lt;br /&gt;
|www.toms.net/rb&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|damn small linux&lt;br /&gt;
|www.damnsmalllinux.org&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|pocket-linux&lt;br /&gt;
|www.pocket-linux.org&lt;br /&gt;
|&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
====Bücher====&lt;br /&gt;
 Titel : Das Linux Anwenderhandbuch und Leitfaden für die Systemverwaltung&lt;br /&gt;
 Autor : Sebastian Hetze, Dirk Hohndel, Olaf Kirch und Martin Müller&lt;br /&gt;
 Verlag: Lunetix&lt;br /&gt;
 ISBN : 3-929764-06-7&lt;br /&gt;
&lt;br /&gt;
 Titel : Linux in a Nutshell&lt;br /&gt;
 Autor : Jessica Perry Hekman und die Mitarbeiter von O'Reilly &amp;amp; Associates&lt;br /&gt;
 Verlag: O'Reilly&lt;br /&gt;
 ISBN : 3-930673-57-6&lt;br /&gt;
&lt;br /&gt;
 Titel : Linux - Wegweiser zur Installation und Konfiguration&lt;br /&gt;
 Autor : Matt Welsh, Lar Kaufman, Matthias Kalle Dallheimer&lt;br /&gt;
 Verlag: O'Reilly&lt;br /&gt;
 ISBN : 3-930673-58-4 (deutsch), 1-56592-469-X (englisch)&lt;br /&gt;
&lt;br /&gt;
 Titel : Linux - Installation, Konfiguration, Anwendung&lt;br /&gt;
 Autor : Michael KoflerMultitasking&lt;br /&gt;
 Verlag: Addison-Wesley&lt;br /&gt;
 ISBN : 3-8273-1475-5&lt;br /&gt;
&lt;br /&gt;
 Titel : Linux - Wegweiser für Netzwerker&lt;br /&gt;
 Autor : Olaf Kirch&lt;br /&gt;
 Verlag: O'Reilly&lt;br /&gt;
 ISBN : 3-930673-18-5&lt;br /&gt;
&lt;br /&gt;
 Titel : TCP/IP-Netzwerk-Administration&lt;br /&gt;
 Autor : Craig Hunt&lt;br /&gt;
 Verlag: O'Reilly&lt;br /&gt;
 ISBN : 3-89721-110-6&lt;br /&gt;
&lt;br /&gt;
 Titel : Essential System Administration&lt;br /&gt;
 Autor : Eleen Frisch&lt;br /&gt;
 Verlag: O'Reilly&lt;br /&gt;
 ISBN : 1-56592-127-5&lt;br /&gt;
&lt;br /&gt;
==Betriebssystem==&lt;br /&gt;
===Was ist ein Betriebssystem?===&lt;br /&gt;
&lt;br /&gt;
Ein Betriebssystem liegt logisch gesehen zwischenAnwendungsprogramm und Hardware.&lt;br /&gt;
&lt;br /&gt;
Es nimmt die Anforderungen der Anwendungsprogramme entgegen und leitet&lt;br /&gt;
diese kontrolliert an die Hardware weiter. Kein Anwendungsprogramm sollte&lt;br /&gt;
direkt auf die Hardware zugreifen können. Den zentralen Zugang schafft einzig&lt;br /&gt;
das Betriebssystem. Somit kann das Betriebssystem unsinnige Anforderungen&lt;br /&gt;
oder Bedienungsfehler abblocken.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Image:Linux.jpg]]&lt;br /&gt;
&lt;br /&gt;
===Aufgaben eines Betriebssystems===&lt;br /&gt;
&lt;br /&gt;
# Verbergen der Komplexität der Maschine vor dem Anwender (Abstraktion)&lt;br /&gt;
# Bereitstellen einer Benutzerschnittstelle (&amp;quot;Kommandointerpreter&amp;quot;, &amp;quot;Shell&amp;quot;)&lt;br /&gt;
# Bereitstellen einer normierten Programmierschnittstelle (API)&lt;br /&gt;
# Verwaltung der Ressourcen der Maschine::&lt;br /&gt;
Hauptspeicher&lt;br /&gt;
Prozessor(en)&lt;br /&gt;
Hintergrundspeicher (Platte, Band, etc.)&lt;br /&gt;
Geräte (Terminal, Drucker, Plotter, etc.)&lt;br /&gt;
Rechenzeit&lt;br /&gt;
Koordination von Prozessen&lt;br /&gt;
&lt;br /&gt;
===Aufbau eines Betriebssystems===&lt;br /&gt;
&lt;br /&gt;
Ein Rechensystem besteht aus Hardware, Systemprogrammen und Anwendungs-&lt;br /&gt;
programmen. Unter einem Betriebssystem wird meist die Summe aus Betriebs-&lt;br /&gt;
systemkern (Kernel) und den wichtigsten Systemprogrammen verstanden. Ein&lt;br /&gt;
minimaler LINUX-Kernel besitzt ungefähr eine Größe von 400 - 800 kByte.&lt;br /&gt;
Weitere wichtige Systemkomponenten benötigen zusätzlich 10 - 100 Mbyte&lt;br /&gt;
Plattenplatz.&lt;br /&gt;
&lt;br /&gt;
Ein Betriebssystem stellt den Rechner als erweiterte Maschine (virtuelle&lt;br /&gt;
Maschine) über definierte Software-Schnittstellen zur Verfügung.&lt;br /&gt;
Das Betriebssystem dient als Betriebsmittelverwalter, der Anforderungen&lt;br /&gt;
befriedigt, protokolliert, abrechnet und vermittelt.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Aufgaben des Betriebssystemkerns:&lt;br /&gt;
&lt;br /&gt;
{| Border=1 Cellpadding=2&lt;br /&gt;
|Prozessverwaltung  (dispatching and scheduling)&lt;br /&gt;
| Mehrere Benutzer können mit mehreren Aktionen gleichzeitig im System arbeiten, ohne sich gegenseitig zu beeinflussen. Damit dies möglich ist,  müssen die Aktionen organisiert, koordiniert und verwaltet werden. Die zu verwaltende Einheit nennt man Prozess.&lt;br /&gt;
|-&lt;br /&gt;
|Speicherverwaltung   (memory management)&lt;br /&gt;
|Zuteilen von Speicherbereichen an laufende Prozesse, Schutz der Speicherbereiche vor unbefugten Zugriffen, bei Speicherengpässen: Auslagern von ganzen (swapping) oder von Teilen (paging) von Prozessen auf die Platte (swap file).&lt;br /&gt;
|-&lt;br /&gt;
|Dateiverwaltung  (file handling)&lt;br /&gt;
|Zuteilung von Plattenplatz für Programme, Benutzer und Systemdienste, Schreiben, Lesen und Strukturieren der Daten auf den Massenspeichern; Durch Bereitstellung einer entsprechenden Schnittstelle (VFS, virtual file system) kann der Kern Dateisysteme unterschiedlichster Art (EXT2, FAT, NFS, HPFS, NTFS, ...) ansprechen.&lt;br /&gt;
|-&lt;br /&gt;
|Geräteverwaltung  (resource management)&lt;br /&gt;
|Der Kern ermöglicht und kontrolliert den Zugriff auf die Hardware. Er steuert die Ein- und Ausgabetätigkeiten der Anwender. An den Kern&lt;br /&gt;
gebunden sind die entsprechenden Gerätetreiber (device driver), die damit eine Kommunikation zwischen Kern und Hardware ermöglichen.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
===Multitasking===&lt;br /&gt;
&lt;br /&gt;
Multitasking bedeutet, dass ein Rechner aus Anwendersicht mehrere Aufgaben&lt;br /&gt;
(Tasks) gleichzeitg übernehmen kann. Das Betriebssystem (OS) unterteilt die&lt;br /&gt;
gleichzeitig anstehenden Aufgaben in Einzelarbeitsschritte (Prozesse) und&lt;br /&gt;
managed durch ein Zeitscheibenverfahren (scheduling) die gleichmäßige&lt;br /&gt;
Abarbeitung der Prozesse.&lt;br /&gt;
&lt;br /&gt;
Es wird unterschieden zwischen:&lt;br /&gt;
&lt;br /&gt;
*non-präamptiven (kooperativen=die Ressourcen werden vom aktiven Prozess freigegeben, bei einem Hänger steht das ganze System)&lt;br /&gt;
&lt;br /&gt;
und&lt;br /&gt;
&lt;br /&gt;
*präamptiven (reinem=der Betriebssystemkern steuert Taskwechsel, indem nach einer festgelegten Zeit vom gerade aktiven Prozess zum nächsten weitergeschaltet wird)&lt;br /&gt;
&lt;br /&gt;
===Mehrprozessorbetrieb===&lt;br /&gt;
&lt;br /&gt;
Bei mehreren Prozessoren und Unterstützung durch das OS&lt;br /&gt;
(NT,Linux,Unix,Novell) können mehrere Tasks auf diese verteilt werden und&lt;br /&gt;
gleichzeitig bearbeitet werden. Nachteilig ist, dass dies nicht oder kaum von&lt;br /&gt;
Anwendungsprogrammen unterstützt wird und es zu Kommunikationsproblemen&lt;br /&gt;
zwischen den einzelnen Tasks kommen kann.&lt;br /&gt;
&lt;br /&gt;
===Arten von von Betriebssystemen===&lt;br /&gt;
&lt;br /&gt;
{|Border=1 Cellpadding=2&lt;br /&gt;
|&lt;br /&gt;
|SingleUser  &lt;br /&gt;
|Multiuser&lt;br /&gt;
|-&lt;br /&gt;
|Single Tasking&lt;br /&gt;
|MS - DOS&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|Multi Tasking&lt;br /&gt;
|Windows 3.x&lt;br /&gt;
|UNIX&lt;br /&gt;
|-&lt;br /&gt;
|&lt;br /&gt;
|Windows 95/98&lt;br /&gt;
|Linux&lt;br /&gt;
|-&lt;br /&gt;
|&lt;br /&gt;
|Windows NT4 ohne Erweiterungen&lt;br /&gt;
|VMS&lt;br /&gt;
|-&lt;br /&gt;
|&lt;br /&gt;
|OS/2 &lt;br /&gt;
|Windows NT mit  Erweiterungen&lt;br /&gt;
|-&lt;br /&gt;
|&lt;br /&gt;
|Apple&lt;br /&gt;
|Windows 2000, XP, 2003&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
===SHELL===&lt;br /&gt;
&lt;br /&gt;
Wenn man mit Linux arbeiten will, kann man nicht direkt mit dem Betriebssystem&lt;br /&gt;
kommunizieren. Man braucht dazu ein Hilfsprogramm, welches die&lt;br /&gt;
Kommandoeingaben ordnungsgemäß an das Betriebssystem weiterleitet. Dieses&lt;br /&gt;
Hilfsprogramm hat den Namen Shell.&lt;br /&gt;
&lt;br /&gt;
Die Shell schirmt den Betriebssystemkern von den Anwendungsprogrammen ab.&lt;br /&gt;
Die unterschiedlichen Shells erfüllen alle dieselbe Aufgabe, sie unterscheiden sich&lt;br /&gt;
allerdings in ihrer Syntax.&lt;br /&gt;
&lt;br /&gt;
==Die Installation im Überblick==&lt;br /&gt;
&lt;br /&gt;
Die Installation von Linux geschieht in folgenden Schritten:&lt;br /&gt;
&lt;br /&gt;
# Analyse (Welche Hardware habe ich? ,Hab ich weitere Betriebsysteme?)&lt;br /&gt;
# Booten des Linux-Kernels. (von CD oder Diskette)&lt;br /&gt;
# Laden einer RAM-Disk (das macht das Installationsprogramm automatisch).&lt;br /&gt;
# Partitionieren der Festplatte (fdisk).&lt;br /&gt;
# Einrichten der Swappartition (mkswap), Formatieren der Festplatte (mkfs).&lt;br /&gt;
# Montieren der Dateisysteme (mount), Aktivieren der Swapbereiche (swapon).&lt;br /&gt;
# Kopieren und Auspacken der Daten vom Installationsmedium auf die Festplatte (die eigentliche Installation). (rpm, dpkg oder tar).&lt;br /&gt;
# Geeignete Wahl der Bootmethode unter Berücksichtigung von Punkt 1 (grub, lilo).&lt;br /&gt;
# Konfiguration des Systems (Netz, Modem etc...).&lt;br /&gt;
&lt;br /&gt;
==Erste Schritte==&lt;br /&gt;
===Anmelden===&lt;br /&gt;
Sie können sich nun mit dem Usernamen und dem Passwort, das sie bei der Installation angelegt haben anmelden!&lt;br /&gt;
[[Image:benutzer.jpg]]&lt;br /&gt;
&lt;br /&gt;
[[Image:passwd.jpg]]&lt;br /&gt;
&lt;br /&gt;
===Terminal öffnen===&lt;br /&gt;
&lt;br /&gt;
Ein Terminal öffnen Sie über das Startmenü:&lt;br /&gt;
&lt;br /&gt;
[[Image:Terminalde.jpg]]&lt;br /&gt;
&lt;br /&gt;
Das geöffnete Terminal sieht dann folgendermaßen aus:&lt;br /&gt;
&lt;br /&gt;
[[Image:Terminalde2.jpg]]&lt;br /&gt;
&lt;br /&gt;
===Sudo===&lt;br /&gt;
Rootrechte erlangen sie über den &amp;quot;Sudo&amp;quot;-Befehl&lt;br /&gt;
 &lt;br /&gt;
''Den nächsten Befehl als root ausführen''&lt;br /&gt;
 xinux@zero:~$ sudo cat /etc/shadow&lt;br /&gt;
 [sudo] password for xinux:&lt;br /&gt;
&lt;br /&gt;
''Eine komplette Sitzung als root starten''&lt;br /&gt;
 xinux@zero:~$ sudo -i&lt;br /&gt;
 [sudo] password for xinux:&lt;br /&gt;
 root@zero:~#&lt;br /&gt;
&lt;br /&gt;
===Virtuelle Konsolen===&lt;br /&gt;
&lt;br /&gt;
In die Virtuelle Konsole gelangen sie über &amp;quot;STRG+ALT+(F1-F6)&amp;quot;.&lt;br /&gt;
Sie funktioniert wie ein ganz normales Terminal, und mit &amp;quot;ALT+F7&amp;quot;&lt;br /&gt;
gelangen sie wieder zurück auf die grafische Benutzeroberfläche&lt;br /&gt;
&lt;br /&gt;
===Abmelden===&lt;br /&gt;
&lt;br /&gt;
Abmelden können Sie sich wieder über das Startmenu unter:&lt;br /&gt;
&lt;br /&gt;
[[Image:Logout.jpg]]&lt;br /&gt;
&lt;br /&gt;
Fals sie nur einzelne Sitzungen in einem der Terminals oder &lt;br /&gt;
den Virtuellen Konsolen Abmelden wollen benutzen sie dazu den Befehl: &amp;quot;exit&amp;quot;&lt;br /&gt;
&lt;br /&gt;
===Herunterfahren===&lt;br /&gt;
&lt;br /&gt;
Das Herunterfahren funktioniert auf dem selben Weg.&lt;br /&gt;
&lt;br /&gt;
Entweder sie Benutzen wieder das Startmenü und benutzen diesmal den &amp;quot;Ausschalten ...&amp;quot; Knopf,&lt;br /&gt;
&lt;br /&gt;
Oder sie geben den äquivalenten &amp;quot;shutdown&amp;quot;-Befehl in einem Terminal bzw. der virtuellen Konsole ein.&lt;br /&gt;
&lt;br /&gt;
Allerdings müssen sie dazu als Administrator angemeldet sein s. &amp;quot;Sudo&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Wenn Sie den &amp;quot;shutdown&amp;quot;-Befehl benutzen wollen muss hinter den Befehl&lt;br /&gt;
&lt;br /&gt;
eine Zeitangabe in Minuten oder das wort &amp;quot;now&amp;quot; für sofortiges Ausschalten hinzugefügt werden:&lt;br /&gt;
&lt;br /&gt;
 xinux@zero:~$ sudo -i&lt;br /&gt;
 root@zero:~# shutdown 60&lt;br /&gt;
 &lt;br /&gt;
 Broadcast message from xinux@zero &lt;br /&gt;
         (/dev/pts/3) at 14:29 ...&lt;br /&gt;
 &lt;br /&gt;
 The system is going down for maintenance in 60 minutes!&lt;br /&gt;
&lt;br /&gt;
Sollten sie den Befehl widerrufen wollen dann drücken sie &amp;quot;STRG+C&amp;quot;,&lt;br /&gt;
&lt;br /&gt;
in dem Terminal in dem der shutdown Befehl gestartet wurde,&lt;br /&gt;
&lt;br /&gt;
oder geben sie den &amp;quot;shutdown&amp;quot;-Befehl zusammen mit der Abbruchoption &amp;quot;-c&amp;quot; in einem anderen Terminal ein:&lt;br /&gt;
&lt;br /&gt;
 root@zero:~# shutdown -c&lt;br /&gt;
&lt;br /&gt;
 shutdown: Shutdown cancelled&lt;br /&gt;
 root@zero:~# &lt;br /&gt;
&lt;br /&gt;
Wenn Sie den Rechner Neustarten möchten gibt es dazu die Option &amp;quot;-r&amp;quot; für den &amp;quot;shutdown&amp;quot;-Befehl&lt;br /&gt;
&lt;br /&gt;
oder den &amp;quot;reboot&amp;quot;-Befehl die beide auch als root ausgeführt werden müssen:&lt;br /&gt;
&lt;br /&gt;
 xinux@zero:~$ sudo -i&lt;br /&gt;
 [sudo] password for xinux: &lt;br /&gt;
 root@zero:~# shutdown -r now&lt;br /&gt;
&lt;br /&gt;
 root@zero:~# reboot&lt;br /&gt;
&lt;br /&gt;
===&amp;quot;man&amp;quot;===&lt;br /&gt;
&lt;br /&gt;
Programm zum Einsehen der Online-Manuals&lt;br /&gt;
&lt;br /&gt;
Die Manuals sind in folgende Sektionen unterteilt:&lt;br /&gt;
# Ausführbare Programme oder Shellbefehle&lt;br /&gt;
# Systemaufrufe (Kernelfunktionen)&lt;br /&gt;
# Bibliotheksaufrufe (Funktionen in System-Bibliotheken)&lt;br /&gt;
# Spezielle Dateien (gewöhnlich in /dev)&lt;br /&gt;
# Dateiformate und Konventionen, z. B. /etc/passwd&lt;br /&gt;
# Spiele&lt;br /&gt;
# Makropakete und Konventionen, z. B. man(7), groff(7)&lt;br /&gt;
# Systemadministrationsbefehle (in der Regel nur für root)&lt;br /&gt;
# Kernelroutinen [Nicht Standard]&lt;br /&gt;
&lt;br /&gt;
Aufruf eines Manuals erfolgt durch ''man kommando''&lt;br /&gt;
Beendet wird durch Drücken des Buchstabens q&lt;br /&gt;
Gesucht wird vorwärts durch Eingabe eines /suchausdruck&lt;br /&gt;
Gesucht wird rückwärts durch Eingabe eines ?suchausdruck&lt;br /&gt;
&lt;br /&gt;
Beispiele:&lt;br /&gt;
&lt;br /&gt;
      man passwd        Anschauen der Manualseite zum Programm passwd&lt;br /&gt;
      man 5 passwd      Anschauen der Manualseite zur Datei /etc/passwd&lt;br /&gt;
      man -a passwd     Anschauen aller Manualseiten zu passwd&lt;br /&gt;
      man -k passwd     Durchsucht die Kurzbeschreibungen der Manualseite&lt;br /&gt;
                        nach passwd und gibt alle Treffer aus&lt;br /&gt;
      man -f passwd      Gibt alle gefunden Kurzbescheibungen zu passwd aus&lt;br /&gt;
      man -L en passwd Gibt englische Manualseiten aus&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Was geht vor auf meinem System? (date,who)===&lt;br /&gt;
&lt;br /&gt;
Das Kommando date dient zur Abfrage von Datum und Uhrzeit.&lt;br /&gt;
&lt;br /&gt;
 xinux@zero:~ &amp;gt; date&lt;br /&gt;
 Fre Mär 16 16:35:03 CET 2001&lt;br /&gt;
&lt;br /&gt;
oder auch Anzeige der Grennwich Zeit:&lt;br /&gt;
&lt;br /&gt;
 xinux@zero:~ &amp;gt; date -u&lt;br /&gt;
 Fre Mär 16 15:35:34 UTC 2001&lt;br /&gt;
&lt;br /&gt;
 xinux@zero:~ &amp;gt; date -u &amp;quot;+%X&amp;quot;&lt;br /&gt;
 15:37:19&lt;br /&gt;
&lt;br /&gt;
 xinux@zero:~ &amp;gt; date -u &amp;quot;+%x&amp;quot;&lt;br /&gt;
 01/15/02&lt;br /&gt;
&lt;br /&gt;
who zeigt alle angemeldeten Benutzer an&lt;br /&gt;
&lt;br /&gt;
 thomas@cardassia:~ &amp;gt; who&lt;br /&gt;
 thomas             tty1 Feb 27 16:39&lt;br /&gt;
 thomas             tty2 Mar 2 17:08&lt;br /&gt;
 tina               tty6 Mar 16 16:38&lt;br /&gt;
&lt;br /&gt;
Mit `who --help' bekommen Sie mehr Informationen.&lt;br /&gt;
&lt;br /&gt;
 thomas@cardassia:~ &amp;gt; who --help&lt;br /&gt;
&lt;br /&gt;
Benutzung: who [OPTION]... [ DATEI | ARG1 ARG2 ]&lt;br /&gt;
&lt;br /&gt;
 -H, --heading             print line of column headings&lt;br /&gt;
 -i, -u, --idle            add user idle time as HOURS:MINUTES, . or old&lt;br /&gt;
 -l, --lookup              attempt to canonicalize hostnames via DNS&lt;br /&gt;
 -m                        only hostname and user associated with stdin&lt;br /&gt;
 -q, --count               all login names and number of users logged on&lt;br /&gt;
 -s                        (ignored)&lt;br /&gt;
 -T, -w, --mesg            add user's message status as +, - or ?&lt;br /&gt;
     --message             same as -T&lt;br /&gt;
     --writable            same as -T&lt;br /&gt;
     --help                display this help and exit&lt;br /&gt;
     --version             output version information and exit&lt;br /&gt;
&lt;br /&gt;
==Das UNIX-Dateisystem==&lt;br /&gt;
===Verzeichnisbaum===&lt;br /&gt;
&lt;br /&gt;
[[Image:vztree.jpg]]&lt;br /&gt;
&lt;br /&gt;
Das Betriebssystem UNIX besitzt ein hierarchisches Dateisystem. Es besteht aus:&lt;br /&gt;
* Dateien (Files)&lt;br /&gt;
Dateien speichern Informationen (Text, Bilder, Sound, Videos, Programme) und&lt;br /&gt;
werden über den Dateinamen angesprochen.&lt;br /&gt;
&lt;br /&gt;
* Verzeichnissen (Directories, Kataloge)&lt;br /&gt;
Verzeichnisse besitzen ebenfalls einen Namen und dienen zur Ordnung des&lt;br /&gt;
Dateisystems. Ein Verzeichnis kann Dateien und Unterverzeichnisse&lt;br /&gt;
(Subdirectories) enthalten. Das oberste Verzeichnis im Dateisystem heisst&lt;br /&gt;
Rootverzeichnis oder kurz Root und wird durch / (sprich: slash)&lt;br /&gt;
gekennzeichnet.&lt;br /&gt;
&lt;br /&gt;
Im Gegensatz zu Windows kennt UNIX keine Laufwerke.&lt;br /&gt;
Das obige Bild zeigt ein typisches UNIX-Dateisystem.&lt;br /&gt;
Unterhalb des Rootverzeichnisses befinden sich eine Vielzahl vonVerzeichnissen.&lt;br /&gt;
&lt;br /&gt;
===Wichtige Verzeichnisse===&lt;br /&gt;
&lt;br /&gt;
• '''Homeverzeichnis'''&lt;br /&gt;
&lt;br /&gt;
das Verzeichnis, in dem man sich unmittelbar nach dem Anmelden befindet. Das&lt;br /&gt;
Homeverzeichnis wird vom Systemverwalter eingerichtet; jeder Anwender&lt;br /&gt;
besitzt ein festes Homeverzeichnis. z.B. /home/hans&lt;br /&gt;
&lt;br /&gt;
~ (Tilde) bzw. $HOME (Shellvariable) kennzeichnen das Homeverzeichnis.&lt;br /&gt;
&lt;br /&gt;
• '''Aktuelles Verzeichnis'''&lt;br /&gt;
&lt;br /&gt;
Verzeichnis, in dem man sich aktuell befindet.&lt;br /&gt;
Das aktuelle Verzeichnis wird mit dem Befehl cd (change directory) oder per&lt;br /&gt;
Mausklick verändert.&lt;br /&gt;
Ein einfacher Punkt . kennzeichnet das aktuelle Verzeichnis.&lt;br /&gt;
&lt;br /&gt;
• '''Elternverzeichnis'''&lt;br /&gt;
&lt;br /&gt;
Verzeichnis unmittelbar oberhalb des aktuellen Verzeichnisses.&lt;br /&gt;
Jedes Verzeichnis ausser / besitzt genau ein Elternverzeichnis.&lt;br /&gt;
Zwei Punkte .. kennzeichnen das Elternverzeichnis (abhängig vom aktuellen&lt;br /&gt;
VZ).&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Absoluter Pfadname:===&lt;br /&gt;
&lt;br /&gt;
Beschreibt ausgehend vom Rootverzeichnis den Weg zum Zielverzeichnis oder zur&lt;br /&gt;
Zieldatei. (Welche Verzeichnisse müssen ausgehend von / durchlaufen werden, um&lt;br /&gt;
zum Ziel zu kommen?) Ein absoluter Pfadname beginnt immer mit / .&lt;br /&gt;
&lt;br /&gt;
===Relativer Pfadname:===&lt;br /&gt;
&lt;br /&gt;
Beschreibt ausgehend vom aktuellen Verzeichnis den Weg zum Zielverzeichnis&lt;br /&gt;
oder zur Zieldatei; ein relativer Pfadname beginnt nicht mit / .&lt;br /&gt;
/home/suxer&lt;br /&gt;
absoluter Pfadname für das Verzeichnis sub1 im Homeverzeichnis von suxer&lt;br /&gt;
&lt;br /&gt;
===Verzeichnisstruktur===&lt;br /&gt;
&lt;br /&gt;
 /bin         Kommandos die beim starten benötigt werden (Zugriff hat jeder)&lt;br /&gt;
 /sbin        Wichtige System-Programme (In der Regel root vorberhalten)&lt;br /&gt;
 /boot        Hier findet man die Dateien des Bootmanagers und des Kernel.&lt;br /&gt;
 /dev         In diesem Verzeichnis stehen die Gerätedateien (Devices),&lt;br /&gt;
 /home        Alle Heimatverzeichnisse der Nutzer findet man hier.&lt;br /&gt;
 /lib         Beim Systemstart benötigten Bibliotheken und Modules stehen hier.&lt;br /&gt;
 /mnt         Mountpunkt für temporäre Partitionen&lt;br /&gt;
 /opt         Software, die nicht Installationsumfang von Linux gehören.&lt;br /&gt;
 /root        Heimatverzeichnis des Administrators.&lt;br /&gt;
 /tmp         Temporäre Dateien können hier abgelegt werden&lt;br /&gt;
 /usr         statische Dateien (kann read-only gemountet sein)&lt;br /&gt;
 /var         variable Dateien (muss beschreibar sein )&lt;br /&gt;
 /etc         Konfiguartionsdateien und Startscripte&lt;br /&gt;
 /proc        Virtuelles Dateisystem -&amp;gt; repräsentiert den Kernel&lt;br /&gt;
&lt;br /&gt;
===Unterverzeichnisse von /usr===&lt;br /&gt;
&lt;br /&gt;
 sbin         Programme für root die beim Start nicht benötigt werden&lt;br /&gt;
 bin          Programme für alle die beim Start nicht benötigt werden&lt;br /&gt;
 X11R6        Dateien des X-Window-Sytems&lt;br /&gt;
 bin          Ausführbare Programme&lt;br /&gt;
 doc          Dokumentationen&lt;br /&gt;
 etc          Konfigurationsdateien&lt;br /&gt;
 games        Spiele&lt;br /&gt;
 include      Headerdateien für C-Programme&lt;br /&gt;
 local        Pakete die nicht zur Distribution gehören ähnlich /opt&lt;br /&gt;
 share        Pakete die von mehreren Paketen genutzt werden&lt;br /&gt;
 share/man    Die Manualpages&lt;br /&gt;
 share/info   Seiten des Infosystems&lt;br /&gt;
 share/doc    Dokumentationen&lt;br /&gt;
 src          Sources von Programmen (Kernel und andere)&lt;br /&gt;
&lt;br /&gt;
===Unterverzeichnisse von /var===&lt;br /&gt;
&lt;br /&gt;
 cache        Zwischenspreicher für Progammes&lt;br /&gt;
 games        Variable Daten der Games (Scores etc...)&lt;br /&gt;
 lock         Sperrdateien&lt;br /&gt;
 log          Die Logdateien (wichtiges Verzeichnis für Admins)&lt;br /&gt;
 mail         Das Mailsystem&lt;br /&gt;
 run          Dateien zu laufemdem Prozessen&lt;br /&gt;
 spool        Spooldateien (z.B. für das Drucksystem&lt;br /&gt;
 state        Statusinfos&lt;br /&gt;
 tmp          Wie /tmp eventuell nicht auf root Partion&lt;br /&gt;
&lt;br /&gt;
==Einfache Komandos==&lt;br /&gt;
===cd: Wechseln des Arbeitsverzeichnis===&lt;br /&gt;
&lt;br /&gt;
Um festzustellen in welchem Verzeichnis man sich befindet, sollte man den&lt;br /&gt;
Befehl &amp;quot;pwd&amp;quot; benutzen,&lt;br /&gt;
&lt;br /&gt;
und mit dem Befehl &amp;quot;cd&amp;quot; kann man zwischen den Verzeichnissen wechseln:&lt;br /&gt;
&lt;br /&gt;
Wechsele ins homeverzeichnis von Xinux&lt;br /&gt;
&lt;br /&gt;
 xinux@zero:~$ cd /home/xinux/&lt;br /&gt;
 xinux@zero:~$ pwd&lt;br /&gt;
 /home/xinux&lt;br /&gt;
&lt;br /&gt;
cd ~ -&amp;gt; wechsele ins jeweilige Homeverzeichnis&lt;br /&gt;
&lt;br /&gt;
cd .. -&amp;gt; wechsele ein Verzeichnis höher&lt;br /&gt;
&lt;br /&gt;
cd ../verzeichnis -&amp;gt; wechsele in eine paralleles Verzeichnis &amp;lt;- (ist eine relative Pfadangabe !)&lt;br /&gt;
&lt;br /&gt;
cd - -&amp;gt; wechsele in das Verzeichnis, in dem vorher gearbeitet wurde.&lt;br /&gt;
&lt;br /&gt;
Mit cd / wechselt man in das Wurzelverzeichnis.&lt;br /&gt;
&lt;br /&gt;
 xinux@zero:/var/log$ cd /&lt;br /&gt;
 xinux@zero:/$ pwd&lt;br /&gt;
 /&lt;br /&gt;
&lt;br /&gt;
===ls: Listing===&lt;br /&gt;
&lt;br /&gt;
Den Inhalt von Verzeichnissen kann man sich mit dem Befehl &amp;quot;ls&amp;quot; anzeigen lassen&lt;br /&gt;
wobei &amp;quot;ls&amp;quot; eine Vielzahl von Optionen besitzt:&lt;br /&gt;
&lt;br /&gt;
 ls                                  standard&lt;br /&gt;
 ls -l                               langes listing&lt;br /&gt;
 ls -a                               alle Dateien&lt;br /&gt;
 ls -i                               mit Inode&lt;br /&gt;
 ls -h                               gut lesbare Dateigröße&lt;br /&gt;
 ls -d                               Verzechnis wird angezeigt, nicht der Inhalt&lt;br /&gt;
 ls -L                               sortiert nach Größe&lt;br /&gt;
 ls -t                               sortiert nach Datum&lt;br /&gt;
 ls -F                               mit nützlichem Anhang&lt;br /&gt;
&lt;br /&gt;
 xinux@zero:/$ ls -l /var/log/messages&lt;br /&gt;
 -rw-r----- 1 syslog adm 2296 2009-06-16 10:05 /var/log/messages&lt;br /&gt;
&lt;br /&gt;
===more: Seitenweises Anzeigen von Seiten===&lt;br /&gt;
 root@zero:~# more /var/log/messages&lt;br /&gt;
 ...&lt;br /&gt;
&lt;br /&gt;
===head: erste Zeilen anzeigen===&lt;br /&gt;
Erste 10 Zeilen anzeigen&lt;br /&gt;
 root@zero:~# head /var/log/messages&lt;br /&gt;
 Jun 15 12:37:08 zero syslogd 1.5.0#5ubuntu3: restart.&lt;br /&gt;
 Jun 15 12:38:43 zero kernel: [  830.065036] mtrr: your processor doesn't support write-combining&lt;br /&gt;
 Jun 15 12:46:05 zero pulseaudio[4817]: pid.c: Stale PID file, overwriting.&lt;br /&gt;
 Jun 15 13:05:24 zero -- MARK --&lt;br /&gt;
 ...&lt;br /&gt;
&lt;br /&gt;
Erste zwei Zeilen anzeigen&lt;br /&gt;
 root@zero:~# head -n 2 /var/log/messages&lt;br /&gt;
 Jun 15 12:37:08 zero syslogd 1.5.0#5ubuntu3: restart.&lt;br /&gt;
 Jun 15 12:38:43 zero kernel: [  830.065036] mtrr: your processor doesn't support write-combining&lt;br /&gt;
&lt;br /&gt;
===tail: letzte Zeilen anzeigen===&lt;br /&gt;
 &lt;br /&gt;
 root@zero:~# tail /var/log/syslog&lt;br /&gt;
 ...&lt;br /&gt;
 Jun 19 11:19:35 zero -- MARK --&lt;br /&gt;
 Jun 19 11:39:35 zero -- MARK --&lt;br /&gt;
 Jun 19 11:59:36 zero -- MARK --&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Letze 5 Zeilen anzeigen&lt;br /&gt;
 root@zero:~# tail -n 5 /var/log/auth.log&lt;br /&gt;
 Jun 18 14:30:01 zero CRON[12040]: pam_unix(cron:session): session closed for user root&lt;br /&gt;
 Jun 18 14:39:01 zero CRON[12191]: pam_unix(cron:session): session opened for user root by (uid=0)&lt;br /&gt;
 Jun 18 14:39:01 zero CRON[12191]: pam_unix(cron:session): session closed for user root&lt;br /&gt;
 Jun 18 14:40:01 zero CRON[12237]: pam_unix(cron:session): session opened for user root by (uid=0)&lt;br /&gt;
 Jun 18 14:40:01 zero CRON[12237]: pam_unix(cron:session): session closed for user root&lt;br /&gt;
&lt;br /&gt;
Letze Zeilen anzeigen und fortlaufend aktualisieren&lt;br /&gt;
 root@zero:~# tail -f /var/log/syslog&lt;br /&gt;
 ...&lt;br /&gt;
&lt;br /&gt;
===mkdir: Ein neues Verzeichnis erstellen===&lt;br /&gt;
&lt;br /&gt;
 mkdir        verzeichnis&lt;br /&gt;
Erstellt ein Verzeichnis im working directory (wd)&lt;br /&gt;
&lt;br /&gt;
 mkdir  -p    ver1/ver2&lt;br /&gt;
Erstellt ein Verzeichnis ver2 unterhalb von ver1&lt;br /&gt;
wenn ver1 nicht existiert wird es erstellt&lt;br /&gt;
&lt;br /&gt;
 mkdir -m 753 ver1&lt;br /&gt;
Es wird das Verzeichnis ver1 erstellt mit der mask 753&lt;br /&gt;
&lt;br /&gt;
 mkdir -v     ver1&lt;br /&gt;
Geschwätzige Ausgabe :)&lt;br /&gt;
&lt;br /&gt;
===Zum Löschen von leeren Verzeichnissen wird rmdir benutzt===&lt;br /&gt;
&lt;br /&gt;
 rmdir           ver1&lt;br /&gt;
Löscht das leere Verzeichnis ver1&lt;br /&gt;
&lt;br /&gt;
 rmdir -v        ver1&lt;br /&gt;
Löscht das leere Verzeichnis ver1 und ist geschwätzig&lt;br /&gt;
&lt;br /&gt;
 rmdir -p        /ver1/ver2/ver3&lt;br /&gt;
Löscht das Verzeichnis ver3; wenn dadurch ver2 ein leeres&lt;br /&gt;
Verzeichnis wird, wird dieses auch gelöscht , wenn ver1&lt;br /&gt;
dadurch ein leeres Verzeichnis wird, wird auch dieses gelöscht.&lt;br /&gt;
&lt;br /&gt;
===touch Verändern des Zeitstempels===&lt;br /&gt;
&lt;br /&gt;
Mit touch können wir eine neue leere Datei erzeugen (das ist nicht der eigentliche&lt;br /&gt;
Zweck von touch, eigentlich wird der Zeitstempel geändert)&lt;br /&gt;
&lt;br /&gt;
 touch            dateiname&lt;br /&gt;
&lt;br /&gt;
===Kopieren=== &lt;br /&gt;
cp ist das Kommando um Dateien zu kopieren &lt;br /&gt;
&lt;br /&gt;
Eine Kopie von dat1 mit dem Namen dat2 erstellen:&lt;br /&gt;
&lt;br /&gt;
 xinux@zero:~$ cp dat1 dat2&lt;br /&gt;
&lt;br /&gt;
Eine Kopie von dat1 ins Verzeichnis ver2 erstellen:&lt;br /&gt;
&lt;br /&gt;
 xinux@zero:~$ cp dat1 ver2/&lt;br /&gt;
 &lt;br /&gt;
Eine Kopie erstellen mit ausführlicher Anzeige:&lt;br /&gt;
&lt;br /&gt;
 xinux@zero:~$ cp -v dat1 dat2&lt;br /&gt;
 `dat1' -&amp;gt; `dat2'&lt;br /&gt;
&lt;br /&gt;
Eine Kopie erstellen mit Rückfrage fals etwas überschrieben wird:&lt;br /&gt;
&lt;br /&gt;
 xinux@zero:~$ cp -i dat1 dat2&lt;br /&gt;
 cp: overwrite `dat2'?&lt;br /&gt;
&lt;br /&gt;
Eine Kopie erstellen und die Rückfrage überbrücken:&lt;br /&gt;
&lt;br /&gt;
 xinux@zero:~$ cp -f dat1 dat2&lt;br /&gt;
&lt;br /&gt;
Eine Kopie von dat1 ins Verzeichnis ver2 erstellen fals keine neuere Version von dat1 vorliegt:&lt;br /&gt;
&lt;br /&gt;
 xinux@zero:~$ cp -u dat1 ver2/&lt;br /&gt;
&lt;br /&gt;
Eine Kopie erstellen fals ver2 auf dem selben Dateisystem wie dat1 liegt:&lt;br /&gt;
&lt;br /&gt;
 xinux@zero:~$ cp -x dat1 ver2/&lt;br /&gt;
&lt;br /&gt;
Eine Kopie von ver1, die als ver2 oder unter ver2 als ver1 gespeichert wird erstellen:&lt;br /&gt;
&lt;br /&gt;
 xinux@zero:~$ cp -r ver1/ ver2/&lt;br /&gt;
&lt;br /&gt;
Eine Kopie von einer Datei erstellen und ihre Attribute beibehalten:&lt;br /&gt;
&lt;br /&gt;
 xinux@zero:~$ cp -p sux1 sux2&lt;br /&gt;
&lt;br /&gt;
Eine Kopie erstellen bei der die Links erhalten bleiben:&lt;br /&gt;
&lt;br /&gt;
 xinux@zero:~$ cp -r ver1/ ver2/&lt;br /&gt;
&lt;br /&gt;
Eine Kopie erstellen zum Archivieren (-dpr):&lt;br /&gt;
&lt;br /&gt;
 xinux@zero:~$ cp -a ver1/ ver2/&lt;br /&gt;
&lt;br /&gt;
===rm: Löschen einer Datei===&lt;br /&gt;
&lt;br /&gt;
Um Dateien zu löschen, brauchen wir das Kommando &amp;quot;rm&amp;quot;:&lt;br /&gt;
&lt;br /&gt;
 rm               dat1        dat1 wird gelöscht&lt;br /&gt;
 rm         -i    dat1        dat1 wird nach Bestätigung gelöscht&lt;br /&gt;
 rm         -f    dat1        dat1 wird ohne Rückfragen gelöscht&lt;br /&gt;
 rm         -v    dat1        dat1 wird glöscht (geschwätzige Ausgabe)&lt;br /&gt;
 rm         -r    ver1        Löschen von nicht leeren Verzeichnissen&lt;br /&gt;
                              Achtung !!! Als root kann man sich damit Teile&lt;br /&gt;
                              oder sogar den gesamten Verzeichnisbaum&lt;br /&gt;
                              absägen !!!&lt;br /&gt;
&lt;br /&gt;
===mv: Verschieben===&lt;br /&gt;
&lt;br /&gt;
Mit dem Befehl &amp;quot;mv&amp;quot; werden Daten verschoben, folgendes gilt:&lt;br /&gt;
&lt;br /&gt;
 mv          dat1 dat2         &lt;br /&gt;
Die Datei dat1 wird in dat2 umbenannt&lt;br /&gt;
 mv          dat1 /ver1        &lt;br /&gt;
Die Datei dat1 wird nach /ver1 verschoben&lt;br /&gt;
&lt;br /&gt;
Die Parameter und ihre Bedeutung:&lt;br /&gt;
&lt;br /&gt;
      -i                      wenn eine Datei exisitiert wird vor dem&lt;br /&gt;
                              Überschreiben nachgefragt&lt;br /&gt;
      -v                      verbose (geschwätzig)&lt;br /&gt;
      -u                      nur neuere Daten werden bei Bedarf überschrieben&lt;br /&gt;
      -b                      wenn überschrieben werden soll, wird ein Backup&lt;br /&gt;
                              erstellt&lt;br /&gt;
      -S ENDUNG               das Backup bekommt die Endung ENDUNG&lt;br /&gt;
&lt;br /&gt;
===su Benutzer wechseln===&lt;br /&gt;
&lt;br /&gt;
 su -             &lt;br /&gt;
Wechsel zum Rootaccount, wie wenn dieser sich neu anmelden würde. (Bsp: su -)&lt;br /&gt;
&lt;br /&gt;
 su Benutzernamen &lt;br /&gt;
Wechsel der Identität zu Benutzer (gegebenenfalls Passwortabfrage)&lt;br /&gt;
&lt;br /&gt;
 su -c Kommando   &lt;br /&gt;
Kommando wird als rootaccount ausgeführt&lt;br /&gt;
&lt;br /&gt;
==Der Standard Editor vi==&lt;br /&gt;
Der vi ist der Standardeditor in der Unixwelt. Er ist in jedem Unix-Derivat&lt;br /&gt;
enthalten.&lt;br /&gt;
Der Editor hat zwar den schlechten Ruf umständlich zu bedienen zu sein, ist&lt;br /&gt;
jedoch sehr leistungsfähig und systemübergreifend verfügbar. Beim vi handelt es&lt;br /&gt;
sich um einen rein textorientierten Editor, der mittels eigener Kommandos&lt;br /&gt;
gesteuert wird.&lt;br /&gt;
&lt;br /&gt;
Der Editor VIM ist eine weitere Verbesserung von VI und leichter zu bedienen.&lt;br /&gt;
Und unter Ubuntu/Debian mit &amp;quot;apt-get install vim&amp;quot; zu installieren.&lt;br /&gt;
&lt;br /&gt;
===Starten des Editors:===&lt;br /&gt;
&lt;br /&gt;
Der Editorstart erfolgt einfach durch die Eingabe des Kommandos vi mit dem&lt;br /&gt;
Dateinamen der zu editierenden Datei als Parameter.&lt;br /&gt;
Beispiel:        &lt;br /&gt;
 vi sux.txt&lt;br /&gt;
&lt;br /&gt;
===Die Betriebsmodi des vi:===&lt;br /&gt;
&lt;br /&gt;
Ein Umstand, der dem vi den Ruf der komplizierten Bedienbarkeit zugetragen hat,&lt;br /&gt;
sind die unterschiedlichen Betriebsmodi des Editors. Genauer gesagt verfügt der&lt;br /&gt;
vi über drei Betriebsmodi:&lt;br /&gt;
&lt;br /&gt;
====Kommandomodus:====&lt;br /&gt;
&lt;br /&gt;
Innerhalb dieses Modus werden die eingegebenen Zeichen direkt als Befehle des&lt;br /&gt;
Editors interpretiert und ausgeführt. Dabei gibt es weder ein Bereitschaftszeichen&lt;br /&gt;
(Prompt) noch ein Echo (Ausgabe). Der Kommandomodus ist der Modus, in dem&lt;br /&gt;
sich der vi direkt nach seinem Start befindet.&lt;br /&gt;
&lt;br /&gt;
====Zeilenmodus oder Exmodus:====&lt;br /&gt;
&lt;br /&gt;
Dieser Modus ist der einzige Modus mit einem eigenen Bereitschaftszeichen,&lt;br /&gt;
nämlich dem Doppelpunkt (:). Das Prompt wird ebenso wie die Befehlsausgaben&lt;br /&gt;
in der Statuszeile angezeigt.&lt;br /&gt;
&lt;br /&gt;
====Eingabemodus:====&lt;br /&gt;
&lt;br /&gt;
Der Eingabemodus ist derjenige, in welchem der zu bearbeitende Text bearbeitet&lt;br /&gt;
werden kann. Alle hier eingegebenen Zeichen werden als Text für die aktuelle&lt;br /&gt;
Datei interpretiert. Zwischen den unterschiedlichen Modi kann jederzeit&lt;br /&gt;
gewechselt werden. Von Kommandomodus gelangen Sie durch mehere Wege in&lt;br /&gt;
den Eingabemodus. Man kann durch folgende Aktionen wechslen&lt;br /&gt;
&lt;br /&gt;
{| border=1 cellpadding=2&lt;br /&gt;
|i&lt;br /&gt;
|Text vor der aktuellen Cursorposition einfügen&lt;br /&gt;
|-&lt;br /&gt;
|I&lt;br /&gt;
|Text am Zeilenanfang einfügen&lt;br /&gt;
|-&lt;br /&gt;
|a&lt;br /&gt;
|Text hinter der aktuellen Cursorposition einfügen&lt;br /&gt;
|-&lt;br /&gt;
|A&lt;br /&gt;
|Text am Zeilenende einfügen&lt;br /&gt;
|-&lt;br /&gt;
|o&lt;br /&gt;
|Unterhalb der aktuellen Zeile eine neue Zeile einfügen&lt;br /&gt;
|-&lt;br /&gt;
|O&lt;br /&gt;
|Oberhalb der aktuellen Zeile eine neue Zeile einfügen&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Durch das Drücken der ESC - Taste gelangt man in den Kommandomodus zurück.&lt;br /&gt;
&lt;br /&gt;
Im Kommandomodus können Sie durch den Text navigieren und auch den Text&lt;br /&gt;
selbst bearbeiten, z.B ausschneiden, kopieren usw. Dazu sind einige Kommandos&lt;br /&gt;
nötig, von denen die wichtigsten im Folgenden erläutert werden:&lt;br /&gt;
&lt;br /&gt;
 xinux@zero:/$ vi iwas.txt&lt;br /&gt;
&lt;br /&gt;
[[Image:vim.jpg]]&lt;br /&gt;
&lt;br /&gt;
===Benutzen des Kommandomodus===&lt;br /&gt;
====Steuerung des Cursors durch den Text====&lt;br /&gt;
&lt;br /&gt;
Mittels folgender Kommandos bewegt sich der Cursor durch den Text:&lt;br /&gt;
&lt;br /&gt;
{| border=1 cellpadding=2&lt;br /&gt;
|h&lt;br /&gt;
|Cursor ein Zeichen nach links&lt;br /&gt;
|-&lt;br /&gt;
|l&lt;br /&gt;
|Cursor ein Zeichen nach rechts&lt;br /&gt;
|-&lt;br /&gt;
|k&lt;br /&gt;
|Cursor eine Zeile nach oben&lt;br /&gt;
|-&lt;br /&gt;
|j&lt;br /&gt;
|Cursor eine Zeile nach unten&lt;br /&gt;
|-&lt;br /&gt;
|w&lt;br /&gt;
|Cursor ein Wort nach rechts&lt;br /&gt;
|-&lt;br /&gt;
|b&lt;br /&gt;
|Cursor ein Wort nach links&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Alle diese Kommandos können mit einem vorgestellten Wiederholungsfaktor&lt;br /&gt;
arbeiten. Der Befehl 3w verschiebt demnach den Cursor um 3 Wörter nach rechts.&lt;br /&gt;
&lt;br /&gt;
====Angaben zur Positionierung====&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{| border=1 cellpadding=2&lt;br /&gt;
|STRG+U&lt;br /&gt;
|1⁄2 Bildschirmseite nach oben&lt;br /&gt;
|-&lt;br /&gt;
|STRG+D&lt;br /&gt;
|1⁄2 Bildschirmseite nach unten&lt;br /&gt;
|-&lt;br /&gt;
|STRG+B&lt;br /&gt;
|1 Bildschirmseite nach oben&lt;br /&gt;
|-&lt;br /&gt;
|STRG+F&lt;br /&gt;
|1 Bildschirmseite nach unten&lt;br /&gt;
|-&lt;br /&gt;
|/Ausdruck&lt;br /&gt;
|Sucht den Ausdruck (vorwärts) Weitersuchen mit n , N&lt;br /&gt;
|-&lt;br /&gt;
|?Ausdruck&lt;br /&gt;
|Sucht den Ausdurck (rückwärts) Weitersuchen mit n , N&lt;br /&gt;
|-&lt;br /&gt;
|0&lt;br /&gt;
|Zeilenanfang&lt;br /&gt;
|-&lt;br /&gt;
|$&lt;br /&gt;
|Zeilenende&lt;br /&gt;
|-&lt;br /&gt;
|w&lt;br /&gt;
|Nächstes Wort&lt;br /&gt;
|-&lt;br /&gt;
|b&lt;br /&gt;
|Vorheriges Wort&lt;br /&gt;
|-&lt;br /&gt;
|fc&lt;br /&gt;
|Auf das Zeichen c springen. c steht für ein beliebiges Zeichen&lt;br /&gt;
|-&lt;br /&gt;
|G&lt;br /&gt;
|Letzte Zeile der Datei&lt;br /&gt;
|-&lt;br /&gt;
|ng&lt;br /&gt;
|n-te Zeile der Datei&lt;br /&gt;
|-&lt;br /&gt;
|H&lt;br /&gt;
|Anfang der Bildschirmseite&lt;br /&gt;
|-&lt;br /&gt;
|L&lt;br /&gt;
|Ende der Bildschirmseite&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
====Befehle zur Textbearbeitung -&amp;gt; Was soll geschehen====&lt;br /&gt;
&lt;br /&gt;
{| Border=1 Cellpadding=2&lt;br /&gt;
|x&lt;br /&gt;
|Löscht Zeichen&lt;br /&gt;
|-&lt;br /&gt;
|d&lt;br /&gt;
|Löschen und in den Puffer laden&lt;br /&gt;
|-&lt;br /&gt;
|c&lt;br /&gt;
|Ändern&lt;br /&gt;
|-&lt;br /&gt;
|y&lt;br /&gt;
|In den Puffer laden&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
====Weitere wichtige Befehle:====&lt;br /&gt;
&lt;br /&gt;
{| Border=1 Cellpadding=2&lt;br /&gt;
|p&lt;br /&gt;
|Aus dem Puffer einfügen&lt;br /&gt;
|-&lt;br /&gt;
|u&lt;br /&gt;
|Undo, macht den letzten Befehl rückgängig&lt;br /&gt;
|-&lt;br /&gt;
|STRG+R&lt;br /&gt;
|Redo, macht den letzten Undo rückgängig&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
===Zeilen- oder Exmodus===&lt;br /&gt;
&lt;br /&gt;
Wie schon erwähnt wird der Zeilen oder Exmodus durch einen : eingeleitet.&lt;br /&gt;
Es folgen einige Beispiele.&lt;br /&gt;
&lt;br /&gt;
Befehle zum Speichern und Beenden:&lt;br /&gt;
&lt;br /&gt;
 :w          Schreibt Datei&lt;br /&gt;
 :w Datei2   Schreibt eine Kopie in Datei2&lt;br /&gt;
 :w !        Schreibt Datei (übergehe Schreibschutz)&lt;br /&gt;
 :w ! Datei2 Schreibt eine Kopie in Datei2 (übergehe Schreibschutz)&lt;br /&gt;
 :q          Schließe Datei&lt;br /&gt;
 :q!         Schließe Datei (verwerfe Änderungen)&lt;br /&gt;
 :wq         Schreibe Datei und beende Editor&lt;br /&gt;
 :wq!        Schreibe Datei und beende Editor (übergehe Schreibschutz)&lt;br /&gt;
 :q!         Schließe Datei (verwerfe Änderungen)&lt;br /&gt;
 :h          Hilfe anzeigen, durch drücken von :q Beenden der Hilfe&lt;br /&gt;
 :e Datei3   Editiere Datei3&lt;br /&gt;
 :e #        Editere vorhergehende Datei&lt;br /&gt;
 :1,3co9     Kopiere von der ersten bis zu dritten Zeile &lt;br /&gt;
             und füge den Inhalt unterhalb der neunte Zeile ein.&lt;br /&gt;
&lt;br /&gt;
Interaktionen mit Unix:&lt;br /&gt;
&lt;br /&gt;
 :r Datei4   Fügt Inhalt der Datei4 nach dem Cursor ein&lt;br /&gt;
 :r ! Befehl Fügt Ausgabe des Befehls nach dem Cursor ein&lt;br /&gt;
 :! Befehl   Führt den Befehl aus&lt;br /&gt;
 :sh         Starte Subshell -&amp;gt; mit exit kehrt man wieder zurück&lt;br /&gt;
             Eingabemodus zurück&lt;br /&gt;
&lt;br /&gt;
====Ersetzen von Textteilen====&lt;br /&gt;
&lt;br /&gt;
Die grundsätzliche Syntax lautet:&lt;br /&gt;
&lt;br /&gt;
 :[Zeilennummer,Zeilennummer]s/Muster/Ersetzung/[gc]&lt;br /&gt;
&lt;br /&gt;
 :s/worf/kirn/              der erste worf wird in der aktuellen Zeile durch kirn ersetzt&lt;br /&gt;
 :1,9s/worf/kirn/g          von der 1. bis zur 9. Zeile werden alle worf durch kirn ersetzt&lt;br /&gt;
 :1,$s/worf/kirn/           von der ersten bis zur letzten Zeile ersetze ersten worf durch&lt;br /&gt;
                            kirn&lt;br /&gt;
 :.,$s/worf/kirn/g          von der aktuellen bis zur letzten Zeile ersetze alle worf durch&lt;br /&gt;
                            kirn&lt;br /&gt;
 :1,.s/worf/kirn/c          von der 1. bis zur aktuellen Zeile ersetze worf durch kirn, frage&lt;br /&gt;
                            aber nach&lt;br /&gt;
 :1,$s/^worf/kirn/          von der ersten bis zur letzten Zeile ersetze worf am&lt;br /&gt;
                            Zeilenanfang durch kirn&lt;br /&gt;
 :4,$s/worf$/kirn/          von der 4. bis zur letzten Zeile ersetze worf am Zeilenende&lt;br /&gt;
                            durch kirn&lt;br /&gt;
 :1,$s/^#//                 lösche alle Kommentarzeichen&lt;br /&gt;
 :1,$s/^.orf/kirn/           ersetze alles was am Zeilenanfang ein beliebiges Zeichen hat&lt;br /&gt;
                            gefolgt von einem orf durch kirn&lt;br /&gt;
 :1,$s/^[A-Z]orf/kirn/g     suche nach einem Großbuchstaben am Anfang der Zeile&lt;br /&gt;
                            gefolgt von einem orf und ersetze durch kirn&lt;br /&gt;
 :1,$s/^M[ae][iy]e*r/kirn/  suche alles, was am Anfang der Zeile ein großes M enthält,&lt;br /&gt;
                            gefolgt von einem a oder e , gefolgt von einem i oder y ,&lt;br /&gt;
                            gefolgt von einem e , welches 0 oder N mal vorkommen kann,&lt;br /&gt;
                            gefolgt von einem r und ersetze es durch kirn&lt;br /&gt;
&lt;br /&gt;
==Reguläre Ausdrücke==&lt;br /&gt;
&lt;br /&gt;
{| Border=1 Cellpadding=2&lt;br /&gt;
|c&lt;br /&gt;
|Ein einzelner Buchstabe passt auf sich selbst&lt;br /&gt;
|-&lt;br /&gt;
|.&lt;br /&gt;
|Ein Punkt passt auf jedes Zeichen außer auf das Zeilenende&lt;br /&gt;
|-&lt;br /&gt;
|*&lt;br /&gt;
|Das dem Operator * vorangehende Muster kann 0 oder öfter vorkommen&lt;br /&gt;
|-&lt;br /&gt;
|^&lt;br /&gt;
|(Caret) passt auf den Zeilenanfang&lt;br /&gt;
|-&lt;br /&gt;
|$&lt;br /&gt;
|Passt auf das Zeilenende&lt;br /&gt;
|-&lt;br /&gt;
|\&lt;br /&gt;
|Das folgende Sonderzeichen wird entwertet&lt;br /&gt;
|-&lt;br /&gt;
|[...]&lt;br /&gt;
|Passt auf &amp;quot;genau&amp;quot; eins in [...] angebenen Zeichen&lt;br /&gt;
|-&lt;br /&gt;
|[^...]&lt;br /&gt;
|Passt auf &amp;quot;genau&amp;quot; ein Zeichen welches nicht in [...] angebenen ist&lt;br /&gt;
|-&lt;br /&gt;
|\&amp;lt;&lt;br /&gt;
|Passt auf den Wortanfang&lt;br /&gt;
|-&lt;br /&gt;
|\&amp;gt;&lt;br /&gt;
|Passt auf das Wortende&lt;br /&gt;
|-&lt;br /&gt;
|\+&lt;br /&gt;
|Das dem Operator \+ vorangehende Muster kann 1 oder öfter vorkommen&lt;br /&gt;
|-&lt;br /&gt;
|&amp;amp;&lt;br /&gt;
|Setzt das gefunden Suchmuster ein&lt;br /&gt;
|-&lt;br /&gt;
|\(...\)&lt;br /&gt;
|Speichert den Text auf den das Suchmuster passt zur späteren Verwendung&lt;br /&gt;
|-&lt;br /&gt;
|\n&lt;br /&gt;
|Setzt das vorangehende, mit \(...\) Gefundene wieder ein&lt;br /&gt;
|-&lt;br /&gt;
|(...)&lt;br /&gt;
|Gruppiert Auswahlmöglichkeiten&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;nowiki&amp;gt;|&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
|Trennt Auswahlmöglichkeiten&lt;br /&gt;
|-&lt;br /&gt;
|\b&lt;br /&gt;
|Passt auf den Anfang oder das Ende eines Wortes&lt;br /&gt;
|-&lt;br /&gt;
|\B&lt;br /&gt;
|Symbolisiert den Raum innerhalb eines Wortes&lt;br /&gt;
|-&lt;br /&gt;
|\w&lt;br /&gt;
|Passt auf alle alphanumerischen Zeichen [A-Za-z0-9]&lt;br /&gt;
|-&lt;br /&gt;
|\W&lt;br /&gt;
|Passt auf alle nichtalphanumerischen Zeichen [^A-Za-z0-9]&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Die Rangfolge der Operatoren(von der höchsten zur niedrigsten)&lt;br /&gt;
:(, ), ?, *, + | .&lt;br /&gt;
&lt;br /&gt;
Die anderen Operatoren sind mit den anderen Buchstaben gleichrangig.&lt;br /&gt;
&lt;br /&gt;
===Beispiel zum Suchen===&lt;br /&gt;
&lt;br /&gt;
 Suchmuster               Passt auf&lt;br /&gt;
 ^Tuxer                   Tuxer am Zeilenanfang&lt;br /&gt;
 [tT]uxer                 Tuxer oder tuxer&lt;br /&gt;
 80[23]?86                8086, 80286 oder 80386&lt;br /&gt;
&lt;br /&gt;
===grep===&lt;br /&gt;
&lt;br /&gt;
Mit grep ist es möglich, in Dateien nach regulären Ausdrücken zu suchen. Wenn&lt;br /&gt;
eine Übereinstimmung gefunden wird, wird die komplette Zeile auf die&lt;br /&gt;
Standardausgabe geschrieben. grep kann auch von STDIN lesen.Es ist&lt;br /&gt;
empfehlenswert, sich anzugwöhnen ,das Suchmuster in Anführungszeichen zu&lt;br /&gt;
schreiben. Es gibt 3 Arten fgrep = fastgrep , grep und egrep egrep&lt;br /&gt;
&lt;br /&gt;
Beispiel:&lt;br /&gt;
&lt;br /&gt;
 root@zero:~# cat text&lt;br /&gt;
 quatsch&lt;br /&gt;
 quatsch&lt;br /&gt;
 quatsch&lt;br /&gt;
 wichtig&lt;br /&gt;
 quatsch&lt;br /&gt;
 root@zero:~# grep wichtig text&lt;br /&gt;
 wichtig&lt;br /&gt;
 root@zero:~# &lt;br /&gt;
&lt;br /&gt;
 -c                   meldet nur die Gesamtzahl der Fundstellen&lt;br /&gt;
 -v                   zeigt nur Zeilen, die »Ausdruck« nicht enthalten&lt;br /&gt;
 -i                   ignoriert Groß- und Kleinschreibung&lt;br /&gt;
 -l                    meldet nur Dateinamen mit Fundstellen&lt;br /&gt;
 -n                   listet Zeilennummern zu jeder Fundstelle&lt;br /&gt;
 -f                   Dateiname »Dateiname« enthält die Such-Ausdrücke&lt;br /&gt;
 -E                   ist ein erweiterter regulärer Ausdruck (egrep)&lt;br /&gt;
 -F                   (Muster, Ausdruck) ist ein Muster (String) (fgrep)&lt;br /&gt;
 -b                   listet auch die Position der Fundstellen&lt;br /&gt;
 -C    Anzahl         Anzahl von Zeilen werden nach der Fundstelle ausgegeben&lt;br /&gt;
 -B    Anzahl         Anzahl von Zeilen werden vor der Fundstelle ausgegeben&lt;br /&gt;
 -r                   Durchsucht Verzeichnisse rekursiv&lt;br /&gt;
&lt;br /&gt;
==Useridendifikation==&lt;br /&gt;
===/etc/passwd===&lt;br /&gt;
====Beschreibung====&lt;br /&gt;
passwd ist eine ASCII-Datei, die eine Liste der Benutzer des Systems und deren&lt;br /&gt;
Passwörter enthält. Die Passwortdatei sollte für alle Benutzer lesbar sein, was für&lt;br /&gt;
dieVerschlüsselung notwendig ist; aber nur vom Superuser beschreibbar. Wenn&lt;br /&gt;
Sie eine neue Kennung einrichten, lassen Sie das Passwort-Feld in der Datei frei&lt;br /&gt;
und benutzen Sie passwd(1), um dem System ein Passwort für die neue Kennung&lt;br /&gt;
mitzuteilen.&lt;br /&gt;
&lt;br /&gt;
Die Datei /etc/passwd enthält einen Eintrag pro Zeile mit dem Format:&lt;br /&gt;
login_name:passwd:UID:GID:user_name:directory:shell&lt;br /&gt;
====Die Bedeutung der Felder:====&lt;br /&gt;
# login_name Kennung des Benutzers auf dem System.&lt;br /&gt;
# password   Hier steht bei Shadowsystemen ein x. Die Passwörter sind in der Datei /etc/shadow&lt;br /&gt;
# UID        Die numerische Benutzernummer.&lt;br /&gt;
#  GID        Die numerische Gruppennummer des Benutzers.&lt;br /&gt;
# user_name Ein optionales Kommentarfeld, oft benutzt für den vollen Namen des Benutzers und weitere Informationen (Telefon, Raum-Nummer etc.).&lt;br /&gt;
# directory  Das Heimatverzeichnis $HOME des Benutzers.&lt;br /&gt;
# shell      Das Programm, das beim Einloggen gestartet werden soll (falls nicht nötig, benutzen Sie /bin/bash).&lt;br /&gt;
&lt;br /&gt;
===/etc/group===&lt;br /&gt;
====Beschreibung====&lt;br /&gt;
etc/group ist eine ASCII Datei, die Gruppen definiert, zu denen Benutzer&lt;br /&gt;
gehören. Es gibt nur einen Eintrag pro Zeile; jede Zeile hat folgendes Format:&lt;br /&gt;
         GruppenName:Passwort:GruppenKennung:BenutzerListe&lt;br /&gt;
Beschreibung der Felder:&lt;br /&gt;
#     GruppenName      Die Bezeichnung der Gruppe.&lt;br /&gt;
#     Passwort         Das (verschlüsselte) Gruppen-Passwort. Wenn dieses Feld leer ist, wird kein Passwort benötigt.&lt;br /&gt;
#     GruppenKennung Die numerische Identifikation der Gruppe.&lt;br /&gt;
#     BenutzerListe    Alle Namen der Mitglieder, getrennt durch Kommas.&lt;br /&gt;
&lt;br /&gt;
===/etc/shadow===&lt;br /&gt;
====Beschreibung====&lt;br /&gt;
shadow beinhaltet Informationen zu den verschlüsselten Passwörten, zu den&lt;br /&gt;
Benutzerzugängen und weitere Informationen zur Laufzeit der Passwörter.&lt;br /&gt;
 Name:Passwort:Letzte Änderung:Mintage:Maxtage:Warntage:Inaktiv:Ablauf&lt;br /&gt;
#    Der Loginname&lt;br /&gt;
#    verschlüsseltes Passwort &lt;br /&gt;
&amp;lt;nowiki&amp;gt;*&amp;lt;/nowiki&amp;gt; bedeutet Benutzer kann sich nicht einlogen&lt;br /&gt;
! bedeutet Benutzer hat kein Passwort gesetzt&lt;br /&gt;
#    Tage seit dem 1 Januar 1970 an dem das Passwort letztmals geändert wurde&lt;br /&gt;
#    Tage, die das Passwort behalten werden muss, bevor es wieder geändert werden kann&lt;br /&gt;
#     Die Anzahl der Tage, nach denen der Benutzer das Passwort wieder ändern muss&lt;br /&gt;
#    Anzahl der Tage bevor das Passwort abläuft und der Benutzer gewarnt wird&lt;br /&gt;
#    Wenn der Zugang diese Anzahl von Tagen nicht benutzt wird, wird der Zugang gesperrt&lt;br /&gt;
#    Tag seit dem 1 Januar 1970, an dem der Zugang gesperrt wird&lt;br /&gt;
#    Reserviertes Feld&lt;br /&gt;
&lt;br /&gt;
Die Datei sollte aus Sicherheitgründen nicht für einen normalen Benutzer lesbar&lt;br /&gt;
sein.&lt;br /&gt;
&lt;br /&gt;
==Programme zur Userverwaltung==&lt;br /&gt;
===useradd===&lt;br /&gt;
User anlegen&lt;br /&gt;
 root@zero:~# useradd -m -u 1011 -g users -G admin -d /home/erwin -s /bin/bash -c &amp;quot;Erwin Lehman&amp;quot;  erwin&lt;br /&gt;
{| border=1 cellpadding=2&lt;br /&gt;
|&amp;quot;-m&amp;quot;&lt;br /&gt;
|Lege Homedirectory an&lt;br /&gt;
|-&lt;br /&gt;
|&amp;quot;-u 1011&amp;quot;&lt;br /&gt;
|Userid wird zugeordnet&lt;br /&gt;
|-&lt;br /&gt;
|&amp;quot;-g users&amp;quot;&lt;br /&gt;
|Primäre Gruppe wird zugeordnet&lt;br /&gt;
|-&lt;br /&gt;
|&amp;quot;-G admin&amp;quot;&lt;br /&gt;
|Sekunbdäre Gruppe wird zugeordnet&lt;br /&gt;
|-&lt;br /&gt;
|&amp;quot;-d /home/erwin/&amp;quot;&lt;br /&gt;
|Name des Homedirectory&lt;br /&gt;
|-&lt;br /&gt;
|&amp;quot;-s /bin/bash&amp;quot;&lt;br /&gt;
|Bash wird zugeordnet&lt;br /&gt;
|- &lt;br /&gt;
|&amp;quot;-c Erwin Lehman&amp;quot;&lt;br /&gt;
|Kommentarfeld&lt;br /&gt;
|-&lt;br /&gt;
|&amp;quot;erwin&amp;quot; &lt;br /&gt;
|Name des Users&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Defaulteinstellungen anzeigen&lt;br /&gt;
 root@zero:~# useradd -D&lt;br /&gt;
 GROUP=100&lt;br /&gt;
 HOME=/home&lt;br /&gt;
 INACTIVE=-1&lt;br /&gt;
 EXPIRE=&lt;br /&gt;
 SHELL=/bin/sh&lt;br /&gt;
 SKEL=/etc/skel&lt;br /&gt;
 CREATE_MAIL_SPOOL=no&lt;br /&gt;
&lt;br /&gt;
Defaulteinstellungen ändern&lt;br /&gt;
 useradd -D -s /bin/bash&lt;br /&gt;
&lt;br /&gt;
Konfigurationsdatei&lt;br /&gt;
 root@zero:~# cat /etc/default/useradd &lt;br /&gt;
 SHELL=/bin/bash&lt;br /&gt;
 GROUP=100&lt;br /&gt;
 HOME=/home&lt;br /&gt;
 INACTIVE=-1&lt;br /&gt;
 EXPIRE=&lt;br /&gt;
 SKEL=/etc/skel&lt;br /&gt;
 CREATE_MAIL_SPOOL=no&lt;br /&gt;
&lt;br /&gt;
===usermod===&lt;br /&gt;
User modifizieren&lt;br /&gt;
 root@zero:~# usermod -l fritz -s /bin/sh -G admin,video erwin&lt;br /&gt;
{| border=1 cellpadding=2&lt;br /&gt;
|&amp;quot;-l fritz&amp;quot;&lt;br /&gt;
|Neuer Username&lt;br /&gt;
|-&lt;br /&gt;
|&amp;quot;-s /bin/sh&amp;quot;&lt;br /&gt;
|Neue Shell&lt;br /&gt;
|-&lt;br /&gt;
|&amp;quot;-G admin, video&amp;quot;&lt;br /&gt;
|Sekunbdäre Gruppen werden zugeordnet&lt;br /&gt;
|-&lt;br /&gt;
|&amp;quot;erwin&amp;quot; &lt;br /&gt;
|Name des Users&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
===userdel===&lt;br /&gt;
User inklusive Homedirectory löschen&lt;br /&gt;
 root@zero:~# userdel -r fritz&lt;br /&gt;
&lt;br /&gt;
===passwd===&lt;br /&gt;
Rootpasswort ändern&lt;br /&gt;
 root@zero:~# passwd &lt;br /&gt;
 Geben Sie ein neues UNIX Passwort ein:'''sysadm''' &lt;br /&gt;
 Geben Sie das neue UNIX Passwort erneut ein:'''sysadm''' &lt;br /&gt;
 passwd: Passwort erfolgreich geändert&lt;br /&gt;
&lt;br /&gt;
Passwort von tux ändern&lt;br /&gt;
 root@zero:~# passwd tux&lt;br /&gt;
 Geben Sie ein neues UNIX Passwort ein:'''suxer''' &lt;br /&gt;
 Geben Sie das neue UNIX Passwort erneut ein:'''suxer'''&lt;br /&gt;
 passwd: Passwort erfolgreich geändert&lt;br /&gt;
&lt;br /&gt;
Minimale und Maximale Gültigkeit des Passwortes von tux festlegen&lt;br /&gt;
 root@zero:~# passwd -n 5 -x 120 tux&lt;br /&gt;
&lt;br /&gt;
===groupadd===&lt;br /&gt;
 root@zero:~# groupadd -f -g 2001 xinuxer&lt;br /&gt;
{| border=1 cellpadding=2&lt;br /&gt;
|&amp;quot;-f&amp;quot;&lt;br /&gt;
|Überschreibe bestehende Gruppe&lt;br /&gt;
|-&lt;br /&gt;
|&amp;quot;-g 2001&amp;quot;&lt;br /&gt;
|GID der Gruppe&lt;br /&gt;
|-&lt;br /&gt;
|&amp;quot;xinuxer&amp;quot; &lt;br /&gt;
|Name des Gruppe&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==chmod==&lt;br /&gt;
Die Syntax des Befehls chmod lautet:&lt;br /&gt;
&lt;br /&gt;
'''chmod''' WerWieWas [,WerWieWas,.....] Dateiliste&lt;br /&gt;
&lt;br /&gt;
oder&lt;br /&gt;
&lt;br /&gt;
'''chmod''' Oktalzahl Dateiliste&lt;br /&gt;
&lt;br /&gt;
Durch WerWieWas bzw. Oktalzahl wird die Rechtetabelle definiert. Innerhalb von&lt;br /&gt;
WerWieWas darf es kein Leerzeichen geben. Wer bezeichnet den Benutzerkreis,&lt;br /&gt;
dem man Rechte gibt, Wie die Art, in der die Rechte gegeben werden und Was die&lt;br /&gt;
Rechte als solche. Im einzelnen können folgende Kürzel benutzt werden:&lt;br /&gt;
&lt;br /&gt;
Für Wer kann eines der folgenden Kürzel oder eine Kombination davon stehen:&lt;br /&gt;
 u                   (user) Rechte für den Dateibesitzer&lt;br /&gt;
 g                   (group) Rechte für die Gruppe&lt;br /&gt;
 o                   (others) Rechte für alle anderen Benutzer&lt;br /&gt;
 a                   (all) Rechte für alle Benutzer&lt;br /&gt;
Für Wie steht eines der folgenden Kürzel:&lt;br /&gt;
 +                   Die Rechte werden zu den vorhandenen zusätzlich vergeben&lt;br /&gt;
 -                   Die im Folgenden genannten Rechte werden entzogen&lt;br /&gt;
 =                   Die im Folgenden genannten Rechte ersetzen die bisherigen&lt;br /&gt;
Für Was steht eines der folgenden Kürzel:&lt;br /&gt;
 r                   (read) lesen&lt;br /&gt;
 w                   (write) schreiben&lt;br /&gt;
 x                   (execute) ausführen&lt;br /&gt;
oder diese Sonderformen&lt;br /&gt;
 s                   (usersbit) Programm läuft unter der UID des Besitzers&lt;br /&gt;
 s                   (groupsbit)Programm läuft unter der GID des GRUPPE&lt;br /&gt;
 t                   (stickybit) Dateien im Verzeichnis darf nur Besitzer löschen&lt;br /&gt;
&lt;br /&gt;
===Beispiel===&lt;br /&gt;
Setze für alle Schreib- und Leserecht&lt;br /&gt;
 xinux@zero:~$ chmod a=rw test &lt;br /&gt;
 xinux@zero:~$ ls -l test &lt;br /&gt;
 -rw-rw-rw- 1 xinux xinux 0 2009-06-16 12:01 test&lt;br /&gt;
 xinux@zero:~$ &lt;br /&gt;
&lt;br /&gt;
Erteile Besitzer Ausführungsrecht&lt;br /&gt;
 xinux@zero:~$ chmod u+x test ; ls -l test &lt;br /&gt;
 -rwxrw-rw- 1 xinux xinux 0 2009-06-16 12:01 test&lt;br /&gt;
 xinux@zero:~$ &lt;br /&gt;
&lt;br /&gt;
===chmod oktale Schreibweise===&lt;br /&gt;
 Specialrights        User           Group         Other&lt;br /&gt;
 usbit gsbit sticky    r    w   x     r   w   x     r   w   x&lt;br /&gt;
   1     1      1      1    1   1     1   1   1     1   1   1&lt;br /&gt;
   0     0      0      0    0   0     0   0   0     0   0   0&lt;br /&gt;
 Oktale Wertigkeit pro Recht&lt;br /&gt;
   4     2       1     4    2   1     4   2   1     4   2   1&lt;br /&gt;
&lt;br /&gt;
===Beispiele===&lt;br /&gt;
 xinux@zero:~$ chmod 751 test ; ls -l test&lt;br /&gt;
 -rwxr-x--x 1 xinux xinux 0 2009-06-16 12:01 test&lt;br /&gt;
 xinux@zero:~$ &lt;br /&gt;
&lt;br /&gt;
 xinux@zero:~$ chmod 4770 test ; ls -l test&lt;br /&gt;
 -rwsrwx--- 1 xinux xinux 0 2009-06-16 12:01 test&lt;br /&gt;
 xinux@zero:~$ &lt;br /&gt;
&lt;br /&gt;
 xinux@zero:~$ chmod 0 test ; ls -l test &lt;br /&gt;
 ---------- 1 xinux xinux 0 2009-06-16 12:01 test&lt;br /&gt;
&lt;br /&gt;
===chmod Optionen===&lt;br /&gt;
 -c   (changes) es werden nur die Dateien angezeigt, deren Zugriffsrechte tatsächlich verändert werden&lt;br /&gt;
 -f   (silent, quiet) Fehlermeldungen wegen fehlgeschlagener Änderungsversuche werden unterdrückt&lt;br /&gt;
 -v   (verbose) alle Aktionen werden angezeigt&lt;br /&gt;
 -R   (recursive) die Zugriffsrechte aller Dateien in den Unterverzeichnissen werden ebenfalls geändert&lt;br /&gt;
&lt;br /&gt;
Theoretisch sind alle Kombinationen der Zugriffsrechte denkbar, aber der&lt;br /&gt;
Eigentümer einer Datei darf diese immer lesen, selbst wenn das Lesebit nicht&lt;br /&gt;
gesetzt ist. Genauso macht es wenig Sinn, eine gewöhnliche Textdatei als&lt;br /&gt;
ausführbar zu setzen; die Shell wird damit nichts anfangen können. Ein x für ein&lt;br /&gt;
Verzeichnis gibt an, dass in dieses gewechselt werden kann.&lt;br /&gt;
&lt;br /&gt;
Rechte sind verbindlich&lt;br /&gt;
&lt;br /&gt;
Interessant ist auch ein Konstrukt folgender Art&lt;br /&gt;
 -rwx---rwx&lt;br /&gt;
&lt;br /&gt;
das angibt, dass mit der Datei alles angestellt werden kann, außer durch Nutzer der&lt;br /&gt;
Gruppe. Versucht irgend jemand, der nicht der Gruppe des Eigentümers angehört,&lt;br /&gt;
die Datei zu modifizieren, wird ihm dies gelingen, einem Gruppenmitglied bleibt&lt;br /&gt;
dies versagt, obwohl er ja gleichzeitig ein &amp;quot;Anderer&amp;quot; ist. D.h. die Rechte der&lt;br /&gt;
Gruppe sind verbindlicher, als die Rechte der anderen!&lt;br /&gt;
&lt;br /&gt;
===Bedeutungen der Zugriffsarten===&lt;br /&gt;
====Dateien====&lt;br /&gt;
* r: Der Inhalt der Datei kann gelesen und damit auch kopiert werden. &lt;br /&gt;
 root@zero:~# cat test&lt;br /&gt;
 Dies ist eine Testdatei&lt;br /&gt;
  &lt;br /&gt;
 root@zero:~# cp test backup&lt;br /&gt;
&lt;br /&gt;
* w: Der Inhalt der Datei darf verändert werden. Ob die Datei gelöscht werden kann ist&lt;br /&gt;
keine Eigenschaft der Datei, sondern des Verzeichnisses, indem sich die Datei befindet.&lt;br /&gt;
 root@zero:~# cat &amp;gt; test&lt;br /&gt;
 Hier steht jetzt was anderes&lt;br /&gt;
 ^C&lt;br /&gt;
 root@zero:~# cat test&lt;br /&gt;
 Hier steht jetzt was anderes&lt;br /&gt;
  &lt;br /&gt;
 xinux@zero:~$ ls -ld verzeichnis/&lt;br /&gt;
 dr-xr-xr-x 2 xinux xinux 4096 2009-06-18 11:16 verzeichnis/&lt;br /&gt;
 xinux@zero:~/verzeichnis$ rm text&lt;br /&gt;
 rm: Entfernen von „text“ nicht möglich: Permission denied&lt;br /&gt;
&lt;br /&gt;
* x: Ausführrecht für Programme und Skripte&lt;br /&gt;
 xinux@zero:~$ ./programm&lt;br /&gt;
 -bash: ./programm: Permission denied&lt;br /&gt;
 xinux@zero:~$ chmod +x programm&lt;br /&gt;
 xinux@zero:~$ ./programm&lt;br /&gt;
 Test&lt;br /&gt;
  test&lt;br /&gt;
&lt;br /&gt;
====Verzeichnisse====&lt;br /&gt;
* r: Die Einträge in dem Verzeichnis sind lesbar.&lt;br /&gt;
Leserecht von verzeichnis/ entziehen&lt;br /&gt;
 xinux@zero:~$ chmod a-r verzeichnis/&lt;br /&gt;
 xinux@zero:~$ ls verzeichnis/&lt;br /&gt;
 ls: Öffnen von Verzeichnis verzeichnis/ nicht möglich: Permission denied&lt;br /&gt;
Leserecht für Benutzer und Gruppe vergeben&lt;br /&gt;
 xinux@zero:~$ chmod a+r verzeichnis/&lt;br /&gt;
 xinux@zero:~$ ls verzeichnis/&lt;br /&gt;
 text&lt;br /&gt;
&lt;br /&gt;
* w: Die Einträge in dem Verzeichnis können geändert werden. &lt;br /&gt;
Neue Datei erstellen&lt;br /&gt;
 xinux@zero:~$ touch neu&lt;br /&gt;
 xinux@zero:~$ ls neu&lt;br /&gt;
 neu&lt;br /&gt;
&lt;br /&gt;
Datei löschen&lt;br /&gt;
 xinux@zero:~$ rm neu&lt;br /&gt;
 xinux@zero:~$ ls neu&lt;br /&gt;
 ls: Zugriff auf neu nicht möglich: No such file or directory&lt;br /&gt;
&lt;br /&gt;
* x: Der Name des Verzeichnisses kann in einem Pfadnamen erscheinen.&lt;br /&gt;
Verzeichnis ohne x Recht&lt;br /&gt;
 xinux@zero:~$ chmod a-x verzeichnis/&lt;br /&gt;
Wechseln in Verzeichnis mangels x-Recht nicht möglich&lt;br /&gt;
 xinux@zero:~$ cd verzeichnis/&lt;br /&gt;
 -bash: cd: verzeichnis/: Permission denied&lt;br /&gt;
x-Recht vergeben&lt;br /&gt;
 xinux@zero:~$ chmod a+x verzeichnis/&lt;br /&gt;
damit Wechsel in Verzeichnis möglich&lt;br /&gt;
 xinux@zero:~$ cd verzeichnis/&lt;br /&gt;
 xinux@zero:~/verzeichnis$ pwd&lt;br /&gt;
 /home/xinux/verzeichnis&lt;br /&gt;
&lt;br /&gt;
====umask====&lt;br /&gt;
Neue Dateien und Verzeichnisse werden mit ein und denselben Zufriffsrechten erzeugt.&lt;br /&gt;
 xinux@zero:~$ mkdir text&lt;br /&gt;
 xinux@zero:~$ touch textdat&lt;br /&gt;
 xinux@zero:~$ ls -ld text*&lt;br /&gt;
 drwxr-xr-x 2 xinux xinux 4096 2009-06-18 11:37 text&lt;br /&gt;
 -rw-r--r-- 1 xinux xinux    0 2009-06-18 11:37 textdat&lt;br /&gt;
&lt;br /&gt;
Zuständig für dieses Verhalten ist die sogenannte umask, die oft in der Datei&lt;br /&gt;
/etc/profile auf den Wert 022 voreingestellt ist. Zusätzlich wird noch eine&lt;br /&gt;
Maximalmaske benötigt, die sich für Verzeichnisse und andere Dateien&lt;br /&gt;
unterscheidet. Die bei der Erzeugung gesetzten Rechte entstehen nun, indem von&lt;br /&gt;
der Maximalmaske der durch die umask vorgegebene Wert subtrahiert wird:&lt;br /&gt;
&lt;br /&gt;
{| border=1 cellpadding=2&lt;br /&gt;
!&lt;br /&gt;
! Dateien&lt;br /&gt;
! Verzeichnisse&lt;br /&gt;
|-&lt;br /&gt;
| Systemvorgabe&lt;br /&gt;
| 666&lt;br /&gt;
| 777&lt;br /&gt;
|-&lt;br /&gt;
| -umask&lt;br /&gt;
| 022&lt;br /&gt;
| 022&lt;br /&gt;
|-&lt;br /&gt;
| Ergebnis&lt;br /&gt;
| 644&lt;br /&gt;
| 755&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
 xinux@zero:~$ grep umask /etc/profile&lt;br /&gt;
 umask 022&lt;br /&gt;
&lt;br /&gt;
==Gruppenzugehörigkeit==&lt;br /&gt;
===newgrp===&lt;br /&gt;
Ändert die Gruppenzugehörigkeit eines Benutzers auf die angegebene Gruppe. Wenn keine Gruppe angegeben wird, wird die &lt;br /&gt;
Anmeldegruppe des Benutzers verwendet. Die neue Gruppe wird anschließend fü Zugriffskontrollen verwendet.&lt;br /&gt;
&lt;br /&gt;
 newgrp Gruppenname&lt;br /&gt;
&lt;br /&gt;
 root@zero:~# newgrp hacker&lt;br /&gt;
 root@zero:~# id&lt;br /&gt;
 uid=0(root) gid=1006(hacker) Gruppen=0(root),1006(hacker)&lt;br /&gt;
&lt;br /&gt;
===chgrp===&lt;br /&gt;
Verändert die Besitzugehörigkeit zu der angegebenen Gruppe&lt;br /&gt;
&lt;br /&gt;
 chgrp [Optionen] Gruppe Datei(en)&lt;br /&gt;
&lt;br /&gt;
Optionen:&lt;br /&gt;
 -c Zeigt Veränderungen an&lt;br /&gt;
 -f Unterdrückt die meisten Fehlermeldungen&lt;br /&gt;
 -R Verändert Dateien und Verzeichnisse rekursiv&lt;br /&gt;
 -v Gibt geschwätzige Ausgabe aus.&lt;br /&gt;
&lt;br /&gt;
 root@zero:~# ls -l&lt;br /&gt;
 ...&lt;br /&gt;
 d-wx--x--x  3 root root 4096 2009-06-18 13:34 verzeichnis&lt;br /&gt;
 &lt;br /&gt;
 root@zero:~# chgrp -R xinux verzeichnis/&lt;br /&gt;
 root@zero:~# ls -l&lt;br /&gt;
 ...&lt;br /&gt;
 d-wx--x--x  3 root xinux 4096 2009-06-18 13:34 verzeichnis&lt;br /&gt;
&lt;br /&gt;
 xinux@zero:~$ cd /root/verzeichnis/&lt;br /&gt;
 xinux@zero:/root/verzeichnis$ pwd&lt;br /&gt;
 /root/verzeichnis&lt;br /&gt;
&lt;br /&gt;
===chown===&lt;br /&gt;
Ändert den Eigentümer von einer oder mehreren Dateien in den angegebenen Benutzer. &lt;br /&gt;
chown erlaubt ebenfalls das Ändern der Gruppeneigentümreschaft. Nur der aktuelle Eigentümer einer&lt;br /&gt;
Datei oder der Superuser (root) darf die Eigentumsverhältnisse ändern.&lt;br /&gt;
&lt;br /&gt;
 chown [Optionen] Benutzer(:Gruppe) Dateien&lt;br /&gt;
&lt;br /&gt;
Optionen:&lt;br /&gt;
 -c Gibt Informationen über die veränderten Dateien aus&lt;br /&gt;
 --dereference Symbolischen Links folgen&lt;br /&gt;
 -v Gibt Informationen über alle Dateien aus, die chown zu ändern versucht, egal, ob die Änderung erfolgt ist oder nicht&lt;br /&gt;
 -R Geht rekursiv durch alle Unterverzeichnisse und führt die Änderungen durch. &lt;br /&gt;
&lt;br /&gt;
 root@zero:~# chown -R xinux.xinux verzeichnis/&lt;br /&gt;
 root@zero:~# ls -l&lt;br /&gt;
 insgesamt 12&lt;br /&gt;
 drwx------ 13 root  root  4096 2009-04-21 15:11 profile&lt;br /&gt;
 --w-------  1 root  root     0 2009-06-18 11:13 test&lt;br /&gt;
 -rw-r--r--  1 root  root    40 2009-06-18 12:04 text&lt;br /&gt;
 drwxrwx--x  3 xinux xinux 4096 2009-06-18 13:39 verzeichnis&lt;br /&gt;
 &lt;br /&gt;
 root@zero:~# chown -R -c xinux.xinux verzeichnis/&lt;br /&gt;
 &lt;br /&gt;
 root@zero:~# chown -R -v xinux.xinux verzeichnis/&lt;br /&gt;
 Eigentümer von „verzeichnis/01“ als xinux:xinux erhalten&lt;br /&gt;
 Eigentümer von „verzeichnis/test“ als xinux:xinux erhalten&lt;br /&gt;
 Eigentümer von „verzeichnis/“ als xinux:xinux erhalten&lt;br /&gt;
&lt;br /&gt;
==Eingabe/Ausgabe==&lt;br /&gt;
Standardeingabe (0): Laufende Programme erwarten von hier ihre Eingaben (normalerweise handelt es sich um die Tastatur).&lt;br /&gt;
&lt;br /&gt;
Standardausgabe (1): Programme schreiben auf diese ihre Ausgaben (Bildschirm).&lt;br /&gt;
&lt;br /&gt;
Standardfehlerausgabe (2) : Fehlerausgaben landen hier (Bildschirm, aber nur die aktive Konsole).&lt;br /&gt;
&lt;br /&gt;
[[Bild:std.jpg]]&lt;br /&gt;
&lt;br /&gt;
===cat===&lt;br /&gt;
Das Programm cat liest von STDIN und gibt es STDOUT wieder aus&lt;br /&gt;
&lt;br /&gt;
Einlesen der Datei text&lt;br /&gt;
 root@zero:~# cat &amp;lt; text&lt;br /&gt;
 wichtig&lt;br /&gt;
&lt;br /&gt;
Schreiben in die Datei text, dies überschreibt den bisherigen Inhalt der Datei&lt;br /&gt;
 root@zero:~# cat &amp;gt; text&lt;br /&gt;
 sogar noch wichtiger &lt;br /&gt;
 &lt;br /&gt;
Ausgeben der Datei text&lt;br /&gt;
 root@zero:~# cat text &lt;br /&gt;
 sogar noch wichtiger&lt;br /&gt;
&lt;br /&gt;
Lesen aus der Datei text und schreiben in die Datei neuertext&lt;br /&gt;
 root@zero:~# cat &amp;lt; text &amp;gt; neuertext&lt;br /&gt;
 root@zero:~# cat neuertext&lt;br /&gt;
 sogar noch wichtiger&lt;br /&gt;
&lt;br /&gt;
Anhängen der Ausgabe von date an die Datei neuertext&lt;br /&gt;
 root@zero:~# date &amp;gt;&amp;gt; neuertext&lt;br /&gt;
 root@zero:~# cat neuertext&lt;br /&gt;
 sogar noch wichtiger&lt;br /&gt;
 Do 18. Jun 14:08:58 CEST 2009&lt;br /&gt;
&lt;br /&gt;
Umleiten des Standardfehlerkanals nach error&lt;br /&gt;
 root@zero:~# rm sux 2&amp;gt; error&lt;br /&gt;
 root@zero:~# more error&lt;br /&gt;
 rm: Entfernen von „sux“ nicht möglich: No such file or directory&lt;br /&gt;
&lt;br /&gt;
===Umleitungen===&lt;br /&gt;
Nacheinander auszuführende Kommandos&lt;br /&gt;
 root@zero:~# pwd; date&lt;br /&gt;
 /root&lt;br /&gt;
 Do 18. Jun 14:13:05 CEST 2009&lt;br /&gt;
 &lt;br /&gt;
Übergeben der Ausgabe von tail als Eingabe von grep mit Hilfe der Pipe &amp;quot;|&amp;quot;&lt;br /&gt;
 root@zero:~# tail /var/log/auth.log | grep xinux&lt;br /&gt;
 Jun 18 13:52:33 zero nss_wins[11433]: pam_unix(login:session): session closed for user xinux&lt;br /&gt;
&lt;br /&gt;
Übergeben der letzten 100 Zeilen von syslog als Eingabe von grep&lt;br /&gt;
 root@zero:~# tail /var/log/syslog -n 100 | grep error&lt;br /&gt;
 Jun 18 09:30:54 zero kernel: [154384.692135] end_request: I/O error, dev fd0, sector 0&lt;br /&gt;
 Jun 18 09:30:54 zero kernel: [154384.712137] end_request: I/O error, dev fd0, sector 0&lt;br /&gt;
&lt;br /&gt;
==tr==&lt;br /&gt;
tr ist ein Programm um Zeichen zu übersetzen. Dies betrifft nur die Ausgabe, die Datei selbst bleibt unverändert.&lt;br /&gt;
&lt;br /&gt;
Ersetzt Kleinbuchstaben durch Großbuchstaben aus der Datei text&lt;br /&gt;
 root@zero:~# tr &amp;quot;a-z&amp;quot; &amp;quot;A-Z&amp;quot; &amp;lt; text&lt;br /&gt;
 SOGAR NOCH WICHTIGER&lt;br /&gt;
 123&lt;br /&gt;
 34&lt;br /&gt;
 4711&lt;br /&gt;
 TEST&lt;br /&gt;
&lt;br /&gt;
Ersetzt alle Zahlen durch X&lt;br /&gt;
 root@zero:~# tr &amp;quot;0-9&amp;quot; &amp;quot;X&amp;quot; &amp;lt; text&lt;br /&gt;
 sogar noch wichtiger&lt;br /&gt;
 XXX&lt;br /&gt;
 XX&lt;br /&gt;
 XXXX&lt;br /&gt;
 test&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
 root@zero:~# cat &amp;gt; test&lt;br /&gt;
 +++++&lt;br /&gt;
 ###&lt;br /&gt;
 1111&lt;br /&gt;
&lt;br /&gt;
-s löscht mehrfach kommende Zeichen&lt;br /&gt;
 root@zero:~# tr '''-s''' &amp;quot;+&amp;quot; &amp;lt; test&lt;br /&gt;
 +&lt;br /&gt;
 ###&lt;br /&gt;
 1111&lt;br /&gt;
&lt;br /&gt;
-d löscht vorkommende Zeichen &lt;br /&gt;
 root@zero:~# tr '''-d''' &amp;quot;#&amp;quot; &amp;lt; test&lt;br /&gt;
 +++++ &lt;br /&gt;
 &lt;br /&gt;
 1111&lt;br /&gt;
&lt;br /&gt;
==cut==&lt;br /&gt;
Spalten aus einer Datei schneiden. Dies betrifft nur die Ausgabe, die Datei selbst bleibt unverändert.&lt;br /&gt;
 &lt;br /&gt;
Schneidet die erste Spalte aus, der Delimiter ist : &lt;br /&gt;
 root@zero:~# cut -f 1 -d : /etc/passwd&lt;br /&gt;
 root&lt;br /&gt;
 daemon&lt;br /&gt;
 bin&lt;br /&gt;
 ...&lt;br /&gt;
 xinux&lt;br /&gt;
&lt;br /&gt;
 root@zero:~# more test&lt;br /&gt;
 1234#5678#9999&lt;br /&gt;
 &lt;br /&gt;
Schneidet die zweite Spalte aus, der Delimiter ist #&lt;br /&gt;
 root@zero:~# cut -f 2 -d &amp;quot;#&amp;quot; &amp;lt; test&lt;br /&gt;
 5678&lt;br /&gt;
&lt;br /&gt;
Schneidet bis zum 3 Zeichen ab&lt;br /&gt;
 root@zero:~$ echo S01policykit | cut -c 4-&lt;br /&gt;
 policykit&lt;br /&gt;
&lt;br /&gt;
==expand==&lt;br /&gt;
Ersetzt Tabulatorzeichen durch Folgen von Leerzeichen und schreibt das Ergebnis auf die Standardausgabe&lt;br /&gt;
 root@zero:~# expand /etc/samba/smb.conf&lt;br /&gt;
 ...&lt;br /&gt;
&lt;br /&gt;
==fmt==&lt;br /&gt;
#Setzt den Text der Dateien im Blocksatz der angegebenen Breite durch Auffüllen von Zeilen und Entfernen von Zeilenwechseln.&lt;br /&gt;
Standardgemäß werden Leerzeilen, die Position von Leerzeichen und der Einzug am Zeilenanfang erhalten. fmt versucht, &lt;br /&gt;
Zeilenumbrüche an Satzenden durchzuführen sowie sie nach dem ersten oder vor dem letzten Wort eines Satzes zu vermeiden. &lt;br /&gt;
 &lt;br /&gt;
 fmt [Optionen] [Dateien]&lt;br /&gt;
&lt;br /&gt;
Optionen&lt;br /&gt;
&lt;br /&gt;
* -p ''Präfix'': Formatiert nur Zeilen, die mit ''Präfix'' anfangen&lt;br /&gt;
 root@zero:/tmp# fmt -p '#' text&lt;br /&gt;
 #Setzt den Text der Dateien im Blocksatz der angegebenen Breite durch&lt;br /&gt;
 #Auffüllen von Zeilen und Entfernen von Zeilenwechseln.  Standardgemäß&lt;br /&gt;
 #werden Leerzeilen, die Position von Leerzeichen und der Einzug am&lt;br /&gt;
 #Zeilenanfang erhalten. fmt versucht,&lt;br /&gt;
 Zeilenumbrüche an Satzenden durchzuführen sowie sie nach dem ersten oder vor dem letzten Wort eines Satzes zu vermeiden.&lt;br /&gt;
&lt;br /&gt;
* -u : Erzwingt genau ein Leerzeichen zwischen Wörtern und zwei Leerzeichen zwischen Sätzen&lt;br /&gt;
&lt;br /&gt;
* -w ''Breite'': Setzt die Ausgabebreite auf ''Breite''&lt;br /&gt;
 root@zero:/tmp# fmt -w 30 text&lt;br /&gt;
 #Setzt den Text der Dateien&lt;br /&gt;
 im Blocksatz der angegebenen&lt;br /&gt;
 Breite durch Auffüllen&lt;br /&gt;
 von Zeilen und Entfernen&lt;br /&gt;
 von Zeilenwechseln.&lt;br /&gt;
 #Standardgemäß werden&lt;br /&gt;
 Leerzeilen, die Position von&lt;br /&gt;
 Leerzeichen und der Einzug am&lt;br /&gt;
 Zeilenanfang erhalten. fmt&lt;br /&gt;
 versucht, Zeilenumbrüche&lt;br /&gt;
 an Satzenden durchzuführen&lt;br /&gt;
 sowie sie nach dem ersten&lt;br /&gt;
 oder vor dem letzten Wort&lt;br /&gt;
 eines Satzes zu vermeiden.&lt;br /&gt;
&lt;br /&gt;
==join==&lt;br /&gt;
Führt die Zeilen zweier sortierter Dateien anhand von '''Übereinstimmungen''' in einem gemeinsamen Feld zusammen.&lt;br /&gt;
&lt;br /&gt;
 root@zero:~# more name&lt;br /&gt;
 1. karl&lt;br /&gt;
 2. heinz&lt;br /&gt;
 3. hans&lt;br /&gt;
 4. otto&lt;br /&gt;
 root@zero:~# more tel&lt;br /&gt;
 1. 1234&lt;br /&gt;
 2. 4321&lt;br /&gt;
 3. 222&lt;br /&gt;
 4. 121212&lt;br /&gt;
 root@zero:~# join name tel &amp;gt; telefonbuch&lt;br /&gt;
 root@zero:~# more telefonbuch&lt;br /&gt;
 1. karl 1234&lt;br /&gt;
 2. heinz 4321&lt;br /&gt;
 3. hans 222&lt;br /&gt;
 4. otto 121212&lt;br /&gt;
&lt;br /&gt;
 root@zero:~# join -t : /etc/passwd /etc/shadow&lt;br /&gt;
 ....&lt;br /&gt;
 daemon:x:1:1:daemon:/usr/sbin:/bin/sh:*:14181:0:99999:7:::&lt;br /&gt;
 bin:x:2:2:bin:/bin:/bin/sh:*:14181:0:99999:7:::&lt;br /&gt;
 sys:x:3:3:sys:/dev:/bin/sh:*:14181:0:99999:7:::&lt;br /&gt;
 sync:x:4:65534:sync:/bin:/bin/sync:*:14181:0:99999:7:::&lt;br /&gt;
 ...&lt;br /&gt;
&lt;br /&gt;
join in dat1 nach Feld 3 und in dat2 nach Feld 2&lt;br /&gt;
 thomas@lydia:~$ cat dat1 &lt;br /&gt;
 hugo:ps:1111&lt;br /&gt;
 erwin:zw:2222&lt;br /&gt;
 karl:sb:3333&lt;br /&gt;
 rudi:kl:4444&lt;br /&gt;
 thomas@lydia:~$ cat dat2&lt;br /&gt;
 blau:1111:svn&lt;br /&gt;
 grün:2222:fcs&lt;br /&gt;
 gelb:3333:fch&lt;br /&gt;
 rot:4444:fck&lt;br /&gt;
 thomas@lydia:~$ join -t : -1 3 -2 2 dat1 dat2 &lt;br /&gt;
 1111:hugo:ps:blau:svn&lt;br /&gt;
 2222:erwin:zw:grün:fcs&lt;br /&gt;
 3333:karl:sb:gelb:fch&lt;br /&gt;
 4444:rudi:kl:rot:fck&lt;br /&gt;
&lt;br /&gt;
==nl==&lt;br /&gt;
Nummeriert die Zeilen in einer Datei.&lt;br /&gt;
&lt;br /&gt;
 root@zero:~# nl /etc/passwd                                                   &lt;br /&gt;
     1  root:x:0:0:root:/root:/bin/bash                                       &lt;br /&gt;
     2  daemon:x:1:1:daemon:/usr/sbin:/bin/sh                                 &lt;br /&gt;
     3  bin:x:2:2:bin:/bin:/bin/sh                                            &lt;br /&gt;
     4  sys:x:3:3:sys:/dev:/bin/sh                                            &lt;br /&gt;
     5  sync:x:4:65534:sync:/bin:/bin/sync&lt;br /&gt;
     ...&lt;br /&gt;
Nummereriet mit führenden Nullen der Separatir ist ein :&lt;br /&gt;
 root@zero:~# nl -s : -n rz dat1&lt;br /&gt;
&lt;br /&gt;
==od==&lt;br /&gt;
Gibt Dateien im Oktal und anderen Formaten aus.&lt;br /&gt;
&lt;br /&gt;
 od [Optionen] Datei&lt;br /&gt;
&lt;br /&gt;
* -j ''Bytes'': Überspringt die Anzahl ''Bytes'' einer Datei&lt;br /&gt;
* -N ''Bytes'': Gibt nur die Anzahl ''Bytes'' aus&lt;br /&gt;
* -c : Gebe ASCII Zeichen aus&lt;br /&gt;
* -f : Gebe Fließkommazahlen aus&lt;br /&gt;
* -i : Gebe Dezimal Integer aus&lt;br /&gt;
* -l : Gebe Dezimal Long aus&lt;br /&gt;
* -o : Gebe Oktal 2 Byte Einheiten aus&lt;br /&gt;
* -s : Gebe Dezimal 2 Byte Einheiten aus&lt;br /&gt;
* -x : Gebe Hexadezimale 2 Byte einheiten aus&lt;br /&gt;
&lt;br /&gt;
Beispiele&lt;br /&gt;
&lt;br /&gt;
Gebe Master Boot Record (die ersten 512 Byte der Festplatte /dev/sda) als Hexadezimal aus&lt;br /&gt;
 root@zero:~# od '''-x -N''' 512 /dev/sda&lt;br /&gt;
 0000000 48eb 1090 d08e 00bc b8b0 0000 d88e c08e&lt;br /&gt;
 0000020 befb 7c00 00bf b906 0200 a4f3 21ea 0006&lt;br /&gt;
 0000040 be00 07be 0438 0b75 c683 8110 fefe 7507&lt;br /&gt;
 0000060 ebf3 b416 b002 bb01 7c00 80b2 748a 0203&lt;br /&gt;
 0000100 00ff 2000 0001 0000 0200 90fa f690 80c2&lt;br /&gt;
 ...&lt;br /&gt;
&lt;br /&gt;
Schreibe &amp;quot;suxer&amp;quot; in die Datei test&lt;br /&gt;
 root@zero:~# echo &amp;quot;suxer&amp;quot; &amp;gt; test&lt;br /&gt;
Ausgabe Hexadezimal&lt;br /&gt;
 root@zero:~# od -x test&lt;br /&gt;
 0000000 7573 6578 0a72&lt;br /&gt;
 0000006&lt;br /&gt;
&lt;br /&gt;
Ausgabe ASCII Zeichen&lt;br /&gt;
 root@zero:~# od -c test&lt;br /&gt;
 0000000   s   u   x   e   r  \n&lt;br /&gt;
 0000006&lt;br /&gt;
&lt;br /&gt;
==paste==&lt;br /&gt;
Fügt die Zeilen von zwei oder mehr Dateien horizontal zusammen&lt;br /&gt;
 root@zero:~# paste name tel&lt;br /&gt;
 1. karl 1. 1234&lt;br /&gt;
 2. heinz        2. 4321&lt;br /&gt;
 3. hans 3. 222&lt;br /&gt;
 4. otto 4. 121212&lt;br /&gt;
&lt;br /&gt;
==pr==&lt;br /&gt;
Bereitet Textdateien zum Drucken vor.&lt;br /&gt;
&lt;br /&gt;
 root@zero:~# echo &amp;quot;Plan für heute&amp;quot; &amp;gt; dokument&lt;br /&gt;
 root@zero:~# more dokument&lt;br /&gt;
 Plan für heute&lt;br /&gt;
 root@zero:~# pr dokument   &lt;br /&gt;
  &lt;br /&gt;
 &lt;br /&gt;
 2009-06-19 12:44                    dokument                     Seite 1&lt;br /&gt;
 &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
 Plan für heute&lt;br /&gt;
&lt;br /&gt;
Anmerkung Ausmaße der Bildschirmausgabe wie eine Druckseite.&lt;br /&gt;
&lt;br /&gt;
==sed==&lt;br /&gt;
streaming editor. Mit sed ist es möglich, den Inhalt einer Datei automatisch (nicht interaktiv) zu&lt;br /&gt;
bearbeiten. Wie unter Linux üblich, wird auch hier der Text nicht wirklich verändert sondern die &lt;br /&gt;
Änderung erfolgt über die Standardausgabe, die wieder umgeleitet werden kann. Die Syntax ist ähnlich &lt;br /&gt;
des ex modus von vi. Reguläre Ausdrücke können nach Belieben benutzt werden. &lt;br /&gt;
&lt;br /&gt;
Optionen:&lt;br /&gt;
 -e Zeichenkette  wendet die Editorbefehle aus Zeichenkette auf den Text an.&lt;br /&gt;
 -n gibt nur die Zeilen aus, die explizit (durch &amp;quot;p&amp;quot; ausgedruckt werden sollen&lt;br /&gt;
&lt;br /&gt;
Gibt die dritte Zeile der Datei text aus&lt;br /&gt;
 root@zero:~# sed -n &amp;quot;3p&amp;quot; text&lt;br /&gt;
 34&lt;br /&gt;
&lt;br /&gt;
Gibt die erste bis dritte Zeile von text aus&lt;br /&gt;
 root@zero:~# sed -n &amp;quot;1,3p&amp;quot; text&lt;br /&gt;
 sogar noch wichtiger&lt;br /&gt;
 123&lt;br /&gt;
 34&lt;br /&gt;
&lt;br /&gt;
Löschen der Zeile mit &amp;quot;sogar&amp;quot;&lt;br /&gt;
 root@zero:~# sed -e '/sogar/d' &amp;lt; text&lt;br /&gt;
 123&lt;br /&gt;
 34&lt;br /&gt;
 4711&lt;br /&gt;
 test&lt;br /&gt;
&lt;br /&gt;
und schreiben in text2&lt;br /&gt;
 root@zero:~# sed -e '/sogar/d' &amp;lt; text &amp;gt; text2&lt;br /&gt;
 root@zero:~# more text2&lt;br /&gt;
 123&lt;br /&gt;
 34&lt;br /&gt;
 4711&lt;br /&gt;
 test&lt;br /&gt;
&lt;br /&gt;
Alle 3en durch DREI ersetzen&lt;br /&gt;
 root@zero:~# sed -e 's/3/DREI/g' &amp;lt; text&lt;br /&gt;
 sogar noch wichtiger&lt;br /&gt;
 12DREI&lt;br /&gt;
 DREI4&lt;br /&gt;
 4711&lt;br /&gt;
 test&lt;br /&gt;
&lt;br /&gt;
==wc==&lt;br /&gt;
Zählt die Anzahl von Zeichen, Wörter oder Zeilen&lt;br /&gt;
&lt;br /&gt;
Optionen&lt;br /&gt;
* -m : Zählt die Anzahl der Zeichen&lt;br /&gt;
 root@zero:~# more name&lt;br /&gt;
 1. karl&lt;br /&gt;
 2. heinz&lt;br /&gt;
 3. hans&lt;br /&gt;
 4. otto&lt;br /&gt;
 root@zero:~# wc '''-m''' tel&lt;br /&gt;
 33 tel&lt;br /&gt;
&lt;br /&gt;
* -w : Zählt die Anzahl der Wörter (einschließlich Zahlen und andere Zeichen)&lt;br /&gt;
 root@zero:~# wc '''-w''' name&lt;br /&gt;
 8 name&lt;br /&gt;
&lt;br /&gt;
* -l : Zählt die Anzahl der Zeilen&lt;br /&gt;
 root@zero:~# wc '''-l''' name&lt;br /&gt;
 4 name&lt;br /&gt;
&lt;br /&gt;
==Sort==&lt;br /&gt;
&lt;br /&gt;
Zum sortieren von Dateien nach Feldern benutzt man sort. sort liest von STDIN man kann die Datei aber auch als Argument übergeben. &lt;br /&gt;
&lt;br /&gt;
Sortiert nach dem ersten Feld&lt;br /&gt;
  root@zero:~# sort /etc/passwd 	 &lt;br /&gt;
&lt;br /&gt;
Es wird geprüft ob die Datei schon sortiert ist &lt;br /&gt;
 root@zero:~# sort -c /etc/passwd 	&lt;br /&gt;
&lt;br /&gt;
Sortiert nach dem ersten Feld (Richtungsumkehr)  &lt;br /&gt;
 root@zero:~#  sort -r /etc/passwd&lt;br /&gt;
&lt;br /&gt;
Führende Leersortzeichen werden ignoriert &lt;br /&gt;
 root@zero:~# sort -b /etc/passwd&lt;br /&gt;
&lt;br /&gt;
Ausgabe  in die Datei pass&lt;br /&gt;
 root@zero:~# sort  /etc/passwd   -o pass	 &lt;br /&gt;
&lt;br /&gt;
nimmt : als Trenner -Voreinstellung ist TAB&lt;br /&gt;
  root@zero:~# sort -t : /etc/passwd&lt;br /&gt;
&lt;br /&gt;
sortiert nach dem  3 Feld,  der Trenner ist : und es wird nummerisch sortiert&lt;br /&gt;
&lt;br /&gt;
 root@zero:~# sort -t: +2 -n /etc/passwd		&lt;br /&gt;
&lt;br /&gt;
sortiert nach dem  3 Feld,  der Trenner ist : und es wird nummerisch sortiert&lt;br /&gt;
					&lt;br /&gt;
 root@zero:~# sort -t: -k 3 -n /etc/passwd&lt;br /&gt;
&lt;br /&gt;
Sortiert nach dem  3  bis zum 5 Feld, der Trenner ist : und es wird nummerisch sortiert&lt;br /&gt;
	&lt;br /&gt;
 root@zero:~# sort -t: -k 3,5 -n /etc/passwd	&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==INodes==&lt;br /&gt;
Inode (oder I-Node) wird im Deutschen am besten als Informationsknoten oder&lt;br /&gt;
Indexeintrag bezeichnet. Er fasst alle Attribute einer Datei zusammen außer dem Inhalt&lt;br /&gt;
und dem Namen der Datei.&lt;br /&gt;
&lt;br /&gt;
===Daten===&lt;br /&gt;
{| border=1 cellpadding=2&lt;br /&gt;
|type&lt;br /&gt;
|Der Typ der Datei wird als einzelner Buchstabe angezeigt. Der Typ einer Datei wird beim Anlegen der Datei festgelegt&lt;br /&gt;
|-&lt;br /&gt;
|Permissions &lt;br /&gt;
|Die Zugriffsrechte der Datei werden in den 12 Bit sstrwxrwxrwx abgespeichert.Wenn sie gesetzt sind, werden sie bei &lt;br /&gt;
der Ausgabe an Stelle der x-Rechte ausgegeben. Die Zugriffsrechte können mit dem Kommando chmod verändert werden.&lt;br /&gt;
|-&lt;br /&gt;
|link count&lt;br /&gt;
|In UNIX kann eine Datei mehr als einen Namen haben. Der Link Count gibt die Anzahl der Namen einer Datei an. Er kann&lt;br /&gt;
mit dem Kommando ln erhöht und dem Kommando rm erniedrigt werden.&lt;br /&gt;
|-&lt;br /&gt;
|owner&lt;br /&gt;
|Für den Dateieigentümer gelten die in der ersten rwx-Gruppe festgelegten Zugriffsrechte. Standardmäßig ist der &lt;br /&gt;
Eigentümer einer Datei derjenige Benutzer, der die Datei angelegt hat.&lt;br /&gt;
|-&lt;br /&gt;
|group&lt;br /&gt;
|Für Benutzer, die in der gleichen Gruppe sind, der die Datei angehört, gelten die in der zweiten rwx-Gruppe festgelegten&lt;br /&gt;
Zugriffsrechte. In System V gehört eine Datei standardmäßig der Gruppe an, in der der anlegende Benutzer gerade ist.&lt;br /&gt;
|-&lt;br /&gt;
|size&lt;br /&gt;
|Bei normalen Dateien und Verzeichnissen gibt diese Information die Länge der Datei in Byte an.&lt;br /&gt;
|-&lt;br /&gt;
|access time&lt;br /&gt;
|Die Zugriffszeit gibt den Zeitpunkt des letzten Lesezugriffes auf eine Datei an. Aus Effizienzgründen wird die &lt;br /&gt;
Zugriffszeit an Verzeichnissen nicht gesetzt, wenn ein Verzeichnis durchsucht wird, obwohl man dies erwarten könnte. ''(ls -l --time=atime)''&lt;br /&gt;
|-&lt;br /&gt;
|modification time&lt;br /&gt;
|Die Modifikationszeit gibt die Zeit des letzten Schreibzugriffes auf die Daten der Datei an. Intern speichert UNIX &lt;br /&gt;
die Zeit als Sekunden seit Beginn des Jahres 1970 und in GMT ab. Für die Ausgabe wird dies in ein besser lesbares &lt;br /&gt;
Format in der lokalen Zeitzone umgewandelt. ''(ls -l)''&lt;br /&gt;
|-&lt;br /&gt;
|change time &lt;br /&gt;
|Die Veränderungszeit gibt das Datum der letzten Statusänderung der Datei an. Sie wird immer dann gesetzt, wenn die &lt;br /&gt;
Informationen über die Datei sich ändern (Datum der Erzeugung wird nicht gespeichert) ''(ls -lc)''&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
===Dateiarten===&lt;br /&gt;
{| border=1 cellpadding=2&lt;br /&gt;
!Zeichen&lt;br /&gt;
!Typ&lt;br /&gt;
!Zweck&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;nowiki&amp;gt;-&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
|file&lt;br /&gt;
|normale Datei&lt;br /&gt;
|-&lt;br /&gt;
|d&lt;br /&gt;
|directory&lt;br /&gt;
|Verzeichnis&lt;br /&gt;
|-&lt;br /&gt;
|b&lt;br /&gt;
|block device&lt;br /&gt;
|Gerätedatei&lt;br /&gt;
|-&lt;br /&gt;
|c&lt;br /&gt;
|character device&lt;br /&gt;
|Gerätedatei&lt;br /&gt;
|-&lt;br /&gt;
|l&lt;br /&gt;
|link&lt;br /&gt;
|Querverweis&lt;br /&gt;
|-&lt;br /&gt;
|p&lt;br /&gt;
|named pipe&lt;br /&gt;
|Benannte Pipeline&lt;br /&gt;
|-&lt;br /&gt;
|s&lt;br /&gt;
|socket&lt;br /&gt;
|Netzwerkverbindung&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
====Normale Dateien====&lt;br /&gt;
Unter einer normalen Datei versteht man die Ansammlung von Daten. Dies kann ein Text, Programm, Bild oder sonstiges sein. &lt;br /&gt;
Beispiel&lt;br /&gt;
 root@zero:~# ls -l text | cut -c 1&lt;br /&gt;
 -&lt;br /&gt;
&lt;br /&gt;
====Verzeichnisse====&lt;br /&gt;
Dateien werden in Verzeichnissen gespeichert, nur so ist eine Ordnung möglich. &lt;br /&gt;
 root@zero:~# mkdir -v Ordner&lt;br /&gt;
 mkdir: Verzeichnis „Ordner“ angelegt&lt;br /&gt;
 &lt;br /&gt;
 root@zero:~# ls -ld Ordner | cut -c 1&lt;br /&gt;
 d&lt;br /&gt;
&lt;br /&gt;
====Gerätedateien (Block und Char)====&lt;br /&gt;
Gerätedateien ermöglichen Anwendungsprogrammen unter Benutzung des  Kernels den Zugriff auf die Hardwarekomponenten des Systems. Ansprechbar über Major und Minor Nummern &lt;br /&gt;
&lt;br /&gt;
Beispiele&lt;br /&gt;
&lt;br /&gt;
Sicherung des Master Boot Records der ersten Festplatte&lt;br /&gt;
 root@zero:~# dd if=/dev/sda of=/tmp/mbr.img bs=512 count=1&lt;br /&gt;
&lt;br /&gt;
Block Device &lt;br /&gt;
 root@zero:~# ls -l /dev/sda | cut -c 1 &lt;br /&gt;
 b&lt;br /&gt;
&lt;br /&gt;
Character Device &lt;br /&gt;
 root@zero:~# ls -l /dev/ttyS0  | cut -c 1 &lt;br /&gt;
 c&lt;br /&gt;
&lt;br /&gt;
Erstellen einer Gerätedatei&lt;br /&gt;
 root@zero:/dev# mknod sata1 b 8 0 &lt;br /&gt;
 root@zero:/dev# fdisk -l /dev/sata1 &lt;br /&gt;
 &lt;br /&gt;
 Platte /dev/sata1: 6442 MByte, 6442450944 Byte&lt;br /&gt;
 255 Köpfe, 63 Sektoren/Spuren, 783 Zylinder&lt;br /&gt;
 Einheiten = Zylinder von 16065 × 512 = 8225280 Bytes&lt;br /&gt;
 Disk identifier: 0x0005efab&lt;br /&gt;
 &lt;br /&gt;
       Gerät  boot.     Anfang        Ende     Blöcke   Id  System&lt;br /&gt;
 /dev/sata1p1   *           1         743     5968116   83  Linux&lt;br /&gt;
 /dev/sata1p2             744         783      321300    5  Erweiterte&lt;br /&gt;
 /dev/sata1p5             744         783      321268+  82  Linux Swap / Solaris&lt;br /&gt;
&lt;br /&gt;
====Named Pipes====&lt;br /&gt;
Benannte Pipes (Named Pipes) können dagegen auch zur Kommunikation zwischen Prozessen eingesetzt werden, die nicht miteinander&lt;br /&gt;
verwandt sind und sich darüber hinaus auf unterschiedlichen Rechnern innerhalb eines Netzwerkes befinden dürfen. Sie sind &lt;br /&gt;
flexibler als anonyme Pipes und eignen sich für sogenannte Client-Server-Anwendungen (es lassen sich auch RPCs realisieren).&lt;br /&gt;
Benannte Pipes ermöglichen die gleichzeitige Kommunikation in beide Richtungen, das heißt, Daten können im Vollduplexbetrieb &lt;br /&gt;
zwischen den Prozessen ausgetauscht werden.&lt;br /&gt;
 &lt;br /&gt;
Erstelle Named Pipe mit Namen /tmp/roehre. Schreibe &amp;quot;hallo welt&amp;quot; in die Pipe und bleibe&lt;br /&gt;
 xinux@zero:~$ mkfifo /tmp/roehre&lt;br /&gt;
 xinux@zero:~$ echo hallo welt &amp;gt; /tmp/roehre &lt;br /&gt;
&lt;br /&gt;
Gebe Inhalt der Pipe mit cat aus&lt;br /&gt;
 root@zero:~# cat &amp;lt; /tmp/roehre &lt;br /&gt;
 hallo welt&lt;br /&gt;
 root@zero:~# ls -l /tmp/roehre | cut -c 1&lt;br /&gt;
 p&lt;br /&gt;
&lt;br /&gt;
====Sockets====&lt;br /&gt;
Schnittstelle um es lokalen Anwendungen zu ermöglichen, miteinander Netwerkmässig zu kommunizieren.&lt;br /&gt;
&lt;br /&gt;
 root@lydia:~# netstat  -lnxp | tail -1&lt;br /&gt;
  unix  2 [ ACC ] STREAM HÖRT 21951 6646/nm-applet /tmp/orbit-thomas/linc-19f6-0-2b9b81095cede&lt;br /&gt;
&lt;br /&gt;
 root@lydia:~# ls -l /tmp/orbit-thomas/linc-19f6-0-2b9b81095cede  | cut -c 1 &lt;br /&gt;
 s&lt;br /&gt;
&lt;br /&gt;
====Links====&lt;br /&gt;
Bei Links handelt es sich um symbolische Verweise auf andere Dateien&lt;br /&gt;
&lt;br /&gt;
'''Softlink'''&lt;br /&gt;
Ein Softlink ist eine Datei die nur auf den Namen einer anderen Datei verweist. Wenn die Originaldatei gelöscht wird, zeigt &lt;br /&gt;
der Link ins Leere. &lt;br /&gt;
&lt;br /&gt;
 ln -s datei softlink&lt;br /&gt;
&lt;br /&gt;
{| border=1 cellpadding=2&lt;br /&gt;
| Vorteile&lt;br /&gt;
| Symbolische Links können auch auf Verzeichnisse angelegt werden&amp;lt;br&amp;gt;Sie sind partitionsübergreifend&amp;lt;br&amp;gt;Man kann sie auf Dateien anlegen, die noch nicht existieren&lt;br /&gt;
|-&lt;br /&gt;
| Nachteile&lt;br /&gt;
| Wenn das Original gelöscht ist, ist kein Zugriff mehr möglich&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Beispiel&lt;br /&gt;
 root@zero:~# ln -s text verweis&lt;br /&gt;
 root@zero:~# ls -l verweis&lt;br /&gt;
 lrwxrwxrwx 1 root root 4 2009-06-18 15:48 verweis -&amp;gt; text&lt;br /&gt;
&lt;br /&gt;
'''Hardlinks'''&lt;br /&gt;
 ln datei hardlink&lt;br /&gt;
Eigentlich ist jede Datei ein Hardlink. Ein Hardlink ist ein Verzeichniseintrag,&lt;br /&gt;
der auf eine Inode verweist. Beim Erzeugen einer Datei verweist ein Eintrag auf&lt;br /&gt;
eine Inode. Man kann dann weitere Verweise erzeugen. Der Linkcounter wird&lt;br /&gt;
jeweils um 1 erhöht. Beim Löschen einer Datei wird er jeweils um 1 reduziert.&lt;br /&gt;
Wird der Wert 0 erreicht, ist die Datei gelöscht.&lt;br /&gt;
{| border=1 cellpadding=2&lt;br /&gt;
| Vorteile&lt;br /&gt;
|Zugriff auf die Daten, selbst wenn das Orginal gelöscht ist.&lt;br /&gt;
|-&lt;br /&gt;
|Nachteile&lt;br /&gt;
|Man kann keine Hardlinks auf Verzeichnisse anlegen.&lt;br /&gt;
Ist nur innerhalb einer Partion möglich.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Beispiel&lt;br /&gt;
 root@zero:~# touch 1&lt;br /&gt;
 root@zero:~# echo &amp;quot;text&amp;quot; &amp;gt; 1&lt;br /&gt;
 root@zero:~# ln 1 2&lt;br /&gt;
 root@zero:~# more 2&lt;br /&gt;
 text&lt;br /&gt;
 root@zero:~# echo &amp;quot;doch kein text&amp;quot; &amp;gt; 1&lt;br /&gt;
 root@zero:~# more 1&lt;br /&gt;
 doch kein text&lt;br /&gt;
 root@zero:~# more 2&lt;br /&gt;
 doch kein text&lt;br /&gt;
&lt;br /&gt;
Weitere Optionen:&lt;br /&gt;
 -b sichert Dateien, statt sie zu überschreiben &lt;br /&gt;
 -f Überschreibt bestehende, gleichnamige Dateien&lt;br /&gt;
 -i fragt vor dem Überschreiben nach Bestätigung&lt;br /&gt;
 -v ausführliche Meldungen&lt;br /&gt;
Softlink mit dem Namen passwd im Homeverzeichnis angelegt&lt;br /&gt;
 xinux@zero:~$ ln -vs /etc/passwd .&lt;br /&gt;
 „./passwd“ -&amp;gt; „/etc/passwd“&lt;br /&gt;
Softlink mit dem Namen passwd im Homeverzeichnis angelegt(Original exestiert nicht) &lt;br /&gt;
 xinux@zero:~$ ln -vs /etc/hund .&lt;br /&gt;
 „./hund“ -&amp;gt; „/etc/hund“&lt;br /&gt;
Hardlink mit dem Namen hosts im Homeverzeichnis angelegt&lt;br /&gt;
  xinux@zero:~$ ln -v /etc/hosts .&lt;br /&gt;
 „./hosts“ =&amp;gt; „/etc/hosts“&lt;br /&gt;
Auf eine nicht existierende Datei kann kein Hardlink angelegt werden!&lt;br /&gt;
 xinux@zero:~$ ln -v /etc/katze .&lt;br /&gt;
 ln: Zugriff auf „/etc/katze“: No such file or directory&lt;br /&gt;
&lt;br /&gt;
==Shellsonderzeichen==&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot; cellpadding=&amp;quot;2&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
|;&lt;br /&gt;
|Trenne Kommandos&lt;br /&gt;
|-&lt;br /&gt;
|. oder source&lt;br /&gt;
|Ausführen wie in aktueller Shell&lt;br /&gt;
|-&lt;br /&gt;
|#&lt;br /&gt;
|Kommentar&lt;br /&gt;
|-&lt;br /&gt;
|&amp;amp;&lt;br /&gt;
|Programm im Hintergrund starten &lt;br /&gt;
|-&lt;br /&gt;
|&amp;amp;&amp;amp;&lt;br /&gt;
|UND -Ausführung  (wenn links wahr dann führe rechts aus)&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;nowiki&amp;gt;|&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
|STOUT von links wird zu STDIN von rechts &lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;nowiki&amp;gt;||&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
|ODER -Ausführung (wenn links falsch dann führe rechts aus)&lt;br /&gt;
|-&lt;br /&gt;
|*&lt;br /&gt;
|steht für beliebig viel Zeichen auch 0 &lt;br /&gt;
|-&lt;br /&gt;
|?&lt;br /&gt;
|steht für genau ein Zeichen &lt;br /&gt;
|-&lt;br /&gt;
|[abc]&lt;br /&gt;
|steht für eins der Zeichen in [ ] hier a b oder c &lt;br /&gt;
|-&lt;br /&gt;
|[ausdruck] &lt;br /&gt;
|Andere Schreibweis für test &lt;br /&gt;
|-&lt;br /&gt;
|~&lt;br /&gt;
|das Homeverzeichnis&lt;br /&gt;
|-&lt;br /&gt;
|&amp;gt;    und    &amp;gt;&amp;gt;&lt;br /&gt;
|leite in Datei um   &amp;gt;  überschreibe     &amp;gt;&amp;gt; hänge an &lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;&lt;br /&gt;
|lesen aus Datei &lt;br /&gt;
|-&lt;br /&gt;
|2&amp;gt;&amp;amp;1&lt;br /&gt;
|leite STDERR auf STDOUT&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;&amp;lt; ende&lt;br /&gt;
|Lesen aus Datei (Heredokument)&lt;br /&gt;
|-&lt;br /&gt;
|(...)&lt;br /&gt;
|Alles inhalb von ( ) wird als Subshell ausgeführt&lt;br /&gt;
|-&lt;br /&gt;
|{...}&lt;br /&gt;
|Gruppieren von Komandos &lt;br /&gt;
|-&lt;br /&gt;
|{ ,  ,  , }&lt;br /&gt;
|Zeichenketten zusammensetzen &lt;br /&gt;
|-&lt;br /&gt;
|$&lt;br /&gt;
|Inhalt von Variablen ausgeben $SUX&lt;br /&gt;
|-&lt;br /&gt;
|$* oder $@&lt;br /&gt;
|Liste der übergebenen Parameter&lt;br /&gt;
|-&lt;br /&gt;
|$# &lt;br /&gt;
|Anzahl der übergebenen Parameter &lt;br /&gt;
|-&lt;br /&gt;
|$0&lt;br /&gt;
|Name des Shellprogramms &lt;br /&gt;
|-&lt;br /&gt;
|$?&lt;br /&gt;
|Rückgabewert des letzten Kommandos &lt;br /&gt;
|-&lt;br /&gt;
|$!  und  $$&lt;br /&gt;
|PID des  $!  = letzten Hintergrund  -  , $$ = aktuellen Prozess&lt;br /&gt;
|-&lt;br /&gt;
|$1 ..$9&lt;br /&gt;
|Parameter 1 bis 9 &lt;br /&gt;
|-&lt;br /&gt;
|$() oder `  `&lt;br /&gt;
|Kommandosubstition&lt;br /&gt;
|-&lt;br /&gt;
|${ }&lt;br /&gt;
|Funktion zur Manipulation von Zeichenketten &lt;br /&gt;
|-&lt;br /&gt;
|$(( )) oder $[ ]&lt;br /&gt;
|Arithmetische Berechnung &lt;br /&gt;
|-&lt;br /&gt;
|&amp;quot;...&amp;quot;&lt;br /&gt;
|Entwertung der Sonderzeichen ausser $ ' \&lt;br /&gt;
|-&lt;br /&gt;
|'...'&lt;br /&gt;
|Entwertung sämtlicher Sonderzeichen ausser ' selbst&lt;br /&gt;
|-&lt;br /&gt;
|\  &lt;br /&gt;
|Entwertung des folgenden Sonderzeichens &lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==Prozesse==&lt;br /&gt;
===Was ist ein Prozess?===&lt;br /&gt;
Ein Prozess setzt sich aus zwei Teilen zusammen:&lt;br /&gt;
&lt;br /&gt;
1.Programm, das in den Hauptspeicher geladen wurde&lt;br /&gt;
&lt;br /&gt;
2.Prozessumgebung &lt;br /&gt;
&lt;br /&gt;
Unter einem Prozess versteht man ein Programm (binär), das in den Hauptspeicher&lt;br /&gt;
geladen wurde. Also nicht das Program selbst, das auf der Festplatte liegt ist der&lt;br /&gt;
Prozess, sondern es wird erst durch das Laden in den Hauptspeicher dazu.&lt;br /&gt;
Normalerweise liegt ein Programm als ausführbare Datei irgendwo auf der&lt;br /&gt;
Festplatte oder auf Diskette. Ob es sich bei dem Programm um eine binäre Datei&lt;br /&gt;
handelt, kann man mit dem Befehl '' file '' feststellen.&lt;br /&gt;
 &lt;br /&gt;
 root@zero:~# file /bin/mkdir&lt;br /&gt;
 /bin/mkdir: ELF 32-bit LSB executable, Intel 80386, version 1 (SYSV), dynamically linked (uses shared libs), for GNU/Linux 2.6.8, stripped&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Die Datei liegt im Maschinencode vor und kann in den Hauptspeicher geladen&lt;br /&gt;
werden. Sobald dies geschehen ist, kann der Rechner diesen Maschinencode&lt;br /&gt;
abarbeiten (ausführen).&lt;br /&gt;
&lt;br /&gt;
Da aber ein Programm nicht direkt auf die Hardware zugreifen soll, muss es vom&lt;br /&gt;
Betriebsystem kontrolliert werden. Das Betriebssystem liegt logisch gesehen&lt;br /&gt;
zwischen Hardware und Anwendung. Das Betriebssystem ordnet jedem Prozess&lt;br /&gt;
verschiedene Kenndaten zu, um die Prozesse verwalten zu können. Alle&lt;br /&gt;
Kenndaten, die einem Prozess zugeordnet sind, nennt man die&lt;br /&gt;
Prozessumgebung.Wenn man in der Shell ein Kommando eingibt, wird ein Prozess&lt;br /&gt;
kreiert. Natürlich ist die Shell selbst auch ein Prozess. Ein Prozess kann aber&lt;br /&gt;
genauso gut ein Serverprozess (Dienst) sein, z.B. Apache.&lt;br /&gt;
Ein wesentliches Merkmal eines Prozesses ist die Prozesskommunikation. Über im&lt;br /&gt;
Betriebssystem implementierte Methoden ist es möglich, dass verschiedene&lt;br /&gt;
Prozesse Signale und Daten untereinander austauschen können.&lt;br /&gt;
Dadurch wird auch dem Benutzer ermöglicht, einem Prozeß bestimmte Signale zu&lt;br /&gt;
senden bzw. auf den Status eines Prozesses Einfluss zu nehmen.&lt;br /&gt;
&lt;br /&gt;
===Prozesstabelle (Anzeige mit ps)===&lt;br /&gt;
Da zu jedem Prozess Kenndaten geführt werden, müssen diese auch irgendwo&lt;br /&gt;
festgehalten werden. Das geschieht in der sogenannten Prozesstabelle.&lt;br /&gt;
&lt;br /&gt;
Kenndaten der Prozesse (Auswahl):&lt;br /&gt;
* F Flags (z.B. ausgelagert; Systemprozess; Trace,...)&lt;br /&gt;
* UID Nutzer, mit dessen Rechten der Prozess ausgeführt wird&lt;br /&gt;
* PID Prozess - ID. Diese Nummer gibt eine eindeutige Prozess - Nummer&lt;br /&gt;
an. Sie wird vom System automatisch beim Starten des Prozesses&lt;br /&gt;
vergeben und ist für die Laufzeit eindeutig.&lt;br /&gt;
* PPID Prozessnumer der Eltern-Prozesses&lt;br /&gt;
* PRI Priorität eines Prozesses; je niedriger der Wert ist, desto besser&lt;br /&gt;
* NI ist der Nicewert des Prozesses; Nice erniedrigt den Grundwert&lt;br /&gt;
der Priorität des Prozesses und gibt damit Prozessorzeit für andere&lt;br /&gt;
Prozesse frei.&lt;br /&gt;
* SIZE Speichergröße des Prozesses inklusive Stack (eine Art Zwischenspeicher)&lt;br /&gt;
* RSS Verbrauch an physischen Speicher&lt;br /&gt;
* WCHAN ist der Name der Kernerlfunktion, in der der Prozess schläft&lt;br /&gt;
* STAT Status des Prozesses&lt;br /&gt;
R läuft       S schlafend     D nicht störbarer Schlaf&lt;br /&gt;
T angehalten  Z Zombie        W der Prozess belegt keine Seiten&lt;br /&gt;
* TIME Bisland benötigte Prozessorzeit&lt;br /&gt;
* SIZE ist die Größe von Text, Daten und Stack&lt;br /&gt;
* TTY die Nummer des kontrollierenden Teminal; wenn hier ein ? steht,&lt;br /&gt;
handelt es sich um einen Dämon oder Serverprozess.&lt;br /&gt;
* COMMAND Angabe des Prozesses selbst. Dies ist meist der Programmname.&lt;br /&gt;
&lt;br /&gt;
Weiteres&lt;br /&gt;
* GID Gruppe, unter der der Prozess läuft&lt;br /&gt;
* Verweis auf das aktuellen Arbeitsverzeichnis&lt;br /&gt;
* Um mit relativen Pfadangaben arbeiten zu können braucht man diesen Eintrag&lt;br /&gt;
* Tabelle mit Verweisen auf aktuell geöffnete Dateien&lt;br /&gt;
* 3 sind automatisch geöffnet Standardeingabe, Standardausgabe und&lt;br /&gt;
Standardfehlerkanal&lt;br /&gt;
&lt;br /&gt;
Beispiel&lt;br /&gt;
 root@zero:~# ps -l&lt;br /&gt;
 F S   UID   PID  PPID  C PRI  NI ADDR SZ WCHAN  TTY          TIME CMD&lt;br /&gt;
 4 R     0 18639 18631  0  80   0 -  1080 -      pts/0    00:00:00 bash&lt;br /&gt;
 0 R     0 25904 18639  0  80   0 -   635 -      pts/0    00:00:00 ps&lt;br /&gt;
&lt;br /&gt;
===Eltern und Kinder===&lt;br /&gt;
Jeder Prozess kann weitere Prozesse erzeugen. Die erzeugten Prozesse bezeichnet&lt;br /&gt;
man als Kindprozesse. Jeder Kindprozess weiß anhand der PID, woher er stammt.&lt;br /&gt;
&lt;br /&gt;
Alle Prozesse sind von einem anderen Prozess gestartet worden, mit Ausnahme&lt;br /&gt;
des Pseudoprozesses (noch im Kernel beim Starten erzeugter Prozess). Dieser hat&lt;br /&gt;
die Prozessnummer 0. Er hat die Aufgabe, den Init Prozess ( /sbin/init die Nummer&lt;br /&gt;
1) zu starten, der in System V alle anderen Prozesse direkt oder über seine Kind-&lt;br /&gt;
prozesse startet. (init wird konfiguriert durch die /etc/inittab)&lt;br /&gt;
&lt;br /&gt;
Es gibt zwei Arten wie ein Prozess gestartet werden kann:&lt;br /&gt;
&lt;br /&gt;
# Fork und Exec: Prozessumgebung wird dupliziert, der neue Prozess bekommt eine eigene neue PID&lt;br /&gt;
# Exec: Alter Prozess wird durch neuen Prozess überladen (geht mit dem shell-buildin exec)&lt;br /&gt;
&lt;br /&gt;
'''Rechte auf Objekte UID GID'''&lt;br /&gt;
Ob ein Prozess auf eine Datei zugreifen kann, entscheidet der Kernel anhand der&lt;br /&gt;
Zugriffssrechte, die auf der Datei gesetzt sind. Er checkt anhand der UID und GID&lt;br /&gt;
des Prozesses, ob es erlaubt ist. Mit dieser Technik wird letztendlich geprüft, was&lt;br /&gt;
ein User darf, und was nicht.&lt;br /&gt;
&lt;br /&gt;
===Rechenzeit und Priorität===&lt;br /&gt;
Da auch bei Prozessen eine Gerechtigkeit herschen muss, muss eine Instanz&lt;br /&gt;
darüber entscheiden wie lange ein Prozess Rechenzeit verbrauchen darf.&lt;br /&gt;
Folgende Kenndaten werden dazu benötigt&lt;br /&gt;
* clocktick = Zeiteinheit&lt;br /&gt;
* n = Faktor über den Kernel einstellbar&lt;br /&gt;
* slice = n &amp;lt;nowiki&amp;gt;*&amp;lt;/nowiki&amp;gt; clocktick&lt;br /&gt;
* agingtime = weitere Zeiteinheit über den Kernel einstellbar&lt;br /&gt;
&lt;br /&gt;
Es wird davon ausgegangen das der Prozess mit der niedrigsten Priorität gerade&lt;br /&gt;
rechnet. Pro clocktick erhöht sich die Priorität dieses Prozesses um eins.&lt;br /&gt;
&lt;br /&gt;
Jetzt können 3 Situationen eintreten die alle dazu führen das der Scheduler&lt;br /&gt;
aufgerufen wird.&lt;br /&gt;
&lt;br /&gt;
# Prozess blockiert wegen einer Ausgabe oder Eingabe.&lt;br /&gt;
# Gibt Rechenzeit freiwillig ab.&lt;br /&gt;
# Der Slice endet.&lt;br /&gt;
&lt;br /&gt;
Der Aufruf des Schedulers bewirkt das der Prozess mit der niedrigsten Priorität&lt;br /&gt;
gescheduled wird, er also nun rechnen darf. Nach Ablauf der agingtime werden&lt;br /&gt;
nun die Prozesse &amp;quot;gealtert&amp;quot;. Das geschieht nach folgender Formel&lt;br /&gt;
&lt;br /&gt;
Neue Priorität = Alte Priorität / 2 + Nicewert&lt;br /&gt;
&lt;br /&gt;
Der User hat die Möglichkeit, über den sogenannten Nicewert den Grundwert für&lt;br /&gt;
einen Prozess zu senken. Der Prozess braucht dann länger für seine Abarbeitung.&lt;br /&gt;
Er verhält sich somit netter zu den anderen Prozessen. Normale User können nur&lt;br /&gt;
netter werden, der Systemverwalter kann auch nicht netter (gemeiner) werden. Der&lt;br /&gt;
Bereich liegt zwischen 19 (sehr nett) bis 0 (weniger nett) für die User, und 19 bis&lt;br /&gt;
-20 für root.&lt;br /&gt;
&lt;br /&gt;
[[Image:pri.png]]&lt;br /&gt;
&lt;br /&gt;
'''Signale'''&lt;br /&gt;
&lt;br /&gt;
Mit den Kommando kill und killall kann man Prozessen Signale schicken&lt;br /&gt;
&lt;br /&gt;
 kill -Signalnummer PID &lt;br /&gt;
&lt;br /&gt;
Signalnummer&lt;br /&gt;
{| border=1 cellpadding=2&lt;br /&gt;
!Signalname&lt;br /&gt;
!Wert&lt;br /&gt;
!Aktion&lt;br /&gt;
|-&lt;br /&gt;
|SIGHUP&lt;br /&gt;
|1&lt;br /&gt;
|Neuinitialisierung eines Prozesses&lt;br /&gt;
|-&lt;br /&gt;
|SIGINT&lt;br /&gt;
|2&lt;br /&gt;
|Interrupt-Signal von der Tastatur (STRG+c)&lt;br /&gt;
|-&lt;br /&gt;
|SIGQUIT&lt;br /&gt;
|3&lt;br /&gt;
|Interrupt-Signal von der Tastatur (STRG+c) mit Dump&lt;br /&gt;
|-&lt;br /&gt;
|SIGKILL&lt;br /&gt;
|9&lt;br /&gt;
|unwiderrufliches Beendigungssignal (Töten)&lt;br /&gt;
|-&lt;br /&gt;
|SIGSEGV&lt;br /&gt;
|11&lt;br /&gt;
|Ungültige Speicherreferenz (bedeutet oft auf defekten Speicher)&lt;br /&gt;
|-&lt;br /&gt;
|SIGTERM &lt;br /&gt;
|15&lt;br /&gt;
|Beendigungssignal (geöffnete Dateien werden geschlossen)&lt;br /&gt;
|-&lt;br /&gt;
|SIGCONT &lt;br /&gt;
|18&lt;br /&gt;
|Weiterfahren, wenn gestoppt&lt;br /&gt;
|-&lt;br /&gt;
|SIGSTOP&lt;br /&gt;
|19&lt;br /&gt;
|Prozessstop&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Beispiel&lt;br /&gt;
 root@zero:~# kill -1 7562&lt;br /&gt;
&lt;br /&gt;
===Programme im Zusammenhang mit Prozessen===&lt;br /&gt;
====ps: Zeigt die Prozesse mit ihrem Status an====&lt;br /&gt;
 root@zero:~# ps&lt;br /&gt;
  PID TTY          TIME CMD&lt;br /&gt;
 14134 pts/0    00:00:00 bash&lt;br /&gt;
 14149 pts/0    00:00:00 ps&lt;br /&gt;
&lt;br /&gt;
 root@zero:~# ps -elf | grep apache&lt;br /&gt;
 1 S root      5738     1  0  80   0 -  5461 select Jun16 ?        00:00:00 /usr/sbin/apache2 -k start&lt;br /&gt;
 5 S www-data  5739  5738  0  80   0 -  5581 inet_c Jun16 ?        00:00:00 /usr/sbin/apache2 -k start&lt;br /&gt;
 5 S www-data  5742  5738  0  80   0 -  5461 inet_c Jun16 ?        00:00:00 /usr/sbin/apache2 -k start&lt;br /&gt;
 5 S www-data  5743  5738  0  80   0 -  5461 inet_c Jun16 ?        00:00:00 /usr/sbin/apache2 -k start&lt;br /&gt;
 5 S www-data  5745  5738  0  80   0 -  5461 inet_c Jun16 ?        00:00:00 /usr/sbin/apache2 -k start&lt;br /&gt;
 5 S www-data  5746  5738  0  80   0 -  5461 inet_c Jun16 ?        00:00:00 /usr/sbin/apache2 -k start&lt;br /&gt;
 0 S root     14153 14134  0  80   0 -   837 pipe_w 16:59 pts/0    00:00:00 grep apache&lt;br /&gt;
&lt;br /&gt;
Option 	Beschreibung&lt;br /&gt;
*l langes Format&lt;br /&gt;
*u 	zeige für jeden Prozess Besitzer und Startzeit an&lt;br /&gt;
*j 	Jobs-Format: Zeige PGID und SID an&lt;br /&gt;
*s 	Informationen über Signale ausgeben&lt;br /&gt;
*m 	Speicher-Informationen anzeigen&lt;br /&gt;
*f 	Baumstruktur der Prozesse anzeigen (ähnlich pstree)&lt;br /&gt;
*a 	alle Prozesse (jedes Benutzers) anzeigen&lt;br /&gt;
*x 	kontrollierendes Terminal nicht anzeigen&lt;br /&gt;
*e 	Für den Prozess gültige Umgebungsvariablen mit anzeigen (sinnvollerweise mit mehreren Optionen »w« anwenden, um die Ausgabe nicht am Zeilenende abzuschneiden)&lt;br /&gt;
*w 	längere Ausgabe. »w« kann mehrfach verwendet werden, um die maximale Länge um je eine Zeile zu vergrößern&lt;br /&gt;
*h 	Header mit Feldbezeichnern unterdrücken&lt;br /&gt;
*r 	nur laufende Prozesse ausgeben&lt;br /&gt;
*n 	User-ID statt User-Name ausgeben&lt;br /&gt;
*txx 	nur Prozesse ausgeben, die vom angegebenen Terminal kontrolliert werden. xx kann entweder einer der Terminal-Gerätenamen unter /dev (z.B. tty1) oder die entsprechende Kurzbezeichnung ohne »tty« (z.B. 1) sein.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
====nice: Lässt ein Programm mit verändertem Grundwert der Priorität laufen====&lt;br /&gt;
 root@zero:~# nice&lt;br /&gt;
 0&lt;br /&gt;
 root@zero:~# nice -n 9 bash&lt;br /&gt;
 root@zero:~# nice&lt;br /&gt;
 9&lt;br /&gt;
 root@zero:~#&lt;br /&gt;
&lt;br /&gt;
====renice: Ändert den Grundwert der Priorität eines laufenden Prozesses====&lt;br /&gt;
 root@zero:~# renice 10 5742&lt;br /&gt;
 5742: Alte Priorität: 0, neue Priorität: 10&lt;br /&gt;
&lt;br /&gt;
====top: Zeigt die Prozesse mit ihrem Status an (Abbrechen mit q)====&lt;br /&gt;
 root@zero:~# top&lt;br /&gt;
 top - 08:51:08 up 20 min,  1 user,  load average: 0.00, 0.02, 0.06&lt;br /&gt;
 Tasks:  93 total,   1 running,  92 sleeping,   0 stopped,   0 zombie&lt;br /&gt;
 Cpu(s):  1.6%us,  3.1%sy,  0.1%ni, 84.9%id, 10.2%wa,  0.0%hi,  0.2%si,  0.0%st&lt;br /&gt;
 Mem:    509504k total,   273948k used,   235556k free,    11312k buffers&lt;br /&gt;
 Swap:   321260k total,        0k used,   321260k free,   118380k cached&lt;br /&gt;
 &lt;br /&gt;
  PID USER      PR  NI  VIRT  RES  SHR S %CPU %MEM    TIME+  COMMAND                                                                       &lt;br /&gt;
 2208 mysql     20   0  125m  21m 5552 S  1.7  4.2   0:02.29 mysqld                                                                        &lt;br /&gt;
 3201 root      20   0  2444 1064  828 R  1.7  0.2   0:00.04 top                                                                           &lt;br /&gt;
    1 root      20   0  1908  780  564 S  0.0  0.2   0:02.19 init                                                                          &lt;br /&gt;
    2 root      15  -5     0    0    0 S  0.0  0.0   0:00.00 kthreadd                                                                      &lt;br /&gt;
    3 root      RT  -5     0    0    0 S  0.0  0.0   0:00.00 migration/0                                                                   &lt;br /&gt;
    4 root      15  -5     0    0    0 S  0.0  0.0   0:00.03 ksoftirqd/0                                                                   &lt;br /&gt;
    5 root      RT  -5     0    0    0 S  0.0  0.0   0:00.00 watchdog/0                                                                    &lt;br /&gt;
    6 root      15  -5     0    0    0 S  0.0  0.0   0:00.04 events/0                                                                      &lt;br /&gt;
    7 root      15  -5     0    0    0 S  0.0  0.0   0:00.00 khelper                                                                       &lt;br /&gt;
    8 root      RT  -5     0    0    0 S  0.0  0.0   0:00.00 kstop/0                                                                       &lt;br /&gt;
    9 root      15  -5     0    0    0 S  0.0  0.0   0:00.00 kintegrityd/0                                                                 &lt;br /&gt;
   10 root      15  -5     0    0    0 S  0.0  0.0   0:00.03 kblockd/0                                                                     &lt;br /&gt;
   11 root      15  -5     0    0    0 S  0.0  0.0   0:00.00 kacpid                                                                        &lt;br /&gt;
   12 root      15  -5     0    0    0 S  0.0  0.0   0:00.00 kacpi_notify                                                                  &lt;br /&gt;
   13 root      15  -5     0    0    0 S  0.0  0.0   0:00.00 cqueue                                                                        &lt;br /&gt;
   14 root      15  -5     0    0    0 S  0.0  0.0   0:00.53 ata/0                                                                         &lt;br /&gt;
   15 root      15  -5     0    0    0 S  0.0  0.0   0:00.00 ata_aux&lt;br /&gt;
&lt;br /&gt;
Kommandos&lt;br /&gt;
&lt;br /&gt;
*h - Hilfe&lt;br /&gt;
*u - User&lt;br /&gt;
*k - Kill&lt;br /&gt;
*r - Renice&lt;br /&gt;
&lt;br /&gt;
====pstree: Zeigt die Prozesse als Baumstruktur====&lt;br /&gt;
 root@zero:~# pstree&lt;br /&gt;
 init─┬─NetworkManager&lt;br /&gt;
      ├─acpid&lt;br /&gt;
      ├─apache2───5*[apache2]&lt;br /&gt;
      ├─atd&lt;br /&gt;
      ├─bluetoothd&lt;br /&gt;
      ├─console-kit-dae───63*[{console-kit-dae}]&lt;br /&gt;
      ├─cron&lt;br /&gt;
      ├─cupsd&lt;br /&gt;
      ├─dbus-daemon&lt;br /&gt;
      ├─dd&lt;br /&gt;
      ├─gdm───gdm─┬─Xorg&lt;br /&gt;
      │           └─gdmgreeter&lt;br /&gt;
      ├─6*[getty]&lt;br /&gt;
      ├─hald───hald-runner─┬─hald-addon-acpi&lt;br /&gt;
      │                    ├─hald-addon-inpu&lt;br /&gt;
      │                    └─2*[hald-addon-stor]&lt;br /&gt;
      ├─klogd&lt;br /&gt;
      ├─nm-system-setti&lt;br /&gt;
      ├─nmbd&lt;br /&gt;
      ├─nscd───11*[{nscd}]&lt;br /&gt;
      ├─portmap&lt;br /&gt;
      ├─rpc.statd&lt;br /&gt;
      ├─slapd───2*[{slapd}]&lt;br /&gt;
      ├─smbd───smbd&lt;br /&gt;
      ├─sshd───sshd───bash───bash───pstree&lt;br /&gt;
      ├─syslogd&lt;br /&gt;
      ├─system-tools-ba&lt;br /&gt;
      ├─udevd&lt;br /&gt;
      ├─winbindd─┬─winbindd───winbindd&lt;br /&gt;
      │          └─3*[winbindd]&lt;br /&gt;
      └─wpa_supplicant&lt;br /&gt;
&lt;br /&gt;
===Jobs===&lt;br /&gt;
Unter einem Job versteht man ein Programm, welches man von der Shell gelöst&lt;br /&gt;
hat. D. h. man kann ganz normal weiter arbeiten und der Job verrichtet seinen&lt;br /&gt;
Dienst im Hintergrund. Man kann jederzeit zu diesem Job wieder Kontakt&lt;br /&gt;
aufnehmen.&lt;br /&gt;
&lt;br /&gt;
Ein Job kann auf 2 Arten gestarten werden:&lt;br /&gt;
&lt;br /&gt;
# Durch Anhängen des &amp;amp; Zeichens beim Programmstart&lt;br /&gt;
 root@zero:~# tail -f /var/log/messages &amp;amp;&lt;br /&gt;
 Jun 19 06:59:31 zero -- MARK --&lt;br /&gt;
 Jun 19 07:19:31 zero -- MARK --&lt;br /&gt;
 Jun 19 07:39:32 zero -- MARK --&lt;br /&gt;
 Jun 19 07:44:57 zero syslogd 1.5.0#5ubuntu3: restart.&lt;br /&gt;
 Jun 19 07:59:32 zero -- MARK --&lt;br /&gt;
 Jun 19 08:19:32 zero -- MARK --&lt;br /&gt;
 Jun 19 08:39:32 zero -- MARK --&lt;br /&gt;
 Jun 19 08:59:32 zero -- MARK --&lt;br /&gt;
 Jun 19 09:19:33 zero -- MARK --&lt;br /&gt;
 Jun 19 09:39:33 zero -- MARK --&lt;br /&gt;
 [3] 27421&lt;br /&gt;
&lt;br /&gt;
# Durch Stoppen des Prozesses durch Drücken von Strg-Z und in den Hintergrund schicken mit %n (n ist die Jobnummer)&lt;br /&gt;
 root@zero:~# watch cat /proc/cpuinfo&lt;br /&gt;
 Strg-Z&lt;br /&gt;
 [4]+  Stopped                 watch cat /proc/cpuinfo&lt;br /&gt;
 root@zero:~# bg %4&lt;br /&gt;
 [4]+ watch cat /proc/cpuinfo &amp;amp;&lt;br /&gt;
&lt;br /&gt;
Anweisungen im Zusammenhang mit Jobs (n ist die Jobnummer)&lt;br /&gt;
* bg %n : Einen Job in den Hintergrund stellen (wie oben)&lt;br /&gt;
* fg %n : Einen Job in den Vordergrund holen&lt;br /&gt;
 root@zero:~# fg %4&lt;br /&gt;
 watch cat /proc/cpuinfo&lt;br /&gt;
&lt;br /&gt;
* jobs : Aktive Jobs ausgeben&lt;br /&gt;
&lt;br /&gt;
 root@zero:~# jobs&lt;br /&gt;
 [1]   Running                 tail -f /var/log/syslog &amp;amp;&lt;br /&gt;
 [2]   Running                 tail -f /var/log/syslog &amp;amp;&lt;br /&gt;
 [3]-  Running                 tail -f /var/log/messages &amp;amp;&lt;br /&gt;
 [4]+  Stopped                 watch cat /proc/cpuinfo&lt;br /&gt;
&lt;br /&gt;
* Strg-Z : Einen Vordergrund-Job vorübergehend anhalten&lt;br /&gt;
* kill -STOP %n : Unterbricht Job im Hintergrund&lt;br /&gt;
 root@zero:~# kill -STOP %1&lt;br /&gt;
 root@zero:~# jobs&lt;br /&gt;
 [1]+  '''Stopped'''                 tail -f /var/log/syslog&lt;br /&gt;
 [2]   Running                 tail -f /var/log/syslog &amp;amp;&lt;br /&gt;
 [3]   Running                 tail -f /var/log/messages &amp;amp;&lt;br /&gt;
 [4]-  Stopped                 watch cat /proc/cpuinfo&lt;br /&gt;
* kill -CONT %n : Setzt den unterbrochenen Job im Hintergrund fort&lt;br /&gt;
root@zero:~# kill -CONT %1&lt;br /&gt;
root@zero:~# jobs&lt;br /&gt;
 [1]+  '''Running'''                 tail -f /var/log/syslog &amp;amp;&lt;br /&gt;
 [2]   Running                 tail -f /var/log/syslog &amp;amp;&lt;br /&gt;
 [3]   Running                 tail -f /var/log/messages &amp;amp;&lt;br /&gt;
 [4]-  Stopped                 watch cat /proc/cpuinfo&lt;br /&gt;
* kill -KILL %n : Tötet Job im Hintergrund&lt;br /&gt;
 root@zero:~# kill -KILL %1&lt;br /&gt;
 root@zero:~# jobs&lt;br /&gt;
 [1]+  '''Killed'''                  tail -f /var/log/syslog&lt;br /&gt;
 [2]   Running                 tail -f /var/log/syslog &amp;amp;&lt;br /&gt;
 [3]   Running                 tail -f /var/log/messages &amp;amp;&lt;br /&gt;
 [4]-  Stopped                 watch cat /proc/cpuinfo&lt;br /&gt;
 root@zero:~# jobs&lt;br /&gt;
 [2]   Running                 tail -f /var/log/syslog &amp;amp;&lt;br /&gt;
 [3]-  Running                 tail -f /var/log/messages &amp;amp;&lt;br /&gt;
 [4]+  Stopped                 watch cat /proc/cpuinfo&lt;br /&gt;
&lt;br /&gt;
Bedingungen, die zu Jobausführung eingehalten werden sollen:&lt;br /&gt;
* Der Job soll nicht auf den Bildschirm schreiben (Standardausgabe +Standardfehlerkanal).&lt;br /&gt;
* Er soll keine Eingaben vom Benutzer erwarten.&lt;br /&gt;
&lt;br /&gt;
==Suchen von Dateien==&lt;br /&gt;
===find===&lt;br /&gt;
 find ab_wo_wird_gesucht was_wird_gesucht aktion&lt;br /&gt;
 find [Pfad] [Bedingung] [Aktion]&lt;br /&gt;
&lt;br /&gt;
====Nach Namen====&lt;br /&gt;
 find [Pfad] '''-name''' [Name]&lt;br /&gt;
 &lt;br /&gt;
Finde alle Dateien mit Namen test ab dem Verzeichnis /home und gebe diese Zeilenweise aus&lt;br /&gt;
 root@zero:~# find /home -name test -print&lt;br /&gt;
 /home/xinux/test&lt;br /&gt;
 /home/test&lt;br /&gt;
&lt;br /&gt;
Wie oben, jedoch mit Namensanfang test&lt;br /&gt;
 root@zero:/home/xinux# find /home -name 'test*'&lt;br /&gt;
 /home/xinux/testdatei&lt;br /&gt;
 /home/xinux/test&lt;br /&gt;
 /home/test&lt;br /&gt;
&lt;br /&gt;
====Nach Benutzer(Eigentümer)====&lt;br /&gt;
 root@zero:/tmp# find /tmp/ '''-user''' xinux&lt;br /&gt;
 /tmp/datei&lt;br /&gt;
&lt;br /&gt;
====Nach Gruppe====&lt;br /&gt;
 root@zero:/tmp# find /tmp/ '''-group''' hacker&lt;br /&gt;
 /tmp/datei3&lt;br /&gt;
 /tmp/datei2&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
====Nach Typ====&lt;br /&gt;
Es wird nach Dateien anhand Ihrer Art gesucht:&lt;br /&gt;
 find [Pfad] '''-type''' [Typ] &lt;br /&gt;
Typ:&lt;br /&gt;
* f: Normale Dateien&lt;br /&gt;
 root@zero:~# find /tmp/ -type f&lt;br /&gt;
 /tmp/mbr.img&lt;br /&gt;
 /tmp/datei&lt;br /&gt;
 /tmp/zeugs&lt;br /&gt;
 /tmp/.X0-lock&lt;br /&gt;
* d: Verzeichnisse&lt;br /&gt;
 root@zero:~# find /var/log -type d&lt;br /&gt;
 /var/log&lt;br /&gt;
 /var/log/apache2&lt;br /&gt;
 /var/log/unattended-upgrades&lt;br /&gt;
 /var/log/apparmor&lt;br /&gt;
 /var/log/ConsoleKit&lt;br /&gt;
 /var/log/dist-upgrade&lt;br /&gt;
 /var/log/dist-upgrade/20090526-1052&lt;br /&gt;
 /var/log/cups&lt;br /&gt;
 /var/log/apt&lt;br /&gt;
 /var/log/fsck&lt;br /&gt;
 /var/log/samba&lt;br /&gt;
 /var/log/samba/cores&lt;br /&gt;
 /var/log/samba/cores/smbd&lt;br /&gt;
 /var/log/samba/cores/nmbd&lt;br /&gt;
 /var/log/samba/cores/winbindd&lt;br /&gt;
 /var/log/installer&lt;br /&gt;
 /var/log/gdm&lt;br /&gt;
 /var/log/news&lt;br /&gt;
* c: Char Devices (Zeichenorientierte Gerätedatei)&lt;br /&gt;
 root@zero:~# find / -type c&lt;br /&gt;
 /lib/udev/devices/kmem&lt;br /&gt;
 /lib/udev/devices/null&lt;br /&gt;
 /lib/udev/devices/console&lt;br /&gt;
 /lib/udev/devices/ppp&lt;br /&gt;
 /lib/udev/devices/net/tun&lt;br /&gt;
* b: Block Devices (Blockorientierte Gerätedatei)&lt;br /&gt;
* p: Benannte Pipe&lt;br /&gt;
* l: Links&lt;br /&gt;
* s: Sockets&lt;br /&gt;
&lt;br /&gt;
====Nach Modifikation====&lt;br /&gt;
Listet alle Dateien in /etc auf, die innerhalb von zwei Tagen modifiziert wurden&lt;br /&gt;
 root@zero:/var/log# find /etc/ -mtime 2 -print&lt;br /&gt;
 /etc/apache2&lt;br /&gt;
 /etc/apache2/mods-available&lt;br /&gt;
 /etc/apache2/conf.d&lt;br /&gt;
 /etc/apache2/sites-available&lt;br /&gt;
 /etc/bash_completion.d&lt;br /&gt;
 /etc/blkid.tab.old&lt;br /&gt;
 /etc/firefox-3.0/profile&lt;br /&gt;
 /etc/firefox-3.0/profile/chrome&lt;br /&gt;
 /etc/firefox-3.0/pref&lt;br /&gt;
 /etc/profile.d&lt;br /&gt;
 /etc/ufw/applications.d&lt;br /&gt;
 /etc/logrotate.d&lt;br /&gt;
 /etc/xulrunner-1.9&lt;br /&gt;
 /etc/blkid.tab&lt;br /&gt;
 /etc/cron.daily&lt;br /&gt;
 /etc/alternatives&lt;br /&gt;
 /etc/alternatives/x-www-browser&lt;br /&gt;
 /etc/alternatives/xulrunner&lt;br /&gt;
 /etc/gre.d&lt;br /&gt;
 /etc/hal/fdi/policy&lt;br /&gt;
 /etc/dbus-1/system.d&lt;br /&gt;
 /etc/udev/rules.d&lt;br /&gt;
&lt;br /&gt;
====Nach Größe====&lt;br /&gt;
Finde Dateien in /tmp, die größer als 100 MByte sind&lt;br /&gt;
 root@zero:/tmp# find /tmp/ -size +100M&lt;br /&gt;
 /tmp/datei&lt;br /&gt;
&lt;br /&gt;
Finde Dateien in /tmp, die kleiner als 100 KByte sind&lt;br /&gt;
 root@zero:/tmp# find /tmp/ -size -100k&lt;br /&gt;
 /tmp/&lt;br /&gt;
 /tmp/datei3&lt;br /&gt;
 /tmp/backup &lt;br /&gt;
 /tmp/datei2&lt;br /&gt;
 /tmp/.winbindd &lt;br /&gt;
 /tmp/.winbindd/pipe&lt;br /&gt;
 /tmp/mbr.img&lt;br /&gt;
 /tmp/zeugs&lt;br /&gt;
 /tmp/.ICE-unix&lt;br /&gt;
 /tmp/.X0-lock&lt;br /&gt;
 /tmp/datei1&lt;br /&gt;
 /tmp/.X11-unix&lt;br /&gt;
 /tmp/.X11-unix/X0&lt;br /&gt;
 /tmp/pulse-PKdhtXMmr18n&lt;br /&gt;
&lt;br /&gt;
====Nach Berechtigungen====&lt;br /&gt;
Finde Dateien in Home mit der Berechtigung 777 (-rwxrwxrwx)&lt;br /&gt;
 root@zero:/var# find /home/ -perm 777&lt;br /&gt;
 /home/samba&lt;br /&gt;
 /home/xinux/Examples&lt;br /&gt;
 /home/xinux/.pulse/1f0763ee4cf4c7e1d3c07fd149dda37b:runtime&lt;br /&gt;
 /home/test/Examples&lt;br /&gt;
&lt;br /&gt;
===locate===&lt;br /&gt;
Locate arbeitet über einen Index, der erstellt und aktualisiert werden muss. Aus diesem Grund kann locate teilweise nicht &lt;br /&gt;
akutell sein. Es ist immer schneller als find und es durchsucht immer das ganze Dateisystem. &lt;br /&gt;
 locate [Dateiname]&lt;br /&gt;
 &lt;br /&gt;
Lokalisiere die Datei wvdial.conf. Anmerkung: Der Stern wird beim Suchen automatisch hinzugefügt. Entspricht also&lt;br /&gt;
wvidal.conf*&lt;br /&gt;
 root@zero:~# locate wvdial.conf&lt;br /&gt;
 /etc/wvdial.conf&lt;br /&gt;
 /usr/share/man/man5/wvdial.conf.5.gz&lt;br /&gt;
 /var/lib/dpkg/info/wvdial.conffiles&lt;br /&gt;
 /var/lib/dpkg/info/wvdial.config&lt;br /&gt;
&lt;br /&gt;
Lokalisiere die Datei wvdial.conf und nur diese&lt;br /&gt;
 root@zero:~# locate -b '\wvdial.conf'&lt;br /&gt;
 /etc/wvdial.conf&lt;br /&gt;
&lt;br /&gt;
Aktualisieren des Indexes&lt;br /&gt;
 root@zero:~# updatedb&lt;br /&gt;
&lt;br /&gt;
==Wie wird ein Kommando lokalisiert==&lt;br /&gt;
Wenn die Shell alle Ersetzungen in der Kommandozeile vorgenommen und alle Umleitungen vorbereitet hat, ist der Zeitpunkt &lt;br /&gt;
gekommen, auf den der Anwender die ganze Zeit gewartet hat. Die Shell versucht das Kommando auszuführen. Dazu muss sie &lt;br /&gt;
es aber erst lokalisieren. Das erste passende Kommando wird ausgeführt.&lt;br /&gt;
&lt;br /&gt;
Als Kommandoname wird immer das erste Wort eines einfachen Kommandos erkannt. Ein Kommandoname kann mit Pfadnamen in &lt;br /&gt;
einem Verzeichnis (absolut oder relativ) angegeben werden. Die Shell erkennt dies an (mindestens) einem Slash `/' &lt;br /&gt;
im Kommandonamen. Wenn kein Verzeichnis angegeben ist, versucht die Shell selbst, das Kommando zu finden. Dazu wird &lt;br /&gt;
der Kommandoname zuerst in der Hashtabelle gesucht, dann wird er mit den Synonymen, mit den Scriptfunktionen und &lt;br /&gt;
schließlich mit den Shellfunktionen verglichen. &lt;br /&gt;
&lt;br /&gt;
Wird auf diese Weise kein Programm dieses Namens gefunden, werden alle in der PATH-Umgebungsvariablen aufgeführten &lt;br /&gt;
Verzeichnisse nach einer ausführbaren Datei dieses Namens durchsucht. Wird auch hier kein passendes Kommando gefunden, &lt;br /&gt;
gibt die Shell eine Fehlermeldung aus.&lt;br /&gt;
&lt;br /&gt;
===which und type===&lt;br /&gt;
====which====&lt;br /&gt;
which gibt die vollen Pfadnamen der Dateien aus, die bei Benutzung des angegebenen Befehls ausgeführt werden würden.&lt;br /&gt;
&lt;br /&gt;
 which [-a] Dateiname &lt;br /&gt;
&lt;br /&gt;
Optionen:&lt;br /&gt;
&lt;br /&gt;
* -a : Alle Treffer ausgeben, nicht nur den ersten&lt;br /&gt;
* --skip-dot : Verzeichnisse, die mit einem Punkt beginnen, auslassen&lt;br /&gt;
&lt;br /&gt;
Beispiel&lt;br /&gt;
 root@zero:~# which startx&lt;br /&gt;
 /usr/bin/startx&lt;br /&gt;
&lt;br /&gt;
====type====&lt;br /&gt;
Anzeigen der absoluten Pfadnamen von Befehlen, und ob sich diese Befehle in der Hash-Tabelle der aktuellen&lt;br /&gt;
Shell befinden.&lt;br /&gt;
&lt;br /&gt;
 type [Optionen] Befehle&lt;br /&gt;
&lt;br /&gt;
Beispiel&lt;br /&gt;
 root@zero:~# type ls&lt;br /&gt;
 ls is aliased to `ls --color=auto'&lt;br /&gt;
&lt;br /&gt;
Optionen:&lt;br /&gt;
&lt;br /&gt;
* -a : Alle vorkommenden Befehle werden ausgegeben, nicht nur das, welches aufgerufen werden würde&lt;br /&gt;
 root@zero:~# type '''-a''' ls&lt;br /&gt;
 ls is aliased to `ls --color=auto'&lt;br /&gt;
 ls is /bin/ls&lt;br /&gt;
&lt;br /&gt;
* -p : Anzeigen des Eintrags von Befehl in der Hash-Tabelle. Dieser Wert kann sich vom ersten Auftreten des Befehls in PATH&lt;br /&gt;
unterscheiden&lt;br /&gt;
 root@zero:~# type '''-p''' apache2&lt;br /&gt;
 /usr/sbin/apache2&lt;br /&gt;
&lt;br /&gt;
* -t : Anzeigen, ob Befehl ein Aliasname, ein Schlüsselwort, eine Funktion, ein eingebauter Befehl oder eine Datei ist&lt;br /&gt;
 root@zero:~# type '''-t''' apache2&lt;br /&gt;
 file&lt;/div&gt;</summary>
		<author><name>192.168.178.46</name></author>
	</entry>
	<entry>
		<id>https://www.xinux.net/index.php?title=Linux_Grundlagen&amp;diff=116</id>
		<title>Linux Grundlagen</title>
		<link rel="alternate" type="text/html" href="https://www.xinux.net/index.php?title=Linux_Grundlagen&amp;diff=116"/>
		<updated>2009-07-08T06:53:01Z</updated>

		<summary type="html">&lt;p&gt;192.168.178.46: /* top: Zeigt die Prozesse mit ihrem Status an (Abbrechen mit q) */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Einführung==&lt;br /&gt;
===Geschichte Unix===&lt;br /&gt;
====1969====&lt;br /&gt;
Am Anfang von Linux steht Multics, ein von Bell Laboratories geschaffenes &amp;quot;Betriebssystem&amp;quot;, &lt;br /&gt;
das noch mit Lochkarten arbeitete. Multics wird mit Unterstützung von AT&amp;amp;T und Western &lt;br /&gt;
Electric unter Mitarbeit von Ken Thompson und Dennis Ritchie weiterentwickelt. Obwohl sich &lt;br /&gt;
Bell Laboratories bald zurückzieht, gibt Thompson das Projekt nicht auf.  Zum Entwicklerteam &lt;br /&gt;
gehören auch Rudd Canaday und Brian Kernighan. Letzterer gibt 1970 dem Betriebssystem den Namen UNIX. &lt;br /&gt;
Thompson definiert 7 Richtlinien für UNIX:&lt;br /&gt;
 &lt;br /&gt;
# Hierarchische Anordnung der Dateisysteme&lt;br /&gt;
# Die Ausgabe von Daten an die Peripherie(-geräte) und Dateien soll gleich sein.&lt;br /&gt;
# Prozesse und Programme sollen miteinander kommunizieren.&lt;br /&gt;
# Multitasking (voneinander getrennte Prozesse)&lt;br /&gt;
# Persönliche Shell's&lt;br /&gt;
# Der Compiler soll für viele Programmiersprachen tauglich sein.&lt;br /&gt;
# Portabilität&lt;br /&gt;
&lt;br /&gt;
====1971====&lt;br /&gt;
Bis 1971 ist das für eine DEC PDP-7 geschriebene Unix als Version 1 auf eine PDP-11 portiert. Bis&lt;br /&gt;
zur Version 4 entwickelt Ritchie die Programmier- (Hoch-) Sprache C. Das in Assembler geschriebene&lt;br /&gt;
Unix wird fast völlig nach C übersetzt, wodurch zum erstenmal die geforderte Hardware-Unabhängigkeit&lt;br /&gt;
des Betriebssystems realisiert werden kann.&lt;br /&gt;
&lt;br /&gt;
====1975====&lt;br /&gt;
Da AT&amp;amp;T aufgrund vertraglicher Bindungen mit der US-Bundesregierung Unix nicht kommerziell vermarkten darf, stellt sie den Source Code für ein paar hundert Dollar den Universitäten, Lehr- und Forschungsanstalten zur Verfügung. Dies führt zu einer sehr dynamischen Entwicklung von Unix. 1975 wird die Version 6 als erstes UNIX-System veröffentlicht, die darauffolgende Version 7 wird sehr erfolgreich. Da es keine Standardisierung gibt, entwickeln bald verschiedenste Firmen ihr eigenes UNIX. Ab 1984 wird AT&amp;amp;T per Gerichtsbeschluss erlaubt, Unix zu vermarkten. AT&amp;amp;T verkauft sein Unix V und beginnt, sich um einen internationalen Standard von UNIX zu bemühen. &lt;br /&gt;
&lt;br /&gt;
====1984====&lt;br /&gt;
Durch Richard Stallman wird die Free Software Foundation (FSF) gegründet. Diese initiiert ein Projekt namens GNU (GNU ist Not Unix), welches das Ziel verfolgt, ein freies UNIX System zu schaffen. &lt;br /&gt;
&lt;br /&gt;
====1987====&lt;br /&gt;
AT&amp;amp;T verbietet die Verwendung des Unix Quellcodes an den Universitäten. Während dieser Zeit ist Andrew (Andy) Tannenbaum Professor an der Freien Universität von Amsterdam und entwickelt Minix. Minix ist ein kostengünstiges Lehrbetriebssystem und kommt ohne jeglichen AT&amp;amp;T Code aus, obwohl es die gleiche Funktionalität wie Unix 7 bietet. Im Usenet unter comp.os.minix entsteht eine Minix-Gemeinde, die den Minix Kernel und die Anwendungen rundherum programmiert und verbessert.&lt;br /&gt;
&lt;br /&gt;
====1991====&lt;br /&gt;
Linus Torvalds hat als Student für Computerwissenschaften an der Universität in Helsinki Minix installiert und das Buch von Andy Tannenbaum gelesen. Er beginnt im Sinne der FSF einen Unix ähnlichen Kernel zu programmieren mit der Idee, &amp;quot;ein besseres Minix als Minix&amp;quot; zu bauen. 1992 stellt er die Version 0.02 mit dem Namen Linux der Internetgemeinde zur Verfügung. &lt;br /&gt;
&lt;br /&gt;
====1994====&lt;br /&gt;
Die Linux Version 1.0 wird freigegeben. Das Linux Fieber beginnt... &lt;br /&gt;
&lt;br /&gt;
====1998====&lt;br /&gt;
Der Kreis der Linux Entwickler und Anwender ist kräftig angeschwollen. KDE 1.0 wird veröffentlicht. Die Zuwachsraten von Linux übertreffen die von Windows NT deutlich. &lt;br /&gt;
&lt;br /&gt;
====1999====&lt;br /&gt;
Der lange erwartete stabile Linux Kernel Version 2.2 wird freigegeben. Namhafte Firmen wie IBM kündigen ihre Unterstützung für Linux an. &lt;br /&gt;
&lt;br /&gt;
====2001====&lt;br /&gt;
Der lange erwartete stabile Linux Kernel Version 2.4 wird freigegeben. USB Unterstützung und eine neue Firewallimplementierung zeichnen ihn aus.&lt;br /&gt;
&lt;br /&gt;
====2003====&lt;br /&gt;
Linux Kernel Version 2.6 wird freigegeben. Am auffälligsten sind Änderungen bei der Modulverwaltung.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Distributionen===&lt;br /&gt;
{| Border=1 Cellpadding=2&lt;br /&gt;
| &lt;br /&gt;
|Url&lt;br /&gt;
|Paketformat&lt;br /&gt;
|-&lt;br /&gt;
|Red Hat&lt;br /&gt;
|www.redhat.com&lt;br /&gt;
|rpm&lt;br /&gt;
|-&lt;br /&gt;
|fedora&lt;br /&gt;
|fedora.redhat.com&lt;br /&gt;
|rpm&lt;br /&gt;
|-&lt;br /&gt;
|CentOS&lt;br /&gt;
|www.centos.org&lt;br /&gt;
|rpm&lt;br /&gt;
|-&lt;br /&gt;
|Suse/openSUSE&lt;br /&gt;
|www.opensuse.org&lt;br /&gt;
|rpm&lt;br /&gt;
|-&lt;br /&gt;
|Debian&lt;br /&gt;
|www.debian.org&lt;br /&gt;
|deb&lt;br /&gt;
|-&lt;br /&gt;
|Ubuntu&lt;br /&gt;
|www.ubuntu.com&lt;br /&gt;
|deb&lt;br /&gt;
|-&lt;br /&gt;
|Mandrake&lt;br /&gt;
|www.linux-mandrake.com&lt;br /&gt;
|rpm&lt;br /&gt;
|-&lt;br /&gt;
|Easy Linux&lt;br /&gt;
|www.easy-linux.de&lt;br /&gt;
|rpm&lt;br /&gt;
|-&lt;br /&gt;
|Turbo&lt;br /&gt;
|www.turbolinux.com&lt;br /&gt;
|rpm&lt;br /&gt;
|-&lt;br /&gt;
|minis&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|toms&lt;br /&gt;
|www.toms.net/rb&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|damn small linux&lt;br /&gt;
|www.damnsmalllinux.org&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|pocket-linux&lt;br /&gt;
|www.pocket-linux.org&lt;br /&gt;
|&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
====Bücher====&lt;br /&gt;
 Titel : Das Linux Anwenderhandbuch und Leitfaden für die Systemverwaltung&lt;br /&gt;
 Autor : Sebastian Hetze, Dirk Hohndel, Olaf Kirch und Martin Müller&lt;br /&gt;
 Verlag: Lunetix&lt;br /&gt;
 ISBN : 3-929764-06-7&lt;br /&gt;
&lt;br /&gt;
 Titel : Linux in a Nutshell&lt;br /&gt;
 Autor : Jessica Perry Hekman und die Mitarbeiter von O'Reilly &amp;amp; Associates&lt;br /&gt;
 Verlag: O'Reilly&lt;br /&gt;
 ISBN : 3-930673-57-6&lt;br /&gt;
&lt;br /&gt;
 Titel : Linux - Wegweiser zur Installation und Konfiguration&lt;br /&gt;
 Autor : Matt Welsh, Lar Kaufman, Matthias Kalle Dallheimer&lt;br /&gt;
 Verlag: O'Reilly&lt;br /&gt;
 ISBN : 3-930673-58-4 (deutsch), 1-56592-469-X (englisch)&lt;br /&gt;
&lt;br /&gt;
 Titel : Linux - Installation, Konfiguration, Anwendung&lt;br /&gt;
 Autor : Michael KoflerMultitasking&lt;br /&gt;
 Verlag: Addison-Wesley&lt;br /&gt;
 ISBN : 3-8273-1475-5&lt;br /&gt;
&lt;br /&gt;
 Titel : Linux - Wegweiser für Netzwerker&lt;br /&gt;
 Autor : Olaf Kirch&lt;br /&gt;
 Verlag: O'Reilly&lt;br /&gt;
 ISBN : 3-930673-18-5&lt;br /&gt;
&lt;br /&gt;
 Titel : TCP/IP-Netzwerk-Administration&lt;br /&gt;
 Autor : Craig Hunt&lt;br /&gt;
 Verlag: O'Reilly&lt;br /&gt;
 ISBN : 3-89721-110-6&lt;br /&gt;
&lt;br /&gt;
 Titel : Essential System Administration&lt;br /&gt;
 Autor : Eleen Frisch&lt;br /&gt;
 Verlag: O'Reilly&lt;br /&gt;
 ISBN : 1-56592-127-5&lt;br /&gt;
&lt;br /&gt;
==Betriebssystem==&lt;br /&gt;
===Was ist ein Betriebssystem?===&lt;br /&gt;
&lt;br /&gt;
Ein Betriebssystem liegt logisch gesehen zwischenAnwendungsprogramm und Hardware.&lt;br /&gt;
&lt;br /&gt;
Es nimmt die Anforderungen der Anwendungsprogramme entgegen und leitet&lt;br /&gt;
diese kontrolliert an die Hardware weiter. Kein Anwendungsprogramm sollte&lt;br /&gt;
direkt auf die Hardware zugreifen können. Den zentralen Zugang schafft einzig&lt;br /&gt;
das Betriebssystem. Somit kann das Betriebssystem unsinnige Anforderungen&lt;br /&gt;
oder Bedienungsfehler abblocken.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Image:Linux.jpg]]&lt;br /&gt;
&lt;br /&gt;
===Aufgaben eines Betriebssystems===&lt;br /&gt;
&lt;br /&gt;
# Verbergen der Komplexität der Maschine vor dem Anwender (Abstraktion)&lt;br /&gt;
# Bereitstellen einer Benutzerschnittstelle (&amp;quot;Kommandointerpreter&amp;quot;, &amp;quot;Shell&amp;quot;)&lt;br /&gt;
# Bereitstellen einer normierten Programmierschnittstelle (API)&lt;br /&gt;
# Verwaltung der Ressourcen der Maschine::&lt;br /&gt;
Hauptspeicher&lt;br /&gt;
Prozessor(en)&lt;br /&gt;
Hintergrundspeicher (Platte, Band, etc.)&lt;br /&gt;
Geräte (Terminal, Drucker, Plotter, etc.)&lt;br /&gt;
Rechenzeit&lt;br /&gt;
Koordination von Prozessen&lt;br /&gt;
&lt;br /&gt;
===Aufbau eines Betriebssystems===&lt;br /&gt;
&lt;br /&gt;
Ein Rechensystem besteht aus Hardware, Systemprogrammen und Anwendungs-&lt;br /&gt;
programmen. Unter einem Betriebssystem wird meist die Summe aus Betriebs-&lt;br /&gt;
systemkern (Kernel) und den wichtigsten Systemprogrammen verstanden. Ein&lt;br /&gt;
minimaler LINUX-Kernel besitzt ungefähr eine Größe von 400 - 800 kByte.&lt;br /&gt;
Weitere wichtige Systemkomponenten benötigen zusätzlich 10 - 100 Mbyte&lt;br /&gt;
Plattenplatz.&lt;br /&gt;
&lt;br /&gt;
Ein Betriebssystem stellt den Rechner als erweiterte Maschine (virtuelle&lt;br /&gt;
Maschine) über definierte Software-Schnittstellen zur Verfügung.&lt;br /&gt;
Das Betriebssystem dient als Betriebsmittelverwalter, der Anforderungen&lt;br /&gt;
befriedigt, protokolliert, abrechnet und vermittelt.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Aufgaben des Betriebssystemkerns:&lt;br /&gt;
&lt;br /&gt;
{| Border=1 Cellpadding=2&lt;br /&gt;
|Prozessverwaltung  (dispatching and scheduling)&lt;br /&gt;
| Mehrere Benutzer können mit mehreren Aktionen gleichzeitig im System arbeiten, ohne sich gegenseitig zu beeinflussen. Damit dies möglich ist,  müssen die Aktionen organisiert, koordiniert und verwaltet werden. Die zu verwaltende Einheit nennt man Prozess.&lt;br /&gt;
|-&lt;br /&gt;
|Speicherverwaltung   (memory management)&lt;br /&gt;
|Zuteilen von Speicherbereichen an laufende Prozesse, Schutz der Speicherbereiche vor unbefugten Zugriffen, bei Speicherengpässen: Auslagern von ganzen (swapping) oder von Teilen (paging) von Prozessen auf die Platte (swap file).&lt;br /&gt;
|-&lt;br /&gt;
|Dateiverwaltung  (file handling)&lt;br /&gt;
|Zuteilung von Plattenplatz für Programme, Benutzer und Systemdienste, Schreiben, Lesen und Strukturieren der Daten auf den Massenspeichern; Durch Bereitstellung einer entsprechenden Schnittstelle (VFS, virtual file system) kann der Kern Dateisysteme unterschiedlichster Art (EXT2, FAT, NFS, HPFS, NTFS, ...) ansprechen.&lt;br /&gt;
|-&lt;br /&gt;
|Geräteverwaltung  (resource management)&lt;br /&gt;
|Der Kern ermöglicht und kontrolliert den Zugriff auf die Hardware. Er steuert die Ein- und Ausgabetätigkeiten der Anwender. An den Kern&lt;br /&gt;
gebunden sind die entsprechenden Gerätetreiber (device driver), die damit eine Kommunikation zwischen Kern und Hardware ermöglichen.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
===Multitasking===&lt;br /&gt;
&lt;br /&gt;
Multitasking bedeutet, dass ein Rechner aus Anwendersicht mehrere Aufgaben&lt;br /&gt;
(Tasks) gleichzeitg übernehmen kann. Das Betriebssystem (OS) unterteilt die&lt;br /&gt;
gleichzeitig anstehenden Aufgaben in Einzelarbeitsschritte (Prozesse) und&lt;br /&gt;
managed durch ein Zeitscheibenverfahren (scheduling) die gleichmäßige&lt;br /&gt;
Abarbeitung der Prozesse.&lt;br /&gt;
&lt;br /&gt;
Es wird unterschieden zwischen:&lt;br /&gt;
&lt;br /&gt;
*non-präamptiven (kooperativen=die Ressourcen werden vom aktiven Prozess freigegeben, bei einem Hänger steht das ganze System)&lt;br /&gt;
&lt;br /&gt;
und&lt;br /&gt;
&lt;br /&gt;
*präamptiven (reinem=der Betriebssystemkern steuert Taskwechsel, indem nach einer festgelegten Zeit vom gerade aktiven Prozess zum nächsten weitergeschaltet wird)&lt;br /&gt;
&lt;br /&gt;
===Mehrprozessorbetrieb===&lt;br /&gt;
&lt;br /&gt;
Bei mehreren Prozessoren und Unterstützung durch das OS&lt;br /&gt;
(NT,Linux,Unix,Novell) können mehrere Tasks auf diese verteilt werden und&lt;br /&gt;
gleichzeitig bearbeitet werden. Nachteilig ist, dass dies nicht oder kaum von&lt;br /&gt;
Anwendungsprogrammen unterstützt wird und es zu Kommunikationsproblemen&lt;br /&gt;
zwischen den einzelnen Tasks kommen kann.&lt;br /&gt;
&lt;br /&gt;
===Arten von von Betriebssystemen===&lt;br /&gt;
&lt;br /&gt;
{|Border=1 Cellpadding=2&lt;br /&gt;
|&lt;br /&gt;
|SingleUser  &lt;br /&gt;
|Multiuser&lt;br /&gt;
|-&lt;br /&gt;
|Single Tasking&lt;br /&gt;
|MS - DOS&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|Multi Tasking&lt;br /&gt;
|Windows 3.x&lt;br /&gt;
|UNIX&lt;br /&gt;
|-&lt;br /&gt;
|&lt;br /&gt;
|Windows 95/98&lt;br /&gt;
|Linux&lt;br /&gt;
|-&lt;br /&gt;
|&lt;br /&gt;
|Windows NT4 ohne Erweiterungen&lt;br /&gt;
|VMS&lt;br /&gt;
|-&lt;br /&gt;
|&lt;br /&gt;
|OS/2 &lt;br /&gt;
|Windows NT mit  Erweiterungen&lt;br /&gt;
|-&lt;br /&gt;
|&lt;br /&gt;
|Apple&lt;br /&gt;
|Windows 2000, XP, 2003&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
===SHELL===&lt;br /&gt;
&lt;br /&gt;
Wenn man mit Linux arbeiten will, kann man nicht direkt mit dem Betriebssystem&lt;br /&gt;
kommunizieren. Man braucht dazu ein Hilfsprogramm, welches die&lt;br /&gt;
Kommandoeingaben ordnungsgemäß an das Betriebssystem weiterleitet. Dieses&lt;br /&gt;
Hilfsprogramm hat den Namen Shell.&lt;br /&gt;
&lt;br /&gt;
Die Shell schirmt den Betriebssystemkern von den Anwendungsprogrammen ab.&lt;br /&gt;
Die unterschiedlichen Shells erfüllen alle dieselbe Aufgabe, sie unterscheiden sich&lt;br /&gt;
allerdings in ihrer Syntax.&lt;br /&gt;
&lt;br /&gt;
==Die Installation im Überblick==&lt;br /&gt;
&lt;br /&gt;
Die Installation von Linux geschieht in folgenden Schritten:&lt;br /&gt;
&lt;br /&gt;
# Analyse (Welche Hardware habe ich? ,Hab ich weitere Betriebsysteme?)&lt;br /&gt;
# Booten des Linux-Kernels. (von CD oder Diskette)&lt;br /&gt;
# Laden einer RAM-Disk (das macht das Installationsprogramm automatisch).&lt;br /&gt;
# Partitionieren der Festplatte (fdisk).&lt;br /&gt;
# Einrichten der Swappartition (mkswap), Formatieren der Festplatte (mkfs).&lt;br /&gt;
# Montieren der Dateisysteme (mount), Aktivieren der Swapbereiche (swapon).&lt;br /&gt;
# Kopieren und Auspacken der Daten vom Installationsmedium auf die Festplatte (die eigentliche Installation). (rpm, dpkg oder tar).&lt;br /&gt;
# Geeignete Wahl der Bootmethode unter Berücksichtigung von Punkt 1 (grub, lilo).&lt;br /&gt;
# Konfiguration des Systems (Netz, Modem etc...).&lt;br /&gt;
&lt;br /&gt;
==Erste Schritte==&lt;br /&gt;
===Anmelden===&lt;br /&gt;
Sie können sich nun mit dem Usernamen und dem Passwort, das sie bei der Installation angelegt haben anmelden!&lt;br /&gt;
[[Image:benutzer.jpg]]&lt;br /&gt;
&lt;br /&gt;
[[Image:passwd.jpg]]&lt;br /&gt;
&lt;br /&gt;
===Terminal öffnen===&lt;br /&gt;
&lt;br /&gt;
Ein Terminal öffnen Sie über das Startmenü:&lt;br /&gt;
&lt;br /&gt;
[[Image:Terminalde.jpg]]&lt;br /&gt;
&lt;br /&gt;
Das geöffnete Terminal sieht dann folgendermaßen aus:&lt;br /&gt;
&lt;br /&gt;
[[Image:Terminalde2.jpg]]&lt;br /&gt;
&lt;br /&gt;
===Sudo===&lt;br /&gt;
Rootrechte erlangen sie über den &amp;quot;Sudo&amp;quot;-Befehl&lt;br /&gt;
 &lt;br /&gt;
''Den nächsten Befehl als root ausführen''&lt;br /&gt;
 xinux@zero:~$ sudo cat /etc/shadow&lt;br /&gt;
 [sudo] password for xinux:&lt;br /&gt;
&lt;br /&gt;
''Eine komplette Sitzung als root starten''&lt;br /&gt;
 xinux@zero:~$ sudo -i&lt;br /&gt;
 [sudo] password for xinux:&lt;br /&gt;
 root@zero:~#&lt;br /&gt;
&lt;br /&gt;
===Virtuelle Konsolen===&lt;br /&gt;
&lt;br /&gt;
In die Virtuelle Konsole gelangen sie über &amp;quot;STRG+ALT+(F1-F6)&amp;quot;.&lt;br /&gt;
Sie funktioniert wie ein ganz normales Terminal, und mit &amp;quot;ALT+F7&amp;quot;&lt;br /&gt;
gelangen sie wieder zurück auf die grafische Benutzeroberfläche&lt;br /&gt;
&lt;br /&gt;
===Abmelden===&lt;br /&gt;
&lt;br /&gt;
Abmelden können Sie sich wieder über das Startmenu unter:&lt;br /&gt;
&lt;br /&gt;
[[Image:Logout.jpg]]&lt;br /&gt;
&lt;br /&gt;
Fals sie nur einzelne Sitzungen in einem der Terminals oder &lt;br /&gt;
den Virtuellen Konsolen Abmelden wollen benutzen sie dazu den Befehl: &amp;quot;exit&amp;quot;&lt;br /&gt;
&lt;br /&gt;
===Herunterfahren===&lt;br /&gt;
&lt;br /&gt;
Das Herunterfahren funktioniert auf dem selben Weg.&lt;br /&gt;
&lt;br /&gt;
Entweder sie Benutzen wieder das Startmenü und benutzen diesmal den &amp;quot;Ausschalten ...&amp;quot; Knopf,&lt;br /&gt;
&lt;br /&gt;
Oder sie geben den äquivalenten &amp;quot;shutdown&amp;quot;-Befehl in einem Terminal bzw. der virtuellen Konsole ein.&lt;br /&gt;
&lt;br /&gt;
Allerdings müssen sie dazu als Administrator angemeldet sein s. &amp;quot;Sudo&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Wenn Sie den &amp;quot;shutdown&amp;quot;-Befehl benutzen wollen muss hinter den Befehl&lt;br /&gt;
&lt;br /&gt;
eine Zeitangabe in Minuten oder das wort &amp;quot;now&amp;quot; für sofortiges Ausschalten hinzugefügt werden:&lt;br /&gt;
&lt;br /&gt;
 xinux@zero:~$ sudo -i&lt;br /&gt;
 root@zero:~# shutdown 60&lt;br /&gt;
 &lt;br /&gt;
 Broadcast message from xinux@zero &lt;br /&gt;
         (/dev/pts/3) at 14:29 ...&lt;br /&gt;
 &lt;br /&gt;
 The system is going down for maintenance in 60 minutes!&lt;br /&gt;
&lt;br /&gt;
Sollten sie den Befehl widerrufen wollen dann drücken sie &amp;quot;STRG+C&amp;quot;,&lt;br /&gt;
&lt;br /&gt;
in dem Terminal in dem der shutdown Befehl gestartet wurde,&lt;br /&gt;
&lt;br /&gt;
oder geben sie den &amp;quot;shutdown&amp;quot;-Befehl zusammen mit der Abbruchoption &amp;quot;-c&amp;quot; in einem anderen Terminal ein:&lt;br /&gt;
&lt;br /&gt;
 root@zero:~# shutdown -c&lt;br /&gt;
&lt;br /&gt;
 shutdown: Shutdown cancelled&lt;br /&gt;
 root@zero:~# &lt;br /&gt;
&lt;br /&gt;
Wenn Sie den Rechner Neustarten möchten gibt es dazu die Option &amp;quot;-r&amp;quot; für den &amp;quot;shutdown&amp;quot;-Befehl&lt;br /&gt;
&lt;br /&gt;
oder den &amp;quot;reboot&amp;quot;-Befehl die beide auch als root ausgeführt werden müssen:&lt;br /&gt;
&lt;br /&gt;
 xinux@zero:~$ sudo -i&lt;br /&gt;
 [sudo] password for xinux: &lt;br /&gt;
 root@zero:~# shutdown -r now&lt;br /&gt;
&lt;br /&gt;
 root@zero:~# reboot&lt;br /&gt;
&lt;br /&gt;
===&amp;quot;man&amp;quot;===&lt;br /&gt;
&lt;br /&gt;
Programm zum Einsehen der Online-Manuals&lt;br /&gt;
&lt;br /&gt;
Die Manuals sind in folgende Sektionen unterteilt:&lt;br /&gt;
# Ausführbare Programme oder Shellbefehle&lt;br /&gt;
# Systemaufrufe (Kernelfunktionen)&lt;br /&gt;
# Bibliotheksaufrufe (Funktionen in System-Bibliotheken)&lt;br /&gt;
# Spezielle Dateien (gewöhnlich in /dev)&lt;br /&gt;
# Dateiformate und Konventionen, z. B. /etc/passwd&lt;br /&gt;
# Spiele&lt;br /&gt;
# Makropakete und Konventionen, z. B. man(7), groff(7)&lt;br /&gt;
# Systemadministrationsbefehle (in der Regel nur für root)&lt;br /&gt;
# Kernelroutinen [Nicht Standard]&lt;br /&gt;
&lt;br /&gt;
Aufruf eines Manuals erfolgt durch ''man kommando''&lt;br /&gt;
Beendet wird durch Drücken des Buchstabens q&lt;br /&gt;
Gesucht wird vorwärts durch Eingabe eines /suchausdruck&lt;br /&gt;
Gesucht wird rückwärts durch Eingabe eines ?suchausdruck&lt;br /&gt;
&lt;br /&gt;
Beispiele:&lt;br /&gt;
&lt;br /&gt;
      man passwd        Anschauen der Manualseite zum Programm passwd&lt;br /&gt;
      man 5 passwd      Anschauen der Manualseite zur Datei /etc/passwd&lt;br /&gt;
      man -a passwd     Anschauen aller Manualseiten zu passwd&lt;br /&gt;
      man -k passwd     Durchsucht die Kurzbeschreibungen der Manualseite&lt;br /&gt;
                        nach passwd und gibt alle Treffer aus&lt;br /&gt;
      man -f passwd      Gibt alle gefunden Kurzbescheibungen zu passwd aus&lt;br /&gt;
      man -L en passwd Gibt englische Manualseiten aus&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Was geht vor auf meinem System? (date,who)===&lt;br /&gt;
&lt;br /&gt;
Das Kommando date dient zur Abfrage von Datum und Uhrzeit.&lt;br /&gt;
&lt;br /&gt;
 xinux@zero:~ &amp;gt; date&lt;br /&gt;
 Fre Mär 16 16:35:03 CET 2001&lt;br /&gt;
&lt;br /&gt;
oder auch Anzeige der Grennwich Zeit:&lt;br /&gt;
&lt;br /&gt;
 xinux@zero:~ &amp;gt; date -u&lt;br /&gt;
 Fre Mär 16 15:35:34 UTC 2001&lt;br /&gt;
&lt;br /&gt;
 xinux@zero:~ &amp;gt; date -u &amp;quot;+%X&amp;quot;&lt;br /&gt;
 15:37:19&lt;br /&gt;
&lt;br /&gt;
 xinux@zero:~ &amp;gt; date -u &amp;quot;+%x&amp;quot;&lt;br /&gt;
 01/15/02&lt;br /&gt;
&lt;br /&gt;
who zeigt alle angemeldeten Benutzer an&lt;br /&gt;
&lt;br /&gt;
 thomas@cardassia:~ &amp;gt; who&lt;br /&gt;
 thomas             tty1 Feb 27 16:39&lt;br /&gt;
 thomas             tty2 Mar 2 17:08&lt;br /&gt;
 tina               tty6 Mar 16 16:38&lt;br /&gt;
&lt;br /&gt;
Mit `who --help' bekommen Sie mehr Informationen.&lt;br /&gt;
&lt;br /&gt;
 thomas@cardassia:~ &amp;gt; who --help&lt;br /&gt;
&lt;br /&gt;
Benutzung: who [OPTION]... [ DATEI | ARG1 ARG2 ]&lt;br /&gt;
&lt;br /&gt;
 -H, --heading             print line of column headings&lt;br /&gt;
 -i, -u, --idle            add user idle time as HOURS:MINUTES, . or old&lt;br /&gt;
 -l, --lookup              attempt to canonicalize hostnames via DNS&lt;br /&gt;
 -m                        only hostname and user associated with stdin&lt;br /&gt;
 -q, --count               all login names and number of users logged on&lt;br /&gt;
 -s                        (ignored)&lt;br /&gt;
 -T, -w, --mesg            add user's message status as +, - or ?&lt;br /&gt;
     --message             same as -T&lt;br /&gt;
     --writable            same as -T&lt;br /&gt;
     --help                display this help and exit&lt;br /&gt;
     --version             output version information and exit&lt;br /&gt;
&lt;br /&gt;
==Das UNIX-Dateisystem==&lt;br /&gt;
===Verzeichnisbaum===&lt;br /&gt;
&lt;br /&gt;
[[Image:vztree.jpg]]&lt;br /&gt;
&lt;br /&gt;
Das Betriebssystem UNIX besitzt ein hierarchisches Dateisystem. Es besteht aus:&lt;br /&gt;
* Dateien (Files)&lt;br /&gt;
Dateien speichern Informationen (Text, Bilder, Sound, Videos, Programme) und&lt;br /&gt;
werden über den Dateinamen angesprochen.&lt;br /&gt;
&lt;br /&gt;
* Verzeichnissen (Directories, Kataloge)&lt;br /&gt;
Verzeichnisse besitzen ebenfalls einen Namen und dienen zur Ordnung des&lt;br /&gt;
Dateisystems. Ein Verzeichnis kann Dateien und Unterverzeichnisse&lt;br /&gt;
(Subdirectories) enthalten. Das oberste Verzeichnis im Dateisystem heisst&lt;br /&gt;
Rootverzeichnis oder kurz Root und wird durch / (sprich: slash)&lt;br /&gt;
gekennzeichnet.&lt;br /&gt;
&lt;br /&gt;
Im Gegensatz zu Windows kennt UNIX keine Laufwerke.&lt;br /&gt;
Das obige Bild zeigt ein typisches UNIX-Dateisystem.&lt;br /&gt;
Unterhalb des Rootverzeichnisses befinden sich eine Vielzahl vonVerzeichnissen.&lt;br /&gt;
&lt;br /&gt;
===Wichtige Verzeichnisse===&lt;br /&gt;
&lt;br /&gt;
• '''Homeverzeichnis'''&lt;br /&gt;
&lt;br /&gt;
das Verzeichnis, in dem man sich unmittelbar nach dem Anmelden befindet. Das&lt;br /&gt;
Homeverzeichnis wird vom Systemverwalter eingerichtet; jeder Anwender&lt;br /&gt;
besitzt ein festes Homeverzeichnis. z.B. /home/hans&lt;br /&gt;
&lt;br /&gt;
~ (Tilde) bzw. $HOME (Shellvariable) kennzeichnen das Homeverzeichnis.&lt;br /&gt;
&lt;br /&gt;
• '''Aktuelles Verzeichnis'''&lt;br /&gt;
&lt;br /&gt;
Verzeichnis, in dem man sich aktuell befindet.&lt;br /&gt;
Das aktuelle Verzeichnis wird mit dem Befehl cd (change directory) oder per&lt;br /&gt;
Mausklick verändert.&lt;br /&gt;
Ein einfacher Punkt . kennzeichnet das aktuelle Verzeichnis.&lt;br /&gt;
&lt;br /&gt;
• '''Elternverzeichnis'''&lt;br /&gt;
&lt;br /&gt;
Verzeichnis unmittelbar oberhalb des aktuellen Verzeichnisses.&lt;br /&gt;
Jedes Verzeichnis ausser / besitzt genau ein Elternverzeichnis.&lt;br /&gt;
Zwei Punkte .. kennzeichnen das Elternverzeichnis (abhängig vom aktuellen&lt;br /&gt;
VZ).&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Absoluter Pfadname:===&lt;br /&gt;
&lt;br /&gt;
Beschreibt ausgehend vom Rootverzeichnis den Weg zum Zielverzeichnis oder zur&lt;br /&gt;
Zieldatei. (Welche Verzeichnisse müssen ausgehend von / durchlaufen werden, um&lt;br /&gt;
zum Ziel zu kommen?) Ein absoluter Pfadname beginnt immer mit / .&lt;br /&gt;
&lt;br /&gt;
===Relativer Pfadname:===&lt;br /&gt;
&lt;br /&gt;
Beschreibt ausgehend vom aktuellen Verzeichnis den Weg zum Zielverzeichnis&lt;br /&gt;
oder zur Zieldatei; ein relativer Pfadname beginnt nicht mit / .&lt;br /&gt;
/home/suxer&lt;br /&gt;
absoluter Pfadname für das Verzeichnis sub1 im Homeverzeichnis von suxer&lt;br /&gt;
&lt;br /&gt;
===Verzeichnisstruktur===&lt;br /&gt;
&lt;br /&gt;
 /bin         Kommandos die beim starten benötigt werden (Zugriff hat jeder)&lt;br /&gt;
 /sbin        Wichtige System-Programme (In der Regel root vorberhalten)&lt;br /&gt;
 /boot        Hier findet man die Dateien des Bootmanagers und des Kernel.&lt;br /&gt;
 /dev         In diesem Verzeichnis stehen die Gerätedateien (Devices),&lt;br /&gt;
 /home        Alle Heimatverzeichnisse der Nutzer findet man hier.&lt;br /&gt;
 /lib         Beim Systemstart benötigten Bibliotheken und Modules stehen hier.&lt;br /&gt;
 /mnt         Mountpunkt für temporäre Partitionen&lt;br /&gt;
 /opt         Software, die nicht Installationsumfang von Linux gehören.&lt;br /&gt;
 /root        Heimatverzeichnis des Administrators.&lt;br /&gt;
 /tmp         Temporäre Dateien können hier abgelegt werden&lt;br /&gt;
 /usr         statische Dateien (kann read-only gemountet sein)&lt;br /&gt;
 /var         variable Dateien (muss beschreibar sein )&lt;br /&gt;
 /etc         Konfiguartionsdateien und Startscripte&lt;br /&gt;
 /proc        Virtuelles Dateisystem -&amp;gt; repräsentiert den Kernel&lt;br /&gt;
&lt;br /&gt;
===Unterverzeichnisse von /usr===&lt;br /&gt;
&lt;br /&gt;
 sbin         Programme für root die beim Start nicht benötigt werden&lt;br /&gt;
 bin          Programme für alle die beim Start nicht benötigt werden&lt;br /&gt;
 X11R6        Dateien des X-Window-Sytems&lt;br /&gt;
 bin          Ausführbare Programme&lt;br /&gt;
 doc          Dokumentationen&lt;br /&gt;
 etc          Konfigurationsdateien&lt;br /&gt;
 games        Spiele&lt;br /&gt;
 include      Headerdateien für C-Programme&lt;br /&gt;
 local        Pakete die nicht zur Distribution gehören ähnlich /opt&lt;br /&gt;
 share        Pakete die von mehreren Paketen genutzt werden&lt;br /&gt;
 share/man    Die Manualpages&lt;br /&gt;
 share/info   Seiten des Infosystems&lt;br /&gt;
 share/doc    Dokumentationen&lt;br /&gt;
 src          Sources von Programmen (Kernel und andere)&lt;br /&gt;
&lt;br /&gt;
===Unterverzeichnisse von /var===&lt;br /&gt;
&lt;br /&gt;
 cache        Zwischenspreicher für Progammes&lt;br /&gt;
 games        Variable Daten der Games (Scores etc...)&lt;br /&gt;
 lock         Sperrdateien&lt;br /&gt;
 log          Die Logdateien (wichtiges Verzeichnis für Admins)&lt;br /&gt;
 mail         Das Mailsystem&lt;br /&gt;
 run          Dateien zu laufemdem Prozessen&lt;br /&gt;
 spool        Spooldateien (z.B. für das Drucksystem&lt;br /&gt;
 state        Statusinfos&lt;br /&gt;
 tmp          Wie /tmp eventuell nicht auf root Partion&lt;br /&gt;
&lt;br /&gt;
==Einfache Komandos==&lt;br /&gt;
===cd: Wechseln des Arbeitsverzeichnis===&lt;br /&gt;
&lt;br /&gt;
Um festzustellen in welchem Verzeichnis man sich befindet, sollte man den&lt;br /&gt;
Befehl &amp;quot;pwd&amp;quot; benutzen,&lt;br /&gt;
&lt;br /&gt;
und mit dem Befehl &amp;quot;cd&amp;quot; kann man zwischen den Verzeichnissen wechseln:&lt;br /&gt;
&lt;br /&gt;
Wechsele ins homeverzeichnis von Xinux&lt;br /&gt;
&lt;br /&gt;
 xinux@zero:~$ cd /home/xinux/&lt;br /&gt;
 xinux@zero:~$ pwd&lt;br /&gt;
 /home/xinux&lt;br /&gt;
&lt;br /&gt;
cd ~ -&amp;gt; wechsele ins jeweilige Homeverzeichnis&lt;br /&gt;
&lt;br /&gt;
cd .. -&amp;gt; wechsele ein Verzeichnis höher&lt;br /&gt;
&lt;br /&gt;
cd ../verzeichnis -&amp;gt; wechsele in eine paralleles Verzeichnis &amp;lt;- (ist eine relative Pfadangabe !)&lt;br /&gt;
&lt;br /&gt;
cd - -&amp;gt; wechsele in das Verzeichnis, in dem vorher gearbeitet wurde.&lt;br /&gt;
&lt;br /&gt;
Mit cd / wechselt man in das Wurzelverzeichnis.&lt;br /&gt;
&lt;br /&gt;
 xinux@zero:/var/log$ cd /&lt;br /&gt;
 xinux@zero:/$ pwd&lt;br /&gt;
 /&lt;br /&gt;
&lt;br /&gt;
===ls: Listing===&lt;br /&gt;
&lt;br /&gt;
Den Inhalt von Verzeichnissen kann man sich mit dem Befehl &amp;quot;ls&amp;quot; anzeigen lassen&lt;br /&gt;
wobei &amp;quot;ls&amp;quot; eine Vielzahl von Optionen besitzt:&lt;br /&gt;
&lt;br /&gt;
 ls                                  standard&lt;br /&gt;
 ls -l                               langes listing&lt;br /&gt;
 ls -a                               alle Dateien&lt;br /&gt;
 ls -i                               mit Inode&lt;br /&gt;
 ls -h                               gut lesbare Dateigröße&lt;br /&gt;
 ls -d                               Verzechnis wird angezeigt, nicht der Inhalt&lt;br /&gt;
 ls -L                               sortiert nach Größe&lt;br /&gt;
 ls -t                               sortiert nach Datum&lt;br /&gt;
 ls -F                               mit nützlichem Anhang&lt;br /&gt;
&lt;br /&gt;
 xinux@zero:/$ ls -l /var/log/messages&lt;br /&gt;
 -rw-r----- 1 syslog adm 2296 2009-06-16 10:05 /var/log/messages&lt;br /&gt;
&lt;br /&gt;
===more: Seitenweises Anzeigen von Seiten===&lt;br /&gt;
 root@zero:~# more /var/log/messages&lt;br /&gt;
 ...&lt;br /&gt;
&lt;br /&gt;
===head: erste Zeilen anzeigen===&lt;br /&gt;
Erste 10 Zeilen anzeigen&lt;br /&gt;
 root@zero:~# head /var/log/messages&lt;br /&gt;
 Jun 15 12:37:08 zero syslogd 1.5.0#5ubuntu3: restart.&lt;br /&gt;
 Jun 15 12:38:43 zero kernel: [  830.065036] mtrr: your processor doesn't support write-combining&lt;br /&gt;
 Jun 15 12:46:05 zero pulseaudio[4817]: pid.c: Stale PID file, overwriting.&lt;br /&gt;
 Jun 15 13:05:24 zero -- MARK --&lt;br /&gt;
 ...&lt;br /&gt;
&lt;br /&gt;
Erste zwei Zeilen anzeigen&lt;br /&gt;
 root@zero:~# head -n 2 /var/log/messages&lt;br /&gt;
 Jun 15 12:37:08 zero syslogd 1.5.0#5ubuntu3: restart.&lt;br /&gt;
 Jun 15 12:38:43 zero kernel: [  830.065036] mtrr: your processor doesn't support write-combining&lt;br /&gt;
&lt;br /&gt;
===tail: letzte Zeilen anzeigen===&lt;br /&gt;
 &lt;br /&gt;
 root@zero:~# tail /var/log/syslog&lt;br /&gt;
 ...&lt;br /&gt;
 Jun 19 11:19:35 zero -- MARK --&lt;br /&gt;
 Jun 19 11:39:35 zero -- MARK --&lt;br /&gt;
 Jun 19 11:59:36 zero -- MARK --&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Letze 5 Zeilen anzeigen&lt;br /&gt;
 root@zero:~# tail -n 5 /var/log/auth.log&lt;br /&gt;
 Jun 18 14:30:01 zero CRON[12040]: pam_unix(cron:session): session closed for user root&lt;br /&gt;
 Jun 18 14:39:01 zero CRON[12191]: pam_unix(cron:session): session opened for user root by (uid=0)&lt;br /&gt;
 Jun 18 14:39:01 zero CRON[12191]: pam_unix(cron:session): session closed for user root&lt;br /&gt;
 Jun 18 14:40:01 zero CRON[12237]: pam_unix(cron:session): session opened for user root by (uid=0)&lt;br /&gt;
 Jun 18 14:40:01 zero CRON[12237]: pam_unix(cron:session): session closed for user root&lt;br /&gt;
&lt;br /&gt;
Letze Zeilen anzeigen und fortlaufend aktualisieren&lt;br /&gt;
 root@zero:~# tail -f /var/log/syslog&lt;br /&gt;
 ...&lt;br /&gt;
&lt;br /&gt;
===mkdir: Ein neues Verzeichnis erstellen===&lt;br /&gt;
&lt;br /&gt;
 mkdir        verzeichnis&lt;br /&gt;
Erstellt ein Verzeichnis im working directory (wd)&lt;br /&gt;
&lt;br /&gt;
 mkdir  -p    ver1/ver2&lt;br /&gt;
Erstellt ein Verzeichnis ver2 unterhalb von ver1&lt;br /&gt;
wenn ver1 nicht existiert wird es erstellt&lt;br /&gt;
&lt;br /&gt;
 mkdir -m 753 ver1&lt;br /&gt;
Es wird das Verzeichnis ver1 erstellt mit der mask 753&lt;br /&gt;
&lt;br /&gt;
 mkdir -v     ver1&lt;br /&gt;
Geschwätzige Ausgabe :)&lt;br /&gt;
&lt;br /&gt;
===Zum Löschen von leeren Verzeichnissen wird rmdir benutzt===&lt;br /&gt;
&lt;br /&gt;
 rmdir           ver1&lt;br /&gt;
Löscht das leere Verzeichnis ver1&lt;br /&gt;
&lt;br /&gt;
 rmdir -v        ver1&lt;br /&gt;
Löscht das leere Verzeichnis ver1 und ist geschwätzig&lt;br /&gt;
&lt;br /&gt;
 rmdir -p        /ver1/ver2/ver3&lt;br /&gt;
Löscht das Verzeichnis ver3; wenn dadurch ver2 ein leeres&lt;br /&gt;
Verzeichnis wird, wird dieses auch gelöscht , wenn ver1&lt;br /&gt;
dadurch ein leeres Verzeichnis wird, wird auch dieses gelöscht.&lt;br /&gt;
&lt;br /&gt;
===touch Verändern des Zeitstempels===&lt;br /&gt;
&lt;br /&gt;
Mit touch können wir eine neue leere Datei erzeugen (das ist nicht der eigentliche&lt;br /&gt;
Zweck von touch, eigentlich wird der Zeitstempel geändert)&lt;br /&gt;
&lt;br /&gt;
 touch            dateiname&lt;br /&gt;
&lt;br /&gt;
===Kopieren=== &lt;br /&gt;
cp ist das Kommando um Dateien zu kopieren &lt;br /&gt;
&lt;br /&gt;
Eine Kopie von dat1 mit dem Namen dat2 erstellen:&lt;br /&gt;
&lt;br /&gt;
 xinux@zero:~$ cp dat1 dat2&lt;br /&gt;
&lt;br /&gt;
Eine Kopie von dat1 ins Verzeichnis ver2 erstellen:&lt;br /&gt;
&lt;br /&gt;
 xinux@zero:~$ cp dat1 ver2/&lt;br /&gt;
 &lt;br /&gt;
Eine Kopie erstellen mit ausführlicher Anzeige:&lt;br /&gt;
&lt;br /&gt;
 xinux@zero:~$ cp -v dat1 dat2&lt;br /&gt;
 `dat1' -&amp;gt; `dat2'&lt;br /&gt;
&lt;br /&gt;
Eine Kopie erstellen mit Rückfrage fals etwas überschrieben wird:&lt;br /&gt;
&lt;br /&gt;
 xinux@zero:~$ cp -i dat1 dat2&lt;br /&gt;
 cp: overwrite `dat2'?&lt;br /&gt;
&lt;br /&gt;
Eine Kopie erstellen und die Rückfrage überbrücken:&lt;br /&gt;
&lt;br /&gt;
 xinux@zero:~$ cp -f dat1 dat2&lt;br /&gt;
&lt;br /&gt;
Eine Kopie von dat1 ins Verzeichnis ver2 erstellen fals keine neuere Version von dat1 vorliegt:&lt;br /&gt;
&lt;br /&gt;
 xinux@zero:~$ cp -u dat1 ver2/&lt;br /&gt;
&lt;br /&gt;
Eine Kopie erstellen fals ver2 auf dem selben Dateisystem wie dat1 liegt:&lt;br /&gt;
&lt;br /&gt;
 xinux@zero:~$ cp -x dat1 ver2/&lt;br /&gt;
&lt;br /&gt;
Eine Kopie von ver1, die als ver2 oder unter ver2 als ver1 gespeichert wird erstellen:&lt;br /&gt;
&lt;br /&gt;
 xinux@zero:~$ cp -r ver1/ ver2/&lt;br /&gt;
&lt;br /&gt;
Eine Kopie von einer Datei erstellen und ihre Attribute beibehalten:&lt;br /&gt;
&lt;br /&gt;
 xinux@zero:~$ cp -p sux1 sux2&lt;br /&gt;
&lt;br /&gt;
Eine Kopie erstellen bei der die Links erhalten bleiben:&lt;br /&gt;
&lt;br /&gt;
 xinux@zero:~$ cp -r ver1/ ver2/&lt;br /&gt;
&lt;br /&gt;
Eine Kopie erstellen zum Archivieren (-dpr):&lt;br /&gt;
&lt;br /&gt;
 xinux@zero:~$ cp -a ver1/ ver2/&lt;br /&gt;
&lt;br /&gt;
===rm: Löschen einer Datei===&lt;br /&gt;
&lt;br /&gt;
Um Dateien zu löschen, brauchen wir das Kommando &amp;quot;rm&amp;quot;:&lt;br /&gt;
&lt;br /&gt;
 rm               dat1        dat1 wird gelöscht&lt;br /&gt;
 rm         -i    dat1        dat1 wird nach Bestätigung gelöscht&lt;br /&gt;
 rm         -f    dat1        dat1 wird ohne Rückfragen gelöscht&lt;br /&gt;
 rm         -v    dat1        dat1 wird glöscht (geschwätzige Ausgabe)&lt;br /&gt;
 rm         -r    ver1        Löschen von nicht leeren Verzeichnissen&lt;br /&gt;
                              Achtung !!! Als root kann man sich damit Teile&lt;br /&gt;
                              oder sogar den gesamten Verzeichnisbaum&lt;br /&gt;
                              absägen !!!&lt;br /&gt;
&lt;br /&gt;
===mv: Verschieben===&lt;br /&gt;
&lt;br /&gt;
Mit dem Befehl &amp;quot;mv&amp;quot; werden Daten verschoben, folgendes gilt:&lt;br /&gt;
&lt;br /&gt;
 mv          dat1 dat2         &lt;br /&gt;
Die Datei dat1 wird in dat2 umbenannt&lt;br /&gt;
 mv          dat1 /ver1        &lt;br /&gt;
Die Datei dat1 wird nach /ver1 verschoben&lt;br /&gt;
&lt;br /&gt;
Die Parameter und ihre Bedeutung:&lt;br /&gt;
&lt;br /&gt;
      -i                      wenn eine Datei exisitiert wird vor dem&lt;br /&gt;
                              Überschreiben nachgefragt&lt;br /&gt;
      -v                      verbose (geschwätzig)&lt;br /&gt;
      -u                      nur neuere Daten werden bei Bedarf überschrieben&lt;br /&gt;
      -b                      wenn überschrieben werden soll, wird ein Backup&lt;br /&gt;
                              erstellt&lt;br /&gt;
      -S ENDUNG               das Backup bekommt die Endung ENDUNG&lt;br /&gt;
&lt;br /&gt;
===su Benutzer wechseln===&lt;br /&gt;
&lt;br /&gt;
 su -             &lt;br /&gt;
Wechsel zum Rootaccount, wie wenn dieser sich neu anmelden würde. (Bsp: su -)&lt;br /&gt;
&lt;br /&gt;
 su Benutzernamen &lt;br /&gt;
Wechsel der Identität zu Benutzer (gegebenenfalls Passwortabfrage)&lt;br /&gt;
&lt;br /&gt;
 su -c Kommando   &lt;br /&gt;
Kommando wird als rootaccount ausgeführt&lt;br /&gt;
&lt;br /&gt;
==Der Standard Editor vi==&lt;br /&gt;
Der vi ist der Standardeditor in der Unixwelt. Er ist in jedem Unix-Derivat&lt;br /&gt;
enthalten.&lt;br /&gt;
Der Editor hat zwar den schlechten Ruf umständlich zu bedienen zu sein, ist&lt;br /&gt;
jedoch sehr leistungsfähig und systemübergreifend verfügbar. Beim vi handelt es&lt;br /&gt;
sich um einen rein textorientierten Editor, der mittels eigener Kommandos&lt;br /&gt;
gesteuert wird.&lt;br /&gt;
&lt;br /&gt;
Der Editor VIM ist eine weitere Verbesserung von VI und leichter zu bedienen.&lt;br /&gt;
Und unter Ubuntu/Debian mit &amp;quot;apt-get install vim&amp;quot; zu installieren.&lt;br /&gt;
&lt;br /&gt;
===Starten des Editors:===&lt;br /&gt;
&lt;br /&gt;
Der Editorstart erfolgt einfach durch die Eingabe des Kommandos vi mit dem&lt;br /&gt;
Dateinamen der zu editierenden Datei als Parameter.&lt;br /&gt;
Beispiel:        &lt;br /&gt;
 vi sux.txt&lt;br /&gt;
&lt;br /&gt;
===Die Betriebsmodi des vi:===&lt;br /&gt;
&lt;br /&gt;
Ein Umstand, der dem vi den Ruf der komplizierten Bedienbarkeit zugetragen hat,&lt;br /&gt;
sind die unterschiedlichen Betriebsmodi des Editors. Genauer gesagt verfügt der&lt;br /&gt;
vi über drei Betriebsmodi:&lt;br /&gt;
&lt;br /&gt;
====Kommandomodus:====&lt;br /&gt;
&lt;br /&gt;
Innerhalb dieses Modus werden die eingegebenen Zeichen direkt als Befehle des&lt;br /&gt;
Editors interpretiert und ausgeführt. Dabei gibt es weder ein Bereitschaftszeichen&lt;br /&gt;
(Prompt) noch ein Echo (Ausgabe). Der Kommandomodus ist der Modus, in dem&lt;br /&gt;
sich der vi direkt nach seinem Start befindet.&lt;br /&gt;
&lt;br /&gt;
====Zeilenmodus oder Exmodus:====&lt;br /&gt;
&lt;br /&gt;
Dieser Modus ist der einzige Modus mit einem eigenen Bereitschaftszeichen,&lt;br /&gt;
nämlich dem Doppelpunkt (:). Das Prompt wird ebenso wie die Befehlsausgaben&lt;br /&gt;
in der Statuszeile angezeigt.&lt;br /&gt;
&lt;br /&gt;
====Eingabemodus:====&lt;br /&gt;
&lt;br /&gt;
Der Eingabemodus ist derjenige, in welchem der zu bearbeitende Text bearbeitet&lt;br /&gt;
werden kann. Alle hier eingegebenen Zeichen werden als Text für die aktuelle&lt;br /&gt;
Datei interpretiert. Zwischen den unterschiedlichen Modi kann jederzeit&lt;br /&gt;
gewechselt werden. Von Kommandomodus gelangen Sie durch mehere Wege in&lt;br /&gt;
den Eingabemodus. Man kann durch folgende Aktionen wechslen&lt;br /&gt;
&lt;br /&gt;
{| border=1 cellpadding=2&lt;br /&gt;
|i&lt;br /&gt;
|Text vor der aktuellen Cursorposition einfügen&lt;br /&gt;
|-&lt;br /&gt;
|I&lt;br /&gt;
|Text am Zeilenanfang einfügen&lt;br /&gt;
|-&lt;br /&gt;
|a&lt;br /&gt;
|Text hinter der aktuellen Cursorposition einfügen&lt;br /&gt;
|-&lt;br /&gt;
|A&lt;br /&gt;
|Text am Zeilenende einfügen&lt;br /&gt;
|-&lt;br /&gt;
|o&lt;br /&gt;
|Unterhalb der aktuellen Zeile eine neue Zeile einfügen&lt;br /&gt;
|-&lt;br /&gt;
|O&lt;br /&gt;
|Oberhalb der aktuellen Zeile eine neue Zeile einfügen&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Durch das Drücken der ESC - Taste gelangt man in den Kommandomodus zurück.&lt;br /&gt;
&lt;br /&gt;
Im Kommandomodus können Sie durch den Text navigieren und auch den Text&lt;br /&gt;
selbst bearbeiten, z.B ausschneiden, kopieren usw. Dazu sind einige Kommandos&lt;br /&gt;
nötig, von denen die wichtigsten im Folgenden erläutert werden:&lt;br /&gt;
&lt;br /&gt;
 xinux@zero:/$ vi iwas.txt&lt;br /&gt;
&lt;br /&gt;
[[Image:vim.jpg]]&lt;br /&gt;
&lt;br /&gt;
===Benutzen des Kommandomodus===&lt;br /&gt;
====Steuerung des Cursors durch den Text====&lt;br /&gt;
&lt;br /&gt;
Mittels folgender Kommandos bewegt sich der Cursor durch den Text:&lt;br /&gt;
&lt;br /&gt;
{| border=1 cellpadding=2&lt;br /&gt;
|h&lt;br /&gt;
|Cursor ein Zeichen nach links&lt;br /&gt;
|-&lt;br /&gt;
|l&lt;br /&gt;
|Cursor ein Zeichen nach rechts&lt;br /&gt;
|-&lt;br /&gt;
|k&lt;br /&gt;
|Cursor eine Zeile nach oben&lt;br /&gt;
|-&lt;br /&gt;
|j&lt;br /&gt;
|Cursor eine Zeile nach unten&lt;br /&gt;
|-&lt;br /&gt;
|w&lt;br /&gt;
|Cursor ein Wort nach rechts&lt;br /&gt;
|-&lt;br /&gt;
|b&lt;br /&gt;
|Cursor ein Wort nach links&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Alle diese Kommandos können mit einem vorgestellten Wiederholungsfaktor&lt;br /&gt;
arbeiten. Der Befehl 3w verschiebt demnach den Cursor um 3 Wörter nach rechts.&lt;br /&gt;
&lt;br /&gt;
====Angaben zur Positionierung====&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{| border=1 cellpadding=2&lt;br /&gt;
|STRG+U&lt;br /&gt;
|1⁄2 Bildschirmseite nach oben&lt;br /&gt;
|-&lt;br /&gt;
|STRG+D&lt;br /&gt;
|1⁄2 Bildschirmseite nach unten&lt;br /&gt;
|-&lt;br /&gt;
|STRG+B&lt;br /&gt;
|1 Bildschirmseite nach oben&lt;br /&gt;
|-&lt;br /&gt;
|STRG+F&lt;br /&gt;
|1 Bildschirmseite nach unten&lt;br /&gt;
|-&lt;br /&gt;
|/Ausdruck&lt;br /&gt;
|Sucht den Ausdruck (vorwärts) Weitersuchen mit n , N&lt;br /&gt;
|-&lt;br /&gt;
|?Ausdruck&lt;br /&gt;
|Sucht den Ausdurck (rückwärts) Weitersuchen mit n , N&lt;br /&gt;
|-&lt;br /&gt;
|0&lt;br /&gt;
|Zeilenanfang&lt;br /&gt;
|-&lt;br /&gt;
|$&lt;br /&gt;
|Zeilenende&lt;br /&gt;
|-&lt;br /&gt;
|w&lt;br /&gt;
|Nächstes Wort&lt;br /&gt;
|-&lt;br /&gt;
|b&lt;br /&gt;
|Vorheriges Wort&lt;br /&gt;
|-&lt;br /&gt;
|fc&lt;br /&gt;
|Auf das Zeichen c springen. c steht für ein beliebiges Zeichen&lt;br /&gt;
|-&lt;br /&gt;
|G&lt;br /&gt;
|Letzte Zeile der Datei&lt;br /&gt;
|-&lt;br /&gt;
|ng&lt;br /&gt;
|n-te Zeile der Datei&lt;br /&gt;
|-&lt;br /&gt;
|H&lt;br /&gt;
|Anfang der Bildschirmseite&lt;br /&gt;
|-&lt;br /&gt;
|L&lt;br /&gt;
|Ende der Bildschirmseite&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
====Befehle zur Textbearbeitung -&amp;gt; Was soll geschehen====&lt;br /&gt;
&lt;br /&gt;
{| Border=1 Cellpadding=2&lt;br /&gt;
|x&lt;br /&gt;
|Löscht Zeichen&lt;br /&gt;
|-&lt;br /&gt;
|d&lt;br /&gt;
|Löschen und in den Puffer laden&lt;br /&gt;
|-&lt;br /&gt;
|c&lt;br /&gt;
|Ändern&lt;br /&gt;
|-&lt;br /&gt;
|y&lt;br /&gt;
|In den Puffer laden&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
====Weitere wichtige Befehle:====&lt;br /&gt;
&lt;br /&gt;
{| Border=1 Cellpadding=2&lt;br /&gt;
|p&lt;br /&gt;
|Aus dem Puffer einfügen&lt;br /&gt;
|-&lt;br /&gt;
|u&lt;br /&gt;
|Undo, macht den letzten Befehl rückgängig&lt;br /&gt;
|-&lt;br /&gt;
|STRG+R&lt;br /&gt;
|Redo, macht den letzten Undo rückgängig&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
===Zeilen- oder Exmodus===&lt;br /&gt;
&lt;br /&gt;
Wie schon erwähnt wird der Zeilen oder Exmodus durch einen : eingeleitet.&lt;br /&gt;
Es folgen einige Beispiele.&lt;br /&gt;
&lt;br /&gt;
Befehle zum Speichern und Beenden:&lt;br /&gt;
&lt;br /&gt;
 :w          Schreibt Datei&lt;br /&gt;
 :w Datei2   Schreibt eine Kopie in Datei2&lt;br /&gt;
 :w !        Schreibt Datei (übergehe Schreibschutz)&lt;br /&gt;
 :w ! Datei2 Schreibt eine Kopie in Datei2 (übergehe Schreibschutz)&lt;br /&gt;
 :q          Schließe Datei&lt;br /&gt;
 :q!         Schließe Datei (verwerfe Änderungen)&lt;br /&gt;
 :wq         Schreibe Datei und beende Editor&lt;br /&gt;
 :wq!        Schreibe Datei und beende Editor (übergehe Schreibschutz)&lt;br /&gt;
 :q!         Schließe Datei (verwerfe Änderungen)&lt;br /&gt;
 :h          Hilfe anzeigen, durch drücken von :q Beenden der Hilfe&lt;br /&gt;
 :e Datei3   Editiere Datei3&lt;br /&gt;
 :e #        Editere vorhergehende Datei&lt;br /&gt;
 :1,3co9     Kopiere von der ersten bis zu dritten Zeile &lt;br /&gt;
             und füge den Inhalt unterhalb der neunte Zeile ein.&lt;br /&gt;
&lt;br /&gt;
Interaktionen mit Unix:&lt;br /&gt;
&lt;br /&gt;
 :r Datei4   Fügt Inhalt der Datei4 nach dem Cursor ein&lt;br /&gt;
 :r ! Befehl Fügt Ausgabe des Befehls nach dem Cursor ein&lt;br /&gt;
 :! Befehl   Führt den Befehl aus&lt;br /&gt;
 :sh         Starte Subshell -&amp;gt; mit exit kehrt man wieder zurück&lt;br /&gt;
             Eingabemodus zurück&lt;br /&gt;
&lt;br /&gt;
====Ersetzen von Textteilen====&lt;br /&gt;
&lt;br /&gt;
Die grundsätzliche Syntax lautet:&lt;br /&gt;
&lt;br /&gt;
 :[Zeilennummer,Zeilennummer]s/Muster/Ersetzung/[gc]&lt;br /&gt;
&lt;br /&gt;
 :s/worf/kirn/              der erste worf wird in der aktuellen Zeile durch kirn ersetzt&lt;br /&gt;
 :1,9s/worf/kirn/g          von der 1. bis zur 9. Zeile werden alle worf durch kirn ersetzt&lt;br /&gt;
 :1,$s/worf/kirn/           von der ersten bis zur letzten Zeile ersetze ersten worf durch&lt;br /&gt;
                            kirn&lt;br /&gt;
 :.,$s/worf/kirn/g          von der aktuellen bis zur letzten Zeile ersetze alle worf durch&lt;br /&gt;
                            kirn&lt;br /&gt;
 :1,.s/worf/kirn/c          von der 1. bis zur aktuellen Zeile ersetze worf durch kirn, frage&lt;br /&gt;
                            aber nach&lt;br /&gt;
 :1,$s/^worf/kirn/          von der ersten bis zur letzten Zeile ersetze worf am&lt;br /&gt;
                            Zeilenanfang durch kirn&lt;br /&gt;
 :4,$s/worf$/kirn/          von der 4. bis zur letzten Zeile ersetze worf am Zeilenende&lt;br /&gt;
                            durch kirn&lt;br /&gt;
 :1,$s/^#//                 lösche alle Kommentarzeichen&lt;br /&gt;
 :1,$s/^.orf/kirn/           ersetze alles was am Zeilenanfang ein beliebiges Zeichen hat&lt;br /&gt;
                            gefolgt von einem orf durch kirn&lt;br /&gt;
 :1,$s/^[A-Z]orf/kirn/g     suche nach einem Großbuchstaben am Anfang der Zeile&lt;br /&gt;
                            gefolgt von einem orf und ersetze durch kirn&lt;br /&gt;
 :1,$s/^M[ae][iy]e*r/kirn/  suche alles, was am Anfang der Zeile ein großes M enthält,&lt;br /&gt;
                            gefolgt von einem a oder e , gefolgt von einem i oder y ,&lt;br /&gt;
                            gefolgt von einem e , welches 0 oder N mal vorkommen kann,&lt;br /&gt;
                            gefolgt von einem r und ersetze es durch kirn&lt;br /&gt;
&lt;br /&gt;
==Reguläre Ausdrücke==&lt;br /&gt;
&lt;br /&gt;
{| Border=1 Cellpadding=2&lt;br /&gt;
|c&lt;br /&gt;
|Ein einzelner Buchstabe passt auf sich selbst&lt;br /&gt;
|-&lt;br /&gt;
|.&lt;br /&gt;
|Ein Punkt passt auf jedes Zeichen außer auf das Zeilenende&lt;br /&gt;
|-&lt;br /&gt;
|*&lt;br /&gt;
|Das dem Operator * vorangehende Muster kann 0 oder öfter vorkommen&lt;br /&gt;
|-&lt;br /&gt;
|^&lt;br /&gt;
|(Caret) passt auf den Zeilenanfang&lt;br /&gt;
|-&lt;br /&gt;
|$&lt;br /&gt;
|Passt auf das Zeilenende&lt;br /&gt;
|-&lt;br /&gt;
|\&lt;br /&gt;
|Das folgende Sonderzeichen wird entwertet&lt;br /&gt;
|-&lt;br /&gt;
|[...]&lt;br /&gt;
|Passt auf &amp;quot;genau&amp;quot; eins in [...] angebenen Zeichen&lt;br /&gt;
|-&lt;br /&gt;
|[^...]&lt;br /&gt;
|Passt auf &amp;quot;genau&amp;quot; ein Zeichen welches nicht in [...] angebenen ist&lt;br /&gt;
|-&lt;br /&gt;
|\&amp;lt;&lt;br /&gt;
|Passt auf den Wortanfang&lt;br /&gt;
|-&lt;br /&gt;
|\&amp;gt;&lt;br /&gt;
|Passt auf das Wortende&lt;br /&gt;
|-&lt;br /&gt;
|\+&lt;br /&gt;
|Das dem Operator \+ vorangehende Muster kann 1 oder öfter vorkommen&lt;br /&gt;
|-&lt;br /&gt;
|&amp;amp;&lt;br /&gt;
|Setzt das gefunden Suchmuster ein&lt;br /&gt;
|-&lt;br /&gt;
|\(...\)&lt;br /&gt;
|Speichert den Text auf den das Suchmuster passt zur späteren Verwendung&lt;br /&gt;
|-&lt;br /&gt;
|\n&lt;br /&gt;
|Setzt das vorangehende, mit \(...\) Gefundene wieder ein&lt;br /&gt;
|-&lt;br /&gt;
|(...)&lt;br /&gt;
|Gruppiert Auswahlmöglichkeiten&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;nowiki&amp;gt;|&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
|Trennt Auswahlmöglichkeiten&lt;br /&gt;
|-&lt;br /&gt;
|\b&lt;br /&gt;
|Passt auf den Anfang oder das Ende eines Wortes&lt;br /&gt;
|-&lt;br /&gt;
|\B&lt;br /&gt;
|Symbolisiert den Raum innerhalb eines Wortes&lt;br /&gt;
|-&lt;br /&gt;
|\w&lt;br /&gt;
|Passt auf alle alphanumerischen Zeichen [A-Za-z0-9]&lt;br /&gt;
|-&lt;br /&gt;
|\W&lt;br /&gt;
|Passt auf alle nichtalphanumerischen Zeichen [^A-Za-z0-9]&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Die Rangfolge der Operatoren(von der höchsten zur niedrigsten)&lt;br /&gt;
:(, ), ?, *, + | .&lt;br /&gt;
&lt;br /&gt;
Die anderen Operatoren sind mit den anderen Buchstaben gleichrangig.&lt;br /&gt;
&lt;br /&gt;
===Beispiel zum Suchen===&lt;br /&gt;
&lt;br /&gt;
 Suchmuster               Passt auf&lt;br /&gt;
 ^Tuxer                   Tuxer am Zeilenanfang&lt;br /&gt;
 [tT]uxer                 Tuxer oder tuxer&lt;br /&gt;
 80[23]?86                8086, 80286 oder 80386&lt;br /&gt;
&lt;br /&gt;
===grep===&lt;br /&gt;
&lt;br /&gt;
Mit grep ist es möglich, in Dateien nach regulären Ausdrücken zu suchen. Wenn&lt;br /&gt;
eine Übereinstimmung gefunden wird, wird die komplette Zeile auf die&lt;br /&gt;
Standardausgabe geschrieben. grep kann auch von STDIN lesen.Es ist&lt;br /&gt;
empfehlenswert, sich anzugwöhnen ,das Suchmuster in Anführungszeichen zu&lt;br /&gt;
schreiben. Es gibt 3 Arten fgrep = fastgrep , grep und egrep egrep&lt;br /&gt;
&lt;br /&gt;
Beispiel:&lt;br /&gt;
&lt;br /&gt;
 root@zero:~# cat text&lt;br /&gt;
 quatsch&lt;br /&gt;
 quatsch&lt;br /&gt;
 quatsch&lt;br /&gt;
 wichtig&lt;br /&gt;
 quatsch&lt;br /&gt;
 root@zero:~# grep wichtig text&lt;br /&gt;
 wichtig&lt;br /&gt;
 root@zero:~# &lt;br /&gt;
&lt;br /&gt;
 -c                   meldet nur die Gesamtzahl der Fundstellen&lt;br /&gt;
 -v                   zeigt nur Zeilen, die »Ausdruck« nicht enthalten&lt;br /&gt;
 -i                   ignoriert Groß- und Kleinschreibung&lt;br /&gt;
 -l                    meldet nur Dateinamen mit Fundstellen&lt;br /&gt;
 -n                   listet Zeilennummern zu jeder Fundstelle&lt;br /&gt;
 -f                   Dateiname »Dateiname« enthält die Such-Ausdrücke&lt;br /&gt;
 -E                   ist ein erweiterter regulärer Ausdruck (egrep)&lt;br /&gt;
 -F                   (Muster, Ausdruck) ist ein Muster (String) (fgrep)&lt;br /&gt;
 -b                   listet auch die Position der Fundstellen&lt;br /&gt;
 -C    Anzahl         Anzahl von Zeilen werden nach der Fundstelle ausgegeben&lt;br /&gt;
 -B    Anzahl         Anzahl von Zeilen werden vor der Fundstelle ausgegeben&lt;br /&gt;
 -r                   Durchsucht Verzeichnisse rekursiv&lt;br /&gt;
&lt;br /&gt;
==Useridendifikation==&lt;br /&gt;
===/etc/passwd===&lt;br /&gt;
====Beschreibung====&lt;br /&gt;
passwd ist eine ASCII-Datei, die eine Liste der Benutzer des Systems und deren&lt;br /&gt;
Passwörter enthält. Die Passwortdatei sollte für alle Benutzer lesbar sein, was für&lt;br /&gt;
dieVerschlüsselung notwendig ist; aber nur vom Superuser beschreibbar. Wenn&lt;br /&gt;
Sie eine neue Kennung einrichten, lassen Sie das Passwort-Feld in der Datei frei&lt;br /&gt;
und benutzen Sie passwd(1), um dem System ein Passwort für die neue Kennung&lt;br /&gt;
mitzuteilen.&lt;br /&gt;
&lt;br /&gt;
Die Datei /etc/passwd enthält einen Eintrag pro Zeile mit dem Format:&lt;br /&gt;
login_name:passwd:UID:GID:user_name:directory:shell&lt;br /&gt;
====Die Bedeutung der Felder:====&lt;br /&gt;
# login_name Kennung des Benutzers auf dem System.&lt;br /&gt;
# password   Hier steht bei Shadowsystemen ein x. Die Passwörter sind in der Datei /etc/shadow&lt;br /&gt;
# UID        Die numerische Benutzernummer.&lt;br /&gt;
#  GID        Die numerische Gruppennummer des Benutzers.&lt;br /&gt;
# user_name Ein optionales Kommentarfeld, oft benutzt für den vollen Namen des Benutzers und weitere Informationen (Telefon, Raum-Nummer etc.).&lt;br /&gt;
# directory  Das Heimatverzeichnis $HOME des Benutzers.&lt;br /&gt;
# shell      Das Programm, das beim Einloggen gestartet werden soll (falls nicht nötig, benutzen Sie /bin/bash).&lt;br /&gt;
&lt;br /&gt;
===/etc/group===&lt;br /&gt;
====Beschreibung====&lt;br /&gt;
etc/group ist eine ASCII Datei, die Gruppen definiert, zu denen Benutzer&lt;br /&gt;
gehören. Es gibt nur einen Eintrag pro Zeile; jede Zeile hat folgendes Format:&lt;br /&gt;
         GruppenName:Passwort:GruppenKennung:BenutzerListe&lt;br /&gt;
Beschreibung der Felder:&lt;br /&gt;
#     GruppenName      Die Bezeichnung der Gruppe.&lt;br /&gt;
#     Passwort         Das (verschlüsselte) Gruppen-Passwort. Wenn dieses Feld leer ist, wird kein Passwort benötigt.&lt;br /&gt;
#     GruppenKennung Die numerische Identifikation der Gruppe.&lt;br /&gt;
#     BenutzerListe    Alle Namen der Mitglieder, getrennt durch Kommas.&lt;br /&gt;
&lt;br /&gt;
===/etc/shadow===&lt;br /&gt;
====Beschreibung====&lt;br /&gt;
shadow beinhaltet Informationen zu den verschlüsselten Passwörten, zu den&lt;br /&gt;
Benutzerzugängen und weitere Informationen zur Laufzeit der Passwörter.&lt;br /&gt;
 Name:Passwort:Letzte Änderung:Mintage:Maxtage:Warntage:Inaktiv:Ablauf&lt;br /&gt;
#    Der Loginname&lt;br /&gt;
#    verschlüsseltes Passwort &lt;br /&gt;
&amp;lt;nowiki&amp;gt;*&amp;lt;/nowiki&amp;gt; bedeutet Benutzer kann sich nicht einlogen&lt;br /&gt;
! bedeutet Benutzer hat kein Passwort gesetzt&lt;br /&gt;
#    Tage seit dem 1 Januar 1970 an dem das Passwort letztmals geändert wurde&lt;br /&gt;
#    Tage, die das Passwort behalten werden muss, bevor es wieder geändert werden kann&lt;br /&gt;
#     Die Anzahl der Tage, nach denen der Benutzer das Passwort wieder ändern muss&lt;br /&gt;
#    Anzahl der Tage bevor das Passwort abläuft und der Benutzer gewarnt wird&lt;br /&gt;
#    Wenn der Zugang diese Anzahl von Tagen nicht benutzt wird, wird der Zugang gesperrt&lt;br /&gt;
#    Tag seit dem 1 Januar 1970, an dem der Zugang gesperrt wird&lt;br /&gt;
#    Reserviertes Feld&lt;br /&gt;
&lt;br /&gt;
Die Datei sollte aus Sicherheitgründen nicht für einen normalen Benutzer lesbar&lt;br /&gt;
sein.&lt;br /&gt;
&lt;br /&gt;
==Programme zur Userverwaltung==&lt;br /&gt;
===useradd===&lt;br /&gt;
User anlegen&lt;br /&gt;
 root@zero:~# useradd -m -u 1011 -g users -G admin -d /home/erwin -s /bin/bash -c &amp;quot;Erwin Lehman&amp;quot;  erwin&lt;br /&gt;
{| border=1 cellpadding=2&lt;br /&gt;
|&amp;quot;-m&amp;quot;&lt;br /&gt;
|Lege Homedirectory an&lt;br /&gt;
|-&lt;br /&gt;
|&amp;quot;-u 1011&amp;quot;&lt;br /&gt;
|Userid wird zugeordnet&lt;br /&gt;
|-&lt;br /&gt;
|&amp;quot;-g users&amp;quot;&lt;br /&gt;
|Primäre Gruppe wird zugeordnet&lt;br /&gt;
|-&lt;br /&gt;
|&amp;quot;-G admin&amp;quot;&lt;br /&gt;
|Sekunbdäre Gruppe wird zugeordnet&lt;br /&gt;
|-&lt;br /&gt;
|&amp;quot;-d /home/erwin/&amp;quot;&lt;br /&gt;
|Name des Homedirectory&lt;br /&gt;
|-&lt;br /&gt;
|&amp;quot;-s /bin/bash&amp;quot;&lt;br /&gt;
|Bash wird zugeordnet&lt;br /&gt;
|- &lt;br /&gt;
|&amp;quot;-c Erwin Lehman&amp;quot;&lt;br /&gt;
|Kommentarfeld&lt;br /&gt;
|-&lt;br /&gt;
|&amp;quot;erwin&amp;quot; &lt;br /&gt;
|Name des Users&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Defaulteinstellungen anzeigen&lt;br /&gt;
 root@zero:~# useradd -D&lt;br /&gt;
 GROUP=100&lt;br /&gt;
 HOME=/home&lt;br /&gt;
 INACTIVE=-1&lt;br /&gt;
 EXPIRE=&lt;br /&gt;
 SHELL=/bin/sh&lt;br /&gt;
 SKEL=/etc/skel&lt;br /&gt;
 CREATE_MAIL_SPOOL=no&lt;br /&gt;
&lt;br /&gt;
Defaulteinstellungen ändern&lt;br /&gt;
 useradd -D -s /bin/bash&lt;br /&gt;
&lt;br /&gt;
Konfigurationsdatei&lt;br /&gt;
 root@zero:~# cat /etc/default/useradd &lt;br /&gt;
 SHELL=/bin/bash&lt;br /&gt;
 GROUP=100&lt;br /&gt;
 HOME=/home&lt;br /&gt;
 INACTIVE=-1&lt;br /&gt;
 EXPIRE=&lt;br /&gt;
 SKEL=/etc/skel&lt;br /&gt;
 CREATE_MAIL_SPOOL=no&lt;br /&gt;
&lt;br /&gt;
===usermod===&lt;br /&gt;
User modifizieren&lt;br /&gt;
 root@zero:~# usermod -l fritz -s /bin/sh -G admin,video erwin&lt;br /&gt;
{| border=1 cellpadding=2&lt;br /&gt;
|&amp;quot;-l fritz&amp;quot;&lt;br /&gt;
|Neuer Username&lt;br /&gt;
|-&lt;br /&gt;
|&amp;quot;-s /bin/sh&amp;quot;&lt;br /&gt;
|Neue Shell&lt;br /&gt;
|-&lt;br /&gt;
|&amp;quot;-G admin, video&amp;quot;&lt;br /&gt;
|Sekunbdäre Gruppen werden zugeordnet&lt;br /&gt;
|-&lt;br /&gt;
|&amp;quot;erwin&amp;quot; &lt;br /&gt;
|Name des Users&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
===userdel===&lt;br /&gt;
User inklusive Homedirectory löschen&lt;br /&gt;
 root@zero:~# userdel -r fritz&lt;br /&gt;
&lt;br /&gt;
===passwd===&lt;br /&gt;
Rootpasswort ändern&lt;br /&gt;
 root@zero:~# passwd &lt;br /&gt;
 Geben Sie ein neues UNIX Passwort ein:'''sysadm''' &lt;br /&gt;
 Geben Sie das neue UNIX Passwort erneut ein:'''sysadm''' &lt;br /&gt;
 passwd: Passwort erfolgreich geändert&lt;br /&gt;
&lt;br /&gt;
Passwort von tux ändern&lt;br /&gt;
 root@zero:~# passwd tux&lt;br /&gt;
 Geben Sie ein neues UNIX Passwort ein:'''suxer''' &lt;br /&gt;
 Geben Sie das neue UNIX Passwort erneut ein:'''suxer'''&lt;br /&gt;
 passwd: Passwort erfolgreich geändert&lt;br /&gt;
&lt;br /&gt;
Minimale und Maximale Gültigkeit des Passwortes von tux festlegen&lt;br /&gt;
 root@zero:~# passwd -n 5 -x 120 tux&lt;br /&gt;
&lt;br /&gt;
===groupadd===&lt;br /&gt;
 root@zero:~# groupadd -f -g 2001 xinuxer&lt;br /&gt;
{| border=1 cellpadding=2&lt;br /&gt;
|&amp;quot;-f&amp;quot;&lt;br /&gt;
|Überschreibe bestehende Gruppe&lt;br /&gt;
|-&lt;br /&gt;
|&amp;quot;-g 2001&amp;quot;&lt;br /&gt;
|GID der Gruppe&lt;br /&gt;
|-&lt;br /&gt;
|&amp;quot;xinuxer&amp;quot; &lt;br /&gt;
|Name des Gruppe&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==chmod==&lt;br /&gt;
Die Syntax des Befehls chmod lautet:&lt;br /&gt;
&lt;br /&gt;
'''chmod''' WerWieWas [,WerWieWas,.....] Dateiliste&lt;br /&gt;
&lt;br /&gt;
oder&lt;br /&gt;
&lt;br /&gt;
'''chmod''' Oktalzahl Dateiliste&lt;br /&gt;
&lt;br /&gt;
Durch WerWieWas bzw. Oktalzahl wird die Rechtetabelle definiert. Innerhalb von&lt;br /&gt;
WerWieWas darf es kein Leerzeichen geben. Wer bezeichnet den Benutzerkreis,&lt;br /&gt;
dem man Rechte gibt, Wie die Art, in der die Rechte gegeben werden und Was die&lt;br /&gt;
Rechte als solche. Im einzelnen können folgende Kürzel benutzt werden:&lt;br /&gt;
&lt;br /&gt;
Für Wer kann eines der folgenden Kürzel oder eine Kombination davon stehen:&lt;br /&gt;
 u                   (user) Rechte für den Dateibesitzer&lt;br /&gt;
 g                   (group) Rechte für die Gruppe&lt;br /&gt;
 o                   (others) Rechte für alle anderen Benutzer&lt;br /&gt;
 a                   (all) Rechte für alle Benutzer&lt;br /&gt;
Für Wie steht eines der folgenden Kürzel:&lt;br /&gt;
 +                   Die Rechte werden zu den vorhandenen zusätzlich vergeben&lt;br /&gt;
 -                   Die im Folgenden genannten Rechte werden entzogen&lt;br /&gt;
 =                   Die im Folgenden genannten Rechte ersetzen die bisherigen&lt;br /&gt;
Für Was steht eines der folgenden Kürzel:&lt;br /&gt;
 r                   (read) lesen&lt;br /&gt;
 w                   (write) schreiben&lt;br /&gt;
 x                   (execute) ausführen&lt;br /&gt;
oder diese Sonderformen&lt;br /&gt;
 s                   (usersbit) Programm läuft unter der UID des Besitzers&lt;br /&gt;
 s                   (groupsbit)Programm läuft unter der GID des GRUPPE&lt;br /&gt;
 t                   (stickybit) Dateien im Verzeichnis darf nur Besitzer löschen&lt;br /&gt;
&lt;br /&gt;
===Beispiel===&lt;br /&gt;
Setze für alle Schreib- und Leserecht&lt;br /&gt;
 xinux@zero:~$ chmod a=rw test &lt;br /&gt;
 xinux@zero:~$ ls -l test &lt;br /&gt;
 -rw-rw-rw- 1 xinux xinux 0 2009-06-16 12:01 test&lt;br /&gt;
 xinux@zero:~$ &lt;br /&gt;
&lt;br /&gt;
Erteile Besitzer Ausführungsrecht&lt;br /&gt;
 xinux@zero:~$ chmod u+x test ; ls -l test &lt;br /&gt;
 -rwxrw-rw- 1 xinux xinux 0 2009-06-16 12:01 test&lt;br /&gt;
 xinux@zero:~$ &lt;br /&gt;
&lt;br /&gt;
===chmod oktale Schreibweise===&lt;br /&gt;
 Specialrights        User           Group         Other&lt;br /&gt;
 usbit gsbit sticky    r    w   x     r   w   x     r   w   x&lt;br /&gt;
   1     1      1      1    1   1     1   1   1     1   1   1&lt;br /&gt;
   0     0      0      0    0   0     0   0   0     0   0   0&lt;br /&gt;
 Oktale Wertigkeit pro Recht&lt;br /&gt;
   4     2       1     4    2   1     4   2   1     4   2   1&lt;br /&gt;
&lt;br /&gt;
===Beispiele===&lt;br /&gt;
 xinux@zero:~$ chmod 751 test ; ls -l test&lt;br /&gt;
 -rwxr-x--x 1 xinux xinux 0 2009-06-16 12:01 test&lt;br /&gt;
 xinux@zero:~$ &lt;br /&gt;
&lt;br /&gt;
 xinux@zero:~$ chmod 4770 test ; ls -l test&lt;br /&gt;
 -rwsrwx--- 1 xinux xinux 0 2009-06-16 12:01 test&lt;br /&gt;
 xinux@zero:~$ &lt;br /&gt;
&lt;br /&gt;
 xinux@zero:~$ chmod 0 test ; ls -l test &lt;br /&gt;
 ---------- 1 xinux xinux 0 2009-06-16 12:01 test&lt;br /&gt;
&lt;br /&gt;
===chmod Optionen===&lt;br /&gt;
 -c   (changes) es werden nur die Dateien angezeigt, deren Zugriffsrechte tatsächlich verändert werden&lt;br /&gt;
 -f   (silent, quiet) Fehlermeldungen wegen fehlgeschlagener Änderungsversuche werden unterdrückt&lt;br /&gt;
 -v   (verbose) alle Aktionen werden angezeigt&lt;br /&gt;
 -R   (recursive) die Zugriffsrechte aller Dateien in den Unterverzeichnissen werden ebenfalls geändert&lt;br /&gt;
&lt;br /&gt;
Theoretisch sind alle Kombinationen der Zugriffsrechte denkbar, aber der&lt;br /&gt;
Eigentümer einer Datei darf diese immer lesen, selbst wenn das Lesebit nicht&lt;br /&gt;
gesetzt ist. Genauso macht es wenig Sinn, eine gewöhnliche Textdatei als&lt;br /&gt;
ausführbar zu setzen; die Shell wird damit nichts anfangen können. Ein x für ein&lt;br /&gt;
Verzeichnis gibt an, dass in dieses gewechselt werden kann.&lt;br /&gt;
&lt;br /&gt;
Rechte sind verbindlich&lt;br /&gt;
&lt;br /&gt;
Interessant ist auch ein Konstrukt folgender Art&lt;br /&gt;
 -rwx---rwx&lt;br /&gt;
&lt;br /&gt;
das angibt, dass mit der Datei alles angestellt werden kann, außer durch Nutzer der&lt;br /&gt;
Gruppe. Versucht irgend jemand, der nicht der Gruppe des Eigentümers angehört,&lt;br /&gt;
die Datei zu modifizieren, wird ihm dies gelingen, einem Gruppenmitglied bleibt&lt;br /&gt;
dies versagt, obwohl er ja gleichzeitig ein &amp;quot;Anderer&amp;quot; ist. D.h. die Rechte der&lt;br /&gt;
Gruppe sind verbindlicher, als die Rechte der anderen!&lt;br /&gt;
&lt;br /&gt;
===Bedeutungen der Zugriffsarten===&lt;br /&gt;
====Dateien====&lt;br /&gt;
* r: Der Inhalt der Datei kann gelesen und damit auch kopiert werden. &lt;br /&gt;
 root@zero:~# cat test&lt;br /&gt;
 Dies ist eine Testdatei&lt;br /&gt;
  &lt;br /&gt;
 root@zero:~# cp test backup&lt;br /&gt;
&lt;br /&gt;
* w: Der Inhalt der Datei darf verändert werden. Ob die Datei gelöscht werden kann ist&lt;br /&gt;
keine Eigenschaft der Datei, sondern des Verzeichnisses, indem sich die Datei befindet.&lt;br /&gt;
 root@zero:~# cat &amp;gt; test&lt;br /&gt;
 Hier steht jetzt was anderes&lt;br /&gt;
 ^C&lt;br /&gt;
 root@zero:~# cat test&lt;br /&gt;
 Hier steht jetzt was anderes&lt;br /&gt;
  &lt;br /&gt;
 xinux@zero:~$ ls -ld verzeichnis/&lt;br /&gt;
 dr-xr-xr-x 2 xinux xinux 4096 2009-06-18 11:16 verzeichnis/&lt;br /&gt;
 xinux@zero:~/verzeichnis$ rm text&lt;br /&gt;
 rm: Entfernen von „text“ nicht möglich: Permission denied&lt;br /&gt;
&lt;br /&gt;
* x: Ausführrecht für Programme und Skripte&lt;br /&gt;
 xinux@zero:~$ ./programm&lt;br /&gt;
 -bash: ./programm: Permission denied&lt;br /&gt;
 xinux@zero:~$ chmod +x programm&lt;br /&gt;
 xinux@zero:~$ ./programm&lt;br /&gt;
 Test&lt;br /&gt;
  test&lt;br /&gt;
&lt;br /&gt;
====Verzeichnisse====&lt;br /&gt;
* r: Die Einträge in dem Verzeichnis sind lesbar.&lt;br /&gt;
Leserecht von verzeichnis/ entziehen&lt;br /&gt;
 xinux@zero:~$ chmod a-r verzeichnis/&lt;br /&gt;
 xinux@zero:~$ ls verzeichnis/&lt;br /&gt;
 ls: Öffnen von Verzeichnis verzeichnis/ nicht möglich: Permission denied&lt;br /&gt;
Leserecht für Benutzer und Gruppe vergeben&lt;br /&gt;
 xinux@zero:~$ chmod a+r verzeichnis/&lt;br /&gt;
 xinux@zero:~$ ls verzeichnis/&lt;br /&gt;
 text&lt;br /&gt;
&lt;br /&gt;
* w: Die Einträge in dem Verzeichnis können geändert werden. &lt;br /&gt;
Neue Datei erstellen&lt;br /&gt;
 xinux@zero:~$ touch neu&lt;br /&gt;
 xinux@zero:~$ ls neu&lt;br /&gt;
 neu&lt;br /&gt;
&lt;br /&gt;
Datei löschen&lt;br /&gt;
 xinux@zero:~$ rm neu&lt;br /&gt;
 xinux@zero:~$ ls neu&lt;br /&gt;
 ls: Zugriff auf neu nicht möglich: No such file or directory&lt;br /&gt;
&lt;br /&gt;
* x: Der Name des Verzeichnisses kann in einem Pfadnamen erscheinen.&lt;br /&gt;
Verzeichnis ohne x Recht&lt;br /&gt;
 xinux@zero:~$ chmod a-x verzeichnis/&lt;br /&gt;
Wechseln in Verzeichnis mangels x-Recht nicht möglich&lt;br /&gt;
 xinux@zero:~$ cd verzeichnis/&lt;br /&gt;
 -bash: cd: verzeichnis/: Permission denied&lt;br /&gt;
x-Recht vergeben&lt;br /&gt;
 xinux@zero:~$ chmod a+x verzeichnis/&lt;br /&gt;
damit Wechsel in Verzeichnis möglich&lt;br /&gt;
 xinux@zero:~$ cd verzeichnis/&lt;br /&gt;
 xinux@zero:~/verzeichnis$ pwd&lt;br /&gt;
 /home/xinux/verzeichnis&lt;br /&gt;
&lt;br /&gt;
====umask====&lt;br /&gt;
Neue Dateien und Verzeichnisse werden mit ein und denselben Zufriffsrechten erzeugt.&lt;br /&gt;
 xinux@zero:~$ mkdir text&lt;br /&gt;
 xinux@zero:~$ touch textdat&lt;br /&gt;
 xinux@zero:~$ ls -ld text*&lt;br /&gt;
 drwxr-xr-x 2 xinux xinux 4096 2009-06-18 11:37 text&lt;br /&gt;
 -rw-r--r-- 1 xinux xinux    0 2009-06-18 11:37 textdat&lt;br /&gt;
&lt;br /&gt;
Zuständig für dieses Verhalten ist die sogenannte umask, die oft in der Datei&lt;br /&gt;
/etc/profile auf den Wert 022 voreingestellt ist. Zusätzlich wird noch eine&lt;br /&gt;
Maximalmaske benötigt, die sich für Verzeichnisse und andere Dateien&lt;br /&gt;
unterscheidet. Die bei der Erzeugung gesetzten Rechte entstehen nun, indem von&lt;br /&gt;
der Maximalmaske der durch die umask vorgegebene Wert subtrahiert wird:&lt;br /&gt;
&lt;br /&gt;
{| border=1 cellpadding=2&lt;br /&gt;
!&lt;br /&gt;
! Dateien&lt;br /&gt;
! Verzeichnisse&lt;br /&gt;
|-&lt;br /&gt;
| Systemvorgabe&lt;br /&gt;
| 666&lt;br /&gt;
| 777&lt;br /&gt;
|-&lt;br /&gt;
| -umask&lt;br /&gt;
| 022&lt;br /&gt;
| 022&lt;br /&gt;
|-&lt;br /&gt;
| Ergebnis&lt;br /&gt;
| 644&lt;br /&gt;
| 755&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
 xinux@zero:~$ grep umask /etc/profile&lt;br /&gt;
 umask 022&lt;br /&gt;
&lt;br /&gt;
==Gruppenzugehörigkeit==&lt;br /&gt;
===newgrp===&lt;br /&gt;
Ändert die Gruppenzugehörigkeit eines Benutzers auf die angegebene Gruppe. Wenn keine Gruppe angegeben wird, wird die &lt;br /&gt;
Anmeldegruppe des Benutzers verwendet. Die neue Gruppe wird anschließend fü Zugriffskontrollen verwendet.&lt;br /&gt;
&lt;br /&gt;
 newgrp Gruppenname&lt;br /&gt;
&lt;br /&gt;
 root@zero:~# newgrp hacker&lt;br /&gt;
 root@zero:~# id&lt;br /&gt;
 uid=0(root) gid=1006(hacker) Gruppen=0(root),1006(hacker)&lt;br /&gt;
&lt;br /&gt;
===chgrp===&lt;br /&gt;
Verändert die Besitzugehörigkeit zu der angegebenen Gruppe&lt;br /&gt;
&lt;br /&gt;
 chgrp [Optionen] Gruppe Datei(en)&lt;br /&gt;
&lt;br /&gt;
Optionen:&lt;br /&gt;
 -c Zeigt Veränderungen an&lt;br /&gt;
 -f Unterdrückt die meisten Fehlermeldungen&lt;br /&gt;
 -R Verändert Dateien und Verzeichnisse rekursiv&lt;br /&gt;
 -v Gibt geschwätzige Ausgabe aus.&lt;br /&gt;
&lt;br /&gt;
 root@zero:~# ls -l&lt;br /&gt;
 ...&lt;br /&gt;
 d-wx--x--x  3 root root 4096 2009-06-18 13:34 verzeichnis&lt;br /&gt;
 &lt;br /&gt;
 root@zero:~# chgrp -R xinux verzeichnis/&lt;br /&gt;
 root@zero:~# ls -l&lt;br /&gt;
 ...&lt;br /&gt;
 d-wx--x--x  3 root xinux 4096 2009-06-18 13:34 verzeichnis&lt;br /&gt;
&lt;br /&gt;
 xinux@zero:~$ cd /root/verzeichnis/&lt;br /&gt;
 xinux@zero:/root/verzeichnis$ pwd&lt;br /&gt;
 /root/verzeichnis&lt;br /&gt;
&lt;br /&gt;
===chown===&lt;br /&gt;
Ändert den Eigentümer von einer oder mehreren Dateien in den angegebenen Benutzer. &lt;br /&gt;
chown erlaubt ebenfalls das Ändern der Gruppeneigentümreschaft. Nur der aktuelle Eigentümer einer&lt;br /&gt;
Datei oder der Superuser (root) darf die Eigentumsverhältnisse ändern.&lt;br /&gt;
&lt;br /&gt;
 chown [Optionen] Benutzer(:Gruppe) Dateien&lt;br /&gt;
&lt;br /&gt;
Optionen:&lt;br /&gt;
 -c Gibt Informationen über die veränderten Dateien aus&lt;br /&gt;
 --dereference Symbolischen Links folgen&lt;br /&gt;
 -v Gibt Informationen über alle Dateien aus, die chown zu ändern versucht, egal, ob die Änderung erfolgt ist oder nicht&lt;br /&gt;
 -R Geht rekursiv durch alle Unterverzeichnisse und führt die Änderungen durch. &lt;br /&gt;
&lt;br /&gt;
 root@zero:~# chown -R xinux.xinux verzeichnis/&lt;br /&gt;
 root@zero:~# ls -l&lt;br /&gt;
 insgesamt 12&lt;br /&gt;
 drwx------ 13 root  root  4096 2009-04-21 15:11 profile&lt;br /&gt;
 --w-------  1 root  root     0 2009-06-18 11:13 test&lt;br /&gt;
 -rw-r--r--  1 root  root    40 2009-06-18 12:04 text&lt;br /&gt;
 drwxrwx--x  3 xinux xinux 4096 2009-06-18 13:39 verzeichnis&lt;br /&gt;
 &lt;br /&gt;
 root@zero:~# chown -R -c xinux.xinux verzeichnis/&lt;br /&gt;
 &lt;br /&gt;
 root@zero:~# chown -R -v xinux.xinux verzeichnis/&lt;br /&gt;
 Eigentümer von „verzeichnis/01“ als xinux:xinux erhalten&lt;br /&gt;
 Eigentümer von „verzeichnis/test“ als xinux:xinux erhalten&lt;br /&gt;
 Eigentümer von „verzeichnis/“ als xinux:xinux erhalten&lt;br /&gt;
&lt;br /&gt;
==Eingabe/Ausgabe==&lt;br /&gt;
Standardeingabe (0): Laufende Programme erwarten von hier ihre Eingaben (normalerweise handelt es sich um die Tastatur).&lt;br /&gt;
&lt;br /&gt;
Standardausgabe (1): Programme schreiben auf diese ihre Ausgaben (Bildschirm).&lt;br /&gt;
&lt;br /&gt;
Standardfehlerausgabe (2) : Fehlerausgaben landen hier (Bildschirm, aber nur die aktive Konsole).&lt;br /&gt;
&lt;br /&gt;
[[Bild:std.jpg]]&lt;br /&gt;
&lt;br /&gt;
===cat===&lt;br /&gt;
Das Programm cat liest von STDIN und gibt es STDOUT wieder aus&lt;br /&gt;
&lt;br /&gt;
Einlesen der Datei text&lt;br /&gt;
 root@zero:~# cat &amp;lt; text&lt;br /&gt;
 wichtig&lt;br /&gt;
&lt;br /&gt;
Schreiben in die Datei text, dies überschreibt den bisherigen Inhalt der Datei&lt;br /&gt;
 root@zero:~# cat &amp;gt; text&lt;br /&gt;
 sogar noch wichtiger &lt;br /&gt;
 &lt;br /&gt;
Ausgeben der Datei text&lt;br /&gt;
 root@zero:~# cat text &lt;br /&gt;
 sogar noch wichtiger&lt;br /&gt;
&lt;br /&gt;
Lesen aus der Datei text und schreiben in die Datei neuertext&lt;br /&gt;
 root@zero:~# cat &amp;lt; text &amp;gt; neuertext&lt;br /&gt;
 root@zero:~# cat neuertext&lt;br /&gt;
 sogar noch wichtiger&lt;br /&gt;
&lt;br /&gt;
Anhängen der Ausgabe von date an die Datei neuertext&lt;br /&gt;
 root@zero:~# date &amp;gt;&amp;gt; neuertext&lt;br /&gt;
 root@zero:~# cat neuertext&lt;br /&gt;
 sogar noch wichtiger&lt;br /&gt;
 Do 18. Jun 14:08:58 CEST 2009&lt;br /&gt;
&lt;br /&gt;
Umleiten des Standardfehlerkanals nach error&lt;br /&gt;
 root@zero:~# rm sux 2&amp;gt; error&lt;br /&gt;
 root@zero:~# more error&lt;br /&gt;
 rm: Entfernen von „sux“ nicht möglich: No such file or directory&lt;br /&gt;
&lt;br /&gt;
===Umleitungen===&lt;br /&gt;
Nacheinander auszuführende Kommandos&lt;br /&gt;
 root@zero:~# pwd; date&lt;br /&gt;
 /root&lt;br /&gt;
 Do 18. Jun 14:13:05 CEST 2009&lt;br /&gt;
 &lt;br /&gt;
Übergeben der Ausgabe von tail als Eingabe von grep mit Hilfe der Pipe &amp;quot;|&amp;quot;&lt;br /&gt;
 root@zero:~# tail /var/log/auth.log | grep xinux&lt;br /&gt;
 Jun 18 13:52:33 zero nss_wins[11433]: pam_unix(login:session): session closed for user xinux&lt;br /&gt;
&lt;br /&gt;
Übergeben der letzten 100 Zeilen von syslog als Eingabe von grep&lt;br /&gt;
 root@zero:~# tail /var/log/syslog -n 100 | grep error&lt;br /&gt;
 Jun 18 09:30:54 zero kernel: [154384.692135] end_request: I/O error, dev fd0, sector 0&lt;br /&gt;
 Jun 18 09:30:54 zero kernel: [154384.712137] end_request: I/O error, dev fd0, sector 0&lt;br /&gt;
&lt;br /&gt;
==tr==&lt;br /&gt;
tr ist ein Programm um Zeichen zu übersetzen. Dies betrifft nur die Ausgabe, die Datei selbst bleibt unverändert.&lt;br /&gt;
&lt;br /&gt;
Ersetzt Kleinbuchstaben durch Großbuchstaben aus der Datei text&lt;br /&gt;
 root@zero:~# tr &amp;quot;a-z&amp;quot; &amp;quot;A-Z&amp;quot; &amp;lt; text&lt;br /&gt;
 SOGAR NOCH WICHTIGER&lt;br /&gt;
 123&lt;br /&gt;
 34&lt;br /&gt;
 4711&lt;br /&gt;
 TEST&lt;br /&gt;
&lt;br /&gt;
Ersetzt alle Zahlen durch X&lt;br /&gt;
 root@zero:~# tr &amp;quot;0-9&amp;quot; &amp;quot;X&amp;quot; &amp;lt; text&lt;br /&gt;
 sogar noch wichtiger&lt;br /&gt;
 XXX&lt;br /&gt;
 XX&lt;br /&gt;
 XXXX&lt;br /&gt;
 test&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
 root@zero:~# cat &amp;gt; test&lt;br /&gt;
 +++++&lt;br /&gt;
 ###&lt;br /&gt;
 1111&lt;br /&gt;
&lt;br /&gt;
-s löscht mehrfach kommende Zeichen&lt;br /&gt;
 root@zero:~# tr '''-s''' &amp;quot;+&amp;quot; &amp;lt; test&lt;br /&gt;
 +&lt;br /&gt;
 ###&lt;br /&gt;
 1111&lt;br /&gt;
&lt;br /&gt;
-d löscht vorkommende Zeichen &lt;br /&gt;
 root@zero:~# tr '''-d''' &amp;quot;#&amp;quot; &amp;lt; test&lt;br /&gt;
 +++++ &lt;br /&gt;
 &lt;br /&gt;
 1111&lt;br /&gt;
&lt;br /&gt;
==cut==&lt;br /&gt;
Spalten aus einer Datei schneiden. Dies betrifft nur die Ausgabe, die Datei selbst bleibt unverändert.&lt;br /&gt;
 &lt;br /&gt;
Schneidet die erste Spalte aus, der Delimiter ist : &lt;br /&gt;
 root@zero:~# cut -f 1 -d : /etc/passwd&lt;br /&gt;
 root&lt;br /&gt;
 daemon&lt;br /&gt;
 bin&lt;br /&gt;
 ...&lt;br /&gt;
 xinux&lt;br /&gt;
&lt;br /&gt;
 root@zero:~# more test&lt;br /&gt;
 1234#5678#9999&lt;br /&gt;
 &lt;br /&gt;
Schneidet die zweite Spalte aus, der Delimiter ist #&lt;br /&gt;
 root@zero:~# cut -f 2 -d &amp;quot;#&amp;quot; &amp;lt; test&lt;br /&gt;
 5678&lt;br /&gt;
&lt;br /&gt;
Schneidet bis zum 3 Zeichen ab&lt;br /&gt;
 root@zero:~$ echo S01policykit | cut -c 4-&lt;br /&gt;
 policykit&lt;br /&gt;
&lt;br /&gt;
==expand==&lt;br /&gt;
Ersetzt Tabulatorzeichen durch Folgen von Leerzeichen und schreibt das Ergebnis auf die Standardausgabe&lt;br /&gt;
 root@zero:~# expand /etc/samba/smb.conf&lt;br /&gt;
 ...&lt;br /&gt;
&lt;br /&gt;
==fmt==&lt;br /&gt;
#Setzt den Text der Dateien im Blocksatz der angegebenen Breite durch Auffüllen von Zeilen und Entfernen von Zeilenwechseln.&lt;br /&gt;
Standardgemäß werden Leerzeilen, die Position von Leerzeichen und der Einzug am Zeilenanfang erhalten. fmt versucht, &lt;br /&gt;
Zeilenumbrüche an Satzenden durchzuführen sowie sie nach dem ersten oder vor dem letzten Wort eines Satzes zu vermeiden. &lt;br /&gt;
 &lt;br /&gt;
 fmt [Optionen] [Dateien]&lt;br /&gt;
&lt;br /&gt;
Optionen&lt;br /&gt;
&lt;br /&gt;
* -p ''Präfix'': Formatiert nur Zeilen, die mit ''Präfix'' anfangen&lt;br /&gt;
 root@zero:/tmp# fmt -p '#' text&lt;br /&gt;
 #Setzt den Text der Dateien im Blocksatz der angegebenen Breite durch&lt;br /&gt;
 #Auffüllen von Zeilen und Entfernen von Zeilenwechseln.  Standardgemäß&lt;br /&gt;
 #werden Leerzeilen, die Position von Leerzeichen und der Einzug am&lt;br /&gt;
 #Zeilenanfang erhalten. fmt versucht,&lt;br /&gt;
 Zeilenumbrüche an Satzenden durchzuführen sowie sie nach dem ersten oder vor dem letzten Wort eines Satzes zu vermeiden.&lt;br /&gt;
&lt;br /&gt;
* -u : Erzwingt genau ein Leerzeichen zwischen Wörtern und zwei Leerzeichen zwischen Sätzen&lt;br /&gt;
&lt;br /&gt;
* -w ''Breite'': Setzt die Ausgabebreite auf ''Breite''&lt;br /&gt;
 root@zero:/tmp# fmt -w 30 text&lt;br /&gt;
 #Setzt den Text der Dateien&lt;br /&gt;
 im Blocksatz der angegebenen&lt;br /&gt;
 Breite durch Auffüllen&lt;br /&gt;
 von Zeilen und Entfernen&lt;br /&gt;
 von Zeilenwechseln.&lt;br /&gt;
 #Standardgemäß werden&lt;br /&gt;
 Leerzeilen, die Position von&lt;br /&gt;
 Leerzeichen und der Einzug am&lt;br /&gt;
 Zeilenanfang erhalten. fmt&lt;br /&gt;
 versucht, Zeilenumbrüche&lt;br /&gt;
 an Satzenden durchzuführen&lt;br /&gt;
 sowie sie nach dem ersten&lt;br /&gt;
 oder vor dem letzten Wort&lt;br /&gt;
 eines Satzes zu vermeiden.&lt;br /&gt;
&lt;br /&gt;
==join==&lt;br /&gt;
Führt die Zeilen zweier sortierter Dateien anhand von '''Übereinstimmungen''' in einem gemeinsamen Feld zusammen.&lt;br /&gt;
&lt;br /&gt;
 root@zero:~# more name&lt;br /&gt;
 1. karl&lt;br /&gt;
 2. heinz&lt;br /&gt;
 3. hans&lt;br /&gt;
 4. otto&lt;br /&gt;
 root@zero:~# more tel&lt;br /&gt;
 1. 1234&lt;br /&gt;
 2. 4321&lt;br /&gt;
 3. 222&lt;br /&gt;
 4. 121212&lt;br /&gt;
 root@zero:~# join name tel &amp;gt; telefonbuch&lt;br /&gt;
 root@zero:~# more telefonbuch&lt;br /&gt;
 1. karl 1234&lt;br /&gt;
 2. heinz 4321&lt;br /&gt;
 3. hans 222&lt;br /&gt;
 4. otto 121212&lt;br /&gt;
&lt;br /&gt;
 root@zero:~# join -t : /etc/passwd /etc/shadow&lt;br /&gt;
 ....&lt;br /&gt;
 daemon:x:1:1:daemon:/usr/sbin:/bin/sh:*:14181:0:99999:7:::&lt;br /&gt;
 bin:x:2:2:bin:/bin:/bin/sh:*:14181:0:99999:7:::&lt;br /&gt;
 sys:x:3:3:sys:/dev:/bin/sh:*:14181:0:99999:7:::&lt;br /&gt;
 sync:x:4:65534:sync:/bin:/bin/sync:*:14181:0:99999:7:::&lt;br /&gt;
 ...&lt;br /&gt;
&lt;br /&gt;
join in dat1 nach Feld 3 und in dat2 nach Feld 2&lt;br /&gt;
 thomas@lydia:~$ cat dat1 &lt;br /&gt;
 hugo:ps:1111&lt;br /&gt;
 erwin:zw:2222&lt;br /&gt;
 karl:sb:3333&lt;br /&gt;
 rudi:kl:4444&lt;br /&gt;
 thomas@lydia:~$ cat dat2&lt;br /&gt;
 blau:1111:svn&lt;br /&gt;
 grün:2222:fcs&lt;br /&gt;
 gelb:3333:fch&lt;br /&gt;
 rot:4444:fck&lt;br /&gt;
 thomas@lydia:~$ join -t : -1 3 -2 2 dat1 dat2 &lt;br /&gt;
 1111:hugo:ps:blau:svn&lt;br /&gt;
 2222:erwin:zw:grün:fcs&lt;br /&gt;
 3333:karl:sb:gelb:fch&lt;br /&gt;
 4444:rudi:kl:rot:fck&lt;br /&gt;
&lt;br /&gt;
==nl==&lt;br /&gt;
Nummeriert die Zeilen in einer Datei.&lt;br /&gt;
&lt;br /&gt;
 root@zero:~# nl /etc/passwd                                                   &lt;br /&gt;
     1  root:x:0:0:root:/root:/bin/bash                                       &lt;br /&gt;
     2  daemon:x:1:1:daemon:/usr/sbin:/bin/sh                                 &lt;br /&gt;
     3  bin:x:2:2:bin:/bin:/bin/sh                                            &lt;br /&gt;
     4  sys:x:3:3:sys:/dev:/bin/sh                                            &lt;br /&gt;
     5  sync:x:4:65534:sync:/bin:/bin/sync&lt;br /&gt;
     ...&lt;br /&gt;
Nummereriet mit führenden Nullen der Separatir ist ein :&lt;br /&gt;
 root@zero:~# nl -s : -n rz dat1&lt;br /&gt;
&lt;br /&gt;
==od==&lt;br /&gt;
Gibt Dateien im Oktal und anderen Formaten aus.&lt;br /&gt;
&lt;br /&gt;
 od [Optionen] Datei&lt;br /&gt;
&lt;br /&gt;
* -j ''Bytes'': Überspringt die Anzahl ''Bytes'' einer Datei&lt;br /&gt;
* -N ''Bytes'': Gibt nur die Anzahl ''Bytes'' aus&lt;br /&gt;
* -c : Gebe ASCII Zeichen aus&lt;br /&gt;
* -f : Gebe Fließkommazahlen aus&lt;br /&gt;
* -i : Gebe Dezimal Integer aus&lt;br /&gt;
* -l : Gebe Dezimal Long aus&lt;br /&gt;
* -o : Gebe Oktal 2 Byte Einheiten aus&lt;br /&gt;
* -s : Gebe Dezimal 2 Byte Einheiten aus&lt;br /&gt;
* -x : Gebe Hexadezimale 2 Byte einheiten aus&lt;br /&gt;
&lt;br /&gt;
Beispiele&lt;br /&gt;
&lt;br /&gt;
Gebe Master Boot Record (die ersten 512 Byte der Festplatte /dev/sda) als Hexadezimal aus&lt;br /&gt;
 root@zero:~# od '''-x -N''' 512 /dev/sda&lt;br /&gt;
 0000000 48eb 1090 d08e 00bc b8b0 0000 d88e c08e&lt;br /&gt;
 0000020 befb 7c00 00bf b906 0200 a4f3 21ea 0006&lt;br /&gt;
 0000040 be00 07be 0438 0b75 c683 8110 fefe 7507&lt;br /&gt;
 0000060 ebf3 b416 b002 bb01 7c00 80b2 748a 0203&lt;br /&gt;
 0000100 00ff 2000 0001 0000 0200 90fa f690 80c2&lt;br /&gt;
 ...&lt;br /&gt;
&lt;br /&gt;
Schreibe &amp;quot;suxer&amp;quot; in die Datei test&lt;br /&gt;
 root@zero:~# echo &amp;quot;suxer&amp;quot; &amp;gt; test&lt;br /&gt;
Ausgabe Hexadezimal&lt;br /&gt;
 root@zero:~# od -x test&lt;br /&gt;
 0000000 7573 6578 0a72&lt;br /&gt;
 0000006&lt;br /&gt;
&lt;br /&gt;
Ausgabe ASCII Zeichen&lt;br /&gt;
 root@zero:~# od -c test&lt;br /&gt;
 0000000   s   u   x   e   r  \n&lt;br /&gt;
 0000006&lt;br /&gt;
&lt;br /&gt;
==paste==&lt;br /&gt;
Fügt die Zeilen von zwei oder mehr Dateien horizontal zusammen&lt;br /&gt;
 root@zero:~# paste name tel&lt;br /&gt;
 1. karl 1. 1234&lt;br /&gt;
 2. heinz        2. 4321&lt;br /&gt;
 3. hans 3. 222&lt;br /&gt;
 4. otto 4. 121212&lt;br /&gt;
&lt;br /&gt;
==pr==&lt;br /&gt;
Bereitet Textdateien zum Drucken vor.&lt;br /&gt;
&lt;br /&gt;
 root@zero:~# echo &amp;quot;Plan für heute&amp;quot; &amp;gt; dokument&lt;br /&gt;
 root@zero:~# more dokument&lt;br /&gt;
 Plan für heute&lt;br /&gt;
 root@zero:~# pr dokument   &lt;br /&gt;
  &lt;br /&gt;
 &lt;br /&gt;
 2009-06-19 12:44                    dokument                     Seite 1&lt;br /&gt;
 &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
 Plan für heute&lt;br /&gt;
&lt;br /&gt;
Anmerkung Ausmaße der Bildschirmausgabe wie eine Druckseite.&lt;br /&gt;
&lt;br /&gt;
==sed==&lt;br /&gt;
streaming editor. Mit sed ist es möglich, den Inhalt einer Datei automatisch (nicht interaktiv) zu&lt;br /&gt;
bearbeiten. Wie unter Linux üblich, wird auch hier der Text nicht wirklich verändert sondern die &lt;br /&gt;
Änderung erfolgt über die Standardausgabe, die wieder umgeleitet werden kann. Die Syntax ist ähnlich &lt;br /&gt;
des ex modus von vi. Reguläre Ausdrücke können nach Belieben benutzt werden. &lt;br /&gt;
&lt;br /&gt;
Optionen:&lt;br /&gt;
 -e Zeichenkette  wendet die Editorbefehle aus Zeichenkette auf den Text an.&lt;br /&gt;
 -n gibt nur die Zeilen aus, die explizit (durch &amp;quot;p&amp;quot; ausgedruckt werden sollen&lt;br /&gt;
&lt;br /&gt;
Gibt die dritte Zeile der Datei text aus&lt;br /&gt;
 root@zero:~# sed -n &amp;quot;3p&amp;quot; text&lt;br /&gt;
 34&lt;br /&gt;
&lt;br /&gt;
Gibt die erste bis dritte Zeile von text aus&lt;br /&gt;
 root@zero:~# sed -n &amp;quot;1,3p&amp;quot; text&lt;br /&gt;
 sogar noch wichtiger&lt;br /&gt;
 123&lt;br /&gt;
 34&lt;br /&gt;
&lt;br /&gt;
Löschen der Zeile mit &amp;quot;sogar&amp;quot;&lt;br /&gt;
 root@zero:~# sed -e '/sogar/d' &amp;lt; text&lt;br /&gt;
 123&lt;br /&gt;
 34&lt;br /&gt;
 4711&lt;br /&gt;
 test&lt;br /&gt;
&lt;br /&gt;
und schreiben in text2&lt;br /&gt;
 root@zero:~# sed -e '/sogar/d' &amp;lt; text &amp;gt; text2&lt;br /&gt;
 root@zero:~# more text2&lt;br /&gt;
 123&lt;br /&gt;
 34&lt;br /&gt;
 4711&lt;br /&gt;
 test&lt;br /&gt;
&lt;br /&gt;
Alle 3en durch DREI ersetzen&lt;br /&gt;
 root@zero:~# sed -e 's/3/DREI/g' &amp;lt; text&lt;br /&gt;
 sogar noch wichtiger&lt;br /&gt;
 12DREI&lt;br /&gt;
 DREI4&lt;br /&gt;
 4711&lt;br /&gt;
 test&lt;br /&gt;
&lt;br /&gt;
==wc==&lt;br /&gt;
Zählt die Anzahl von Zeichen, Wörter oder Zeilen&lt;br /&gt;
&lt;br /&gt;
Optionen&lt;br /&gt;
* -m : Zählt die Anzahl der Zeichen&lt;br /&gt;
 root@zero:~# more name&lt;br /&gt;
 1. karl&lt;br /&gt;
 2. heinz&lt;br /&gt;
 3. hans&lt;br /&gt;
 4. otto&lt;br /&gt;
 root@zero:~# wc '''-m''' tel&lt;br /&gt;
 33 tel&lt;br /&gt;
&lt;br /&gt;
* -w : Zählt die Anzahl der Wörter (einschließlich Zahlen und andere Zeichen)&lt;br /&gt;
 root@zero:~# wc '''-w''' name&lt;br /&gt;
 8 name&lt;br /&gt;
&lt;br /&gt;
* -l : Zählt die Anzahl der Zeilen&lt;br /&gt;
 root@zero:~# wc '''-l''' name&lt;br /&gt;
 4 name&lt;br /&gt;
&lt;br /&gt;
==Sort==&lt;br /&gt;
&lt;br /&gt;
Zum sortieren von Dateien nach Feldern benutzt man sort. sort liest von STDIN man kann die Datei aber auch als Argument übergeben. &lt;br /&gt;
&lt;br /&gt;
Sortiert nach dem ersten Feld&lt;br /&gt;
  root@zero:~# sort /etc/passwd 	 &lt;br /&gt;
&lt;br /&gt;
Es wird geprüft ob die Datei schon sortiert ist &lt;br /&gt;
 root@zero:~# sort -c /etc/passwd 	&lt;br /&gt;
&lt;br /&gt;
Sortiert nach dem ersten Feld (Richtungsumkehr)  &lt;br /&gt;
 root@zero:~#  sort -r /etc/passwd&lt;br /&gt;
&lt;br /&gt;
Führende Leersortzeichen werden ignoriert &lt;br /&gt;
 root@zero:~# sort -b /etc/passwd&lt;br /&gt;
&lt;br /&gt;
Ausgabe  in die Datei pass&lt;br /&gt;
 root@zero:~# sort  /etc/passwd   -o pass	 &lt;br /&gt;
&lt;br /&gt;
nimmt : als Trenner -Voreinstellung ist TAB&lt;br /&gt;
  root@zero:~# sort -t : /etc/passwd&lt;br /&gt;
&lt;br /&gt;
sortiert nach dem  3 Feld,  der Trenner ist : und es wird nummerisch sortiert&lt;br /&gt;
&lt;br /&gt;
 root@zero:~# sort -t: +2 -n /etc/passwd		&lt;br /&gt;
&lt;br /&gt;
sortiert nach dem  3 Feld,  der Trenner ist : und es wird nummerisch sortiert&lt;br /&gt;
					&lt;br /&gt;
 root@zero:~# sort -t: -k 3 -n /etc/passwd&lt;br /&gt;
&lt;br /&gt;
Sortiert nach dem  3  bis zum 5 Feld, der Trenner ist : und es wird nummerisch sortiert&lt;br /&gt;
	&lt;br /&gt;
 root@zero:~# sort -t: -k 3,5 -n /etc/passwd	&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==INodes==&lt;br /&gt;
Inode (oder I-Node) wird im Deutschen am besten als Informationsknoten oder&lt;br /&gt;
Indexeintrag bezeichnet. Er fasst alle Attribute einer Datei zusammen außer dem Inhalt&lt;br /&gt;
und dem Namen der Datei.&lt;br /&gt;
&lt;br /&gt;
===Daten===&lt;br /&gt;
{| border=1 cellpadding=2&lt;br /&gt;
|type&lt;br /&gt;
|Der Typ der Datei wird als einzelner Buchstabe angezeigt. Der Typ einer Datei wird beim Anlegen der Datei festgelegt&lt;br /&gt;
|-&lt;br /&gt;
|Permissions &lt;br /&gt;
|Die Zugriffsrechte der Datei werden in den 12 Bit sstrwxrwxrwx abgespeichert.Wenn sie gesetzt sind, werden sie bei &lt;br /&gt;
der Ausgabe an Stelle der x-Rechte ausgegeben. Die Zugriffsrechte können mit dem Kommando chmod verändert werden.&lt;br /&gt;
|-&lt;br /&gt;
|link count&lt;br /&gt;
|In UNIX kann eine Datei mehr als einen Namen haben. Der Link Count gibt die Anzahl der Namen einer Datei an. Er kann&lt;br /&gt;
mit dem Kommando ln erhöht und dem Kommando rm erniedrigt werden.&lt;br /&gt;
|-&lt;br /&gt;
|owner&lt;br /&gt;
|Für den Dateieigentümer gelten die in der ersten rwx-Gruppe festgelegten Zugriffsrechte. Standardmäßig ist der &lt;br /&gt;
Eigentümer einer Datei derjenige Benutzer, der die Datei angelegt hat.&lt;br /&gt;
|-&lt;br /&gt;
|group&lt;br /&gt;
|Für Benutzer, die in der gleichen Gruppe sind, der die Datei angehört, gelten die in der zweiten rwx-Gruppe festgelegten&lt;br /&gt;
Zugriffsrechte. In System V gehört eine Datei standardmäßig der Gruppe an, in der der anlegende Benutzer gerade ist.&lt;br /&gt;
|-&lt;br /&gt;
|size&lt;br /&gt;
|Bei normalen Dateien und Verzeichnissen gibt diese Information die Länge der Datei in Byte an.&lt;br /&gt;
|-&lt;br /&gt;
|access time&lt;br /&gt;
|Die Zugriffszeit gibt den Zeitpunkt des letzten Lesezugriffes auf eine Datei an. Aus Effizienzgründen wird die &lt;br /&gt;
Zugriffszeit an Verzeichnissen nicht gesetzt, wenn ein Verzeichnis durchsucht wird, obwohl man dies erwarten könnte. ''(ls -l --time=atime)''&lt;br /&gt;
|-&lt;br /&gt;
|modification time&lt;br /&gt;
|Die Modifikationszeit gibt die Zeit des letzten Schreibzugriffes auf die Daten der Datei an. Intern speichert UNIX &lt;br /&gt;
die Zeit als Sekunden seit Beginn des Jahres 1970 und in GMT ab. Für die Ausgabe wird dies in ein besser lesbares &lt;br /&gt;
Format in der lokalen Zeitzone umgewandelt. ''(ls -l)''&lt;br /&gt;
|-&lt;br /&gt;
|change time &lt;br /&gt;
|Die Veränderungszeit gibt das Datum der letzten Statusänderung der Datei an. Sie wird immer dann gesetzt, wenn die &lt;br /&gt;
Informationen über die Datei sich ändern (Datum der Erzeugung wird nicht gespeichert) ''(ls -lc)''&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
===Dateiarten===&lt;br /&gt;
{| border=1 cellpadding=2&lt;br /&gt;
!Zeichen&lt;br /&gt;
!Typ&lt;br /&gt;
!Zweck&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;nowiki&amp;gt;-&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
|file&lt;br /&gt;
|normale Datei&lt;br /&gt;
|-&lt;br /&gt;
|d&lt;br /&gt;
|directory&lt;br /&gt;
|Verzeichnis&lt;br /&gt;
|-&lt;br /&gt;
|b&lt;br /&gt;
|block device&lt;br /&gt;
|Gerätedatei&lt;br /&gt;
|-&lt;br /&gt;
|c&lt;br /&gt;
|character device&lt;br /&gt;
|Gerätedatei&lt;br /&gt;
|-&lt;br /&gt;
|l&lt;br /&gt;
|link&lt;br /&gt;
|Querverweis&lt;br /&gt;
|-&lt;br /&gt;
|p&lt;br /&gt;
|named pipe&lt;br /&gt;
|Benannte Pipeline&lt;br /&gt;
|-&lt;br /&gt;
|s&lt;br /&gt;
|socket&lt;br /&gt;
|Netzwerkverbindung&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
====Normale Dateien====&lt;br /&gt;
Unter einer normalen Datei versteht man die Ansammlung von Daten. Dies kann ein Text, Programm, Bild oder sonstiges sein. &lt;br /&gt;
Beispiel&lt;br /&gt;
 root@zero:~# ls -l text | cut -c 1&lt;br /&gt;
 -&lt;br /&gt;
&lt;br /&gt;
====Verzeichnisse====&lt;br /&gt;
Dateien werden in Verzeichnissen gespeichert, nur so ist eine Ordnung möglich. &lt;br /&gt;
 root@zero:~# mkdir -v Ordner&lt;br /&gt;
 mkdir: Verzeichnis „Ordner“ angelegt&lt;br /&gt;
 &lt;br /&gt;
 root@zero:~# ls -ld Ordner | cut -c 1&lt;br /&gt;
 d&lt;br /&gt;
&lt;br /&gt;
====Gerätedateien (Block und Char)====&lt;br /&gt;
Gerätedateien ermöglichen Anwendungsprogrammen unter Benutzung des  Kernels den Zugriff auf die Hardwarekomponenten des Systems. Ansprechbar über Major und Minor Nummern &lt;br /&gt;
&lt;br /&gt;
Beispiele&lt;br /&gt;
&lt;br /&gt;
Sicherung des Master Boot Records der ersten Festplatte&lt;br /&gt;
 root@zero:~# dd if=/dev/sda of=/tmp/mbr.img bs=512 count=1&lt;br /&gt;
&lt;br /&gt;
Block Device &lt;br /&gt;
 root@zero:~# ls -l /dev/sda | cut -c 1 &lt;br /&gt;
 b&lt;br /&gt;
&lt;br /&gt;
Character Device &lt;br /&gt;
 root@zero:~# ls -l /dev/ttyS0  | cut -c 1 &lt;br /&gt;
 c&lt;br /&gt;
&lt;br /&gt;
Erstellen einer Gerätedatei&lt;br /&gt;
 root@zero:/dev# mknod sata1 b 8 0 &lt;br /&gt;
 root@zero:/dev# fdisk -l /dev/sata1 &lt;br /&gt;
 &lt;br /&gt;
 Platte /dev/sata1: 6442 MByte, 6442450944 Byte&lt;br /&gt;
 255 Köpfe, 63 Sektoren/Spuren, 783 Zylinder&lt;br /&gt;
 Einheiten = Zylinder von 16065 × 512 = 8225280 Bytes&lt;br /&gt;
 Disk identifier: 0x0005efab&lt;br /&gt;
 &lt;br /&gt;
       Gerät  boot.     Anfang        Ende     Blöcke   Id  System&lt;br /&gt;
 /dev/sata1p1   *           1         743     5968116   83  Linux&lt;br /&gt;
 /dev/sata1p2             744         783      321300    5  Erweiterte&lt;br /&gt;
 /dev/sata1p5             744         783      321268+  82  Linux Swap / Solaris&lt;br /&gt;
&lt;br /&gt;
====Named Pipes====&lt;br /&gt;
Benannte Pipes (Named Pipes) können dagegen auch zur Kommunikation zwischen Prozessen eingesetzt werden, die nicht miteinander&lt;br /&gt;
verwandt sind und sich darüber hinaus auf unterschiedlichen Rechnern innerhalb eines Netzwerkes befinden dürfen. Sie sind &lt;br /&gt;
flexibler als anonyme Pipes und eignen sich für sogenannte Client-Server-Anwendungen (es lassen sich auch RPCs realisieren).&lt;br /&gt;
Benannte Pipes ermöglichen die gleichzeitige Kommunikation in beide Richtungen, das heißt, Daten können im Vollduplexbetrieb &lt;br /&gt;
zwischen den Prozessen ausgetauscht werden.&lt;br /&gt;
 &lt;br /&gt;
Erstelle Named Pipe mit Namen /tmp/roehre. Schreibe &amp;quot;hallo welt&amp;quot; in die Pipe und bleibe&lt;br /&gt;
 xinux@zero:~$ mkfifo /tmp/roehre&lt;br /&gt;
 xinux@zero:~$ echo hallo welt &amp;gt; /tmp/roehre &lt;br /&gt;
&lt;br /&gt;
Gebe Inhalt der Pipe mit cat aus&lt;br /&gt;
 root@zero:~# cat &amp;lt; /tmp/roehre &lt;br /&gt;
 hallo welt&lt;br /&gt;
 root@zero:~# ls -l /tmp/roehre | cut -c 1&lt;br /&gt;
 p&lt;br /&gt;
&lt;br /&gt;
====Sockets====&lt;br /&gt;
Schnittstelle um es lokalen Anwendungen zu ermöglichen, miteinander Netwerkmässig zu kommunizieren.&lt;br /&gt;
&lt;br /&gt;
 root@lydia:~# netstat  -lnxp | tail -1&lt;br /&gt;
  unix  2 [ ACC ] STREAM HÖRT 21951 6646/nm-applet /tmp/orbit-thomas/linc-19f6-0-2b9b81095cede&lt;br /&gt;
&lt;br /&gt;
 root@lydia:~# ls -l /tmp/orbit-thomas/linc-19f6-0-2b9b81095cede  | cut -c 1 &lt;br /&gt;
 s&lt;br /&gt;
&lt;br /&gt;
====Links====&lt;br /&gt;
Bei Links handelt es sich um symbolische Verweise auf andere Dateien&lt;br /&gt;
&lt;br /&gt;
'''Softlink'''&lt;br /&gt;
Ein Softlink ist eine Datei die nur auf den Namen einer anderen Datei verweist. Wenn die Originaldatei gelöscht wird, zeigt &lt;br /&gt;
der Link ins Leere. &lt;br /&gt;
&lt;br /&gt;
 ln -s datei softlink&lt;br /&gt;
&lt;br /&gt;
{| border=1 cellpadding=2&lt;br /&gt;
| Vorteile&lt;br /&gt;
| Symbolische Links können auch auf Verzeichnisse angelegt werden&amp;lt;br&amp;gt;Sie sind partitionsübergreifend&amp;lt;br&amp;gt;Man kann sie auf Dateien anlegen, die noch nicht existieren&lt;br /&gt;
|-&lt;br /&gt;
| Nachteile&lt;br /&gt;
| Wenn das Original gelöscht ist, ist kein Zugriff mehr möglich&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Beispiel&lt;br /&gt;
 root@zero:~# ln -s text verweis&lt;br /&gt;
 root@zero:~# ls -l verweis&lt;br /&gt;
 lrwxrwxrwx 1 root root 4 2009-06-18 15:48 verweis -&amp;gt; text&lt;br /&gt;
&lt;br /&gt;
'''Hardlinks'''&lt;br /&gt;
 ln datei hardlink&lt;br /&gt;
Eigentlich ist jede Datei ein Hardlink. Ein Hardlink ist ein Verzeichniseintrag,&lt;br /&gt;
der auf eine Inode verweist. Beim Erzeugen einer Datei verweist ein Eintrag auf&lt;br /&gt;
eine Inode. Man kann dann weitere Verweise erzeugen. Der Linkcounter wird&lt;br /&gt;
jeweils um 1 erhöht. Beim Löschen einer Datei wird er jeweils um 1 reduziert.&lt;br /&gt;
Wird der Wert 0 erreicht, ist die Datei gelöscht.&lt;br /&gt;
{| border=1 cellpadding=2&lt;br /&gt;
| Vorteile&lt;br /&gt;
|Zugriff auf die Daten, selbst wenn das Orginal gelöscht ist.&lt;br /&gt;
|-&lt;br /&gt;
|Nachteile&lt;br /&gt;
|Man kann keine Hardlinks auf Verzeichnisse anlegen.&lt;br /&gt;
Ist nur innerhalb einer Partion möglich.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Beispiel&lt;br /&gt;
 root@zero:~# touch 1&lt;br /&gt;
 root@zero:~# echo &amp;quot;text&amp;quot; &amp;gt; 1&lt;br /&gt;
 root@zero:~# ln 1 2&lt;br /&gt;
 root@zero:~# more 2&lt;br /&gt;
 text&lt;br /&gt;
 root@zero:~# echo &amp;quot;doch kein text&amp;quot; &amp;gt; 1&lt;br /&gt;
 root@zero:~# more 1&lt;br /&gt;
 doch kein text&lt;br /&gt;
 root@zero:~# more 2&lt;br /&gt;
 doch kein text&lt;br /&gt;
&lt;br /&gt;
Weitere Optionen:&lt;br /&gt;
 -b sichert Dateien, statt sie zu überschreiben &lt;br /&gt;
 -f Überschreibt bestehende, gleichnamige Dateien&lt;br /&gt;
 -i fragt vor dem Überschreiben nach Bestätigung&lt;br /&gt;
 -v ausführliche Meldungen&lt;br /&gt;
Softlink mit dem Namen passwd im Homeverzeichnis angelegt&lt;br /&gt;
 xinux@zero:~$ ln -vs /etc/passwd .&lt;br /&gt;
 „./passwd“ -&amp;gt; „/etc/passwd“&lt;br /&gt;
Softlink mit dem Namen passwd im Homeverzeichnis angelegt(Original exestiert nicht) &lt;br /&gt;
 xinux@zero:~$ ln -vs /etc/hund .&lt;br /&gt;
 „./hund“ -&amp;gt; „/etc/hund“&lt;br /&gt;
Hardlink mit dem Namen hosts im Homeverzeichnis angelegt&lt;br /&gt;
  xinux@zero:~$ ln -v /etc/hosts .&lt;br /&gt;
 „./hosts“ =&amp;gt; „/etc/hosts“&lt;br /&gt;
Auf eine nicht existierende Datei kann kein Hardlink angelegt werden!&lt;br /&gt;
 xinux@zero:~$ ln -v /etc/katze .&lt;br /&gt;
 ln: Zugriff auf „/etc/katze“: No such file or directory&lt;br /&gt;
&lt;br /&gt;
==Shellsonderzeichen==&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot; cellpadding=&amp;quot;2&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
|;&lt;br /&gt;
|Trenne Kommandos&lt;br /&gt;
|-&lt;br /&gt;
|. oder source&lt;br /&gt;
|Ausführen wie in aktueller Shell&lt;br /&gt;
|-&lt;br /&gt;
|#&lt;br /&gt;
|Kommentar&lt;br /&gt;
|-&lt;br /&gt;
|&amp;amp;&lt;br /&gt;
|Programm im Hintergrund starten &lt;br /&gt;
|-&lt;br /&gt;
|&amp;amp;&amp;amp;&lt;br /&gt;
|UND -Ausführung  (wenn links wahr dann führe rechts aus)&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;nowiki&amp;gt;|&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
|STOUT von links wird zu STDIN von rechts &lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;nowiki&amp;gt;||&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
|ODER -Ausführung (wenn links falsch dann führe rechts aus)&lt;br /&gt;
|-&lt;br /&gt;
|*&lt;br /&gt;
|steht für beliebig viel Zeichen auch 0 &lt;br /&gt;
|-&lt;br /&gt;
|?&lt;br /&gt;
|steht für genau ein Zeichen &lt;br /&gt;
|-&lt;br /&gt;
|[abc]&lt;br /&gt;
|steht für eins der Zeichen in [ ] hier a b oder c &lt;br /&gt;
|-&lt;br /&gt;
|[ausdruck] &lt;br /&gt;
|Andere Schreibweis für test &lt;br /&gt;
|-&lt;br /&gt;
|~&lt;br /&gt;
|das Homeverzeichnis&lt;br /&gt;
|-&lt;br /&gt;
|&amp;gt;    und    &amp;gt;&amp;gt;&lt;br /&gt;
|leite in Datei um   &amp;gt;  überschreibe     &amp;gt;&amp;gt; hänge an &lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;&lt;br /&gt;
|lesen aus Datei &lt;br /&gt;
|-&lt;br /&gt;
|2&amp;gt;&amp;amp;1&lt;br /&gt;
|leite STDERR auf STDOUT&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;&amp;lt; ende&lt;br /&gt;
|Lesen aus Datei (Heredokument)&lt;br /&gt;
|-&lt;br /&gt;
|(...)&lt;br /&gt;
|Alles inhalb von ( ) wird als Subshell ausgeführt&lt;br /&gt;
|-&lt;br /&gt;
|{...}&lt;br /&gt;
|Gruppieren von Komandos &lt;br /&gt;
|-&lt;br /&gt;
|{ ,  ,  , }&lt;br /&gt;
|Zeichenketten zusammensetzen &lt;br /&gt;
|-&lt;br /&gt;
|$&lt;br /&gt;
|Inhalt von Variablen ausgeben $SUX&lt;br /&gt;
|-&lt;br /&gt;
|$* oder $@&lt;br /&gt;
|Liste der übergebenen Parameter&lt;br /&gt;
|-&lt;br /&gt;
|$# &lt;br /&gt;
|Anzahl der übergebenen Parameter &lt;br /&gt;
|-&lt;br /&gt;
|$0&lt;br /&gt;
|Name des Shellprogramms &lt;br /&gt;
|-&lt;br /&gt;
|$?&lt;br /&gt;
|Rückgabewert des letzten Kommandos &lt;br /&gt;
|-&lt;br /&gt;
|$!  und  $$&lt;br /&gt;
|PID des  $!  = letzten Hintergrund  -  , $$ = aktuellen Prozess&lt;br /&gt;
|-&lt;br /&gt;
|$1 ..$9&lt;br /&gt;
|Parameter 1 bis 9 &lt;br /&gt;
|-&lt;br /&gt;
|$() oder `  `&lt;br /&gt;
|Kommandosubstition&lt;br /&gt;
|-&lt;br /&gt;
|${ }&lt;br /&gt;
|Funktion zur Manipulation von Zeichenketten &lt;br /&gt;
|-&lt;br /&gt;
|$(( )) oder $[ ]&lt;br /&gt;
|Arithmetische Berechnung &lt;br /&gt;
|-&lt;br /&gt;
|&amp;quot;...&amp;quot;&lt;br /&gt;
|Entwertung der Sonderzeichen ausser $ ' \&lt;br /&gt;
|-&lt;br /&gt;
|'...'&lt;br /&gt;
|Entwertung sämtlicher Sonderzeichen ausser ' selbst&lt;br /&gt;
|-&lt;br /&gt;
|\  &lt;br /&gt;
|Entwertung des folgenden Sonderzeichens &lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==Prozesse==&lt;br /&gt;
===Was ist ein Prozess?===&lt;br /&gt;
Ein Prozess setzt sich aus zwei Teilen zusammen:&lt;br /&gt;
&lt;br /&gt;
1.Programm, das in den Hauptspeicher geladen wurde&lt;br /&gt;
&lt;br /&gt;
2.Prozessumgebung &lt;br /&gt;
&lt;br /&gt;
Unter einem Prozess versteht man ein Programm (binär), das in den Hauptspeicher&lt;br /&gt;
geladen wurde. Also nicht das Program selbst, das auf der Festplatte liegt ist der&lt;br /&gt;
Prozess, sondern es wird erst durch das Laden in den Hauptspeicher dazu.&lt;br /&gt;
Normalerweise liegt ein Programm als ausführbare Datei irgendwo auf der&lt;br /&gt;
Festplatte oder auf Diskette. Ob es sich bei dem Programm um eine binäre Datei&lt;br /&gt;
handelt, kann man mit dem Befehl '' file '' feststellen.&lt;br /&gt;
 &lt;br /&gt;
 root@zero:~# file /bin/mkdir&lt;br /&gt;
 /bin/mkdir: ELF 32-bit LSB executable, Intel 80386, version 1 (SYSV), dynamically linked (uses shared libs), for GNU/Linux 2.6.8, stripped&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Die Datei liegt im Maschinencode vor und kann in den Hauptspeicher geladen&lt;br /&gt;
werden. Sobald dies geschehen ist, kann der Rechner diesen Maschinencode&lt;br /&gt;
abarbeiten (ausführen).&lt;br /&gt;
&lt;br /&gt;
Da aber ein Programm nicht direkt auf die Hardware zugreifen soll, muss es vom&lt;br /&gt;
Betriebsystem kontrolliert werden. Das Betriebssystem liegt logisch gesehen&lt;br /&gt;
zwischen Hardware und Anwendung. Das Betriebssystem ordnet jedem Prozess&lt;br /&gt;
verschiedene Kenndaten zu, um die Prozesse verwalten zu können. Alle&lt;br /&gt;
Kenndaten, die einem Prozess zugeordnet sind, nennt man die&lt;br /&gt;
Prozessumgebung.Wenn man in der Shell ein Kommando eingibt, wird ein Prozess&lt;br /&gt;
kreiert. Natürlich ist die Shell selbst auch ein Prozess. Ein Prozess kann aber&lt;br /&gt;
genauso gut ein Serverprozess (Dienst) sein, z.B. Apache.&lt;br /&gt;
Ein wesentliches Merkmal eines Prozesses ist die Prozesskommunikation. Über im&lt;br /&gt;
Betriebssystem implementierte Methoden ist es möglich, dass verschiedene&lt;br /&gt;
Prozesse Signale und Daten untereinander austauschen können.&lt;br /&gt;
Dadurch wird auch dem Benutzer ermöglicht, einem Prozeß bestimmte Signale zu&lt;br /&gt;
senden bzw. auf den Status eines Prozesses Einfluss zu nehmen.&lt;br /&gt;
&lt;br /&gt;
===Prozesstabelle (Anzeige mit ps)===&lt;br /&gt;
Da zu jedem Prozess Kenndaten geführt werden, müssen diese auch irgendwo&lt;br /&gt;
festgehalten werden. Das geschieht in der sogenannten Prozesstabelle.&lt;br /&gt;
&lt;br /&gt;
Kenndaten der Prozesse (Auswahl):&lt;br /&gt;
* F Flags (z.B. ausgelagert; Systemprozess; Trace,...)&lt;br /&gt;
* UID Nutzer, mit dessen Rechten der Prozess ausgeführt wird&lt;br /&gt;
* PID Prozess - ID. Diese Nummer gibt eine eindeutige Prozess - Nummer&lt;br /&gt;
an. Sie wird vom System automatisch beim Starten des Prozesses&lt;br /&gt;
vergeben und ist für die Laufzeit eindeutig.&lt;br /&gt;
* PPID Prozessnumer der Eltern-Prozesses&lt;br /&gt;
* PRI Priorität eines Prozesses; je niedriger der Wert ist, desto besser&lt;br /&gt;
* NI ist der Nicewert des Prozesses; Nice erniedrigt den Grundwert&lt;br /&gt;
der Priorität des Prozesses und gibt damit Prozessorzeit für andere&lt;br /&gt;
Prozesse frei.&lt;br /&gt;
* SIZE Speichergröße des Prozesses inklusive Stack (eine Art Zwischenspeicher)&lt;br /&gt;
* RSS Verbrauch an physischen Speicher&lt;br /&gt;
* WCHAN ist der Name der Kernerlfunktion, in der der Prozess schläft&lt;br /&gt;
* STAT Status des Prozesses&lt;br /&gt;
R läuft       S schlafend     D nicht störbarer Schlaf&lt;br /&gt;
T angehalten  Z Zombie        W der Prozess belegt keine Seiten&lt;br /&gt;
* TIME Bisland benötigte Prozessorzeit&lt;br /&gt;
* SIZE ist die Größe von Text, Daten und Stack&lt;br /&gt;
* TTY die Nummer des kontrollierenden Teminal; wenn hier ein ? steht,&lt;br /&gt;
handelt es sich um einen Dämon oder Serverprozess.&lt;br /&gt;
* COMMAND Angabe des Prozesses selbst. Dies ist meist der Programmname.&lt;br /&gt;
&lt;br /&gt;
Weiteres&lt;br /&gt;
* GID Gruppe, unter der der Prozess läuft&lt;br /&gt;
* Verweis auf das aktuellen Arbeitsverzeichnis&lt;br /&gt;
* Um mit relativen Pfadangaben arbeiten zu können braucht man diesen Eintrag&lt;br /&gt;
* Tabelle mit Verweisen auf aktuell geöffnete Dateien&lt;br /&gt;
* 3 sind automatisch geöffnet Standardeingabe, Standardausgabe und&lt;br /&gt;
Standardfehlerkanal&lt;br /&gt;
&lt;br /&gt;
Beispiel&lt;br /&gt;
 root@zero:~# ps -l&lt;br /&gt;
 F S   UID   PID  PPID  C PRI  NI ADDR SZ WCHAN  TTY          TIME CMD&lt;br /&gt;
 4 R     0 18639 18631  0  80   0 -  1080 -      pts/0    00:00:00 bash&lt;br /&gt;
 0 R     0 25904 18639  0  80   0 -   635 -      pts/0    00:00:00 ps&lt;br /&gt;
&lt;br /&gt;
===Eltern und Kinder===&lt;br /&gt;
Jeder Prozess kann weitere Prozesse erzeugen. Die erzeugten Prozesse bezeichnet&lt;br /&gt;
man als Kindprozesse. Jeder Kindprozess weiß anhand der PID, woher er stammt.&lt;br /&gt;
&lt;br /&gt;
Alle Prozesse sind von einem anderen Prozess gestartet worden, mit Ausnahme&lt;br /&gt;
des Pseudoprozesses (noch im Kernel beim Starten erzeugter Prozess). Dieser hat&lt;br /&gt;
die Prozessnummer 0. Er hat die Aufgabe, den Init Prozess ( /sbin/init die Nummer&lt;br /&gt;
1) zu starten, der in System V alle anderen Prozesse direkt oder über seine Kind-&lt;br /&gt;
prozesse startet. (init wird konfiguriert durch die /etc/inittab)&lt;br /&gt;
&lt;br /&gt;
Es gibt zwei Arten wie ein Prozess gestartet werden kann:&lt;br /&gt;
&lt;br /&gt;
# Fork und Exec: Prozessumgebung wird dupliziert, der neue Prozess bekommt eine eigene neue PID&lt;br /&gt;
# Exec: Alter Prozess wird durch neuen Prozess überladen (geht mit dem shell-buildin exec)&lt;br /&gt;
&lt;br /&gt;
'''Rechte auf Objekte UID GID'''&lt;br /&gt;
Ob ein Prozess auf eine Datei zugreifen kann, entscheidet der Kernel anhand der&lt;br /&gt;
Zugriffssrechte, die auf der Datei gesetzt sind. Er checkt anhand der UID und GID&lt;br /&gt;
des Prozesses, ob es erlaubt ist. Mit dieser Technik wird letztendlich geprüft, was&lt;br /&gt;
ein User darf, und was nicht.&lt;br /&gt;
&lt;br /&gt;
===Rechenzeit und Priorität===&lt;br /&gt;
Da auch bei Prozessen eine Gerechtigkeit herschen muss, muss eine Instanz&lt;br /&gt;
darüber entscheiden wie lange ein Prozess Rechenzeit verbrauchen darf.&lt;br /&gt;
Folgende Kenndaten werden dazu benötigt&lt;br /&gt;
* clocktick = Zeiteinheit&lt;br /&gt;
* n = Faktor über den Kernel einstellbar&lt;br /&gt;
* slice = n &amp;lt;nowiki&amp;gt;*&amp;lt;/nowiki&amp;gt; clocktick&lt;br /&gt;
* agingtime = weitere Zeiteinheit über den Kernel einstellbar&lt;br /&gt;
&lt;br /&gt;
Es wird davon ausgegangen das der Prozess mit der niedrigsten Priorität gerade&lt;br /&gt;
rechnet. Pro clocktick erhöht sich die Priorität dieses Prozesses um eins.&lt;br /&gt;
&lt;br /&gt;
Jetzt können 3 Situationen eintreten die alle dazu führen das der Scheduler&lt;br /&gt;
aufgerufen wird.&lt;br /&gt;
&lt;br /&gt;
# Prozess blockiert wegen einer Ausgabe oder Eingabe.&lt;br /&gt;
# Gibt Rechenzeit freiwillig ab.&lt;br /&gt;
# Der Slice endet.&lt;br /&gt;
&lt;br /&gt;
Der Aufruf des Schedulers bewirkt das der Prozess mit der niedrigsten Priorität&lt;br /&gt;
gescheduled wird, er also nun rechnen darf. Nach Ablauf der agingtime werden&lt;br /&gt;
nun die Prozesse &amp;quot;gealtert&amp;quot;. Das geschieht nach folgender Formel&lt;br /&gt;
&lt;br /&gt;
Neue Priorität = Alte Priorität / 2 + Nicewert&lt;br /&gt;
&lt;br /&gt;
Der User hat die Möglichkeit, über den sogenannten Nicewert den Grundwert für&lt;br /&gt;
einen Prozess zu senken. Der Prozess braucht dann länger für seine Abarbeitung.&lt;br /&gt;
Er verhält sich somit netter zu den anderen Prozessen. Normale User können nur&lt;br /&gt;
netter werden, der Systemverwalter kann auch nicht netter (gemeiner) werden. Der&lt;br /&gt;
Bereich liegt zwischen 19 (sehr nett) bis 0 (weniger nett) für die User, und 19 bis&lt;br /&gt;
-20 für root.&lt;br /&gt;
&lt;br /&gt;
[[Image:pri.png]]&lt;br /&gt;
&lt;br /&gt;
'''Signale'''&lt;br /&gt;
&lt;br /&gt;
Mit den Kommando kill und killall kann man Prozessen Signale schicken&lt;br /&gt;
&lt;br /&gt;
 kill -Signalnummer PID &lt;br /&gt;
&lt;br /&gt;
Signalnummer&lt;br /&gt;
{| border=1 cellpadding=2&lt;br /&gt;
!Signalname&lt;br /&gt;
!Wert&lt;br /&gt;
!Aktion&lt;br /&gt;
|-&lt;br /&gt;
|SIGHUP&lt;br /&gt;
|1&lt;br /&gt;
|Neuinitialisierung eines Prozesses&lt;br /&gt;
|-&lt;br /&gt;
|SIGINT&lt;br /&gt;
|2&lt;br /&gt;
|Interrupt-Signal von der Tastatur (STRG+c)&lt;br /&gt;
|-&lt;br /&gt;
|SIGQUIT&lt;br /&gt;
|3&lt;br /&gt;
|Interrupt-Signal von der Tastatur (STRG+c) mit Dump&lt;br /&gt;
|-&lt;br /&gt;
|SIGKILL&lt;br /&gt;
|9&lt;br /&gt;
|unwiderrufliches Beendigungssignal (Töten)&lt;br /&gt;
|-&lt;br /&gt;
|SIGSEGV&lt;br /&gt;
|11&lt;br /&gt;
|Ungültige Speicherreferenz (bedeutet oft auf defekten Speicher)&lt;br /&gt;
|-&lt;br /&gt;
|SIGTERM &lt;br /&gt;
|15&lt;br /&gt;
|Beendigungssignal (geöffnete Dateien werden geschlossen)&lt;br /&gt;
|-&lt;br /&gt;
|SIGCONT &lt;br /&gt;
|18&lt;br /&gt;
|Weiterfahren, wenn gestoppt&lt;br /&gt;
|-&lt;br /&gt;
|SIGSTOP&lt;br /&gt;
|19&lt;br /&gt;
|Prozessstop&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Beispiel&lt;br /&gt;
 root@zero:~# kill -1 7562&lt;br /&gt;
&lt;br /&gt;
===Programme im Zusammenhang mit Prozessen===&lt;br /&gt;
====ps: Zeigt die Prozesse mit ihrem Status an====&lt;br /&gt;
 root@zero:~# ps&lt;br /&gt;
  PID TTY          TIME CMD&lt;br /&gt;
 14134 pts/0    00:00:00 bash&lt;br /&gt;
 14149 pts/0    00:00:00 ps&lt;br /&gt;
&lt;br /&gt;
 root@zero:~# ps -elf | grep apache&lt;br /&gt;
 1 S root      5738     1  0  80   0 -  5461 select Jun16 ?        00:00:00 /usr/sbin/apache2 -k start&lt;br /&gt;
 5 S www-data  5739  5738  0  80   0 -  5581 inet_c Jun16 ?        00:00:00 /usr/sbin/apache2 -k start&lt;br /&gt;
 5 S www-data  5742  5738  0  80   0 -  5461 inet_c Jun16 ?        00:00:00 /usr/sbin/apache2 -k start&lt;br /&gt;
 5 S www-data  5743  5738  0  80   0 -  5461 inet_c Jun16 ?        00:00:00 /usr/sbin/apache2 -k start&lt;br /&gt;
 5 S www-data  5745  5738  0  80   0 -  5461 inet_c Jun16 ?        00:00:00 /usr/sbin/apache2 -k start&lt;br /&gt;
 5 S www-data  5746  5738  0  80   0 -  5461 inet_c Jun16 ?        00:00:00 /usr/sbin/apache2 -k start&lt;br /&gt;
 0 S root     14153 14134  0  80   0 -   837 pipe_w 16:59 pts/0    00:00:00 grep apache&lt;br /&gt;
&lt;br /&gt;
Option 	Beschreibung&lt;br /&gt;
*l langes Format&lt;br /&gt;
*u 	zeige für jeden Prozess Besitzer und Startzeit an&lt;br /&gt;
*j 	Jobs-Format: Zeige PGID und SID an&lt;br /&gt;
*s 	Informationen über Signale ausgeben&lt;br /&gt;
*m 	Speicher-Informationen anzeigen&lt;br /&gt;
*f 	Baumstruktur der Prozesse anzeigen (ähnlich pstree)&lt;br /&gt;
*a 	alle Prozesse (jedes Benutzers) anzeigen&lt;br /&gt;
*x 	kontrollierendes Terminal nicht anzeigen&lt;br /&gt;
*e 	Für den Prozess gültige Umgebungsvariablen mit anzeigen (sinnvollerweise mit mehreren Optionen »w« anwenden, um die Ausgabe nicht am Zeilenende abzuschneiden)&lt;br /&gt;
*w 	längere Ausgabe. »w« kann mehrfach verwendet werden, um die maximale Länge um je eine Zeile zu vergrößern&lt;br /&gt;
*h 	Header mit Feldbezeichnern unterdrücken&lt;br /&gt;
*r 	nur laufende Prozesse ausgeben&lt;br /&gt;
*n 	User-ID statt User-Name ausgeben&lt;br /&gt;
*txx 	nur Prozesse ausgeben, die vom angegebenen Terminal kontrolliert werden. xx kann entweder einer der Terminal-Gerätenamen unter /dev (z.B. tty1) oder die entsprechende Kurzbezeichnung ohne »tty« (z.B. 1) sein.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
====nice: Lässt ein Programm mit verändertem Grundwert der Priorität laufen====&lt;br /&gt;
 root@zero:~# nice&lt;br /&gt;
 0&lt;br /&gt;
 root@zero:~# nice -n 9 bash&lt;br /&gt;
 root@zero:~# nice&lt;br /&gt;
 9&lt;br /&gt;
 root@zero:~#&lt;br /&gt;
&lt;br /&gt;
====renice: Ändert den Grundwert der Priorität eines laufenden Prozesses====&lt;br /&gt;
 root@zero:~# renice 10 5742&lt;br /&gt;
 5742: Alte Priorität: 0, neue Priorität: 10&lt;br /&gt;
&lt;br /&gt;
====top: Zeigt die Prozesse mit ihrem Status an (Abbrechen mit q)====&lt;br /&gt;
 root@zero:~# top&lt;br /&gt;
 top - 08:51:08 up 20 min,  1 user,  load average: 0.00, 0.02, 0.06&lt;br /&gt;
 Tasks:  93 total,   1 running,  92 sleeping,   0 stopped,   0 zombie&lt;br /&gt;
 Cpu(s):  1.6%us,  3.1%sy,  0.1%ni, 84.9%id, 10.2%wa,  0.0%hi,  0.2%si,  0.0%st&lt;br /&gt;
 Mem:    509504k total,   273948k used,   235556k free,    11312k buffers&lt;br /&gt;
 Swap:   321260k total,        0k used,   321260k free,   118380k cached&lt;br /&gt;
 &lt;br /&gt;
  PID USER      PR  NI  VIRT  RES  SHR S %CPU %MEM    TIME+  COMMAND                                                                       &lt;br /&gt;
 2208 mysql     20   0  125m  21m 5552 S  1.7  4.2   0:02.29 mysqld                                                                        &lt;br /&gt;
 3201 root      20   0  2444 1064  828 R  1.7  0.2   0:00.04 top                                                                           &lt;br /&gt;
    1 root      20   0  1908  780  564 S  0.0  0.2   0:02.19 init                                                                          &lt;br /&gt;
    2 root      15  -5     0    0    0 S  0.0  0.0   0:00.00 kthreadd                                                                      &lt;br /&gt;
    3 root      RT  -5     0    0    0 S  0.0  0.0   0:00.00 migration/0                                                                   &lt;br /&gt;
    4 root      15  -5     0    0    0 S  0.0  0.0   0:00.03 ksoftirqd/0                                                                   &lt;br /&gt;
    5 root      RT  -5     0    0    0 S  0.0  0.0   0:00.00 watchdog/0                                                                    &lt;br /&gt;
    6 root      15  -5     0    0    0 S  0.0  0.0   0:00.04 events/0                                                                      &lt;br /&gt;
    7 root      15  -5     0    0    0 S  0.0  0.0   0:00.00 khelper                                                                       &lt;br /&gt;
    8 root      RT  -5     0    0    0 S  0.0  0.0   0:00.00 kstop/0                                                                       &lt;br /&gt;
    9 root      15  -5     0    0    0 S  0.0  0.0   0:00.00 kintegrityd/0                                                                 &lt;br /&gt;
   10 root      15  -5     0    0    0 S  0.0  0.0   0:00.03 kblockd/0                                                                     &lt;br /&gt;
   11 root      15  -5     0    0    0 S  0.0  0.0   0:00.00 kacpid                                                                        &lt;br /&gt;
   12 root      15  -5     0    0    0 S  0.0  0.0   0:00.00 kacpi_notify                                                                  &lt;br /&gt;
   13 root      15  -5     0    0    0 S  0.0  0.0   0:00.00 cqueue                                                                        &lt;br /&gt;
   14 root      15  -5     0    0    0 S  0.0  0.0   0:00.53 ata/0                                                                         &lt;br /&gt;
   15 root      15  -5     0    0    0 S  0.0  0.0   0:00.00 ata_aux&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
====pstree: Zeigt die Prozesse als Baumstruktur====&lt;br /&gt;
 root@zero:~# pstree&lt;br /&gt;
 init─┬─NetworkManager&lt;br /&gt;
      ├─acpid&lt;br /&gt;
      ├─apache2───5*[apache2]&lt;br /&gt;
      ├─atd&lt;br /&gt;
      ├─bluetoothd&lt;br /&gt;
      ├─console-kit-dae───63*[{console-kit-dae}]&lt;br /&gt;
      ├─cron&lt;br /&gt;
      ├─cupsd&lt;br /&gt;
      ├─dbus-daemon&lt;br /&gt;
      ├─dd&lt;br /&gt;
      ├─gdm───gdm─┬─Xorg&lt;br /&gt;
      │           └─gdmgreeter&lt;br /&gt;
      ├─6*[getty]&lt;br /&gt;
      ├─hald───hald-runner─┬─hald-addon-acpi&lt;br /&gt;
      │                    ├─hald-addon-inpu&lt;br /&gt;
      │                    └─2*[hald-addon-stor]&lt;br /&gt;
      ├─klogd&lt;br /&gt;
      ├─nm-system-setti&lt;br /&gt;
      ├─nmbd&lt;br /&gt;
      ├─nscd───11*[{nscd}]&lt;br /&gt;
      ├─portmap&lt;br /&gt;
      ├─rpc.statd&lt;br /&gt;
      ├─slapd───2*[{slapd}]&lt;br /&gt;
      ├─smbd───smbd&lt;br /&gt;
      ├─sshd───sshd───bash───bash───pstree&lt;br /&gt;
      ├─syslogd&lt;br /&gt;
      ├─system-tools-ba&lt;br /&gt;
      ├─udevd&lt;br /&gt;
      ├─winbindd─┬─winbindd───winbindd&lt;br /&gt;
      │          └─3*[winbindd]&lt;br /&gt;
      └─wpa_supplicant&lt;br /&gt;
&lt;br /&gt;
===Jobs===&lt;br /&gt;
Unter einem Job versteht man ein Programm, welches man von der Shell gelöst&lt;br /&gt;
hat. D. h. man kann ganz normal weiter arbeiten und der Job verrichtet seinen&lt;br /&gt;
Dienst im Hintergrund. Man kann jederzeit zu diesem Job wieder Kontakt&lt;br /&gt;
aufnehmen.&lt;br /&gt;
&lt;br /&gt;
Ein Job kann auf 2 Arten gestarten werden:&lt;br /&gt;
&lt;br /&gt;
# Durch Anhängen des &amp;amp; Zeichens beim Programmstart&lt;br /&gt;
 root@zero:~# tail -f /var/log/messages &amp;amp;&lt;br /&gt;
 Jun 19 06:59:31 zero -- MARK --&lt;br /&gt;
 Jun 19 07:19:31 zero -- MARK --&lt;br /&gt;
 Jun 19 07:39:32 zero -- MARK --&lt;br /&gt;
 Jun 19 07:44:57 zero syslogd 1.5.0#5ubuntu3: restart.&lt;br /&gt;
 Jun 19 07:59:32 zero -- MARK --&lt;br /&gt;
 Jun 19 08:19:32 zero -- MARK --&lt;br /&gt;
 Jun 19 08:39:32 zero -- MARK --&lt;br /&gt;
 Jun 19 08:59:32 zero -- MARK --&lt;br /&gt;
 Jun 19 09:19:33 zero -- MARK --&lt;br /&gt;
 Jun 19 09:39:33 zero -- MARK --&lt;br /&gt;
 [3] 27421&lt;br /&gt;
&lt;br /&gt;
# Durch Stoppen des Prozesses durch Drücken von Strg-Z und in den Hintergrund schicken mit %n (n ist die Jobnummer)&lt;br /&gt;
 root@zero:~# watch cat /proc/cpuinfo&lt;br /&gt;
 Strg-Z&lt;br /&gt;
 [4]+  Stopped                 watch cat /proc/cpuinfo&lt;br /&gt;
 root@zero:~# bg %4&lt;br /&gt;
 [4]+ watch cat /proc/cpuinfo &amp;amp;&lt;br /&gt;
&lt;br /&gt;
Anweisungen im Zusammenhang mit Jobs (n ist die Jobnummer)&lt;br /&gt;
* bg %n : Einen Job in den Hintergrund stellen (wie oben)&lt;br /&gt;
* fg %n : Einen Job in den Vordergrund holen&lt;br /&gt;
 root@zero:~# fg %4&lt;br /&gt;
 watch cat /proc/cpuinfo&lt;br /&gt;
&lt;br /&gt;
* jobs : Aktive Jobs ausgeben&lt;br /&gt;
&lt;br /&gt;
 root@zero:~# jobs&lt;br /&gt;
 [1]   Running                 tail -f /var/log/syslog &amp;amp;&lt;br /&gt;
 [2]   Running                 tail -f /var/log/syslog &amp;amp;&lt;br /&gt;
 [3]-  Running                 tail -f /var/log/messages &amp;amp;&lt;br /&gt;
 [4]+  Stopped                 watch cat /proc/cpuinfo&lt;br /&gt;
&lt;br /&gt;
* Strg-Z : Einen Vordergrund-Job vorübergehend anhalten&lt;br /&gt;
* kill -STOP %n : Unterbricht Job im Hintergrund&lt;br /&gt;
 root@zero:~# kill -STOP %1&lt;br /&gt;
 root@zero:~# jobs&lt;br /&gt;
 [1]+  '''Stopped'''                 tail -f /var/log/syslog&lt;br /&gt;
 [2]   Running                 tail -f /var/log/syslog &amp;amp;&lt;br /&gt;
 [3]   Running                 tail -f /var/log/messages &amp;amp;&lt;br /&gt;
 [4]-  Stopped                 watch cat /proc/cpuinfo&lt;br /&gt;
* kill -CONT %n : Setzt den unterbrochenen Job im Hintergrund fort&lt;br /&gt;
root@zero:~# kill -CONT %1&lt;br /&gt;
root@zero:~# jobs&lt;br /&gt;
 [1]+  '''Running'''                 tail -f /var/log/syslog &amp;amp;&lt;br /&gt;
 [2]   Running                 tail -f /var/log/syslog &amp;amp;&lt;br /&gt;
 [3]   Running                 tail -f /var/log/messages &amp;amp;&lt;br /&gt;
 [4]-  Stopped                 watch cat /proc/cpuinfo&lt;br /&gt;
* kill -KILL %n : Tötet Job im Hintergrund&lt;br /&gt;
 root@zero:~# kill -KILL %1&lt;br /&gt;
 root@zero:~# jobs&lt;br /&gt;
 [1]+  '''Killed'''                  tail -f /var/log/syslog&lt;br /&gt;
 [2]   Running                 tail -f /var/log/syslog &amp;amp;&lt;br /&gt;
 [3]   Running                 tail -f /var/log/messages &amp;amp;&lt;br /&gt;
 [4]-  Stopped                 watch cat /proc/cpuinfo&lt;br /&gt;
 root@zero:~# jobs&lt;br /&gt;
 [2]   Running                 tail -f /var/log/syslog &amp;amp;&lt;br /&gt;
 [3]-  Running                 tail -f /var/log/messages &amp;amp;&lt;br /&gt;
 [4]+  Stopped                 watch cat /proc/cpuinfo&lt;br /&gt;
&lt;br /&gt;
Bedingungen, die zu Jobausführung eingehalten werden sollen:&lt;br /&gt;
* Der Job soll nicht auf den Bildschirm schreiben (Standardausgabe +Standardfehlerkanal).&lt;br /&gt;
* Er soll keine Eingaben vom Benutzer erwarten.&lt;br /&gt;
&lt;br /&gt;
==Suchen von Dateien==&lt;br /&gt;
===find===&lt;br /&gt;
 find ab_wo_wird_gesucht was_wird_gesucht aktion&lt;br /&gt;
 find [Pfad] [Bedingung] [Aktion]&lt;br /&gt;
&lt;br /&gt;
====Nach Namen====&lt;br /&gt;
 find [Pfad] '''-name''' [Name]&lt;br /&gt;
 &lt;br /&gt;
Finde alle Dateien mit Namen test ab dem Verzeichnis /home und gebe diese Zeilenweise aus&lt;br /&gt;
 root@zero:~# find /home -name test -print&lt;br /&gt;
 /home/xinux/test&lt;br /&gt;
 /home/test&lt;br /&gt;
&lt;br /&gt;
Wie oben, jedoch mit Namensanfang test&lt;br /&gt;
 root@zero:/home/xinux# find /home -name 'test*'&lt;br /&gt;
 /home/xinux/testdatei&lt;br /&gt;
 /home/xinux/test&lt;br /&gt;
 /home/test&lt;br /&gt;
&lt;br /&gt;
====Nach Benutzer(Eigentümer)====&lt;br /&gt;
 root@zero:/tmp# find /tmp/ '''-user''' xinux&lt;br /&gt;
 /tmp/datei&lt;br /&gt;
&lt;br /&gt;
====Nach Gruppe====&lt;br /&gt;
 root@zero:/tmp# find /tmp/ '''-group''' hacker&lt;br /&gt;
 /tmp/datei3&lt;br /&gt;
 /tmp/datei2&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
====Nach Typ====&lt;br /&gt;
Es wird nach Dateien anhand Ihrer Art gesucht:&lt;br /&gt;
 find [Pfad] '''-type''' [Typ] &lt;br /&gt;
Typ:&lt;br /&gt;
* f: Normale Dateien&lt;br /&gt;
 root@zero:~# find /tmp/ -type f&lt;br /&gt;
 /tmp/mbr.img&lt;br /&gt;
 /tmp/datei&lt;br /&gt;
 /tmp/zeugs&lt;br /&gt;
 /tmp/.X0-lock&lt;br /&gt;
* d: Verzeichnisse&lt;br /&gt;
 root@zero:~# find /var/log -type d&lt;br /&gt;
 /var/log&lt;br /&gt;
 /var/log/apache2&lt;br /&gt;
 /var/log/unattended-upgrades&lt;br /&gt;
 /var/log/apparmor&lt;br /&gt;
 /var/log/ConsoleKit&lt;br /&gt;
 /var/log/dist-upgrade&lt;br /&gt;
 /var/log/dist-upgrade/20090526-1052&lt;br /&gt;
 /var/log/cups&lt;br /&gt;
 /var/log/apt&lt;br /&gt;
 /var/log/fsck&lt;br /&gt;
 /var/log/samba&lt;br /&gt;
 /var/log/samba/cores&lt;br /&gt;
 /var/log/samba/cores/smbd&lt;br /&gt;
 /var/log/samba/cores/nmbd&lt;br /&gt;
 /var/log/samba/cores/winbindd&lt;br /&gt;
 /var/log/installer&lt;br /&gt;
 /var/log/gdm&lt;br /&gt;
 /var/log/news&lt;br /&gt;
* c: Char Devices (Zeichenorientierte Gerätedatei)&lt;br /&gt;
 root@zero:~# find / -type c&lt;br /&gt;
 /lib/udev/devices/kmem&lt;br /&gt;
 /lib/udev/devices/null&lt;br /&gt;
 /lib/udev/devices/console&lt;br /&gt;
 /lib/udev/devices/ppp&lt;br /&gt;
 /lib/udev/devices/net/tun&lt;br /&gt;
* b: Block Devices (Blockorientierte Gerätedatei)&lt;br /&gt;
* p: Benannte Pipe&lt;br /&gt;
* l: Links&lt;br /&gt;
* s: Sockets&lt;br /&gt;
&lt;br /&gt;
====Nach Modifikation====&lt;br /&gt;
Listet alle Dateien in /etc auf, die innerhalb von zwei Tagen modifiziert wurden&lt;br /&gt;
 root@zero:/var/log# find /etc/ -mtime 2 -print&lt;br /&gt;
 /etc/apache2&lt;br /&gt;
 /etc/apache2/mods-available&lt;br /&gt;
 /etc/apache2/conf.d&lt;br /&gt;
 /etc/apache2/sites-available&lt;br /&gt;
 /etc/bash_completion.d&lt;br /&gt;
 /etc/blkid.tab.old&lt;br /&gt;
 /etc/firefox-3.0/profile&lt;br /&gt;
 /etc/firefox-3.0/profile/chrome&lt;br /&gt;
 /etc/firefox-3.0/pref&lt;br /&gt;
 /etc/profile.d&lt;br /&gt;
 /etc/ufw/applications.d&lt;br /&gt;
 /etc/logrotate.d&lt;br /&gt;
 /etc/xulrunner-1.9&lt;br /&gt;
 /etc/blkid.tab&lt;br /&gt;
 /etc/cron.daily&lt;br /&gt;
 /etc/alternatives&lt;br /&gt;
 /etc/alternatives/x-www-browser&lt;br /&gt;
 /etc/alternatives/xulrunner&lt;br /&gt;
 /etc/gre.d&lt;br /&gt;
 /etc/hal/fdi/policy&lt;br /&gt;
 /etc/dbus-1/system.d&lt;br /&gt;
 /etc/udev/rules.d&lt;br /&gt;
&lt;br /&gt;
====Nach Größe====&lt;br /&gt;
Finde Dateien in /tmp, die größer als 100 MByte sind&lt;br /&gt;
 root@zero:/tmp# find /tmp/ -size +100M&lt;br /&gt;
 /tmp/datei&lt;br /&gt;
&lt;br /&gt;
Finde Dateien in /tmp, die kleiner als 100 KByte sind&lt;br /&gt;
 root@zero:/tmp# find /tmp/ -size -100k&lt;br /&gt;
 /tmp/&lt;br /&gt;
 /tmp/datei3&lt;br /&gt;
 /tmp/backup &lt;br /&gt;
 /tmp/datei2&lt;br /&gt;
 /tmp/.winbindd &lt;br /&gt;
 /tmp/.winbindd/pipe&lt;br /&gt;
 /tmp/mbr.img&lt;br /&gt;
 /tmp/zeugs&lt;br /&gt;
 /tmp/.ICE-unix&lt;br /&gt;
 /tmp/.X0-lock&lt;br /&gt;
 /tmp/datei1&lt;br /&gt;
 /tmp/.X11-unix&lt;br /&gt;
 /tmp/.X11-unix/X0&lt;br /&gt;
 /tmp/pulse-PKdhtXMmr18n&lt;br /&gt;
&lt;br /&gt;
====Nach Berechtigungen====&lt;br /&gt;
Finde Dateien in Home mit der Berechtigung 777 (-rwxrwxrwx)&lt;br /&gt;
 root@zero:/var# find /home/ -perm 777&lt;br /&gt;
 /home/samba&lt;br /&gt;
 /home/xinux/Examples&lt;br /&gt;
 /home/xinux/.pulse/1f0763ee4cf4c7e1d3c07fd149dda37b:runtime&lt;br /&gt;
 /home/test/Examples&lt;br /&gt;
&lt;br /&gt;
===locate===&lt;br /&gt;
Locate arbeitet über einen Index, der erstellt und aktualisiert werden muss. Aus diesem Grund kann locate teilweise nicht &lt;br /&gt;
akutell sein. Es ist immer schneller als find und es durchsucht immer das ganze Dateisystem. &lt;br /&gt;
 locate [Dateiname]&lt;br /&gt;
 &lt;br /&gt;
Lokalisiere die Datei wvdial.conf. Anmerkung: Der Stern wird beim Suchen automatisch hinzugefügt. Entspricht also&lt;br /&gt;
wvidal.conf*&lt;br /&gt;
 root@zero:~# locate wvdial.conf&lt;br /&gt;
 /etc/wvdial.conf&lt;br /&gt;
 /usr/share/man/man5/wvdial.conf.5.gz&lt;br /&gt;
 /var/lib/dpkg/info/wvdial.conffiles&lt;br /&gt;
 /var/lib/dpkg/info/wvdial.config&lt;br /&gt;
&lt;br /&gt;
Lokalisiere die Datei wvdial.conf und nur diese&lt;br /&gt;
 root@zero:~# locate -b '\wvdial.conf'&lt;br /&gt;
 /etc/wvdial.conf&lt;br /&gt;
&lt;br /&gt;
Aktualisieren des Indexes&lt;br /&gt;
 root@zero:~# updatedb&lt;br /&gt;
&lt;br /&gt;
==Wie wird ein Kommando lokalisiert==&lt;br /&gt;
Wenn die Shell alle Ersetzungen in der Kommandozeile vorgenommen und alle Umleitungen vorbereitet hat, ist der Zeitpunkt &lt;br /&gt;
gekommen, auf den der Anwender die ganze Zeit gewartet hat. Die Shell versucht das Kommando auszuführen. Dazu muss sie &lt;br /&gt;
es aber erst lokalisieren. Das erste passende Kommando wird ausgeführt.&lt;br /&gt;
&lt;br /&gt;
Als Kommandoname wird immer das erste Wort eines einfachen Kommandos erkannt. Ein Kommandoname kann mit Pfadnamen in &lt;br /&gt;
einem Verzeichnis (absolut oder relativ) angegeben werden. Die Shell erkennt dies an (mindestens) einem Slash `/' &lt;br /&gt;
im Kommandonamen. Wenn kein Verzeichnis angegeben ist, versucht die Shell selbst, das Kommando zu finden. Dazu wird &lt;br /&gt;
der Kommandoname zuerst in der Hashtabelle gesucht, dann wird er mit den Synonymen, mit den Scriptfunktionen und &lt;br /&gt;
schließlich mit den Shellfunktionen verglichen. &lt;br /&gt;
&lt;br /&gt;
Wird auf diese Weise kein Programm dieses Namens gefunden, werden alle in der PATH-Umgebungsvariablen aufgeführten &lt;br /&gt;
Verzeichnisse nach einer ausführbaren Datei dieses Namens durchsucht. Wird auch hier kein passendes Kommando gefunden, &lt;br /&gt;
gibt die Shell eine Fehlermeldung aus.&lt;br /&gt;
&lt;br /&gt;
===which und type===&lt;br /&gt;
====which====&lt;br /&gt;
which gibt die vollen Pfadnamen der Dateien aus, die bei Benutzung des angegebenen Befehls ausgeführt werden würden.&lt;br /&gt;
&lt;br /&gt;
 which [-a] Dateiname &lt;br /&gt;
&lt;br /&gt;
Optionen:&lt;br /&gt;
&lt;br /&gt;
* -a : Alle Treffer ausgeben, nicht nur den ersten&lt;br /&gt;
* --skip-dot : Verzeichnisse, die mit einem Punkt beginnen, auslassen&lt;br /&gt;
&lt;br /&gt;
Beispiel&lt;br /&gt;
 root@zero:~# which startx&lt;br /&gt;
 /usr/bin/startx&lt;br /&gt;
&lt;br /&gt;
====type====&lt;br /&gt;
Anzeigen der absoluten Pfadnamen von Befehlen, und ob sich diese Befehle in der Hash-Tabelle der aktuellen&lt;br /&gt;
Shell befinden.&lt;br /&gt;
&lt;br /&gt;
 type [Optionen] Befehle&lt;br /&gt;
&lt;br /&gt;
Beispiel&lt;br /&gt;
 root@zero:~# type ls&lt;br /&gt;
 ls is aliased to `ls --color=auto'&lt;br /&gt;
&lt;br /&gt;
Optionen:&lt;br /&gt;
&lt;br /&gt;
* -a : Alle vorkommenden Befehle werden ausgegeben, nicht nur das, welches aufgerufen werden würde&lt;br /&gt;
 root@zero:~# type '''-a''' ls&lt;br /&gt;
 ls is aliased to `ls --color=auto'&lt;br /&gt;
 ls is /bin/ls&lt;br /&gt;
&lt;br /&gt;
* -p : Anzeigen des Eintrags von Befehl in der Hash-Tabelle. Dieser Wert kann sich vom ersten Auftreten des Befehls in PATH&lt;br /&gt;
unterscheiden&lt;br /&gt;
 root@zero:~# type '''-p''' apache2&lt;br /&gt;
 /usr/sbin/apache2&lt;br /&gt;
&lt;br /&gt;
* -t : Anzeigen, ob Befehl ein Aliasname, ein Schlüsselwort, eine Funktion, ein eingebauter Befehl oder eine Datei ist&lt;br /&gt;
 root@zero:~# type '''-t''' apache2&lt;br /&gt;
 file&lt;/div&gt;</summary>
		<author><name>192.168.178.46</name></author>
	</entry>
	<entry>
		<id>https://www.xinux.net/index.php?title=Linux_Grundlagen&amp;diff=115</id>
		<title>Linux Grundlagen</title>
		<link rel="alternate" type="text/html" href="https://www.xinux.net/index.php?title=Linux_Grundlagen&amp;diff=115"/>
		<updated>2009-07-08T06:52:45Z</updated>

		<summary type="html">&lt;p&gt;192.168.178.46: /* top: Zeigt die Prozesse mit ihrem Status an (Abbrechen mit q) */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Einführung==&lt;br /&gt;
===Geschichte Unix===&lt;br /&gt;
====1969====&lt;br /&gt;
Am Anfang von Linux steht Multics, ein von Bell Laboratories geschaffenes &amp;quot;Betriebssystem&amp;quot;, &lt;br /&gt;
das noch mit Lochkarten arbeitete. Multics wird mit Unterstützung von AT&amp;amp;T und Western &lt;br /&gt;
Electric unter Mitarbeit von Ken Thompson und Dennis Ritchie weiterentwickelt. Obwohl sich &lt;br /&gt;
Bell Laboratories bald zurückzieht, gibt Thompson das Projekt nicht auf.  Zum Entwicklerteam &lt;br /&gt;
gehören auch Rudd Canaday und Brian Kernighan. Letzterer gibt 1970 dem Betriebssystem den Namen UNIX. &lt;br /&gt;
Thompson definiert 7 Richtlinien für UNIX:&lt;br /&gt;
 &lt;br /&gt;
# Hierarchische Anordnung der Dateisysteme&lt;br /&gt;
# Die Ausgabe von Daten an die Peripherie(-geräte) und Dateien soll gleich sein.&lt;br /&gt;
# Prozesse und Programme sollen miteinander kommunizieren.&lt;br /&gt;
# Multitasking (voneinander getrennte Prozesse)&lt;br /&gt;
# Persönliche Shell's&lt;br /&gt;
# Der Compiler soll für viele Programmiersprachen tauglich sein.&lt;br /&gt;
# Portabilität&lt;br /&gt;
&lt;br /&gt;
====1971====&lt;br /&gt;
Bis 1971 ist das für eine DEC PDP-7 geschriebene Unix als Version 1 auf eine PDP-11 portiert. Bis&lt;br /&gt;
zur Version 4 entwickelt Ritchie die Programmier- (Hoch-) Sprache C. Das in Assembler geschriebene&lt;br /&gt;
Unix wird fast völlig nach C übersetzt, wodurch zum erstenmal die geforderte Hardware-Unabhängigkeit&lt;br /&gt;
des Betriebssystems realisiert werden kann.&lt;br /&gt;
&lt;br /&gt;
====1975====&lt;br /&gt;
Da AT&amp;amp;T aufgrund vertraglicher Bindungen mit der US-Bundesregierung Unix nicht kommerziell vermarkten darf, stellt sie den Source Code für ein paar hundert Dollar den Universitäten, Lehr- und Forschungsanstalten zur Verfügung. Dies führt zu einer sehr dynamischen Entwicklung von Unix. 1975 wird die Version 6 als erstes UNIX-System veröffentlicht, die darauffolgende Version 7 wird sehr erfolgreich. Da es keine Standardisierung gibt, entwickeln bald verschiedenste Firmen ihr eigenes UNIX. Ab 1984 wird AT&amp;amp;T per Gerichtsbeschluss erlaubt, Unix zu vermarkten. AT&amp;amp;T verkauft sein Unix V und beginnt, sich um einen internationalen Standard von UNIX zu bemühen. &lt;br /&gt;
&lt;br /&gt;
====1984====&lt;br /&gt;
Durch Richard Stallman wird die Free Software Foundation (FSF) gegründet. Diese initiiert ein Projekt namens GNU (GNU ist Not Unix), welches das Ziel verfolgt, ein freies UNIX System zu schaffen. &lt;br /&gt;
&lt;br /&gt;
====1987====&lt;br /&gt;
AT&amp;amp;T verbietet die Verwendung des Unix Quellcodes an den Universitäten. Während dieser Zeit ist Andrew (Andy) Tannenbaum Professor an der Freien Universität von Amsterdam und entwickelt Minix. Minix ist ein kostengünstiges Lehrbetriebssystem und kommt ohne jeglichen AT&amp;amp;T Code aus, obwohl es die gleiche Funktionalität wie Unix 7 bietet. Im Usenet unter comp.os.minix entsteht eine Minix-Gemeinde, die den Minix Kernel und die Anwendungen rundherum programmiert und verbessert.&lt;br /&gt;
&lt;br /&gt;
====1991====&lt;br /&gt;
Linus Torvalds hat als Student für Computerwissenschaften an der Universität in Helsinki Minix installiert und das Buch von Andy Tannenbaum gelesen. Er beginnt im Sinne der FSF einen Unix ähnlichen Kernel zu programmieren mit der Idee, &amp;quot;ein besseres Minix als Minix&amp;quot; zu bauen. 1992 stellt er die Version 0.02 mit dem Namen Linux der Internetgemeinde zur Verfügung. &lt;br /&gt;
&lt;br /&gt;
====1994====&lt;br /&gt;
Die Linux Version 1.0 wird freigegeben. Das Linux Fieber beginnt... &lt;br /&gt;
&lt;br /&gt;
====1998====&lt;br /&gt;
Der Kreis der Linux Entwickler und Anwender ist kräftig angeschwollen. KDE 1.0 wird veröffentlicht. Die Zuwachsraten von Linux übertreffen die von Windows NT deutlich. &lt;br /&gt;
&lt;br /&gt;
====1999====&lt;br /&gt;
Der lange erwartete stabile Linux Kernel Version 2.2 wird freigegeben. Namhafte Firmen wie IBM kündigen ihre Unterstützung für Linux an. &lt;br /&gt;
&lt;br /&gt;
====2001====&lt;br /&gt;
Der lange erwartete stabile Linux Kernel Version 2.4 wird freigegeben. USB Unterstützung und eine neue Firewallimplementierung zeichnen ihn aus.&lt;br /&gt;
&lt;br /&gt;
====2003====&lt;br /&gt;
Linux Kernel Version 2.6 wird freigegeben. Am auffälligsten sind Änderungen bei der Modulverwaltung.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Distributionen===&lt;br /&gt;
{| Border=1 Cellpadding=2&lt;br /&gt;
| &lt;br /&gt;
|Url&lt;br /&gt;
|Paketformat&lt;br /&gt;
|-&lt;br /&gt;
|Red Hat&lt;br /&gt;
|www.redhat.com&lt;br /&gt;
|rpm&lt;br /&gt;
|-&lt;br /&gt;
|fedora&lt;br /&gt;
|fedora.redhat.com&lt;br /&gt;
|rpm&lt;br /&gt;
|-&lt;br /&gt;
|CentOS&lt;br /&gt;
|www.centos.org&lt;br /&gt;
|rpm&lt;br /&gt;
|-&lt;br /&gt;
|Suse/openSUSE&lt;br /&gt;
|www.opensuse.org&lt;br /&gt;
|rpm&lt;br /&gt;
|-&lt;br /&gt;
|Debian&lt;br /&gt;
|www.debian.org&lt;br /&gt;
|deb&lt;br /&gt;
|-&lt;br /&gt;
|Ubuntu&lt;br /&gt;
|www.ubuntu.com&lt;br /&gt;
|deb&lt;br /&gt;
|-&lt;br /&gt;
|Mandrake&lt;br /&gt;
|www.linux-mandrake.com&lt;br /&gt;
|rpm&lt;br /&gt;
|-&lt;br /&gt;
|Easy Linux&lt;br /&gt;
|www.easy-linux.de&lt;br /&gt;
|rpm&lt;br /&gt;
|-&lt;br /&gt;
|Turbo&lt;br /&gt;
|www.turbolinux.com&lt;br /&gt;
|rpm&lt;br /&gt;
|-&lt;br /&gt;
|minis&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|toms&lt;br /&gt;
|www.toms.net/rb&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|damn small linux&lt;br /&gt;
|www.damnsmalllinux.org&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|pocket-linux&lt;br /&gt;
|www.pocket-linux.org&lt;br /&gt;
|&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
====Bücher====&lt;br /&gt;
 Titel : Das Linux Anwenderhandbuch und Leitfaden für die Systemverwaltung&lt;br /&gt;
 Autor : Sebastian Hetze, Dirk Hohndel, Olaf Kirch und Martin Müller&lt;br /&gt;
 Verlag: Lunetix&lt;br /&gt;
 ISBN : 3-929764-06-7&lt;br /&gt;
&lt;br /&gt;
 Titel : Linux in a Nutshell&lt;br /&gt;
 Autor : Jessica Perry Hekman und die Mitarbeiter von O'Reilly &amp;amp; Associates&lt;br /&gt;
 Verlag: O'Reilly&lt;br /&gt;
 ISBN : 3-930673-57-6&lt;br /&gt;
&lt;br /&gt;
 Titel : Linux - Wegweiser zur Installation und Konfiguration&lt;br /&gt;
 Autor : Matt Welsh, Lar Kaufman, Matthias Kalle Dallheimer&lt;br /&gt;
 Verlag: O'Reilly&lt;br /&gt;
 ISBN : 3-930673-58-4 (deutsch), 1-56592-469-X (englisch)&lt;br /&gt;
&lt;br /&gt;
 Titel : Linux - Installation, Konfiguration, Anwendung&lt;br /&gt;
 Autor : Michael KoflerMultitasking&lt;br /&gt;
 Verlag: Addison-Wesley&lt;br /&gt;
 ISBN : 3-8273-1475-5&lt;br /&gt;
&lt;br /&gt;
 Titel : Linux - Wegweiser für Netzwerker&lt;br /&gt;
 Autor : Olaf Kirch&lt;br /&gt;
 Verlag: O'Reilly&lt;br /&gt;
 ISBN : 3-930673-18-5&lt;br /&gt;
&lt;br /&gt;
 Titel : TCP/IP-Netzwerk-Administration&lt;br /&gt;
 Autor : Craig Hunt&lt;br /&gt;
 Verlag: O'Reilly&lt;br /&gt;
 ISBN : 3-89721-110-6&lt;br /&gt;
&lt;br /&gt;
 Titel : Essential System Administration&lt;br /&gt;
 Autor : Eleen Frisch&lt;br /&gt;
 Verlag: O'Reilly&lt;br /&gt;
 ISBN : 1-56592-127-5&lt;br /&gt;
&lt;br /&gt;
==Betriebssystem==&lt;br /&gt;
===Was ist ein Betriebssystem?===&lt;br /&gt;
&lt;br /&gt;
Ein Betriebssystem liegt logisch gesehen zwischenAnwendungsprogramm und Hardware.&lt;br /&gt;
&lt;br /&gt;
Es nimmt die Anforderungen der Anwendungsprogramme entgegen und leitet&lt;br /&gt;
diese kontrolliert an die Hardware weiter. Kein Anwendungsprogramm sollte&lt;br /&gt;
direkt auf die Hardware zugreifen können. Den zentralen Zugang schafft einzig&lt;br /&gt;
das Betriebssystem. Somit kann das Betriebssystem unsinnige Anforderungen&lt;br /&gt;
oder Bedienungsfehler abblocken.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Image:Linux.jpg]]&lt;br /&gt;
&lt;br /&gt;
===Aufgaben eines Betriebssystems===&lt;br /&gt;
&lt;br /&gt;
# Verbergen der Komplexität der Maschine vor dem Anwender (Abstraktion)&lt;br /&gt;
# Bereitstellen einer Benutzerschnittstelle (&amp;quot;Kommandointerpreter&amp;quot;, &amp;quot;Shell&amp;quot;)&lt;br /&gt;
# Bereitstellen einer normierten Programmierschnittstelle (API)&lt;br /&gt;
# Verwaltung der Ressourcen der Maschine::&lt;br /&gt;
Hauptspeicher&lt;br /&gt;
Prozessor(en)&lt;br /&gt;
Hintergrundspeicher (Platte, Band, etc.)&lt;br /&gt;
Geräte (Terminal, Drucker, Plotter, etc.)&lt;br /&gt;
Rechenzeit&lt;br /&gt;
Koordination von Prozessen&lt;br /&gt;
&lt;br /&gt;
===Aufbau eines Betriebssystems===&lt;br /&gt;
&lt;br /&gt;
Ein Rechensystem besteht aus Hardware, Systemprogrammen und Anwendungs-&lt;br /&gt;
programmen. Unter einem Betriebssystem wird meist die Summe aus Betriebs-&lt;br /&gt;
systemkern (Kernel) und den wichtigsten Systemprogrammen verstanden. Ein&lt;br /&gt;
minimaler LINUX-Kernel besitzt ungefähr eine Größe von 400 - 800 kByte.&lt;br /&gt;
Weitere wichtige Systemkomponenten benötigen zusätzlich 10 - 100 Mbyte&lt;br /&gt;
Plattenplatz.&lt;br /&gt;
&lt;br /&gt;
Ein Betriebssystem stellt den Rechner als erweiterte Maschine (virtuelle&lt;br /&gt;
Maschine) über definierte Software-Schnittstellen zur Verfügung.&lt;br /&gt;
Das Betriebssystem dient als Betriebsmittelverwalter, der Anforderungen&lt;br /&gt;
befriedigt, protokolliert, abrechnet und vermittelt.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Aufgaben des Betriebssystemkerns:&lt;br /&gt;
&lt;br /&gt;
{| Border=1 Cellpadding=2&lt;br /&gt;
|Prozessverwaltung  (dispatching and scheduling)&lt;br /&gt;
| Mehrere Benutzer können mit mehreren Aktionen gleichzeitig im System arbeiten, ohne sich gegenseitig zu beeinflussen. Damit dies möglich ist,  müssen die Aktionen organisiert, koordiniert und verwaltet werden. Die zu verwaltende Einheit nennt man Prozess.&lt;br /&gt;
|-&lt;br /&gt;
|Speicherverwaltung   (memory management)&lt;br /&gt;
|Zuteilen von Speicherbereichen an laufende Prozesse, Schutz der Speicherbereiche vor unbefugten Zugriffen, bei Speicherengpässen: Auslagern von ganzen (swapping) oder von Teilen (paging) von Prozessen auf die Platte (swap file).&lt;br /&gt;
|-&lt;br /&gt;
|Dateiverwaltung  (file handling)&lt;br /&gt;
|Zuteilung von Plattenplatz für Programme, Benutzer und Systemdienste, Schreiben, Lesen und Strukturieren der Daten auf den Massenspeichern; Durch Bereitstellung einer entsprechenden Schnittstelle (VFS, virtual file system) kann der Kern Dateisysteme unterschiedlichster Art (EXT2, FAT, NFS, HPFS, NTFS, ...) ansprechen.&lt;br /&gt;
|-&lt;br /&gt;
|Geräteverwaltung  (resource management)&lt;br /&gt;
|Der Kern ermöglicht und kontrolliert den Zugriff auf die Hardware. Er steuert die Ein- und Ausgabetätigkeiten der Anwender. An den Kern&lt;br /&gt;
gebunden sind die entsprechenden Gerätetreiber (device driver), die damit eine Kommunikation zwischen Kern und Hardware ermöglichen.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
===Multitasking===&lt;br /&gt;
&lt;br /&gt;
Multitasking bedeutet, dass ein Rechner aus Anwendersicht mehrere Aufgaben&lt;br /&gt;
(Tasks) gleichzeitg übernehmen kann. Das Betriebssystem (OS) unterteilt die&lt;br /&gt;
gleichzeitig anstehenden Aufgaben in Einzelarbeitsschritte (Prozesse) und&lt;br /&gt;
managed durch ein Zeitscheibenverfahren (scheduling) die gleichmäßige&lt;br /&gt;
Abarbeitung der Prozesse.&lt;br /&gt;
&lt;br /&gt;
Es wird unterschieden zwischen:&lt;br /&gt;
&lt;br /&gt;
*non-präamptiven (kooperativen=die Ressourcen werden vom aktiven Prozess freigegeben, bei einem Hänger steht das ganze System)&lt;br /&gt;
&lt;br /&gt;
und&lt;br /&gt;
&lt;br /&gt;
*präamptiven (reinem=der Betriebssystemkern steuert Taskwechsel, indem nach einer festgelegten Zeit vom gerade aktiven Prozess zum nächsten weitergeschaltet wird)&lt;br /&gt;
&lt;br /&gt;
===Mehrprozessorbetrieb===&lt;br /&gt;
&lt;br /&gt;
Bei mehreren Prozessoren und Unterstützung durch das OS&lt;br /&gt;
(NT,Linux,Unix,Novell) können mehrere Tasks auf diese verteilt werden und&lt;br /&gt;
gleichzeitig bearbeitet werden. Nachteilig ist, dass dies nicht oder kaum von&lt;br /&gt;
Anwendungsprogrammen unterstützt wird und es zu Kommunikationsproblemen&lt;br /&gt;
zwischen den einzelnen Tasks kommen kann.&lt;br /&gt;
&lt;br /&gt;
===Arten von von Betriebssystemen===&lt;br /&gt;
&lt;br /&gt;
{|Border=1 Cellpadding=2&lt;br /&gt;
|&lt;br /&gt;
|SingleUser  &lt;br /&gt;
|Multiuser&lt;br /&gt;
|-&lt;br /&gt;
|Single Tasking&lt;br /&gt;
|MS - DOS&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|Multi Tasking&lt;br /&gt;
|Windows 3.x&lt;br /&gt;
|UNIX&lt;br /&gt;
|-&lt;br /&gt;
|&lt;br /&gt;
|Windows 95/98&lt;br /&gt;
|Linux&lt;br /&gt;
|-&lt;br /&gt;
|&lt;br /&gt;
|Windows NT4 ohne Erweiterungen&lt;br /&gt;
|VMS&lt;br /&gt;
|-&lt;br /&gt;
|&lt;br /&gt;
|OS/2 &lt;br /&gt;
|Windows NT mit  Erweiterungen&lt;br /&gt;
|-&lt;br /&gt;
|&lt;br /&gt;
|Apple&lt;br /&gt;
|Windows 2000, XP, 2003&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
===SHELL===&lt;br /&gt;
&lt;br /&gt;
Wenn man mit Linux arbeiten will, kann man nicht direkt mit dem Betriebssystem&lt;br /&gt;
kommunizieren. Man braucht dazu ein Hilfsprogramm, welches die&lt;br /&gt;
Kommandoeingaben ordnungsgemäß an das Betriebssystem weiterleitet. Dieses&lt;br /&gt;
Hilfsprogramm hat den Namen Shell.&lt;br /&gt;
&lt;br /&gt;
Die Shell schirmt den Betriebssystemkern von den Anwendungsprogrammen ab.&lt;br /&gt;
Die unterschiedlichen Shells erfüllen alle dieselbe Aufgabe, sie unterscheiden sich&lt;br /&gt;
allerdings in ihrer Syntax.&lt;br /&gt;
&lt;br /&gt;
==Die Installation im Überblick==&lt;br /&gt;
&lt;br /&gt;
Die Installation von Linux geschieht in folgenden Schritten:&lt;br /&gt;
&lt;br /&gt;
# Analyse (Welche Hardware habe ich? ,Hab ich weitere Betriebsysteme?)&lt;br /&gt;
# Booten des Linux-Kernels. (von CD oder Diskette)&lt;br /&gt;
# Laden einer RAM-Disk (das macht das Installationsprogramm automatisch).&lt;br /&gt;
# Partitionieren der Festplatte (fdisk).&lt;br /&gt;
# Einrichten der Swappartition (mkswap), Formatieren der Festplatte (mkfs).&lt;br /&gt;
# Montieren der Dateisysteme (mount), Aktivieren der Swapbereiche (swapon).&lt;br /&gt;
# Kopieren und Auspacken der Daten vom Installationsmedium auf die Festplatte (die eigentliche Installation). (rpm, dpkg oder tar).&lt;br /&gt;
# Geeignete Wahl der Bootmethode unter Berücksichtigung von Punkt 1 (grub, lilo).&lt;br /&gt;
# Konfiguration des Systems (Netz, Modem etc...).&lt;br /&gt;
&lt;br /&gt;
==Erste Schritte==&lt;br /&gt;
===Anmelden===&lt;br /&gt;
Sie können sich nun mit dem Usernamen und dem Passwort, das sie bei der Installation angelegt haben anmelden!&lt;br /&gt;
[[Image:benutzer.jpg]]&lt;br /&gt;
&lt;br /&gt;
[[Image:passwd.jpg]]&lt;br /&gt;
&lt;br /&gt;
===Terminal öffnen===&lt;br /&gt;
&lt;br /&gt;
Ein Terminal öffnen Sie über das Startmenü:&lt;br /&gt;
&lt;br /&gt;
[[Image:Terminalde.jpg]]&lt;br /&gt;
&lt;br /&gt;
Das geöffnete Terminal sieht dann folgendermaßen aus:&lt;br /&gt;
&lt;br /&gt;
[[Image:Terminalde2.jpg]]&lt;br /&gt;
&lt;br /&gt;
===Sudo===&lt;br /&gt;
Rootrechte erlangen sie über den &amp;quot;Sudo&amp;quot;-Befehl&lt;br /&gt;
 &lt;br /&gt;
''Den nächsten Befehl als root ausführen''&lt;br /&gt;
 xinux@zero:~$ sudo cat /etc/shadow&lt;br /&gt;
 [sudo] password for xinux:&lt;br /&gt;
&lt;br /&gt;
''Eine komplette Sitzung als root starten''&lt;br /&gt;
 xinux@zero:~$ sudo -i&lt;br /&gt;
 [sudo] password for xinux:&lt;br /&gt;
 root@zero:~#&lt;br /&gt;
&lt;br /&gt;
===Virtuelle Konsolen===&lt;br /&gt;
&lt;br /&gt;
In die Virtuelle Konsole gelangen sie über &amp;quot;STRG+ALT+(F1-F6)&amp;quot;.&lt;br /&gt;
Sie funktioniert wie ein ganz normales Terminal, und mit &amp;quot;ALT+F7&amp;quot;&lt;br /&gt;
gelangen sie wieder zurück auf die grafische Benutzeroberfläche&lt;br /&gt;
&lt;br /&gt;
===Abmelden===&lt;br /&gt;
&lt;br /&gt;
Abmelden können Sie sich wieder über das Startmenu unter:&lt;br /&gt;
&lt;br /&gt;
[[Image:Logout.jpg]]&lt;br /&gt;
&lt;br /&gt;
Fals sie nur einzelne Sitzungen in einem der Terminals oder &lt;br /&gt;
den Virtuellen Konsolen Abmelden wollen benutzen sie dazu den Befehl: &amp;quot;exit&amp;quot;&lt;br /&gt;
&lt;br /&gt;
===Herunterfahren===&lt;br /&gt;
&lt;br /&gt;
Das Herunterfahren funktioniert auf dem selben Weg.&lt;br /&gt;
&lt;br /&gt;
Entweder sie Benutzen wieder das Startmenü und benutzen diesmal den &amp;quot;Ausschalten ...&amp;quot; Knopf,&lt;br /&gt;
&lt;br /&gt;
Oder sie geben den äquivalenten &amp;quot;shutdown&amp;quot;-Befehl in einem Terminal bzw. der virtuellen Konsole ein.&lt;br /&gt;
&lt;br /&gt;
Allerdings müssen sie dazu als Administrator angemeldet sein s. &amp;quot;Sudo&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Wenn Sie den &amp;quot;shutdown&amp;quot;-Befehl benutzen wollen muss hinter den Befehl&lt;br /&gt;
&lt;br /&gt;
eine Zeitangabe in Minuten oder das wort &amp;quot;now&amp;quot; für sofortiges Ausschalten hinzugefügt werden:&lt;br /&gt;
&lt;br /&gt;
 xinux@zero:~$ sudo -i&lt;br /&gt;
 root@zero:~# shutdown 60&lt;br /&gt;
 &lt;br /&gt;
 Broadcast message from xinux@zero &lt;br /&gt;
         (/dev/pts/3) at 14:29 ...&lt;br /&gt;
 &lt;br /&gt;
 The system is going down for maintenance in 60 minutes!&lt;br /&gt;
&lt;br /&gt;
Sollten sie den Befehl widerrufen wollen dann drücken sie &amp;quot;STRG+C&amp;quot;,&lt;br /&gt;
&lt;br /&gt;
in dem Terminal in dem der shutdown Befehl gestartet wurde,&lt;br /&gt;
&lt;br /&gt;
oder geben sie den &amp;quot;shutdown&amp;quot;-Befehl zusammen mit der Abbruchoption &amp;quot;-c&amp;quot; in einem anderen Terminal ein:&lt;br /&gt;
&lt;br /&gt;
 root@zero:~# shutdown -c&lt;br /&gt;
&lt;br /&gt;
 shutdown: Shutdown cancelled&lt;br /&gt;
 root@zero:~# &lt;br /&gt;
&lt;br /&gt;
Wenn Sie den Rechner Neustarten möchten gibt es dazu die Option &amp;quot;-r&amp;quot; für den &amp;quot;shutdown&amp;quot;-Befehl&lt;br /&gt;
&lt;br /&gt;
oder den &amp;quot;reboot&amp;quot;-Befehl die beide auch als root ausgeführt werden müssen:&lt;br /&gt;
&lt;br /&gt;
 xinux@zero:~$ sudo -i&lt;br /&gt;
 [sudo] password for xinux: &lt;br /&gt;
 root@zero:~# shutdown -r now&lt;br /&gt;
&lt;br /&gt;
 root@zero:~# reboot&lt;br /&gt;
&lt;br /&gt;
===&amp;quot;man&amp;quot;===&lt;br /&gt;
&lt;br /&gt;
Programm zum Einsehen der Online-Manuals&lt;br /&gt;
&lt;br /&gt;
Die Manuals sind in folgende Sektionen unterteilt:&lt;br /&gt;
# Ausführbare Programme oder Shellbefehle&lt;br /&gt;
# Systemaufrufe (Kernelfunktionen)&lt;br /&gt;
# Bibliotheksaufrufe (Funktionen in System-Bibliotheken)&lt;br /&gt;
# Spezielle Dateien (gewöhnlich in /dev)&lt;br /&gt;
# Dateiformate und Konventionen, z. B. /etc/passwd&lt;br /&gt;
# Spiele&lt;br /&gt;
# Makropakete und Konventionen, z. B. man(7), groff(7)&lt;br /&gt;
# Systemadministrationsbefehle (in der Regel nur für root)&lt;br /&gt;
# Kernelroutinen [Nicht Standard]&lt;br /&gt;
&lt;br /&gt;
Aufruf eines Manuals erfolgt durch ''man kommando''&lt;br /&gt;
Beendet wird durch Drücken des Buchstabens q&lt;br /&gt;
Gesucht wird vorwärts durch Eingabe eines /suchausdruck&lt;br /&gt;
Gesucht wird rückwärts durch Eingabe eines ?suchausdruck&lt;br /&gt;
&lt;br /&gt;
Beispiele:&lt;br /&gt;
&lt;br /&gt;
      man passwd        Anschauen der Manualseite zum Programm passwd&lt;br /&gt;
      man 5 passwd      Anschauen der Manualseite zur Datei /etc/passwd&lt;br /&gt;
      man -a passwd     Anschauen aller Manualseiten zu passwd&lt;br /&gt;
      man -k passwd     Durchsucht die Kurzbeschreibungen der Manualseite&lt;br /&gt;
                        nach passwd und gibt alle Treffer aus&lt;br /&gt;
      man -f passwd      Gibt alle gefunden Kurzbescheibungen zu passwd aus&lt;br /&gt;
      man -L en passwd Gibt englische Manualseiten aus&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Was geht vor auf meinem System? (date,who)===&lt;br /&gt;
&lt;br /&gt;
Das Kommando date dient zur Abfrage von Datum und Uhrzeit.&lt;br /&gt;
&lt;br /&gt;
 xinux@zero:~ &amp;gt; date&lt;br /&gt;
 Fre Mär 16 16:35:03 CET 2001&lt;br /&gt;
&lt;br /&gt;
oder auch Anzeige der Grennwich Zeit:&lt;br /&gt;
&lt;br /&gt;
 xinux@zero:~ &amp;gt; date -u&lt;br /&gt;
 Fre Mär 16 15:35:34 UTC 2001&lt;br /&gt;
&lt;br /&gt;
 xinux@zero:~ &amp;gt; date -u &amp;quot;+%X&amp;quot;&lt;br /&gt;
 15:37:19&lt;br /&gt;
&lt;br /&gt;
 xinux@zero:~ &amp;gt; date -u &amp;quot;+%x&amp;quot;&lt;br /&gt;
 01/15/02&lt;br /&gt;
&lt;br /&gt;
who zeigt alle angemeldeten Benutzer an&lt;br /&gt;
&lt;br /&gt;
 thomas@cardassia:~ &amp;gt; who&lt;br /&gt;
 thomas             tty1 Feb 27 16:39&lt;br /&gt;
 thomas             tty2 Mar 2 17:08&lt;br /&gt;
 tina               tty6 Mar 16 16:38&lt;br /&gt;
&lt;br /&gt;
Mit `who --help' bekommen Sie mehr Informationen.&lt;br /&gt;
&lt;br /&gt;
 thomas@cardassia:~ &amp;gt; who --help&lt;br /&gt;
&lt;br /&gt;
Benutzung: who [OPTION]... [ DATEI | ARG1 ARG2 ]&lt;br /&gt;
&lt;br /&gt;
 -H, --heading             print line of column headings&lt;br /&gt;
 -i, -u, --idle            add user idle time as HOURS:MINUTES, . or old&lt;br /&gt;
 -l, --lookup              attempt to canonicalize hostnames via DNS&lt;br /&gt;
 -m                        only hostname and user associated with stdin&lt;br /&gt;
 -q, --count               all login names and number of users logged on&lt;br /&gt;
 -s                        (ignored)&lt;br /&gt;
 -T, -w, --mesg            add user's message status as +, - or ?&lt;br /&gt;
     --message             same as -T&lt;br /&gt;
     --writable            same as -T&lt;br /&gt;
     --help                display this help and exit&lt;br /&gt;
     --version             output version information and exit&lt;br /&gt;
&lt;br /&gt;
==Das UNIX-Dateisystem==&lt;br /&gt;
===Verzeichnisbaum===&lt;br /&gt;
&lt;br /&gt;
[[Image:vztree.jpg]]&lt;br /&gt;
&lt;br /&gt;
Das Betriebssystem UNIX besitzt ein hierarchisches Dateisystem. Es besteht aus:&lt;br /&gt;
* Dateien (Files)&lt;br /&gt;
Dateien speichern Informationen (Text, Bilder, Sound, Videos, Programme) und&lt;br /&gt;
werden über den Dateinamen angesprochen.&lt;br /&gt;
&lt;br /&gt;
* Verzeichnissen (Directories, Kataloge)&lt;br /&gt;
Verzeichnisse besitzen ebenfalls einen Namen und dienen zur Ordnung des&lt;br /&gt;
Dateisystems. Ein Verzeichnis kann Dateien und Unterverzeichnisse&lt;br /&gt;
(Subdirectories) enthalten. Das oberste Verzeichnis im Dateisystem heisst&lt;br /&gt;
Rootverzeichnis oder kurz Root und wird durch / (sprich: slash)&lt;br /&gt;
gekennzeichnet.&lt;br /&gt;
&lt;br /&gt;
Im Gegensatz zu Windows kennt UNIX keine Laufwerke.&lt;br /&gt;
Das obige Bild zeigt ein typisches UNIX-Dateisystem.&lt;br /&gt;
Unterhalb des Rootverzeichnisses befinden sich eine Vielzahl vonVerzeichnissen.&lt;br /&gt;
&lt;br /&gt;
===Wichtige Verzeichnisse===&lt;br /&gt;
&lt;br /&gt;
• '''Homeverzeichnis'''&lt;br /&gt;
&lt;br /&gt;
das Verzeichnis, in dem man sich unmittelbar nach dem Anmelden befindet. Das&lt;br /&gt;
Homeverzeichnis wird vom Systemverwalter eingerichtet; jeder Anwender&lt;br /&gt;
besitzt ein festes Homeverzeichnis. z.B. /home/hans&lt;br /&gt;
&lt;br /&gt;
~ (Tilde) bzw. $HOME (Shellvariable) kennzeichnen das Homeverzeichnis.&lt;br /&gt;
&lt;br /&gt;
• '''Aktuelles Verzeichnis'''&lt;br /&gt;
&lt;br /&gt;
Verzeichnis, in dem man sich aktuell befindet.&lt;br /&gt;
Das aktuelle Verzeichnis wird mit dem Befehl cd (change directory) oder per&lt;br /&gt;
Mausklick verändert.&lt;br /&gt;
Ein einfacher Punkt . kennzeichnet das aktuelle Verzeichnis.&lt;br /&gt;
&lt;br /&gt;
• '''Elternverzeichnis'''&lt;br /&gt;
&lt;br /&gt;
Verzeichnis unmittelbar oberhalb des aktuellen Verzeichnisses.&lt;br /&gt;
Jedes Verzeichnis ausser / besitzt genau ein Elternverzeichnis.&lt;br /&gt;
Zwei Punkte .. kennzeichnen das Elternverzeichnis (abhängig vom aktuellen&lt;br /&gt;
VZ).&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Absoluter Pfadname:===&lt;br /&gt;
&lt;br /&gt;
Beschreibt ausgehend vom Rootverzeichnis den Weg zum Zielverzeichnis oder zur&lt;br /&gt;
Zieldatei. (Welche Verzeichnisse müssen ausgehend von / durchlaufen werden, um&lt;br /&gt;
zum Ziel zu kommen?) Ein absoluter Pfadname beginnt immer mit / .&lt;br /&gt;
&lt;br /&gt;
===Relativer Pfadname:===&lt;br /&gt;
&lt;br /&gt;
Beschreibt ausgehend vom aktuellen Verzeichnis den Weg zum Zielverzeichnis&lt;br /&gt;
oder zur Zieldatei; ein relativer Pfadname beginnt nicht mit / .&lt;br /&gt;
/home/suxer&lt;br /&gt;
absoluter Pfadname für das Verzeichnis sub1 im Homeverzeichnis von suxer&lt;br /&gt;
&lt;br /&gt;
===Verzeichnisstruktur===&lt;br /&gt;
&lt;br /&gt;
 /bin         Kommandos die beim starten benötigt werden (Zugriff hat jeder)&lt;br /&gt;
 /sbin        Wichtige System-Programme (In der Regel root vorberhalten)&lt;br /&gt;
 /boot        Hier findet man die Dateien des Bootmanagers und des Kernel.&lt;br /&gt;
 /dev         In diesem Verzeichnis stehen die Gerätedateien (Devices),&lt;br /&gt;
 /home        Alle Heimatverzeichnisse der Nutzer findet man hier.&lt;br /&gt;
 /lib         Beim Systemstart benötigten Bibliotheken und Modules stehen hier.&lt;br /&gt;
 /mnt         Mountpunkt für temporäre Partitionen&lt;br /&gt;
 /opt         Software, die nicht Installationsumfang von Linux gehören.&lt;br /&gt;
 /root        Heimatverzeichnis des Administrators.&lt;br /&gt;
 /tmp         Temporäre Dateien können hier abgelegt werden&lt;br /&gt;
 /usr         statische Dateien (kann read-only gemountet sein)&lt;br /&gt;
 /var         variable Dateien (muss beschreibar sein )&lt;br /&gt;
 /etc         Konfiguartionsdateien und Startscripte&lt;br /&gt;
 /proc        Virtuelles Dateisystem -&amp;gt; repräsentiert den Kernel&lt;br /&gt;
&lt;br /&gt;
===Unterverzeichnisse von /usr===&lt;br /&gt;
&lt;br /&gt;
 sbin         Programme für root die beim Start nicht benötigt werden&lt;br /&gt;
 bin          Programme für alle die beim Start nicht benötigt werden&lt;br /&gt;
 X11R6        Dateien des X-Window-Sytems&lt;br /&gt;
 bin          Ausführbare Programme&lt;br /&gt;
 doc          Dokumentationen&lt;br /&gt;
 etc          Konfigurationsdateien&lt;br /&gt;
 games        Spiele&lt;br /&gt;
 include      Headerdateien für C-Programme&lt;br /&gt;
 local        Pakete die nicht zur Distribution gehören ähnlich /opt&lt;br /&gt;
 share        Pakete die von mehreren Paketen genutzt werden&lt;br /&gt;
 share/man    Die Manualpages&lt;br /&gt;
 share/info   Seiten des Infosystems&lt;br /&gt;
 share/doc    Dokumentationen&lt;br /&gt;
 src          Sources von Programmen (Kernel und andere)&lt;br /&gt;
&lt;br /&gt;
===Unterverzeichnisse von /var===&lt;br /&gt;
&lt;br /&gt;
 cache        Zwischenspreicher für Progammes&lt;br /&gt;
 games        Variable Daten der Games (Scores etc...)&lt;br /&gt;
 lock         Sperrdateien&lt;br /&gt;
 log          Die Logdateien (wichtiges Verzeichnis für Admins)&lt;br /&gt;
 mail         Das Mailsystem&lt;br /&gt;
 run          Dateien zu laufemdem Prozessen&lt;br /&gt;
 spool        Spooldateien (z.B. für das Drucksystem&lt;br /&gt;
 state        Statusinfos&lt;br /&gt;
 tmp          Wie /tmp eventuell nicht auf root Partion&lt;br /&gt;
&lt;br /&gt;
==Einfache Komandos==&lt;br /&gt;
===cd: Wechseln des Arbeitsverzeichnis===&lt;br /&gt;
&lt;br /&gt;
Um festzustellen in welchem Verzeichnis man sich befindet, sollte man den&lt;br /&gt;
Befehl &amp;quot;pwd&amp;quot; benutzen,&lt;br /&gt;
&lt;br /&gt;
und mit dem Befehl &amp;quot;cd&amp;quot; kann man zwischen den Verzeichnissen wechseln:&lt;br /&gt;
&lt;br /&gt;
Wechsele ins homeverzeichnis von Xinux&lt;br /&gt;
&lt;br /&gt;
 xinux@zero:~$ cd /home/xinux/&lt;br /&gt;
 xinux@zero:~$ pwd&lt;br /&gt;
 /home/xinux&lt;br /&gt;
&lt;br /&gt;
cd ~ -&amp;gt; wechsele ins jeweilige Homeverzeichnis&lt;br /&gt;
&lt;br /&gt;
cd .. -&amp;gt; wechsele ein Verzeichnis höher&lt;br /&gt;
&lt;br /&gt;
cd ../verzeichnis -&amp;gt; wechsele in eine paralleles Verzeichnis &amp;lt;- (ist eine relative Pfadangabe !)&lt;br /&gt;
&lt;br /&gt;
cd - -&amp;gt; wechsele in das Verzeichnis, in dem vorher gearbeitet wurde.&lt;br /&gt;
&lt;br /&gt;
Mit cd / wechselt man in das Wurzelverzeichnis.&lt;br /&gt;
&lt;br /&gt;
 xinux@zero:/var/log$ cd /&lt;br /&gt;
 xinux@zero:/$ pwd&lt;br /&gt;
 /&lt;br /&gt;
&lt;br /&gt;
===ls: Listing===&lt;br /&gt;
&lt;br /&gt;
Den Inhalt von Verzeichnissen kann man sich mit dem Befehl &amp;quot;ls&amp;quot; anzeigen lassen&lt;br /&gt;
wobei &amp;quot;ls&amp;quot; eine Vielzahl von Optionen besitzt:&lt;br /&gt;
&lt;br /&gt;
 ls                                  standard&lt;br /&gt;
 ls -l                               langes listing&lt;br /&gt;
 ls -a                               alle Dateien&lt;br /&gt;
 ls -i                               mit Inode&lt;br /&gt;
 ls -h                               gut lesbare Dateigröße&lt;br /&gt;
 ls -d                               Verzechnis wird angezeigt, nicht der Inhalt&lt;br /&gt;
 ls -L                               sortiert nach Größe&lt;br /&gt;
 ls -t                               sortiert nach Datum&lt;br /&gt;
 ls -F                               mit nützlichem Anhang&lt;br /&gt;
&lt;br /&gt;
 xinux@zero:/$ ls -l /var/log/messages&lt;br /&gt;
 -rw-r----- 1 syslog adm 2296 2009-06-16 10:05 /var/log/messages&lt;br /&gt;
&lt;br /&gt;
===more: Seitenweises Anzeigen von Seiten===&lt;br /&gt;
 root@zero:~# more /var/log/messages&lt;br /&gt;
 ...&lt;br /&gt;
&lt;br /&gt;
===head: erste Zeilen anzeigen===&lt;br /&gt;
Erste 10 Zeilen anzeigen&lt;br /&gt;
 root@zero:~# head /var/log/messages&lt;br /&gt;
 Jun 15 12:37:08 zero syslogd 1.5.0#5ubuntu3: restart.&lt;br /&gt;
 Jun 15 12:38:43 zero kernel: [  830.065036] mtrr: your processor doesn't support write-combining&lt;br /&gt;
 Jun 15 12:46:05 zero pulseaudio[4817]: pid.c: Stale PID file, overwriting.&lt;br /&gt;
 Jun 15 13:05:24 zero -- MARK --&lt;br /&gt;
 ...&lt;br /&gt;
&lt;br /&gt;
Erste zwei Zeilen anzeigen&lt;br /&gt;
 root@zero:~# head -n 2 /var/log/messages&lt;br /&gt;
 Jun 15 12:37:08 zero syslogd 1.5.0#5ubuntu3: restart.&lt;br /&gt;
 Jun 15 12:38:43 zero kernel: [  830.065036] mtrr: your processor doesn't support write-combining&lt;br /&gt;
&lt;br /&gt;
===tail: letzte Zeilen anzeigen===&lt;br /&gt;
 &lt;br /&gt;
 root@zero:~# tail /var/log/syslog&lt;br /&gt;
 ...&lt;br /&gt;
 Jun 19 11:19:35 zero -- MARK --&lt;br /&gt;
 Jun 19 11:39:35 zero -- MARK --&lt;br /&gt;
 Jun 19 11:59:36 zero -- MARK --&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Letze 5 Zeilen anzeigen&lt;br /&gt;
 root@zero:~# tail -n 5 /var/log/auth.log&lt;br /&gt;
 Jun 18 14:30:01 zero CRON[12040]: pam_unix(cron:session): session closed for user root&lt;br /&gt;
 Jun 18 14:39:01 zero CRON[12191]: pam_unix(cron:session): session opened for user root by (uid=0)&lt;br /&gt;
 Jun 18 14:39:01 zero CRON[12191]: pam_unix(cron:session): session closed for user root&lt;br /&gt;
 Jun 18 14:40:01 zero CRON[12237]: pam_unix(cron:session): session opened for user root by (uid=0)&lt;br /&gt;
 Jun 18 14:40:01 zero CRON[12237]: pam_unix(cron:session): session closed for user root&lt;br /&gt;
&lt;br /&gt;
Letze Zeilen anzeigen und fortlaufend aktualisieren&lt;br /&gt;
 root@zero:~# tail -f /var/log/syslog&lt;br /&gt;
 ...&lt;br /&gt;
&lt;br /&gt;
===mkdir: Ein neues Verzeichnis erstellen===&lt;br /&gt;
&lt;br /&gt;
 mkdir        verzeichnis&lt;br /&gt;
Erstellt ein Verzeichnis im working directory (wd)&lt;br /&gt;
&lt;br /&gt;
 mkdir  -p    ver1/ver2&lt;br /&gt;
Erstellt ein Verzeichnis ver2 unterhalb von ver1&lt;br /&gt;
wenn ver1 nicht existiert wird es erstellt&lt;br /&gt;
&lt;br /&gt;
 mkdir -m 753 ver1&lt;br /&gt;
Es wird das Verzeichnis ver1 erstellt mit der mask 753&lt;br /&gt;
&lt;br /&gt;
 mkdir -v     ver1&lt;br /&gt;
Geschwätzige Ausgabe :)&lt;br /&gt;
&lt;br /&gt;
===Zum Löschen von leeren Verzeichnissen wird rmdir benutzt===&lt;br /&gt;
&lt;br /&gt;
 rmdir           ver1&lt;br /&gt;
Löscht das leere Verzeichnis ver1&lt;br /&gt;
&lt;br /&gt;
 rmdir -v        ver1&lt;br /&gt;
Löscht das leere Verzeichnis ver1 und ist geschwätzig&lt;br /&gt;
&lt;br /&gt;
 rmdir -p        /ver1/ver2/ver3&lt;br /&gt;
Löscht das Verzeichnis ver3; wenn dadurch ver2 ein leeres&lt;br /&gt;
Verzeichnis wird, wird dieses auch gelöscht , wenn ver1&lt;br /&gt;
dadurch ein leeres Verzeichnis wird, wird auch dieses gelöscht.&lt;br /&gt;
&lt;br /&gt;
===touch Verändern des Zeitstempels===&lt;br /&gt;
&lt;br /&gt;
Mit touch können wir eine neue leere Datei erzeugen (das ist nicht der eigentliche&lt;br /&gt;
Zweck von touch, eigentlich wird der Zeitstempel geändert)&lt;br /&gt;
&lt;br /&gt;
 touch            dateiname&lt;br /&gt;
&lt;br /&gt;
===Kopieren=== &lt;br /&gt;
cp ist das Kommando um Dateien zu kopieren &lt;br /&gt;
&lt;br /&gt;
Eine Kopie von dat1 mit dem Namen dat2 erstellen:&lt;br /&gt;
&lt;br /&gt;
 xinux@zero:~$ cp dat1 dat2&lt;br /&gt;
&lt;br /&gt;
Eine Kopie von dat1 ins Verzeichnis ver2 erstellen:&lt;br /&gt;
&lt;br /&gt;
 xinux@zero:~$ cp dat1 ver2/&lt;br /&gt;
 &lt;br /&gt;
Eine Kopie erstellen mit ausführlicher Anzeige:&lt;br /&gt;
&lt;br /&gt;
 xinux@zero:~$ cp -v dat1 dat2&lt;br /&gt;
 `dat1' -&amp;gt; `dat2'&lt;br /&gt;
&lt;br /&gt;
Eine Kopie erstellen mit Rückfrage fals etwas überschrieben wird:&lt;br /&gt;
&lt;br /&gt;
 xinux@zero:~$ cp -i dat1 dat2&lt;br /&gt;
 cp: overwrite `dat2'?&lt;br /&gt;
&lt;br /&gt;
Eine Kopie erstellen und die Rückfrage überbrücken:&lt;br /&gt;
&lt;br /&gt;
 xinux@zero:~$ cp -f dat1 dat2&lt;br /&gt;
&lt;br /&gt;
Eine Kopie von dat1 ins Verzeichnis ver2 erstellen fals keine neuere Version von dat1 vorliegt:&lt;br /&gt;
&lt;br /&gt;
 xinux@zero:~$ cp -u dat1 ver2/&lt;br /&gt;
&lt;br /&gt;
Eine Kopie erstellen fals ver2 auf dem selben Dateisystem wie dat1 liegt:&lt;br /&gt;
&lt;br /&gt;
 xinux@zero:~$ cp -x dat1 ver2/&lt;br /&gt;
&lt;br /&gt;
Eine Kopie von ver1, die als ver2 oder unter ver2 als ver1 gespeichert wird erstellen:&lt;br /&gt;
&lt;br /&gt;
 xinux@zero:~$ cp -r ver1/ ver2/&lt;br /&gt;
&lt;br /&gt;
Eine Kopie von einer Datei erstellen und ihre Attribute beibehalten:&lt;br /&gt;
&lt;br /&gt;
 xinux@zero:~$ cp -p sux1 sux2&lt;br /&gt;
&lt;br /&gt;
Eine Kopie erstellen bei der die Links erhalten bleiben:&lt;br /&gt;
&lt;br /&gt;
 xinux@zero:~$ cp -r ver1/ ver2/&lt;br /&gt;
&lt;br /&gt;
Eine Kopie erstellen zum Archivieren (-dpr):&lt;br /&gt;
&lt;br /&gt;
 xinux@zero:~$ cp -a ver1/ ver2/&lt;br /&gt;
&lt;br /&gt;
===rm: Löschen einer Datei===&lt;br /&gt;
&lt;br /&gt;
Um Dateien zu löschen, brauchen wir das Kommando &amp;quot;rm&amp;quot;:&lt;br /&gt;
&lt;br /&gt;
 rm               dat1        dat1 wird gelöscht&lt;br /&gt;
 rm         -i    dat1        dat1 wird nach Bestätigung gelöscht&lt;br /&gt;
 rm         -f    dat1        dat1 wird ohne Rückfragen gelöscht&lt;br /&gt;
 rm         -v    dat1        dat1 wird glöscht (geschwätzige Ausgabe)&lt;br /&gt;
 rm         -r    ver1        Löschen von nicht leeren Verzeichnissen&lt;br /&gt;
                              Achtung !!! Als root kann man sich damit Teile&lt;br /&gt;
                              oder sogar den gesamten Verzeichnisbaum&lt;br /&gt;
                              absägen !!!&lt;br /&gt;
&lt;br /&gt;
===mv: Verschieben===&lt;br /&gt;
&lt;br /&gt;
Mit dem Befehl &amp;quot;mv&amp;quot; werden Daten verschoben, folgendes gilt:&lt;br /&gt;
&lt;br /&gt;
 mv          dat1 dat2         &lt;br /&gt;
Die Datei dat1 wird in dat2 umbenannt&lt;br /&gt;
 mv          dat1 /ver1        &lt;br /&gt;
Die Datei dat1 wird nach /ver1 verschoben&lt;br /&gt;
&lt;br /&gt;
Die Parameter und ihre Bedeutung:&lt;br /&gt;
&lt;br /&gt;
      -i                      wenn eine Datei exisitiert wird vor dem&lt;br /&gt;
                              Überschreiben nachgefragt&lt;br /&gt;
      -v                      verbose (geschwätzig)&lt;br /&gt;
      -u                      nur neuere Daten werden bei Bedarf überschrieben&lt;br /&gt;
      -b                      wenn überschrieben werden soll, wird ein Backup&lt;br /&gt;
                              erstellt&lt;br /&gt;
      -S ENDUNG               das Backup bekommt die Endung ENDUNG&lt;br /&gt;
&lt;br /&gt;
===su Benutzer wechseln===&lt;br /&gt;
&lt;br /&gt;
 su -             &lt;br /&gt;
Wechsel zum Rootaccount, wie wenn dieser sich neu anmelden würde. (Bsp: su -)&lt;br /&gt;
&lt;br /&gt;
 su Benutzernamen &lt;br /&gt;
Wechsel der Identität zu Benutzer (gegebenenfalls Passwortabfrage)&lt;br /&gt;
&lt;br /&gt;
 su -c Kommando   &lt;br /&gt;
Kommando wird als rootaccount ausgeführt&lt;br /&gt;
&lt;br /&gt;
==Der Standard Editor vi==&lt;br /&gt;
Der vi ist der Standardeditor in der Unixwelt. Er ist in jedem Unix-Derivat&lt;br /&gt;
enthalten.&lt;br /&gt;
Der Editor hat zwar den schlechten Ruf umständlich zu bedienen zu sein, ist&lt;br /&gt;
jedoch sehr leistungsfähig und systemübergreifend verfügbar. Beim vi handelt es&lt;br /&gt;
sich um einen rein textorientierten Editor, der mittels eigener Kommandos&lt;br /&gt;
gesteuert wird.&lt;br /&gt;
&lt;br /&gt;
Der Editor VIM ist eine weitere Verbesserung von VI und leichter zu bedienen.&lt;br /&gt;
Und unter Ubuntu/Debian mit &amp;quot;apt-get install vim&amp;quot; zu installieren.&lt;br /&gt;
&lt;br /&gt;
===Starten des Editors:===&lt;br /&gt;
&lt;br /&gt;
Der Editorstart erfolgt einfach durch die Eingabe des Kommandos vi mit dem&lt;br /&gt;
Dateinamen der zu editierenden Datei als Parameter.&lt;br /&gt;
Beispiel:        &lt;br /&gt;
 vi sux.txt&lt;br /&gt;
&lt;br /&gt;
===Die Betriebsmodi des vi:===&lt;br /&gt;
&lt;br /&gt;
Ein Umstand, der dem vi den Ruf der komplizierten Bedienbarkeit zugetragen hat,&lt;br /&gt;
sind die unterschiedlichen Betriebsmodi des Editors. Genauer gesagt verfügt der&lt;br /&gt;
vi über drei Betriebsmodi:&lt;br /&gt;
&lt;br /&gt;
====Kommandomodus:====&lt;br /&gt;
&lt;br /&gt;
Innerhalb dieses Modus werden die eingegebenen Zeichen direkt als Befehle des&lt;br /&gt;
Editors interpretiert und ausgeführt. Dabei gibt es weder ein Bereitschaftszeichen&lt;br /&gt;
(Prompt) noch ein Echo (Ausgabe). Der Kommandomodus ist der Modus, in dem&lt;br /&gt;
sich der vi direkt nach seinem Start befindet.&lt;br /&gt;
&lt;br /&gt;
====Zeilenmodus oder Exmodus:====&lt;br /&gt;
&lt;br /&gt;
Dieser Modus ist der einzige Modus mit einem eigenen Bereitschaftszeichen,&lt;br /&gt;
nämlich dem Doppelpunkt (:). Das Prompt wird ebenso wie die Befehlsausgaben&lt;br /&gt;
in der Statuszeile angezeigt.&lt;br /&gt;
&lt;br /&gt;
====Eingabemodus:====&lt;br /&gt;
&lt;br /&gt;
Der Eingabemodus ist derjenige, in welchem der zu bearbeitende Text bearbeitet&lt;br /&gt;
werden kann. Alle hier eingegebenen Zeichen werden als Text für die aktuelle&lt;br /&gt;
Datei interpretiert. Zwischen den unterschiedlichen Modi kann jederzeit&lt;br /&gt;
gewechselt werden. Von Kommandomodus gelangen Sie durch mehere Wege in&lt;br /&gt;
den Eingabemodus. Man kann durch folgende Aktionen wechslen&lt;br /&gt;
&lt;br /&gt;
{| border=1 cellpadding=2&lt;br /&gt;
|i&lt;br /&gt;
|Text vor der aktuellen Cursorposition einfügen&lt;br /&gt;
|-&lt;br /&gt;
|I&lt;br /&gt;
|Text am Zeilenanfang einfügen&lt;br /&gt;
|-&lt;br /&gt;
|a&lt;br /&gt;
|Text hinter der aktuellen Cursorposition einfügen&lt;br /&gt;
|-&lt;br /&gt;
|A&lt;br /&gt;
|Text am Zeilenende einfügen&lt;br /&gt;
|-&lt;br /&gt;
|o&lt;br /&gt;
|Unterhalb der aktuellen Zeile eine neue Zeile einfügen&lt;br /&gt;
|-&lt;br /&gt;
|O&lt;br /&gt;
|Oberhalb der aktuellen Zeile eine neue Zeile einfügen&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Durch das Drücken der ESC - Taste gelangt man in den Kommandomodus zurück.&lt;br /&gt;
&lt;br /&gt;
Im Kommandomodus können Sie durch den Text navigieren und auch den Text&lt;br /&gt;
selbst bearbeiten, z.B ausschneiden, kopieren usw. Dazu sind einige Kommandos&lt;br /&gt;
nötig, von denen die wichtigsten im Folgenden erläutert werden:&lt;br /&gt;
&lt;br /&gt;
 xinux@zero:/$ vi iwas.txt&lt;br /&gt;
&lt;br /&gt;
[[Image:vim.jpg]]&lt;br /&gt;
&lt;br /&gt;
===Benutzen des Kommandomodus===&lt;br /&gt;
====Steuerung des Cursors durch den Text====&lt;br /&gt;
&lt;br /&gt;
Mittels folgender Kommandos bewegt sich der Cursor durch den Text:&lt;br /&gt;
&lt;br /&gt;
{| border=1 cellpadding=2&lt;br /&gt;
|h&lt;br /&gt;
|Cursor ein Zeichen nach links&lt;br /&gt;
|-&lt;br /&gt;
|l&lt;br /&gt;
|Cursor ein Zeichen nach rechts&lt;br /&gt;
|-&lt;br /&gt;
|k&lt;br /&gt;
|Cursor eine Zeile nach oben&lt;br /&gt;
|-&lt;br /&gt;
|j&lt;br /&gt;
|Cursor eine Zeile nach unten&lt;br /&gt;
|-&lt;br /&gt;
|w&lt;br /&gt;
|Cursor ein Wort nach rechts&lt;br /&gt;
|-&lt;br /&gt;
|b&lt;br /&gt;
|Cursor ein Wort nach links&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Alle diese Kommandos können mit einem vorgestellten Wiederholungsfaktor&lt;br /&gt;
arbeiten. Der Befehl 3w verschiebt demnach den Cursor um 3 Wörter nach rechts.&lt;br /&gt;
&lt;br /&gt;
====Angaben zur Positionierung====&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{| border=1 cellpadding=2&lt;br /&gt;
|STRG+U&lt;br /&gt;
|1⁄2 Bildschirmseite nach oben&lt;br /&gt;
|-&lt;br /&gt;
|STRG+D&lt;br /&gt;
|1⁄2 Bildschirmseite nach unten&lt;br /&gt;
|-&lt;br /&gt;
|STRG+B&lt;br /&gt;
|1 Bildschirmseite nach oben&lt;br /&gt;
|-&lt;br /&gt;
|STRG+F&lt;br /&gt;
|1 Bildschirmseite nach unten&lt;br /&gt;
|-&lt;br /&gt;
|/Ausdruck&lt;br /&gt;
|Sucht den Ausdruck (vorwärts) Weitersuchen mit n , N&lt;br /&gt;
|-&lt;br /&gt;
|?Ausdruck&lt;br /&gt;
|Sucht den Ausdurck (rückwärts) Weitersuchen mit n , N&lt;br /&gt;
|-&lt;br /&gt;
|0&lt;br /&gt;
|Zeilenanfang&lt;br /&gt;
|-&lt;br /&gt;
|$&lt;br /&gt;
|Zeilenende&lt;br /&gt;
|-&lt;br /&gt;
|w&lt;br /&gt;
|Nächstes Wort&lt;br /&gt;
|-&lt;br /&gt;
|b&lt;br /&gt;
|Vorheriges Wort&lt;br /&gt;
|-&lt;br /&gt;
|fc&lt;br /&gt;
|Auf das Zeichen c springen. c steht für ein beliebiges Zeichen&lt;br /&gt;
|-&lt;br /&gt;
|G&lt;br /&gt;
|Letzte Zeile der Datei&lt;br /&gt;
|-&lt;br /&gt;
|ng&lt;br /&gt;
|n-te Zeile der Datei&lt;br /&gt;
|-&lt;br /&gt;
|H&lt;br /&gt;
|Anfang der Bildschirmseite&lt;br /&gt;
|-&lt;br /&gt;
|L&lt;br /&gt;
|Ende der Bildschirmseite&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
====Befehle zur Textbearbeitung -&amp;gt; Was soll geschehen====&lt;br /&gt;
&lt;br /&gt;
{| Border=1 Cellpadding=2&lt;br /&gt;
|x&lt;br /&gt;
|Löscht Zeichen&lt;br /&gt;
|-&lt;br /&gt;
|d&lt;br /&gt;
|Löschen und in den Puffer laden&lt;br /&gt;
|-&lt;br /&gt;
|c&lt;br /&gt;
|Ändern&lt;br /&gt;
|-&lt;br /&gt;
|y&lt;br /&gt;
|In den Puffer laden&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
====Weitere wichtige Befehle:====&lt;br /&gt;
&lt;br /&gt;
{| Border=1 Cellpadding=2&lt;br /&gt;
|p&lt;br /&gt;
|Aus dem Puffer einfügen&lt;br /&gt;
|-&lt;br /&gt;
|u&lt;br /&gt;
|Undo, macht den letzten Befehl rückgängig&lt;br /&gt;
|-&lt;br /&gt;
|STRG+R&lt;br /&gt;
|Redo, macht den letzten Undo rückgängig&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
===Zeilen- oder Exmodus===&lt;br /&gt;
&lt;br /&gt;
Wie schon erwähnt wird der Zeilen oder Exmodus durch einen : eingeleitet.&lt;br /&gt;
Es folgen einige Beispiele.&lt;br /&gt;
&lt;br /&gt;
Befehle zum Speichern und Beenden:&lt;br /&gt;
&lt;br /&gt;
 :w          Schreibt Datei&lt;br /&gt;
 :w Datei2   Schreibt eine Kopie in Datei2&lt;br /&gt;
 :w !        Schreibt Datei (übergehe Schreibschutz)&lt;br /&gt;
 :w ! Datei2 Schreibt eine Kopie in Datei2 (übergehe Schreibschutz)&lt;br /&gt;
 :q          Schließe Datei&lt;br /&gt;
 :q!         Schließe Datei (verwerfe Änderungen)&lt;br /&gt;
 :wq         Schreibe Datei und beende Editor&lt;br /&gt;
 :wq!        Schreibe Datei und beende Editor (übergehe Schreibschutz)&lt;br /&gt;
 :q!         Schließe Datei (verwerfe Änderungen)&lt;br /&gt;
 :h          Hilfe anzeigen, durch drücken von :q Beenden der Hilfe&lt;br /&gt;
 :e Datei3   Editiere Datei3&lt;br /&gt;
 :e #        Editere vorhergehende Datei&lt;br /&gt;
 :1,3co9     Kopiere von der ersten bis zu dritten Zeile &lt;br /&gt;
             und füge den Inhalt unterhalb der neunte Zeile ein.&lt;br /&gt;
&lt;br /&gt;
Interaktionen mit Unix:&lt;br /&gt;
&lt;br /&gt;
 :r Datei4   Fügt Inhalt der Datei4 nach dem Cursor ein&lt;br /&gt;
 :r ! Befehl Fügt Ausgabe des Befehls nach dem Cursor ein&lt;br /&gt;
 :! Befehl   Führt den Befehl aus&lt;br /&gt;
 :sh         Starte Subshell -&amp;gt; mit exit kehrt man wieder zurück&lt;br /&gt;
             Eingabemodus zurück&lt;br /&gt;
&lt;br /&gt;
====Ersetzen von Textteilen====&lt;br /&gt;
&lt;br /&gt;
Die grundsätzliche Syntax lautet:&lt;br /&gt;
&lt;br /&gt;
 :[Zeilennummer,Zeilennummer]s/Muster/Ersetzung/[gc]&lt;br /&gt;
&lt;br /&gt;
 :s/worf/kirn/              der erste worf wird in der aktuellen Zeile durch kirn ersetzt&lt;br /&gt;
 :1,9s/worf/kirn/g          von der 1. bis zur 9. Zeile werden alle worf durch kirn ersetzt&lt;br /&gt;
 :1,$s/worf/kirn/           von der ersten bis zur letzten Zeile ersetze ersten worf durch&lt;br /&gt;
                            kirn&lt;br /&gt;
 :.,$s/worf/kirn/g          von der aktuellen bis zur letzten Zeile ersetze alle worf durch&lt;br /&gt;
                            kirn&lt;br /&gt;
 :1,.s/worf/kirn/c          von der 1. bis zur aktuellen Zeile ersetze worf durch kirn, frage&lt;br /&gt;
                            aber nach&lt;br /&gt;
 :1,$s/^worf/kirn/          von der ersten bis zur letzten Zeile ersetze worf am&lt;br /&gt;
                            Zeilenanfang durch kirn&lt;br /&gt;
 :4,$s/worf$/kirn/          von der 4. bis zur letzten Zeile ersetze worf am Zeilenende&lt;br /&gt;
                            durch kirn&lt;br /&gt;
 :1,$s/^#//                 lösche alle Kommentarzeichen&lt;br /&gt;
 :1,$s/^.orf/kirn/           ersetze alles was am Zeilenanfang ein beliebiges Zeichen hat&lt;br /&gt;
                            gefolgt von einem orf durch kirn&lt;br /&gt;
 :1,$s/^[A-Z]orf/kirn/g     suche nach einem Großbuchstaben am Anfang der Zeile&lt;br /&gt;
                            gefolgt von einem orf und ersetze durch kirn&lt;br /&gt;
 :1,$s/^M[ae][iy]e*r/kirn/  suche alles, was am Anfang der Zeile ein großes M enthält,&lt;br /&gt;
                            gefolgt von einem a oder e , gefolgt von einem i oder y ,&lt;br /&gt;
                            gefolgt von einem e , welches 0 oder N mal vorkommen kann,&lt;br /&gt;
                            gefolgt von einem r und ersetze es durch kirn&lt;br /&gt;
&lt;br /&gt;
==Reguläre Ausdrücke==&lt;br /&gt;
&lt;br /&gt;
{| Border=1 Cellpadding=2&lt;br /&gt;
|c&lt;br /&gt;
|Ein einzelner Buchstabe passt auf sich selbst&lt;br /&gt;
|-&lt;br /&gt;
|.&lt;br /&gt;
|Ein Punkt passt auf jedes Zeichen außer auf das Zeilenende&lt;br /&gt;
|-&lt;br /&gt;
|*&lt;br /&gt;
|Das dem Operator * vorangehende Muster kann 0 oder öfter vorkommen&lt;br /&gt;
|-&lt;br /&gt;
|^&lt;br /&gt;
|(Caret) passt auf den Zeilenanfang&lt;br /&gt;
|-&lt;br /&gt;
|$&lt;br /&gt;
|Passt auf das Zeilenende&lt;br /&gt;
|-&lt;br /&gt;
|\&lt;br /&gt;
|Das folgende Sonderzeichen wird entwertet&lt;br /&gt;
|-&lt;br /&gt;
|[...]&lt;br /&gt;
|Passt auf &amp;quot;genau&amp;quot; eins in [...] angebenen Zeichen&lt;br /&gt;
|-&lt;br /&gt;
|[^...]&lt;br /&gt;
|Passt auf &amp;quot;genau&amp;quot; ein Zeichen welches nicht in [...] angebenen ist&lt;br /&gt;
|-&lt;br /&gt;
|\&amp;lt;&lt;br /&gt;
|Passt auf den Wortanfang&lt;br /&gt;
|-&lt;br /&gt;
|\&amp;gt;&lt;br /&gt;
|Passt auf das Wortende&lt;br /&gt;
|-&lt;br /&gt;
|\+&lt;br /&gt;
|Das dem Operator \+ vorangehende Muster kann 1 oder öfter vorkommen&lt;br /&gt;
|-&lt;br /&gt;
|&amp;amp;&lt;br /&gt;
|Setzt das gefunden Suchmuster ein&lt;br /&gt;
|-&lt;br /&gt;
|\(...\)&lt;br /&gt;
|Speichert den Text auf den das Suchmuster passt zur späteren Verwendung&lt;br /&gt;
|-&lt;br /&gt;
|\n&lt;br /&gt;
|Setzt das vorangehende, mit \(...\) Gefundene wieder ein&lt;br /&gt;
|-&lt;br /&gt;
|(...)&lt;br /&gt;
|Gruppiert Auswahlmöglichkeiten&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;nowiki&amp;gt;|&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
|Trennt Auswahlmöglichkeiten&lt;br /&gt;
|-&lt;br /&gt;
|\b&lt;br /&gt;
|Passt auf den Anfang oder das Ende eines Wortes&lt;br /&gt;
|-&lt;br /&gt;
|\B&lt;br /&gt;
|Symbolisiert den Raum innerhalb eines Wortes&lt;br /&gt;
|-&lt;br /&gt;
|\w&lt;br /&gt;
|Passt auf alle alphanumerischen Zeichen [A-Za-z0-9]&lt;br /&gt;
|-&lt;br /&gt;
|\W&lt;br /&gt;
|Passt auf alle nichtalphanumerischen Zeichen [^A-Za-z0-9]&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Die Rangfolge der Operatoren(von der höchsten zur niedrigsten)&lt;br /&gt;
:(, ), ?, *, + | .&lt;br /&gt;
&lt;br /&gt;
Die anderen Operatoren sind mit den anderen Buchstaben gleichrangig.&lt;br /&gt;
&lt;br /&gt;
===Beispiel zum Suchen===&lt;br /&gt;
&lt;br /&gt;
 Suchmuster               Passt auf&lt;br /&gt;
 ^Tuxer                   Tuxer am Zeilenanfang&lt;br /&gt;
 [tT]uxer                 Tuxer oder tuxer&lt;br /&gt;
 80[23]?86                8086, 80286 oder 80386&lt;br /&gt;
&lt;br /&gt;
===grep===&lt;br /&gt;
&lt;br /&gt;
Mit grep ist es möglich, in Dateien nach regulären Ausdrücken zu suchen. Wenn&lt;br /&gt;
eine Übereinstimmung gefunden wird, wird die komplette Zeile auf die&lt;br /&gt;
Standardausgabe geschrieben. grep kann auch von STDIN lesen.Es ist&lt;br /&gt;
empfehlenswert, sich anzugwöhnen ,das Suchmuster in Anführungszeichen zu&lt;br /&gt;
schreiben. Es gibt 3 Arten fgrep = fastgrep , grep und egrep egrep&lt;br /&gt;
&lt;br /&gt;
Beispiel:&lt;br /&gt;
&lt;br /&gt;
 root@zero:~# cat text&lt;br /&gt;
 quatsch&lt;br /&gt;
 quatsch&lt;br /&gt;
 quatsch&lt;br /&gt;
 wichtig&lt;br /&gt;
 quatsch&lt;br /&gt;
 root@zero:~# grep wichtig text&lt;br /&gt;
 wichtig&lt;br /&gt;
 root@zero:~# &lt;br /&gt;
&lt;br /&gt;
 -c                   meldet nur die Gesamtzahl der Fundstellen&lt;br /&gt;
 -v                   zeigt nur Zeilen, die »Ausdruck« nicht enthalten&lt;br /&gt;
 -i                   ignoriert Groß- und Kleinschreibung&lt;br /&gt;
 -l                    meldet nur Dateinamen mit Fundstellen&lt;br /&gt;
 -n                   listet Zeilennummern zu jeder Fundstelle&lt;br /&gt;
 -f                   Dateiname »Dateiname« enthält die Such-Ausdrücke&lt;br /&gt;
 -E                   ist ein erweiterter regulärer Ausdruck (egrep)&lt;br /&gt;
 -F                   (Muster, Ausdruck) ist ein Muster (String) (fgrep)&lt;br /&gt;
 -b                   listet auch die Position der Fundstellen&lt;br /&gt;
 -C    Anzahl         Anzahl von Zeilen werden nach der Fundstelle ausgegeben&lt;br /&gt;
 -B    Anzahl         Anzahl von Zeilen werden vor der Fundstelle ausgegeben&lt;br /&gt;
 -r                   Durchsucht Verzeichnisse rekursiv&lt;br /&gt;
&lt;br /&gt;
==Useridendifikation==&lt;br /&gt;
===/etc/passwd===&lt;br /&gt;
====Beschreibung====&lt;br /&gt;
passwd ist eine ASCII-Datei, die eine Liste der Benutzer des Systems und deren&lt;br /&gt;
Passwörter enthält. Die Passwortdatei sollte für alle Benutzer lesbar sein, was für&lt;br /&gt;
dieVerschlüsselung notwendig ist; aber nur vom Superuser beschreibbar. Wenn&lt;br /&gt;
Sie eine neue Kennung einrichten, lassen Sie das Passwort-Feld in der Datei frei&lt;br /&gt;
und benutzen Sie passwd(1), um dem System ein Passwort für die neue Kennung&lt;br /&gt;
mitzuteilen.&lt;br /&gt;
&lt;br /&gt;
Die Datei /etc/passwd enthält einen Eintrag pro Zeile mit dem Format:&lt;br /&gt;
login_name:passwd:UID:GID:user_name:directory:shell&lt;br /&gt;
====Die Bedeutung der Felder:====&lt;br /&gt;
# login_name Kennung des Benutzers auf dem System.&lt;br /&gt;
# password   Hier steht bei Shadowsystemen ein x. Die Passwörter sind in der Datei /etc/shadow&lt;br /&gt;
# UID        Die numerische Benutzernummer.&lt;br /&gt;
#  GID        Die numerische Gruppennummer des Benutzers.&lt;br /&gt;
# user_name Ein optionales Kommentarfeld, oft benutzt für den vollen Namen des Benutzers und weitere Informationen (Telefon, Raum-Nummer etc.).&lt;br /&gt;
# directory  Das Heimatverzeichnis $HOME des Benutzers.&lt;br /&gt;
# shell      Das Programm, das beim Einloggen gestartet werden soll (falls nicht nötig, benutzen Sie /bin/bash).&lt;br /&gt;
&lt;br /&gt;
===/etc/group===&lt;br /&gt;
====Beschreibung====&lt;br /&gt;
etc/group ist eine ASCII Datei, die Gruppen definiert, zu denen Benutzer&lt;br /&gt;
gehören. Es gibt nur einen Eintrag pro Zeile; jede Zeile hat folgendes Format:&lt;br /&gt;
         GruppenName:Passwort:GruppenKennung:BenutzerListe&lt;br /&gt;
Beschreibung der Felder:&lt;br /&gt;
#     GruppenName      Die Bezeichnung der Gruppe.&lt;br /&gt;
#     Passwort         Das (verschlüsselte) Gruppen-Passwort. Wenn dieses Feld leer ist, wird kein Passwort benötigt.&lt;br /&gt;
#     GruppenKennung Die numerische Identifikation der Gruppe.&lt;br /&gt;
#     BenutzerListe    Alle Namen der Mitglieder, getrennt durch Kommas.&lt;br /&gt;
&lt;br /&gt;
===/etc/shadow===&lt;br /&gt;
====Beschreibung====&lt;br /&gt;
shadow beinhaltet Informationen zu den verschlüsselten Passwörten, zu den&lt;br /&gt;
Benutzerzugängen und weitere Informationen zur Laufzeit der Passwörter.&lt;br /&gt;
 Name:Passwort:Letzte Änderung:Mintage:Maxtage:Warntage:Inaktiv:Ablauf&lt;br /&gt;
#    Der Loginname&lt;br /&gt;
#    verschlüsseltes Passwort &lt;br /&gt;
&amp;lt;nowiki&amp;gt;*&amp;lt;/nowiki&amp;gt; bedeutet Benutzer kann sich nicht einlogen&lt;br /&gt;
! bedeutet Benutzer hat kein Passwort gesetzt&lt;br /&gt;
#    Tage seit dem 1 Januar 1970 an dem das Passwort letztmals geändert wurde&lt;br /&gt;
#    Tage, die das Passwort behalten werden muss, bevor es wieder geändert werden kann&lt;br /&gt;
#     Die Anzahl der Tage, nach denen der Benutzer das Passwort wieder ändern muss&lt;br /&gt;
#    Anzahl der Tage bevor das Passwort abläuft und der Benutzer gewarnt wird&lt;br /&gt;
#    Wenn der Zugang diese Anzahl von Tagen nicht benutzt wird, wird der Zugang gesperrt&lt;br /&gt;
#    Tag seit dem 1 Januar 1970, an dem der Zugang gesperrt wird&lt;br /&gt;
#    Reserviertes Feld&lt;br /&gt;
&lt;br /&gt;
Die Datei sollte aus Sicherheitgründen nicht für einen normalen Benutzer lesbar&lt;br /&gt;
sein.&lt;br /&gt;
&lt;br /&gt;
==Programme zur Userverwaltung==&lt;br /&gt;
===useradd===&lt;br /&gt;
User anlegen&lt;br /&gt;
 root@zero:~# useradd -m -u 1011 -g users -G admin -d /home/erwin -s /bin/bash -c &amp;quot;Erwin Lehman&amp;quot;  erwin&lt;br /&gt;
{| border=1 cellpadding=2&lt;br /&gt;
|&amp;quot;-m&amp;quot;&lt;br /&gt;
|Lege Homedirectory an&lt;br /&gt;
|-&lt;br /&gt;
|&amp;quot;-u 1011&amp;quot;&lt;br /&gt;
|Userid wird zugeordnet&lt;br /&gt;
|-&lt;br /&gt;
|&amp;quot;-g users&amp;quot;&lt;br /&gt;
|Primäre Gruppe wird zugeordnet&lt;br /&gt;
|-&lt;br /&gt;
|&amp;quot;-G admin&amp;quot;&lt;br /&gt;
|Sekunbdäre Gruppe wird zugeordnet&lt;br /&gt;
|-&lt;br /&gt;
|&amp;quot;-d /home/erwin/&amp;quot;&lt;br /&gt;
|Name des Homedirectory&lt;br /&gt;
|-&lt;br /&gt;
|&amp;quot;-s /bin/bash&amp;quot;&lt;br /&gt;
|Bash wird zugeordnet&lt;br /&gt;
|- &lt;br /&gt;
|&amp;quot;-c Erwin Lehman&amp;quot;&lt;br /&gt;
|Kommentarfeld&lt;br /&gt;
|-&lt;br /&gt;
|&amp;quot;erwin&amp;quot; &lt;br /&gt;
|Name des Users&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Defaulteinstellungen anzeigen&lt;br /&gt;
 root@zero:~# useradd -D&lt;br /&gt;
 GROUP=100&lt;br /&gt;
 HOME=/home&lt;br /&gt;
 INACTIVE=-1&lt;br /&gt;
 EXPIRE=&lt;br /&gt;
 SHELL=/bin/sh&lt;br /&gt;
 SKEL=/etc/skel&lt;br /&gt;
 CREATE_MAIL_SPOOL=no&lt;br /&gt;
&lt;br /&gt;
Defaulteinstellungen ändern&lt;br /&gt;
 useradd -D -s /bin/bash&lt;br /&gt;
&lt;br /&gt;
Konfigurationsdatei&lt;br /&gt;
 root@zero:~# cat /etc/default/useradd &lt;br /&gt;
 SHELL=/bin/bash&lt;br /&gt;
 GROUP=100&lt;br /&gt;
 HOME=/home&lt;br /&gt;
 INACTIVE=-1&lt;br /&gt;
 EXPIRE=&lt;br /&gt;
 SKEL=/etc/skel&lt;br /&gt;
 CREATE_MAIL_SPOOL=no&lt;br /&gt;
&lt;br /&gt;
===usermod===&lt;br /&gt;
User modifizieren&lt;br /&gt;
 root@zero:~# usermod -l fritz -s /bin/sh -G admin,video erwin&lt;br /&gt;
{| border=1 cellpadding=2&lt;br /&gt;
|&amp;quot;-l fritz&amp;quot;&lt;br /&gt;
|Neuer Username&lt;br /&gt;
|-&lt;br /&gt;
|&amp;quot;-s /bin/sh&amp;quot;&lt;br /&gt;
|Neue Shell&lt;br /&gt;
|-&lt;br /&gt;
|&amp;quot;-G admin, video&amp;quot;&lt;br /&gt;
|Sekunbdäre Gruppen werden zugeordnet&lt;br /&gt;
|-&lt;br /&gt;
|&amp;quot;erwin&amp;quot; &lt;br /&gt;
|Name des Users&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
===userdel===&lt;br /&gt;
User inklusive Homedirectory löschen&lt;br /&gt;
 root@zero:~# userdel -r fritz&lt;br /&gt;
&lt;br /&gt;
===passwd===&lt;br /&gt;
Rootpasswort ändern&lt;br /&gt;
 root@zero:~# passwd &lt;br /&gt;
 Geben Sie ein neues UNIX Passwort ein:'''sysadm''' &lt;br /&gt;
 Geben Sie das neue UNIX Passwort erneut ein:'''sysadm''' &lt;br /&gt;
 passwd: Passwort erfolgreich geändert&lt;br /&gt;
&lt;br /&gt;
Passwort von tux ändern&lt;br /&gt;
 root@zero:~# passwd tux&lt;br /&gt;
 Geben Sie ein neues UNIX Passwort ein:'''suxer''' &lt;br /&gt;
 Geben Sie das neue UNIX Passwort erneut ein:'''suxer'''&lt;br /&gt;
 passwd: Passwort erfolgreich geändert&lt;br /&gt;
&lt;br /&gt;
Minimale und Maximale Gültigkeit des Passwortes von tux festlegen&lt;br /&gt;
 root@zero:~# passwd -n 5 -x 120 tux&lt;br /&gt;
&lt;br /&gt;
===groupadd===&lt;br /&gt;
 root@zero:~# groupadd -f -g 2001 xinuxer&lt;br /&gt;
{| border=1 cellpadding=2&lt;br /&gt;
|&amp;quot;-f&amp;quot;&lt;br /&gt;
|Überschreibe bestehende Gruppe&lt;br /&gt;
|-&lt;br /&gt;
|&amp;quot;-g 2001&amp;quot;&lt;br /&gt;
|GID der Gruppe&lt;br /&gt;
|-&lt;br /&gt;
|&amp;quot;xinuxer&amp;quot; &lt;br /&gt;
|Name des Gruppe&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==chmod==&lt;br /&gt;
Die Syntax des Befehls chmod lautet:&lt;br /&gt;
&lt;br /&gt;
'''chmod''' WerWieWas [,WerWieWas,.....] Dateiliste&lt;br /&gt;
&lt;br /&gt;
oder&lt;br /&gt;
&lt;br /&gt;
'''chmod''' Oktalzahl Dateiliste&lt;br /&gt;
&lt;br /&gt;
Durch WerWieWas bzw. Oktalzahl wird die Rechtetabelle definiert. Innerhalb von&lt;br /&gt;
WerWieWas darf es kein Leerzeichen geben. Wer bezeichnet den Benutzerkreis,&lt;br /&gt;
dem man Rechte gibt, Wie die Art, in der die Rechte gegeben werden und Was die&lt;br /&gt;
Rechte als solche. Im einzelnen können folgende Kürzel benutzt werden:&lt;br /&gt;
&lt;br /&gt;
Für Wer kann eines der folgenden Kürzel oder eine Kombination davon stehen:&lt;br /&gt;
 u                   (user) Rechte für den Dateibesitzer&lt;br /&gt;
 g                   (group) Rechte für die Gruppe&lt;br /&gt;
 o                   (others) Rechte für alle anderen Benutzer&lt;br /&gt;
 a                   (all) Rechte für alle Benutzer&lt;br /&gt;
Für Wie steht eines der folgenden Kürzel:&lt;br /&gt;
 +                   Die Rechte werden zu den vorhandenen zusätzlich vergeben&lt;br /&gt;
 -                   Die im Folgenden genannten Rechte werden entzogen&lt;br /&gt;
 =                   Die im Folgenden genannten Rechte ersetzen die bisherigen&lt;br /&gt;
Für Was steht eines der folgenden Kürzel:&lt;br /&gt;
 r                   (read) lesen&lt;br /&gt;
 w                   (write) schreiben&lt;br /&gt;
 x                   (execute) ausführen&lt;br /&gt;
oder diese Sonderformen&lt;br /&gt;
 s                   (usersbit) Programm läuft unter der UID des Besitzers&lt;br /&gt;
 s                   (groupsbit)Programm läuft unter der GID des GRUPPE&lt;br /&gt;
 t                   (stickybit) Dateien im Verzeichnis darf nur Besitzer löschen&lt;br /&gt;
&lt;br /&gt;
===Beispiel===&lt;br /&gt;
Setze für alle Schreib- und Leserecht&lt;br /&gt;
 xinux@zero:~$ chmod a=rw test &lt;br /&gt;
 xinux@zero:~$ ls -l test &lt;br /&gt;
 -rw-rw-rw- 1 xinux xinux 0 2009-06-16 12:01 test&lt;br /&gt;
 xinux@zero:~$ &lt;br /&gt;
&lt;br /&gt;
Erteile Besitzer Ausführungsrecht&lt;br /&gt;
 xinux@zero:~$ chmod u+x test ; ls -l test &lt;br /&gt;
 -rwxrw-rw- 1 xinux xinux 0 2009-06-16 12:01 test&lt;br /&gt;
 xinux@zero:~$ &lt;br /&gt;
&lt;br /&gt;
===chmod oktale Schreibweise===&lt;br /&gt;
 Specialrights        User           Group         Other&lt;br /&gt;
 usbit gsbit sticky    r    w   x     r   w   x     r   w   x&lt;br /&gt;
   1     1      1      1    1   1     1   1   1     1   1   1&lt;br /&gt;
   0     0      0      0    0   0     0   0   0     0   0   0&lt;br /&gt;
 Oktale Wertigkeit pro Recht&lt;br /&gt;
   4     2       1     4    2   1     4   2   1     4   2   1&lt;br /&gt;
&lt;br /&gt;
===Beispiele===&lt;br /&gt;
 xinux@zero:~$ chmod 751 test ; ls -l test&lt;br /&gt;
 -rwxr-x--x 1 xinux xinux 0 2009-06-16 12:01 test&lt;br /&gt;
 xinux@zero:~$ &lt;br /&gt;
&lt;br /&gt;
 xinux@zero:~$ chmod 4770 test ; ls -l test&lt;br /&gt;
 -rwsrwx--- 1 xinux xinux 0 2009-06-16 12:01 test&lt;br /&gt;
 xinux@zero:~$ &lt;br /&gt;
&lt;br /&gt;
 xinux@zero:~$ chmod 0 test ; ls -l test &lt;br /&gt;
 ---------- 1 xinux xinux 0 2009-06-16 12:01 test&lt;br /&gt;
&lt;br /&gt;
===chmod Optionen===&lt;br /&gt;
 -c   (changes) es werden nur die Dateien angezeigt, deren Zugriffsrechte tatsächlich verändert werden&lt;br /&gt;
 -f   (silent, quiet) Fehlermeldungen wegen fehlgeschlagener Änderungsversuche werden unterdrückt&lt;br /&gt;
 -v   (verbose) alle Aktionen werden angezeigt&lt;br /&gt;
 -R   (recursive) die Zugriffsrechte aller Dateien in den Unterverzeichnissen werden ebenfalls geändert&lt;br /&gt;
&lt;br /&gt;
Theoretisch sind alle Kombinationen der Zugriffsrechte denkbar, aber der&lt;br /&gt;
Eigentümer einer Datei darf diese immer lesen, selbst wenn das Lesebit nicht&lt;br /&gt;
gesetzt ist. Genauso macht es wenig Sinn, eine gewöhnliche Textdatei als&lt;br /&gt;
ausführbar zu setzen; die Shell wird damit nichts anfangen können. Ein x für ein&lt;br /&gt;
Verzeichnis gibt an, dass in dieses gewechselt werden kann.&lt;br /&gt;
&lt;br /&gt;
Rechte sind verbindlich&lt;br /&gt;
&lt;br /&gt;
Interessant ist auch ein Konstrukt folgender Art&lt;br /&gt;
 -rwx---rwx&lt;br /&gt;
&lt;br /&gt;
das angibt, dass mit der Datei alles angestellt werden kann, außer durch Nutzer der&lt;br /&gt;
Gruppe. Versucht irgend jemand, der nicht der Gruppe des Eigentümers angehört,&lt;br /&gt;
die Datei zu modifizieren, wird ihm dies gelingen, einem Gruppenmitglied bleibt&lt;br /&gt;
dies versagt, obwohl er ja gleichzeitig ein &amp;quot;Anderer&amp;quot; ist. D.h. die Rechte der&lt;br /&gt;
Gruppe sind verbindlicher, als die Rechte der anderen!&lt;br /&gt;
&lt;br /&gt;
===Bedeutungen der Zugriffsarten===&lt;br /&gt;
====Dateien====&lt;br /&gt;
* r: Der Inhalt der Datei kann gelesen und damit auch kopiert werden. &lt;br /&gt;
 root@zero:~# cat test&lt;br /&gt;
 Dies ist eine Testdatei&lt;br /&gt;
  &lt;br /&gt;
 root@zero:~# cp test backup&lt;br /&gt;
&lt;br /&gt;
* w: Der Inhalt der Datei darf verändert werden. Ob die Datei gelöscht werden kann ist&lt;br /&gt;
keine Eigenschaft der Datei, sondern des Verzeichnisses, indem sich die Datei befindet.&lt;br /&gt;
 root@zero:~# cat &amp;gt; test&lt;br /&gt;
 Hier steht jetzt was anderes&lt;br /&gt;
 ^C&lt;br /&gt;
 root@zero:~# cat test&lt;br /&gt;
 Hier steht jetzt was anderes&lt;br /&gt;
  &lt;br /&gt;
 xinux@zero:~$ ls -ld verzeichnis/&lt;br /&gt;
 dr-xr-xr-x 2 xinux xinux 4096 2009-06-18 11:16 verzeichnis/&lt;br /&gt;
 xinux@zero:~/verzeichnis$ rm text&lt;br /&gt;
 rm: Entfernen von „text“ nicht möglich: Permission denied&lt;br /&gt;
&lt;br /&gt;
* x: Ausführrecht für Programme und Skripte&lt;br /&gt;
 xinux@zero:~$ ./programm&lt;br /&gt;
 -bash: ./programm: Permission denied&lt;br /&gt;
 xinux@zero:~$ chmod +x programm&lt;br /&gt;
 xinux@zero:~$ ./programm&lt;br /&gt;
 Test&lt;br /&gt;
  test&lt;br /&gt;
&lt;br /&gt;
====Verzeichnisse====&lt;br /&gt;
* r: Die Einträge in dem Verzeichnis sind lesbar.&lt;br /&gt;
Leserecht von verzeichnis/ entziehen&lt;br /&gt;
 xinux@zero:~$ chmod a-r verzeichnis/&lt;br /&gt;
 xinux@zero:~$ ls verzeichnis/&lt;br /&gt;
 ls: Öffnen von Verzeichnis verzeichnis/ nicht möglich: Permission denied&lt;br /&gt;
Leserecht für Benutzer und Gruppe vergeben&lt;br /&gt;
 xinux@zero:~$ chmod a+r verzeichnis/&lt;br /&gt;
 xinux@zero:~$ ls verzeichnis/&lt;br /&gt;
 text&lt;br /&gt;
&lt;br /&gt;
* w: Die Einträge in dem Verzeichnis können geändert werden. &lt;br /&gt;
Neue Datei erstellen&lt;br /&gt;
 xinux@zero:~$ touch neu&lt;br /&gt;
 xinux@zero:~$ ls neu&lt;br /&gt;
 neu&lt;br /&gt;
&lt;br /&gt;
Datei löschen&lt;br /&gt;
 xinux@zero:~$ rm neu&lt;br /&gt;
 xinux@zero:~$ ls neu&lt;br /&gt;
 ls: Zugriff auf neu nicht möglich: No such file or directory&lt;br /&gt;
&lt;br /&gt;
* x: Der Name des Verzeichnisses kann in einem Pfadnamen erscheinen.&lt;br /&gt;
Verzeichnis ohne x Recht&lt;br /&gt;
 xinux@zero:~$ chmod a-x verzeichnis/&lt;br /&gt;
Wechseln in Verzeichnis mangels x-Recht nicht möglich&lt;br /&gt;
 xinux@zero:~$ cd verzeichnis/&lt;br /&gt;
 -bash: cd: verzeichnis/: Permission denied&lt;br /&gt;
x-Recht vergeben&lt;br /&gt;
 xinux@zero:~$ chmod a+x verzeichnis/&lt;br /&gt;
damit Wechsel in Verzeichnis möglich&lt;br /&gt;
 xinux@zero:~$ cd verzeichnis/&lt;br /&gt;
 xinux@zero:~/verzeichnis$ pwd&lt;br /&gt;
 /home/xinux/verzeichnis&lt;br /&gt;
&lt;br /&gt;
====umask====&lt;br /&gt;
Neue Dateien und Verzeichnisse werden mit ein und denselben Zufriffsrechten erzeugt.&lt;br /&gt;
 xinux@zero:~$ mkdir text&lt;br /&gt;
 xinux@zero:~$ touch textdat&lt;br /&gt;
 xinux@zero:~$ ls -ld text*&lt;br /&gt;
 drwxr-xr-x 2 xinux xinux 4096 2009-06-18 11:37 text&lt;br /&gt;
 -rw-r--r-- 1 xinux xinux    0 2009-06-18 11:37 textdat&lt;br /&gt;
&lt;br /&gt;
Zuständig für dieses Verhalten ist die sogenannte umask, die oft in der Datei&lt;br /&gt;
/etc/profile auf den Wert 022 voreingestellt ist. Zusätzlich wird noch eine&lt;br /&gt;
Maximalmaske benötigt, die sich für Verzeichnisse und andere Dateien&lt;br /&gt;
unterscheidet. Die bei der Erzeugung gesetzten Rechte entstehen nun, indem von&lt;br /&gt;
der Maximalmaske der durch die umask vorgegebene Wert subtrahiert wird:&lt;br /&gt;
&lt;br /&gt;
{| border=1 cellpadding=2&lt;br /&gt;
!&lt;br /&gt;
! Dateien&lt;br /&gt;
! Verzeichnisse&lt;br /&gt;
|-&lt;br /&gt;
| Systemvorgabe&lt;br /&gt;
| 666&lt;br /&gt;
| 777&lt;br /&gt;
|-&lt;br /&gt;
| -umask&lt;br /&gt;
| 022&lt;br /&gt;
| 022&lt;br /&gt;
|-&lt;br /&gt;
| Ergebnis&lt;br /&gt;
| 644&lt;br /&gt;
| 755&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
 xinux@zero:~$ grep umask /etc/profile&lt;br /&gt;
 umask 022&lt;br /&gt;
&lt;br /&gt;
==Gruppenzugehörigkeit==&lt;br /&gt;
===newgrp===&lt;br /&gt;
Ändert die Gruppenzugehörigkeit eines Benutzers auf die angegebene Gruppe. Wenn keine Gruppe angegeben wird, wird die &lt;br /&gt;
Anmeldegruppe des Benutzers verwendet. Die neue Gruppe wird anschließend fü Zugriffskontrollen verwendet.&lt;br /&gt;
&lt;br /&gt;
 newgrp Gruppenname&lt;br /&gt;
&lt;br /&gt;
 root@zero:~# newgrp hacker&lt;br /&gt;
 root@zero:~# id&lt;br /&gt;
 uid=0(root) gid=1006(hacker) Gruppen=0(root),1006(hacker)&lt;br /&gt;
&lt;br /&gt;
===chgrp===&lt;br /&gt;
Verändert die Besitzugehörigkeit zu der angegebenen Gruppe&lt;br /&gt;
&lt;br /&gt;
 chgrp [Optionen] Gruppe Datei(en)&lt;br /&gt;
&lt;br /&gt;
Optionen:&lt;br /&gt;
 -c Zeigt Veränderungen an&lt;br /&gt;
 -f Unterdrückt die meisten Fehlermeldungen&lt;br /&gt;
 -R Verändert Dateien und Verzeichnisse rekursiv&lt;br /&gt;
 -v Gibt geschwätzige Ausgabe aus.&lt;br /&gt;
&lt;br /&gt;
 root@zero:~# ls -l&lt;br /&gt;
 ...&lt;br /&gt;
 d-wx--x--x  3 root root 4096 2009-06-18 13:34 verzeichnis&lt;br /&gt;
 &lt;br /&gt;
 root@zero:~# chgrp -R xinux verzeichnis/&lt;br /&gt;
 root@zero:~# ls -l&lt;br /&gt;
 ...&lt;br /&gt;
 d-wx--x--x  3 root xinux 4096 2009-06-18 13:34 verzeichnis&lt;br /&gt;
&lt;br /&gt;
 xinux@zero:~$ cd /root/verzeichnis/&lt;br /&gt;
 xinux@zero:/root/verzeichnis$ pwd&lt;br /&gt;
 /root/verzeichnis&lt;br /&gt;
&lt;br /&gt;
===chown===&lt;br /&gt;
Ändert den Eigentümer von einer oder mehreren Dateien in den angegebenen Benutzer. &lt;br /&gt;
chown erlaubt ebenfalls das Ändern der Gruppeneigentümreschaft. Nur der aktuelle Eigentümer einer&lt;br /&gt;
Datei oder der Superuser (root) darf die Eigentumsverhältnisse ändern.&lt;br /&gt;
&lt;br /&gt;
 chown [Optionen] Benutzer(:Gruppe) Dateien&lt;br /&gt;
&lt;br /&gt;
Optionen:&lt;br /&gt;
 -c Gibt Informationen über die veränderten Dateien aus&lt;br /&gt;
 --dereference Symbolischen Links folgen&lt;br /&gt;
 -v Gibt Informationen über alle Dateien aus, die chown zu ändern versucht, egal, ob die Änderung erfolgt ist oder nicht&lt;br /&gt;
 -R Geht rekursiv durch alle Unterverzeichnisse und führt die Änderungen durch. &lt;br /&gt;
&lt;br /&gt;
 root@zero:~# chown -R xinux.xinux verzeichnis/&lt;br /&gt;
 root@zero:~# ls -l&lt;br /&gt;
 insgesamt 12&lt;br /&gt;
 drwx------ 13 root  root  4096 2009-04-21 15:11 profile&lt;br /&gt;
 --w-------  1 root  root     0 2009-06-18 11:13 test&lt;br /&gt;
 -rw-r--r--  1 root  root    40 2009-06-18 12:04 text&lt;br /&gt;
 drwxrwx--x  3 xinux xinux 4096 2009-06-18 13:39 verzeichnis&lt;br /&gt;
 &lt;br /&gt;
 root@zero:~# chown -R -c xinux.xinux verzeichnis/&lt;br /&gt;
 &lt;br /&gt;
 root@zero:~# chown -R -v xinux.xinux verzeichnis/&lt;br /&gt;
 Eigentümer von „verzeichnis/01“ als xinux:xinux erhalten&lt;br /&gt;
 Eigentümer von „verzeichnis/test“ als xinux:xinux erhalten&lt;br /&gt;
 Eigentümer von „verzeichnis/“ als xinux:xinux erhalten&lt;br /&gt;
&lt;br /&gt;
==Eingabe/Ausgabe==&lt;br /&gt;
Standardeingabe (0): Laufende Programme erwarten von hier ihre Eingaben (normalerweise handelt es sich um die Tastatur).&lt;br /&gt;
&lt;br /&gt;
Standardausgabe (1): Programme schreiben auf diese ihre Ausgaben (Bildschirm).&lt;br /&gt;
&lt;br /&gt;
Standardfehlerausgabe (2) : Fehlerausgaben landen hier (Bildschirm, aber nur die aktive Konsole).&lt;br /&gt;
&lt;br /&gt;
[[Bild:std.jpg]]&lt;br /&gt;
&lt;br /&gt;
===cat===&lt;br /&gt;
Das Programm cat liest von STDIN und gibt es STDOUT wieder aus&lt;br /&gt;
&lt;br /&gt;
Einlesen der Datei text&lt;br /&gt;
 root@zero:~# cat &amp;lt; text&lt;br /&gt;
 wichtig&lt;br /&gt;
&lt;br /&gt;
Schreiben in die Datei text, dies überschreibt den bisherigen Inhalt der Datei&lt;br /&gt;
 root@zero:~# cat &amp;gt; text&lt;br /&gt;
 sogar noch wichtiger &lt;br /&gt;
 &lt;br /&gt;
Ausgeben der Datei text&lt;br /&gt;
 root@zero:~# cat text &lt;br /&gt;
 sogar noch wichtiger&lt;br /&gt;
&lt;br /&gt;
Lesen aus der Datei text und schreiben in die Datei neuertext&lt;br /&gt;
 root@zero:~# cat &amp;lt; text &amp;gt; neuertext&lt;br /&gt;
 root@zero:~# cat neuertext&lt;br /&gt;
 sogar noch wichtiger&lt;br /&gt;
&lt;br /&gt;
Anhängen der Ausgabe von date an die Datei neuertext&lt;br /&gt;
 root@zero:~# date &amp;gt;&amp;gt; neuertext&lt;br /&gt;
 root@zero:~# cat neuertext&lt;br /&gt;
 sogar noch wichtiger&lt;br /&gt;
 Do 18. Jun 14:08:58 CEST 2009&lt;br /&gt;
&lt;br /&gt;
Umleiten des Standardfehlerkanals nach error&lt;br /&gt;
 root@zero:~# rm sux 2&amp;gt; error&lt;br /&gt;
 root@zero:~# more error&lt;br /&gt;
 rm: Entfernen von „sux“ nicht möglich: No such file or directory&lt;br /&gt;
&lt;br /&gt;
===Umleitungen===&lt;br /&gt;
Nacheinander auszuführende Kommandos&lt;br /&gt;
 root@zero:~# pwd; date&lt;br /&gt;
 /root&lt;br /&gt;
 Do 18. Jun 14:13:05 CEST 2009&lt;br /&gt;
 &lt;br /&gt;
Übergeben der Ausgabe von tail als Eingabe von grep mit Hilfe der Pipe &amp;quot;|&amp;quot;&lt;br /&gt;
 root@zero:~# tail /var/log/auth.log | grep xinux&lt;br /&gt;
 Jun 18 13:52:33 zero nss_wins[11433]: pam_unix(login:session): session closed for user xinux&lt;br /&gt;
&lt;br /&gt;
Übergeben der letzten 100 Zeilen von syslog als Eingabe von grep&lt;br /&gt;
 root@zero:~# tail /var/log/syslog -n 100 | grep error&lt;br /&gt;
 Jun 18 09:30:54 zero kernel: [154384.692135] end_request: I/O error, dev fd0, sector 0&lt;br /&gt;
 Jun 18 09:30:54 zero kernel: [154384.712137] end_request: I/O error, dev fd0, sector 0&lt;br /&gt;
&lt;br /&gt;
==tr==&lt;br /&gt;
tr ist ein Programm um Zeichen zu übersetzen. Dies betrifft nur die Ausgabe, die Datei selbst bleibt unverändert.&lt;br /&gt;
&lt;br /&gt;
Ersetzt Kleinbuchstaben durch Großbuchstaben aus der Datei text&lt;br /&gt;
 root@zero:~# tr &amp;quot;a-z&amp;quot; &amp;quot;A-Z&amp;quot; &amp;lt; text&lt;br /&gt;
 SOGAR NOCH WICHTIGER&lt;br /&gt;
 123&lt;br /&gt;
 34&lt;br /&gt;
 4711&lt;br /&gt;
 TEST&lt;br /&gt;
&lt;br /&gt;
Ersetzt alle Zahlen durch X&lt;br /&gt;
 root@zero:~# tr &amp;quot;0-9&amp;quot; &amp;quot;X&amp;quot; &amp;lt; text&lt;br /&gt;
 sogar noch wichtiger&lt;br /&gt;
 XXX&lt;br /&gt;
 XX&lt;br /&gt;
 XXXX&lt;br /&gt;
 test&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
 root@zero:~# cat &amp;gt; test&lt;br /&gt;
 +++++&lt;br /&gt;
 ###&lt;br /&gt;
 1111&lt;br /&gt;
&lt;br /&gt;
-s löscht mehrfach kommende Zeichen&lt;br /&gt;
 root@zero:~# tr '''-s''' &amp;quot;+&amp;quot; &amp;lt; test&lt;br /&gt;
 +&lt;br /&gt;
 ###&lt;br /&gt;
 1111&lt;br /&gt;
&lt;br /&gt;
-d löscht vorkommende Zeichen &lt;br /&gt;
 root@zero:~# tr '''-d''' &amp;quot;#&amp;quot; &amp;lt; test&lt;br /&gt;
 +++++ &lt;br /&gt;
 &lt;br /&gt;
 1111&lt;br /&gt;
&lt;br /&gt;
==cut==&lt;br /&gt;
Spalten aus einer Datei schneiden. Dies betrifft nur die Ausgabe, die Datei selbst bleibt unverändert.&lt;br /&gt;
 &lt;br /&gt;
Schneidet die erste Spalte aus, der Delimiter ist : &lt;br /&gt;
 root@zero:~# cut -f 1 -d : /etc/passwd&lt;br /&gt;
 root&lt;br /&gt;
 daemon&lt;br /&gt;
 bin&lt;br /&gt;
 ...&lt;br /&gt;
 xinux&lt;br /&gt;
&lt;br /&gt;
 root@zero:~# more test&lt;br /&gt;
 1234#5678#9999&lt;br /&gt;
 &lt;br /&gt;
Schneidet die zweite Spalte aus, der Delimiter ist #&lt;br /&gt;
 root@zero:~# cut -f 2 -d &amp;quot;#&amp;quot; &amp;lt; test&lt;br /&gt;
 5678&lt;br /&gt;
&lt;br /&gt;
Schneidet bis zum 3 Zeichen ab&lt;br /&gt;
 root@zero:~$ echo S01policykit | cut -c 4-&lt;br /&gt;
 policykit&lt;br /&gt;
&lt;br /&gt;
==expand==&lt;br /&gt;
Ersetzt Tabulatorzeichen durch Folgen von Leerzeichen und schreibt das Ergebnis auf die Standardausgabe&lt;br /&gt;
 root@zero:~# expand /etc/samba/smb.conf&lt;br /&gt;
 ...&lt;br /&gt;
&lt;br /&gt;
==fmt==&lt;br /&gt;
#Setzt den Text der Dateien im Blocksatz der angegebenen Breite durch Auffüllen von Zeilen und Entfernen von Zeilenwechseln.&lt;br /&gt;
Standardgemäß werden Leerzeilen, die Position von Leerzeichen und der Einzug am Zeilenanfang erhalten. fmt versucht, &lt;br /&gt;
Zeilenumbrüche an Satzenden durchzuführen sowie sie nach dem ersten oder vor dem letzten Wort eines Satzes zu vermeiden. &lt;br /&gt;
 &lt;br /&gt;
 fmt [Optionen] [Dateien]&lt;br /&gt;
&lt;br /&gt;
Optionen&lt;br /&gt;
&lt;br /&gt;
* -p ''Präfix'': Formatiert nur Zeilen, die mit ''Präfix'' anfangen&lt;br /&gt;
 root@zero:/tmp# fmt -p '#' text&lt;br /&gt;
 #Setzt den Text der Dateien im Blocksatz der angegebenen Breite durch&lt;br /&gt;
 #Auffüllen von Zeilen und Entfernen von Zeilenwechseln.  Standardgemäß&lt;br /&gt;
 #werden Leerzeilen, die Position von Leerzeichen und der Einzug am&lt;br /&gt;
 #Zeilenanfang erhalten. fmt versucht,&lt;br /&gt;
 Zeilenumbrüche an Satzenden durchzuführen sowie sie nach dem ersten oder vor dem letzten Wort eines Satzes zu vermeiden.&lt;br /&gt;
&lt;br /&gt;
* -u : Erzwingt genau ein Leerzeichen zwischen Wörtern und zwei Leerzeichen zwischen Sätzen&lt;br /&gt;
&lt;br /&gt;
* -w ''Breite'': Setzt die Ausgabebreite auf ''Breite''&lt;br /&gt;
 root@zero:/tmp# fmt -w 30 text&lt;br /&gt;
 #Setzt den Text der Dateien&lt;br /&gt;
 im Blocksatz der angegebenen&lt;br /&gt;
 Breite durch Auffüllen&lt;br /&gt;
 von Zeilen und Entfernen&lt;br /&gt;
 von Zeilenwechseln.&lt;br /&gt;
 #Standardgemäß werden&lt;br /&gt;
 Leerzeilen, die Position von&lt;br /&gt;
 Leerzeichen und der Einzug am&lt;br /&gt;
 Zeilenanfang erhalten. fmt&lt;br /&gt;
 versucht, Zeilenumbrüche&lt;br /&gt;
 an Satzenden durchzuführen&lt;br /&gt;
 sowie sie nach dem ersten&lt;br /&gt;
 oder vor dem letzten Wort&lt;br /&gt;
 eines Satzes zu vermeiden.&lt;br /&gt;
&lt;br /&gt;
==join==&lt;br /&gt;
Führt die Zeilen zweier sortierter Dateien anhand von '''Übereinstimmungen''' in einem gemeinsamen Feld zusammen.&lt;br /&gt;
&lt;br /&gt;
 root@zero:~# more name&lt;br /&gt;
 1. karl&lt;br /&gt;
 2. heinz&lt;br /&gt;
 3. hans&lt;br /&gt;
 4. otto&lt;br /&gt;
 root@zero:~# more tel&lt;br /&gt;
 1. 1234&lt;br /&gt;
 2. 4321&lt;br /&gt;
 3. 222&lt;br /&gt;
 4. 121212&lt;br /&gt;
 root@zero:~# join name tel &amp;gt; telefonbuch&lt;br /&gt;
 root@zero:~# more telefonbuch&lt;br /&gt;
 1. karl 1234&lt;br /&gt;
 2. heinz 4321&lt;br /&gt;
 3. hans 222&lt;br /&gt;
 4. otto 121212&lt;br /&gt;
&lt;br /&gt;
 root@zero:~# join -t : /etc/passwd /etc/shadow&lt;br /&gt;
 ....&lt;br /&gt;
 daemon:x:1:1:daemon:/usr/sbin:/bin/sh:*:14181:0:99999:7:::&lt;br /&gt;
 bin:x:2:2:bin:/bin:/bin/sh:*:14181:0:99999:7:::&lt;br /&gt;
 sys:x:3:3:sys:/dev:/bin/sh:*:14181:0:99999:7:::&lt;br /&gt;
 sync:x:4:65534:sync:/bin:/bin/sync:*:14181:0:99999:7:::&lt;br /&gt;
 ...&lt;br /&gt;
&lt;br /&gt;
join in dat1 nach Feld 3 und in dat2 nach Feld 2&lt;br /&gt;
 thomas@lydia:~$ cat dat1 &lt;br /&gt;
 hugo:ps:1111&lt;br /&gt;
 erwin:zw:2222&lt;br /&gt;
 karl:sb:3333&lt;br /&gt;
 rudi:kl:4444&lt;br /&gt;
 thomas@lydia:~$ cat dat2&lt;br /&gt;
 blau:1111:svn&lt;br /&gt;
 grün:2222:fcs&lt;br /&gt;
 gelb:3333:fch&lt;br /&gt;
 rot:4444:fck&lt;br /&gt;
 thomas@lydia:~$ join -t : -1 3 -2 2 dat1 dat2 &lt;br /&gt;
 1111:hugo:ps:blau:svn&lt;br /&gt;
 2222:erwin:zw:grün:fcs&lt;br /&gt;
 3333:karl:sb:gelb:fch&lt;br /&gt;
 4444:rudi:kl:rot:fck&lt;br /&gt;
&lt;br /&gt;
==nl==&lt;br /&gt;
Nummeriert die Zeilen in einer Datei.&lt;br /&gt;
&lt;br /&gt;
 root@zero:~# nl /etc/passwd                                                   &lt;br /&gt;
     1  root:x:0:0:root:/root:/bin/bash                                       &lt;br /&gt;
     2  daemon:x:1:1:daemon:/usr/sbin:/bin/sh                                 &lt;br /&gt;
     3  bin:x:2:2:bin:/bin:/bin/sh                                            &lt;br /&gt;
     4  sys:x:3:3:sys:/dev:/bin/sh                                            &lt;br /&gt;
     5  sync:x:4:65534:sync:/bin:/bin/sync&lt;br /&gt;
     ...&lt;br /&gt;
Nummereriet mit führenden Nullen der Separatir ist ein :&lt;br /&gt;
 root@zero:~# nl -s : -n rz dat1&lt;br /&gt;
&lt;br /&gt;
==od==&lt;br /&gt;
Gibt Dateien im Oktal und anderen Formaten aus.&lt;br /&gt;
&lt;br /&gt;
 od [Optionen] Datei&lt;br /&gt;
&lt;br /&gt;
* -j ''Bytes'': Überspringt die Anzahl ''Bytes'' einer Datei&lt;br /&gt;
* -N ''Bytes'': Gibt nur die Anzahl ''Bytes'' aus&lt;br /&gt;
* -c : Gebe ASCII Zeichen aus&lt;br /&gt;
* -f : Gebe Fließkommazahlen aus&lt;br /&gt;
* -i : Gebe Dezimal Integer aus&lt;br /&gt;
* -l : Gebe Dezimal Long aus&lt;br /&gt;
* -o : Gebe Oktal 2 Byte Einheiten aus&lt;br /&gt;
* -s : Gebe Dezimal 2 Byte Einheiten aus&lt;br /&gt;
* -x : Gebe Hexadezimale 2 Byte einheiten aus&lt;br /&gt;
&lt;br /&gt;
Beispiele&lt;br /&gt;
&lt;br /&gt;
Gebe Master Boot Record (die ersten 512 Byte der Festplatte /dev/sda) als Hexadezimal aus&lt;br /&gt;
 root@zero:~# od '''-x -N''' 512 /dev/sda&lt;br /&gt;
 0000000 48eb 1090 d08e 00bc b8b0 0000 d88e c08e&lt;br /&gt;
 0000020 befb 7c00 00bf b906 0200 a4f3 21ea 0006&lt;br /&gt;
 0000040 be00 07be 0438 0b75 c683 8110 fefe 7507&lt;br /&gt;
 0000060 ebf3 b416 b002 bb01 7c00 80b2 748a 0203&lt;br /&gt;
 0000100 00ff 2000 0001 0000 0200 90fa f690 80c2&lt;br /&gt;
 ...&lt;br /&gt;
&lt;br /&gt;
Schreibe &amp;quot;suxer&amp;quot; in die Datei test&lt;br /&gt;
 root@zero:~# echo &amp;quot;suxer&amp;quot; &amp;gt; test&lt;br /&gt;
Ausgabe Hexadezimal&lt;br /&gt;
 root@zero:~# od -x test&lt;br /&gt;
 0000000 7573 6578 0a72&lt;br /&gt;
 0000006&lt;br /&gt;
&lt;br /&gt;
Ausgabe ASCII Zeichen&lt;br /&gt;
 root@zero:~# od -c test&lt;br /&gt;
 0000000   s   u   x   e   r  \n&lt;br /&gt;
 0000006&lt;br /&gt;
&lt;br /&gt;
==paste==&lt;br /&gt;
Fügt die Zeilen von zwei oder mehr Dateien horizontal zusammen&lt;br /&gt;
 root@zero:~# paste name tel&lt;br /&gt;
 1. karl 1. 1234&lt;br /&gt;
 2. heinz        2. 4321&lt;br /&gt;
 3. hans 3. 222&lt;br /&gt;
 4. otto 4. 121212&lt;br /&gt;
&lt;br /&gt;
==pr==&lt;br /&gt;
Bereitet Textdateien zum Drucken vor.&lt;br /&gt;
&lt;br /&gt;
 root@zero:~# echo &amp;quot;Plan für heute&amp;quot; &amp;gt; dokument&lt;br /&gt;
 root@zero:~# more dokument&lt;br /&gt;
 Plan für heute&lt;br /&gt;
 root@zero:~# pr dokument   &lt;br /&gt;
  &lt;br /&gt;
 &lt;br /&gt;
 2009-06-19 12:44                    dokument                     Seite 1&lt;br /&gt;
 &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
 Plan für heute&lt;br /&gt;
&lt;br /&gt;
Anmerkung Ausmaße der Bildschirmausgabe wie eine Druckseite.&lt;br /&gt;
&lt;br /&gt;
==sed==&lt;br /&gt;
streaming editor. Mit sed ist es möglich, den Inhalt einer Datei automatisch (nicht interaktiv) zu&lt;br /&gt;
bearbeiten. Wie unter Linux üblich, wird auch hier der Text nicht wirklich verändert sondern die &lt;br /&gt;
Änderung erfolgt über die Standardausgabe, die wieder umgeleitet werden kann. Die Syntax ist ähnlich &lt;br /&gt;
des ex modus von vi. Reguläre Ausdrücke können nach Belieben benutzt werden. &lt;br /&gt;
&lt;br /&gt;
Optionen:&lt;br /&gt;
 -e Zeichenkette  wendet die Editorbefehle aus Zeichenkette auf den Text an.&lt;br /&gt;
 -n gibt nur die Zeilen aus, die explizit (durch &amp;quot;p&amp;quot; ausgedruckt werden sollen&lt;br /&gt;
&lt;br /&gt;
Gibt die dritte Zeile der Datei text aus&lt;br /&gt;
 root@zero:~# sed -n &amp;quot;3p&amp;quot; text&lt;br /&gt;
 34&lt;br /&gt;
&lt;br /&gt;
Gibt die erste bis dritte Zeile von text aus&lt;br /&gt;
 root@zero:~# sed -n &amp;quot;1,3p&amp;quot; text&lt;br /&gt;
 sogar noch wichtiger&lt;br /&gt;
 123&lt;br /&gt;
 34&lt;br /&gt;
&lt;br /&gt;
Löschen der Zeile mit &amp;quot;sogar&amp;quot;&lt;br /&gt;
 root@zero:~# sed -e '/sogar/d' &amp;lt; text&lt;br /&gt;
 123&lt;br /&gt;
 34&lt;br /&gt;
 4711&lt;br /&gt;
 test&lt;br /&gt;
&lt;br /&gt;
und schreiben in text2&lt;br /&gt;
 root@zero:~# sed -e '/sogar/d' &amp;lt; text &amp;gt; text2&lt;br /&gt;
 root@zero:~# more text2&lt;br /&gt;
 123&lt;br /&gt;
 34&lt;br /&gt;
 4711&lt;br /&gt;
 test&lt;br /&gt;
&lt;br /&gt;
Alle 3en durch DREI ersetzen&lt;br /&gt;
 root@zero:~# sed -e 's/3/DREI/g' &amp;lt; text&lt;br /&gt;
 sogar noch wichtiger&lt;br /&gt;
 12DREI&lt;br /&gt;
 DREI4&lt;br /&gt;
 4711&lt;br /&gt;
 test&lt;br /&gt;
&lt;br /&gt;
==wc==&lt;br /&gt;
Zählt die Anzahl von Zeichen, Wörter oder Zeilen&lt;br /&gt;
&lt;br /&gt;
Optionen&lt;br /&gt;
* -m : Zählt die Anzahl der Zeichen&lt;br /&gt;
 root@zero:~# more name&lt;br /&gt;
 1. karl&lt;br /&gt;
 2. heinz&lt;br /&gt;
 3. hans&lt;br /&gt;
 4. otto&lt;br /&gt;
 root@zero:~# wc '''-m''' tel&lt;br /&gt;
 33 tel&lt;br /&gt;
&lt;br /&gt;
* -w : Zählt die Anzahl der Wörter (einschließlich Zahlen und andere Zeichen)&lt;br /&gt;
 root@zero:~# wc '''-w''' name&lt;br /&gt;
 8 name&lt;br /&gt;
&lt;br /&gt;
* -l : Zählt die Anzahl der Zeilen&lt;br /&gt;
 root@zero:~# wc '''-l''' name&lt;br /&gt;
 4 name&lt;br /&gt;
&lt;br /&gt;
==Sort==&lt;br /&gt;
&lt;br /&gt;
Zum sortieren von Dateien nach Feldern benutzt man sort. sort liest von STDIN man kann die Datei aber auch als Argument übergeben. &lt;br /&gt;
&lt;br /&gt;
Sortiert nach dem ersten Feld&lt;br /&gt;
  root@zero:~# sort /etc/passwd 	 &lt;br /&gt;
&lt;br /&gt;
Es wird geprüft ob die Datei schon sortiert ist &lt;br /&gt;
 root@zero:~# sort -c /etc/passwd 	&lt;br /&gt;
&lt;br /&gt;
Sortiert nach dem ersten Feld (Richtungsumkehr)  &lt;br /&gt;
 root@zero:~#  sort -r /etc/passwd&lt;br /&gt;
&lt;br /&gt;
Führende Leersortzeichen werden ignoriert &lt;br /&gt;
 root@zero:~# sort -b /etc/passwd&lt;br /&gt;
&lt;br /&gt;
Ausgabe  in die Datei pass&lt;br /&gt;
 root@zero:~# sort  /etc/passwd   -o pass	 &lt;br /&gt;
&lt;br /&gt;
nimmt : als Trenner -Voreinstellung ist TAB&lt;br /&gt;
  root@zero:~# sort -t : /etc/passwd&lt;br /&gt;
&lt;br /&gt;
sortiert nach dem  3 Feld,  der Trenner ist : und es wird nummerisch sortiert&lt;br /&gt;
&lt;br /&gt;
 root@zero:~# sort -t: +2 -n /etc/passwd		&lt;br /&gt;
&lt;br /&gt;
sortiert nach dem  3 Feld,  der Trenner ist : und es wird nummerisch sortiert&lt;br /&gt;
					&lt;br /&gt;
 root@zero:~# sort -t: -k 3 -n /etc/passwd&lt;br /&gt;
&lt;br /&gt;
Sortiert nach dem  3  bis zum 5 Feld, der Trenner ist : und es wird nummerisch sortiert&lt;br /&gt;
	&lt;br /&gt;
 root@zero:~# sort -t: -k 3,5 -n /etc/passwd	&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==INodes==&lt;br /&gt;
Inode (oder I-Node) wird im Deutschen am besten als Informationsknoten oder&lt;br /&gt;
Indexeintrag bezeichnet. Er fasst alle Attribute einer Datei zusammen außer dem Inhalt&lt;br /&gt;
und dem Namen der Datei.&lt;br /&gt;
&lt;br /&gt;
===Daten===&lt;br /&gt;
{| border=1 cellpadding=2&lt;br /&gt;
|type&lt;br /&gt;
|Der Typ der Datei wird als einzelner Buchstabe angezeigt. Der Typ einer Datei wird beim Anlegen der Datei festgelegt&lt;br /&gt;
|-&lt;br /&gt;
|Permissions &lt;br /&gt;
|Die Zugriffsrechte der Datei werden in den 12 Bit sstrwxrwxrwx abgespeichert.Wenn sie gesetzt sind, werden sie bei &lt;br /&gt;
der Ausgabe an Stelle der x-Rechte ausgegeben. Die Zugriffsrechte können mit dem Kommando chmod verändert werden.&lt;br /&gt;
|-&lt;br /&gt;
|link count&lt;br /&gt;
|In UNIX kann eine Datei mehr als einen Namen haben. Der Link Count gibt die Anzahl der Namen einer Datei an. Er kann&lt;br /&gt;
mit dem Kommando ln erhöht und dem Kommando rm erniedrigt werden.&lt;br /&gt;
|-&lt;br /&gt;
|owner&lt;br /&gt;
|Für den Dateieigentümer gelten die in der ersten rwx-Gruppe festgelegten Zugriffsrechte. Standardmäßig ist der &lt;br /&gt;
Eigentümer einer Datei derjenige Benutzer, der die Datei angelegt hat.&lt;br /&gt;
|-&lt;br /&gt;
|group&lt;br /&gt;
|Für Benutzer, die in der gleichen Gruppe sind, der die Datei angehört, gelten die in der zweiten rwx-Gruppe festgelegten&lt;br /&gt;
Zugriffsrechte. In System V gehört eine Datei standardmäßig der Gruppe an, in der der anlegende Benutzer gerade ist.&lt;br /&gt;
|-&lt;br /&gt;
|size&lt;br /&gt;
|Bei normalen Dateien und Verzeichnissen gibt diese Information die Länge der Datei in Byte an.&lt;br /&gt;
|-&lt;br /&gt;
|access time&lt;br /&gt;
|Die Zugriffszeit gibt den Zeitpunkt des letzten Lesezugriffes auf eine Datei an. Aus Effizienzgründen wird die &lt;br /&gt;
Zugriffszeit an Verzeichnissen nicht gesetzt, wenn ein Verzeichnis durchsucht wird, obwohl man dies erwarten könnte. ''(ls -l --time=atime)''&lt;br /&gt;
|-&lt;br /&gt;
|modification time&lt;br /&gt;
|Die Modifikationszeit gibt die Zeit des letzten Schreibzugriffes auf die Daten der Datei an. Intern speichert UNIX &lt;br /&gt;
die Zeit als Sekunden seit Beginn des Jahres 1970 und in GMT ab. Für die Ausgabe wird dies in ein besser lesbares &lt;br /&gt;
Format in der lokalen Zeitzone umgewandelt. ''(ls -l)''&lt;br /&gt;
|-&lt;br /&gt;
|change time &lt;br /&gt;
|Die Veränderungszeit gibt das Datum der letzten Statusänderung der Datei an. Sie wird immer dann gesetzt, wenn die &lt;br /&gt;
Informationen über die Datei sich ändern (Datum der Erzeugung wird nicht gespeichert) ''(ls -lc)''&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
===Dateiarten===&lt;br /&gt;
{| border=1 cellpadding=2&lt;br /&gt;
!Zeichen&lt;br /&gt;
!Typ&lt;br /&gt;
!Zweck&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;nowiki&amp;gt;-&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
|file&lt;br /&gt;
|normale Datei&lt;br /&gt;
|-&lt;br /&gt;
|d&lt;br /&gt;
|directory&lt;br /&gt;
|Verzeichnis&lt;br /&gt;
|-&lt;br /&gt;
|b&lt;br /&gt;
|block device&lt;br /&gt;
|Gerätedatei&lt;br /&gt;
|-&lt;br /&gt;
|c&lt;br /&gt;
|character device&lt;br /&gt;
|Gerätedatei&lt;br /&gt;
|-&lt;br /&gt;
|l&lt;br /&gt;
|link&lt;br /&gt;
|Querverweis&lt;br /&gt;
|-&lt;br /&gt;
|p&lt;br /&gt;
|named pipe&lt;br /&gt;
|Benannte Pipeline&lt;br /&gt;
|-&lt;br /&gt;
|s&lt;br /&gt;
|socket&lt;br /&gt;
|Netzwerkverbindung&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
====Normale Dateien====&lt;br /&gt;
Unter einer normalen Datei versteht man die Ansammlung von Daten. Dies kann ein Text, Programm, Bild oder sonstiges sein. &lt;br /&gt;
Beispiel&lt;br /&gt;
 root@zero:~# ls -l text | cut -c 1&lt;br /&gt;
 -&lt;br /&gt;
&lt;br /&gt;
====Verzeichnisse====&lt;br /&gt;
Dateien werden in Verzeichnissen gespeichert, nur so ist eine Ordnung möglich. &lt;br /&gt;
 root@zero:~# mkdir -v Ordner&lt;br /&gt;
 mkdir: Verzeichnis „Ordner“ angelegt&lt;br /&gt;
 &lt;br /&gt;
 root@zero:~# ls -ld Ordner | cut -c 1&lt;br /&gt;
 d&lt;br /&gt;
&lt;br /&gt;
====Gerätedateien (Block und Char)====&lt;br /&gt;
Gerätedateien ermöglichen Anwendungsprogrammen unter Benutzung des  Kernels den Zugriff auf die Hardwarekomponenten des Systems. Ansprechbar über Major und Minor Nummern &lt;br /&gt;
&lt;br /&gt;
Beispiele&lt;br /&gt;
&lt;br /&gt;
Sicherung des Master Boot Records der ersten Festplatte&lt;br /&gt;
 root@zero:~# dd if=/dev/sda of=/tmp/mbr.img bs=512 count=1&lt;br /&gt;
&lt;br /&gt;
Block Device &lt;br /&gt;
 root@zero:~# ls -l /dev/sda | cut -c 1 &lt;br /&gt;
 b&lt;br /&gt;
&lt;br /&gt;
Character Device &lt;br /&gt;
 root@zero:~# ls -l /dev/ttyS0  | cut -c 1 &lt;br /&gt;
 c&lt;br /&gt;
&lt;br /&gt;
Erstellen einer Gerätedatei&lt;br /&gt;
 root@zero:/dev# mknod sata1 b 8 0 &lt;br /&gt;
 root@zero:/dev# fdisk -l /dev/sata1 &lt;br /&gt;
 &lt;br /&gt;
 Platte /dev/sata1: 6442 MByte, 6442450944 Byte&lt;br /&gt;
 255 Köpfe, 63 Sektoren/Spuren, 783 Zylinder&lt;br /&gt;
 Einheiten = Zylinder von 16065 × 512 = 8225280 Bytes&lt;br /&gt;
 Disk identifier: 0x0005efab&lt;br /&gt;
 &lt;br /&gt;
       Gerät  boot.     Anfang        Ende     Blöcke   Id  System&lt;br /&gt;
 /dev/sata1p1   *           1         743     5968116   83  Linux&lt;br /&gt;
 /dev/sata1p2             744         783      321300    5  Erweiterte&lt;br /&gt;
 /dev/sata1p5             744         783      321268+  82  Linux Swap / Solaris&lt;br /&gt;
&lt;br /&gt;
====Named Pipes====&lt;br /&gt;
Benannte Pipes (Named Pipes) können dagegen auch zur Kommunikation zwischen Prozessen eingesetzt werden, die nicht miteinander&lt;br /&gt;
verwandt sind und sich darüber hinaus auf unterschiedlichen Rechnern innerhalb eines Netzwerkes befinden dürfen. Sie sind &lt;br /&gt;
flexibler als anonyme Pipes und eignen sich für sogenannte Client-Server-Anwendungen (es lassen sich auch RPCs realisieren).&lt;br /&gt;
Benannte Pipes ermöglichen die gleichzeitige Kommunikation in beide Richtungen, das heißt, Daten können im Vollduplexbetrieb &lt;br /&gt;
zwischen den Prozessen ausgetauscht werden.&lt;br /&gt;
 &lt;br /&gt;
Erstelle Named Pipe mit Namen /tmp/roehre. Schreibe &amp;quot;hallo welt&amp;quot; in die Pipe und bleibe&lt;br /&gt;
 xinux@zero:~$ mkfifo /tmp/roehre&lt;br /&gt;
 xinux@zero:~$ echo hallo welt &amp;gt; /tmp/roehre &lt;br /&gt;
&lt;br /&gt;
Gebe Inhalt der Pipe mit cat aus&lt;br /&gt;
 root@zero:~# cat &amp;lt; /tmp/roehre &lt;br /&gt;
 hallo welt&lt;br /&gt;
 root@zero:~# ls -l /tmp/roehre | cut -c 1&lt;br /&gt;
 p&lt;br /&gt;
&lt;br /&gt;
====Sockets====&lt;br /&gt;
Schnittstelle um es lokalen Anwendungen zu ermöglichen, miteinander Netwerkmässig zu kommunizieren.&lt;br /&gt;
&lt;br /&gt;
 root@lydia:~# netstat  -lnxp | tail -1&lt;br /&gt;
  unix  2 [ ACC ] STREAM HÖRT 21951 6646/nm-applet /tmp/orbit-thomas/linc-19f6-0-2b9b81095cede&lt;br /&gt;
&lt;br /&gt;
 root@lydia:~# ls -l /tmp/orbit-thomas/linc-19f6-0-2b9b81095cede  | cut -c 1 &lt;br /&gt;
 s&lt;br /&gt;
&lt;br /&gt;
====Links====&lt;br /&gt;
Bei Links handelt es sich um symbolische Verweise auf andere Dateien&lt;br /&gt;
&lt;br /&gt;
'''Softlink'''&lt;br /&gt;
Ein Softlink ist eine Datei die nur auf den Namen einer anderen Datei verweist. Wenn die Originaldatei gelöscht wird, zeigt &lt;br /&gt;
der Link ins Leere. &lt;br /&gt;
&lt;br /&gt;
 ln -s datei softlink&lt;br /&gt;
&lt;br /&gt;
{| border=1 cellpadding=2&lt;br /&gt;
| Vorteile&lt;br /&gt;
| Symbolische Links können auch auf Verzeichnisse angelegt werden&amp;lt;br&amp;gt;Sie sind partitionsübergreifend&amp;lt;br&amp;gt;Man kann sie auf Dateien anlegen, die noch nicht existieren&lt;br /&gt;
|-&lt;br /&gt;
| Nachteile&lt;br /&gt;
| Wenn das Original gelöscht ist, ist kein Zugriff mehr möglich&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Beispiel&lt;br /&gt;
 root@zero:~# ln -s text verweis&lt;br /&gt;
 root@zero:~# ls -l verweis&lt;br /&gt;
 lrwxrwxrwx 1 root root 4 2009-06-18 15:48 verweis -&amp;gt; text&lt;br /&gt;
&lt;br /&gt;
'''Hardlinks'''&lt;br /&gt;
 ln datei hardlink&lt;br /&gt;
Eigentlich ist jede Datei ein Hardlink. Ein Hardlink ist ein Verzeichniseintrag,&lt;br /&gt;
der auf eine Inode verweist. Beim Erzeugen einer Datei verweist ein Eintrag auf&lt;br /&gt;
eine Inode. Man kann dann weitere Verweise erzeugen. Der Linkcounter wird&lt;br /&gt;
jeweils um 1 erhöht. Beim Löschen einer Datei wird er jeweils um 1 reduziert.&lt;br /&gt;
Wird der Wert 0 erreicht, ist die Datei gelöscht.&lt;br /&gt;
{| border=1 cellpadding=2&lt;br /&gt;
| Vorteile&lt;br /&gt;
|Zugriff auf die Daten, selbst wenn das Orginal gelöscht ist.&lt;br /&gt;
|-&lt;br /&gt;
|Nachteile&lt;br /&gt;
|Man kann keine Hardlinks auf Verzeichnisse anlegen.&lt;br /&gt;
Ist nur innerhalb einer Partion möglich.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Beispiel&lt;br /&gt;
 root@zero:~# touch 1&lt;br /&gt;
 root@zero:~# echo &amp;quot;text&amp;quot; &amp;gt; 1&lt;br /&gt;
 root@zero:~# ln 1 2&lt;br /&gt;
 root@zero:~# more 2&lt;br /&gt;
 text&lt;br /&gt;
 root@zero:~# echo &amp;quot;doch kein text&amp;quot; &amp;gt; 1&lt;br /&gt;
 root@zero:~# more 1&lt;br /&gt;
 doch kein text&lt;br /&gt;
 root@zero:~# more 2&lt;br /&gt;
 doch kein text&lt;br /&gt;
&lt;br /&gt;
Weitere Optionen:&lt;br /&gt;
 -b sichert Dateien, statt sie zu überschreiben &lt;br /&gt;
 -f Überschreibt bestehende, gleichnamige Dateien&lt;br /&gt;
 -i fragt vor dem Überschreiben nach Bestätigung&lt;br /&gt;
 -v ausführliche Meldungen&lt;br /&gt;
Softlink mit dem Namen passwd im Homeverzeichnis angelegt&lt;br /&gt;
 xinux@zero:~$ ln -vs /etc/passwd .&lt;br /&gt;
 „./passwd“ -&amp;gt; „/etc/passwd“&lt;br /&gt;
Softlink mit dem Namen passwd im Homeverzeichnis angelegt(Original exestiert nicht) &lt;br /&gt;
 xinux@zero:~$ ln -vs /etc/hund .&lt;br /&gt;
 „./hund“ -&amp;gt; „/etc/hund“&lt;br /&gt;
Hardlink mit dem Namen hosts im Homeverzeichnis angelegt&lt;br /&gt;
  xinux@zero:~$ ln -v /etc/hosts .&lt;br /&gt;
 „./hosts“ =&amp;gt; „/etc/hosts“&lt;br /&gt;
Auf eine nicht existierende Datei kann kein Hardlink angelegt werden!&lt;br /&gt;
 xinux@zero:~$ ln -v /etc/katze .&lt;br /&gt;
 ln: Zugriff auf „/etc/katze“: No such file or directory&lt;br /&gt;
&lt;br /&gt;
==Shellsonderzeichen==&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot; cellpadding=&amp;quot;2&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
|;&lt;br /&gt;
|Trenne Kommandos&lt;br /&gt;
|-&lt;br /&gt;
|. oder source&lt;br /&gt;
|Ausführen wie in aktueller Shell&lt;br /&gt;
|-&lt;br /&gt;
|#&lt;br /&gt;
|Kommentar&lt;br /&gt;
|-&lt;br /&gt;
|&amp;amp;&lt;br /&gt;
|Programm im Hintergrund starten &lt;br /&gt;
|-&lt;br /&gt;
|&amp;amp;&amp;amp;&lt;br /&gt;
|UND -Ausführung  (wenn links wahr dann führe rechts aus)&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;nowiki&amp;gt;|&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
|STOUT von links wird zu STDIN von rechts &lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;nowiki&amp;gt;||&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
|ODER -Ausführung (wenn links falsch dann führe rechts aus)&lt;br /&gt;
|-&lt;br /&gt;
|*&lt;br /&gt;
|steht für beliebig viel Zeichen auch 0 &lt;br /&gt;
|-&lt;br /&gt;
|?&lt;br /&gt;
|steht für genau ein Zeichen &lt;br /&gt;
|-&lt;br /&gt;
|[abc]&lt;br /&gt;
|steht für eins der Zeichen in [ ] hier a b oder c &lt;br /&gt;
|-&lt;br /&gt;
|[ausdruck] &lt;br /&gt;
|Andere Schreibweis für test &lt;br /&gt;
|-&lt;br /&gt;
|~&lt;br /&gt;
|das Homeverzeichnis&lt;br /&gt;
|-&lt;br /&gt;
|&amp;gt;    und    &amp;gt;&amp;gt;&lt;br /&gt;
|leite in Datei um   &amp;gt;  überschreibe     &amp;gt;&amp;gt; hänge an &lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;&lt;br /&gt;
|lesen aus Datei &lt;br /&gt;
|-&lt;br /&gt;
|2&amp;gt;&amp;amp;1&lt;br /&gt;
|leite STDERR auf STDOUT&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;&amp;lt; ende&lt;br /&gt;
|Lesen aus Datei (Heredokument)&lt;br /&gt;
|-&lt;br /&gt;
|(...)&lt;br /&gt;
|Alles inhalb von ( ) wird als Subshell ausgeführt&lt;br /&gt;
|-&lt;br /&gt;
|{...}&lt;br /&gt;
|Gruppieren von Komandos &lt;br /&gt;
|-&lt;br /&gt;
|{ ,  ,  , }&lt;br /&gt;
|Zeichenketten zusammensetzen &lt;br /&gt;
|-&lt;br /&gt;
|$&lt;br /&gt;
|Inhalt von Variablen ausgeben $SUX&lt;br /&gt;
|-&lt;br /&gt;
|$* oder $@&lt;br /&gt;
|Liste der übergebenen Parameter&lt;br /&gt;
|-&lt;br /&gt;
|$# &lt;br /&gt;
|Anzahl der übergebenen Parameter &lt;br /&gt;
|-&lt;br /&gt;
|$0&lt;br /&gt;
|Name des Shellprogramms &lt;br /&gt;
|-&lt;br /&gt;
|$?&lt;br /&gt;
|Rückgabewert des letzten Kommandos &lt;br /&gt;
|-&lt;br /&gt;
|$!  und  $$&lt;br /&gt;
|PID des  $!  = letzten Hintergrund  -  , $$ = aktuellen Prozess&lt;br /&gt;
|-&lt;br /&gt;
|$1 ..$9&lt;br /&gt;
|Parameter 1 bis 9 &lt;br /&gt;
|-&lt;br /&gt;
|$() oder `  `&lt;br /&gt;
|Kommandosubstition&lt;br /&gt;
|-&lt;br /&gt;
|${ }&lt;br /&gt;
|Funktion zur Manipulation von Zeichenketten &lt;br /&gt;
|-&lt;br /&gt;
|$(( )) oder $[ ]&lt;br /&gt;
|Arithmetische Berechnung &lt;br /&gt;
|-&lt;br /&gt;
|&amp;quot;...&amp;quot;&lt;br /&gt;
|Entwertung der Sonderzeichen ausser $ ' \&lt;br /&gt;
|-&lt;br /&gt;
|'...'&lt;br /&gt;
|Entwertung sämtlicher Sonderzeichen ausser ' selbst&lt;br /&gt;
|-&lt;br /&gt;
|\  &lt;br /&gt;
|Entwertung des folgenden Sonderzeichens &lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==Prozesse==&lt;br /&gt;
===Was ist ein Prozess?===&lt;br /&gt;
Ein Prozess setzt sich aus zwei Teilen zusammen:&lt;br /&gt;
&lt;br /&gt;
1.Programm, das in den Hauptspeicher geladen wurde&lt;br /&gt;
&lt;br /&gt;
2.Prozessumgebung &lt;br /&gt;
&lt;br /&gt;
Unter einem Prozess versteht man ein Programm (binär), das in den Hauptspeicher&lt;br /&gt;
geladen wurde. Also nicht das Program selbst, das auf der Festplatte liegt ist der&lt;br /&gt;
Prozess, sondern es wird erst durch das Laden in den Hauptspeicher dazu.&lt;br /&gt;
Normalerweise liegt ein Programm als ausführbare Datei irgendwo auf der&lt;br /&gt;
Festplatte oder auf Diskette. Ob es sich bei dem Programm um eine binäre Datei&lt;br /&gt;
handelt, kann man mit dem Befehl '' file '' feststellen.&lt;br /&gt;
 &lt;br /&gt;
 root@zero:~# file /bin/mkdir&lt;br /&gt;
 /bin/mkdir: ELF 32-bit LSB executable, Intel 80386, version 1 (SYSV), dynamically linked (uses shared libs), for GNU/Linux 2.6.8, stripped&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Die Datei liegt im Maschinencode vor und kann in den Hauptspeicher geladen&lt;br /&gt;
werden. Sobald dies geschehen ist, kann der Rechner diesen Maschinencode&lt;br /&gt;
abarbeiten (ausführen).&lt;br /&gt;
&lt;br /&gt;
Da aber ein Programm nicht direkt auf die Hardware zugreifen soll, muss es vom&lt;br /&gt;
Betriebsystem kontrolliert werden. Das Betriebssystem liegt logisch gesehen&lt;br /&gt;
zwischen Hardware und Anwendung. Das Betriebssystem ordnet jedem Prozess&lt;br /&gt;
verschiedene Kenndaten zu, um die Prozesse verwalten zu können. Alle&lt;br /&gt;
Kenndaten, die einem Prozess zugeordnet sind, nennt man die&lt;br /&gt;
Prozessumgebung.Wenn man in der Shell ein Kommando eingibt, wird ein Prozess&lt;br /&gt;
kreiert. Natürlich ist die Shell selbst auch ein Prozess. Ein Prozess kann aber&lt;br /&gt;
genauso gut ein Serverprozess (Dienst) sein, z.B. Apache.&lt;br /&gt;
Ein wesentliches Merkmal eines Prozesses ist die Prozesskommunikation. Über im&lt;br /&gt;
Betriebssystem implementierte Methoden ist es möglich, dass verschiedene&lt;br /&gt;
Prozesse Signale und Daten untereinander austauschen können.&lt;br /&gt;
Dadurch wird auch dem Benutzer ermöglicht, einem Prozeß bestimmte Signale zu&lt;br /&gt;
senden bzw. auf den Status eines Prozesses Einfluss zu nehmen.&lt;br /&gt;
&lt;br /&gt;
===Prozesstabelle (Anzeige mit ps)===&lt;br /&gt;
Da zu jedem Prozess Kenndaten geführt werden, müssen diese auch irgendwo&lt;br /&gt;
festgehalten werden. Das geschieht in der sogenannten Prozesstabelle.&lt;br /&gt;
&lt;br /&gt;
Kenndaten der Prozesse (Auswahl):&lt;br /&gt;
* F Flags (z.B. ausgelagert; Systemprozess; Trace,...)&lt;br /&gt;
* UID Nutzer, mit dessen Rechten der Prozess ausgeführt wird&lt;br /&gt;
* PID Prozess - ID. Diese Nummer gibt eine eindeutige Prozess - Nummer&lt;br /&gt;
an. Sie wird vom System automatisch beim Starten des Prozesses&lt;br /&gt;
vergeben und ist für die Laufzeit eindeutig.&lt;br /&gt;
* PPID Prozessnumer der Eltern-Prozesses&lt;br /&gt;
* PRI Priorität eines Prozesses; je niedriger der Wert ist, desto besser&lt;br /&gt;
* NI ist der Nicewert des Prozesses; Nice erniedrigt den Grundwert&lt;br /&gt;
der Priorität des Prozesses und gibt damit Prozessorzeit für andere&lt;br /&gt;
Prozesse frei.&lt;br /&gt;
* SIZE Speichergröße des Prozesses inklusive Stack (eine Art Zwischenspeicher)&lt;br /&gt;
* RSS Verbrauch an physischen Speicher&lt;br /&gt;
* WCHAN ist der Name der Kernerlfunktion, in der der Prozess schläft&lt;br /&gt;
* STAT Status des Prozesses&lt;br /&gt;
R läuft       S schlafend     D nicht störbarer Schlaf&lt;br /&gt;
T angehalten  Z Zombie        W der Prozess belegt keine Seiten&lt;br /&gt;
* TIME Bisland benötigte Prozessorzeit&lt;br /&gt;
* SIZE ist die Größe von Text, Daten und Stack&lt;br /&gt;
* TTY die Nummer des kontrollierenden Teminal; wenn hier ein ? steht,&lt;br /&gt;
handelt es sich um einen Dämon oder Serverprozess.&lt;br /&gt;
* COMMAND Angabe des Prozesses selbst. Dies ist meist der Programmname.&lt;br /&gt;
&lt;br /&gt;
Weiteres&lt;br /&gt;
* GID Gruppe, unter der der Prozess läuft&lt;br /&gt;
* Verweis auf das aktuellen Arbeitsverzeichnis&lt;br /&gt;
* Um mit relativen Pfadangaben arbeiten zu können braucht man diesen Eintrag&lt;br /&gt;
* Tabelle mit Verweisen auf aktuell geöffnete Dateien&lt;br /&gt;
* 3 sind automatisch geöffnet Standardeingabe, Standardausgabe und&lt;br /&gt;
Standardfehlerkanal&lt;br /&gt;
&lt;br /&gt;
Beispiel&lt;br /&gt;
 root@zero:~# ps -l&lt;br /&gt;
 F S   UID   PID  PPID  C PRI  NI ADDR SZ WCHAN  TTY          TIME CMD&lt;br /&gt;
 4 R     0 18639 18631  0  80   0 -  1080 -      pts/0    00:00:00 bash&lt;br /&gt;
 0 R     0 25904 18639  0  80   0 -   635 -      pts/0    00:00:00 ps&lt;br /&gt;
&lt;br /&gt;
===Eltern und Kinder===&lt;br /&gt;
Jeder Prozess kann weitere Prozesse erzeugen. Die erzeugten Prozesse bezeichnet&lt;br /&gt;
man als Kindprozesse. Jeder Kindprozess weiß anhand der PID, woher er stammt.&lt;br /&gt;
&lt;br /&gt;
Alle Prozesse sind von einem anderen Prozess gestartet worden, mit Ausnahme&lt;br /&gt;
des Pseudoprozesses (noch im Kernel beim Starten erzeugter Prozess). Dieser hat&lt;br /&gt;
die Prozessnummer 0. Er hat die Aufgabe, den Init Prozess ( /sbin/init die Nummer&lt;br /&gt;
1) zu starten, der in System V alle anderen Prozesse direkt oder über seine Kind-&lt;br /&gt;
prozesse startet. (init wird konfiguriert durch die /etc/inittab)&lt;br /&gt;
&lt;br /&gt;
Es gibt zwei Arten wie ein Prozess gestartet werden kann:&lt;br /&gt;
&lt;br /&gt;
# Fork und Exec: Prozessumgebung wird dupliziert, der neue Prozess bekommt eine eigene neue PID&lt;br /&gt;
# Exec: Alter Prozess wird durch neuen Prozess überladen (geht mit dem shell-buildin exec)&lt;br /&gt;
&lt;br /&gt;
'''Rechte auf Objekte UID GID'''&lt;br /&gt;
Ob ein Prozess auf eine Datei zugreifen kann, entscheidet der Kernel anhand der&lt;br /&gt;
Zugriffssrechte, die auf der Datei gesetzt sind. Er checkt anhand der UID und GID&lt;br /&gt;
des Prozesses, ob es erlaubt ist. Mit dieser Technik wird letztendlich geprüft, was&lt;br /&gt;
ein User darf, und was nicht.&lt;br /&gt;
&lt;br /&gt;
===Rechenzeit und Priorität===&lt;br /&gt;
Da auch bei Prozessen eine Gerechtigkeit herschen muss, muss eine Instanz&lt;br /&gt;
darüber entscheiden wie lange ein Prozess Rechenzeit verbrauchen darf.&lt;br /&gt;
Folgende Kenndaten werden dazu benötigt&lt;br /&gt;
* clocktick = Zeiteinheit&lt;br /&gt;
* n = Faktor über den Kernel einstellbar&lt;br /&gt;
* slice = n &amp;lt;nowiki&amp;gt;*&amp;lt;/nowiki&amp;gt; clocktick&lt;br /&gt;
* agingtime = weitere Zeiteinheit über den Kernel einstellbar&lt;br /&gt;
&lt;br /&gt;
Es wird davon ausgegangen das der Prozess mit der niedrigsten Priorität gerade&lt;br /&gt;
rechnet. Pro clocktick erhöht sich die Priorität dieses Prozesses um eins.&lt;br /&gt;
&lt;br /&gt;
Jetzt können 3 Situationen eintreten die alle dazu führen das der Scheduler&lt;br /&gt;
aufgerufen wird.&lt;br /&gt;
&lt;br /&gt;
# Prozess blockiert wegen einer Ausgabe oder Eingabe.&lt;br /&gt;
# Gibt Rechenzeit freiwillig ab.&lt;br /&gt;
# Der Slice endet.&lt;br /&gt;
&lt;br /&gt;
Der Aufruf des Schedulers bewirkt das der Prozess mit der niedrigsten Priorität&lt;br /&gt;
gescheduled wird, er also nun rechnen darf. Nach Ablauf der agingtime werden&lt;br /&gt;
nun die Prozesse &amp;quot;gealtert&amp;quot;. Das geschieht nach folgender Formel&lt;br /&gt;
&lt;br /&gt;
Neue Priorität = Alte Priorität / 2 + Nicewert&lt;br /&gt;
&lt;br /&gt;
Der User hat die Möglichkeit, über den sogenannten Nicewert den Grundwert für&lt;br /&gt;
einen Prozess zu senken. Der Prozess braucht dann länger für seine Abarbeitung.&lt;br /&gt;
Er verhält sich somit netter zu den anderen Prozessen. Normale User können nur&lt;br /&gt;
netter werden, der Systemverwalter kann auch nicht netter (gemeiner) werden. Der&lt;br /&gt;
Bereich liegt zwischen 19 (sehr nett) bis 0 (weniger nett) für die User, und 19 bis&lt;br /&gt;
-20 für root.&lt;br /&gt;
&lt;br /&gt;
[[Image:pri.png]]&lt;br /&gt;
&lt;br /&gt;
'''Signale'''&lt;br /&gt;
&lt;br /&gt;
Mit den Kommando kill und killall kann man Prozessen Signale schicken&lt;br /&gt;
&lt;br /&gt;
 kill -Signalnummer PID &lt;br /&gt;
&lt;br /&gt;
Signalnummer&lt;br /&gt;
{| border=1 cellpadding=2&lt;br /&gt;
!Signalname&lt;br /&gt;
!Wert&lt;br /&gt;
!Aktion&lt;br /&gt;
|-&lt;br /&gt;
|SIGHUP&lt;br /&gt;
|1&lt;br /&gt;
|Neuinitialisierung eines Prozesses&lt;br /&gt;
|-&lt;br /&gt;
|SIGINT&lt;br /&gt;
|2&lt;br /&gt;
|Interrupt-Signal von der Tastatur (STRG+c)&lt;br /&gt;
|-&lt;br /&gt;
|SIGQUIT&lt;br /&gt;
|3&lt;br /&gt;
|Interrupt-Signal von der Tastatur (STRG+c) mit Dump&lt;br /&gt;
|-&lt;br /&gt;
|SIGKILL&lt;br /&gt;
|9&lt;br /&gt;
|unwiderrufliches Beendigungssignal (Töten)&lt;br /&gt;
|-&lt;br /&gt;
|SIGSEGV&lt;br /&gt;
|11&lt;br /&gt;
|Ungültige Speicherreferenz (bedeutet oft auf defekten Speicher)&lt;br /&gt;
|-&lt;br /&gt;
|SIGTERM &lt;br /&gt;
|15&lt;br /&gt;
|Beendigungssignal (geöffnete Dateien werden geschlossen)&lt;br /&gt;
|-&lt;br /&gt;
|SIGCONT &lt;br /&gt;
|18&lt;br /&gt;
|Weiterfahren, wenn gestoppt&lt;br /&gt;
|-&lt;br /&gt;
|SIGSTOP&lt;br /&gt;
|19&lt;br /&gt;
|Prozessstop&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Beispiel&lt;br /&gt;
 root@zero:~# kill -1 7562&lt;br /&gt;
&lt;br /&gt;
===Programme im Zusammenhang mit Prozessen===&lt;br /&gt;
====ps: Zeigt die Prozesse mit ihrem Status an====&lt;br /&gt;
 root@zero:~# ps&lt;br /&gt;
  PID TTY          TIME CMD&lt;br /&gt;
 14134 pts/0    00:00:00 bash&lt;br /&gt;
 14149 pts/0    00:00:00 ps&lt;br /&gt;
&lt;br /&gt;
 root@zero:~# ps -elf | grep apache&lt;br /&gt;
 1 S root      5738     1  0  80   0 -  5461 select Jun16 ?        00:00:00 /usr/sbin/apache2 -k start&lt;br /&gt;
 5 S www-data  5739  5738  0  80   0 -  5581 inet_c Jun16 ?        00:00:00 /usr/sbin/apache2 -k start&lt;br /&gt;
 5 S www-data  5742  5738  0  80   0 -  5461 inet_c Jun16 ?        00:00:00 /usr/sbin/apache2 -k start&lt;br /&gt;
 5 S www-data  5743  5738  0  80   0 -  5461 inet_c Jun16 ?        00:00:00 /usr/sbin/apache2 -k start&lt;br /&gt;
 5 S www-data  5745  5738  0  80   0 -  5461 inet_c Jun16 ?        00:00:00 /usr/sbin/apache2 -k start&lt;br /&gt;
 5 S www-data  5746  5738  0  80   0 -  5461 inet_c Jun16 ?        00:00:00 /usr/sbin/apache2 -k start&lt;br /&gt;
 0 S root     14153 14134  0  80   0 -   837 pipe_w 16:59 pts/0    00:00:00 grep apache&lt;br /&gt;
&lt;br /&gt;
Option 	Beschreibung&lt;br /&gt;
*l langes Format&lt;br /&gt;
*u 	zeige für jeden Prozess Besitzer und Startzeit an&lt;br /&gt;
*j 	Jobs-Format: Zeige PGID und SID an&lt;br /&gt;
*s 	Informationen über Signale ausgeben&lt;br /&gt;
*m 	Speicher-Informationen anzeigen&lt;br /&gt;
*f 	Baumstruktur der Prozesse anzeigen (ähnlich pstree)&lt;br /&gt;
*a 	alle Prozesse (jedes Benutzers) anzeigen&lt;br /&gt;
*x 	kontrollierendes Terminal nicht anzeigen&lt;br /&gt;
*e 	Für den Prozess gültige Umgebungsvariablen mit anzeigen (sinnvollerweise mit mehreren Optionen »w« anwenden, um die Ausgabe nicht am Zeilenende abzuschneiden)&lt;br /&gt;
*w 	längere Ausgabe. »w« kann mehrfach verwendet werden, um die maximale Länge um je eine Zeile zu vergrößern&lt;br /&gt;
*h 	Header mit Feldbezeichnern unterdrücken&lt;br /&gt;
*r 	nur laufende Prozesse ausgeben&lt;br /&gt;
*n 	User-ID statt User-Name ausgeben&lt;br /&gt;
*txx 	nur Prozesse ausgeben, die vom angegebenen Terminal kontrolliert werden. xx kann entweder einer der Terminal-Gerätenamen unter /dev (z.B. tty1) oder die entsprechende Kurzbezeichnung ohne »tty« (z.B. 1) sein.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
====nice: Lässt ein Programm mit verändertem Grundwert der Priorität laufen====&lt;br /&gt;
 root@zero:~# nice&lt;br /&gt;
 0&lt;br /&gt;
 root@zero:~# nice -n 9 bash&lt;br /&gt;
 root@zero:~# nice&lt;br /&gt;
 9&lt;br /&gt;
 root@zero:~#&lt;br /&gt;
&lt;br /&gt;
====renice: Ändert den Grundwert der Priorität eines laufenden Prozesses====&lt;br /&gt;
 root@zero:~# renice 10 5742&lt;br /&gt;
 5742: Alte Priorität: 0, neue Priorität: 10&lt;br /&gt;
&lt;br /&gt;
====top: Zeigt die Prozesse mit ihrem Status an (Abbrechen mit q)====&lt;br /&gt;
 root@zero:~# top&lt;br /&gt;
 top - 08:51:08 up 20 min,  1 user,  load average: 0.00, 0.02, 0.06&lt;br /&gt;
 Tasks:  93 total,   1 running,  92 sleeping,   0 stopped,   0 zombie&lt;br /&gt;
 Cpu(s):  1.6%us,  3.1%sy,  0.1%ni, 84.9%id, 10.2%wa,  0.0%hi,  0.2%si,  0.0%st&lt;br /&gt;
 Mem:    509504k total,   273948k used,   235556k free,    11312k buffers&lt;br /&gt;
 Swap:   321260k total,        0k used,   321260k free,   118380k cached&lt;br /&gt;
 &lt;br /&gt;
  PID USER      PR  NI  VIRT  RES  SHR S %CPU %MEM    TIME+  COMMAND                                                                       &lt;br /&gt;
 2208 mysql     20   0  125m  21m 5552 S  1.7  4.2   0:02.29 mysqld                                                                        &lt;br /&gt;
 3201 root      20   0  2444 1064  828 R  1.7  0.2   0:00.04 top                                                                           &lt;br /&gt;
    1 root      20   0  1908  780  564 S  0.0  0.2   0:02.19 init                                                                          &lt;br /&gt;
    2 root      15  -5     0    0    0 S  0.0  0.0   0:00.00 kthreadd                                                                      &lt;br /&gt;
    3 root      RT  -5     0    0    0 S  0.0  0.0   0:00.00 migration/0                                                                   &lt;br /&gt;
    4 root      15  -5     0    0    0 S  0.0  0.0   0:00.03 ksoftirqd/0                                                                   &lt;br /&gt;
    5 root      RT  -5     0    0    0 S  0.0  0.0   0:00.00 watchdog/0                                                                    &lt;br /&gt;
    6 root      15  -5     0    0    0 S  0.0  0.0   0:00.04 events/0                                                                      &lt;br /&gt;
    7 root      15  -5     0    0    0 S  0.0  0.0   0:00.00 khelper                                                                       &lt;br /&gt;
    8 root      RT  -5     0    0    0 S  0.0  0.0   0:00.00 kstop/0                                                                       &lt;br /&gt;
    9 root      15  -5     0    0    0 S  0.0  0.0   0:00.00 kintegrityd/0                                                                 &lt;br /&gt;
   10 root      15  -5     0    0    0 S  0.0  0.0   0:00.03 kblockd/0                                                                     &lt;br /&gt;
   11 root      15  -5     0    0    0 S  0.0  0.0   0:00.00 kacpid                                                                        &lt;br /&gt;
   12 root      15  -5     0    0    0 S  0.0  0.0   0:00.00 kacpi_notify                                                                  &lt;br /&gt;
   13 root      15  -5     0    0    0 S  0.0  0.0   0:00.00 cqueue                                                                        &lt;br /&gt;
   14 root      15  -5     0    0    0 S  0.0  0.0   0:00.53 ata/0                                                                         &lt;br /&gt;
   15 root      15  -5     0    0    0 S  0.0  0.0   0:00.00 ata_aux&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* pstree: Zeigt die Prozesse als Baumstruktur&lt;br /&gt;
 root@zero:~# pstree&lt;br /&gt;
 init─┬─NetworkManager&lt;br /&gt;
      ├─acpid&lt;br /&gt;
      ├─apache2───5*[apache2]&lt;br /&gt;
      ├─atd&lt;br /&gt;
      ├─bluetoothd&lt;br /&gt;
      ├─console-kit-dae───63*[{console-kit-dae}]&lt;br /&gt;
      ├─cron&lt;br /&gt;
      ├─cupsd&lt;br /&gt;
      ├─dbus-daemon&lt;br /&gt;
      ├─dd&lt;br /&gt;
      ├─gdm───gdm─┬─Xorg&lt;br /&gt;
      │           └─gdmgreeter&lt;br /&gt;
      ├─6*[getty]&lt;br /&gt;
      ├─hald───hald-runner─┬─hald-addon-acpi&lt;br /&gt;
      │                    ├─hald-addon-inpu&lt;br /&gt;
      │                    └─2*[hald-addon-stor]&lt;br /&gt;
      ├─klogd&lt;br /&gt;
      ├─nm-system-setti&lt;br /&gt;
      ├─nmbd&lt;br /&gt;
      ├─nscd───11*[{nscd}]&lt;br /&gt;
      ├─portmap&lt;br /&gt;
      ├─rpc.statd&lt;br /&gt;
      ├─slapd───2*[{slapd}]&lt;br /&gt;
      ├─smbd───smbd&lt;br /&gt;
      ├─sshd───sshd───bash───bash───pstree&lt;br /&gt;
      ├─syslogd&lt;br /&gt;
      ├─system-tools-ba&lt;br /&gt;
      ├─udevd&lt;br /&gt;
      ├─winbindd─┬─winbindd───winbindd&lt;br /&gt;
      │          └─3*[winbindd]&lt;br /&gt;
      └─wpa_supplicant&lt;br /&gt;
&lt;br /&gt;
===Jobs===&lt;br /&gt;
Unter einem Job versteht man ein Programm, welches man von der Shell gelöst&lt;br /&gt;
hat. D. h. man kann ganz normal weiter arbeiten und der Job verrichtet seinen&lt;br /&gt;
Dienst im Hintergrund. Man kann jederzeit zu diesem Job wieder Kontakt&lt;br /&gt;
aufnehmen.&lt;br /&gt;
&lt;br /&gt;
Ein Job kann auf 2 Arten gestarten werden:&lt;br /&gt;
&lt;br /&gt;
# Durch Anhängen des &amp;amp; Zeichens beim Programmstart&lt;br /&gt;
 root@zero:~# tail -f /var/log/messages &amp;amp;&lt;br /&gt;
 Jun 19 06:59:31 zero -- MARK --&lt;br /&gt;
 Jun 19 07:19:31 zero -- MARK --&lt;br /&gt;
 Jun 19 07:39:32 zero -- MARK --&lt;br /&gt;
 Jun 19 07:44:57 zero syslogd 1.5.0#5ubuntu3: restart.&lt;br /&gt;
 Jun 19 07:59:32 zero -- MARK --&lt;br /&gt;
 Jun 19 08:19:32 zero -- MARK --&lt;br /&gt;
 Jun 19 08:39:32 zero -- MARK --&lt;br /&gt;
 Jun 19 08:59:32 zero -- MARK --&lt;br /&gt;
 Jun 19 09:19:33 zero -- MARK --&lt;br /&gt;
 Jun 19 09:39:33 zero -- MARK --&lt;br /&gt;
 [3] 27421&lt;br /&gt;
&lt;br /&gt;
# Durch Stoppen des Prozesses durch Drücken von Strg-Z und in den Hintergrund schicken mit %n (n ist die Jobnummer)&lt;br /&gt;
 root@zero:~# watch cat /proc/cpuinfo&lt;br /&gt;
 Strg-Z&lt;br /&gt;
 [4]+  Stopped                 watch cat /proc/cpuinfo&lt;br /&gt;
 root@zero:~# bg %4&lt;br /&gt;
 [4]+ watch cat /proc/cpuinfo &amp;amp;&lt;br /&gt;
&lt;br /&gt;
Anweisungen im Zusammenhang mit Jobs (n ist die Jobnummer)&lt;br /&gt;
* bg %n : Einen Job in den Hintergrund stellen (wie oben)&lt;br /&gt;
* fg %n : Einen Job in den Vordergrund holen&lt;br /&gt;
 root@zero:~# fg %4&lt;br /&gt;
 watch cat /proc/cpuinfo&lt;br /&gt;
&lt;br /&gt;
* jobs : Aktive Jobs ausgeben&lt;br /&gt;
&lt;br /&gt;
 root@zero:~# jobs&lt;br /&gt;
 [1]   Running                 tail -f /var/log/syslog &amp;amp;&lt;br /&gt;
 [2]   Running                 tail -f /var/log/syslog &amp;amp;&lt;br /&gt;
 [3]-  Running                 tail -f /var/log/messages &amp;amp;&lt;br /&gt;
 [4]+  Stopped                 watch cat /proc/cpuinfo&lt;br /&gt;
&lt;br /&gt;
* Strg-Z : Einen Vordergrund-Job vorübergehend anhalten&lt;br /&gt;
* kill -STOP %n : Unterbricht Job im Hintergrund&lt;br /&gt;
 root@zero:~# kill -STOP %1&lt;br /&gt;
 root@zero:~# jobs&lt;br /&gt;
 [1]+  '''Stopped'''                 tail -f /var/log/syslog&lt;br /&gt;
 [2]   Running                 tail -f /var/log/syslog &amp;amp;&lt;br /&gt;
 [3]   Running                 tail -f /var/log/messages &amp;amp;&lt;br /&gt;
 [4]-  Stopped                 watch cat /proc/cpuinfo&lt;br /&gt;
* kill -CONT %n : Setzt den unterbrochenen Job im Hintergrund fort&lt;br /&gt;
root@zero:~# kill -CONT %1&lt;br /&gt;
root@zero:~# jobs&lt;br /&gt;
 [1]+  '''Running'''                 tail -f /var/log/syslog &amp;amp;&lt;br /&gt;
 [2]   Running                 tail -f /var/log/syslog &amp;amp;&lt;br /&gt;
 [3]   Running                 tail -f /var/log/messages &amp;amp;&lt;br /&gt;
 [4]-  Stopped                 watch cat /proc/cpuinfo&lt;br /&gt;
* kill -KILL %n : Tötet Job im Hintergrund&lt;br /&gt;
 root@zero:~# kill -KILL %1&lt;br /&gt;
 root@zero:~# jobs&lt;br /&gt;
 [1]+  '''Killed'''                  tail -f /var/log/syslog&lt;br /&gt;
 [2]   Running                 tail -f /var/log/syslog &amp;amp;&lt;br /&gt;
 [3]   Running                 tail -f /var/log/messages &amp;amp;&lt;br /&gt;
 [4]-  Stopped                 watch cat /proc/cpuinfo&lt;br /&gt;
 root@zero:~# jobs&lt;br /&gt;
 [2]   Running                 tail -f /var/log/syslog &amp;amp;&lt;br /&gt;
 [3]-  Running                 tail -f /var/log/messages &amp;amp;&lt;br /&gt;
 [4]+  Stopped                 watch cat /proc/cpuinfo&lt;br /&gt;
&lt;br /&gt;
Bedingungen, die zu Jobausführung eingehalten werden sollen:&lt;br /&gt;
* Der Job soll nicht auf den Bildschirm schreiben (Standardausgabe +Standardfehlerkanal).&lt;br /&gt;
* Er soll keine Eingaben vom Benutzer erwarten.&lt;br /&gt;
&lt;br /&gt;
==Suchen von Dateien==&lt;br /&gt;
===find===&lt;br /&gt;
 find ab_wo_wird_gesucht was_wird_gesucht aktion&lt;br /&gt;
 find [Pfad] [Bedingung] [Aktion]&lt;br /&gt;
&lt;br /&gt;
====Nach Namen====&lt;br /&gt;
 find [Pfad] '''-name''' [Name]&lt;br /&gt;
 &lt;br /&gt;
Finde alle Dateien mit Namen test ab dem Verzeichnis /home und gebe diese Zeilenweise aus&lt;br /&gt;
 root@zero:~# find /home -name test -print&lt;br /&gt;
 /home/xinux/test&lt;br /&gt;
 /home/test&lt;br /&gt;
&lt;br /&gt;
Wie oben, jedoch mit Namensanfang test&lt;br /&gt;
 root@zero:/home/xinux# find /home -name 'test*'&lt;br /&gt;
 /home/xinux/testdatei&lt;br /&gt;
 /home/xinux/test&lt;br /&gt;
 /home/test&lt;br /&gt;
&lt;br /&gt;
====Nach Benutzer(Eigentümer)====&lt;br /&gt;
 root@zero:/tmp# find /tmp/ '''-user''' xinux&lt;br /&gt;
 /tmp/datei&lt;br /&gt;
&lt;br /&gt;
====Nach Gruppe====&lt;br /&gt;
 root@zero:/tmp# find /tmp/ '''-group''' hacker&lt;br /&gt;
 /tmp/datei3&lt;br /&gt;
 /tmp/datei2&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
====Nach Typ====&lt;br /&gt;
Es wird nach Dateien anhand Ihrer Art gesucht:&lt;br /&gt;
 find [Pfad] '''-type''' [Typ] &lt;br /&gt;
Typ:&lt;br /&gt;
* f: Normale Dateien&lt;br /&gt;
 root@zero:~# find /tmp/ -type f&lt;br /&gt;
 /tmp/mbr.img&lt;br /&gt;
 /tmp/datei&lt;br /&gt;
 /tmp/zeugs&lt;br /&gt;
 /tmp/.X0-lock&lt;br /&gt;
* d: Verzeichnisse&lt;br /&gt;
 root@zero:~# find /var/log -type d&lt;br /&gt;
 /var/log&lt;br /&gt;
 /var/log/apache2&lt;br /&gt;
 /var/log/unattended-upgrades&lt;br /&gt;
 /var/log/apparmor&lt;br /&gt;
 /var/log/ConsoleKit&lt;br /&gt;
 /var/log/dist-upgrade&lt;br /&gt;
 /var/log/dist-upgrade/20090526-1052&lt;br /&gt;
 /var/log/cups&lt;br /&gt;
 /var/log/apt&lt;br /&gt;
 /var/log/fsck&lt;br /&gt;
 /var/log/samba&lt;br /&gt;
 /var/log/samba/cores&lt;br /&gt;
 /var/log/samba/cores/smbd&lt;br /&gt;
 /var/log/samba/cores/nmbd&lt;br /&gt;
 /var/log/samba/cores/winbindd&lt;br /&gt;
 /var/log/installer&lt;br /&gt;
 /var/log/gdm&lt;br /&gt;
 /var/log/news&lt;br /&gt;
* c: Char Devices (Zeichenorientierte Gerätedatei)&lt;br /&gt;
 root@zero:~# find / -type c&lt;br /&gt;
 /lib/udev/devices/kmem&lt;br /&gt;
 /lib/udev/devices/null&lt;br /&gt;
 /lib/udev/devices/console&lt;br /&gt;
 /lib/udev/devices/ppp&lt;br /&gt;
 /lib/udev/devices/net/tun&lt;br /&gt;
* b: Block Devices (Blockorientierte Gerätedatei)&lt;br /&gt;
* p: Benannte Pipe&lt;br /&gt;
* l: Links&lt;br /&gt;
* s: Sockets&lt;br /&gt;
&lt;br /&gt;
====Nach Modifikation====&lt;br /&gt;
Listet alle Dateien in /etc auf, die innerhalb von zwei Tagen modifiziert wurden&lt;br /&gt;
 root@zero:/var/log# find /etc/ -mtime 2 -print&lt;br /&gt;
 /etc/apache2&lt;br /&gt;
 /etc/apache2/mods-available&lt;br /&gt;
 /etc/apache2/conf.d&lt;br /&gt;
 /etc/apache2/sites-available&lt;br /&gt;
 /etc/bash_completion.d&lt;br /&gt;
 /etc/blkid.tab.old&lt;br /&gt;
 /etc/firefox-3.0/profile&lt;br /&gt;
 /etc/firefox-3.0/profile/chrome&lt;br /&gt;
 /etc/firefox-3.0/pref&lt;br /&gt;
 /etc/profile.d&lt;br /&gt;
 /etc/ufw/applications.d&lt;br /&gt;
 /etc/logrotate.d&lt;br /&gt;
 /etc/xulrunner-1.9&lt;br /&gt;
 /etc/blkid.tab&lt;br /&gt;
 /etc/cron.daily&lt;br /&gt;
 /etc/alternatives&lt;br /&gt;
 /etc/alternatives/x-www-browser&lt;br /&gt;
 /etc/alternatives/xulrunner&lt;br /&gt;
 /etc/gre.d&lt;br /&gt;
 /etc/hal/fdi/policy&lt;br /&gt;
 /etc/dbus-1/system.d&lt;br /&gt;
 /etc/udev/rules.d&lt;br /&gt;
&lt;br /&gt;
====Nach Größe====&lt;br /&gt;
Finde Dateien in /tmp, die größer als 100 MByte sind&lt;br /&gt;
 root@zero:/tmp# find /tmp/ -size +100M&lt;br /&gt;
 /tmp/datei&lt;br /&gt;
&lt;br /&gt;
Finde Dateien in /tmp, die kleiner als 100 KByte sind&lt;br /&gt;
 root@zero:/tmp# find /tmp/ -size -100k&lt;br /&gt;
 /tmp/&lt;br /&gt;
 /tmp/datei3&lt;br /&gt;
 /tmp/backup &lt;br /&gt;
 /tmp/datei2&lt;br /&gt;
 /tmp/.winbindd &lt;br /&gt;
 /tmp/.winbindd/pipe&lt;br /&gt;
 /tmp/mbr.img&lt;br /&gt;
 /tmp/zeugs&lt;br /&gt;
 /tmp/.ICE-unix&lt;br /&gt;
 /tmp/.X0-lock&lt;br /&gt;
 /tmp/datei1&lt;br /&gt;
 /tmp/.X11-unix&lt;br /&gt;
 /tmp/.X11-unix/X0&lt;br /&gt;
 /tmp/pulse-PKdhtXMmr18n&lt;br /&gt;
&lt;br /&gt;
====Nach Berechtigungen====&lt;br /&gt;
Finde Dateien in Home mit der Berechtigung 777 (-rwxrwxrwx)&lt;br /&gt;
 root@zero:/var# find /home/ -perm 777&lt;br /&gt;
 /home/samba&lt;br /&gt;
 /home/xinux/Examples&lt;br /&gt;
 /home/xinux/.pulse/1f0763ee4cf4c7e1d3c07fd149dda37b:runtime&lt;br /&gt;
 /home/test/Examples&lt;br /&gt;
&lt;br /&gt;
===locate===&lt;br /&gt;
Locate arbeitet über einen Index, der erstellt und aktualisiert werden muss. Aus diesem Grund kann locate teilweise nicht &lt;br /&gt;
akutell sein. Es ist immer schneller als find und es durchsucht immer das ganze Dateisystem. &lt;br /&gt;
 locate [Dateiname]&lt;br /&gt;
 &lt;br /&gt;
Lokalisiere die Datei wvdial.conf. Anmerkung: Der Stern wird beim Suchen automatisch hinzugefügt. Entspricht also&lt;br /&gt;
wvidal.conf*&lt;br /&gt;
 root@zero:~# locate wvdial.conf&lt;br /&gt;
 /etc/wvdial.conf&lt;br /&gt;
 /usr/share/man/man5/wvdial.conf.5.gz&lt;br /&gt;
 /var/lib/dpkg/info/wvdial.conffiles&lt;br /&gt;
 /var/lib/dpkg/info/wvdial.config&lt;br /&gt;
&lt;br /&gt;
Lokalisiere die Datei wvdial.conf und nur diese&lt;br /&gt;
 root@zero:~# locate -b '\wvdial.conf'&lt;br /&gt;
 /etc/wvdial.conf&lt;br /&gt;
&lt;br /&gt;
Aktualisieren des Indexes&lt;br /&gt;
 root@zero:~# updatedb&lt;br /&gt;
&lt;br /&gt;
==Wie wird ein Kommando lokalisiert==&lt;br /&gt;
Wenn die Shell alle Ersetzungen in der Kommandozeile vorgenommen und alle Umleitungen vorbereitet hat, ist der Zeitpunkt &lt;br /&gt;
gekommen, auf den der Anwender die ganze Zeit gewartet hat. Die Shell versucht das Kommando auszuführen. Dazu muss sie &lt;br /&gt;
es aber erst lokalisieren. Das erste passende Kommando wird ausgeführt.&lt;br /&gt;
&lt;br /&gt;
Als Kommandoname wird immer das erste Wort eines einfachen Kommandos erkannt. Ein Kommandoname kann mit Pfadnamen in &lt;br /&gt;
einem Verzeichnis (absolut oder relativ) angegeben werden. Die Shell erkennt dies an (mindestens) einem Slash `/' &lt;br /&gt;
im Kommandonamen. Wenn kein Verzeichnis angegeben ist, versucht die Shell selbst, das Kommando zu finden. Dazu wird &lt;br /&gt;
der Kommandoname zuerst in der Hashtabelle gesucht, dann wird er mit den Synonymen, mit den Scriptfunktionen und &lt;br /&gt;
schließlich mit den Shellfunktionen verglichen. &lt;br /&gt;
&lt;br /&gt;
Wird auf diese Weise kein Programm dieses Namens gefunden, werden alle in der PATH-Umgebungsvariablen aufgeführten &lt;br /&gt;
Verzeichnisse nach einer ausführbaren Datei dieses Namens durchsucht. Wird auch hier kein passendes Kommando gefunden, &lt;br /&gt;
gibt die Shell eine Fehlermeldung aus.&lt;br /&gt;
&lt;br /&gt;
===which und type===&lt;br /&gt;
====which====&lt;br /&gt;
which gibt die vollen Pfadnamen der Dateien aus, die bei Benutzung des angegebenen Befehls ausgeführt werden würden.&lt;br /&gt;
&lt;br /&gt;
 which [-a] Dateiname &lt;br /&gt;
&lt;br /&gt;
Optionen:&lt;br /&gt;
&lt;br /&gt;
* -a : Alle Treffer ausgeben, nicht nur den ersten&lt;br /&gt;
* --skip-dot : Verzeichnisse, die mit einem Punkt beginnen, auslassen&lt;br /&gt;
&lt;br /&gt;
Beispiel&lt;br /&gt;
 root@zero:~# which startx&lt;br /&gt;
 /usr/bin/startx&lt;br /&gt;
&lt;br /&gt;
====type====&lt;br /&gt;
Anzeigen der absoluten Pfadnamen von Befehlen, und ob sich diese Befehle in der Hash-Tabelle der aktuellen&lt;br /&gt;
Shell befinden.&lt;br /&gt;
&lt;br /&gt;
 type [Optionen] Befehle&lt;br /&gt;
&lt;br /&gt;
Beispiel&lt;br /&gt;
 root@zero:~# type ls&lt;br /&gt;
 ls is aliased to `ls --color=auto'&lt;br /&gt;
&lt;br /&gt;
Optionen:&lt;br /&gt;
&lt;br /&gt;
* -a : Alle vorkommenden Befehle werden ausgegeben, nicht nur das, welches aufgerufen werden würde&lt;br /&gt;
 root@zero:~# type '''-a''' ls&lt;br /&gt;
 ls is aliased to `ls --color=auto'&lt;br /&gt;
 ls is /bin/ls&lt;br /&gt;
&lt;br /&gt;
* -p : Anzeigen des Eintrags von Befehl in der Hash-Tabelle. Dieser Wert kann sich vom ersten Auftreten des Befehls in PATH&lt;br /&gt;
unterscheiden&lt;br /&gt;
 root@zero:~# type '''-p''' apache2&lt;br /&gt;
 /usr/sbin/apache2&lt;br /&gt;
&lt;br /&gt;
* -t : Anzeigen, ob Befehl ein Aliasname, ein Schlüsselwort, eine Funktion, ein eingebauter Befehl oder eine Datei ist&lt;br /&gt;
 root@zero:~# type '''-t''' apache2&lt;br /&gt;
 file&lt;/div&gt;</summary>
		<author><name>192.168.178.46</name></author>
	</entry>
	<entry>
		<id>https://www.xinux.net/index.php?title=Linux_Grundlagen&amp;diff=114</id>
		<title>Linux Grundlagen</title>
		<link rel="alternate" type="text/html" href="https://www.xinux.net/index.php?title=Linux_Grundlagen&amp;diff=114"/>
		<updated>2009-07-08T06:52:31Z</updated>

		<summary type="html">&lt;p&gt;192.168.178.46: /* Programme im Zusammenhang mit Prozessen */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Einführung==&lt;br /&gt;
===Geschichte Unix===&lt;br /&gt;
====1969====&lt;br /&gt;
Am Anfang von Linux steht Multics, ein von Bell Laboratories geschaffenes &amp;quot;Betriebssystem&amp;quot;, &lt;br /&gt;
das noch mit Lochkarten arbeitete. Multics wird mit Unterstützung von AT&amp;amp;T und Western &lt;br /&gt;
Electric unter Mitarbeit von Ken Thompson und Dennis Ritchie weiterentwickelt. Obwohl sich &lt;br /&gt;
Bell Laboratories bald zurückzieht, gibt Thompson das Projekt nicht auf.  Zum Entwicklerteam &lt;br /&gt;
gehören auch Rudd Canaday und Brian Kernighan. Letzterer gibt 1970 dem Betriebssystem den Namen UNIX. &lt;br /&gt;
Thompson definiert 7 Richtlinien für UNIX:&lt;br /&gt;
 &lt;br /&gt;
# Hierarchische Anordnung der Dateisysteme&lt;br /&gt;
# Die Ausgabe von Daten an die Peripherie(-geräte) und Dateien soll gleich sein.&lt;br /&gt;
# Prozesse und Programme sollen miteinander kommunizieren.&lt;br /&gt;
# Multitasking (voneinander getrennte Prozesse)&lt;br /&gt;
# Persönliche Shell's&lt;br /&gt;
# Der Compiler soll für viele Programmiersprachen tauglich sein.&lt;br /&gt;
# Portabilität&lt;br /&gt;
&lt;br /&gt;
====1971====&lt;br /&gt;
Bis 1971 ist das für eine DEC PDP-7 geschriebene Unix als Version 1 auf eine PDP-11 portiert. Bis&lt;br /&gt;
zur Version 4 entwickelt Ritchie die Programmier- (Hoch-) Sprache C. Das in Assembler geschriebene&lt;br /&gt;
Unix wird fast völlig nach C übersetzt, wodurch zum erstenmal die geforderte Hardware-Unabhängigkeit&lt;br /&gt;
des Betriebssystems realisiert werden kann.&lt;br /&gt;
&lt;br /&gt;
====1975====&lt;br /&gt;
Da AT&amp;amp;T aufgrund vertraglicher Bindungen mit der US-Bundesregierung Unix nicht kommerziell vermarkten darf, stellt sie den Source Code für ein paar hundert Dollar den Universitäten, Lehr- und Forschungsanstalten zur Verfügung. Dies führt zu einer sehr dynamischen Entwicklung von Unix. 1975 wird die Version 6 als erstes UNIX-System veröffentlicht, die darauffolgende Version 7 wird sehr erfolgreich. Da es keine Standardisierung gibt, entwickeln bald verschiedenste Firmen ihr eigenes UNIX. Ab 1984 wird AT&amp;amp;T per Gerichtsbeschluss erlaubt, Unix zu vermarkten. AT&amp;amp;T verkauft sein Unix V und beginnt, sich um einen internationalen Standard von UNIX zu bemühen. &lt;br /&gt;
&lt;br /&gt;
====1984====&lt;br /&gt;
Durch Richard Stallman wird die Free Software Foundation (FSF) gegründet. Diese initiiert ein Projekt namens GNU (GNU ist Not Unix), welches das Ziel verfolgt, ein freies UNIX System zu schaffen. &lt;br /&gt;
&lt;br /&gt;
====1987====&lt;br /&gt;
AT&amp;amp;T verbietet die Verwendung des Unix Quellcodes an den Universitäten. Während dieser Zeit ist Andrew (Andy) Tannenbaum Professor an der Freien Universität von Amsterdam und entwickelt Minix. Minix ist ein kostengünstiges Lehrbetriebssystem und kommt ohne jeglichen AT&amp;amp;T Code aus, obwohl es die gleiche Funktionalität wie Unix 7 bietet. Im Usenet unter comp.os.minix entsteht eine Minix-Gemeinde, die den Minix Kernel und die Anwendungen rundherum programmiert und verbessert.&lt;br /&gt;
&lt;br /&gt;
====1991====&lt;br /&gt;
Linus Torvalds hat als Student für Computerwissenschaften an der Universität in Helsinki Minix installiert und das Buch von Andy Tannenbaum gelesen. Er beginnt im Sinne der FSF einen Unix ähnlichen Kernel zu programmieren mit der Idee, &amp;quot;ein besseres Minix als Minix&amp;quot; zu bauen. 1992 stellt er die Version 0.02 mit dem Namen Linux der Internetgemeinde zur Verfügung. &lt;br /&gt;
&lt;br /&gt;
====1994====&lt;br /&gt;
Die Linux Version 1.0 wird freigegeben. Das Linux Fieber beginnt... &lt;br /&gt;
&lt;br /&gt;
====1998====&lt;br /&gt;
Der Kreis der Linux Entwickler und Anwender ist kräftig angeschwollen. KDE 1.0 wird veröffentlicht. Die Zuwachsraten von Linux übertreffen die von Windows NT deutlich. &lt;br /&gt;
&lt;br /&gt;
====1999====&lt;br /&gt;
Der lange erwartete stabile Linux Kernel Version 2.2 wird freigegeben. Namhafte Firmen wie IBM kündigen ihre Unterstützung für Linux an. &lt;br /&gt;
&lt;br /&gt;
====2001====&lt;br /&gt;
Der lange erwartete stabile Linux Kernel Version 2.4 wird freigegeben. USB Unterstützung und eine neue Firewallimplementierung zeichnen ihn aus.&lt;br /&gt;
&lt;br /&gt;
====2003====&lt;br /&gt;
Linux Kernel Version 2.6 wird freigegeben. Am auffälligsten sind Änderungen bei der Modulverwaltung.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Distributionen===&lt;br /&gt;
{| Border=1 Cellpadding=2&lt;br /&gt;
| &lt;br /&gt;
|Url&lt;br /&gt;
|Paketformat&lt;br /&gt;
|-&lt;br /&gt;
|Red Hat&lt;br /&gt;
|www.redhat.com&lt;br /&gt;
|rpm&lt;br /&gt;
|-&lt;br /&gt;
|fedora&lt;br /&gt;
|fedora.redhat.com&lt;br /&gt;
|rpm&lt;br /&gt;
|-&lt;br /&gt;
|CentOS&lt;br /&gt;
|www.centos.org&lt;br /&gt;
|rpm&lt;br /&gt;
|-&lt;br /&gt;
|Suse/openSUSE&lt;br /&gt;
|www.opensuse.org&lt;br /&gt;
|rpm&lt;br /&gt;
|-&lt;br /&gt;
|Debian&lt;br /&gt;
|www.debian.org&lt;br /&gt;
|deb&lt;br /&gt;
|-&lt;br /&gt;
|Ubuntu&lt;br /&gt;
|www.ubuntu.com&lt;br /&gt;
|deb&lt;br /&gt;
|-&lt;br /&gt;
|Mandrake&lt;br /&gt;
|www.linux-mandrake.com&lt;br /&gt;
|rpm&lt;br /&gt;
|-&lt;br /&gt;
|Easy Linux&lt;br /&gt;
|www.easy-linux.de&lt;br /&gt;
|rpm&lt;br /&gt;
|-&lt;br /&gt;
|Turbo&lt;br /&gt;
|www.turbolinux.com&lt;br /&gt;
|rpm&lt;br /&gt;
|-&lt;br /&gt;
|minis&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|toms&lt;br /&gt;
|www.toms.net/rb&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|damn small linux&lt;br /&gt;
|www.damnsmalllinux.org&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|pocket-linux&lt;br /&gt;
|www.pocket-linux.org&lt;br /&gt;
|&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
====Bücher====&lt;br /&gt;
 Titel : Das Linux Anwenderhandbuch und Leitfaden für die Systemverwaltung&lt;br /&gt;
 Autor : Sebastian Hetze, Dirk Hohndel, Olaf Kirch und Martin Müller&lt;br /&gt;
 Verlag: Lunetix&lt;br /&gt;
 ISBN : 3-929764-06-7&lt;br /&gt;
&lt;br /&gt;
 Titel : Linux in a Nutshell&lt;br /&gt;
 Autor : Jessica Perry Hekman und die Mitarbeiter von O'Reilly &amp;amp; Associates&lt;br /&gt;
 Verlag: O'Reilly&lt;br /&gt;
 ISBN : 3-930673-57-6&lt;br /&gt;
&lt;br /&gt;
 Titel : Linux - Wegweiser zur Installation und Konfiguration&lt;br /&gt;
 Autor : Matt Welsh, Lar Kaufman, Matthias Kalle Dallheimer&lt;br /&gt;
 Verlag: O'Reilly&lt;br /&gt;
 ISBN : 3-930673-58-4 (deutsch), 1-56592-469-X (englisch)&lt;br /&gt;
&lt;br /&gt;
 Titel : Linux - Installation, Konfiguration, Anwendung&lt;br /&gt;
 Autor : Michael KoflerMultitasking&lt;br /&gt;
 Verlag: Addison-Wesley&lt;br /&gt;
 ISBN : 3-8273-1475-5&lt;br /&gt;
&lt;br /&gt;
 Titel : Linux - Wegweiser für Netzwerker&lt;br /&gt;
 Autor : Olaf Kirch&lt;br /&gt;
 Verlag: O'Reilly&lt;br /&gt;
 ISBN : 3-930673-18-5&lt;br /&gt;
&lt;br /&gt;
 Titel : TCP/IP-Netzwerk-Administration&lt;br /&gt;
 Autor : Craig Hunt&lt;br /&gt;
 Verlag: O'Reilly&lt;br /&gt;
 ISBN : 3-89721-110-6&lt;br /&gt;
&lt;br /&gt;
 Titel : Essential System Administration&lt;br /&gt;
 Autor : Eleen Frisch&lt;br /&gt;
 Verlag: O'Reilly&lt;br /&gt;
 ISBN : 1-56592-127-5&lt;br /&gt;
&lt;br /&gt;
==Betriebssystem==&lt;br /&gt;
===Was ist ein Betriebssystem?===&lt;br /&gt;
&lt;br /&gt;
Ein Betriebssystem liegt logisch gesehen zwischenAnwendungsprogramm und Hardware.&lt;br /&gt;
&lt;br /&gt;
Es nimmt die Anforderungen der Anwendungsprogramme entgegen und leitet&lt;br /&gt;
diese kontrolliert an die Hardware weiter. Kein Anwendungsprogramm sollte&lt;br /&gt;
direkt auf die Hardware zugreifen können. Den zentralen Zugang schafft einzig&lt;br /&gt;
das Betriebssystem. Somit kann das Betriebssystem unsinnige Anforderungen&lt;br /&gt;
oder Bedienungsfehler abblocken.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Image:Linux.jpg]]&lt;br /&gt;
&lt;br /&gt;
===Aufgaben eines Betriebssystems===&lt;br /&gt;
&lt;br /&gt;
# Verbergen der Komplexität der Maschine vor dem Anwender (Abstraktion)&lt;br /&gt;
# Bereitstellen einer Benutzerschnittstelle (&amp;quot;Kommandointerpreter&amp;quot;, &amp;quot;Shell&amp;quot;)&lt;br /&gt;
# Bereitstellen einer normierten Programmierschnittstelle (API)&lt;br /&gt;
# Verwaltung der Ressourcen der Maschine::&lt;br /&gt;
Hauptspeicher&lt;br /&gt;
Prozessor(en)&lt;br /&gt;
Hintergrundspeicher (Platte, Band, etc.)&lt;br /&gt;
Geräte (Terminal, Drucker, Plotter, etc.)&lt;br /&gt;
Rechenzeit&lt;br /&gt;
Koordination von Prozessen&lt;br /&gt;
&lt;br /&gt;
===Aufbau eines Betriebssystems===&lt;br /&gt;
&lt;br /&gt;
Ein Rechensystem besteht aus Hardware, Systemprogrammen und Anwendungs-&lt;br /&gt;
programmen. Unter einem Betriebssystem wird meist die Summe aus Betriebs-&lt;br /&gt;
systemkern (Kernel) und den wichtigsten Systemprogrammen verstanden. Ein&lt;br /&gt;
minimaler LINUX-Kernel besitzt ungefähr eine Größe von 400 - 800 kByte.&lt;br /&gt;
Weitere wichtige Systemkomponenten benötigen zusätzlich 10 - 100 Mbyte&lt;br /&gt;
Plattenplatz.&lt;br /&gt;
&lt;br /&gt;
Ein Betriebssystem stellt den Rechner als erweiterte Maschine (virtuelle&lt;br /&gt;
Maschine) über definierte Software-Schnittstellen zur Verfügung.&lt;br /&gt;
Das Betriebssystem dient als Betriebsmittelverwalter, der Anforderungen&lt;br /&gt;
befriedigt, protokolliert, abrechnet und vermittelt.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Aufgaben des Betriebssystemkerns:&lt;br /&gt;
&lt;br /&gt;
{| Border=1 Cellpadding=2&lt;br /&gt;
|Prozessverwaltung  (dispatching and scheduling)&lt;br /&gt;
| Mehrere Benutzer können mit mehreren Aktionen gleichzeitig im System arbeiten, ohne sich gegenseitig zu beeinflussen. Damit dies möglich ist,  müssen die Aktionen organisiert, koordiniert und verwaltet werden. Die zu verwaltende Einheit nennt man Prozess.&lt;br /&gt;
|-&lt;br /&gt;
|Speicherverwaltung   (memory management)&lt;br /&gt;
|Zuteilen von Speicherbereichen an laufende Prozesse, Schutz der Speicherbereiche vor unbefugten Zugriffen, bei Speicherengpässen: Auslagern von ganzen (swapping) oder von Teilen (paging) von Prozessen auf die Platte (swap file).&lt;br /&gt;
|-&lt;br /&gt;
|Dateiverwaltung  (file handling)&lt;br /&gt;
|Zuteilung von Plattenplatz für Programme, Benutzer und Systemdienste, Schreiben, Lesen und Strukturieren der Daten auf den Massenspeichern; Durch Bereitstellung einer entsprechenden Schnittstelle (VFS, virtual file system) kann der Kern Dateisysteme unterschiedlichster Art (EXT2, FAT, NFS, HPFS, NTFS, ...) ansprechen.&lt;br /&gt;
|-&lt;br /&gt;
|Geräteverwaltung  (resource management)&lt;br /&gt;
|Der Kern ermöglicht und kontrolliert den Zugriff auf die Hardware. Er steuert die Ein- und Ausgabetätigkeiten der Anwender. An den Kern&lt;br /&gt;
gebunden sind die entsprechenden Gerätetreiber (device driver), die damit eine Kommunikation zwischen Kern und Hardware ermöglichen.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
===Multitasking===&lt;br /&gt;
&lt;br /&gt;
Multitasking bedeutet, dass ein Rechner aus Anwendersicht mehrere Aufgaben&lt;br /&gt;
(Tasks) gleichzeitg übernehmen kann. Das Betriebssystem (OS) unterteilt die&lt;br /&gt;
gleichzeitig anstehenden Aufgaben in Einzelarbeitsschritte (Prozesse) und&lt;br /&gt;
managed durch ein Zeitscheibenverfahren (scheduling) die gleichmäßige&lt;br /&gt;
Abarbeitung der Prozesse.&lt;br /&gt;
&lt;br /&gt;
Es wird unterschieden zwischen:&lt;br /&gt;
&lt;br /&gt;
*non-präamptiven (kooperativen=die Ressourcen werden vom aktiven Prozess freigegeben, bei einem Hänger steht das ganze System)&lt;br /&gt;
&lt;br /&gt;
und&lt;br /&gt;
&lt;br /&gt;
*präamptiven (reinem=der Betriebssystemkern steuert Taskwechsel, indem nach einer festgelegten Zeit vom gerade aktiven Prozess zum nächsten weitergeschaltet wird)&lt;br /&gt;
&lt;br /&gt;
===Mehrprozessorbetrieb===&lt;br /&gt;
&lt;br /&gt;
Bei mehreren Prozessoren und Unterstützung durch das OS&lt;br /&gt;
(NT,Linux,Unix,Novell) können mehrere Tasks auf diese verteilt werden und&lt;br /&gt;
gleichzeitig bearbeitet werden. Nachteilig ist, dass dies nicht oder kaum von&lt;br /&gt;
Anwendungsprogrammen unterstützt wird und es zu Kommunikationsproblemen&lt;br /&gt;
zwischen den einzelnen Tasks kommen kann.&lt;br /&gt;
&lt;br /&gt;
===Arten von von Betriebssystemen===&lt;br /&gt;
&lt;br /&gt;
{|Border=1 Cellpadding=2&lt;br /&gt;
|&lt;br /&gt;
|SingleUser  &lt;br /&gt;
|Multiuser&lt;br /&gt;
|-&lt;br /&gt;
|Single Tasking&lt;br /&gt;
|MS - DOS&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|Multi Tasking&lt;br /&gt;
|Windows 3.x&lt;br /&gt;
|UNIX&lt;br /&gt;
|-&lt;br /&gt;
|&lt;br /&gt;
|Windows 95/98&lt;br /&gt;
|Linux&lt;br /&gt;
|-&lt;br /&gt;
|&lt;br /&gt;
|Windows NT4 ohne Erweiterungen&lt;br /&gt;
|VMS&lt;br /&gt;
|-&lt;br /&gt;
|&lt;br /&gt;
|OS/2 &lt;br /&gt;
|Windows NT mit  Erweiterungen&lt;br /&gt;
|-&lt;br /&gt;
|&lt;br /&gt;
|Apple&lt;br /&gt;
|Windows 2000, XP, 2003&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
===SHELL===&lt;br /&gt;
&lt;br /&gt;
Wenn man mit Linux arbeiten will, kann man nicht direkt mit dem Betriebssystem&lt;br /&gt;
kommunizieren. Man braucht dazu ein Hilfsprogramm, welches die&lt;br /&gt;
Kommandoeingaben ordnungsgemäß an das Betriebssystem weiterleitet. Dieses&lt;br /&gt;
Hilfsprogramm hat den Namen Shell.&lt;br /&gt;
&lt;br /&gt;
Die Shell schirmt den Betriebssystemkern von den Anwendungsprogrammen ab.&lt;br /&gt;
Die unterschiedlichen Shells erfüllen alle dieselbe Aufgabe, sie unterscheiden sich&lt;br /&gt;
allerdings in ihrer Syntax.&lt;br /&gt;
&lt;br /&gt;
==Die Installation im Überblick==&lt;br /&gt;
&lt;br /&gt;
Die Installation von Linux geschieht in folgenden Schritten:&lt;br /&gt;
&lt;br /&gt;
# Analyse (Welche Hardware habe ich? ,Hab ich weitere Betriebsysteme?)&lt;br /&gt;
# Booten des Linux-Kernels. (von CD oder Diskette)&lt;br /&gt;
# Laden einer RAM-Disk (das macht das Installationsprogramm automatisch).&lt;br /&gt;
# Partitionieren der Festplatte (fdisk).&lt;br /&gt;
# Einrichten der Swappartition (mkswap), Formatieren der Festplatte (mkfs).&lt;br /&gt;
# Montieren der Dateisysteme (mount), Aktivieren der Swapbereiche (swapon).&lt;br /&gt;
# Kopieren und Auspacken der Daten vom Installationsmedium auf die Festplatte (die eigentliche Installation). (rpm, dpkg oder tar).&lt;br /&gt;
# Geeignete Wahl der Bootmethode unter Berücksichtigung von Punkt 1 (grub, lilo).&lt;br /&gt;
# Konfiguration des Systems (Netz, Modem etc...).&lt;br /&gt;
&lt;br /&gt;
==Erste Schritte==&lt;br /&gt;
===Anmelden===&lt;br /&gt;
Sie können sich nun mit dem Usernamen und dem Passwort, das sie bei der Installation angelegt haben anmelden!&lt;br /&gt;
[[Image:benutzer.jpg]]&lt;br /&gt;
&lt;br /&gt;
[[Image:passwd.jpg]]&lt;br /&gt;
&lt;br /&gt;
===Terminal öffnen===&lt;br /&gt;
&lt;br /&gt;
Ein Terminal öffnen Sie über das Startmenü:&lt;br /&gt;
&lt;br /&gt;
[[Image:Terminalde.jpg]]&lt;br /&gt;
&lt;br /&gt;
Das geöffnete Terminal sieht dann folgendermaßen aus:&lt;br /&gt;
&lt;br /&gt;
[[Image:Terminalde2.jpg]]&lt;br /&gt;
&lt;br /&gt;
===Sudo===&lt;br /&gt;
Rootrechte erlangen sie über den &amp;quot;Sudo&amp;quot;-Befehl&lt;br /&gt;
 &lt;br /&gt;
''Den nächsten Befehl als root ausführen''&lt;br /&gt;
 xinux@zero:~$ sudo cat /etc/shadow&lt;br /&gt;
 [sudo] password for xinux:&lt;br /&gt;
&lt;br /&gt;
''Eine komplette Sitzung als root starten''&lt;br /&gt;
 xinux@zero:~$ sudo -i&lt;br /&gt;
 [sudo] password for xinux:&lt;br /&gt;
 root@zero:~#&lt;br /&gt;
&lt;br /&gt;
===Virtuelle Konsolen===&lt;br /&gt;
&lt;br /&gt;
In die Virtuelle Konsole gelangen sie über &amp;quot;STRG+ALT+(F1-F6)&amp;quot;.&lt;br /&gt;
Sie funktioniert wie ein ganz normales Terminal, und mit &amp;quot;ALT+F7&amp;quot;&lt;br /&gt;
gelangen sie wieder zurück auf die grafische Benutzeroberfläche&lt;br /&gt;
&lt;br /&gt;
===Abmelden===&lt;br /&gt;
&lt;br /&gt;
Abmelden können Sie sich wieder über das Startmenu unter:&lt;br /&gt;
&lt;br /&gt;
[[Image:Logout.jpg]]&lt;br /&gt;
&lt;br /&gt;
Fals sie nur einzelne Sitzungen in einem der Terminals oder &lt;br /&gt;
den Virtuellen Konsolen Abmelden wollen benutzen sie dazu den Befehl: &amp;quot;exit&amp;quot;&lt;br /&gt;
&lt;br /&gt;
===Herunterfahren===&lt;br /&gt;
&lt;br /&gt;
Das Herunterfahren funktioniert auf dem selben Weg.&lt;br /&gt;
&lt;br /&gt;
Entweder sie Benutzen wieder das Startmenü und benutzen diesmal den &amp;quot;Ausschalten ...&amp;quot; Knopf,&lt;br /&gt;
&lt;br /&gt;
Oder sie geben den äquivalenten &amp;quot;shutdown&amp;quot;-Befehl in einem Terminal bzw. der virtuellen Konsole ein.&lt;br /&gt;
&lt;br /&gt;
Allerdings müssen sie dazu als Administrator angemeldet sein s. &amp;quot;Sudo&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Wenn Sie den &amp;quot;shutdown&amp;quot;-Befehl benutzen wollen muss hinter den Befehl&lt;br /&gt;
&lt;br /&gt;
eine Zeitangabe in Minuten oder das wort &amp;quot;now&amp;quot; für sofortiges Ausschalten hinzugefügt werden:&lt;br /&gt;
&lt;br /&gt;
 xinux@zero:~$ sudo -i&lt;br /&gt;
 root@zero:~# shutdown 60&lt;br /&gt;
 &lt;br /&gt;
 Broadcast message from xinux@zero &lt;br /&gt;
         (/dev/pts/3) at 14:29 ...&lt;br /&gt;
 &lt;br /&gt;
 The system is going down for maintenance in 60 minutes!&lt;br /&gt;
&lt;br /&gt;
Sollten sie den Befehl widerrufen wollen dann drücken sie &amp;quot;STRG+C&amp;quot;,&lt;br /&gt;
&lt;br /&gt;
in dem Terminal in dem der shutdown Befehl gestartet wurde,&lt;br /&gt;
&lt;br /&gt;
oder geben sie den &amp;quot;shutdown&amp;quot;-Befehl zusammen mit der Abbruchoption &amp;quot;-c&amp;quot; in einem anderen Terminal ein:&lt;br /&gt;
&lt;br /&gt;
 root@zero:~# shutdown -c&lt;br /&gt;
&lt;br /&gt;
 shutdown: Shutdown cancelled&lt;br /&gt;
 root@zero:~# &lt;br /&gt;
&lt;br /&gt;
Wenn Sie den Rechner Neustarten möchten gibt es dazu die Option &amp;quot;-r&amp;quot; für den &amp;quot;shutdown&amp;quot;-Befehl&lt;br /&gt;
&lt;br /&gt;
oder den &amp;quot;reboot&amp;quot;-Befehl die beide auch als root ausgeführt werden müssen:&lt;br /&gt;
&lt;br /&gt;
 xinux@zero:~$ sudo -i&lt;br /&gt;
 [sudo] password for xinux: &lt;br /&gt;
 root@zero:~# shutdown -r now&lt;br /&gt;
&lt;br /&gt;
 root@zero:~# reboot&lt;br /&gt;
&lt;br /&gt;
===&amp;quot;man&amp;quot;===&lt;br /&gt;
&lt;br /&gt;
Programm zum Einsehen der Online-Manuals&lt;br /&gt;
&lt;br /&gt;
Die Manuals sind in folgende Sektionen unterteilt:&lt;br /&gt;
# Ausführbare Programme oder Shellbefehle&lt;br /&gt;
# Systemaufrufe (Kernelfunktionen)&lt;br /&gt;
# Bibliotheksaufrufe (Funktionen in System-Bibliotheken)&lt;br /&gt;
# Spezielle Dateien (gewöhnlich in /dev)&lt;br /&gt;
# Dateiformate und Konventionen, z. B. /etc/passwd&lt;br /&gt;
# Spiele&lt;br /&gt;
# Makropakete und Konventionen, z. B. man(7), groff(7)&lt;br /&gt;
# Systemadministrationsbefehle (in der Regel nur für root)&lt;br /&gt;
# Kernelroutinen [Nicht Standard]&lt;br /&gt;
&lt;br /&gt;
Aufruf eines Manuals erfolgt durch ''man kommando''&lt;br /&gt;
Beendet wird durch Drücken des Buchstabens q&lt;br /&gt;
Gesucht wird vorwärts durch Eingabe eines /suchausdruck&lt;br /&gt;
Gesucht wird rückwärts durch Eingabe eines ?suchausdruck&lt;br /&gt;
&lt;br /&gt;
Beispiele:&lt;br /&gt;
&lt;br /&gt;
      man passwd        Anschauen der Manualseite zum Programm passwd&lt;br /&gt;
      man 5 passwd      Anschauen der Manualseite zur Datei /etc/passwd&lt;br /&gt;
      man -a passwd     Anschauen aller Manualseiten zu passwd&lt;br /&gt;
      man -k passwd     Durchsucht die Kurzbeschreibungen der Manualseite&lt;br /&gt;
                        nach passwd und gibt alle Treffer aus&lt;br /&gt;
      man -f passwd      Gibt alle gefunden Kurzbescheibungen zu passwd aus&lt;br /&gt;
      man -L en passwd Gibt englische Manualseiten aus&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Was geht vor auf meinem System? (date,who)===&lt;br /&gt;
&lt;br /&gt;
Das Kommando date dient zur Abfrage von Datum und Uhrzeit.&lt;br /&gt;
&lt;br /&gt;
 xinux@zero:~ &amp;gt; date&lt;br /&gt;
 Fre Mär 16 16:35:03 CET 2001&lt;br /&gt;
&lt;br /&gt;
oder auch Anzeige der Grennwich Zeit:&lt;br /&gt;
&lt;br /&gt;
 xinux@zero:~ &amp;gt; date -u&lt;br /&gt;
 Fre Mär 16 15:35:34 UTC 2001&lt;br /&gt;
&lt;br /&gt;
 xinux@zero:~ &amp;gt; date -u &amp;quot;+%X&amp;quot;&lt;br /&gt;
 15:37:19&lt;br /&gt;
&lt;br /&gt;
 xinux@zero:~ &amp;gt; date -u &amp;quot;+%x&amp;quot;&lt;br /&gt;
 01/15/02&lt;br /&gt;
&lt;br /&gt;
who zeigt alle angemeldeten Benutzer an&lt;br /&gt;
&lt;br /&gt;
 thomas@cardassia:~ &amp;gt; who&lt;br /&gt;
 thomas             tty1 Feb 27 16:39&lt;br /&gt;
 thomas             tty2 Mar 2 17:08&lt;br /&gt;
 tina               tty6 Mar 16 16:38&lt;br /&gt;
&lt;br /&gt;
Mit `who --help' bekommen Sie mehr Informationen.&lt;br /&gt;
&lt;br /&gt;
 thomas@cardassia:~ &amp;gt; who --help&lt;br /&gt;
&lt;br /&gt;
Benutzung: who [OPTION]... [ DATEI | ARG1 ARG2 ]&lt;br /&gt;
&lt;br /&gt;
 -H, --heading             print line of column headings&lt;br /&gt;
 -i, -u, --idle            add user idle time as HOURS:MINUTES, . or old&lt;br /&gt;
 -l, --lookup              attempt to canonicalize hostnames via DNS&lt;br /&gt;
 -m                        only hostname and user associated with stdin&lt;br /&gt;
 -q, --count               all login names and number of users logged on&lt;br /&gt;
 -s                        (ignored)&lt;br /&gt;
 -T, -w, --mesg            add user's message status as +, - or ?&lt;br /&gt;
     --message             same as -T&lt;br /&gt;
     --writable            same as -T&lt;br /&gt;
     --help                display this help and exit&lt;br /&gt;
     --version             output version information and exit&lt;br /&gt;
&lt;br /&gt;
==Das UNIX-Dateisystem==&lt;br /&gt;
===Verzeichnisbaum===&lt;br /&gt;
&lt;br /&gt;
[[Image:vztree.jpg]]&lt;br /&gt;
&lt;br /&gt;
Das Betriebssystem UNIX besitzt ein hierarchisches Dateisystem. Es besteht aus:&lt;br /&gt;
* Dateien (Files)&lt;br /&gt;
Dateien speichern Informationen (Text, Bilder, Sound, Videos, Programme) und&lt;br /&gt;
werden über den Dateinamen angesprochen.&lt;br /&gt;
&lt;br /&gt;
* Verzeichnissen (Directories, Kataloge)&lt;br /&gt;
Verzeichnisse besitzen ebenfalls einen Namen und dienen zur Ordnung des&lt;br /&gt;
Dateisystems. Ein Verzeichnis kann Dateien und Unterverzeichnisse&lt;br /&gt;
(Subdirectories) enthalten. Das oberste Verzeichnis im Dateisystem heisst&lt;br /&gt;
Rootverzeichnis oder kurz Root und wird durch / (sprich: slash)&lt;br /&gt;
gekennzeichnet.&lt;br /&gt;
&lt;br /&gt;
Im Gegensatz zu Windows kennt UNIX keine Laufwerke.&lt;br /&gt;
Das obige Bild zeigt ein typisches UNIX-Dateisystem.&lt;br /&gt;
Unterhalb des Rootverzeichnisses befinden sich eine Vielzahl vonVerzeichnissen.&lt;br /&gt;
&lt;br /&gt;
===Wichtige Verzeichnisse===&lt;br /&gt;
&lt;br /&gt;
• '''Homeverzeichnis'''&lt;br /&gt;
&lt;br /&gt;
das Verzeichnis, in dem man sich unmittelbar nach dem Anmelden befindet. Das&lt;br /&gt;
Homeverzeichnis wird vom Systemverwalter eingerichtet; jeder Anwender&lt;br /&gt;
besitzt ein festes Homeverzeichnis. z.B. /home/hans&lt;br /&gt;
&lt;br /&gt;
~ (Tilde) bzw. $HOME (Shellvariable) kennzeichnen das Homeverzeichnis.&lt;br /&gt;
&lt;br /&gt;
• '''Aktuelles Verzeichnis'''&lt;br /&gt;
&lt;br /&gt;
Verzeichnis, in dem man sich aktuell befindet.&lt;br /&gt;
Das aktuelle Verzeichnis wird mit dem Befehl cd (change directory) oder per&lt;br /&gt;
Mausklick verändert.&lt;br /&gt;
Ein einfacher Punkt . kennzeichnet das aktuelle Verzeichnis.&lt;br /&gt;
&lt;br /&gt;
• '''Elternverzeichnis'''&lt;br /&gt;
&lt;br /&gt;
Verzeichnis unmittelbar oberhalb des aktuellen Verzeichnisses.&lt;br /&gt;
Jedes Verzeichnis ausser / besitzt genau ein Elternverzeichnis.&lt;br /&gt;
Zwei Punkte .. kennzeichnen das Elternverzeichnis (abhängig vom aktuellen&lt;br /&gt;
VZ).&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Absoluter Pfadname:===&lt;br /&gt;
&lt;br /&gt;
Beschreibt ausgehend vom Rootverzeichnis den Weg zum Zielverzeichnis oder zur&lt;br /&gt;
Zieldatei. (Welche Verzeichnisse müssen ausgehend von / durchlaufen werden, um&lt;br /&gt;
zum Ziel zu kommen?) Ein absoluter Pfadname beginnt immer mit / .&lt;br /&gt;
&lt;br /&gt;
===Relativer Pfadname:===&lt;br /&gt;
&lt;br /&gt;
Beschreibt ausgehend vom aktuellen Verzeichnis den Weg zum Zielverzeichnis&lt;br /&gt;
oder zur Zieldatei; ein relativer Pfadname beginnt nicht mit / .&lt;br /&gt;
/home/suxer&lt;br /&gt;
absoluter Pfadname für das Verzeichnis sub1 im Homeverzeichnis von suxer&lt;br /&gt;
&lt;br /&gt;
===Verzeichnisstruktur===&lt;br /&gt;
&lt;br /&gt;
 /bin         Kommandos die beim starten benötigt werden (Zugriff hat jeder)&lt;br /&gt;
 /sbin        Wichtige System-Programme (In der Regel root vorberhalten)&lt;br /&gt;
 /boot        Hier findet man die Dateien des Bootmanagers und des Kernel.&lt;br /&gt;
 /dev         In diesem Verzeichnis stehen die Gerätedateien (Devices),&lt;br /&gt;
 /home        Alle Heimatverzeichnisse der Nutzer findet man hier.&lt;br /&gt;
 /lib         Beim Systemstart benötigten Bibliotheken und Modules stehen hier.&lt;br /&gt;
 /mnt         Mountpunkt für temporäre Partitionen&lt;br /&gt;
 /opt         Software, die nicht Installationsumfang von Linux gehören.&lt;br /&gt;
 /root        Heimatverzeichnis des Administrators.&lt;br /&gt;
 /tmp         Temporäre Dateien können hier abgelegt werden&lt;br /&gt;
 /usr         statische Dateien (kann read-only gemountet sein)&lt;br /&gt;
 /var         variable Dateien (muss beschreibar sein )&lt;br /&gt;
 /etc         Konfiguartionsdateien und Startscripte&lt;br /&gt;
 /proc        Virtuelles Dateisystem -&amp;gt; repräsentiert den Kernel&lt;br /&gt;
&lt;br /&gt;
===Unterverzeichnisse von /usr===&lt;br /&gt;
&lt;br /&gt;
 sbin         Programme für root die beim Start nicht benötigt werden&lt;br /&gt;
 bin          Programme für alle die beim Start nicht benötigt werden&lt;br /&gt;
 X11R6        Dateien des X-Window-Sytems&lt;br /&gt;
 bin          Ausführbare Programme&lt;br /&gt;
 doc          Dokumentationen&lt;br /&gt;
 etc          Konfigurationsdateien&lt;br /&gt;
 games        Spiele&lt;br /&gt;
 include      Headerdateien für C-Programme&lt;br /&gt;
 local        Pakete die nicht zur Distribution gehören ähnlich /opt&lt;br /&gt;
 share        Pakete die von mehreren Paketen genutzt werden&lt;br /&gt;
 share/man    Die Manualpages&lt;br /&gt;
 share/info   Seiten des Infosystems&lt;br /&gt;
 share/doc    Dokumentationen&lt;br /&gt;
 src          Sources von Programmen (Kernel und andere)&lt;br /&gt;
&lt;br /&gt;
===Unterverzeichnisse von /var===&lt;br /&gt;
&lt;br /&gt;
 cache        Zwischenspreicher für Progammes&lt;br /&gt;
 games        Variable Daten der Games (Scores etc...)&lt;br /&gt;
 lock         Sperrdateien&lt;br /&gt;
 log          Die Logdateien (wichtiges Verzeichnis für Admins)&lt;br /&gt;
 mail         Das Mailsystem&lt;br /&gt;
 run          Dateien zu laufemdem Prozessen&lt;br /&gt;
 spool        Spooldateien (z.B. für das Drucksystem&lt;br /&gt;
 state        Statusinfos&lt;br /&gt;
 tmp          Wie /tmp eventuell nicht auf root Partion&lt;br /&gt;
&lt;br /&gt;
==Einfache Komandos==&lt;br /&gt;
===cd: Wechseln des Arbeitsverzeichnis===&lt;br /&gt;
&lt;br /&gt;
Um festzustellen in welchem Verzeichnis man sich befindet, sollte man den&lt;br /&gt;
Befehl &amp;quot;pwd&amp;quot; benutzen,&lt;br /&gt;
&lt;br /&gt;
und mit dem Befehl &amp;quot;cd&amp;quot; kann man zwischen den Verzeichnissen wechseln:&lt;br /&gt;
&lt;br /&gt;
Wechsele ins homeverzeichnis von Xinux&lt;br /&gt;
&lt;br /&gt;
 xinux@zero:~$ cd /home/xinux/&lt;br /&gt;
 xinux@zero:~$ pwd&lt;br /&gt;
 /home/xinux&lt;br /&gt;
&lt;br /&gt;
cd ~ -&amp;gt; wechsele ins jeweilige Homeverzeichnis&lt;br /&gt;
&lt;br /&gt;
cd .. -&amp;gt; wechsele ein Verzeichnis höher&lt;br /&gt;
&lt;br /&gt;
cd ../verzeichnis -&amp;gt; wechsele in eine paralleles Verzeichnis &amp;lt;- (ist eine relative Pfadangabe !)&lt;br /&gt;
&lt;br /&gt;
cd - -&amp;gt; wechsele in das Verzeichnis, in dem vorher gearbeitet wurde.&lt;br /&gt;
&lt;br /&gt;
Mit cd / wechselt man in das Wurzelverzeichnis.&lt;br /&gt;
&lt;br /&gt;
 xinux@zero:/var/log$ cd /&lt;br /&gt;
 xinux@zero:/$ pwd&lt;br /&gt;
 /&lt;br /&gt;
&lt;br /&gt;
===ls: Listing===&lt;br /&gt;
&lt;br /&gt;
Den Inhalt von Verzeichnissen kann man sich mit dem Befehl &amp;quot;ls&amp;quot; anzeigen lassen&lt;br /&gt;
wobei &amp;quot;ls&amp;quot; eine Vielzahl von Optionen besitzt:&lt;br /&gt;
&lt;br /&gt;
 ls                                  standard&lt;br /&gt;
 ls -l                               langes listing&lt;br /&gt;
 ls -a                               alle Dateien&lt;br /&gt;
 ls -i                               mit Inode&lt;br /&gt;
 ls -h                               gut lesbare Dateigröße&lt;br /&gt;
 ls -d                               Verzechnis wird angezeigt, nicht der Inhalt&lt;br /&gt;
 ls -L                               sortiert nach Größe&lt;br /&gt;
 ls -t                               sortiert nach Datum&lt;br /&gt;
 ls -F                               mit nützlichem Anhang&lt;br /&gt;
&lt;br /&gt;
 xinux@zero:/$ ls -l /var/log/messages&lt;br /&gt;
 -rw-r----- 1 syslog adm 2296 2009-06-16 10:05 /var/log/messages&lt;br /&gt;
&lt;br /&gt;
===more: Seitenweises Anzeigen von Seiten===&lt;br /&gt;
 root@zero:~# more /var/log/messages&lt;br /&gt;
 ...&lt;br /&gt;
&lt;br /&gt;
===head: erste Zeilen anzeigen===&lt;br /&gt;
Erste 10 Zeilen anzeigen&lt;br /&gt;
 root@zero:~# head /var/log/messages&lt;br /&gt;
 Jun 15 12:37:08 zero syslogd 1.5.0#5ubuntu3: restart.&lt;br /&gt;
 Jun 15 12:38:43 zero kernel: [  830.065036] mtrr: your processor doesn't support write-combining&lt;br /&gt;
 Jun 15 12:46:05 zero pulseaudio[4817]: pid.c: Stale PID file, overwriting.&lt;br /&gt;
 Jun 15 13:05:24 zero -- MARK --&lt;br /&gt;
 ...&lt;br /&gt;
&lt;br /&gt;
Erste zwei Zeilen anzeigen&lt;br /&gt;
 root@zero:~# head -n 2 /var/log/messages&lt;br /&gt;
 Jun 15 12:37:08 zero syslogd 1.5.0#5ubuntu3: restart.&lt;br /&gt;
 Jun 15 12:38:43 zero kernel: [  830.065036] mtrr: your processor doesn't support write-combining&lt;br /&gt;
&lt;br /&gt;
===tail: letzte Zeilen anzeigen===&lt;br /&gt;
 &lt;br /&gt;
 root@zero:~# tail /var/log/syslog&lt;br /&gt;
 ...&lt;br /&gt;
 Jun 19 11:19:35 zero -- MARK --&lt;br /&gt;
 Jun 19 11:39:35 zero -- MARK --&lt;br /&gt;
 Jun 19 11:59:36 zero -- MARK --&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Letze 5 Zeilen anzeigen&lt;br /&gt;
 root@zero:~# tail -n 5 /var/log/auth.log&lt;br /&gt;
 Jun 18 14:30:01 zero CRON[12040]: pam_unix(cron:session): session closed for user root&lt;br /&gt;
 Jun 18 14:39:01 zero CRON[12191]: pam_unix(cron:session): session opened for user root by (uid=0)&lt;br /&gt;
 Jun 18 14:39:01 zero CRON[12191]: pam_unix(cron:session): session closed for user root&lt;br /&gt;
 Jun 18 14:40:01 zero CRON[12237]: pam_unix(cron:session): session opened for user root by (uid=0)&lt;br /&gt;
 Jun 18 14:40:01 zero CRON[12237]: pam_unix(cron:session): session closed for user root&lt;br /&gt;
&lt;br /&gt;
Letze Zeilen anzeigen und fortlaufend aktualisieren&lt;br /&gt;
 root@zero:~# tail -f /var/log/syslog&lt;br /&gt;
 ...&lt;br /&gt;
&lt;br /&gt;
===mkdir: Ein neues Verzeichnis erstellen===&lt;br /&gt;
&lt;br /&gt;
 mkdir        verzeichnis&lt;br /&gt;
Erstellt ein Verzeichnis im working directory (wd)&lt;br /&gt;
&lt;br /&gt;
 mkdir  -p    ver1/ver2&lt;br /&gt;
Erstellt ein Verzeichnis ver2 unterhalb von ver1&lt;br /&gt;
wenn ver1 nicht existiert wird es erstellt&lt;br /&gt;
&lt;br /&gt;
 mkdir -m 753 ver1&lt;br /&gt;
Es wird das Verzeichnis ver1 erstellt mit der mask 753&lt;br /&gt;
&lt;br /&gt;
 mkdir -v     ver1&lt;br /&gt;
Geschwätzige Ausgabe :)&lt;br /&gt;
&lt;br /&gt;
===Zum Löschen von leeren Verzeichnissen wird rmdir benutzt===&lt;br /&gt;
&lt;br /&gt;
 rmdir           ver1&lt;br /&gt;
Löscht das leere Verzeichnis ver1&lt;br /&gt;
&lt;br /&gt;
 rmdir -v        ver1&lt;br /&gt;
Löscht das leere Verzeichnis ver1 und ist geschwätzig&lt;br /&gt;
&lt;br /&gt;
 rmdir -p        /ver1/ver2/ver3&lt;br /&gt;
Löscht das Verzeichnis ver3; wenn dadurch ver2 ein leeres&lt;br /&gt;
Verzeichnis wird, wird dieses auch gelöscht , wenn ver1&lt;br /&gt;
dadurch ein leeres Verzeichnis wird, wird auch dieses gelöscht.&lt;br /&gt;
&lt;br /&gt;
===touch Verändern des Zeitstempels===&lt;br /&gt;
&lt;br /&gt;
Mit touch können wir eine neue leere Datei erzeugen (das ist nicht der eigentliche&lt;br /&gt;
Zweck von touch, eigentlich wird der Zeitstempel geändert)&lt;br /&gt;
&lt;br /&gt;
 touch            dateiname&lt;br /&gt;
&lt;br /&gt;
===Kopieren=== &lt;br /&gt;
cp ist das Kommando um Dateien zu kopieren &lt;br /&gt;
&lt;br /&gt;
Eine Kopie von dat1 mit dem Namen dat2 erstellen:&lt;br /&gt;
&lt;br /&gt;
 xinux@zero:~$ cp dat1 dat2&lt;br /&gt;
&lt;br /&gt;
Eine Kopie von dat1 ins Verzeichnis ver2 erstellen:&lt;br /&gt;
&lt;br /&gt;
 xinux@zero:~$ cp dat1 ver2/&lt;br /&gt;
 &lt;br /&gt;
Eine Kopie erstellen mit ausführlicher Anzeige:&lt;br /&gt;
&lt;br /&gt;
 xinux@zero:~$ cp -v dat1 dat2&lt;br /&gt;
 `dat1' -&amp;gt; `dat2'&lt;br /&gt;
&lt;br /&gt;
Eine Kopie erstellen mit Rückfrage fals etwas überschrieben wird:&lt;br /&gt;
&lt;br /&gt;
 xinux@zero:~$ cp -i dat1 dat2&lt;br /&gt;
 cp: overwrite `dat2'?&lt;br /&gt;
&lt;br /&gt;
Eine Kopie erstellen und die Rückfrage überbrücken:&lt;br /&gt;
&lt;br /&gt;
 xinux@zero:~$ cp -f dat1 dat2&lt;br /&gt;
&lt;br /&gt;
Eine Kopie von dat1 ins Verzeichnis ver2 erstellen fals keine neuere Version von dat1 vorliegt:&lt;br /&gt;
&lt;br /&gt;
 xinux@zero:~$ cp -u dat1 ver2/&lt;br /&gt;
&lt;br /&gt;
Eine Kopie erstellen fals ver2 auf dem selben Dateisystem wie dat1 liegt:&lt;br /&gt;
&lt;br /&gt;
 xinux@zero:~$ cp -x dat1 ver2/&lt;br /&gt;
&lt;br /&gt;
Eine Kopie von ver1, die als ver2 oder unter ver2 als ver1 gespeichert wird erstellen:&lt;br /&gt;
&lt;br /&gt;
 xinux@zero:~$ cp -r ver1/ ver2/&lt;br /&gt;
&lt;br /&gt;
Eine Kopie von einer Datei erstellen und ihre Attribute beibehalten:&lt;br /&gt;
&lt;br /&gt;
 xinux@zero:~$ cp -p sux1 sux2&lt;br /&gt;
&lt;br /&gt;
Eine Kopie erstellen bei der die Links erhalten bleiben:&lt;br /&gt;
&lt;br /&gt;
 xinux@zero:~$ cp -r ver1/ ver2/&lt;br /&gt;
&lt;br /&gt;
Eine Kopie erstellen zum Archivieren (-dpr):&lt;br /&gt;
&lt;br /&gt;
 xinux@zero:~$ cp -a ver1/ ver2/&lt;br /&gt;
&lt;br /&gt;
===rm: Löschen einer Datei===&lt;br /&gt;
&lt;br /&gt;
Um Dateien zu löschen, brauchen wir das Kommando &amp;quot;rm&amp;quot;:&lt;br /&gt;
&lt;br /&gt;
 rm               dat1        dat1 wird gelöscht&lt;br /&gt;
 rm         -i    dat1        dat1 wird nach Bestätigung gelöscht&lt;br /&gt;
 rm         -f    dat1        dat1 wird ohne Rückfragen gelöscht&lt;br /&gt;
 rm         -v    dat1        dat1 wird glöscht (geschwätzige Ausgabe)&lt;br /&gt;
 rm         -r    ver1        Löschen von nicht leeren Verzeichnissen&lt;br /&gt;
                              Achtung !!! Als root kann man sich damit Teile&lt;br /&gt;
                              oder sogar den gesamten Verzeichnisbaum&lt;br /&gt;
                              absägen !!!&lt;br /&gt;
&lt;br /&gt;
===mv: Verschieben===&lt;br /&gt;
&lt;br /&gt;
Mit dem Befehl &amp;quot;mv&amp;quot; werden Daten verschoben, folgendes gilt:&lt;br /&gt;
&lt;br /&gt;
 mv          dat1 dat2         &lt;br /&gt;
Die Datei dat1 wird in dat2 umbenannt&lt;br /&gt;
 mv          dat1 /ver1        &lt;br /&gt;
Die Datei dat1 wird nach /ver1 verschoben&lt;br /&gt;
&lt;br /&gt;
Die Parameter und ihre Bedeutung:&lt;br /&gt;
&lt;br /&gt;
      -i                      wenn eine Datei exisitiert wird vor dem&lt;br /&gt;
                              Überschreiben nachgefragt&lt;br /&gt;
      -v                      verbose (geschwätzig)&lt;br /&gt;
      -u                      nur neuere Daten werden bei Bedarf überschrieben&lt;br /&gt;
      -b                      wenn überschrieben werden soll, wird ein Backup&lt;br /&gt;
                              erstellt&lt;br /&gt;
      -S ENDUNG               das Backup bekommt die Endung ENDUNG&lt;br /&gt;
&lt;br /&gt;
===su Benutzer wechseln===&lt;br /&gt;
&lt;br /&gt;
 su -             &lt;br /&gt;
Wechsel zum Rootaccount, wie wenn dieser sich neu anmelden würde. (Bsp: su -)&lt;br /&gt;
&lt;br /&gt;
 su Benutzernamen &lt;br /&gt;
Wechsel der Identität zu Benutzer (gegebenenfalls Passwortabfrage)&lt;br /&gt;
&lt;br /&gt;
 su -c Kommando   &lt;br /&gt;
Kommando wird als rootaccount ausgeführt&lt;br /&gt;
&lt;br /&gt;
==Der Standard Editor vi==&lt;br /&gt;
Der vi ist der Standardeditor in der Unixwelt. Er ist in jedem Unix-Derivat&lt;br /&gt;
enthalten.&lt;br /&gt;
Der Editor hat zwar den schlechten Ruf umständlich zu bedienen zu sein, ist&lt;br /&gt;
jedoch sehr leistungsfähig und systemübergreifend verfügbar. Beim vi handelt es&lt;br /&gt;
sich um einen rein textorientierten Editor, der mittels eigener Kommandos&lt;br /&gt;
gesteuert wird.&lt;br /&gt;
&lt;br /&gt;
Der Editor VIM ist eine weitere Verbesserung von VI und leichter zu bedienen.&lt;br /&gt;
Und unter Ubuntu/Debian mit &amp;quot;apt-get install vim&amp;quot; zu installieren.&lt;br /&gt;
&lt;br /&gt;
===Starten des Editors:===&lt;br /&gt;
&lt;br /&gt;
Der Editorstart erfolgt einfach durch die Eingabe des Kommandos vi mit dem&lt;br /&gt;
Dateinamen der zu editierenden Datei als Parameter.&lt;br /&gt;
Beispiel:        &lt;br /&gt;
 vi sux.txt&lt;br /&gt;
&lt;br /&gt;
===Die Betriebsmodi des vi:===&lt;br /&gt;
&lt;br /&gt;
Ein Umstand, der dem vi den Ruf der komplizierten Bedienbarkeit zugetragen hat,&lt;br /&gt;
sind die unterschiedlichen Betriebsmodi des Editors. Genauer gesagt verfügt der&lt;br /&gt;
vi über drei Betriebsmodi:&lt;br /&gt;
&lt;br /&gt;
====Kommandomodus:====&lt;br /&gt;
&lt;br /&gt;
Innerhalb dieses Modus werden die eingegebenen Zeichen direkt als Befehle des&lt;br /&gt;
Editors interpretiert und ausgeführt. Dabei gibt es weder ein Bereitschaftszeichen&lt;br /&gt;
(Prompt) noch ein Echo (Ausgabe). Der Kommandomodus ist der Modus, in dem&lt;br /&gt;
sich der vi direkt nach seinem Start befindet.&lt;br /&gt;
&lt;br /&gt;
====Zeilenmodus oder Exmodus:====&lt;br /&gt;
&lt;br /&gt;
Dieser Modus ist der einzige Modus mit einem eigenen Bereitschaftszeichen,&lt;br /&gt;
nämlich dem Doppelpunkt (:). Das Prompt wird ebenso wie die Befehlsausgaben&lt;br /&gt;
in der Statuszeile angezeigt.&lt;br /&gt;
&lt;br /&gt;
====Eingabemodus:====&lt;br /&gt;
&lt;br /&gt;
Der Eingabemodus ist derjenige, in welchem der zu bearbeitende Text bearbeitet&lt;br /&gt;
werden kann. Alle hier eingegebenen Zeichen werden als Text für die aktuelle&lt;br /&gt;
Datei interpretiert. Zwischen den unterschiedlichen Modi kann jederzeit&lt;br /&gt;
gewechselt werden. Von Kommandomodus gelangen Sie durch mehere Wege in&lt;br /&gt;
den Eingabemodus. Man kann durch folgende Aktionen wechslen&lt;br /&gt;
&lt;br /&gt;
{| border=1 cellpadding=2&lt;br /&gt;
|i&lt;br /&gt;
|Text vor der aktuellen Cursorposition einfügen&lt;br /&gt;
|-&lt;br /&gt;
|I&lt;br /&gt;
|Text am Zeilenanfang einfügen&lt;br /&gt;
|-&lt;br /&gt;
|a&lt;br /&gt;
|Text hinter der aktuellen Cursorposition einfügen&lt;br /&gt;
|-&lt;br /&gt;
|A&lt;br /&gt;
|Text am Zeilenende einfügen&lt;br /&gt;
|-&lt;br /&gt;
|o&lt;br /&gt;
|Unterhalb der aktuellen Zeile eine neue Zeile einfügen&lt;br /&gt;
|-&lt;br /&gt;
|O&lt;br /&gt;
|Oberhalb der aktuellen Zeile eine neue Zeile einfügen&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Durch das Drücken der ESC - Taste gelangt man in den Kommandomodus zurück.&lt;br /&gt;
&lt;br /&gt;
Im Kommandomodus können Sie durch den Text navigieren und auch den Text&lt;br /&gt;
selbst bearbeiten, z.B ausschneiden, kopieren usw. Dazu sind einige Kommandos&lt;br /&gt;
nötig, von denen die wichtigsten im Folgenden erläutert werden:&lt;br /&gt;
&lt;br /&gt;
 xinux@zero:/$ vi iwas.txt&lt;br /&gt;
&lt;br /&gt;
[[Image:vim.jpg]]&lt;br /&gt;
&lt;br /&gt;
===Benutzen des Kommandomodus===&lt;br /&gt;
====Steuerung des Cursors durch den Text====&lt;br /&gt;
&lt;br /&gt;
Mittels folgender Kommandos bewegt sich der Cursor durch den Text:&lt;br /&gt;
&lt;br /&gt;
{| border=1 cellpadding=2&lt;br /&gt;
|h&lt;br /&gt;
|Cursor ein Zeichen nach links&lt;br /&gt;
|-&lt;br /&gt;
|l&lt;br /&gt;
|Cursor ein Zeichen nach rechts&lt;br /&gt;
|-&lt;br /&gt;
|k&lt;br /&gt;
|Cursor eine Zeile nach oben&lt;br /&gt;
|-&lt;br /&gt;
|j&lt;br /&gt;
|Cursor eine Zeile nach unten&lt;br /&gt;
|-&lt;br /&gt;
|w&lt;br /&gt;
|Cursor ein Wort nach rechts&lt;br /&gt;
|-&lt;br /&gt;
|b&lt;br /&gt;
|Cursor ein Wort nach links&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Alle diese Kommandos können mit einem vorgestellten Wiederholungsfaktor&lt;br /&gt;
arbeiten. Der Befehl 3w verschiebt demnach den Cursor um 3 Wörter nach rechts.&lt;br /&gt;
&lt;br /&gt;
====Angaben zur Positionierung====&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{| border=1 cellpadding=2&lt;br /&gt;
|STRG+U&lt;br /&gt;
|1⁄2 Bildschirmseite nach oben&lt;br /&gt;
|-&lt;br /&gt;
|STRG+D&lt;br /&gt;
|1⁄2 Bildschirmseite nach unten&lt;br /&gt;
|-&lt;br /&gt;
|STRG+B&lt;br /&gt;
|1 Bildschirmseite nach oben&lt;br /&gt;
|-&lt;br /&gt;
|STRG+F&lt;br /&gt;
|1 Bildschirmseite nach unten&lt;br /&gt;
|-&lt;br /&gt;
|/Ausdruck&lt;br /&gt;
|Sucht den Ausdruck (vorwärts) Weitersuchen mit n , N&lt;br /&gt;
|-&lt;br /&gt;
|?Ausdruck&lt;br /&gt;
|Sucht den Ausdurck (rückwärts) Weitersuchen mit n , N&lt;br /&gt;
|-&lt;br /&gt;
|0&lt;br /&gt;
|Zeilenanfang&lt;br /&gt;
|-&lt;br /&gt;
|$&lt;br /&gt;
|Zeilenende&lt;br /&gt;
|-&lt;br /&gt;
|w&lt;br /&gt;
|Nächstes Wort&lt;br /&gt;
|-&lt;br /&gt;
|b&lt;br /&gt;
|Vorheriges Wort&lt;br /&gt;
|-&lt;br /&gt;
|fc&lt;br /&gt;
|Auf das Zeichen c springen. c steht für ein beliebiges Zeichen&lt;br /&gt;
|-&lt;br /&gt;
|G&lt;br /&gt;
|Letzte Zeile der Datei&lt;br /&gt;
|-&lt;br /&gt;
|ng&lt;br /&gt;
|n-te Zeile der Datei&lt;br /&gt;
|-&lt;br /&gt;
|H&lt;br /&gt;
|Anfang der Bildschirmseite&lt;br /&gt;
|-&lt;br /&gt;
|L&lt;br /&gt;
|Ende der Bildschirmseite&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
====Befehle zur Textbearbeitung -&amp;gt; Was soll geschehen====&lt;br /&gt;
&lt;br /&gt;
{| Border=1 Cellpadding=2&lt;br /&gt;
|x&lt;br /&gt;
|Löscht Zeichen&lt;br /&gt;
|-&lt;br /&gt;
|d&lt;br /&gt;
|Löschen und in den Puffer laden&lt;br /&gt;
|-&lt;br /&gt;
|c&lt;br /&gt;
|Ändern&lt;br /&gt;
|-&lt;br /&gt;
|y&lt;br /&gt;
|In den Puffer laden&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
====Weitere wichtige Befehle:====&lt;br /&gt;
&lt;br /&gt;
{| Border=1 Cellpadding=2&lt;br /&gt;
|p&lt;br /&gt;
|Aus dem Puffer einfügen&lt;br /&gt;
|-&lt;br /&gt;
|u&lt;br /&gt;
|Undo, macht den letzten Befehl rückgängig&lt;br /&gt;
|-&lt;br /&gt;
|STRG+R&lt;br /&gt;
|Redo, macht den letzten Undo rückgängig&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
===Zeilen- oder Exmodus===&lt;br /&gt;
&lt;br /&gt;
Wie schon erwähnt wird der Zeilen oder Exmodus durch einen : eingeleitet.&lt;br /&gt;
Es folgen einige Beispiele.&lt;br /&gt;
&lt;br /&gt;
Befehle zum Speichern und Beenden:&lt;br /&gt;
&lt;br /&gt;
 :w          Schreibt Datei&lt;br /&gt;
 :w Datei2   Schreibt eine Kopie in Datei2&lt;br /&gt;
 :w !        Schreibt Datei (übergehe Schreibschutz)&lt;br /&gt;
 :w ! Datei2 Schreibt eine Kopie in Datei2 (übergehe Schreibschutz)&lt;br /&gt;
 :q          Schließe Datei&lt;br /&gt;
 :q!         Schließe Datei (verwerfe Änderungen)&lt;br /&gt;
 :wq         Schreibe Datei und beende Editor&lt;br /&gt;
 :wq!        Schreibe Datei und beende Editor (übergehe Schreibschutz)&lt;br /&gt;
 :q!         Schließe Datei (verwerfe Änderungen)&lt;br /&gt;
 :h          Hilfe anzeigen, durch drücken von :q Beenden der Hilfe&lt;br /&gt;
 :e Datei3   Editiere Datei3&lt;br /&gt;
 :e #        Editere vorhergehende Datei&lt;br /&gt;
 :1,3co9     Kopiere von der ersten bis zu dritten Zeile &lt;br /&gt;
             und füge den Inhalt unterhalb der neunte Zeile ein.&lt;br /&gt;
&lt;br /&gt;
Interaktionen mit Unix:&lt;br /&gt;
&lt;br /&gt;
 :r Datei4   Fügt Inhalt der Datei4 nach dem Cursor ein&lt;br /&gt;
 :r ! Befehl Fügt Ausgabe des Befehls nach dem Cursor ein&lt;br /&gt;
 :! Befehl   Führt den Befehl aus&lt;br /&gt;
 :sh         Starte Subshell -&amp;gt; mit exit kehrt man wieder zurück&lt;br /&gt;
             Eingabemodus zurück&lt;br /&gt;
&lt;br /&gt;
====Ersetzen von Textteilen====&lt;br /&gt;
&lt;br /&gt;
Die grundsätzliche Syntax lautet:&lt;br /&gt;
&lt;br /&gt;
 :[Zeilennummer,Zeilennummer]s/Muster/Ersetzung/[gc]&lt;br /&gt;
&lt;br /&gt;
 :s/worf/kirn/              der erste worf wird in der aktuellen Zeile durch kirn ersetzt&lt;br /&gt;
 :1,9s/worf/kirn/g          von der 1. bis zur 9. Zeile werden alle worf durch kirn ersetzt&lt;br /&gt;
 :1,$s/worf/kirn/           von der ersten bis zur letzten Zeile ersetze ersten worf durch&lt;br /&gt;
                            kirn&lt;br /&gt;
 :.,$s/worf/kirn/g          von der aktuellen bis zur letzten Zeile ersetze alle worf durch&lt;br /&gt;
                            kirn&lt;br /&gt;
 :1,.s/worf/kirn/c          von der 1. bis zur aktuellen Zeile ersetze worf durch kirn, frage&lt;br /&gt;
                            aber nach&lt;br /&gt;
 :1,$s/^worf/kirn/          von der ersten bis zur letzten Zeile ersetze worf am&lt;br /&gt;
                            Zeilenanfang durch kirn&lt;br /&gt;
 :4,$s/worf$/kirn/          von der 4. bis zur letzten Zeile ersetze worf am Zeilenende&lt;br /&gt;
                            durch kirn&lt;br /&gt;
 :1,$s/^#//                 lösche alle Kommentarzeichen&lt;br /&gt;
 :1,$s/^.orf/kirn/           ersetze alles was am Zeilenanfang ein beliebiges Zeichen hat&lt;br /&gt;
                            gefolgt von einem orf durch kirn&lt;br /&gt;
 :1,$s/^[A-Z]orf/kirn/g     suche nach einem Großbuchstaben am Anfang der Zeile&lt;br /&gt;
                            gefolgt von einem orf und ersetze durch kirn&lt;br /&gt;
 :1,$s/^M[ae][iy]e*r/kirn/  suche alles, was am Anfang der Zeile ein großes M enthält,&lt;br /&gt;
                            gefolgt von einem a oder e , gefolgt von einem i oder y ,&lt;br /&gt;
                            gefolgt von einem e , welches 0 oder N mal vorkommen kann,&lt;br /&gt;
                            gefolgt von einem r und ersetze es durch kirn&lt;br /&gt;
&lt;br /&gt;
==Reguläre Ausdrücke==&lt;br /&gt;
&lt;br /&gt;
{| Border=1 Cellpadding=2&lt;br /&gt;
|c&lt;br /&gt;
|Ein einzelner Buchstabe passt auf sich selbst&lt;br /&gt;
|-&lt;br /&gt;
|.&lt;br /&gt;
|Ein Punkt passt auf jedes Zeichen außer auf das Zeilenende&lt;br /&gt;
|-&lt;br /&gt;
|*&lt;br /&gt;
|Das dem Operator * vorangehende Muster kann 0 oder öfter vorkommen&lt;br /&gt;
|-&lt;br /&gt;
|^&lt;br /&gt;
|(Caret) passt auf den Zeilenanfang&lt;br /&gt;
|-&lt;br /&gt;
|$&lt;br /&gt;
|Passt auf das Zeilenende&lt;br /&gt;
|-&lt;br /&gt;
|\&lt;br /&gt;
|Das folgende Sonderzeichen wird entwertet&lt;br /&gt;
|-&lt;br /&gt;
|[...]&lt;br /&gt;
|Passt auf &amp;quot;genau&amp;quot; eins in [...] angebenen Zeichen&lt;br /&gt;
|-&lt;br /&gt;
|[^...]&lt;br /&gt;
|Passt auf &amp;quot;genau&amp;quot; ein Zeichen welches nicht in [...] angebenen ist&lt;br /&gt;
|-&lt;br /&gt;
|\&amp;lt;&lt;br /&gt;
|Passt auf den Wortanfang&lt;br /&gt;
|-&lt;br /&gt;
|\&amp;gt;&lt;br /&gt;
|Passt auf das Wortende&lt;br /&gt;
|-&lt;br /&gt;
|\+&lt;br /&gt;
|Das dem Operator \+ vorangehende Muster kann 1 oder öfter vorkommen&lt;br /&gt;
|-&lt;br /&gt;
|&amp;amp;&lt;br /&gt;
|Setzt das gefunden Suchmuster ein&lt;br /&gt;
|-&lt;br /&gt;
|\(...\)&lt;br /&gt;
|Speichert den Text auf den das Suchmuster passt zur späteren Verwendung&lt;br /&gt;
|-&lt;br /&gt;
|\n&lt;br /&gt;
|Setzt das vorangehende, mit \(...\) Gefundene wieder ein&lt;br /&gt;
|-&lt;br /&gt;
|(...)&lt;br /&gt;
|Gruppiert Auswahlmöglichkeiten&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;nowiki&amp;gt;|&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
|Trennt Auswahlmöglichkeiten&lt;br /&gt;
|-&lt;br /&gt;
|\b&lt;br /&gt;
|Passt auf den Anfang oder das Ende eines Wortes&lt;br /&gt;
|-&lt;br /&gt;
|\B&lt;br /&gt;
|Symbolisiert den Raum innerhalb eines Wortes&lt;br /&gt;
|-&lt;br /&gt;
|\w&lt;br /&gt;
|Passt auf alle alphanumerischen Zeichen [A-Za-z0-9]&lt;br /&gt;
|-&lt;br /&gt;
|\W&lt;br /&gt;
|Passt auf alle nichtalphanumerischen Zeichen [^A-Za-z0-9]&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Die Rangfolge der Operatoren(von der höchsten zur niedrigsten)&lt;br /&gt;
:(, ), ?, *, + | .&lt;br /&gt;
&lt;br /&gt;
Die anderen Operatoren sind mit den anderen Buchstaben gleichrangig.&lt;br /&gt;
&lt;br /&gt;
===Beispiel zum Suchen===&lt;br /&gt;
&lt;br /&gt;
 Suchmuster               Passt auf&lt;br /&gt;
 ^Tuxer                   Tuxer am Zeilenanfang&lt;br /&gt;
 [tT]uxer                 Tuxer oder tuxer&lt;br /&gt;
 80[23]?86                8086, 80286 oder 80386&lt;br /&gt;
&lt;br /&gt;
===grep===&lt;br /&gt;
&lt;br /&gt;
Mit grep ist es möglich, in Dateien nach regulären Ausdrücken zu suchen. Wenn&lt;br /&gt;
eine Übereinstimmung gefunden wird, wird die komplette Zeile auf die&lt;br /&gt;
Standardausgabe geschrieben. grep kann auch von STDIN lesen.Es ist&lt;br /&gt;
empfehlenswert, sich anzugwöhnen ,das Suchmuster in Anführungszeichen zu&lt;br /&gt;
schreiben. Es gibt 3 Arten fgrep = fastgrep , grep und egrep egrep&lt;br /&gt;
&lt;br /&gt;
Beispiel:&lt;br /&gt;
&lt;br /&gt;
 root@zero:~# cat text&lt;br /&gt;
 quatsch&lt;br /&gt;
 quatsch&lt;br /&gt;
 quatsch&lt;br /&gt;
 wichtig&lt;br /&gt;
 quatsch&lt;br /&gt;
 root@zero:~# grep wichtig text&lt;br /&gt;
 wichtig&lt;br /&gt;
 root@zero:~# &lt;br /&gt;
&lt;br /&gt;
 -c                   meldet nur die Gesamtzahl der Fundstellen&lt;br /&gt;
 -v                   zeigt nur Zeilen, die »Ausdruck« nicht enthalten&lt;br /&gt;
 -i                   ignoriert Groß- und Kleinschreibung&lt;br /&gt;
 -l                    meldet nur Dateinamen mit Fundstellen&lt;br /&gt;
 -n                   listet Zeilennummern zu jeder Fundstelle&lt;br /&gt;
 -f                   Dateiname »Dateiname« enthält die Such-Ausdrücke&lt;br /&gt;
 -E                   ist ein erweiterter regulärer Ausdruck (egrep)&lt;br /&gt;
 -F                   (Muster, Ausdruck) ist ein Muster (String) (fgrep)&lt;br /&gt;
 -b                   listet auch die Position der Fundstellen&lt;br /&gt;
 -C    Anzahl         Anzahl von Zeilen werden nach der Fundstelle ausgegeben&lt;br /&gt;
 -B    Anzahl         Anzahl von Zeilen werden vor der Fundstelle ausgegeben&lt;br /&gt;
 -r                   Durchsucht Verzeichnisse rekursiv&lt;br /&gt;
&lt;br /&gt;
==Useridendifikation==&lt;br /&gt;
===/etc/passwd===&lt;br /&gt;
====Beschreibung====&lt;br /&gt;
passwd ist eine ASCII-Datei, die eine Liste der Benutzer des Systems und deren&lt;br /&gt;
Passwörter enthält. Die Passwortdatei sollte für alle Benutzer lesbar sein, was für&lt;br /&gt;
dieVerschlüsselung notwendig ist; aber nur vom Superuser beschreibbar. Wenn&lt;br /&gt;
Sie eine neue Kennung einrichten, lassen Sie das Passwort-Feld in der Datei frei&lt;br /&gt;
und benutzen Sie passwd(1), um dem System ein Passwort für die neue Kennung&lt;br /&gt;
mitzuteilen.&lt;br /&gt;
&lt;br /&gt;
Die Datei /etc/passwd enthält einen Eintrag pro Zeile mit dem Format:&lt;br /&gt;
login_name:passwd:UID:GID:user_name:directory:shell&lt;br /&gt;
====Die Bedeutung der Felder:====&lt;br /&gt;
# login_name Kennung des Benutzers auf dem System.&lt;br /&gt;
# password   Hier steht bei Shadowsystemen ein x. Die Passwörter sind in der Datei /etc/shadow&lt;br /&gt;
# UID        Die numerische Benutzernummer.&lt;br /&gt;
#  GID        Die numerische Gruppennummer des Benutzers.&lt;br /&gt;
# user_name Ein optionales Kommentarfeld, oft benutzt für den vollen Namen des Benutzers und weitere Informationen (Telefon, Raum-Nummer etc.).&lt;br /&gt;
# directory  Das Heimatverzeichnis $HOME des Benutzers.&lt;br /&gt;
# shell      Das Programm, das beim Einloggen gestartet werden soll (falls nicht nötig, benutzen Sie /bin/bash).&lt;br /&gt;
&lt;br /&gt;
===/etc/group===&lt;br /&gt;
====Beschreibung====&lt;br /&gt;
etc/group ist eine ASCII Datei, die Gruppen definiert, zu denen Benutzer&lt;br /&gt;
gehören. Es gibt nur einen Eintrag pro Zeile; jede Zeile hat folgendes Format:&lt;br /&gt;
         GruppenName:Passwort:GruppenKennung:BenutzerListe&lt;br /&gt;
Beschreibung der Felder:&lt;br /&gt;
#     GruppenName      Die Bezeichnung der Gruppe.&lt;br /&gt;
#     Passwort         Das (verschlüsselte) Gruppen-Passwort. Wenn dieses Feld leer ist, wird kein Passwort benötigt.&lt;br /&gt;
#     GruppenKennung Die numerische Identifikation der Gruppe.&lt;br /&gt;
#     BenutzerListe    Alle Namen der Mitglieder, getrennt durch Kommas.&lt;br /&gt;
&lt;br /&gt;
===/etc/shadow===&lt;br /&gt;
====Beschreibung====&lt;br /&gt;
shadow beinhaltet Informationen zu den verschlüsselten Passwörten, zu den&lt;br /&gt;
Benutzerzugängen und weitere Informationen zur Laufzeit der Passwörter.&lt;br /&gt;
 Name:Passwort:Letzte Änderung:Mintage:Maxtage:Warntage:Inaktiv:Ablauf&lt;br /&gt;
#    Der Loginname&lt;br /&gt;
#    verschlüsseltes Passwort &lt;br /&gt;
&amp;lt;nowiki&amp;gt;*&amp;lt;/nowiki&amp;gt; bedeutet Benutzer kann sich nicht einlogen&lt;br /&gt;
! bedeutet Benutzer hat kein Passwort gesetzt&lt;br /&gt;
#    Tage seit dem 1 Januar 1970 an dem das Passwort letztmals geändert wurde&lt;br /&gt;
#    Tage, die das Passwort behalten werden muss, bevor es wieder geändert werden kann&lt;br /&gt;
#     Die Anzahl der Tage, nach denen der Benutzer das Passwort wieder ändern muss&lt;br /&gt;
#    Anzahl der Tage bevor das Passwort abläuft und der Benutzer gewarnt wird&lt;br /&gt;
#    Wenn der Zugang diese Anzahl von Tagen nicht benutzt wird, wird der Zugang gesperrt&lt;br /&gt;
#    Tag seit dem 1 Januar 1970, an dem der Zugang gesperrt wird&lt;br /&gt;
#    Reserviertes Feld&lt;br /&gt;
&lt;br /&gt;
Die Datei sollte aus Sicherheitgründen nicht für einen normalen Benutzer lesbar&lt;br /&gt;
sein.&lt;br /&gt;
&lt;br /&gt;
==Programme zur Userverwaltung==&lt;br /&gt;
===useradd===&lt;br /&gt;
User anlegen&lt;br /&gt;
 root@zero:~# useradd -m -u 1011 -g users -G admin -d /home/erwin -s /bin/bash -c &amp;quot;Erwin Lehman&amp;quot;  erwin&lt;br /&gt;
{| border=1 cellpadding=2&lt;br /&gt;
|&amp;quot;-m&amp;quot;&lt;br /&gt;
|Lege Homedirectory an&lt;br /&gt;
|-&lt;br /&gt;
|&amp;quot;-u 1011&amp;quot;&lt;br /&gt;
|Userid wird zugeordnet&lt;br /&gt;
|-&lt;br /&gt;
|&amp;quot;-g users&amp;quot;&lt;br /&gt;
|Primäre Gruppe wird zugeordnet&lt;br /&gt;
|-&lt;br /&gt;
|&amp;quot;-G admin&amp;quot;&lt;br /&gt;
|Sekunbdäre Gruppe wird zugeordnet&lt;br /&gt;
|-&lt;br /&gt;
|&amp;quot;-d /home/erwin/&amp;quot;&lt;br /&gt;
|Name des Homedirectory&lt;br /&gt;
|-&lt;br /&gt;
|&amp;quot;-s /bin/bash&amp;quot;&lt;br /&gt;
|Bash wird zugeordnet&lt;br /&gt;
|- &lt;br /&gt;
|&amp;quot;-c Erwin Lehman&amp;quot;&lt;br /&gt;
|Kommentarfeld&lt;br /&gt;
|-&lt;br /&gt;
|&amp;quot;erwin&amp;quot; &lt;br /&gt;
|Name des Users&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Defaulteinstellungen anzeigen&lt;br /&gt;
 root@zero:~# useradd -D&lt;br /&gt;
 GROUP=100&lt;br /&gt;
 HOME=/home&lt;br /&gt;
 INACTIVE=-1&lt;br /&gt;
 EXPIRE=&lt;br /&gt;
 SHELL=/bin/sh&lt;br /&gt;
 SKEL=/etc/skel&lt;br /&gt;
 CREATE_MAIL_SPOOL=no&lt;br /&gt;
&lt;br /&gt;
Defaulteinstellungen ändern&lt;br /&gt;
 useradd -D -s /bin/bash&lt;br /&gt;
&lt;br /&gt;
Konfigurationsdatei&lt;br /&gt;
 root@zero:~# cat /etc/default/useradd &lt;br /&gt;
 SHELL=/bin/bash&lt;br /&gt;
 GROUP=100&lt;br /&gt;
 HOME=/home&lt;br /&gt;
 INACTIVE=-1&lt;br /&gt;
 EXPIRE=&lt;br /&gt;
 SKEL=/etc/skel&lt;br /&gt;
 CREATE_MAIL_SPOOL=no&lt;br /&gt;
&lt;br /&gt;
===usermod===&lt;br /&gt;
User modifizieren&lt;br /&gt;
 root@zero:~# usermod -l fritz -s /bin/sh -G admin,video erwin&lt;br /&gt;
{| border=1 cellpadding=2&lt;br /&gt;
|&amp;quot;-l fritz&amp;quot;&lt;br /&gt;
|Neuer Username&lt;br /&gt;
|-&lt;br /&gt;
|&amp;quot;-s /bin/sh&amp;quot;&lt;br /&gt;
|Neue Shell&lt;br /&gt;
|-&lt;br /&gt;
|&amp;quot;-G admin, video&amp;quot;&lt;br /&gt;
|Sekunbdäre Gruppen werden zugeordnet&lt;br /&gt;
|-&lt;br /&gt;
|&amp;quot;erwin&amp;quot; &lt;br /&gt;
|Name des Users&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
===userdel===&lt;br /&gt;
User inklusive Homedirectory löschen&lt;br /&gt;
 root@zero:~# userdel -r fritz&lt;br /&gt;
&lt;br /&gt;
===passwd===&lt;br /&gt;
Rootpasswort ändern&lt;br /&gt;
 root@zero:~# passwd &lt;br /&gt;
 Geben Sie ein neues UNIX Passwort ein:'''sysadm''' &lt;br /&gt;
 Geben Sie das neue UNIX Passwort erneut ein:'''sysadm''' &lt;br /&gt;
 passwd: Passwort erfolgreich geändert&lt;br /&gt;
&lt;br /&gt;
Passwort von tux ändern&lt;br /&gt;
 root@zero:~# passwd tux&lt;br /&gt;
 Geben Sie ein neues UNIX Passwort ein:'''suxer''' &lt;br /&gt;
 Geben Sie das neue UNIX Passwort erneut ein:'''suxer'''&lt;br /&gt;
 passwd: Passwort erfolgreich geändert&lt;br /&gt;
&lt;br /&gt;
Minimale und Maximale Gültigkeit des Passwortes von tux festlegen&lt;br /&gt;
 root@zero:~# passwd -n 5 -x 120 tux&lt;br /&gt;
&lt;br /&gt;
===groupadd===&lt;br /&gt;
 root@zero:~# groupadd -f -g 2001 xinuxer&lt;br /&gt;
{| border=1 cellpadding=2&lt;br /&gt;
|&amp;quot;-f&amp;quot;&lt;br /&gt;
|Überschreibe bestehende Gruppe&lt;br /&gt;
|-&lt;br /&gt;
|&amp;quot;-g 2001&amp;quot;&lt;br /&gt;
|GID der Gruppe&lt;br /&gt;
|-&lt;br /&gt;
|&amp;quot;xinuxer&amp;quot; &lt;br /&gt;
|Name des Gruppe&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==chmod==&lt;br /&gt;
Die Syntax des Befehls chmod lautet:&lt;br /&gt;
&lt;br /&gt;
'''chmod''' WerWieWas [,WerWieWas,.....] Dateiliste&lt;br /&gt;
&lt;br /&gt;
oder&lt;br /&gt;
&lt;br /&gt;
'''chmod''' Oktalzahl Dateiliste&lt;br /&gt;
&lt;br /&gt;
Durch WerWieWas bzw. Oktalzahl wird die Rechtetabelle definiert. Innerhalb von&lt;br /&gt;
WerWieWas darf es kein Leerzeichen geben. Wer bezeichnet den Benutzerkreis,&lt;br /&gt;
dem man Rechte gibt, Wie die Art, in der die Rechte gegeben werden und Was die&lt;br /&gt;
Rechte als solche. Im einzelnen können folgende Kürzel benutzt werden:&lt;br /&gt;
&lt;br /&gt;
Für Wer kann eines der folgenden Kürzel oder eine Kombination davon stehen:&lt;br /&gt;
 u                   (user) Rechte für den Dateibesitzer&lt;br /&gt;
 g                   (group) Rechte für die Gruppe&lt;br /&gt;
 o                   (others) Rechte für alle anderen Benutzer&lt;br /&gt;
 a                   (all) Rechte für alle Benutzer&lt;br /&gt;
Für Wie steht eines der folgenden Kürzel:&lt;br /&gt;
 +                   Die Rechte werden zu den vorhandenen zusätzlich vergeben&lt;br /&gt;
 -                   Die im Folgenden genannten Rechte werden entzogen&lt;br /&gt;
 =                   Die im Folgenden genannten Rechte ersetzen die bisherigen&lt;br /&gt;
Für Was steht eines der folgenden Kürzel:&lt;br /&gt;
 r                   (read) lesen&lt;br /&gt;
 w                   (write) schreiben&lt;br /&gt;
 x                   (execute) ausführen&lt;br /&gt;
oder diese Sonderformen&lt;br /&gt;
 s                   (usersbit) Programm läuft unter der UID des Besitzers&lt;br /&gt;
 s                   (groupsbit)Programm läuft unter der GID des GRUPPE&lt;br /&gt;
 t                   (stickybit) Dateien im Verzeichnis darf nur Besitzer löschen&lt;br /&gt;
&lt;br /&gt;
===Beispiel===&lt;br /&gt;
Setze für alle Schreib- und Leserecht&lt;br /&gt;
 xinux@zero:~$ chmod a=rw test &lt;br /&gt;
 xinux@zero:~$ ls -l test &lt;br /&gt;
 -rw-rw-rw- 1 xinux xinux 0 2009-06-16 12:01 test&lt;br /&gt;
 xinux@zero:~$ &lt;br /&gt;
&lt;br /&gt;
Erteile Besitzer Ausführungsrecht&lt;br /&gt;
 xinux@zero:~$ chmod u+x test ; ls -l test &lt;br /&gt;
 -rwxrw-rw- 1 xinux xinux 0 2009-06-16 12:01 test&lt;br /&gt;
 xinux@zero:~$ &lt;br /&gt;
&lt;br /&gt;
===chmod oktale Schreibweise===&lt;br /&gt;
 Specialrights        User           Group         Other&lt;br /&gt;
 usbit gsbit sticky    r    w   x     r   w   x     r   w   x&lt;br /&gt;
   1     1      1      1    1   1     1   1   1     1   1   1&lt;br /&gt;
   0     0      0      0    0   0     0   0   0     0   0   0&lt;br /&gt;
 Oktale Wertigkeit pro Recht&lt;br /&gt;
   4     2       1     4    2   1     4   2   1     4   2   1&lt;br /&gt;
&lt;br /&gt;
===Beispiele===&lt;br /&gt;
 xinux@zero:~$ chmod 751 test ; ls -l test&lt;br /&gt;
 -rwxr-x--x 1 xinux xinux 0 2009-06-16 12:01 test&lt;br /&gt;
 xinux@zero:~$ &lt;br /&gt;
&lt;br /&gt;
 xinux@zero:~$ chmod 4770 test ; ls -l test&lt;br /&gt;
 -rwsrwx--- 1 xinux xinux 0 2009-06-16 12:01 test&lt;br /&gt;
 xinux@zero:~$ &lt;br /&gt;
&lt;br /&gt;
 xinux@zero:~$ chmod 0 test ; ls -l test &lt;br /&gt;
 ---------- 1 xinux xinux 0 2009-06-16 12:01 test&lt;br /&gt;
&lt;br /&gt;
===chmod Optionen===&lt;br /&gt;
 -c   (changes) es werden nur die Dateien angezeigt, deren Zugriffsrechte tatsächlich verändert werden&lt;br /&gt;
 -f   (silent, quiet) Fehlermeldungen wegen fehlgeschlagener Änderungsversuche werden unterdrückt&lt;br /&gt;
 -v   (verbose) alle Aktionen werden angezeigt&lt;br /&gt;
 -R   (recursive) die Zugriffsrechte aller Dateien in den Unterverzeichnissen werden ebenfalls geändert&lt;br /&gt;
&lt;br /&gt;
Theoretisch sind alle Kombinationen der Zugriffsrechte denkbar, aber der&lt;br /&gt;
Eigentümer einer Datei darf diese immer lesen, selbst wenn das Lesebit nicht&lt;br /&gt;
gesetzt ist. Genauso macht es wenig Sinn, eine gewöhnliche Textdatei als&lt;br /&gt;
ausführbar zu setzen; die Shell wird damit nichts anfangen können. Ein x für ein&lt;br /&gt;
Verzeichnis gibt an, dass in dieses gewechselt werden kann.&lt;br /&gt;
&lt;br /&gt;
Rechte sind verbindlich&lt;br /&gt;
&lt;br /&gt;
Interessant ist auch ein Konstrukt folgender Art&lt;br /&gt;
 -rwx---rwx&lt;br /&gt;
&lt;br /&gt;
das angibt, dass mit der Datei alles angestellt werden kann, außer durch Nutzer der&lt;br /&gt;
Gruppe. Versucht irgend jemand, der nicht der Gruppe des Eigentümers angehört,&lt;br /&gt;
die Datei zu modifizieren, wird ihm dies gelingen, einem Gruppenmitglied bleibt&lt;br /&gt;
dies versagt, obwohl er ja gleichzeitig ein &amp;quot;Anderer&amp;quot; ist. D.h. die Rechte der&lt;br /&gt;
Gruppe sind verbindlicher, als die Rechte der anderen!&lt;br /&gt;
&lt;br /&gt;
===Bedeutungen der Zugriffsarten===&lt;br /&gt;
====Dateien====&lt;br /&gt;
* r: Der Inhalt der Datei kann gelesen und damit auch kopiert werden. &lt;br /&gt;
 root@zero:~# cat test&lt;br /&gt;
 Dies ist eine Testdatei&lt;br /&gt;
  &lt;br /&gt;
 root@zero:~# cp test backup&lt;br /&gt;
&lt;br /&gt;
* w: Der Inhalt der Datei darf verändert werden. Ob die Datei gelöscht werden kann ist&lt;br /&gt;
keine Eigenschaft der Datei, sondern des Verzeichnisses, indem sich die Datei befindet.&lt;br /&gt;
 root@zero:~# cat &amp;gt; test&lt;br /&gt;
 Hier steht jetzt was anderes&lt;br /&gt;
 ^C&lt;br /&gt;
 root@zero:~# cat test&lt;br /&gt;
 Hier steht jetzt was anderes&lt;br /&gt;
  &lt;br /&gt;
 xinux@zero:~$ ls -ld verzeichnis/&lt;br /&gt;
 dr-xr-xr-x 2 xinux xinux 4096 2009-06-18 11:16 verzeichnis/&lt;br /&gt;
 xinux@zero:~/verzeichnis$ rm text&lt;br /&gt;
 rm: Entfernen von „text“ nicht möglich: Permission denied&lt;br /&gt;
&lt;br /&gt;
* x: Ausführrecht für Programme und Skripte&lt;br /&gt;
 xinux@zero:~$ ./programm&lt;br /&gt;
 -bash: ./programm: Permission denied&lt;br /&gt;
 xinux@zero:~$ chmod +x programm&lt;br /&gt;
 xinux@zero:~$ ./programm&lt;br /&gt;
 Test&lt;br /&gt;
  test&lt;br /&gt;
&lt;br /&gt;
====Verzeichnisse====&lt;br /&gt;
* r: Die Einträge in dem Verzeichnis sind lesbar.&lt;br /&gt;
Leserecht von verzeichnis/ entziehen&lt;br /&gt;
 xinux@zero:~$ chmod a-r verzeichnis/&lt;br /&gt;
 xinux@zero:~$ ls verzeichnis/&lt;br /&gt;
 ls: Öffnen von Verzeichnis verzeichnis/ nicht möglich: Permission denied&lt;br /&gt;
Leserecht für Benutzer und Gruppe vergeben&lt;br /&gt;
 xinux@zero:~$ chmod a+r verzeichnis/&lt;br /&gt;
 xinux@zero:~$ ls verzeichnis/&lt;br /&gt;
 text&lt;br /&gt;
&lt;br /&gt;
* w: Die Einträge in dem Verzeichnis können geändert werden. &lt;br /&gt;
Neue Datei erstellen&lt;br /&gt;
 xinux@zero:~$ touch neu&lt;br /&gt;
 xinux@zero:~$ ls neu&lt;br /&gt;
 neu&lt;br /&gt;
&lt;br /&gt;
Datei löschen&lt;br /&gt;
 xinux@zero:~$ rm neu&lt;br /&gt;
 xinux@zero:~$ ls neu&lt;br /&gt;
 ls: Zugriff auf neu nicht möglich: No such file or directory&lt;br /&gt;
&lt;br /&gt;
* x: Der Name des Verzeichnisses kann in einem Pfadnamen erscheinen.&lt;br /&gt;
Verzeichnis ohne x Recht&lt;br /&gt;
 xinux@zero:~$ chmod a-x verzeichnis/&lt;br /&gt;
Wechseln in Verzeichnis mangels x-Recht nicht möglich&lt;br /&gt;
 xinux@zero:~$ cd verzeichnis/&lt;br /&gt;
 -bash: cd: verzeichnis/: Permission denied&lt;br /&gt;
x-Recht vergeben&lt;br /&gt;
 xinux@zero:~$ chmod a+x verzeichnis/&lt;br /&gt;
damit Wechsel in Verzeichnis möglich&lt;br /&gt;
 xinux@zero:~$ cd verzeichnis/&lt;br /&gt;
 xinux@zero:~/verzeichnis$ pwd&lt;br /&gt;
 /home/xinux/verzeichnis&lt;br /&gt;
&lt;br /&gt;
====umask====&lt;br /&gt;
Neue Dateien und Verzeichnisse werden mit ein und denselben Zufriffsrechten erzeugt.&lt;br /&gt;
 xinux@zero:~$ mkdir text&lt;br /&gt;
 xinux@zero:~$ touch textdat&lt;br /&gt;
 xinux@zero:~$ ls -ld text*&lt;br /&gt;
 drwxr-xr-x 2 xinux xinux 4096 2009-06-18 11:37 text&lt;br /&gt;
 -rw-r--r-- 1 xinux xinux    0 2009-06-18 11:37 textdat&lt;br /&gt;
&lt;br /&gt;
Zuständig für dieses Verhalten ist die sogenannte umask, die oft in der Datei&lt;br /&gt;
/etc/profile auf den Wert 022 voreingestellt ist. Zusätzlich wird noch eine&lt;br /&gt;
Maximalmaske benötigt, die sich für Verzeichnisse und andere Dateien&lt;br /&gt;
unterscheidet. Die bei der Erzeugung gesetzten Rechte entstehen nun, indem von&lt;br /&gt;
der Maximalmaske der durch die umask vorgegebene Wert subtrahiert wird:&lt;br /&gt;
&lt;br /&gt;
{| border=1 cellpadding=2&lt;br /&gt;
!&lt;br /&gt;
! Dateien&lt;br /&gt;
! Verzeichnisse&lt;br /&gt;
|-&lt;br /&gt;
| Systemvorgabe&lt;br /&gt;
| 666&lt;br /&gt;
| 777&lt;br /&gt;
|-&lt;br /&gt;
| -umask&lt;br /&gt;
| 022&lt;br /&gt;
| 022&lt;br /&gt;
|-&lt;br /&gt;
| Ergebnis&lt;br /&gt;
| 644&lt;br /&gt;
| 755&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
 xinux@zero:~$ grep umask /etc/profile&lt;br /&gt;
 umask 022&lt;br /&gt;
&lt;br /&gt;
==Gruppenzugehörigkeit==&lt;br /&gt;
===newgrp===&lt;br /&gt;
Ändert die Gruppenzugehörigkeit eines Benutzers auf die angegebene Gruppe. Wenn keine Gruppe angegeben wird, wird die &lt;br /&gt;
Anmeldegruppe des Benutzers verwendet. Die neue Gruppe wird anschließend fü Zugriffskontrollen verwendet.&lt;br /&gt;
&lt;br /&gt;
 newgrp Gruppenname&lt;br /&gt;
&lt;br /&gt;
 root@zero:~# newgrp hacker&lt;br /&gt;
 root@zero:~# id&lt;br /&gt;
 uid=0(root) gid=1006(hacker) Gruppen=0(root),1006(hacker)&lt;br /&gt;
&lt;br /&gt;
===chgrp===&lt;br /&gt;
Verändert die Besitzugehörigkeit zu der angegebenen Gruppe&lt;br /&gt;
&lt;br /&gt;
 chgrp [Optionen] Gruppe Datei(en)&lt;br /&gt;
&lt;br /&gt;
Optionen:&lt;br /&gt;
 -c Zeigt Veränderungen an&lt;br /&gt;
 -f Unterdrückt die meisten Fehlermeldungen&lt;br /&gt;
 -R Verändert Dateien und Verzeichnisse rekursiv&lt;br /&gt;
 -v Gibt geschwätzige Ausgabe aus.&lt;br /&gt;
&lt;br /&gt;
 root@zero:~# ls -l&lt;br /&gt;
 ...&lt;br /&gt;
 d-wx--x--x  3 root root 4096 2009-06-18 13:34 verzeichnis&lt;br /&gt;
 &lt;br /&gt;
 root@zero:~# chgrp -R xinux verzeichnis/&lt;br /&gt;
 root@zero:~# ls -l&lt;br /&gt;
 ...&lt;br /&gt;
 d-wx--x--x  3 root xinux 4096 2009-06-18 13:34 verzeichnis&lt;br /&gt;
&lt;br /&gt;
 xinux@zero:~$ cd /root/verzeichnis/&lt;br /&gt;
 xinux@zero:/root/verzeichnis$ pwd&lt;br /&gt;
 /root/verzeichnis&lt;br /&gt;
&lt;br /&gt;
===chown===&lt;br /&gt;
Ändert den Eigentümer von einer oder mehreren Dateien in den angegebenen Benutzer. &lt;br /&gt;
chown erlaubt ebenfalls das Ändern der Gruppeneigentümreschaft. Nur der aktuelle Eigentümer einer&lt;br /&gt;
Datei oder der Superuser (root) darf die Eigentumsverhältnisse ändern.&lt;br /&gt;
&lt;br /&gt;
 chown [Optionen] Benutzer(:Gruppe) Dateien&lt;br /&gt;
&lt;br /&gt;
Optionen:&lt;br /&gt;
 -c Gibt Informationen über die veränderten Dateien aus&lt;br /&gt;
 --dereference Symbolischen Links folgen&lt;br /&gt;
 -v Gibt Informationen über alle Dateien aus, die chown zu ändern versucht, egal, ob die Änderung erfolgt ist oder nicht&lt;br /&gt;
 -R Geht rekursiv durch alle Unterverzeichnisse und führt die Änderungen durch. &lt;br /&gt;
&lt;br /&gt;
 root@zero:~# chown -R xinux.xinux verzeichnis/&lt;br /&gt;
 root@zero:~# ls -l&lt;br /&gt;
 insgesamt 12&lt;br /&gt;
 drwx------ 13 root  root  4096 2009-04-21 15:11 profile&lt;br /&gt;
 --w-------  1 root  root     0 2009-06-18 11:13 test&lt;br /&gt;
 -rw-r--r--  1 root  root    40 2009-06-18 12:04 text&lt;br /&gt;
 drwxrwx--x  3 xinux xinux 4096 2009-06-18 13:39 verzeichnis&lt;br /&gt;
 &lt;br /&gt;
 root@zero:~# chown -R -c xinux.xinux verzeichnis/&lt;br /&gt;
 &lt;br /&gt;
 root@zero:~# chown -R -v xinux.xinux verzeichnis/&lt;br /&gt;
 Eigentümer von „verzeichnis/01“ als xinux:xinux erhalten&lt;br /&gt;
 Eigentümer von „verzeichnis/test“ als xinux:xinux erhalten&lt;br /&gt;
 Eigentümer von „verzeichnis/“ als xinux:xinux erhalten&lt;br /&gt;
&lt;br /&gt;
==Eingabe/Ausgabe==&lt;br /&gt;
Standardeingabe (0): Laufende Programme erwarten von hier ihre Eingaben (normalerweise handelt es sich um die Tastatur).&lt;br /&gt;
&lt;br /&gt;
Standardausgabe (1): Programme schreiben auf diese ihre Ausgaben (Bildschirm).&lt;br /&gt;
&lt;br /&gt;
Standardfehlerausgabe (2) : Fehlerausgaben landen hier (Bildschirm, aber nur die aktive Konsole).&lt;br /&gt;
&lt;br /&gt;
[[Bild:std.jpg]]&lt;br /&gt;
&lt;br /&gt;
===cat===&lt;br /&gt;
Das Programm cat liest von STDIN und gibt es STDOUT wieder aus&lt;br /&gt;
&lt;br /&gt;
Einlesen der Datei text&lt;br /&gt;
 root@zero:~# cat &amp;lt; text&lt;br /&gt;
 wichtig&lt;br /&gt;
&lt;br /&gt;
Schreiben in die Datei text, dies überschreibt den bisherigen Inhalt der Datei&lt;br /&gt;
 root@zero:~# cat &amp;gt; text&lt;br /&gt;
 sogar noch wichtiger &lt;br /&gt;
 &lt;br /&gt;
Ausgeben der Datei text&lt;br /&gt;
 root@zero:~# cat text &lt;br /&gt;
 sogar noch wichtiger&lt;br /&gt;
&lt;br /&gt;
Lesen aus der Datei text und schreiben in die Datei neuertext&lt;br /&gt;
 root@zero:~# cat &amp;lt; text &amp;gt; neuertext&lt;br /&gt;
 root@zero:~# cat neuertext&lt;br /&gt;
 sogar noch wichtiger&lt;br /&gt;
&lt;br /&gt;
Anhängen der Ausgabe von date an die Datei neuertext&lt;br /&gt;
 root@zero:~# date &amp;gt;&amp;gt; neuertext&lt;br /&gt;
 root@zero:~# cat neuertext&lt;br /&gt;
 sogar noch wichtiger&lt;br /&gt;
 Do 18. Jun 14:08:58 CEST 2009&lt;br /&gt;
&lt;br /&gt;
Umleiten des Standardfehlerkanals nach error&lt;br /&gt;
 root@zero:~# rm sux 2&amp;gt; error&lt;br /&gt;
 root@zero:~# more error&lt;br /&gt;
 rm: Entfernen von „sux“ nicht möglich: No such file or directory&lt;br /&gt;
&lt;br /&gt;
===Umleitungen===&lt;br /&gt;
Nacheinander auszuführende Kommandos&lt;br /&gt;
 root@zero:~# pwd; date&lt;br /&gt;
 /root&lt;br /&gt;
 Do 18. Jun 14:13:05 CEST 2009&lt;br /&gt;
 &lt;br /&gt;
Übergeben der Ausgabe von tail als Eingabe von grep mit Hilfe der Pipe &amp;quot;|&amp;quot;&lt;br /&gt;
 root@zero:~# tail /var/log/auth.log | grep xinux&lt;br /&gt;
 Jun 18 13:52:33 zero nss_wins[11433]: pam_unix(login:session): session closed for user xinux&lt;br /&gt;
&lt;br /&gt;
Übergeben der letzten 100 Zeilen von syslog als Eingabe von grep&lt;br /&gt;
 root@zero:~# tail /var/log/syslog -n 100 | grep error&lt;br /&gt;
 Jun 18 09:30:54 zero kernel: [154384.692135] end_request: I/O error, dev fd0, sector 0&lt;br /&gt;
 Jun 18 09:30:54 zero kernel: [154384.712137] end_request: I/O error, dev fd0, sector 0&lt;br /&gt;
&lt;br /&gt;
==tr==&lt;br /&gt;
tr ist ein Programm um Zeichen zu übersetzen. Dies betrifft nur die Ausgabe, die Datei selbst bleibt unverändert.&lt;br /&gt;
&lt;br /&gt;
Ersetzt Kleinbuchstaben durch Großbuchstaben aus der Datei text&lt;br /&gt;
 root@zero:~# tr &amp;quot;a-z&amp;quot; &amp;quot;A-Z&amp;quot; &amp;lt; text&lt;br /&gt;
 SOGAR NOCH WICHTIGER&lt;br /&gt;
 123&lt;br /&gt;
 34&lt;br /&gt;
 4711&lt;br /&gt;
 TEST&lt;br /&gt;
&lt;br /&gt;
Ersetzt alle Zahlen durch X&lt;br /&gt;
 root@zero:~# tr &amp;quot;0-9&amp;quot; &amp;quot;X&amp;quot; &amp;lt; text&lt;br /&gt;
 sogar noch wichtiger&lt;br /&gt;
 XXX&lt;br /&gt;
 XX&lt;br /&gt;
 XXXX&lt;br /&gt;
 test&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
 root@zero:~# cat &amp;gt; test&lt;br /&gt;
 +++++&lt;br /&gt;
 ###&lt;br /&gt;
 1111&lt;br /&gt;
&lt;br /&gt;
-s löscht mehrfach kommende Zeichen&lt;br /&gt;
 root@zero:~# tr '''-s''' &amp;quot;+&amp;quot; &amp;lt; test&lt;br /&gt;
 +&lt;br /&gt;
 ###&lt;br /&gt;
 1111&lt;br /&gt;
&lt;br /&gt;
-d löscht vorkommende Zeichen &lt;br /&gt;
 root@zero:~# tr '''-d''' &amp;quot;#&amp;quot; &amp;lt; test&lt;br /&gt;
 +++++ &lt;br /&gt;
 &lt;br /&gt;
 1111&lt;br /&gt;
&lt;br /&gt;
==cut==&lt;br /&gt;
Spalten aus einer Datei schneiden. Dies betrifft nur die Ausgabe, die Datei selbst bleibt unverändert.&lt;br /&gt;
 &lt;br /&gt;
Schneidet die erste Spalte aus, der Delimiter ist : &lt;br /&gt;
 root@zero:~# cut -f 1 -d : /etc/passwd&lt;br /&gt;
 root&lt;br /&gt;
 daemon&lt;br /&gt;
 bin&lt;br /&gt;
 ...&lt;br /&gt;
 xinux&lt;br /&gt;
&lt;br /&gt;
 root@zero:~# more test&lt;br /&gt;
 1234#5678#9999&lt;br /&gt;
 &lt;br /&gt;
Schneidet die zweite Spalte aus, der Delimiter ist #&lt;br /&gt;
 root@zero:~# cut -f 2 -d &amp;quot;#&amp;quot; &amp;lt; test&lt;br /&gt;
 5678&lt;br /&gt;
&lt;br /&gt;
Schneidet bis zum 3 Zeichen ab&lt;br /&gt;
 root@zero:~$ echo S01policykit | cut -c 4-&lt;br /&gt;
 policykit&lt;br /&gt;
&lt;br /&gt;
==expand==&lt;br /&gt;
Ersetzt Tabulatorzeichen durch Folgen von Leerzeichen und schreibt das Ergebnis auf die Standardausgabe&lt;br /&gt;
 root@zero:~# expand /etc/samba/smb.conf&lt;br /&gt;
 ...&lt;br /&gt;
&lt;br /&gt;
==fmt==&lt;br /&gt;
#Setzt den Text der Dateien im Blocksatz der angegebenen Breite durch Auffüllen von Zeilen und Entfernen von Zeilenwechseln.&lt;br /&gt;
Standardgemäß werden Leerzeilen, die Position von Leerzeichen und der Einzug am Zeilenanfang erhalten. fmt versucht, &lt;br /&gt;
Zeilenumbrüche an Satzenden durchzuführen sowie sie nach dem ersten oder vor dem letzten Wort eines Satzes zu vermeiden. &lt;br /&gt;
 &lt;br /&gt;
 fmt [Optionen] [Dateien]&lt;br /&gt;
&lt;br /&gt;
Optionen&lt;br /&gt;
&lt;br /&gt;
* -p ''Präfix'': Formatiert nur Zeilen, die mit ''Präfix'' anfangen&lt;br /&gt;
 root@zero:/tmp# fmt -p '#' text&lt;br /&gt;
 #Setzt den Text der Dateien im Blocksatz der angegebenen Breite durch&lt;br /&gt;
 #Auffüllen von Zeilen und Entfernen von Zeilenwechseln.  Standardgemäß&lt;br /&gt;
 #werden Leerzeilen, die Position von Leerzeichen und der Einzug am&lt;br /&gt;
 #Zeilenanfang erhalten. fmt versucht,&lt;br /&gt;
 Zeilenumbrüche an Satzenden durchzuführen sowie sie nach dem ersten oder vor dem letzten Wort eines Satzes zu vermeiden.&lt;br /&gt;
&lt;br /&gt;
* -u : Erzwingt genau ein Leerzeichen zwischen Wörtern und zwei Leerzeichen zwischen Sätzen&lt;br /&gt;
&lt;br /&gt;
* -w ''Breite'': Setzt die Ausgabebreite auf ''Breite''&lt;br /&gt;
 root@zero:/tmp# fmt -w 30 text&lt;br /&gt;
 #Setzt den Text der Dateien&lt;br /&gt;
 im Blocksatz der angegebenen&lt;br /&gt;
 Breite durch Auffüllen&lt;br /&gt;
 von Zeilen und Entfernen&lt;br /&gt;
 von Zeilenwechseln.&lt;br /&gt;
 #Standardgemäß werden&lt;br /&gt;
 Leerzeilen, die Position von&lt;br /&gt;
 Leerzeichen und der Einzug am&lt;br /&gt;
 Zeilenanfang erhalten. fmt&lt;br /&gt;
 versucht, Zeilenumbrüche&lt;br /&gt;
 an Satzenden durchzuführen&lt;br /&gt;
 sowie sie nach dem ersten&lt;br /&gt;
 oder vor dem letzten Wort&lt;br /&gt;
 eines Satzes zu vermeiden.&lt;br /&gt;
&lt;br /&gt;
==join==&lt;br /&gt;
Führt die Zeilen zweier sortierter Dateien anhand von '''Übereinstimmungen''' in einem gemeinsamen Feld zusammen.&lt;br /&gt;
&lt;br /&gt;
 root@zero:~# more name&lt;br /&gt;
 1. karl&lt;br /&gt;
 2. heinz&lt;br /&gt;
 3. hans&lt;br /&gt;
 4. otto&lt;br /&gt;
 root@zero:~# more tel&lt;br /&gt;
 1. 1234&lt;br /&gt;
 2. 4321&lt;br /&gt;
 3. 222&lt;br /&gt;
 4. 121212&lt;br /&gt;
 root@zero:~# join name tel &amp;gt; telefonbuch&lt;br /&gt;
 root@zero:~# more telefonbuch&lt;br /&gt;
 1. karl 1234&lt;br /&gt;
 2. heinz 4321&lt;br /&gt;
 3. hans 222&lt;br /&gt;
 4. otto 121212&lt;br /&gt;
&lt;br /&gt;
 root@zero:~# join -t : /etc/passwd /etc/shadow&lt;br /&gt;
 ....&lt;br /&gt;
 daemon:x:1:1:daemon:/usr/sbin:/bin/sh:*:14181:0:99999:7:::&lt;br /&gt;
 bin:x:2:2:bin:/bin:/bin/sh:*:14181:0:99999:7:::&lt;br /&gt;
 sys:x:3:3:sys:/dev:/bin/sh:*:14181:0:99999:7:::&lt;br /&gt;
 sync:x:4:65534:sync:/bin:/bin/sync:*:14181:0:99999:7:::&lt;br /&gt;
 ...&lt;br /&gt;
&lt;br /&gt;
join in dat1 nach Feld 3 und in dat2 nach Feld 2&lt;br /&gt;
 thomas@lydia:~$ cat dat1 &lt;br /&gt;
 hugo:ps:1111&lt;br /&gt;
 erwin:zw:2222&lt;br /&gt;
 karl:sb:3333&lt;br /&gt;
 rudi:kl:4444&lt;br /&gt;
 thomas@lydia:~$ cat dat2&lt;br /&gt;
 blau:1111:svn&lt;br /&gt;
 grün:2222:fcs&lt;br /&gt;
 gelb:3333:fch&lt;br /&gt;
 rot:4444:fck&lt;br /&gt;
 thomas@lydia:~$ join -t : -1 3 -2 2 dat1 dat2 &lt;br /&gt;
 1111:hugo:ps:blau:svn&lt;br /&gt;
 2222:erwin:zw:grün:fcs&lt;br /&gt;
 3333:karl:sb:gelb:fch&lt;br /&gt;
 4444:rudi:kl:rot:fck&lt;br /&gt;
&lt;br /&gt;
==nl==&lt;br /&gt;
Nummeriert die Zeilen in einer Datei.&lt;br /&gt;
&lt;br /&gt;
 root@zero:~# nl /etc/passwd                                                   &lt;br /&gt;
     1  root:x:0:0:root:/root:/bin/bash                                       &lt;br /&gt;
     2  daemon:x:1:1:daemon:/usr/sbin:/bin/sh                                 &lt;br /&gt;
     3  bin:x:2:2:bin:/bin:/bin/sh                                            &lt;br /&gt;
     4  sys:x:3:3:sys:/dev:/bin/sh                                            &lt;br /&gt;
     5  sync:x:4:65534:sync:/bin:/bin/sync&lt;br /&gt;
     ...&lt;br /&gt;
Nummereriet mit führenden Nullen der Separatir ist ein :&lt;br /&gt;
 root@zero:~# nl -s : -n rz dat1&lt;br /&gt;
&lt;br /&gt;
==od==&lt;br /&gt;
Gibt Dateien im Oktal und anderen Formaten aus.&lt;br /&gt;
&lt;br /&gt;
 od [Optionen] Datei&lt;br /&gt;
&lt;br /&gt;
* -j ''Bytes'': Überspringt die Anzahl ''Bytes'' einer Datei&lt;br /&gt;
* -N ''Bytes'': Gibt nur die Anzahl ''Bytes'' aus&lt;br /&gt;
* -c : Gebe ASCII Zeichen aus&lt;br /&gt;
* -f : Gebe Fließkommazahlen aus&lt;br /&gt;
* -i : Gebe Dezimal Integer aus&lt;br /&gt;
* -l : Gebe Dezimal Long aus&lt;br /&gt;
* -o : Gebe Oktal 2 Byte Einheiten aus&lt;br /&gt;
* -s : Gebe Dezimal 2 Byte Einheiten aus&lt;br /&gt;
* -x : Gebe Hexadezimale 2 Byte einheiten aus&lt;br /&gt;
&lt;br /&gt;
Beispiele&lt;br /&gt;
&lt;br /&gt;
Gebe Master Boot Record (die ersten 512 Byte der Festplatte /dev/sda) als Hexadezimal aus&lt;br /&gt;
 root@zero:~# od '''-x -N''' 512 /dev/sda&lt;br /&gt;
 0000000 48eb 1090 d08e 00bc b8b0 0000 d88e c08e&lt;br /&gt;
 0000020 befb 7c00 00bf b906 0200 a4f3 21ea 0006&lt;br /&gt;
 0000040 be00 07be 0438 0b75 c683 8110 fefe 7507&lt;br /&gt;
 0000060 ebf3 b416 b002 bb01 7c00 80b2 748a 0203&lt;br /&gt;
 0000100 00ff 2000 0001 0000 0200 90fa f690 80c2&lt;br /&gt;
 ...&lt;br /&gt;
&lt;br /&gt;
Schreibe &amp;quot;suxer&amp;quot; in die Datei test&lt;br /&gt;
 root@zero:~# echo &amp;quot;suxer&amp;quot; &amp;gt; test&lt;br /&gt;
Ausgabe Hexadezimal&lt;br /&gt;
 root@zero:~# od -x test&lt;br /&gt;
 0000000 7573 6578 0a72&lt;br /&gt;
 0000006&lt;br /&gt;
&lt;br /&gt;
Ausgabe ASCII Zeichen&lt;br /&gt;
 root@zero:~# od -c test&lt;br /&gt;
 0000000   s   u   x   e   r  \n&lt;br /&gt;
 0000006&lt;br /&gt;
&lt;br /&gt;
==paste==&lt;br /&gt;
Fügt die Zeilen von zwei oder mehr Dateien horizontal zusammen&lt;br /&gt;
 root@zero:~# paste name tel&lt;br /&gt;
 1. karl 1. 1234&lt;br /&gt;
 2. heinz        2. 4321&lt;br /&gt;
 3. hans 3. 222&lt;br /&gt;
 4. otto 4. 121212&lt;br /&gt;
&lt;br /&gt;
==pr==&lt;br /&gt;
Bereitet Textdateien zum Drucken vor.&lt;br /&gt;
&lt;br /&gt;
 root@zero:~# echo &amp;quot;Plan für heute&amp;quot; &amp;gt; dokument&lt;br /&gt;
 root@zero:~# more dokument&lt;br /&gt;
 Plan für heute&lt;br /&gt;
 root@zero:~# pr dokument   &lt;br /&gt;
  &lt;br /&gt;
 &lt;br /&gt;
 2009-06-19 12:44                    dokument                     Seite 1&lt;br /&gt;
 &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
 Plan für heute&lt;br /&gt;
&lt;br /&gt;
Anmerkung Ausmaße der Bildschirmausgabe wie eine Druckseite.&lt;br /&gt;
&lt;br /&gt;
==sed==&lt;br /&gt;
streaming editor. Mit sed ist es möglich, den Inhalt einer Datei automatisch (nicht interaktiv) zu&lt;br /&gt;
bearbeiten. Wie unter Linux üblich, wird auch hier der Text nicht wirklich verändert sondern die &lt;br /&gt;
Änderung erfolgt über die Standardausgabe, die wieder umgeleitet werden kann. Die Syntax ist ähnlich &lt;br /&gt;
des ex modus von vi. Reguläre Ausdrücke können nach Belieben benutzt werden. &lt;br /&gt;
&lt;br /&gt;
Optionen:&lt;br /&gt;
 -e Zeichenkette  wendet die Editorbefehle aus Zeichenkette auf den Text an.&lt;br /&gt;
 -n gibt nur die Zeilen aus, die explizit (durch &amp;quot;p&amp;quot; ausgedruckt werden sollen&lt;br /&gt;
&lt;br /&gt;
Gibt die dritte Zeile der Datei text aus&lt;br /&gt;
 root@zero:~# sed -n &amp;quot;3p&amp;quot; text&lt;br /&gt;
 34&lt;br /&gt;
&lt;br /&gt;
Gibt die erste bis dritte Zeile von text aus&lt;br /&gt;
 root@zero:~# sed -n &amp;quot;1,3p&amp;quot; text&lt;br /&gt;
 sogar noch wichtiger&lt;br /&gt;
 123&lt;br /&gt;
 34&lt;br /&gt;
&lt;br /&gt;
Löschen der Zeile mit &amp;quot;sogar&amp;quot;&lt;br /&gt;
 root@zero:~# sed -e '/sogar/d' &amp;lt; text&lt;br /&gt;
 123&lt;br /&gt;
 34&lt;br /&gt;
 4711&lt;br /&gt;
 test&lt;br /&gt;
&lt;br /&gt;
und schreiben in text2&lt;br /&gt;
 root@zero:~# sed -e '/sogar/d' &amp;lt; text &amp;gt; text2&lt;br /&gt;
 root@zero:~# more text2&lt;br /&gt;
 123&lt;br /&gt;
 34&lt;br /&gt;
 4711&lt;br /&gt;
 test&lt;br /&gt;
&lt;br /&gt;
Alle 3en durch DREI ersetzen&lt;br /&gt;
 root@zero:~# sed -e 's/3/DREI/g' &amp;lt; text&lt;br /&gt;
 sogar noch wichtiger&lt;br /&gt;
 12DREI&lt;br /&gt;
 DREI4&lt;br /&gt;
 4711&lt;br /&gt;
 test&lt;br /&gt;
&lt;br /&gt;
==wc==&lt;br /&gt;
Zählt die Anzahl von Zeichen, Wörter oder Zeilen&lt;br /&gt;
&lt;br /&gt;
Optionen&lt;br /&gt;
* -m : Zählt die Anzahl der Zeichen&lt;br /&gt;
 root@zero:~# more name&lt;br /&gt;
 1. karl&lt;br /&gt;
 2. heinz&lt;br /&gt;
 3. hans&lt;br /&gt;
 4. otto&lt;br /&gt;
 root@zero:~# wc '''-m''' tel&lt;br /&gt;
 33 tel&lt;br /&gt;
&lt;br /&gt;
* -w : Zählt die Anzahl der Wörter (einschließlich Zahlen und andere Zeichen)&lt;br /&gt;
 root@zero:~# wc '''-w''' name&lt;br /&gt;
 8 name&lt;br /&gt;
&lt;br /&gt;
* -l : Zählt die Anzahl der Zeilen&lt;br /&gt;
 root@zero:~# wc '''-l''' name&lt;br /&gt;
 4 name&lt;br /&gt;
&lt;br /&gt;
==Sort==&lt;br /&gt;
&lt;br /&gt;
Zum sortieren von Dateien nach Feldern benutzt man sort. sort liest von STDIN man kann die Datei aber auch als Argument übergeben. &lt;br /&gt;
&lt;br /&gt;
Sortiert nach dem ersten Feld&lt;br /&gt;
  root@zero:~# sort /etc/passwd 	 &lt;br /&gt;
&lt;br /&gt;
Es wird geprüft ob die Datei schon sortiert ist &lt;br /&gt;
 root@zero:~# sort -c /etc/passwd 	&lt;br /&gt;
&lt;br /&gt;
Sortiert nach dem ersten Feld (Richtungsumkehr)  &lt;br /&gt;
 root@zero:~#  sort -r /etc/passwd&lt;br /&gt;
&lt;br /&gt;
Führende Leersortzeichen werden ignoriert &lt;br /&gt;
 root@zero:~# sort -b /etc/passwd&lt;br /&gt;
&lt;br /&gt;
Ausgabe  in die Datei pass&lt;br /&gt;
 root@zero:~# sort  /etc/passwd   -o pass	 &lt;br /&gt;
&lt;br /&gt;
nimmt : als Trenner -Voreinstellung ist TAB&lt;br /&gt;
  root@zero:~# sort -t : /etc/passwd&lt;br /&gt;
&lt;br /&gt;
sortiert nach dem  3 Feld,  der Trenner ist : und es wird nummerisch sortiert&lt;br /&gt;
&lt;br /&gt;
 root@zero:~# sort -t: +2 -n /etc/passwd		&lt;br /&gt;
&lt;br /&gt;
sortiert nach dem  3 Feld,  der Trenner ist : und es wird nummerisch sortiert&lt;br /&gt;
					&lt;br /&gt;
 root@zero:~# sort -t: -k 3 -n /etc/passwd&lt;br /&gt;
&lt;br /&gt;
Sortiert nach dem  3  bis zum 5 Feld, der Trenner ist : und es wird nummerisch sortiert&lt;br /&gt;
	&lt;br /&gt;
 root@zero:~# sort -t: -k 3,5 -n /etc/passwd	&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==INodes==&lt;br /&gt;
Inode (oder I-Node) wird im Deutschen am besten als Informationsknoten oder&lt;br /&gt;
Indexeintrag bezeichnet. Er fasst alle Attribute einer Datei zusammen außer dem Inhalt&lt;br /&gt;
und dem Namen der Datei.&lt;br /&gt;
&lt;br /&gt;
===Daten===&lt;br /&gt;
{| border=1 cellpadding=2&lt;br /&gt;
|type&lt;br /&gt;
|Der Typ der Datei wird als einzelner Buchstabe angezeigt. Der Typ einer Datei wird beim Anlegen der Datei festgelegt&lt;br /&gt;
|-&lt;br /&gt;
|Permissions &lt;br /&gt;
|Die Zugriffsrechte der Datei werden in den 12 Bit sstrwxrwxrwx abgespeichert.Wenn sie gesetzt sind, werden sie bei &lt;br /&gt;
der Ausgabe an Stelle der x-Rechte ausgegeben. Die Zugriffsrechte können mit dem Kommando chmod verändert werden.&lt;br /&gt;
|-&lt;br /&gt;
|link count&lt;br /&gt;
|In UNIX kann eine Datei mehr als einen Namen haben. Der Link Count gibt die Anzahl der Namen einer Datei an. Er kann&lt;br /&gt;
mit dem Kommando ln erhöht und dem Kommando rm erniedrigt werden.&lt;br /&gt;
|-&lt;br /&gt;
|owner&lt;br /&gt;
|Für den Dateieigentümer gelten die in der ersten rwx-Gruppe festgelegten Zugriffsrechte. Standardmäßig ist der &lt;br /&gt;
Eigentümer einer Datei derjenige Benutzer, der die Datei angelegt hat.&lt;br /&gt;
|-&lt;br /&gt;
|group&lt;br /&gt;
|Für Benutzer, die in der gleichen Gruppe sind, der die Datei angehört, gelten die in der zweiten rwx-Gruppe festgelegten&lt;br /&gt;
Zugriffsrechte. In System V gehört eine Datei standardmäßig der Gruppe an, in der der anlegende Benutzer gerade ist.&lt;br /&gt;
|-&lt;br /&gt;
|size&lt;br /&gt;
|Bei normalen Dateien und Verzeichnissen gibt diese Information die Länge der Datei in Byte an.&lt;br /&gt;
|-&lt;br /&gt;
|access time&lt;br /&gt;
|Die Zugriffszeit gibt den Zeitpunkt des letzten Lesezugriffes auf eine Datei an. Aus Effizienzgründen wird die &lt;br /&gt;
Zugriffszeit an Verzeichnissen nicht gesetzt, wenn ein Verzeichnis durchsucht wird, obwohl man dies erwarten könnte. ''(ls -l --time=atime)''&lt;br /&gt;
|-&lt;br /&gt;
|modification time&lt;br /&gt;
|Die Modifikationszeit gibt die Zeit des letzten Schreibzugriffes auf die Daten der Datei an. Intern speichert UNIX &lt;br /&gt;
die Zeit als Sekunden seit Beginn des Jahres 1970 und in GMT ab. Für die Ausgabe wird dies in ein besser lesbares &lt;br /&gt;
Format in der lokalen Zeitzone umgewandelt. ''(ls -l)''&lt;br /&gt;
|-&lt;br /&gt;
|change time &lt;br /&gt;
|Die Veränderungszeit gibt das Datum der letzten Statusänderung der Datei an. Sie wird immer dann gesetzt, wenn die &lt;br /&gt;
Informationen über die Datei sich ändern (Datum der Erzeugung wird nicht gespeichert) ''(ls -lc)''&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
===Dateiarten===&lt;br /&gt;
{| border=1 cellpadding=2&lt;br /&gt;
!Zeichen&lt;br /&gt;
!Typ&lt;br /&gt;
!Zweck&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;nowiki&amp;gt;-&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
|file&lt;br /&gt;
|normale Datei&lt;br /&gt;
|-&lt;br /&gt;
|d&lt;br /&gt;
|directory&lt;br /&gt;
|Verzeichnis&lt;br /&gt;
|-&lt;br /&gt;
|b&lt;br /&gt;
|block device&lt;br /&gt;
|Gerätedatei&lt;br /&gt;
|-&lt;br /&gt;
|c&lt;br /&gt;
|character device&lt;br /&gt;
|Gerätedatei&lt;br /&gt;
|-&lt;br /&gt;
|l&lt;br /&gt;
|link&lt;br /&gt;
|Querverweis&lt;br /&gt;
|-&lt;br /&gt;
|p&lt;br /&gt;
|named pipe&lt;br /&gt;
|Benannte Pipeline&lt;br /&gt;
|-&lt;br /&gt;
|s&lt;br /&gt;
|socket&lt;br /&gt;
|Netzwerkverbindung&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
====Normale Dateien====&lt;br /&gt;
Unter einer normalen Datei versteht man die Ansammlung von Daten. Dies kann ein Text, Programm, Bild oder sonstiges sein. &lt;br /&gt;
Beispiel&lt;br /&gt;
 root@zero:~# ls -l text | cut -c 1&lt;br /&gt;
 -&lt;br /&gt;
&lt;br /&gt;
====Verzeichnisse====&lt;br /&gt;
Dateien werden in Verzeichnissen gespeichert, nur so ist eine Ordnung möglich. &lt;br /&gt;
 root@zero:~# mkdir -v Ordner&lt;br /&gt;
 mkdir: Verzeichnis „Ordner“ angelegt&lt;br /&gt;
 &lt;br /&gt;
 root@zero:~# ls -ld Ordner | cut -c 1&lt;br /&gt;
 d&lt;br /&gt;
&lt;br /&gt;
====Gerätedateien (Block und Char)====&lt;br /&gt;
Gerätedateien ermöglichen Anwendungsprogrammen unter Benutzung des  Kernels den Zugriff auf die Hardwarekomponenten des Systems. Ansprechbar über Major und Minor Nummern &lt;br /&gt;
&lt;br /&gt;
Beispiele&lt;br /&gt;
&lt;br /&gt;
Sicherung des Master Boot Records der ersten Festplatte&lt;br /&gt;
 root@zero:~# dd if=/dev/sda of=/tmp/mbr.img bs=512 count=1&lt;br /&gt;
&lt;br /&gt;
Block Device &lt;br /&gt;
 root@zero:~# ls -l /dev/sda | cut -c 1 &lt;br /&gt;
 b&lt;br /&gt;
&lt;br /&gt;
Character Device &lt;br /&gt;
 root@zero:~# ls -l /dev/ttyS0  | cut -c 1 &lt;br /&gt;
 c&lt;br /&gt;
&lt;br /&gt;
Erstellen einer Gerätedatei&lt;br /&gt;
 root@zero:/dev# mknod sata1 b 8 0 &lt;br /&gt;
 root@zero:/dev# fdisk -l /dev/sata1 &lt;br /&gt;
 &lt;br /&gt;
 Platte /dev/sata1: 6442 MByte, 6442450944 Byte&lt;br /&gt;
 255 Köpfe, 63 Sektoren/Spuren, 783 Zylinder&lt;br /&gt;
 Einheiten = Zylinder von 16065 × 512 = 8225280 Bytes&lt;br /&gt;
 Disk identifier: 0x0005efab&lt;br /&gt;
 &lt;br /&gt;
       Gerät  boot.     Anfang        Ende     Blöcke   Id  System&lt;br /&gt;
 /dev/sata1p1   *           1         743     5968116   83  Linux&lt;br /&gt;
 /dev/sata1p2             744         783      321300    5  Erweiterte&lt;br /&gt;
 /dev/sata1p5             744         783      321268+  82  Linux Swap / Solaris&lt;br /&gt;
&lt;br /&gt;
====Named Pipes====&lt;br /&gt;
Benannte Pipes (Named Pipes) können dagegen auch zur Kommunikation zwischen Prozessen eingesetzt werden, die nicht miteinander&lt;br /&gt;
verwandt sind und sich darüber hinaus auf unterschiedlichen Rechnern innerhalb eines Netzwerkes befinden dürfen. Sie sind &lt;br /&gt;
flexibler als anonyme Pipes und eignen sich für sogenannte Client-Server-Anwendungen (es lassen sich auch RPCs realisieren).&lt;br /&gt;
Benannte Pipes ermöglichen die gleichzeitige Kommunikation in beide Richtungen, das heißt, Daten können im Vollduplexbetrieb &lt;br /&gt;
zwischen den Prozessen ausgetauscht werden.&lt;br /&gt;
 &lt;br /&gt;
Erstelle Named Pipe mit Namen /tmp/roehre. Schreibe &amp;quot;hallo welt&amp;quot; in die Pipe und bleibe&lt;br /&gt;
 xinux@zero:~$ mkfifo /tmp/roehre&lt;br /&gt;
 xinux@zero:~$ echo hallo welt &amp;gt; /tmp/roehre &lt;br /&gt;
&lt;br /&gt;
Gebe Inhalt der Pipe mit cat aus&lt;br /&gt;
 root@zero:~# cat &amp;lt; /tmp/roehre &lt;br /&gt;
 hallo welt&lt;br /&gt;
 root@zero:~# ls -l /tmp/roehre | cut -c 1&lt;br /&gt;
 p&lt;br /&gt;
&lt;br /&gt;
====Sockets====&lt;br /&gt;
Schnittstelle um es lokalen Anwendungen zu ermöglichen, miteinander Netwerkmässig zu kommunizieren.&lt;br /&gt;
&lt;br /&gt;
 root@lydia:~# netstat  -lnxp | tail -1&lt;br /&gt;
  unix  2 [ ACC ] STREAM HÖRT 21951 6646/nm-applet /tmp/orbit-thomas/linc-19f6-0-2b9b81095cede&lt;br /&gt;
&lt;br /&gt;
 root@lydia:~# ls -l /tmp/orbit-thomas/linc-19f6-0-2b9b81095cede  | cut -c 1 &lt;br /&gt;
 s&lt;br /&gt;
&lt;br /&gt;
====Links====&lt;br /&gt;
Bei Links handelt es sich um symbolische Verweise auf andere Dateien&lt;br /&gt;
&lt;br /&gt;
'''Softlink'''&lt;br /&gt;
Ein Softlink ist eine Datei die nur auf den Namen einer anderen Datei verweist. Wenn die Originaldatei gelöscht wird, zeigt &lt;br /&gt;
der Link ins Leere. &lt;br /&gt;
&lt;br /&gt;
 ln -s datei softlink&lt;br /&gt;
&lt;br /&gt;
{| border=1 cellpadding=2&lt;br /&gt;
| Vorteile&lt;br /&gt;
| Symbolische Links können auch auf Verzeichnisse angelegt werden&amp;lt;br&amp;gt;Sie sind partitionsübergreifend&amp;lt;br&amp;gt;Man kann sie auf Dateien anlegen, die noch nicht existieren&lt;br /&gt;
|-&lt;br /&gt;
| Nachteile&lt;br /&gt;
| Wenn das Original gelöscht ist, ist kein Zugriff mehr möglich&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Beispiel&lt;br /&gt;
 root@zero:~# ln -s text verweis&lt;br /&gt;
 root@zero:~# ls -l verweis&lt;br /&gt;
 lrwxrwxrwx 1 root root 4 2009-06-18 15:48 verweis -&amp;gt; text&lt;br /&gt;
&lt;br /&gt;
'''Hardlinks'''&lt;br /&gt;
 ln datei hardlink&lt;br /&gt;
Eigentlich ist jede Datei ein Hardlink. Ein Hardlink ist ein Verzeichniseintrag,&lt;br /&gt;
der auf eine Inode verweist. Beim Erzeugen einer Datei verweist ein Eintrag auf&lt;br /&gt;
eine Inode. Man kann dann weitere Verweise erzeugen. Der Linkcounter wird&lt;br /&gt;
jeweils um 1 erhöht. Beim Löschen einer Datei wird er jeweils um 1 reduziert.&lt;br /&gt;
Wird der Wert 0 erreicht, ist die Datei gelöscht.&lt;br /&gt;
{| border=1 cellpadding=2&lt;br /&gt;
| Vorteile&lt;br /&gt;
|Zugriff auf die Daten, selbst wenn das Orginal gelöscht ist.&lt;br /&gt;
|-&lt;br /&gt;
|Nachteile&lt;br /&gt;
|Man kann keine Hardlinks auf Verzeichnisse anlegen.&lt;br /&gt;
Ist nur innerhalb einer Partion möglich.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Beispiel&lt;br /&gt;
 root@zero:~# touch 1&lt;br /&gt;
 root@zero:~# echo &amp;quot;text&amp;quot; &amp;gt; 1&lt;br /&gt;
 root@zero:~# ln 1 2&lt;br /&gt;
 root@zero:~# more 2&lt;br /&gt;
 text&lt;br /&gt;
 root@zero:~# echo &amp;quot;doch kein text&amp;quot; &amp;gt; 1&lt;br /&gt;
 root@zero:~# more 1&lt;br /&gt;
 doch kein text&lt;br /&gt;
 root@zero:~# more 2&lt;br /&gt;
 doch kein text&lt;br /&gt;
&lt;br /&gt;
Weitere Optionen:&lt;br /&gt;
 -b sichert Dateien, statt sie zu überschreiben &lt;br /&gt;
 -f Überschreibt bestehende, gleichnamige Dateien&lt;br /&gt;
 -i fragt vor dem Überschreiben nach Bestätigung&lt;br /&gt;
 -v ausführliche Meldungen&lt;br /&gt;
Softlink mit dem Namen passwd im Homeverzeichnis angelegt&lt;br /&gt;
 xinux@zero:~$ ln -vs /etc/passwd .&lt;br /&gt;
 „./passwd“ -&amp;gt; „/etc/passwd“&lt;br /&gt;
Softlink mit dem Namen passwd im Homeverzeichnis angelegt(Original exestiert nicht) &lt;br /&gt;
 xinux@zero:~$ ln -vs /etc/hund .&lt;br /&gt;
 „./hund“ -&amp;gt; „/etc/hund“&lt;br /&gt;
Hardlink mit dem Namen hosts im Homeverzeichnis angelegt&lt;br /&gt;
  xinux@zero:~$ ln -v /etc/hosts .&lt;br /&gt;
 „./hosts“ =&amp;gt; „/etc/hosts“&lt;br /&gt;
Auf eine nicht existierende Datei kann kein Hardlink angelegt werden!&lt;br /&gt;
 xinux@zero:~$ ln -v /etc/katze .&lt;br /&gt;
 ln: Zugriff auf „/etc/katze“: No such file or directory&lt;br /&gt;
&lt;br /&gt;
==Shellsonderzeichen==&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot; cellpadding=&amp;quot;2&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
|;&lt;br /&gt;
|Trenne Kommandos&lt;br /&gt;
|-&lt;br /&gt;
|. oder source&lt;br /&gt;
|Ausführen wie in aktueller Shell&lt;br /&gt;
|-&lt;br /&gt;
|#&lt;br /&gt;
|Kommentar&lt;br /&gt;
|-&lt;br /&gt;
|&amp;amp;&lt;br /&gt;
|Programm im Hintergrund starten &lt;br /&gt;
|-&lt;br /&gt;
|&amp;amp;&amp;amp;&lt;br /&gt;
|UND -Ausführung  (wenn links wahr dann führe rechts aus)&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;nowiki&amp;gt;|&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
|STOUT von links wird zu STDIN von rechts &lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;nowiki&amp;gt;||&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
|ODER -Ausführung (wenn links falsch dann führe rechts aus)&lt;br /&gt;
|-&lt;br /&gt;
|*&lt;br /&gt;
|steht für beliebig viel Zeichen auch 0 &lt;br /&gt;
|-&lt;br /&gt;
|?&lt;br /&gt;
|steht für genau ein Zeichen &lt;br /&gt;
|-&lt;br /&gt;
|[abc]&lt;br /&gt;
|steht für eins der Zeichen in [ ] hier a b oder c &lt;br /&gt;
|-&lt;br /&gt;
|[ausdruck] &lt;br /&gt;
|Andere Schreibweis für test &lt;br /&gt;
|-&lt;br /&gt;
|~&lt;br /&gt;
|das Homeverzeichnis&lt;br /&gt;
|-&lt;br /&gt;
|&amp;gt;    und    &amp;gt;&amp;gt;&lt;br /&gt;
|leite in Datei um   &amp;gt;  überschreibe     &amp;gt;&amp;gt; hänge an &lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;&lt;br /&gt;
|lesen aus Datei &lt;br /&gt;
|-&lt;br /&gt;
|2&amp;gt;&amp;amp;1&lt;br /&gt;
|leite STDERR auf STDOUT&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;&amp;lt; ende&lt;br /&gt;
|Lesen aus Datei (Heredokument)&lt;br /&gt;
|-&lt;br /&gt;
|(...)&lt;br /&gt;
|Alles inhalb von ( ) wird als Subshell ausgeführt&lt;br /&gt;
|-&lt;br /&gt;
|{...}&lt;br /&gt;
|Gruppieren von Komandos &lt;br /&gt;
|-&lt;br /&gt;
|{ ,  ,  , }&lt;br /&gt;
|Zeichenketten zusammensetzen &lt;br /&gt;
|-&lt;br /&gt;
|$&lt;br /&gt;
|Inhalt von Variablen ausgeben $SUX&lt;br /&gt;
|-&lt;br /&gt;
|$* oder $@&lt;br /&gt;
|Liste der übergebenen Parameter&lt;br /&gt;
|-&lt;br /&gt;
|$# &lt;br /&gt;
|Anzahl der übergebenen Parameter &lt;br /&gt;
|-&lt;br /&gt;
|$0&lt;br /&gt;
|Name des Shellprogramms &lt;br /&gt;
|-&lt;br /&gt;
|$?&lt;br /&gt;
|Rückgabewert des letzten Kommandos &lt;br /&gt;
|-&lt;br /&gt;
|$!  und  $$&lt;br /&gt;
|PID des  $!  = letzten Hintergrund  -  , $$ = aktuellen Prozess&lt;br /&gt;
|-&lt;br /&gt;
|$1 ..$9&lt;br /&gt;
|Parameter 1 bis 9 &lt;br /&gt;
|-&lt;br /&gt;
|$() oder `  `&lt;br /&gt;
|Kommandosubstition&lt;br /&gt;
|-&lt;br /&gt;
|${ }&lt;br /&gt;
|Funktion zur Manipulation von Zeichenketten &lt;br /&gt;
|-&lt;br /&gt;
|$(( )) oder $[ ]&lt;br /&gt;
|Arithmetische Berechnung &lt;br /&gt;
|-&lt;br /&gt;
|&amp;quot;...&amp;quot;&lt;br /&gt;
|Entwertung der Sonderzeichen ausser $ ' \&lt;br /&gt;
|-&lt;br /&gt;
|'...'&lt;br /&gt;
|Entwertung sämtlicher Sonderzeichen ausser ' selbst&lt;br /&gt;
|-&lt;br /&gt;
|\  &lt;br /&gt;
|Entwertung des folgenden Sonderzeichens &lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==Prozesse==&lt;br /&gt;
===Was ist ein Prozess?===&lt;br /&gt;
Ein Prozess setzt sich aus zwei Teilen zusammen:&lt;br /&gt;
&lt;br /&gt;
1.Programm, das in den Hauptspeicher geladen wurde&lt;br /&gt;
&lt;br /&gt;
2.Prozessumgebung &lt;br /&gt;
&lt;br /&gt;
Unter einem Prozess versteht man ein Programm (binär), das in den Hauptspeicher&lt;br /&gt;
geladen wurde. Also nicht das Program selbst, das auf der Festplatte liegt ist der&lt;br /&gt;
Prozess, sondern es wird erst durch das Laden in den Hauptspeicher dazu.&lt;br /&gt;
Normalerweise liegt ein Programm als ausführbare Datei irgendwo auf der&lt;br /&gt;
Festplatte oder auf Diskette. Ob es sich bei dem Programm um eine binäre Datei&lt;br /&gt;
handelt, kann man mit dem Befehl '' file '' feststellen.&lt;br /&gt;
 &lt;br /&gt;
 root@zero:~# file /bin/mkdir&lt;br /&gt;
 /bin/mkdir: ELF 32-bit LSB executable, Intel 80386, version 1 (SYSV), dynamically linked (uses shared libs), for GNU/Linux 2.6.8, stripped&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Die Datei liegt im Maschinencode vor und kann in den Hauptspeicher geladen&lt;br /&gt;
werden. Sobald dies geschehen ist, kann der Rechner diesen Maschinencode&lt;br /&gt;
abarbeiten (ausführen).&lt;br /&gt;
&lt;br /&gt;
Da aber ein Programm nicht direkt auf die Hardware zugreifen soll, muss es vom&lt;br /&gt;
Betriebsystem kontrolliert werden. Das Betriebssystem liegt logisch gesehen&lt;br /&gt;
zwischen Hardware und Anwendung. Das Betriebssystem ordnet jedem Prozess&lt;br /&gt;
verschiedene Kenndaten zu, um die Prozesse verwalten zu können. Alle&lt;br /&gt;
Kenndaten, die einem Prozess zugeordnet sind, nennt man die&lt;br /&gt;
Prozessumgebung.Wenn man in der Shell ein Kommando eingibt, wird ein Prozess&lt;br /&gt;
kreiert. Natürlich ist die Shell selbst auch ein Prozess. Ein Prozess kann aber&lt;br /&gt;
genauso gut ein Serverprozess (Dienst) sein, z.B. Apache.&lt;br /&gt;
Ein wesentliches Merkmal eines Prozesses ist die Prozesskommunikation. Über im&lt;br /&gt;
Betriebssystem implementierte Methoden ist es möglich, dass verschiedene&lt;br /&gt;
Prozesse Signale und Daten untereinander austauschen können.&lt;br /&gt;
Dadurch wird auch dem Benutzer ermöglicht, einem Prozeß bestimmte Signale zu&lt;br /&gt;
senden bzw. auf den Status eines Prozesses Einfluss zu nehmen.&lt;br /&gt;
&lt;br /&gt;
===Prozesstabelle (Anzeige mit ps)===&lt;br /&gt;
Da zu jedem Prozess Kenndaten geführt werden, müssen diese auch irgendwo&lt;br /&gt;
festgehalten werden. Das geschieht in der sogenannten Prozesstabelle.&lt;br /&gt;
&lt;br /&gt;
Kenndaten der Prozesse (Auswahl):&lt;br /&gt;
* F Flags (z.B. ausgelagert; Systemprozess; Trace,...)&lt;br /&gt;
* UID Nutzer, mit dessen Rechten der Prozess ausgeführt wird&lt;br /&gt;
* PID Prozess - ID. Diese Nummer gibt eine eindeutige Prozess - Nummer&lt;br /&gt;
an. Sie wird vom System automatisch beim Starten des Prozesses&lt;br /&gt;
vergeben und ist für die Laufzeit eindeutig.&lt;br /&gt;
* PPID Prozessnumer der Eltern-Prozesses&lt;br /&gt;
* PRI Priorität eines Prozesses; je niedriger der Wert ist, desto besser&lt;br /&gt;
* NI ist der Nicewert des Prozesses; Nice erniedrigt den Grundwert&lt;br /&gt;
der Priorität des Prozesses und gibt damit Prozessorzeit für andere&lt;br /&gt;
Prozesse frei.&lt;br /&gt;
* SIZE Speichergröße des Prozesses inklusive Stack (eine Art Zwischenspeicher)&lt;br /&gt;
* RSS Verbrauch an physischen Speicher&lt;br /&gt;
* WCHAN ist der Name der Kernerlfunktion, in der der Prozess schläft&lt;br /&gt;
* STAT Status des Prozesses&lt;br /&gt;
R läuft       S schlafend     D nicht störbarer Schlaf&lt;br /&gt;
T angehalten  Z Zombie        W der Prozess belegt keine Seiten&lt;br /&gt;
* TIME Bisland benötigte Prozessorzeit&lt;br /&gt;
* SIZE ist die Größe von Text, Daten und Stack&lt;br /&gt;
* TTY die Nummer des kontrollierenden Teminal; wenn hier ein ? steht,&lt;br /&gt;
handelt es sich um einen Dämon oder Serverprozess.&lt;br /&gt;
* COMMAND Angabe des Prozesses selbst. Dies ist meist der Programmname.&lt;br /&gt;
&lt;br /&gt;
Weiteres&lt;br /&gt;
* GID Gruppe, unter der der Prozess läuft&lt;br /&gt;
* Verweis auf das aktuellen Arbeitsverzeichnis&lt;br /&gt;
* Um mit relativen Pfadangaben arbeiten zu können braucht man diesen Eintrag&lt;br /&gt;
* Tabelle mit Verweisen auf aktuell geöffnete Dateien&lt;br /&gt;
* 3 sind automatisch geöffnet Standardeingabe, Standardausgabe und&lt;br /&gt;
Standardfehlerkanal&lt;br /&gt;
&lt;br /&gt;
Beispiel&lt;br /&gt;
 root@zero:~# ps -l&lt;br /&gt;
 F S   UID   PID  PPID  C PRI  NI ADDR SZ WCHAN  TTY          TIME CMD&lt;br /&gt;
 4 R     0 18639 18631  0  80   0 -  1080 -      pts/0    00:00:00 bash&lt;br /&gt;
 0 R     0 25904 18639  0  80   0 -   635 -      pts/0    00:00:00 ps&lt;br /&gt;
&lt;br /&gt;
===Eltern und Kinder===&lt;br /&gt;
Jeder Prozess kann weitere Prozesse erzeugen. Die erzeugten Prozesse bezeichnet&lt;br /&gt;
man als Kindprozesse. Jeder Kindprozess weiß anhand der PID, woher er stammt.&lt;br /&gt;
&lt;br /&gt;
Alle Prozesse sind von einem anderen Prozess gestartet worden, mit Ausnahme&lt;br /&gt;
des Pseudoprozesses (noch im Kernel beim Starten erzeugter Prozess). Dieser hat&lt;br /&gt;
die Prozessnummer 0. Er hat die Aufgabe, den Init Prozess ( /sbin/init die Nummer&lt;br /&gt;
1) zu starten, der in System V alle anderen Prozesse direkt oder über seine Kind-&lt;br /&gt;
prozesse startet. (init wird konfiguriert durch die /etc/inittab)&lt;br /&gt;
&lt;br /&gt;
Es gibt zwei Arten wie ein Prozess gestartet werden kann:&lt;br /&gt;
&lt;br /&gt;
# Fork und Exec: Prozessumgebung wird dupliziert, der neue Prozess bekommt eine eigene neue PID&lt;br /&gt;
# Exec: Alter Prozess wird durch neuen Prozess überladen (geht mit dem shell-buildin exec)&lt;br /&gt;
&lt;br /&gt;
'''Rechte auf Objekte UID GID'''&lt;br /&gt;
Ob ein Prozess auf eine Datei zugreifen kann, entscheidet der Kernel anhand der&lt;br /&gt;
Zugriffssrechte, die auf der Datei gesetzt sind. Er checkt anhand der UID und GID&lt;br /&gt;
des Prozesses, ob es erlaubt ist. Mit dieser Technik wird letztendlich geprüft, was&lt;br /&gt;
ein User darf, und was nicht.&lt;br /&gt;
&lt;br /&gt;
===Rechenzeit und Priorität===&lt;br /&gt;
Da auch bei Prozessen eine Gerechtigkeit herschen muss, muss eine Instanz&lt;br /&gt;
darüber entscheiden wie lange ein Prozess Rechenzeit verbrauchen darf.&lt;br /&gt;
Folgende Kenndaten werden dazu benötigt&lt;br /&gt;
* clocktick = Zeiteinheit&lt;br /&gt;
* n = Faktor über den Kernel einstellbar&lt;br /&gt;
* slice = n &amp;lt;nowiki&amp;gt;*&amp;lt;/nowiki&amp;gt; clocktick&lt;br /&gt;
* agingtime = weitere Zeiteinheit über den Kernel einstellbar&lt;br /&gt;
&lt;br /&gt;
Es wird davon ausgegangen das der Prozess mit der niedrigsten Priorität gerade&lt;br /&gt;
rechnet. Pro clocktick erhöht sich die Priorität dieses Prozesses um eins.&lt;br /&gt;
&lt;br /&gt;
Jetzt können 3 Situationen eintreten die alle dazu führen das der Scheduler&lt;br /&gt;
aufgerufen wird.&lt;br /&gt;
&lt;br /&gt;
# Prozess blockiert wegen einer Ausgabe oder Eingabe.&lt;br /&gt;
# Gibt Rechenzeit freiwillig ab.&lt;br /&gt;
# Der Slice endet.&lt;br /&gt;
&lt;br /&gt;
Der Aufruf des Schedulers bewirkt das der Prozess mit der niedrigsten Priorität&lt;br /&gt;
gescheduled wird, er also nun rechnen darf. Nach Ablauf der agingtime werden&lt;br /&gt;
nun die Prozesse &amp;quot;gealtert&amp;quot;. Das geschieht nach folgender Formel&lt;br /&gt;
&lt;br /&gt;
Neue Priorität = Alte Priorität / 2 + Nicewert&lt;br /&gt;
&lt;br /&gt;
Der User hat die Möglichkeit, über den sogenannten Nicewert den Grundwert für&lt;br /&gt;
einen Prozess zu senken. Der Prozess braucht dann länger für seine Abarbeitung.&lt;br /&gt;
Er verhält sich somit netter zu den anderen Prozessen. Normale User können nur&lt;br /&gt;
netter werden, der Systemverwalter kann auch nicht netter (gemeiner) werden. Der&lt;br /&gt;
Bereich liegt zwischen 19 (sehr nett) bis 0 (weniger nett) für die User, und 19 bis&lt;br /&gt;
-20 für root.&lt;br /&gt;
&lt;br /&gt;
[[Image:pri.png]]&lt;br /&gt;
&lt;br /&gt;
'''Signale'''&lt;br /&gt;
&lt;br /&gt;
Mit den Kommando kill und killall kann man Prozessen Signale schicken&lt;br /&gt;
&lt;br /&gt;
 kill -Signalnummer PID &lt;br /&gt;
&lt;br /&gt;
Signalnummer&lt;br /&gt;
{| border=1 cellpadding=2&lt;br /&gt;
!Signalname&lt;br /&gt;
!Wert&lt;br /&gt;
!Aktion&lt;br /&gt;
|-&lt;br /&gt;
|SIGHUP&lt;br /&gt;
|1&lt;br /&gt;
|Neuinitialisierung eines Prozesses&lt;br /&gt;
|-&lt;br /&gt;
|SIGINT&lt;br /&gt;
|2&lt;br /&gt;
|Interrupt-Signal von der Tastatur (STRG+c)&lt;br /&gt;
|-&lt;br /&gt;
|SIGQUIT&lt;br /&gt;
|3&lt;br /&gt;
|Interrupt-Signal von der Tastatur (STRG+c) mit Dump&lt;br /&gt;
|-&lt;br /&gt;
|SIGKILL&lt;br /&gt;
|9&lt;br /&gt;
|unwiderrufliches Beendigungssignal (Töten)&lt;br /&gt;
|-&lt;br /&gt;
|SIGSEGV&lt;br /&gt;
|11&lt;br /&gt;
|Ungültige Speicherreferenz (bedeutet oft auf defekten Speicher)&lt;br /&gt;
|-&lt;br /&gt;
|SIGTERM &lt;br /&gt;
|15&lt;br /&gt;
|Beendigungssignal (geöffnete Dateien werden geschlossen)&lt;br /&gt;
|-&lt;br /&gt;
|SIGCONT &lt;br /&gt;
|18&lt;br /&gt;
|Weiterfahren, wenn gestoppt&lt;br /&gt;
|-&lt;br /&gt;
|SIGSTOP&lt;br /&gt;
|19&lt;br /&gt;
|Prozessstop&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Beispiel&lt;br /&gt;
 root@zero:~# kill -1 7562&lt;br /&gt;
&lt;br /&gt;
===Programme im Zusammenhang mit Prozessen===&lt;br /&gt;
====ps: Zeigt die Prozesse mit ihrem Status an====&lt;br /&gt;
 root@zero:~# ps&lt;br /&gt;
  PID TTY          TIME CMD&lt;br /&gt;
 14134 pts/0    00:00:00 bash&lt;br /&gt;
 14149 pts/0    00:00:00 ps&lt;br /&gt;
&lt;br /&gt;
 root@zero:~# ps -elf | grep apache&lt;br /&gt;
 1 S root      5738     1  0  80   0 -  5461 select Jun16 ?        00:00:00 /usr/sbin/apache2 -k start&lt;br /&gt;
 5 S www-data  5739  5738  0  80   0 -  5581 inet_c Jun16 ?        00:00:00 /usr/sbin/apache2 -k start&lt;br /&gt;
 5 S www-data  5742  5738  0  80   0 -  5461 inet_c Jun16 ?        00:00:00 /usr/sbin/apache2 -k start&lt;br /&gt;
 5 S www-data  5743  5738  0  80   0 -  5461 inet_c Jun16 ?        00:00:00 /usr/sbin/apache2 -k start&lt;br /&gt;
 5 S www-data  5745  5738  0  80   0 -  5461 inet_c Jun16 ?        00:00:00 /usr/sbin/apache2 -k start&lt;br /&gt;
 5 S www-data  5746  5738  0  80   0 -  5461 inet_c Jun16 ?        00:00:00 /usr/sbin/apache2 -k start&lt;br /&gt;
 0 S root     14153 14134  0  80   0 -   837 pipe_w 16:59 pts/0    00:00:00 grep apache&lt;br /&gt;
&lt;br /&gt;
Option 	Beschreibung&lt;br /&gt;
*l langes Format&lt;br /&gt;
*u 	zeige für jeden Prozess Besitzer und Startzeit an&lt;br /&gt;
*j 	Jobs-Format: Zeige PGID und SID an&lt;br /&gt;
*s 	Informationen über Signale ausgeben&lt;br /&gt;
*m 	Speicher-Informationen anzeigen&lt;br /&gt;
*f 	Baumstruktur der Prozesse anzeigen (ähnlich pstree)&lt;br /&gt;
*a 	alle Prozesse (jedes Benutzers) anzeigen&lt;br /&gt;
*x 	kontrollierendes Terminal nicht anzeigen&lt;br /&gt;
*e 	Für den Prozess gültige Umgebungsvariablen mit anzeigen (sinnvollerweise mit mehreren Optionen »w« anwenden, um die Ausgabe nicht am Zeilenende abzuschneiden)&lt;br /&gt;
*w 	längere Ausgabe. »w« kann mehrfach verwendet werden, um die maximale Länge um je eine Zeile zu vergrößern&lt;br /&gt;
*h 	Header mit Feldbezeichnern unterdrücken&lt;br /&gt;
*r 	nur laufende Prozesse ausgeben&lt;br /&gt;
*n 	User-ID statt User-Name ausgeben&lt;br /&gt;
*txx 	nur Prozesse ausgeben, die vom angegebenen Terminal kontrolliert werden. xx kann entweder einer der Terminal-Gerätenamen unter /dev (z.B. tty1) oder die entsprechende Kurzbezeichnung ohne »tty« (z.B. 1) sein.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
====nice: Lässt ein Programm mit verändertem Grundwert der Priorität laufen====&lt;br /&gt;
 root@zero:~# nice&lt;br /&gt;
 0&lt;br /&gt;
 root@zero:~# nice -n 9 bash&lt;br /&gt;
 root@zero:~# nice&lt;br /&gt;
 9&lt;br /&gt;
 root@zero:~#&lt;br /&gt;
&lt;br /&gt;
====renice: Ändert den Grundwert der Priorität eines laufenden Prozesses====&lt;br /&gt;
 root@zero:~# renice 10 5742&lt;br /&gt;
 5742: Alte Priorität: 0, neue Priorität: 10&lt;br /&gt;
&lt;br /&gt;
====top: Zeigt die Prozesse mit ihrem Status an (Abbrechen mit q)====&lt;br /&gt;
 root@zero:~# top&lt;br /&gt;
 top - 08:51:08 up 20 min,  1 user,  load average: 0.00, 0.02, 0.06&lt;br /&gt;
 Tasks:  93 total,   1 running,  92 sleeping,   0 stopped,   0 zombie&lt;br /&gt;
 Cpu(s):  1.6%us,  3.1%sy,  0.1%ni, 84.9%id, 10.2%wa,  0.0%hi,  0.2%si,  0.0%st&lt;br /&gt;
 Mem:    509504k total,   273948k used,   235556k free,    11312k buffers&lt;br /&gt;
 Swap:   321260k total,        0k used,   321260k free,   118380k cached&lt;br /&gt;
&lt;br /&gt;
  PID USER      PR  NI  VIRT  RES  SHR S %CPU %MEM    TIME+  COMMAND                                                                       &lt;br /&gt;
 2208 mysql     20   0  125m  21m 5552 S  1.7  4.2   0:02.29 mysqld                                                                        &lt;br /&gt;
 3201 root      20   0  2444 1064  828 R  1.7  0.2   0:00.04 top                                                                           &lt;br /&gt;
    1 root      20   0  1908  780  564 S  0.0  0.2   0:02.19 init                                                                          &lt;br /&gt;
    2 root      15  -5     0    0    0 S  0.0  0.0   0:00.00 kthreadd                                                                      &lt;br /&gt;
    3 root      RT  -5     0    0    0 S  0.0  0.0   0:00.00 migration/0                                                                   &lt;br /&gt;
    4 root      15  -5     0    0    0 S  0.0  0.0   0:00.03 ksoftirqd/0                                                                   &lt;br /&gt;
    5 root      RT  -5     0    0    0 S  0.0  0.0   0:00.00 watchdog/0                                                                    &lt;br /&gt;
    6 root      15  -5     0    0    0 S  0.0  0.0   0:00.04 events/0                                                                      &lt;br /&gt;
    7 root      15  -5     0    0    0 S  0.0  0.0   0:00.00 khelper                                                                       &lt;br /&gt;
    8 root      RT  -5     0    0    0 S  0.0  0.0   0:00.00 kstop/0                                                                       &lt;br /&gt;
    9 root      15  -5     0    0    0 S  0.0  0.0   0:00.00 kintegrityd/0                                                                 &lt;br /&gt;
   10 root      15  -5     0    0    0 S  0.0  0.0   0:00.03 kblockd/0                                                                     &lt;br /&gt;
   11 root      15  -5     0    0    0 S  0.0  0.0   0:00.00 kacpid                                                                        &lt;br /&gt;
   12 root      15  -5     0    0    0 S  0.0  0.0   0:00.00 kacpi_notify                                                                  &lt;br /&gt;
   13 root      15  -5     0    0    0 S  0.0  0.0   0:00.00 cqueue                                                                        &lt;br /&gt;
   14 root      15  -5     0    0    0 S  0.0  0.0   0:00.53 ata/0                                                                         &lt;br /&gt;
   15 root      15  -5     0    0    0 S  0.0  0.0   0:00.00 ata_aux&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* pstree: Zeigt die Prozesse als Baumstruktur&lt;br /&gt;
 root@zero:~# pstree&lt;br /&gt;
 init─┬─NetworkManager&lt;br /&gt;
      ├─acpid&lt;br /&gt;
      ├─apache2───5*[apache2]&lt;br /&gt;
      ├─atd&lt;br /&gt;
      ├─bluetoothd&lt;br /&gt;
      ├─console-kit-dae───63*[{console-kit-dae}]&lt;br /&gt;
      ├─cron&lt;br /&gt;
      ├─cupsd&lt;br /&gt;
      ├─dbus-daemon&lt;br /&gt;
      ├─dd&lt;br /&gt;
      ├─gdm───gdm─┬─Xorg&lt;br /&gt;
      │           └─gdmgreeter&lt;br /&gt;
      ├─6*[getty]&lt;br /&gt;
      ├─hald───hald-runner─┬─hald-addon-acpi&lt;br /&gt;
      │                    ├─hald-addon-inpu&lt;br /&gt;
      │                    └─2*[hald-addon-stor]&lt;br /&gt;
      ├─klogd&lt;br /&gt;
      ├─nm-system-setti&lt;br /&gt;
      ├─nmbd&lt;br /&gt;
      ├─nscd───11*[{nscd}]&lt;br /&gt;
      ├─portmap&lt;br /&gt;
      ├─rpc.statd&lt;br /&gt;
      ├─slapd───2*[{slapd}]&lt;br /&gt;
      ├─smbd───smbd&lt;br /&gt;
      ├─sshd───sshd───bash───bash───pstree&lt;br /&gt;
      ├─syslogd&lt;br /&gt;
      ├─system-tools-ba&lt;br /&gt;
      ├─udevd&lt;br /&gt;
      ├─winbindd─┬─winbindd───winbindd&lt;br /&gt;
      │          └─3*[winbindd]&lt;br /&gt;
      └─wpa_supplicant&lt;br /&gt;
&lt;br /&gt;
===Jobs===&lt;br /&gt;
Unter einem Job versteht man ein Programm, welches man von der Shell gelöst&lt;br /&gt;
hat. D. h. man kann ganz normal weiter arbeiten und der Job verrichtet seinen&lt;br /&gt;
Dienst im Hintergrund. Man kann jederzeit zu diesem Job wieder Kontakt&lt;br /&gt;
aufnehmen.&lt;br /&gt;
&lt;br /&gt;
Ein Job kann auf 2 Arten gestarten werden:&lt;br /&gt;
&lt;br /&gt;
# Durch Anhängen des &amp;amp; Zeichens beim Programmstart&lt;br /&gt;
 root@zero:~# tail -f /var/log/messages &amp;amp;&lt;br /&gt;
 Jun 19 06:59:31 zero -- MARK --&lt;br /&gt;
 Jun 19 07:19:31 zero -- MARK --&lt;br /&gt;
 Jun 19 07:39:32 zero -- MARK --&lt;br /&gt;
 Jun 19 07:44:57 zero syslogd 1.5.0#5ubuntu3: restart.&lt;br /&gt;
 Jun 19 07:59:32 zero -- MARK --&lt;br /&gt;
 Jun 19 08:19:32 zero -- MARK --&lt;br /&gt;
 Jun 19 08:39:32 zero -- MARK --&lt;br /&gt;
 Jun 19 08:59:32 zero -- MARK --&lt;br /&gt;
 Jun 19 09:19:33 zero -- MARK --&lt;br /&gt;
 Jun 19 09:39:33 zero -- MARK --&lt;br /&gt;
 [3] 27421&lt;br /&gt;
&lt;br /&gt;
# Durch Stoppen des Prozesses durch Drücken von Strg-Z und in den Hintergrund schicken mit %n (n ist die Jobnummer)&lt;br /&gt;
 root@zero:~# watch cat /proc/cpuinfo&lt;br /&gt;
 Strg-Z&lt;br /&gt;
 [4]+  Stopped                 watch cat /proc/cpuinfo&lt;br /&gt;
 root@zero:~# bg %4&lt;br /&gt;
 [4]+ watch cat /proc/cpuinfo &amp;amp;&lt;br /&gt;
&lt;br /&gt;
Anweisungen im Zusammenhang mit Jobs (n ist die Jobnummer)&lt;br /&gt;
* bg %n : Einen Job in den Hintergrund stellen (wie oben)&lt;br /&gt;
* fg %n : Einen Job in den Vordergrund holen&lt;br /&gt;
 root@zero:~# fg %4&lt;br /&gt;
 watch cat /proc/cpuinfo&lt;br /&gt;
&lt;br /&gt;
* jobs : Aktive Jobs ausgeben&lt;br /&gt;
&lt;br /&gt;
 root@zero:~# jobs&lt;br /&gt;
 [1]   Running                 tail -f /var/log/syslog &amp;amp;&lt;br /&gt;
 [2]   Running                 tail -f /var/log/syslog &amp;amp;&lt;br /&gt;
 [3]-  Running                 tail -f /var/log/messages &amp;amp;&lt;br /&gt;
 [4]+  Stopped                 watch cat /proc/cpuinfo&lt;br /&gt;
&lt;br /&gt;
* Strg-Z : Einen Vordergrund-Job vorübergehend anhalten&lt;br /&gt;
* kill -STOP %n : Unterbricht Job im Hintergrund&lt;br /&gt;
 root@zero:~# kill -STOP %1&lt;br /&gt;
 root@zero:~# jobs&lt;br /&gt;
 [1]+  '''Stopped'''                 tail -f /var/log/syslog&lt;br /&gt;
 [2]   Running                 tail -f /var/log/syslog &amp;amp;&lt;br /&gt;
 [3]   Running                 tail -f /var/log/messages &amp;amp;&lt;br /&gt;
 [4]-  Stopped                 watch cat /proc/cpuinfo&lt;br /&gt;
* kill -CONT %n : Setzt den unterbrochenen Job im Hintergrund fort&lt;br /&gt;
root@zero:~# kill -CONT %1&lt;br /&gt;
root@zero:~# jobs&lt;br /&gt;
 [1]+  '''Running'''                 tail -f /var/log/syslog &amp;amp;&lt;br /&gt;
 [2]   Running                 tail -f /var/log/syslog &amp;amp;&lt;br /&gt;
 [3]   Running                 tail -f /var/log/messages &amp;amp;&lt;br /&gt;
 [4]-  Stopped                 watch cat /proc/cpuinfo&lt;br /&gt;
* kill -KILL %n : Tötet Job im Hintergrund&lt;br /&gt;
 root@zero:~# kill -KILL %1&lt;br /&gt;
 root@zero:~# jobs&lt;br /&gt;
 [1]+  '''Killed'''                  tail -f /var/log/syslog&lt;br /&gt;
 [2]   Running                 tail -f /var/log/syslog &amp;amp;&lt;br /&gt;
 [3]   Running                 tail -f /var/log/messages &amp;amp;&lt;br /&gt;
 [4]-  Stopped                 watch cat /proc/cpuinfo&lt;br /&gt;
 root@zero:~# jobs&lt;br /&gt;
 [2]   Running                 tail -f /var/log/syslog &amp;amp;&lt;br /&gt;
 [3]-  Running                 tail -f /var/log/messages &amp;amp;&lt;br /&gt;
 [4]+  Stopped                 watch cat /proc/cpuinfo&lt;br /&gt;
&lt;br /&gt;
Bedingungen, die zu Jobausführung eingehalten werden sollen:&lt;br /&gt;
* Der Job soll nicht auf den Bildschirm schreiben (Standardausgabe +Standardfehlerkanal).&lt;br /&gt;
* Er soll keine Eingaben vom Benutzer erwarten.&lt;br /&gt;
&lt;br /&gt;
==Suchen von Dateien==&lt;br /&gt;
===find===&lt;br /&gt;
 find ab_wo_wird_gesucht was_wird_gesucht aktion&lt;br /&gt;
 find [Pfad] [Bedingung] [Aktion]&lt;br /&gt;
&lt;br /&gt;
====Nach Namen====&lt;br /&gt;
 find [Pfad] '''-name''' [Name]&lt;br /&gt;
 &lt;br /&gt;
Finde alle Dateien mit Namen test ab dem Verzeichnis /home und gebe diese Zeilenweise aus&lt;br /&gt;
 root@zero:~# find /home -name test -print&lt;br /&gt;
 /home/xinux/test&lt;br /&gt;
 /home/test&lt;br /&gt;
&lt;br /&gt;
Wie oben, jedoch mit Namensanfang test&lt;br /&gt;
 root@zero:/home/xinux# find /home -name 'test*'&lt;br /&gt;
 /home/xinux/testdatei&lt;br /&gt;
 /home/xinux/test&lt;br /&gt;
 /home/test&lt;br /&gt;
&lt;br /&gt;
====Nach Benutzer(Eigentümer)====&lt;br /&gt;
 root@zero:/tmp# find /tmp/ '''-user''' xinux&lt;br /&gt;
 /tmp/datei&lt;br /&gt;
&lt;br /&gt;
====Nach Gruppe====&lt;br /&gt;
 root@zero:/tmp# find /tmp/ '''-group''' hacker&lt;br /&gt;
 /tmp/datei3&lt;br /&gt;
 /tmp/datei2&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
====Nach Typ====&lt;br /&gt;
Es wird nach Dateien anhand Ihrer Art gesucht:&lt;br /&gt;
 find [Pfad] '''-type''' [Typ] &lt;br /&gt;
Typ:&lt;br /&gt;
* f: Normale Dateien&lt;br /&gt;
 root@zero:~# find /tmp/ -type f&lt;br /&gt;
 /tmp/mbr.img&lt;br /&gt;
 /tmp/datei&lt;br /&gt;
 /tmp/zeugs&lt;br /&gt;
 /tmp/.X0-lock&lt;br /&gt;
* d: Verzeichnisse&lt;br /&gt;
 root@zero:~# find /var/log -type d&lt;br /&gt;
 /var/log&lt;br /&gt;
 /var/log/apache2&lt;br /&gt;
 /var/log/unattended-upgrades&lt;br /&gt;
 /var/log/apparmor&lt;br /&gt;
 /var/log/ConsoleKit&lt;br /&gt;
 /var/log/dist-upgrade&lt;br /&gt;
 /var/log/dist-upgrade/20090526-1052&lt;br /&gt;
 /var/log/cups&lt;br /&gt;
 /var/log/apt&lt;br /&gt;
 /var/log/fsck&lt;br /&gt;
 /var/log/samba&lt;br /&gt;
 /var/log/samba/cores&lt;br /&gt;
 /var/log/samba/cores/smbd&lt;br /&gt;
 /var/log/samba/cores/nmbd&lt;br /&gt;
 /var/log/samba/cores/winbindd&lt;br /&gt;
 /var/log/installer&lt;br /&gt;
 /var/log/gdm&lt;br /&gt;
 /var/log/news&lt;br /&gt;
* c: Char Devices (Zeichenorientierte Gerätedatei)&lt;br /&gt;
 root@zero:~# find / -type c&lt;br /&gt;
 /lib/udev/devices/kmem&lt;br /&gt;
 /lib/udev/devices/null&lt;br /&gt;
 /lib/udev/devices/console&lt;br /&gt;
 /lib/udev/devices/ppp&lt;br /&gt;
 /lib/udev/devices/net/tun&lt;br /&gt;
* b: Block Devices (Blockorientierte Gerätedatei)&lt;br /&gt;
* p: Benannte Pipe&lt;br /&gt;
* l: Links&lt;br /&gt;
* s: Sockets&lt;br /&gt;
&lt;br /&gt;
====Nach Modifikation====&lt;br /&gt;
Listet alle Dateien in /etc auf, die innerhalb von zwei Tagen modifiziert wurden&lt;br /&gt;
 root@zero:/var/log# find /etc/ -mtime 2 -print&lt;br /&gt;
 /etc/apache2&lt;br /&gt;
 /etc/apache2/mods-available&lt;br /&gt;
 /etc/apache2/conf.d&lt;br /&gt;
 /etc/apache2/sites-available&lt;br /&gt;
 /etc/bash_completion.d&lt;br /&gt;
 /etc/blkid.tab.old&lt;br /&gt;
 /etc/firefox-3.0/profile&lt;br /&gt;
 /etc/firefox-3.0/profile/chrome&lt;br /&gt;
 /etc/firefox-3.0/pref&lt;br /&gt;
 /etc/profile.d&lt;br /&gt;
 /etc/ufw/applications.d&lt;br /&gt;
 /etc/logrotate.d&lt;br /&gt;
 /etc/xulrunner-1.9&lt;br /&gt;
 /etc/blkid.tab&lt;br /&gt;
 /etc/cron.daily&lt;br /&gt;
 /etc/alternatives&lt;br /&gt;
 /etc/alternatives/x-www-browser&lt;br /&gt;
 /etc/alternatives/xulrunner&lt;br /&gt;
 /etc/gre.d&lt;br /&gt;
 /etc/hal/fdi/policy&lt;br /&gt;
 /etc/dbus-1/system.d&lt;br /&gt;
 /etc/udev/rules.d&lt;br /&gt;
&lt;br /&gt;
====Nach Größe====&lt;br /&gt;
Finde Dateien in /tmp, die größer als 100 MByte sind&lt;br /&gt;
 root@zero:/tmp# find /tmp/ -size +100M&lt;br /&gt;
 /tmp/datei&lt;br /&gt;
&lt;br /&gt;
Finde Dateien in /tmp, die kleiner als 100 KByte sind&lt;br /&gt;
 root@zero:/tmp# find /tmp/ -size -100k&lt;br /&gt;
 /tmp/&lt;br /&gt;
 /tmp/datei3&lt;br /&gt;
 /tmp/backup &lt;br /&gt;
 /tmp/datei2&lt;br /&gt;
 /tmp/.winbindd &lt;br /&gt;
 /tmp/.winbindd/pipe&lt;br /&gt;
 /tmp/mbr.img&lt;br /&gt;
 /tmp/zeugs&lt;br /&gt;
 /tmp/.ICE-unix&lt;br /&gt;
 /tmp/.X0-lock&lt;br /&gt;
 /tmp/datei1&lt;br /&gt;
 /tmp/.X11-unix&lt;br /&gt;
 /tmp/.X11-unix/X0&lt;br /&gt;
 /tmp/pulse-PKdhtXMmr18n&lt;br /&gt;
&lt;br /&gt;
====Nach Berechtigungen====&lt;br /&gt;
Finde Dateien in Home mit der Berechtigung 777 (-rwxrwxrwx)&lt;br /&gt;
 root@zero:/var# find /home/ -perm 777&lt;br /&gt;
 /home/samba&lt;br /&gt;
 /home/xinux/Examples&lt;br /&gt;
 /home/xinux/.pulse/1f0763ee4cf4c7e1d3c07fd149dda37b:runtime&lt;br /&gt;
 /home/test/Examples&lt;br /&gt;
&lt;br /&gt;
===locate===&lt;br /&gt;
Locate arbeitet über einen Index, der erstellt und aktualisiert werden muss. Aus diesem Grund kann locate teilweise nicht &lt;br /&gt;
akutell sein. Es ist immer schneller als find und es durchsucht immer das ganze Dateisystem. &lt;br /&gt;
 locate [Dateiname]&lt;br /&gt;
 &lt;br /&gt;
Lokalisiere die Datei wvdial.conf. Anmerkung: Der Stern wird beim Suchen automatisch hinzugefügt. Entspricht also&lt;br /&gt;
wvidal.conf*&lt;br /&gt;
 root@zero:~# locate wvdial.conf&lt;br /&gt;
 /etc/wvdial.conf&lt;br /&gt;
 /usr/share/man/man5/wvdial.conf.5.gz&lt;br /&gt;
 /var/lib/dpkg/info/wvdial.conffiles&lt;br /&gt;
 /var/lib/dpkg/info/wvdial.config&lt;br /&gt;
&lt;br /&gt;
Lokalisiere die Datei wvdial.conf und nur diese&lt;br /&gt;
 root@zero:~# locate -b '\wvdial.conf'&lt;br /&gt;
 /etc/wvdial.conf&lt;br /&gt;
&lt;br /&gt;
Aktualisieren des Indexes&lt;br /&gt;
 root@zero:~# updatedb&lt;br /&gt;
&lt;br /&gt;
==Wie wird ein Kommando lokalisiert==&lt;br /&gt;
Wenn die Shell alle Ersetzungen in der Kommandozeile vorgenommen und alle Umleitungen vorbereitet hat, ist der Zeitpunkt &lt;br /&gt;
gekommen, auf den der Anwender die ganze Zeit gewartet hat. Die Shell versucht das Kommando auszuführen. Dazu muss sie &lt;br /&gt;
es aber erst lokalisieren. Das erste passende Kommando wird ausgeführt.&lt;br /&gt;
&lt;br /&gt;
Als Kommandoname wird immer das erste Wort eines einfachen Kommandos erkannt. Ein Kommandoname kann mit Pfadnamen in &lt;br /&gt;
einem Verzeichnis (absolut oder relativ) angegeben werden. Die Shell erkennt dies an (mindestens) einem Slash `/' &lt;br /&gt;
im Kommandonamen. Wenn kein Verzeichnis angegeben ist, versucht die Shell selbst, das Kommando zu finden. Dazu wird &lt;br /&gt;
der Kommandoname zuerst in der Hashtabelle gesucht, dann wird er mit den Synonymen, mit den Scriptfunktionen und &lt;br /&gt;
schließlich mit den Shellfunktionen verglichen. &lt;br /&gt;
&lt;br /&gt;
Wird auf diese Weise kein Programm dieses Namens gefunden, werden alle in der PATH-Umgebungsvariablen aufgeführten &lt;br /&gt;
Verzeichnisse nach einer ausführbaren Datei dieses Namens durchsucht. Wird auch hier kein passendes Kommando gefunden, &lt;br /&gt;
gibt die Shell eine Fehlermeldung aus.&lt;br /&gt;
&lt;br /&gt;
===which und type===&lt;br /&gt;
====which====&lt;br /&gt;
which gibt die vollen Pfadnamen der Dateien aus, die bei Benutzung des angegebenen Befehls ausgeführt werden würden.&lt;br /&gt;
&lt;br /&gt;
 which [-a] Dateiname &lt;br /&gt;
&lt;br /&gt;
Optionen:&lt;br /&gt;
&lt;br /&gt;
* -a : Alle Treffer ausgeben, nicht nur den ersten&lt;br /&gt;
* --skip-dot : Verzeichnisse, die mit einem Punkt beginnen, auslassen&lt;br /&gt;
&lt;br /&gt;
Beispiel&lt;br /&gt;
 root@zero:~# which startx&lt;br /&gt;
 /usr/bin/startx&lt;br /&gt;
&lt;br /&gt;
====type====&lt;br /&gt;
Anzeigen der absoluten Pfadnamen von Befehlen, und ob sich diese Befehle in der Hash-Tabelle der aktuellen&lt;br /&gt;
Shell befinden.&lt;br /&gt;
&lt;br /&gt;
 type [Optionen] Befehle&lt;br /&gt;
&lt;br /&gt;
Beispiel&lt;br /&gt;
 root@zero:~# type ls&lt;br /&gt;
 ls is aliased to `ls --color=auto'&lt;br /&gt;
&lt;br /&gt;
Optionen:&lt;br /&gt;
&lt;br /&gt;
* -a : Alle vorkommenden Befehle werden ausgegeben, nicht nur das, welches aufgerufen werden würde&lt;br /&gt;
 root@zero:~# type '''-a''' ls&lt;br /&gt;
 ls is aliased to `ls --color=auto'&lt;br /&gt;
 ls is /bin/ls&lt;br /&gt;
&lt;br /&gt;
* -p : Anzeigen des Eintrags von Befehl in der Hash-Tabelle. Dieser Wert kann sich vom ersten Auftreten des Befehls in PATH&lt;br /&gt;
unterscheiden&lt;br /&gt;
 root@zero:~# type '''-p''' apache2&lt;br /&gt;
 /usr/sbin/apache2&lt;br /&gt;
&lt;br /&gt;
* -t : Anzeigen, ob Befehl ein Aliasname, ein Schlüsselwort, eine Funktion, ein eingebauter Befehl oder eine Datei ist&lt;br /&gt;
 root@zero:~# type '''-t''' apache2&lt;br /&gt;
 file&lt;/div&gt;</summary>
		<author><name>192.168.178.46</name></author>
	</entry>
	<entry>
		<id>https://www.xinux.net/index.php?title=Linux_Grundlagen&amp;diff=113</id>
		<title>Linux Grundlagen</title>
		<link rel="alternate" type="text/html" href="https://www.xinux.net/index.php?title=Linux_Grundlagen&amp;diff=113"/>
		<updated>2009-07-08T06:51:17Z</updated>

		<summary type="html">&lt;p&gt;192.168.178.46: /* Programme im Zusammenhang mit Prozessen */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Einführung==&lt;br /&gt;
===Geschichte Unix===&lt;br /&gt;
====1969====&lt;br /&gt;
Am Anfang von Linux steht Multics, ein von Bell Laboratories geschaffenes &amp;quot;Betriebssystem&amp;quot;, &lt;br /&gt;
das noch mit Lochkarten arbeitete. Multics wird mit Unterstützung von AT&amp;amp;T und Western &lt;br /&gt;
Electric unter Mitarbeit von Ken Thompson und Dennis Ritchie weiterentwickelt. Obwohl sich &lt;br /&gt;
Bell Laboratories bald zurückzieht, gibt Thompson das Projekt nicht auf.  Zum Entwicklerteam &lt;br /&gt;
gehören auch Rudd Canaday und Brian Kernighan. Letzterer gibt 1970 dem Betriebssystem den Namen UNIX. &lt;br /&gt;
Thompson definiert 7 Richtlinien für UNIX:&lt;br /&gt;
 &lt;br /&gt;
# Hierarchische Anordnung der Dateisysteme&lt;br /&gt;
# Die Ausgabe von Daten an die Peripherie(-geräte) und Dateien soll gleich sein.&lt;br /&gt;
# Prozesse und Programme sollen miteinander kommunizieren.&lt;br /&gt;
# Multitasking (voneinander getrennte Prozesse)&lt;br /&gt;
# Persönliche Shell's&lt;br /&gt;
# Der Compiler soll für viele Programmiersprachen tauglich sein.&lt;br /&gt;
# Portabilität&lt;br /&gt;
&lt;br /&gt;
====1971====&lt;br /&gt;
Bis 1971 ist das für eine DEC PDP-7 geschriebene Unix als Version 1 auf eine PDP-11 portiert. Bis&lt;br /&gt;
zur Version 4 entwickelt Ritchie die Programmier- (Hoch-) Sprache C. Das in Assembler geschriebene&lt;br /&gt;
Unix wird fast völlig nach C übersetzt, wodurch zum erstenmal die geforderte Hardware-Unabhängigkeit&lt;br /&gt;
des Betriebssystems realisiert werden kann.&lt;br /&gt;
&lt;br /&gt;
====1975====&lt;br /&gt;
Da AT&amp;amp;T aufgrund vertraglicher Bindungen mit der US-Bundesregierung Unix nicht kommerziell vermarkten darf, stellt sie den Source Code für ein paar hundert Dollar den Universitäten, Lehr- und Forschungsanstalten zur Verfügung. Dies führt zu einer sehr dynamischen Entwicklung von Unix. 1975 wird die Version 6 als erstes UNIX-System veröffentlicht, die darauffolgende Version 7 wird sehr erfolgreich. Da es keine Standardisierung gibt, entwickeln bald verschiedenste Firmen ihr eigenes UNIX. Ab 1984 wird AT&amp;amp;T per Gerichtsbeschluss erlaubt, Unix zu vermarkten. AT&amp;amp;T verkauft sein Unix V und beginnt, sich um einen internationalen Standard von UNIX zu bemühen. &lt;br /&gt;
&lt;br /&gt;
====1984====&lt;br /&gt;
Durch Richard Stallman wird die Free Software Foundation (FSF) gegründet. Diese initiiert ein Projekt namens GNU (GNU ist Not Unix), welches das Ziel verfolgt, ein freies UNIX System zu schaffen. &lt;br /&gt;
&lt;br /&gt;
====1987====&lt;br /&gt;
AT&amp;amp;T verbietet die Verwendung des Unix Quellcodes an den Universitäten. Während dieser Zeit ist Andrew (Andy) Tannenbaum Professor an der Freien Universität von Amsterdam und entwickelt Minix. Minix ist ein kostengünstiges Lehrbetriebssystem und kommt ohne jeglichen AT&amp;amp;T Code aus, obwohl es die gleiche Funktionalität wie Unix 7 bietet. Im Usenet unter comp.os.minix entsteht eine Minix-Gemeinde, die den Minix Kernel und die Anwendungen rundherum programmiert und verbessert.&lt;br /&gt;
&lt;br /&gt;
====1991====&lt;br /&gt;
Linus Torvalds hat als Student für Computerwissenschaften an der Universität in Helsinki Minix installiert und das Buch von Andy Tannenbaum gelesen. Er beginnt im Sinne der FSF einen Unix ähnlichen Kernel zu programmieren mit der Idee, &amp;quot;ein besseres Minix als Minix&amp;quot; zu bauen. 1992 stellt er die Version 0.02 mit dem Namen Linux der Internetgemeinde zur Verfügung. &lt;br /&gt;
&lt;br /&gt;
====1994====&lt;br /&gt;
Die Linux Version 1.0 wird freigegeben. Das Linux Fieber beginnt... &lt;br /&gt;
&lt;br /&gt;
====1998====&lt;br /&gt;
Der Kreis der Linux Entwickler und Anwender ist kräftig angeschwollen. KDE 1.0 wird veröffentlicht. Die Zuwachsraten von Linux übertreffen die von Windows NT deutlich. &lt;br /&gt;
&lt;br /&gt;
====1999====&lt;br /&gt;
Der lange erwartete stabile Linux Kernel Version 2.2 wird freigegeben. Namhafte Firmen wie IBM kündigen ihre Unterstützung für Linux an. &lt;br /&gt;
&lt;br /&gt;
====2001====&lt;br /&gt;
Der lange erwartete stabile Linux Kernel Version 2.4 wird freigegeben. USB Unterstützung und eine neue Firewallimplementierung zeichnen ihn aus.&lt;br /&gt;
&lt;br /&gt;
====2003====&lt;br /&gt;
Linux Kernel Version 2.6 wird freigegeben. Am auffälligsten sind Änderungen bei der Modulverwaltung.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Distributionen===&lt;br /&gt;
{| Border=1 Cellpadding=2&lt;br /&gt;
| &lt;br /&gt;
|Url&lt;br /&gt;
|Paketformat&lt;br /&gt;
|-&lt;br /&gt;
|Red Hat&lt;br /&gt;
|www.redhat.com&lt;br /&gt;
|rpm&lt;br /&gt;
|-&lt;br /&gt;
|fedora&lt;br /&gt;
|fedora.redhat.com&lt;br /&gt;
|rpm&lt;br /&gt;
|-&lt;br /&gt;
|CentOS&lt;br /&gt;
|www.centos.org&lt;br /&gt;
|rpm&lt;br /&gt;
|-&lt;br /&gt;
|Suse/openSUSE&lt;br /&gt;
|www.opensuse.org&lt;br /&gt;
|rpm&lt;br /&gt;
|-&lt;br /&gt;
|Debian&lt;br /&gt;
|www.debian.org&lt;br /&gt;
|deb&lt;br /&gt;
|-&lt;br /&gt;
|Ubuntu&lt;br /&gt;
|www.ubuntu.com&lt;br /&gt;
|deb&lt;br /&gt;
|-&lt;br /&gt;
|Mandrake&lt;br /&gt;
|www.linux-mandrake.com&lt;br /&gt;
|rpm&lt;br /&gt;
|-&lt;br /&gt;
|Easy Linux&lt;br /&gt;
|www.easy-linux.de&lt;br /&gt;
|rpm&lt;br /&gt;
|-&lt;br /&gt;
|Turbo&lt;br /&gt;
|www.turbolinux.com&lt;br /&gt;
|rpm&lt;br /&gt;
|-&lt;br /&gt;
|minis&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|toms&lt;br /&gt;
|www.toms.net/rb&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|damn small linux&lt;br /&gt;
|www.damnsmalllinux.org&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|pocket-linux&lt;br /&gt;
|www.pocket-linux.org&lt;br /&gt;
|&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
====Bücher====&lt;br /&gt;
 Titel : Das Linux Anwenderhandbuch und Leitfaden für die Systemverwaltung&lt;br /&gt;
 Autor : Sebastian Hetze, Dirk Hohndel, Olaf Kirch und Martin Müller&lt;br /&gt;
 Verlag: Lunetix&lt;br /&gt;
 ISBN : 3-929764-06-7&lt;br /&gt;
&lt;br /&gt;
 Titel : Linux in a Nutshell&lt;br /&gt;
 Autor : Jessica Perry Hekman und die Mitarbeiter von O'Reilly &amp;amp; Associates&lt;br /&gt;
 Verlag: O'Reilly&lt;br /&gt;
 ISBN : 3-930673-57-6&lt;br /&gt;
&lt;br /&gt;
 Titel : Linux - Wegweiser zur Installation und Konfiguration&lt;br /&gt;
 Autor : Matt Welsh, Lar Kaufman, Matthias Kalle Dallheimer&lt;br /&gt;
 Verlag: O'Reilly&lt;br /&gt;
 ISBN : 3-930673-58-4 (deutsch), 1-56592-469-X (englisch)&lt;br /&gt;
&lt;br /&gt;
 Titel : Linux - Installation, Konfiguration, Anwendung&lt;br /&gt;
 Autor : Michael KoflerMultitasking&lt;br /&gt;
 Verlag: Addison-Wesley&lt;br /&gt;
 ISBN : 3-8273-1475-5&lt;br /&gt;
&lt;br /&gt;
 Titel : Linux - Wegweiser für Netzwerker&lt;br /&gt;
 Autor : Olaf Kirch&lt;br /&gt;
 Verlag: O'Reilly&lt;br /&gt;
 ISBN : 3-930673-18-5&lt;br /&gt;
&lt;br /&gt;
 Titel : TCP/IP-Netzwerk-Administration&lt;br /&gt;
 Autor : Craig Hunt&lt;br /&gt;
 Verlag: O'Reilly&lt;br /&gt;
 ISBN : 3-89721-110-6&lt;br /&gt;
&lt;br /&gt;
 Titel : Essential System Administration&lt;br /&gt;
 Autor : Eleen Frisch&lt;br /&gt;
 Verlag: O'Reilly&lt;br /&gt;
 ISBN : 1-56592-127-5&lt;br /&gt;
&lt;br /&gt;
==Betriebssystem==&lt;br /&gt;
===Was ist ein Betriebssystem?===&lt;br /&gt;
&lt;br /&gt;
Ein Betriebssystem liegt logisch gesehen zwischenAnwendungsprogramm und Hardware.&lt;br /&gt;
&lt;br /&gt;
Es nimmt die Anforderungen der Anwendungsprogramme entgegen und leitet&lt;br /&gt;
diese kontrolliert an die Hardware weiter. Kein Anwendungsprogramm sollte&lt;br /&gt;
direkt auf die Hardware zugreifen können. Den zentralen Zugang schafft einzig&lt;br /&gt;
das Betriebssystem. Somit kann das Betriebssystem unsinnige Anforderungen&lt;br /&gt;
oder Bedienungsfehler abblocken.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Image:Linux.jpg]]&lt;br /&gt;
&lt;br /&gt;
===Aufgaben eines Betriebssystems===&lt;br /&gt;
&lt;br /&gt;
# Verbergen der Komplexität der Maschine vor dem Anwender (Abstraktion)&lt;br /&gt;
# Bereitstellen einer Benutzerschnittstelle (&amp;quot;Kommandointerpreter&amp;quot;, &amp;quot;Shell&amp;quot;)&lt;br /&gt;
# Bereitstellen einer normierten Programmierschnittstelle (API)&lt;br /&gt;
# Verwaltung der Ressourcen der Maschine::&lt;br /&gt;
Hauptspeicher&lt;br /&gt;
Prozessor(en)&lt;br /&gt;
Hintergrundspeicher (Platte, Band, etc.)&lt;br /&gt;
Geräte (Terminal, Drucker, Plotter, etc.)&lt;br /&gt;
Rechenzeit&lt;br /&gt;
Koordination von Prozessen&lt;br /&gt;
&lt;br /&gt;
===Aufbau eines Betriebssystems===&lt;br /&gt;
&lt;br /&gt;
Ein Rechensystem besteht aus Hardware, Systemprogrammen und Anwendungs-&lt;br /&gt;
programmen. Unter einem Betriebssystem wird meist die Summe aus Betriebs-&lt;br /&gt;
systemkern (Kernel) und den wichtigsten Systemprogrammen verstanden. Ein&lt;br /&gt;
minimaler LINUX-Kernel besitzt ungefähr eine Größe von 400 - 800 kByte.&lt;br /&gt;
Weitere wichtige Systemkomponenten benötigen zusätzlich 10 - 100 Mbyte&lt;br /&gt;
Plattenplatz.&lt;br /&gt;
&lt;br /&gt;
Ein Betriebssystem stellt den Rechner als erweiterte Maschine (virtuelle&lt;br /&gt;
Maschine) über definierte Software-Schnittstellen zur Verfügung.&lt;br /&gt;
Das Betriebssystem dient als Betriebsmittelverwalter, der Anforderungen&lt;br /&gt;
befriedigt, protokolliert, abrechnet und vermittelt.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Aufgaben des Betriebssystemkerns:&lt;br /&gt;
&lt;br /&gt;
{| Border=1 Cellpadding=2&lt;br /&gt;
|Prozessverwaltung  (dispatching and scheduling)&lt;br /&gt;
| Mehrere Benutzer können mit mehreren Aktionen gleichzeitig im System arbeiten, ohne sich gegenseitig zu beeinflussen. Damit dies möglich ist,  müssen die Aktionen organisiert, koordiniert und verwaltet werden. Die zu verwaltende Einheit nennt man Prozess.&lt;br /&gt;
|-&lt;br /&gt;
|Speicherverwaltung   (memory management)&lt;br /&gt;
|Zuteilen von Speicherbereichen an laufende Prozesse, Schutz der Speicherbereiche vor unbefugten Zugriffen, bei Speicherengpässen: Auslagern von ganzen (swapping) oder von Teilen (paging) von Prozessen auf die Platte (swap file).&lt;br /&gt;
|-&lt;br /&gt;
|Dateiverwaltung  (file handling)&lt;br /&gt;
|Zuteilung von Plattenplatz für Programme, Benutzer und Systemdienste, Schreiben, Lesen und Strukturieren der Daten auf den Massenspeichern; Durch Bereitstellung einer entsprechenden Schnittstelle (VFS, virtual file system) kann der Kern Dateisysteme unterschiedlichster Art (EXT2, FAT, NFS, HPFS, NTFS, ...) ansprechen.&lt;br /&gt;
|-&lt;br /&gt;
|Geräteverwaltung  (resource management)&lt;br /&gt;
|Der Kern ermöglicht und kontrolliert den Zugriff auf die Hardware. Er steuert die Ein- und Ausgabetätigkeiten der Anwender. An den Kern&lt;br /&gt;
gebunden sind die entsprechenden Gerätetreiber (device driver), die damit eine Kommunikation zwischen Kern und Hardware ermöglichen.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
===Multitasking===&lt;br /&gt;
&lt;br /&gt;
Multitasking bedeutet, dass ein Rechner aus Anwendersicht mehrere Aufgaben&lt;br /&gt;
(Tasks) gleichzeitg übernehmen kann. Das Betriebssystem (OS) unterteilt die&lt;br /&gt;
gleichzeitig anstehenden Aufgaben in Einzelarbeitsschritte (Prozesse) und&lt;br /&gt;
managed durch ein Zeitscheibenverfahren (scheduling) die gleichmäßige&lt;br /&gt;
Abarbeitung der Prozesse.&lt;br /&gt;
&lt;br /&gt;
Es wird unterschieden zwischen:&lt;br /&gt;
&lt;br /&gt;
*non-präamptiven (kooperativen=die Ressourcen werden vom aktiven Prozess freigegeben, bei einem Hänger steht das ganze System)&lt;br /&gt;
&lt;br /&gt;
und&lt;br /&gt;
&lt;br /&gt;
*präamptiven (reinem=der Betriebssystemkern steuert Taskwechsel, indem nach einer festgelegten Zeit vom gerade aktiven Prozess zum nächsten weitergeschaltet wird)&lt;br /&gt;
&lt;br /&gt;
===Mehrprozessorbetrieb===&lt;br /&gt;
&lt;br /&gt;
Bei mehreren Prozessoren und Unterstützung durch das OS&lt;br /&gt;
(NT,Linux,Unix,Novell) können mehrere Tasks auf diese verteilt werden und&lt;br /&gt;
gleichzeitig bearbeitet werden. Nachteilig ist, dass dies nicht oder kaum von&lt;br /&gt;
Anwendungsprogrammen unterstützt wird und es zu Kommunikationsproblemen&lt;br /&gt;
zwischen den einzelnen Tasks kommen kann.&lt;br /&gt;
&lt;br /&gt;
===Arten von von Betriebssystemen===&lt;br /&gt;
&lt;br /&gt;
{|Border=1 Cellpadding=2&lt;br /&gt;
|&lt;br /&gt;
|SingleUser  &lt;br /&gt;
|Multiuser&lt;br /&gt;
|-&lt;br /&gt;
|Single Tasking&lt;br /&gt;
|MS - DOS&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|Multi Tasking&lt;br /&gt;
|Windows 3.x&lt;br /&gt;
|UNIX&lt;br /&gt;
|-&lt;br /&gt;
|&lt;br /&gt;
|Windows 95/98&lt;br /&gt;
|Linux&lt;br /&gt;
|-&lt;br /&gt;
|&lt;br /&gt;
|Windows NT4 ohne Erweiterungen&lt;br /&gt;
|VMS&lt;br /&gt;
|-&lt;br /&gt;
|&lt;br /&gt;
|OS/2 &lt;br /&gt;
|Windows NT mit  Erweiterungen&lt;br /&gt;
|-&lt;br /&gt;
|&lt;br /&gt;
|Apple&lt;br /&gt;
|Windows 2000, XP, 2003&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
===SHELL===&lt;br /&gt;
&lt;br /&gt;
Wenn man mit Linux arbeiten will, kann man nicht direkt mit dem Betriebssystem&lt;br /&gt;
kommunizieren. Man braucht dazu ein Hilfsprogramm, welches die&lt;br /&gt;
Kommandoeingaben ordnungsgemäß an das Betriebssystem weiterleitet. Dieses&lt;br /&gt;
Hilfsprogramm hat den Namen Shell.&lt;br /&gt;
&lt;br /&gt;
Die Shell schirmt den Betriebssystemkern von den Anwendungsprogrammen ab.&lt;br /&gt;
Die unterschiedlichen Shells erfüllen alle dieselbe Aufgabe, sie unterscheiden sich&lt;br /&gt;
allerdings in ihrer Syntax.&lt;br /&gt;
&lt;br /&gt;
==Die Installation im Überblick==&lt;br /&gt;
&lt;br /&gt;
Die Installation von Linux geschieht in folgenden Schritten:&lt;br /&gt;
&lt;br /&gt;
# Analyse (Welche Hardware habe ich? ,Hab ich weitere Betriebsysteme?)&lt;br /&gt;
# Booten des Linux-Kernels. (von CD oder Diskette)&lt;br /&gt;
# Laden einer RAM-Disk (das macht das Installationsprogramm automatisch).&lt;br /&gt;
# Partitionieren der Festplatte (fdisk).&lt;br /&gt;
# Einrichten der Swappartition (mkswap), Formatieren der Festplatte (mkfs).&lt;br /&gt;
# Montieren der Dateisysteme (mount), Aktivieren der Swapbereiche (swapon).&lt;br /&gt;
# Kopieren und Auspacken der Daten vom Installationsmedium auf die Festplatte (die eigentliche Installation). (rpm, dpkg oder tar).&lt;br /&gt;
# Geeignete Wahl der Bootmethode unter Berücksichtigung von Punkt 1 (grub, lilo).&lt;br /&gt;
# Konfiguration des Systems (Netz, Modem etc...).&lt;br /&gt;
&lt;br /&gt;
==Erste Schritte==&lt;br /&gt;
===Anmelden===&lt;br /&gt;
Sie können sich nun mit dem Usernamen und dem Passwort, das sie bei der Installation angelegt haben anmelden!&lt;br /&gt;
[[Image:benutzer.jpg]]&lt;br /&gt;
&lt;br /&gt;
[[Image:passwd.jpg]]&lt;br /&gt;
&lt;br /&gt;
===Terminal öffnen===&lt;br /&gt;
&lt;br /&gt;
Ein Terminal öffnen Sie über das Startmenü:&lt;br /&gt;
&lt;br /&gt;
[[Image:Terminalde.jpg]]&lt;br /&gt;
&lt;br /&gt;
Das geöffnete Terminal sieht dann folgendermaßen aus:&lt;br /&gt;
&lt;br /&gt;
[[Image:Terminalde2.jpg]]&lt;br /&gt;
&lt;br /&gt;
===Sudo===&lt;br /&gt;
Rootrechte erlangen sie über den &amp;quot;Sudo&amp;quot;-Befehl&lt;br /&gt;
 &lt;br /&gt;
''Den nächsten Befehl als root ausführen''&lt;br /&gt;
 xinux@zero:~$ sudo cat /etc/shadow&lt;br /&gt;
 [sudo] password for xinux:&lt;br /&gt;
&lt;br /&gt;
''Eine komplette Sitzung als root starten''&lt;br /&gt;
 xinux@zero:~$ sudo -i&lt;br /&gt;
 [sudo] password for xinux:&lt;br /&gt;
 root@zero:~#&lt;br /&gt;
&lt;br /&gt;
===Virtuelle Konsolen===&lt;br /&gt;
&lt;br /&gt;
In die Virtuelle Konsole gelangen sie über &amp;quot;STRG+ALT+(F1-F6)&amp;quot;.&lt;br /&gt;
Sie funktioniert wie ein ganz normales Terminal, und mit &amp;quot;ALT+F7&amp;quot;&lt;br /&gt;
gelangen sie wieder zurück auf die grafische Benutzeroberfläche&lt;br /&gt;
&lt;br /&gt;
===Abmelden===&lt;br /&gt;
&lt;br /&gt;
Abmelden können Sie sich wieder über das Startmenu unter:&lt;br /&gt;
&lt;br /&gt;
[[Image:Logout.jpg]]&lt;br /&gt;
&lt;br /&gt;
Fals sie nur einzelne Sitzungen in einem der Terminals oder &lt;br /&gt;
den Virtuellen Konsolen Abmelden wollen benutzen sie dazu den Befehl: &amp;quot;exit&amp;quot;&lt;br /&gt;
&lt;br /&gt;
===Herunterfahren===&lt;br /&gt;
&lt;br /&gt;
Das Herunterfahren funktioniert auf dem selben Weg.&lt;br /&gt;
&lt;br /&gt;
Entweder sie Benutzen wieder das Startmenü und benutzen diesmal den &amp;quot;Ausschalten ...&amp;quot; Knopf,&lt;br /&gt;
&lt;br /&gt;
Oder sie geben den äquivalenten &amp;quot;shutdown&amp;quot;-Befehl in einem Terminal bzw. der virtuellen Konsole ein.&lt;br /&gt;
&lt;br /&gt;
Allerdings müssen sie dazu als Administrator angemeldet sein s. &amp;quot;Sudo&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Wenn Sie den &amp;quot;shutdown&amp;quot;-Befehl benutzen wollen muss hinter den Befehl&lt;br /&gt;
&lt;br /&gt;
eine Zeitangabe in Minuten oder das wort &amp;quot;now&amp;quot; für sofortiges Ausschalten hinzugefügt werden:&lt;br /&gt;
&lt;br /&gt;
 xinux@zero:~$ sudo -i&lt;br /&gt;
 root@zero:~# shutdown 60&lt;br /&gt;
 &lt;br /&gt;
 Broadcast message from xinux@zero &lt;br /&gt;
         (/dev/pts/3) at 14:29 ...&lt;br /&gt;
 &lt;br /&gt;
 The system is going down for maintenance in 60 minutes!&lt;br /&gt;
&lt;br /&gt;
Sollten sie den Befehl widerrufen wollen dann drücken sie &amp;quot;STRG+C&amp;quot;,&lt;br /&gt;
&lt;br /&gt;
in dem Terminal in dem der shutdown Befehl gestartet wurde,&lt;br /&gt;
&lt;br /&gt;
oder geben sie den &amp;quot;shutdown&amp;quot;-Befehl zusammen mit der Abbruchoption &amp;quot;-c&amp;quot; in einem anderen Terminal ein:&lt;br /&gt;
&lt;br /&gt;
 root@zero:~# shutdown -c&lt;br /&gt;
&lt;br /&gt;
 shutdown: Shutdown cancelled&lt;br /&gt;
 root@zero:~# &lt;br /&gt;
&lt;br /&gt;
Wenn Sie den Rechner Neustarten möchten gibt es dazu die Option &amp;quot;-r&amp;quot; für den &amp;quot;shutdown&amp;quot;-Befehl&lt;br /&gt;
&lt;br /&gt;
oder den &amp;quot;reboot&amp;quot;-Befehl die beide auch als root ausgeführt werden müssen:&lt;br /&gt;
&lt;br /&gt;
 xinux@zero:~$ sudo -i&lt;br /&gt;
 [sudo] password for xinux: &lt;br /&gt;
 root@zero:~# shutdown -r now&lt;br /&gt;
&lt;br /&gt;
 root@zero:~# reboot&lt;br /&gt;
&lt;br /&gt;
===&amp;quot;man&amp;quot;===&lt;br /&gt;
&lt;br /&gt;
Programm zum Einsehen der Online-Manuals&lt;br /&gt;
&lt;br /&gt;
Die Manuals sind in folgende Sektionen unterteilt:&lt;br /&gt;
# Ausführbare Programme oder Shellbefehle&lt;br /&gt;
# Systemaufrufe (Kernelfunktionen)&lt;br /&gt;
# Bibliotheksaufrufe (Funktionen in System-Bibliotheken)&lt;br /&gt;
# Spezielle Dateien (gewöhnlich in /dev)&lt;br /&gt;
# Dateiformate und Konventionen, z. B. /etc/passwd&lt;br /&gt;
# Spiele&lt;br /&gt;
# Makropakete und Konventionen, z. B. man(7), groff(7)&lt;br /&gt;
# Systemadministrationsbefehle (in der Regel nur für root)&lt;br /&gt;
# Kernelroutinen [Nicht Standard]&lt;br /&gt;
&lt;br /&gt;
Aufruf eines Manuals erfolgt durch ''man kommando''&lt;br /&gt;
Beendet wird durch Drücken des Buchstabens q&lt;br /&gt;
Gesucht wird vorwärts durch Eingabe eines /suchausdruck&lt;br /&gt;
Gesucht wird rückwärts durch Eingabe eines ?suchausdruck&lt;br /&gt;
&lt;br /&gt;
Beispiele:&lt;br /&gt;
&lt;br /&gt;
      man passwd        Anschauen der Manualseite zum Programm passwd&lt;br /&gt;
      man 5 passwd      Anschauen der Manualseite zur Datei /etc/passwd&lt;br /&gt;
      man -a passwd     Anschauen aller Manualseiten zu passwd&lt;br /&gt;
      man -k passwd     Durchsucht die Kurzbeschreibungen der Manualseite&lt;br /&gt;
                        nach passwd und gibt alle Treffer aus&lt;br /&gt;
      man -f passwd      Gibt alle gefunden Kurzbescheibungen zu passwd aus&lt;br /&gt;
      man -L en passwd Gibt englische Manualseiten aus&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Was geht vor auf meinem System? (date,who)===&lt;br /&gt;
&lt;br /&gt;
Das Kommando date dient zur Abfrage von Datum und Uhrzeit.&lt;br /&gt;
&lt;br /&gt;
 xinux@zero:~ &amp;gt; date&lt;br /&gt;
 Fre Mär 16 16:35:03 CET 2001&lt;br /&gt;
&lt;br /&gt;
oder auch Anzeige der Grennwich Zeit:&lt;br /&gt;
&lt;br /&gt;
 xinux@zero:~ &amp;gt; date -u&lt;br /&gt;
 Fre Mär 16 15:35:34 UTC 2001&lt;br /&gt;
&lt;br /&gt;
 xinux@zero:~ &amp;gt; date -u &amp;quot;+%X&amp;quot;&lt;br /&gt;
 15:37:19&lt;br /&gt;
&lt;br /&gt;
 xinux@zero:~ &amp;gt; date -u &amp;quot;+%x&amp;quot;&lt;br /&gt;
 01/15/02&lt;br /&gt;
&lt;br /&gt;
who zeigt alle angemeldeten Benutzer an&lt;br /&gt;
&lt;br /&gt;
 thomas@cardassia:~ &amp;gt; who&lt;br /&gt;
 thomas             tty1 Feb 27 16:39&lt;br /&gt;
 thomas             tty2 Mar 2 17:08&lt;br /&gt;
 tina               tty6 Mar 16 16:38&lt;br /&gt;
&lt;br /&gt;
Mit `who --help' bekommen Sie mehr Informationen.&lt;br /&gt;
&lt;br /&gt;
 thomas@cardassia:~ &amp;gt; who --help&lt;br /&gt;
&lt;br /&gt;
Benutzung: who [OPTION]... [ DATEI | ARG1 ARG2 ]&lt;br /&gt;
&lt;br /&gt;
 -H, --heading             print line of column headings&lt;br /&gt;
 -i, -u, --idle            add user idle time as HOURS:MINUTES, . or old&lt;br /&gt;
 -l, --lookup              attempt to canonicalize hostnames via DNS&lt;br /&gt;
 -m                        only hostname and user associated with stdin&lt;br /&gt;
 -q, --count               all login names and number of users logged on&lt;br /&gt;
 -s                        (ignored)&lt;br /&gt;
 -T, -w, --mesg            add user's message status as +, - or ?&lt;br /&gt;
     --message             same as -T&lt;br /&gt;
     --writable            same as -T&lt;br /&gt;
     --help                display this help and exit&lt;br /&gt;
     --version             output version information and exit&lt;br /&gt;
&lt;br /&gt;
==Das UNIX-Dateisystem==&lt;br /&gt;
===Verzeichnisbaum===&lt;br /&gt;
&lt;br /&gt;
[[Image:vztree.jpg]]&lt;br /&gt;
&lt;br /&gt;
Das Betriebssystem UNIX besitzt ein hierarchisches Dateisystem. Es besteht aus:&lt;br /&gt;
* Dateien (Files)&lt;br /&gt;
Dateien speichern Informationen (Text, Bilder, Sound, Videos, Programme) und&lt;br /&gt;
werden über den Dateinamen angesprochen.&lt;br /&gt;
&lt;br /&gt;
* Verzeichnissen (Directories, Kataloge)&lt;br /&gt;
Verzeichnisse besitzen ebenfalls einen Namen und dienen zur Ordnung des&lt;br /&gt;
Dateisystems. Ein Verzeichnis kann Dateien und Unterverzeichnisse&lt;br /&gt;
(Subdirectories) enthalten. Das oberste Verzeichnis im Dateisystem heisst&lt;br /&gt;
Rootverzeichnis oder kurz Root und wird durch / (sprich: slash)&lt;br /&gt;
gekennzeichnet.&lt;br /&gt;
&lt;br /&gt;
Im Gegensatz zu Windows kennt UNIX keine Laufwerke.&lt;br /&gt;
Das obige Bild zeigt ein typisches UNIX-Dateisystem.&lt;br /&gt;
Unterhalb des Rootverzeichnisses befinden sich eine Vielzahl vonVerzeichnissen.&lt;br /&gt;
&lt;br /&gt;
===Wichtige Verzeichnisse===&lt;br /&gt;
&lt;br /&gt;
• '''Homeverzeichnis'''&lt;br /&gt;
&lt;br /&gt;
das Verzeichnis, in dem man sich unmittelbar nach dem Anmelden befindet. Das&lt;br /&gt;
Homeverzeichnis wird vom Systemverwalter eingerichtet; jeder Anwender&lt;br /&gt;
besitzt ein festes Homeverzeichnis. z.B. /home/hans&lt;br /&gt;
&lt;br /&gt;
~ (Tilde) bzw. $HOME (Shellvariable) kennzeichnen das Homeverzeichnis.&lt;br /&gt;
&lt;br /&gt;
• '''Aktuelles Verzeichnis'''&lt;br /&gt;
&lt;br /&gt;
Verzeichnis, in dem man sich aktuell befindet.&lt;br /&gt;
Das aktuelle Verzeichnis wird mit dem Befehl cd (change directory) oder per&lt;br /&gt;
Mausklick verändert.&lt;br /&gt;
Ein einfacher Punkt . kennzeichnet das aktuelle Verzeichnis.&lt;br /&gt;
&lt;br /&gt;
• '''Elternverzeichnis'''&lt;br /&gt;
&lt;br /&gt;
Verzeichnis unmittelbar oberhalb des aktuellen Verzeichnisses.&lt;br /&gt;
Jedes Verzeichnis ausser / besitzt genau ein Elternverzeichnis.&lt;br /&gt;
Zwei Punkte .. kennzeichnen das Elternverzeichnis (abhängig vom aktuellen&lt;br /&gt;
VZ).&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Absoluter Pfadname:===&lt;br /&gt;
&lt;br /&gt;
Beschreibt ausgehend vom Rootverzeichnis den Weg zum Zielverzeichnis oder zur&lt;br /&gt;
Zieldatei. (Welche Verzeichnisse müssen ausgehend von / durchlaufen werden, um&lt;br /&gt;
zum Ziel zu kommen?) Ein absoluter Pfadname beginnt immer mit / .&lt;br /&gt;
&lt;br /&gt;
===Relativer Pfadname:===&lt;br /&gt;
&lt;br /&gt;
Beschreibt ausgehend vom aktuellen Verzeichnis den Weg zum Zielverzeichnis&lt;br /&gt;
oder zur Zieldatei; ein relativer Pfadname beginnt nicht mit / .&lt;br /&gt;
/home/suxer&lt;br /&gt;
absoluter Pfadname für das Verzeichnis sub1 im Homeverzeichnis von suxer&lt;br /&gt;
&lt;br /&gt;
===Verzeichnisstruktur===&lt;br /&gt;
&lt;br /&gt;
 /bin         Kommandos die beim starten benötigt werden (Zugriff hat jeder)&lt;br /&gt;
 /sbin        Wichtige System-Programme (In der Regel root vorberhalten)&lt;br /&gt;
 /boot        Hier findet man die Dateien des Bootmanagers und des Kernel.&lt;br /&gt;
 /dev         In diesem Verzeichnis stehen die Gerätedateien (Devices),&lt;br /&gt;
 /home        Alle Heimatverzeichnisse der Nutzer findet man hier.&lt;br /&gt;
 /lib         Beim Systemstart benötigten Bibliotheken und Modules stehen hier.&lt;br /&gt;
 /mnt         Mountpunkt für temporäre Partitionen&lt;br /&gt;
 /opt         Software, die nicht Installationsumfang von Linux gehören.&lt;br /&gt;
 /root        Heimatverzeichnis des Administrators.&lt;br /&gt;
 /tmp         Temporäre Dateien können hier abgelegt werden&lt;br /&gt;
 /usr         statische Dateien (kann read-only gemountet sein)&lt;br /&gt;
 /var         variable Dateien (muss beschreibar sein )&lt;br /&gt;
 /etc         Konfiguartionsdateien und Startscripte&lt;br /&gt;
 /proc        Virtuelles Dateisystem -&amp;gt; repräsentiert den Kernel&lt;br /&gt;
&lt;br /&gt;
===Unterverzeichnisse von /usr===&lt;br /&gt;
&lt;br /&gt;
 sbin         Programme für root die beim Start nicht benötigt werden&lt;br /&gt;
 bin          Programme für alle die beim Start nicht benötigt werden&lt;br /&gt;
 X11R6        Dateien des X-Window-Sytems&lt;br /&gt;
 bin          Ausführbare Programme&lt;br /&gt;
 doc          Dokumentationen&lt;br /&gt;
 etc          Konfigurationsdateien&lt;br /&gt;
 games        Spiele&lt;br /&gt;
 include      Headerdateien für C-Programme&lt;br /&gt;
 local        Pakete die nicht zur Distribution gehören ähnlich /opt&lt;br /&gt;
 share        Pakete die von mehreren Paketen genutzt werden&lt;br /&gt;
 share/man    Die Manualpages&lt;br /&gt;
 share/info   Seiten des Infosystems&lt;br /&gt;
 share/doc    Dokumentationen&lt;br /&gt;
 src          Sources von Programmen (Kernel und andere)&lt;br /&gt;
&lt;br /&gt;
===Unterverzeichnisse von /var===&lt;br /&gt;
&lt;br /&gt;
 cache        Zwischenspreicher für Progammes&lt;br /&gt;
 games        Variable Daten der Games (Scores etc...)&lt;br /&gt;
 lock         Sperrdateien&lt;br /&gt;
 log          Die Logdateien (wichtiges Verzeichnis für Admins)&lt;br /&gt;
 mail         Das Mailsystem&lt;br /&gt;
 run          Dateien zu laufemdem Prozessen&lt;br /&gt;
 spool        Spooldateien (z.B. für das Drucksystem&lt;br /&gt;
 state        Statusinfos&lt;br /&gt;
 tmp          Wie /tmp eventuell nicht auf root Partion&lt;br /&gt;
&lt;br /&gt;
==Einfache Komandos==&lt;br /&gt;
===cd: Wechseln des Arbeitsverzeichnis===&lt;br /&gt;
&lt;br /&gt;
Um festzustellen in welchem Verzeichnis man sich befindet, sollte man den&lt;br /&gt;
Befehl &amp;quot;pwd&amp;quot; benutzen,&lt;br /&gt;
&lt;br /&gt;
und mit dem Befehl &amp;quot;cd&amp;quot; kann man zwischen den Verzeichnissen wechseln:&lt;br /&gt;
&lt;br /&gt;
Wechsele ins homeverzeichnis von Xinux&lt;br /&gt;
&lt;br /&gt;
 xinux@zero:~$ cd /home/xinux/&lt;br /&gt;
 xinux@zero:~$ pwd&lt;br /&gt;
 /home/xinux&lt;br /&gt;
&lt;br /&gt;
cd ~ -&amp;gt; wechsele ins jeweilige Homeverzeichnis&lt;br /&gt;
&lt;br /&gt;
cd .. -&amp;gt; wechsele ein Verzeichnis höher&lt;br /&gt;
&lt;br /&gt;
cd ../verzeichnis -&amp;gt; wechsele in eine paralleles Verzeichnis &amp;lt;- (ist eine relative Pfadangabe !)&lt;br /&gt;
&lt;br /&gt;
cd - -&amp;gt; wechsele in das Verzeichnis, in dem vorher gearbeitet wurde.&lt;br /&gt;
&lt;br /&gt;
Mit cd / wechselt man in das Wurzelverzeichnis.&lt;br /&gt;
&lt;br /&gt;
 xinux@zero:/var/log$ cd /&lt;br /&gt;
 xinux@zero:/$ pwd&lt;br /&gt;
 /&lt;br /&gt;
&lt;br /&gt;
===ls: Listing===&lt;br /&gt;
&lt;br /&gt;
Den Inhalt von Verzeichnissen kann man sich mit dem Befehl &amp;quot;ls&amp;quot; anzeigen lassen&lt;br /&gt;
wobei &amp;quot;ls&amp;quot; eine Vielzahl von Optionen besitzt:&lt;br /&gt;
&lt;br /&gt;
 ls                                  standard&lt;br /&gt;
 ls -l                               langes listing&lt;br /&gt;
 ls -a                               alle Dateien&lt;br /&gt;
 ls -i                               mit Inode&lt;br /&gt;
 ls -h                               gut lesbare Dateigröße&lt;br /&gt;
 ls -d                               Verzechnis wird angezeigt, nicht der Inhalt&lt;br /&gt;
 ls -L                               sortiert nach Größe&lt;br /&gt;
 ls -t                               sortiert nach Datum&lt;br /&gt;
 ls -F                               mit nützlichem Anhang&lt;br /&gt;
&lt;br /&gt;
 xinux@zero:/$ ls -l /var/log/messages&lt;br /&gt;
 -rw-r----- 1 syslog adm 2296 2009-06-16 10:05 /var/log/messages&lt;br /&gt;
&lt;br /&gt;
===more: Seitenweises Anzeigen von Seiten===&lt;br /&gt;
 root@zero:~# more /var/log/messages&lt;br /&gt;
 ...&lt;br /&gt;
&lt;br /&gt;
===head: erste Zeilen anzeigen===&lt;br /&gt;
Erste 10 Zeilen anzeigen&lt;br /&gt;
 root@zero:~# head /var/log/messages&lt;br /&gt;
 Jun 15 12:37:08 zero syslogd 1.5.0#5ubuntu3: restart.&lt;br /&gt;
 Jun 15 12:38:43 zero kernel: [  830.065036] mtrr: your processor doesn't support write-combining&lt;br /&gt;
 Jun 15 12:46:05 zero pulseaudio[4817]: pid.c: Stale PID file, overwriting.&lt;br /&gt;
 Jun 15 13:05:24 zero -- MARK --&lt;br /&gt;
 ...&lt;br /&gt;
&lt;br /&gt;
Erste zwei Zeilen anzeigen&lt;br /&gt;
 root@zero:~# head -n 2 /var/log/messages&lt;br /&gt;
 Jun 15 12:37:08 zero syslogd 1.5.0#5ubuntu3: restart.&lt;br /&gt;
 Jun 15 12:38:43 zero kernel: [  830.065036] mtrr: your processor doesn't support write-combining&lt;br /&gt;
&lt;br /&gt;
===tail: letzte Zeilen anzeigen===&lt;br /&gt;
 &lt;br /&gt;
 root@zero:~# tail /var/log/syslog&lt;br /&gt;
 ...&lt;br /&gt;
 Jun 19 11:19:35 zero -- MARK --&lt;br /&gt;
 Jun 19 11:39:35 zero -- MARK --&lt;br /&gt;
 Jun 19 11:59:36 zero -- MARK --&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Letze 5 Zeilen anzeigen&lt;br /&gt;
 root@zero:~# tail -n 5 /var/log/auth.log&lt;br /&gt;
 Jun 18 14:30:01 zero CRON[12040]: pam_unix(cron:session): session closed for user root&lt;br /&gt;
 Jun 18 14:39:01 zero CRON[12191]: pam_unix(cron:session): session opened for user root by (uid=0)&lt;br /&gt;
 Jun 18 14:39:01 zero CRON[12191]: pam_unix(cron:session): session closed for user root&lt;br /&gt;
 Jun 18 14:40:01 zero CRON[12237]: pam_unix(cron:session): session opened for user root by (uid=0)&lt;br /&gt;
 Jun 18 14:40:01 zero CRON[12237]: pam_unix(cron:session): session closed for user root&lt;br /&gt;
&lt;br /&gt;
Letze Zeilen anzeigen und fortlaufend aktualisieren&lt;br /&gt;
 root@zero:~# tail -f /var/log/syslog&lt;br /&gt;
 ...&lt;br /&gt;
&lt;br /&gt;
===mkdir: Ein neues Verzeichnis erstellen===&lt;br /&gt;
&lt;br /&gt;
 mkdir        verzeichnis&lt;br /&gt;
Erstellt ein Verzeichnis im working directory (wd)&lt;br /&gt;
&lt;br /&gt;
 mkdir  -p    ver1/ver2&lt;br /&gt;
Erstellt ein Verzeichnis ver2 unterhalb von ver1&lt;br /&gt;
wenn ver1 nicht existiert wird es erstellt&lt;br /&gt;
&lt;br /&gt;
 mkdir -m 753 ver1&lt;br /&gt;
Es wird das Verzeichnis ver1 erstellt mit der mask 753&lt;br /&gt;
&lt;br /&gt;
 mkdir -v     ver1&lt;br /&gt;
Geschwätzige Ausgabe :)&lt;br /&gt;
&lt;br /&gt;
===Zum Löschen von leeren Verzeichnissen wird rmdir benutzt===&lt;br /&gt;
&lt;br /&gt;
 rmdir           ver1&lt;br /&gt;
Löscht das leere Verzeichnis ver1&lt;br /&gt;
&lt;br /&gt;
 rmdir -v        ver1&lt;br /&gt;
Löscht das leere Verzeichnis ver1 und ist geschwätzig&lt;br /&gt;
&lt;br /&gt;
 rmdir -p        /ver1/ver2/ver3&lt;br /&gt;
Löscht das Verzeichnis ver3; wenn dadurch ver2 ein leeres&lt;br /&gt;
Verzeichnis wird, wird dieses auch gelöscht , wenn ver1&lt;br /&gt;
dadurch ein leeres Verzeichnis wird, wird auch dieses gelöscht.&lt;br /&gt;
&lt;br /&gt;
===touch Verändern des Zeitstempels===&lt;br /&gt;
&lt;br /&gt;
Mit touch können wir eine neue leere Datei erzeugen (das ist nicht der eigentliche&lt;br /&gt;
Zweck von touch, eigentlich wird der Zeitstempel geändert)&lt;br /&gt;
&lt;br /&gt;
 touch            dateiname&lt;br /&gt;
&lt;br /&gt;
===Kopieren=== &lt;br /&gt;
cp ist das Kommando um Dateien zu kopieren &lt;br /&gt;
&lt;br /&gt;
Eine Kopie von dat1 mit dem Namen dat2 erstellen:&lt;br /&gt;
&lt;br /&gt;
 xinux@zero:~$ cp dat1 dat2&lt;br /&gt;
&lt;br /&gt;
Eine Kopie von dat1 ins Verzeichnis ver2 erstellen:&lt;br /&gt;
&lt;br /&gt;
 xinux@zero:~$ cp dat1 ver2/&lt;br /&gt;
 &lt;br /&gt;
Eine Kopie erstellen mit ausführlicher Anzeige:&lt;br /&gt;
&lt;br /&gt;
 xinux@zero:~$ cp -v dat1 dat2&lt;br /&gt;
 `dat1' -&amp;gt; `dat2'&lt;br /&gt;
&lt;br /&gt;
Eine Kopie erstellen mit Rückfrage fals etwas überschrieben wird:&lt;br /&gt;
&lt;br /&gt;
 xinux@zero:~$ cp -i dat1 dat2&lt;br /&gt;
 cp: overwrite `dat2'?&lt;br /&gt;
&lt;br /&gt;
Eine Kopie erstellen und die Rückfrage überbrücken:&lt;br /&gt;
&lt;br /&gt;
 xinux@zero:~$ cp -f dat1 dat2&lt;br /&gt;
&lt;br /&gt;
Eine Kopie von dat1 ins Verzeichnis ver2 erstellen fals keine neuere Version von dat1 vorliegt:&lt;br /&gt;
&lt;br /&gt;
 xinux@zero:~$ cp -u dat1 ver2/&lt;br /&gt;
&lt;br /&gt;
Eine Kopie erstellen fals ver2 auf dem selben Dateisystem wie dat1 liegt:&lt;br /&gt;
&lt;br /&gt;
 xinux@zero:~$ cp -x dat1 ver2/&lt;br /&gt;
&lt;br /&gt;
Eine Kopie von ver1, die als ver2 oder unter ver2 als ver1 gespeichert wird erstellen:&lt;br /&gt;
&lt;br /&gt;
 xinux@zero:~$ cp -r ver1/ ver2/&lt;br /&gt;
&lt;br /&gt;
Eine Kopie von einer Datei erstellen und ihre Attribute beibehalten:&lt;br /&gt;
&lt;br /&gt;
 xinux@zero:~$ cp -p sux1 sux2&lt;br /&gt;
&lt;br /&gt;
Eine Kopie erstellen bei der die Links erhalten bleiben:&lt;br /&gt;
&lt;br /&gt;
 xinux@zero:~$ cp -r ver1/ ver2/&lt;br /&gt;
&lt;br /&gt;
Eine Kopie erstellen zum Archivieren (-dpr):&lt;br /&gt;
&lt;br /&gt;
 xinux@zero:~$ cp -a ver1/ ver2/&lt;br /&gt;
&lt;br /&gt;
===rm: Löschen einer Datei===&lt;br /&gt;
&lt;br /&gt;
Um Dateien zu löschen, brauchen wir das Kommando &amp;quot;rm&amp;quot;:&lt;br /&gt;
&lt;br /&gt;
 rm               dat1        dat1 wird gelöscht&lt;br /&gt;
 rm         -i    dat1        dat1 wird nach Bestätigung gelöscht&lt;br /&gt;
 rm         -f    dat1        dat1 wird ohne Rückfragen gelöscht&lt;br /&gt;
 rm         -v    dat1        dat1 wird glöscht (geschwätzige Ausgabe)&lt;br /&gt;
 rm         -r    ver1        Löschen von nicht leeren Verzeichnissen&lt;br /&gt;
                              Achtung !!! Als root kann man sich damit Teile&lt;br /&gt;
                              oder sogar den gesamten Verzeichnisbaum&lt;br /&gt;
                              absägen !!!&lt;br /&gt;
&lt;br /&gt;
===mv: Verschieben===&lt;br /&gt;
&lt;br /&gt;
Mit dem Befehl &amp;quot;mv&amp;quot; werden Daten verschoben, folgendes gilt:&lt;br /&gt;
&lt;br /&gt;
 mv          dat1 dat2         &lt;br /&gt;
Die Datei dat1 wird in dat2 umbenannt&lt;br /&gt;
 mv          dat1 /ver1        &lt;br /&gt;
Die Datei dat1 wird nach /ver1 verschoben&lt;br /&gt;
&lt;br /&gt;
Die Parameter und ihre Bedeutung:&lt;br /&gt;
&lt;br /&gt;
      -i                      wenn eine Datei exisitiert wird vor dem&lt;br /&gt;
                              Überschreiben nachgefragt&lt;br /&gt;
      -v                      verbose (geschwätzig)&lt;br /&gt;
      -u                      nur neuere Daten werden bei Bedarf überschrieben&lt;br /&gt;
      -b                      wenn überschrieben werden soll, wird ein Backup&lt;br /&gt;
                              erstellt&lt;br /&gt;
      -S ENDUNG               das Backup bekommt die Endung ENDUNG&lt;br /&gt;
&lt;br /&gt;
===su Benutzer wechseln===&lt;br /&gt;
&lt;br /&gt;
 su -             &lt;br /&gt;
Wechsel zum Rootaccount, wie wenn dieser sich neu anmelden würde. (Bsp: su -)&lt;br /&gt;
&lt;br /&gt;
 su Benutzernamen &lt;br /&gt;
Wechsel der Identität zu Benutzer (gegebenenfalls Passwortabfrage)&lt;br /&gt;
&lt;br /&gt;
 su -c Kommando   &lt;br /&gt;
Kommando wird als rootaccount ausgeführt&lt;br /&gt;
&lt;br /&gt;
==Der Standard Editor vi==&lt;br /&gt;
Der vi ist der Standardeditor in der Unixwelt. Er ist in jedem Unix-Derivat&lt;br /&gt;
enthalten.&lt;br /&gt;
Der Editor hat zwar den schlechten Ruf umständlich zu bedienen zu sein, ist&lt;br /&gt;
jedoch sehr leistungsfähig und systemübergreifend verfügbar. Beim vi handelt es&lt;br /&gt;
sich um einen rein textorientierten Editor, der mittels eigener Kommandos&lt;br /&gt;
gesteuert wird.&lt;br /&gt;
&lt;br /&gt;
Der Editor VIM ist eine weitere Verbesserung von VI und leichter zu bedienen.&lt;br /&gt;
Und unter Ubuntu/Debian mit &amp;quot;apt-get install vim&amp;quot; zu installieren.&lt;br /&gt;
&lt;br /&gt;
===Starten des Editors:===&lt;br /&gt;
&lt;br /&gt;
Der Editorstart erfolgt einfach durch die Eingabe des Kommandos vi mit dem&lt;br /&gt;
Dateinamen der zu editierenden Datei als Parameter.&lt;br /&gt;
Beispiel:        &lt;br /&gt;
 vi sux.txt&lt;br /&gt;
&lt;br /&gt;
===Die Betriebsmodi des vi:===&lt;br /&gt;
&lt;br /&gt;
Ein Umstand, der dem vi den Ruf der komplizierten Bedienbarkeit zugetragen hat,&lt;br /&gt;
sind die unterschiedlichen Betriebsmodi des Editors. Genauer gesagt verfügt der&lt;br /&gt;
vi über drei Betriebsmodi:&lt;br /&gt;
&lt;br /&gt;
====Kommandomodus:====&lt;br /&gt;
&lt;br /&gt;
Innerhalb dieses Modus werden die eingegebenen Zeichen direkt als Befehle des&lt;br /&gt;
Editors interpretiert und ausgeführt. Dabei gibt es weder ein Bereitschaftszeichen&lt;br /&gt;
(Prompt) noch ein Echo (Ausgabe). Der Kommandomodus ist der Modus, in dem&lt;br /&gt;
sich der vi direkt nach seinem Start befindet.&lt;br /&gt;
&lt;br /&gt;
====Zeilenmodus oder Exmodus:====&lt;br /&gt;
&lt;br /&gt;
Dieser Modus ist der einzige Modus mit einem eigenen Bereitschaftszeichen,&lt;br /&gt;
nämlich dem Doppelpunkt (:). Das Prompt wird ebenso wie die Befehlsausgaben&lt;br /&gt;
in der Statuszeile angezeigt.&lt;br /&gt;
&lt;br /&gt;
====Eingabemodus:====&lt;br /&gt;
&lt;br /&gt;
Der Eingabemodus ist derjenige, in welchem der zu bearbeitende Text bearbeitet&lt;br /&gt;
werden kann. Alle hier eingegebenen Zeichen werden als Text für die aktuelle&lt;br /&gt;
Datei interpretiert. Zwischen den unterschiedlichen Modi kann jederzeit&lt;br /&gt;
gewechselt werden. Von Kommandomodus gelangen Sie durch mehere Wege in&lt;br /&gt;
den Eingabemodus. Man kann durch folgende Aktionen wechslen&lt;br /&gt;
&lt;br /&gt;
{| border=1 cellpadding=2&lt;br /&gt;
|i&lt;br /&gt;
|Text vor der aktuellen Cursorposition einfügen&lt;br /&gt;
|-&lt;br /&gt;
|I&lt;br /&gt;
|Text am Zeilenanfang einfügen&lt;br /&gt;
|-&lt;br /&gt;
|a&lt;br /&gt;
|Text hinter der aktuellen Cursorposition einfügen&lt;br /&gt;
|-&lt;br /&gt;
|A&lt;br /&gt;
|Text am Zeilenende einfügen&lt;br /&gt;
|-&lt;br /&gt;
|o&lt;br /&gt;
|Unterhalb der aktuellen Zeile eine neue Zeile einfügen&lt;br /&gt;
|-&lt;br /&gt;
|O&lt;br /&gt;
|Oberhalb der aktuellen Zeile eine neue Zeile einfügen&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Durch das Drücken der ESC - Taste gelangt man in den Kommandomodus zurück.&lt;br /&gt;
&lt;br /&gt;
Im Kommandomodus können Sie durch den Text navigieren und auch den Text&lt;br /&gt;
selbst bearbeiten, z.B ausschneiden, kopieren usw. Dazu sind einige Kommandos&lt;br /&gt;
nötig, von denen die wichtigsten im Folgenden erläutert werden:&lt;br /&gt;
&lt;br /&gt;
 xinux@zero:/$ vi iwas.txt&lt;br /&gt;
&lt;br /&gt;
[[Image:vim.jpg]]&lt;br /&gt;
&lt;br /&gt;
===Benutzen des Kommandomodus===&lt;br /&gt;
====Steuerung des Cursors durch den Text====&lt;br /&gt;
&lt;br /&gt;
Mittels folgender Kommandos bewegt sich der Cursor durch den Text:&lt;br /&gt;
&lt;br /&gt;
{| border=1 cellpadding=2&lt;br /&gt;
|h&lt;br /&gt;
|Cursor ein Zeichen nach links&lt;br /&gt;
|-&lt;br /&gt;
|l&lt;br /&gt;
|Cursor ein Zeichen nach rechts&lt;br /&gt;
|-&lt;br /&gt;
|k&lt;br /&gt;
|Cursor eine Zeile nach oben&lt;br /&gt;
|-&lt;br /&gt;
|j&lt;br /&gt;
|Cursor eine Zeile nach unten&lt;br /&gt;
|-&lt;br /&gt;
|w&lt;br /&gt;
|Cursor ein Wort nach rechts&lt;br /&gt;
|-&lt;br /&gt;
|b&lt;br /&gt;
|Cursor ein Wort nach links&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Alle diese Kommandos können mit einem vorgestellten Wiederholungsfaktor&lt;br /&gt;
arbeiten. Der Befehl 3w verschiebt demnach den Cursor um 3 Wörter nach rechts.&lt;br /&gt;
&lt;br /&gt;
====Angaben zur Positionierung====&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{| border=1 cellpadding=2&lt;br /&gt;
|STRG+U&lt;br /&gt;
|1⁄2 Bildschirmseite nach oben&lt;br /&gt;
|-&lt;br /&gt;
|STRG+D&lt;br /&gt;
|1⁄2 Bildschirmseite nach unten&lt;br /&gt;
|-&lt;br /&gt;
|STRG+B&lt;br /&gt;
|1 Bildschirmseite nach oben&lt;br /&gt;
|-&lt;br /&gt;
|STRG+F&lt;br /&gt;
|1 Bildschirmseite nach unten&lt;br /&gt;
|-&lt;br /&gt;
|/Ausdruck&lt;br /&gt;
|Sucht den Ausdruck (vorwärts) Weitersuchen mit n , N&lt;br /&gt;
|-&lt;br /&gt;
|?Ausdruck&lt;br /&gt;
|Sucht den Ausdurck (rückwärts) Weitersuchen mit n , N&lt;br /&gt;
|-&lt;br /&gt;
|0&lt;br /&gt;
|Zeilenanfang&lt;br /&gt;
|-&lt;br /&gt;
|$&lt;br /&gt;
|Zeilenende&lt;br /&gt;
|-&lt;br /&gt;
|w&lt;br /&gt;
|Nächstes Wort&lt;br /&gt;
|-&lt;br /&gt;
|b&lt;br /&gt;
|Vorheriges Wort&lt;br /&gt;
|-&lt;br /&gt;
|fc&lt;br /&gt;
|Auf das Zeichen c springen. c steht für ein beliebiges Zeichen&lt;br /&gt;
|-&lt;br /&gt;
|G&lt;br /&gt;
|Letzte Zeile der Datei&lt;br /&gt;
|-&lt;br /&gt;
|ng&lt;br /&gt;
|n-te Zeile der Datei&lt;br /&gt;
|-&lt;br /&gt;
|H&lt;br /&gt;
|Anfang der Bildschirmseite&lt;br /&gt;
|-&lt;br /&gt;
|L&lt;br /&gt;
|Ende der Bildschirmseite&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
====Befehle zur Textbearbeitung -&amp;gt; Was soll geschehen====&lt;br /&gt;
&lt;br /&gt;
{| Border=1 Cellpadding=2&lt;br /&gt;
|x&lt;br /&gt;
|Löscht Zeichen&lt;br /&gt;
|-&lt;br /&gt;
|d&lt;br /&gt;
|Löschen und in den Puffer laden&lt;br /&gt;
|-&lt;br /&gt;
|c&lt;br /&gt;
|Ändern&lt;br /&gt;
|-&lt;br /&gt;
|y&lt;br /&gt;
|In den Puffer laden&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
====Weitere wichtige Befehle:====&lt;br /&gt;
&lt;br /&gt;
{| Border=1 Cellpadding=2&lt;br /&gt;
|p&lt;br /&gt;
|Aus dem Puffer einfügen&lt;br /&gt;
|-&lt;br /&gt;
|u&lt;br /&gt;
|Undo, macht den letzten Befehl rückgängig&lt;br /&gt;
|-&lt;br /&gt;
|STRG+R&lt;br /&gt;
|Redo, macht den letzten Undo rückgängig&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
===Zeilen- oder Exmodus===&lt;br /&gt;
&lt;br /&gt;
Wie schon erwähnt wird der Zeilen oder Exmodus durch einen : eingeleitet.&lt;br /&gt;
Es folgen einige Beispiele.&lt;br /&gt;
&lt;br /&gt;
Befehle zum Speichern und Beenden:&lt;br /&gt;
&lt;br /&gt;
 :w          Schreibt Datei&lt;br /&gt;
 :w Datei2   Schreibt eine Kopie in Datei2&lt;br /&gt;
 :w !        Schreibt Datei (übergehe Schreibschutz)&lt;br /&gt;
 :w ! Datei2 Schreibt eine Kopie in Datei2 (übergehe Schreibschutz)&lt;br /&gt;
 :q          Schließe Datei&lt;br /&gt;
 :q!         Schließe Datei (verwerfe Änderungen)&lt;br /&gt;
 :wq         Schreibe Datei und beende Editor&lt;br /&gt;
 :wq!        Schreibe Datei und beende Editor (übergehe Schreibschutz)&lt;br /&gt;
 :q!         Schließe Datei (verwerfe Änderungen)&lt;br /&gt;
 :h          Hilfe anzeigen, durch drücken von :q Beenden der Hilfe&lt;br /&gt;
 :e Datei3   Editiere Datei3&lt;br /&gt;
 :e #        Editere vorhergehende Datei&lt;br /&gt;
 :1,3co9     Kopiere von der ersten bis zu dritten Zeile &lt;br /&gt;
             und füge den Inhalt unterhalb der neunte Zeile ein.&lt;br /&gt;
&lt;br /&gt;
Interaktionen mit Unix:&lt;br /&gt;
&lt;br /&gt;
 :r Datei4   Fügt Inhalt der Datei4 nach dem Cursor ein&lt;br /&gt;
 :r ! Befehl Fügt Ausgabe des Befehls nach dem Cursor ein&lt;br /&gt;
 :! Befehl   Führt den Befehl aus&lt;br /&gt;
 :sh         Starte Subshell -&amp;gt; mit exit kehrt man wieder zurück&lt;br /&gt;
             Eingabemodus zurück&lt;br /&gt;
&lt;br /&gt;
====Ersetzen von Textteilen====&lt;br /&gt;
&lt;br /&gt;
Die grundsätzliche Syntax lautet:&lt;br /&gt;
&lt;br /&gt;
 :[Zeilennummer,Zeilennummer]s/Muster/Ersetzung/[gc]&lt;br /&gt;
&lt;br /&gt;
 :s/worf/kirn/              der erste worf wird in der aktuellen Zeile durch kirn ersetzt&lt;br /&gt;
 :1,9s/worf/kirn/g          von der 1. bis zur 9. Zeile werden alle worf durch kirn ersetzt&lt;br /&gt;
 :1,$s/worf/kirn/           von der ersten bis zur letzten Zeile ersetze ersten worf durch&lt;br /&gt;
                            kirn&lt;br /&gt;
 :.,$s/worf/kirn/g          von der aktuellen bis zur letzten Zeile ersetze alle worf durch&lt;br /&gt;
                            kirn&lt;br /&gt;
 :1,.s/worf/kirn/c          von der 1. bis zur aktuellen Zeile ersetze worf durch kirn, frage&lt;br /&gt;
                            aber nach&lt;br /&gt;
 :1,$s/^worf/kirn/          von der ersten bis zur letzten Zeile ersetze worf am&lt;br /&gt;
                            Zeilenanfang durch kirn&lt;br /&gt;
 :4,$s/worf$/kirn/          von der 4. bis zur letzten Zeile ersetze worf am Zeilenende&lt;br /&gt;
                            durch kirn&lt;br /&gt;
 :1,$s/^#//                 lösche alle Kommentarzeichen&lt;br /&gt;
 :1,$s/^.orf/kirn/           ersetze alles was am Zeilenanfang ein beliebiges Zeichen hat&lt;br /&gt;
                            gefolgt von einem orf durch kirn&lt;br /&gt;
 :1,$s/^[A-Z]orf/kirn/g     suche nach einem Großbuchstaben am Anfang der Zeile&lt;br /&gt;
                            gefolgt von einem orf und ersetze durch kirn&lt;br /&gt;
 :1,$s/^M[ae][iy]e*r/kirn/  suche alles, was am Anfang der Zeile ein großes M enthält,&lt;br /&gt;
                            gefolgt von einem a oder e , gefolgt von einem i oder y ,&lt;br /&gt;
                            gefolgt von einem e , welches 0 oder N mal vorkommen kann,&lt;br /&gt;
                            gefolgt von einem r und ersetze es durch kirn&lt;br /&gt;
&lt;br /&gt;
==Reguläre Ausdrücke==&lt;br /&gt;
&lt;br /&gt;
{| Border=1 Cellpadding=2&lt;br /&gt;
|c&lt;br /&gt;
|Ein einzelner Buchstabe passt auf sich selbst&lt;br /&gt;
|-&lt;br /&gt;
|.&lt;br /&gt;
|Ein Punkt passt auf jedes Zeichen außer auf das Zeilenende&lt;br /&gt;
|-&lt;br /&gt;
|*&lt;br /&gt;
|Das dem Operator * vorangehende Muster kann 0 oder öfter vorkommen&lt;br /&gt;
|-&lt;br /&gt;
|^&lt;br /&gt;
|(Caret) passt auf den Zeilenanfang&lt;br /&gt;
|-&lt;br /&gt;
|$&lt;br /&gt;
|Passt auf das Zeilenende&lt;br /&gt;
|-&lt;br /&gt;
|\&lt;br /&gt;
|Das folgende Sonderzeichen wird entwertet&lt;br /&gt;
|-&lt;br /&gt;
|[...]&lt;br /&gt;
|Passt auf &amp;quot;genau&amp;quot; eins in [...] angebenen Zeichen&lt;br /&gt;
|-&lt;br /&gt;
|[^...]&lt;br /&gt;
|Passt auf &amp;quot;genau&amp;quot; ein Zeichen welches nicht in [...] angebenen ist&lt;br /&gt;
|-&lt;br /&gt;
|\&amp;lt;&lt;br /&gt;
|Passt auf den Wortanfang&lt;br /&gt;
|-&lt;br /&gt;
|\&amp;gt;&lt;br /&gt;
|Passt auf das Wortende&lt;br /&gt;
|-&lt;br /&gt;
|\+&lt;br /&gt;
|Das dem Operator \+ vorangehende Muster kann 1 oder öfter vorkommen&lt;br /&gt;
|-&lt;br /&gt;
|&amp;amp;&lt;br /&gt;
|Setzt das gefunden Suchmuster ein&lt;br /&gt;
|-&lt;br /&gt;
|\(...\)&lt;br /&gt;
|Speichert den Text auf den das Suchmuster passt zur späteren Verwendung&lt;br /&gt;
|-&lt;br /&gt;
|\n&lt;br /&gt;
|Setzt das vorangehende, mit \(...\) Gefundene wieder ein&lt;br /&gt;
|-&lt;br /&gt;
|(...)&lt;br /&gt;
|Gruppiert Auswahlmöglichkeiten&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;nowiki&amp;gt;|&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
|Trennt Auswahlmöglichkeiten&lt;br /&gt;
|-&lt;br /&gt;
|\b&lt;br /&gt;
|Passt auf den Anfang oder das Ende eines Wortes&lt;br /&gt;
|-&lt;br /&gt;
|\B&lt;br /&gt;
|Symbolisiert den Raum innerhalb eines Wortes&lt;br /&gt;
|-&lt;br /&gt;
|\w&lt;br /&gt;
|Passt auf alle alphanumerischen Zeichen [A-Za-z0-9]&lt;br /&gt;
|-&lt;br /&gt;
|\W&lt;br /&gt;
|Passt auf alle nichtalphanumerischen Zeichen [^A-Za-z0-9]&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Die Rangfolge der Operatoren(von der höchsten zur niedrigsten)&lt;br /&gt;
:(, ), ?, *, + | .&lt;br /&gt;
&lt;br /&gt;
Die anderen Operatoren sind mit den anderen Buchstaben gleichrangig.&lt;br /&gt;
&lt;br /&gt;
===Beispiel zum Suchen===&lt;br /&gt;
&lt;br /&gt;
 Suchmuster               Passt auf&lt;br /&gt;
 ^Tuxer                   Tuxer am Zeilenanfang&lt;br /&gt;
 [tT]uxer                 Tuxer oder tuxer&lt;br /&gt;
 80[23]?86                8086, 80286 oder 80386&lt;br /&gt;
&lt;br /&gt;
===grep===&lt;br /&gt;
&lt;br /&gt;
Mit grep ist es möglich, in Dateien nach regulären Ausdrücken zu suchen. Wenn&lt;br /&gt;
eine Übereinstimmung gefunden wird, wird die komplette Zeile auf die&lt;br /&gt;
Standardausgabe geschrieben. grep kann auch von STDIN lesen.Es ist&lt;br /&gt;
empfehlenswert, sich anzugwöhnen ,das Suchmuster in Anführungszeichen zu&lt;br /&gt;
schreiben. Es gibt 3 Arten fgrep = fastgrep , grep und egrep egrep&lt;br /&gt;
&lt;br /&gt;
Beispiel:&lt;br /&gt;
&lt;br /&gt;
 root@zero:~# cat text&lt;br /&gt;
 quatsch&lt;br /&gt;
 quatsch&lt;br /&gt;
 quatsch&lt;br /&gt;
 wichtig&lt;br /&gt;
 quatsch&lt;br /&gt;
 root@zero:~# grep wichtig text&lt;br /&gt;
 wichtig&lt;br /&gt;
 root@zero:~# &lt;br /&gt;
&lt;br /&gt;
 -c                   meldet nur die Gesamtzahl der Fundstellen&lt;br /&gt;
 -v                   zeigt nur Zeilen, die »Ausdruck« nicht enthalten&lt;br /&gt;
 -i                   ignoriert Groß- und Kleinschreibung&lt;br /&gt;
 -l                    meldet nur Dateinamen mit Fundstellen&lt;br /&gt;
 -n                   listet Zeilennummern zu jeder Fundstelle&lt;br /&gt;
 -f                   Dateiname »Dateiname« enthält die Such-Ausdrücke&lt;br /&gt;
 -E                   ist ein erweiterter regulärer Ausdruck (egrep)&lt;br /&gt;
 -F                   (Muster, Ausdruck) ist ein Muster (String) (fgrep)&lt;br /&gt;
 -b                   listet auch die Position der Fundstellen&lt;br /&gt;
 -C    Anzahl         Anzahl von Zeilen werden nach der Fundstelle ausgegeben&lt;br /&gt;
 -B    Anzahl         Anzahl von Zeilen werden vor der Fundstelle ausgegeben&lt;br /&gt;
 -r                   Durchsucht Verzeichnisse rekursiv&lt;br /&gt;
&lt;br /&gt;
==Useridendifikation==&lt;br /&gt;
===/etc/passwd===&lt;br /&gt;
====Beschreibung====&lt;br /&gt;
passwd ist eine ASCII-Datei, die eine Liste der Benutzer des Systems und deren&lt;br /&gt;
Passwörter enthält. Die Passwortdatei sollte für alle Benutzer lesbar sein, was für&lt;br /&gt;
dieVerschlüsselung notwendig ist; aber nur vom Superuser beschreibbar. Wenn&lt;br /&gt;
Sie eine neue Kennung einrichten, lassen Sie das Passwort-Feld in der Datei frei&lt;br /&gt;
und benutzen Sie passwd(1), um dem System ein Passwort für die neue Kennung&lt;br /&gt;
mitzuteilen.&lt;br /&gt;
&lt;br /&gt;
Die Datei /etc/passwd enthält einen Eintrag pro Zeile mit dem Format:&lt;br /&gt;
login_name:passwd:UID:GID:user_name:directory:shell&lt;br /&gt;
====Die Bedeutung der Felder:====&lt;br /&gt;
# login_name Kennung des Benutzers auf dem System.&lt;br /&gt;
# password   Hier steht bei Shadowsystemen ein x. Die Passwörter sind in der Datei /etc/shadow&lt;br /&gt;
# UID        Die numerische Benutzernummer.&lt;br /&gt;
#  GID        Die numerische Gruppennummer des Benutzers.&lt;br /&gt;
# user_name Ein optionales Kommentarfeld, oft benutzt für den vollen Namen des Benutzers und weitere Informationen (Telefon, Raum-Nummer etc.).&lt;br /&gt;
# directory  Das Heimatverzeichnis $HOME des Benutzers.&lt;br /&gt;
# shell      Das Programm, das beim Einloggen gestartet werden soll (falls nicht nötig, benutzen Sie /bin/bash).&lt;br /&gt;
&lt;br /&gt;
===/etc/group===&lt;br /&gt;
====Beschreibung====&lt;br /&gt;
etc/group ist eine ASCII Datei, die Gruppen definiert, zu denen Benutzer&lt;br /&gt;
gehören. Es gibt nur einen Eintrag pro Zeile; jede Zeile hat folgendes Format:&lt;br /&gt;
         GruppenName:Passwort:GruppenKennung:BenutzerListe&lt;br /&gt;
Beschreibung der Felder:&lt;br /&gt;
#     GruppenName      Die Bezeichnung der Gruppe.&lt;br /&gt;
#     Passwort         Das (verschlüsselte) Gruppen-Passwort. Wenn dieses Feld leer ist, wird kein Passwort benötigt.&lt;br /&gt;
#     GruppenKennung Die numerische Identifikation der Gruppe.&lt;br /&gt;
#     BenutzerListe    Alle Namen der Mitglieder, getrennt durch Kommas.&lt;br /&gt;
&lt;br /&gt;
===/etc/shadow===&lt;br /&gt;
====Beschreibung====&lt;br /&gt;
shadow beinhaltet Informationen zu den verschlüsselten Passwörten, zu den&lt;br /&gt;
Benutzerzugängen und weitere Informationen zur Laufzeit der Passwörter.&lt;br /&gt;
 Name:Passwort:Letzte Änderung:Mintage:Maxtage:Warntage:Inaktiv:Ablauf&lt;br /&gt;
#    Der Loginname&lt;br /&gt;
#    verschlüsseltes Passwort &lt;br /&gt;
&amp;lt;nowiki&amp;gt;*&amp;lt;/nowiki&amp;gt; bedeutet Benutzer kann sich nicht einlogen&lt;br /&gt;
! bedeutet Benutzer hat kein Passwort gesetzt&lt;br /&gt;
#    Tage seit dem 1 Januar 1970 an dem das Passwort letztmals geändert wurde&lt;br /&gt;
#    Tage, die das Passwort behalten werden muss, bevor es wieder geändert werden kann&lt;br /&gt;
#     Die Anzahl der Tage, nach denen der Benutzer das Passwort wieder ändern muss&lt;br /&gt;
#    Anzahl der Tage bevor das Passwort abläuft und der Benutzer gewarnt wird&lt;br /&gt;
#    Wenn der Zugang diese Anzahl von Tagen nicht benutzt wird, wird der Zugang gesperrt&lt;br /&gt;
#    Tag seit dem 1 Januar 1970, an dem der Zugang gesperrt wird&lt;br /&gt;
#    Reserviertes Feld&lt;br /&gt;
&lt;br /&gt;
Die Datei sollte aus Sicherheitgründen nicht für einen normalen Benutzer lesbar&lt;br /&gt;
sein.&lt;br /&gt;
&lt;br /&gt;
==Programme zur Userverwaltung==&lt;br /&gt;
===useradd===&lt;br /&gt;
User anlegen&lt;br /&gt;
 root@zero:~# useradd -m -u 1011 -g users -G admin -d /home/erwin -s /bin/bash -c &amp;quot;Erwin Lehman&amp;quot;  erwin&lt;br /&gt;
{| border=1 cellpadding=2&lt;br /&gt;
|&amp;quot;-m&amp;quot;&lt;br /&gt;
|Lege Homedirectory an&lt;br /&gt;
|-&lt;br /&gt;
|&amp;quot;-u 1011&amp;quot;&lt;br /&gt;
|Userid wird zugeordnet&lt;br /&gt;
|-&lt;br /&gt;
|&amp;quot;-g users&amp;quot;&lt;br /&gt;
|Primäre Gruppe wird zugeordnet&lt;br /&gt;
|-&lt;br /&gt;
|&amp;quot;-G admin&amp;quot;&lt;br /&gt;
|Sekunbdäre Gruppe wird zugeordnet&lt;br /&gt;
|-&lt;br /&gt;
|&amp;quot;-d /home/erwin/&amp;quot;&lt;br /&gt;
|Name des Homedirectory&lt;br /&gt;
|-&lt;br /&gt;
|&amp;quot;-s /bin/bash&amp;quot;&lt;br /&gt;
|Bash wird zugeordnet&lt;br /&gt;
|- &lt;br /&gt;
|&amp;quot;-c Erwin Lehman&amp;quot;&lt;br /&gt;
|Kommentarfeld&lt;br /&gt;
|-&lt;br /&gt;
|&amp;quot;erwin&amp;quot; &lt;br /&gt;
|Name des Users&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Defaulteinstellungen anzeigen&lt;br /&gt;
 root@zero:~# useradd -D&lt;br /&gt;
 GROUP=100&lt;br /&gt;
 HOME=/home&lt;br /&gt;
 INACTIVE=-1&lt;br /&gt;
 EXPIRE=&lt;br /&gt;
 SHELL=/bin/sh&lt;br /&gt;
 SKEL=/etc/skel&lt;br /&gt;
 CREATE_MAIL_SPOOL=no&lt;br /&gt;
&lt;br /&gt;
Defaulteinstellungen ändern&lt;br /&gt;
 useradd -D -s /bin/bash&lt;br /&gt;
&lt;br /&gt;
Konfigurationsdatei&lt;br /&gt;
 root@zero:~# cat /etc/default/useradd &lt;br /&gt;
 SHELL=/bin/bash&lt;br /&gt;
 GROUP=100&lt;br /&gt;
 HOME=/home&lt;br /&gt;
 INACTIVE=-1&lt;br /&gt;
 EXPIRE=&lt;br /&gt;
 SKEL=/etc/skel&lt;br /&gt;
 CREATE_MAIL_SPOOL=no&lt;br /&gt;
&lt;br /&gt;
===usermod===&lt;br /&gt;
User modifizieren&lt;br /&gt;
 root@zero:~# usermod -l fritz -s /bin/sh -G admin,video erwin&lt;br /&gt;
{| border=1 cellpadding=2&lt;br /&gt;
|&amp;quot;-l fritz&amp;quot;&lt;br /&gt;
|Neuer Username&lt;br /&gt;
|-&lt;br /&gt;
|&amp;quot;-s /bin/sh&amp;quot;&lt;br /&gt;
|Neue Shell&lt;br /&gt;
|-&lt;br /&gt;
|&amp;quot;-G admin, video&amp;quot;&lt;br /&gt;
|Sekunbdäre Gruppen werden zugeordnet&lt;br /&gt;
|-&lt;br /&gt;
|&amp;quot;erwin&amp;quot; &lt;br /&gt;
|Name des Users&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
===userdel===&lt;br /&gt;
User inklusive Homedirectory löschen&lt;br /&gt;
 root@zero:~# userdel -r fritz&lt;br /&gt;
&lt;br /&gt;
===passwd===&lt;br /&gt;
Rootpasswort ändern&lt;br /&gt;
 root@zero:~# passwd &lt;br /&gt;
 Geben Sie ein neues UNIX Passwort ein:'''sysadm''' &lt;br /&gt;
 Geben Sie das neue UNIX Passwort erneut ein:'''sysadm''' &lt;br /&gt;
 passwd: Passwort erfolgreich geändert&lt;br /&gt;
&lt;br /&gt;
Passwort von tux ändern&lt;br /&gt;
 root@zero:~# passwd tux&lt;br /&gt;
 Geben Sie ein neues UNIX Passwort ein:'''suxer''' &lt;br /&gt;
 Geben Sie das neue UNIX Passwort erneut ein:'''suxer'''&lt;br /&gt;
 passwd: Passwort erfolgreich geändert&lt;br /&gt;
&lt;br /&gt;
Minimale und Maximale Gültigkeit des Passwortes von tux festlegen&lt;br /&gt;
 root@zero:~# passwd -n 5 -x 120 tux&lt;br /&gt;
&lt;br /&gt;
===groupadd===&lt;br /&gt;
 root@zero:~# groupadd -f -g 2001 xinuxer&lt;br /&gt;
{| border=1 cellpadding=2&lt;br /&gt;
|&amp;quot;-f&amp;quot;&lt;br /&gt;
|Überschreibe bestehende Gruppe&lt;br /&gt;
|-&lt;br /&gt;
|&amp;quot;-g 2001&amp;quot;&lt;br /&gt;
|GID der Gruppe&lt;br /&gt;
|-&lt;br /&gt;
|&amp;quot;xinuxer&amp;quot; &lt;br /&gt;
|Name des Gruppe&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==chmod==&lt;br /&gt;
Die Syntax des Befehls chmod lautet:&lt;br /&gt;
&lt;br /&gt;
'''chmod''' WerWieWas [,WerWieWas,.....] Dateiliste&lt;br /&gt;
&lt;br /&gt;
oder&lt;br /&gt;
&lt;br /&gt;
'''chmod''' Oktalzahl Dateiliste&lt;br /&gt;
&lt;br /&gt;
Durch WerWieWas bzw. Oktalzahl wird die Rechtetabelle definiert. Innerhalb von&lt;br /&gt;
WerWieWas darf es kein Leerzeichen geben. Wer bezeichnet den Benutzerkreis,&lt;br /&gt;
dem man Rechte gibt, Wie die Art, in der die Rechte gegeben werden und Was die&lt;br /&gt;
Rechte als solche. Im einzelnen können folgende Kürzel benutzt werden:&lt;br /&gt;
&lt;br /&gt;
Für Wer kann eines der folgenden Kürzel oder eine Kombination davon stehen:&lt;br /&gt;
 u                   (user) Rechte für den Dateibesitzer&lt;br /&gt;
 g                   (group) Rechte für die Gruppe&lt;br /&gt;
 o                   (others) Rechte für alle anderen Benutzer&lt;br /&gt;
 a                   (all) Rechte für alle Benutzer&lt;br /&gt;
Für Wie steht eines der folgenden Kürzel:&lt;br /&gt;
 +                   Die Rechte werden zu den vorhandenen zusätzlich vergeben&lt;br /&gt;
 -                   Die im Folgenden genannten Rechte werden entzogen&lt;br /&gt;
 =                   Die im Folgenden genannten Rechte ersetzen die bisherigen&lt;br /&gt;
Für Was steht eines der folgenden Kürzel:&lt;br /&gt;
 r                   (read) lesen&lt;br /&gt;
 w                   (write) schreiben&lt;br /&gt;
 x                   (execute) ausführen&lt;br /&gt;
oder diese Sonderformen&lt;br /&gt;
 s                   (usersbit) Programm läuft unter der UID des Besitzers&lt;br /&gt;
 s                   (groupsbit)Programm läuft unter der GID des GRUPPE&lt;br /&gt;
 t                   (stickybit) Dateien im Verzeichnis darf nur Besitzer löschen&lt;br /&gt;
&lt;br /&gt;
===Beispiel===&lt;br /&gt;
Setze für alle Schreib- und Leserecht&lt;br /&gt;
 xinux@zero:~$ chmod a=rw test &lt;br /&gt;
 xinux@zero:~$ ls -l test &lt;br /&gt;
 -rw-rw-rw- 1 xinux xinux 0 2009-06-16 12:01 test&lt;br /&gt;
 xinux@zero:~$ &lt;br /&gt;
&lt;br /&gt;
Erteile Besitzer Ausführungsrecht&lt;br /&gt;
 xinux@zero:~$ chmod u+x test ; ls -l test &lt;br /&gt;
 -rwxrw-rw- 1 xinux xinux 0 2009-06-16 12:01 test&lt;br /&gt;
 xinux@zero:~$ &lt;br /&gt;
&lt;br /&gt;
===chmod oktale Schreibweise===&lt;br /&gt;
 Specialrights        User           Group         Other&lt;br /&gt;
 usbit gsbit sticky    r    w   x     r   w   x     r   w   x&lt;br /&gt;
   1     1      1      1    1   1     1   1   1     1   1   1&lt;br /&gt;
   0     0      0      0    0   0     0   0   0     0   0   0&lt;br /&gt;
 Oktale Wertigkeit pro Recht&lt;br /&gt;
   4     2       1     4    2   1     4   2   1     4   2   1&lt;br /&gt;
&lt;br /&gt;
===Beispiele===&lt;br /&gt;
 xinux@zero:~$ chmod 751 test ; ls -l test&lt;br /&gt;
 -rwxr-x--x 1 xinux xinux 0 2009-06-16 12:01 test&lt;br /&gt;
 xinux@zero:~$ &lt;br /&gt;
&lt;br /&gt;
 xinux@zero:~$ chmod 4770 test ; ls -l test&lt;br /&gt;
 -rwsrwx--- 1 xinux xinux 0 2009-06-16 12:01 test&lt;br /&gt;
 xinux@zero:~$ &lt;br /&gt;
&lt;br /&gt;
 xinux@zero:~$ chmod 0 test ; ls -l test &lt;br /&gt;
 ---------- 1 xinux xinux 0 2009-06-16 12:01 test&lt;br /&gt;
&lt;br /&gt;
===chmod Optionen===&lt;br /&gt;
 -c   (changes) es werden nur die Dateien angezeigt, deren Zugriffsrechte tatsächlich verändert werden&lt;br /&gt;
 -f   (silent, quiet) Fehlermeldungen wegen fehlgeschlagener Änderungsversuche werden unterdrückt&lt;br /&gt;
 -v   (verbose) alle Aktionen werden angezeigt&lt;br /&gt;
 -R   (recursive) die Zugriffsrechte aller Dateien in den Unterverzeichnissen werden ebenfalls geändert&lt;br /&gt;
&lt;br /&gt;
Theoretisch sind alle Kombinationen der Zugriffsrechte denkbar, aber der&lt;br /&gt;
Eigentümer einer Datei darf diese immer lesen, selbst wenn das Lesebit nicht&lt;br /&gt;
gesetzt ist. Genauso macht es wenig Sinn, eine gewöhnliche Textdatei als&lt;br /&gt;
ausführbar zu setzen; die Shell wird damit nichts anfangen können. Ein x für ein&lt;br /&gt;
Verzeichnis gibt an, dass in dieses gewechselt werden kann.&lt;br /&gt;
&lt;br /&gt;
Rechte sind verbindlich&lt;br /&gt;
&lt;br /&gt;
Interessant ist auch ein Konstrukt folgender Art&lt;br /&gt;
 -rwx---rwx&lt;br /&gt;
&lt;br /&gt;
das angibt, dass mit der Datei alles angestellt werden kann, außer durch Nutzer der&lt;br /&gt;
Gruppe. Versucht irgend jemand, der nicht der Gruppe des Eigentümers angehört,&lt;br /&gt;
die Datei zu modifizieren, wird ihm dies gelingen, einem Gruppenmitglied bleibt&lt;br /&gt;
dies versagt, obwohl er ja gleichzeitig ein &amp;quot;Anderer&amp;quot; ist. D.h. die Rechte der&lt;br /&gt;
Gruppe sind verbindlicher, als die Rechte der anderen!&lt;br /&gt;
&lt;br /&gt;
===Bedeutungen der Zugriffsarten===&lt;br /&gt;
====Dateien====&lt;br /&gt;
* r: Der Inhalt der Datei kann gelesen und damit auch kopiert werden. &lt;br /&gt;
 root@zero:~# cat test&lt;br /&gt;
 Dies ist eine Testdatei&lt;br /&gt;
  &lt;br /&gt;
 root@zero:~# cp test backup&lt;br /&gt;
&lt;br /&gt;
* w: Der Inhalt der Datei darf verändert werden. Ob die Datei gelöscht werden kann ist&lt;br /&gt;
keine Eigenschaft der Datei, sondern des Verzeichnisses, indem sich die Datei befindet.&lt;br /&gt;
 root@zero:~# cat &amp;gt; test&lt;br /&gt;
 Hier steht jetzt was anderes&lt;br /&gt;
 ^C&lt;br /&gt;
 root@zero:~# cat test&lt;br /&gt;
 Hier steht jetzt was anderes&lt;br /&gt;
  &lt;br /&gt;
 xinux@zero:~$ ls -ld verzeichnis/&lt;br /&gt;
 dr-xr-xr-x 2 xinux xinux 4096 2009-06-18 11:16 verzeichnis/&lt;br /&gt;
 xinux@zero:~/verzeichnis$ rm text&lt;br /&gt;
 rm: Entfernen von „text“ nicht möglich: Permission denied&lt;br /&gt;
&lt;br /&gt;
* x: Ausführrecht für Programme und Skripte&lt;br /&gt;
 xinux@zero:~$ ./programm&lt;br /&gt;
 -bash: ./programm: Permission denied&lt;br /&gt;
 xinux@zero:~$ chmod +x programm&lt;br /&gt;
 xinux@zero:~$ ./programm&lt;br /&gt;
 Test&lt;br /&gt;
  test&lt;br /&gt;
&lt;br /&gt;
====Verzeichnisse====&lt;br /&gt;
* r: Die Einträge in dem Verzeichnis sind lesbar.&lt;br /&gt;
Leserecht von verzeichnis/ entziehen&lt;br /&gt;
 xinux@zero:~$ chmod a-r verzeichnis/&lt;br /&gt;
 xinux@zero:~$ ls verzeichnis/&lt;br /&gt;
 ls: Öffnen von Verzeichnis verzeichnis/ nicht möglich: Permission denied&lt;br /&gt;
Leserecht für Benutzer und Gruppe vergeben&lt;br /&gt;
 xinux@zero:~$ chmod a+r verzeichnis/&lt;br /&gt;
 xinux@zero:~$ ls verzeichnis/&lt;br /&gt;
 text&lt;br /&gt;
&lt;br /&gt;
* w: Die Einträge in dem Verzeichnis können geändert werden. &lt;br /&gt;
Neue Datei erstellen&lt;br /&gt;
 xinux@zero:~$ touch neu&lt;br /&gt;
 xinux@zero:~$ ls neu&lt;br /&gt;
 neu&lt;br /&gt;
&lt;br /&gt;
Datei löschen&lt;br /&gt;
 xinux@zero:~$ rm neu&lt;br /&gt;
 xinux@zero:~$ ls neu&lt;br /&gt;
 ls: Zugriff auf neu nicht möglich: No such file or directory&lt;br /&gt;
&lt;br /&gt;
* x: Der Name des Verzeichnisses kann in einem Pfadnamen erscheinen.&lt;br /&gt;
Verzeichnis ohne x Recht&lt;br /&gt;
 xinux@zero:~$ chmod a-x verzeichnis/&lt;br /&gt;
Wechseln in Verzeichnis mangels x-Recht nicht möglich&lt;br /&gt;
 xinux@zero:~$ cd verzeichnis/&lt;br /&gt;
 -bash: cd: verzeichnis/: Permission denied&lt;br /&gt;
x-Recht vergeben&lt;br /&gt;
 xinux@zero:~$ chmod a+x verzeichnis/&lt;br /&gt;
damit Wechsel in Verzeichnis möglich&lt;br /&gt;
 xinux@zero:~$ cd verzeichnis/&lt;br /&gt;
 xinux@zero:~/verzeichnis$ pwd&lt;br /&gt;
 /home/xinux/verzeichnis&lt;br /&gt;
&lt;br /&gt;
====umask====&lt;br /&gt;
Neue Dateien und Verzeichnisse werden mit ein und denselben Zufriffsrechten erzeugt.&lt;br /&gt;
 xinux@zero:~$ mkdir text&lt;br /&gt;
 xinux@zero:~$ touch textdat&lt;br /&gt;
 xinux@zero:~$ ls -ld text*&lt;br /&gt;
 drwxr-xr-x 2 xinux xinux 4096 2009-06-18 11:37 text&lt;br /&gt;
 -rw-r--r-- 1 xinux xinux    0 2009-06-18 11:37 textdat&lt;br /&gt;
&lt;br /&gt;
Zuständig für dieses Verhalten ist die sogenannte umask, die oft in der Datei&lt;br /&gt;
/etc/profile auf den Wert 022 voreingestellt ist. Zusätzlich wird noch eine&lt;br /&gt;
Maximalmaske benötigt, die sich für Verzeichnisse und andere Dateien&lt;br /&gt;
unterscheidet. Die bei der Erzeugung gesetzten Rechte entstehen nun, indem von&lt;br /&gt;
der Maximalmaske der durch die umask vorgegebene Wert subtrahiert wird:&lt;br /&gt;
&lt;br /&gt;
{| border=1 cellpadding=2&lt;br /&gt;
!&lt;br /&gt;
! Dateien&lt;br /&gt;
! Verzeichnisse&lt;br /&gt;
|-&lt;br /&gt;
| Systemvorgabe&lt;br /&gt;
| 666&lt;br /&gt;
| 777&lt;br /&gt;
|-&lt;br /&gt;
| -umask&lt;br /&gt;
| 022&lt;br /&gt;
| 022&lt;br /&gt;
|-&lt;br /&gt;
| Ergebnis&lt;br /&gt;
| 644&lt;br /&gt;
| 755&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
 xinux@zero:~$ grep umask /etc/profile&lt;br /&gt;
 umask 022&lt;br /&gt;
&lt;br /&gt;
==Gruppenzugehörigkeit==&lt;br /&gt;
===newgrp===&lt;br /&gt;
Ändert die Gruppenzugehörigkeit eines Benutzers auf die angegebene Gruppe. Wenn keine Gruppe angegeben wird, wird die &lt;br /&gt;
Anmeldegruppe des Benutzers verwendet. Die neue Gruppe wird anschließend fü Zugriffskontrollen verwendet.&lt;br /&gt;
&lt;br /&gt;
 newgrp Gruppenname&lt;br /&gt;
&lt;br /&gt;
 root@zero:~# newgrp hacker&lt;br /&gt;
 root@zero:~# id&lt;br /&gt;
 uid=0(root) gid=1006(hacker) Gruppen=0(root),1006(hacker)&lt;br /&gt;
&lt;br /&gt;
===chgrp===&lt;br /&gt;
Verändert die Besitzugehörigkeit zu der angegebenen Gruppe&lt;br /&gt;
&lt;br /&gt;
 chgrp [Optionen] Gruppe Datei(en)&lt;br /&gt;
&lt;br /&gt;
Optionen:&lt;br /&gt;
 -c Zeigt Veränderungen an&lt;br /&gt;
 -f Unterdrückt die meisten Fehlermeldungen&lt;br /&gt;
 -R Verändert Dateien und Verzeichnisse rekursiv&lt;br /&gt;
 -v Gibt geschwätzige Ausgabe aus.&lt;br /&gt;
&lt;br /&gt;
 root@zero:~# ls -l&lt;br /&gt;
 ...&lt;br /&gt;
 d-wx--x--x  3 root root 4096 2009-06-18 13:34 verzeichnis&lt;br /&gt;
 &lt;br /&gt;
 root@zero:~# chgrp -R xinux verzeichnis/&lt;br /&gt;
 root@zero:~# ls -l&lt;br /&gt;
 ...&lt;br /&gt;
 d-wx--x--x  3 root xinux 4096 2009-06-18 13:34 verzeichnis&lt;br /&gt;
&lt;br /&gt;
 xinux@zero:~$ cd /root/verzeichnis/&lt;br /&gt;
 xinux@zero:/root/verzeichnis$ pwd&lt;br /&gt;
 /root/verzeichnis&lt;br /&gt;
&lt;br /&gt;
===chown===&lt;br /&gt;
Ändert den Eigentümer von einer oder mehreren Dateien in den angegebenen Benutzer. &lt;br /&gt;
chown erlaubt ebenfalls das Ändern der Gruppeneigentümreschaft. Nur der aktuelle Eigentümer einer&lt;br /&gt;
Datei oder der Superuser (root) darf die Eigentumsverhältnisse ändern.&lt;br /&gt;
&lt;br /&gt;
 chown [Optionen] Benutzer(:Gruppe) Dateien&lt;br /&gt;
&lt;br /&gt;
Optionen:&lt;br /&gt;
 -c Gibt Informationen über die veränderten Dateien aus&lt;br /&gt;
 --dereference Symbolischen Links folgen&lt;br /&gt;
 -v Gibt Informationen über alle Dateien aus, die chown zu ändern versucht, egal, ob die Änderung erfolgt ist oder nicht&lt;br /&gt;
 -R Geht rekursiv durch alle Unterverzeichnisse und führt die Änderungen durch. &lt;br /&gt;
&lt;br /&gt;
 root@zero:~# chown -R xinux.xinux verzeichnis/&lt;br /&gt;
 root@zero:~# ls -l&lt;br /&gt;
 insgesamt 12&lt;br /&gt;
 drwx------ 13 root  root  4096 2009-04-21 15:11 profile&lt;br /&gt;
 --w-------  1 root  root     0 2009-06-18 11:13 test&lt;br /&gt;
 -rw-r--r--  1 root  root    40 2009-06-18 12:04 text&lt;br /&gt;
 drwxrwx--x  3 xinux xinux 4096 2009-06-18 13:39 verzeichnis&lt;br /&gt;
 &lt;br /&gt;
 root@zero:~# chown -R -c xinux.xinux verzeichnis/&lt;br /&gt;
 &lt;br /&gt;
 root@zero:~# chown -R -v xinux.xinux verzeichnis/&lt;br /&gt;
 Eigentümer von „verzeichnis/01“ als xinux:xinux erhalten&lt;br /&gt;
 Eigentümer von „verzeichnis/test“ als xinux:xinux erhalten&lt;br /&gt;
 Eigentümer von „verzeichnis/“ als xinux:xinux erhalten&lt;br /&gt;
&lt;br /&gt;
==Eingabe/Ausgabe==&lt;br /&gt;
Standardeingabe (0): Laufende Programme erwarten von hier ihre Eingaben (normalerweise handelt es sich um die Tastatur).&lt;br /&gt;
&lt;br /&gt;
Standardausgabe (1): Programme schreiben auf diese ihre Ausgaben (Bildschirm).&lt;br /&gt;
&lt;br /&gt;
Standardfehlerausgabe (2) : Fehlerausgaben landen hier (Bildschirm, aber nur die aktive Konsole).&lt;br /&gt;
&lt;br /&gt;
[[Bild:std.jpg]]&lt;br /&gt;
&lt;br /&gt;
===cat===&lt;br /&gt;
Das Programm cat liest von STDIN und gibt es STDOUT wieder aus&lt;br /&gt;
&lt;br /&gt;
Einlesen der Datei text&lt;br /&gt;
 root@zero:~# cat &amp;lt; text&lt;br /&gt;
 wichtig&lt;br /&gt;
&lt;br /&gt;
Schreiben in die Datei text, dies überschreibt den bisherigen Inhalt der Datei&lt;br /&gt;
 root@zero:~# cat &amp;gt; text&lt;br /&gt;
 sogar noch wichtiger &lt;br /&gt;
 &lt;br /&gt;
Ausgeben der Datei text&lt;br /&gt;
 root@zero:~# cat text &lt;br /&gt;
 sogar noch wichtiger&lt;br /&gt;
&lt;br /&gt;
Lesen aus der Datei text und schreiben in die Datei neuertext&lt;br /&gt;
 root@zero:~# cat &amp;lt; text &amp;gt; neuertext&lt;br /&gt;
 root@zero:~# cat neuertext&lt;br /&gt;
 sogar noch wichtiger&lt;br /&gt;
&lt;br /&gt;
Anhängen der Ausgabe von date an die Datei neuertext&lt;br /&gt;
 root@zero:~# date &amp;gt;&amp;gt; neuertext&lt;br /&gt;
 root@zero:~# cat neuertext&lt;br /&gt;
 sogar noch wichtiger&lt;br /&gt;
 Do 18. Jun 14:08:58 CEST 2009&lt;br /&gt;
&lt;br /&gt;
Umleiten des Standardfehlerkanals nach error&lt;br /&gt;
 root@zero:~# rm sux 2&amp;gt; error&lt;br /&gt;
 root@zero:~# more error&lt;br /&gt;
 rm: Entfernen von „sux“ nicht möglich: No such file or directory&lt;br /&gt;
&lt;br /&gt;
===Umleitungen===&lt;br /&gt;
Nacheinander auszuführende Kommandos&lt;br /&gt;
 root@zero:~# pwd; date&lt;br /&gt;
 /root&lt;br /&gt;
 Do 18. Jun 14:13:05 CEST 2009&lt;br /&gt;
 &lt;br /&gt;
Übergeben der Ausgabe von tail als Eingabe von grep mit Hilfe der Pipe &amp;quot;|&amp;quot;&lt;br /&gt;
 root@zero:~# tail /var/log/auth.log | grep xinux&lt;br /&gt;
 Jun 18 13:52:33 zero nss_wins[11433]: pam_unix(login:session): session closed for user xinux&lt;br /&gt;
&lt;br /&gt;
Übergeben der letzten 100 Zeilen von syslog als Eingabe von grep&lt;br /&gt;
 root@zero:~# tail /var/log/syslog -n 100 | grep error&lt;br /&gt;
 Jun 18 09:30:54 zero kernel: [154384.692135] end_request: I/O error, dev fd0, sector 0&lt;br /&gt;
 Jun 18 09:30:54 zero kernel: [154384.712137] end_request: I/O error, dev fd0, sector 0&lt;br /&gt;
&lt;br /&gt;
==tr==&lt;br /&gt;
tr ist ein Programm um Zeichen zu übersetzen. Dies betrifft nur die Ausgabe, die Datei selbst bleibt unverändert.&lt;br /&gt;
&lt;br /&gt;
Ersetzt Kleinbuchstaben durch Großbuchstaben aus der Datei text&lt;br /&gt;
 root@zero:~# tr &amp;quot;a-z&amp;quot; &amp;quot;A-Z&amp;quot; &amp;lt; text&lt;br /&gt;
 SOGAR NOCH WICHTIGER&lt;br /&gt;
 123&lt;br /&gt;
 34&lt;br /&gt;
 4711&lt;br /&gt;
 TEST&lt;br /&gt;
&lt;br /&gt;
Ersetzt alle Zahlen durch X&lt;br /&gt;
 root@zero:~# tr &amp;quot;0-9&amp;quot; &amp;quot;X&amp;quot; &amp;lt; text&lt;br /&gt;
 sogar noch wichtiger&lt;br /&gt;
 XXX&lt;br /&gt;
 XX&lt;br /&gt;
 XXXX&lt;br /&gt;
 test&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
 root@zero:~# cat &amp;gt; test&lt;br /&gt;
 +++++&lt;br /&gt;
 ###&lt;br /&gt;
 1111&lt;br /&gt;
&lt;br /&gt;
-s löscht mehrfach kommende Zeichen&lt;br /&gt;
 root@zero:~# tr '''-s''' &amp;quot;+&amp;quot; &amp;lt; test&lt;br /&gt;
 +&lt;br /&gt;
 ###&lt;br /&gt;
 1111&lt;br /&gt;
&lt;br /&gt;
-d löscht vorkommende Zeichen &lt;br /&gt;
 root@zero:~# tr '''-d''' &amp;quot;#&amp;quot; &amp;lt; test&lt;br /&gt;
 +++++ &lt;br /&gt;
 &lt;br /&gt;
 1111&lt;br /&gt;
&lt;br /&gt;
==cut==&lt;br /&gt;
Spalten aus einer Datei schneiden. Dies betrifft nur die Ausgabe, die Datei selbst bleibt unverändert.&lt;br /&gt;
 &lt;br /&gt;
Schneidet die erste Spalte aus, der Delimiter ist : &lt;br /&gt;
 root@zero:~# cut -f 1 -d : /etc/passwd&lt;br /&gt;
 root&lt;br /&gt;
 daemon&lt;br /&gt;
 bin&lt;br /&gt;
 ...&lt;br /&gt;
 xinux&lt;br /&gt;
&lt;br /&gt;
 root@zero:~# more test&lt;br /&gt;
 1234#5678#9999&lt;br /&gt;
 &lt;br /&gt;
Schneidet die zweite Spalte aus, der Delimiter ist #&lt;br /&gt;
 root@zero:~# cut -f 2 -d &amp;quot;#&amp;quot; &amp;lt; test&lt;br /&gt;
 5678&lt;br /&gt;
&lt;br /&gt;
Schneidet bis zum 3 Zeichen ab&lt;br /&gt;
 root@zero:~$ echo S01policykit | cut -c 4-&lt;br /&gt;
 policykit&lt;br /&gt;
&lt;br /&gt;
==expand==&lt;br /&gt;
Ersetzt Tabulatorzeichen durch Folgen von Leerzeichen und schreibt das Ergebnis auf die Standardausgabe&lt;br /&gt;
 root@zero:~# expand /etc/samba/smb.conf&lt;br /&gt;
 ...&lt;br /&gt;
&lt;br /&gt;
==fmt==&lt;br /&gt;
#Setzt den Text der Dateien im Blocksatz der angegebenen Breite durch Auffüllen von Zeilen und Entfernen von Zeilenwechseln.&lt;br /&gt;
Standardgemäß werden Leerzeilen, die Position von Leerzeichen und der Einzug am Zeilenanfang erhalten. fmt versucht, &lt;br /&gt;
Zeilenumbrüche an Satzenden durchzuführen sowie sie nach dem ersten oder vor dem letzten Wort eines Satzes zu vermeiden. &lt;br /&gt;
 &lt;br /&gt;
 fmt [Optionen] [Dateien]&lt;br /&gt;
&lt;br /&gt;
Optionen&lt;br /&gt;
&lt;br /&gt;
* -p ''Präfix'': Formatiert nur Zeilen, die mit ''Präfix'' anfangen&lt;br /&gt;
 root@zero:/tmp# fmt -p '#' text&lt;br /&gt;
 #Setzt den Text der Dateien im Blocksatz der angegebenen Breite durch&lt;br /&gt;
 #Auffüllen von Zeilen und Entfernen von Zeilenwechseln.  Standardgemäß&lt;br /&gt;
 #werden Leerzeilen, die Position von Leerzeichen und der Einzug am&lt;br /&gt;
 #Zeilenanfang erhalten. fmt versucht,&lt;br /&gt;
 Zeilenumbrüche an Satzenden durchzuführen sowie sie nach dem ersten oder vor dem letzten Wort eines Satzes zu vermeiden.&lt;br /&gt;
&lt;br /&gt;
* -u : Erzwingt genau ein Leerzeichen zwischen Wörtern und zwei Leerzeichen zwischen Sätzen&lt;br /&gt;
&lt;br /&gt;
* -w ''Breite'': Setzt die Ausgabebreite auf ''Breite''&lt;br /&gt;
 root@zero:/tmp# fmt -w 30 text&lt;br /&gt;
 #Setzt den Text der Dateien&lt;br /&gt;
 im Blocksatz der angegebenen&lt;br /&gt;
 Breite durch Auffüllen&lt;br /&gt;
 von Zeilen und Entfernen&lt;br /&gt;
 von Zeilenwechseln.&lt;br /&gt;
 #Standardgemäß werden&lt;br /&gt;
 Leerzeilen, die Position von&lt;br /&gt;
 Leerzeichen und der Einzug am&lt;br /&gt;
 Zeilenanfang erhalten. fmt&lt;br /&gt;
 versucht, Zeilenumbrüche&lt;br /&gt;
 an Satzenden durchzuführen&lt;br /&gt;
 sowie sie nach dem ersten&lt;br /&gt;
 oder vor dem letzten Wort&lt;br /&gt;
 eines Satzes zu vermeiden.&lt;br /&gt;
&lt;br /&gt;
==join==&lt;br /&gt;
Führt die Zeilen zweier sortierter Dateien anhand von '''Übereinstimmungen''' in einem gemeinsamen Feld zusammen.&lt;br /&gt;
&lt;br /&gt;
 root@zero:~# more name&lt;br /&gt;
 1. karl&lt;br /&gt;
 2. heinz&lt;br /&gt;
 3. hans&lt;br /&gt;
 4. otto&lt;br /&gt;
 root@zero:~# more tel&lt;br /&gt;
 1. 1234&lt;br /&gt;
 2. 4321&lt;br /&gt;
 3. 222&lt;br /&gt;
 4. 121212&lt;br /&gt;
 root@zero:~# join name tel &amp;gt; telefonbuch&lt;br /&gt;
 root@zero:~# more telefonbuch&lt;br /&gt;
 1. karl 1234&lt;br /&gt;
 2. heinz 4321&lt;br /&gt;
 3. hans 222&lt;br /&gt;
 4. otto 121212&lt;br /&gt;
&lt;br /&gt;
 root@zero:~# join -t : /etc/passwd /etc/shadow&lt;br /&gt;
 ....&lt;br /&gt;
 daemon:x:1:1:daemon:/usr/sbin:/bin/sh:*:14181:0:99999:7:::&lt;br /&gt;
 bin:x:2:2:bin:/bin:/bin/sh:*:14181:0:99999:7:::&lt;br /&gt;
 sys:x:3:3:sys:/dev:/bin/sh:*:14181:0:99999:7:::&lt;br /&gt;
 sync:x:4:65534:sync:/bin:/bin/sync:*:14181:0:99999:7:::&lt;br /&gt;
 ...&lt;br /&gt;
&lt;br /&gt;
join in dat1 nach Feld 3 und in dat2 nach Feld 2&lt;br /&gt;
 thomas@lydia:~$ cat dat1 &lt;br /&gt;
 hugo:ps:1111&lt;br /&gt;
 erwin:zw:2222&lt;br /&gt;
 karl:sb:3333&lt;br /&gt;
 rudi:kl:4444&lt;br /&gt;
 thomas@lydia:~$ cat dat2&lt;br /&gt;
 blau:1111:svn&lt;br /&gt;
 grün:2222:fcs&lt;br /&gt;
 gelb:3333:fch&lt;br /&gt;
 rot:4444:fck&lt;br /&gt;
 thomas@lydia:~$ join -t : -1 3 -2 2 dat1 dat2 &lt;br /&gt;
 1111:hugo:ps:blau:svn&lt;br /&gt;
 2222:erwin:zw:grün:fcs&lt;br /&gt;
 3333:karl:sb:gelb:fch&lt;br /&gt;
 4444:rudi:kl:rot:fck&lt;br /&gt;
&lt;br /&gt;
==nl==&lt;br /&gt;
Nummeriert die Zeilen in einer Datei.&lt;br /&gt;
&lt;br /&gt;
 root@zero:~# nl /etc/passwd                                                   &lt;br /&gt;
     1  root:x:0:0:root:/root:/bin/bash                                       &lt;br /&gt;
     2  daemon:x:1:1:daemon:/usr/sbin:/bin/sh                                 &lt;br /&gt;
     3  bin:x:2:2:bin:/bin:/bin/sh                                            &lt;br /&gt;
     4  sys:x:3:3:sys:/dev:/bin/sh                                            &lt;br /&gt;
     5  sync:x:4:65534:sync:/bin:/bin/sync&lt;br /&gt;
     ...&lt;br /&gt;
Nummereriet mit führenden Nullen der Separatir ist ein :&lt;br /&gt;
 root@zero:~# nl -s : -n rz dat1&lt;br /&gt;
&lt;br /&gt;
==od==&lt;br /&gt;
Gibt Dateien im Oktal und anderen Formaten aus.&lt;br /&gt;
&lt;br /&gt;
 od [Optionen] Datei&lt;br /&gt;
&lt;br /&gt;
* -j ''Bytes'': Überspringt die Anzahl ''Bytes'' einer Datei&lt;br /&gt;
* -N ''Bytes'': Gibt nur die Anzahl ''Bytes'' aus&lt;br /&gt;
* -c : Gebe ASCII Zeichen aus&lt;br /&gt;
* -f : Gebe Fließkommazahlen aus&lt;br /&gt;
* -i : Gebe Dezimal Integer aus&lt;br /&gt;
* -l : Gebe Dezimal Long aus&lt;br /&gt;
* -o : Gebe Oktal 2 Byte Einheiten aus&lt;br /&gt;
* -s : Gebe Dezimal 2 Byte Einheiten aus&lt;br /&gt;
* -x : Gebe Hexadezimale 2 Byte einheiten aus&lt;br /&gt;
&lt;br /&gt;
Beispiele&lt;br /&gt;
&lt;br /&gt;
Gebe Master Boot Record (die ersten 512 Byte der Festplatte /dev/sda) als Hexadezimal aus&lt;br /&gt;
 root@zero:~# od '''-x -N''' 512 /dev/sda&lt;br /&gt;
 0000000 48eb 1090 d08e 00bc b8b0 0000 d88e c08e&lt;br /&gt;
 0000020 befb 7c00 00bf b906 0200 a4f3 21ea 0006&lt;br /&gt;
 0000040 be00 07be 0438 0b75 c683 8110 fefe 7507&lt;br /&gt;
 0000060 ebf3 b416 b002 bb01 7c00 80b2 748a 0203&lt;br /&gt;
 0000100 00ff 2000 0001 0000 0200 90fa f690 80c2&lt;br /&gt;
 ...&lt;br /&gt;
&lt;br /&gt;
Schreibe &amp;quot;suxer&amp;quot; in die Datei test&lt;br /&gt;
 root@zero:~# echo &amp;quot;suxer&amp;quot; &amp;gt; test&lt;br /&gt;
Ausgabe Hexadezimal&lt;br /&gt;
 root@zero:~# od -x test&lt;br /&gt;
 0000000 7573 6578 0a72&lt;br /&gt;
 0000006&lt;br /&gt;
&lt;br /&gt;
Ausgabe ASCII Zeichen&lt;br /&gt;
 root@zero:~# od -c test&lt;br /&gt;
 0000000   s   u   x   e   r  \n&lt;br /&gt;
 0000006&lt;br /&gt;
&lt;br /&gt;
==paste==&lt;br /&gt;
Fügt die Zeilen von zwei oder mehr Dateien horizontal zusammen&lt;br /&gt;
 root@zero:~# paste name tel&lt;br /&gt;
 1. karl 1. 1234&lt;br /&gt;
 2. heinz        2. 4321&lt;br /&gt;
 3. hans 3. 222&lt;br /&gt;
 4. otto 4. 121212&lt;br /&gt;
&lt;br /&gt;
==pr==&lt;br /&gt;
Bereitet Textdateien zum Drucken vor.&lt;br /&gt;
&lt;br /&gt;
 root@zero:~# echo &amp;quot;Plan für heute&amp;quot; &amp;gt; dokument&lt;br /&gt;
 root@zero:~# more dokument&lt;br /&gt;
 Plan für heute&lt;br /&gt;
 root@zero:~# pr dokument   &lt;br /&gt;
  &lt;br /&gt;
 &lt;br /&gt;
 2009-06-19 12:44                    dokument                     Seite 1&lt;br /&gt;
 &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
 Plan für heute&lt;br /&gt;
&lt;br /&gt;
Anmerkung Ausmaße der Bildschirmausgabe wie eine Druckseite.&lt;br /&gt;
&lt;br /&gt;
==sed==&lt;br /&gt;
streaming editor. Mit sed ist es möglich, den Inhalt einer Datei automatisch (nicht interaktiv) zu&lt;br /&gt;
bearbeiten. Wie unter Linux üblich, wird auch hier der Text nicht wirklich verändert sondern die &lt;br /&gt;
Änderung erfolgt über die Standardausgabe, die wieder umgeleitet werden kann. Die Syntax ist ähnlich &lt;br /&gt;
des ex modus von vi. Reguläre Ausdrücke können nach Belieben benutzt werden. &lt;br /&gt;
&lt;br /&gt;
Optionen:&lt;br /&gt;
 -e Zeichenkette  wendet die Editorbefehle aus Zeichenkette auf den Text an.&lt;br /&gt;
 -n gibt nur die Zeilen aus, die explizit (durch &amp;quot;p&amp;quot; ausgedruckt werden sollen&lt;br /&gt;
&lt;br /&gt;
Gibt die dritte Zeile der Datei text aus&lt;br /&gt;
 root@zero:~# sed -n &amp;quot;3p&amp;quot; text&lt;br /&gt;
 34&lt;br /&gt;
&lt;br /&gt;
Gibt die erste bis dritte Zeile von text aus&lt;br /&gt;
 root@zero:~# sed -n &amp;quot;1,3p&amp;quot; text&lt;br /&gt;
 sogar noch wichtiger&lt;br /&gt;
 123&lt;br /&gt;
 34&lt;br /&gt;
&lt;br /&gt;
Löschen der Zeile mit &amp;quot;sogar&amp;quot;&lt;br /&gt;
 root@zero:~# sed -e '/sogar/d' &amp;lt; text&lt;br /&gt;
 123&lt;br /&gt;
 34&lt;br /&gt;
 4711&lt;br /&gt;
 test&lt;br /&gt;
&lt;br /&gt;
und schreiben in text2&lt;br /&gt;
 root@zero:~# sed -e '/sogar/d' &amp;lt; text &amp;gt; text2&lt;br /&gt;
 root@zero:~# more text2&lt;br /&gt;
 123&lt;br /&gt;
 34&lt;br /&gt;
 4711&lt;br /&gt;
 test&lt;br /&gt;
&lt;br /&gt;
Alle 3en durch DREI ersetzen&lt;br /&gt;
 root@zero:~# sed -e 's/3/DREI/g' &amp;lt; text&lt;br /&gt;
 sogar noch wichtiger&lt;br /&gt;
 12DREI&lt;br /&gt;
 DREI4&lt;br /&gt;
 4711&lt;br /&gt;
 test&lt;br /&gt;
&lt;br /&gt;
==wc==&lt;br /&gt;
Zählt die Anzahl von Zeichen, Wörter oder Zeilen&lt;br /&gt;
&lt;br /&gt;
Optionen&lt;br /&gt;
* -m : Zählt die Anzahl der Zeichen&lt;br /&gt;
 root@zero:~# more name&lt;br /&gt;
 1. karl&lt;br /&gt;
 2. heinz&lt;br /&gt;
 3. hans&lt;br /&gt;
 4. otto&lt;br /&gt;
 root@zero:~# wc '''-m''' tel&lt;br /&gt;
 33 tel&lt;br /&gt;
&lt;br /&gt;
* -w : Zählt die Anzahl der Wörter (einschließlich Zahlen und andere Zeichen)&lt;br /&gt;
 root@zero:~# wc '''-w''' name&lt;br /&gt;
 8 name&lt;br /&gt;
&lt;br /&gt;
* -l : Zählt die Anzahl der Zeilen&lt;br /&gt;
 root@zero:~# wc '''-l''' name&lt;br /&gt;
 4 name&lt;br /&gt;
&lt;br /&gt;
==Sort==&lt;br /&gt;
&lt;br /&gt;
Zum sortieren von Dateien nach Feldern benutzt man sort. sort liest von STDIN man kann die Datei aber auch als Argument übergeben. &lt;br /&gt;
&lt;br /&gt;
Sortiert nach dem ersten Feld&lt;br /&gt;
  root@zero:~# sort /etc/passwd 	 &lt;br /&gt;
&lt;br /&gt;
Es wird geprüft ob die Datei schon sortiert ist &lt;br /&gt;
 root@zero:~# sort -c /etc/passwd 	&lt;br /&gt;
&lt;br /&gt;
Sortiert nach dem ersten Feld (Richtungsumkehr)  &lt;br /&gt;
 root@zero:~#  sort -r /etc/passwd&lt;br /&gt;
&lt;br /&gt;
Führende Leersortzeichen werden ignoriert &lt;br /&gt;
 root@zero:~# sort -b /etc/passwd&lt;br /&gt;
&lt;br /&gt;
Ausgabe  in die Datei pass&lt;br /&gt;
 root@zero:~# sort  /etc/passwd   -o pass	 &lt;br /&gt;
&lt;br /&gt;
nimmt : als Trenner -Voreinstellung ist TAB&lt;br /&gt;
  root@zero:~# sort -t : /etc/passwd&lt;br /&gt;
&lt;br /&gt;
sortiert nach dem  3 Feld,  der Trenner ist : und es wird nummerisch sortiert&lt;br /&gt;
&lt;br /&gt;
 root@zero:~# sort -t: +2 -n /etc/passwd		&lt;br /&gt;
&lt;br /&gt;
sortiert nach dem  3 Feld,  der Trenner ist : und es wird nummerisch sortiert&lt;br /&gt;
					&lt;br /&gt;
 root@zero:~# sort -t: -k 3 -n /etc/passwd&lt;br /&gt;
&lt;br /&gt;
Sortiert nach dem  3  bis zum 5 Feld, der Trenner ist : und es wird nummerisch sortiert&lt;br /&gt;
	&lt;br /&gt;
 root@zero:~# sort -t: -k 3,5 -n /etc/passwd	&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==INodes==&lt;br /&gt;
Inode (oder I-Node) wird im Deutschen am besten als Informationsknoten oder&lt;br /&gt;
Indexeintrag bezeichnet. Er fasst alle Attribute einer Datei zusammen außer dem Inhalt&lt;br /&gt;
und dem Namen der Datei.&lt;br /&gt;
&lt;br /&gt;
===Daten===&lt;br /&gt;
{| border=1 cellpadding=2&lt;br /&gt;
|type&lt;br /&gt;
|Der Typ der Datei wird als einzelner Buchstabe angezeigt. Der Typ einer Datei wird beim Anlegen der Datei festgelegt&lt;br /&gt;
|-&lt;br /&gt;
|Permissions &lt;br /&gt;
|Die Zugriffsrechte der Datei werden in den 12 Bit sstrwxrwxrwx abgespeichert.Wenn sie gesetzt sind, werden sie bei &lt;br /&gt;
der Ausgabe an Stelle der x-Rechte ausgegeben. Die Zugriffsrechte können mit dem Kommando chmod verändert werden.&lt;br /&gt;
|-&lt;br /&gt;
|link count&lt;br /&gt;
|In UNIX kann eine Datei mehr als einen Namen haben. Der Link Count gibt die Anzahl der Namen einer Datei an. Er kann&lt;br /&gt;
mit dem Kommando ln erhöht und dem Kommando rm erniedrigt werden.&lt;br /&gt;
|-&lt;br /&gt;
|owner&lt;br /&gt;
|Für den Dateieigentümer gelten die in der ersten rwx-Gruppe festgelegten Zugriffsrechte. Standardmäßig ist der &lt;br /&gt;
Eigentümer einer Datei derjenige Benutzer, der die Datei angelegt hat.&lt;br /&gt;
|-&lt;br /&gt;
|group&lt;br /&gt;
|Für Benutzer, die in der gleichen Gruppe sind, der die Datei angehört, gelten die in der zweiten rwx-Gruppe festgelegten&lt;br /&gt;
Zugriffsrechte. In System V gehört eine Datei standardmäßig der Gruppe an, in der der anlegende Benutzer gerade ist.&lt;br /&gt;
|-&lt;br /&gt;
|size&lt;br /&gt;
|Bei normalen Dateien und Verzeichnissen gibt diese Information die Länge der Datei in Byte an.&lt;br /&gt;
|-&lt;br /&gt;
|access time&lt;br /&gt;
|Die Zugriffszeit gibt den Zeitpunkt des letzten Lesezugriffes auf eine Datei an. Aus Effizienzgründen wird die &lt;br /&gt;
Zugriffszeit an Verzeichnissen nicht gesetzt, wenn ein Verzeichnis durchsucht wird, obwohl man dies erwarten könnte. ''(ls -l --time=atime)''&lt;br /&gt;
|-&lt;br /&gt;
|modification time&lt;br /&gt;
|Die Modifikationszeit gibt die Zeit des letzten Schreibzugriffes auf die Daten der Datei an. Intern speichert UNIX &lt;br /&gt;
die Zeit als Sekunden seit Beginn des Jahres 1970 und in GMT ab. Für die Ausgabe wird dies in ein besser lesbares &lt;br /&gt;
Format in der lokalen Zeitzone umgewandelt. ''(ls -l)''&lt;br /&gt;
|-&lt;br /&gt;
|change time &lt;br /&gt;
|Die Veränderungszeit gibt das Datum der letzten Statusänderung der Datei an. Sie wird immer dann gesetzt, wenn die &lt;br /&gt;
Informationen über die Datei sich ändern (Datum der Erzeugung wird nicht gespeichert) ''(ls -lc)''&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
===Dateiarten===&lt;br /&gt;
{| border=1 cellpadding=2&lt;br /&gt;
!Zeichen&lt;br /&gt;
!Typ&lt;br /&gt;
!Zweck&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;nowiki&amp;gt;-&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
|file&lt;br /&gt;
|normale Datei&lt;br /&gt;
|-&lt;br /&gt;
|d&lt;br /&gt;
|directory&lt;br /&gt;
|Verzeichnis&lt;br /&gt;
|-&lt;br /&gt;
|b&lt;br /&gt;
|block device&lt;br /&gt;
|Gerätedatei&lt;br /&gt;
|-&lt;br /&gt;
|c&lt;br /&gt;
|character device&lt;br /&gt;
|Gerätedatei&lt;br /&gt;
|-&lt;br /&gt;
|l&lt;br /&gt;
|link&lt;br /&gt;
|Querverweis&lt;br /&gt;
|-&lt;br /&gt;
|p&lt;br /&gt;
|named pipe&lt;br /&gt;
|Benannte Pipeline&lt;br /&gt;
|-&lt;br /&gt;
|s&lt;br /&gt;
|socket&lt;br /&gt;
|Netzwerkverbindung&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
====Normale Dateien====&lt;br /&gt;
Unter einer normalen Datei versteht man die Ansammlung von Daten. Dies kann ein Text, Programm, Bild oder sonstiges sein. &lt;br /&gt;
Beispiel&lt;br /&gt;
 root@zero:~# ls -l text | cut -c 1&lt;br /&gt;
 -&lt;br /&gt;
&lt;br /&gt;
====Verzeichnisse====&lt;br /&gt;
Dateien werden in Verzeichnissen gespeichert, nur so ist eine Ordnung möglich. &lt;br /&gt;
 root@zero:~# mkdir -v Ordner&lt;br /&gt;
 mkdir: Verzeichnis „Ordner“ angelegt&lt;br /&gt;
 &lt;br /&gt;
 root@zero:~# ls -ld Ordner | cut -c 1&lt;br /&gt;
 d&lt;br /&gt;
&lt;br /&gt;
====Gerätedateien (Block und Char)====&lt;br /&gt;
Gerätedateien ermöglichen Anwendungsprogrammen unter Benutzung des  Kernels den Zugriff auf die Hardwarekomponenten des Systems. Ansprechbar über Major und Minor Nummern &lt;br /&gt;
&lt;br /&gt;
Beispiele&lt;br /&gt;
&lt;br /&gt;
Sicherung des Master Boot Records der ersten Festplatte&lt;br /&gt;
 root@zero:~# dd if=/dev/sda of=/tmp/mbr.img bs=512 count=1&lt;br /&gt;
&lt;br /&gt;
Block Device &lt;br /&gt;
 root@zero:~# ls -l /dev/sda | cut -c 1 &lt;br /&gt;
 b&lt;br /&gt;
&lt;br /&gt;
Character Device &lt;br /&gt;
 root@zero:~# ls -l /dev/ttyS0  | cut -c 1 &lt;br /&gt;
 c&lt;br /&gt;
&lt;br /&gt;
Erstellen einer Gerätedatei&lt;br /&gt;
 root@zero:/dev# mknod sata1 b 8 0 &lt;br /&gt;
 root@zero:/dev# fdisk -l /dev/sata1 &lt;br /&gt;
 &lt;br /&gt;
 Platte /dev/sata1: 6442 MByte, 6442450944 Byte&lt;br /&gt;
 255 Köpfe, 63 Sektoren/Spuren, 783 Zylinder&lt;br /&gt;
 Einheiten = Zylinder von 16065 × 512 = 8225280 Bytes&lt;br /&gt;
 Disk identifier: 0x0005efab&lt;br /&gt;
 &lt;br /&gt;
       Gerät  boot.     Anfang        Ende     Blöcke   Id  System&lt;br /&gt;
 /dev/sata1p1   *           1         743     5968116   83  Linux&lt;br /&gt;
 /dev/sata1p2             744         783      321300    5  Erweiterte&lt;br /&gt;
 /dev/sata1p5             744         783      321268+  82  Linux Swap / Solaris&lt;br /&gt;
&lt;br /&gt;
====Named Pipes====&lt;br /&gt;
Benannte Pipes (Named Pipes) können dagegen auch zur Kommunikation zwischen Prozessen eingesetzt werden, die nicht miteinander&lt;br /&gt;
verwandt sind und sich darüber hinaus auf unterschiedlichen Rechnern innerhalb eines Netzwerkes befinden dürfen. Sie sind &lt;br /&gt;
flexibler als anonyme Pipes und eignen sich für sogenannte Client-Server-Anwendungen (es lassen sich auch RPCs realisieren).&lt;br /&gt;
Benannte Pipes ermöglichen die gleichzeitige Kommunikation in beide Richtungen, das heißt, Daten können im Vollduplexbetrieb &lt;br /&gt;
zwischen den Prozessen ausgetauscht werden.&lt;br /&gt;
 &lt;br /&gt;
Erstelle Named Pipe mit Namen /tmp/roehre. Schreibe &amp;quot;hallo welt&amp;quot; in die Pipe und bleibe&lt;br /&gt;
 xinux@zero:~$ mkfifo /tmp/roehre&lt;br /&gt;
 xinux@zero:~$ echo hallo welt &amp;gt; /tmp/roehre &lt;br /&gt;
&lt;br /&gt;
Gebe Inhalt der Pipe mit cat aus&lt;br /&gt;
 root@zero:~# cat &amp;lt; /tmp/roehre &lt;br /&gt;
 hallo welt&lt;br /&gt;
 root@zero:~# ls -l /tmp/roehre | cut -c 1&lt;br /&gt;
 p&lt;br /&gt;
&lt;br /&gt;
====Sockets====&lt;br /&gt;
Schnittstelle um es lokalen Anwendungen zu ermöglichen, miteinander Netwerkmässig zu kommunizieren.&lt;br /&gt;
&lt;br /&gt;
 root@lydia:~# netstat  -lnxp | tail -1&lt;br /&gt;
  unix  2 [ ACC ] STREAM HÖRT 21951 6646/nm-applet /tmp/orbit-thomas/linc-19f6-0-2b9b81095cede&lt;br /&gt;
&lt;br /&gt;
 root@lydia:~# ls -l /tmp/orbit-thomas/linc-19f6-0-2b9b81095cede  | cut -c 1 &lt;br /&gt;
 s&lt;br /&gt;
&lt;br /&gt;
====Links====&lt;br /&gt;
Bei Links handelt es sich um symbolische Verweise auf andere Dateien&lt;br /&gt;
&lt;br /&gt;
'''Softlink'''&lt;br /&gt;
Ein Softlink ist eine Datei die nur auf den Namen einer anderen Datei verweist. Wenn die Originaldatei gelöscht wird, zeigt &lt;br /&gt;
der Link ins Leere. &lt;br /&gt;
&lt;br /&gt;
 ln -s datei softlink&lt;br /&gt;
&lt;br /&gt;
{| border=1 cellpadding=2&lt;br /&gt;
| Vorteile&lt;br /&gt;
| Symbolische Links können auch auf Verzeichnisse angelegt werden&amp;lt;br&amp;gt;Sie sind partitionsübergreifend&amp;lt;br&amp;gt;Man kann sie auf Dateien anlegen, die noch nicht existieren&lt;br /&gt;
|-&lt;br /&gt;
| Nachteile&lt;br /&gt;
| Wenn das Original gelöscht ist, ist kein Zugriff mehr möglich&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Beispiel&lt;br /&gt;
 root@zero:~# ln -s text verweis&lt;br /&gt;
 root@zero:~# ls -l verweis&lt;br /&gt;
 lrwxrwxrwx 1 root root 4 2009-06-18 15:48 verweis -&amp;gt; text&lt;br /&gt;
&lt;br /&gt;
'''Hardlinks'''&lt;br /&gt;
 ln datei hardlink&lt;br /&gt;
Eigentlich ist jede Datei ein Hardlink. Ein Hardlink ist ein Verzeichniseintrag,&lt;br /&gt;
der auf eine Inode verweist. Beim Erzeugen einer Datei verweist ein Eintrag auf&lt;br /&gt;
eine Inode. Man kann dann weitere Verweise erzeugen. Der Linkcounter wird&lt;br /&gt;
jeweils um 1 erhöht. Beim Löschen einer Datei wird er jeweils um 1 reduziert.&lt;br /&gt;
Wird der Wert 0 erreicht, ist die Datei gelöscht.&lt;br /&gt;
{| border=1 cellpadding=2&lt;br /&gt;
| Vorteile&lt;br /&gt;
|Zugriff auf die Daten, selbst wenn das Orginal gelöscht ist.&lt;br /&gt;
|-&lt;br /&gt;
|Nachteile&lt;br /&gt;
|Man kann keine Hardlinks auf Verzeichnisse anlegen.&lt;br /&gt;
Ist nur innerhalb einer Partion möglich.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Beispiel&lt;br /&gt;
 root@zero:~# touch 1&lt;br /&gt;
 root@zero:~# echo &amp;quot;text&amp;quot; &amp;gt; 1&lt;br /&gt;
 root@zero:~# ln 1 2&lt;br /&gt;
 root@zero:~# more 2&lt;br /&gt;
 text&lt;br /&gt;
 root@zero:~# echo &amp;quot;doch kein text&amp;quot; &amp;gt; 1&lt;br /&gt;
 root@zero:~# more 1&lt;br /&gt;
 doch kein text&lt;br /&gt;
 root@zero:~# more 2&lt;br /&gt;
 doch kein text&lt;br /&gt;
&lt;br /&gt;
Weitere Optionen:&lt;br /&gt;
 -b sichert Dateien, statt sie zu überschreiben &lt;br /&gt;
 -f Überschreibt bestehende, gleichnamige Dateien&lt;br /&gt;
 -i fragt vor dem Überschreiben nach Bestätigung&lt;br /&gt;
 -v ausführliche Meldungen&lt;br /&gt;
Softlink mit dem Namen passwd im Homeverzeichnis angelegt&lt;br /&gt;
 xinux@zero:~$ ln -vs /etc/passwd .&lt;br /&gt;
 „./passwd“ -&amp;gt; „/etc/passwd“&lt;br /&gt;
Softlink mit dem Namen passwd im Homeverzeichnis angelegt(Original exestiert nicht) &lt;br /&gt;
 xinux@zero:~$ ln -vs /etc/hund .&lt;br /&gt;
 „./hund“ -&amp;gt; „/etc/hund“&lt;br /&gt;
Hardlink mit dem Namen hosts im Homeverzeichnis angelegt&lt;br /&gt;
  xinux@zero:~$ ln -v /etc/hosts .&lt;br /&gt;
 „./hosts“ =&amp;gt; „/etc/hosts“&lt;br /&gt;
Auf eine nicht existierende Datei kann kein Hardlink angelegt werden!&lt;br /&gt;
 xinux@zero:~$ ln -v /etc/katze .&lt;br /&gt;
 ln: Zugriff auf „/etc/katze“: No such file or directory&lt;br /&gt;
&lt;br /&gt;
==Shellsonderzeichen==&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot; cellpadding=&amp;quot;2&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
|;&lt;br /&gt;
|Trenne Kommandos&lt;br /&gt;
|-&lt;br /&gt;
|. oder source&lt;br /&gt;
|Ausführen wie in aktueller Shell&lt;br /&gt;
|-&lt;br /&gt;
|#&lt;br /&gt;
|Kommentar&lt;br /&gt;
|-&lt;br /&gt;
|&amp;amp;&lt;br /&gt;
|Programm im Hintergrund starten &lt;br /&gt;
|-&lt;br /&gt;
|&amp;amp;&amp;amp;&lt;br /&gt;
|UND -Ausführung  (wenn links wahr dann führe rechts aus)&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;nowiki&amp;gt;|&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
|STOUT von links wird zu STDIN von rechts &lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;nowiki&amp;gt;||&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
|ODER -Ausführung (wenn links falsch dann führe rechts aus)&lt;br /&gt;
|-&lt;br /&gt;
|*&lt;br /&gt;
|steht für beliebig viel Zeichen auch 0 &lt;br /&gt;
|-&lt;br /&gt;
|?&lt;br /&gt;
|steht für genau ein Zeichen &lt;br /&gt;
|-&lt;br /&gt;
|[abc]&lt;br /&gt;
|steht für eins der Zeichen in [ ] hier a b oder c &lt;br /&gt;
|-&lt;br /&gt;
|[ausdruck] &lt;br /&gt;
|Andere Schreibweis für test &lt;br /&gt;
|-&lt;br /&gt;
|~&lt;br /&gt;
|das Homeverzeichnis&lt;br /&gt;
|-&lt;br /&gt;
|&amp;gt;    und    &amp;gt;&amp;gt;&lt;br /&gt;
|leite in Datei um   &amp;gt;  überschreibe     &amp;gt;&amp;gt; hänge an &lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;&lt;br /&gt;
|lesen aus Datei &lt;br /&gt;
|-&lt;br /&gt;
|2&amp;gt;&amp;amp;1&lt;br /&gt;
|leite STDERR auf STDOUT&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;&amp;lt; ende&lt;br /&gt;
|Lesen aus Datei (Heredokument)&lt;br /&gt;
|-&lt;br /&gt;
|(...)&lt;br /&gt;
|Alles inhalb von ( ) wird als Subshell ausgeführt&lt;br /&gt;
|-&lt;br /&gt;
|{...}&lt;br /&gt;
|Gruppieren von Komandos &lt;br /&gt;
|-&lt;br /&gt;
|{ ,  ,  , }&lt;br /&gt;
|Zeichenketten zusammensetzen &lt;br /&gt;
|-&lt;br /&gt;
|$&lt;br /&gt;
|Inhalt von Variablen ausgeben $SUX&lt;br /&gt;
|-&lt;br /&gt;
|$* oder $@&lt;br /&gt;
|Liste der übergebenen Parameter&lt;br /&gt;
|-&lt;br /&gt;
|$# &lt;br /&gt;
|Anzahl der übergebenen Parameter &lt;br /&gt;
|-&lt;br /&gt;
|$0&lt;br /&gt;
|Name des Shellprogramms &lt;br /&gt;
|-&lt;br /&gt;
|$?&lt;br /&gt;
|Rückgabewert des letzten Kommandos &lt;br /&gt;
|-&lt;br /&gt;
|$!  und  $$&lt;br /&gt;
|PID des  $!  = letzten Hintergrund  -  , $$ = aktuellen Prozess&lt;br /&gt;
|-&lt;br /&gt;
|$1 ..$9&lt;br /&gt;
|Parameter 1 bis 9 &lt;br /&gt;
|-&lt;br /&gt;
|$() oder `  `&lt;br /&gt;
|Kommandosubstition&lt;br /&gt;
|-&lt;br /&gt;
|${ }&lt;br /&gt;
|Funktion zur Manipulation von Zeichenketten &lt;br /&gt;
|-&lt;br /&gt;
|$(( )) oder $[ ]&lt;br /&gt;
|Arithmetische Berechnung &lt;br /&gt;
|-&lt;br /&gt;
|&amp;quot;...&amp;quot;&lt;br /&gt;
|Entwertung der Sonderzeichen ausser $ ' \&lt;br /&gt;
|-&lt;br /&gt;
|'...'&lt;br /&gt;
|Entwertung sämtlicher Sonderzeichen ausser ' selbst&lt;br /&gt;
|-&lt;br /&gt;
|\  &lt;br /&gt;
|Entwertung des folgenden Sonderzeichens &lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==Prozesse==&lt;br /&gt;
===Was ist ein Prozess?===&lt;br /&gt;
Ein Prozess setzt sich aus zwei Teilen zusammen:&lt;br /&gt;
&lt;br /&gt;
1.Programm, das in den Hauptspeicher geladen wurde&lt;br /&gt;
&lt;br /&gt;
2.Prozessumgebung &lt;br /&gt;
&lt;br /&gt;
Unter einem Prozess versteht man ein Programm (binär), das in den Hauptspeicher&lt;br /&gt;
geladen wurde. Also nicht das Program selbst, das auf der Festplatte liegt ist der&lt;br /&gt;
Prozess, sondern es wird erst durch das Laden in den Hauptspeicher dazu.&lt;br /&gt;
Normalerweise liegt ein Programm als ausführbare Datei irgendwo auf der&lt;br /&gt;
Festplatte oder auf Diskette. Ob es sich bei dem Programm um eine binäre Datei&lt;br /&gt;
handelt, kann man mit dem Befehl '' file '' feststellen.&lt;br /&gt;
 &lt;br /&gt;
 root@zero:~# file /bin/mkdir&lt;br /&gt;
 /bin/mkdir: ELF 32-bit LSB executable, Intel 80386, version 1 (SYSV), dynamically linked (uses shared libs), for GNU/Linux 2.6.8, stripped&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Die Datei liegt im Maschinencode vor und kann in den Hauptspeicher geladen&lt;br /&gt;
werden. Sobald dies geschehen ist, kann der Rechner diesen Maschinencode&lt;br /&gt;
abarbeiten (ausführen).&lt;br /&gt;
&lt;br /&gt;
Da aber ein Programm nicht direkt auf die Hardware zugreifen soll, muss es vom&lt;br /&gt;
Betriebsystem kontrolliert werden. Das Betriebssystem liegt logisch gesehen&lt;br /&gt;
zwischen Hardware und Anwendung. Das Betriebssystem ordnet jedem Prozess&lt;br /&gt;
verschiedene Kenndaten zu, um die Prozesse verwalten zu können. Alle&lt;br /&gt;
Kenndaten, die einem Prozess zugeordnet sind, nennt man die&lt;br /&gt;
Prozessumgebung.Wenn man in der Shell ein Kommando eingibt, wird ein Prozess&lt;br /&gt;
kreiert. Natürlich ist die Shell selbst auch ein Prozess. Ein Prozess kann aber&lt;br /&gt;
genauso gut ein Serverprozess (Dienst) sein, z.B. Apache.&lt;br /&gt;
Ein wesentliches Merkmal eines Prozesses ist die Prozesskommunikation. Über im&lt;br /&gt;
Betriebssystem implementierte Methoden ist es möglich, dass verschiedene&lt;br /&gt;
Prozesse Signale und Daten untereinander austauschen können.&lt;br /&gt;
Dadurch wird auch dem Benutzer ermöglicht, einem Prozeß bestimmte Signale zu&lt;br /&gt;
senden bzw. auf den Status eines Prozesses Einfluss zu nehmen.&lt;br /&gt;
&lt;br /&gt;
===Prozesstabelle (Anzeige mit ps)===&lt;br /&gt;
Da zu jedem Prozess Kenndaten geführt werden, müssen diese auch irgendwo&lt;br /&gt;
festgehalten werden. Das geschieht in der sogenannten Prozesstabelle.&lt;br /&gt;
&lt;br /&gt;
Kenndaten der Prozesse (Auswahl):&lt;br /&gt;
* F Flags (z.B. ausgelagert; Systemprozess; Trace,...)&lt;br /&gt;
* UID Nutzer, mit dessen Rechten der Prozess ausgeführt wird&lt;br /&gt;
* PID Prozess - ID. Diese Nummer gibt eine eindeutige Prozess - Nummer&lt;br /&gt;
an. Sie wird vom System automatisch beim Starten des Prozesses&lt;br /&gt;
vergeben und ist für die Laufzeit eindeutig.&lt;br /&gt;
* PPID Prozessnumer der Eltern-Prozesses&lt;br /&gt;
* PRI Priorität eines Prozesses; je niedriger der Wert ist, desto besser&lt;br /&gt;
* NI ist der Nicewert des Prozesses; Nice erniedrigt den Grundwert&lt;br /&gt;
der Priorität des Prozesses und gibt damit Prozessorzeit für andere&lt;br /&gt;
Prozesse frei.&lt;br /&gt;
* SIZE Speichergröße des Prozesses inklusive Stack (eine Art Zwischenspeicher)&lt;br /&gt;
* RSS Verbrauch an physischen Speicher&lt;br /&gt;
* WCHAN ist der Name der Kernerlfunktion, in der der Prozess schläft&lt;br /&gt;
* STAT Status des Prozesses&lt;br /&gt;
R läuft       S schlafend     D nicht störbarer Schlaf&lt;br /&gt;
T angehalten  Z Zombie        W der Prozess belegt keine Seiten&lt;br /&gt;
* TIME Bisland benötigte Prozessorzeit&lt;br /&gt;
* SIZE ist die Größe von Text, Daten und Stack&lt;br /&gt;
* TTY die Nummer des kontrollierenden Teminal; wenn hier ein ? steht,&lt;br /&gt;
handelt es sich um einen Dämon oder Serverprozess.&lt;br /&gt;
* COMMAND Angabe des Prozesses selbst. Dies ist meist der Programmname.&lt;br /&gt;
&lt;br /&gt;
Weiteres&lt;br /&gt;
* GID Gruppe, unter der der Prozess läuft&lt;br /&gt;
* Verweis auf das aktuellen Arbeitsverzeichnis&lt;br /&gt;
* Um mit relativen Pfadangaben arbeiten zu können braucht man diesen Eintrag&lt;br /&gt;
* Tabelle mit Verweisen auf aktuell geöffnete Dateien&lt;br /&gt;
* 3 sind automatisch geöffnet Standardeingabe, Standardausgabe und&lt;br /&gt;
Standardfehlerkanal&lt;br /&gt;
&lt;br /&gt;
Beispiel&lt;br /&gt;
 root@zero:~# ps -l&lt;br /&gt;
 F S   UID   PID  PPID  C PRI  NI ADDR SZ WCHAN  TTY          TIME CMD&lt;br /&gt;
 4 R     0 18639 18631  0  80   0 -  1080 -      pts/0    00:00:00 bash&lt;br /&gt;
 0 R     0 25904 18639  0  80   0 -   635 -      pts/0    00:00:00 ps&lt;br /&gt;
&lt;br /&gt;
===Eltern und Kinder===&lt;br /&gt;
Jeder Prozess kann weitere Prozesse erzeugen. Die erzeugten Prozesse bezeichnet&lt;br /&gt;
man als Kindprozesse. Jeder Kindprozess weiß anhand der PID, woher er stammt.&lt;br /&gt;
&lt;br /&gt;
Alle Prozesse sind von einem anderen Prozess gestartet worden, mit Ausnahme&lt;br /&gt;
des Pseudoprozesses (noch im Kernel beim Starten erzeugter Prozess). Dieser hat&lt;br /&gt;
die Prozessnummer 0. Er hat die Aufgabe, den Init Prozess ( /sbin/init die Nummer&lt;br /&gt;
1) zu starten, der in System V alle anderen Prozesse direkt oder über seine Kind-&lt;br /&gt;
prozesse startet. (init wird konfiguriert durch die /etc/inittab)&lt;br /&gt;
&lt;br /&gt;
Es gibt zwei Arten wie ein Prozess gestartet werden kann:&lt;br /&gt;
&lt;br /&gt;
# Fork und Exec: Prozessumgebung wird dupliziert, der neue Prozess bekommt eine eigene neue PID&lt;br /&gt;
# Exec: Alter Prozess wird durch neuen Prozess überladen (geht mit dem shell-buildin exec)&lt;br /&gt;
&lt;br /&gt;
'''Rechte auf Objekte UID GID'''&lt;br /&gt;
Ob ein Prozess auf eine Datei zugreifen kann, entscheidet der Kernel anhand der&lt;br /&gt;
Zugriffssrechte, die auf der Datei gesetzt sind. Er checkt anhand der UID und GID&lt;br /&gt;
des Prozesses, ob es erlaubt ist. Mit dieser Technik wird letztendlich geprüft, was&lt;br /&gt;
ein User darf, und was nicht.&lt;br /&gt;
&lt;br /&gt;
===Rechenzeit und Priorität===&lt;br /&gt;
Da auch bei Prozessen eine Gerechtigkeit herschen muss, muss eine Instanz&lt;br /&gt;
darüber entscheiden wie lange ein Prozess Rechenzeit verbrauchen darf.&lt;br /&gt;
Folgende Kenndaten werden dazu benötigt&lt;br /&gt;
* clocktick = Zeiteinheit&lt;br /&gt;
* n = Faktor über den Kernel einstellbar&lt;br /&gt;
* slice = n &amp;lt;nowiki&amp;gt;*&amp;lt;/nowiki&amp;gt; clocktick&lt;br /&gt;
* agingtime = weitere Zeiteinheit über den Kernel einstellbar&lt;br /&gt;
&lt;br /&gt;
Es wird davon ausgegangen das der Prozess mit der niedrigsten Priorität gerade&lt;br /&gt;
rechnet. Pro clocktick erhöht sich die Priorität dieses Prozesses um eins.&lt;br /&gt;
&lt;br /&gt;
Jetzt können 3 Situationen eintreten die alle dazu führen das der Scheduler&lt;br /&gt;
aufgerufen wird.&lt;br /&gt;
&lt;br /&gt;
# Prozess blockiert wegen einer Ausgabe oder Eingabe.&lt;br /&gt;
# Gibt Rechenzeit freiwillig ab.&lt;br /&gt;
# Der Slice endet.&lt;br /&gt;
&lt;br /&gt;
Der Aufruf des Schedulers bewirkt das der Prozess mit der niedrigsten Priorität&lt;br /&gt;
gescheduled wird, er also nun rechnen darf. Nach Ablauf der agingtime werden&lt;br /&gt;
nun die Prozesse &amp;quot;gealtert&amp;quot;. Das geschieht nach folgender Formel&lt;br /&gt;
&lt;br /&gt;
Neue Priorität = Alte Priorität / 2 + Nicewert&lt;br /&gt;
&lt;br /&gt;
Der User hat die Möglichkeit, über den sogenannten Nicewert den Grundwert für&lt;br /&gt;
einen Prozess zu senken. Der Prozess braucht dann länger für seine Abarbeitung.&lt;br /&gt;
Er verhält sich somit netter zu den anderen Prozessen. Normale User können nur&lt;br /&gt;
netter werden, der Systemverwalter kann auch nicht netter (gemeiner) werden. Der&lt;br /&gt;
Bereich liegt zwischen 19 (sehr nett) bis 0 (weniger nett) für die User, und 19 bis&lt;br /&gt;
-20 für root.&lt;br /&gt;
&lt;br /&gt;
[[Image:pri.png]]&lt;br /&gt;
&lt;br /&gt;
'''Signale'''&lt;br /&gt;
&lt;br /&gt;
Mit den Kommando kill und killall kann man Prozessen Signale schicken&lt;br /&gt;
&lt;br /&gt;
 kill -Signalnummer PID &lt;br /&gt;
&lt;br /&gt;
Signalnummer&lt;br /&gt;
{| border=1 cellpadding=2&lt;br /&gt;
!Signalname&lt;br /&gt;
!Wert&lt;br /&gt;
!Aktion&lt;br /&gt;
|-&lt;br /&gt;
|SIGHUP&lt;br /&gt;
|1&lt;br /&gt;
|Neuinitialisierung eines Prozesses&lt;br /&gt;
|-&lt;br /&gt;
|SIGINT&lt;br /&gt;
|2&lt;br /&gt;
|Interrupt-Signal von der Tastatur (STRG+c)&lt;br /&gt;
|-&lt;br /&gt;
|SIGQUIT&lt;br /&gt;
|3&lt;br /&gt;
|Interrupt-Signal von der Tastatur (STRG+c) mit Dump&lt;br /&gt;
|-&lt;br /&gt;
|SIGKILL&lt;br /&gt;
|9&lt;br /&gt;
|unwiderrufliches Beendigungssignal (Töten)&lt;br /&gt;
|-&lt;br /&gt;
|SIGSEGV&lt;br /&gt;
|11&lt;br /&gt;
|Ungültige Speicherreferenz (bedeutet oft auf defekten Speicher)&lt;br /&gt;
|-&lt;br /&gt;
|SIGTERM &lt;br /&gt;
|15&lt;br /&gt;
|Beendigungssignal (geöffnete Dateien werden geschlossen)&lt;br /&gt;
|-&lt;br /&gt;
|SIGCONT &lt;br /&gt;
|18&lt;br /&gt;
|Weiterfahren, wenn gestoppt&lt;br /&gt;
|-&lt;br /&gt;
|SIGSTOP&lt;br /&gt;
|19&lt;br /&gt;
|Prozessstop&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Beispiel&lt;br /&gt;
 root@zero:~# kill -1 7562&lt;br /&gt;
&lt;br /&gt;
===Programme im Zusammenhang mit Prozessen===&lt;br /&gt;
* ps: Zeigt die Prozesse mit ihrem Status an&lt;br /&gt;
 root@zero:~# ps&lt;br /&gt;
  PID TTY          TIME CMD&lt;br /&gt;
 14134 pts/0    00:00:00 bash&lt;br /&gt;
 14149 pts/0    00:00:00 ps&lt;br /&gt;
&lt;br /&gt;
 root@zero:~# ps -elf | grep apache&lt;br /&gt;
 1 S root      5738     1  0  80   0 -  5461 select Jun16 ?        00:00:00 /usr/sbin/apache2 -k start&lt;br /&gt;
 5 S www-data  5739  5738  0  80   0 -  5581 inet_c Jun16 ?        00:00:00 /usr/sbin/apache2 -k start&lt;br /&gt;
 5 S www-data  5742  5738  0  80   0 -  5461 inet_c Jun16 ?        00:00:00 /usr/sbin/apache2 -k start&lt;br /&gt;
 5 S www-data  5743  5738  0  80   0 -  5461 inet_c Jun16 ?        00:00:00 /usr/sbin/apache2 -k start&lt;br /&gt;
 5 S www-data  5745  5738  0  80   0 -  5461 inet_c Jun16 ?        00:00:00 /usr/sbin/apache2 -k start&lt;br /&gt;
 5 S www-data  5746  5738  0  80   0 -  5461 inet_c Jun16 ?        00:00:00 /usr/sbin/apache2 -k start&lt;br /&gt;
 0 S root     14153 14134  0  80   0 -   837 pipe_w 16:59 pts/0    00:00:00 grep apache&lt;br /&gt;
&lt;br /&gt;
Option 	Beschreibung&lt;br /&gt;
*l langes Format&lt;br /&gt;
*u 	zeige für jeden Prozess Besitzer und Startzeit an&lt;br /&gt;
*j 	Jobs-Format: Zeige PGID und SID an&lt;br /&gt;
*s 	Informationen über Signale ausgeben&lt;br /&gt;
*m 	Speicher-Informationen anzeigen&lt;br /&gt;
*f 	Baumstruktur der Prozesse anzeigen (ähnlich pstree)&lt;br /&gt;
*a 	alle Prozesse (jedes Benutzers) anzeigen&lt;br /&gt;
*x 	kontrollierendes Terminal nicht anzeigen&lt;br /&gt;
*e 	Für den Prozess gültige Umgebungsvariablen mit anzeigen (sinnvollerweise mit mehreren Optionen »w« anwenden, um die Ausgabe nicht am Zeilenende abzuschneiden)&lt;br /&gt;
*w 	längere Ausgabe. »w« kann mehrfach verwendet werden, um die maximale Länge um je eine Zeile zu vergrößern&lt;br /&gt;
*h 	Header mit Feldbezeichnern unterdrücken&lt;br /&gt;
*r 	nur laufende Prozesse ausgeben&lt;br /&gt;
*n 	User-ID statt User-Name ausgeben&lt;br /&gt;
*txx 	nur Prozesse ausgeben, die vom angegebenen Terminal kontrolliert werden. xx kann entweder einer der Terminal-Gerätenamen unter /dev (z.B. tty1) oder die entsprechende Kurzbezeichnung ohne »tty« (z.B. 1) sein.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* nice: Lässt ein Programm mit verändertem Grundwert der Priorität laufen&lt;br /&gt;
 root@zero:~# nice&lt;br /&gt;
 0&lt;br /&gt;
 root@zero:~# nice -n 9 bash&lt;br /&gt;
 root@zero:~# nice&lt;br /&gt;
 9&lt;br /&gt;
 root@zero:~#&lt;br /&gt;
&lt;br /&gt;
* renice: Ändert den Grundwert der Priorität eines laufenden Prozesses&lt;br /&gt;
 root@zero:~# renice 10 5742&lt;br /&gt;
 5742: Alte Priorität: 0, neue Priorität: 10&lt;br /&gt;
&lt;br /&gt;
* top: Zeigt die Prozesse mit ihrem Status an (Abbrechen mit q)&lt;br /&gt;
 root@zero:~# top&lt;br /&gt;
top - 08:51:08 up 20 min,  1 user,  load average: 0.00, 0.02, 0.06&lt;br /&gt;
Tasks:  93 total,   1 running,  92 sleeping,   0 stopped,   0 zombie&lt;br /&gt;
Cpu(s):  1.6%us,  3.1%sy,  0.1%ni, 84.9%id, 10.2%wa,  0.0%hi,  0.2%si,  0.0%st&lt;br /&gt;
Mem:    509504k total,   273948k used,   235556k free,    11312k buffers&lt;br /&gt;
Swap:   321260k total,        0k used,   321260k free,   118380k cached&lt;br /&gt;
&lt;br /&gt;
  PID USER      PR  NI  VIRT  RES  SHR S %CPU %MEM    TIME+  COMMAND                                                                       &lt;br /&gt;
 2208 mysql     20   0  125m  21m 5552 S  1.7  4.2   0:02.29 mysqld                                                                        &lt;br /&gt;
 3201 root      20   0  2444 1064  828 R  1.7  0.2   0:00.04 top                                                                           &lt;br /&gt;
    1 root      20   0  1908  780  564 S  0.0  0.2   0:02.19 init                                                                          &lt;br /&gt;
    2 root      15  -5     0    0    0 S  0.0  0.0   0:00.00 kthreadd                                                                      &lt;br /&gt;
    3 root      RT  -5     0    0    0 S  0.0  0.0   0:00.00 migration/0                                                                   &lt;br /&gt;
    4 root      15  -5     0    0    0 S  0.0  0.0   0:00.03 ksoftirqd/0                                                                   &lt;br /&gt;
    5 root      RT  -5     0    0    0 S  0.0  0.0   0:00.00 watchdog/0                                                                    &lt;br /&gt;
    6 root      15  -5     0    0    0 S  0.0  0.0   0:00.04 events/0                                                                      &lt;br /&gt;
    7 root      15  -5     0    0    0 S  0.0  0.0   0:00.00 khelper                                                                       &lt;br /&gt;
    8 root      RT  -5     0    0    0 S  0.0  0.0   0:00.00 kstop/0                                                                       &lt;br /&gt;
    9 root      15  -5     0    0    0 S  0.0  0.0   0:00.00 kintegrityd/0                                                                 &lt;br /&gt;
   10 root      15  -5     0    0    0 S  0.0  0.0   0:00.03 kblockd/0                                                                     &lt;br /&gt;
   11 root      15  -5     0    0    0 S  0.0  0.0   0:00.00 kacpid                                                                        &lt;br /&gt;
   12 root      15  -5     0    0    0 S  0.0  0.0   0:00.00 kacpi_notify                                                                  &lt;br /&gt;
   13 root      15  -5     0    0    0 S  0.0  0.0   0:00.00 cqueue                                                                        &lt;br /&gt;
   14 root      15  -5     0    0    0 S  0.0  0.0   0:00.53 ata/0                                                                         &lt;br /&gt;
   15 root      15  -5     0    0    0 S  0.0  0.0   0:00.00 ata_aux&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* pstree: Zeigt die Prozesse als Baumstruktur&lt;br /&gt;
 root@zero:~# pstree&lt;br /&gt;
 init─┬─NetworkManager&lt;br /&gt;
      ├─acpid&lt;br /&gt;
      ├─apache2───5*[apache2]&lt;br /&gt;
      ├─atd&lt;br /&gt;
      ├─bluetoothd&lt;br /&gt;
      ├─console-kit-dae───63*[{console-kit-dae}]&lt;br /&gt;
      ├─cron&lt;br /&gt;
      ├─cupsd&lt;br /&gt;
      ├─dbus-daemon&lt;br /&gt;
      ├─dd&lt;br /&gt;
      ├─gdm───gdm─┬─Xorg&lt;br /&gt;
      │           └─gdmgreeter&lt;br /&gt;
      ├─6*[getty]&lt;br /&gt;
      ├─hald───hald-runner─┬─hald-addon-acpi&lt;br /&gt;
      │                    ├─hald-addon-inpu&lt;br /&gt;
      │                    └─2*[hald-addon-stor]&lt;br /&gt;
      ├─klogd&lt;br /&gt;
      ├─nm-system-setti&lt;br /&gt;
      ├─nmbd&lt;br /&gt;
      ├─nscd───11*[{nscd}]&lt;br /&gt;
      ├─portmap&lt;br /&gt;
      ├─rpc.statd&lt;br /&gt;
      ├─slapd───2*[{slapd}]&lt;br /&gt;
      ├─smbd───smbd&lt;br /&gt;
      ├─sshd───sshd───bash───bash───pstree&lt;br /&gt;
      ├─syslogd&lt;br /&gt;
      ├─system-tools-ba&lt;br /&gt;
      ├─udevd&lt;br /&gt;
      ├─winbindd─┬─winbindd───winbindd&lt;br /&gt;
      │          └─3*[winbindd]&lt;br /&gt;
      └─wpa_supplicant&lt;br /&gt;
&lt;br /&gt;
===Jobs===&lt;br /&gt;
Unter einem Job versteht man ein Programm, welches man von der Shell gelöst&lt;br /&gt;
hat. D. h. man kann ganz normal weiter arbeiten und der Job verrichtet seinen&lt;br /&gt;
Dienst im Hintergrund. Man kann jederzeit zu diesem Job wieder Kontakt&lt;br /&gt;
aufnehmen.&lt;br /&gt;
&lt;br /&gt;
Ein Job kann auf 2 Arten gestarten werden:&lt;br /&gt;
&lt;br /&gt;
# Durch Anhängen des &amp;amp; Zeichens beim Programmstart&lt;br /&gt;
 root@zero:~# tail -f /var/log/messages &amp;amp;&lt;br /&gt;
 Jun 19 06:59:31 zero -- MARK --&lt;br /&gt;
 Jun 19 07:19:31 zero -- MARK --&lt;br /&gt;
 Jun 19 07:39:32 zero -- MARK --&lt;br /&gt;
 Jun 19 07:44:57 zero syslogd 1.5.0#5ubuntu3: restart.&lt;br /&gt;
 Jun 19 07:59:32 zero -- MARK --&lt;br /&gt;
 Jun 19 08:19:32 zero -- MARK --&lt;br /&gt;
 Jun 19 08:39:32 zero -- MARK --&lt;br /&gt;
 Jun 19 08:59:32 zero -- MARK --&lt;br /&gt;
 Jun 19 09:19:33 zero -- MARK --&lt;br /&gt;
 Jun 19 09:39:33 zero -- MARK --&lt;br /&gt;
 [3] 27421&lt;br /&gt;
&lt;br /&gt;
# Durch Stoppen des Prozesses durch Drücken von Strg-Z und in den Hintergrund schicken mit %n (n ist die Jobnummer)&lt;br /&gt;
 root@zero:~# watch cat /proc/cpuinfo&lt;br /&gt;
 Strg-Z&lt;br /&gt;
 [4]+  Stopped                 watch cat /proc/cpuinfo&lt;br /&gt;
 root@zero:~# bg %4&lt;br /&gt;
 [4]+ watch cat /proc/cpuinfo &amp;amp;&lt;br /&gt;
&lt;br /&gt;
Anweisungen im Zusammenhang mit Jobs (n ist die Jobnummer)&lt;br /&gt;
* bg %n : Einen Job in den Hintergrund stellen (wie oben)&lt;br /&gt;
* fg %n : Einen Job in den Vordergrund holen&lt;br /&gt;
 root@zero:~# fg %4&lt;br /&gt;
 watch cat /proc/cpuinfo&lt;br /&gt;
&lt;br /&gt;
* jobs : Aktive Jobs ausgeben&lt;br /&gt;
&lt;br /&gt;
 root@zero:~# jobs&lt;br /&gt;
 [1]   Running                 tail -f /var/log/syslog &amp;amp;&lt;br /&gt;
 [2]   Running                 tail -f /var/log/syslog &amp;amp;&lt;br /&gt;
 [3]-  Running                 tail -f /var/log/messages &amp;amp;&lt;br /&gt;
 [4]+  Stopped                 watch cat /proc/cpuinfo&lt;br /&gt;
&lt;br /&gt;
* Strg-Z : Einen Vordergrund-Job vorübergehend anhalten&lt;br /&gt;
* kill -STOP %n : Unterbricht Job im Hintergrund&lt;br /&gt;
 root@zero:~# kill -STOP %1&lt;br /&gt;
 root@zero:~# jobs&lt;br /&gt;
 [1]+  '''Stopped'''                 tail -f /var/log/syslog&lt;br /&gt;
 [2]   Running                 tail -f /var/log/syslog &amp;amp;&lt;br /&gt;
 [3]   Running                 tail -f /var/log/messages &amp;amp;&lt;br /&gt;
 [4]-  Stopped                 watch cat /proc/cpuinfo&lt;br /&gt;
* kill -CONT %n : Setzt den unterbrochenen Job im Hintergrund fort&lt;br /&gt;
root@zero:~# kill -CONT %1&lt;br /&gt;
root@zero:~# jobs&lt;br /&gt;
 [1]+  '''Running'''                 tail -f /var/log/syslog &amp;amp;&lt;br /&gt;
 [2]   Running                 tail -f /var/log/syslog &amp;amp;&lt;br /&gt;
 [3]   Running                 tail -f /var/log/messages &amp;amp;&lt;br /&gt;
 [4]-  Stopped                 watch cat /proc/cpuinfo&lt;br /&gt;
* kill -KILL %n : Tötet Job im Hintergrund&lt;br /&gt;
 root@zero:~# kill -KILL %1&lt;br /&gt;
 root@zero:~# jobs&lt;br /&gt;
 [1]+  '''Killed'''                  tail -f /var/log/syslog&lt;br /&gt;
 [2]   Running                 tail -f /var/log/syslog &amp;amp;&lt;br /&gt;
 [3]   Running                 tail -f /var/log/messages &amp;amp;&lt;br /&gt;
 [4]-  Stopped                 watch cat /proc/cpuinfo&lt;br /&gt;
 root@zero:~# jobs&lt;br /&gt;
 [2]   Running                 tail -f /var/log/syslog &amp;amp;&lt;br /&gt;
 [3]-  Running                 tail -f /var/log/messages &amp;amp;&lt;br /&gt;
 [4]+  Stopped                 watch cat /proc/cpuinfo&lt;br /&gt;
&lt;br /&gt;
Bedingungen, die zu Jobausführung eingehalten werden sollen:&lt;br /&gt;
* Der Job soll nicht auf den Bildschirm schreiben (Standardausgabe +Standardfehlerkanal).&lt;br /&gt;
* Er soll keine Eingaben vom Benutzer erwarten.&lt;br /&gt;
&lt;br /&gt;
==Suchen von Dateien==&lt;br /&gt;
===find===&lt;br /&gt;
 find ab_wo_wird_gesucht was_wird_gesucht aktion&lt;br /&gt;
 find [Pfad] [Bedingung] [Aktion]&lt;br /&gt;
&lt;br /&gt;
====Nach Namen====&lt;br /&gt;
 find [Pfad] '''-name''' [Name]&lt;br /&gt;
 &lt;br /&gt;
Finde alle Dateien mit Namen test ab dem Verzeichnis /home und gebe diese Zeilenweise aus&lt;br /&gt;
 root@zero:~# find /home -name test -print&lt;br /&gt;
 /home/xinux/test&lt;br /&gt;
 /home/test&lt;br /&gt;
&lt;br /&gt;
Wie oben, jedoch mit Namensanfang test&lt;br /&gt;
 root@zero:/home/xinux# find /home -name 'test*'&lt;br /&gt;
 /home/xinux/testdatei&lt;br /&gt;
 /home/xinux/test&lt;br /&gt;
 /home/test&lt;br /&gt;
&lt;br /&gt;
====Nach Benutzer(Eigentümer)====&lt;br /&gt;
 root@zero:/tmp# find /tmp/ '''-user''' xinux&lt;br /&gt;
 /tmp/datei&lt;br /&gt;
&lt;br /&gt;
====Nach Gruppe====&lt;br /&gt;
 root@zero:/tmp# find /tmp/ '''-group''' hacker&lt;br /&gt;
 /tmp/datei3&lt;br /&gt;
 /tmp/datei2&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
====Nach Typ====&lt;br /&gt;
Es wird nach Dateien anhand Ihrer Art gesucht:&lt;br /&gt;
 find [Pfad] '''-type''' [Typ] &lt;br /&gt;
Typ:&lt;br /&gt;
* f: Normale Dateien&lt;br /&gt;
 root@zero:~# find /tmp/ -type f&lt;br /&gt;
 /tmp/mbr.img&lt;br /&gt;
 /tmp/datei&lt;br /&gt;
 /tmp/zeugs&lt;br /&gt;
 /tmp/.X0-lock&lt;br /&gt;
* d: Verzeichnisse&lt;br /&gt;
 root@zero:~# find /var/log -type d&lt;br /&gt;
 /var/log&lt;br /&gt;
 /var/log/apache2&lt;br /&gt;
 /var/log/unattended-upgrades&lt;br /&gt;
 /var/log/apparmor&lt;br /&gt;
 /var/log/ConsoleKit&lt;br /&gt;
 /var/log/dist-upgrade&lt;br /&gt;
 /var/log/dist-upgrade/20090526-1052&lt;br /&gt;
 /var/log/cups&lt;br /&gt;
 /var/log/apt&lt;br /&gt;
 /var/log/fsck&lt;br /&gt;
 /var/log/samba&lt;br /&gt;
 /var/log/samba/cores&lt;br /&gt;
 /var/log/samba/cores/smbd&lt;br /&gt;
 /var/log/samba/cores/nmbd&lt;br /&gt;
 /var/log/samba/cores/winbindd&lt;br /&gt;
 /var/log/installer&lt;br /&gt;
 /var/log/gdm&lt;br /&gt;
 /var/log/news&lt;br /&gt;
* c: Char Devices (Zeichenorientierte Gerätedatei)&lt;br /&gt;
 root@zero:~# find / -type c&lt;br /&gt;
 /lib/udev/devices/kmem&lt;br /&gt;
 /lib/udev/devices/null&lt;br /&gt;
 /lib/udev/devices/console&lt;br /&gt;
 /lib/udev/devices/ppp&lt;br /&gt;
 /lib/udev/devices/net/tun&lt;br /&gt;
* b: Block Devices (Blockorientierte Gerätedatei)&lt;br /&gt;
* p: Benannte Pipe&lt;br /&gt;
* l: Links&lt;br /&gt;
* s: Sockets&lt;br /&gt;
&lt;br /&gt;
====Nach Modifikation====&lt;br /&gt;
Listet alle Dateien in /etc auf, die innerhalb von zwei Tagen modifiziert wurden&lt;br /&gt;
 root@zero:/var/log# find /etc/ -mtime 2 -print&lt;br /&gt;
 /etc/apache2&lt;br /&gt;
 /etc/apache2/mods-available&lt;br /&gt;
 /etc/apache2/conf.d&lt;br /&gt;
 /etc/apache2/sites-available&lt;br /&gt;
 /etc/bash_completion.d&lt;br /&gt;
 /etc/blkid.tab.old&lt;br /&gt;
 /etc/firefox-3.0/profile&lt;br /&gt;
 /etc/firefox-3.0/profile/chrome&lt;br /&gt;
 /etc/firefox-3.0/pref&lt;br /&gt;
 /etc/profile.d&lt;br /&gt;
 /etc/ufw/applications.d&lt;br /&gt;
 /etc/logrotate.d&lt;br /&gt;
 /etc/xulrunner-1.9&lt;br /&gt;
 /etc/blkid.tab&lt;br /&gt;
 /etc/cron.daily&lt;br /&gt;
 /etc/alternatives&lt;br /&gt;
 /etc/alternatives/x-www-browser&lt;br /&gt;
 /etc/alternatives/xulrunner&lt;br /&gt;
 /etc/gre.d&lt;br /&gt;
 /etc/hal/fdi/policy&lt;br /&gt;
 /etc/dbus-1/system.d&lt;br /&gt;
 /etc/udev/rules.d&lt;br /&gt;
&lt;br /&gt;
====Nach Größe====&lt;br /&gt;
Finde Dateien in /tmp, die größer als 100 MByte sind&lt;br /&gt;
 root@zero:/tmp# find /tmp/ -size +100M&lt;br /&gt;
 /tmp/datei&lt;br /&gt;
&lt;br /&gt;
Finde Dateien in /tmp, die kleiner als 100 KByte sind&lt;br /&gt;
 root@zero:/tmp# find /tmp/ -size -100k&lt;br /&gt;
 /tmp/&lt;br /&gt;
 /tmp/datei3&lt;br /&gt;
 /tmp/backup &lt;br /&gt;
 /tmp/datei2&lt;br /&gt;
 /tmp/.winbindd &lt;br /&gt;
 /tmp/.winbindd/pipe&lt;br /&gt;
 /tmp/mbr.img&lt;br /&gt;
 /tmp/zeugs&lt;br /&gt;
 /tmp/.ICE-unix&lt;br /&gt;
 /tmp/.X0-lock&lt;br /&gt;
 /tmp/datei1&lt;br /&gt;
 /tmp/.X11-unix&lt;br /&gt;
 /tmp/.X11-unix/X0&lt;br /&gt;
 /tmp/pulse-PKdhtXMmr18n&lt;br /&gt;
&lt;br /&gt;
====Nach Berechtigungen====&lt;br /&gt;
Finde Dateien in Home mit der Berechtigung 777 (-rwxrwxrwx)&lt;br /&gt;
 root@zero:/var# find /home/ -perm 777&lt;br /&gt;
 /home/samba&lt;br /&gt;
 /home/xinux/Examples&lt;br /&gt;
 /home/xinux/.pulse/1f0763ee4cf4c7e1d3c07fd149dda37b:runtime&lt;br /&gt;
 /home/test/Examples&lt;br /&gt;
&lt;br /&gt;
===locate===&lt;br /&gt;
Locate arbeitet über einen Index, der erstellt und aktualisiert werden muss. Aus diesem Grund kann locate teilweise nicht &lt;br /&gt;
akutell sein. Es ist immer schneller als find und es durchsucht immer das ganze Dateisystem. &lt;br /&gt;
 locate [Dateiname]&lt;br /&gt;
 &lt;br /&gt;
Lokalisiere die Datei wvdial.conf. Anmerkung: Der Stern wird beim Suchen automatisch hinzugefügt. Entspricht also&lt;br /&gt;
wvidal.conf*&lt;br /&gt;
 root@zero:~# locate wvdial.conf&lt;br /&gt;
 /etc/wvdial.conf&lt;br /&gt;
 /usr/share/man/man5/wvdial.conf.5.gz&lt;br /&gt;
 /var/lib/dpkg/info/wvdial.conffiles&lt;br /&gt;
 /var/lib/dpkg/info/wvdial.config&lt;br /&gt;
&lt;br /&gt;
Lokalisiere die Datei wvdial.conf und nur diese&lt;br /&gt;
 root@zero:~# locate -b '\wvdial.conf'&lt;br /&gt;
 /etc/wvdial.conf&lt;br /&gt;
&lt;br /&gt;
Aktualisieren des Indexes&lt;br /&gt;
 root@zero:~# updatedb&lt;br /&gt;
&lt;br /&gt;
==Wie wird ein Kommando lokalisiert==&lt;br /&gt;
Wenn die Shell alle Ersetzungen in der Kommandozeile vorgenommen und alle Umleitungen vorbereitet hat, ist der Zeitpunkt &lt;br /&gt;
gekommen, auf den der Anwender die ganze Zeit gewartet hat. Die Shell versucht das Kommando auszuführen. Dazu muss sie &lt;br /&gt;
es aber erst lokalisieren. Das erste passende Kommando wird ausgeführt.&lt;br /&gt;
&lt;br /&gt;
Als Kommandoname wird immer das erste Wort eines einfachen Kommandos erkannt. Ein Kommandoname kann mit Pfadnamen in &lt;br /&gt;
einem Verzeichnis (absolut oder relativ) angegeben werden. Die Shell erkennt dies an (mindestens) einem Slash `/' &lt;br /&gt;
im Kommandonamen. Wenn kein Verzeichnis angegeben ist, versucht die Shell selbst, das Kommando zu finden. Dazu wird &lt;br /&gt;
der Kommandoname zuerst in der Hashtabelle gesucht, dann wird er mit den Synonymen, mit den Scriptfunktionen und &lt;br /&gt;
schließlich mit den Shellfunktionen verglichen. &lt;br /&gt;
&lt;br /&gt;
Wird auf diese Weise kein Programm dieses Namens gefunden, werden alle in der PATH-Umgebungsvariablen aufgeführten &lt;br /&gt;
Verzeichnisse nach einer ausführbaren Datei dieses Namens durchsucht. Wird auch hier kein passendes Kommando gefunden, &lt;br /&gt;
gibt die Shell eine Fehlermeldung aus.&lt;br /&gt;
&lt;br /&gt;
===which und type===&lt;br /&gt;
====which====&lt;br /&gt;
which gibt die vollen Pfadnamen der Dateien aus, die bei Benutzung des angegebenen Befehls ausgeführt werden würden.&lt;br /&gt;
&lt;br /&gt;
 which [-a] Dateiname &lt;br /&gt;
&lt;br /&gt;
Optionen:&lt;br /&gt;
&lt;br /&gt;
* -a : Alle Treffer ausgeben, nicht nur den ersten&lt;br /&gt;
* --skip-dot : Verzeichnisse, die mit einem Punkt beginnen, auslassen&lt;br /&gt;
&lt;br /&gt;
Beispiel&lt;br /&gt;
 root@zero:~# which startx&lt;br /&gt;
 /usr/bin/startx&lt;br /&gt;
&lt;br /&gt;
====type====&lt;br /&gt;
Anzeigen der absoluten Pfadnamen von Befehlen, und ob sich diese Befehle in der Hash-Tabelle der aktuellen&lt;br /&gt;
Shell befinden.&lt;br /&gt;
&lt;br /&gt;
 type [Optionen] Befehle&lt;br /&gt;
&lt;br /&gt;
Beispiel&lt;br /&gt;
 root@zero:~# type ls&lt;br /&gt;
 ls is aliased to `ls --color=auto'&lt;br /&gt;
&lt;br /&gt;
Optionen:&lt;br /&gt;
&lt;br /&gt;
* -a : Alle vorkommenden Befehle werden ausgegeben, nicht nur das, welches aufgerufen werden würde&lt;br /&gt;
 root@zero:~# type '''-a''' ls&lt;br /&gt;
 ls is aliased to `ls --color=auto'&lt;br /&gt;
 ls is /bin/ls&lt;br /&gt;
&lt;br /&gt;
* -p : Anzeigen des Eintrags von Befehl in der Hash-Tabelle. Dieser Wert kann sich vom ersten Auftreten des Befehls in PATH&lt;br /&gt;
unterscheiden&lt;br /&gt;
 root@zero:~# type '''-p''' apache2&lt;br /&gt;
 /usr/sbin/apache2&lt;br /&gt;
&lt;br /&gt;
* -t : Anzeigen, ob Befehl ein Aliasname, ein Schlüsselwort, eine Funktion, ein eingebauter Befehl oder eine Datei ist&lt;br /&gt;
 root@zero:~# type '''-t''' apache2&lt;br /&gt;
 file&lt;/div&gt;</summary>
		<author><name>192.168.178.46</name></author>
	</entry>
	<entry>
		<id>https://www.xinux.net/index.php?title=Linux_Grundlagen&amp;diff=112</id>
		<title>Linux Grundlagen</title>
		<link rel="alternate" type="text/html" href="https://www.xinux.net/index.php?title=Linux_Grundlagen&amp;diff=112"/>
		<updated>2009-07-08T06:44:04Z</updated>

		<summary type="html">&lt;p&gt;192.168.178.46: /* Programme im Zusammenhang mit Prozessen */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Einführung==&lt;br /&gt;
===Geschichte Unix===&lt;br /&gt;
====1969====&lt;br /&gt;
Am Anfang von Linux steht Multics, ein von Bell Laboratories geschaffenes &amp;quot;Betriebssystem&amp;quot;, &lt;br /&gt;
das noch mit Lochkarten arbeitete. Multics wird mit Unterstützung von AT&amp;amp;T und Western &lt;br /&gt;
Electric unter Mitarbeit von Ken Thompson und Dennis Ritchie weiterentwickelt. Obwohl sich &lt;br /&gt;
Bell Laboratories bald zurückzieht, gibt Thompson das Projekt nicht auf.  Zum Entwicklerteam &lt;br /&gt;
gehören auch Rudd Canaday und Brian Kernighan. Letzterer gibt 1970 dem Betriebssystem den Namen UNIX. &lt;br /&gt;
Thompson definiert 7 Richtlinien für UNIX:&lt;br /&gt;
 &lt;br /&gt;
# Hierarchische Anordnung der Dateisysteme&lt;br /&gt;
# Die Ausgabe von Daten an die Peripherie(-geräte) und Dateien soll gleich sein.&lt;br /&gt;
# Prozesse und Programme sollen miteinander kommunizieren.&lt;br /&gt;
# Multitasking (voneinander getrennte Prozesse)&lt;br /&gt;
# Persönliche Shell's&lt;br /&gt;
# Der Compiler soll für viele Programmiersprachen tauglich sein.&lt;br /&gt;
# Portabilität&lt;br /&gt;
&lt;br /&gt;
====1971====&lt;br /&gt;
Bis 1971 ist das für eine DEC PDP-7 geschriebene Unix als Version 1 auf eine PDP-11 portiert. Bis&lt;br /&gt;
zur Version 4 entwickelt Ritchie die Programmier- (Hoch-) Sprache C. Das in Assembler geschriebene&lt;br /&gt;
Unix wird fast völlig nach C übersetzt, wodurch zum erstenmal die geforderte Hardware-Unabhängigkeit&lt;br /&gt;
des Betriebssystems realisiert werden kann.&lt;br /&gt;
&lt;br /&gt;
====1975====&lt;br /&gt;
Da AT&amp;amp;T aufgrund vertraglicher Bindungen mit der US-Bundesregierung Unix nicht kommerziell vermarkten darf, stellt sie den Source Code für ein paar hundert Dollar den Universitäten, Lehr- und Forschungsanstalten zur Verfügung. Dies führt zu einer sehr dynamischen Entwicklung von Unix. 1975 wird die Version 6 als erstes UNIX-System veröffentlicht, die darauffolgende Version 7 wird sehr erfolgreich. Da es keine Standardisierung gibt, entwickeln bald verschiedenste Firmen ihr eigenes UNIX. Ab 1984 wird AT&amp;amp;T per Gerichtsbeschluss erlaubt, Unix zu vermarkten. AT&amp;amp;T verkauft sein Unix V und beginnt, sich um einen internationalen Standard von UNIX zu bemühen. &lt;br /&gt;
&lt;br /&gt;
====1984====&lt;br /&gt;
Durch Richard Stallman wird die Free Software Foundation (FSF) gegründet. Diese initiiert ein Projekt namens GNU (GNU ist Not Unix), welches das Ziel verfolgt, ein freies UNIX System zu schaffen. &lt;br /&gt;
&lt;br /&gt;
====1987====&lt;br /&gt;
AT&amp;amp;T verbietet die Verwendung des Unix Quellcodes an den Universitäten. Während dieser Zeit ist Andrew (Andy) Tannenbaum Professor an der Freien Universität von Amsterdam und entwickelt Minix. Minix ist ein kostengünstiges Lehrbetriebssystem und kommt ohne jeglichen AT&amp;amp;T Code aus, obwohl es die gleiche Funktionalität wie Unix 7 bietet. Im Usenet unter comp.os.minix entsteht eine Minix-Gemeinde, die den Minix Kernel und die Anwendungen rundherum programmiert und verbessert.&lt;br /&gt;
&lt;br /&gt;
====1991====&lt;br /&gt;
Linus Torvalds hat als Student für Computerwissenschaften an der Universität in Helsinki Minix installiert und das Buch von Andy Tannenbaum gelesen. Er beginnt im Sinne der FSF einen Unix ähnlichen Kernel zu programmieren mit der Idee, &amp;quot;ein besseres Minix als Minix&amp;quot; zu bauen. 1992 stellt er die Version 0.02 mit dem Namen Linux der Internetgemeinde zur Verfügung. &lt;br /&gt;
&lt;br /&gt;
====1994====&lt;br /&gt;
Die Linux Version 1.0 wird freigegeben. Das Linux Fieber beginnt... &lt;br /&gt;
&lt;br /&gt;
====1998====&lt;br /&gt;
Der Kreis der Linux Entwickler und Anwender ist kräftig angeschwollen. KDE 1.0 wird veröffentlicht. Die Zuwachsraten von Linux übertreffen die von Windows NT deutlich. &lt;br /&gt;
&lt;br /&gt;
====1999====&lt;br /&gt;
Der lange erwartete stabile Linux Kernel Version 2.2 wird freigegeben. Namhafte Firmen wie IBM kündigen ihre Unterstützung für Linux an. &lt;br /&gt;
&lt;br /&gt;
====2001====&lt;br /&gt;
Der lange erwartete stabile Linux Kernel Version 2.4 wird freigegeben. USB Unterstützung und eine neue Firewallimplementierung zeichnen ihn aus.&lt;br /&gt;
&lt;br /&gt;
====2003====&lt;br /&gt;
Linux Kernel Version 2.6 wird freigegeben. Am auffälligsten sind Änderungen bei der Modulverwaltung.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Distributionen===&lt;br /&gt;
{| Border=1 Cellpadding=2&lt;br /&gt;
| &lt;br /&gt;
|Url&lt;br /&gt;
|Paketformat&lt;br /&gt;
|-&lt;br /&gt;
|Red Hat&lt;br /&gt;
|www.redhat.com&lt;br /&gt;
|rpm&lt;br /&gt;
|-&lt;br /&gt;
|fedora&lt;br /&gt;
|fedora.redhat.com&lt;br /&gt;
|rpm&lt;br /&gt;
|-&lt;br /&gt;
|CentOS&lt;br /&gt;
|www.centos.org&lt;br /&gt;
|rpm&lt;br /&gt;
|-&lt;br /&gt;
|Suse/openSUSE&lt;br /&gt;
|www.opensuse.org&lt;br /&gt;
|rpm&lt;br /&gt;
|-&lt;br /&gt;
|Debian&lt;br /&gt;
|www.debian.org&lt;br /&gt;
|deb&lt;br /&gt;
|-&lt;br /&gt;
|Ubuntu&lt;br /&gt;
|www.ubuntu.com&lt;br /&gt;
|deb&lt;br /&gt;
|-&lt;br /&gt;
|Mandrake&lt;br /&gt;
|www.linux-mandrake.com&lt;br /&gt;
|rpm&lt;br /&gt;
|-&lt;br /&gt;
|Easy Linux&lt;br /&gt;
|www.easy-linux.de&lt;br /&gt;
|rpm&lt;br /&gt;
|-&lt;br /&gt;
|Turbo&lt;br /&gt;
|www.turbolinux.com&lt;br /&gt;
|rpm&lt;br /&gt;
|-&lt;br /&gt;
|minis&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|toms&lt;br /&gt;
|www.toms.net/rb&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|damn small linux&lt;br /&gt;
|www.damnsmalllinux.org&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|pocket-linux&lt;br /&gt;
|www.pocket-linux.org&lt;br /&gt;
|&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
====Bücher====&lt;br /&gt;
 Titel : Das Linux Anwenderhandbuch und Leitfaden für die Systemverwaltung&lt;br /&gt;
 Autor : Sebastian Hetze, Dirk Hohndel, Olaf Kirch und Martin Müller&lt;br /&gt;
 Verlag: Lunetix&lt;br /&gt;
 ISBN : 3-929764-06-7&lt;br /&gt;
&lt;br /&gt;
 Titel : Linux in a Nutshell&lt;br /&gt;
 Autor : Jessica Perry Hekman und die Mitarbeiter von O'Reilly &amp;amp; Associates&lt;br /&gt;
 Verlag: O'Reilly&lt;br /&gt;
 ISBN : 3-930673-57-6&lt;br /&gt;
&lt;br /&gt;
 Titel : Linux - Wegweiser zur Installation und Konfiguration&lt;br /&gt;
 Autor : Matt Welsh, Lar Kaufman, Matthias Kalle Dallheimer&lt;br /&gt;
 Verlag: O'Reilly&lt;br /&gt;
 ISBN : 3-930673-58-4 (deutsch), 1-56592-469-X (englisch)&lt;br /&gt;
&lt;br /&gt;
 Titel : Linux - Installation, Konfiguration, Anwendung&lt;br /&gt;
 Autor : Michael KoflerMultitasking&lt;br /&gt;
 Verlag: Addison-Wesley&lt;br /&gt;
 ISBN : 3-8273-1475-5&lt;br /&gt;
&lt;br /&gt;
 Titel : Linux - Wegweiser für Netzwerker&lt;br /&gt;
 Autor : Olaf Kirch&lt;br /&gt;
 Verlag: O'Reilly&lt;br /&gt;
 ISBN : 3-930673-18-5&lt;br /&gt;
&lt;br /&gt;
 Titel : TCP/IP-Netzwerk-Administration&lt;br /&gt;
 Autor : Craig Hunt&lt;br /&gt;
 Verlag: O'Reilly&lt;br /&gt;
 ISBN : 3-89721-110-6&lt;br /&gt;
&lt;br /&gt;
 Titel : Essential System Administration&lt;br /&gt;
 Autor : Eleen Frisch&lt;br /&gt;
 Verlag: O'Reilly&lt;br /&gt;
 ISBN : 1-56592-127-5&lt;br /&gt;
&lt;br /&gt;
==Betriebssystem==&lt;br /&gt;
===Was ist ein Betriebssystem?===&lt;br /&gt;
&lt;br /&gt;
Ein Betriebssystem liegt logisch gesehen zwischenAnwendungsprogramm und Hardware.&lt;br /&gt;
&lt;br /&gt;
Es nimmt die Anforderungen der Anwendungsprogramme entgegen und leitet&lt;br /&gt;
diese kontrolliert an die Hardware weiter. Kein Anwendungsprogramm sollte&lt;br /&gt;
direkt auf die Hardware zugreifen können. Den zentralen Zugang schafft einzig&lt;br /&gt;
das Betriebssystem. Somit kann das Betriebssystem unsinnige Anforderungen&lt;br /&gt;
oder Bedienungsfehler abblocken.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Image:Linux.jpg]]&lt;br /&gt;
&lt;br /&gt;
===Aufgaben eines Betriebssystems===&lt;br /&gt;
&lt;br /&gt;
# Verbergen der Komplexität der Maschine vor dem Anwender (Abstraktion)&lt;br /&gt;
# Bereitstellen einer Benutzerschnittstelle (&amp;quot;Kommandointerpreter&amp;quot;, &amp;quot;Shell&amp;quot;)&lt;br /&gt;
# Bereitstellen einer normierten Programmierschnittstelle (API)&lt;br /&gt;
# Verwaltung der Ressourcen der Maschine::&lt;br /&gt;
Hauptspeicher&lt;br /&gt;
Prozessor(en)&lt;br /&gt;
Hintergrundspeicher (Platte, Band, etc.)&lt;br /&gt;
Geräte (Terminal, Drucker, Plotter, etc.)&lt;br /&gt;
Rechenzeit&lt;br /&gt;
Koordination von Prozessen&lt;br /&gt;
&lt;br /&gt;
===Aufbau eines Betriebssystems===&lt;br /&gt;
&lt;br /&gt;
Ein Rechensystem besteht aus Hardware, Systemprogrammen und Anwendungs-&lt;br /&gt;
programmen. Unter einem Betriebssystem wird meist die Summe aus Betriebs-&lt;br /&gt;
systemkern (Kernel) und den wichtigsten Systemprogrammen verstanden. Ein&lt;br /&gt;
minimaler LINUX-Kernel besitzt ungefähr eine Größe von 400 - 800 kByte.&lt;br /&gt;
Weitere wichtige Systemkomponenten benötigen zusätzlich 10 - 100 Mbyte&lt;br /&gt;
Plattenplatz.&lt;br /&gt;
&lt;br /&gt;
Ein Betriebssystem stellt den Rechner als erweiterte Maschine (virtuelle&lt;br /&gt;
Maschine) über definierte Software-Schnittstellen zur Verfügung.&lt;br /&gt;
Das Betriebssystem dient als Betriebsmittelverwalter, der Anforderungen&lt;br /&gt;
befriedigt, protokolliert, abrechnet und vermittelt.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Aufgaben des Betriebssystemkerns:&lt;br /&gt;
&lt;br /&gt;
{| Border=1 Cellpadding=2&lt;br /&gt;
|Prozessverwaltung  (dispatching and scheduling)&lt;br /&gt;
| Mehrere Benutzer können mit mehreren Aktionen gleichzeitig im System arbeiten, ohne sich gegenseitig zu beeinflussen. Damit dies möglich ist,  müssen die Aktionen organisiert, koordiniert und verwaltet werden. Die zu verwaltende Einheit nennt man Prozess.&lt;br /&gt;
|-&lt;br /&gt;
|Speicherverwaltung   (memory management)&lt;br /&gt;
|Zuteilen von Speicherbereichen an laufende Prozesse, Schutz der Speicherbereiche vor unbefugten Zugriffen, bei Speicherengpässen: Auslagern von ganzen (swapping) oder von Teilen (paging) von Prozessen auf die Platte (swap file).&lt;br /&gt;
|-&lt;br /&gt;
|Dateiverwaltung  (file handling)&lt;br /&gt;
|Zuteilung von Plattenplatz für Programme, Benutzer und Systemdienste, Schreiben, Lesen und Strukturieren der Daten auf den Massenspeichern; Durch Bereitstellung einer entsprechenden Schnittstelle (VFS, virtual file system) kann der Kern Dateisysteme unterschiedlichster Art (EXT2, FAT, NFS, HPFS, NTFS, ...) ansprechen.&lt;br /&gt;
|-&lt;br /&gt;
|Geräteverwaltung  (resource management)&lt;br /&gt;
|Der Kern ermöglicht und kontrolliert den Zugriff auf die Hardware. Er steuert die Ein- und Ausgabetätigkeiten der Anwender. An den Kern&lt;br /&gt;
gebunden sind die entsprechenden Gerätetreiber (device driver), die damit eine Kommunikation zwischen Kern und Hardware ermöglichen.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
===Multitasking===&lt;br /&gt;
&lt;br /&gt;
Multitasking bedeutet, dass ein Rechner aus Anwendersicht mehrere Aufgaben&lt;br /&gt;
(Tasks) gleichzeitg übernehmen kann. Das Betriebssystem (OS) unterteilt die&lt;br /&gt;
gleichzeitig anstehenden Aufgaben in Einzelarbeitsschritte (Prozesse) und&lt;br /&gt;
managed durch ein Zeitscheibenverfahren (scheduling) die gleichmäßige&lt;br /&gt;
Abarbeitung der Prozesse.&lt;br /&gt;
&lt;br /&gt;
Es wird unterschieden zwischen:&lt;br /&gt;
&lt;br /&gt;
*non-präamptiven (kooperativen=die Ressourcen werden vom aktiven Prozess freigegeben, bei einem Hänger steht das ganze System)&lt;br /&gt;
&lt;br /&gt;
und&lt;br /&gt;
&lt;br /&gt;
*präamptiven (reinem=der Betriebssystemkern steuert Taskwechsel, indem nach einer festgelegten Zeit vom gerade aktiven Prozess zum nächsten weitergeschaltet wird)&lt;br /&gt;
&lt;br /&gt;
===Mehrprozessorbetrieb===&lt;br /&gt;
&lt;br /&gt;
Bei mehreren Prozessoren und Unterstützung durch das OS&lt;br /&gt;
(NT,Linux,Unix,Novell) können mehrere Tasks auf diese verteilt werden und&lt;br /&gt;
gleichzeitig bearbeitet werden. Nachteilig ist, dass dies nicht oder kaum von&lt;br /&gt;
Anwendungsprogrammen unterstützt wird und es zu Kommunikationsproblemen&lt;br /&gt;
zwischen den einzelnen Tasks kommen kann.&lt;br /&gt;
&lt;br /&gt;
===Arten von von Betriebssystemen===&lt;br /&gt;
&lt;br /&gt;
{|Border=1 Cellpadding=2&lt;br /&gt;
|&lt;br /&gt;
|SingleUser  &lt;br /&gt;
|Multiuser&lt;br /&gt;
|-&lt;br /&gt;
|Single Tasking&lt;br /&gt;
|MS - DOS&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|Multi Tasking&lt;br /&gt;
|Windows 3.x&lt;br /&gt;
|UNIX&lt;br /&gt;
|-&lt;br /&gt;
|&lt;br /&gt;
|Windows 95/98&lt;br /&gt;
|Linux&lt;br /&gt;
|-&lt;br /&gt;
|&lt;br /&gt;
|Windows NT4 ohne Erweiterungen&lt;br /&gt;
|VMS&lt;br /&gt;
|-&lt;br /&gt;
|&lt;br /&gt;
|OS/2 &lt;br /&gt;
|Windows NT mit  Erweiterungen&lt;br /&gt;
|-&lt;br /&gt;
|&lt;br /&gt;
|Apple&lt;br /&gt;
|Windows 2000, XP, 2003&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
===SHELL===&lt;br /&gt;
&lt;br /&gt;
Wenn man mit Linux arbeiten will, kann man nicht direkt mit dem Betriebssystem&lt;br /&gt;
kommunizieren. Man braucht dazu ein Hilfsprogramm, welches die&lt;br /&gt;
Kommandoeingaben ordnungsgemäß an das Betriebssystem weiterleitet. Dieses&lt;br /&gt;
Hilfsprogramm hat den Namen Shell.&lt;br /&gt;
&lt;br /&gt;
Die Shell schirmt den Betriebssystemkern von den Anwendungsprogrammen ab.&lt;br /&gt;
Die unterschiedlichen Shells erfüllen alle dieselbe Aufgabe, sie unterscheiden sich&lt;br /&gt;
allerdings in ihrer Syntax.&lt;br /&gt;
&lt;br /&gt;
==Die Installation im Überblick==&lt;br /&gt;
&lt;br /&gt;
Die Installation von Linux geschieht in folgenden Schritten:&lt;br /&gt;
&lt;br /&gt;
# Analyse (Welche Hardware habe ich? ,Hab ich weitere Betriebsysteme?)&lt;br /&gt;
# Booten des Linux-Kernels. (von CD oder Diskette)&lt;br /&gt;
# Laden einer RAM-Disk (das macht das Installationsprogramm automatisch).&lt;br /&gt;
# Partitionieren der Festplatte (fdisk).&lt;br /&gt;
# Einrichten der Swappartition (mkswap), Formatieren der Festplatte (mkfs).&lt;br /&gt;
# Montieren der Dateisysteme (mount), Aktivieren der Swapbereiche (swapon).&lt;br /&gt;
# Kopieren und Auspacken der Daten vom Installationsmedium auf die Festplatte (die eigentliche Installation). (rpm, dpkg oder tar).&lt;br /&gt;
# Geeignete Wahl der Bootmethode unter Berücksichtigung von Punkt 1 (grub, lilo).&lt;br /&gt;
# Konfiguration des Systems (Netz, Modem etc...).&lt;br /&gt;
&lt;br /&gt;
==Erste Schritte==&lt;br /&gt;
===Anmelden===&lt;br /&gt;
Sie können sich nun mit dem Usernamen und dem Passwort, das sie bei der Installation angelegt haben anmelden!&lt;br /&gt;
[[Image:benutzer.jpg]]&lt;br /&gt;
&lt;br /&gt;
[[Image:passwd.jpg]]&lt;br /&gt;
&lt;br /&gt;
===Terminal öffnen===&lt;br /&gt;
&lt;br /&gt;
Ein Terminal öffnen Sie über das Startmenü:&lt;br /&gt;
&lt;br /&gt;
[[Image:Terminalde.jpg]]&lt;br /&gt;
&lt;br /&gt;
Das geöffnete Terminal sieht dann folgendermaßen aus:&lt;br /&gt;
&lt;br /&gt;
[[Image:Terminalde2.jpg]]&lt;br /&gt;
&lt;br /&gt;
===Sudo===&lt;br /&gt;
Rootrechte erlangen sie über den &amp;quot;Sudo&amp;quot;-Befehl&lt;br /&gt;
 &lt;br /&gt;
''Den nächsten Befehl als root ausführen''&lt;br /&gt;
 xinux@zero:~$ sudo cat /etc/shadow&lt;br /&gt;
 [sudo] password for xinux:&lt;br /&gt;
&lt;br /&gt;
''Eine komplette Sitzung als root starten''&lt;br /&gt;
 xinux@zero:~$ sudo -i&lt;br /&gt;
 [sudo] password for xinux:&lt;br /&gt;
 root@zero:~#&lt;br /&gt;
&lt;br /&gt;
===Virtuelle Konsolen===&lt;br /&gt;
&lt;br /&gt;
In die Virtuelle Konsole gelangen sie über &amp;quot;STRG+ALT+(F1-F6)&amp;quot;.&lt;br /&gt;
Sie funktioniert wie ein ganz normales Terminal, und mit &amp;quot;ALT+F7&amp;quot;&lt;br /&gt;
gelangen sie wieder zurück auf die grafische Benutzeroberfläche&lt;br /&gt;
&lt;br /&gt;
===Abmelden===&lt;br /&gt;
&lt;br /&gt;
Abmelden können Sie sich wieder über das Startmenu unter:&lt;br /&gt;
&lt;br /&gt;
[[Image:Logout.jpg]]&lt;br /&gt;
&lt;br /&gt;
Fals sie nur einzelne Sitzungen in einem der Terminals oder &lt;br /&gt;
den Virtuellen Konsolen Abmelden wollen benutzen sie dazu den Befehl: &amp;quot;exit&amp;quot;&lt;br /&gt;
&lt;br /&gt;
===Herunterfahren===&lt;br /&gt;
&lt;br /&gt;
Das Herunterfahren funktioniert auf dem selben Weg.&lt;br /&gt;
&lt;br /&gt;
Entweder sie Benutzen wieder das Startmenü und benutzen diesmal den &amp;quot;Ausschalten ...&amp;quot; Knopf,&lt;br /&gt;
&lt;br /&gt;
Oder sie geben den äquivalenten &amp;quot;shutdown&amp;quot;-Befehl in einem Terminal bzw. der virtuellen Konsole ein.&lt;br /&gt;
&lt;br /&gt;
Allerdings müssen sie dazu als Administrator angemeldet sein s. &amp;quot;Sudo&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Wenn Sie den &amp;quot;shutdown&amp;quot;-Befehl benutzen wollen muss hinter den Befehl&lt;br /&gt;
&lt;br /&gt;
eine Zeitangabe in Minuten oder das wort &amp;quot;now&amp;quot; für sofortiges Ausschalten hinzugefügt werden:&lt;br /&gt;
&lt;br /&gt;
 xinux@zero:~$ sudo -i&lt;br /&gt;
 root@zero:~# shutdown 60&lt;br /&gt;
 &lt;br /&gt;
 Broadcast message from xinux@zero &lt;br /&gt;
         (/dev/pts/3) at 14:29 ...&lt;br /&gt;
 &lt;br /&gt;
 The system is going down for maintenance in 60 minutes!&lt;br /&gt;
&lt;br /&gt;
Sollten sie den Befehl widerrufen wollen dann drücken sie &amp;quot;STRG+C&amp;quot;,&lt;br /&gt;
&lt;br /&gt;
in dem Terminal in dem der shutdown Befehl gestartet wurde,&lt;br /&gt;
&lt;br /&gt;
oder geben sie den &amp;quot;shutdown&amp;quot;-Befehl zusammen mit der Abbruchoption &amp;quot;-c&amp;quot; in einem anderen Terminal ein:&lt;br /&gt;
&lt;br /&gt;
 root@zero:~# shutdown -c&lt;br /&gt;
&lt;br /&gt;
 shutdown: Shutdown cancelled&lt;br /&gt;
 root@zero:~# &lt;br /&gt;
&lt;br /&gt;
Wenn Sie den Rechner Neustarten möchten gibt es dazu die Option &amp;quot;-r&amp;quot; für den &amp;quot;shutdown&amp;quot;-Befehl&lt;br /&gt;
&lt;br /&gt;
oder den &amp;quot;reboot&amp;quot;-Befehl die beide auch als root ausgeführt werden müssen:&lt;br /&gt;
&lt;br /&gt;
 xinux@zero:~$ sudo -i&lt;br /&gt;
 [sudo] password for xinux: &lt;br /&gt;
 root@zero:~# shutdown -r now&lt;br /&gt;
&lt;br /&gt;
 root@zero:~# reboot&lt;br /&gt;
&lt;br /&gt;
===&amp;quot;man&amp;quot;===&lt;br /&gt;
&lt;br /&gt;
Programm zum Einsehen der Online-Manuals&lt;br /&gt;
&lt;br /&gt;
Die Manuals sind in folgende Sektionen unterteilt:&lt;br /&gt;
# Ausführbare Programme oder Shellbefehle&lt;br /&gt;
# Systemaufrufe (Kernelfunktionen)&lt;br /&gt;
# Bibliotheksaufrufe (Funktionen in System-Bibliotheken)&lt;br /&gt;
# Spezielle Dateien (gewöhnlich in /dev)&lt;br /&gt;
# Dateiformate und Konventionen, z. B. /etc/passwd&lt;br /&gt;
# Spiele&lt;br /&gt;
# Makropakete und Konventionen, z. B. man(7), groff(7)&lt;br /&gt;
# Systemadministrationsbefehle (in der Regel nur für root)&lt;br /&gt;
# Kernelroutinen [Nicht Standard]&lt;br /&gt;
&lt;br /&gt;
Aufruf eines Manuals erfolgt durch ''man kommando''&lt;br /&gt;
Beendet wird durch Drücken des Buchstabens q&lt;br /&gt;
Gesucht wird vorwärts durch Eingabe eines /suchausdruck&lt;br /&gt;
Gesucht wird rückwärts durch Eingabe eines ?suchausdruck&lt;br /&gt;
&lt;br /&gt;
Beispiele:&lt;br /&gt;
&lt;br /&gt;
      man passwd        Anschauen der Manualseite zum Programm passwd&lt;br /&gt;
      man 5 passwd      Anschauen der Manualseite zur Datei /etc/passwd&lt;br /&gt;
      man -a passwd     Anschauen aller Manualseiten zu passwd&lt;br /&gt;
      man -k passwd     Durchsucht die Kurzbeschreibungen der Manualseite&lt;br /&gt;
                        nach passwd und gibt alle Treffer aus&lt;br /&gt;
      man -f passwd      Gibt alle gefunden Kurzbescheibungen zu passwd aus&lt;br /&gt;
      man -L en passwd Gibt englische Manualseiten aus&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Was geht vor auf meinem System? (date,who)===&lt;br /&gt;
&lt;br /&gt;
Das Kommando date dient zur Abfrage von Datum und Uhrzeit.&lt;br /&gt;
&lt;br /&gt;
 xinux@zero:~ &amp;gt; date&lt;br /&gt;
 Fre Mär 16 16:35:03 CET 2001&lt;br /&gt;
&lt;br /&gt;
oder auch Anzeige der Grennwich Zeit:&lt;br /&gt;
&lt;br /&gt;
 xinux@zero:~ &amp;gt; date -u&lt;br /&gt;
 Fre Mär 16 15:35:34 UTC 2001&lt;br /&gt;
&lt;br /&gt;
 xinux@zero:~ &amp;gt; date -u &amp;quot;+%X&amp;quot;&lt;br /&gt;
 15:37:19&lt;br /&gt;
&lt;br /&gt;
 xinux@zero:~ &amp;gt; date -u &amp;quot;+%x&amp;quot;&lt;br /&gt;
 01/15/02&lt;br /&gt;
&lt;br /&gt;
who zeigt alle angemeldeten Benutzer an&lt;br /&gt;
&lt;br /&gt;
 thomas@cardassia:~ &amp;gt; who&lt;br /&gt;
 thomas             tty1 Feb 27 16:39&lt;br /&gt;
 thomas             tty2 Mar 2 17:08&lt;br /&gt;
 tina               tty6 Mar 16 16:38&lt;br /&gt;
&lt;br /&gt;
Mit `who --help' bekommen Sie mehr Informationen.&lt;br /&gt;
&lt;br /&gt;
 thomas@cardassia:~ &amp;gt; who --help&lt;br /&gt;
&lt;br /&gt;
Benutzung: who [OPTION]... [ DATEI | ARG1 ARG2 ]&lt;br /&gt;
&lt;br /&gt;
 -H, --heading             print line of column headings&lt;br /&gt;
 -i, -u, --idle            add user idle time as HOURS:MINUTES, . or old&lt;br /&gt;
 -l, --lookup              attempt to canonicalize hostnames via DNS&lt;br /&gt;
 -m                        only hostname and user associated with stdin&lt;br /&gt;
 -q, --count               all login names and number of users logged on&lt;br /&gt;
 -s                        (ignored)&lt;br /&gt;
 -T, -w, --mesg            add user's message status as +, - or ?&lt;br /&gt;
     --message             same as -T&lt;br /&gt;
     --writable            same as -T&lt;br /&gt;
     --help                display this help and exit&lt;br /&gt;
     --version             output version information and exit&lt;br /&gt;
&lt;br /&gt;
==Das UNIX-Dateisystem==&lt;br /&gt;
===Verzeichnisbaum===&lt;br /&gt;
&lt;br /&gt;
[[Image:vztree.jpg]]&lt;br /&gt;
&lt;br /&gt;
Das Betriebssystem UNIX besitzt ein hierarchisches Dateisystem. Es besteht aus:&lt;br /&gt;
* Dateien (Files)&lt;br /&gt;
Dateien speichern Informationen (Text, Bilder, Sound, Videos, Programme) und&lt;br /&gt;
werden über den Dateinamen angesprochen.&lt;br /&gt;
&lt;br /&gt;
* Verzeichnissen (Directories, Kataloge)&lt;br /&gt;
Verzeichnisse besitzen ebenfalls einen Namen und dienen zur Ordnung des&lt;br /&gt;
Dateisystems. Ein Verzeichnis kann Dateien und Unterverzeichnisse&lt;br /&gt;
(Subdirectories) enthalten. Das oberste Verzeichnis im Dateisystem heisst&lt;br /&gt;
Rootverzeichnis oder kurz Root und wird durch / (sprich: slash)&lt;br /&gt;
gekennzeichnet.&lt;br /&gt;
&lt;br /&gt;
Im Gegensatz zu Windows kennt UNIX keine Laufwerke.&lt;br /&gt;
Das obige Bild zeigt ein typisches UNIX-Dateisystem.&lt;br /&gt;
Unterhalb des Rootverzeichnisses befinden sich eine Vielzahl vonVerzeichnissen.&lt;br /&gt;
&lt;br /&gt;
===Wichtige Verzeichnisse===&lt;br /&gt;
&lt;br /&gt;
• '''Homeverzeichnis'''&lt;br /&gt;
&lt;br /&gt;
das Verzeichnis, in dem man sich unmittelbar nach dem Anmelden befindet. Das&lt;br /&gt;
Homeverzeichnis wird vom Systemverwalter eingerichtet; jeder Anwender&lt;br /&gt;
besitzt ein festes Homeverzeichnis. z.B. /home/hans&lt;br /&gt;
&lt;br /&gt;
~ (Tilde) bzw. $HOME (Shellvariable) kennzeichnen das Homeverzeichnis.&lt;br /&gt;
&lt;br /&gt;
• '''Aktuelles Verzeichnis'''&lt;br /&gt;
&lt;br /&gt;
Verzeichnis, in dem man sich aktuell befindet.&lt;br /&gt;
Das aktuelle Verzeichnis wird mit dem Befehl cd (change directory) oder per&lt;br /&gt;
Mausklick verändert.&lt;br /&gt;
Ein einfacher Punkt . kennzeichnet das aktuelle Verzeichnis.&lt;br /&gt;
&lt;br /&gt;
• '''Elternverzeichnis'''&lt;br /&gt;
&lt;br /&gt;
Verzeichnis unmittelbar oberhalb des aktuellen Verzeichnisses.&lt;br /&gt;
Jedes Verzeichnis ausser / besitzt genau ein Elternverzeichnis.&lt;br /&gt;
Zwei Punkte .. kennzeichnen das Elternverzeichnis (abhängig vom aktuellen&lt;br /&gt;
VZ).&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Absoluter Pfadname:===&lt;br /&gt;
&lt;br /&gt;
Beschreibt ausgehend vom Rootverzeichnis den Weg zum Zielverzeichnis oder zur&lt;br /&gt;
Zieldatei. (Welche Verzeichnisse müssen ausgehend von / durchlaufen werden, um&lt;br /&gt;
zum Ziel zu kommen?) Ein absoluter Pfadname beginnt immer mit / .&lt;br /&gt;
&lt;br /&gt;
===Relativer Pfadname:===&lt;br /&gt;
&lt;br /&gt;
Beschreibt ausgehend vom aktuellen Verzeichnis den Weg zum Zielverzeichnis&lt;br /&gt;
oder zur Zieldatei; ein relativer Pfadname beginnt nicht mit / .&lt;br /&gt;
/home/suxer&lt;br /&gt;
absoluter Pfadname für das Verzeichnis sub1 im Homeverzeichnis von suxer&lt;br /&gt;
&lt;br /&gt;
===Verzeichnisstruktur===&lt;br /&gt;
&lt;br /&gt;
 /bin         Kommandos die beim starten benötigt werden (Zugriff hat jeder)&lt;br /&gt;
 /sbin        Wichtige System-Programme (In der Regel root vorberhalten)&lt;br /&gt;
 /boot        Hier findet man die Dateien des Bootmanagers und des Kernel.&lt;br /&gt;
 /dev         In diesem Verzeichnis stehen die Gerätedateien (Devices),&lt;br /&gt;
 /home        Alle Heimatverzeichnisse der Nutzer findet man hier.&lt;br /&gt;
 /lib         Beim Systemstart benötigten Bibliotheken und Modules stehen hier.&lt;br /&gt;
 /mnt         Mountpunkt für temporäre Partitionen&lt;br /&gt;
 /opt         Software, die nicht Installationsumfang von Linux gehören.&lt;br /&gt;
 /root        Heimatverzeichnis des Administrators.&lt;br /&gt;
 /tmp         Temporäre Dateien können hier abgelegt werden&lt;br /&gt;
 /usr         statische Dateien (kann read-only gemountet sein)&lt;br /&gt;
 /var         variable Dateien (muss beschreibar sein )&lt;br /&gt;
 /etc         Konfiguartionsdateien und Startscripte&lt;br /&gt;
 /proc        Virtuelles Dateisystem -&amp;gt; repräsentiert den Kernel&lt;br /&gt;
&lt;br /&gt;
===Unterverzeichnisse von /usr===&lt;br /&gt;
&lt;br /&gt;
 sbin         Programme für root die beim Start nicht benötigt werden&lt;br /&gt;
 bin          Programme für alle die beim Start nicht benötigt werden&lt;br /&gt;
 X11R6        Dateien des X-Window-Sytems&lt;br /&gt;
 bin          Ausführbare Programme&lt;br /&gt;
 doc          Dokumentationen&lt;br /&gt;
 etc          Konfigurationsdateien&lt;br /&gt;
 games        Spiele&lt;br /&gt;
 include      Headerdateien für C-Programme&lt;br /&gt;
 local        Pakete die nicht zur Distribution gehören ähnlich /opt&lt;br /&gt;
 share        Pakete die von mehreren Paketen genutzt werden&lt;br /&gt;
 share/man    Die Manualpages&lt;br /&gt;
 share/info   Seiten des Infosystems&lt;br /&gt;
 share/doc    Dokumentationen&lt;br /&gt;
 src          Sources von Programmen (Kernel und andere)&lt;br /&gt;
&lt;br /&gt;
===Unterverzeichnisse von /var===&lt;br /&gt;
&lt;br /&gt;
 cache        Zwischenspreicher für Progammes&lt;br /&gt;
 games        Variable Daten der Games (Scores etc...)&lt;br /&gt;
 lock         Sperrdateien&lt;br /&gt;
 log          Die Logdateien (wichtiges Verzeichnis für Admins)&lt;br /&gt;
 mail         Das Mailsystem&lt;br /&gt;
 run          Dateien zu laufemdem Prozessen&lt;br /&gt;
 spool        Spooldateien (z.B. für das Drucksystem&lt;br /&gt;
 state        Statusinfos&lt;br /&gt;
 tmp          Wie /tmp eventuell nicht auf root Partion&lt;br /&gt;
&lt;br /&gt;
==Einfache Komandos==&lt;br /&gt;
===cd: Wechseln des Arbeitsverzeichnis===&lt;br /&gt;
&lt;br /&gt;
Um festzustellen in welchem Verzeichnis man sich befindet, sollte man den&lt;br /&gt;
Befehl &amp;quot;pwd&amp;quot; benutzen,&lt;br /&gt;
&lt;br /&gt;
und mit dem Befehl &amp;quot;cd&amp;quot; kann man zwischen den Verzeichnissen wechseln:&lt;br /&gt;
&lt;br /&gt;
Wechsele ins homeverzeichnis von Xinux&lt;br /&gt;
&lt;br /&gt;
 xinux@zero:~$ cd /home/xinux/&lt;br /&gt;
 xinux@zero:~$ pwd&lt;br /&gt;
 /home/xinux&lt;br /&gt;
&lt;br /&gt;
cd ~ -&amp;gt; wechsele ins jeweilige Homeverzeichnis&lt;br /&gt;
&lt;br /&gt;
cd .. -&amp;gt; wechsele ein Verzeichnis höher&lt;br /&gt;
&lt;br /&gt;
cd ../verzeichnis -&amp;gt; wechsele in eine paralleles Verzeichnis &amp;lt;- (ist eine relative Pfadangabe !)&lt;br /&gt;
&lt;br /&gt;
cd - -&amp;gt; wechsele in das Verzeichnis, in dem vorher gearbeitet wurde.&lt;br /&gt;
&lt;br /&gt;
Mit cd / wechselt man in das Wurzelverzeichnis.&lt;br /&gt;
&lt;br /&gt;
 xinux@zero:/var/log$ cd /&lt;br /&gt;
 xinux@zero:/$ pwd&lt;br /&gt;
 /&lt;br /&gt;
&lt;br /&gt;
===ls: Listing===&lt;br /&gt;
&lt;br /&gt;
Den Inhalt von Verzeichnissen kann man sich mit dem Befehl &amp;quot;ls&amp;quot; anzeigen lassen&lt;br /&gt;
wobei &amp;quot;ls&amp;quot; eine Vielzahl von Optionen besitzt:&lt;br /&gt;
&lt;br /&gt;
 ls                                  standard&lt;br /&gt;
 ls -l                               langes listing&lt;br /&gt;
 ls -a                               alle Dateien&lt;br /&gt;
 ls -i                               mit Inode&lt;br /&gt;
 ls -h                               gut lesbare Dateigröße&lt;br /&gt;
 ls -d                               Verzechnis wird angezeigt, nicht der Inhalt&lt;br /&gt;
 ls -L                               sortiert nach Größe&lt;br /&gt;
 ls -t                               sortiert nach Datum&lt;br /&gt;
 ls -F                               mit nützlichem Anhang&lt;br /&gt;
&lt;br /&gt;
 xinux@zero:/$ ls -l /var/log/messages&lt;br /&gt;
 -rw-r----- 1 syslog adm 2296 2009-06-16 10:05 /var/log/messages&lt;br /&gt;
&lt;br /&gt;
===more: Seitenweises Anzeigen von Seiten===&lt;br /&gt;
 root@zero:~# more /var/log/messages&lt;br /&gt;
 ...&lt;br /&gt;
&lt;br /&gt;
===head: erste Zeilen anzeigen===&lt;br /&gt;
Erste 10 Zeilen anzeigen&lt;br /&gt;
 root@zero:~# head /var/log/messages&lt;br /&gt;
 Jun 15 12:37:08 zero syslogd 1.5.0#5ubuntu3: restart.&lt;br /&gt;
 Jun 15 12:38:43 zero kernel: [  830.065036] mtrr: your processor doesn't support write-combining&lt;br /&gt;
 Jun 15 12:46:05 zero pulseaudio[4817]: pid.c: Stale PID file, overwriting.&lt;br /&gt;
 Jun 15 13:05:24 zero -- MARK --&lt;br /&gt;
 ...&lt;br /&gt;
&lt;br /&gt;
Erste zwei Zeilen anzeigen&lt;br /&gt;
 root@zero:~# head -n 2 /var/log/messages&lt;br /&gt;
 Jun 15 12:37:08 zero syslogd 1.5.0#5ubuntu3: restart.&lt;br /&gt;
 Jun 15 12:38:43 zero kernel: [  830.065036] mtrr: your processor doesn't support write-combining&lt;br /&gt;
&lt;br /&gt;
===tail: letzte Zeilen anzeigen===&lt;br /&gt;
 &lt;br /&gt;
 root@zero:~# tail /var/log/syslog&lt;br /&gt;
 ...&lt;br /&gt;
 Jun 19 11:19:35 zero -- MARK --&lt;br /&gt;
 Jun 19 11:39:35 zero -- MARK --&lt;br /&gt;
 Jun 19 11:59:36 zero -- MARK --&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Letze 5 Zeilen anzeigen&lt;br /&gt;
 root@zero:~# tail -n 5 /var/log/auth.log&lt;br /&gt;
 Jun 18 14:30:01 zero CRON[12040]: pam_unix(cron:session): session closed for user root&lt;br /&gt;
 Jun 18 14:39:01 zero CRON[12191]: pam_unix(cron:session): session opened for user root by (uid=0)&lt;br /&gt;
 Jun 18 14:39:01 zero CRON[12191]: pam_unix(cron:session): session closed for user root&lt;br /&gt;
 Jun 18 14:40:01 zero CRON[12237]: pam_unix(cron:session): session opened for user root by (uid=0)&lt;br /&gt;
 Jun 18 14:40:01 zero CRON[12237]: pam_unix(cron:session): session closed for user root&lt;br /&gt;
&lt;br /&gt;
Letze Zeilen anzeigen und fortlaufend aktualisieren&lt;br /&gt;
 root@zero:~# tail -f /var/log/syslog&lt;br /&gt;
 ...&lt;br /&gt;
&lt;br /&gt;
===mkdir: Ein neues Verzeichnis erstellen===&lt;br /&gt;
&lt;br /&gt;
 mkdir        verzeichnis&lt;br /&gt;
Erstellt ein Verzeichnis im working directory (wd)&lt;br /&gt;
&lt;br /&gt;
 mkdir  -p    ver1/ver2&lt;br /&gt;
Erstellt ein Verzeichnis ver2 unterhalb von ver1&lt;br /&gt;
wenn ver1 nicht existiert wird es erstellt&lt;br /&gt;
&lt;br /&gt;
 mkdir -m 753 ver1&lt;br /&gt;
Es wird das Verzeichnis ver1 erstellt mit der mask 753&lt;br /&gt;
&lt;br /&gt;
 mkdir -v     ver1&lt;br /&gt;
Geschwätzige Ausgabe :)&lt;br /&gt;
&lt;br /&gt;
===Zum Löschen von leeren Verzeichnissen wird rmdir benutzt===&lt;br /&gt;
&lt;br /&gt;
 rmdir           ver1&lt;br /&gt;
Löscht das leere Verzeichnis ver1&lt;br /&gt;
&lt;br /&gt;
 rmdir -v        ver1&lt;br /&gt;
Löscht das leere Verzeichnis ver1 und ist geschwätzig&lt;br /&gt;
&lt;br /&gt;
 rmdir -p        /ver1/ver2/ver3&lt;br /&gt;
Löscht das Verzeichnis ver3; wenn dadurch ver2 ein leeres&lt;br /&gt;
Verzeichnis wird, wird dieses auch gelöscht , wenn ver1&lt;br /&gt;
dadurch ein leeres Verzeichnis wird, wird auch dieses gelöscht.&lt;br /&gt;
&lt;br /&gt;
===touch Verändern des Zeitstempels===&lt;br /&gt;
&lt;br /&gt;
Mit touch können wir eine neue leere Datei erzeugen (das ist nicht der eigentliche&lt;br /&gt;
Zweck von touch, eigentlich wird der Zeitstempel geändert)&lt;br /&gt;
&lt;br /&gt;
 touch            dateiname&lt;br /&gt;
&lt;br /&gt;
===Kopieren=== &lt;br /&gt;
cp ist das Kommando um Dateien zu kopieren &lt;br /&gt;
&lt;br /&gt;
Eine Kopie von dat1 mit dem Namen dat2 erstellen:&lt;br /&gt;
&lt;br /&gt;
 xinux@zero:~$ cp dat1 dat2&lt;br /&gt;
&lt;br /&gt;
Eine Kopie von dat1 ins Verzeichnis ver2 erstellen:&lt;br /&gt;
&lt;br /&gt;
 xinux@zero:~$ cp dat1 ver2/&lt;br /&gt;
 &lt;br /&gt;
Eine Kopie erstellen mit ausführlicher Anzeige:&lt;br /&gt;
&lt;br /&gt;
 xinux@zero:~$ cp -v dat1 dat2&lt;br /&gt;
 `dat1' -&amp;gt; `dat2'&lt;br /&gt;
&lt;br /&gt;
Eine Kopie erstellen mit Rückfrage fals etwas überschrieben wird:&lt;br /&gt;
&lt;br /&gt;
 xinux@zero:~$ cp -i dat1 dat2&lt;br /&gt;
 cp: overwrite `dat2'?&lt;br /&gt;
&lt;br /&gt;
Eine Kopie erstellen und die Rückfrage überbrücken:&lt;br /&gt;
&lt;br /&gt;
 xinux@zero:~$ cp -f dat1 dat2&lt;br /&gt;
&lt;br /&gt;
Eine Kopie von dat1 ins Verzeichnis ver2 erstellen fals keine neuere Version von dat1 vorliegt:&lt;br /&gt;
&lt;br /&gt;
 xinux@zero:~$ cp -u dat1 ver2/&lt;br /&gt;
&lt;br /&gt;
Eine Kopie erstellen fals ver2 auf dem selben Dateisystem wie dat1 liegt:&lt;br /&gt;
&lt;br /&gt;
 xinux@zero:~$ cp -x dat1 ver2/&lt;br /&gt;
&lt;br /&gt;
Eine Kopie von ver1, die als ver2 oder unter ver2 als ver1 gespeichert wird erstellen:&lt;br /&gt;
&lt;br /&gt;
 xinux@zero:~$ cp -r ver1/ ver2/&lt;br /&gt;
&lt;br /&gt;
Eine Kopie von einer Datei erstellen und ihre Attribute beibehalten:&lt;br /&gt;
&lt;br /&gt;
 xinux@zero:~$ cp -p sux1 sux2&lt;br /&gt;
&lt;br /&gt;
Eine Kopie erstellen bei der die Links erhalten bleiben:&lt;br /&gt;
&lt;br /&gt;
 xinux@zero:~$ cp -r ver1/ ver2/&lt;br /&gt;
&lt;br /&gt;
Eine Kopie erstellen zum Archivieren (-dpr):&lt;br /&gt;
&lt;br /&gt;
 xinux@zero:~$ cp -a ver1/ ver2/&lt;br /&gt;
&lt;br /&gt;
===rm: Löschen einer Datei===&lt;br /&gt;
&lt;br /&gt;
Um Dateien zu löschen, brauchen wir das Kommando &amp;quot;rm&amp;quot;:&lt;br /&gt;
&lt;br /&gt;
 rm               dat1        dat1 wird gelöscht&lt;br /&gt;
 rm         -i    dat1        dat1 wird nach Bestätigung gelöscht&lt;br /&gt;
 rm         -f    dat1        dat1 wird ohne Rückfragen gelöscht&lt;br /&gt;
 rm         -v    dat1        dat1 wird glöscht (geschwätzige Ausgabe)&lt;br /&gt;
 rm         -r    ver1        Löschen von nicht leeren Verzeichnissen&lt;br /&gt;
                              Achtung !!! Als root kann man sich damit Teile&lt;br /&gt;
                              oder sogar den gesamten Verzeichnisbaum&lt;br /&gt;
                              absägen !!!&lt;br /&gt;
&lt;br /&gt;
===mv: Verschieben===&lt;br /&gt;
&lt;br /&gt;
Mit dem Befehl &amp;quot;mv&amp;quot; werden Daten verschoben, folgendes gilt:&lt;br /&gt;
&lt;br /&gt;
 mv          dat1 dat2         &lt;br /&gt;
Die Datei dat1 wird in dat2 umbenannt&lt;br /&gt;
 mv          dat1 /ver1        &lt;br /&gt;
Die Datei dat1 wird nach /ver1 verschoben&lt;br /&gt;
&lt;br /&gt;
Die Parameter und ihre Bedeutung:&lt;br /&gt;
&lt;br /&gt;
      -i                      wenn eine Datei exisitiert wird vor dem&lt;br /&gt;
                              Überschreiben nachgefragt&lt;br /&gt;
      -v                      verbose (geschwätzig)&lt;br /&gt;
      -u                      nur neuere Daten werden bei Bedarf überschrieben&lt;br /&gt;
      -b                      wenn überschrieben werden soll, wird ein Backup&lt;br /&gt;
                              erstellt&lt;br /&gt;
      -S ENDUNG               das Backup bekommt die Endung ENDUNG&lt;br /&gt;
&lt;br /&gt;
===su Benutzer wechseln===&lt;br /&gt;
&lt;br /&gt;
 su -             &lt;br /&gt;
Wechsel zum Rootaccount, wie wenn dieser sich neu anmelden würde. (Bsp: su -)&lt;br /&gt;
&lt;br /&gt;
 su Benutzernamen &lt;br /&gt;
Wechsel der Identität zu Benutzer (gegebenenfalls Passwortabfrage)&lt;br /&gt;
&lt;br /&gt;
 su -c Kommando   &lt;br /&gt;
Kommando wird als rootaccount ausgeführt&lt;br /&gt;
&lt;br /&gt;
==Der Standard Editor vi==&lt;br /&gt;
Der vi ist der Standardeditor in der Unixwelt. Er ist in jedem Unix-Derivat&lt;br /&gt;
enthalten.&lt;br /&gt;
Der Editor hat zwar den schlechten Ruf umständlich zu bedienen zu sein, ist&lt;br /&gt;
jedoch sehr leistungsfähig und systemübergreifend verfügbar. Beim vi handelt es&lt;br /&gt;
sich um einen rein textorientierten Editor, der mittels eigener Kommandos&lt;br /&gt;
gesteuert wird.&lt;br /&gt;
&lt;br /&gt;
Der Editor VIM ist eine weitere Verbesserung von VI und leichter zu bedienen.&lt;br /&gt;
Und unter Ubuntu/Debian mit &amp;quot;apt-get install vim&amp;quot; zu installieren.&lt;br /&gt;
&lt;br /&gt;
===Starten des Editors:===&lt;br /&gt;
&lt;br /&gt;
Der Editorstart erfolgt einfach durch die Eingabe des Kommandos vi mit dem&lt;br /&gt;
Dateinamen der zu editierenden Datei als Parameter.&lt;br /&gt;
Beispiel:        &lt;br /&gt;
 vi sux.txt&lt;br /&gt;
&lt;br /&gt;
===Die Betriebsmodi des vi:===&lt;br /&gt;
&lt;br /&gt;
Ein Umstand, der dem vi den Ruf der komplizierten Bedienbarkeit zugetragen hat,&lt;br /&gt;
sind die unterschiedlichen Betriebsmodi des Editors. Genauer gesagt verfügt der&lt;br /&gt;
vi über drei Betriebsmodi:&lt;br /&gt;
&lt;br /&gt;
====Kommandomodus:====&lt;br /&gt;
&lt;br /&gt;
Innerhalb dieses Modus werden die eingegebenen Zeichen direkt als Befehle des&lt;br /&gt;
Editors interpretiert und ausgeführt. Dabei gibt es weder ein Bereitschaftszeichen&lt;br /&gt;
(Prompt) noch ein Echo (Ausgabe). Der Kommandomodus ist der Modus, in dem&lt;br /&gt;
sich der vi direkt nach seinem Start befindet.&lt;br /&gt;
&lt;br /&gt;
====Zeilenmodus oder Exmodus:====&lt;br /&gt;
&lt;br /&gt;
Dieser Modus ist der einzige Modus mit einem eigenen Bereitschaftszeichen,&lt;br /&gt;
nämlich dem Doppelpunkt (:). Das Prompt wird ebenso wie die Befehlsausgaben&lt;br /&gt;
in der Statuszeile angezeigt.&lt;br /&gt;
&lt;br /&gt;
====Eingabemodus:====&lt;br /&gt;
&lt;br /&gt;
Der Eingabemodus ist derjenige, in welchem der zu bearbeitende Text bearbeitet&lt;br /&gt;
werden kann. Alle hier eingegebenen Zeichen werden als Text für die aktuelle&lt;br /&gt;
Datei interpretiert. Zwischen den unterschiedlichen Modi kann jederzeit&lt;br /&gt;
gewechselt werden. Von Kommandomodus gelangen Sie durch mehere Wege in&lt;br /&gt;
den Eingabemodus. Man kann durch folgende Aktionen wechslen&lt;br /&gt;
&lt;br /&gt;
{| border=1 cellpadding=2&lt;br /&gt;
|i&lt;br /&gt;
|Text vor der aktuellen Cursorposition einfügen&lt;br /&gt;
|-&lt;br /&gt;
|I&lt;br /&gt;
|Text am Zeilenanfang einfügen&lt;br /&gt;
|-&lt;br /&gt;
|a&lt;br /&gt;
|Text hinter der aktuellen Cursorposition einfügen&lt;br /&gt;
|-&lt;br /&gt;
|A&lt;br /&gt;
|Text am Zeilenende einfügen&lt;br /&gt;
|-&lt;br /&gt;
|o&lt;br /&gt;
|Unterhalb der aktuellen Zeile eine neue Zeile einfügen&lt;br /&gt;
|-&lt;br /&gt;
|O&lt;br /&gt;
|Oberhalb der aktuellen Zeile eine neue Zeile einfügen&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Durch das Drücken der ESC - Taste gelangt man in den Kommandomodus zurück.&lt;br /&gt;
&lt;br /&gt;
Im Kommandomodus können Sie durch den Text navigieren und auch den Text&lt;br /&gt;
selbst bearbeiten, z.B ausschneiden, kopieren usw. Dazu sind einige Kommandos&lt;br /&gt;
nötig, von denen die wichtigsten im Folgenden erläutert werden:&lt;br /&gt;
&lt;br /&gt;
 xinux@zero:/$ vi iwas.txt&lt;br /&gt;
&lt;br /&gt;
[[Image:vim.jpg]]&lt;br /&gt;
&lt;br /&gt;
===Benutzen des Kommandomodus===&lt;br /&gt;
====Steuerung des Cursors durch den Text====&lt;br /&gt;
&lt;br /&gt;
Mittels folgender Kommandos bewegt sich der Cursor durch den Text:&lt;br /&gt;
&lt;br /&gt;
{| border=1 cellpadding=2&lt;br /&gt;
|h&lt;br /&gt;
|Cursor ein Zeichen nach links&lt;br /&gt;
|-&lt;br /&gt;
|l&lt;br /&gt;
|Cursor ein Zeichen nach rechts&lt;br /&gt;
|-&lt;br /&gt;
|k&lt;br /&gt;
|Cursor eine Zeile nach oben&lt;br /&gt;
|-&lt;br /&gt;
|j&lt;br /&gt;
|Cursor eine Zeile nach unten&lt;br /&gt;
|-&lt;br /&gt;
|w&lt;br /&gt;
|Cursor ein Wort nach rechts&lt;br /&gt;
|-&lt;br /&gt;
|b&lt;br /&gt;
|Cursor ein Wort nach links&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Alle diese Kommandos können mit einem vorgestellten Wiederholungsfaktor&lt;br /&gt;
arbeiten. Der Befehl 3w verschiebt demnach den Cursor um 3 Wörter nach rechts.&lt;br /&gt;
&lt;br /&gt;
====Angaben zur Positionierung====&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{| border=1 cellpadding=2&lt;br /&gt;
|STRG+U&lt;br /&gt;
|1⁄2 Bildschirmseite nach oben&lt;br /&gt;
|-&lt;br /&gt;
|STRG+D&lt;br /&gt;
|1⁄2 Bildschirmseite nach unten&lt;br /&gt;
|-&lt;br /&gt;
|STRG+B&lt;br /&gt;
|1 Bildschirmseite nach oben&lt;br /&gt;
|-&lt;br /&gt;
|STRG+F&lt;br /&gt;
|1 Bildschirmseite nach unten&lt;br /&gt;
|-&lt;br /&gt;
|/Ausdruck&lt;br /&gt;
|Sucht den Ausdruck (vorwärts) Weitersuchen mit n , N&lt;br /&gt;
|-&lt;br /&gt;
|?Ausdruck&lt;br /&gt;
|Sucht den Ausdurck (rückwärts) Weitersuchen mit n , N&lt;br /&gt;
|-&lt;br /&gt;
|0&lt;br /&gt;
|Zeilenanfang&lt;br /&gt;
|-&lt;br /&gt;
|$&lt;br /&gt;
|Zeilenende&lt;br /&gt;
|-&lt;br /&gt;
|w&lt;br /&gt;
|Nächstes Wort&lt;br /&gt;
|-&lt;br /&gt;
|b&lt;br /&gt;
|Vorheriges Wort&lt;br /&gt;
|-&lt;br /&gt;
|fc&lt;br /&gt;
|Auf das Zeichen c springen. c steht für ein beliebiges Zeichen&lt;br /&gt;
|-&lt;br /&gt;
|G&lt;br /&gt;
|Letzte Zeile der Datei&lt;br /&gt;
|-&lt;br /&gt;
|ng&lt;br /&gt;
|n-te Zeile der Datei&lt;br /&gt;
|-&lt;br /&gt;
|H&lt;br /&gt;
|Anfang der Bildschirmseite&lt;br /&gt;
|-&lt;br /&gt;
|L&lt;br /&gt;
|Ende der Bildschirmseite&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
====Befehle zur Textbearbeitung -&amp;gt; Was soll geschehen====&lt;br /&gt;
&lt;br /&gt;
{| Border=1 Cellpadding=2&lt;br /&gt;
|x&lt;br /&gt;
|Löscht Zeichen&lt;br /&gt;
|-&lt;br /&gt;
|d&lt;br /&gt;
|Löschen und in den Puffer laden&lt;br /&gt;
|-&lt;br /&gt;
|c&lt;br /&gt;
|Ändern&lt;br /&gt;
|-&lt;br /&gt;
|y&lt;br /&gt;
|In den Puffer laden&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
====Weitere wichtige Befehle:====&lt;br /&gt;
&lt;br /&gt;
{| Border=1 Cellpadding=2&lt;br /&gt;
|p&lt;br /&gt;
|Aus dem Puffer einfügen&lt;br /&gt;
|-&lt;br /&gt;
|u&lt;br /&gt;
|Undo, macht den letzten Befehl rückgängig&lt;br /&gt;
|-&lt;br /&gt;
|STRG+R&lt;br /&gt;
|Redo, macht den letzten Undo rückgängig&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
===Zeilen- oder Exmodus===&lt;br /&gt;
&lt;br /&gt;
Wie schon erwähnt wird der Zeilen oder Exmodus durch einen : eingeleitet.&lt;br /&gt;
Es folgen einige Beispiele.&lt;br /&gt;
&lt;br /&gt;
Befehle zum Speichern und Beenden:&lt;br /&gt;
&lt;br /&gt;
 :w          Schreibt Datei&lt;br /&gt;
 :w Datei2   Schreibt eine Kopie in Datei2&lt;br /&gt;
 :w !        Schreibt Datei (übergehe Schreibschutz)&lt;br /&gt;
 :w ! Datei2 Schreibt eine Kopie in Datei2 (übergehe Schreibschutz)&lt;br /&gt;
 :q          Schließe Datei&lt;br /&gt;
 :q!         Schließe Datei (verwerfe Änderungen)&lt;br /&gt;
 :wq         Schreibe Datei und beende Editor&lt;br /&gt;
 :wq!        Schreibe Datei und beende Editor (übergehe Schreibschutz)&lt;br /&gt;
 :q!         Schließe Datei (verwerfe Änderungen)&lt;br /&gt;
 :h          Hilfe anzeigen, durch drücken von :q Beenden der Hilfe&lt;br /&gt;
 :e Datei3   Editiere Datei3&lt;br /&gt;
 :e #        Editere vorhergehende Datei&lt;br /&gt;
 :1,3co9     Kopiere von der ersten bis zu dritten Zeile &lt;br /&gt;
             und füge den Inhalt unterhalb der neunte Zeile ein.&lt;br /&gt;
&lt;br /&gt;
Interaktionen mit Unix:&lt;br /&gt;
&lt;br /&gt;
 :r Datei4   Fügt Inhalt der Datei4 nach dem Cursor ein&lt;br /&gt;
 :r ! Befehl Fügt Ausgabe des Befehls nach dem Cursor ein&lt;br /&gt;
 :! Befehl   Führt den Befehl aus&lt;br /&gt;
 :sh         Starte Subshell -&amp;gt; mit exit kehrt man wieder zurück&lt;br /&gt;
             Eingabemodus zurück&lt;br /&gt;
&lt;br /&gt;
====Ersetzen von Textteilen====&lt;br /&gt;
&lt;br /&gt;
Die grundsätzliche Syntax lautet:&lt;br /&gt;
&lt;br /&gt;
 :[Zeilennummer,Zeilennummer]s/Muster/Ersetzung/[gc]&lt;br /&gt;
&lt;br /&gt;
 :s/worf/kirn/              der erste worf wird in der aktuellen Zeile durch kirn ersetzt&lt;br /&gt;
 :1,9s/worf/kirn/g          von der 1. bis zur 9. Zeile werden alle worf durch kirn ersetzt&lt;br /&gt;
 :1,$s/worf/kirn/           von der ersten bis zur letzten Zeile ersetze ersten worf durch&lt;br /&gt;
                            kirn&lt;br /&gt;
 :.,$s/worf/kirn/g          von der aktuellen bis zur letzten Zeile ersetze alle worf durch&lt;br /&gt;
                            kirn&lt;br /&gt;
 :1,.s/worf/kirn/c          von der 1. bis zur aktuellen Zeile ersetze worf durch kirn, frage&lt;br /&gt;
                            aber nach&lt;br /&gt;
 :1,$s/^worf/kirn/          von der ersten bis zur letzten Zeile ersetze worf am&lt;br /&gt;
                            Zeilenanfang durch kirn&lt;br /&gt;
 :4,$s/worf$/kirn/          von der 4. bis zur letzten Zeile ersetze worf am Zeilenende&lt;br /&gt;
                            durch kirn&lt;br /&gt;
 :1,$s/^#//                 lösche alle Kommentarzeichen&lt;br /&gt;
 :1,$s/^.orf/kirn/           ersetze alles was am Zeilenanfang ein beliebiges Zeichen hat&lt;br /&gt;
                            gefolgt von einem orf durch kirn&lt;br /&gt;
 :1,$s/^[A-Z]orf/kirn/g     suche nach einem Großbuchstaben am Anfang der Zeile&lt;br /&gt;
                            gefolgt von einem orf und ersetze durch kirn&lt;br /&gt;
 :1,$s/^M[ae][iy]e*r/kirn/  suche alles, was am Anfang der Zeile ein großes M enthält,&lt;br /&gt;
                            gefolgt von einem a oder e , gefolgt von einem i oder y ,&lt;br /&gt;
                            gefolgt von einem e , welches 0 oder N mal vorkommen kann,&lt;br /&gt;
                            gefolgt von einem r und ersetze es durch kirn&lt;br /&gt;
&lt;br /&gt;
==Reguläre Ausdrücke==&lt;br /&gt;
&lt;br /&gt;
{| Border=1 Cellpadding=2&lt;br /&gt;
|c&lt;br /&gt;
|Ein einzelner Buchstabe passt auf sich selbst&lt;br /&gt;
|-&lt;br /&gt;
|.&lt;br /&gt;
|Ein Punkt passt auf jedes Zeichen außer auf das Zeilenende&lt;br /&gt;
|-&lt;br /&gt;
|*&lt;br /&gt;
|Das dem Operator * vorangehende Muster kann 0 oder öfter vorkommen&lt;br /&gt;
|-&lt;br /&gt;
|^&lt;br /&gt;
|(Caret) passt auf den Zeilenanfang&lt;br /&gt;
|-&lt;br /&gt;
|$&lt;br /&gt;
|Passt auf das Zeilenende&lt;br /&gt;
|-&lt;br /&gt;
|\&lt;br /&gt;
|Das folgende Sonderzeichen wird entwertet&lt;br /&gt;
|-&lt;br /&gt;
|[...]&lt;br /&gt;
|Passt auf &amp;quot;genau&amp;quot; eins in [...] angebenen Zeichen&lt;br /&gt;
|-&lt;br /&gt;
|[^...]&lt;br /&gt;
|Passt auf &amp;quot;genau&amp;quot; ein Zeichen welches nicht in [...] angebenen ist&lt;br /&gt;
|-&lt;br /&gt;
|\&amp;lt;&lt;br /&gt;
|Passt auf den Wortanfang&lt;br /&gt;
|-&lt;br /&gt;
|\&amp;gt;&lt;br /&gt;
|Passt auf das Wortende&lt;br /&gt;
|-&lt;br /&gt;
|\+&lt;br /&gt;
|Das dem Operator \+ vorangehende Muster kann 1 oder öfter vorkommen&lt;br /&gt;
|-&lt;br /&gt;
|&amp;amp;&lt;br /&gt;
|Setzt das gefunden Suchmuster ein&lt;br /&gt;
|-&lt;br /&gt;
|\(...\)&lt;br /&gt;
|Speichert den Text auf den das Suchmuster passt zur späteren Verwendung&lt;br /&gt;
|-&lt;br /&gt;
|\n&lt;br /&gt;
|Setzt das vorangehende, mit \(...\) Gefundene wieder ein&lt;br /&gt;
|-&lt;br /&gt;
|(...)&lt;br /&gt;
|Gruppiert Auswahlmöglichkeiten&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;nowiki&amp;gt;|&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
|Trennt Auswahlmöglichkeiten&lt;br /&gt;
|-&lt;br /&gt;
|\b&lt;br /&gt;
|Passt auf den Anfang oder das Ende eines Wortes&lt;br /&gt;
|-&lt;br /&gt;
|\B&lt;br /&gt;
|Symbolisiert den Raum innerhalb eines Wortes&lt;br /&gt;
|-&lt;br /&gt;
|\w&lt;br /&gt;
|Passt auf alle alphanumerischen Zeichen [A-Za-z0-9]&lt;br /&gt;
|-&lt;br /&gt;
|\W&lt;br /&gt;
|Passt auf alle nichtalphanumerischen Zeichen [^A-Za-z0-9]&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Die Rangfolge der Operatoren(von der höchsten zur niedrigsten)&lt;br /&gt;
:(, ), ?, *, + | .&lt;br /&gt;
&lt;br /&gt;
Die anderen Operatoren sind mit den anderen Buchstaben gleichrangig.&lt;br /&gt;
&lt;br /&gt;
===Beispiel zum Suchen===&lt;br /&gt;
&lt;br /&gt;
 Suchmuster               Passt auf&lt;br /&gt;
 ^Tuxer                   Tuxer am Zeilenanfang&lt;br /&gt;
 [tT]uxer                 Tuxer oder tuxer&lt;br /&gt;
 80[23]?86                8086, 80286 oder 80386&lt;br /&gt;
&lt;br /&gt;
===grep===&lt;br /&gt;
&lt;br /&gt;
Mit grep ist es möglich, in Dateien nach regulären Ausdrücken zu suchen. Wenn&lt;br /&gt;
eine Übereinstimmung gefunden wird, wird die komplette Zeile auf die&lt;br /&gt;
Standardausgabe geschrieben. grep kann auch von STDIN lesen.Es ist&lt;br /&gt;
empfehlenswert, sich anzugwöhnen ,das Suchmuster in Anführungszeichen zu&lt;br /&gt;
schreiben. Es gibt 3 Arten fgrep = fastgrep , grep und egrep egrep&lt;br /&gt;
&lt;br /&gt;
Beispiel:&lt;br /&gt;
&lt;br /&gt;
 root@zero:~# cat text&lt;br /&gt;
 quatsch&lt;br /&gt;
 quatsch&lt;br /&gt;
 quatsch&lt;br /&gt;
 wichtig&lt;br /&gt;
 quatsch&lt;br /&gt;
 root@zero:~# grep wichtig text&lt;br /&gt;
 wichtig&lt;br /&gt;
 root@zero:~# &lt;br /&gt;
&lt;br /&gt;
 -c                   meldet nur die Gesamtzahl der Fundstellen&lt;br /&gt;
 -v                   zeigt nur Zeilen, die »Ausdruck« nicht enthalten&lt;br /&gt;
 -i                   ignoriert Groß- und Kleinschreibung&lt;br /&gt;
 -l                    meldet nur Dateinamen mit Fundstellen&lt;br /&gt;
 -n                   listet Zeilennummern zu jeder Fundstelle&lt;br /&gt;
 -f                   Dateiname »Dateiname« enthält die Such-Ausdrücke&lt;br /&gt;
 -E                   ist ein erweiterter regulärer Ausdruck (egrep)&lt;br /&gt;
 -F                   (Muster, Ausdruck) ist ein Muster (String) (fgrep)&lt;br /&gt;
 -b                   listet auch die Position der Fundstellen&lt;br /&gt;
 -C    Anzahl         Anzahl von Zeilen werden nach der Fundstelle ausgegeben&lt;br /&gt;
 -B    Anzahl         Anzahl von Zeilen werden vor der Fundstelle ausgegeben&lt;br /&gt;
 -r                   Durchsucht Verzeichnisse rekursiv&lt;br /&gt;
&lt;br /&gt;
==Useridendifikation==&lt;br /&gt;
===/etc/passwd===&lt;br /&gt;
====Beschreibung====&lt;br /&gt;
passwd ist eine ASCII-Datei, die eine Liste der Benutzer des Systems und deren&lt;br /&gt;
Passwörter enthält. Die Passwortdatei sollte für alle Benutzer lesbar sein, was für&lt;br /&gt;
dieVerschlüsselung notwendig ist; aber nur vom Superuser beschreibbar. Wenn&lt;br /&gt;
Sie eine neue Kennung einrichten, lassen Sie das Passwort-Feld in der Datei frei&lt;br /&gt;
und benutzen Sie passwd(1), um dem System ein Passwort für die neue Kennung&lt;br /&gt;
mitzuteilen.&lt;br /&gt;
&lt;br /&gt;
Die Datei /etc/passwd enthält einen Eintrag pro Zeile mit dem Format:&lt;br /&gt;
login_name:passwd:UID:GID:user_name:directory:shell&lt;br /&gt;
====Die Bedeutung der Felder:====&lt;br /&gt;
# login_name Kennung des Benutzers auf dem System.&lt;br /&gt;
# password   Hier steht bei Shadowsystemen ein x. Die Passwörter sind in der Datei /etc/shadow&lt;br /&gt;
# UID        Die numerische Benutzernummer.&lt;br /&gt;
#  GID        Die numerische Gruppennummer des Benutzers.&lt;br /&gt;
# user_name Ein optionales Kommentarfeld, oft benutzt für den vollen Namen des Benutzers und weitere Informationen (Telefon, Raum-Nummer etc.).&lt;br /&gt;
# directory  Das Heimatverzeichnis $HOME des Benutzers.&lt;br /&gt;
# shell      Das Programm, das beim Einloggen gestartet werden soll (falls nicht nötig, benutzen Sie /bin/bash).&lt;br /&gt;
&lt;br /&gt;
===/etc/group===&lt;br /&gt;
====Beschreibung====&lt;br /&gt;
etc/group ist eine ASCII Datei, die Gruppen definiert, zu denen Benutzer&lt;br /&gt;
gehören. Es gibt nur einen Eintrag pro Zeile; jede Zeile hat folgendes Format:&lt;br /&gt;
         GruppenName:Passwort:GruppenKennung:BenutzerListe&lt;br /&gt;
Beschreibung der Felder:&lt;br /&gt;
#     GruppenName      Die Bezeichnung der Gruppe.&lt;br /&gt;
#     Passwort         Das (verschlüsselte) Gruppen-Passwort. Wenn dieses Feld leer ist, wird kein Passwort benötigt.&lt;br /&gt;
#     GruppenKennung Die numerische Identifikation der Gruppe.&lt;br /&gt;
#     BenutzerListe    Alle Namen der Mitglieder, getrennt durch Kommas.&lt;br /&gt;
&lt;br /&gt;
===/etc/shadow===&lt;br /&gt;
====Beschreibung====&lt;br /&gt;
shadow beinhaltet Informationen zu den verschlüsselten Passwörten, zu den&lt;br /&gt;
Benutzerzugängen und weitere Informationen zur Laufzeit der Passwörter.&lt;br /&gt;
 Name:Passwort:Letzte Änderung:Mintage:Maxtage:Warntage:Inaktiv:Ablauf&lt;br /&gt;
#    Der Loginname&lt;br /&gt;
#    verschlüsseltes Passwort &lt;br /&gt;
&amp;lt;nowiki&amp;gt;*&amp;lt;/nowiki&amp;gt; bedeutet Benutzer kann sich nicht einlogen&lt;br /&gt;
! bedeutet Benutzer hat kein Passwort gesetzt&lt;br /&gt;
#    Tage seit dem 1 Januar 1970 an dem das Passwort letztmals geändert wurde&lt;br /&gt;
#    Tage, die das Passwort behalten werden muss, bevor es wieder geändert werden kann&lt;br /&gt;
#     Die Anzahl der Tage, nach denen der Benutzer das Passwort wieder ändern muss&lt;br /&gt;
#    Anzahl der Tage bevor das Passwort abläuft und der Benutzer gewarnt wird&lt;br /&gt;
#    Wenn der Zugang diese Anzahl von Tagen nicht benutzt wird, wird der Zugang gesperrt&lt;br /&gt;
#    Tag seit dem 1 Januar 1970, an dem der Zugang gesperrt wird&lt;br /&gt;
#    Reserviertes Feld&lt;br /&gt;
&lt;br /&gt;
Die Datei sollte aus Sicherheitgründen nicht für einen normalen Benutzer lesbar&lt;br /&gt;
sein.&lt;br /&gt;
&lt;br /&gt;
==Programme zur Userverwaltung==&lt;br /&gt;
===useradd===&lt;br /&gt;
User anlegen&lt;br /&gt;
 root@zero:~# useradd -m -u 1011 -g users -G admin -d /home/erwin -s /bin/bash -c &amp;quot;Erwin Lehman&amp;quot;  erwin&lt;br /&gt;
{| border=1 cellpadding=2&lt;br /&gt;
|&amp;quot;-m&amp;quot;&lt;br /&gt;
|Lege Homedirectory an&lt;br /&gt;
|-&lt;br /&gt;
|&amp;quot;-u 1011&amp;quot;&lt;br /&gt;
|Userid wird zugeordnet&lt;br /&gt;
|-&lt;br /&gt;
|&amp;quot;-g users&amp;quot;&lt;br /&gt;
|Primäre Gruppe wird zugeordnet&lt;br /&gt;
|-&lt;br /&gt;
|&amp;quot;-G admin&amp;quot;&lt;br /&gt;
|Sekunbdäre Gruppe wird zugeordnet&lt;br /&gt;
|-&lt;br /&gt;
|&amp;quot;-d /home/erwin/&amp;quot;&lt;br /&gt;
|Name des Homedirectory&lt;br /&gt;
|-&lt;br /&gt;
|&amp;quot;-s /bin/bash&amp;quot;&lt;br /&gt;
|Bash wird zugeordnet&lt;br /&gt;
|- &lt;br /&gt;
|&amp;quot;-c Erwin Lehman&amp;quot;&lt;br /&gt;
|Kommentarfeld&lt;br /&gt;
|-&lt;br /&gt;
|&amp;quot;erwin&amp;quot; &lt;br /&gt;
|Name des Users&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Defaulteinstellungen anzeigen&lt;br /&gt;
 root@zero:~# useradd -D&lt;br /&gt;
 GROUP=100&lt;br /&gt;
 HOME=/home&lt;br /&gt;
 INACTIVE=-1&lt;br /&gt;
 EXPIRE=&lt;br /&gt;
 SHELL=/bin/sh&lt;br /&gt;
 SKEL=/etc/skel&lt;br /&gt;
 CREATE_MAIL_SPOOL=no&lt;br /&gt;
&lt;br /&gt;
Defaulteinstellungen ändern&lt;br /&gt;
 useradd -D -s /bin/bash&lt;br /&gt;
&lt;br /&gt;
Konfigurationsdatei&lt;br /&gt;
 root@zero:~# cat /etc/default/useradd &lt;br /&gt;
 SHELL=/bin/bash&lt;br /&gt;
 GROUP=100&lt;br /&gt;
 HOME=/home&lt;br /&gt;
 INACTIVE=-1&lt;br /&gt;
 EXPIRE=&lt;br /&gt;
 SKEL=/etc/skel&lt;br /&gt;
 CREATE_MAIL_SPOOL=no&lt;br /&gt;
&lt;br /&gt;
===usermod===&lt;br /&gt;
User modifizieren&lt;br /&gt;
 root@zero:~# usermod -l fritz -s /bin/sh -G admin,video erwin&lt;br /&gt;
{| border=1 cellpadding=2&lt;br /&gt;
|&amp;quot;-l fritz&amp;quot;&lt;br /&gt;
|Neuer Username&lt;br /&gt;
|-&lt;br /&gt;
|&amp;quot;-s /bin/sh&amp;quot;&lt;br /&gt;
|Neue Shell&lt;br /&gt;
|-&lt;br /&gt;
|&amp;quot;-G admin, video&amp;quot;&lt;br /&gt;
|Sekunbdäre Gruppen werden zugeordnet&lt;br /&gt;
|-&lt;br /&gt;
|&amp;quot;erwin&amp;quot; &lt;br /&gt;
|Name des Users&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
===userdel===&lt;br /&gt;
User inklusive Homedirectory löschen&lt;br /&gt;
 root@zero:~# userdel -r fritz&lt;br /&gt;
&lt;br /&gt;
===passwd===&lt;br /&gt;
Rootpasswort ändern&lt;br /&gt;
 root@zero:~# passwd &lt;br /&gt;
 Geben Sie ein neues UNIX Passwort ein:'''sysadm''' &lt;br /&gt;
 Geben Sie das neue UNIX Passwort erneut ein:'''sysadm''' &lt;br /&gt;
 passwd: Passwort erfolgreich geändert&lt;br /&gt;
&lt;br /&gt;
Passwort von tux ändern&lt;br /&gt;
 root@zero:~# passwd tux&lt;br /&gt;
 Geben Sie ein neues UNIX Passwort ein:'''suxer''' &lt;br /&gt;
 Geben Sie das neue UNIX Passwort erneut ein:'''suxer'''&lt;br /&gt;
 passwd: Passwort erfolgreich geändert&lt;br /&gt;
&lt;br /&gt;
Minimale und Maximale Gültigkeit des Passwortes von tux festlegen&lt;br /&gt;
 root@zero:~# passwd -n 5 -x 120 tux&lt;br /&gt;
&lt;br /&gt;
===groupadd===&lt;br /&gt;
 root@zero:~# groupadd -f -g 2001 xinuxer&lt;br /&gt;
{| border=1 cellpadding=2&lt;br /&gt;
|&amp;quot;-f&amp;quot;&lt;br /&gt;
|Überschreibe bestehende Gruppe&lt;br /&gt;
|-&lt;br /&gt;
|&amp;quot;-g 2001&amp;quot;&lt;br /&gt;
|GID der Gruppe&lt;br /&gt;
|-&lt;br /&gt;
|&amp;quot;xinuxer&amp;quot; &lt;br /&gt;
|Name des Gruppe&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==chmod==&lt;br /&gt;
Die Syntax des Befehls chmod lautet:&lt;br /&gt;
&lt;br /&gt;
'''chmod''' WerWieWas [,WerWieWas,.....] Dateiliste&lt;br /&gt;
&lt;br /&gt;
oder&lt;br /&gt;
&lt;br /&gt;
'''chmod''' Oktalzahl Dateiliste&lt;br /&gt;
&lt;br /&gt;
Durch WerWieWas bzw. Oktalzahl wird die Rechtetabelle definiert. Innerhalb von&lt;br /&gt;
WerWieWas darf es kein Leerzeichen geben. Wer bezeichnet den Benutzerkreis,&lt;br /&gt;
dem man Rechte gibt, Wie die Art, in der die Rechte gegeben werden und Was die&lt;br /&gt;
Rechte als solche. Im einzelnen können folgende Kürzel benutzt werden:&lt;br /&gt;
&lt;br /&gt;
Für Wer kann eines der folgenden Kürzel oder eine Kombination davon stehen:&lt;br /&gt;
 u                   (user) Rechte für den Dateibesitzer&lt;br /&gt;
 g                   (group) Rechte für die Gruppe&lt;br /&gt;
 o                   (others) Rechte für alle anderen Benutzer&lt;br /&gt;
 a                   (all) Rechte für alle Benutzer&lt;br /&gt;
Für Wie steht eines der folgenden Kürzel:&lt;br /&gt;
 +                   Die Rechte werden zu den vorhandenen zusätzlich vergeben&lt;br /&gt;
 -                   Die im Folgenden genannten Rechte werden entzogen&lt;br /&gt;
 =                   Die im Folgenden genannten Rechte ersetzen die bisherigen&lt;br /&gt;
Für Was steht eines der folgenden Kürzel:&lt;br /&gt;
 r                   (read) lesen&lt;br /&gt;
 w                   (write) schreiben&lt;br /&gt;
 x                   (execute) ausführen&lt;br /&gt;
oder diese Sonderformen&lt;br /&gt;
 s                   (usersbit) Programm läuft unter der UID des Besitzers&lt;br /&gt;
 s                   (groupsbit)Programm läuft unter der GID des GRUPPE&lt;br /&gt;
 t                   (stickybit) Dateien im Verzeichnis darf nur Besitzer löschen&lt;br /&gt;
&lt;br /&gt;
===Beispiel===&lt;br /&gt;
Setze für alle Schreib- und Leserecht&lt;br /&gt;
 xinux@zero:~$ chmod a=rw test &lt;br /&gt;
 xinux@zero:~$ ls -l test &lt;br /&gt;
 -rw-rw-rw- 1 xinux xinux 0 2009-06-16 12:01 test&lt;br /&gt;
 xinux@zero:~$ &lt;br /&gt;
&lt;br /&gt;
Erteile Besitzer Ausführungsrecht&lt;br /&gt;
 xinux@zero:~$ chmod u+x test ; ls -l test &lt;br /&gt;
 -rwxrw-rw- 1 xinux xinux 0 2009-06-16 12:01 test&lt;br /&gt;
 xinux@zero:~$ &lt;br /&gt;
&lt;br /&gt;
===chmod oktale Schreibweise===&lt;br /&gt;
 Specialrights        User           Group         Other&lt;br /&gt;
 usbit gsbit sticky    r    w   x     r   w   x     r   w   x&lt;br /&gt;
   1     1      1      1    1   1     1   1   1     1   1   1&lt;br /&gt;
   0     0      0      0    0   0     0   0   0     0   0   0&lt;br /&gt;
 Oktale Wertigkeit pro Recht&lt;br /&gt;
   4     2       1     4    2   1     4   2   1     4   2   1&lt;br /&gt;
&lt;br /&gt;
===Beispiele===&lt;br /&gt;
 xinux@zero:~$ chmod 751 test ; ls -l test&lt;br /&gt;
 -rwxr-x--x 1 xinux xinux 0 2009-06-16 12:01 test&lt;br /&gt;
 xinux@zero:~$ &lt;br /&gt;
&lt;br /&gt;
 xinux@zero:~$ chmod 4770 test ; ls -l test&lt;br /&gt;
 -rwsrwx--- 1 xinux xinux 0 2009-06-16 12:01 test&lt;br /&gt;
 xinux@zero:~$ &lt;br /&gt;
&lt;br /&gt;
 xinux@zero:~$ chmod 0 test ; ls -l test &lt;br /&gt;
 ---------- 1 xinux xinux 0 2009-06-16 12:01 test&lt;br /&gt;
&lt;br /&gt;
===chmod Optionen===&lt;br /&gt;
 -c   (changes) es werden nur die Dateien angezeigt, deren Zugriffsrechte tatsächlich verändert werden&lt;br /&gt;
 -f   (silent, quiet) Fehlermeldungen wegen fehlgeschlagener Änderungsversuche werden unterdrückt&lt;br /&gt;
 -v   (verbose) alle Aktionen werden angezeigt&lt;br /&gt;
 -R   (recursive) die Zugriffsrechte aller Dateien in den Unterverzeichnissen werden ebenfalls geändert&lt;br /&gt;
&lt;br /&gt;
Theoretisch sind alle Kombinationen der Zugriffsrechte denkbar, aber der&lt;br /&gt;
Eigentümer einer Datei darf diese immer lesen, selbst wenn das Lesebit nicht&lt;br /&gt;
gesetzt ist. Genauso macht es wenig Sinn, eine gewöhnliche Textdatei als&lt;br /&gt;
ausführbar zu setzen; die Shell wird damit nichts anfangen können. Ein x für ein&lt;br /&gt;
Verzeichnis gibt an, dass in dieses gewechselt werden kann.&lt;br /&gt;
&lt;br /&gt;
Rechte sind verbindlich&lt;br /&gt;
&lt;br /&gt;
Interessant ist auch ein Konstrukt folgender Art&lt;br /&gt;
 -rwx---rwx&lt;br /&gt;
&lt;br /&gt;
das angibt, dass mit der Datei alles angestellt werden kann, außer durch Nutzer der&lt;br /&gt;
Gruppe. Versucht irgend jemand, der nicht der Gruppe des Eigentümers angehört,&lt;br /&gt;
die Datei zu modifizieren, wird ihm dies gelingen, einem Gruppenmitglied bleibt&lt;br /&gt;
dies versagt, obwohl er ja gleichzeitig ein &amp;quot;Anderer&amp;quot; ist. D.h. die Rechte der&lt;br /&gt;
Gruppe sind verbindlicher, als die Rechte der anderen!&lt;br /&gt;
&lt;br /&gt;
===Bedeutungen der Zugriffsarten===&lt;br /&gt;
====Dateien====&lt;br /&gt;
* r: Der Inhalt der Datei kann gelesen und damit auch kopiert werden. &lt;br /&gt;
 root@zero:~# cat test&lt;br /&gt;
 Dies ist eine Testdatei&lt;br /&gt;
  &lt;br /&gt;
 root@zero:~# cp test backup&lt;br /&gt;
&lt;br /&gt;
* w: Der Inhalt der Datei darf verändert werden. Ob die Datei gelöscht werden kann ist&lt;br /&gt;
keine Eigenschaft der Datei, sondern des Verzeichnisses, indem sich die Datei befindet.&lt;br /&gt;
 root@zero:~# cat &amp;gt; test&lt;br /&gt;
 Hier steht jetzt was anderes&lt;br /&gt;
 ^C&lt;br /&gt;
 root@zero:~# cat test&lt;br /&gt;
 Hier steht jetzt was anderes&lt;br /&gt;
  &lt;br /&gt;
 xinux@zero:~$ ls -ld verzeichnis/&lt;br /&gt;
 dr-xr-xr-x 2 xinux xinux 4096 2009-06-18 11:16 verzeichnis/&lt;br /&gt;
 xinux@zero:~/verzeichnis$ rm text&lt;br /&gt;
 rm: Entfernen von „text“ nicht möglich: Permission denied&lt;br /&gt;
&lt;br /&gt;
* x: Ausführrecht für Programme und Skripte&lt;br /&gt;
 xinux@zero:~$ ./programm&lt;br /&gt;
 -bash: ./programm: Permission denied&lt;br /&gt;
 xinux@zero:~$ chmod +x programm&lt;br /&gt;
 xinux@zero:~$ ./programm&lt;br /&gt;
 Test&lt;br /&gt;
  test&lt;br /&gt;
&lt;br /&gt;
====Verzeichnisse====&lt;br /&gt;
* r: Die Einträge in dem Verzeichnis sind lesbar.&lt;br /&gt;
Leserecht von verzeichnis/ entziehen&lt;br /&gt;
 xinux@zero:~$ chmod a-r verzeichnis/&lt;br /&gt;
 xinux@zero:~$ ls verzeichnis/&lt;br /&gt;
 ls: Öffnen von Verzeichnis verzeichnis/ nicht möglich: Permission denied&lt;br /&gt;
Leserecht für Benutzer und Gruppe vergeben&lt;br /&gt;
 xinux@zero:~$ chmod a+r verzeichnis/&lt;br /&gt;
 xinux@zero:~$ ls verzeichnis/&lt;br /&gt;
 text&lt;br /&gt;
&lt;br /&gt;
* w: Die Einträge in dem Verzeichnis können geändert werden. &lt;br /&gt;
Neue Datei erstellen&lt;br /&gt;
 xinux@zero:~$ touch neu&lt;br /&gt;
 xinux@zero:~$ ls neu&lt;br /&gt;
 neu&lt;br /&gt;
&lt;br /&gt;
Datei löschen&lt;br /&gt;
 xinux@zero:~$ rm neu&lt;br /&gt;
 xinux@zero:~$ ls neu&lt;br /&gt;
 ls: Zugriff auf neu nicht möglich: No such file or directory&lt;br /&gt;
&lt;br /&gt;
* x: Der Name des Verzeichnisses kann in einem Pfadnamen erscheinen.&lt;br /&gt;
Verzeichnis ohne x Recht&lt;br /&gt;
 xinux@zero:~$ chmod a-x verzeichnis/&lt;br /&gt;
Wechseln in Verzeichnis mangels x-Recht nicht möglich&lt;br /&gt;
 xinux@zero:~$ cd verzeichnis/&lt;br /&gt;
 -bash: cd: verzeichnis/: Permission denied&lt;br /&gt;
x-Recht vergeben&lt;br /&gt;
 xinux@zero:~$ chmod a+x verzeichnis/&lt;br /&gt;
damit Wechsel in Verzeichnis möglich&lt;br /&gt;
 xinux@zero:~$ cd verzeichnis/&lt;br /&gt;
 xinux@zero:~/verzeichnis$ pwd&lt;br /&gt;
 /home/xinux/verzeichnis&lt;br /&gt;
&lt;br /&gt;
====umask====&lt;br /&gt;
Neue Dateien und Verzeichnisse werden mit ein und denselben Zufriffsrechten erzeugt.&lt;br /&gt;
 xinux@zero:~$ mkdir text&lt;br /&gt;
 xinux@zero:~$ touch textdat&lt;br /&gt;
 xinux@zero:~$ ls -ld text*&lt;br /&gt;
 drwxr-xr-x 2 xinux xinux 4096 2009-06-18 11:37 text&lt;br /&gt;
 -rw-r--r-- 1 xinux xinux    0 2009-06-18 11:37 textdat&lt;br /&gt;
&lt;br /&gt;
Zuständig für dieses Verhalten ist die sogenannte umask, die oft in der Datei&lt;br /&gt;
/etc/profile auf den Wert 022 voreingestellt ist. Zusätzlich wird noch eine&lt;br /&gt;
Maximalmaske benötigt, die sich für Verzeichnisse und andere Dateien&lt;br /&gt;
unterscheidet. Die bei der Erzeugung gesetzten Rechte entstehen nun, indem von&lt;br /&gt;
der Maximalmaske der durch die umask vorgegebene Wert subtrahiert wird:&lt;br /&gt;
&lt;br /&gt;
{| border=1 cellpadding=2&lt;br /&gt;
!&lt;br /&gt;
! Dateien&lt;br /&gt;
! Verzeichnisse&lt;br /&gt;
|-&lt;br /&gt;
| Systemvorgabe&lt;br /&gt;
| 666&lt;br /&gt;
| 777&lt;br /&gt;
|-&lt;br /&gt;
| -umask&lt;br /&gt;
| 022&lt;br /&gt;
| 022&lt;br /&gt;
|-&lt;br /&gt;
| Ergebnis&lt;br /&gt;
| 644&lt;br /&gt;
| 755&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
 xinux@zero:~$ grep umask /etc/profile&lt;br /&gt;
 umask 022&lt;br /&gt;
&lt;br /&gt;
==Gruppenzugehörigkeit==&lt;br /&gt;
===newgrp===&lt;br /&gt;
Ändert die Gruppenzugehörigkeit eines Benutzers auf die angegebene Gruppe. Wenn keine Gruppe angegeben wird, wird die &lt;br /&gt;
Anmeldegruppe des Benutzers verwendet. Die neue Gruppe wird anschließend fü Zugriffskontrollen verwendet.&lt;br /&gt;
&lt;br /&gt;
 newgrp Gruppenname&lt;br /&gt;
&lt;br /&gt;
 root@zero:~# newgrp hacker&lt;br /&gt;
 root@zero:~# id&lt;br /&gt;
 uid=0(root) gid=1006(hacker) Gruppen=0(root),1006(hacker)&lt;br /&gt;
&lt;br /&gt;
===chgrp===&lt;br /&gt;
Verändert die Besitzugehörigkeit zu der angegebenen Gruppe&lt;br /&gt;
&lt;br /&gt;
 chgrp [Optionen] Gruppe Datei(en)&lt;br /&gt;
&lt;br /&gt;
Optionen:&lt;br /&gt;
 -c Zeigt Veränderungen an&lt;br /&gt;
 -f Unterdrückt die meisten Fehlermeldungen&lt;br /&gt;
 -R Verändert Dateien und Verzeichnisse rekursiv&lt;br /&gt;
 -v Gibt geschwätzige Ausgabe aus.&lt;br /&gt;
&lt;br /&gt;
 root@zero:~# ls -l&lt;br /&gt;
 ...&lt;br /&gt;
 d-wx--x--x  3 root root 4096 2009-06-18 13:34 verzeichnis&lt;br /&gt;
 &lt;br /&gt;
 root@zero:~# chgrp -R xinux verzeichnis/&lt;br /&gt;
 root@zero:~# ls -l&lt;br /&gt;
 ...&lt;br /&gt;
 d-wx--x--x  3 root xinux 4096 2009-06-18 13:34 verzeichnis&lt;br /&gt;
&lt;br /&gt;
 xinux@zero:~$ cd /root/verzeichnis/&lt;br /&gt;
 xinux@zero:/root/verzeichnis$ pwd&lt;br /&gt;
 /root/verzeichnis&lt;br /&gt;
&lt;br /&gt;
===chown===&lt;br /&gt;
Ändert den Eigentümer von einer oder mehreren Dateien in den angegebenen Benutzer. &lt;br /&gt;
chown erlaubt ebenfalls das Ändern der Gruppeneigentümreschaft. Nur der aktuelle Eigentümer einer&lt;br /&gt;
Datei oder der Superuser (root) darf die Eigentumsverhältnisse ändern.&lt;br /&gt;
&lt;br /&gt;
 chown [Optionen] Benutzer(:Gruppe) Dateien&lt;br /&gt;
&lt;br /&gt;
Optionen:&lt;br /&gt;
 -c Gibt Informationen über die veränderten Dateien aus&lt;br /&gt;
 --dereference Symbolischen Links folgen&lt;br /&gt;
 -v Gibt Informationen über alle Dateien aus, die chown zu ändern versucht, egal, ob die Änderung erfolgt ist oder nicht&lt;br /&gt;
 -R Geht rekursiv durch alle Unterverzeichnisse und führt die Änderungen durch. &lt;br /&gt;
&lt;br /&gt;
 root@zero:~# chown -R xinux.xinux verzeichnis/&lt;br /&gt;
 root@zero:~# ls -l&lt;br /&gt;
 insgesamt 12&lt;br /&gt;
 drwx------ 13 root  root  4096 2009-04-21 15:11 profile&lt;br /&gt;
 --w-------  1 root  root     0 2009-06-18 11:13 test&lt;br /&gt;
 -rw-r--r--  1 root  root    40 2009-06-18 12:04 text&lt;br /&gt;
 drwxrwx--x  3 xinux xinux 4096 2009-06-18 13:39 verzeichnis&lt;br /&gt;
 &lt;br /&gt;
 root@zero:~# chown -R -c xinux.xinux verzeichnis/&lt;br /&gt;
 &lt;br /&gt;
 root@zero:~# chown -R -v xinux.xinux verzeichnis/&lt;br /&gt;
 Eigentümer von „verzeichnis/01“ als xinux:xinux erhalten&lt;br /&gt;
 Eigentümer von „verzeichnis/test“ als xinux:xinux erhalten&lt;br /&gt;
 Eigentümer von „verzeichnis/“ als xinux:xinux erhalten&lt;br /&gt;
&lt;br /&gt;
==Eingabe/Ausgabe==&lt;br /&gt;
Standardeingabe (0): Laufende Programme erwarten von hier ihre Eingaben (normalerweise handelt es sich um die Tastatur).&lt;br /&gt;
&lt;br /&gt;
Standardausgabe (1): Programme schreiben auf diese ihre Ausgaben (Bildschirm).&lt;br /&gt;
&lt;br /&gt;
Standardfehlerausgabe (2) : Fehlerausgaben landen hier (Bildschirm, aber nur die aktive Konsole).&lt;br /&gt;
&lt;br /&gt;
[[Bild:std.jpg]]&lt;br /&gt;
&lt;br /&gt;
===cat===&lt;br /&gt;
Das Programm cat liest von STDIN und gibt es STDOUT wieder aus&lt;br /&gt;
&lt;br /&gt;
Einlesen der Datei text&lt;br /&gt;
 root@zero:~# cat &amp;lt; text&lt;br /&gt;
 wichtig&lt;br /&gt;
&lt;br /&gt;
Schreiben in die Datei text, dies überschreibt den bisherigen Inhalt der Datei&lt;br /&gt;
 root@zero:~# cat &amp;gt; text&lt;br /&gt;
 sogar noch wichtiger &lt;br /&gt;
 &lt;br /&gt;
Ausgeben der Datei text&lt;br /&gt;
 root@zero:~# cat text &lt;br /&gt;
 sogar noch wichtiger&lt;br /&gt;
&lt;br /&gt;
Lesen aus der Datei text und schreiben in die Datei neuertext&lt;br /&gt;
 root@zero:~# cat &amp;lt; text &amp;gt; neuertext&lt;br /&gt;
 root@zero:~# cat neuertext&lt;br /&gt;
 sogar noch wichtiger&lt;br /&gt;
&lt;br /&gt;
Anhängen der Ausgabe von date an die Datei neuertext&lt;br /&gt;
 root@zero:~# date &amp;gt;&amp;gt; neuertext&lt;br /&gt;
 root@zero:~# cat neuertext&lt;br /&gt;
 sogar noch wichtiger&lt;br /&gt;
 Do 18. Jun 14:08:58 CEST 2009&lt;br /&gt;
&lt;br /&gt;
Umleiten des Standardfehlerkanals nach error&lt;br /&gt;
 root@zero:~# rm sux 2&amp;gt; error&lt;br /&gt;
 root@zero:~# more error&lt;br /&gt;
 rm: Entfernen von „sux“ nicht möglich: No such file or directory&lt;br /&gt;
&lt;br /&gt;
===Umleitungen===&lt;br /&gt;
Nacheinander auszuführende Kommandos&lt;br /&gt;
 root@zero:~# pwd; date&lt;br /&gt;
 /root&lt;br /&gt;
 Do 18. Jun 14:13:05 CEST 2009&lt;br /&gt;
 &lt;br /&gt;
Übergeben der Ausgabe von tail als Eingabe von grep mit Hilfe der Pipe &amp;quot;|&amp;quot;&lt;br /&gt;
 root@zero:~# tail /var/log/auth.log | grep xinux&lt;br /&gt;
 Jun 18 13:52:33 zero nss_wins[11433]: pam_unix(login:session): session closed for user xinux&lt;br /&gt;
&lt;br /&gt;
Übergeben der letzten 100 Zeilen von syslog als Eingabe von grep&lt;br /&gt;
 root@zero:~# tail /var/log/syslog -n 100 | grep error&lt;br /&gt;
 Jun 18 09:30:54 zero kernel: [154384.692135] end_request: I/O error, dev fd0, sector 0&lt;br /&gt;
 Jun 18 09:30:54 zero kernel: [154384.712137] end_request: I/O error, dev fd0, sector 0&lt;br /&gt;
&lt;br /&gt;
==tr==&lt;br /&gt;
tr ist ein Programm um Zeichen zu übersetzen. Dies betrifft nur die Ausgabe, die Datei selbst bleibt unverändert.&lt;br /&gt;
&lt;br /&gt;
Ersetzt Kleinbuchstaben durch Großbuchstaben aus der Datei text&lt;br /&gt;
 root@zero:~# tr &amp;quot;a-z&amp;quot; &amp;quot;A-Z&amp;quot; &amp;lt; text&lt;br /&gt;
 SOGAR NOCH WICHTIGER&lt;br /&gt;
 123&lt;br /&gt;
 34&lt;br /&gt;
 4711&lt;br /&gt;
 TEST&lt;br /&gt;
&lt;br /&gt;
Ersetzt alle Zahlen durch X&lt;br /&gt;
 root@zero:~# tr &amp;quot;0-9&amp;quot; &amp;quot;X&amp;quot; &amp;lt; text&lt;br /&gt;
 sogar noch wichtiger&lt;br /&gt;
 XXX&lt;br /&gt;
 XX&lt;br /&gt;
 XXXX&lt;br /&gt;
 test&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
 root@zero:~# cat &amp;gt; test&lt;br /&gt;
 +++++&lt;br /&gt;
 ###&lt;br /&gt;
 1111&lt;br /&gt;
&lt;br /&gt;
-s löscht mehrfach kommende Zeichen&lt;br /&gt;
 root@zero:~# tr '''-s''' &amp;quot;+&amp;quot; &amp;lt; test&lt;br /&gt;
 +&lt;br /&gt;
 ###&lt;br /&gt;
 1111&lt;br /&gt;
&lt;br /&gt;
-d löscht vorkommende Zeichen &lt;br /&gt;
 root@zero:~# tr '''-d''' &amp;quot;#&amp;quot; &amp;lt; test&lt;br /&gt;
 +++++ &lt;br /&gt;
 &lt;br /&gt;
 1111&lt;br /&gt;
&lt;br /&gt;
==cut==&lt;br /&gt;
Spalten aus einer Datei schneiden. Dies betrifft nur die Ausgabe, die Datei selbst bleibt unverändert.&lt;br /&gt;
 &lt;br /&gt;
Schneidet die erste Spalte aus, der Delimiter ist : &lt;br /&gt;
 root@zero:~# cut -f 1 -d : /etc/passwd&lt;br /&gt;
 root&lt;br /&gt;
 daemon&lt;br /&gt;
 bin&lt;br /&gt;
 ...&lt;br /&gt;
 xinux&lt;br /&gt;
&lt;br /&gt;
 root@zero:~# more test&lt;br /&gt;
 1234#5678#9999&lt;br /&gt;
 &lt;br /&gt;
Schneidet die zweite Spalte aus, der Delimiter ist #&lt;br /&gt;
 root@zero:~# cut -f 2 -d &amp;quot;#&amp;quot; &amp;lt; test&lt;br /&gt;
 5678&lt;br /&gt;
&lt;br /&gt;
Schneidet bis zum 3 Zeichen ab&lt;br /&gt;
 root@zero:~$ echo S01policykit | cut -c 4-&lt;br /&gt;
 policykit&lt;br /&gt;
&lt;br /&gt;
==expand==&lt;br /&gt;
Ersetzt Tabulatorzeichen durch Folgen von Leerzeichen und schreibt das Ergebnis auf die Standardausgabe&lt;br /&gt;
 root@zero:~# expand /etc/samba/smb.conf&lt;br /&gt;
 ...&lt;br /&gt;
&lt;br /&gt;
==fmt==&lt;br /&gt;
#Setzt den Text der Dateien im Blocksatz der angegebenen Breite durch Auffüllen von Zeilen und Entfernen von Zeilenwechseln.&lt;br /&gt;
Standardgemäß werden Leerzeilen, die Position von Leerzeichen und der Einzug am Zeilenanfang erhalten. fmt versucht, &lt;br /&gt;
Zeilenumbrüche an Satzenden durchzuführen sowie sie nach dem ersten oder vor dem letzten Wort eines Satzes zu vermeiden. &lt;br /&gt;
 &lt;br /&gt;
 fmt [Optionen] [Dateien]&lt;br /&gt;
&lt;br /&gt;
Optionen&lt;br /&gt;
&lt;br /&gt;
* -p ''Präfix'': Formatiert nur Zeilen, die mit ''Präfix'' anfangen&lt;br /&gt;
 root@zero:/tmp# fmt -p '#' text&lt;br /&gt;
 #Setzt den Text der Dateien im Blocksatz der angegebenen Breite durch&lt;br /&gt;
 #Auffüllen von Zeilen und Entfernen von Zeilenwechseln.  Standardgemäß&lt;br /&gt;
 #werden Leerzeilen, die Position von Leerzeichen und der Einzug am&lt;br /&gt;
 #Zeilenanfang erhalten. fmt versucht,&lt;br /&gt;
 Zeilenumbrüche an Satzenden durchzuführen sowie sie nach dem ersten oder vor dem letzten Wort eines Satzes zu vermeiden.&lt;br /&gt;
&lt;br /&gt;
* -u : Erzwingt genau ein Leerzeichen zwischen Wörtern und zwei Leerzeichen zwischen Sätzen&lt;br /&gt;
&lt;br /&gt;
* -w ''Breite'': Setzt die Ausgabebreite auf ''Breite''&lt;br /&gt;
 root@zero:/tmp# fmt -w 30 text&lt;br /&gt;
 #Setzt den Text der Dateien&lt;br /&gt;
 im Blocksatz der angegebenen&lt;br /&gt;
 Breite durch Auffüllen&lt;br /&gt;
 von Zeilen und Entfernen&lt;br /&gt;
 von Zeilenwechseln.&lt;br /&gt;
 #Standardgemäß werden&lt;br /&gt;
 Leerzeilen, die Position von&lt;br /&gt;
 Leerzeichen und der Einzug am&lt;br /&gt;
 Zeilenanfang erhalten. fmt&lt;br /&gt;
 versucht, Zeilenumbrüche&lt;br /&gt;
 an Satzenden durchzuführen&lt;br /&gt;
 sowie sie nach dem ersten&lt;br /&gt;
 oder vor dem letzten Wort&lt;br /&gt;
 eines Satzes zu vermeiden.&lt;br /&gt;
&lt;br /&gt;
==join==&lt;br /&gt;
Führt die Zeilen zweier sortierter Dateien anhand von '''Übereinstimmungen''' in einem gemeinsamen Feld zusammen.&lt;br /&gt;
&lt;br /&gt;
 root@zero:~# more name&lt;br /&gt;
 1. karl&lt;br /&gt;
 2. heinz&lt;br /&gt;
 3. hans&lt;br /&gt;
 4. otto&lt;br /&gt;
 root@zero:~# more tel&lt;br /&gt;
 1. 1234&lt;br /&gt;
 2. 4321&lt;br /&gt;
 3. 222&lt;br /&gt;
 4. 121212&lt;br /&gt;
 root@zero:~# join name tel &amp;gt; telefonbuch&lt;br /&gt;
 root@zero:~# more telefonbuch&lt;br /&gt;
 1. karl 1234&lt;br /&gt;
 2. heinz 4321&lt;br /&gt;
 3. hans 222&lt;br /&gt;
 4. otto 121212&lt;br /&gt;
&lt;br /&gt;
 root@zero:~# join -t : /etc/passwd /etc/shadow&lt;br /&gt;
 ....&lt;br /&gt;
 daemon:x:1:1:daemon:/usr/sbin:/bin/sh:*:14181:0:99999:7:::&lt;br /&gt;
 bin:x:2:2:bin:/bin:/bin/sh:*:14181:0:99999:7:::&lt;br /&gt;
 sys:x:3:3:sys:/dev:/bin/sh:*:14181:0:99999:7:::&lt;br /&gt;
 sync:x:4:65534:sync:/bin:/bin/sync:*:14181:0:99999:7:::&lt;br /&gt;
 ...&lt;br /&gt;
&lt;br /&gt;
join in dat1 nach Feld 3 und in dat2 nach Feld 2&lt;br /&gt;
 thomas@lydia:~$ cat dat1 &lt;br /&gt;
 hugo:ps:1111&lt;br /&gt;
 erwin:zw:2222&lt;br /&gt;
 karl:sb:3333&lt;br /&gt;
 rudi:kl:4444&lt;br /&gt;
 thomas@lydia:~$ cat dat2&lt;br /&gt;
 blau:1111:svn&lt;br /&gt;
 grün:2222:fcs&lt;br /&gt;
 gelb:3333:fch&lt;br /&gt;
 rot:4444:fck&lt;br /&gt;
 thomas@lydia:~$ join -t : -1 3 -2 2 dat1 dat2 &lt;br /&gt;
 1111:hugo:ps:blau:svn&lt;br /&gt;
 2222:erwin:zw:grün:fcs&lt;br /&gt;
 3333:karl:sb:gelb:fch&lt;br /&gt;
 4444:rudi:kl:rot:fck&lt;br /&gt;
&lt;br /&gt;
==nl==&lt;br /&gt;
Nummeriert die Zeilen in einer Datei.&lt;br /&gt;
&lt;br /&gt;
 root@zero:~# nl /etc/passwd                                                   &lt;br /&gt;
     1  root:x:0:0:root:/root:/bin/bash                                       &lt;br /&gt;
     2  daemon:x:1:1:daemon:/usr/sbin:/bin/sh                                 &lt;br /&gt;
     3  bin:x:2:2:bin:/bin:/bin/sh                                            &lt;br /&gt;
     4  sys:x:3:3:sys:/dev:/bin/sh                                            &lt;br /&gt;
     5  sync:x:4:65534:sync:/bin:/bin/sync&lt;br /&gt;
     ...&lt;br /&gt;
Nummereriet mit führenden Nullen der Separatir ist ein :&lt;br /&gt;
 root@zero:~# nl -s : -n rz dat1&lt;br /&gt;
&lt;br /&gt;
==od==&lt;br /&gt;
Gibt Dateien im Oktal und anderen Formaten aus.&lt;br /&gt;
&lt;br /&gt;
 od [Optionen] Datei&lt;br /&gt;
&lt;br /&gt;
* -j ''Bytes'': Überspringt die Anzahl ''Bytes'' einer Datei&lt;br /&gt;
* -N ''Bytes'': Gibt nur die Anzahl ''Bytes'' aus&lt;br /&gt;
* -c : Gebe ASCII Zeichen aus&lt;br /&gt;
* -f : Gebe Fließkommazahlen aus&lt;br /&gt;
* -i : Gebe Dezimal Integer aus&lt;br /&gt;
* -l : Gebe Dezimal Long aus&lt;br /&gt;
* -o : Gebe Oktal 2 Byte Einheiten aus&lt;br /&gt;
* -s : Gebe Dezimal 2 Byte Einheiten aus&lt;br /&gt;
* -x : Gebe Hexadezimale 2 Byte einheiten aus&lt;br /&gt;
&lt;br /&gt;
Beispiele&lt;br /&gt;
&lt;br /&gt;
Gebe Master Boot Record (die ersten 512 Byte der Festplatte /dev/sda) als Hexadezimal aus&lt;br /&gt;
 root@zero:~# od '''-x -N''' 512 /dev/sda&lt;br /&gt;
 0000000 48eb 1090 d08e 00bc b8b0 0000 d88e c08e&lt;br /&gt;
 0000020 befb 7c00 00bf b906 0200 a4f3 21ea 0006&lt;br /&gt;
 0000040 be00 07be 0438 0b75 c683 8110 fefe 7507&lt;br /&gt;
 0000060 ebf3 b416 b002 bb01 7c00 80b2 748a 0203&lt;br /&gt;
 0000100 00ff 2000 0001 0000 0200 90fa f690 80c2&lt;br /&gt;
 ...&lt;br /&gt;
&lt;br /&gt;
Schreibe &amp;quot;suxer&amp;quot; in die Datei test&lt;br /&gt;
 root@zero:~# echo &amp;quot;suxer&amp;quot; &amp;gt; test&lt;br /&gt;
Ausgabe Hexadezimal&lt;br /&gt;
 root@zero:~# od -x test&lt;br /&gt;
 0000000 7573 6578 0a72&lt;br /&gt;
 0000006&lt;br /&gt;
&lt;br /&gt;
Ausgabe ASCII Zeichen&lt;br /&gt;
 root@zero:~# od -c test&lt;br /&gt;
 0000000   s   u   x   e   r  \n&lt;br /&gt;
 0000006&lt;br /&gt;
&lt;br /&gt;
==paste==&lt;br /&gt;
Fügt die Zeilen von zwei oder mehr Dateien horizontal zusammen&lt;br /&gt;
 root@zero:~# paste name tel&lt;br /&gt;
 1. karl 1. 1234&lt;br /&gt;
 2. heinz        2. 4321&lt;br /&gt;
 3. hans 3. 222&lt;br /&gt;
 4. otto 4. 121212&lt;br /&gt;
&lt;br /&gt;
==pr==&lt;br /&gt;
Bereitet Textdateien zum Drucken vor.&lt;br /&gt;
&lt;br /&gt;
 root@zero:~# echo &amp;quot;Plan für heute&amp;quot; &amp;gt; dokument&lt;br /&gt;
 root@zero:~# more dokument&lt;br /&gt;
 Plan für heute&lt;br /&gt;
 root@zero:~# pr dokument   &lt;br /&gt;
  &lt;br /&gt;
 &lt;br /&gt;
 2009-06-19 12:44                    dokument                     Seite 1&lt;br /&gt;
 &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
 Plan für heute&lt;br /&gt;
&lt;br /&gt;
Anmerkung Ausmaße der Bildschirmausgabe wie eine Druckseite.&lt;br /&gt;
&lt;br /&gt;
==sed==&lt;br /&gt;
streaming editor. Mit sed ist es möglich, den Inhalt einer Datei automatisch (nicht interaktiv) zu&lt;br /&gt;
bearbeiten. Wie unter Linux üblich, wird auch hier der Text nicht wirklich verändert sondern die &lt;br /&gt;
Änderung erfolgt über die Standardausgabe, die wieder umgeleitet werden kann. Die Syntax ist ähnlich &lt;br /&gt;
des ex modus von vi. Reguläre Ausdrücke können nach Belieben benutzt werden. &lt;br /&gt;
&lt;br /&gt;
Optionen:&lt;br /&gt;
 -e Zeichenkette  wendet die Editorbefehle aus Zeichenkette auf den Text an.&lt;br /&gt;
 -n gibt nur die Zeilen aus, die explizit (durch &amp;quot;p&amp;quot; ausgedruckt werden sollen&lt;br /&gt;
&lt;br /&gt;
Gibt die dritte Zeile der Datei text aus&lt;br /&gt;
 root@zero:~# sed -n &amp;quot;3p&amp;quot; text&lt;br /&gt;
 34&lt;br /&gt;
&lt;br /&gt;
Gibt die erste bis dritte Zeile von text aus&lt;br /&gt;
 root@zero:~# sed -n &amp;quot;1,3p&amp;quot; text&lt;br /&gt;
 sogar noch wichtiger&lt;br /&gt;
 123&lt;br /&gt;
 34&lt;br /&gt;
&lt;br /&gt;
Löschen der Zeile mit &amp;quot;sogar&amp;quot;&lt;br /&gt;
 root@zero:~# sed -e '/sogar/d' &amp;lt; text&lt;br /&gt;
 123&lt;br /&gt;
 34&lt;br /&gt;
 4711&lt;br /&gt;
 test&lt;br /&gt;
&lt;br /&gt;
und schreiben in text2&lt;br /&gt;
 root@zero:~# sed -e '/sogar/d' &amp;lt; text &amp;gt; text2&lt;br /&gt;
 root@zero:~# more text2&lt;br /&gt;
 123&lt;br /&gt;
 34&lt;br /&gt;
 4711&lt;br /&gt;
 test&lt;br /&gt;
&lt;br /&gt;
Alle 3en durch DREI ersetzen&lt;br /&gt;
 root@zero:~# sed -e 's/3/DREI/g' &amp;lt; text&lt;br /&gt;
 sogar noch wichtiger&lt;br /&gt;
 12DREI&lt;br /&gt;
 DREI4&lt;br /&gt;
 4711&lt;br /&gt;
 test&lt;br /&gt;
&lt;br /&gt;
==wc==&lt;br /&gt;
Zählt die Anzahl von Zeichen, Wörter oder Zeilen&lt;br /&gt;
&lt;br /&gt;
Optionen&lt;br /&gt;
* -m : Zählt die Anzahl der Zeichen&lt;br /&gt;
 root@zero:~# more name&lt;br /&gt;
 1. karl&lt;br /&gt;
 2. heinz&lt;br /&gt;
 3. hans&lt;br /&gt;
 4. otto&lt;br /&gt;
 root@zero:~# wc '''-m''' tel&lt;br /&gt;
 33 tel&lt;br /&gt;
&lt;br /&gt;
* -w : Zählt die Anzahl der Wörter (einschließlich Zahlen und andere Zeichen)&lt;br /&gt;
 root@zero:~# wc '''-w''' name&lt;br /&gt;
 8 name&lt;br /&gt;
&lt;br /&gt;
* -l : Zählt die Anzahl der Zeilen&lt;br /&gt;
 root@zero:~# wc '''-l''' name&lt;br /&gt;
 4 name&lt;br /&gt;
&lt;br /&gt;
==Sort==&lt;br /&gt;
&lt;br /&gt;
Zum sortieren von Dateien nach Feldern benutzt man sort. sort liest von STDIN man kann die Datei aber auch als Argument übergeben. &lt;br /&gt;
&lt;br /&gt;
Sortiert nach dem ersten Feld&lt;br /&gt;
  root@zero:~# sort /etc/passwd 	 &lt;br /&gt;
&lt;br /&gt;
Es wird geprüft ob die Datei schon sortiert ist &lt;br /&gt;
 root@zero:~# sort -c /etc/passwd 	&lt;br /&gt;
&lt;br /&gt;
Sortiert nach dem ersten Feld (Richtungsumkehr)  &lt;br /&gt;
 root@zero:~#  sort -r /etc/passwd&lt;br /&gt;
&lt;br /&gt;
Führende Leersortzeichen werden ignoriert &lt;br /&gt;
 root@zero:~# sort -b /etc/passwd&lt;br /&gt;
&lt;br /&gt;
Ausgabe  in die Datei pass&lt;br /&gt;
 root@zero:~# sort  /etc/passwd   -o pass	 &lt;br /&gt;
&lt;br /&gt;
nimmt : als Trenner -Voreinstellung ist TAB&lt;br /&gt;
  root@zero:~# sort -t : /etc/passwd&lt;br /&gt;
&lt;br /&gt;
sortiert nach dem  3 Feld,  der Trenner ist : und es wird nummerisch sortiert&lt;br /&gt;
&lt;br /&gt;
 root@zero:~# sort -t: +2 -n /etc/passwd		&lt;br /&gt;
&lt;br /&gt;
sortiert nach dem  3 Feld,  der Trenner ist : und es wird nummerisch sortiert&lt;br /&gt;
					&lt;br /&gt;
 root@zero:~# sort -t: -k 3 -n /etc/passwd&lt;br /&gt;
&lt;br /&gt;
Sortiert nach dem  3  bis zum 5 Feld, der Trenner ist : und es wird nummerisch sortiert&lt;br /&gt;
	&lt;br /&gt;
 root@zero:~# sort -t: -k 3,5 -n /etc/passwd	&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==INodes==&lt;br /&gt;
Inode (oder I-Node) wird im Deutschen am besten als Informationsknoten oder&lt;br /&gt;
Indexeintrag bezeichnet. Er fasst alle Attribute einer Datei zusammen außer dem Inhalt&lt;br /&gt;
und dem Namen der Datei.&lt;br /&gt;
&lt;br /&gt;
===Daten===&lt;br /&gt;
{| border=1 cellpadding=2&lt;br /&gt;
|type&lt;br /&gt;
|Der Typ der Datei wird als einzelner Buchstabe angezeigt. Der Typ einer Datei wird beim Anlegen der Datei festgelegt&lt;br /&gt;
|-&lt;br /&gt;
|Permissions &lt;br /&gt;
|Die Zugriffsrechte der Datei werden in den 12 Bit sstrwxrwxrwx abgespeichert.Wenn sie gesetzt sind, werden sie bei &lt;br /&gt;
der Ausgabe an Stelle der x-Rechte ausgegeben. Die Zugriffsrechte können mit dem Kommando chmod verändert werden.&lt;br /&gt;
|-&lt;br /&gt;
|link count&lt;br /&gt;
|In UNIX kann eine Datei mehr als einen Namen haben. Der Link Count gibt die Anzahl der Namen einer Datei an. Er kann&lt;br /&gt;
mit dem Kommando ln erhöht und dem Kommando rm erniedrigt werden.&lt;br /&gt;
|-&lt;br /&gt;
|owner&lt;br /&gt;
|Für den Dateieigentümer gelten die in der ersten rwx-Gruppe festgelegten Zugriffsrechte. Standardmäßig ist der &lt;br /&gt;
Eigentümer einer Datei derjenige Benutzer, der die Datei angelegt hat.&lt;br /&gt;
|-&lt;br /&gt;
|group&lt;br /&gt;
|Für Benutzer, die in der gleichen Gruppe sind, der die Datei angehört, gelten die in der zweiten rwx-Gruppe festgelegten&lt;br /&gt;
Zugriffsrechte. In System V gehört eine Datei standardmäßig der Gruppe an, in der der anlegende Benutzer gerade ist.&lt;br /&gt;
|-&lt;br /&gt;
|size&lt;br /&gt;
|Bei normalen Dateien und Verzeichnissen gibt diese Information die Länge der Datei in Byte an.&lt;br /&gt;
|-&lt;br /&gt;
|access time&lt;br /&gt;
|Die Zugriffszeit gibt den Zeitpunkt des letzten Lesezugriffes auf eine Datei an. Aus Effizienzgründen wird die &lt;br /&gt;
Zugriffszeit an Verzeichnissen nicht gesetzt, wenn ein Verzeichnis durchsucht wird, obwohl man dies erwarten könnte. ''(ls -l --time=atime)''&lt;br /&gt;
|-&lt;br /&gt;
|modification time&lt;br /&gt;
|Die Modifikationszeit gibt die Zeit des letzten Schreibzugriffes auf die Daten der Datei an. Intern speichert UNIX &lt;br /&gt;
die Zeit als Sekunden seit Beginn des Jahres 1970 und in GMT ab. Für die Ausgabe wird dies in ein besser lesbares &lt;br /&gt;
Format in der lokalen Zeitzone umgewandelt. ''(ls -l)''&lt;br /&gt;
|-&lt;br /&gt;
|change time &lt;br /&gt;
|Die Veränderungszeit gibt das Datum der letzten Statusänderung der Datei an. Sie wird immer dann gesetzt, wenn die &lt;br /&gt;
Informationen über die Datei sich ändern (Datum der Erzeugung wird nicht gespeichert) ''(ls -lc)''&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
===Dateiarten===&lt;br /&gt;
{| border=1 cellpadding=2&lt;br /&gt;
!Zeichen&lt;br /&gt;
!Typ&lt;br /&gt;
!Zweck&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;nowiki&amp;gt;-&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
|file&lt;br /&gt;
|normale Datei&lt;br /&gt;
|-&lt;br /&gt;
|d&lt;br /&gt;
|directory&lt;br /&gt;
|Verzeichnis&lt;br /&gt;
|-&lt;br /&gt;
|b&lt;br /&gt;
|block device&lt;br /&gt;
|Gerätedatei&lt;br /&gt;
|-&lt;br /&gt;
|c&lt;br /&gt;
|character device&lt;br /&gt;
|Gerätedatei&lt;br /&gt;
|-&lt;br /&gt;
|l&lt;br /&gt;
|link&lt;br /&gt;
|Querverweis&lt;br /&gt;
|-&lt;br /&gt;
|p&lt;br /&gt;
|named pipe&lt;br /&gt;
|Benannte Pipeline&lt;br /&gt;
|-&lt;br /&gt;
|s&lt;br /&gt;
|socket&lt;br /&gt;
|Netzwerkverbindung&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
====Normale Dateien====&lt;br /&gt;
Unter einer normalen Datei versteht man die Ansammlung von Daten. Dies kann ein Text, Programm, Bild oder sonstiges sein. &lt;br /&gt;
Beispiel&lt;br /&gt;
 root@zero:~# ls -l text | cut -c 1&lt;br /&gt;
 -&lt;br /&gt;
&lt;br /&gt;
====Verzeichnisse====&lt;br /&gt;
Dateien werden in Verzeichnissen gespeichert, nur so ist eine Ordnung möglich. &lt;br /&gt;
 root@zero:~# mkdir -v Ordner&lt;br /&gt;
 mkdir: Verzeichnis „Ordner“ angelegt&lt;br /&gt;
 &lt;br /&gt;
 root@zero:~# ls -ld Ordner | cut -c 1&lt;br /&gt;
 d&lt;br /&gt;
&lt;br /&gt;
====Gerätedateien (Block und Char)====&lt;br /&gt;
Gerätedateien ermöglichen Anwendungsprogrammen unter Benutzung des  Kernels den Zugriff auf die Hardwarekomponenten des Systems. Ansprechbar über Major und Minor Nummern &lt;br /&gt;
&lt;br /&gt;
Beispiele&lt;br /&gt;
&lt;br /&gt;
Sicherung des Master Boot Records der ersten Festplatte&lt;br /&gt;
 root@zero:~# dd if=/dev/sda of=/tmp/mbr.img bs=512 count=1&lt;br /&gt;
&lt;br /&gt;
Block Device &lt;br /&gt;
 root@zero:~# ls -l /dev/sda | cut -c 1 &lt;br /&gt;
 b&lt;br /&gt;
&lt;br /&gt;
Character Device &lt;br /&gt;
 root@zero:~# ls -l /dev/ttyS0  | cut -c 1 &lt;br /&gt;
 c&lt;br /&gt;
&lt;br /&gt;
Erstellen einer Gerätedatei&lt;br /&gt;
 root@zero:/dev# mknod sata1 b 8 0 &lt;br /&gt;
 root@zero:/dev# fdisk -l /dev/sata1 &lt;br /&gt;
 &lt;br /&gt;
 Platte /dev/sata1: 6442 MByte, 6442450944 Byte&lt;br /&gt;
 255 Köpfe, 63 Sektoren/Spuren, 783 Zylinder&lt;br /&gt;
 Einheiten = Zylinder von 16065 × 512 = 8225280 Bytes&lt;br /&gt;
 Disk identifier: 0x0005efab&lt;br /&gt;
 &lt;br /&gt;
       Gerät  boot.     Anfang        Ende     Blöcke   Id  System&lt;br /&gt;
 /dev/sata1p1   *           1         743     5968116   83  Linux&lt;br /&gt;
 /dev/sata1p2             744         783      321300    5  Erweiterte&lt;br /&gt;
 /dev/sata1p5             744         783      321268+  82  Linux Swap / Solaris&lt;br /&gt;
&lt;br /&gt;
====Named Pipes====&lt;br /&gt;
Benannte Pipes (Named Pipes) können dagegen auch zur Kommunikation zwischen Prozessen eingesetzt werden, die nicht miteinander&lt;br /&gt;
verwandt sind und sich darüber hinaus auf unterschiedlichen Rechnern innerhalb eines Netzwerkes befinden dürfen. Sie sind &lt;br /&gt;
flexibler als anonyme Pipes und eignen sich für sogenannte Client-Server-Anwendungen (es lassen sich auch RPCs realisieren).&lt;br /&gt;
Benannte Pipes ermöglichen die gleichzeitige Kommunikation in beide Richtungen, das heißt, Daten können im Vollduplexbetrieb &lt;br /&gt;
zwischen den Prozessen ausgetauscht werden.&lt;br /&gt;
 &lt;br /&gt;
Erstelle Named Pipe mit Namen /tmp/roehre. Schreibe &amp;quot;hallo welt&amp;quot; in die Pipe und bleibe&lt;br /&gt;
 xinux@zero:~$ mkfifo /tmp/roehre&lt;br /&gt;
 xinux@zero:~$ echo hallo welt &amp;gt; /tmp/roehre &lt;br /&gt;
&lt;br /&gt;
Gebe Inhalt der Pipe mit cat aus&lt;br /&gt;
 root@zero:~# cat &amp;lt; /tmp/roehre &lt;br /&gt;
 hallo welt&lt;br /&gt;
 root@zero:~# ls -l /tmp/roehre | cut -c 1&lt;br /&gt;
 p&lt;br /&gt;
&lt;br /&gt;
====Sockets====&lt;br /&gt;
Schnittstelle um es lokalen Anwendungen zu ermöglichen, miteinander Netwerkmässig zu kommunizieren.&lt;br /&gt;
&lt;br /&gt;
 root@lydia:~# netstat  -lnxp | tail -1&lt;br /&gt;
  unix  2 [ ACC ] STREAM HÖRT 21951 6646/nm-applet /tmp/orbit-thomas/linc-19f6-0-2b9b81095cede&lt;br /&gt;
&lt;br /&gt;
 root@lydia:~# ls -l /tmp/orbit-thomas/linc-19f6-0-2b9b81095cede  | cut -c 1 &lt;br /&gt;
 s&lt;br /&gt;
&lt;br /&gt;
====Links====&lt;br /&gt;
Bei Links handelt es sich um symbolische Verweise auf andere Dateien&lt;br /&gt;
&lt;br /&gt;
'''Softlink'''&lt;br /&gt;
Ein Softlink ist eine Datei die nur auf den Namen einer anderen Datei verweist. Wenn die Originaldatei gelöscht wird, zeigt &lt;br /&gt;
der Link ins Leere. &lt;br /&gt;
&lt;br /&gt;
 ln -s datei softlink&lt;br /&gt;
&lt;br /&gt;
{| border=1 cellpadding=2&lt;br /&gt;
| Vorteile&lt;br /&gt;
| Symbolische Links können auch auf Verzeichnisse angelegt werden&amp;lt;br&amp;gt;Sie sind partitionsübergreifend&amp;lt;br&amp;gt;Man kann sie auf Dateien anlegen, die noch nicht existieren&lt;br /&gt;
|-&lt;br /&gt;
| Nachteile&lt;br /&gt;
| Wenn das Original gelöscht ist, ist kein Zugriff mehr möglich&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Beispiel&lt;br /&gt;
 root@zero:~# ln -s text verweis&lt;br /&gt;
 root@zero:~# ls -l verweis&lt;br /&gt;
 lrwxrwxrwx 1 root root 4 2009-06-18 15:48 verweis -&amp;gt; text&lt;br /&gt;
&lt;br /&gt;
'''Hardlinks'''&lt;br /&gt;
 ln datei hardlink&lt;br /&gt;
Eigentlich ist jede Datei ein Hardlink. Ein Hardlink ist ein Verzeichniseintrag,&lt;br /&gt;
der auf eine Inode verweist. Beim Erzeugen einer Datei verweist ein Eintrag auf&lt;br /&gt;
eine Inode. Man kann dann weitere Verweise erzeugen. Der Linkcounter wird&lt;br /&gt;
jeweils um 1 erhöht. Beim Löschen einer Datei wird er jeweils um 1 reduziert.&lt;br /&gt;
Wird der Wert 0 erreicht, ist die Datei gelöscht.&lt;br /&gt;
{| border=1 cellpadding=2&lt;br /&gt;
| Vorteile&lt;br /&gt;
|Zugriff auf die Daten, selbst wenn das Orginal gelöscht ist.&lt;br /&gt;
|-&lt;br /&gt;
|Nachteile&lt;br /&gt;
|Man kann keine Hardlinks auf Verzeichnisse anlegen.&lt;br /&gt;
Ist nur innerhalb einer Partion möglich.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Beispiel&lt;br /&gt;
 root@zero:~# touch 1&lt;br /&gt;
 root@zero:~# echo &amp;quot;text&amp;quot; &amp;gt; 1&lt;br /&gt;
 root@zero:~# ln 1 2&lt;br /&gt;
 root@zero:~# more 2&lt;br /&gt;
 text&lt;br /&gt;
 root@zero:~# echo &amp;quot;doch kein text&amp;quot; &amp;gt; 1&lt;br /&gt;
 root@zero:~# more 1&lt;br /&gt;
 doch kein text&lt;br /&gt;
 root@zero:~# more 2&lt;br /&gt;
 doch kein text&lt;br /&gt;
&lt;br /&gt;
Weitere Optionen:&lt;br /&gt;
 -b sichert Dateien, statt sie zu überschreiben &lt;br /&gt;
 -f Überschreibt bestehende, gleichnamige Dateien&lt;br /&gt;
 -i fragt vor dem Überschreiben nach Bestätigung&lt;br /&gt;
 -v ausführliche Meldungen&lt;br /&gt;
Softlink mit dem Namen passwd im Homeverzeichnis angelegt&lt;br /&gt;
 xinux@zero:~$ ln -vs /etc/passwd .&lt;br /&gt;
 „./passwd“ -&amp;gt; „/etc/passwd“&lt;br /&gt;
Softlink mit dem Namen passwd im Homeverzeichnis angelegt(Original exestiert nicht) &lt;br /&gt;
 xinux@zero:~$ ln -vs /etc/hund .&lt;br /&gt;
 „./hund“ -&amp;gt; „/etc/hund“&lt;br /&gt;
Hardlink mit dem Namen hosts im Homeverzeichnis angelegt&lt;br /&gt;
  xinux@zero:~$ ln -v /etc/hosts .&lt;br /&gt;
 „./hosts“ =&amp;gt; „/etc/hosts“&lt;br /&gt;
Auf eine nicht existierende Datei kann kein Hardlink angelegt werden!&lt;br /&gt;
 xinux@zero:~$ ln -v /etc/katze .&lt;br /&gt;
 ln: Zugriff auf „/etc/katze“: No such file or directory&lt;br /&gt;
&lt;br /&gt;
==Shellsonderzeichen==&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot; cellpadding=&amp;quot;2&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
|;&lt;br /&gt;
|Trenne Kommandos&lt;br /&gt;
|-&lt;br /&gt;
|. oder source&lt;br /&gt;
|Ausführen wie in aktueller Shell&lt;br /&gt;
|-&lt;br /&gt;
|#&lt;br /&gt;
|Kommentar&lt;br /&gt;
|-&lt;br /&gt;
|&amp;amp;&lt;br /&gt;
|Programm im Hintergrund starten &lt;br /&gt;
|-&lt;br /&gt;
|&amp;amp;&amp;amp;&lt;br /&gt;
|UND -Ausführung  (wenn links wahr dann führe rechts aus)&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;nowiki&amp;gt;|&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
|STOUT von links wird zu STDIN von rechts &lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;nowiki&amp;gt;||&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
|ODER -Ausführung (wenn links falsch dann führe rechts aus)&lt;br /&gt;
|-&lt;br /&gt;
|*&lt;br /&gt;
|steht für beliebig viel Zeichen auch 0 &lt;br /&gt;
|-&lt;br /&gt;
|?&lt;br /&gt;
|steht für genau ein Zeichen &lt;br /&gt;
|-&lt;br /&gt;
|[abc]&lt;br /&gt;
|steht für eins der Zeichen in [ ] hier a b oder c &lt;br /&gt;
|-&lt;br /&gt;
|[ausdruck] &lt;br /&gt;
|Andere Schreibweis für test &lt;br /&gt;
|-&lt;br /&gt;
|~&lt;br /&gt;
|das Homeverzeichnis&lt;br /&gt;
|-&lt;br /&gt;
|&amp;gt;    und    &amp;gt;&amp;gt;&lt;br /&gt;
|leite in Datei um   &amp;gt;  überschreibe     &amp;gt;&amp;gt; hänge an &lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;&lt;br /&gt;
|lesen aus Datei &lt;br /&gt;
|-&lt;br /&gt;
|2&amp;gt;&amp;amp;1&lt;br /&gt;
|leite STDERR auf STDOUT&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;&amp;lt; ende&lt;br /&gt;
|Lesen aus Datei (Heredokument)&lt;br /&gt;
|-&lt;br /&gt;
|(...)&lt;br /&gt;
|Alles inhalb von ( ) wird als Subshell ausgeführt&lt;br /&gt;
|-&lt;br /&gt;
|{...}&lt;br /&gt;
|Gruppieren von Komandos &lt;br /&gt;
|-&lt;br /&gt;
|{ ,  ,  , }&lt;br /&gt;
|Zeichenketten zusammensetzen &lt;br /&gt;
|-&lt;br /&gt;
|$&lt;br /&gt;
|Inhalt von Variablen ausgeben $SUX&lt;br /&gt;
|-&lt;br /&gt;
|$* oder $@&lt;br /&gt;
|Liste der übergebenen Parameter&lt;br /&gt;
|-&lt;br /&gt;
|$# &lt;br /&gt;
|Anzahl der übergebenen Parameter &lt;br /&gt;
|-&lt;br /&gt;
|$0&lt;br /&gt;
|Name des Shellprogramms &lt;br /&gt;
|-&lt;br /&gt;
|$?&lt;br /&gt;
|Rückgabewert des letzten Kommandos &lt;br /&gt;
|-&lt;br /&gt;
|$!  und  $$&lt;br /&gt;
|PID des  $!  = letzten Hintergrund  -  , $$ = aktuellen Prozess&lt;br /&gt;
|-&lt;br /&gt;
|$1 ..$9&lt;br /&gt;
|Parameter 1 bis 9 &lt;br /&gt;
|-&lt;br /&gt;
|$() oder `  `&lt;br /&gt;
|Kommandosubstition&lt;br /&gt;
|-&lt;br /&gt;
|${ }&lt;br /&gt;
|Funktion zur Manipulation von Zeichenketten &lt;br /&gt;
|-&lt;br /&gt;
|$(( )) oder $[ ]&lt;br /&gt;
|Arithmetische Berechnung &lt;br /&gt;
|-&lt;br /&gt;
|&amp;quot;...&amp;quot;&lt;br /&gt;
|Entwertung der Sonderzeichen ausser $ ' \&lt;br /&gt;
|-&lt;br /&gt;
|'...'&lt;br /&gt;
|Entwertung sämtlicher Sonderzeichen ausser ' selbst&lt;br /&gt;
|-&lt;br /&gt;
|\  &lt;br /&gt;
|Entwertung des folgenden Sonderzeichens &lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==Prozesse==&lt;br /&gt;
===Was ist ein Prozess?===&lt;br /&gt;
Ein Prozess setzt sich aus zwei Teilen zusammen:&lt;br /&gt;
&lt;br /&gt;
1.Programm, das in den Hauptspeicher geladen wurde&lt;br /&gt;
&lt;br /&gt;
2.Prozessumgebung &lt;br /&gt;
&lt;br /&gt;
Unter einem Prozess versteht man ein Programm (binär), das in den Hauptspeicher&lt;br /&gt;
geladen wurde. Also nicht das Program selbst, das auf der Festplatte liegt ist der&lt;br /&gt;
Prozess, sondern es wird erst durch das Laden in den Hauptspeicher dazu.&lt;br /&gt;
Normalerweise liegt ein Programm als ausführbare Datei irgendwo auf der&lt;br /&gt;
Festplatte oder auf Diskette. Ob es sich bei dem Programm um eine binäre Datei&lt;br /&gt;
handelt, kann man mit dem Befehl '' file '' feststellen.&lt;br /&gt;
 &lt;br /&gt;
 root@zero:~# file /bin/mkdir&lt;br /&gt;
 /bin/mkdir: ELF 32-bit LSB executable, Intel 80386, version 1 (SYSV), dynamically linked (uses shared libs), for GNU/Linux 2.6.8, stripped&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Die Datei liegt im Maschinencode vor und kann in den Hauptspeicher geladen&lt;br /&gt;
werden. Sobald dies geschehen ist, kann der Rechner diesen Maschinencode&lt;br /&gt;
abarbeiten (ausführen).&lt;br /&gt;
&lt;br /&gt;
Da aber ein Programm nicht direkt auf die Hardware zugreifen soll, muss es vom&lt;br /&gt;
Betriebsystem kontrolliert werden. Das Betriebssystem liegt logisch gesehen&lt;br /&gt;
zwischen Hardware und Anwendung. Das Betriebssystem ordnet jedem Prozess&lt;br /&gt;
verschiedene Kenndaten zu, um die Prozesse verwalten zu können. Alle&lt;br /&gt;
Kenndaten, die einem Prozess zugeordnet sind, nennt man die&lt;br /&gt;
Prozessumgebung.Wenn man in der Shell ein Kommando eingibt, wird ein Prozess&lt;br /&gt;
kreiert. Natürlich ist die Shell selbst auch ein Prozess. Ein Prozess kann aber&lt;br /&gt;
genauso gut ein Serverprozess (Dienst) sein, z.B. Apache.&lt;br /&gt;
Ein wesentliches Merkmal eines Prozesses ist die Prozesskommunikation. Über im&lt;br /&gt;
Betriebssystem implementierte Methoden ist es möglich, dass verschiedene&lt;br /&gt;
Prozesse Signale und Daten untereinander austauschen können.&lt;br /&gt;
Dadurch wird auch dem Benutzer ermöglicht, einem Prozeß bestimmte Signale zu&lt;br /&gt;
senden bzw. auf den Status eines Prozesses Einfluss zu nehmen.&lt;br /&gt;
&lt;br /&gt;
===Prozesstabelle (Anzeige mit ps)===&lt;br /&gt;
Da zu jedem Prozess Kenndaten geführt werden, müssen diese auch irgendwo&lt;br /&gt;
festgehalten werden. Das geschieht in der sogenannten Prozesstabelle.&lt;br /&gt;
&lt;br /&gt;
Kenndaten der Prozesse (Auswahl):&lt;br /&gt;
* F Flags (z.B. ausgelagert; Systemprozess; Trace,...)&lt;br /&gt;
* UID Nutzer, mit dessen Rechten der Prozess ausgeführt wird&lt;br /&gt;
* PID Prozess - ID. Diese Nummer gibt eine eindeutige Prozess - Nummer&lt;br /&gt;
an. Sie wird vom System automatisch beim Starten des Prozesses&lt;br /&gt;
vergeben und ist für die Laufzeit eindeutig.&lt;br /&gt;
* PPID Prozessnumer der Eltern-Prozesses&lt;br /&gt;
* PRI Priorität eines Prozesses; je niedriger der Wert ist, desto besser&lt;br /&gt;
* NI ist der Nicewert des Prozesses; Nice erniedrigt den Grundwert&lt;br /&gt;
der Priorität des Prozesses und gibt damit Prozessorzeit für andere&lt;br /&gt;
Prozesse frei.&lt;br /&gt;
* SIZE Speichergröße des Prozesses inklusive Stack (eine Art Zwischenspeicher)&lt;br /&gt;
* RSS Verbrauch an physischen Speicher&lt;br /&gt;
* WCHAN ist der Name der Kernerlfunktion, in der der Prozess schläft&lt;br /&gt;
* STAT Status des Prozesses&lt;br /&gt;
R läuft       S schlafend     D nicht störbarer Schlaf&lt;br /&gt;
T angehalten  Z Zombie        W der Prozess belegt keine Seiten&lt;br /&gt;
* TIME Bisland benötigte Prozessorzeit&lt;br /&gt;
* SIZE ist die Größe von Text, Daten und Stack&lt;br /&gt;
* TTY die Nummer des kontrollierenden Teminal; wenn hier ein ? steht,&lt;br /&gt;
handelt es sich um einen Dämon oder Serverprozess.&lt;br /&gt;
* COMMAND Angabe des Prozesses selbst. Dies ist meist der Programmname.&lt;br /&gt;
&lt;br /&gt;
Weiteres&lt;br /&gt;
* GID Gruppe, unter der der Prozess läuft&lt;br /&gt;
* Verweis auf das aktuellen Arbeitsverzeichnis&lt;br /&gt;
* Um mit relativen Pfadangaben arbeiten zu können braucht man diesen Eintrag&lt;br /&gt;
* Tabelle mit Verweisen auf aktuell geöffnete Dateien&lt;br /&gt;
* 3 sind automatisch geöffnet Standardeingabe, Standardausgabe und&lt;br /&gt;
Standardfehlerkanal&lt;br /&gt;
&lt;br /&gt;
Beispiel&lt;br /&gt;
 root@zero:~# ps -l&lt;br /&gt;
 F S   UID   PID  PPID  C PRI  NI ADDR SZ WCHAN  TTY          TIME CMD&lt;br /&gt;
 4 R     0 18639 18631  0  80   0 -  1080 -      pts/0    00:00:00 bash&lt;br /&gt;
 0 R     0 25904 18639  0  80   0 -   635 -      pts/0    00:00:00 ps&lt;br /&gt;
&lt;br /&gt;
===Eltern und Kinder===&lt;br /&gt;
Jeder Prozess kann weitere Prozesse erzeugen. Die erzeugten Prozesse bezeichnet&lt;br /&gt;
man als Kindprozesse. Jeder Kindprozess weiß anhand der PID, woher er stammt.&lt;br /&gt;
&lt;br /&gt;
Alle Prozesse sind von einem anderen Prozess gestartet worden, mit Ausnahme&lt;br /&gt;
des Pseudoprozesses (noch im Kernel beim Starten erzeugter Prozess). Dieser hat&lt;br /&gt;
die Prozessnummer 0. Er hat die Aufgabe, den Init Prozess ( /sbin/init die Nummer&lt;br /&gt;
1) zu starten, der in System V alle anderen Prozesse direkt oder über seine Kind-&lt;br /&gt;
prozesse startet. (init wird konfiguriert durch die /etc/inittab)&lt;br /&gt;
&lt;br /&gt;
Es gibt zwei Arten wie ein Prozess gestartet werden kann:&lt;br /&gt;
&lt;br /&gt;
# Fork und Exec: Prozessumgebung wird dupliziert, der neue Prozess bekommt eine eigene neue PID&lt;br /&gt;
# Exec: Alter Prozess wird durch neuen Prozess überladen (geht mit dem shell-buildin exec)&lt;br /&gt;
&lt;br /&gt;
'''Rechte auf Objekte UID GID'''&lt;br /&gt;
Ob ein Prozess auf eine Datei zugreifen kann, entscheidet der Kernel anhand der&lt;br /&gt;
Zugriffssrechte, die auf der Datei gesetzt sind. Er checkt anhand der UID und GID&lt;br /&gt;
des Prozesses, ob es erlaubt ist. Mit dieser Technik wird letztendlich geprüft, was&lt;br /&gt;
ein User darf, und was nicht.&lt;br /&gt;
&lt;br /&gt;
===Rechenzeit und Priorität===&lt;br /&gt;
Da auch bei Prozessen eine Gerechtigkeit herschen muss, muss eine Instanz&lt;br /&gt;
darüber entscheiden wie lange ein Prozess Rechenzeit verbrauchen darf.&lt;br /&gt;
Folgende Kenndaten werden dazu benötigt&lt;br /&gt;
* clocktick = Zeiteinheit&lt;br /&gt;
* n = Faktor über den Kernel einstellbar&lt;br /&gt;
* slice = n &amp;lt;nowiki&amp;gt;*&amp;lt;/nowiki&amp;gt; clocktick&lt;br /&gt;
* agingtime = weitere Zeiteinheit über den Kernel einstellbar&lt;br /&gt;
&lt;br /&gt;
Es wird davon ausgegangen das der Prozess mit der niedrigsten Priorität gerade&lt;br /&gt;
rechnet. Pro clocktick erhöht sich die Priorität dieses Prozesses um eins.&lt;br /&gt;
&lt;br /&gt;
Jetzt können 3 Situationen eintreten die alle dazu führen das der Scheduler&lt;br /&gt;
aufgerufen wird.&lt;br /&gt;
&lt;br /&gt;
# Prozess blockiert wegen einer Ausgabe oder Eingabe.&lt;br /&gt;
# Gibt Rechenzeit freiwillig ab.&lt;br /&gt;
# Der Slice endet.&lt;br /&gt;
&lt;br /&gt;
Der Aufruf des Schedulers bewirkt das der Prozess mit der niedrigsten Priorität&lt;br /&gt;
gescheduled wird, er also nun rechnen darf. Nach Ablauf der agingtime werden&lt;br /&gt;
nun die Prozesse &amp;quot;gealtert&amp;quot;. Das geschieht nach folgender Formel&lt;br /&gt;
&lt;br /&gt;
Neue Priorität = Alte Priorität / 2 + Nicewert&lt;br /&gt;
&lt;br /&gt;
Der User hat die Möglichkeit, über den sogenannten Nicewert den Grundwert für&lt;br /&gt;
einen Prozess zu senken. Der Prozess braucht dann länger für seine Abarbeitung.&lt;br /&gt;
Er verhält sich somit netter zu den anderen Prozessen. Normale User können nur&lt;br /&gt;
netter werden, der Systemverwalter kann auch nicht netter (gemeiner) werden. Der&lt;br /&gt;
Bereich liegt zwischen 19 (sehr nett) bis 0 (weniger nett) für die User, und 19 bis&lt;br /&gt;
-20 für root.&lt;br /&gt;
&lt;br /&gt;
[[Image:pri.png]]&lt;br /&gt;
&lt;br /&gt;
'''Signale'''&lt;br /&gt;
&lt;br /&gt;
Mit den Kommando kill und killall kann man Prozessen Signale schicken&lt;br /&gt;
&lt;br /&gt;
 kill -Signalnummer PID &lt;br /&gt;
&lt;br /&gt;
Signalnummer&lt;br /&gt;
{| border=1 cellpadding=2&lt;br /&gt;
!Signalname&lt;br /&gt;
!Wert&lt;br /&gt;
!Aktion&lt;br /&gt;
|-&lt;br /&gt;
|SIGHUP&lt;br /&gt;
|1&lt;br /&gt;
|Neuinitialisierung eines Prozesses&lt;br /&gt;
|-&lt;br /&gt;
|SIGINT&lt;br /&gt;
|2&lt;br /&gt;
|Interrupt-Signal von der Tastatur (STRG+c)&lt;br /&gt;
|-&lt;br /&gt;
|SIGQUIT&lt;br /&gt;
|3&lt;br /&gt;
|Interrupt-Signal von der Tastatur (STRG+c) mit Dump&lt;br /&gt;
|-&lt;br /&gt;
|SIGKILL&lt;br /&gt;
|9&lt;br /&gt;
|unwiderrufliches Beendigungssignal (Töten)&lt;br /&gt;
|-&lt;br /&gt;
|SIGSEGV&lt;br /&gt;
|11&lt;br /&gt;
|Ungültige Speicherreferenz (bedeutet oft auf defekten Speicher)&lt;br /&gt;
|-&lt;br /&gt;
|SIGTERM &lt;br /&gt;
|15&lt;br /&gt;
|Beendigungssignal (geöffnete Dateien werden geschlossen)&lt;br /&gt;
|-&lt;br /&gt;
|SIGCONT &lt;br /&gt;
|18&lt;br /&gt;
|Weiterfahren, wenn gestoppt&lt;br /&gt;
|-&lt;br /&gt;
|SIGSTOP&lt;br /&gt;
|19&lt;br /&gt;
|Prozessstop&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Beispiel&lt;br /&gt;
 root@zero:~# kill -1 7562&lt;br /&gt;
&lt;br /&gt;
===Programme im Zusammenhang mit Prozessen===&lt;br /&gt;
* ps: Zeigt die Prozesse mit ihrem Status an&lt;br /&gt;
 root@zero:~# ps&lt;br /&gt;
  PID TTY          TIME CMD&lt;br /&gt;
 14134 pts/0    00:00:00 bash&lt;br /&gt;
 14149 pts/0    00:00:00 ps&lt;br /&gt;
&lt;br /&gt;
 root@zero:~# ps -elf | grep apache&lt;br /&gt;
 1 S root      5738     1  0  80   0 -  5461 select Jun16 ?        00:00:00 /usr/sbin/apache2 -k start&lt;br /&gt;
 5 S www-data  5739  5738  0  80   0 -  5581 inet_c Jun16 ?        00:00:00 /usr/sbin/apache2 -k start&lt;br /&gt;
 5 S www-data  5742  5738  0  80   0 -  5461 inet_c Jun16 ?        00:00:00 /usr/sbin/apache2 -k start&lt;br /&gt;
 5 S www-data  5743  5738  0  80   0 -  5461 inet_c Jun16 ?        00:00:00 /usr/sbin/apache2 -k start&lt;br /&gt;
 5 S www-data  5745  5738  0  80   0 -  5461 inet_c Jun16 ?        00:00:00 /usr/sbin/apache2 -k start&lt;br /&gt;
 5 S www-data  5746  5738  0  80   0 -  5461 inet_c Jun16 ?        00:00:00 /usr/sbin/apache2 -k start&lt;br /&gt;
 0 S root     14153 14134  0  80   0 -   837 pipe_w 16:59 pts/0    00:00:00 grep apache&lt;br /&gt;
&lt;br /&gt;
Option 	Beschreibung&lt;br /&gt;
*l langes Format&lt;br /&gt;
*u 	zeige für jeden Prozess Besitzer und Startzeit an&lt;br /&gt;
*j 	Jobs-Format: Zeige PGID und SID an&lt;br /&gt;
*s 	Informationen über Signale ausgeben&lt;br /&gt;
*m 	Speicher-Informationen anzeigen&lt;br /&gt;
*f 	Baumstruktur der Prozesse anzeigen (ähnlich pstree)&lt;br /&gt;
*a 	alle Prozesse (jedes Benutzers) anzeigen&lt;br /&gt;
*x 	kontrollierendes Terminal nicht anzeigen&lt;br /&gt;
*e 	Für den Prozess gültige Umgebungsvariablen mit anzeigen (sinnvollerweise mit mehreren Optionen »w« anwenden, um die Ausgabe nicht am Zeilenende abzuschneiden)&lt;br /&gt;
*w 	längere Ausgabe. »w« kann mehrfach verwendet werden, um die maximale Länge um je eine Zeile zu vergrößern&lt;br /&gt;
*h 	Header mit Feldbezeichnern unterdrücken&lt;br /&gt;
*r 	nur laufende Prozesse ausgeben&lt;br /&gt;
*n 	User-ID statt User-Name ausgeben&lt;br /&gt;
*txx 	nur Prozesse ausgeben, die vom angegebenen Terminal kontrolliert werden. xx kann entweder einer der Terminal-Gerätenamen unter /dev (z.B. tty1) oder die entsprechende Kurzbezeichnung ohne »tty« (z.B. 1) sein.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* nice: Lässt ein Programm mit verändertem Grundwert der Priorität laufen&lt;br /&gt;
 root@zero:~# nice&lt;br /&gt;
 0&lt;br /&gt;
 root@zero:~# nice -n 9 bash&lt;br /&gt;
 root@zero:~# nice&lt;br /&gt;
 9&lt;br /&gt;
 root@zero:~#&lt;br /&gt;
&lt;br /&gt;
* renice: Ändert den Grundwert der Priorität eines laufenden Prozesses&lt;br /&gt;
 root@zero:~# renice 10 5742&lt;br /&gt;
 5742: Alte Priorität: 0, neue Priorität: 10&lt;br /&gt;
&lt;br /&gt;
* top: Zeigt die Prozesse mit ihrem Status an (Abbrechen mit q)&lt;br /&gt;
 root@zero:~# top&lt;br /&gt;
&lt;br /&gt;
* pstree: Zeigt die Prozesse als Baumstruktur&lt;br /&gt;
 root@zero:~# pstree&lt;br /&gt;
 init─┬─NetworkManager&lt;br /&gt;
      ├─acpid&lt;br /&gt;
      ├─apache2───5*[apache2]&lt;br /&gt;
      ├─atd&lt;br /&gt;
      ├─bluetoothd&lt;br /&gt;
      ├─console-kit-dae───63*[{console-kit-dae}]&lt;br /&gt;
      ├─cron&lt;br /&gt;
      ├─cupsd&lt;br /&gt;
      ├─dbus-daemon&lt;br /&gt;
      ├─dd&lt;br /&gt;
      ├─gdm───gdm─┬─Xorg&lt;br /&gt;
      │           └─gdmgreeter&lt;br /&gt;
      ├─6*[getty]&lt;br /&gt;
      ├─hald───hald-runner─┬─hald-addon-acpi&lt;br /&gt;
      │                    ├─hald-addon-inpu&lt;br /&gt;
      │                    └─2*[hald-addon-stor]&lt;br /&gt;
      ├─klogd&lt;br /&gt;
      ├─nm-system-setti&lt;br /&gt;
      ├─nmbd&lt;br /&gt;
      ├─nscd───11*[{nscd}]&lt;br /&gt;
      ├─portmap&lt;br /&gt;
      ├─rpc.statd&lt;br /&gt;
      ├─slapd───2*[{slapd}]&lt;br /&gt;
      ├─smbd───smbd&lt;br /&gt;
      ├─sshd───sshd───bash───bash───pstree&lt;br /&gt;
      ├─syslogd&lt;br /&gt;
      ├─system-tools-ba&lt;br /&gt;
      ├─udevd&lt;br /&gt;
      ├─winbindd─┬─winbindd───winbindd&lt;br /&gt;
      │          └─3*[winbindd]&lt;br /&gt;
      └─wpa_supplicant&lt;br /&gt;
&lt;br /&gt;
===Jobs===&lt;br /&gt;
Unter einem Job versteht man ein Programm, welches man von der Shell gelöst&lt;br /&gt;
hat. D. h. man kann ganz normal weiter arbeiten und der Job verrichtet seinen&lt;br /&gt;
Dienst im Hintergrund. Man kann jederzeit zu diesem Job wieder Kontakt&lt;br /&gt;
aufnehmen.&lt;br /&gt;
&lt;br /&gt;
Ein Job kann auf 2 Arten gestarten werden:&lt;br /&gt;
&lt;br /&gt;
# Durch Anhängen des &amp;amp; Zeichens beim Programmstart&lt;br /&gt;
 root@zero:~# tail -f /var/log/messages &amp;amp;&lt;br /&gt;
 Jun 19 06:59:31 zero -- MARK --&lt;br /&gt;
 Jun 19 07:19:31 zero -- MARK --&lt;br /&gt;
 Jun 19 07:39:32 zero -- MARK --&lt;br /&gt;
 Jun 19 07:44:57 zero syslogd 1.5.0#5ubuntu3: restart.&lt;br /&gt;
 Jun 19 07:59:32 zero -- MARK --&lt;br /&gt;
 Jun 19 08:19:32 zero -- MARK --&lt;br /&gt;
 Jun 19 08:39:32 zero -- MARK --&lt;br /&gt;
 Jun 19 08:59:32 zero -- MARK --&lt;br /&gt;
 Jun 19 09:19:33 zero -- MARK --&lt;br /&gt;
 Jun 19 09:39:33 zero -- MARK --&lt;br /&gt;
 [3] 27421&lt;br /&gt;
&lt;br /&gt;
# Durch Stoppen des Prozesses durch Drücken von Strg-Z und in den Hintergrund schicken mit %n (n ist die Jobnummer)&lt;br /&gt;
 root@zero:~# watch cat /proc/cpuinfo&lt;br /&gt;
 Strg-Z&lt;br /&gt;
 [4]+  Stopped                 watch cat /proc/cpuinfo&lt;br /&gt;
 root@zero:~# bg %4&lt;br /&gt;
 [4]+ watch cat /proc/cpuinfo &amp;amp;&lt;br /&gt;
&lt;br /&gt;
Anweisungen im Zusammenhang mit Jobs (n ist die Jobnummer)&lt;br /&gt;
* bg %n : Einen Job in den Hintergrund stellen (wie oben)&lt;br /&gt;
* fg %n : Einen Job in den Vordergrund holen&lt;br /&gt;
 root@zero:~# fg %4&lt;br /&gt;
 watch cat /proc/cpuinfo&lt;br /&gt;
&lt;br /&gt;
* jobs : Aktive Jobs ausgeben&lt;br /&gt;
&lt;br /&gt;
 root@zero:~# jobs&lt;br /&gt;
 [1]   Running                 tail -f /var/log/syslog &amp;amp;&lt;br /&gt;
 [2]   Running                 tail -f /var/log/syslog &amp;amp;&lt;br /&gt;
 [3]-  Running                 tail -f /var/log/messages &amp;amp;&lt;br /&gt;
 [4]+  Stopped                 watch cat /proc/cpuinfo&lt;br /&gt;
&lt;br /&gt;
* Strg-Z : Einen Vordergrund-Job vorübergehend anhalten&lt;br /&gt;
* kill -STOP %n : Unterbricht Job im Hintergrund&lt;br /&gt;
 root@zero:~# kill -STOP %1&lt;br /&gt;
 root@zero:~# jobs&lt;br /&gt;
 [1]+  '''Stopped'''                 tail -f /var/log/syslog&lt;br /&gt;
 [2]   Running                 tail -f /var/log/syslog &amp;amp;&lt;br /&gt;
 [3]   Running                 tail -f /var/log/messages &amp;amp;&lt;br /&gt;
 [4]-  Stopped                 watch cat /proc/cpuinfo&lt;br /&gt;
* kill -CONT %n : Setzt den unterbrochenen Job im Hintergrund fort&lt;br /&gt;
root@zero:~# kill -CONT %1&lt;br /&gt;
root@zero:~# jobs&lt;br /&gt;
 [1]+  '''Running'''                 tail -f /var/log/syslog &amp;amp;&lt;br /&gt;
 [2]   Running                 tail -f /var/log/syslog &amp;amp;&lt;br /&gt;
 [3]   Running                 tail -f /var/log/messages &amp;amp;&lt;br /&gt;
 [4]-  Stopped                 watch cat /proc/cpuinfo&lt;br /&gt;
* kill -KILL %n : Tötet Job im Hintergrund&lt;br /&gt;
 root@zero:~# kill -KILL %1&lt;br /&gt;
 root@zero:~# jobs&lt;br /&gt;
 [1]+  '''Killed'''                  tail -f /var/log/syslog&lt;br /&gt;
 [2]   Running                 tail -f /var/log/syslog &amp;amp;&lt;br /&gt;
 [3]   Running                 tail -f /var/log/messages &amp;amp;&lt;br /&gt;
 [4]-  Stopped                 watch cat /proc/cpuinfo&lt;br /&gt;
 root@zero:~# jobs&lt;br /&gt;
 [2]   Running                 tail -f /var/log/syslog &amp;amp;&lt;br /&gt;
 [3]-  Running                 tail -f /var/log/messages &amp;amp;&lt;br /&gt;
 [4]+  Stopped                 watch cat /proc/cpuinfo&lt;br /&gt;
&lt;br /&gt;
Bedingungen, die zu Jobausführung eingehalten werden sollen:&lt;br /&gt;
* Der Job soll nicht auf den Bildschirm schreiben (Standardausgabe +Standardfehlerkanal).&lt;br /&gt;
* Er soll keine Eingaben vom Benutzer erwarten.&lt;br /&gt;
&lt;br /&gt;
==Suchen von Dateien==&lt;br /&gt;
===find===&lt;br /&gt;
 find ab_wo_wird_gesucht was_wird_gesucht aktion&lt;br /&gt;
 find [Pfad] [Bedingung] [Aktion]&lt;br /&gt;
&lt;br /&gt;
====Nach Namen====&lt;br /&gt;
 find [Pfad] '''-name''' [Name]&lt;br /&gt;
 &lt;br /&gt;
Finde alle Dateien mit Namen test ab dem Verzeichnis /home und gebe diese Zeilenweise aus&lt;br /&gt;
 root@zero:~# find /home -name test -print&lt;br /&gt;
 /home/xinux/test&lt;br /&gt;
 /home/test&lt;br /&gt;
&lt;br /&gt;
Wie oben, jedoch mit Namensanfang test&lt;br /&gt;
 root@zero:/home/xinux# find /home -name 'test*'&lt;br /&gt;
 /home/xinux/testdatei&lt;br /&gt;
 /home/xinux/test&lt;br /&gt;
 /home/test&lt;br /&gt;
&lt;br /&gt;
====Nach Benutzer(Eigentümer)====&lt;br /&gt;
 root@zero:/tmp# find /tmp/ '''-user''' xinux&lt;br /&gt;
 /tmp/datei&lt;br /&gt;
&lt;br /&gt;
====Nach Gruppe====&lt;br /&gt;
 root@zero:/tmp# find /tmp/ '''-group''' hacker&lt;br /&gt;
 /tmp/datei3&lt;br /&gt;
 /tmp/datei2&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
====Nach Typ====&lt;br /&gt;
Es wird nach Dateien anhand Ihrer Art gesucht:&lt;br /&gt;
 find [Pfad] '''-type''' [Typ] &lt;br /&gt;
Typ:&lt;br /&gt;
* f: Normale Dateien&lt;br /&gt;
 root@zero:~# find /tmp/ -type f&lt;br /&gt;
 /tmp/mbr.img&lt;br /&gt;
 /tmp/datei&lt;br /&gt;
 /tmp/zeugs&lt;br /&gt;
 /tmp/.X0-lock&lt;br /&gt;
* d: Verzeichnisse&lt;br /&gt;
 root@zero:~# find /var/log -type d&lt;br /&gt;
 /var/log&lt;br /&gt;
 /var/log/apache2&lt;br /&gt;
 /var/log/unattended-upgrades&lt;br /&gt;
 /var/log/apparmor&lt;br /&gt;
 /var/log/ConsoleKit&lt;br /&gt;
 /var/log/dist-upgrade&lt;br /&gt;
 /var/log/dist-upgrade/20090526-1052&lt;br /&gt;
 /var/log/cups&lt;br /&gt;
 /var/log/apt&lt;br /&gt;
 /var/log/fsck&lt;br /&gt;
 /var/log/samba&lt;br /&gt;
 /var/log/samba/cores&lt;br /&gt;
 /var/log/samba/cores/smbd&lt;br /&gt;
 /var/log/samba/cores/nmbd&lt;br /&gt;
 /var/log/samba/cores/winbindd&lt;br /&gt;
 /var/log/installer&lt;br /&gt;
 /var/log/gdm&lt;br /&gt;
 /var/log/news&lt;br /&gt;
* c: Char Devices (Zeichenorientierte Gerätedatei)&lt;br /&gt;
 root@zero:~# find / -type c&lt;br /&gt;
 /lib/udev/devices/kmem&lt;br /&gt;
 /lib/udev/devices/null&lt;br /&gt;
 /lib/udev/devices/console&lt;br /&gt;
 /lib/udev/devices/ppp&lt;br /&gt;
 /lib/udev/devices/net/tun&lt;br /&gt;
* b: Block Devices (Blockorientierte Gerätedatei)&lt;br /&gt;
* p: Benannte Pipe&lt;br /&gt;
* l: Links&lt;br /&gt;
* s: Sockets&lt;br /&gt;
&lt;br /&gt;
====Nach Modifikation====&lt;br /&gt;
Listet alle Dateien in /etc auf, die innerhalb von zwei Tagen modifiziert wurden&lt;br /&gt;
 root@zero:/var/log# find /etc/ -mtime 2 -print&lt;br /&gt;
 /etc/apache2&lt;br /&gt;
 /etc/apache2/mods-available&lt;br /&gt;
 /etc/apache2/conf.d&lt;br /&gt;
 /etc/apache2/sites-available&lt;br /&gt;
 /etc/bash_completion.d&lt;br /&gt;
 /etc/blkid.tab.old&lt;br /&gt;
 /etc/firefox-3.0/profile&lt;br /&gt;
 /etc/firefox-3.0/profile/chrome&lt;br /&gt;
 /etc/firefox-3.0/pref&lt;br /&gt;
 /etc/profile.d&lt;br /&gt;
 /etc/ufw/applications.d&lt;br /&gt;
 /etc/logrotate.d&lt;br /&gt;
 /etc/xulrunner-1.9&lt;br /&gt;
 /etc/blkid.tab&lt;br /&gt;
 /etc/cron.daily&lt;br /&gt;
 /etc/alternatives&lt;br /&gt;
 /etc/alternatives/x-www-browser&lt;br /&gt;
 /etc/alternatives/xulrunner&lt;br /&gt;
 /etc/gre.d&lt;br /&gt;
 /etc/hal/fdi/policy&lt;br /&gt;
 /etc/dbus-1/system.d&lt;br /&gt;
 /etc/udev/rules.d&lt;br /&gt;
&lt;br /&gt;
====Nach Größe====&lt;br /&gt;
Finde Dateien in /tmp, die größer als 100 MByte sind&lt;br /&gt;
 root@zero:/tmp# find /tmp/ -size +100M&lt;br /&gt;
 /tmp/datei&lt;br /&gt;
&lt;br /&gt;
Finde Dateien in /tmp, die kleiner als 100 KByte sind&lt;br /&gt;
 root@zero:/tmp# find /tmp/ -size -100k&lt;br /&gt;
 /tmp/&lt;br /&gt;
 /tmp/datei3&lt;br /&gt;
 /tmp/backup &lt;br /&gt;
 /tmp/datei2&lt;br /&gt;
 /tmp/.winbindd &lt;br /&gt;
 /tmp/.winbindd/pipe&lt;br /&gt;
 /tmp/mbr.img&lt;br /&gt;
 /tmp/zeugs&lt;br /&gt;
 /tmp/.ICE-unix&lt;br /&gt;
 /tmp/.X0-lock&lt;br /&gt;
 /tmp/datei1&lt;br /&gt;
 /tmp/.X11-unix&lt;br /&gt;
 /tmp/.X11-unix/X0&lt;br /&gt;
 /tmp/pulse-PKdhtXMmr18n&lt;br /&gt;
&lt;br /&gt;
====Nach Berechtigungen====&lt;br /&gt;
Finde Dateien in Home mit der Berechtigung 777 (-rwxrwxrwx)&lt;br /&gt;
 root@zero:/var# find /home/ -perm 777&lt;br /&gt;
 /home/samba&lt;br /&gt;
 /home/xinux/Examples&lt;br /&gt;
 /home/xinux/.pulse/1f0763ee4cf4c7e1d3c07fd149dda37b:runtime&lt;br /&gt;
 /home/test/Examples&lt;br /&gt;
&lt;br /&gt;
===locate===&lt;br /&gt;
Locate arbeitet über einen Index, der erstellt und aktualisiert werden muss. Aus diesem Grund kann locate teilweise nicht &lt;br /&gt;
akutell sein. Es ist immer schneller als find und es durchsucht immer das ganze Dateisystem. &lt;br /&gt;
 locate [Dateiname]&lt;br /&gt;
 &lt;br /&gt;
Lokalisiere die Datei wvdial.conf. Anmerkung: Der Stern wird beim Suchen automatisch hinzugefügt. Entspricht also&lt;br /&gt;
wvidal.conf*&lt;br /&gt;
 root@zero:~# locate wvdial.conf&lt;br /&gt;
 /etc/wvdial.conf&lt;br /&gt;
 /usr/share/man/man5/wvdial.conf.5.gz&lt;br /&gt;
 /var/lib/dpkg/info/wvdial.conffiles&lt;br /&gt;
 /var/lib/dpkg/info/wvdial.config&lt;br /&gt;
&lt;br /&gt;
Lokalisiere die Datei wvdial.conf und nur diese&lt;br /&gt;
 root@zero:~# locate -b '\wvdial.conf'&lt;br /&gt;
 /etc/wvdial.conf&lt;br /&gt;
&lt;br /&gt;
Aktualisieren des Indexes&lt;br /&gt;
 root@zero:~# updatedb&lt;br /&gt;
&lt;br /&gt;
==Wie wird ein Kommando lokalisiert==&lt;br /&gt;
Wenn die Shell alle Ersetzungen in der Kommandozeile vorgenommen und alle Umleitungen vorbereitet hat, ist der Zeitpunkt &lt;br /&gt;
gekommen, auf den der Anwender die ganze Zeit gewartet hat. Die Shell versucht das Kommando auszuführen. Dazu muss sie &lt;br /&gt;
es aber erst lokalisieren. Das erste passende Kommando wird ausgeführt.&lt;br /&gt;
&lt;br /&gt;
Als Kommandoname wird immer das erste Wort eines einfachen Kommandos erkannt. Ein Kommandoname kann mit Pfadnamen in &lt;br /&gt;
einem Verzeichnis (absolut oder relativ) angegeben werden. Die Shell erkennt dies an (mindestens) einem Slash `/' &lt;br /&gt;
im Kommandonamen. Wenn kein Verzeichnis angegeben ist, versucht die Shell selbst, das Kommando zu finden. Dazu wird &lt;br /&gt;
der Kommandoname zuerst in der Hashtabelle gesucht, dann wird er mit den Synonymen, mit den Scriptfunktionen und &lt;br /&gt;
schließlich mit den Shellfunktionen verglichen. &lt;br /&gt;
&lt;br /&gt;
Wird auf diese Weise kein Programm dieses Namens gefunden, werden alle in der PATH-Umgebungsvariablen aufgeführten &lt;br /&gt;
Verzeichnisse nach einer ausführbaren Datei dieses Namens durchsucht. Wird auch hier kein passendes Kommando gefunden, &lt;br /&gt;
gibt die Shell eine Fehlermeldung aus.&lt;br /&gt;
&lt;br /&gt;
===which und type===&lt;br /&gt;
====which====&lt;br /&gt;
which gibt die vollen Pfadnamen der Dateien aus, die bei Benutzung des angegebenen Befehls ausgeführt werden würden.&lt;br /&gt;
&lt;br /&gt;
 which [-a] Dateiname &lt;br /&gt;
&lt;br /&gt;
Optionen:&lt;br /&gt;
&lt;br /&gt;
* -a : Alle Treffer ausgeben, nicht nur den ersten&lt;br /&gt;
* --skip-dot : Verzeichnisse, die mit einem Punkt beginnen, auslassen&lt;br /&gt;
&lt;br /&gt;
Beispiel&lt;br /&gt;
 root@zero:~# which startx&lt;br /&gt;
 /usr/bin/startx&lt;br /&gt;
&lt;br /&gt;
====type====&lt;br /&gt;
Anzeigen der absoluten Pfadnamen von Befehlen, und ob sich diese Befehle in der Hash-Tabelle der aktuellen&lt;br /&gt;
Shell befinden.&lt;br /&gt;
&lt;br /&gt;
 type [Optionen] Befehle&lt;br /&gt;
&lt;br /&gt;
Beispiel&lt;br /&gt;
 root@zero:~# type ls&lt;br /&gt;
 ls is aliased to `ls --color=auto'&lt;br /&gt;
&lt;br /&gt;
Optionen:&lt;br /&gt;
&lt;br /&gt;
* -a : Alle vorkommenden Befehle werden ausgegeben, nicht nur das, welches aufgerufen werden würde&lt;br /&gt;
 root@zero:~# type '''-a''' ls&lt;br /&gt;
 ls is aliased to `ls --color=auto'&lt;br /&gt;
 ls is /bin/ls&lt;br /&gt;
&lt;br /&gt;
* -p : Anzeigen des Eintrags von Befehl in der Hash-Tabelle. Dieser Wert kann sich vom ersten Auftreten des Befehls in PATH&lt;br /&gt;
unterscheiden&lt;br /&gt;
 root@zero:~# type '''-p''' apache2&lt;br /&gt;
 /usr/sbin/apache2&lt;br /&gt;
&lt;br /&gt;
* -t : Anzeigen, ob Befehl ein Aliasname, ein Schlüsselwort, eine Funktion, ein eingebauter Befehl oder eine Datei ist&lt;br /&gt;
 root@zero:~# type '''-t''' apache2&lt;br /&gt;
 file&lt;/div&gt;</summary>
		<author><name>192.168.178.46</name></author>
	</entry>
	<entry>
		<id>https://www.xinux.net/index.php?title=Linux_Grundlagen&amp;diff=111</id>
		<title>Linux Grundlagen</title>
		<link rel="alternate" type="text/html" href="https://www.xinux.net/index.php?title=Linux_Grundlagen&amp;diff=111"/>
		<updated>2009-07-08T06:39:52Z</updated>

		<summary type="html">&lt;p&gt;192.168.178.46: /* Rechenzeit und Priorität */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Einführung==&lt;br /&gt;
===Geschichte Unix===&lt;br /&gt;
====1969====&lt;br /&gt;
Am Anfang von Linux steht Multics, ein von Bell Laboratories geschaffenes &amp;quot;Betriebssystem&amp;quot;, &lt;br /&gt;
das noch mit Lochkarten arbeitete. Multics wird mit Unterstützung von AT&amp;amp;T und Western &lt;br /&gt;
Electric unter Mitarbeit von Ken Thompson und Dennis Ritchie weiterentwickelt. Obwohl sich &lt;br /&gt;
Bell Laboratories bald zurückzieht, gibt Thompson das Projekt nicht auf.  Zum Entwicklerteam &lt;br /&gt;
gehören auch Rudd Canaday und Brian Kernighan. Letzterer gibt 1970 dem Betriebssystem den Namen UNIX. &lt;br /&gt;
Thompson definiert 7 Richtlinien für UNIX:&lt;br /&gt;
 &lt;br /&gt;
# Hierarchische Anordnung der Dateisysteme&lt;br /&gt;
# Die Ausgabe von Daten an die Peripherie(-geräte) und Dateien soll gleich sein.&lt;br /&gt;
# Prozesse und Programme sollen miteinander kommunizieren.&lt;br /&gt;
# Multitasking (voneinander getrennte Prozesse)&lt;br /&gt;
# Persönliche Shell's&lt;br /&gt;
# Der Compiler soll für viele Programmiersprachen tauglich sein.&lt;br /&gt;
# Portabilität&lt;br /&gt;
&lt;br /&gt;
====1971====&lt;br /&gt;
Bis 1971 ist das für eine DEC PDP-7 geschriebene Unix als Version 1 auf eine PDP-11 portiert. Bis&lt;br /&gt;
zur Version 4 entwickelt Ritchie die Programmier- (Hoch-) Sprache C. Das in Assembler geschriebene&lt;br /&gt;
Unix wird fast völlig nach C übersetzt, wodurch zum erstenmal die geforderte Hardware-Unabhängigkeit&lt;br /&gt;
des Betriebssystems realisiert werden kann.&lt;br /&gt;
&lt;br /&gt;
====1975====&lt;br /&gt;
Da AT&amp;amp;T aufgrund vertraglicher Bindungen mit der US-Bundesregierung Unix nicht kommerziell vermarkten darf, stellt sie den Source Code für ein paar hundert Dollar den Universitäten, Lehr- und Forschungsanstalten zur Verfügung. Dies führt zu einer sehr dynamischen Entwicklung von Unix. 1975 wird die Version 6 als erstes UNIX-System veröffentlicht, die darauffolgende Version 7 wird sehr erfolgreich. Da es keine Standardisierung gibt, entwickeln bald verschiedenste Firmen ihr eigenes UNIX. Ab 1984 wird AT&amp;amp;T per Gerichtsbeschluss erlaubt, Unix zu vermarkten. AT&amp;amp;T verkauft sein Unix V und beginnt, sich um einen internationalen Standard von UNIX zu bemühen. &lt;br /&gt;
&lt;br /&gt;
====1984====&lt;br /&gt;
Durch Richard Stallman wird die Free Software Foundation (FSF) gegründet. Diese initiiert ein Projekt namens GNU (GNU ist Not Unix), welches das Ziel verfolgt, ein freies UNIX System zu schaffen. &lt;br /&gt;
&lt;br /&gt;
====1987====&lt;br /&gt;
AT&amp;amp;T verbietet die Verwendung des Unix Quellcodes an den Universitäten. Während dieser Zeit ist Andrew (Andy) Tannenbaum Professor an der Freien Universität von Amsterdam und entwickelt Minix. Minix ist ein kostengünstiges Lehrbetriebssystem und kommt ohne jeglichen AT&amp;amp;T Code aus, obwohl es die gleiche Funktionalität wie Unix 7 bietet. Im Usenet unter comp.os.minix entsteht eine Minix-Gemeinde, die den Minix Kernel und die Anwendungen rundherum programmiert und verbessert.&lt;br /&gt;
&lt;br /&gt;
====1991====&lt;br /&gt;
Linus Torvalds hat als Student für Computerwissenschaften an der Universität in Helsinki Minix installiert und das Buch von Andy Tannenbaum gelesen. Er beginnt im Sinne der FSF einen Unix ähnlichen Kernel zu programmieren mit der Idee, &amp;quot;ein besseres Minix als Minix&amp;quot; zu bauen. 1992 stellt er die Version 0.02 mit dem Namen Linux der Internetgemeinde zur Verfügung. &lt;br /&gt;
&lt;br /&gt;
====1994====&lt;br /&gt;
Die Linux Version 1.0 wird freigegeben. Das Linux Fieber beginnt... &lt;br /&gt;
&lt;br /&gt;
====1998====&lt;br /&gt;
Der Kreis der Linux Entwickler und Anwender ist kräftig angeschwollen. KDE 1.0 wird veröffentlicht. Die Zuwachsraten von Linux übertreffen die von Windows NT deutlich. &lt;br /&gt;
&lt;br /&gt;
====1999====&lt;br /&gt;
Der lange erwartete stabile Linux Kernel Version 2.2 wird freigegeben. Namhafte Firmen wie IBM kündigen ihre Unterstützung für Linux an. &lt;br /&gt;
&lt;br /&gt;
====2001====&lt;br /&gt;
Der lange erwartete stabile Linux Kernel Version 2.4 wird freigegeben. USB Unterstützung und eine neue Firewallimplementierung zeichnen ihn aus.&lt;br /&gt;
&lt;br /&gt;
====2003====&lt;br /&gt;
Linux Kernel Version 2.6 wird freigegeben. Am auffälligsten sind Änderungen bei der Modulverwaltung.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Distributionen===&lt;br /&gt;
{| Border=1 Cellpadding=2&lt;br /&gt;
| &lt;br /&gt;
|Url&lt;br /&gt;
|Paketformat&lt;br /&gt;
|-&lt;br /&gt;
|Red Hat&lt;br /&gt;
|www.redhat.com&lt;br /&gt;
|rpm&lt;br /&gt;
|-&lt;br /&gt;
|fedora&lt;br /&gt;
|fedora.redhat.com&lt;br /&gt;
|rpm&lt;br /&gt;
|-&lt;br /&gt;
|CentOS&lt;br /&gt;
|www.centos.org&lt;br /&gt;
|rpm&lt;br /&gt;
|-&lt;br /&gt;
|Suse/openSUSE&lt;br /&gt;
|www.opensuse.org&lt;br /&gt;
|rpm&lt;br /&gt;
|-&lt;br /&gt;
|Debian&lt;br /&gt;
|www.debian.org&lt;br /&gt;
|deb&lt;br /&gt;
|-&lt;br /&gt;
|Ubuntu&lt;br /&gt;
|www.ubuntu.com&lt;br /&gt;
|deb&lt;br /&gt;
|-&lt;br /&gt;
|Mandrake&lt;br /&gt;
|www.linux-mandrake.com&lt;br /&gt;
|rpm&lt;br /&gt;
|-&lt;br /&gt;
|Easy Linux&lt;br /&gt;
|www.easy-linux.de&lt;br /&gt;
|rpm&lt;br /&gt;
|-&lt;br /&gt;
|Turbo&lt;br /&gt;
|www.turbolinux.com&lt;br /&gt;
|rpm&lt;br /&gt;
|-&lt;br /&gt;
|minis&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|toms&lt;br /&gt;
|www.toms.net/rb&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|damn small linux&lt;br /&gt;
|www.damnsmalllinux.org&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|pocket-linux&lt;br /&gt;
|www.pocket-linux.org&lt;br /&gt;
|&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
====Bücher====&lt;br /&gt;
 Titel : Das Linux Anwenderhandbuch und Leitfaden für die Systemverwaltung&lt;br /&gt;
 Autor : Sebastian Hetze, Dirk Hohndel, Olaf Kirch und Martin Müller&lt;br /&gt;
 Verlag: Lunetix&lt;br /&gt;
 ISBN : 3-929764-06-7&lt;br /&gt;
&lt;br /&gt;
 Titel : Linux in a Nutshell&lt;br /&gt;
 Autor : Jessica Perry Hekman und die Mitarbeiter von O'Reilly &amp;amp; Associates&lt;br /&gt;
 Verlag: O'Reilly&lt;br /&gt;
 ISBN : 3-930673-57-6&lt;br /&gt;
&lt;br /&gt;
 Titel : Linux - Wegweiser zur Installation und Konfiguration&lt;br /&gt;
 Autor : Matt Welsh, Lar Kaufman, Matthias Kalle Dallheimer&lt;br /&gt;
 Verlag: O'Reilly&lt;br /&gt;
 ISBN : 3-930673-58-4 (deutsch), 1-56592-469-X (englisch)&lt;br /&gt;
&lt;br /&gt;
 Titel : Linux - Installation, Konfiguration, Anwendung&lt;br /&gt;
 Autor : Michael KoflerMultitasking&lt;br /&gt;
 Verlag: Addison-Wesley&lt;br /&gt;
 ISBN : 3-8273-1475-5&lt;br /&gt;
&lt;br /&gt;
 Titel : Linux - Wegweiser für Netzwerker&lt;br /&gt;
 Autor : Olaf Kirch&lt;br /&gt;
 Verlag: O'Reilly&lt;br /&gt;
 ISBN : 3-930673-18-5&lt;br /&gt;
&lt;br /&gt;
 Titel : TCP/IP-Netzwerk-Administration&lt;br /&gt;
 Autor : Craig Hunt&lt;br /&gt;
 Verlag: O'Reilly&lt;br /&gt;
 ISBN : 3-89721-110-6&lt;br /&gt;
&lt;br /&gt;
 Titel : Essential System Administration&lt;br /&gt;
 Autor : Eleen Frisch&lt;br /&gt;
 Verlag: O'Reilly&lt;br /&gt;
 ISBN : 1-56592-127-5&lt;br /&gt;
&lt;br /&gt;
==Betriebssystem==&lt;br /&gt;
===Was ist ein Betriebssystem?===&lt;br /&gt;
&lt;br /&gt;
Ein Betriebssystem liegt logisch gesehen zwischenAnwendungsprogramm und Hardware.&lt;br /&gt;
&lt;br /&gt;
Es nimmt die Anforderungen der Anwendungsprogramme entgegen und leitet&lt;br /&gt;
diese kontrolliert an die Hardware weiter. Kein Anwendungsprogramm sollte&lt;br /&gt;
direkt auf die Hardware zugreifen können. Den zentralen Zugang schafft einzig&lt;br /&gt;
das Betriebssystem. Somit kann das Betriebssystem unsinnige Anforderungen&lt;br /&gt;
oder Bedienungsfehler abblocken.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Image:Linux.jpg]]&lt;br /&gt;
&lt;br /&gt;
===Aufgaben eines Betriebssystems===&lt;br /&gt;
&lt;br /&gt;
# Verbergen der Komplexität der Maschine vor dem Anwender (Abstraktion)&lt;br /&gt;
# Bereitstellen einer Benutzerschnittstelle (&amp;quot;Kommandointerpreter&amp;quot;, &amp;quot;Shell&amp;quot;)&lt;br /&gt;
# Bereitstellen einer normierten Programmierschnittstelle (API)&lt;br /&gt;
# Verwaltung der Ressourcen der Maschine::&lt;br /&gt;
Hauptspeicher&lt;br /&gt;
Prozessor(en)&lt;br /&gt;
Hintergrundspeicher (Platte, Band, etc.)&lt;br /&gt;
Geräte (Terminal, Drucker, Plotter, etc.)&lt;br /&gt;
Rechenzeit&lt;br /&gt;
Koordination von Prozessen&lt;br /&gt;
&lt;br /&gt;
===Aufbau eines Betriebssystems===&lt;br /&gt;
&lt;br /&gt;
Ein Rechensystem besteht aus Hardware, Systemprogrammen und Anwendungs-&lt;br /&gt;
programmen. Unter einem Betriebssystem wird meist die Summe aus Betriebs-&lt;br /&gt;
systemkern (Kernel) und den wichtigsten Systemprogrammen verstanden. Ein&lt;br /&gt;
minimaler LINUX-Kernel besitzt ungefähr eine Größe von 400 - 800 kByte.&lt;br /&gt;
Weitere wichtige Systemkomponenten benötigen zusätzlich 10 - 100 Mbyte&lt;br /&gt;
Plattenplatz.&lt;br /&gt;
&lt;br /&gt;
Ein Betriebssystem stellt den Rechner als erweiterte Maschine (virtuelle&lt;br /&gt;
Maschine) über definierte Software-Schnittstellen zur Verfügung.&lt;br /&gt;
Das Betriebssystem dient als Betriebsmittelverwalter, der Anforderungen&lt;br /&gt;
befriedigt, protokolliert, abrechnet und vermittelt.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Aufgaben des Betriebssystemkerns:&lt;br /&gt;
&lt;br /&gt;
{| Border=1 Cellpadding=2&lt;br /&gt;
|Prozessverwaltung  (dispatching and scheduling)&lt;br /&gt;
| Mehrere Benutzer können mit mehreren Aktionen gleichzeitig im System arbeiten, ohne sich gegenseitig zu beeinflussen. Damit dies möglich ist,  müssen die Aktionen organisiert, koordiniert und verwaltet werden. Die zu verwaltende Einheit nennt man Prozess.&lt;br /&gt;
|-&lt;br /&gt;
|Speicherverwaltung   (memory management)&lt;br /&gt;
|Zuteilen von Speicherbereichen an laufende Prozesse, Schutz der Speicherbereiche vor unbefugten Zugriffen, bei Speicherengpässen: Auslagern von ganzen (swapping) oder von Teilen (paging) von Prozessen auf die Platte (swap file).&lt;br /&gt;
|-&lt;br /&gt;
|Dateiverwaltung  (file handling)&lt;br /&gt;
|Zuteilung von Plattenplatz für Programme, Benutzer und Systemdienste, Schreiben, Lesen und Strukturieren der Daten auf den Massenspeichern; Durch Bereitstellung einer entsprechenden Schnittstelle (VFS, virtual file system) kann der Kern Dateisysteme unterschiedlichster Art (EXT2, FAT, NFS, HPFS, NTFS, ...) ansprechen.&lt;br /&gt;
|-&lt;br /&gt;
|Geräteverwaltung  (resource management)&lt;br /&gt;
|Der Kern ermöglicht und kontrolliert den Zugriff auf die Hardware. Er steuert die Ein- und Ausgabetätigkeiten der Anwender. An den Kern&lt;br /&gt;
gebunden sind die entsprechenden Gerätetreiber (device driver), die damit eine Kommunikation zwischen Kern und Hardware ermöglichen.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
===Multitasking===&lt;br /&gt;
&lt;br /&gt;
Multitasking bedeutet, dass ein Rechner aus Anwendersicht mehrere Aufgaben&lt;br /&gt;
(Tasks) gleichzeitg übernehmen kann. Das Betriebssystem (OS) unterteilt die&lt;br /&gt;
gleichzeitig anstehenden Aufgaben in Einzelarbeitsschritte (Prozesse) und&lt;br /&gt;
managed durch ein Zeitscheibenverfahren (scheduling) die gleichmäßige&lt;br /&gt;
Abarbeitung der Prozesse.&lt;br /&gt;
&lt;br /&gt;
Es wird unterschieden zwischen:&lt;br /&gt;
&lt;br /&gt;
*non-präamptiven (kooperativen=die Ressourcen werden vom aktiven Prozess freigegeben, bei einem Hänger steht das ganze System)&lt;br /&gt;
&lt;br /&gt;
und&lt;br /&gt;
&lt;br /&gt;
*präamptiven (reinem=der Betriebssystemkern steuert Taskwechsel, indem nach einer festgelegten Zeit vom gerade aktiven Prozess zum nächsten weitergeschaltet wird)&lt;br /&gt;
&lt;br /&gt;
===Mehrprozessorbetrieb===&lt;br /&gt;
&lt;br /&gt;
Bei mehreren Prozessoren und Unterstützung durch das OS&lt;br /&gt;
(NT,Linux,Unix,Novell) können mehrere Tasks auf diese verteilt werden und&lt;br /&gt;
gleichzeitig bearbeitet werden. Nachteilig ist, dass dies nicht oder kaum von&lt;br /&gt;
Anwendungsprogrammen unterstützt wird und es zu Kommunikationsproblemen&lt;br /&gt;
zwischen den einzelnen Tasks kommen kann.&lt;br /&gt;
&lt;br /&gt;
===Arten von von Betriebssystemen===&lt;br /&gt;
&lt;br /&gt;
{|Border=1 Cellpadding=2&lt;br /&gt;
|&lt;br /&gt;
|SingleUser  &lt;br /&gt;
|Multiuser&lt;br /&gt;
|-&lt;br /&gt;
|Single Tasking&lt;br /&gt;
|MS - DOS&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|Multi Tasking&lt;br /&gt;
|Windows 3.x&lt;br /&gt;
|UNIX&lt;br /&gt;
|-&lt;br /&gt;
|&lt;br /&gt;
|Windows 95/98&lt;br /&gt;
|Linux&lt;br /&gt;
|-&lt;br /&gt;
|&lt;br /&gt;
|Windows NT4 ohne Erweiterungen&lt;br /&gt;
|VMS&lt;br /&gt;
|-&lt;br /&gt;
|&lt;br /&gt;
|OS/2 &lt;br /&gt;
|Windows NT mit  Erweiterungen&lt;br /&gt;
|-&lt;br /&gt;
|&lt;br /&gt;
|Apple&lt;br /&gt;
|Windows 2000, XP, 2003&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
===SHELL===&lt;br /&gt;
&lt;br /&gt;
Wenn man mit Linux arbeiten will, kann man nicht direkt mit dem Betriebssystem&lt;br /&gt;
kommunizieren. Man braucht dazu ein Hilfsprogramm, welches die&lt;br /&gt;
Kommandoeingaben ordnungsgemäß an das Betriebssystem weiterleitet. Dieses&lt;br /&gt;
Hilfsprogramm hat den Namen Shell.&lt;br /&gt;
&lt;br /&gt;
Die Shell schirmt den Betriebssystemkern von den Anwendungsprogrammen ab.&lt;br /&gt;
Die unterschiedlichen Shells erfüllen alle dieselbe Aufgabe, sie unterscheiden sich&lt;br /&gt;
allerdings in ihrer Syntax.&lt;br /&gt;
&lt;br /&gt;
==Die Installation im Überblick==&lt;br /&gt;
&lt;br /&gt;
Die Installation von Linux geschieht in folgenden Schritten:&lt;br /&gt;
&lt;br /&gt;
# Analyse (Welche Hardware habe ich? ,Hab ich weitere Betriebsysteme?)&lt;br /&gt;
# Booten des Linux-Kernels. (von CD oder Diskette)&lt;br /&gt;
# Laden einer RAM-Disk (das macht das Installationsprogramm automatisch).&lt;br /&gt;
# Partitionieren der Festplatte (fdisk).&lt;br /&gt;
# Einrichten der Swappartition (mkswap), Formatieren der Festplatte (mkfs).&lt;br /&gt;
# Montieren der Dateisysteme (mount), Aktivieren der Swapbereiche (swapon).&lt;br /&gt;
# Kopieren und Auspacken der Daten vom Installationsmedium auf die Festplatte (die eigentliche Installation). (rpm, dpkg oder tar).&lt;br /&gt;
# Geeignete Wahl der Bootmethode unter Berücksichtigung von Punkt 1 (grub, lilo).&lt;br /&gt;
# Konfiguration des Systems (Netz, Modem etc...).&lt;br /&gt;
&lt;br /&gt;
==Erste Schritte==&lt;br /&gt;
===Anmelden===&lt;br /&gt;
Sie können sich nun mit dem Usernamen und dem Passwort, das sie bei der Installation angelegt haben anmelden!&lt;br /&gt;
[[Image:benutzer.jpg]]&lt;br /&gt;
&lt;br /&gt;
[[Image:passwd.jpg]]&lt;br /&gt;
&lt;br /&gt;
===Terminal öffnen===&lt;br /&gt;
&lt;br /&gt;
Ein Terminal öffnen Sie über das Startmenü:&lt;br /&gt;
&lt;br /&gt;
[[Image:Terminalde.jpg]]&lt;br /&gt;
&lt;br /&gt;
Das geöffnete Terminal sieht dann folgendermaßen aus:&lt;br /&gt;
&lt;br /&gt;
[[Image:Terminalde2.jpg]]&lt;br /&gt;
&lt;br /&gt;
===Sudo===&lt;br /&gt;
Rootrechte erlangen sie über den &amp;quot;Sudo&amp;quot;-Befehl&lt;br /&gt;
 &lt;br /&gt;
''Den nächsten Befehl als root ausführen''&lt;br /&gt;
 xinux@zero:~$ sudo cat /etc/shadow&lt;br /&gt;
 [sudo] password for xinux:&lt;br /&gt;
&lt;br /&gt;
''Eine komplette Sitzung als root starten''&lt;br /&gt;
 xinux@zero:~$ sudo -i&lt;br /&gt;
 [sudo] password for xinux:&lt;br /&gt;
 root@zero:~#&lt;br /&gt;
&lt;br /&gt;
===Virtuelle Konsolen===&lt;br /&gt;
&lt;br /&gt;
In die Virtuelle Konsole gelangen sie über &amp;quot;STRG+ALT+(F1-F6)&amp;quot;.&lt;br /&gt;
Sie funktioniert wie ein ganz normales Terminal, und mit &amp;quot;ALT+F7&amp;quot;&lt;br /&gt;
gelangen sie wieder zurück auf die grafische Benutzeroberfläche&lt;br /&gt;
&lt;br /&gt;
===Abmelden===&lt;br /&gt;
&lt;br /&gt;
Abmelden können Sie sich wieder über das Startmenu unter:&lt;br /&gt;
&lt;br /&gt;
[[Image:Logout.jpg]]&lt;br /&gt;
&lt;br /&gt;
Fals sie nur einzelne Sitzungen in einem der Terminals oder &lt;br /&gt;
den Virtuellen Konsolen Abmelden wollen benutzen sie dazu den Befehl: &amp;quot;exit&amp;quot;&lt;br /&gt;
&lt;br /&gt;
===Herunterfahren===&lt;br /&gt;
&lt;br /&gt;
Das Herunterfahren funktioniert auf dem selben Weg.&lt;br /&gt;
&lt;br /&gt;
Entweder sie Benutzen wieder das Startmenü und benutzen diesmal den &amp;quot;Ausschalten ...&amp;quot; Knopf,&lt;br /&gt;
&lt;br /&gt;
Oder sie geben den äquivalenten &amp;quot;shutdown&amp;quot;-Befehl in einem Terminal bzw. der virtuellen Konsole ein.&lt;br /&gt;
&lt;br /&gt;
Allerdings müssen sie dazu als Administrator angemeldet sein s. &amp;quot;Sudo&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Wenn Sie den &amp;quot;shutdown&amp;quot;-Befehl benutzen wollen muss hinter den Befehl&lt;br /&gt;
&lt;br /&gt;
eine Zeitangabe in Minuten oder das wort &amp;quot;now&amp;quot; für sofortiges Ausschalten hinzugefügt werden:&lt;br /&gt;
&lt;br /&gt;
 xinux@zero:~$ sudo -i&lt;br /&gt;
 root@zero:~# shutdown 60&lt;br /&gt;
 &lt;br /&gt;
 Broadcast message from xinux@zero &lt;br /&gt;
         (/dev/pts/3) at 14:29 ...&lt;br /&gt;
 &lt;br /&gt;
 The system is going down for maintenance in 60 minutes!&lt;br /&gt;
&lt;br /&gt;
Sollten sie den Befehl widerrufen wollen dann drücken sie &amp;quot;STRG+C&amp;quot;,&lt;br /&gt;
&lt;br /&gt;
in dem Terminal in dem der shutdown Befehl gestartet wurde,&lt;br /&gt;
&lt;br /&gt;
oder geben sie den &amp;quot;shutdown&amp;quot;-Befehl zusammen mit der Abbruchoption &amp;quot;-c&amp;quot; in einem anderen Terminal ein:&lt;br /&gt;
&lt;br /&gt;
 root@zero:~# shutdown -c&lt;br /&gt;
&lt;br /&gt;
 shutdown: Shutdown cancelled&lt;br /&gt;
 root@zero:~# &lt;br /&gt;
&lt;br /&gt;
Wenn Sie den Rechner Neustarten möchten gibt es dazu die Option &amp;quot;-r&amp;quot; für den &amp;quot;shutdown&amp;quot;-Befehl&lt;br /&gt;
&lt;br /&gt;
oder den &amp;quot;reboot&amp;quot;-Befehl die beide auch als root ausgeführt werden müssen:&lt;br /&gt;
&lt;br /&gt;
 xinux@zero:~$ sudo -i&lt;br /&gt;
 [sudo] password for xinux: &lt;br /&gt;
 root@zero:~# shutdown -r now&lt;br /&gt;
&lt;br /&gt;
 root@zero:~# reboot&lt;br /&gt;
&lt;br /&gt;
===&amp;quot;man&amp;quot;===&lt;br /&gt;
&lt;br /&gt;
Programm zum Einsehen der Online-Manuals&lt;br /&gt;
&lt;br /&gt;
Die Manuals sind in folgende Sektionen unterteilt:&lt;br /&gt;
# Ausführbare Programme oder Shellbefehle&lt;br /&gt;
# Systemaufrufe (Kernelfunktionen)&lt;br /&gt;
# Bibliotheksaufrufe (Funktionen in System-Bibliotheken)&lt;br /&gt;
# Spezielle Dateien (gewöhnlich in /dev)&lt;br /&gt;
# Dateiformate und Konventionen, z. B. /etc/passwd&lt;br /&gt;
# Spiele&lt;br /&gt;
# Makropakete und Konventionen, z. B. man(7), groff(7)&lt;br /&gt;
# Systemadministrationsbefehle (in der Regel nur für root)&lt;br /&gt;
# Kernelroutinen [Nicht Standard]&lt;br /&gt;
&lt;br /&gt;
Aufruf eines Manuals erfolgt durch ''man kommando''&lt;br /&gt;
Beendet wird durch Drücken des Buchstabens q&lt;br /&gt;
Gesucht wird vorwärts durch Eingabe eines /suchausdruck&lt;br /&gt;
Gesucht wird rückwärts durch Eingabe eines ?suchausdruck&lt;br /&gt;
&lt;br /&gt;
Beispiele:&lt;br /&gt;
&lt;br /&gt;
      man passwd        Anschauen der Manualseite zum Programm passwd&lt;br /&gt;
      man 5 passwd      Anschauen der Manualseite zur Datei /etc/passwd&lt;br /&gt;
      man -a passwd     Anschauen aller Manualseiten zu passwd&lt;br /&gt;
      man -k passwd     Durchsucht die Kurzbeschreibungen der Manualseite&lt;br /&gt;
                        nach passwd und gibt alle Treffer aus&lt;br /&gt;
      man -f passwd      Gibt alle gefunden Kurzbescheibungen zu passwd aus&lt;br /&gt;
      man -L en passwd Gibt englische Manualseiten aus&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Was geht vor auf meinem System? (date,who)===&lt;br /&gt;
&lt;br /&gt;
Das Kommando date dient zur Abfrage von Datum und Uhrzeit.&lt;br /&gt;
&lt;br /&gt;
 xinux@zero:~ &amp;gt; date&lt;br /&gt;
 Fre Mär 16 16:35:03 CET 2001&lt;br /&gt;
&lt;br /&gt;
oder auch Anzeige der Grennwich Zeit:&lt;br /&gt;
&lt;br /&gt;
 xinux@zero:~ &amp;gt; date -u&lt;br /&gt;
 Fre Mär 16 15:35:34 UTC 2001&lt;br /&gt;
&lt;br /&gt;
 xinux@zero:~ &amp;gt; date -u &amp;quot;+%X&amp;quot;&lt;br /&gt;
 15:37:19&lt;br /&gt;
&lt;br /&gt;
 xinux@zero:~ &amp;gt; date -u &amp;quot;+%x&amp;quot;&lt;br /&gt;
 01/15/02&lt;br /&gt;
&lt;br /&gt;
who zeigt alle angemeldeten Benutzer an&lt;br /&gt;
&lt;br /&gt;
 thomas@cardassia:~ &amp;gt; who&lt;br /&gt;
 thomas             tty1 Feb 27 16:39&lt;br /&gt;
 thomas             tty2 Mar 2 17:08&lt;br /&gt;
 tina               tty6 Mar 16 16:38&lt;br /&gt;
&lt;br /&gt;
Mit `who --help' bekommen Sie mehr Informationen.&lt;br /&gt;
&lt;br /&gt;
 thomas@cardassia:~ &amp;gt; who --help&lt;br /&gt;
&lt;br /&gt;
Benutzung: who [OPTION]... [ DATEI | ARG1 ARG2 ]&lt;br /&gt;
&lt;br /&gt;
 -H, --heading             print line of column headings&lt;br /&gt;
 -i, -u, --idle            add user idle time as HOURS:MINUTES, . or old&lt;br /&gt;
 -l, --lookup              attempt to canonicalize hostnames via DNS&lt;br /&gt;
 -m                        only hostname and user associated with stdin&lt;br /&gt;
 -q, --count               all login names and number of users logged on&lt;br /&gt;
 -s                        (ignored)&lt;br /&gt;
 -T, -w, --mesg            add user's message status as +, - or ?&lt;br /&gt;
     --message             same as -T&lt;br /&gt;
     --writable            same as -T&lt;br /&gt;
     --help                display this help and exit&lt;br /&gt;
     --version             output version information and exit&lt;br /&gt;
&lt;br /&gt;
==Das UNIX-Dateisystem==&lt;br /&gt;
===Verzeichnisbaum===&lt;br /&gt;
&lt;br /&gt;
[[Image:vztree.jpg]]&lt;br /&gt;
&lt;br /&gt;
Das Betriebssystem UNIX besitzt ein hierarchisches Dateisystem. Es besteht aus:&lt;br /&gt;
* Dateien (Files)&lt;br /&gt;
Dateien speichern Informationen (Text, Bilder, Sound, Videos, Programme) und&lt;br /&gt;
werden über den Dateinamen angesprochen.&lt;br /&gt;
&lt;br /&gt;
* Verzeichnissen (Directories, Kataloge)&lt;br /&gt;
Verzeichnisse besitzen ebenfalls einen Namen und dienen zur Ordnung des&lt;br /&gt;
Dateisystems. Ein Verzeichnis kann Dateien und Unterverzeichnisse&lt;br /&gt;
(Subdirectories) enthalten. Das oberste Verzeichnis im Dateisystem heisst&lt;br /&gt;
Rootverzeichnis oder kurz Root und wird durch / (sprich: slash)&lt;br /&gt;
gekennzeichnet.&lt;br /&gt;
&lt;br /&gt;
Im Gegensatz zu Windows kennt UNIX keine Laufwerke.&lt;br /&gt;
Das obige Bild zeigt ein typisches UNIX-Dateisystem.&lt;br /&gt;
Unterhalb des Rootverzeichnisses befinden sich eine Vielzahl vonVerzeichnissen.&lt;br /&gt;
&lt;br /&gt;
===Wichtige Verzeichnisse===&lt;br /&gt;
&lt;br /&gt;
• '''Homeverzeichnis'''&lt;br /&gt;
&lt;br /&gt;
das Verzeichnis, in dem man sich unmittelbar nach dem Anmelden befindet. Das&lt;br /&gt;
Homeverzeichnis wird vom Systemverwalter eingerichtet; jeder Anwender&lt;br /&gt;
besitzt ein festes Homeverzeichnis. z.B. /home/hans&lt;br /&gt;
&lt;br /&gt;
~ (Tilde) bzw. $HOME (Shellvariable) kennzeichnen das Homeverzeichnis.&lt;br /&gt;
&lt;br /&gt;
• '''Aktuelles Verzeichnis'''&lt;br /&gt;
&lt;br /&gt;
Verzeichnis, in dem man sich aktuell befindet.&lt;br /&gt;
Das aktuelle Verzeichnis wird mit dem Befehl cd (change directory) oder per&lt;br /&gt;
Mausklick verändert.&lt;br /&gt;
Ein einfacher Punkt . kennzeichnet das aktuelle Verzeichnis.&lt;br /&gt;
&lt;br /&gt;
• '''Elternverzeichnis'''&lt;br /&gt;
&lt;br /&gt;
Verzeichnis unmittelbar oberhalb des aktuellen Verzeichnisses.&lt;br /&gt;
Jedes Verzeichnis ausser / besitzt genau ein Elternverzeichnis.&lt;br /&gt;
Zwei Punkte .. kennzeichnen das Elternverzeichnis (abhängig vom aktuellen&lt;br /&gt;
VZ).&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Absoluter Pfadname:===&lt;br /&gt;
&lt;br /&gt;
Beschreibt ausgehend vom Rootverzeichnis den Weg zum Zielverzeichnis oder zur&lt;br /&gt;
Zieldatei. (Welche Verzeichnisse müssen ausgehend von / durchlaufen werden, um&lt;br /&gt;
zum Ziel zu kommen?) Ein absoluter Pfadname beginnt immer mit / .&lt;br /&gt;
&lt;br /&gt;
===Relativer Pfadname:===&lt;br /&gt;
&lt;br /&gt;
Beschreibt ausgehend vom aktuellen Verzeichnis den Weg zum Zielverzeichnis&lt;br /&gt;
oder zur Zieldatei; ein relativer Pfadname beginnt nicht mit / .&lt;br /&gt;
/home/suxer&lt;br /&gt;
absoluter Pfadname für das Verzeichnis sub1 im Homeverzeichnis von suxer&lt;br /&gt;
&lt;br /&gt;
===Verzeichnisstruktur===&lt;br /&gt;
&lt;br /&gt;
 /bin         Kommandos die beim starten benötigt werden (Zugriff hat jeder)&lt;br /&gt;
 /sbin        Wichtige System-Programme (In der Regel root vorberhalten)&lt;br /&gt;
 /boot        Hier findet man die Dateien des Bootmanagers und des Kernel.&lt;br /&gt;
 /dev         In diesem Verzeichnis stehen die Gerätedateien (Devices),&lt;br /&gt;
 /home        Alle Heimatverzeichnisse der Nutzer findet man hier.&lt;br /&gt;
 /lib         Beim Systemstart benötigten Bibliotheken und Modules stehen hier.&lt;br /&gt;
 /mnt         Mountpunkt für temporäre Partitionen&lt;br /&gt;
 /opt         Software, die nicht Installationsumfang von Linux gehören.&lt;br /&gt;
 /root        Heimatverzeichnis des Administrators.&lt;br /&gt;
 /tmp         Temporäre Dateien können hier abgelegt werden&lt;br /&gt;
 /usr         statische Dateien (kann read-only gemountet sein)&lt;br /&gt;
 /var         variable Dateien (muss beschreibar sein )&lt;br /&gt;
 /etc         Konfiguartionsdateien und Startscripte&lt;br /&gt;
 /proc        Virtuelles Dateisystem -&amp;gt; repräsentiert den Kernel&lt;br /&gt;
&lt;br /&gt;
===Unterverzeichnisse von /usr===&lt;br /&gt;
&lt;br /&gt;
 sbin         Programme für root die beim Start nicht benötigt werden&lt;br /&gt;
 bin          Programme für alle die beim Start nicht benötigt werden&lt;br /&gt;
 X11R6        Dateien des X-Window-Sytems&lt;br /&gt;
 bin          Ausführbare Programme&lt;br /&gt;
 doc          Dokumentationen&lt;br /&gt;
 etc          Konfigurationsdateien&lt;br /&gt;
 games        Spiele&lt;br /&gt;
 include      Headerdateien für C-Programme&lt;br /&gt;
 local        Pakete die nicht zur Distribution gehören ähnlich /opt&lt;br /&gt;
 share        Pakete die von mehreren Paketen genutzt werden&lt;br /&gt;
 share/man    Die Manualpages&lt;br /&gt;
 share/info   Seiten des Infosystems&lt;br /&gt;
 share/doc    Dokumentationen&lt;br /&gt;
 src          Sources von Programmen (Kernel und andere)&lt;br /&gt;
&lt;br /&gt;
===Unterverzeichnisse von /var===&lt;br /&gt;
&lt;br /&gt;
 cache        Zwischenspreicher für Progammes&lt;br /&gt;
 games        Variable Daten der Games (Scores etc...)&lt;br /&gt;
 lock         Sperrdateien&lt;br /&gt;
 log          Die Logdateien (wichtiges Verzeichnis für Admins)&lt;br /&gt;
 mail         Das Mailsystem&lt;br /&gt;
 run          Dateien zu laufemdem Prozessen&lt;br /&gt;
 spool        Spooldateien (z.B. für das Drucksystem&lt;br /&gt;
 state        Statusinfos&lt;br /&gt;
 tmp          Wie /tmp eventuell nicht auf root Partion&lt;br /&gt;
&lt;br /&gt;
==Einfache Komandos==&lt;br /&gt;
===cd: Wechseln des Arbeitsverzeichnis===&lt;br /&gt;
&lt;br /&gt;
Um festzustellen in welchem Verzeichnis man sich befindet, sollte man den&lt;br /&gt;
Befehl &amp;quot;pwd&amp;quot; benutzen,&lt;br /&gt;
&lt;br /&gt;
und mit dem Befehl &amp;quot;cd&amp;quot; kann man zwischen den Verzeichnissen wechseln:&lt;br /&gt;
&lt;br /&gt;
Wechsele ins homeverzeichnis von Xinux&lt;br /&gt;
&lt;br /&gt;
 xinux@zero:~$ cd /home/xinux/&lt;br /&gt;
 xinux@zero:~$ pwd&lt;br /&gt;
 /home/xinux&lt;br /&gt;
&lt;br /&gt;
cd ~ -&amp;gt; wechsele ins jeweilige Homeverzeichnis&lt;br /&gt;
&lt;br /&gt;
cd .. -&amp;gt; wechsele ein Verzeichnis höher&lt;br /&gt;
&lt;br /&gt;
cd ../verzeichnis -&amp;gt; wechsele in eine paralleles Verzeichnis &amp;lt;- (ist eine relative Pfadangabe !)&lt;br /&gt;
&lt;br /&gt;
cd - -&amp;gt; wechsele in das Verzeichnis, in dem vorher gearbeitet wurde.&lt;br /&gt;
&lt;br /&gt;
Mit cd / wechselt man in das Wurzelverzeichnis.&lt;br /&gt;
&lt;br /&gt;
 xinux@zero:/var/log$ cd /&lt;br /&gt;
 xinux@zero:/$ pwd&lt;br /&gt;
 /&lt;br /&gt;
&lt;br /&gt;
===ls: Listing===&lt;br /&gt;
&lt;br /&gt;
Den Inhalt von Verzeichnissen kann man sich mit dem Befehl &amp;quot;ls&amp;quot; anzeigen lassen&lt;br /&gt;
wobei &amp;quot;ls&amp;quot; eine Vielzahl von Optionen besitzt:&lt;br /&gt;
&lt;br /&gt;
 ls                                  standard&lt;br /&gt;
 ls -l                               langes listing&lt;br /&gt;
 ls -a                               alle Dateien&lt;br /&gt;
 ls -i                               mit Inode&lt;br /&gt;
 ls -h                               gut lesbare Dateigröße&lt;br /&gt;
 ls -d                               Verzechnis wird angezeigt, nicht der Inhalt&lt;br /&gt;
 ls -L                               sortiert nach Größe&lt;br /&gt;
 ls -t                               sortiert nach Datum&lt;br /&gt;
 ls -F                               mit nützlichem Anhang&lt;br /&gt;
&lt;br /&gt;
 xinux@zero:/$ ls -l /var/log/messages&lt;br /&gt;
 -rw-r----- 1 syslog adm 2296 2009-06-16 10:05 /var/log/messages&lt;br /&gt;
&lt;br /&gt;
===more: Seitenweises Anzeigen von Seiten===&lt;br /&gt;
 root@zero:~# more /var/log/messages&lt;br /&gt;
 ...&lt;br /&gt;
&lt;br /&gt;
===head: erste Zeilen anzeigen===&lt;br /&gt;
Erste 10 Zeilen anzeigen&lt;br /&gt;
 root@zero:~# head /var/log/messages&lt;br /&gt;
 Jun 15 12:37:08 zero syslogd 1.5.0#5ubuntu3: restart.&lt;br /&gt;
 Jun 15 12:38:43 zero kernel: [  830.065036] mtrr: your processor doesn't support write-combining&lt;br /&gt;
 Jun 15 12:46:05 zero pulseaudio[4817]: pid.c: Stale PID file, overwriting.&lt;br /&gt;
 Jun 15 13:05:24 zero -- MARK --&lt;br /&gt;
 ...&lt;br /&gt;
&lt;br /&gt;
Erste zwei Zeilen anzeigen&lt;br /&gt;
 root@zero:~# head -n 2 /var/log/messages&lt;br /&gt;
 Jun 15 12:37:08 zero syslogd 1.5.0#5ubuntu3: restart.&lt;br /&gt;
 Jun 15 12:38:43 zero kernel: [  830.065036] mtrr: your processor doesn't support write-combining&lt;br /&gt;
&lt;br /&gt;
===tail: letzte Zeilen anzeigen===&lt;br /&gt;
 &lt;br /&gt;
 root@zero:~# tail /var/log/syslog&lt;br /&gt;
 ...&lt;br /&gt;
 Jun 19 11:19:35 zero -- MARK --&lt;br /&gt;
 Jun 19 11:39:35 zero -- MARK --&lt;br /&gt;
 Jun 19 11:59:36 zero -- MARK --&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Letze 5 Zeilen anzeigen&lt;br /&gt;
 root@zero:~# tail -n 5 /var/log/auth.log&lt;br /&gt;
 Jun 18 14:30:01 zero CRON[12040]: pam_unix(cron:session): session closed for user root&lt;br /&gt;
 Jun 18 14:39:01 zero CRON[12191]: pam_unix(cron:session): session opened for user root by (uid=0)&lt;br /&gt;
 Jun 18 14:39:01 zero CRON[12191]: pam_unix(cron:session): session closed for user root&lt;br /&gt;
 Jun 18 14:40:01 zero CRON[12237]: pam_unix(cron:session): session opened for user root by (uid=0)&lt;br /&gt;
 Jun 18 14:40:01 zero CRON[12237]: pam_unix(cron:session): session closed for user root&lt;br /&gt;
&lt;br /&gt;
Letze Zeilen anzeigen und fortlaufend aktualisieren&lt;br /&gt;
 root@zero:~# tail -f /var/log/syslog&lt;br /&gt;
 ...&lt;br /&gt;
&lt;br /&gt;
===mkdir: Ein neues Verzeichnis erstellen===&lt;br /&gt;
&lt;br /&gt;
 mkdir        verzeichnis&lt;br /&gt;
Erstellt ein Verzeichnis im working directory (wd)&lt;br /&gt;
&lt;br /&gt;
 mkdir  -p    ver1/ver2&lt;br /&gt;
Erstellt ein Verzeichnis ver2 unterhalb von ver1&lt;br /&gt;
wenn ver1 nicht existiert wird es erstellt&lt;br /&gt;
&lt;br /&gt;
 mkdir -m 753 ver1&lt;br /&gt;
Es wird das Verzeichnis ver1 erstellt mit der mask 753&lt;br /&gt;
&lt;br /&gt;
 mkdir -v     ver1&lt;br /&gt;
Geschwätzige Ausgabe :)&lt;br /&gt;
&lt;br /&gt;
===Zum Löschen von leeren Verzeichnissen wird rmdir benutzt===&lt;br /&gt;
&lt;br /&gt;
 rmdir           ver1&lt;br /&gt;
Löscht das leere Verzeichnis ver1&lt;br /&gt;
&lt;br /&gt;
 rmdir -v        ver1&lt;br /&gt;
Löscht das leere Verzeichnis ver1 und ist geschwätzig&lt;br /&gt;
&lt;br /&gt;
 rmdir -p        /ver1/ver2/ver3&lt;br /&gt;
Löscht das Verzeichnis ver3; wenn dadurch ver2 ein leeres&lt;br /&gt;
Verzeichnis wird, wird dieses auch gelöscht , wenn ver1&lt;br /&gt;
dadurch ein leeres Verzeichnis wird, wird auch dieses gelöscht.&lt;br /&gt;
&lt;br /&gt;
===touch Verändern des Zeitstempels===&lt;br /&gt;
&lt;br /&gt;
Mit touch können wir eine neue leere Datei erzeugen (das ist nicht der eigentliche&lt;br /&gt;
Zweck von touch, eigentlich wird der Zeitstempel geändert)&lt;br /&gt;
&lt;br /&gt;
 touch            dateiname&lt;br /&gt;
&lt;br /&gt;
===Kopieren=== &lt;br /&gt;
cp ist das Kommando um Dateien zu kopieren &lt;br /&gt;
&lt;br /&gt;
Eine Kopie von dat1 mit dem Namen dat2 erstellen:&lt;br /&gt;
&lt;br /&gt;
 xinux@zero:~$ cp dat1 dat2&lt;br /&gt;
&lt;br /&gt;
Eine Kopie von dat1 ins Verzeichnis ver2 erstellen:&lt;br /&gt;
&lt;br /&gt;
 xinux@zero:~$ cp dat1 ver2/&lt;br /&gt;
 &lt;br /&gt;
Eine Kopie erstellen mit ausführlicher Anzeige:&lt;br /&gt;
&lt;br /&gt;
 xinux@zero:~$ cp -v dat1 dat2&lt;br /&gt;
 `dat1' -&amp;gt; `dat2'&lt;br /&gt;
&lt;br /&gt;
Eine Kopie erstellen mit Rückfrage fals etwas überschrieben wird:&lt;br /&gt;
&lt;br /&gt;
 xinux@zero:~$ cp -i dat1 dat2&lt;br /&gt;
 cp: overwrite `dat2'?&lt;br /&gt;
&lt;br /&gt;
Eine Kopie erstellen und die Rückfrage überbrücken:&lt;br /&gt;
&lt;br /&gt;
 xinux@zero:~$ cp -f dat1 dat2&lt;br /&gt;
&lt;br /&gt;
Eine Kopie von dat1 ins Verzeichnis ver2 erstellen fals keine neuere Version von dat1 vorliegt:&lt;br /&gt;
&lt;br /&gt;
 xinux@zero:~$ cp -u dat1 ver2/&lt;br /&gt;
&lt;br /&gt;
Eine Kopie erstellen fals ver2 auf dem selben Dateisystem wie dat1 liegt:&lt;br /&gt;
&lt;br /&gt;
 xinux@zero:~$ cp -x dat1 ver2/&lt;br /&gt;
&lt;br /&gt;
Eine Kopie von ver1, die als ver2 oder unter ver2 als ver1 gespeichert wird erstellen:&lt;br /&gt;
&lt;br /&gt;
 xinux@zero:~$ cp -r ver1/ ver2/&lt;br /&gt;
&lt;br /&gt;
Eine Kopie von einer Datei erstellen und ihre Attribute beibehalten:&lt;br /&gt;
&lt;br /&gt;
 xinux@zero:~$ cp -p sux1 sux2&lt;br /&gt;
&lt;br /&gt;
Eine Kopie erstellen bei der die Links erhalten bleiben:&lt;br /&gt;
&lt;br /&gt;
 xinux@zero:~$ cp -r ver1/ ver2/&lt;br /&gt;
&lt;br /&gt;
Eine Kopie erstellen zum Archivieren (-dpr):&lt;br /&gt;
&lt;br /&gt;
 xinux@zero:~$ cp -a ver1/ ver2/&lt;br /&gt;
&lt;br /&gt;
===rm: Löschen einer Datei===&lt;br /&gt;
&lt;br /&gt;
Um Dateien zu löschen, brauchen wir das Kommando &amp;quot;rm&amp;quot;:&lt;br /&gt;
&lt;br /&gt;
 rm               dat1        dat1 wird gelöscht&lt;br /&gt;
 rm         -i    dat1        dat1 wird nach Bestätigung gelöscht&lt;br /&gt;
 rm         -f    dat1        dat1 wird ohne Rückfragen gelöscht&lt;br /&gt;
 rm         -v    dat1        dat1 wird glöscht (geschwätzige Ausgabe)&lt;br /&gt;
 rm         -r    ver1        Löschen von nicht leeren Verzeichnissen&lt;br /&gt;
                              Achtung !!! Als root kann man sich damit Teile&lt;br /&gt;
                              oder sogar den gesamten Verzeichnisbaum&lt;br /&gt;
                              absägen !!!&lt;br /&gt;
&lt;br /&gt;
===mv: Verschieben===&lt;br /&gt;
&lt;br /&gt;
Mit dem Befehl &amp;quot;mv&amp;quot; werden Daten verschoben, folgendes gilt:&lt;br /&gt;
&lt;br /&gt;
 mv          dat1 dat2         &lt;br /&gt;
Die Datei dat1 wird in dat2 umbenannt&lt;br /&gt;
 mv          dat1 /ver1        &lt;br /&gt;
Die Datei dat1 wird nach /ver1 verschoben&lt;br /&gt;
&lt;br /&gt;
Die Parameter und ihre Bedeutung:&lt;br /&gt;
&lt;br /&gt;
      -i                      wenn eine Datei exisitiert wird vor dem&lt;br /&gt;
                              Überschreiben nachgefragt&lt;br /&gt;
      -v                      verbose (geschwätzig)&lt;br /&gt;
      -u                      nur neuere Daten werden bei Bedarf überschrieben&lt;br /&gt;
      -b                      wenn überschrieben werden soll, wird ein Backup&lt;br /&gt;
                              erstellt&lt;br /&gt;
      -S ENDUNG               das Backup bekommt die Endung ENDUNG&lt;br /&gt;
&lt;br /&gt;
===su Benutzer wechseln===&lt;br /&gt;
&lt;br /&gt;
 su -             &lt;br /&gt;
Wechsel zum Rootaccount, wie wenn dieser sich neu anmelden würde. (Bsp: su -)&lt;br /&gt;
&lt;br /&gt;
 su Benutzernamen &lt;br /&gt;
Wechsel der Identität zu Benutzer (gegebenenfalls Passwortabfrage)&lt;br /&gt;
&lt;br /&gt;
 su -c Kommando   &lt;br /&gt;
Kommando wird als rootaccount ausgeführt&lt;br /&gt;
&lt;br /&gt;
==Der Standard Editor vi==&lt;br /&gt;
Der vi ist der Standardeditor in der Unixwelt. Er ist in jedem Unix-Derivat&lt;br /&gt;
enthalten.&lt;br /&gt;
Der Editor hat zwar den schlechten Ruf umständlich zu bedienen zu sein, ist&lt;br /&gt;
jedoch sehr leistungsfähig und systemübergreifend verfügbar. Beim vi handelt es&lt;br /&gt;
sich um einen rein textorientierten Editor, der mittels eigener Kommandos&lt;br /&gt;
gesteuert wird.&lt;br /&gt;
&lt;br /&gt;
Der Editor VIM ist eine weitere Verbesserung von VI und leichter zu bedienen.&lt;br /&gt;
Und unter Ubuntu/Debian mit &amp;quot;apt-get install vim&amp;quot; zu installieren.&lt;br /&gt;
&lt;br /&gt;
===Starten des Editors:===&lt;br /&gt;
&lt;br /&gt;
Der Editorstart erfolgt einfach durch die Eingabe des Kommandos vi mit dem&lt;br /&gt;
Dateinamen der zu editierenden Datei als Parameter.&lt;br /&gt;
Beispiel:        &lt;br /&gt;
 vi sux.txt&lt;br /&gt;
&lt;br /&gt;
===Die Betriebsmodi des vi:===&lt;br /&gt;
&lt;br /&gt;
Ein Umstand, der dem vi den Ruf der komplizierten Bedienbarkeit zugetragen hat,&lt;br /&gt;
sind die unterschiedlichen Betriebsmodi des Editors. Genauer gesagt verfügt der&lt;br /&gt;
vi über drei Betriebsmodi:&lt;br /&gt;
&lt;br /&gt;
====Kommandomodus:====&lt;br /&gt;
&lt;br /&gt;
Innerhalb dieses Modus werden die eingegebenen Zeichen direkt als Befehle des&lt;br /&gt;
Editors interpretiert und ausgeführt. Dabei gibt es weder ein Bereitschaftszeichen&lt;br /&gt;
(Prompt) noch ein Echo (Ausgabe). Der Kommandomodus ist der Modus, in dem&lt;br /&gt;
sich der vi direkt nach seinem Start befindet.&lt;br /&gt;
&lt;br /&gt;
====Zeilenmodus oder Exmodus:====&lt;br /&gt;
&lt;br /&gt;
Dieser Modus ist der einzige Modus mit einem eigenen Bereitschaftszeichen,&lt;br /&gt;
nämlich dem Doppelpunkt (:). Das Prompt wird ebenso wie die Befehlsausgaben&lt;br /&gt;
in der Statuszeile angezeigt.&lt;br /&gt;
&lt;br /&gt;
====Eingabemodus:====&lt;br /&gt;
&lt;br /&gt;
Der Eingabemodus ist derjenige, in welchem der zu bearbeitende Text bearbeitet&lt;br /&gt;
werden kann. Alle hier eingegebenen Zeichen werden als Text für die aktuelle&lt;br /&gt;
Datei interpretiert. Zwischen den unterschiedlichen Modi kann jederzeit&lt;br /&gt;
gewechselt werden. Von Kommandomodus gelangen Sie durch mehere Wege in&lt;br /&gt;
den Eingabemodus. Man kann durch folgende Aktionen wechslen&lt;br /&gt;
&lt;br /&gt;
{| border=1 cellpadding=2&lt;br /&gt;
|i&lt;br /&gt;
|Text vor der aktuellen Cursorposition einfügen&lt;br /&gt;
|-&lt;br /&gt;
|I&lt;br /&gt;
|Text am Zeilenanfang einfügen&lt;br /&gt;
|-&lt;br /&gt;
|a&lt;br /&gt;
|Text hinter der aktuellen Cursorposition einfügen&lt;br /&gt;
|-&lt;br /&gt;
|A&lt;br /&gt;
|Text am Zeilenende einfügen&lt;br /&gt;
|-&lt;br /&gt;
|o&lt;br /&gt;
|Unterhalb der aktuellen Zeile eine neue Zeile einfügen&lt;br /&gt;
|-&lt;br /&gt;
|O&lt;br /&gt;
|Oberhalb der aktuellen Zeile eine neue Zeile einfügen&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Durch das Drücken der ESC - Taste gelangt man in den Kommandomodus zurück.&lt;br /&gt;
&lt;br /&gt;
Im Kommandomodus können Sie durch den Text navigieren und auch den Text&lt;br /&gt;
selbst bearbeiten, z.B ausschneiden, kopieren usw. Dazu sind einige Kommandos&lt;br /&gt;
nötig, von denen die wichtigsten im Folgenden erläutert werden:&lt;br /&gt;
&lt;br /&gt;
 xinux@zero:/$ vi iwas.txt&lt;br /&gt;
&lt;br /&gt;
[[Image:vim.jpg]]&lt;br /&gt;
&lt;br /&gt;
===Benutzen des Kommandomodus===&lt;br /&gt;
====Steuerung des Cursors durch den Text====&lt;br /&gt;
&lt;br /&gt;
Mittels folgender Kommandos bewegt sich der Cursor durch den Text:&lt;br /&gt;
&lt;br /&gt;
{| border=1 cellpadding=2&lt;br /&gt;
|h&lt;br /&gt;
|Cursor ein Zeichen nach links&lt;br /&gt;
|-&lt;br /&gt;
|l&lt;br /&gt;
|Cursor ein Zeichen nach rechts&lt;br /&gt;
|-&lt;br /&gt;
|k&lt;br /&gt;
|Cursor eine Zeile nach oben&lt;br /&gt;
|-&lt;br /&gt;
|j&lt;br /&gt;
|Cursor eine Zeile nach unten&lt;br /&gt;
|-&lt;br /&gt;
|w&lt;br /&gt;
|Cursor ein Wort nach rechts&lt;br /&gt;
|-&lt;br /&gt;
|b&lt;br /&gt;
|Cursor ein Wort nach links&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Alle diese Kommandos können mit einem vorgestellten Wiederholungsfaktor&lt;br /&gt;
arbeiten. Der Befehl 3w verschiebt demnach den Cursor um 3 Wörter nach rechts.&lt;br /&gt;
&lt;br /&gt;
====Angaben zur Positionierung====&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{| border=1 cellpadding=2&lt;br /&gt;
|STRG+U&lt;br /&gt;
|1⁄2 Bildschirmseite nach oben&lt;br /&gt;
|-&lt;br /&gt;
|STRG+D&lt;br /&gt;
|1⁄2 Bildschirmseite nach unten&lt;br /&gt;
|-&lt;br /&gt;
|STRG+B&lt;br /&gt;
|1 Bildschirmseite nach oben&lt;br /&gt;
|-&lt;br /&gt;
|STRG+F&lt;br /&gt;
|1 Bildschirmseite nach unten&lt;br /&gt;
|-&lt;br /&gt;
|/Ausdruck&lt;br /&gt;
|Sucht den Ausdruck (vorwärts) Weitersuchen mit n , N&lt;br /&gt;
|-&lt;br /&gt;
|?Ausdruck&lt;br /&gt;
|Sucht den Ausdurck (rückwärts) Weitersuchen mit n , N&lt;br /&gt;
|-&lt;br /&gt;
|0&lt;br /&gt;
|Zeilenanfang&lt;br /&gt;
|-&lt;br /&gt;
|$&lt;br /&gt;
|Zeilenende&lt;br /&gt;
|-&lt;br /&gt;
|w&lt;br /&gt;
|Nächstes Wort&lt;br /&gt;
|-&lt;br /&gt;
|b&lt;br /&gt;
|Vorheriges Wort&lt;br /&gt;
|-&lt;br /&gt;
|fc&lt;br /&gt;
|Auf das Zeichen c springen. c steht für ein beliebiges Zeichen&lt;br /&gt;
|-&lt;br /&gt;
|G&lt;br /&gt;
|Letzte Zeile der Datei&lt;br /&gt;
|-&lt;br /&gt;
|ng&lt;br /&gt;
|n-te Zeile der Datei&lt;br /&gt;
|-&lt;br /&gt;
|H&lt;br /&gt;
|Anfang der Bildschirmseite&lt;br /&gt;
|-&lt;br /&gt;
|L&lt;br /&gt;
|Ende der Bildschirmseite&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
====Befehle zur Textbearbeitung -&amp;gt; Was soll geschehen====&lt;br /&gt;
&lt;br /&gt;
{| Border=1 Cellpadding=2&lt;br /&gt;
|x&lt;br /&gt;
|Löscht Zeichen&lt;br /&gt;
|-&lt;br /&gt;
|d&lt;br /&gt;
|Löschen und in den Puffer laden&lt;br /&gt;
|-&lt;br /&gt;
|c&lt;br /&gt;
|Ändern&lt;br /&gt;
|-&lt;br /&gt;
|y&lt;br /&gt;
|In den Puffer laden&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
====Weitere wichtige Befehle:====&lt;br /&gt;
&lt;br /&gt;
{| Border=1 Cellpadding=2&lt;br /&gt;
|p&lt;br /&gt;
|Aus dem Puffer einfügen&lt;br /&gt;
|-&lt;br /&gt;
|u&lt;br /&gt;
|Undo, macht den letzten Befehl rückgängig&lt;br /&gt;
|-&lt;br /&gt;
|STRG+R&lt;br /&gt;
|Redo, macht den letzten Undo rückgängig&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
===Zeilen- oder Exmodus===&lt;br /&gt;
&lt;br /&gt;
Wie schon erwähnt wird der Zeilen oder Exmodus durch einen : eingeleitet.&lt;br /&gt;
Es folgen einige Beispiele.&lt;br /&gt;
&lt;br /&gt;
Befehle zum Speichern und Beenden:&lt;br /&gt;
&lt;br /&gt;
 :w          Schreibt Datei&lt;br /&gt;
 :w Datei2   Schreibt eine Kopie in Datei2&lt;br /&gt;
 :w !        Schreibt Datei (übergehe Schreibschutz)&lt;br /&gt;
 :w ! Datei2 Schreibt eine Kopie in Datei2 (übergehe Schreibschutz)&lt;br /&gt;
 :q          Schließe Datei&lt;br /&gt;
 :q!         Schließe Datei (verwerfe Änderungen)&lt;br /&gt;
 :wq         Schreibe Datei und beende Editor&lt;br /&gt;
 :wq!        Schreibe Datei und beende Editor (übergehe Schreibschutz)&lt;br /&gt;
 :q!         Schließe Datei (verwerfe Änderungen)&lt;br /&gt;
 :h          Hilfe anzeigen, durch drücken von :q Beenden der Hilfe&lt;br /&gt;
 :e Datei3   Editiere Datei3&lt;br /&gt;
 :e #        Editere vorhergehende Datei&lt;br /&gt;
 :1,3co9     Kopiere von der ersten bis zu dritten Zeile &lt;br /&gt;
             und füge den Inhalt unterhalb der neunte Zeile ein.&lt;br /&gt;
&lt;br /&gt;
Interaktionen mit Unix:&lt;br /&gt;
&lt;br /&gt;
 :r Datei4   Fügt Inhalt der Datei4 nach dem Cursor ein&lt;br /&gt;
 :r ! Befehl Fügt Ausgabe des Befehls nach dem Cursor ein&lt;br /&gt;
 :! Befehl   Führt den Befehl aus&lt;br /&gt;
 :sh         Starte Subshell -&amp;gt; mit exit kehrt man wieder zurück&lt;br /&gt;
             Eingabemodus zurück&lt;br /&gt;
&lt;br /&gt;
====Ersetzen von Textteilen====&lt;br /&gt;
&lt;br /&gt;
Die grundsätzliche Syntax lautet:&lt;br /&gt;
&lt;br /&gt;
 :[Zeilennummer,Zeilennummer]s/Muster/Ersetzung/[gc]&lt;br /&gt;
&lt;br /&gt;
 :s/worf/kirn/              der erste worf wird in der aktuellen Zeile durch kirn ersetzt&lt;br /&gt;
 :1,9s/worf/kirn/g          von der 1. bis zur 9. Zeile werden alle worf durch kirn ersetzt&lt;br /&gt;
 :1,$s/worf/kirn/           von der ersten bis zur letzten Zeile ersetze ersten worf durch&lt;br /&gt;
                            kirn&lt;br /&gt;
 :.,$s/worf/kirn/g          von der aktuellen bis zur letzten Zeile ersetze alle worf durch&lt;br /&gt;
                            kirn&lt;br /&gt;
 :1,.s/worf/kirn/c          von der 1. bis zur aktuellen Zeile ersetze worf durch kirn, frage&lt;br /&gt;
                            aber nach&lt;br /&gt;
 :1,$s/^worf/kirn/          von der ersten bis zur letzten Zeile ersetze worf am&lt;br /&gt;
                            Zeilenanfang durch kirn&lt;br /&gt;
 :4,$s/worf$/kirn/          von der 4. bis zur letzten Zeile ersetze worf am Zeilenende&lt;br /&gt;
                            durch kirn&lt;br /&gt;
 :1,$s/^#//                 lösche alle Kommentarzeichen&lt;br /&gt;
 :1,$s/^.orf/kirn/           ersetze alles was am Zeilenanfang ein beliebiges Zeichen hat&lt;br /&gt;
                            gefolgt von einem orf durch kirn&lt;br /&gt;
 :1,$s/^[A-Z]orf/kirn/g     suche nach einem Großbuchstaben am Anfang der Zeile&lt;br /&gt;
                            gefolgt von einem orf und ersetze durch kirn&lt;br /&gt;
 :1,$s/^M[ae][iy]e*r/kirn/  suche alles, was am Anfang der Zeile ein großes M enthält,&lt;br /&gt;
                            gefolgt von einem a oder e , gefolgt von einem i oder y ,&lt;br /&gt;
                            gefolgt von einem e , welches 0 oder N mal vorkommen kann,&lt;br /&gt;
                            gefolgt von einem r und ersetze es durch kirn&lt;br /&gt;
&lt;br /&gt;
==Reguläre Ausdrücke==&lt;br /&gt;
&lt;br /&gt;
{| Border=1 Cellpadding=2&lt;br /&gt;
|c&lt;br /&gt;
|Ein einzelner Buchstabe passt auf sich selbst&lt;br /&gt;
|-&lt;br /&gt;
|.&lt;br /&gt;
|Ein Punkt passt auf jedes Zeichen außer auf das Zeilenende&lt;br /&gt;
|-&lt;br /&gt;
|*&lt;br /&gt;
|Das dem Operator * vorangehende Muster kann 0 oder öfter vorkommen&lt;br /&gt;
|-&lt;br /&gt;
|^&lt;br /&gt;
|(Caret) passt auf den Zeilenanfang&lt;br /&gt;
|-&lt;br /&gt;
|$&lt;br /&gt;
|Passt auf das Zeilenende&lt;br /&gt;
|-&lt;br /&gt;
|\&lt;br /&gt;
|Das folgende Sonderzeichen wird entwertet&lt;br /&gt;
|-&lt;br /&gt;
|[...]&lt;br /&gt;
|Passt auf &amp;quot;genau&amp;quot; eins in [...] angebenen Zeichen&lt;br /&gt;
|-&lt;br /&gt;
|[^...]&lt;br /&gt;
|Passt auf &amp;quot;genau&amp;quot; ein Zeichen welches nicht in [...] angebenen ist&lt;br /&gt;
|-&lt;br /&gt;
|\&amp;lt;&lt;br /&gt;
|Passt auf den Wortanfang&lt;br /&gt;
|-&lt;br /&gt;
|\&amp;gt;&lt;br /&gt;
|Passt auf das Wortende&lt;br /&gt;
|-&lt;br /&gt;
|\+&lt;br /&gt;
|Das dem Operator \+ vorangehende Muster kann 1 oder öfter vorkommen&lt;br /&gt;
|-&lt;br /&gt;
|&amp;amp;&lt;br /&gt;
|Setzt das gefunden Suchmuster ein&lt;br /&gt;
|-&lt;br /&gt;
|\(...\)&lt;br /&gt;
|Speichert den Text auf den das Suchmuster passt zur späteren Verwendung&lt;br /&gt;
|-&lt;br /&gt;
|\n&lt;br /&gt;
|Setzt das vorangehende, mit \(...\) Gefundene wieder ein&lt;br /&gt;
|-&lt;br /&gt;
|(...)&lt;br /&gt;
|Gruppiert Auswahlmöglichkeiten&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;nowiki&amp;gt;|&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
|Trennt Auswahlmöglichkeiten&lt;br /&gt;
|-&lt;br /&gt;
|\b&lt;br /&gt;
|Passt auf den Anfang oder das Ende eines Wortes&lt;br /&gt;
|-&lt;br /&gt;
|\B&lt;br /&gt;
|Symbolisiert den Raum innerhalb eines Wortes&lt;br /&gt;
|-&lt;br /&gt;
|\w&lt;br /&gt;
|Passt auf alle alphanumerischen Zeichen [A-Za-z0-9]&lt;br /&gt;
|-&lt;br /&gt;
|\W&lt;br /&gt;
|Passt auf alle nichtalphanumerischen Zeichen [^A-Za-z0-9]&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Die Rangfolge der Operatoren(von der höchsten zur niedrigsten)&lt;br /&gt;
:(, ), ?, *, + | .&lt;br /&gt;
&lt;br /&gt;
Die anderen Operatoren sind mit den anderen Buchstaben gleichrangig.&lt;br /&gt;
&lt;br /&gt;
===Beispiel zum Suchen===&lt;br /&gt;
&lt;br /&gt;
 Suchmuster               Passt auf&lt;br /&gt;
 ^Tuxer                   Tuxer am Zeilenanfang&lt;br /&gt;
 [tT]uxer                 Tuxer oder tuxer&lt;br /&gt;
 80[23]?86                8086, 80286 oder 80386&lt;br /&gt;
&lt;br /&gt;
===grep===&lt;br /&gt;
&lt;br /&gt;
Mit grep ist es möglich, in Dateien nach regulären Ausdrücken zu suchen. Wenn&lt;br /&gt;
eine Übereinstimmung gefunden wird, wird die komplette Zeile auf die&lt;br /&gt;
Standardausgabe geschrieben. grep kann auch von STDIN lesen.Es ist&lt;br /&gt;
empfehlenswert, sich anzugwöhnen ,das Suchmuster in Anführungszeichen zu&lt;br /&gt;
schreiben. Es gibt 3 Arten fgrep = fastgrep , grep und egrep egrep&lt;br /&gt;
&lt;br /&gt;
Beispiel:&lt;br /&gt;
&lt;br /&gt;
 root@zero:~# cat text&lt;br /&gt;
 quatsch&lt;br /&gt;
 quatsch&lt;br /&gt;
 quatsch&lt;br /&gt;
 wichtig&lt;br /&gt;
 quatsch&lt;br /&gt;
 root@zero:~# grep wichtig text&lt;br /&gt;
 wichtig&lt;br /&gt;
 root@zero:~# &lt;br /&gt;
&lt;br /&gt;
 -c                   meldet nur die Gesamtzahl der Fundstellen&lt;br /&gt;
 -v                   zeigt nur Zeilen, die »Ausdruck« nicht enthalten&lt;br /&gt;
 -i                   ignoriert Groß- und Kleinschreibung&lt;br /&gt;
 -l                    meldet nur Dateinamen mit Fundstellen&lt;br /&gt;
 -n                   listet Zeilennummern zu jeder Fundstelle&lt;br /&gt;
 -f                   Dateiname »Dateiname« enthält die Such-Ausdrücke&lt;br /&gt;
 -E                   ist ein erweiterter regulärer Ausdruck (egrep)&lt;br /&gt;
 -F                   (Muster, Ausdruck) ist ein Muster (String) (fgrep)&lt;br /&gt;
 -b                   listet auch die Position der Fundstellen&lt;br /&gt;
 -C    Anzahl         Anzahl von Zeilen werden nach der Fundstelle ausgegeben&lt;br /&gt;
 -B    Anzahl         Anzahl von Zeilen werden vor der Fundstelle ausgegeben&lt;br /&gt;
 -r                   Durchsucht Verzeichnisse rekursiv&lt;br /&gt;
&lt;br /&gt;
==Useridendifikation==&lt;br /&gt;
===/etc/passwd===&lt;br /&gt;
====Beschreibung====&lt;br /&gt;
passwd ist eine ASCII-Datei, die eine Liste der Benutzer des Systems und deren&lt;br /&gt;
Passwörter enthält. Die Passwortdatei sollte für alle Benutzer lesbar sein, was für&lt;br /&gt;
dieVerschlüsselung notwendig ist; aber nur vom Superuser beschreibbar. Wenn&lt;br /&gt;
Sie eine neue Kennung einrichten, lassen Sie das Passwort-Feld in der Datei frei&lt;br /&gt;
und benutzen Sie passwd(1), um dem System ein Passwort für die neue Kennung&lt;br /&gt;
mitzuteilen.&lt;br /&gt;
&lt;br /&gt;
Die Datei /etc/passwd enthält einen Eintrag pro Zeile mit dem Format:&lt;br /&gt;
login_name:passwd:UID:GID:user_name:directory:shell&lt;br /&gt;
====Die Bedeutung der Felder:====&lt;br /&gt;
# login_name Kennung des Benutzers auf dem System.&lt;br /&gt;
# password   Hier steht bei Shadowsystemen ein x. Die Passwörter sind in der Datei /etc/shadow&lt;br /&gt;
# UID        Die numerische Benutzernummer.&lt;br /&gt;
#  GID        Die numerische Gruppennummer des Benutzers.&lt;br /&gt;
# user_name Ein optionales Kommentarfeld, oft benutzt für den vollen Namen des Benutzers und weitere Informationen (Telefon, Raum-Nummer etc.).&lt;br /&gt;
# directory  Das Heimatverzeichnis $HOME des Benutzers.&lt;br /&gt;
# shell      Das Programm, das beim Einloggen gestartet werden soll (falls nicht nötig, benutzen Sie /bin/bash).&lt;br /&gt;
&lt;br /&gt;
===/etc/group===&lt;br /&gt;
====Beschreibung====&lt;br /&gt;
etc/group ist eine ASCII Datei, die Gruppen definiert, zu denen Benutzer&lt;br /&gt;
gehören. Es gibt nur einen Eintrag pro Zeile; jede Zeile hat folgendes Format:&lt;br /&gt;
         GruppenName:Passwort:GruppenKennung:BenutzerListe&lt;br /&gt;
Beschreibung der Felder:&lt;br /&gt;
#     GruppenName      Die Bezeichnung der Gruppe.&lt;br /&gt;
#     Passwort         Das (verschlüsselte) Gruppen-Passwort. Wenn dieses Feld leer ist, wird kein Passwort benötigt.&lt;br /&gt;
#     GruppenKennung Die numerische Identifikation der Gruppe.&lt;br /&gt;
#     BenutzerListe    Alle Namen der Mitglieder, getrennt durch Kommas.&lt;br /&gt;
&lt;br /&gt;
===/etc/shadow===&lt;br /&gt;
====Beschreibung====&lt;br /&gt;
shadow beinhaltet Informationen zu den verschlüsselten Passwörten, zu den&lt;br /&gt;
Benutzerzugängen und weitere Informationen zur Laufzeit der Passwörter.&lt;br /&gt;
 Name:Passwort:Letzte Änderung:Mintage:Maxtage:Warntage:Inaktiv:Ablauf&lt;br /&gt;
#    Der Loginname&lt;br /&gt;
#    verschlüsseltes Passwort &lt;br /&gt;
&amp;lt;nowiki&amp;gt;*&amp;lt;/nowiki&amp;gt; bedeutet Benutzer kann sich nicht einlogen&lt;br /&gt;
! bedeutet Benutzer hat kein Passwort gesetzt&lt;br /&gt;
#    Tage seit dem 1 Januar 1970 an dem das Passwort letztmals geändert wurde&lt;br /&gt;
#    Tage, die das Passwort behalten werden muss, bevor es wieder geändert werden kann&lt;br /&gt;
#     Die Anzahl der Tage, nach denen der Benutzer das Passwort wieder ändern muss&lt;br /&gt;
#    Anzahl der Tage bevor das Passwort abläuft und der Benutzer gewarnt wird&lt;br /&gt;
#    Wenn der Zugang diese Anzahl von Tagen nicht benutzt wird, wird der Zugang gesperrt&lt;br /&gt;
#    Tag seit dem 1 Januar 1970, an dem der Zugang gesperrt wird&lt;br /&gt;
#    Reserviertes Feld&lt;br /&gt;
&lt;br /&gt;
Die Datei sollte aus Sicherheitgründen nicht für einen normalen Benutzer lesbar&lt;br /&gt;
sein.&lt;br /&gt;
&lt;br /&gt;
==Programme zur Userverwaltung==&lt;br /&gt;
===useradd===&lt;br /&gt;
User anlegen&lt;br /&gt;
 root@zero:~# useradd -m -u 1011 -g users -G admin -d /home/erwin -s /bin/bash -c &amp;quot;Erwin Lehman&amp;quot;  erwin&lt;br /&gt;
{| border=1 cellpadding=2&lt;br /&gt;
|&amp;quot;-m&amp;quot;&lt;br /&gt;
|Lege Homedirectory an&lt;br /&gt;
|-&lt;br /&gt;
|&amp;quot;-u 1011&amp;quot;&lt;br /&gt;
|Userid wird zugeordnet&lt;br /&gt;
|-&lt;br /&gt;
|&amp;quot;-g users&amp;quot;&lt;br /&gt;
|Primäre Gruppe wird zugeordnet&lt;br /&gt;
|-&lt;br /&gt;
|&amp;quot;-G admin&amp;quot;&lt;br /&gt;
|Sekunbdäre Gruppe wird zugeordnet&lt;br /&gt;
|-&lt;br /&gt;
|&amp;quot;-d /home/erwin/&amp;quot;&lt;br /&gt;
|Name des Homedirectory&lt;br /&gt;
|-&lt;br /&gt;
|&amp;quot;-s /bin/bash&amp;quot;&lt;br /&gt;
|Bash wird zugeordnet&lt;br /&gt;
|- &lt;br /&gt;
|&amp;quot;-c Erwin Lehman&amp;quot;&lt;br /&gt;
|Kommentarfeld&lt;br /&gt;
|-&lt;br /&gt;
|&amp;quot;erwin&amp;quot; &lt;br /&gt;
|Name des Users&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Defaulteinstellungen anzeigen&lt;br /&gt;
 root@zero:~# useradd -D&lt;br /&gt;
 GROUP=100&lt;br /&gt;
 HOME=/home&lt;br /&gt;
 INACTIVE=-1&lt;br /&gt;
 EXPIRE=&lt;br /&gt;
 SHELL=/bin/sh&lt;br /&gt;
 SKEL=/etc/skel&lt;br /&gt;
 CREATE_MAIL_SPOOL=no&lt;br /&gt;
&lt;br /&gt;
Defaulteinstellungen ändern&lt;br /&gt;
 useradd -D -s /bin/bash&lt;br /&gt;
&lt;br /&gt;
Konfigurationsdatei&lt;br /&gt;
 root@zero:~# cat /etc/default/useradd &lt;br /&gt;
 SHELL=/bin/bash&lt;br /&gt;
 GROUP=100&lt;br /&gt;
 HOME=/home&lt;br /&gt;
 INACTIVE=-1&lt;br /&gt;
 EXPIRE=&lt;br /&gt;
 SKEL=/etc/skel&lt;br /&gt;
 CREATE_MAIL_SPOOL=no&lt;br /&gt;
&lt;br /&gt;
===usermod===&lt;br /&gt;
User modifizieren&lt;br /&gt;
 root@zero:~# usermod -l fritz -s /bin/sh -G admin,video erwin&lt;br /&gt;
{| border=1 cellpadding=2&lt;br /&gt;
|&amp;quot;-l fritz&amp;quot;&lt;br /&gt;
|Neuer Username&lt;br /&gt;
|-&lt;br /&gt;
|&amp;quot;-s /bin/sh&amp;quot;&lt;br /&gt;
|Neue Shell&lt;br /&gt;
|-&lt;br /&gt;
|&amp;quot;-G admin, video&amp;quot;&lt;br /&gt;
|Sekunbdäre Gruppen werden zugeordnet&lt;br /&gt;
|-&lt;br /&gt;
|&amp;quot;erwin&amp;quot; &lt;br /&gt;
|Name des Users&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
===userdel===&lt;br /&gt;
User inklusive Homedirectory löschen&lt;br /&gt;
 root@zero:~# userdel -r fritz&lt;br /&gt;
&lt;br /&gt;
===passwd===&lt;br /&gt;
Rootpasswort ändern&lt;br /&gt;
 root@zero:~# passwd &lt;br /&gt;
 Geben Sie ein neues UNIX Passwort ein:'''sysadm''' &lt;br /&gt;
 Geben Sie das neue UNIX Passwort erneut ein:'''sysadm''' &lt;br /&gt;
 passwd: Passwort erfolgreich geändert&lt;br /&gt;
&lt;br /&gt;
Passwort von tux ändern&lt;br /&gt;
 root@zero:~# passwd tux&lt;br /&gt;
 Geben Sie ein neues UNIX Passwort ein:'''suxer''' &lt;br /&gt;
 Geben Sie das neue UNIX Passwort erneut ein:'''suxer'''&lt;br /&gt;
 passwd: Passwort erfolgreich geändert&lt;br /&gt;
&lt;br /&gt;
Minimale und Maximale Gültigkeit des Passwortes von tux festlegen&lt;br /&gt;
 root@zero:~# passwd -n 5 -x 120 tux&lt;br /&gt;
&lt;br /&gt;
===groupadd===&lt;br /&gt;
 root@zero:~# groupadd -f -g 2001 xinuxer&lt;br /&gt;
{| border=1 cellpadding=2&lt;br /&gt;
|&amp;quot;-f&amp;quot;&lt;br /&gt;
|Überschreibe bestehende Gruppe&lt;br /&gt;
|-&lt;br /&gt;
|&amp;quot;-g 2001&amp;quot;&lt;br /&gt;
|GID der Gruppe&lt;br /&gt;
|-&lt;br /&gt;
|&amp;quot;xinuxer&amp;quot; &lt;br /&gt;
|Name des Gruppe&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==chmod==&lt;br /&gt;
Die Syntax des Befehls chmod lautet:&lt;br /&gt;
&lt;br /&gt;
'''chmod''' WerWieWas [,WerWieWas,.....] Dateiliste&lt;br /&gt;
&lt;br /&gt;
oder&lt;br /&gt;
&lt;br /&gt;
'''chmod''' Oktalzahl Dateiliste&lt;br /&gt;
&lt;br /&gt;
Durch WerWieWas bzw. Oktalzahl wird die Rechtetabelle definiert. Innerhalb von&lt;br /&gt;
WerWieWas darf es kein Leerzeichen geben. Wer bezeichnet den Benutzerkreis,&lt;br /&gt;
dem man Rechte gibt, Wie die Art, in der die Rechte gegeben werden und Was die&lt;br /&gt;
Rechte als solche. Im einzelnen können folgende Kürzel benutzt werden:&lt;br /&gt;
&lt;br /&gt;
Für Wer kann eines der folgenden Kürzel oder eine Kombination davon stehen:&lt;br /&gt;
 u                   (user) Rechte für den Dateibesitzer&lt;br /&gt;
 g                   (group) Rechte für die Gruppe&lt;br /&gt;
 o                   (others) Rechte für alle anderen Benutzer&lt;br /&gt;
 a                   (all) Rechte für alle Benutzer&lt;br /&gt;
Für Wie steht eines der folgenden Kürzel:&lt;br /&gt;
 +                   Die Rechte werden zu den vorhandenen zusätzlich vergeben&lt;br /&gt;
 -                   Die im Folgenden genannten Rechte werden entzogen&lt;br /&gt;
 =                   Die im Folgenden genannten Rechte ersetzen die bisherigen&lt;br /&gt;
Für Was steht eines der folgenden Kürzel:&lt;br /&gt;
 r                   (read) lesen&lt;br /&gt;
 w                   (write) schreiben&lt;br /&gt;
 x                   (execute) ausführen&lt;br /&gt;
oder diese Sonderformen&lt;br /&gt;
 s                   (usersbit) Programm läuft unter der UID des Besitzers&lt;br /&gt;
 s                   (groupsbit)Programm läuft unter der GID des GRUPPE&lt;br /&gt;
 t                   (stickybit) Dateien im Verzeichnis darf nur Besitzer löschen&lt;br /&gt;
&lt;br /&gt;
===Beispiel===&lt;br /&gt;
Setze für alle Schreib- und Leserecht&lt;br /&gt;
 xinux@zero:~$ chmod a=rw test &lt;br /&gt;
 xinux@zero:~$ ls -l test &lt;br /&gt;
 -rw-rw-rw- 1 xinux xinux 0 2009-06-16 12:01 test&lt;br /&gt;
 xinux@zero:~$ &lt;br /&gt;
&lt;br /&gt;
Erteile Besitzer Ausführungsrecht&lt;br /&gt;
 xinux@zero:~$ chmod u+x test ; ls -l test &lt;br /&gt;
 -rwxrw-rw- 1 xinux xinux 0 2009-06-16 12:01 test&lt;br /&gt;
 xinux@zero:~$ &lt;br /&gt;
&lt;br /&gt;
===chmod oktale Schreibweise===&lt;br /&gt;
 Specialrights        User           Group         Other&lt;br /&gt;
 usbit gsbit sticky    r    w   x     r   w   x     r   w   x&lt;br /&gt;
   1     1      1      1    1   1     1   1   1     1   1   1&lt;br /&gt;
   0     0      0      0    0   0     0   0   0     0   0   0&lt;br /&gt;
 Oktale Wertigkeit pro Recht&lt;br /&gt;
   4     2       1     4    2   1     4   2   1     4   2   1&lt;br /&gt;
&lt;br /&gt;
===Beispiele===&lt;br /&gt;
 xinux@zero:~$ chmod 751 test ; ls -l test&lt;br /&gt;
 -rwxr-x--x 1 xinux xinux 0 2009-06-16 12:01 test&lt;br /&gt;
 xinux@zero:~$ &lt;br /&gt;
&lt;br /&gt;
 xinux@zero:~$ chmod 4770 test ; ls -l test&lt;br /&gt;
 -rwsrwx--- 1 xinux xinux 0 2009-06-16 12:01 test&lt;br /&gt;
 xinux@zero:~$ &lt;br /&gt;
&lt;br /&gt;
 xinux@zero:~$ chmod 0 test ; ls -l test &lt;br /&gt;
 ---------- 1 xinux xinux 0 2009-06-16 12:01 test&lt;br /&gt;
&lt;br /&gt;
===chmod Optionen===&lt;br /&gt;
 -c   (changes) es werden nur die Dateien angezeigt, deren Zugriffsrechte tatsächlich verändert werden&lt;br /&gt;
 -f   (silent, quiet) Fehlermeldungen wegen fehlgeschlagener Änderungsversuche werden unterdrückt&lt;br /&gt;
 -v   (verbose) alle Aktionen werden angezeigt&lt;br /&gt;
 -R   (recursive) die Zugriffsrechte aller Dateien in den Unterverzeichnissen werden ebenfalls geändert&lt;br /&gt;
&lt;br /&gt;
Theoretisch sind alle Kombinationen der Zugriffsrechte denkbar, aber der&lt;br /&gt;
Eigentümer einer Datei darf diese immer lesen, selbst wenn das Lesebit nicht&lt;br /&gt;
gesetzt ist. Genauso macht es wenig Sinn, eine gewöhnliche Textdatei als&lt;br /&gt;
ausführbar zu setzen; die Shell wird damit nichts anfangen können. Ein x für ein&lt;br /&gt;
Verzeichnis gibt an, dass in dieses gewechselt werden kann.&lt;br /&gt;
&lt;br /&gt;
Rechte sind verbindlich&lt;br /&gt;
&lt;br /&gt;
Interessant ist auch ein Konstrukt folgender Art&lt;br /&gt;
 -rwx---rwx&lt;br /&gt;
&lt;br /&gt;
das angibt, dass mit der Datei alles angestellt werden kann, außer durch Nutzer der&lt;br /&gt;
Gruppe. Versucht irgend jemand, der nicht der Gruppe des Eigentümers angehört,&lt;br /&gt;
die Datei zu modifizieren, wird ihm dies gelingen, einem Gruppenmitglied bleibt&lt;br /&gt;
dies versagt, obwohl er ja gleichzeitig ein &amp;quot;Anderer&amp;quot; ist. D.h. die Rechte der&lt;br /&gt;
Gruppe sind verbindlicher, als die Rechte der anderen!&lt;br /&gt;
&lt;br /&gt;
===Bedeutungen der Zugriffsarten===&lt;br /&gt;
====Dateien====&lt;br /&gt;
* r: Der Inhalt der Datei kann gelesen und damit auch kopiert werden. &lt;br /&gt;
 root@zero:~# cat test&lt;br /&gt;
 Dies ist eine Testdatei&lt;br /&gt;
  &lt;br /&gt;
 root@zero:~# cp test backup&lt;br /&gt;
&lt;br /&gt;
* w: Der Inhalt der Datei darf verändert werden. Ob die Datei gelöscht werden kann ist&lt;br /&gt;
keine Eigenschaft der Datei, sondern des Verzeichnisses, indem sich die Datei befindet.&lt;br /&gt;
 root@zero:~# cat &amp;gt; test&lt;br /&gt;
 Hier steht jetzt was anderes&lt;br /&gt;
 ^C&lt;br /&gt;
 root@zero:~# cat test&lt;br /&gt;
 Hier steht jetzt was anderes&lt;br /&gt;
  &lt;br /&gt;
 xinux@zero:~$ ls -ld verzeichnis/&lt;br /&gt;
 dr-xr-xr-x 2 xinux xinux 4096 2009-06-18 11:16 verzeichnis/&lt;br /&gt;
 xinux@zero:~/verzeichnis$ rm text&lt;br /&gt;
 rm: Entfernen von „text“ nicht möglich: Permission denied&lt;br /&gt;
&lt;br /&gt;
* x: Ausführrecht für Programme und Skripte&lt;br /&gt;
 xinux@zero:~$ ./programm&lt;br /&gt;
 -bash: ./programm: Permission denied&lt;br /&gt;
 xinux@zero:~$ chmod +x programm&lt;br /&gt;
 xinux@zero:~$ ./programm&lt;br /&gt;
 Test&lt;br /&gt;
  test&lt;br /&gt;
&lt;br /&gt;
====Verzeichnisse====&lt;br /&gt;
* r: Die Einträge in dem Verzeichnis sind lesbar.&lt;br /&gt;
Leserecht von verzeichnis/ entziehen&lt;br /&gt;
 xinux@zero:~$ chmod a-r verzeichnis/&lt;br /&gt;
 xinux@zero:~$ ls verzeichnis/&lt;br /&gt;
 ls: Öffnen von Verzeichnis verzeichnis/ nicht möglich: Permission denied&lt;br /&gt;
Leserecht für Benutzer und Gruppe vergeben&lt;br /&gt;
 xinux@zero:~$ chmod a+r verzeichnis/&lt;br /&gt;
 xinux@zero:~$ ls verzeichnis/&lt;br /&gt;
 text&lt;br /&gt;
&lt;br /&gt;
* w: Die Einträge in dem Verzeichnis können geändert werden. &lt;br /&gt;
Neue Datei erstellen&lt;br /&gt;
 xinux@zero:~$ touch neu&lt;br /&gt;
 xinux@zero:~$ ls neu&lt;br /&gt;
 neu&lt;br /&gt;
&lt;br /&gt;
Datei löschen&lt;br /&gt;
 xinux@zero:~$ rm neu&lt;br /&gt;
 xinux@zero:~$ ls neu&lt;br /&gt;
 ls: Zugriff auf neu nicht möglich: No such file or directory&lt;br /&gt;
&lt;br /&gt;
* x: Der Name des Verzeichnisses kann in einem Pfadnamen erscheinen.&lt;br /&gt;
Verzeichnis ohne x Recht&lt;br /&gt;
 xinux@zero:~$ chmod a-x verzeichnis/&lt;br /&gt;
Wechseln in Verzeichnis mangels x-Recht nicht möglich&lt;br /&gt;
 xinux@zero:~$ cd verzeichnis/&lt;br /&gt;
 -bash: cd: verzeichnis/: Permission denied&lt;br /&gt;
x-Recht vergeben&lt;br /&gt;
 xinux@zero:~$ chmod a+x verzeichnis/&lt;br /&gt;
damit Wechsel in Verzeichnis möglich&lt;br /&gt;
 xinux@zero:~$ cd verzeichnis/&lt;br /&gt;
 xinux@zero:~/verzeichnis$ pwd&lt;br /&gt;
 /home/xinux/verzeichnis&lt;br /&gt;
&lt;br /&gt;
====umask====&lt;br /&gt;
Neue Dateien und Verzeichnisse werden mit ein und denselben Zufriffsrechten erzeugt.&lt;br /&gt;
 xinux@zero:~$ mkdir text&lt;br /&gt;
 xinux@zero:~$ touch textdat&lt;br /&gt;
 xinux@zero:~$ ls -ld text*&lt;br /&gt;
 drwxr-xr-x 2 xinux xinux 4096 2009-06-18 11:37 text&lt;br /&gt;
 -rw-r--r-- 1 xinux xinux    0 2009-06-18 11:37 textdat&lt;br /&gt;
&lt;br /&gt;
Zuständig für dieses Verhalten ist die sogenannte umask, die oft in der Datei&lt;br /&gt;
/etc/profile auf den Wert 022 voreingestellt ist. Zusätzlich wird noch eine&lt;br /&gt;
Maximalmaske benötigt, die sich für Verzeichnisse und andere Dateien&lt;br /&gt;
unterscheidet. Die bei der Erzeugung gesetzten Rechte entstehen nun, indem von&lt;br /&gt;
der Maximalmaske der durch die umask vorgegebene Wert subtrahiert wird:&lt;br /&gt;
&lt;br /&gt;
{| border=1 cellpadding=2&lt;br /&gt;
!&lt;br /&gt;
! Dateien&lt;br /&gt;
! Verzeichnisse&lt;br /&gt;
|-&lt;br /&gt;
| Systemvorgabe&lt;br /&gt;
| 666&lt;br /&gt;
| 777&lt;br /&gt;
|-&lt;br /&gt;
| -umask&lt;br /&gt;
| 022&lt;br /&gt;
| 022&lt;br /&gt;
|-&lt;br /&gt;
| Ergebnis&lt;br /&gt;
| 644&lt;br /&gt;
| 755&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
 xinux@zero:~$ grep umask /etc/profile&lt;br /&gt;
 umask 022&lt;br /&gt;
&lt;br /&gt;
==Gruppenzugehörigkeit==&lt;br /&gt;
===newgrp===&lt;br /&gt;
Ändert die Gruppenzugehörigkeit eines Benutzers auf die angegebene Gruppe. Wenn keine Gruppe angegeben wird, wird die &lt;br /&gt;
Anmeldegruppe des Benutzers verwendet. Die neue Gruppe wird anschließend fü Zugriffskontrollen verwendet.&lt;br /&gt;
&lt;br /&gt;
 newgrp Gruppenname&lt;br /&gt;
&lt;br /&gt;
 root@zero:~# newgrp hacker&lt;br /&gt;
 root@zero:~# id&lt;br /&gt;
 uid=0(root) gid=1006(hacker) Gruppen=0(root),1006(hacker)&lt;br /&gt;
&lt;br /&gt;
===chgrp===&lt;br /&gt;
Verändert die Besitzugehörigkeit zu der angegebenen Gruppe&lt;br /&gt;
&lt;br /&gt;
 chgrp [Optionen] Gruppe Datei(en)&lt;br /&gt;
&lt;br /&gt;
Optionen:&lt;br /&gt;
 -c Zeigt Veränderungen an&lt;br /&gt;
 -f Unterdrückt die meisten Fehlermeldungen&lt;br /&gt;
 -R Verändert Dateien und Verzeichnisse rekursiv&lt;br /&gt;
 -v Gibt geschwätzige Ausgabe aus.&lt;br /&gt;
&lt;br /&gt;
 root@zero:~# ls -l&lt;br /&gt;
 ...&lt;br /&gt;
 d-wx--x--x  3 root root 4096 2009-06-18 13:34 verzeichnis&lt;br /&gt;
 &lt;br /&gt;
 root@zero:~# chgrp -R xinux verzeichnis/&lt;br /&gt;
 root@zero:~# ls -l&lt;br /&gt;
 ...&lt;br /&gt;
 d-wx--x--x  3 root xinux 4096 2009-06-18 13:34 verzeichnis&lt;br /&gt;
&lt;br /&gt;
 xinux@zero:~$ cd /root/verzeichnis/&lt;br /&gt;
 xinux@zero:/root/verzeichnis$ pwd&lt;br /&gt;
 /root/verzeichnis&lt;br /&gt;
&lt;br /&gt;
===chown===&lt;br /&gt;
Ändert den Eigentümer von einer oder mehreren Dateien in den angegebenen Benutzer. &lt;br /&gt;
chown erlaubt ebenfalls das Ändern der Gruppeneigentümreschaft. Nur der aktuelle Eigentümer einer&lt;br /&gt;
Datei oder der Superuser (root) darf die Eigentumsverhältnisse ändern.&lt;br /&gt;
&lt;br /&gt;
 chown [Optionen] Benutzer(:Gruppe) Dateien&lt;br /&gt;
&lt;br /&gt;
Optionen:&lt;br /&gt;
 -c Gibt Informationen über die veränderten Dateien aus&lt;br /&gt;
 --dereference Symbolischen Links folgen&lt;br /&gt;
 -v Gibt Informationen über alle Dateien aus, die chown zu ändern versucht, egal, ob die Änderung erfolgt ist oder nicht&lt;br /&gt;
 -R Geht rekursiv durch alle Unterverzeichnisse und führt die Änderungen durch. &lt;br /&gt;
&lt;br /&gt;
 root@zero:~# chown -R xinux.xinux verzeichnis/&lt;br /&gt;
 root@zero:~# ls -l&lt;br /&gt;
 insgesamt 12&lt;br /&gt;
 drwx------ 13 root  root  4096 2009-04-21 15:11 profile&lt;br /&gt;
 --w-------  1 root  root     0 2009-06-18 11:13 test&lt;br /&gt;
 -rw-r--r--  1 root  root    40 2009-06-18 12:04 text&lt;br /&gt;
 drwxrwx--x  3 xinux xinux 4096 2009-06-18 13:39 verzeichnis&lt;br /&gt;
 &lt;br /&gt;
 root@zero:~# chown -R -c xinux.xinux verzeichnis/&lt;br /&gt;
 &lt;br /&gt;
 root@zero:~# chown -R -v xinux.xinux verzeichnis/&lt;br /&gt;
 Eigentümer von „verzeichnis/01“ als xinux:xinux erhalten&lt;br /&gt;
 Eigentümer von „verzeichnis/test“ als xinux:xinux erhalten&lt;br /&gt;
 Eigentümer von „verzeichnis/“ als xinux:xinux erhalten&lt;br /&gt;
&lt;br /&gt;
==Eingabe/Ausgabe==&lt;br /&gt;
Standardeingabe (0): Laufende Programme erwarten von hier ihre Eingaben (normalerweise handelt es sich um die Tastatur).&lt;br /&gt;
&lt;br /&gt;
Standardausgabe (1): Programme schreiben auf diese ihre Ausgaben (Bildschirm).&lt;br /&gt;
&lt;br /&gt;
Standardfehlerausgabe (2) : Fehlerausgaben landen hier (Bildschirm, aber nur die aktive Konsole).&lt;br /&gt;
&lt;br /&gt;
[[Bild:std.jpg]]&lt;br /&gt;
&lt;br /&gt;
===cat===&lt;br /&gt;
Das Programm cat liest von STDIN und gibt es STDOUT wieder aus&lt;br /&gt;
&lt;br /&gt;
Einlesen der Datei text&lt;br /&gt;
 root@zero:~# cat &amp;lt; text&lt;br /&gt;
 wichtig&lt;br /&gt;
&lt;br /&gt;
Schreiben in die Datei text, dies überschreibt den bisherigen Inhalt der Datei&lt;br /&gt;
 root@zero:~# cat &amp;gt; text&lt;br /&gt;
 sogar noch wichtiger &lt;br /&gt;
 &lt;br /&gt;
Ausgeben der Datei text&lt;br /&gt;
 root@zero:~# cat text &lt;br /&gt;
 sogar noch wichtiger&lt;br /&gt;
&lt;br /&gt;
Lesen aus der Datei text und schreiben in die Datei neuertext&lt;br /&gt;
 root@zero:~# cat &amp;lt; text &amp;gt; neuertext&lt;br /&gt;
 root@zero:~# cat neuertext&lt;br /&gt;
 sogar noch wichtiger&lt;br /&gt;
&lt;br /&gt;
Anhängen der Ausgabe von date an die Datei neuertext&lt;br /&gt;
 root@zero:~# date &amp;gt;&amp;gt; neuertext&lt;br /&gt;
 root@zero:~# cat neuertext&lt;br /&gt;
 sogar noch wichtiger&lt;br /&gt;
 Do 18. Jun 14:08:58 CEST 2009&lt;br /&gt;
&lt;br /&gt;
Umleiten des Standardfehlerkanals nach error&lt;br /&gt;
 root@zero:~# rm sux 2&amp;gt; error&lt;br /&gt;
 root@zero:~# more error&lt;br /&gt;
 rm: Entfernen von „sux“ nicht möglich: No such file or directory&lt;br /&gt;
&lt;br /&gt;
===Umleitungen===&lt;br /&gt;
Nacheinander auszuführende Kommandos&lt;br /&gt;
 root@zero:~# pwd; date&lt;br /&gt;
 /root&lt;br /&gt;
 Do 18. Jun 14:13:05 CEST 2009&lt;br /&gt;
 &lt;br /&gt;
Übergeben der Ausgabe von tail als Eingabe von grep mit Hilfe der Pipe &amp;quot;|&amp;quot;&lt;br /&gt;
 root@zero:~# tail /var/log/auth.log | grep xinux&lt;br /&gt;
 Jun 18 13:52:33 zero nss_wins[11433]: pam_unix(login:session): session closed for user xinux&lt;br /&gt;
&lt;br /&gt;
Übergeben der letzten 100 Zeilen von syslog als Eingabe von grep&lt;br /&gt;
 root@zero:~# tail /var/log/syslog -n 100 | grep error&lt;br /&gt;
 Jun 18 09:30:54 zero kernel: [154384.692135] end_request: I/O error, dev fd0, sector 0&lt;br /&gt;
 Jun 18 09:30:54 zero kernel: [154384.712137] end_request: I/O error, dev fd0, sector 0&lt;br /&gt;
&lt;br /&gt;
==tr==&lt;br /&gt;
tr ist ein Programm um Zeichen zu übersetzen. Dies betrifft nur die Ausgabe, die Datei selbst bleibt unverändert.&lt;br /&gt;
&lt;br /&gt;
Ersetzt Kleinbuchstaben durch Großbuchstaben aus der Datei text&lt;br /&gt;
 root@zero:~# tr &amp;quot;a-z&amp;quot; &amp;quot;A-Z&amp;quot; &amp;lt; text&lt;br /&gt;
 SOGAR NOCH WICHTIGER&lt;br /&gt;
 123&lt;br /&gt;
 34&lt;br /&gt;
 4711&lt;br /&gt;
 TEST&lt;br /&gt;
&lt;br /&gt;
Ersetzt alle Zahlen durch X&lt;br /&gt;
 root@zero:~# tr &amp;quot;0-9&amp;quot; &amp;quot;X&amp;quot; &amp;lt; text&lt;br /&gt;
 sogar noch wichtiger&lt;br /&gt;
 XXX&lt;br /&gt;
 XX&lt;br /&gt;
 XXXX&lt;br /&gt;
 test&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
 root@zero:~# cat &amp;gt; test&lt;br /&gt;
 +++++&lt;br /&gt;
 ###&lt;br /&gt;
 1111&lt;br /&gt;
&lt;br /&gt;
-s löscht mehrfach kommende Zeichen&lt;br /&gt;
 root@zero:~# tr '''-s''' &amp;quot;+&amp;quot; &amp;lt; test&lt;br /&gt;
 +&lt;br /&gt;
 ###&lt;br /&gt;
 1111&lt;br /&gt;
&lt;br /&gt;
-d löscht vorkommende Zeichen &lt;br /&gt;
 root@zero:~# tr '''-d''' &amp;quot;#&amp;quot; &amp;lt; test&lt;br /&gt;
 +++++ &lt;br /&gt;
 &lt;br /&gt;
 1111&lt;br /&gt;
&lt;br /&gt;
==cut==&lt;br /&gt;
Spalten aus einer Datei schneiden. Dies betrifft nur die Ausgabe, die Datei selbst bleibt unverändert.&lt;br /&gt;
 &lt;br /&gt;
Schneidet die erste Spalte aus, der Delimiter ist : &lt;br /&gt;
 root@zero:~# cut -f 1 -d : /etc/passwd&lt;br /&gt;
 root&lt;br /&gt;
 daemon&lt;br /&gt;
 bin&lt;br /&gt;
 ...&lt;br /&gt;
 xinux&lt;br /&gt;
&lt;br /&gt;
 root@zero:~# more test&lt;br /&gt;
 1234#5678#9999&lt;br /&gt;
 &lt;br /&gt;
Schneidet die zweite Spalte aus, der Delimiter ist #&lt;br /&gt;
 root@zero:~# cut -f 2 -d &amp;quot;#&amp;quot; &amp;lt; test&lt;br /&gt;
 5678&lt;br /&gt;
&lt;br /&gt;
Schneidet bis zum 3 Zeichen ab&lt;br /&gt;
 root@zero:~$ echo S01policykit | cut -c 4-&lt;br /&gt;
 policykit&lt;br /&gt;
&lt;br /&gt;
==expand==&lt;br /&gt;
Ersetzt Tabulatorzeichen durch Folgen von Leerzeichen und schreibt das Ergebnis auf die Standardausgabe&lt;br /&gt;
 root@zero:~# expand /etc/samba/smb.conf&lt;br /&gt;
 ...&lt;br /&gt;
&lt;br /&gt;
==fmt==&lt;br /&gt;
#Setzt den Text der Dateien im Blocksatz der angegebenen Breite durch Auffüllen von Zeilen und Entfernen von Zeilenwechseln.&lt;br /&gt;
Standardgemäß werden Leerzeilen, die Position von Leerzeichen und der Einzug am Zeilenanfang erhalten. fmt versucht, &lt;br /&gt;
Zeilenumbrüche an Satzenden durchzuführen sowie sie nach dem ersten oder vor dem letzten Wort eines Satzes zu vermeiden. &lt;br /&gt;
 &lt;br /&gt;
 fmt [Optionen] [Dateien]&lt;br /&gt;
&lt;br /&gt;
Optionen&lt;br /&gt;
&lt;br /&gt;
* -p ''Präfix'': Formatiert nur Zeilen, die mit ''Präfix'' anfangen&lt;br /&gt;
 root@zero:/tmp# fmt -p '#' text&lt;br /&gt;
 #Setzt den Text der Dateien im Blocksatz der angegebenen Breite durch&lt;br /&gt;
 #Auffüllen von Zeilen und Entfernen von Zeilenwechseln.  Standardgemäß&lt;br /&gt;
 #werden Leerzeilen, die Position von Leerzeichen und der Einzug am&lt;br /&gt;
 #Zeilenanfang erhalten. fmt versucht,&lt;br /&gt;
 Zeilenumbrüche an Satzenden durchzuführen sowie sie nach dem ersten oder vor dem letzten Wort eines Satzes zu vermeiden.&lt;br /&gt;
&lt;br /&gt;
* -u : Erzwingt genau ein Leerzeichen zwischen Wörtern und zwei Leerzeichen zwischen Sätzen&lt;br /&gt;
&lt;br /&gt;
* -w ''Breite'': Setzt die Ausgabebreite auf ''Breite''&lt;br /&gt;
 root@zero:/tmp# fmt -w 30 text&lt;br /&gt;
 #Setzt den Text der Dateien&lt;br /&gt;
 im Blocksatz der angegebenen&lt;br /&gt;
 Breite durch Auffüllen&lt;br /&gt;
 von Zeilen und Entfernen&lt;br /&gt;
 von Zeilenwechseln.&lt;br /&gt;
 #Standardgemäß werden&lt;br /&gt;
 Leerzeilen, die Position von&lt;br /&gt;
 Leerzeichen und der Einzug am&lt;br /&gt;
 Zeilenanfang erhalten. fmt&lt;br /&gt;
 versucht, Zeilenumbrüche&lt;br /&gt;
 an Satzenden durchzuführen&lt;br /&gt;
 sowie sie nach dem ersten&lt;br /&gt;
 oder vor dem letzten Wort&lt;br /&gt;
 eines Satzes zu vermeiden.&lt;br /&gt;
&lt;br /&gt;
==join==&lt;br /&gt;
Führt die Zeilen zweier sortierter Dateien anhand von '''Übereinstimmungen''' in einem gemeinsamen Feld zusammen.&lt;br /&gt;
&lt;br /&gt;
 root@zero:~# more name&lt;br /&gt;
 1. karl&lt;br /&gt;
 2. heinz&lt;br /&gt;
 3. hans&lt;br /&gt;
 4. otto&lt;br /&gt;
 root@zero:~# more tel&lt;br /&gt;
 1. 1234&lt;br /&gt;
 2. 4321&lt;br /&gt;
 3. 222&lt;br /&gt;
 4. 121212&lt;br /&gt;
 root@zero:~# join name tel &amp;gt; telefonbuch&lt;br /&gt;
 root@zero:~# more telefonbuch&lt;br /&gt;
 1. karl 1234&lt;br /&gt;
 2. heinz 4321&lt;br /&gt;
 3. hans 222&lt;br /&gt;
 4. otto 121212&lt;br /&gt;
&lt;br /&gt;
 root@zero:~# join -t : /etc/passwd /etc/shadow&lt;br /&gt;
 ....&lt;br /&gt;
 daemon:x:1:1:daemon:/usr/sbin:/bin/sh:*:14181:0:99999:7:::&lt;br /&gt;
 bin:x:2:2:bin:/bin:/bin/sh:*:14181:0:99999:7:::&lt;br /&gt;
 sys:x:3:3:sys:/dev:/bin/sh:*:14181:0:99999:7:::&lt;br /&gt;
 sync:x:4:65534:sync:/bin:/bin/sync:*:14181:0:99999:7:::&lt;br /&gt;
 ...&lt;br /&gt;
&lt;br /&gt;
join in dat1 nach Feld 3 und in dat2 nach Feld 2&lt;br /&gt;
 thomas@lydia:~$ cat dat1 &lt;br /&gt;
 hugo:ps:1111&lt;br /&gt;
 erwin:zw:2222&lt;br /&gt;
 karl:sb:3333&lt;br /&gt;
 rudi:kl:4444&lt;br /&gt;
 thomas@lydia:~$ cat dat2&lt;br /&gt;
 blau:1111:svn&lt;br /&gt;
 grün:2222:fcs&lt;br /&gt;
 gelb:3333:fch&lt;br /&gt;
 rot:4444:fck&lt;br /&gt;
 thomas@lydia:~$ join -t : -1 3 -2 2 dat1 dat2 &lt;br /&gt;
 1111:hugo:ps:blau:svn&lt;br /&gt;
 2222:erwin:zw:grün:fcs&lt;br /&gt;
 3333:karl:sb:gelb:fch&lt;br /&gt;
 4444:rudi:kl:rot:fck&lt;br /&gt;
&lt;br /&gt;
==nl==&lt;br /&gt;
Nummeriert die Zeilen in einer Datei.&lt;br /&gt;
&lt;br /&gt;
 root@zero:~# nl /etc/passwd                                                   &lt;br /&gt;
     1  root:x:0:0:root:/root:/bin/bash                                       &lt;br /&gt;
     2  daemon:x:1:1:daemon:/usr/sbin:/bin/sh                                 &lt;br /&gt;
     3  bin:x:2:2:bin:/bin:/bin/sh                                            &lt;br /&gt;
     4  sys:x:3:3:sys:/dev:/bin/sh                                            &lt;br /&gt;
     5  sync:x:4:65534:sync:/bin:/bin/sync&lt;br /&gt;
     ...&lt;br /&gt;
Nummereriet mit führenden Nullen der Separatir ist ein :&lt;br /&gt;
 root@zero:~# nl -s : -n rz dat1&lt;br /&gt;
&lt;br /&gt;
==od==&lt;br /&gt;
Gibt Dateien im Oktal und anderen Formaten aus.&lt;br /&gt;
&lt;br /&gt;
 od [Optionen] Datei&lt;br /&gt;
&lt;br /&gt;
* -j ''Bytes'': Überspringt die Anzahl ''Bytes'' einer Datei&lt;br /&gt;
* -N ''Bytes'': Gibt nur die Anzahl ''Bytes'' aus&lt;br /&gt;
* -c : Gebe ASCII Zeichen aus&lt;br /&gt;
* -f : Gebe Fließkommazahlen aus&lt;br /&gt;
* -i : Gebe Dezimal Integer aus&lt;br /&gt;
* -l : Gebe Dezimal Long aus&lt;br /&gt;
* -o : Gebe Oktal 2 Byte Einheiten aus&lt;br /&gt;
* -s : Gebe Dezimal 2 Byte Einheiten aus&lt;br /&gt;
* -x : Gebe Hexadezimale 2 Byte einheiten aus&lt;br /&gt;
&lt;br /&gt;
Beispiele&lt;br /&gt;
&lt;br /&gt;
Gebe Master Boot Record (die ersten 512 Byte der Festplatte /dev/sda) als Hexadezimal aus&lt;br /&gt;
 root@zero:~# od '''-x -N''' 512 /dev/sda&lt;br /&gt;
 0000000 48eb 1090 d08e 00bc b8b0 0000 d88e c08e&lt;br /&gt;
 0000020 befb 7c00 00bf b906 0200 a4f3 21ea 0006&lt;br /&gt;
 0000040 be00 07be 0438 0b75 c683 8110 fefe 7507&lt;br /&gt;
 0000060 ebf3 b416 b002 bb01 7c00 80b2 748a 0203&lt;br /&gt;
 0000100 00ff 2000 0001 0000 0200 90fa f690 80c2&lt;br /&gt;
 ...&lt;br /&gt;
&lt;br /&gt;
Schreibe &amp;quot;suxer&amp;quot; in die Datei test&lt;br /&gt;
 root@zero:~# echo &amp;quot;suxer&amp;quot; &amp;gt; test&lt;br /&gt;
Ausgabe Hexadezimal&lt;br /&gt;
 root@zero:~# od -x test&lt;br /&gt;
 0000000 7573 6578 0a72&lt;br /&gt;
 0000006&lt;br /&gt;
&lt;br /&gt;
Ausgabe ASCII Zeichen&lt;br /&gt;
 root@zero:~# od -c test&lt;br /&gt;
 0000000   s   u   x   e   r  \n&lt;br /&gt;
 0000006&lt;br /&gt;
&lt;br /&gt;
==paste==&lt;br /&gt;
Fügt die Zeilen von zwei oder mehr Dateien horizontal zusammen&lt;br /&gt;
 root@zero:~# paste name tel&lt;br /&gt;
 1. karl 1. 1234&lt;br /&gt;
 2. heinz        2. 4321&lt;br /&gt;
 3. hans 3. 222&lt;br /&gt;
 4. otto 4. 121212&lt;br /&gt;
&lt;br /&gt;
==pr==&lt;br /&gt;
Bereitet Textdateien zum Drucken vor.&lt;br /&gt;
&lt;br /&gt;
 root@zero:~# echo &amp;quot;Plan für heute&amp;quot; &amp;gt; dokument&lt;br /&gt;
 root@zero:~# more dokument&lt;br /&gt;
 Plan für heute&lt;br /&gt;
 root@zero:~# pr dokument   &lt;br /&gt;
  &lt;br /&gt;
 &lt;br /&gt;
 2009-06-19 12:44                    dokument                     Seite 1&lt;br /&gt;
 &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
 Plan für heute&lt;br /&gt;
&lt;br /&gt;
Anmerkung Ausmaße der Bildschirmausgabe wie eine Druckseite.&lt;br /&gt;
&lt;br /&gt;
==sed==&lt;br /&gt;
streaming editor. Mit sed ist es möglich, den Inhalt einer Datei automatisch (nicht interaktiv) zu&lt;br /&gt;
bearbeiten. Wie unter Linux üblich, wird auch hier der Text nicht wirklich verändert sondern die &lt;br /&gt;
Änderung erfolgt über die Standardausgabe, die wieder umgeleitet werden kann. Die Syntax ist ähnlich &lt;br /&gt;
des ex modus von vi. Reguläre Ausdrücke können nach Belieben benutzt werden. &lt;br /&gt;
&lt;br /&gt;
Optionen:&lt;br /&gt;
 -e Zeichenkette  wendet die Editorbefehle aus Zeichenkette auf den Text an.&lt;br /&gt;
 -n gibt nur die Zeilen aus, die explizit (durch &amp;quot;p&amp;quot; ausgedruckt werden sollen&lt;br /&gt;
&lt;br /&gt;
Gibt die dritte Zeile der Datei text aus&lt;br /&gt;
 root@zero:~# sed -n &amp;quot;3p&amp;quot; text&lt;br /&gt;
 34&lt;br /&gt;
&lt;br /&gt;
Gibt die erste bis dritte Zeile von text aus&lt;br /&gt;
 root@zero:~# sed -n &amp;quot;1,3p&amp;quot; text&lt;br /&gt;
 sogar noch wichtiger&lt;br /&gt;
 123&lt;br /&gt;
 34&lt;br /&gt;
&lt;br /&gt;
Löschen der Zeile mit &amp;quot;sogar&amp;quot;&lt;br /&gt;
 root@zero:~# sed -e '/sogar/d' &amp;lt; text&lt;br /&gt;
 123&lt;br /&gt;
 34&lt;br /&gt;
 4711&lt;br /&gt;
 test&lt;br /&gt;
&lt;br /&gt;
und schreiben in text2&lt;br /&gt;
 root@zero:~# sed -e '/sogar/d' &amp;lt; text &amp;gt; text2&lt;br /&gt;
 root@zero:~# more text2&lt;br /&gt;
 123&lt;br /&gt;
 34&lt;br /&gt;
 4711&lt;br /&gt;
 test&lt;br /&gt;
&lt;br /&gt;
Alle 3en durch DREI ersetzen&lt;br /&gt;
 root@zero:~# sed -e 's/3/DREI/g' &amp;lt; text&lt;br /&gt;
 sogar noch wichtiger&lt;br /&gt;
 12DREI&lt;br /&gt;
 DREI4&lt;br /&gt;
 4711&lt;br /&gt;
 test&lt;br /&gt;
&lt;br /&gt;
==wc==&lt;br /&gt;
Zählt die Anzahl von Zeichen, Wörter oder Zeilen&lt;br /&gt;
&lt;br /&gt;
Optionen&lt;br /&gt;
* -m : Zählt die Anzahl der Zeichen&lt;br /&gt;
 root@zero:~# more name&lt;br /&gt;
 1. karl&lt;br /&gt;
 2. heinz&lt;br /&gt;
 3. hans&lt;br /&gt;
 4. otto&lt;br /&gt;
 root@zero:~# wc '''-m''' tel&lt;br /&gt;
 33 tel&lt;br /&gt;
&lt;br /&gt;
* -w : Zählt die Anzahl der Wörter (einschließlich Zahlen und andere Zeichen)&lt;br /&gt;
 root@zero:~# wc '''-w''' name&lt;br /&gt;
 8 name&lt;br /&gt;
&lt;br /&gt;
* -l : Zählt die Anzahl der Zeilen&lt;br /&gt;
 root@zero:~# wc '''-l''' name&lt;br /&gt;
 4 name&lt;br /&gt;
&lt;br /&gt;
==Sort==&lt;br /&gt;
&lt;br /&gt;
Zum sortieren von Dateien nach Feldern benutzt man sort. sort liest von STDIN man kann die Datei aber auch als Argument übergeben. &lt;br /&gt;
&lt;br /&gt;
Sortiert nach dem ersten Feld&lt;br /&gt;
  root@zero:~# sort /etc/passwd 	 &lt;br /&gt;
&lt;br /&gt;
Es wird geprüft ob die Datei schon sortiert ist &lt;br /&gt;
 root@zero:~# sort -c /etc/passwd 	&lt;br /&gt;
&lt;br /&gt;
Sortiert nach dem ersten Feld (Richtungsumkehr)  &lt;br /&gt;
 root@zero:~#  sort -r /etc/passwd&lt;br /&gt;
&lt;br /&gt;
Führende Leersortzeichen werden ignoriert &lt;br /&gt;
 root@zero:~# sort -b /etc/passwd&lt;br /&gt;
&lt;br /&gt;
Ausgabe  in die Datei pass&lt;br /&gt;
 root@zero:~# sort  /etc/passwd   -o pass	 &lt;br /&gt;
&lt;br /&gt;
nimmt : als Trenner -Voreinstellung ist TAB&lt;br /&gt;
  root@zero:~# sort -t : /etc/passwd&lt;br /&gt;
&lt;br /&gt;
sortiert nach dem  3 Feld,  der Trenner ist : und es wird nummerisch sortiert&lt;br /&gt;
&lt;br /&gt;
 root@zero:~# sort -t: +2 -n /etc/passwd		&lt;br /&gt;
&lt;br /&gt;
sortiert nach dem  3 Feld,  der Trenner ist : und es wird nummerisch sortiert&lt;br /&gt;
					&lt;br /&gt;
 root@zero:~# sort -t: -k 3 -n /etc/passwd&lt;br /&gt;
&lt;br /&gt;
Sortiert nach dem  3  bis zum 5 Feld, der Trenner ist : und es wird nummerisch sortiert&lt;br /&gt;
	&lt;br /&gt;
 root@zero:~# sort -t: -k 3,5 -n /etc/passwd	&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==INodes==&lt;br /&gt;
Inode (oder I-Node) wird im Deutschen am besten als Informationsknoten oder&lt;br /&gt;
Indexeintrag bezeichnet. Er fasst alle Attribute einer Datei zusammen außer dem Inhalt&lt;br /&gt;
und dem Namen der Datei.&lt;br /&gt;
&lt;br /&gt;
===Daten===&lt;br /&gt;
{| border=1 cellpadding=2&lt;br /&gt;
|type&lt;br /&gt;
|Der Typ der Datei wird als einzelner Buchstabe angezeigt. Der Typ einer Datei wird beim Anlegen der Datei festgelegt&lt;br /&gt;
|-&lt;br /&gt;
|Permissions &lt;br /&gt;
|Die Zugriffsrechte der Datei werden in den 12 Bit sstrwxrwxrwx abgespeichert.Wenn sie gesetzt sind, werden sie bei &lt;br /&gt;
der Ausgabe an Stelle der x-Rechte ausgegeben. Die Zugriffsrechte können mit dem Kommando chmod verändert werden.&lt;br /&gt;
|-&lt;br /&gt;
|link count&lt;br /&gt;
|In UNIX kann eine Datei mehr als einen Namen haben. Der Link Count gibt die Anzahl der Namen einer Datei an. Er kann&lt;br /&gt;
mit dem Kommando ln erhöht und dem Kommando rm erniedrigt werden.&lt;br /&gt;
|-&lt;br /&gt;
|owner&lt;br /&gt;
|Für den Dateieigentümer gelten die in der ersten rwx-Gruppe festgelegten Zugriffsrechte. Standardmäßig ist der &lt;br /&gt;
Eigentümer einer Datei derjenige Benutzer, der die Datei angelegt hat.&lt;br /&gt;
|-&lt;br /&gt;
|group&lt;br /&gt;
|Für Benutzer, die in der gleichen Gruppe sind, der die Datei angehört, gelten die in der zweiten rwx-Gruppe festgelegten&lt;br /&gt;
Zugriffsrechte. In System V gehört eine Datei standardmäßig der Gruppe an, in der der anlegende Benutzer gerade ist.&lt;br /&gt;
|-&lt;br /&gt;
|size&lt;br /&gt;
|Bei normalen Dateien und Verzeichnissen gibt diese Information die Länge der Datei in Byte an.&lt;br /&gt;
|-&lt;br /&gt;
|access time&lt;br /&gt;
|Die Zugriffszeit gibt den Zeitpunkt des letzten Lesezugriffes auf eine Datei an. Aus Effizienzgründen wird die &lt;br /&gt;
Zugriffszeit an Verzeichnissen nicht gesetzt, wenn ein Verzeichnis durchsucht wird, obwohl man dies erwarten könnte. ''(ls -l --time=atime)''&lt;br /&gt;
|-&lt;br /&gt;
|modification time&lt;br /&gt;
|Die Modifikationszeit gibt die Zeit des letzten Schreibzugriffes auf die Daten der Datei an. Intern speichert UNIX &lt;br /&gt;
die Zeit als Sekunden seit Beginn des Jahres 1970 und in GMT ab. Für die Ausgabe wird dies in ein besser lesbares &lt;br /&gt;
Format in der lokalen Zeitzone umgewandelt. ''(ls -l)''&lt;br /&gt;
|-&lt;br /&gt;
|change time &lt;br /&gt;
|Die Veränderungszeit gibt das Datum der letzten Statusänderung der Datei an. Sie wird immer dann gesetzt, wenn die &lt;br /&gt;
Informationen über die Datei sich ändern (Datum der Erzeugung wird nicht gespeichert) ''(ls -lc)''&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
===Dateiarten===&lt;br /&gt;
{| border=1 cellpadding=2&lt;br /&gt;
!Zeichen&lt;br /&gt;
!Typ&lt;br /&gt;
!Zweck&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;nowiki&amp;gt;-&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
|file&lt;br /&gt;
|normale Datei&lt;br /&gt;
|-&lt;br /&gt;
|d&lt;br /&gt;
|directory&lt;br /&gt;
|Verzeichnis&lt;br /&gt;
|-&lt;br /&gt;
|b&lt;br /&gt;
|block device&lt;br /&gt;
|Gerätedatei&lt;br /&gt;
|-&lt;br /&gt;
|c&lt;br /&gt;
|character device&lt;br /&gt;
|Gerätedatei&lt;br /&gt;
|-&lt;br /&gt;
|l&lt;br /&gt;
|link&lt;br /&gt;
|Querverweis&lt;br /&gt;
|-&lt;br /&gt;
|p&lt;br /&gt;
|named pipe&lt;br /&gt;
|Benannte Pipeline&lt;br /&gt;
|-&lt;br /&gt;
|s&lt;br /&gt;
|socket&lt;br /&gt;
|Netzwerkverbindung&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
====Normale Dateien====&lt;br /&gt;
Unter einer normalen Datei versteht man die Ansammlung von Daten. Dies kann ein Text, Programm, Bild oder sonstiges sein. &lt;br /&gt;
Beispiel&lt;br /&gt;
 root@zero:~# ls -l text | cut -c 1&lt;br /&gt;
 -&lt;br /&gt;
&lt;br /&gt;
====Verzeichnisse====&lt;br /&gt;
Dateien werden in Verzeichnissen gespeichert, nur so ist eine Ordnung möglich. &lt;br /&gt;
 root@zero:~# mkdir -v Ordner&lt;br /&gt;
 mkdir: Verzeichnis „Ordner“ angelegt&lt;br /&gt;
 &lt;br /&gt;
 root@zero:~# ls -ld Ordner | cut -c 1&lt;br /&gt;
 d&lt;br /&gt;
&lt;br /&gt;
====Gerätedateien (Block und Char)====&lt;br /&gt;
Gerätedateien ermöglichen Anwendungsprogrammen unter Benutzung des  Kernels den Zugriff auf die Hardwarekomponenten des Systems. Ansprechbar über Major und Minor Nummern &lt;br /&gt;
&lt;br /&gt;
Beispiele&lt;br /&gt;
&lt;br /&gt;
Sicherung des Master Boot Records der ersten Festplatte&lt;br /&gt;
 root@zero:~# dd if=/dev/sda of=/tmp/mbr.img bs=512 count=1&lt;br /&gt;
&lt;br /&gt;
Block Device &lt;br /&gt;
 root@zero:~# ls -l /dev/sda | cut -c 1 &lt;br /&gt;
 b&lt;br /&gt;
&lt;br /&gt;
Character Device &lt;br /&gt;
 root@zero:~# ls -l /dev/ttyS0  | cut -c 1 &lt;br /&gt;
 c&lt;br /&gt;
&lt;br /&gt;
Erstellen einer Gerätedatei&lt;br /&gt;
 root@zero:/dev# mknod sata1 b 8 0 &lt;br /&gt;
 root@zero:/dev# fdisk -l /dev/sata1 &lt;br /&gt;
 &lt;br /&gt;
 Platte /dev/sata1: 6442 MByte, 6442450944 Byte&lt;br /&gt;
 255 Köpfe, 63 Sektoren/Spuren, 783 Zylinder&lt;br /&gt;
 Einheiten = Zylinder von 16065 × 512 = 8225280 Bytes&lt;br /&gt;
 Disk identifier: 0x0005efab&lt;br /&gt;
 &lt;br /&gt;
       Gerät  boot.     Anfang        Ende     Blöcke   Id  System&lt;br /&gt;
 /dev/sata1p1   *           1         743     5968116   83  Linux&lt;br /&gt;
 /dev/sata1p2             744         783      321300    5  Erweiterte&lt;br /&gt;
 /dev/sata1p5             744         783      321268+  82  Linux Swap / Solaris&lt;br /&gt;
&lt;br /&gt;
====Named Pipes====&lt;br /&gt;
Benannte Pipes (Named Pipes) können dagegen auch zur Kommunikation zwischen Prozessen eingesetzt werden, die nicht miteinander&lt;br /&gt;
verwandt sind und sich darüber hinaus auf unterschiedlichen Rechnern innerhalb eines Netzwerkes befinden dürfen. Sie sind &lt;br /&gt;
flexibler als anonyme Pipes und eignen sich für sogenannte Client-Server-Anwendungen (es lassen sich auch RPCs realisieren).&lt;br /&gt;
Benannte Pipes ermöglichen die gleichzeitige Kommunikation in beide Richtungen, das heißt, Daten können im Vollduplexbetrieb &lt;br /&gt;
zwischen den Prozessen ausgetauscht werden.&lt;br /&gt;
 &lt;br /&gt;
Erstelle Named Pipe mit Namen /tmp/roehre. Schreibe &amp;quot;hallo welt&amp;quot; in die Pipe und bleibe&lt;br /&gt;
 xinux@zero:~$ mkfifo /tmp/roehre&lt;br /&gt;
 xinux@zero:~$ echo hallo welt &amp;gt; /tmp/roehre &lt;br /&gt;
&lt;br /&gt;
Gebe Inhalt der Pipe mit cat aus&lt;br /&gt;
 root@zero:~# cat &amp;lt; /tmp/roehre &lt;br /&gt;
 hallo welt&lt;br /&gt;
 root@zero:~# ls -l /tmp/roehre | cut -c 1&lt;br /&gt;
 p&lt;br /&gt;
&lt;br /&gt;
====Sockets====&lt;br /&gt;
Schnittstelle um es lokalen Anwendungen zu ermöglichen, miteinander Netwerkmässig zu kommunizieren.&lt;br /&gt;
&lt;br /&gt;
 root@lydia:~# netstat  -lnxp | tail -1&lt;br /&gt;
  unix  2 [ ACC ] STREAM HÖRT 21951 6646/nm-applet /tmp/orbit-thomas/linc-19f6-0-2b9b81095cede&lt;br /&gt;
&lt;br /&gt;
 root@lydia:~# ls -l /tmp/orbit-thomas/linc-19f6-0-2b9b81095cede  | cut -c 1 &lt;br /&gt;
 s&lt;br /&gt;
&lt;br /&gt;
====Links====&lt;br /&gt;
Bei Links handelt es sich um symbolische Verweise auf andere Dateien&lt;br /&gt;
&lt;br /&gt;
'''Softlink'''&lt;br /&gt;
Ein Softlink ist eine Datei die nur auf den Namen einer anderen Datei verweist. Wenn die Originaldatei gelöscht wird, zeigt &lt;br /&gt;
der Link ins Leere. &lt;br /&gt;
&lt;br /&gt;
 ln -s datei softlink&lt;br /&gt;
&lt;br /&gt;
{| border=1 cellpadding=2&lt;br /&gt;
| Vorteile&lt;br /&gt;
| Symbolische Links können auch auf Verzeichnisse angelegt werden&amp;lt;br&amp;gt;Sie sind partitionsübergreifend&amp;lt;br&amp;gt;Man kann sie auf Dateien anlegen, die noch nicht existieren&lt;br /&gt;
|-&lt;br /&gt;
| Nachteile&lt;br /&gt;
| Wenn das Original gelöscht ist, ist kein Zugriff mehr möglich&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Beispiel&lt;br /&gt;
 root@zero:~# ln -s text verweis&lt;br /&gt;
 root@zero:~# ls -l verweis&lt;br /&gt;
 lrwxrwxrwx 1 root root 4 2009-06-18 15:48 verweis -&amp;gt; text&lt;br /&gt;
&lt;br /&gt;
'''Hardlinks'''&lt;br /&gt;
 ln datei hardlink&lt;br /&gt;
Eigentlich ist jede Datei ein Hardlink. Ein Hardlink ist ein Verzeichniseintrag,&lt;br /&gt;
der auf eine Inode verweist. Beim Erzeugen einer Datei verweist ein Eintrag auf&lt;br /&gt;
eine Inode. Man kann dann weitere Verweise erzeugen. Der Linkcounter wird&lt;br /&gt;
jeweils um 1 erhöht. Beim Löschen einer Datei wird er jeweils um 1 reduziert.&lt;br /&gt;
Wird der Wert 0 erreicht, ist die Datei gelöscht.&lt;br /&gt;
{| border=1 cellpadding=2&lt;br /&gt;
| Vorteile&lt;br /&gt;
|Zugriff auf die Daten, selbst wenn das Orginal gelöscht ist.&lt;br /&gt;
|-&lt;br /&gt;
|Nachteile&lt;br /&gt;
|Man kann keine Hardlinks auf Verzeichnisse anlegen.&lt;br /&gt;
Ist nur innerhalb einer Partion möglich.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Beispiel&lt;br /&gt;
 root@zero:~# touch 1&lt;br /&gt;
 root@zero:~# echo &amp;quot;text&amp;quot; &amp;gt; 1&lt;br /&gt;
 root@zero:~# ln 1 2&lt;br /&gt;
 root@zero:~# more 2&lt;br /&gt;
 text&lt;br /&gt;
 root@zero:~# echo &amp;quot;doch kein text&amp;quot; &amp;gt; 1&lt;br /&gt;
 root@zero:~# more 1&lt;br /&gt;
 doch kein text&lt;br /&gt;
 root@zero:~# more 2&lt;br /&gt;
 doch kein text&lt;br /&gt;
&lt;br /&gt;
Weitere Optionen:&lt;br /&gt;
 -b sichert Dateien, statt sie zu überschreiben &lt;br /&gt;
 -f Überschreibt bestehende, gleichnamige Dateien&lt;br /&gt;
 -i fragt vor dem Überschreiben nach Bestätigung&lt;br /&gt;
 -v ausführliche Meldungen&lt;br /&gt;
Softlink mit dem Namen passwd im Homeverzeichnis angelegt&lt;br /&gt;
 xinux@zero:~$ ln -vs /etc/passwd .&lt;br /&gt;
 „./passwd“ -&amp;gt; „/etc/passwd“&lt;br /&gt;
Softlink mit dem Namen passwd im Homeverzeichnis angelegt(Original exestiert nicht) &lt;br /&gt;
 xinux@zero:~$ ln -vs /etc/hund .&lt;br /&gt;
 „./hund“ -&amp;gt; „/etc/hund“&lt;br /&gt;
Hardlink mit dem Namen hosts im Homeverzeichnis angelegt&lt;br /&gt;
  xinux@zero:~$ ln -v /etc/hosts .&lt;br /&gt;
 „./hosts“ =&amp;gt; „/etc/hosts“&lt;br /&gt;
Auf eine nicht existierende Datei kann kein Hardlink angelegt werden!&lt;br /&gt;
 xinux@zero:~$ ln -v /etc/katze .&lt;br /&gt;
 ln: Zugriff auf „/etc/katze“: No such file or directory&lt;br /&gt;
&lt;br /&gt;
==Shellsonderzeichen==&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot; cellpadding=&amp;quot;2&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
|;&lt;br /&gt;
|Trenne Kommandos&lt;br /&gt;
|-&lt;br /&gt;
|. oder source&lt;br /&gt;
|Ausführen wie in aktueller Shell&lt;br /&gt;
|-&lt;br /&gt;
|#&lt;br /&gt;
|Kommentar&lt;br /&gt;
|-&lt;br /&gt;
|&amp;amp;&lt;br /&gt;
|Programm im Hintergrund starten &lt;br /&gt;
|-&lt;br /&gt;
|&amp;amp;&amp;amp;&lt;br /&gt;
|UND -Ausführung  (wenn links wahr dann führe rechts aus)&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;nowiki&amp;gt;|&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
|STOUT von links wird zu STDIN von rechts &lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;nowiki&amp;gt;||&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
|ODER -Ausführung (wenn links falsch dann führe rechts aus)&lt;br /&gt;
|-&lt;br /&gt;
|*&lt;br /&gt;
|steht für beliebig viel Zeichen auch 0 &lt;br /&gt;
|-&lt;br /&gt;
|?&lt;br /&gt;
|steht für genau ein Zeichen &lt;br /&gt;
|-&lt;br /&gt;
|[abc]&lt;br /&gt;
|steht für eins der Zeichen in [ ] hier a b oder c &lt;br /&gt;
|-&lt;br /&gt;
|[ausdruck] &lt;br /&gt;
|Andere Schreibweis für test &lt;br /&gt;
|-&lt;br /&gt;
|~&lt;br /&gt;
|das Homeverzeichnis&lt;br /&gt;
|-&lt;br /&gt;
|&amp;gt;    und    &amp;gt;&amp;gt;&lt;br /&gt;
|leite in Datei um   &amp;gt;  überschreibe     &amp;gt;&amp;gt; hänge an &lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;&lt;br /&gt;
|lesen aus Datei &lt;br /&gt;
|-&lt;br /&gt;
|2&amp;gt;&amp;amp;1&lt;br /&gt;
|leite STDERR auf STDOUT&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;&amp;lt; ende&lt;br /&gt;
|Lesen aus Datei (Heredokument)&lt;br /&gt;
|-&lt;br /&gt;
|(...)&lt;br /&gt;
|Alles inhalb von ( ) wird als Subshell ausgeführt&lt;br /&gt;
|-&lt;br /&gt;
|{...}&lt;br /&gt;
|Gruppieren von Komandos &lt;br /&gt;
|-&lt;br /&gt;
|{ ,  ,  , }&lt;br /&gt;
|Zeichenketten zusammensetzen &lt;br /&gt;
|-&lt;br /&gt;
|$&lt;br /&gt;
|Inhalt von Variablen ausgeben $SUX&lt;br /&gt;
|-&lt;br /&gt;
|$* oder $@&lt;br /&gt;
|Liste der übergebenen Parameter&lt;br /&gt;
|-&lt;br /&gt;
|$# &lt;br /&gt;
|Anzahl der übergebenen Parameter &lt;br /&gt;
|-&lt;br /&gt;
|$0&lt;br /&gt;
|Name des Shellprogramms &lt;br /&gt;
|-&lt;br /&gt;
|$?&lt;br /&gt;
|Rückgabewert des letzten Kommandos &lt;br /&gt;
|-&lt;br /&gt;
|$!  und  $$&lt;br /&gt;
|PID des  $!  = letzten Hintergrund  -  , $$ = aktuellen Prozess&lt;br /&gt;
|-&lt;br /&gt;
|$1 ..$9&lt;br /&gt;
|Parameter 1 bis 9 &lt;br /&gt;
|-&lt;br /&gt;
|$() oder `  `&lt;br /&gt;
|Kommandosubstition&lt;br /&gt;
|-&lt;br /&gt;
|${ }&lt;br /&gt;
|Funktion zur Manipulation von Zeichenketten &lt;br /&gt;
|-&lt;br /&gt;
|$(( )) oder $[ ]&lt;br /&gt;
|Arithmetische Berechnung &lt;br /&gt;
|-&lt;br /&gt;
|&amp;quot;...&amp;quot;&lt;br /&gt;
|Entwertung der Sonderzeichen ausser $ ' \&lt;br /&gt;
|-&lt;br /&gt;
|'...'&lt;br /&gt;
|Entwertung sämtlicher Sonderzeichen ausser ' selbst&lt;br /&gt;
|-&lt;br /&gt;
|\  &lt;br /&gt;
|Entwertung des folgenden Sonderzeichens &lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==Prozesse==&lt;br /&gt;
===Was ist ein Prozess?===&lt;br /&gt;
Ein Prozess setzt sich aus zwei Teilen zusammen:&lt;br /&gt;
&lt;br /&gt;
1.Programm, das in den Hauptspeicher geladen wurde&lt;br /&gt;
&lt;br /&gt;
2.Prozessumgebung &lt;br /&gt;
&lt;br /&gt;
Unter einem Prozess versteht man ein Programm (binär), das in den Hauptspeicher&lt;br /&gt;
geladen wurde. Also nicht das Program selbst, das auf der Festplatte liegt ist der&lt;br /&gt;
Prozess, sondern es wird erst durch das Laden in den Hauptspeicher dazu.&lt;br /&gt;
Normalerweise liegt ein Programm als ausführbare Datei irgendwo auf der&lt;br /&gt;
Festplatte oder auf Diskette. Ob es sich bei dem Programm um eine binäre Datei&lt;br /&gt;
handelt, kann man mit dem Befehl '' file '' feststellen.&lt;br /&gt;
 &lt;br /&gt;
 root@zero:~# file /bin/mkdir&lt;br /&gt;
 /bin/mkdir: ELF 32-bit LSB executable, Intel 80386, version 1 (SYSV), dynamically linked (uses shared libs), for GNU/Linux 2.6.8, stripped&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Die Datei liegt im Maschinencode vor und kann in den Hauptspeicher geladen&lt;br /&gt;
werden. Sobald dies geschehen ist, kann der Rechner diesen Maschinencode&lt;br /&gt;
abarbeiten (ausführen).&lt;br /&gt;
&lt;br /&gt;
Da aber ein Programm nicht direkt auf die Hardware zugreifen soll, muss es vom&lt;br /&gt;
Betriebsystem kontrolliert werden. Das Betriebssystem liegt logisch gesehen&lt;br /&gt;
zwischen Hardware und Anwendung. Das Betriebssystem ordnet jedem Prozess&lt;br /&gt;
verschiedene Kenndaten zu, um die Prozesse verwalten zu können. Alle&lt;br /&gt;
Kenndaten, die einem Prozess zugeordnet sind, nennt man die&lt;br /&gt;
Prozessumgebung.Wenn man in der Shell ein Kommando eingibt, wird ein Prozess&lt;br /&gt;
kreiert. Natürlich ist die Shell selbst auch ein Prozess. Ein Prozess kann aber&lt;br /&gt;
genauso gut ein Serverprozess (Dienst) sein, z.B. Apache.&lt;br /&gt;
Ein wesentliches Merkmal eines Prozesses ist die Prozesskommunikation. Über im&lt;br /&gt;
Betriebssystem implementierte Methoden ist es möglich, dass verschiedene&lt;br /&gt;
Prozesse Signale und Daten untereinander austauschen können.&lt;br /&gt;
Dadurch wird auch dem Benutzer ermöglicht, einem Prozeß bestimmte Signale zu&lt;br /&gt;
senden bzw. auf den Status eines Prozesses Einfluss zu nehmen.&lt;br /&gt;
&lt;br /&gt;
===Prozesstabelle (Anzeige mit ps)===&lt;br /&gt;
Da zu jedem Prozess Kenndaten geführt werden, müssen diese auch irgendwo&lt;br /&gt;
festgehalten werden. Das geschieht in der sogenannten Prozesstabelle.&lt;br /&gt;
&lt;br /&gt;
Kenndaten der Prozesse (Auswahl):&lt;br /&gt;
* F Flags (z.B. ausgelagert; Systemprozess; Trace,...)&lt;br /&gt;
* UID Nutzer, mit dessen Rechten der Prozess ausgeführt wird&lt;br /&gt;
* PID Prozess - ID. Diese Nummer gibt eine eindeutige Prozess - Nummer&lt;br /&gt;
an. Sie wird vom System automatisch beim Starten des Prozesses&lt;br /&gt;
vergeben und ist für die Laufzeit eindeutig.&lt;br /&gt;
* PPID Prozessnumer der Eltern-Prozesses&lt;br /&gt;
* PRI Priorität eines Prozesses; je niedriger der Wert ist, desto besser&lt;br /&gt;
* NI ist der Nicewert des Prozesses; Nice erniedrigt den Grundwert&lt;br /&gt;
der Priorität des Prozesses und gibt damit Prozessorzeit für andere&lt;br /&gt;
Prozesse frei.&lt;br /&gt;
* SIZE Speichergröße des Prozesses inklusive Stack (eine Art Zwischenspeicher)&lt;br /&gt;
* RSS Verbrauch an physischen Speicher&lt;br /&gt;
* WCHAN ist der Name der Kernerlfunktion, in der der Prozess schläft&lt;br /&gt;
* STAT Status des Prozesses&lt;br /&gt;
R läuft       S schlafend     D nicht störbarer Schlaf&lt;br /&gt;
T angehalten  Z Zombie        W der Prozess belegt keine Seiten&lt;br /&gt;
* TIME Bisland benötigte Prozessorzeit&lt;br /&gt;
* SIZE ist die Größe von Text, Daten und Stack&lt;br /&gt;
* TTY die Nummer des kontrollierenden Teminal; wenn hier ein ? steht,&lt;br /&gt;
handelt es sich um einen Dämon oder Serverprozess.&lt;br /&gt;
* COMMAND Angabe des Prozesses selbst. Dies ist meist der Programmname.&lt;br /&gt;
&lt;br /&gt;
Weiteres&lt;br /&gt;
* GID Gruppe, unter der der Prozess läuft&lt;br /&gt;
* Verweis auf das aktuellen Arbeitsverzeichnis&lt;br /&gt;
* Um mit relativen Pfadangaben arbeiten zu können braucht man diesen Eintrag&lt;br /&gt;
* Tabelle mit Verweisen auf aktuell geöffnete Dateien&lt;br /&gt;
* 3 sind automatisch geöffnet Standardeingabe, Standardausgabe und&lt;br /&gt;
Standardfehlerkanal&lt;br /&gt;
&lt;br /&gt;
Beispiel&lt;br /&gt;
 root@zero:~# ps -l&lt;br /&gt;
 F S   UID   PID  PPID  C PRI  NI ADDR SZ WCHAN  TTY          TIME CMD&lt;br /&gt;
 4 R     0 18639 18631  0  80   0 -  1080 -      pts/0    00:00:00 bash&lt;br /&gt;
 0 R     0 25904 18639  0  80   0 -   635 -      pts/0    00:00:00 ps&lt;br /&gt;
&lt;br /&gt;
===Eltern und Kinder===&lt;br /&gt;
Jeder Prozess kann weitere Prozesse erzeugen. Die erzeugten Prozesse bezeichnet&lt;br /&gt;
man als Kindprozesse. Jeder Kindprozess weiß anhand der PID, woher er stammt.&lt;br /&gt;
&lt;br /&gt;
Alle Prozesse sind von einem anderen Prozess gestartet worden, mit Ausnahme&lt;br /&gt;
des Pseudoprozesses (noch im Kernel beim Starten erzeugter Prozess). Dieser hat&lt;br /&gt;
die Prozessnummer 0. Er hat die Aufgabe, den Init Prozess ( /sbin/init die Nummer&lt;br /&gt;
1) zu starten, der in System V alle anderen Prozesse direkt oder über seine Kind-&lt;br /&gt;
prozesse startet. (init wird konfiguriert durch die /etc/inittab)&lt;br /&gt;
&lt;br /&gt;
Es gibt zwei Arten wie ein Prozess gestartet werden kann:&lt;br /&gt;
&lt;br /&gt;
# Fork und Exec: Prozessumgebung wird dupliziert, der neue Prozess bekommt eine eigene neue PID&lt;br /&gt;
# Exec: Alter Prozess wird durch neuen Prozess überladen (geht mit dem shell-buildin exec)&lt;br /&gt;
&lt;br /&gt;
'''Rechte auf Objekte UID GID'''&lt;br /&gt;
Ob ein Prozess auf eine Datei zugreifen kann, entscheidet der Kernel anhand der&lt;br /&gt;
Zugriffssrechte, die auf der Datei gesetzt sind. Er checkt anhand der UID und GID&lt;br /&gt;
des Prozesses, ob es erlaubt ist. Mit dieser Technik wird letztendlich geprüft, was&lt;br /&gt;
ein User darf, und was nicht.&lt;br /&gt;
&lt;br /&gt;
===Rechenzeit und Priorität===&lt;br /&gt;
Da auch bei Prozessen eine Gerechtigkeit herschen muss, muss eine Instanz&lt;br /&gt;
darüber entscheiden wie lange ein Prozess Rechenzeit verbrauchen darf.&lt;br /&gt;
Folgende Kenndaten werden dazu benötigt&lt;br /&gt;
* clocktick = Zeiteinheit&lt;br /&gt;
* n = Faktor über den Kernel einstellbar&lt;br /&gt;
* slice = n &amp;lt;nowiki&amp;gt;*&amp;lt;/nowiki&amp;gt; clocktick&lt;br /&gt;
* agingtime = weitere Zeiteinheit über den Kernel einstellbar&lt;br /&gt;
&lt;br /&gt;
Es wird davon ausgegangen das der Prozess mit der niedrigsten Priorität gerade&lt;br /&gt;
rechnet. Pro clocktick erhöht sich die Priorität dieses Prozesses um eins.&lt;br /&gt;
&lt;br /&gt;
Jetzt können 3 Situationen eintreten die alle dazu führen das der Scheduler&lt;br /&gt;
aufgerufen wird.&lt;br /&gt;
&lt;br /&gt;
# Prozess blockiert wegen einer Ausgabe oder Eingabe.&lt;br /&gt;
# Gibt Rechenzeit freiwillig ab.&lt;br /&gt;
# Der Slice endet.&lt;br /&gt;
&lt;br /&gt;
Der Aufruf des Schedulers bewirkt das der Prozess mit der niedrigsten Priorität&lt;br /&gt;
gescheduled wird, er also nun rechnen darf. Nach Ablauf der agingtime werden&lt;br /&gt;
nun die Prozesse &amp;quot;gealtert&amp;quot;. Das geschieht nach folgender Formel&lt;br /&gt;
&lt;br /&gt;
Neue Priorität = Alte Priorität / 2 + Nicewert&lt;br /&gt;
&lt;br /&gt;
Der User hat die Möglichkeit, über den sogenannten Nicewert den Grundwert für&lt;br /&gt;
einen Prozess zu senken. Der Prozess braucht dann länger für seine Abarbeitung.&lt;br /&gt;
Er verhält sich somit netter zu den anderen Prozessen. Normale User können nur&lt;br /&gt;
netter werden, der Systemverwalter kann auch nicht netter (gemeiner) werden. Der&lt;br /&gt;
Bereich liegt zwischen 19 (sehr nett) bis 0 (weniger nett) für die User, und 19 bis&lt;br /&gt;
-20 für root.&lt;br /&gt;
&lt;br /&gt;
[[Image:pri.png]]&lt;br /&gt;
&lt;br /&gt;
'''Signale'''&lt;br /&gt;
&lt;br /&gt;
Mit den Kommando kill und killall kann man Prozessen Signale schicken&lt;br /&gt;
&lt;br /&gt;
 kill -Signalnummer PID &lt;br /&gt;
&lt;br /&gt;
Signalnummer&lt;br /&gt;
{| border=1 cellpadding=2&lt;br /&gt;
!Signalname&lt;br /&gt;
!Wert&lt;br /&gt;
!Aktion&lt;br /&gt;
|-&lt;br /&gt;
|SIGHUP&lt;br /&gt;
|1&lt;br /&gt;
|Neuinitialisierung eines Prozesses&lt;br /&gt;
|-&lt;br /&gt;
|SIGINT&lt;br /&gt;
|2&lt;br /&gt;
|Interrupt-Signal von der Tastatur (STRG+c)&lt;br /&gt;
|-&lt;br /&gt;
|SIGQUIT&lt;br /&gt;
|3&lt;br /&gt;
|Interrupt-Signal von der Tastatur (STRG+c) mit Dump&lt;br /&gt;
|-&lt;br /&gt;
|SIGKILL&lt;br /&gt;
|9&lt;br /&gt;
|unwiderrufliches Beendigungssignal (Töten)&lt;br /&gt;
|-&lt;br /&gt;
|SIGSEGV&lt;br /&gt;
|11&lt;br /&gt;
|Ungültige Speicherreferenz (bedeutet oft auf defekten Speicher)&lt;br /&gt;
|-&lt;br /&gt;
|SIGTERM &lt;br /&gt;
|15&lt;br /&gt;
|Beendigungssignal (geöffnete Dateien werden geschlossen)&lt;br /&gt;
|-&lt;br /&gt;
|SIGCONT &lt;br /&gt;
|18&lt;br /&gt;
|Weiterfahren, wenn gestoppt&lt;br /&gt;
|-&lt;br /&gt;
|SIGSTOP&lt;br /&gt;
|19&lt;br /&gt;
|Prozessstop&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Beispiel&lt;br /&gt;
 root@zero:~# kill -1 7562&lt;br /&gt;
&lt;br /&gt;
===Programme im Zusammenhang mit Prozessen===&lt;br /&gt;
* ps: Zeigt die Prozesse mit ihrem Status an&lt;br /&gt;
 root@zero:~# ps&lt;br /&gt;
  PID TTY          TIME CMD&lt;br /&gt;
 14134 pts/0    00:00:00 bash&lt;br /&gt;
 14149 pts/0    00:00:00 ps&lt;br /&gt;
&lt;br /&gt;
 root@zero:~# ps -elf | grep apache&lt;br /&gt;
 1 S root      5738     1  0  80   0 -  5461 select Jun16 ?        00:00:00 /usr/sbin/apache2 -k start&lt;br /&gt;
 5 S www-data  5739  5738  0  80   0 -  5581 inet_c Jun16 ?        00:00:00 /usr/sbin/apache2 -k start&lt;br /&gt;
 5 S www-data  5742  5738  0  80   0 -  5461 inet_c Jun16 ?        00:00:00 /usr/sbin/apache2 -k start&lt;br /&gt;
 5 S www-data  5743  5738  0  80   0 -  5461 inet_c Jun16 ?        00:00:00 /usr/sbin/apache2 -k start&lt;br /&gt;
 5 S www-data  5745  5738  0  80   0 -  5461 inet_c Jun16 ?        00:00:00 /usr/sbin/apache2 -k start&lt;br /&gt;
 5 S www-data  5746  5738  0  80   0 -  5461 inet_c Jun16 ?        00:00:00 /usr/sbin/apache2 -k start&lt;br /&gt;
 0 S root     14153 14134  0  80   0 -   837 pipe_w 16:59 pts/0    00:00:00 grep apache&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* nice: Lässt ein Programm mit verändertem Grundwert der Priorität laufen&lt;br /&gt;
 root@zero:~# nice&lt;br /&gt;
 0&lt;br /&gt;
 root@zero:~# nice -n 9 bash&lt;br /&gt;
 root@zero:~# nice&lt;br /&gt;
 9&lt;br /&gt;
 root@zero:~#&lt;br /&gt;
&lt;br /&gt;
* renice: Ändert den Grundwert der Priorität eines laufenden Prozesses&lt;br /&gt;
 root@zero:~# renice 10 5742&lt;br /&gt;
 5742: Alte Priorität: 0, neue Priorität: 10&lt;br /&gt;
&lt;br /&gt;
* top: Zeigt die Prozesse mit ihrem Status an (Abbrechen mit q)&lt;br /&gt;
 root@zero:~# top&lt;br /&gt;
&lt;br /&gt;
* pstree: Zeigt die Prozesse als Baumstruktur&lt;br /&gt;
 root@zero:~# pstree&lt;br /&gt;
 init─┬─NetworkManager&lt;br /&gt;
      ├─acpid&lt;br /&gt;
      ├─apache2───5*[apache2]&lt;br /&gt;
      ├─atd&lt;br /&gt;
      ├─bluetoothd&lt;br /&gt;
      ├─console-kit-dae───63*[{console-kit-dae}]&lt;br /&gt;
      ├─cron&lt;br /&gt;
      ├─cupsd&lt;br /&gt;
      ├─dbus-daemon&lt;br /&gt;
      ├─dd&lt;br /&gt;
      ├─gdm───gdm─┬─Xorg&lt;br /&gt;
      │           └─gdmgreeter&lt;br /&gt;
      ├─6*[getty]&lt;br /&gt;
      ├─hald───hald-runner─┬─hald-addon-acpi&lt;br /&gt;
      │                    ├─hald-addon-inpu&lt;br /&gt;
      │                    └─2*[hald-addon-stor]&lt;br /&gt;
      ├─klogd&lt;br /&gt;
      ├─nm-system-setti&lt;br /&gt;
      ├─nmbd&lt;br /&gt;
      ├─nscd───11*[{nscd}]&lt;br /&gt;
      ├─portmap&lt;br /&gt;
      ├─rpc.statd&lt;br /&gt;
      ├─slapd───2*[{slapd}]&lt;br /&gt;
      ├─smbd───smbd&lt;br /&gt;
      ├─sshd───sshd───bash───bash───pstree&lt;br /&gt;
      ├─syslogd&lt;br /&gt;
      ├─system-tools-ba&lt;br /&gt;
      ├─udevd&lt;br /&gt;
      ├─winbindd─┬─winbindd───winbindd&lt;br /&gt;
      │          └─3*[winbindd]&lt;br /&gt;
      └─wpa_supplicant&lt;br /&gt;
&lt;br /&gt;
===Jobs===&lt;br /&gt;
Unter einem Job versteht man ein Programm, welches man von der Shell gelöst&lt;br /&gt;
hat. D. h. man kann ganz normal weiter arbeiten und der Job verrichtet seinen&lt;br /&gt;
Dienst im Hintergrund. Man kann jederzeit zu diesem Job wieder Kontakt&lt;br /&gt;
aufnehmen.&lt;br /&gt;
&lt;br /&gt;
Ein Job kann auf 2 Arten gestarten werden:&lt;br /&gt;
&lt;br /&gt;
# Durch Anhängen des &amp;amp; Zeichens beim Programmstart&lt;br /&gt;
 root@zero:~# tail -f /var/log/messages &amp;amp;&lt;br /&gt;
 Jun 19 06:59:31 zero -- MARK --&lt;br /&gt;
 Jun 19 07:19:31 zero -- MARK --&lt;br /&gt;
 Jun 19 07:39:32 zero -- MARK --&lt;br /&gt;
 Jun 19 07:44:57 zero syslogd 1.5.0#5ubuntu3: restart.&lt;br /&gt;
 Jun 19 07:59:32 zero -- MARK --&lt;br /&gt;
 Jun 19 08:19:32 zero -- MARK --&lt;br /&gt;
 Jun 19 08:39:32 zero -- MARK --&lt;br /&gt;
 Jun 19 08:59:32 zero -- MARK --&lt;br /&gt;
 Jun 19 09:19:33 zero -- MARK --&lt;br /&gt;
 Jun 19 09:39:33 zero -- MARK --&lt;br /&gt;
 [3] 27421&lt;br /&gt;
&lt;br /&gt;
# Durch Stoppen des Prozesses durch Drücken von Strg-Z und in den Hintergrund schicken mit %n (n ist die Jobnummer)&lt;br /&gt;
 root@zero:~# watch cat /proc/cpuinfo&lt;br /&gt;
 Strg-Z&lt;br /&gt;
 [4]+  Stopped                 watch cat /proc/cpuinfo&lt;br /&gt;
 root@zero:~# bg %4&lt;br /&gt;
 [4]+ watch cat /proc/cpuinfo &amp;amp;&lt;br /&gt;
&lt;br /&gt;
Anweisungen im Zusammenhang mit Jobs (n ist die Jobnummer)&lt;br /&gt;
* bg %n : Einen Job in den Hintergrund stellen (wie oben)&lt;br /&gt;
* fg %n : Einen Job in den Vordergrund holen&lt;br /&gt;
 root@zero:~# fg %4&lt;br /&gt;
 watch cat /proc/cpuinfo&lt;br /&gt;
&lt;br /&gt;
* jobs : Aktive Jobs ausgeben&lt;br /&gt;
&lt;br /&gt;
 root@zero:~# jobs&lt;br /&gt;
 [1]   Running                 tail -f /var/log/syslog &amp;amp;&lt;br /&gt;
 [2]   Running                 tail -f /var/log/syslog &amp;amp;&lt;br /&gt;
 [3]-  Running                 tail -f /var/log/messages &amp;amp;&lt;br /&gt;
 [4]+  Stopped                 watch cat /proc/cpuinfo&lt;br /&gt;
&lt;br /&gt;
* Strg-Z : Einen Vordergrund-Job vorübergehend anhalten&lt;br /&gt;
* kill -STOP %n : Unterbricht Job im Hintergrund&lt;br /&gt;
 root@zero:~# kill -STOP %1&lt;br /&gt;
 root@zero:~# jobs&lt;br /&gt;
 [1]+  '''Stopped'''                 tail -f /var/log/syslog&lt;br /&gt;
 [2]   Running                 tail -f /var/log/syslog &amp;amp;&lt;br /&gt;
 [3]   Running                 tail -f /var/log/messages &amp;amp;&lt;br /&gt;
 [4]-  Stopped                 watch cat /proc/cpuinfo&lt;br /&gt;
* kill -CONT %n : Setzt den unterbrochenen Job im Hintergrund fort&lt;br /&gt;
root@zero:~# kill -CONT %1&lt;br /&gt;
root@zero:~# jobs&lt;br /&gt;
 [1]+  '''Running'''                 tail -f /var/log/syslog &amp;amp;&lt;br /&gt;
 [2]   Running                 tail -f /var/log/syslog &amp;amp;&lt;br /&gt;
 [3]   Running                 tail -f /var/log/messages &amp;amp;&lt;br /&gt;
 [4]-  Stopped                 watch cat /proc/cpuinfo&lt;br /&gt;
* kill -KILL %n : Tötet Job im Hintergrund&lt;br /&gt;
 root@zero:~# kill -KILL %1&lt;br /&gt;
 root@zero:~# jobs&lt;br /&gt;
 [1]+  '''Killed'''                  tail -f /var/log/syslog&lt;br /&gt;
 [2]   Running                 tail -f /var/log/syslog &amp;amp;&lt;br /&gt;
 [3]   Running                 tail -f /var/log/messages &amp;amp;&lt;br /&gt;
 [4]-  Stopped                 watch cat /proc/cpuinfo&lt;br /&gt;
 root@zero:~# jobs&lt;br /&gt;
 [2]   Running                 tail -f /var/log/syslog &amp;amp;&lt;br /&gt;
 [3]-  Running                 tail -f /var/log/messages &amp;amp;&lt;br /&gt;
 [4]+  Stopped                 watch cat /proc/cpuinfo&lt;br /&gt;
&lt;br /&gt;
Bedingungen, die zu Jobausführung eingehalten werden sollen:&lt;br /&gt;
* Der Job soll nicht auf den Bildschirm schreiben (Standardausgabe +Standardfehlerkanal).&lt;br /&gt;
* Er soll keine Eingaben vom Benutzer erwarten.&lt;br /&gt;
&lt;br /&gt;
==Suchen von Dateien==&lt;br /&gt;
===find===&lt;br /&gt;
 find ab_wo_wird_gesucht was_wird_gesucht aktion&lt;br /&gt;
 find [Pfad] [Bedingung] [Aktion]&lt;br /&gt;
&lt;br /&gt;
====Nach Namen====&lt;br /&gt;
 find [Pfad] '''-name''' [Name]&lt;br /&gt;
 &lt;br /&gt;
Finde alle Dateien mit Namen test ab dem Verzeichnis /home und gebe diese Zeilenweise aus&lt;br /&gt;
 root@zero:~# find /home -name test -print&lt;br /&gt;
 /home/xinux/test&lt;br /&gt;
 /home/test&lt;br /&gt;
&lt;br /&gt;
Wie oben, jedoch mit Namensanfang test&lt;br /&gt;
 root@zero:/home/xinux# find /home -name 'test*'&lt;br /&gt;
 /home/xinux/testdatei&lt;br /&gt;
 /home/xinux/test&lt;br /&gt;
 /home/test&lt;br /&gt;
&lt;br /&gt;
====Nach Benutzer(Eigentümer)====&lt;br /&gt;
 root@zero:/tmp# find /tmp/ '''-user''' xinux&lt;br /&gt;
 /tmp/datei&lt;br /&gt;
&lt;br /&gt;
====Nach Gruppe====&lt;br /&gt;
 root@zero:/tmp# find /tmp/ '''-group''' hacker&lt;br /&gt;
 /tmp/datei3&lt;br /&gt;
 /tmp/datei2&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
====Nach Typ====&lt;br /&gt;
Es wird nach Dateien anhand Ihrer Art gesucht:&lt;br /&gt;
 find [Pfad] '''-type''' [Typ] &lt;br /&gt;
Typ:&lt;br /&gt;
* f: Normale Dateien&lt;br /&gt;
 root@zero:~# find /tmp/ -type f&lt;br /&gt;
 /tmp/mbr.img&lt;br /&gt;
 /tmp/datei&lt;br /&gt;
 /tmp/zeugs&lt;br /&gt;
 /tmp/.X0-lock&lt;br /&gt;
* d: Verzeichnisse&lt;br /&gt;
 root@zero:~# find /var/log -type d&lt;br /&gt;
 /var/log&lt;br /&gt;
 /var/log/apache2&lt;br /&gt;
 /var/log/unattended-upgrades&lt;br /&gt;
 /var/log/apparmor&lt;br /&gt;
 /var/log/ConsoleKit&lt;br /&gt;
 /var/log/dist-upgrade&lt;br /&gt;
 /var/log/dist-upgrade/20090526-1052&lt;br /&gt;
 /var/log/cups&lt;br /&gt;
 /var/log/apt&lt;br /&gt;
 /var/log/fsck&lt;br /&gt;
 /var/log/samba&lt;br /&gt;
 /var/log/samba/cores&lt;br /&gt;
 /var/log/samba/cores/smbd&lt;br /&gt;
 /var/log/samba/cores/nmbd&lt;br /&gt;
 /var/log/samba/cores/winbindd&lt;br /&gt;
 /var/log/installer&lt;br /&gt;
 /var/log/gdm&lt;br /&gt;
 /var/log/news&lt;br /&gt;
* c: Char Devices (Zeichenorientierte Gerätedatei)&lt;br /&gt;
 root@zero:~# find / -type c&lt;br /&gt;
 /lib/udev/devices/kmem&lt;br /&gt;
 /lib/udev/devices/null&lt;br /&gt;
 /lib/udev/devices/console&lt;br /&gt;
 /lib/udev/devices/ppp&lt;br /&gt;
 /lib/udev/devices/net/tun&lt;br /&gt;
* b: Block Devices (Blockorientierte Gerätedatei)&lt;br /&gt;
* p: Benannte Pipe&lt;br /&gt;
* l: Links&lt;br /&gt;
* s: Sockets&lt;br /&gt;
&lt;br /&gt;
====Nach Modifikation====&lt;br /&gt;
Listet alle Dateien in /etc auf, die innerhalb von zwei Tagen modifiziert wurden&lt;br /&gt;
 root@zero:/var/log# find /etc/ -mtime 2 -print&lt;br /&gt;
 /etc/apache2&lt;br /&gt;
 /etc/apache2/mods-available&lt;br /&gt;
 /etc/apache2/conf.d&lt;br /&gt;
 /etc/apache2/sites-available&lt;br /&gt;
 /etc/bash_completion.d&lt;br /&gt;
 /etc/blkid.tab.old&lt;br /&gt;
 /etc/firefox-3.0/profile&lt;br /&gt;
 /etc/firefox-3.0/profile/chrome&lt;br /&gt;
 /etc/firefox-3.0/pref&lt;br /&gt;
 /etc/profile.d&lt;br /&gt;
 /etc/ufw/applications.d&lt;br /&gt;
 /etc/logrotate.d&lt;br /&gt;
 /etc/xulrunner-1.9&lt;br /&gt;
 /etc/blkid.tab&lt;br /&gt;
 /etc/cron.daily&lt;br /&gt;
 /etc/alternatives&lt;br /&gt;
 /etc/alternatives/x-www-browser&lt;br /&gt;
 /etc/alternatives/xulrunner&lt;br /&gt;
 /etc/gre.d&lt;br /&gt;
 /etc/hal/fdi/policy&lt;br /&gt;
 /etc/dbus-1/system.d&lt;br /&gt;
 /etc/udev/rules.d&lt;br /&gt;
&lt;br /&gt;
====Nach Größe====&lt;br /&gt;
Finde Dateien in /tmp, die größer als 100 MByte sind&lt;br /&gt;
 root@zero:/tmp# find /tmp/ -size +100M&lt;br /&gt;
 /tmp/datei&lt;br /&gt;
&lt;br /&gt;
Finde Dateien in /tmp, die kleiner als 100 KByte sind&lt;br /&gt;
 root@zero:/tmp# find /tmp/ -size -100k&lt;br /&gt;
 /tmp/&lt;br /&gt;
 /tmp/datei3&lt;br /&gt;
 /tmp/backup &lt;br /&gt;
 /tmp/datei2&lt;br /&gt;
 /tmp/.winbindd &lt;br /&gt;
 /tmp/.winbindd/pipe&lt;br /&gt;
 /tmp/mbr.img&lt;br /&gt;
 /tmp/zeugs&lt;br /&gt;
 /tmp/.ICE-unix&lt;br /&gt;
 /tmp/.X0-lock&lt;br /&gt;
 /tmp/datei1&lt;br /&gt;
 /tmp/.X11-unix&lt;br /&gt;
 /tmp/.X11-unix/X0&lt;br /&gt;
 /tmp/pulse-PKdhtXMmr18n&lt;br /&gt;
&lt;br /&gt;
====Nach Berechtigungen====&lt;br /&gt;
Finde Dateien in Home mit der Berechtigung 777 (-rwxrwxrwx)&lt;br /&gt;
 root@zero:/var# find /home/ -perm 777&lt;br /&gt;
 /home/samba&lt;br /&gt;
 /home/xinux/Examples&lt;br /&gt;
 /home/xinux/.pulse/1f0763ee4cf4c7e1d3c07fd149dda37b:runtime&lt;br /&gt;
 /home/test/Examples&lt;br /&gt;
&lt;br /&gt;
===locate===&lt;br /&gt;
Locate arbeitet über einen Index, der erstellt und aktualisiert werden muss. Aus diesem Grund kann locate teilweise nicht &lt;br /&gt;
akutell sein. Es ist immer schneller als find und es durchsucht immer das ganze Dateisystem. &lt;br /&gt;
 locate [Dateiname]&lt;br /&gt;
 &lt;br /&gt;
Lokalisiere die Datei wvdial.conf. Anmerkung: Der Stern wird beim Suchen automatisch hinzugefügt. Entspricht also&lt;br /&gt;
wvidal.conf*&lt;br /&gt;
 root@zero:~# locate wvdial.conf&lt;br /&gt;
 /etc/wvdial.conf&lt;br /&gt;
 /usr/share/man/man5/wvdial.conf.5.gz&lt;br /&gt;
 /var/lib/dpkg/info/wvdial.conffiles&lt;br /&gt;
 /var/lib/dpkg/info/wvdial.config&lt;br /&gt;
&lt;br /&gt;
Lokalisiere die Datei wvdial.conf und nur diese&lt;br /&gt;
 root@zero:~# locate -b '\wvdial.conf'&lt;br /&gt;
 /etc/wvdial.conf&lt;br /&gt;
&lt;br /&gt;
Aktualisieren des Indexes&lt;br /&gt;
 root@zero:~# updatedb&lt;br /&gt;
&lt;br /&gt;
==Wie wird ein Kommando lokalisiert==&lt;br /&gt;
Wenn die Shell alle Ersetzungen in der Kommandozeile vorgenommen und alle Umleitungen vorbereitet hat, ist der Zeitpunkt &lt;br /&gt;
gekommen, auf den der Anwender die ganze Zeit gewartet hat. Die Shell versucht das Kommando auszuführen. Dazu muss sie &lt;br /&gt;
es aber erst lokalisieren. Das erste passende Kommando wird ausgeführt.&lt;br /&gt;
&lt;br /&gt;
Als Kommandoname wird immer das erste Wort eines einfachen Kommandos erkannt. Ein Kommandoname kann mit Pfadnamen in &lt;br /&gt;
einem Verzeichnis (absolut oder relativ) angegeben werden. Die Shell erkennt dies an (mindestens) einem Slash `/' &lt;br /&gt;
im Kommandonamen. Wenn kein Verzeichnis angegeben ist, versucht die Shell selbst, das Kommando zu finden. Dazu wird &lt;br /&gt;
der Kommandoname zuerst in der Hashtabelle gesucht, dann wird er mit den Synonymen, mit den Scriptfunktionen und &lt;br /&gt;
schließlich mit den Shellfunktionen verglichen. &lt;br /&gt;
&lt;br /&gt;
Wird auf diese Weise kein Programm dieses Namens gefunden, werden alle in der PATH-Umgebungsvariablen aufgeführten &lt;br /&gt;
Verzeichnisse nach einer ausführbaren Datei dieses Namens durchsucht. Wird auch hier kein passendes Kommando gefunden, &lt;br /&gt;
gibt die Shell eine Fehlermeldung aus.&lt;br /&gt;
&lt;br /&gt;
===which und type===&lt;br /&gt;
====which====&lt;br /&gt;
which gibt die vollen Pfadnamen der Dateien aus, die bei Benutzung des angegebenen Befehls ausgeführt werden würden.&lt;br /&gt;
&lt;br /&gt;
 which [-a] Dateiname &lt;br /&gt;
&lt;br /&gt;
Optionen:&lt;br /&gt;
&lt;br /&gt;
* -a : Alle Treffer ausgeben, nicht nur den ersten&lt;br /&gt;
* --skip-dot : Verzeichnisse, die mit einem Punkt beginnen, auslassen&lt;br /&gt;
&lt;br /&gt;
Beispiel&lt;br /&gt;
 root@zero:~# which startx&lt;br /&gt;
 /usr/bin/startx&lt;br /&gt;
&lt;br /&gt;
====type====&lt;br /&gt;
Anzeigen der absoluten Pfadnamen von Befehlen, und ob sich diese Befehle in der Hash-Tabelle der aktuellen&lt;br /&gt;
Shell befinden.&lt;br /&gt;
&lt;br /&gt;
 type [Optionen] Befehle&lt;br /&gt;
&lt;br /&gt;
Beispiel&lt;br /&gt;
 root@zero:~# type ls&lt;br /&gt;
 ls is aliased to `ls --color=auto'&lt;br /&gt;
&lt;br /&gt;
Optionen:&lt;br /&gt;
&lt;br /&gt;
* -a : Alle vorkommenden Befehle werden ausgegeben, nicht nur das, welches aufgerufen werden würde&lt;br /&gt;
 root@zero:~# type '''-a''' ls&lt;br /&gt;
 ls is aliased to `ls --color=auto'&lt;br /&gt;
 ls is /bin/ls&lt;br /&gt;
&lt;br /&gt;
* -p : Anzeigen des Eintrags von Befehl in der Hash-Tabelle. Dieser Wert kann sich vom ersten Auftreten des Befehls in PATH&lt;br /&gt;
unterscheiden&lt;br /&gt;
 root@zero:~# type '''-p''' apache2&lt;br /&gt;
 /usr/sbin/apache2&lt;br /&gt;
&lt;br /&gt;
* -t : Anzeigen, ob Befehl ein Aliasname, ein Schlüsselwort, eine Funktion, ein eingebauter Befehl oder eine Datei ist&lt;br /&gt;
 root@zero:~# type '''-t''' apache2&lt;br /&gt;
 file&lt;/div&gt;</summary>
		<author><name>192.168.178.46</name></author>
	</entry>
	<entry>
		<id>https://www.xinux.net/index.php?title=Linux_Grundlagen&amp;diff=90</id>
		<title>Linux Grundlagen</title>
		<link rel="alternate" type="text/html" href="https://www.xinux.net/index.php?title=Linux_Grundlagen&amp;diff=90"/>
		<updated>2009-07-07T11:04:18Z</updated>

		<summary type="html">&lt;p&gt;192.168.178.46: /* Was ist ein Prozess? */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Einführung==&lt;br /&gt;
===Geschichte Unix===&lt;br /&gt;
====1969====&lt;br /&gt;
Am Anfang von Linux steht Multics, ein von Bell Laboratories geschaffenes &amp;quot;Betriebssystem&amp;quot;, &lt;br /&gt;
das noch mit Lochkarten arbeitete. Multics wird mit Unterstützung von AT&amp;amp;T und Western &lt;br /&gt;
Electric unter Mitarbeit von Ken Thompson und Dennis Ritchie weiterentwickelt. Obwohl sich &lt;br /&gt;
Bell Laboratories bald zurückzieht, gibt Thompson das Projekt nicht auf.  Zum Entwicklerteam &lt;br /&gt;
gehören auch Rudd Canaday und Brian Kernighan. Letzterer gibt 1970 dem Betriebssystem den Namen UNIX. &lt;br /&gt;
Thompson definiert 7 Richtlinien für UNIX:&lt;br /&gt;
 &lt;br /&gt;
# Hierarchische Anordnung der Dateisysteme&lt;br /&gt;
# Die Ausgabe von Daten an die Peripherie(-geräte) und Dateien soll gleich sein.&lt;br /&gt;
# Prozesse und Programme sollen miteinander kommunizieren.&lt;br /&gt;
# Multitasking (voneinander getrennte Prozesse)&lt;br /&gt;
# Persönliche Shell's&lt;br /&gt;
# Der Compiler soll für viele Programmiersprachen tauglich sein.&lt;br /&gt;
# Portabilität&lt;br /&gt;
&lt;br /&gt;
====1971====&lt;br /&gt;
Bis 1971 ist das für eine DEC PDP-7 geschriebene Unix als Version 1 auf eine PDP-11 portiert. Bis&lt;br /&gt;
zur Version 4 entwickelt Ritchie die Programmier- (Hoch-) Sprache C. Das in Assembler geschriebene&lt;br /&gt;
Unix wird fast völlig nach C übersetzt, wodurch zum erstenmal die geforderte Hardware-Unabhängigkeit&lt;br /&gt;
des Betriebssystems realisiert werden kann.&lt;br /&gt;
&lt;br /&gt;
====1975====&lt;br /&gt;
Da AT&amp;amp;T aufgrund vertraglicher Bindungen mit der US-Bundesregierung Unix nicht kommerziell vermarkten darf, stellt sie den Source Code für ein paar hundert Dollar den Universitäten, Lehr- und Forschungsanstalten zur Verfügung. Dies führt zu einer sehr dynamischen Entwicklung von Unix. 1975 wird die Version 6 als erstes UNIX-System veröffentlicht, die darauffolgende Version 7 wird sehr erfolgreich. Da es keine Standardisierung gibt, entwickeln bald verschiedenste Firmen ihr eigenes UNIX. Ab 1984 wird AT&amp;amp;T per Gerichtsbeschluss erlaubt, Unix zu vermarkten. AT&amp;amp;T verkauft sein Unix V und beginnt, sich um einen internationalen Standard von UNIX zu bemühen. &lt;br /&gt;
&lt;br /&gt;
====1984====&lt;br /&gt;
Durch Richard Stallman wird die Free Software Foundation (FSF) gegründet. Diese initiiert ein Projekt namens GNU (GNU ist Not Unix), welches das Ziel verfolgt, ein freies UNIX System zu schaffen. &lt;br /&gt;
&lt;br /&gt;
====1987====&lt;br /&gt;
AT&amp;amp;T verbietet die Verwendung des Unix Quellcodes an den Universitäten. Während dieser Zeit ist Andrew (Andy) Tannenbaum Professor an der Freien Universität von Amsterdam und entwickelt Minix. Minix ist ein kostengünstiges Lehrbetriebssystem und kommt ohne jeglichen AT&amp;amp;T Code aus, obwohl es die gleiche Funktionalität wie Unix 7 bietet. Im Usenet unter comp.os.minix entsteht eine Minix-Gemeinde, die den Minix Kernel und die Anwendungen rundherum programmiert und verbessert.&lt;br /&gt;
&lt;br /&gt;
====1991====&lt;br /&gt;
Linus Torvalds hat als Student für Computerwissenschaften an der Universität in Helsinki Minix installiert und das Buch von Andy Tannenbaum gelesen. Er beginnt im Sinne der FSF einen Unix ähnlichen Kernel zu programmieren mit der Idee, &amp;quot;ein besseres Minix als Minix&amp;quot; zu bauen. 1992 stellt er die Version 0.02 mit dem Namen Linux der Internetgemeinde zur Verfügung. &lt;br /&gt;
&lt;br /&gt;
====1994====&lt;br /&gt;
Die Linux Version 1.0 wird freigegeben. Das Linux Fieber beginnt... &lt;br /&gt;
&lt;br /&gt;
====1998====&lt;br /&gt;
Der Kreis der Linux Entwickler und Anwender ist kräftig angeschwollen. KDE 1.0 wird veröffentlicht. Die Zuwachsraten von Linux übertreffen die von Windows NT deutlich. &lt;br /&gt;
&lt;br /&gt;
====1999====&lt;br /&gt;
Der lange erwartete stabile Linux Kernel Version 2.2 wird freigegeben. Namhafte Firmen wie IBM kündigen ihre Unterstützung für Linux an. &lt;br /&gt;
&lt;br /&gt;
====2001====&lt;br /&gt;
Der lange erwartete stabile Linux Kernel Version 2.4 wird freigegeben. USB Unterstützung und eine neue Firewallimplementierung zeichnen ihn aus.&lt;br /&gt;
&lt;br /&gt;
====2003====&lt;br /&gt;
Linux Kernel Version 2.6 wird freigegeben. Am auffälligsten sind Änderungen bei der Modulverwaltung.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Distributionen===&lt;br /&gt;
{| Border=1 Cellpadding=2&lt;br /&gt;
| &lt;br /&gt;
|Url&lt;br /&gt;
|Paketformat&lt;br /&gt;
|-&lt;br /&gt;
|Red Hat&lt;br /&gt;
|www.redhat.com&lt;br /&gt;
|rpm&lt;br /&gt;
|-&lt;br /&gt;
|fedora&lt;br /&gt;
|fedora.redhat.com&lt;br /&gt;
|rpm&lt;br /&gt;
|-&lt;br /&gt;
|CentOS&lt;br /&gt;
|www.centos.org&lt;br /&gt;
|rpm&lt;br /&gt;
|-&lt;br /&gt;
|Suse/openSUSE&lt;br /&gt;
|www.opensuse.org&lt;br /&gt;
|rpm&lt;br /&gt;
|-&lt;br /&gt;
|Debian&lt;br /&gt;
|www.debian.org&lt;br /&gt;
|deb&lt;br /&gt;
|-&lt;br /&gt;
|Ubuntu&lt;br /&gt;
|www.ubuntu.com&lt;br /&gt;
|deb&lt;br /&gt;
|-&lt;br /&gt;
|Mandrake&lt;br /&gt;
|www.linux-mandrake.com&lt;br /&gt;
|rpm&lt;br /&gt;
|-&lt;br /&gt;
|Easy Linux&lt;br /&gt;
|www.easy-linux.de&lt;br /&gt;
|rpm&lt;br /&gt;
|-&lt;br /&gt;
|Turbo&lt;br /&gt;
|www.turbolinux.com&lt;br /&gt;
|rpm&lt;br /&gt;
|-&lt;br /&gt;
|minis&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|toms&lt;br /&gt;
|www.toms.net/rb&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|damn small linux&lt;br /&gt;
|www.damnsmalllinux.org&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|pocket-linux&lt;br /&gt;
|www.pocket-linux.org&lt;br /&gt;
|&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
====Bücher====&lt;br /&gt;
 Titel : Das Linux Anwenderhandbuch und Leitfaden für die Systemverwaltung&lt;br /&gt;
 Autor : Sebastian Hetze, Dirk Hohndel, Olaf Kirch und Martin Müller&lt;br /&gt;
 Verlag: Lunetix&lt;br /&gt;
 ISBN : 3-929764-06-7&lt;br /&gt;
&lt;br /&gt;
 Titel : Linux in a Nutshell&lt;br /&gt;
 Autor : Jessica Perry Hekman und die Mitarbeiter von O'Reilly &amp;amp; Associates&lt;br /&gt;
 Verlag: O'Reilly&lt;br /&gt;
 ISBN : 3-930673-57-6&lt;br /&gt;
&lt;br /&gt;
 Titel : Linux - Wegweiser zur Installation und Konfiguration&lt;br /&gt;
 Autor : Matt Welsh, Lar Kaufman, Matthias Kalle Dallheimer&lt;br /&gt;
 Verlag: O'Reilly&lt;br /&gt;
 ISBN : 3-930673-58-4 (deutsch), 1-56592-469-X (englisch)&lt;br /&gt;
&lt;br /&gt;
 Titel : Linux - Installation, Konfiguration, Anwendung&lt;br /&gt;
 Autor : Michael KoflerMultitasking&lt;br /&gt;
 Verlag: Addison-Wesley&lt;br /&gt;
 ISBN : 3-8273-1475-5&lt;br /&gt;
&lt;br /&gt;
 Titel : Linux - Wegweiser für Netzwerker&lt;br /&gt;
 Autor : Olaf Kirch&lt;br /&gt;
 Verlag: O'Reilly&lt;br /&gt;
 ISBN : 3-930673-18-5&lt;br /&gt;
&lt;br /&gt;
 Titel : TCP/IP-Netzwerk-Administration&lt;br /&gt;
 Autor : Craig Hunt&lt;br /&gt;
 Verlag: O'Reilly&lt;br /&gt;
 ISBN : 3-89721-110-6&lt;br /&gt;
&lt;br /&gt;
 Titel : Essential System Administration&lt;br /&gt;
 Autor : Eleen Frisch&lt;br /&gt;
 Verlag: O'Reilly&lt;br /&gt;
 ISBN : 1-56592-127-5&lt;br /&gt;
&lt;br /&gt;
==Betriebssystem==&lt;br /&gt;
===Was ist ein Betriebssystem?===&lt;br /&gt;
&lt;br /&gt;
Ein Betriebssystem liegt logisch gesehen zwischenAnwendungsprogramm und Hardware.&lt;br /&gt;
&lt;br /&gt;
Es nimmt die Anforderungen der Anwendungsprogramme entgegen und leitet&lt;br /&gt;
diese kontrolliert an die Hardware weiter. Kein Anwendungsprogramm sollte&lt;br /&gt;
direkt auf die Hardware zugreifen können. Den zentralen Zugang schafft einzig&lt;br /&gt;
das Betriebssystem. Somit kann das Betriebssystem unsinnige Anforderungen&lt;br /&gt;
oder Bedienungsfehler abblocken.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Image:Linux.jpg]]&lt;br /&gt;
&lt;br /&gt;
===Aufgaben eines Betriebssystems===&lt;br /&gt;
&lt;br /&gt;
# Verbergen der Komplexität der Maschine vor dem Anwender (Abstraktion)&lt;br /&gt;
# Bereitstellen einer Benutzerschnittstelle (&amp;quot;Kommandointerpreter&amp;quot;, &amp;quot;Shell&amp;quot;)&lt;br /&gt;
# Bereitstellen einer normierten Programmierschnittstelle (API)&lt;br /&gt;
# Verwaltung der Ressourcen der Maschine::&lt;br /&gt;
Hauptspeicher&lt;br /&gt;
Prozessor(en)&lt;br /&gt;
Hintergrundspeicher (Platte, Band, etc.)&lt;br /&gt;
Geräte (Terminal, Drucker, Plotter, etc.)&lt;br /&gt;
Rechenzeit&lt;br /&gt;
Koordination von Prozessen&lt;br /&gt;
&lt;br /&gt;
===Aufbau eines Betriebssystems===&lt;br /&gt;
&lt;br /&gt;
Ein Rechensystem besteht aus Hardware, Systemprogrammen und Anwendungs-&lt;br /&gt;
programmen. Unter einem Betriebssystem wird meist die Summe aus Betriebs-&lt;br /&gt;
systemkern (Kernel) und den wichtigsten Systemprogrammen verstanden. Ein&lt;br /&gt;
minimaler LINUX-Kernel besitzt ungefähr eine Größe von 400 - 800 kByte.&lt;br /&gt;
Weitere wichtige Systemkomponenten benötigen zusätzlich 10 - 100 Mbyte&lt;br /&gt;
Plattenplatz.&lt;br /&gt;
&lt;br /&gt;
Ein Betriebssystem stellt den Rechner als erweiterte Maschine (virtuelle&lt;br /&gt;
Maschine) über definierte Software-Schnittstellen zur Verfügung.&lt;br /&gt;
Das Betriebssystem dient als Betriebsmittelverwalter, der Anforderungen&lt;br /&gt;
befriedigt, protokolliert, abrechnet und vermittelt.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Aufgaben des Betriebssystemkerns:&lt;br /&gt;
&lt;br /&gt;
{| Border=1 Cellpadding=2&lt;br /&gt;
|Prozessverwaltung  (dispatching and scheduling)&lt;br /&gt;
| Mehrere Benutzer können mit mehreren Aktionen gleichzeitig im System arbeiten, ohne sich gegenseitig zu beeinflussen. Damit dies möglich ist,  müssen die Aktionen organisiert, koordiniert und verwaltet werden. Die zu verwaltende Einheit nennt man Prozess.&lt;br /&gt;
|-&lt;br /&gt;
|Speicherverwaltung   (memory management)&lt;br /&gt;
|Zuteilen von Speicherbereichen an laufende Prozesse, Schutz der Speicherbereiche vor unbefugten Zugriffen, bei Speicherengpässen: Auslagern von ganzen (swapping) oder von Teilen (paging) von Prozessen auf die Platte (swap file).&lt;br /&gt;
|-&lt;br /&gt;
|Dateiverwaltung  (file handling)&lt;br /&gt;
|Zuteilung von Plattenplatz für Programme, Benutzer und Systemdienste, Schreiben, Lesen und Strukturieren der Daten auf den Massenspeichern; Durch Bereitstellung einer entsprechenden Schnittstelle (VFS, virtual file system) kann der Kern Dateisysteme unterschiedlichster Art (EXT2, FAT, NFS, HPFS, NTFS, ...) ansprechen.&lt;br /&gt;
|-&lt;br /&gt;
|Geräteverwaltung  (resource management)&lt;br /&gt;
|Der Kern ermöglicht und kontrolliert den Zugriff auf die Hardware. Er steuert die Ein- und Ausgabetätigkeiten der Anwender. An den Kern&lt;br /&gt;
gebunden sind die entsprechenden Gerätetreiber (device driver), die damit eine Kommunikation zwischen Kern und Hardware ermöglichen.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
===Multitasking===&lt;br /&gt;
&lt;br /&gt;
Multitasking bedeutet, dass ein Rechner aus Anwendersicht mehrere Aufgaben&lt;br /&gt;
(Tasks) gleichzeitg übernehmen kann. Das Betriebssystem (OS) unterteilt die&lt;br /&gt;
gleichzeitig anstehenden Aufgaben in Einzelarbeitsschritte (Prozesse) und&lt;br /&gt;
managed durch ein Zeitscheibenverfahren (scheduling) die gleichmäßige&lt;br /&gt;
Abarbeitung der Prozesse.&lt;br /&gt;
&lt;br /&gt;
Es wird unterschieden zwischen:&lt;br /&gt;
&lt;br /&gt;
*non-präamptiven (kooperativen=die Ressourcen werden vom aktiven Prozess freigegeben, bei einem Hänger steht das ganze System)&lt;br /&gt;
&lt;br /&gt;
und&lt;br /&gt;
&lt;br /&gt;
*präamptiven (reinem=der Betriebssystemkern steuert Taskwechsel, indem nach einer festgelegten Zeit vom gerade aktiven Prozess zum nächsten weitergeschaltet wird)&lt;br /&gt;
&lt;br /&gt;
===Mehrprozessorbetrieb===&lt;br /&gt;
&lt;br /&gt;
Bei mehreren Prozessoren und Unterstützung durch das OS&lt;br /&gt;
(NT,Linux,Unix,Novell) können mehrere Tasks auf diese verteilt werden und&lt;br /&gt;
gleichzeitig bearbeitet werden. Nachteilig ist, dass dies nicht oder kaum von&lt;br /&gt;
Anwendungsprogrammen unterstützt wird und es zu Kommunikationsproblemen&lt;br /&gt;
zwischen den einzelnen Tasks kommen kann.&lt;br /&gt;
&lt;br /&gt;
===Arten von von Betriebssystemen===&lt;br /&gt;
&lt;br /&gt;
{|Border=1 Cellpadding=2&lt;br /&gt;
|&lt;br /&gt;
|SingleUser  &lt;br /&gt;
|Multiuser&lt;br /&gt;
|-&lt;br /&gt;
|Single Tasking&lt;br /&gt;
|MS - DOS&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|Multi Tasking&lt;br /&gt;
|Windows 3.x&lt;br /&gt;
|UNIX&lt;br /&gt;
|-&lt;br /&gt;
|&lt;br /&gt;
|Windows 95/98&lt;br /&gt;
|Linux&lt;br /&gt;
|-&lt;br /&gt;
|&lt;br /&gt;
|Windows NT4 ohne Erweiterungen&lt;br /&gt;
|VMS&lt;br /&gt;
|-&lt;br /&gt;
|&lt;br /&gt;
|OS/2 &lt;br /&gt;
|Windows NT mit  Erweiterungen&lt;br /&gt;
|-&lt;br /&gt;
|&lt;br /&gt;
|Apple&lt;br /&gt;
|Windows 2000, XP, 2003&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
===SHELL===&lt;br /&gt;
&lt;br /&gt;
Wenn man mit Linux arbeiten will, kann man nicht direkt mit dem Betriebssystem&lt;br /&gt;
kommunizieren. Man braucht dazu ein Hilfsprogramm, welches die&lt;br /&gt;
Kommandoeingaben ordnungsgemäß an das Betriebssystem weiterleitet. Dieses&lt;br /&gt;
Hilfsprogramm hat den Namen Shell.&lt;br /&gt;
&lt;br /&gt;
Die Shell schirmt den Betriebssystemkern von den Anwendungsprogrammen ab.&lt;br /&gt;
Die unterschiedlichen Shells erfüllen alle dieselbe Aufgabe, sie unterscheiden sich&lt;br /&gt;
allerdings in ihrer Syntax.&lt;br /&gt;
&lt;br /&gt;
==Die Installation im Überblick==&lt;br /&gt;
&lt;br /&gt;
Die Installation von Linux geschieht in folgenden Schritten:&lt;br /&gt;
&lt;br /&gt;
# Analyse (Welche Hardware habe ich? ,Hab ich weitere Betriebsysteme?)&lt;br /&gt;
# Booten des Linux-Kernels. (von CD oder Diskette)&lt;br /&gt;
# Laden einer RAM-Disk (das macht das Installationsprogramm automatisch).&lt;br /&gt;
# Partitionieren der Festplatte (fdisk).&lt;br /&gt;
# Einrichten der Swappartition (mkswap), Formatieren der Festplatte (mkfs).&lt;br /&gt;
# Montieren der Dateisysteme (mount), Aktivieren der Swapbereiche (swapon).&lt;br /&gt;
# Kopieren und Auspacken der Daten vom Installationsmedium auf die Festplatte (die eigentliche Installation). (rpm, dpkg oder tar).&lt;br /&gt;
# Geeignete Wahl der Bootmethode unter Berücksichtigung von Punkt 1 (grub, lilo).&lt;br /&gt;
# Konfiguration des Systems (Netz, Modem etc...).&lt;br /&gt;
&lt;br /&gt;
==Erste Schritte==&lt;br /&gt;
===Anmelden===&lt;br /&gt;
Sie können sich nun mit dem Usernamen und dem Passwort, das sie bei der Installation angelegt haben anmelden!&lt;br /&gt;
[[Image:benutzer.jpg]]&lt;br /&gt;
&lt;br /&gt;
[[Image:passwd.jpg]]&lt;br /&gt;
&lt;br /&gt;
===Terminal öffnen===&lt;br /&gt;
&lt;br /&gt;
Ein Terminal öffnen Sie über das Startmenü:&lt;br /&gt;
&lt;br /&gt;
[[Image:Terminalde.jpg]]&lt;br /&gt;
&lt;br /&gt;
Das geöffnete Terminal sieht dann folgendermaßen aus:&lt;br /&gt;
&lt;br /&gt;
[[Image:Terminalde2.jpg]]&lt;br /&gt;
&lt;br /&gt;
===Sudo===&lt;br /&gt;
Rootrechte erlangen sie über den &amp;quot;Sudo&amp;quot;-Befehl&lt;br /&gt;
 &lt;br /&gt;
''Den nächsten Befehl als root ausführen''&lt;br /&gt;
 xinux@zero:~$ sudo cat /etc/shadow&lt;br /&gt;
 [sudo] password for xinux:&lt;br /&gt;
&lt;br /&gt;
''Eine komplette Sitzung als root starten''&lt;br /&gt;
 xinux@zero:~$ sudo -i&lt;br /&gt;
 [sudo] password for xinux:&lt;br /&gt;
 root@zero:~#&lt;br /&gt;
&lt;br /&gt;
===Virtuelle Konsolen===&lt;br /&gt;
&lt;br /&gt;
In die Virtuelle Konsole gelangen sie über &amp;quot;STRG+ALT+(F1-F6)&amp;quot;.&lt;br /&gt;
Sie funktioniert wie ein ganz normales Terminal, und mit &amp;quot;ALT+F7&amp;quot;&lt;br /&gt;
gelangen sie wieder zurück auf die grafische Benutzeroberfläche&lt;br /&gt;
&lt;br /&gt;
===Abmelden===&lt;br /&gt;
&lt;br /&gt;
Abmelden können Sie sich wieder über das Startmenu unter:&lt;br /&gt;
&lt;br /&gt;
[[Image:Logout.jpg]]&lt;br /&gt;
&lt;br /&gt;
Fals sie nur einzelne Sitzungen in einem der Terminals oder &lt;br /&gt;
den Virtuellen Konsolen Abmelden wollen benutzen sie dazu den Befehl: &amp;quot;exit&amp;quot;&lt;br /&gt;
&lt;br /&gt;
===Herunterfahren===&lt;br /&gt;
&lt;br /&gt;
Das Herunterfahren funktioniert auf dem selben Weg.&lt;br /&gt;
&lt;br /&gt;
Entweder sie Benutzen wieder das Startmenü und benutzen diesmal den &amp;quot;Ausschalten ...&amp;quot; Knopf,&lt;br /&gt;
&lt;br /&gt;
Oder sie geben den äquivalenten &amp;quot;shutdown&amp;quot;-Befehl in einem Terminal bzw. der virtuellen Konsole ein.&lt;br /&gt;
&lt;br /&gt;
Allerdings müssen sie dazu als Administrator angemeldet sein s. &amp;quot;Sudo&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Wenn Sie den &amp;quot;shutdown&amp;quot;-Befehl benutzen wollen muss hinter den Befehl&lt;br /&gt;
&lt;br /&gt;
eine Zeitangabe in Minuten oder das wort &amp;quot;now&amp;quot; für sofortiges Ausschalten hinzugefügt werden:&lt;br /&gt;
&lt;br /&gt;
 xinux@zero:~$ sudo -i&lt;br /&gt;
 root@zero:~# shutdown 60&lt;br /&gt;
 &lt;br /&gt;
 Broadcast message from xinux@zero &lt;br /&gt;
         (/dev/pts/3) at 14:29 ...&lt;br /&gt;
 &lt;br /&gt;
 The system is going down for maintenance in 60 minutes!&lt;br /&gt;
&lt;br /&gt;
Sollten sie den Befehl widerrufen wollen dann drücken sie &amp;quot;STRG+C&amp;quot;,&lt;br /&gt;
&lt;br /&gt;
in dem Terminal in dem der shutdown Befehl gestartet wurde,&lt;br /&gt;
&lt;br /&gt;
oder geben sie den &amp;quot;shutdown&amp;quot;-Befehl zusammen mit der Abbruchoption &amp;quot;-c&amp;quot; in einem anderen Terminal ein:&lt;br /&gt;
&lt;br /&gt;
 root@zero:~# shutdown -c&lt;br /&gt;
&lt;br /&gt;
 shutdown: Shutdown cancelled&lt;br /&gt;
 root@zero:~# &lt;br /&gt;
&lt;br /&gt;
Wenn Sie den Rechner Neustarten möchten gibt es dazu die Option &amp;quot;-r&amp;quot; für den &amp;quot;shutdown&amp;quot;-Befehl&lt;br /&gt;
&lt;br /&gt;
oder den &amp;quot;reboot&amp;quot;-Befehl die beide auch als root ausgeführt werden müssen:&lt;br /&gt;
&lt;br /&gt;
 xinux@zero:~$ sudo -i&lt;br /&gt;
 [sudo] password for xinux: &lt;br /&gt;
 root@zero:~# shutdown -r now&lt;br /&gt;
&lt;br /&gt;
 root@zero:~# reboot&lt;br /&gt;
&lt;br /&gt;
===&amp;quot;man&amp;quot;===&lt;br /&gt;
&lt;br /&gt;
Programm zum Einsehen der Online-Manuals&lt;br /&gt;
&lt;br /&gt;
Die Manuals sind in folgende Sektionen unterteilt:&lt;br /&gt;
# Ausführbare Programme oder Shellbefehle&lt;br /&gt;
# Systemaufrufe (Kernelfunktionen)&lt;br /&gt;
# Bibliotheksaufrufe (Funktionen in System-Bibliotheken)&lt;br /&gt;
# Spezielle Dateien (gewöhnlich in /dev)&lt;br /&gt;
# Dateiformate und Konventionen, z. B. /etc/passwd&lt;br /&gt;
# Spiele&lt;br /&gt;
# Makropakete und Konventionen, z. B. man(7), groff(7)&lt;br /&gt;
# Systemadministrationsbefehle (in der Regel nur für root)&lt;br /&gt;
# Kernelroutinen [Nicht Standard]&lt;br /&gt;
&lt;br /&gt;
Aufruf eines Manuals erfolgt durch ''man kommando''&lt;br /&gt;
Beendet wird durch Drücken des Buchstabens q&lt;br /&gt;
Gesucht wird vorwärts durch Eingabe eines /suchausdruck&lt;br /&gt;
Gesucht wird rückwärts durch Eingabe eines ?suchausdruck&lt;br /&gt;
&lt;br /&gt;
Beispiele:&lt;br /&gt;
&lt;br /&gt;
      man passwd        Anschauen der Manualseite zum Programm passwd&lt;br /&gt;
      man 5 passwd      Anschauen der Manualseite zur Datei /etc/passwd&lt;br /&gt;
      man -a passwd     Anschauen aller Manualseiten zu passwd&lt;br /&gt;
      man -k passwd     Durchsucht die Kurzbeschreibungen der Manualseite&lt;br /&gt;
                        nach passwd und gibt alle Treffer aus&lt;br /&gt;
      man -f passwd      Gibt alle gefunden Kurzbescheibungen zu passwd aus&lt;br /&gt;
      man -L en passwd Gibt englische Manualseiten aus&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Was geht vor auf meinem System? (date,who)===&lt;br /&gt;
&lt;br /&gt;
Das Kommando date dient zur Abfrage von Datum und Uhrzeit.&lt;br /&gt;
&lt;br /&gt;
 xinux@zero:~ &amp;gt; date&lt;br /&gt;
 Fre Mär 16 16:35:03 CET 2001&lt;br /&gt;
&lt;br /&gt;
oder auch Anzeige der Grennwich Zeit:&lt;br /&gt;
&lt;br /&gt;
 xinux@zero:~ &amp;gt; date -u&lt;br /&gt;
 Fre Mär 16 15:35:34 UTC 2001&lt;br /&gt;
&lt;br /&gt;
 xinux@zero:~ &amp;gt; date -u &amp;quot;+%X&amp;quot;&lt;br /&gt;
 15:37:19&lt;br /&gt;
&lt;br /&gt;
 xinux@zero:~ &amp;gt; date -u &amp;quot;+%x&amp;quot;&lt;br /&gt;
 01/15/02&lt;br /&gt;
&lt;br /&gt;
who zeigt alle angemeldeten Benutzer an&lt;br /&gt;
&lt;br /&gt;
 thomas@cardassia:~ &amp;gt; who&lt;br /&gt;
 thomas             tty1 Feb 27 16:39&lt;br /&gt;
 thomas             tty2 Mar 2 17:08&lt;br /&gt;
 tina               tty6 Mar 16 16:38&lt;br /&gt;
&lt;br /&gt;
Mit `who --help' bekommen Sie mehr Informationen.&lt;br /&gt;
&lt;br /&gt;
 thomas@cardassia:~ &amp;gt; who --help&lt;br /&gt;
&lt;br /&gt;
Benutzung: who [OPTION]... [ DATEI | ARG1 ARG2 ]&lt;br /&gt;
&lt;br /&gt;
 -H, --heading             print line of column headings&lt;br /&gt;
 -i, -u, --idle            add user idle time as HOURS:MINUTES, . or old&lt;br /&gt;
 -l, --lookup              attempt to canonicalize hostnames via DNS&lt;br /&gt;
 -m                        only hostname and user associated with stdin&lt;br /&gt;
 -q, --count               all login names and number of users logged on&lt;br /&gt;
 -s                        (ignored)&lt;br /&gt;
 -T, -w, --mesg            add user's message status as +, - or ?&lt;br /&gt;
     --message             same as -T&lt;br /&gt;
     --writable            same as -T&lt;br /&gt;
     --help                display this help and exit&lt;br /&gt;
     --version             output version information and exit&lt;br /&gt;
&lt;br /&gt;
==Das UNIX-Dateisystem==&lt;br /&gt;
===Verzeichnisbaum===&lt;br /&gt;
&lt;br /&gt;
[[Image:vztree.jpg]]&lt;br /&gt;
&lt;br /&gt;
Das Betriebssystem UNIX besitzt ein hierarchisches Dateisystem. Es besteht aus:&lt;br /&gt;
* Dateien (Files)&lt;br /&gt;
Dateien speichern Informationen (Text, Bilder, Sound, Videos, Programme) und&lt;br /&gt;
werden über den Dateinamen angesprochen.&lt;br /&gt;
&lt;br /&gt;
* Verzeichnissen (Directories, Kataloge)&lt;br /&gt;
Verzeichnisse besitzen ebenfalls einen Namen und dienen zur Ordnung des&lt;br /&gt;
Dateisystems. Ein Verzeichnis kann Dateien und Unterverzeichnisse&lt;br /&gt;
(Subdirectories) enthalten. Das oberste Verzeichnis im Dateisystem heisst&lt;br /&gt;
Rootverzeichnis oder kurz Root und wird durch / (sprich: slash)&lt;br /&gt;
gekennzeichnet.&lt;br /&gt;
&lt;br /&gt;
Im Gegensatz zu Windows kennt UNIX keine Laufwerke.&lt;br /&gt;
Das obige Bild zeigt ein typisches UNIX-Dateisystem.&lt;br /&gt;
Unterhalb des Rootverzeichnisses befinden sich eine Vielzahl vonVerzeichnissen.&lt;br /&gt;
&lt;br /&gt;
===Wichtige Verzeichnisse===&lt;br /&gt;
&lt;br /&gt;
• '''Homeverzeichnis'''&lt;br /&gt;
&lt;br /&gt;
das Verzeichnis, in dem man sich unmittelbar nach dem Anmelden befindet. Das&lt;br /&gt;
Homeverzeichnis wird vom Systemverwalter eingerichtet; jeder Anwender&lt;br /&gt;
besitzt ein festes Homeverzeichnis. z.B. /home/hans&lt;br /&gt;
&lt;br /&gt;
~ (Tilde) bzw. $HOME (Shellvariable) kennzeichnen das Homeverzeichnis.&lt;br /&gt;
&lt;br /&gt;
• '''Aktuelles Verzeichnis'''&lt;br /&gt;
&lt;br /&gt;
Verzeichnis, in dem man sich aktuell befindet.&lt;br /&gt;
Das aktuelle Verzeichnis wird mit dem Befehl cd (change directory) oder per&lt;br /&gt;
Mausklick verändert.&lt;br /&gt;
Ein einfacher Punkt . kennzeichnet das aktuelle Verzeichnis.&lt;br /&gt;
&lt;br /&gt;
• '''Elternverzeichnis'''&lt;br /&gt;
&lt;br /&gt;
Verzeichnis unmittelbar oberhalb des aktuellen Verzeichnisses.&lt;br /&gt;
Jedes Verzeichnis ausser / besitzt genau ein Elternverzeichnis.&lt;br /&gt;
Zwei Punkte .. kennzeichnen das Elternverzeichnis (abhängig vom aktuellen&lt;br /&gt;
VZ).&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Absoluter Pfadname:===&lt;br /&gt;
&lt;br /&gt;
Beschreibt ausgehend vom Rootverzeichnis den Weg zum Zielverzeichnis oder zur&lt;br /&gt;
Zieldatei. (Welche Verzeichnisse müssen ausgehend von / durchlaufen werden, um&lt;br /&gt;
zum Ziel zu kommen?) Ein absoluter Pfadname beginnt immer mit / .&lt;br /&gt;
&lt;br /&gt;
===Relativer Pfadname:===&lt;br /&gt;
&lt;br /&gt;
Beschreibt ausgehend vom aktuellen Verzeichnis den Weg zum Zielverzeichnis&lt;br /&gt;
oder zur Zieldatei; ein relativer Pfadname beginnt nicht mit / .&lt;br /&gt;
/home/suxer&lt;br /&gt;
absoluter Pfadname für das Verzeichnis sub1 im Homeverzeichnis von suxer&lt;br /&gt;
&lt;br /&gt;
===Verzeichnisstruktur===&lt;br /&gt;
&lt;br /&gt;
 /bin         Kommandos die beim starten benötigt werden (Zugriff hat jeder)&lt;br /&gt;
 /sbin        Wichtige System-Programme (In der Regel root vorberhalten)&lt;br /&gt;
 /boot        Hier findet man die Dateien des Bootmanagers und des Kernel.&lt;br /&gt;
 /dev         In diesem Verzeichnis stehen die Gerätedateien (Devices),&lt;br /&gt;
 /home        Alle Heimatverzeichnisse der Nutzer findet man hier.&lt;br /&gt;
 /lib         Beim Systemstart benötigten Bibliotheken und Modules stehen hier.&lt;br /&gt;
 /mnt         Mountpunkt für temporäre Partitionen&lt;br /&gt;
 /opt         Software, die nicht Installationsumfang von Linux gehören.&lt;br /&gt;
 /root        Heimatverzeichnis des Administrators.&lt;br /&gt;
 /tmp         Temporäre Dateien können hier abgelegt werden&lt;br /&gt;
 /usr         statische Dateien (kann read-only gemountet sein)&lt;br /&gt;
 /var         variable Dateien (muss beschreibar sein )&lt;br /&gt;
 /etc         Konfiguartionsdateien und Startscripte&lt;br /&gt;
 /proc        Virtuelles Dateisystem -&amp;gt; repräsentiert den Kernel&lt;br /&gt;
&lt;br /&gt;
===Unterverzeichnisse von /usr===&lt;br /&gt;
&lt;br /&gt;
 sbin         Programme für root die beim Start nicht benötigt werden&lt;br /&gt;
 bin          Programme für alle die beim Start nicht benötigt werden&lt;br /&gt;
 X11R6        Dateien des X-Window-Sytems&lt;br /&gt;
 bin          Ausführbare Programme&lt;br /&gt;
 doc          Dokumentationen&lt;br /&gt;
 etc          Konfigurationsdateien&lt;br /&gt;
 games        Spiele&lt;br /&gt;
 include      Headerdateien für C-Programme&lt;br /&gt;
 local        Pakete die nicht zur Distribution gehören ähnlich /opt&lt;br /&gt;
 share        Pakete die von mehreren Paketen genutzt werden&lt;br /&gt;
 share/man    Die Manualpages&lt;br /&gt;
 share/info   Seiten des Infosystems&lt;br /&gt;
 share/doc    Dokumentationen&lt;br /&gt;
 src          Sources von Programmen (Kernel und andere)&lt;br /&gt;
&lt;br /&gt;
===Unterverzeichnisse von /var===&lt;br /&gt;
&lt;br /&gt;
 cache        Zwischenspreicher für Progammes&lt;br /&gt;
 games        Variable Daten der Games (Scores etc...)&lt;br /&gt;
 lock         Sperrdateien&lt;br /&gt;
 log          Die Logdateien (wichtiges Verzeichnis für Admins)&lt;br /&gt;
 mail         Das Mailsystem&lt;br /&gt;
 run          Dateien zu laufemdem Prozessen&lt;br /&gt;
 spool        Spooldateien (z.B. für das Drucksystem&lt;br /&gt;
 state        Statusinfos&lt;br /&gt;
 tmp          Wie /tmp eventuell nicht auf root Partion&lt;br /&gt;
&lt;br /&gt;
==Einfache Komandos==&lt;br /&gt;
===cd: Wechseln des Arbeitsverzeichnis===&lt;br /&gt;
&lt;br /&gt;
Um festzustellen in welchem Verzeichnis man sich befindet, sollte man den&lt;br /&gt;
Befehl &amp;quot;pwd&amp;quot; benutzen,&lt;br /&gt;
&lt;br /&gt;
und mit dem Befehl &amp;quot;cd&amp;quot; kann man zwischen den Verzeichnissen wechseln:&lt;br /&gt;
&lt;br /&gt;
Wechsele ins homeverzeichnis von Xinux&lt;br /&gt;
&lt;br /&gt;
 xinux@zero:~$ cd /home/xinux/&lt;br /&gt;
 xinux@zero:~$ pwd&lt;br /&gt;
 /home/xinux&lt;br /&gt;
&lt;br /&gt;
cd ~ -&amp;gt; wechsele ins jeweilige Homeverzeichnis&lt;br /&gt;
&lt;br /&gt;
cd .. -&amp;gt; wechsele ein Verzeichnis höher&lt;br /&gt;
&lt;br /&gt;
cd ../verzeichnis -&amp;gt; wechsele in eine paralleles Verzeichnis &amp;lt;- (ist eine relative Pfadangabe !)&lt;br /&gt;
&lt;br /&gt;
cd - -&amp;gt; wechsele in das Verzeichnis, in dem vorher gearbeitet wurde.&lt;br /&gt;
&lt;br /&gt;
Mit cd / wechselt man in das Wurzelverzeichnis.&lt;br /&gt;
&lt;br /&gt;
 xinux@zero:/var/log$ cd /&lt;br /&gt;
 xinux@zero:/$ pwd&lt;br /&gt;
 /&lt;br /&gt;
&lt;br /&gt;
===ls: Listing===&lt;br /&gt;
&lt;br /&gt;
Den Inhalt von Verzeichnissen kann man sich mit dem Befehl &amp;quot;ls&amp;quot; anzeigen lassen&lt;br /&gt;
wobei &amp;quot;ls&amp;quot; eine Vielzahl von Optionen besitzt:&lt;br /&gt;
&lt;br /&gt;
 ls                                  standard&lt;br /&gt;
 ls -l                               langes listing&lt;br /&gt;
 ls -a                               alle Dateien&lt;br /&gt;
 ls -i                               mit Inode&lt;br /&gt;
 ls -h                               gut lesbare Dateigröße&lt;br /&gt;
 ls -d                               Verzechnis wird angezeigt, nicht der Inhalt&lt;br /&gt;
 ls -L                               sortiert nach Größe&lt;br /&gt;
 ls -t                               sortiert nach Datum&lt;br /&gt;
 ls -F                               mit nützlichem Anhang&lt;br /&gt;
&lt;br /&gt;
 xinux@zero:/$ ls -l /var/log/messages&lt;br /&gt;
 -rw-r----- 1 syslog adm 2296 2009-06-16 10:05 /var/log/messages&lt;br /&gt;
&lt;br /&gt;
===more: Seitenweises Anzeigen von Seiten===&lt;br /&gt;
 root@zero:~# more /var/log/messages&lt;br /&gt;
 ...&lt;br /&gt;
&lt;br /&gt;
===head: erste Zeilen anzeigen===&lt;br /&gt;
Erste 10 Zeilen anzeigen&lt;br /&gt;
 root@zero:~# head /var/log/messages&lt;br /&gt;
 Jun 15 12:37:08 zero syslogd 1.5.0#5ubuntu3: restart.&lt;br /&gt;
 Jun 15 12:38:43 zero kernel: [  830.065036] mtrr: your processor doesn't support write-combining&lt;br /&gt;
 Jun 15 12:46:05 zero pulseaudio[4817]: pid.c: Stale PID file, overwriting.&lt;br /&gt;
 Jun 15 13:05:24 zero -- MARK --&lt;br /&gt;
 ...&lt;br /&gt;
&lt;br /&gt;
Erste zwei Zeilen anzeigen&lt;br /&gt;
 root@zero:~# head -n 2 /var/log/messages&lt;br /&gt;
 Jun 15 12:37:08 zero syslogd 1.5.0#5ubuntu3: restart.&lt;br /&gt;
 Jun 15 12:38:43 zero kernel: [  830.065036] mtrr: your processor doesn't support write-combining&lt;br /&gt;
&lt;br /&gt;
===tail: letzte Zeilen anzeigen===&lt;br /&gt;
 &lt;br /&gt;
 root@zero:~# tail /var/log/syslog&lt;br /&gt;
 ...&lt;br /&gt;
 Jun 19 11:19:35 zero -- MARK --&lt;br /&gt;
 Jun 19 11:39:35 zero -- MARK --&lt;br /&gt;
 Jun 19 11:59:36 zero -- MARK --&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Letze 5 Zeilen anzeigen&lt;br /&gt;
 root@zero:~# tail -n 5 /var/log/auth.log&lt;br /&gt;
 Jun 18 14:30:01 zero CRON[12040]: pam_unix(cron:session): session closed for user root&lt;br /&gt;
 Jun 18 14:39:01 zero CRON[12191]: pam_unix(cron:session): session opened for user root by (uid=0)&lt;br /&gt;
 Jun 18 14:39:01 zero CRON[12191]: pam_unix(cron:session): session closed for user root&lt;br /&gt;
 Jun 18 14:40:01 zero CRON[12237]: pam_unix(cron:session): session opened for user root by (uid=0)&lt;br /&gt;
 Jun 18 14:40:01 zero CRON[12237]: pam_unix(cron:session): session closed for user root&lt;br /&gt;
&lt;br /&gt;
Letze Zeilen anzeigen und fortlaufend aktualisieren&lt;br /&gt;
 root@zero:~# tail -f /var/log/syslog&lt;br /&gt;
 ...&lt;br /&gt;
&lt;br /&gt;
===mkdir: Ein neues Verzeichnis erstellen===&lt;br /&gt;
&lt;br /&gt;
 mkdir        verzeichnis&lt;br /&gt;
Erstellt ein Verzeichnis im working directory (wd)&lt;br /&gt;
&lt;br /&gt;
 mkdir  -p    ver1/ver2&lt;br /&gt;
Erstellt ein Verzeichnis ver2 unterhalb von ver1&lt;br /&gt;
wenn ver1 nicht existiert wird es erstellt&lt;br /&gt;
&lt;br /&gt;
 mkdir -m 753 ver1&lt;br /&gt;
Es wird das Verzeichnis ver1 erstellt mit der mask 753&lt;br /&gt;
&lt;br /&gt;
 mkdir -v     ver1&lt;br /&gt;
Geschwätzige Ausgabe :)&lt;br /&gt;
&lt;br /&gt;
===Zum Löschen von leeren Verzeichnissen wird rmdir benutzt===&lt;br /&gt;
&lt;br /&gt;
 rmdir           ver1&lt;br /&gt;
Löscht das leere Verzeichnis ver1&lt;br /&gt;
&lt;br /&gt;
 rmdir -v        ver1&lt;br /&gt;
Löscht das leere Verzeichnis ver1 und ist geschwätzig&lt;br /&gt;
&lt;br /&gt;
 rmdir -p        /ver1/ver2/ver3&lt;br /&gt;
Löscht das Verzeichnis ver3; wenn dadurch ver2 ein leeres&lt;br /&gt;
Verzeichnis wird, wird dieses auch gelöscht , wenn ver1&lt;br /&gt;
dadurch ein leeres Verzeichnis wird, wird auch dieses gelöscht.&lt;br /&gt;
&lt;br /&gt;
===touch Verändern des Zeitstempels===&lt;br /&gt;
&lt;br /&gt;
Mit touch können wir eine neue leere Datei erzeugen (das ist nicht der eigentliche&lt;br /&gt;
Zweck von touch, eigentlich wird der Zeitstempel geändert)&lt;br /&gt;
&lt;br /&gt;
 touch            dateiname&lt;br /&gt;
&lt;br /&gt;
===Kopieren=== &lt;br /&gt;
cp ist das Kommando um Dateien zu kopieren &lt;br /&gt;
&lt;br /&gt;
Eine Kopie von dat1 mit dem Namen dat2 erstellen:&lt;br /&gt;
&lt;br /&gt;
 xinux@zero:~$ cp dat1 dat2&lt;br /&gt;
&lt;br /&gt;
Eine Kopie von dat1 ins Verzeichnis ver2 erstellen:&lt;br /&gt;
&lt;br /&gt;
 xinux@zero:~$ cp dat1 ver2/&lt;br /&gt;
 &lt;br /&gt;
Eine Kopie erstellen mit ausführlicher Anzeige:&lt;br /&gt;
&lt;br /&gt;
 xinux@zero:~$ cp -v dat1 dat2&lt;br /&gt;
 `dat1' -&amp;gt; `dat2'&lt;br /&gt;
&lt;br /&gt;
Eine Kopie erstellen mit Rückfrage fals etwas überschrieben wird:&lt;br /&gt;
&lt;br /&gt;
 xinux@zero:~$ cp -i dat1 dat2&lt;br /&gt;
 cp: overwrite `dat2'?&lt;br /&gt;
&lt;br /&gt;
Eine Kopie erstellen und die Rückfrage überbrücken:&lt;br /&gt;
&lt;br /&gt;
 xinux@zero:~$ cp -f dat1 dat2&lt;br /&gt;
&lt;br /&gt;
Eine Kopie von dat1 ins Verzeichnis ver2 erstellen fals keine neuere Version von dat1 vorliegt:&lt;br /&gt;
&lt;br /&gt;
 xinux@zero:~$ cp -u dat1 ver2/&lt;br /&gt;
&lt;br /&gt;
Eine Kopie erstellen fals ver2 auf dem selben Dateisystem wie dat1 liegt:&lt;br /&gt;
&lt;br /&gt;
 xinux@zero:~$ cp -x dat1 ver2/&lt;br /&gt;
&lt;br /&gt;
Eine Kopie von ver1, die als ver2 oder unter ver2 als ver1 gespeichert wird erstellen:&lt;br /&gt;
&lt;br /&gt;
 xinux@zero:~$ cp -r ver1/ ver2/&lt;br /&gt;
&lt;br /&gt;
Eine Kopie von einer Datei erstellen und ihre Attribute beibehalten:&lt;br /&gt;
&lt;br /&gt;
 xinux@zero:~$ cp -p sux1 sux2&lt;br /&gt;
&lt;br /&gt;
Eine Kopie erstellen bei der die Links erhalten bleiben:&lt;br /&gt;
&lt;br /&gt;
 xinux@zero:~$ cp -r ver1/ ver2/&lt;br /&gt;
&lt;br /&gt;
Eine Kopie erstellen zum Archivieren (-dpr):&lt;br /&gt;
&lt;br /&gt;
 xinux@zero:~$ cp -a ver1/ ver2/&lt;br /&gt;
&lt;br /&gt;
===rm: Löschen einer Datei===&lt;br /&gt;
&lt;br /&gt;
Um Dateien zu löschen, brauchen wir das Kommando &amp;quot;rm&amp;quot;:&lt;br /&gt;
&lt;br /&gt;
 rm               dat1        dat1 wird gelöscht&lt;br /&gt;
 rm         -i    dat1        dat1 wird nach Bestätigung gelöscht&lt;br /&gt;
 rm         -f    dat1        dat1 wird ohne Rückfragen gelöscht&lt;br /&gt;
 rm         -v    dat1        dat1 wird glöscht (geschwätzige Ausgabe)&lt;br /&gt;
 rm         -r    ver1        Löschen von nicht leeren Verzeichnissen&lt;br /&gt;
                              Achtung !!! Als root kann man sich damit Teile&lt;br /&gt;
                              oder sogar den gesamten Verzeichnisbaum&lt;br /&gt;
                              absägen !!!&lt;br /&gt;
&lt;br /&gt;
===mv: Verschieben===&lt;br /&gt;
&lt;br /&gt;
Mit dem Befehl &amp;quot;mv&amp;quot; werden Daten verschoben, folgendes gilt:&lt;br /&gt;
&lt;br /&gt;
 mv          dat1 dat2         &lt;br /&gt;
Die Datei dat1 wird in dat2 umbenannt&lt;br /&gt;
 mv          dat1 /ver1        &lt;br /&gt;
Die Datei dat1 wird nach /ver1 verschoben&lt;br /&gt;
&lt;br /&gt;
Die Parameter und ihre Bedeutung:&lt;br /&gt;
&lt;br /&gt;
      -i                      wenn eine Datei exisitiert wird vor dem&lt;br /&gt;
                              Überschreiben nachgefragt&lt;br /&gt;
      -v                      verbose (geschwätzig)&lt;br /&gt;
      -u                      nur neuere Daten werden bei Bedarf überschrieben&lt;br /&gt;
      -b                      wenn überschrieben werden soll, wird ein Backup&lt;br /&gt;
                              erstellt&lt;br /&gt;
      -S ENDUNG               das Backup bekommt die Endung ENDUNG&lt;br /&gt;
&lt;br /&gt;
===su Benutzer wechseln===&lt;br /&gt;
&lt;br /&gt;
 su -             &lt;br /&gt;
Wechsel zum Rootaccount, wie wenn dieser sich neu anmelden würde. (Bsp: su -)&lt;br /&gt;
&lt;br /&gt;
 su Benutzernamen &lt;br /&gt;
Wechsel der Identität zu Benutzer (gegebenenfalls Passwortabfrage)&lt;br /&gt;
&lt;br /&gt;
 su -c Kommando   &lt;br /&gt;
Kommando wird als rootaccount ausgeführt&lt;br /&gt;
&lt;br /&gt;
==Der Standard Editor vi==&lt;br /&gt;
Der vi ist der Standardeditor in der Unixwelt. Er ist in jedem Unix-Derivat&lt;br /&gt;
enthalten.&lt;br /&gt;
Der Editor hat zwar den schlechten Ruf umständlich zu bedienen zu sein, ist&lt;br /&gt;
jedoch sehr leistungsfähig und systemübergreifend verfügbar. Beim vi handelt es&lt;br /&gt;
sich um einen rein textorientierten Editor, der mittels eigener Kommandos&lt;br /&gt;
gesteuert wird.&lt;br /&gt;
&lt;br /&gt;
Der Editor VIM ist eine weitere Verbesserung von VI und leichter zu bedienen.&lt;br /&gt;
Und unter Ubuntu/Debian mit &amp;quot;apt-get install vim&amp;quot; zu installieren.&lt;br /&gt;
&lt;br /&gt;
===Starten des Editors:===&lt;br /&gt;
&lt;br /&gt;
Der Editorstart erfolgt einfach durch die Eingabe des Kommandos vi mit dem&lt;br /&gt;
Dateinamen der zu editierenden Datei als Parameter.&lt;br /&gt;
Beispiel:        &lt;br /&gt;
 vi sux.txt&lt;br /&gt;
&lt;br /&gt;
===Die Betriebsmodi des vi:===&lt;br /&gt;
&lt;br /&gt;
Ein Umstand, der dem vi den Ruf der komplizierten Bedienbarkeit zugetragen hat,&lt;br /&gt;
sind die unterschiedlichen Betriebsmodi des Editors. Genauer gesagt verfügt der&lt;br /&gt;
vi über drei Betriebsmodi:&lt;br /&gt;
&lt;br /&gt;
====Kommandomodus:====&lt;br /&gt;
&lt;br /&gt;
Innerhalb dieses Modus werden die eingegebenen Zeichen direkt als Befehle des&lt;br /&gt;
Editors interpretiert und ausgeführt. Dabei gibt es weder ein Bereitschaftszeichen&lt;br /&gt;
(Prompt) noch ein Echo (Ausgabe). Der Kommandomodus ist der Modus, in dem&lt;br /&gt;
sich der vi direkt nach seinem Start befindet.&lt;br /&gt;
&lt;br /&gt;
====Zeilenmodus oder Exmodus:====&lt;br /&gt;
&lt;br /&gt;
Dieser Modus ist der einzige Modus mit einem eigenen Bereitschaftszeichen,&lt;br /&gt;
nämlich dem Doppelpunkt (:). Das Prompt wird ebenso wie die Befehlsausgaben&lt;br /&gt;
in der Statuszeile angezeigt.&lt;br /&gt;
&lt;br /&gt;
====Eingabemodus:====&lt;br /&gt;
&lt;br /&gt;
Der Eingabemodus ist derjenige, in welchem der zu bearbeitende Text bearbeitet&lt;br /&gt;
werden kann. Alle hier eingegebenen Zeichen werden als Text für die aktuelle&lt;br /&gt;
Datei interpretiert. Zwischen den unterschiedlichen Modi kann jederzeit&lt;br /&gt;
gewechselt werden. Von Kommandomodus gelangen Sie durch mehere Wege in&lt;br /&gt;
den Eingabemodus. Man kann durch folgende Aktionen wechslen&lt;br /&gt;
&lt;br /&gt;
{| border=1 cellpadding=2&lt;br /&gt;
|i&lt;br /&gt;
|Text vor der aktuellen Cursorposition einfügen&lt;br /&gt;
|-&lt;br /&gt;
|I&lt;br /&gt;
|Text am Zeilenanfang einfügen&lt;br /&gt;
|-&lt;br /&gt;
|a&lt;br /&gt;
|Text hinter der aktuellen Cursorposition einfügen&lt;br /&gt;
|-&lt;br /&gt;
|A&lt;br /&gt;
|Text am Zeilenende einfügen&lt;br /&gt;
|-&lt;br /&gt;
|o&lt;br /&gt;
|Unterhalb der aktuellen Zeile eine neue Zeile einfügen&lt;br /&gt;
|-&lt;br /&gt;
|O&lt;br /&gt;
|Oberhalb der aktuellen Zeile eine neue Zeile einfügen&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Durch das Drücken der ESC - Taste gelangt man in den Kommandomodus zurück.&lt;br /&gt;
&lt;br /&gt;
Im Kommandomodus können Sie durch den Text navigieren und auch den Text&lt;br /&gt;
selbst bearbeiten, z.B ausschneiden, kopieren usw. Dazu sind einige Kommandos&lt;br /&gt;
nötig, von denen die wichtigsten im Folgenden erläutert werden:&lt;br /&gt;
&lt;br /&gt;
 xinux@zero:/$ vi iwas.txt&lt;br /&gt;
&lt;br /&gt;
[[Image:vim.jpg]]&lt;br /&gt;
&lt;br /&gt;
===Benutzen des Kommandomodus===&lt;br /&gt;
====Steuerung des Cursors durch den Text====&lt;br /&gt;
&lt;br /&gt;
Mittels folgender Kommandos bewegt sich der Cursor durch den Text:&lt;br /&gt;
&lt;br /&gt;
{| border=1 cellpadding=2&lt;br /&gt;
|h&lt;br /&gt;
|Cursor ein Zeichen nach links&lt;br /&gt;
|-&lt;br /&gt;
|l&lt;br /&gt;
|Cursor ein Zeichen nach rechts&lt;br /&gt;
|-&lt;br /&gt;
|k&lt;br /&gt;
|Cursor eine Zeile nach oben&lt;br /&gt;
|-&lt;br /&gt;
|j&lt;br /&gt;
|Cursor eine Zeile nach unten&lt;br /&gt;
|-&lt;br /&gt;
|w&lt;br /&gt;
|Cursor ein Wort nach rechts&lt;br /&gt;
|-&lt;br /&gt;
|b&lt;br /&gt;
|Cursor ein Wort nach links&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Alle diese Kommandos können mit einem vorgestellten Wiederholungsfaktor&lt;br /&gt;
arbeiten. Der Befehl 3w verschiebt demnach den Cursor um 3 Wörter nach rechts.&lt;br /&gt;
&lt;br /&gt;
====Angaben zur Positionierung====&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{| border=1 cellpadding=2&lt;br /&gt;
|STRG+U&lt;br /&gt;
|1⁄2 Bildschirmseite nach oben&lt;br /&gt;
|-&lt;br /&gt;
|STRG+D&lt;br /&gt;
|1⁄2 Bildschirmseite nach unten&lt;br /&gt;
|-&lt;br /&gt;
|STRG+B&lt;br /&gt;
|1 Bildschirmseite nach oben&lt;br /&gt;
|-&lt;br /&gt;
|STRG+F&lt;br /&gt;
|1 Bildschirmseite nach unten&lt;br /&gt;
|-&lt;br /&gt;
|/Ausdruck&lt;br /&gt;
|Sucht den Ausdruck (vorwärts) Weitersuchen mit n , N&lt;br /&gt;
|-&lt;br /&gt;
|?Ausdruck&lt;br /&gt;
|Sucht den Ausdurck (rückwärts) Weitersuchen mit n , N&lt;br /&gt;
|-&lt;br /&gt;
|0&lt;br /&gt;
|Zeilenanfang&lt;br /&gt;
|-&lt;br /&gt;
|$&lt;br /&gt;
|Zeilenende&lt;br /&gt;
|-&lt;br /&gt;
|w&lt;br /&gt;
|Nächstes Wort&lt;br /&gt;
|-&lt;br /&gt;
|b&lt;br /&gt;
|Vorheriges Wort&lt;br /&gt;
|-&lt;br /&gt;
|fc&lt;br /&gt;
|Auf das Zeichen c springen. c steht für ein beliebiges Zeichen&lt;br /&gt;
|-&lt;br /&gt;
|G&lt;br /&gt;
|Letzte Zeile der Datei&lt;br /&gt;
|-&lt;br /&gt;
|ng&lt;br /&gt;
|n-te Zeile der Datei&lt;br /&gt;
|-&lt;br /&gt;
|H&lt;br /&gt;
|Anfang der Bildschirmseite&lt;br /&gt;
|-&lt;br /&gt;
|L&lt;br /&gt;
|Ende der Bildschirmseite&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
====Befehle zur Textbearbeitung -&amp;gt; Was soll geschehen====&lt;br /&gt;
&lt;br /&gt;
{| Border=1 Cellpadding=2&lt;br /&gt;
|x&lt;br /&gt;
|Löscht Zeichen&lt;br /&gt;
|-&lt;br /&gt;
|d&lt;br /&gt;
|Löschen und in den Puffer laden&lt;br /&gt;
|-&lt;br /&gt;
|c&lt;br /&gt;
|Ändern&lt;br /&gt;
|-&lt;br /&gt;
|y&lt;br /&gt;
|In den Puffer laden&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
====Weitere wichtige Befehle:====&lt;br /&gt;
&lt;br /&gt;
{| Border=1 Cellpadding=2&lt;br /&gt;
|p&lt;br /&gt;
|Aus dem Puffer einfügen&lt;br /&gt;
|-&lt;br /&gt;
|u&lt;br /&gt;
|Undo, macht den letzten Befehl rückgängig&lt;br /&gt;
|-&lt;br /&gt;
|STRG+R&lt;br /&gt;
|Redo, macht den letzten Undo rückgängig&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
===Zeilen- oder Exmodus===&lt;br /&gt;
&lt;br /&gt;
Wie schon erwähnt wird der Zeilen oder Exmodus durch einen : eingeleitet.&lt;br /&gt;
Es folgen einige Beispiele.&lt;br /&gt;
&lt;br /&gt;
Befehle zum Speichern und Beenden:&lt;br /&gt;
&lt;br /&gt;
 :w          Schreibt Datei&lt;br /&gt;
 :w Datei2   Schreibt eine Kopie in Datei2&lt;br /&gt;
 :w !        Schreibt Datei (übergehe Schreibschutz)&lt;br /&gt;
 :w ! Datei2 Schreibt eine Kopie in Datei2 (übergehe Schreibschutz)&lt;br /&gt;
 :q          Schließe Datei&lt;br /&gt;
 :q!         Schließe Datei (verwerfe Änderungen)&lt;br /&gt;
 :wq         Schreibe Datei und beende Editor&lt;br /&gt;
 :wq!        Schreibe Datei und beende Editor (übergehe Schreibschutz)&lt;br /&gt;
 :q!         Schließe Datei (verwerfe Änderungen)&lt;br /&gt;
 :h          Hilfe anzeigen, durch drücken von :q Beenden der Hilfe&lt;br /&gt;
 :e Datei3   Editiere Datei3&lt;br /&gt;
 :e #        Editere vorhergehende Datei&lt;br /&gt;
 :1,3co9     Kopiere von der ersten bis zu dritten Zeile &lt;br /&gt;
             und füge den Inhalt unterhalb der neunte Zeile ein.&lt;br /&gt;
&lt;br /&gt;
Interaktionen mit Unix:&lt;br /&gt;
&lt;br /&gt;
 :r Datei4   Fügt Inhalt der Datei4 nach dem Cursor ein&lt;br /&gt;
 :r ! Befehl Fügt Ausgabe des Befehls nach dem Cursor ein&lt;br /&gt;
 :! Befehl   Führt den Befehl aus&lt;br /&gt;
 :sh         Starte Subshell -&amp;gt; mit exit kehrt man wieder zurück&lt;br /&gt;
             Eingabemodus zurück&lt;br /&gt;
&lt;br /&gt;
====Ersetzen von Textteilen====&lt;br /&gt;
&lt;br /&gt;
Die grundsätzliche Syntax lautet:&lt;br /&gt;
&lt;br /&gt;
 :[Zeilennummer,Zeilennummer]s/Muster/Ersetzung/[gc]&lt;br /&gt;
&lt;br /&gt;
 :s/worf/kirn/              der erste worf wird in der aktuellen Zeile durch kirn ersetzt&lt;br /&gt;
 :1,9s/worf/kirn/g          von der 1. bis zur 9. Zeile werden alle worf durch kirn ersetzt&lt;br /&gt;
 :1,$s/worf/kirn/           von der ersten bis zur letzten Zeile ersetze ersten worf durch&lt;br /&gt;
                            kirn&lt;br /&gt;
 :.,$s/worf/kirn/g          von der aktuellen bis zur letzten Zeile ersetze alle worf durch&lt;br /&gt;
                            kirn&lt;br /&gt;
 :1,.s/worf/kirn/c          von der 1. bis zur aktuellen Zeile ersetze worf durch kirn, frage&lt;br /&gt;
                            aber nach&lt;br /&gt;
 :1,$s/^worf/kirn/          von der ersten bis zur letzten Zeile ersetze worf am&lt;br /&gt;
                            Zeilenanfang durch kirn&lt;br /&gt;
 :4,$s/worf$/kirn/          von der 4. bis zur letzten Zeile ersetze worf am Zeilenende&lt;br /&gt;
                            durch kirn&lt;br /&gt;
 :1,$s/^#//                 lösche alle Kommentarzeichen&lt;br /&gt;
 :1,$s/^.orf/kirn/           ersetze alles was am Zeilenanfang ein beliebiges Zeichen hat&lt;br /&gt;
                            gefolgt von einem orf durch kirn&lt;br /&gt;
 :1,$s/^[A-Z]orf/kirn/g     suche nach einem Großbuchstaben am Anfang der Zeile&lt;br /&gt;
                            gefolgt von einem orf und ersetze durch kirn&lt;br /&gt;
 :1,$s/^M[ae][iy]e*r/kirn/  suche alles, was am Anfang der Zeile ein großes M enthält,&lt;br /&gt;
                            gefolgt von einem a oder e , gefolgt von einem i oder y ,&lt;br /&gt;
                            gefolgt von einem e , welches 0 oder N mal vorkommen kann,&lt;br /&gt;
                            gefolgt von einem r und ersetze es durch kirn&lt;br /&gt;
&lt;br /&gt;
==Reguläre Ausdrücke==&lt;br /&gt;
&lt;br /&gt;
{| Border=1 Cellpadding=2&lt;br /&gt;
|c&lt;br /&gt;
|Ein einzelner Buchstabe passt auf sich selbst&lt;br /&gt;
|-&lt;br /&gt;
|.&lt;br /&gt;
|Ein Punkt passt auf jedes Zeichen außer auf das Zeilenende&lt;br /&gt;
|-&lt;br /&gt;
|*&lt;br /&gt;
|Das dem Operator * vorangehende Muster kann 0 oder öfter vorkommen&lt;br /&gt;
|-&lt;br /&gt;
|^&lt;br /&gt;
|(Caret) passt auf den Zeilenanfang&lt;br /&gt;
|-&lt;br /&gt;
|$&lt;br /&gt;
|Passt auf das Zeilenende&lt;br /&gt;
|-&lt;br /&gt;
|\&lt;br /&gt;
|Das folgende Sonderzeichen wird entwertet&lt;br /&gt;
|-&lt;br /&gt;
|[...]&lt;br /&gt;
|Passt auf &amp;quot;genau&amp;quot; eins in [...] angebenen Zeichen&lt;br /&gt;
|-&lt;br /&gt;
|[^...]&lt;br /&gt;
|Passt auf &amp;quot;genau&amp;quot; ein Zeichen welches nicht in [...] angebenen ist&lt;br /&gt;
|-&lt;br /&gt;
|\&amp;lt;&lt;br /&gt;
|Passt auf den Wortanfang&lt;br /&gt;
|-&lt;br /&gt;
|\&amp;gt;&lt;br /&gt;
|Passt auf das Wortende&lt;br /&gt;
|-&lt;br /&gt;
|\+&lt;br /&gt;
|Das dem Operator \+ vorangehende Muster kann 1 oder öfter vorkommen&lt;br /&gt;
|-&lt;br /&gt;
|&amp;amp;&lt;br /&gt;
|Setzt das gefunden Suchmuster ein&lt;br /&gt;
|-&lt;br /&gt;
|\(...\)&lt;br /&gt;
|Speichert den Text auf den das Suchmuster passt zur späteren Verwendung&lt;br /&gt;
|-&lt;br /&gt;
|\n&lt;br /&gt;
|Setzt das vorangehende, mit \(...\) Gefundene wieder ein&lt;br /&gt;
|-&lt;br /&gt;
|(...)&lt;br /&gt;
|Gruppiert Auswahlmöglichkeiten&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;nowiki&amp;gt;|&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
|Trennt Auswahlmöglichkeiten&lt;br /&gt;
|-&lt;br /&gt;
|\b&lt;br /&gt;
|Passt auf den Anfang oder das Ende eines Wortes&lt;br /&gt;
|-&lt;br /&gt;
|\B&lt;br /&gt;
|Symbolisiert den Raum innerhalb eines Wortes&lt;br /&gt;
|-&lt;br /&gt;
|\w&lt;br /&gt;
|Passt auf alle alphanumerischen Zeichen [A-Za-z0-9]&lt;br /&gt;
|-&lt;br /&gt;
|\W&lt;br /&gt;
|Passt auf alle nichtalphanumerischen Zeichen [^A-Za-z0-9]&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Die Rangfolge der Operatoren(von der höchsten zur niedrigsten)&lt;br /&gt;
:(, ), ?, *, + | .&lt;br /&gt;
&lt;br /&gt;
Die anderen Operatoren sind mit den anderen Buchstaben gleichrangig.&lt;br /&gt;
&lt;br /&gt;
===Beispiel zum Suchen===&lt;br /&gt;
&lt;br /&gt;
 Suchmuster               Passt auf&lt;br /&gt;
 ^Tuxer                   Tuxer am Zeilenanfang&lt;br /&gt;
 [tT]uxer                 Tuxer oder tuxer&lt;br /&gt;
 80[23]?86                8086, 80286 oder 80386&lt;br /&gt;
&lt;br /&gt;
===grep===&lt;br /&gt;
&lt;br /&gt;
Mit grep ist es möglich, in Dateien nach regulären Ausdrücken zu suchen. Wenn&lt;br /&gt;
eine Übereinstimmung gefunden wird, wird die komplette Zeile auf die&lt;br /&gt;
Standardausgabe geschrieben. grep kann auch von STDIN lesen.Es ist&lt;br /&gt;
empfehlenswert, sich anzugwöhnen ,das Suchmuster in Anführungszeichen zu&lt;br /&gt;
schreiben. Es gibt 3 Arten fgrep = fastgrep , grep und egrep egrep&lt;br /&gt;
&lt;br /&gt;
Beispiel:&lt;br /&gt;
&lt;br /&gt;
 root@zero:~# cat text&lt;br /&gt;
 quatsch&lt;br /&gt;
 quatsch&lt;br /&gt;
 quatsch&lt;br /&gt;
 wichtig&lt;br /&gt;
 quatsch&lt;br /&gt;
 root@zero:~# grep wichtig text&lt;br /&gt;
 wichtig&lt;br /&gt;
 root@zero:~# &lt;br /&gt;
&lt;br /&gt;
 -c                   meldet nur die Gesamtzahl der Fundstellen&lt;br /&gt;
 -v                   zeigt nur Zeilen, die »Ausdruck« nicht enthalten&lt;br /&gt;
 -i                   ignoriert Groß- und Kleinschreibung&lt;br /&gt;
 -l                    meldet nur Dateinamen mit Fundstellen&lt;br /&gt;
 -n                   listet Zeilennummern zu jeder Fundstelle&lt;br /&gt;
 -f                   Dateiname »Dateiname« enthält die Such-Ausdrücke&lt;br /&gt;
 -E                   ist ein erweiterter regulärer Ausdruck (egrep)&lt;br /&gt;
 -F                   (Muster, Ausdruck) ist ein Muster (String) (fgrep)&lt;br /&gt;
 -b                   listet auch die Position der Fundstellen&lt;br /&gt;
 -C    Anzahl         Anzahl von Zeilen werden nach der Fundstelle ausgegeben&lt;br /&gt;
 -B    Anzahl         Anzahl von Zeilen werden vor der Fundstelle ausgegeben&lt;br /&gt;
 -r                   Durchsucht Verzeichnisse rekursiv&lt;br /&gt;
&lt;br /&gt;
==Useridendifikation==&lt;br /&gt;
===/etc/passwd===&lt;br /&gt;
====Beschreibung====&lt;br /&gt;
passwd ist eine ASCII-Datei, die eine Liste der Benutzer des Systems und deren&lt;br /&gt;
Passwörter enthält. Die Passwortdatei sollte für alle Benutzer lesbar sein, was für&lt;br /&gt;
dieVerschlüsselung notwendig ist; aber nur vom Superuser beschreibbar. Wenn&lt;br /&gt;
Sie eine neue Kennung einrichten, lassen Sie das Passwort-Feld in der Datei frei&lt;br /&gt;
und benutzen Sie passwd(1), um dem System ein Passwort für die neue Kennung&lt;br /&gt;
mitzuteilen.&lt;br /&gt;
&lt;br /&gt;
Die Datei /etc/passwd enthält einen Eintrag pro Zeile mit dem Format:&lt;br /&gt;
login_name:passwd:UID:GID:user_name:directory:shell&lt;br /&gt;
====Die Bedeutung der Felder:====&lt;br /&gt;
# login_name Kennung des Benutzers auf dem System.&lt;br /&gt;
# password   Hier steht bei Shadowsystemen ein x. Die Passwörter sind in der Datei /etc/shadow&lt;br /&gt;
# UID        Die numerische Benutzernummer.&lt;br /&gt;
#  GID        Die numerische Gruppennummer des Benutzers.&lt;br /&gt;
# user_name Ein optionales Kommentarfeld, oft benutzt für den vollen Namen des Benutzers und weitere Informationen (Telefon, Raum-Nummer etc.).&lt;br /&gt;
# directory  Das Heimatverzeichnis $HOME des Benutzers.&lt;br /&gt;
# shell      Das Programm, das beim Einloggen gestartet werden soll (falls nicht nötig, benutzen Sie /bin/bash).&lt;br /&gt;
&lt;br /&gt;
===/etc/group===&lt;br /&gt;
====Beschreibung====&lt;br /&gt;
etc/group ist eine ASCII Datei, die Gruppen definiert, zu denen Benutzer&lt;br /&gt;
gehören. Es gibt nur einen Eintrag pro Zeile; jede Zeile hat folgendes Format:&lt;br /&gt;
         GruppenName:Passwort:GruppenKennung:BenutzerListe&lt;br /&gt;
Beschreibung der Felder:&lt;br /&gt;
#     GruppenName      Die Bezeichnung der Gruppe.&lt;br /&gt;
#     Passwort         Das (verschlüsselte) Gruppen-Passwort. Wenn dieses Feld leer ist, wird kein Passwort benötigt.&lt;br /&gt;
#     GruppenKennung Die numerische Identifikation der Gruppe.&lt;br /&gt;
#     BenutzerListe    Alle Namen der Mitglieder, getrennt durch Kommas.&lt;br /&gt;
&lt;br /&gt;
===/etc/shadow===&lt;br /&gt;
====Beschreibung====&lt;br /&gt;
shadow beinhaltet Informationen zu den verschlüsselten Passwörten, zu den&lt;br /&gt;
Benutzerzugängen und weitere Informationen zur Laufzeit der Passwörter.&lt;br /&gt;
 Name:Passwort:Letzte Änderung:Mintage:Maxtage:Warntage:Inaktiv:Ablauf&lt;br /&gt;
#    Der Loginname&lt;br /&gt;
#    verschlüsseltes Passwort &lt;br /&gt;
&amp;lt;nowiki&amp;gt;*&amp;lt;/nowiki&amp;gt; bedeutet Benutzer kann sich nicht einlogen&lt;br /&gt;
! bedeutet Benutzer hat kein Passwort gesetzt&lt;br /&gt;
#    Tage seit dem 1 Januar 1970 an dem das Passwort letztmals geändert wurde&lt;br /&gt;
#    Tage, die das Passwort behalten werden muss, bevor es wieder geändert werden kann&lt;br /&gt;
#     Die Anzahl der Tage, nach denen der Benutzer das Passwort wieder ändern muss&lt;br /&gt;
#    Anzahl der Tage bevor das Passwort abläuft und der Benutzer gewarnt wird&lt;br /&gt;
#    Wenn der Zugang diese Anzahl von Tagen nicht benutzt wird, wird der Zugang gesperrt&lt;br /&gt;
#    Tag seit dem 1 Januar 1970, an dem der Zugang gesperrt wird&lt;br /&gt;
#    Reserviertes Feld&lt;br /&gt;
&lt;br /&gt;
Die Datei sollte aus Sicherheitgründen nicht für einen normalen Benutzer lesbar&lt;br /&gt;
sein.&lt;br /&gt;
&lt;br /&gt;
==Programme zur Userverwaltung==&lt;br /&gt;
===useradd===&lt;br /&gt;
User anlegen&lt;br /&gt;
 root@zero:~# useradd -m -u 1011 -g users -G admin -d /home/erwin -s /bin/bash -c &amp;quot;Erwin Lehman&amp;quot;  erwin&lt;br /&gt;
{| border=1 cellpadding=2&lt;br /&gt;
|&amp;quot;-m&amp;quot;&lt;br /&gt;
|Lege Homedirectory an&lt;br /&gt;
|-&lt;br /&gt;
|&amp;quot;-u 1011&amp;quot;&lt;br /&gt;
|Userid wird zugeordnet&lt;br /&gt;
|-&lt;br /&gt;
|&amp;quot;-g users&amp;quot;&lt;br /&gt;
|Primäre Gruppe wird zugeordnet&lt;br /&gt;
|-&lt;br /&gt;
|&amp;quot;-G admin&amp;quot;&lt;br /&gt;
|Sekunbdäre Gruppe wird zugeordnet&lt;br /&gt;
|-&lt;br /&gt;
|&amp;quot;-d /home/erwin/&amp;quot;&lt;br /&gt;
|Name des Homedirectory&lt;br /&gt;
|-&lt;br /&gt;
|&amp;quot;-s /bin/bash&amp;quot;&lt;br /&gt;
|Bash wird zugeordnet&lt;br /&gt;
|- &lt;br /&gt;
|&amp;quot;-c Erwin Lehman&amp;quot;&lt;br /&gt;
|Kommentarfeld&lt;br /&gt;
|-&lt;br /&gt;
|&amp;quot;erwin&amp;quot; &lt;br /&gt;
|Name des Users&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Defaulteinstellungen anzeigen&lt;br /&gt;
 root@zero:~# useradd -D&lt;br /&gt;
 GROUP=100&lt;br /&gt;
 HOME=/home&lt;br /&gt;
 INACTIVE=-1&lt;br /&gt;
 EXPIRE=&lt;br /&gt;
 SHELL=/bin/sh&lt;br /&gt;
 SKEL=/etc/skel&lt;br /&gt;
 CREATE_MAIL_SPOOL=no&lt;br /&gt;
&lt;br /&gt;
Defaulteinstellungen ändern&lt;br /&gt;
 useradd -D -s /bin/bash&lt;br /&gt;
&lt;br /&gt;
Konfigurationsdatei&lt;br /&gt;
 root@zero:~# cat /etc/default/useradd &lt;br /&gt;
 SHELL=/bin/bash&lt;br /&gt;
 GROUP=100&lt;br /&gt;
 HOME=/home&lt;br /&gt;
 INACTIVE=-1&lt;br /&gt;
 EXPIRE=&lt;br /&gt;
 SKEL=/etc/skel&lt;br /&gt;
 CREATE_MAIL_SPOOL=no&lt;br /&gt;
&lt;br /&gt;
===usermod===&lt;br /&gt;
User modifizieren&lt;br /&gt;
 root@zero:~# usermod -l fritz -s /bin/sh -G admin,video erwin&lt;br /&gt;
{| border=1 cellpadding=2&lt;br /&gt;
|&amp;quot;-l fritz&amp;quot;&lt;br /&gt;
|Neuer Username&lt;br /&gt;
|-&lt;br /&gt;
|&amp;quot;-s /bin/sh&amp;quot;&lt;br /&gt;
|Neue Shell&lt;br /&gt;
|-&lt;br /&gt;
|&amp;quot;-G admin, video&amp;quot;&lt;br /&gt;
|Sekunbdäre Gruppen werden zugeordnet&lt;br /&gt;
|-&lt;br /&gt;
|&amp;quot;erwin&amp;quot; &lt;br /&gt;
|Name des Users&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
===userdel===&lt;br /&gt;
User inklusive Homedirectory löschen&lt;br /&gt;
 root@zero:~# userdel -r fritz&lt;br /&gt;
&lt;br /&gt;
===passwd===&lt;br /&gt;
Rootpasswort ändern&lt;br /&gt;
 root@zero:~# passwd &lt;br /&gt;
 Geben Sie ein neues UNIX Passwort ein:'''sysadm''' &lt;br /&gt;
 Geben Sie das neue UNIX Passwort erneut ein:'''sysadm''' &lt;br /&gt;
 passwd: Passwort erfolgreich geändert&lt;br /&gt;
&lt;br /&gt;
Passwort von tux ändern&lt;br /&gt;
 root@zero:~# passwd tux&lt;br /&gt;
 Geben Sie ein neues UNIX Passwort ein:'''suxer''' &lt;br /&gt;
 Geben Sie das neue UNIX Passwort erneut ein:'''suxer'''&lt;br /&gt;
 passwd: Passwort erfolgreich geändert&lt;br /&gt;
&lt;br /&gt;
Minimale und Maximale Gültigkeit des Passwortes von tux festlegen&lt;br /&gt;
 root@zero:~# passwd -n 5 -x 120 tux&lt;br /&gt;
&lt;br /&gt;
===groupadd===&lt;br /&gt;
 root@zero:~# groupadd -f -g 2001 xinuxer&lt;br /&gt;
{| border=1 cellpadding=2&lt;br /&gt;
|&amp;quot;-f&amp;quot;&lt;br /&gt;
|Überschreibe bestehende Gruppe&lt;br /&gt;
|-&lt;br /&gt;
|&amp;quot;-g 2001&amp;quot;&lt;br /&gt;
|GID der Gruppe&lt;br /&gt;
|-&lt;br /&gt;
|&amp;quot;xinuxer&amp;quot; &lt;br /&gt;
|Name des Gruppe&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==chmod==&lt;br /&gt;
Die Syntax des Befehls chmod lautet:&lt;br /&gt;
&lt;br /&gt;
'''chmod''' WerWieWas [,WerWieWas,.....] Dateiliste&lt;br /&gt;
&lt;br /&gt;
oder&lt;br /&gt;
&lt;br /&gt;
'''chmod''' Oktalzahl Dateiliste&lt;br /&gt;
&lt;br /&gt;
Durch WerWieWas bzw. Oktalzahl wird die Rechtetabelle definiert. Innerhalb von&lt;br /&gt;
WerWieWas darf es kein Leerzeichen geben. Wer bezeichnet den Benutzerkreis,&lt;br /&gt;
dem man Rechte gibt, Wie die Art, in der die Rechte gegeben werden und Was die&lt;br /&gt;
Rechte als solche. Im einzelnen können folgende Kürzel benutzt werden:&lt;br /&gt;
&lt;br /&gt;
Für Wer kann eines der folgenden Kürzel oder eine Kombination davon stehen:&lt;br /&gt;
 u                   (user) Rechte für den Dateibesitzer&lt;br /&gt;
 g                   (group) Rechte für die Gruppe&lt;br /&gt;
 o                   (others) Rechte für alle anderen Benutzer&lt;br /&gt;
 a                   (all) Rechte für alle Benutzer&lt;br /&gt;
Für Wie steht eines der folgenden Kürzel:&lt;br /&gt;
 +                   Die Rechte werden zu den vorhandenen zusätzlich vergeben&lt;br /&gt;
 -                   Die im Folgenden genannten Rechte werden entzogen&lt;br /&gt;
 =                   Die im Folgenden genannten Rechte ersetzen die bisherigen&lt;br /&gt;
Für Was steht eines der folgenden Kürzel:&lt;br /&gt;
 r                   (read) lesen&lt;br /&gt;
 w                   (write) schreiben&lt;br /&gt;
 x                   (execute) ausführen&lt;br /&gt;
oder diese Sonderformen&lt;br /&gt;
 s                   (usersbit) Programm läuft unter der UID des Besitzers&lt;br /&gt;
 s                   (groupsbit)Programm läuft unter der GID des GRUPPE&lt;br /&gt;
 t                   (stickybit) Dateien im Verzeichnis darf nur Besitzer löschen&lt;br /&gt;
&lt;br /&gt;
===Beispiel===&lt;br /&gt;
Setze für alle Schreib- und Leserecht&lt;br /&gt;
 xinux@zero:~$ chmod a=rw test &lt;br /&gt;
 xinux@zero:~$ ls -l test &lt;br /&gt;
 -rw-rw-rw- 1 xinux xinux 0 2009-06-16 12:01 test&lt;br /&gt;
 xinux@zero:~$ &lt;br /&gt;
&lt;br /&gt;
Erteile Besitzer Ausführungsrecht&lt;br /&gt;
 xinux@zero:~$ chmod u+x test ; ls -l test &lt;br /&gt;
 -rwxrw-rw- 1 xinux xinux 0 2009-06-16 12:01 test&lt;br /&gt;
 xinux@zero:~$ &lt;br /&gt;
&lt;br /&gt;
===chmod oktale Schreibweise===&lt;br /&gt;
 Specialrights        User           Group         Other&lt;br /&gt;
 usbit gsbit sticky    r    w   x     r   w   x     r   w   x&lt;br /&gt;
   1     1      1      1    1   1     1   1   1     1   1   1&lt;br /&gt;
   0     0      0      0    0   0     0   0   0     0   0   0&lt;br /&gt;
 Oktale Wertigkeit pro Recht&lt;br /&gt;
   4     2       1     4    2   1     4   2   1     4   2   1&lt;br /&gt;
&lt;br /&gt;
===Beispiele===&lt;br /&gt;
 xinux@zero:~$ chmod 751 test ; ls -l test&lt;br /&gt;
 -rwxr-x--x 1 xinux xinux 0 2009-06-16 12:01 test&lt;br /&gt;
 xinux@zero:~$ &lt;br /&gt;
&lt;br /&gt;
 xinux@zero:~$ chmod 4770 test ; ls -l test&lt;br /&gt;
 -rwsrwx--- 1 xinux xinux 0 2009-06-16 12:01 test&lt;br /&gt;
 xinux@zero:~$ &lt;br /&gt;
&lt;br /&gt;
 xinux@zero:~$ chmod 0 test ; ls -l test &lt;br /&gt;
 ---------- 1 xinux xinux 0 2009-06-16 12:01 test&lt;br /&gt;
&lt;br /&gt;
===chmod Optionen===&lt;br /&gt;
 -c   (changes) es werden nur die Dateien angezeigt, deren Zugriffsrechte tatsächlich verändert werden&lt;br /&gt;
 -f   (silent, quiet) Fehlermeldungen wegen fehlgeschlagener Änderungsversuche werden unterdrückt&lt;br /&gt;
 -v   (verbose) alle Aktionen werden angezeigt&lt;br /&gt;
 -R   (recursive) die Zugriffsrechte aller Dateien in den Unterverzeichnissen werden ebenfalls geändert&lt;br /&gt;
&lt;br /&gt;
Theoretisch sind alle Kombinationen der Zugriffsrechte denkbar, aber der&lt;br /&gt;
Eigentümer einer Datei darf diese immer lesen, selbst wenn das Lesebit nicht&lt;br /&gt;
gesetzt ist. Genauso macht es wenig Sinn, eine gewöhnliche Textdatei als&lt;br /&gt;
ausführbar zu setzen; die Shell wird damit nichts anfangen können. Ein x für ein&lt;br /&gt;
Verzeichnis gibt an, dass in dieses gewechselt werden kann.&lt;br /&gt;
&lt;br /&gt;
Rechte sind verbindlich&lt;br /&gt;
&lt;br /&gt;
Interessant ist auch ein Konstrukt folgender Art&lt;br /&gt;
 -rwx---rwx&lt;br /&gt;
&lt;br /&gt;
das angibt, dass mit der Datei alles angestellt werden kann, außer durch Nutzer der&lt;br /&gt;
Gruppe. Versucht irgend jemand, der nicht der Gruppe des Eigentümers angehört,&lt;br /&gt;
die Datei zu modifizieren, wird ihm dies gelingen, einem Gruppenmitglied bleibt&lt;br /&gt;
dies versagt, obwohl er ja gleichzeitig ein &amp;quot;Anderer&amp;quot; ist. D.h. die Rechte der&lt;br /&gt;
Gruppe sind verbindlicher, als die Rechte der anderen!&lt;br /&gt;
&lt;br /&gt;
===Bedeutungen der Zugriffsarten===&lt;br /&gt;
====Dateien====&lt;br /&gt;
* r: Der Inhalt der Datei kann gelesen und damit auch kopiert werden. &lt;br /&gt;
 root@zero:~# cat test&lt;br /&gt;
 Dies ist eine Testdatei&lt;br /&gt;
  &lt;br /&gt;
 root@zero:~# cp test backup&lt;br /&gt;
&lt;br /&gt;
* w: Der Inhalt der Datei darf verändert werden. Ob die Datei gelöscht werden kann ist&lt;br /&gt;
keine Eigenschaft der Datei, sondern des Verzeichnisses, indem sich die Datei befindet.&lt;br /&gt;
 root@zero:~# cat &amp;gt; test&lt;br /&gt;
 Hier steht jetzt was anderes&lt;br /&gt;
 ^C&lt;br /&gt;
 root@zero:~# cat test&lt;br /&gt;
 Hier steht jetzt was anderes&lt;br /&gt;
  &lt;br /&gt;
 xinux@zero:~$ ls -ld verzeichnis/&lt;br /&gt;
 dr-xr-xr-x 2 xinux xinux 4096 2009-06-18 11:16 verzeichnis/&lt;br /&gt;
 xinux@zero:~/verzeichnis$ rm text&lt;br /&gt;
 rm: Entfernen von „text“ nicht möglich: Permission denied&lt;br /&gt;
&lt;br /&gt;
* x: Ausführrecht für Programme und Skripte&lt;br /&gt;
 xinux@zero:~$ ./programm&lt;br /&gt;
 -bash: ./programm: Permission denied&lt;br /&gt;
 xinux@zero:~$ chmod +x programm&lt;br /&gt;
 xinux@zero:~$ ./programm&lt;br /&gt;
 Test&lt;br /&gt;
  test&lt;br /&gt;
&lt;br /&gt;
====Verzeichnisse====&lt;br /&gt;
* r: Die Einträge in dem Verzeichnis sind lesbar.&lt;br /&gt;
Leserecht von verzeichnis/ entziehen&lt;br /&gt;
 xinux@zero:~$ chmod a-r verzeichnis/&lt;br /&gt;
 xinux@zero:~$ ls verzeichnis/&lt;br /&gt;
 ls: Öffnen von Verzeichnis verzeichnis/ nicht möglich: Permission denied&lt;br /&gt;
Leserecht für Benutzer und Gruppe vergeben&lt;br /&gt;
 xinux@zero:~$ chmod a+r verzeichnis/&lt;br /&gt;
 xinux@zero:~$ ls verzeichnis/&lt;br /&gt;
 text&lt;br /&gt;
&lt;br /&gt;
* w: Die Einträge in dem Verzeichnis können geändert werden. &lt;br /&gt;
Neue Datei erstellen&lt;br /&gt;
 xinux@zero:~$ touch neu&lt;br /&gt;
 xinux@zero:~$ ls neu&lt;br /&gt;
 neu&lt;br /&gt;
&lt;br /&gt;
Datei löschen&lt;br /&gt;
 xinux@zero:~$ rm neu&lt;br /&gt;
 xinux@zero:~$ ls neu&lt;br /&gt;
 ls: Zugriff auf neu nicht möglich: No such file or directory&lt;br /&gt;
&lt;br /&gt;
* x: Der Name des Verzeichnisses kann in einem Pfadnamen erscheinen.&lt;br /&gt;
Verzeichnis ohne x Recht&lt;br /&gt;
 xinux@zero:~$ chmod a-x verzeichnis/&lt;br /&gt;
Wechseln in Verzeichnis mangels x-Recht nicht möglich&lt;br /&gt;
 xinux@zero:~$ cd verzeichnis/&lt;br /&gt;
 -bash: cd: verzeichnis/: Permission denied&lt;br /&gt;
x-Recht vergeben&lt;br /&gt;
 xinux@zero:~$ chmod a+x verzeichnis/&lt;br /&gt;
damit Wechsel in Verzeichnis möglich&lt;br /&gt;
 xinux@zero:~$ cd verzeichnis/&lt;br /&gt;
 xinux@zero:~/verzeichnis$ pwd&lt;br /&gt;
 /home/xinux/verzeichnis&lt;br /&gt;
&lt;br /&gt;
====umask====&lt;br /&gt;
Neue Dateien und Verzeichnisse werden mit ein und denselben Zufriffsrechten erzeugt.&lt;br /&gt;
 xinux@zero:~$ mkdir text&lt;br /&gt;
 xinux@zero:~$ touch textdat&lt;br /&gt;
 xinux@zero:~$ ls -ld text*&lt;br /&gt;
 drwxr-xr-x 2 xinux xinux 4096 2009-06-18 11:37 text&lt;br /&gt;
 -rw-r--r-- 1 xinux xinux    0 2009-06-18 11:37 textdat&lt;br /&gt;
&lt;br /&gt;
Zuständig für dieses Verhalten ist die sogenannte umask, die oft in der Datei&lt;br /&gt;
/etc/profile auf den Wert 022 voreingestellt ist. Zusätzlich wird noch eine&lt;br /&gt;
Maximalmaske benötigt, die sich für Verzeichnisse und andere Dateien&lt;br /&gt;
unterscheidet. Die bei der Erzeugung gesetzten Rechte entstehen nun, indem von&lt;br /&gt;
der Maximalmaske der durch die umask vorgegebene Wert subtrahiert wird:&lt;br /&gt;
&lt;br /&gt;
{| border=1 cellpadding=2&lt;br /&gt;
!&lt;br /&gt;
! Dateien&lt;br /&gt;
! Verzeichnisse&lt;br /&gt;
|-&lt;br /&gt;
| Systemvorgabe&lt;br /&gt;
| 666&lt;br /&gt;
| 777&lt;br /&gt;
|-&lt;br /&gt;
| -umask&lt;br /&gt;
| 022&lt;br /&gt;
| 022&lt;br /&gt;
|-&lt;br /&gt;
| Ergebnis&lt;br /&gt;
| 644&lt;br /&gt;
| 755&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
 xinux@zero:~$ grep umask /etc/profile&lt;br /&gt;
 umask 022&lt;br /&gt;
&lt;br /&gt;
==Gruppenzugehörigkeit==&lt;br /&gt;
===newgrp===&lt;br /&gt;
Ändert die Gruppenzugehörigkeit eines Benutzers auf die angegebene Gruppe. Wenn keine Gruppe angegeben wird, wird die &lt;br /&gt;
Anmeldegruppe des Benutzers verwendet. Die neue Gruppe wird anschließend fü Zugriffskontrollen verwendet.&lt;br /&gt;
&lt;br /&gt;
 newgrp Gruppenname&lt;br /&gt;
&lt;br /&gt;
 root@zero:~# newgrp hacker&lt;br /&gt;
 root@zero:~# id&lt;br /&gt;
 uid=0(root) gid=1006(hacker) Gruppen=0(root),1006(hacker)&lt;br /&gt;
&lt;br /&gt;
===chgrp===&lt;br /&gt;
Verändert die Besitzugehörigkeit zu der angegebenen Gruppe&lt;br /&gt;
&lt;br /&gt;
 chgrp [Optionen] Gruppe Datei(en)&lt;br /&gt;
&lt;br /&gt;
Optionen:&lt;br /&gt;
 -c Zeigt Veränderungen an&lt;br /&gt;
 -f Unterdrückt die meisten Fehlermeldungen&lt;br /&gt;
 -R Verändert Dateien und Verzeichnisse rekursiv&lt;br /&gt;
 -v Gibt geschwätzige Ausgabe aus.&lt;br /&gt;
&lt;br /&gt;
 root@zero:~# ls -l&lt;br /&gt;
 ...&lt;br /&gt;
 d-wx--x--x  3 root root 4096 2009-06-18 13:34 verzeichnis&lt;br /&gt;
 &lt;br /&gt;
 root@zero:~# chgrp -R xinux verzeichnis/&lt;br /&gt;
 root@zero:~# ls -l&lt;br /&gt;
 ...&lt;br /&gt;
 d-wx--x--x  3 root xinux 4096 2009-06-18 13:34 verzeichnis&lt;br /&gt;
&lt;br /&gt;
 xinux@zero:~$ cd /root/verzeichnis/&lt;br /&gt;
 xinux@zero:/root/verzeichnis$ pwd&lt;br /&gt;
 /root/verzeichnis&lt;br /&gt;
&lt;br /&gt;
===chown===&lt;br /&gt;
Ändert den Eigentümer von einer oder mehreren Dateien in den angegebenen Benutzer. &lt;br /&gt;
chown erlaubt ebenfalls das Ändern der Gruppeneigentümreschaft. Nur der aktuelle Eigentümer einer&lt;br /&gt;
Datei oder der Superuser (root) darf die Eigentumsverhältnisse ändern.&lt;br /&gt;
&lt;br /&gt;
 chown [Optionen] Benutzer(:Gruppe) Dateien&lt;br /&gt;
&lt;br /&gt;
Optionen:&lt;br /&gt;
 -c Gibt Informationen über die veränderten Dateien aus&lt;br /&gt;
 --dereference Symbolischen Links folgen&lt;br /&gt;
 -v Gibt Informationen über alle Dateien aus, die chown zu ändern versucht, egal, ob die Änderung erfolgt ist oder nicht&lt;br /&gt;
 -R Geht rekursiv durch alle Unterverzeichnisse und führt die Änderungen durch. &lt;br /&gt;
&lt;br /&gt;
 root@zero:~# chown -R xinux.xinux verzeichnis/&lt;br /&gt;
 root@zero:~# ls -l&lt;br /&gt;
 insgesamt 12&lt;br /&gt;
 drwx------ 13 root  root  4096 2009-04-21 15:11 profile&lt;br /&gt;
 --w-------  1 root  root     0 2009-06-18 11:13 test&lt;br /&gt;
 -rw-r--r--  1 root  root    40 2009-06-18 12:04 text&lt;br /&gt;
 drwxrwx--x  3 xinux xinux 4096 2009-06-18 13:39 verzeichnis&lt;br /&gt;
 &lt;br /&gt;
 root@zero:~# chown -R -c xinux.xinux verzeichnis/&lt;br /&gt;
 &lt;br /&gt;
 root@zero:~# chown -R -v xinux.xinux verzeichnis/&lt;br /&gt;
 Eigentümer von „verzeichnis/01“ als xinux:xinux erhalten&lt;br /&gt;
 Eigentümer von „verzeichnis/test“ als xinux:xinux erhalten&lt;br /&gt;
 Eigentümer von „verzeichnis/“ als xinux:xinux erhalten&lt;br /&gt;
&lt;br /&gt;
==Eingabe/Ausgabe==&lt;br /&gt;
Standardeingabe (0): Laufende Programme erwarten von hier ihre Eingaben (normalerweise handelt es sich um die Tastatur).&lt;br /&gt;
&lt;br /&gt;
Standardausgabe (1): Programme schreiben auf diese ihre Ausgaben (Bildschirm).&lt;br /&gt;
&lt;br /&gt;
Standardfehlerausgabe (2) : Fehlerausgaben landen hier (Bildschirm, aber nur die aktive Konsole).&lt;br /&gt;
&lt;br /&gt;
[[Bild:std.jpg]]&lt;br /&gt;
&lt;br /&gt;
===cat===&lt;br /&gt;
Das Programm cat liest von STDIN und gibt es STDOUT wieder aus&lt;br /&gt;
&lt;br /&gt;
Einlesen der Datei text&lt;br /&gt;
 root@zero:~# cat &amp;lt; text&lt;br /&gt;
 wichtig&lt;br /&gt;
&lt;br /&gt;
Schreiben in die Datei text, dies überschreibt den bisherigen Inhalt der Datei&lt;br /&gt;
 root@zero:~# cat &amp;gt; text&lt;br /&gt;
 sogar noch wichtiger &lt;br /&gt;
 &lt;br /&gt;
Ausgeben der Datei text&lt;br /&gt;
 root@zero:~# cat text &lt;br /&gt;
 sogar noch wichtiger&lt;br /&gt;
&lt;br /&gt;
Lesen aus der Datei text und schreiben in die Datei neuertext&lt;br /&gt;
 root@zero:~# cat &amp;lt; text &amp;gt; neuertext&lt;br /&gt;
 root@zero:~# cat neuertext&lt;br /&gt;
 sogar noch wichtiger&lt;br /&gt;
&lt;br /&gt;
Anhängen der Ausgabe von date an die Datei neuertext&lt;br /&gt;
 root@zero:~# date &amp;gt;&amp;gt; neuertext&lt;br /&gt;
 root@zero:~# cat neuertext&lt;br /&gt;
 sogar noch wichtiger&lt;br /&gt;
 Do 18. Jun 14:08:58 CEST 2009&lt;br /&gt;
&lt;br /&gt;
Umleiten des Standardfehlerkanals nach error&lt;br /&gt;
 root@zero:~# rm sux 2&amp;gt; error&lt;br /&gt;
 root@zero:~# more error&lt;br /&gt;
 rm: Entfernen von „sux“ nicht möglich: No such file or directory&lt;br /&gt;
&lt;br /&gt;
===Umleitungen===&lt;br /&gt;
Nacheinander auszuführende Kommandos&lt;br /&gt;
 root@zero:~# pwd; date&lt;br /&gt;
 /root&lt;br /&gt;
 Do 18. Jun 14:13:05 CEST 2009&lt;br /&gt;
 &lt;br /&gt;
Übergeben der Ausgabe von tail als Eingabe von grep mit Hilfe der Pipe &amp;quot;|&amp;quot;&lt;br /&gt;
 root@zero:~# tail /var/log/auth.log | grep xinux&lt;br /&gt;
 Jun 18 13:52:33 zero nss_wins[11433]: pam_unix(login:session): session closed for user xinux&lt;br /&gt;
&lt;br /&gt;
Übergeben der letzten 100 Zeilen von syslog als Eingabe von grep&lt;br /&gt;
 root@zero:~# tail /var/log/syslog -n 100 | grep error&lt;br /&gt;
 Jun 18 09:30:54 zero kernel: [154384.692135] end_request: I/O error, dev fd0, sector 0&lt;br /&gt;
 Jun 18 09:30:54 zero kernel: [154384.712137] end_request: I/O error, dev fd0, sector 0&lt;br /&gt;
&lt;br /&gt;
==tr==&lt;br /&gt;
tr ist ein Programm um Zeichen zu übersetzen. Dies betrifft nur die Ausgabe, die Datei selbst bleibt unverändert.&lt;br /&gt;
&lt;br /&gt;
Ersetzt Kleinbuchstaben durch Großbuchstaben aus der Datei text&lt;br /&gt;
 root@zero:~# tr &amp;quot;a-z&amp;quot; &amp;quot;A-Z&amp;quot; &amp;lt; text&lt;br /&gt;
 SOGAR NOCH WICHTIGER&lt;br /&gt;
 123&lt;br /&gt;
 34&lt;br /&gt;
 4711&lt;br /&gt;
 TEST&lt;br /&gt;
&lt;br /&gt;
Ersetzt alle Zahlen durch X&lt;br /&gt;
 root@zero:~# tr &amp;quot;0-9&amp;quot; &amp;quot;X&amp;quot; &amp;lt; text&lt;br /&gt;
 sogar noch wichtiger&lt;br /&gt;
 XXX&lt;br /&gt;
 XX&lt;br /&gt;
 XXXX&lt;br /&gt;
 test&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
 root@zero:~# cat &amp;gt; test&lt;br /&gt;
 +++++&lt;br /&gt;
 ###&lt;br /&gt;
 1111&lt;br /&gt;
&lt;br /&gt;
-s löscht mehrfach kommende Zeichen&lt;br /&gt;
 root@zero:~# tr '''-s''' &amp;quot;+&amp;quot; &amp;lt; test&lt;br /&gt;
 +&lt;br /&gt;
 ###&lt;br /&gt;
 1111&lt;br /&gt;
&lt;br /&gt;
-d löscht vorkommende Zeichen &lt;br /&gt;
 root@zero:~# tr '''-d''' &amp;quot;#&amp;quot; &amp;lt; test&lt;br /&gt;
 +++++ &lt;br /&gt;
 &lt;br /&gt;
 1111&lt;br /&gt;
&lt;br /&gt;
==cut==&lt;br /&gt;
Spalten aus einer Datei schneiden. Dies betrifft nur die Ausgabe, die Datei selbst bleibt unverändert.&lt;br /&gt;
 &lt;br /&gt;
Schneidet die erste Spalte aus, der Delimiter ist : &lt;br /&gt;
 root@zero:~# cut -f 1 -d : /etc/passwd&lt;br /&gt;
 root&lt;br /&gt;
 daemon&lt;br /&gt;
 bin&lt;br /&gt;
 ...&lt;br /&gt;
 xinux&lt;br /&gt;
&lt;br /&gt;
 root@zero:~# more test&lt;br /&gt;
 1234#5678#9999&lt;br /&gt;
 &lt;br /&gt;
Schneidet die zweite Spalte aus, der Delimiter ist #&lt;br /&gt;
 root@zero:~# cut -f 2 -d &amp;quot;#&amp;quot; &amp;lt; test&lt;br /&gt;
 5678&lt;br /&gt;
&lt;br /&gt;
Schneidet bis zum 3 Zeichen ab&lt;br /&gt;
 root@zero:~$ echo S01policykit | cut -c 4-&lt;br /&gt;
 policykit&lt;br /&gt;
&lt;br /&gt;
==expand==&lt;br /&gt;
Ersetzt Tabulatorzeichen durch Folgen von Leerzeichen und schreibt das Ergebnis auf die Standardausgabe&lt;br /&gt;
 root@zero:~# expand /etc/samba/smb.conf&lt;br /&gt;
 ...&lt;br /&gt;
&lt;br /&gt;
==fmt==&lt;br /&gt;
#Setzt den Text der Dateien im Blocksatz der angegebenen Breite durch Auffüllen von Zeilen und Entfernen von Zeilenwechseln.&lt;br /&gt;
Standardgemäß werden Leerzeilen, die Position von Leerzeichen und der Einzug am Zeilenanfang erhalten. fmt versucht, &lt;br /&gt;
Zeilenumbrüche an Satzenden durchzuführen sowie sie nach dem ersten oder vor dem letzten Wort eines Satzes zu vermeiden. &lt;br /&gt;
 &lt;br /&gt;
 fmt [Optionen] [Dateien]&lt;br /&gt;
&lt;br /&gt;
Optionen&lt;br /&gt;
&lt;br /&gt;
* -p ''Präfix'': Formatiert nur Zeilen, die mit ''Präfix'' anfangen&lt;br /&gt;
 root@zero:/tmp# fmt -p '#' text&lt;br /&gt;
 #Setzt den Text der Dateien im Blocksatz der angegebenen Breite durch&lt;br /&gt;
 #Auffüllen von Zeilen und Entfernen von Zeilenwechseln.  Standardgemäß&lt;br /&gt;
 #werden Leerzeilen, die Position von Leerzeichen und der Einzug am&lt;br /&gt;
 #Zeilenanfang erhalten. fmt versucht,&lt;br /&gt;
 Zeilenumbrüche an Satzenden durchzuführen sowie sie nach dem ersten oder vor dem letzten Wort eines Satzes zu vermeiden.&lt;br /&gt;
&lt;br /&gt;
* -u : Erzwingt genau ein Leerzeichen zwischen Wörtern und zwei Leerzeichen zwischen Sätzen&lt;br /&gt;
&lt;br /&gt;
* -w ''Breite'': Setzt die Ausgabebreite auf ''Breite''&lt;br /&gt;
 root@zero:/tmp# fmt -w 30 text&lt;br /&gt;
 #Setzt den Text der Dateien&lt;br /&gt;
 im Blocksatz der angegebenen&lt;br /&gt;
 Breite durch Auffüllen&lt;br /&gt;
 von Zeilen und Entfernen&lt;br /&gt;
 von Zeilenwechseln.&lt;br /&gt;
 #Standardgemäß werden&lt;br /&gt;
 Leerzeilen, die Position von&lt;br /&gt;
 Leerzeichen und der Einzug am&lt;br /&gt;
 Zeilenanfang erhalten. fmt&lt;br /&gt;
 versucht, Zeilenumbrüche&lt;br /&gt;
 an Satzenden durchzuführen&lt;br /&gt;
 sowie sie nach dem ersten&lt;br /&gt;
 oder vor dem letzten Wort&lt;br /&gt;
 eines Satzes zu vermeiden.&lt;br /&gt;
&lt;br /&gt;
==join==&lt;br /&gt;
Führt die Zeilen zweier sortierter Dateien anhand von '''Übereinstimmungen''' in einem gemeinsamen Feld zusammen.&lt;br /&gt;
&lt;br /&gt;
 root@zero:~# more name&lt;br /&gt;
 1. karl&lt;br /&gt;
 2. heinz&lt;br /&gt;
 3. hans&lt;br /&gt;
 4. otto&lt;br /&gt;
 root@zero:~# more tel&lt;br /&gt;
 1. 1234&lt;br /&gt;
 2. 4321&lt;br /&gt;
 3. 222&lt;br /&gt;
 4. 121212&lt;br /&gt;
 root@zero:~# join name tel &amp;gt; telefonbuch&lt;br /&gt;
 root@zero:~# more telefonbuch&lt;br /&gt;
 1. karl 1234&lt;br /&gt;
 2. heinz 4321&lt;br /&gt;
 3. hans 222&lt;br /&gt;
 4. otto 121212&lt;br /&gt;
&lt;br /&gt;
 root@zero:~# join -t : /etc/passwd /etc/shadow&lt;br /&gt;
 ....&lt;br /&gt;
 daemon:x:1:1:daemon:/usr/sbin:/bin/sh:*:14181:0:99999:7:::&lt;br /&gt;
 bin:x:2:2:bin:/bin:/bin/sh:*:14181:0:99999:7:::&lt;br /&gt;
 sys:x:3:3:sys:/dev:/bin/sh:*:14181:0:99999:7:::&lt;br /&gt;
 sync:x:4:65534:sync:/bin:/bin/sync:*:14181:0:99999:7:::&lt;br /&gt;
 ...&lt;br /&gt;
&lt;br /&gt;
join in dat1 nach Feld 3 und in dat2 nach Feld 2&lt;br /&gt;
 thomas@lydia:~$ cat dat1 &lt;br /&gt;
 hugo:ps:1111&lt;br /&gt;
 erwin:zw:2222&lt;br /&gt;
 karl:sb:3333&lt;br /&gt;
 rudi:kl:4444&lt;br /&gt;
 thomas@lydia:~$ cat dat2&lt;br /&gt;
 blau:1111:svn&lt;br /&gt;
 grün:2222:fcs&lt;br /&gt;
 gelb:3333:fch&lt;br /&gt;
 rot:4444:fck&lt;br /&gt;
 thomas@lydia:~$ join -t : -1 3 -2 2 dat1 dat2 &lt;br /&gt;
 1111:hugo:ps:blau:svn&lt;br /&gt;
 2222:erwin:zw:grün:fcs&lt;br /&gt;
 3333:karl:sb:gelb:fch&lt;br /&gt;
 4444:rudi:kl:rot:fck&lt;br /&gt;
&lt;br /&gt;
==nl==&lt;br /&gt;
Nummeriert die Zeilen in einer Datei.&lt;br /&gt;
&lt;br /&gt;
 root@zero:~# nl /etc/passwd                                                   &lt;br /&gt;
     1  root:x:0:0:root:/root:/bin/bash                                       &lt;br /&gt;
     2  daemon:x:1:1:daemon:/usr/sbin:/bin/sh                                 &lt;br /&gt;
     3  bin:x:2:2:bin:/bin:/bin/sh                                            &lt;br /&gt;
     4  sys:x:3:3:sys:/dev:/bin/sh                                            &lt;br /&gt;
     5  sync:x:4:65534:sync:/bin:/bin/sync&lt;br /&gt;
     ...&lt;br /&gt;
Nummereriet mit führenden Nullen der Separatir ist ein :&lt;br /&gt;
 root@zero:~# nl -s : -n rz dat1&lt;br /&gt;
&lt;br /&gt;
==od==&lt;br /&gt;
Gibt Dateien im Oktal und anderen Formaten aus.&lt;br /&gt;
&lt;br /&gt;
 od [Optionen] Datei&lt;br /&gt;
&lt;br /&gt;
* -j ''Bytes'': Überspringt die Anzahl ''Bytes'' einer Datei&lt;br /&gt;
* -N ''Bytes'': Gibt nur die Anzahl ''Bytes'' aus&lt;br /&gt;
* -c : Gebe ASCII Zeichen aus&lt;br /&gt;
* -f : Gebe Fließkommazahlen aus&lt;br /&gt;
* -i : Gebe Dezimal Integer aus&lt;br /&gt;
* -l : Gebe Dezimal Long aus&lt;br /&gt;
* -o : Gebe Oktal 2 Byte Einheiten aus&lt;br /&gt;
* -s : Gebe Dezimal 2 Byte Einheiten aus&lt;br /&gt;
* -x : Gebe Hexadezimale 2 Byte einheiten aus&lt;br /&gt;
&lt;br /&gt;
Beispiele&lt;br /&gt;
&lt;br /&gt;
Gebe Master Boot Record (die ersten 512 Byte der Festplatte /dev/sda) als Hexadezimal aus&lt;br /&gt;
 root@zero:~# od '''-x -N''' 512 /dev/sda&lt;br /&gt;
 0000000 48eb 1090 d08e 00bc b8b0 0000 d88e c08e&lt;br /&gt;
 0000020 befb 7c00 00bf b906 0200 a4f3 21ea 0006&lt;br /&gt;
 0000040 be00 07be 0438 0b75 c683 8110 fefe 7507&lt;br /&gt;
 0000060 ebf3 b416 b002 bb01 7c00 80b2 748a 0203&lt;br /&gt;
 0000100 00ff 2000 0001 0000 0200 90fa f690 80c2&lt;br /&gt;
 ...&lt;br /&gt;
&lt;br /&gt;
Schreibe &amp;quot;suxer&amp;quot; in die Datei test&lt;br /&gt;
 root@zero:~# echo &amp;quot;suxer&amp;quot; &amp;gt; test&lt;br /&gt;
Ausgabe Hexadezimal&lt;br /&gt;
 root@zero:~# od -x test&lt;br /&gt;
 0000000 7573 6578 0a72&lt;br /&gt;
 0000006&lt;br /&gt;
&lt;br /&gt;
Ausgabe ASCII Zeichen&lt;br /&gt;
 root@zero:~# od -c test&lt;br /&gt;
 0000000   s   u   x   e   r  \n&lt;br /&gt;
 0000006&lt;br /&gt;
&lt;br /&gt;
==paste==&lt;br /&gt;
Fügt die Zeilen von zwei oder mehr Dateien horizontal zusammen&lt;br /&gt;
 root@zero:~# paste name tel&lt;br /&gt;
 1. karl 1. 1234&lt;br /&gt;
 2. heinz        2. 4321&lt;br /&gt;
 3. hans 3. 222&lt;br /&gt;
 4. otto 4. 121212&lt;br /&gt;
&lt;br /&gt;
==pr==&lt;br /&gt;
Bereitet Textdateien zum Drucken vor.&lt;br /&gt;
&lt;br /&gt;
 root@zero:~# echo &amp;quot;Plan für heute&amp;quot; &amp;gt; dokument&lt;br /&gt;
 root@zero:~# more dokument&lt;br /&gt;
 Plan für heute&lt;br /&gt;
 root@zero:~# pr dokument   &lt;br /&gt;
  &lt;br /&gt;
 &lt;br /&gt;
 2009-06-19 12:44                    dokument                     Seite 1&lt;br /&gt;
 &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
 Plan für heute&lt;br /&gt;
&lt;br /&gt;
Anmerkung Ausmaße der Bildschirmausgabe wie eine Druckseite.&lt;br /&gt;
&lt;br /&gt;
==sed==&lt;br /&gt;
streaming editor. Mit sed ist es möglich, den Inhalt einer Datei automatisch (nicht interaktiv) zu&lt;br /&gt;
bearbeiten. Wie unter Linux üblich, wird auch hier der Text nicht wirklich verändert sondern die &lt;br /&gt;
Änderung erfolgt über die Standardausgabe, die wieder umgeleitet werden kann. Die Syntax ist ähnlich &lt;br /&gt;
des ex modus von vi. Reguläre Ausdrücke können nach Belieben benutzt werden. &lt;br /&gt;
&lt;br /&gt;
Optionen:&lt;br /&gt;
 -e Zeichenkette  wendet die Editorbefehle aus Zeichenkette auf den Text an.&lt;br /&gt;
 -n gibt nur die Zeilen aus, die explizit (durch &amp;quot;p&amp;quot; ausgedruckt werden sollen&lt;br /&gt;
&lt;br /&gt;
Gibt die dritte Zeile der Datei text aus&lt;br /&gt;
 root@zero:~# sed -n &amp;quot;3p&amp;quot; text&lt;br /&gt;
 34&lt;br /&gt;
&lt;br /&gt;
Gibt die erste bis dritte Zeile von text aus&lt;br /&gt;
 root@zero:~# sed -n &amp;quot;1,3p&amp;quot; text&lt;br /&gt;
 sogar noch wichtiger&lt;br /&gt;
 123&lt;br /&gt;
 34&lt;br /&gt;
&lt;br /&gt;
Löschen der Zeile mit &amp;quot;sogar&amp;quot;&lt;br /&gt;
 root@zero:~# sed -e '/sogar/d' &amp;lt; text&lt;br /&gt;
 123&lt;br /&gt;
 34&lt;br /&gt;
 4711&lt;br /&gt;
 test&lt;br /&gt;
&lt;br /&gt;
und schreiben in text2&lt;br /&gt;
 root@zero:~# sed -e '/sogar/d' &amp;lt; text &amp;gt; text2&lt;br /&gt;
 root@zero:~# more text2&lt;br /&gt;
 123&lt;br /&gt;
 34&lt;br /&gt;
 4711&lt;br /&gt;
 test&lt;br /&gt;
&lt;br /&gt;
Alle 3en durch DREI ersetzen&lt;br /&gt;
 root@zero:~# sed -e 's/3/DREI/g' &amp;lt; text&lt;br /&gt;
 sogar noch wichtiger&lt;br /&gt;
 12DREI&lt;br /&gt;
 DREI4&lt;br /&gt;
 4711&lt;br /&gt;
 test&lt;br /&gt;
&lt;br /&gt;
==wc==&lt;br /&gt;
Zählt die Anzahl von Zeichen, Wörter oder Zeilen&lt;br /&gt;
&lt;br /&gt;
Optionen&lt;br /&gt;
* -m : Zählt die Anzahl der Zeichen&lt;br /&gt;
 root@zero:~# more name&lt;br /&gt;
 1. karl&lt;br /&gt;
 2. heinz&lt;br /&gt;
 3. hans&lt;br /&gt;
 4. otto&lt;br /&gt;
 root@zero:~# wc '''-m''' tel&lt;br /&gt;
 33 tel&lt;br /&gt;
&lt;br /&gt;
* -w : Zählt die Anzahl der Wörter (einschließlich Zahlen und andere Zeichen)&lt;br /&gt;
 root@zero:~# wc '''-w''' name&lt;br /&gt;
 8 name&lt;br /&gt;
&lt;br /&gt;
* -l : Zählt die Anzahl der Zeilen&lt;br /&gt;
 root@zero:~# wc '''-l''' name&lt;br /&gt;
 4 name&lt;br /&gt;
&lt;br /&gt;
==Sort==&lt;br /&gt;
&lt;br /&gt;
Zum sortieren von Dateien nach Feldern benutzt man sort. sort liest von STDIN man kann die Datei aber auch als Argument übergeben. &lt;br /&gt;
&lt;br /&gt;
Sortiert nach dem ersten Feld&lt;br /&gt;
  root@zero:~# sort /etc/passwd 	 &lt;br /&gt;
&lt;br /&gt;
Es wird geprüft ob die Datei schon sortiert ist &lt;br /&gt;
 root@zero:~# sort -c /etc/passwd 	&lt;br /&gt;
&lt;br /&gt;
Sortiert nach dem ersten Feld (Richtungsumkehr)  &lt;br /&gt;
 root@zero:~#  sort -r /etc/passwd&lt;br /&gt;
&lt;br /&gt;
Führende Leersortzeichen werden ignoriert &lt;br /&gt;
 root@zero:~# sort -b /etc/passwd&lt;br /&gt;
&lt;br /&gt;
Ausgabe  in die Datei pass&lt;br /&gt;
 root@zero:~# sort  /etc/passwd   -o pass	 &lt;br /&gt;
&lt;br /&gt;
nimmt : als Trenner -Voreinstellung ist TAB&lt;br /&gt;
  root@zero:~# sort -t : /etc/passwd&lt;br /&gt;
&lt;br /&gt;
sortiert nach dem  3 Feld,  der Trenner ist : und es wird nummerisch sortiert&lt;br /&gt;
&lt;br /&gt;
 root@zero:~# sort -t: +2 -n /etc/passwd		&lt;br /&gt;
&lt;br /&gt;
sortiert nach dem  3 Feld,  der Trenner ist : und es wird nummerisch sortiert&lt;br /&gt;
					&lt;br /&gt;
 root@zero:~# sort -t: -k 3 -n /etc/passwd&lt;br /&gt;
&lt;br /&gt;
Sortiert nach dem  3  bis zum 5 Feld, der Trenner ist : und es wird nummerisch sortiert&lt;br /&gt;
	&lt;br /&gt;
 root@zero:~# sort -t: -k 3,5 -n /etc/passwd	&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==INodes==&lt;br /&gt;
Inode (oder I-Node) wird im Deutschen am besten als Informationsknoten oder&lt;br /&gt;
Indexeintrag bezeichnet. Er fasst alle Attribute einer Datei zusammen außer dem Inhalt&lt;br /&gt;
und dem Namen der Datei.&lt;br /&gt;
&lt;br /&gt;
===Daten===&lt;br /&gt;
{| border=1 cellpadding=2&lt;br /&gt;
|type&lt;br /&gt;
|Der Typ der Datei wird als einzelner Buchstabe angezeigt. Der Typ einer Datei wird beim Anlegen der Datei festgelegt&lt;br /&gt;
|-&lt;br /&gt;
|Permissions &lt;br /&gt;
|Die Zugriffsrechte der Datei werden in den 12 Bit sstrwxrwxrwx abgespeichert.Wenn sie gesetzt sind, werden sie bei &lt;br /&gt;
der Ausgabe an Stelle der x-Rechte ausgegeben. Die Zugriffsrechte können mit dem Kommando chmod verändert werden.&lt;br /&gt;
|-&lt;br /&gt;
|link count&lt;br /&gt;
|In UNIX kann eine Datei mehr als einen Namen haben. Der Link Count gibt die Anzahl der Namen einer Datei an. Er kann&lt;br /&gt;
mit dem Kommando ln erhöht und dem Kommando rm erniedrigt werden.&lt;br /&gt;
|-&lt;br /&gt;
|owner&lt;br /&gt;
|Für den Dateieigentümer gelten die in der ersten rwx-Gruppe festgelegten Zugriffsrechte. Standardmäßig ist der &lt;br /&gt;
Eigentümer einer Datei derjenige Benutzer, der die Datei angelegt hat.&lt;br /&gt;
|-&lt;br /&gt;
|group&lt;br /&gt;
|Für Benutzer, die in der gleichen Gruppe sind, der die Datei angehört, gelten die in der zweiten rwx-Gruppe festgelegten&lt;br /&gt;
Zugriffsrechte. In System V gehört eine Datei standardmäßig der Gruppe an, in der der anlegende Benutzer gerade ist.&lt;br /&gt;
|-&lt;br /&gt;
|size&lt;br /&gt;
|Bei normalen Dateien und Verzeichnissen gibt diese Information die Länge der Datei in Byte an.&lt;br /&gt;
|-&lt;br /&gt;
|access time&lt;br /&gt;
|Die Zugriffszeit gibt den Zeitpunkt des letzten Lesezugriffes auf eine Datei an. Aus Effizienzgründen wird die &lt;br /&gt;
Zugriffszeit an Verzeichnissen nicht gesetzt, wenn ein Verzeichnis durchsucht wird, obwohl man dies erwarten könnte. ''(ls -l --time=atime)''&lt;br /&gt;
|-&lt;br /&gt;
|modification time&lt;br /&gt;
|Die Modifikationszeit gibt die Zeit des letzten Schreibzugriffes auf die Daten der Datei an. Intern speichert UNIX &lt;br /&gt;
die Zeit als Sekunden seit Beginn des Jahres 1970 und in GMT ab. Für die Ausgabe wird dies in ein besser lesbares &lt;br /&gt;
Format in der lokalen Zeitzone umgewandelt. ''(ls -l)''&lt;br /&gt;
|-&lt;br /&gt;
|change time &lt;br /&gt;
|Die Veränderungszeit gibt das Datum der letzten Statusänderung der Datei an. Sie wird immer dann gesetzt, wenn die &lt;br /&gt;
Informationen über die Datei sich ändern (Datum der Erzeugung wird nicht gespeichert) ''(ls -lc)''&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
===Dateiarten===&lt;br /&gt;
{| border=1 cellpadding=2&lt;br /&gt;
!Zeichen&lt;br /&gt;
!Typ&lt;br /&gt;
!Zweck&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;nowiki&amp;gt;-&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
|file&lt;br /&gt;
|normale Datei&lt;br /&gt;
|-&lt;br /&gt;
|d&lt;br /&gt;
|directory&lt;br /&gt;
|Verzeichnis&lt;br /&gt;
|-&lt;br /&gt;
|b&lt;br /&gt;
|block device&lt;br /&gt;
|Gerätedatei&lt;br /&gt;
|-&lt;br /&gt;
|c&lt;br /&gt;
|character device&lt;br /&gt;
|Gerätedatei&lt;br /&gt;
|-&lt;br /&gt;
|l&lt;br /&gt;
|link&lt;br /&gt;
|Querverweis&lt;br /&gt;
|-&lt;br /&gt;
|p&lt;br /&gt;
|named pipe&lt;br /&gt;
|Benannte Pipeline&lt;br /&gt;
|-&lt;br /&gt;
|s&lt;br /&gt;
|socket&lt;br /&gt;
|Netzwerkverbindung&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
====Normale Dateien====&lt;br /&gt;
Unter einer normalen Datei versteht man die Ansammlung von Daten. Dies kann ein Text, Programm, Bild oder sonstiges sein. &lt;br /&gt;
Beispiel&lt;br /&gt;
 root@zero:~# ls -l text | cut -c 1&lt;br /&gt;
 -&lt;br /&gt;
&lt;br /&gt;
====Verzeichnisse====&lt;br /&gt;
Dateien werden in Verzeichnissen gespeichert, nur so ist eine Ordnung möglich. &lt;br /&gt;
 root@zero:~# mkdir -v Ordner&lt;br /&gt;
 mkdir: Verzeichnis „Ordner“ angelegt&lt;br /&gt;
 &lt;br /&gt;
 root@zero:~# ls -ld Ordner | cut -c 1&lt;br /&gt;
 d&lt;br /&gt;
&lt;br /&gt;
====Gerätedateien (Block und Char)====&lt;br /&gt;
Gerätedateien ermöglichen Anwendungsprogrammen unter Benutzung des  Kernels den Zugriff auf die Hardwarekomponenten des Systems. Ansprechbar über Major und Minor Nummern &lt;br /&gt;
&lt;br /&gt;
Beispiele&lt;br /&gt;
&lt;br /&gt;
Sicherung des Master Boot Records der ersten Festplatte&lt;br /&gt;
 root@zero:~# dd if=/dev/sda of=/tmp/mbr.img bs=512 count=1&lt;br /&gt;
&lt;br /&gt;
Block Device &lt;br /&gt;
 root@zero:~# ls -l /dev/sda | cut -c 1 &lt;br /&gt;
 b&lt;br /&gt;
&lt;br /&gt;
Character Device &lt;br /&gt;
 root@zero:~# ls -l /dev/ttyS0  | cut -c 1 &lt;br /&gt;
 c&lt;br /&gt;
&lt;br /&gt;
Erstellen einer Gerätedatei&lt;br /&gt;
 root@zero:/dev# mknod sata1 b 8 0 &lt;br /&gt;
 root@zero:/dev# fdisk -l /dev/sata1 &lt;br /&gt;
 &lt;br /&gt;
 Platte /dev/sata1: 6442 MByte, 6442450944 Byte&lt;br /&gt;
 255 Köpfe, 63 Sektoren/Spuren, 783 Zylinder&lt;br /&gt;
 Einheiten = Zylinder von 16065 × 512 = 8225280 Bytes&lt;br /&gt;
 Disk identifier: 0x0005efab&lt;br /&gt;
 &lt;br /&gt;
       Gerät  boot.     Anfang        Ende     Blöcke   Id  System&lt;br /&gt;
 /dev/sata1p1   *           1         743     5968116   83  Linux&lt;br /&gt;
 /dev/sata1p2             744         783      321300    5  Erweiterte&lt;br /&gt;
 /dev/sata1p5             744         783      321268+  82  Linux Swap / Solaris&lt;br /&gt;
&lt;br /&gt;
====Named Pipes====&lt;br /&gt;
Benannte Pipes (Named Pipes) können dagegen auch zur Kommunikation zwischen Prozessen eingesetzt werden, die nicht miteinander&lt;br /&gt;
verwandt sind und sich darüber hinaus auf unterschiedlichen Rechnern innerhalb eines Netzwerkes befinden dürfen. Sie sind &lt;br /&gt;
flexibler als anonyme Pipes und eignen sich für sogenannte Client-Server-Anwendungen (es lassen sich auch RPCs realisieren).&lt;br /&gt;
Benannte Pipes ermöglichen die gleichzeitige Kommunikation in beide Richtungen, das heißt, Daten können im Vollduplexbetrieb &lt;br /&gt;
zwischen den Prozessen ausgetauscht werden.&lt;br /&gt;
 &lt;br /&gt;
Erstelle Named Pipe mit Namen /tmp/roehre. Schreibe &amp;quot;hallo welt&amp;quot; in die Pipe und bleibe&lt;br /&gt;
 xinux@zero:~$ mkfifo /tmp/roehre&lt;br /&gt;
 xinux@zero:~$ echo hallo welt &amp;gt; /tmp/roehre &lt;br /&gt;
&lt;br /&gt;
Gebe Inhalt der Pipe mit cat aus&lt;br /&gt;
 root@zero:~# cat &amp;lt; /tmp/roehre &lt;br /&gt;
 hallo welt&lt;br /&gt;
 root@zero:~# ls -l /tmp/roehre | cut -c 1&lt;br /&gt;
 p&lt;br /&gt;
&lt;br /&gt;
====Sockets====&lt;br /&gt;
Schnittstelle um es lokalen Anwendungen zu ermöglichen, miteinander Netwerkmässig zu kommunizieren.&lt;br /&gt;
&lt;br /&gt;
 root@lydia:~# netstat  -lnxp | tail -1&lt;br /&gt;
  unix  2 [ ACC ] STREAM HÖRT 21951 6646/nm-applet /tmp/orbit-thomas/linc-19f6-0-2b9b81095cede&lt;br /&gt;
&lt;br /&gt;
 root@lydia:~# ls -l /tmp/orbit-thomas/linc-19f6-0-2b9b81095cede  | cut -c 1 &lt;br /&gt;
 s&lt;br /&gt;
&lt;br /&gt;
====Links====&lt;br /&gt;
Bei Links handelt es sich um symbolische Verweise auf andere Dateien&lt;br /&gt;
&lt;br /&gt;
'''Softlink'''&lt;br /&gt;
Ein Softlink ist eine Datei die nur auf den Namen einer anderen Datei verweist. Wenn die Originaldatei gelöscht wird, zeigt &lt;br /&gt;
der Link ins Leere. &lt;br /&gt;
&lt;br /&gt;
 ln -s datei softlink&lt;br /&gt;
&lt;br /&gt;
{| border=1 cellpadding=2&lt;br /&gt;
| Vorteile&lt;br /&gt;
| Symbolische Links können auch auf Verzeichnisse angelegt werden&amp;lt;br&amp;gt;Sie sind partitionsübergreifend&amp;lt;br&amp;gt;Man kann sie auf Dateien anlegen, die noch nicht existieren&lt;br /&gt;
|-&lt;br /&gt;
| Nachteile&lt;br /&gt;
| Wenn das Original gelöscht ist, ist kein Zugriff mehr möglich&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Beispiel&lt;br /&gt;
 root@zero:~# ln -s text verweis&lt;br /&gt;
 root@zero:~# ls -l verweis&lt;br /&gt;
 lrwxrwxrwx 1 root root 4 2009-06-18 15:48 verweis -&amp;gt; text&lt;br /&gt;
&lt;br /&gt;
'''Hardlinks'''&lt;br /&gt;
 ln datei hardlink&lt;br /&gt;
Eigentlich ist jede Datei ein Hardlink. Ein Hardlink ist ein Verzeichniseintrag,&lt;br /&gt;
der auf eine Inode verweist. Beim Erzeugen einer Datei verweist ein Eintrag auf&lt;br /&gt;
eine Inode. Man kann dann weitere Verweise erzeugen. Der Linkcounter wird&lt;br /&gt;
jeweils um 1 erhöht. Beim Löschen einer Datei wird er jeweils um 1 reduziert.&lt;br /&gt;
Wird der Wert 0 erreicht, ist die Datei gelöscht.&lt;br /&gt;
{| border=1 cellpadding=2&lt;br /&gt;
| Vorteile&lt;br /&gt;
|Zugriff auf die Daten, selbst wenn das Orginal gelöscht ist.&lt;br /&gt;
|-&lt;br /&gt;
|Nachteile&lt;br /&gt;
|Man kann keine Hardlinks auf Verzeichnisse anlegen.&lt;br /&gt;
Ist nur innerhalb einer Partion möglich.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Beispiel&lt;br /&gt;
 root@zero:~# touch 1&lt;br /&gt;
 root@zero:~# echo &amp;quot;text&amp;quot; &amp;gt; 1&lt;br /&gt;
 root@zero:~# ln 1 2&lt;br /&gt;
 root@zero:~# more 2&lt;br /&gt;
 text&lt;br /&gt;
 root@zero:~# echo &amp;quot;doch kein text&amp;quot; &amp;gt; 1&lt;br /&gt;
 root@zero:~# more 1&lt;br /&gt;
 doch kein text&lt;br /&gt;
 root@zero:~# more 2&lt;br /&gt;
 doch kein text&lt;br /&gt;
&lt;br /&gt;
Weitere Optionen:&lt;br /&gt;
 -b sichert Dateien, statt sie zu überschreiben &lt;br /&gt;
 -f Überschreibt bestehende, gleichnamige Dateien&lt;br /&gt;
 -i fragt vor dem Überschreiben nach Bestätigung&lt;br /&gt;
 -v ausführliche Meldungen&lt;br /&gt;
Softlink mit dem Namen passwd im Homeverzeichnis angelegt&lt;br /&gt;
 xinux@zero:~$ ln -vs /etc/passwd .&lt;br /&gt;
 „./passwd“ -&amp;gt; „/etc/passwd“&lt;br /&gt;
Softlink mit dem Namen passwd im Homeverzeichnis angelegt(Original exestiert nicht) &lt;br /&gt;
 xinux@zero:~$ ln -vs /etc/hund .&lt;br /&gt;
 „./hund“ -&amp;gt; „/etc/hund“&lt;br /&gt;
Hardlink mit dem Namen hosts im Homeverzeichnis angelegt&lt;br /&gt;
  xinux@zero:~$ ln -v /etc/hosts .&lt;br /&gt;
 „./hosts“ =&amp;gt; „/etc/hosts“&lt;br /&gt;
Auf eine nicht existierende Datei kann kein Hardlink angelegt werden!&lt;br /&gt;
 xinux@zero:~$ ln -v /etc/katze .&lt;br /&gt;
 ln: Zugriff auf „/etc/katze“: No such file or directory&lt;br /&gt;
&lt;br /&gt;
==Shellsonderzeichen==&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot; cellpadding=&amp;quot;2&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
|;&lt;br /&gt;
|Trenne Kommandos&lt;br /&gt;
|-&lt;br /&gt;
|. oder source&lt;br /&gt;
|Ausführen wie in aktueller Shell&lt;br /&gt;
|-&lt;br /&gt;
|#&lt;br /&gt;
|Kommentar&lt;br /&gt;
|-&lt;br /&gt;
|&amp;amp;&lt;br /&gt;
|Programm im Hintergrund starten &lt;br /&gt;
|-&lt;br /&gt;
|&amp;amp;&amp;amp;&lt;br /&gt;
|UND -Ausführung  (wenn links wahr dann führe rechts aus)&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;nowiki&amp;gt;|&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
|STOUT von links wird zu STDIN von rechts &lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;nowiki&amp;gt;||&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
|ODER -Ausführung (wenn links falsch dann führe rechts aus)&lt;br /&gt;
|-&lt;br /&gt;
|*&lt;br /&gt;
|steht für beliebig viel Zeichen auch 0 &lt;br /&gt;
|-&lt;br /&gt;
|?&lt;br /&gt;
|steht für genau ein Zeichen &lt;br /&gt;
|-&lt;br /&gt;
|[abc]&lt;br /&gt;
|steht für eins der Zeichen in [ ] hier a b oder c &lt;br /&gt;
|-&lt;br /&gt;
|[ausdruck] &lt;br /&gt;
|Andere Schreibweis für test &lt;br /&gt;
|-&lt;br /&gt;
|~&lt;br /&gt;
|das Homeverzeichnis&lt;br /&gt;
|-&lt;br /&gt;
|&amp;gt;    und    &amp;gt;&amp;gt;&lt;br /&gt;
|leite in Datei um   &amp;gt;  überschreibe     &amp;gt;&amp;gt; hänge an &lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;&lt;br /&gt;
|lesen aus Datei &lt;br /&gt;
|-&lt;br /&gt;
|2&amp;gt;&amp;amp;1&lt;br /&gt;
|leite STDERR auf STDOUT&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;&amp;lt; ende&lt;br /&gt;
|Lesen aus Datei (Heredokument)&lt;br /&gt;
|-&lt;br /&gt;
|(...)&lt;br /&gt;
|Alles inhalb von ( ) wird als Subshell ausgeführt&lt;br /&gt;
|-&lt;br /&gt;
|{...}&lt;br /&gt;
|Gruppieren von Komandos &lt;br /&gt;
|-&lt;br /&gt;
|{ ,  ,  , }&lt;br /&gt;
|Zeichenketten zusammensetzen &lt;br /&gt;
|-&lt;br /&gt;
|$&lt;br /&gt;
|Inhalt von Variablen ausgeben $SUX&lt;br /&gt;
|-&lt;br /&gt;
|$* oder $@&lt;br /&gt;
|Liste der übergebenen Parameter&lt;br /&gt;
|-&lt;br /&gt;
|$# &lt;br /&gt;
|Anzahl der übergebenen Parameter &lt;br /&gt;
|-&lt;br /&gt;
|$0&lt;br /&gt;
|Name des Shellprogramms &lt;br /&gt;
|-&lt;br /&gt;
|$?&lt;br /&gt;
|Rückgabewert des letzten Kommandos &lt;br /&gt;
|-&lt;br /&gt;
|$!  und  $$&lt;br /&gt;
|PID des  $!  = letzten Hintergrund  -  , $$ = aktuellen Prozess&lt;br /&gt;
|-&lt;br /&gt;
|$1 ..$9&lt;br /&gt;
|Parameter 1 bis 9 &lt;br /&gt;
|-&lt;br /&gt;
|$() oder `  `&lt;br /&gt;
|Kommandosubstition&lt;br /&gt;
|-&lt;br /&gt;
|${ }&lt;br /&gt;
|Funktion zur Manipulation von Zeichenketten &lt;br /&gt;
|-&lt;br /&gt;
|$(( )) oder $[ ]&lt;br /&gt;
|Arithmetische Berechnung &lt;br /&gt;
|-&lt;br /&gt;
|&amp;quot;...&amp;quot;&lt;br /&gt;
|Entwertung der Sonderzeichen ausser $ ' \&lt;br /&gt;
|-&lt;br /&gt;
|'...'&lt;br /&gt;
|Entwertung sämtlicher Sonderzeichen ausser ' selbst&lt;br /&gt;
|-&lt;br /&gt;
|\  &lt;br /&gt;
|Entwertung des folgenden Sonderzeichens &lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==Prozesse==&lt;br /&gt;
===Was ist ein Prozess?===&lt;br /&gt;
Ein Prozess setzt sich aus zwei Teilen zusammen:&lt;br /&gt;
&lt;br /&gt;
1.Programm, das in den Hauptspeicher geladen wurde&lt;br /&gt;
&lt;br /&gt;
2.Prozessumgebung &lt;br /&gt;
&lt;br /&gt;
Unter einem Prozess versteht man ein Programm (binär), das in den Hauptspeicher&lt;br /&gt;
geladen wurde. Also nicht das Program selbst, das auf der Festplatte liegt ist der&lt;br /&gt;
Prozess, sondern es wird erst durch das Laden in den Hauptspeicher dazu.&lt;br /&gt;
Normalerweise liegt ein Programm als ausführbare Datei irgendwo auf der&lt;br /&gt;
Festplatte oder auf Diskette. Ob es sich bei dem Programm um eine binäre Datei&lt;br /&gt;
handelt, kann man mit dem Befehl '' file '' feststellen.&lt;br /&gt;
 &lt;br /&gt;
 root@zero:~# file /bin/mkdir&lt;br /&gt;
 /bin/mkdir: ELF 32-bit LSB executable, Intel 80386, version 1 (SYSV), dynamically linked (uses shared libs), for GNU/Linux 2.6.8, stripped&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Die Datei liegt im Maschinencode vor und kann in den Hauptspeicher geladen&lt;br /&gt;
werden. Sobald dies geschehen ist, kann der Rechner diesen Maschinencode&lt;br /&gt;
abarbeiten (ausführen).&lt;br /&gt;
&lt;br /&gt;
Da aber ein Programm nicht direkt auf die Hardware zugreifen soll, muss es vom&lt;br /&gt;
Betriebsystem kontrolliert werden. Das Betriebssystem liegt logisch gesehen&lt;br /&gt;
zwischen Hardware und Anwendung. Das Betriebssystem ordnet jedem Prozess&lt;br /&gt;
verschiedene Kenndaten zu, um die Prozesse verwalten zu können. Alle&lt;br /&gt;
Kenndaten, die einem Prozess zugeordnet sind, nennt man die&lt;br /&gt;
Prozessumgebung.Wenn man in der Shell ein Kommando eingibt, wird ein Prozess&lt;br /&gt;
kreiert. Natürlich ist die Shell selbst auch ein Prozess. Ein Prozess kann aber&lt;br /&gt;
genauso gut ein Serverprozess (Dienst) sein, z.B. Apache.&lt;br /&gt;
Ein wesentliches Merkmal eines Prozesses ist die Prozesskommunikation. Über im&lt;br /&gt;
Betriebssystem implementierte Methoden ist es möglich, dass verschiedene&lt;br /&gt;
Prozesse Signale und Daten untereinander austauschen können.&lt;br /&gt;
Dadurch wird auch dem Benutzer ermöglicht, einem Prozeß bestimmte Signale zu&lt;br /&gt;
senden bzw. auf den Status eines Prozesses Einfluss zu nehmen.&lt;br /&gt;
&lt;br /&gt;
===Prozesstabelle (Anzeige mit ps)===&lt;br /&gt;
Da zu jedem Prozess Kenndaten geführt werden, müssen diese auch irgendwo&lt;br /&gt;
festgehalten werden. Das geschieht in der sogenannten Prozesstabelle.&lt;br /&gt;
&lt;br /&gt;
Kenndaten der Prozesse (Auswahl):&lt;br /&gt;
* F Flags (z.B. ausgelagert; Systemprozess; Trace,...)&lt;br /&gt;
* UID Nutzer, mit dessen Rechten der Prozess ausgeführt wird&lt;br /&gt;
* PID Prozess - ID. Diese Nummer gibt eine eindeutige Prozess - Nummer&lt;br /&gt;
an. Sie wird vom System automatisch beim Starten des Prozesses&lt;br /&gt;
vergeben und ist für die Laufzeit eindeutig.&lt;br /&gt;
* PPID Prozessnumer der Eltern-Prozesses&lt;br /&gt;
* PRI Priorität eines Prozesses; je niedriger der Wert ist, desto besser&lt;br /&gt;
* NI ist der Nicewert des Prozesses; Nice erniedrigt den Grundwert&lt;br /&gt;
der Priorität des Prozesses und gibt damit Prozessorzeit für andere&lt;br /&gt;
Prozesse frei.&lt;br /&gt;
* SIZE Speichergröße des Prozesses inklusive Stack (eine Art Zwischenspeicher)&lt;br /&gt;
* RSS Verbrauch an physischen Speicher&lt;br /&gt;
* WCHAN ist der Name der Kernerlfunktion, in der der Prozess schläft&lt;br /&gt;
* STAT Status des Prozesses&lt;br /&gt;
R läuft       S schlafend     D nicht störbarer Schlaf&lt;br /&gt;
T angehalten  Z Zombie        W der Prozess belegt keine Seiten&lt;br /&gt;
* TIME Bisland benötigte Prozessorzeit&lt;br /&gt;
* SIZE ist die Größe von Text, Daten und Stack&lt;br /&gt;
* TTY die Nummer des kontrollierenden Teminal; wenn hier ein ? steht,&lt;br /&gt;
handelt es sich um einen Dämon oder Serverprozess.&lt;br /&gt;
* COMMAND Angabe des Prozesses selbst. Dies ist meist der Programmname.&lt;br /&gt;
&lt;br /&gt;
Weiteres&lt;br /&gt;
* GID Gruppe, unter der der Prozess läuft&lt;br /&gt;
* Verweis auf das aktuellen Arbeitsverzeichnis&lt;br /&gt;
* Um mit relativen Pfadangaben arbeiten zu können braucht man diesen Eintrag&lt;br /&gt;
* Tabelle mit Verweisen auf aktuell geöffnete Dateien&lt;br /&gt;
* 3 sind automatisch geöffnet Standardeingabe, Standardausgabe und&lt;br /&gt;
Standardfehlerkanal&lt;br /&gt;
&lt;br /&gt;
Beispiel&lt;br /&gt;
 root@zero:~# ps -l&lt;br /&gt;
 F S   UID   PID  PPID  C PRI  NI ADDR SZ WCHAN  TTY          TIME CMD&lt;br /&gt;
 4 R     0 18639 18631  0  80   0 -  1080 -      pts/0    00:00:00 bash&lt;br /&gt;
 0 R     0 25904 18639  0  80   0 -   635 -      pts/0    00:00:00 ps&lt;br /&gt;
&lt;br /&gt;
===Eltern und Kinder===&lt;br /&gt;
Jeder Prozess kann weitere Prozesse erzeugen. Die erzeugten Prozesse bezeichnet&lt;br /&gt;
man als Kindprozesse. Jeder Kindprozess weiß anhand der PID, woher er stammt.&lt;br /&gt;
&lt;br /&gt;
Alle Prozesse sind von einem anderen Prozess gestartet worden, mit Ausnahme&lt;br /&gt;
des Pseudoprozesses (noch im Kernel beim Starten erzeugter Prozess). Dieser hat&lt;br /&gt;
die Prozessnummer 0. Er hat die Aufgabe, den Init Prozess ( /sbin/init die Nummer&lt;br /&gt;
1) zu starten, der in System V alle anderen Prozesse direkt oder über seine Kind-&lt;br /&gt;
prozesse startet. (init wird konfiguriert durch die /etc/inittab)&lt;br /&gt;
&lt;br /&gt;
Es gibt zwei Arten wie ein Prozess gestartet werden kann:&lt;br /&gt;
&lt;br /&gt;
# Fork und Exec: Prozessumgebung wird dupliziert, der neue Prozess bekommt eine eigene neue PID&lt;br /&gt;
# Exec: Alter Prozess wird durch neuen Prozess überladen (geht mit dem shell-buildin exec)&lt;br /&gt;
&lt;br /&gt;
'''Rechte auf Objekte UID GID'''&lt;br /&gt;
Ob ein Prozess auf eine Datei zugreifen kann, entscheidet der Kernel anhand der&lt;br /&gt;
Zugriffssrechte, die auf der Datei gesetzt sind. Er checkt anhand der UID und GID&lt;br /&gt;
des Prozesses, ob es erlaubt ist. Mit dieser Technik wird letztendlich geprüft, was&lt;br /&gt;
ein User darf, und was nicht.&lt;br /&gt;
&lt;br /&gt;
===Rechenzeit und Priorität===&lt;br /&gt;
Da auch bei Prozessen eine Gerechtigkeit herschen muss, muss eine Instanz&lt;br /&gt;
darüber entscheiden wie lange ein Prozess Rechenzeit verbrauchen darf.&lt;br /&gt;
Folgende Kenndaten werden dazu benötigt&lt;br /&gt;
* clocktick = Zeiteinheit&lt;br /&gt;
* n = Faktor über den Kernel einstellbar&lt;br /&gt;
* slice = n &amp;lt;nowiki&amp;gt;*&amp;lt;/nowiki&amp;gt; clocktick&lt;br /&gt;
* agingtime = weitere Zeiteinheit über den Kernel einstellbar&lt;br /&gt;
&lt;br /&gt;
Es wird davon ausgegangen das der Prozess mit der niedrigsten Priorität gerade&lt;br /&gt;
rechnet. Pro clocktick erhöht sich die Priorität dieses Prozesses um eins.&lt;br /&gt;
&lt;br /&gt;
Jetzt können 3 Situationen eintreten die alle dazu führen das der Scheduler&lt;br /&gt;
aufgerufen wird.&lt;br /&gt;
&lt;br /&gt;
# Prozess blockiert wegen einer Ausgabe oder Eingabe.&lt;br /&gt;
# Gibt Rechenzeit freiwillig ab.&lt;br /&gt;
# Der Slice endet.&lt;br /&gt;
&lt;br /&gt;
Der Aufruf des Schedulers bewirkt das der Prozess mit der niedrigsten Priorität&lt;br /&gt;
gescheduled wird, er also nun rechnen darf. Nach Ablauf der agingtime werden&lt;br /&gt;
nun die Prozesse &amp;quot;gealtert&amp;quot;. Das geschieht nach folgender Formel&lt;br /&gt;
&lt;br /&gt;
Neue Priorität = Alte Priorität / 2 + Nicewert&lt;br /&gt;
&lt;br /&gt;
Der User hat die Möglichkeit, über den sogenannten Nicefaktor den Grundwert für&lt;br /&gt;
einen Prozess zu senken. Der Prozess braucht dann länger für seine Abarbeitung.&lt;br /&gt;
Er verhält sich somit netter zu den anderen Prozessen. Normale User können nur&lt;br /&gt;
netter werden, der Systemverwalter kann auch nicht netter (gemeiner) werden. Der&lt;br /&gt;
Bereich liegt zwischen 19 (sehr nett) bis 0 (weniger nett) für die User, und 19 bis&lt;br /&gt;
-20 für root.&lt;br /&gt;
&lt;br /&gt;
[[Image:pri.png]]&lt;br /&gt;
&lt;br /&gt;
'''Signale'''&lt;br /&gt;
&lt;br /&gt;
Mit den Kommando kill und killall kann man Prozessen Signale schicken&lt;br /&gt;
&lt;br /&gt;
 kill -Signalnummer PID &lt;br /&gt;
&lt;br /&gt;
Signalnummer&lt;br /&gt;
{| border=1 cellpadding=2&lt;br /&gt;
!Signalname&lt;br /&gt;
!Wert&lt;br /&gt;
!Aktion&lt;br /&gt;
|-&lt;br /&gt;
|SIGHUP&lt;br /&gt;
|1&lt;br /&gt;
|Neuinitialisierung eines Prozesses&lt;br /&gt;
|-&lt;br /&gt;
|SIGINT&lt;br /&gt;
|2&lt;br /&gt;
|Interrupt-Signal von der Tastatur (STRG+c)&lt;br /&gt;
|-&lt;br /&gt;
|SIGQUIT&lt;br /&gt;
|3&lt;br /&gt;
|Interrupt-Signal von der Tastatur (STRG+c) mit Dump&lt;br /&gt;
|-&lt;br /&gt;
|SIGKILL&lt;br /&gt;
|9&lt;br /&gt;
|unwiderrufliches Beendigungssignal (Töten)&lt;br /&gt;
|-&lt;br /&gt;
|SIGSEGV&lt;br /&gt;
|11&lt;br /&gt;
|Ungültige Speicherreferenz (bedeutet oft auf defekten Speicher)&lt;br /&gt;
|-&lt;br /&gt;
|SIGTERM &lt;br /&gt;
|15&lt;br /&gt;
|Beendigungssignal (geöffnete Dateien werden geschlossen)&lt;br /&gt;
|-&lt;br /&gt;
|SIGCONT &lt;br /&gt;
|18&lt;br /&gt;
|Weiterfahren, wenn gestoppt&lt;br /&gt;
|-&lt;br /&gt;
|SIGSTOP&lt;br /&gt;
|19&lt;br /&gt;
|Prozessstop&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Beispiel&lt;br /&gt;
 root@zero:~# kill -1 7562&lt;br /&gt;
&lt;br /&gt;
===Programme im Zusammenhang mit Prozessen===&lt;br /&gt;
* ps: Zeigt die Prozesse mit ihrem Status an&lt;br /&gt;
 root@zero:~# ps&lt;br /&gt;
  PID TTY          TIME CMD&lt;br /&gt;
 14134 pts/0    00:00:00 bash&lt;br /&gt;
 14149 pts/0    00:00:00 ps&lt;br /&gt;
&lt;br /&gt;
 root@zero:~# ps -elf | grep apache&lt;br /&gt;
 1 S root      5738     1  0  80   0 -  5461 select Jun16 ?        00:00:00 /usr/sbin/apache2 -k start&lt;br /&gt;
 5 S www-data  5739  5738  0  80   0 -  5581 inet_c Jun16 ?        00:00:00 /usr/sbin/apache2 -k start&lt;br /&gt;
 5 S www-data  5742  5738  0  80   0 -  5461 inet_c Jun16 ?        00:00:00 /usr/sbin/apache2 -k start&lt;br /&gt;
 5 S www-data  5743  5738  0  80   0 -  5461 inet_c Jun16 ?        00:00:00 /usr/sbin/apache2 -k start&lt;br /&gt;
 5 S www-data  5745  5738  0  80   0 -  5461 inet_c Jun16 ?        00:00:00 /usr/sbin/apache2 -k start&lt;br /&gt;
 5 S www-data  5746  5738  0  80   0 -  5461 inet_c Jun16 ?        00:00:00 /usr/sbin/apache2 -k start&lt;br /&gt;
 0 S root     14153 14134  0  80   0 -   837 pipe_w 16:59 pts/0    00:00:00 grep apache&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* nice: Lässt ein Programm mit verändertem Grundwert der Priorität laufen&lt;br /&gt;
 root@zero:~# nice&lt;br /&gt;
 0&lt;br /&gt;
 root@zero:~# nice -n 9 bash&lt;br /&gt;
 root@zero:~# nice&lt;br /&gt;
 9&lt;br /&gt;
 root@zero:~#&lt;br /&gt;
&lt;br /&gt;
* renice: Ändert den Grundwert der Priorität eines laufenden Prozesses&lt;br /&gt;
 root@zero:~# renice 10 5742&lt;br /&gt;
 5742: Alte Priorität: 0, neue Priorität: 10&lt;br /&gt;
&lt;br /&gt;
* top: Zeigt die Prozesse mit ihrem Status an (Abbrechen mit q)&lt;br /&gt;
 root@zero:~# top&lt;br /&gt;
&lt;br /&gt;
* pstree: Zeigt die Prozesse als Baumstruktur&lt;br /&gt;
 root@zero:~# pstree&lt;br /&gt;
 init─┬─NetworkManager&lt;br /&gt;
      ├─acpid&lt;br /&gt;
      ├─apache2───5*[apache2]&lt;br /&gt;
      ├─atd&lt;br /&gt;
      ├─bluetoothd&lt;br /&gt;
      ├─console-kit-dae───63*[{console-kit-dae}]&lt;br /&gt;
      ├─cron&lt;br /&gt;
      ├─cupsd&lt;br /&gt;
      ├─dbus-daemon&lt;br /&gt;
      ├─dd&lt;br /&gt;
      ├─gdm───gdm─┬─Xorg&lt;br /&gt;
      │           └─gdmgreeter&lt;br /&gt;
      ├─6*[getty]&lt;br /&gt;
      ├─hald───hald-runner─┬─hald-addon-acpi&lt;br /&gt;
      │                    ├─hald-addon-inpu&lt;br /&gt;
      │                    └─2*[hald-addon-stor]&lt;br /&gt;
      ├─klogd&lt;br /&gt;
      ├─nm-system-setti&lt;br /&gt;
      ├─nmbd&lt;br /&gt;
      ├─nscd───11*[{nscd}]&lt;br /&gt;
      ├─portmap&lt;br /&gt;
      ├─rpc.statd&lt;br /&gt;
      ├─slapd───2*[{slapd}]&lt;br /&gt;
      ├─smbd───smbd&lt;br /&gt;
      ├─sshd───sshd───bash───bash───pstree&lt;br /&gt;
      ├─syslogd&lt;br /&gt;
      ├─system-tools-ba&lt;br /&gt;
      ├─udevd&lt;br /&gt;
      ├─winbindd─┬─winbindd───winbindd&lt;br /&gt;
      │          └─3*[winbindd]&lt;br /&gt;
      └─wpa_supplicant&lt;br /&gt;
&lt;br /&gt;
===Jobs===&lt;br /&gt;
Unter einem Job versteht man ein Programm, welches man von der Shell gelöst&lt;br /&gt;
hat. D. h. man kann ganz normal weiter arbeiten und der Job verrichtet seinen&lt;br /&gt;
Dienst im Hintergrund. Man kann jederzeit zu diesem Job wieder Kontakt&lt;br /&gt;
aufnehmen.&lt;br /&gt;
&lt;br /&gt;
Ein Job kann auf 2 Arten gestarten werden:&lt;br /&gt;
&lt;br /&gt;
# Durch Anhängen des &amp;amp; Zeichens beim Programmstart&lt;br /&gt;
 root@zero:~# tail -f /var/log/messages &amp;amp;&lt;br /&gt;
 Jun 19 06:59:31 zero -- MARK --&lt;br /&gt;
 Jun 19 07:19:31 zero -- MARK --&lt;br /&gt;
 Jun 19 07:39:32 zero -- MARK --&lt;br /&gt;
 Jun 19 07:44:57 zero syslogd 1.5.0#5ubuntu3: restart.&lt;br /&gt;
 Jun 19 07:59:32 zero -- MARK --&lt;br /&gt;
 Jun 19 08:19:32 zero -- MARK --&lt;br /&gt;
 Jun 19 08:39:32 zero -- MARK --&lt;br /&gt;
 Jun 19 08:59:32 zero -- MARK --&lt;br /&gt;
 Jun 19 09:19:33 zero -- MARK --&lt;br /&gt;
 Jun 19 09:39:33 zero -- MARK --&lt;br /&gt;
 [3] 27421&lt;br /&gt;
&lt;br /&gt;
# Durch Stoppen des Prozesses durch Drücken von Strg-Z und in den Hintergrund schicken mit %n (n ist die Jobnummer)&lt;br /&gt;
 root@zero:~# watch cat /proc/cpuinfo&lt;br /&gt;
 Strg-Z&lt;br /&gt;
 [4]+  Stopped                 watch cat /proc/cpuinfo&lt;br /&gt;
 root@zero:~# bg %4&lt;br /&gt;
 [4]+ watch cat /proc/cpuinfo &amp;amp;&lt;br /&gt;
&lt;br /&gt;
Anweisungen im Zusammenhang mit Jobs (n ist die Jobnummer)&lt;br /&gt;
* bg %n : Einen Job in den Hintergrund stellen (wie oben)&lt;br /&gt;
* fg %n : Einen Job in den Vordergrund holen&lt;br /&gt;
 root@zero:~# fg %4&lt;br /&gt;
 watch cat /proc/cpuinfo&lt;br /&gt;
&lt;br /&gt;
* jobs : Aktive Jobs ausgeben&lt;br /&gt;
&lt;br /&gt;
 root@zero:~# jobs&lt;br /&gt;
 [1]   Running                 tail -f /var/log/syslog &amp;amp;&lt;br /&gt;
 [2]   Running                 tail -f /var/log/syslog &amp;amp;&lt;br /&gt;
 [3]-  Running                 tail -f /var/log/messages &amp;amp;&lt;br /&gt;
 [4]+  Stopped                 watch cat /proc/cpuinfo&lt;br /&gt;
&lt;br /&gt;
* Strg-Z : Einen Vordergrund-Job vorübergehend anhalten&lt;br /&gt;
* kill -STOP %n : Unterbricht Job im Hintergrund&lt;br /&gt;
 root@zero:~# kill -STOP %1&lt;br /&gt;
 root@zero:~# jobs&lt;br /&gt;
 [1]+  '''Stopped'''                 tail -f /var/log/syslog&lt;br /&gt;
 [2]   Running                 tail -f /var/log/syslog &amp;amp;&lt;br /&gt;
 [3]   Running                 tail -f /var/log/messages &amp;amp;&lt;br /&gt;
 [4]-  Stopped                 watch cat /proc/cpuinfo&lt;br /&gt;
* kill -CONT %n : Setzt den unterbrochenen Job im Hintergrund fort&lt;br /&gt;
root@zero:~# kill -CONT %1&lt;br /&gt;
root@zero:~# jobs&lt;br /&gt;
 [1]+  '''Running'''                 tail -f /var/log/syslog &amp;amp;&lt;br /&gt;
 [2]   Running                 tail -f /var/log/syslog &amp;amp;&lt;br /&gt;
 [3]   Running                 tail -f /var/log/messages &amp;amp;&lt;br /&gt;
 [4]-  Stopped                 watch cat /proc/cpuinfo&lt;br /&gt;
* kill -KILL %n : Tötet Job im Hintergrund&lt;br /&gt;
 root@zero:~# kill -KILL %1&lt;br /&gt;
 root@zero:~# jobs&lt;br /&gt;
 [1]+  '''Killed'''                  tail -f /var/log/syslog&lt;br /&gt;
 [2]   Running                 tail -f /var/log/syslog &amp;amp;&lt;br /&gt;
 [3]   Running                 tail -f /var/log/messages &amp;amp;&lt;br /&gt;
 [4]-  Stopped                 watch cat /proc/cpuinfo&lt;br /&gt;
 root@zero:~# jobs&lt;br /&gt;
 [2]   Running                 tail -f /var/log/syslog &amp;amp;&lt;br /&gt;
 [3]-  Running                 tail -f /var/log/messages &amp;amp;&lt;br /&gt;
 [4]+  Stopped                 watch cat /proc/cpuinfo&lt;br /&gt;
&lt;br /&gt;
Bedingungen, die zu Jobausführung eingehalten werden sollen:&lt;br /&gt;
* Der Job soll nicht auf den Bildschirm schreiben (Standardausgabe +Standardfehlerkanal).&lt;br /&gt;
* Er soll keine Eingaben vom Benutzer erwarten.&lt;br /&gt;
&lt;br /&gt;
==Suchen von Dateien==&lt;br /&gt;
===find===&lt;br /&gt;
 find ab_wo_wird_gesucht was_wird_gesucht aktion&lt;br /&gt;
 find [Pfad] [Bedingung] [Aktion]&lt;br /&gt;
&lt;br /&gt;
====Nach Namen====&lt;br /&gt;
 find [Pfad] '''-name''' [Name]&lt;br /&gt;
 &lt;br /&gt;
Finde alle Dateien mit Namen test ab dem Verzeichnis /home und gebe diese Zeilenweise aus&lt;br /&gt;
 root@zero:~# find /home -name test -print&lt;br /&gt;
 /home/xinux/test&lt;br /&gt;
 /home/test&lt;br /&gt;
&lt;br /&gt;
Wie oben, jedoch mit Namensanfang test&lt;br /&gt;
 root@zero:/home/xinux# find /home -name 'test*'&lt;br /&gt;
 /home/xinux/testdatei&lt;br /&gt;
 /home/xinux/test&lt;br /&gt;
 /home/test&lt;br /&gt;
&lt;br /&gt;
====Nach Benutzer(Eigentümer)====&lt;br /&gt;
 root@zero:/tmp# find /tmp/ '''-user''' xinux&lt;br /&gt;
 /tmp/datei&lt;br /&gt;
&lt;br /&gt;
====Nach Gruppe====&lt;br /&gt;
 root@zero:/tmp# find /tmp/ '''-group''' hacker&lt;br /&gt;
 /tmp/datei3&lt;br /&gt;
 /tmp/datei2&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
====Nach Typ====&lt;br /&gt;
Es wird nach Dateien anhand Ihrer Art gesucht:&lt;br /&gt;
 find [Pfad] '''-type''' [Typ] &lt;br /&gt;
Typ:&lt;br /&gt;
* f: Normale Dateien&lt;br /&gt;
 root@zero:~# find /tmp/ -type f&lt;br /&gt;
 /tmp/mbr.img&lt;br /&gt;
 /tmp/datei&lt;br /&gt;
 /tmp/zeugs&lt;br /&gt;
 /tmp/.X0-lock&lt;br /&gt;
* d: Verzeichnisse&lt;br /&gt;
 root@zero:~# find /var/log -type d&lt;br /&gt;
 /var/log&lt;br /&gt;
 /var/log/apache2&lt;br /&gt;
 /var/log/unattended-upgrades&lt;br /&gt;
 /var/log/apparmor&lt;br /&gt;
 /var/log/ConsoleKit&lt;br /&gt;
 /var/log/dist-upgrade&lt;br /&gt;
 /var/log/dist-upgrade/20090526-1052&lt;br /&gt;
 /var/log/cups&lt;br /&gt;
 /var/log/apt&lt;br /&gt;
 /var/log/fsck&lt;br /&gt;
 /var/log/samba&lt;br /&gt;
 /var/log/samba/cores&lt;br /&gt;
 /var/log/samba/cores/smbd&lt;br /&gt;
 /var/log/samba/cores/nmbd&lt;br /&gt;
 /var/log/samba/cores/winbindd&lt;br /&gt;
 /var/log/installer&lt;br /&gt;
 /var/log/gdm&lt;br /&gt;
 /var/log/news&lt;br /&gt;
* c: Char Devices (Zeichenorientierte Gerätedatei)&lt;br /&gt;
 root@zero:~# find / -type c&lt;br /&gt;
 /lib/udev/devices/kmem&lt;br /&gt;
 /lib/udev/devices/null&lt;br /&gt;
 /lib/udev/devices/console&lt;br /&gt;
 /lib/udev/devices/ppp&lt;br /&gt;
 /lib/udev/devices/net/tun&lt;br /&gt;
* b: Block Devices (Blockorientierte Gerätedatei)&lt;br /&gt;
* p: Benannte Pipe&lt;br /&gt;
* l: Links&lt;br /&gt;
* s: Sockets&lt;br /&gt;
&lt;br /&gt;
====Nach Modifikation====&lt;br /&gt;
Listet alle Dateien in /etc auf, die innerhalb von zwei Tagen modifiziert wurden&lt;br /&gt;
 root@zero:/var/log# find /etc/ -mtime 2 -print&lt;br /&gt;
 /etc/apache2&lt;br /&gt;
 /etc/apache2/mods-available&lt;br /&gt;
 /etc/apache2/conf.d&lt;br /&gt;
 /etc/apache2/sites-available&lt;br /&gt;
 /etc/bash_completion.d&lt;br /&gt;
 /etc/blkid.tab.old&lt;br /&gt;
 /etc/firefox-3.0/profile&lt;br /&gt;
 /etc/firefox-3.0/profile/chrome&lt;br /&gt;
 /etc/firefox-3.0/pref&lt;br /&gt;
 /etc/profile.d&lt;br /&gt;
 /etc/ufw/applications.d&lt;br /&gt;
 /etc/logrotate.d&lt;br /&gt;
 /etc/xulrunner-1.9&lt;br /&gt;
 /etc/blkid.tab&lt;br /&gt;
 /etc/cron.daily&lt;br /&gt;
 /etc/alternatives&lt;br /&gt;
 /etc/alternatives/x-www-browser&lt;br /&gt;
 /etc/alternatives/xulrunner&lt;br /&gt;
 /etc/gre.d&lt;br /&gt;
 /etc/hal/fdi/policy&lt;br /&gt;
 /etc/dbus-1/system.d&lt;br /&gt;
 /etc/udev/rules.d&lt;br /&gt;
&lt;br /&gt;
====Nach Größe====&lt;br /&gt;
Finde Dateien in /tmp, die größer als 100 MByte sind&lt;br /&gt;
 root@zero:/tmp# find /tmp/ -size +100M&lt;br /&gt;
 /tmp/datei&lt;br /&gt;
&lt;br /&gt;
Finde Dateien in /tmp, die kleiner als 100 KByte sind&lt;br /&gt;
 root@zero:/tmp# find /tmp/ -size -100k&lt;br /&gt;
 /tmp/&lt;br /&gt;
 /tmp/datei3&lt;br /&gt;
 /tmp/backup &lt;br /&gt;
 /tmp/datei2&lt;br /&gt;
 /tmp/.winbindd &lt;br /&gt;
 /tmp/.winbindd/pipe&lt;br /&gt;
 /tmp/mbr.img&lt;br /&gt;
 /tmp/zeugs&lt;br /&gt;
 /tmp/.ICE-unix&lt;br /&gt;
 /tmp/.X0-lock&lt;br /&gt;
 /tmp/datei1&lt;br /&gt;
 /tmp/.X11-unix&lt;br /&gt;
 /tmp/.X11-unix/X0&lt;br /&gt;
 /tmp/pulse-PKdhtXMmr18n&lt;br /&gt;
&lt;br /&gt;
====Nach Berechtigungen====&lt;br /&gt;
Finde Dateien in Home mit der Berechtigung 777 (-rwxrwxrwx)&lt;br /&gt;
 root@zero:/var# find /home/ -perm 777&lt;br /&gt;
 /home/samba&lt;br /&gt;
 /home/xinux/Examples&lt;br /&gt;
 /home/xinux/.pulse/1f0763ee4cf4c7e1d3c07fd149dda37b:runtime&lt;br /&gt;
 /home/test/Examples&lt;br /&gt;
&lt;br /&gt;
===locate===&lt;br /&gt;
Locate arbeitet über einen Index, der erstellt und aktualisiert werden muss. Aus diesem Grund kann locate teilweise nicht &lt;br /&gt;
akutell sein. Es ist immer schneller als find und es durchsucht immer das ganze Dateisystem. &lt;br /&gt;
 locate [Dateiname]&lt;br /&gt;
 &lt;br /&gt;
Lokalisiere die Datei wvdial.conf. Anmerkung: Der Stern wird beim Suchen automatisch hinzugefügt. Entspricht also&lt;br /&gt;
wvidal.conf*&lt;br /&gt;
 root@zero:~# locate wvdial.conf&lt;br /&gt;
 /etc/wvdial.conf&lt;br /&gt;
 /usr/share/man/man5/wvdial.conf.5.gz&lt;br /&gt;
 /var/lib/dpkg/info/wvdial.conffiles&lt;br /&gt;
 /var/lib/dpkg/info/wvdial.config&lt;br /&gt;
&lt;br /&gt;
Lokalisiere die Datei wvdial.conf und nur diese&lt;br /&gt;
 root@zero:~# locate -b '\wvdial.conf'&lt;br /&gt;
 /etc/wvdial.conf&lt;br /&gt;
&lt;br /&gt;
Aktualisieren des Indexes&lt;br /&gt;
 root@zero:~# updatedb&lt;br /&gt;
&lt;br /&gt;
==Wie wird ein Kommando lokalisiert==&lt;br /&gt;
Wenn die Shell alle Ersetzungen in der Kommandozeile vorgenommen und alle Umleitungen vorbereitet hat, ist der Zeitpunkt &lt;br /&gt;
gekommen, auf den der Anwender die ganze Zeit gewartet hat. Die Shell versucht das Kommando auszuführen. Dazu muss sie &lt;br /&gt;
es aber erst lokalisieren. Das erste passende Kommando wird ausgeführt.&lt;br /&gt;
&lt;br /&gt;
Als Kommandoname wird immer das erste Wort eines einfachen Kommandos erkannt. Ein Kommandoname kann mit Pfadnamen in &lt;br /&gt;
einem Verzeichnis (absolut oder relativ) angegeben werden. Die Shell erkennt dies an (mindestens) einem Slash `/' &lt;br /&gt;
im Kommandonamen. Wenn kein Verzeichnis angegeben ist, versucht die Shell selbst, das Kommando zu finden. Dazu wird &lt;br /&gt;
der Kommandoname zuerst in der Hashtabelle gesucht, dann wird er mit den Synonymen, mit den Scriptfunktionen und &lt;br /&gt;
schließlich mit den Shellfunktionen verglichen. &lt;br /&gt;
&lt;br /&gt;
Wird auf diese Weise kein Programm dieses Namens gefunden, werden alle in der PATH-Umgebungsvariablen aufgeführten &lt;br /&gt;
Verzeichnisse nach einer ausführbaren Datei dieses Namens durchsucht. Wird auch hier kein passendes Kommando gefunden, &lt;br /&gt;
gibt die Shell eine Fehlermeldung aus.&lt;br /&gt;
&lt;br /&gt;
===which und type===&lt;br /&gt;
====which====&lt;br /&gt;
which gibt die vollen Pfadnamen der Dateien aus, die bei Benutzung des angegebenen Befehls ausgeführt werden würden.&lt;br /&gt;
&lt;br /&gt;
 which [-a] Dateiname &lt;br /&gt;
&lt;br /&gt;
Optionen:&lt;br /&gt;
&lt;br /&gt;
* -a : Alle Treffer ausgeben, nicht nur den ersten&lt;br /&gt;
* --skip-dot : Verzeichnisse, die mit einem Punkt beginnen, auslassen&lt;br /&gt;
&lt;br /&gt;
Beispiel&lt;br /&gt;
 root@zero:~# which startx&lt;br /&gt;
 /usr/bin/startx&lt;br /&gt;
&lt;br /&gt;
====type====&lt;br /&gt;
Anzeigen der absoluten Pfadnamen von Befehlen, und ob sich diese Befehle in der Hash-Tabelle der aktuellen&lt;br /&gt;
Shell befinden.&lt;br /&gt;
&lt;br /&gt;
 type [Optionen] Befehle&lt;br /&gt;
&lt;br /&gt;
Beispiel&lt;br /&gt;
 root@zero:~# type ls&lt;br /&gt;
 ls is aliased to `ls --color=auto'&lt;br /&gt;
&lt;br /&gt;
Optionen:&lt;br /&gt;
&lt;br /&gt;
* -a : Alle vorkommenden Befehle werden ausgegeben, nicht nur das, welches aufgerufen werden würde&lt;br /&gt;
 root@zero:~# type '''-a''' ls&lt;br /&gt;
 ls is aliased to `ls --color=auto'&lt;br /&gt;
 ls is /bin/ls&lt;br /&gt;
&lt;br /&gt;
* -p : Anzeigen des Eintrags von Befehl in der Hash-Tabelle. Dieser Wert kann sich vom ersten Auftreten des Befehls in PATH&lt;br /&gt;
unterscheiden&lt;br /&gt;
 root@zero:~# type '''-p''' apache2&lt;br /&gt;
 /usr/sbin/apache2&lt;br /&gt;
&lt;br /&gt;
* -t : Anzeigen, ob Befehl ein Aliasname, ein Schlüsselwort, eine Funktion, ein eingebauter Befehl oder eine Datei ist&lt;br /&gt;
 root@zero:~# type '''-t''' apache2&lt;br /&gt;
 file&lt;/div&gt;</summary>
		<author><name>192.168.178.46</name></author>
	</entry>
	<entry>
		<id>https://www.xinux.net/index.php?title=Linux_Grundlagen&amp;diff=89</id>
		<title>Linux Grundlagen</title>
		<link rel="alternate" type="text/html" href="https://www.xinux.net/index.php?title=Linux_Grundlagen&amp;diff=89"/>
		<updated>2009-07-07T11:03:09Z</updated>

		<summary type="html">&lt;p&gt;192.168.178.46: /* Shellsonderzeichen */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Einführung==&lt;br /&gt;
===Geschichte Unix===&lt;br /&gt;
====1969====&lt;br /&gt;
Am Anfang von Linux steht Multics, ein von Bell Laboratories geschaffenes &amp;quot;Betriebssystem&amp;quot;, &lt;br /&gt;
das noch mit Lochkarten arbeitete. Multics wird mit Unterstützung von AT&amp;amp;T und Western &lt;br /&gt;
Electric unter Mitarbeit von Ken Thompson und Dennis Ritchie weiterentwickelt. Obwohl sich &lt;br /&gt;
Bell Laboratories bald zurückzieht, gibt Thompson das Projekt nicht auf.  Zum Entwicklerteam &lt;br /&gt;
gehören auch Rudd Canaday und Brian Kernighan. Letzterer gibt 1970 dem Betriebssystem den Namen UNIX. &lt;br /&gt;
Thompson definiert 7 Richtlinien für UNIX:&lt;br /&gt;
 &lt;br /&gt;
# Hierarchische Anordnung der Dateisysteme&lt;br /&gt;
# Die Ausgabe von Daten an die Peripherie(-geräte) und Dateien soll gleich sein.&lt;br /&gt;
# Prozesse und Programme sollen miteinander kommunizieren.&lt;br /&gt;
# Multitasking (voneinander getrennte Prozesse)&lt;br /&gt;
# Persönliche Shell's&lt;br /&gt;
# Der Compiler soll für viele Programmiersprachen tauglich sein.&lt;br /&gt;
# Portabilität&lt;br /&gt;
&lt;br /&gt;
====1971====&lt;br /&gt;
Bis 1971 ist das für eine DEC PDP-7 geschriebene Unix als Version 1 auf eine PDP-11 portiert. Bis&lt;br /&gt;
zur Version 4 entwickelt Ritchie die Programmier- (Hoch-) Sprache C. Das in Assembler geschriebene&lt;br /&gt;
Unix wird fast völlig nach C übersetzt, wodurch zum erstenmal die geforderte Hardware-Unabhängigkeit&lt;br /&gt;
des Betriebssystems realisiert werden kann.&lt;br /&gt;
&lt;br /&gt;
====1975====&lt;br /&gt;
Da AT&amp;amp;T aufgrund vertraglicher Bindungen mit der US-Bundesregierung Unix nicht kommerziell vermarkten darf, stellt sie den Source Code für ein paar hundert Dollar den Universitäten, Lehr- und Forschungsanstalten zur Verfügung. Dies führt zu einer sehr dynamischen Entwicklung von Unix. 1975 wird die Version 6 als erstes UNIX-System veröffentlicht, die darauffolgende Version 7 wird sehr erfolgreich. Da es keine Standardisierung gibt, entwickeln bald verschiedenste Firmen ihr eigenes UNIX. Ab 1984 wird AT&amp;amp;T per Gerichtsbeschluss erlaubt, Unix zu vermarkten. AT&amp;amp;T verkauft sein Unix V und beginnt, sich um einen internationalen Standard von UNIX zu bemühen. &lt;br /&gt;
&lt;br /&gt;
====1984====&lt;br /&gt;
Durch Richard Stallman wird die Free Software Foundation (FSF) gegründet. Diese initiiert ein Projekt namens GNU (GNU ist Not Unix), welches das Ziel verfolgt, ein freies UNIX System zu schaffen. &lt;br /&gt;
&lt;br /&gt;
====1987====&lt;br /&gt;
AT&amp;amp;T verbietet die Verwendung des Unix Quellcodes an den Universitäten. Während dieser Zeit ist Andrew (Andy) Tannenbaum Professor an der Freien Universität von Amsterdam und entwickelt Minix. Minix ist ein kostengünstiges Lehrbetriebssystem und kommt ohne jeglichen AT&amp;amp;T Code aus, obwohl es die gleiche Funktionalität wie Unix 7 bietet. Im Usenet unter comp.os.minix entsteht eine Minix-Gemeinde, die den Minix Kernel und die Anwendungen rundherum programmiert und verbessert.&lt;br /&gt;
&lt;br /&gt;
====1991====&lt;br /&gt;
Linus Torvalds hat als Student für Computerwissenschaften an der Universität in Helsinki Minix installiert und das Buch von Andy Tannenbaum gelesen. Er beginnt im Sinne der FSF einen Unix ähnlichen Kernel zu programmieren mit der Idee, &amp;quot;ein besseres Minix als Minix&amp;quot; zu bauen. 1992 stellt er die Version 0.02 mit dem Namen Linux der Internetgemeinde zur Verfügung. &lt;br /&gt;
&lt;br /&gt;
====1994====&lt;br /&gt;
Die Linux Version 1.0 wird freigegeben. Das Linux Fieber beginnt... &lt;br /&gt;
&lt;br /&gt;
====1998====&lt;br /&gt;
Der Kreis der Linux Entwickler und Anwender ist kräftig angeschwollen. KDE 1.0 wird veröffentlicht. Die Zuwachsraten von Linux übertreffen die von Windows NT deutlich. &lt;br /&gt;
&lt;br /&gt;
====1999====&lt;br /&gt;
Der lange erwartete stabile Linux Kernel Version 2.2 wird freigegeben. Namhafte Firmen wie IBM kündigen ihre Unterstützung für Linux an. &lt;br /&gt;
&lt;br /&gt;
====2001====&lt;br /&gt;
Der lange erwartete stabile Linux Kernel Version 2.4 wird freigegeben. USB Unterstützung und eine neue Firewallimplementierung zeichnen ihn aus.&lt;br /&gt;
&lt;br /&gt;
====2003====&lt;br /&gt;
Linux Kernel Version 2.6 wird freigegeben. Am auffälligsten sind Änderungen bei der Modulverwaltung.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Distributionen===&lt;br /&gt;
{| Border=1 Cellpadding=2&lt;br /&gt;
| &lt;br /&gt;
|Url&lt;br /&gt;
|Paketformat&lt;br /&gt;
|-&lt;br /&gt;
|Red Hat&lt;br /&gt;
|www.redhat.com&lt;br /&gt;
|rpm&lt;br /&gt;
|-&lt;br /&gt;
|fedora&lt;br /&gt;
|fedora.redhat.com&lt;br /&gt;
|rpm&lt;br /&gt;
|-&lt;br /&gt;
|CentOS&lt;br /&gt;
|www.centos.org&lt;br /&gt;
|rpm&lt;br /&gt;
|-&lt;br /&gt;
|Suse/openSUSE&lt;br /&gt;
|www.opensuse.org&lt;br /&gt;
|rpm&lt;br /&gt;
|-&lt;br /&gt;
|Debian&lt;br /&gt;
|www.debian.org&lt;br /&gt;
|deb&lt;br /&gt;
|-&lt;br /&gt;
|Ubuntu&lt;br /&gt;
|www.ubuntu.com&lt;br /&gt;
|deb&lt;br /&gt;
|-&lt;br /&gt;
|Mandrake&lt;br /&gt;
|www.linux-mandrake.com&lt;br /&gt;
|rpm&lt;br /&gt;
|-&lt;br /&gt;
|Easy Linux&lt;br /&gt;
|www.easy-linux.de&lt;br /&gt;
|rpm&lt;br /&gt;
|-&lt;br /&gt;
|Turbo&lt;br /&gt;
|www.turbolinux.com&lt;br /&gt;
|rpm&lt;br /&gt;
|-&lt;br /&gt;
|minis&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|toms&lt;br /&gt;
|www.toms.net/rb&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|damn small linux&lt;br /&gt;
|www.damnsmalllinux.org&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|pocket-linux&lt;br /&gt;
|www.pocket-linux.org&lt;br /&gt;
|&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
====Bücher====&lt;br /&gt;
 Titel : Das Linux Anwenderhandbuch und Leitfaden für die Systemverwaltung&lt;br /&gt;
 Autor : Sebastian Hetze, Dirk Hohndel, Olaf Kirch und Martin Müller&lt;br /&gt;
 Verlag: Lunetix&lt;br /&gt;
 ISBN : 3-929764-06-7&lt;br /&gt;
&lt;br /&gt;
 Titel : Linux in a Nutshell&lt;br /&gt;
 Autor : Jessica Perry Hekman und die Mitarbeiter von O'Reilly &amp;amp; Associates&lt;br /&gt;
 Verlag: O'Reilly&lt;br /&gt;
 ISBN : 3-930673-57-6&lt;br /&gt;
&lt;br /&gt;
 Titel : Linux - Wegweiser zur Installation und Konfiguration&lt;br /&gt;
 Autor : Matt Welsh, Lar Kaufman, Matthias Kalle Dallheimer&lt;br /&gt;
 Verlag: O'Reilly&lt;br /&gt;
 ISBN : 3-930673-58-4 (deutsch), 1-56592-469-X (englisch)&lt;br /&gt;
&lt;br /&gt;
 Titel : Linux - Installation, Konfiguration, Anwendung&lt;br /&gt;
 Autor : Michael KoflerMultitasking&lt;br /&gt;
 Verlag: Addison-Wesley&lt;br /&gt;
 ISBN : 3-8273-1475-5&lt;br /&gt;
&lt;br /&gt;
 Titel : Linux - Wegweiser für Netzwerker&lt;br /&gt;
 Autor : Olaf Kirch&lt;br /&gt;
 Verlag: O'Reilly&lt;br /&gt;
 ISBN : 3-930673-18-5&lt;br /&gt;
&lt;br /&gt;
 Titel : TCP/IP-Netzwerk-Administration&lt;br /&gt;
 Autor : Craig Hunt&lt;br /&gt;
 Verlag: O'Reilly&lt;br /&gt;
 ISBN : 3-89721-110-6&lt;br /&gt;
&lt;br /&gt;
 Titel : Essential System Administration&lt;br /&gt;
 Autor : Eleen Frisch&lt;br /&gt;
 Verlag: O'Reilly&lt;br /&gt;
 ISBN : 1-56592-127-5&lt;br /&gt;
&lt;br /&gt;
==Betriebssystem==&lt;br /&gt;
===Was ist ein Betriebssystem?===&lt;br /&gt;
&lt;br /&gt;
Ein Betriebssystem liegt logisch gesehen zwischenAnwendungsprogramm und Hardware.&lt;br /&gt;
&lt;br /&gt;
Es nimmt die Anforderungen der Anwendungsprogramme entgegen und leitet&lt;br /&gt;
diese kontrolliert an die Hardware weiter. Kein Anwendungsprogramm sollte&lt;br /&gt;
direkt auf die Hardware zugreifen können. Den zentralen Zugang schafft einzig&lt;br /&gt;
das Betriebssystem. Somit kann das Betriebssystem unsinnige Anforderungen&lt;br /&gt;
oder Bedienungsfehler abblocken.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Image:Linux.jpg]]&lt;br /&gt;
&lt;br /&gt;
===Aufgaben eines Betriebssystems===&lt;br /&gt;
&lt;br /&gt;
# Verbergen der Komplexität der Maschine vor dem Anwender (Abstraktion)&lt;br /&gt;
# Bereitstellen einer Benutzerschnittstelle (&amp;quot;Kommandointerpreter&amp;quot;, &amp;quot;Shell&amp;quot;)&lt;br /&gt;
# Bereitstellen einer normierten Programmierschnittstelle (API)&lt;br /&gt;
# Verwaltung der Ressourcen der Maschine::&lt;br /&gt;
Hauptspeicher&lt;br /&gt;
Prozessor(en)&lt;br /&gt;
Hintergrundspeicher (Platte, Band, etc.)&lt;br /&gt;
Geräte (Terminal, Drucker, Plotter, etc.)&lt;br /&gt;
Rechenzeit&lt;br /&gt;
Koordination von Prozessen&lt;br /&gt;
&lt;br /&gt;
===Aufbau eines Betriebssystems===&lt;br /&gt;
&lt;br /&gt;
Ein Rechensystem besteht aus Hardware, Systemprogrammen und Anwendungs-&lt;br /&gt;
programmen. Unter einem Betriebssystem wird meist die Summe aus Betriebs-&lt;br /&gt;
systemkern (Kernel) und den wichtigsten Systemprogrammen verstanden. Ein&lt;br /&gt;
minimaler LINUX-Kernel besitzt ungefähr eine Größe von 400 - 800 kByte.&lt;br /&gt;
Weitere wichtige Systemkomponenten benötigen zusätzlich 10 - 100 Mbyte&lt;br /&gt;
Plattenplatz.&lt;br /&gt;
&lt;br /&gt;
Ein Betriebssystem stellt den Rechner als erweiterte Maschine (virtuelle&lt;br /&gt;
Maschine) über definierte Software-Schnittstellen zur Verfügung.&lt;br /&gt;
Das Betriebssystem dient als Betriebsmittelverwalter, der Anforderungen&lt;br /&gt;
befriedigt, protokolliert, abrechnet und vermittelt.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Aufgaben des Betriebssystemkerns:&lt;br /&gt;
&lt;br /&gt;
{| Border=1 Cellpadding=2&lt;br /&gt;
|Prozessverwaltung  (dispatching and scheduling)&lt;br /&gt;
| Mehrere Benutzer können mit mehreren Aktionen gleichzeitig im System arbeiten, ohne sich gegenseitig zu beeinflussen. Damit dies möglich ist,  müssen die Aktionen organisiert, koordiniert und verwaltet werden. Die zu verwaltende Einheit nennt man Prozess.&lt;br /&gt;
|-&lt;br /&gt;
|Speicherverwaltung   (memory management)&lt;br /&gt;
|Zuteilen von Speicherbereichen an laufende Prozesse, Schutz der Speicherbereiche vor unbefugten Zugriffen, bei Speicherengpässen: Auslagern von ganzen (swapping) oder von Teilen (paging) von Prozessen auf die Platte (swap file).&lt;br /&gt;
|-&lt;br /&gt;
|Dateiverwaltung  (file handling)&lt;br /&gt;
|Zuteilung von Plattenplatz für Programme, Benutzer und Systemdienste, Schreiben, Lesen und Strukturieren der Daten auf den Massenspeichern; Durch Bereitstellung einer entsprechenden Schnittstelle (VFS, virtual file system) kann der Kern Dateisysteme unterschiedlichster Art (EXT2, FAT, NFS, HPFS, NTFS, ...) ansprechen.&lt;br /&gt;
|-&lt;br /&gt;
|Geräteverwaltung  (resource management)&lt;br /&gt;
|Der Kern ermöglicht und kontrolliert den Zugriff auf die Hardware. Er steuert die Ein- und Ausgabetätigkeiten der Anwender. An den Kern&lt;br /&gt;
gebunden sind die entsprechenden Gerätetreiber (device driver), die damit eine Kommunikation zwischen Kern und Hardware ermöglichen.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
===Multitasking===&lt;br /&gt;
&lt;br /&gt;
Multitasking bedeutet, dass ein Rechner aus Anwendersicht mehrere Aufgaben&lt;br /&gt;
(Tasks) gleichzeitg übernehmen kann. Das Betriebssystem (OS) unterteilt die&lt;br /&gt;
gleichzeitig anstehenden Aufgaben in Einzelarbeitsschritte (Prozesse) und&lt;br /&gt;
managed durch ein Zeitscheibenverfahren (scheduling) die gleichmäßige&lt;br /&gt;
Abarbeitung der Prozesse.&lt;br /&gt;
&lt;br /&gt;
Es wird unterschieden zwischen:&lt;br /&gt;
&lt;br /&gt;
*non-präamptiven (kooperativen=die Ressourcen werden vom aktiven Prozess freigegeben, bei einem Hänger steht das ganze System)&lt;br /&gt;
&lt;br /&gt;
und&lt;br /&gt;
&lt;br /&gt;
*präamptiven (reinem=der Betriebssystemkern steuert Taskwechsel, indem nach einer festgelegten Zeit vom gerade aktiven Prozess zum nächsten weitergeschaltet wird)&lt;br /&gt;
&lt;br /&gt;
===Mehrprozessorbetrieb===&lt;br /&gt;
&lt;br /&gt;
Bei mehreren Prozessoren und Unterstützung durch das OS&lt;br /&gt;
(NT,Linux,Unix,Novell) können mehrere Tasks auf diese verteilt werden und&lt;br /&gt;
gleichzeitig bearbeitet werden. Nachteilig ist, dass dies nicht oder kaum von&lt;br /&gt;
Anwendungsprogrammen unterstützt wird und es zu Kommunikationsproblemen&lt;br /&gt;
zwischen den einzelnen Tasks kommen kann.&lt;br /&gt;
&lt;br /&gt;
===Arten von von Betriebssystemen===&lt;br /&gt;
&lt;br /&gt;
{|Border=1 Cellpadding=2&lt;br /&gt;
|&lt;br /&gt;
|SingleUser  &lt;br /&gt;
|Multiuser&lt;br /&gt;
|-&lt;br /&gt;
|Single Tasking&lt;br /&gt;
|MS - DOS&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|Multi Tasking&lt;br /&gt;
|Windows 3.x&lt;br /&gt;
|UNIX&lt;br /&gt;
|-&lt;br /&gt;
|&lt;br /&gt;
|Windows 95/98&lt;br /&gt;
|Linux&lt;br /&gt;
|-&lt;br /&gt;
|&lt;br /&gt;
|Windows NT4 ohne Erweiterungen&lt;br /&gt;
|VMS&lt;br /&gt;
|-&lt;br /&gt;
|&lt;br /&gt;
|OS/2 &lt;br /&gt;
|Windows NT mit  Erweiterungen&lt;br /&gt;
|-&lt;br /&gt;
|&lt;br /&gt;
|Apple&lt;br /&gt;
|Windows 2000, XP, 2003&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
===SHELL===&lt;br /&gt;
&lt;br /&gt;
Wenn man mit Linux arbeiten will, kann man nicht direkt mit dem Betriebssystem&lt;br /&gt;
kommunizieren. Man braucht dazu ein Hilfsprogramm, welches die&lt;br /&gt;
Kommandoeingaben ordnungsgemäß an das Betriebssystem weiterleitet. Dieses&lt;br /&gt;
Hilfsprogramm hat den Namen Shell.&lt;br /&gt;
&lt;br /&gt;
Die Shell schirmt den Betriebssystemkern von den Anwendungsprogrammen ab.&lt;br /&gt;
Die unterschiedlichen Shells erfüllen alle dieselbe Aufgabe, sie unterscheiden sich&lt;br /&gt;
allerdings in ihrer Syntax.&lt;br /&gt;
&lt;br /&gt;
==Die Installation im Überblick==&lt;br /&gt;
&lt;br /&gt;
Die Installation von Linux geschieht in folgenden Schritten:&lt;br /&gt;
&lt;br /&gt;
# Analyse (Welche Hardware habe ich? ,Hab ich weitere Betriebsysteme?)&lt;br /&gt;
# Booten des Linux-Kernels. (von CD oder Diskette)&lt;br /&gt;
# Laden einer RAM-Disk (das macht das Installationsprogramm automatisch).&lt;br /&gt;
# Partitionieren der Festplatte (fdisk).&lt;br /&gt;
# Einrichten der Swappartition (mkswap), Formatieren der Festplatte (mkfs).&lt;br /&gt;
# Montieren der Dateisysteme (mount), Aktivieren der Swapbereiche (swapon).&lt;br /&gt;
# Kopieren und Auspacken der Daten vom Installationsmedium auf die Festplatte (die eigentliche Installation). (rpm, dpkg oder tar).&lt;br /&gt;
# Geeignete Wahl der Bootmethode unter Berücksichtigung von Punkt 1 (grub, lilo).&lt;br /&gt;
# Konfiguration des Systems (Netz, Modem etc...).&lt;br /&gt;
&lt;br /&gt;
==Erste Schritte==&lt;br /&gt;
===Anmelden===&lt;br /&gt;
Sie können sich nun mit dem Usernamen und dem Passwort, das sie bei der Installation angelegt haben anmelden!&lt;br /&gt;
[[Image:benutzer.jpg]]&lt;br /&gt;
&lt;br /&gt;
[[Image:passwd.jpg]]&lt;br /&gt;
&lt;br /&gt;
===Terminal öffnen===&lt;br /&gt;
&lt;br /&gt;
Ein Terminal öffnen Sie über das Startmenü:&lt;br /&gt;
&lt;br /&gt;
[[Image:Terminalde.jpg]]&lt;br /&gt;
&lt;br /&gt;
Das geöffnete Terminal sieht dann folgendermaßen aus:&lt;br /&gt;
&lt;br /&gt;
[[Image:Terminalde2.jpg]]&lt;br /&gt;
&lt;br /&gt;
===Sudo===&lt;br /&gt;
Rootrechte erlangen sie über den &amp;quot;Sudo&amp;quot;-Befehl&lt;br /&gt;
 &lt;br /&gt;
''Den nächsten Befehl als root ausführen''&lt;br /&gt;
 xinux@zero:~$ sudo cat /etc/shadow&lt;br /&gt;
 [sudo] password for xinux:&lt;br /&gt;
&lt;br /&gt;
''Eine komplette Sitzung als root starten''&lt;br /&gt;
 xinux@zero:~$ sudo -i&lt;br /&gt;
 [sudo] password for xinux:&lt;br /&gt;
 root@zero:~#&lt;br /&gt;
&lt;br /&gt;
===Virtuelle Konsolen===&lt;br /&gt;
&lt;br /&gt;
In die Virtuelle Konsole gelangen sie über &amp;quot;STRG+ALT+(F1-F6)&amp;quot;.&lt;br /&gt;
Sie funktioniert wie ein ganz normales Terminal, und mit &amp;quot;ALT+F7&amp;quot;&lt;br /&gt;
gelangen sie wieder zurück auf die grafische Benutzeroberfläche&lt;br /&gt;
&lt;br /&gt;
===Abmelden===&lt;br /&gt;
&lt;br /&gt;
Abmelden können Sie sich wieder über das Startmenu unter:&lt;br /&gt;
&lt;br /&gt;
[[Image:Logout.jpg]]&lt;br /&gt;
&lt;br /&gt;
Fals sie nur einzelne Sitzungen in einem der Terminals oder &lt;br /&gt;
den Virtuellen Konsolen Abmelden wollen benutzen sie dazu den Befehl: &amp;quot;exit&amp;quot;&lt;br /&gt;
&lt;br /&gt;
===Herunterfahren===&lt;br /&gt;
&lt;br /&gt;
Das Herunterfahren funktioniert auf dem selben Weg.&lt;br /&gt;
&lt;br /&gt;
Entweder sie Benutzen wieder das Startmenü und benutzen diesmal den &amp;quot;Ausschalten ...&amp;quot; Knopf,&lt;br /&gt;
&lt;br /&gt;
Oder sie geben den äquivalenten &amp;quot;shutdown&amp;quot;-Befehl in einem Terminal bzw. der virtuellen Konsole ein.&lt;br /&gt;
&lt;br /&gt;
Allerdings müssen sie dazu als Administrator angemeldet sein s. &amp;quot;Sudo&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Wenn Sie den &amp;quot;shutdown&amp;quot;-Befehl benutzen wollen muss hinter den Befehl&lt;br /&gt;
&lt;br /&gt;
eine Zeitangabe in Minuten oder das wort &amp;quot;now&amp;quot; für sofortiges Ausschalten hinzugefügt werden:&lt;br /&gt;
&lt;br /&gt;
 xinux@zero:~$ sudo -i&lt;br /&gt;
 root@zero:~# shutdown 60&lt;br /&gt;
 &lt;br /&gt;
 Broadcast message from xinux@zero &lt;br /&gt;
         (/dev/pts/3) at 14:29 ...&lt;br /&gt;
 &lt;br /&gt;
 The system is going down for maintenance in 60 minutes!&lt;br /&gt;
&lt;br /&gt;
Sollten sie den Befehl widerrufen wollen dann drücken sie &amp;quot;STRG+C&amp;quot;,&lt;br /&gt;
&lt;br /&gt;
in dem Terminal in dem der shutdown Befehl gestartet wurde,&lt;br /&gt;
&lt;br /&gt;
oder geben sie den &amp;quot;shutdown&amp;quot;-Befehl zusammen mit der Abbruchoption &amp;quot;-c&amp;quot; in einem anderen Terminal ein:&lt;br /&gt;
&lt;br /&gt;
 root@zero:~# shutdown -c&lt;br /&gt;
&lt;br /&gt;
 shutdown: Shutdown cancelled&lt;br /&gt;
 root@zero:~# &lt;br /&gt;
&lt;br /&gt;
Wenn Sie den Rechner Neustarten möchten gibt es dazu die Option &amp;quot;-r&amp;quot; für den &amp;quot;shutdown&amp;quot;-Befehl&lt;br /&gt;
&lt;br /&gt;
oder den &amp;quot;reboot&amp;quot;-Befehl die beide auch als root ausgeführt werden müssen:&lt;br /&gt;
&lt;br /&gt;
 xinux@zero:~$ sudo -i&lt;br /&gt;
 [sudo] password for xinux: &lt;br /&gt;
 root@zero:~# shutdown -r now&lt;br /&gt;
&lt;br /&gt;
 root@zero:~# reboot&lt;br /&gt;
&lt;br /&gt;
===&amp;quot;man&amp;quot;===&lt;br /&gt;
&lt;br /&gt;
Programm zum Einsehen der Online-Manuals&lt;br /&gt;
&lt;br /&gt;
Die Manuals sind in folgende Sektionen unterteilt:&lt;br /&gt;
# Ausführbare Programme oder Shellbefehle&lt;br /&gt;
# Systemaufrufe (Kernelfunktionen)&lt;br /&gt;
# Bibliotheksaufrufe (Funktionen in System-Bibliotheken)&lt;br /&gt;
# Spezielle Dateien (gewöhnlich in /dev)&lt;br /&gt;
# Dateiformate und Konventionen, z. B. /etc/passwd&lt;br /&gt;
# Spiele&lt;br /&gt;
# Makropakete und Konventionen, z. B. man(7), groff(7)&lt;br /&gt;
# Systemadministrationsbefehle (in der Regel nur für root)&lt;br /&gt;
# Kernelroutinen [Nicht Standard]&lt;br /&gt;
&lt;br /&gt;
Aufruf eines Manuals erfolgt durch ''man kommando''&lt;br /&gt;
Beendet wird durch Drücken des Buchstabens q&lt;br /&gt;
Gesucht wird vorwärts durch Eingabe eines /suchausdruck&lt;br /&gt;
Gesucht wird rückwärts durch Eingabe eines ?suchausdruck&lt;br /&gt;
&lt;br /&gt;
Beispiele:&lt;br /&gt;
&lt;br /&gt;
      man passwd        Anschauen der Manualseite zum Programm passwd&lt;br /&gt;
      man 5 passwd      Anschauen der Manualseite zur Datei /etc/passwd&lt;br /&gt;
      man -a passwd     Anschauen aller Manualseiten zu passwd&lt;br /&gt;
      man -k passwd     Durchsucht die Kurzbeschreibungen der Manualseite&lt;br /&gt;
                        nach passwd und gibt alle Treffer aus&lt;br /&gt;
      man -f passwd      Gibt alle gefunden Kurzbescheibungen zu passwd aus&lt;br /&gt;
      man -L en passwd Gibt englische Manualseiten aus&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Was geht vor auf meinem System? (date,who)===&lt;br /&gt;
&lt;br /&gt;
Das Kommando date dient zur Abfrage von Datum und Uhrzeit.&lt;br /&gt;
&lt;br /&gt;
 xinux@zero:~ &amp;gt; date&lt;br /&gt;
 Fre Mär 16 16:35:03 CET 2001&lt;br /&gt;
&lt;br /&gt;
oder auch Anzeige der Grennwich Zeit:&lt;br /&gt;
&lt;br /&gt;
 xinux@zero:~ &amp;gt; date -u&lt;br /&gt;
 Fre Mär 16 15:35:34 UTC 2001&lt;br /&gt;
&lt;br /&gt;
 xinux@zero:~ &amp;gt; date -u &amp;quot;+%X&amp;quot;&lt;br /&gt;
 15:37:19&lt;br /&gt;
&lt;br /&gt;
 xinux@zero:~ &amp;gt; date -u &amp;quot;+%x&amp;quot;&lt;br /&gt;
 01/15/02&lt;br /&gt;
&lt;br /&gt;
who zeigt alle angemeldeten Benutzer an&lt;br /&gt;
&lt;br /&gt;
 thomas@cardassia:~ &amp;gt; who&lt;br /&gt;
 thomas             tty1 Feb 27 16:39&lt;br /&gt;
 thomas             tty2 Mar 2 17:08&lt;br /&gt;
 tina               tty6 Mar 16 16:38&lt;br /&gt;
&lt;br /&gt;
Mit `who --help' bekommen Sie mehr Informationen.&lt;br /&gt;
&lt;br /&gt;
 thomas@cardassia:~ &amp;gt; who --help&lt;br /&gt;
&lt;br /&gt;
Benutzung: who [OPTION]... [ DATEI | ARG1 ARG2 ]&lt;br /&gt;
&lt;br /&gt;
 -H, --heading             print line of column headings&lt;br /&gt;
 -i, -u, --idle            add user idle time as HOURS:MINUTES, . or old&lt;br /&gt;
 -l, --lookup              attempt to canonicalize hostnames via DNS&lt;br /&gt;
 -m                        only hostname and user associated with stdin&lt;br /&gt;
 -q, --count               all login names and number of users logged on&lt;br /&gt;
 -s                        (ignored)&lt;br /&gt;
 -T, -w, --mesg            add user's message status as +, - or ?&lt;br /&gt;
     --message             same as -T&lt;br /&gt;
     --writable            same as -T&lt;br /&gt;
     --help                display this help and exit&lt;br /&gt;
     --version             output version information and exit&lt;br /&gt;
&lt;br /&gt;
==Das UNIX-Dateisystem==&lt;br /&gt;
===Verzeichnisbaum===&lt;br /&gt;
&lt;br /&gt;
[[Image:vztree.jpg]]&lt;br /&gt;
&lt;br /&gt;
Das Betriebssystem UNIX besitzt ein hierarchisches Dateisystem. Es besteht aus:&lt;br /&gt;
* Dateien (Files)&lt;br /&gt;
Dateien speichern Informationen (Text, Bilder, Sound, Videos, Programme) und&lt;br /&gt;
werden über den Dateinamen angesprochen.&lt;br /&gt;
&lt;br /&gt;
* Verzeichnissen (Directories, Kataloge)&lt;br /&gt;
Verzeichnisse besitzen ebenfalls einen Namen und dienen zur Ordnung des&lt;br /&gt;
Dateisystems. Ein Verzeichnis kann Dateien und Unterverzeichnisse&lt;br /&gt;
(Subdirectories) enthalten. Das oberste Verzeichnis im Dateisystem heisst&lt;br /&gt;
Rootverzeichnis oder kurz Root und wird durch / (sprich: slash)&lt;br /&gt;
gekennzeichnet.&lt;br /&gt;
&lt;br /&gt;
Im Gegensatz zu Windows kennt UNIX keine Laufwerke.&lt;br /&gt;
Das obige Bild zeigt ein typisches UNIX-Dateisystem.&lt;br /&gt;
Unterhalb des Rootverzeichnisses befinden sich eine Vielzahl vonVerzeichnissen.&lt;br /&gt;
&lt;br /&gt;
===Wichtige Verzeichnisse===&lt;br /&gt;
&lt;br /&gt;
• '''Homeverzeichnis'''&lt;br /&gt;
&lt;br /&gt;
das Verzeichnis, in dem man sich unmittelbar nach dem Anmelden befindet. Das&lt;br /&gt;
Homeverzeichnis wird vom Systemverwalter eingerichtet; jeder Anwender&lt;br /&gt;
besitzt ein festes Homeverzeichnis. z.B. /home/hans&lt;br /&gt;
&lt;br /&gt;
~ (Tilde) bzw. $HOME (Shellvariable) kennzeichnen das Homeverzeichnis.&lt;br /&gt;
&lt;br /&gt;
• '''Aktuelles Verzeichnis'''&lt;br /&gt;
&lt;br /&gt;
Verzeichnis, in dem man sich aktuell befindet.&lt;br /&gt;
Das aktuelle Verzeichnis wird mit dem Befehl cd (change directory) oder per&lt;br /&gt;
Mausklick verändert.&lt;br /&gt;
Ein einfacher Punkt . kennzeichnet das aktuelle Verzeichnis.&lt;br /&gt;
&lt;br /&gt;
• '''Elternverzeichnis'''&lt;br /&gt;
&lt;br /&gt;
Verzeichnis unmittelbar oberhalb des aktuellen Verzeichnisses.&lt;br /&gt;
Jedes Verzeichnis ausser / besitzt genau ein Elternverzeichnis.&lt;br /&gt;
Zwei Punkte .. kennzeichnen das Elternverzeichnis (abhängig vom aktuellen&lt;br /&gt;
VZ).&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Absoluter Pfadname:===&lt;br /&gt;
&lt;br /&gt;
Beschreibt ausgehend vom Rootverzeichnis den Weg zum Zielverzeichnis oder zur&lt;br /&gt;
Zieldatei. (Welche Verzeichnisse müssen ausgehend von / durchlaufen werden, um&lt;br /&gt;
zum Ziel zu kommen?) Ein absoluter Pfadname beginnt immer mit / .&lt;br /&gt;
&lt;br /&gt;
===Relativer Pfadname:===&lt;br /&gt;
&lt;br /&gt;
Beschreibt ausgehend vom aktuellen Verzeichnis den Weg zum Zielverzeichnis&lt;br /&gt;
oder zur Zieldatei; ein relativer Pfadname beginnt nicht mit / .&lt;br /&gt;
/home/suxer&lt;br /&gt;
absoluter Pfadname für das Verzeichnis sub1 im Homeverzeichnis von suxer&lt;br /&gt;
&lt;br /&gt;
===Verzeichnisstruktur===&lt;br /&gt;
&lt;br /&gt;
 /bin         Kommandos die beim starten benötigt werden (Zugriff hat jeder)&lt;br /&gt;
 /sbin        Wichtige System-Programme (In der Regel root vorberhalten)&lt;br /&gt;
 /boot        Hier findet man die Dateien des Bootmanagers und des Kernel.&lt;br /&gt;
 /dev         In diesem Verzeichnis stehen die Gerätedateien (Devices),&lt;br /&gt;
 /home        Alle Heimatverzeichnisse der Nutzer findet man hier.&lt;br /&gt;
 /lib         Beim Systemstart benötigten Bibliotheken und Modules stehen hier.&lt;br /&gt;
 /mnt         Mountpunkt für temporäre Partitionen&lt;br /&gt;
 /opt         Software, die nicht Installationsumfang von Linux gehören.&lt;br /&gt;
 /root        Heimatverzeichnis des Administrators.&lt;br /&gt;
 /tmp         Temporäre Dateien können hier abgelegt werden&lt;br /&gt;
 /usr         statische Dateien (kann read-only gemountet sein)&lt;br /&gt;
 /var         variable Dateien (muss beschreibar sein )&lt;br /&gt;
 /etc         Konfiguartionsdateien und Startscripte&lt;br /&gt;
 /proc        Virtuelles Dateisystem -&amp;gt; repräsentiert den Kernel&lt;br /&gt;
&lt;br /&gt;
===Unterverzeichnisse von /usr===&lt;br /&gt;
&lt;br /&gt;
 sbin         Programme für root die beim Start nicht benötigt werden&lt;br /&gt;
 bin          Programme für alle die beim Start nicht benötigt werden&lt;br /&gt;
 X11R6        Dateien des X-Window-Sytems&lt;br /&gt;
 bin          Ausführbare Programme&lt;br /&gt;
 doc          Dokumentationen&lt;br /&gt;
 etc          Konfigurationsdateien&lt;br /&gt;
 games        Spiele&lt;br /&gt;
 include      Headerdateien für C-Programme&lt;br /&gt;
 local        Pakete die nicht zur Distribution gehören ähnlich /opt&lt;br /&gt;
 share        Pakete die von mehreren Paketen genutzt werden&lt;br /&gt;
 share/man    Die Manualpages&lt;br /&gt;
 share/info   Seiten des Infosystems&lt;br /&gt;
 share/doc    Dokumentationen&lt;br /&gt;
 src          Sources von Programmen (Kernel und andere)&lt;br /&gt;
&lt;br /&gt;
===Unterverzeichnisse von /var===&lt;br /&gt;
&lt;br /&gt;
 cache        Zwischenspreicher für Progammes&lt;br /&gt;
 games        Variable Daten der Games (Scores etc...)&lt;br /&gt;
 lock         Sperrdateien&lt;br /&gt;
 log          Die Logdateien (wichtiges Verzeichnis für Admins)&lt;br /&gt;
 mail         Das Mailsystem&lt;br /&gt;
 run          Dateien zu laufemdem Prozessen&lt;br /&gt;
 spool        Spooldateien (z.B. für das Drucksystem&lt;br /&gt;
 state        Statusinfos&lt;br /&gt;
 tmp          Wie /tmp eventuell nicht auf root Partion&lt;br /&gt;
&lt;br /&gt;
==Einfache Komandos==&lt;br /&gt;
===cd: Wechseln des Arbeitsverzeichnis===&lt;br /&gt;
&lt;br /&gt;
Um festzustellen in welchem Verzeichnis man sich befindet, sollte man den&lt;br /&gt;
Befehl &amp;quot;pwd&amp;quot; benutzen,&lt;br /&gt;
&lt;br /&gt;
und mit dem Befehl &amp;quot;cd&amp;quot; kann man zwischen den Verzeichnissen wechseln:&lt;br /&gt;
&lt;br /&gt;
Wechsele ins homeverzeichnis von Xinux&lt;br /&gt;
&lt;br /&gt;
 xinux@zero:~$ cd /home/xinux/&lt;br /&gt;
 xinux@zero:~$ pwd&lt;br /&gt;
 /home/xinux&lt;br /&gt;
&lt;br /&gt;
cd ~ -&amp;gt; wechsele ins jeweilige Homeverzeichnis&lt;br /&gt;
&lt;br /&gt;
cd .. -&amp;gt; wechsele ein Verzeichnis höher&lt;br /&gt;
&lt;br /&gt;
cd ../verzeichnis -&amp;gt; wechsele in eine paralleles Verzeichnis &amp;lt;- (ist eine relative Pfadangabe !)&lt;br /&gt;
&lt;br /&gt;
cd - -&amp;gt; wechsele in das Verzeichnis, in dem vorher gearbeitet wurde.&lt;br /&gt;
&lt;br /&gt;
Mit cd / wechselt man in das Wurzelverzeichnis.&lt;br /&gt;
&lt;br /&gt;
 xinux@zero:/var/log$ cd /&lt;br /&gt;
 xinux@zero:/$ pwd&lt;br /&gt;
 /&lt;br /&gt;
&lt;br /&gt;
===ls: Listing===&lt;br /&gt;
&lt;br /&gt;
Den Inhalt von Verzeichnissen kann man sich mit dem Befehl &amp;quot;ls&amp;quot; anzeigen lassen&lt;br /&gt;
wobei &amp;quot;ls&amp;quot; eine Vielzahl von Optionen besitzt:&lt;br /&gt;
&lt;br /&gt;
 ls                                  standard&lt;br /&gt;
 ls -l                               langes listing&lt;br /&gt;
 ls -a                               alle Dateien&lt;br /&gt;
 ls -i                               mit Inode&lt;br /&gt;
 ls -h                               gut lesbare Dateigröße&lt;br /&gt;
 ls -d                               Verzechnis wird angezeigt, nicht der Inhalt&lt;br /&gt;
 ls -L                               sortiert nach Größe&lt;br /&gt;
 ls -t                               sortiert nach Datum&lt;br /&gt;
 ls -F                               mit nützlichem Anhang&lt;br /&gt;
&lt;br /&gt;
 xinux@zero:/$ ls -l /var/log/messages&lt;br /&gt;
 -rw-r----- 1 syslog adm 2296 2009-06-16 10:05 /var/log/messages&lt;br /&gt;
&lt;br /&gt;
===more: Seitenweises Anzeigen von Seiten===&lt;br /&gt;
 root@zero:~# more /var/log/messages&lt;br /&gt;
 ...&lt;br /&gt;
&lt;br /&gt;
===head: erste Zeilen anzeigen===&lt;br /&gt;
Erste 10 Zeilen anzeigen&lt;br /&gt;
 root@zero:~# head /var/log/messages&lt;br /&gt;
 Jun 15 12:37:08 zero syslogd 1.5.0#5ubuntu3: restart.&lt;br /&gt;
 Jun 15 12:38:43 zero kernel: [  830.065036] mtrr: your processor doesn't support write-combining&lt;br /&gt;
 Jun 15 12:46:05 zero pulseaudio[4817]: pid.c: Stale PID file, overwriting.&lt;br /&gt;
 Jun 15 13:05:24 zero -- MARK --&lt;br /&gt;
 ...&lt;br /&gt;
&lt;br /&gt;
Erste zwei Zeilen anzeigen&lt;br /&gt;
 root@zero:~# head -n 2 /var/log/messages&lt;br /&gt;
 Jun 15 12:37:08 zero syslogd 1.5.0#5ubuntu3: restart.&lt;br /&gt;
 Jun 15 12:38:43 zero kernel: [  830.065036] mtrr: your processor doesn't support write-combining&lt;br /&gt;
&lt;br /&gt;
===tail: letzte Zeilen anzeigen===&lt;br /&gt;
 &lt;br /&gt;
 root@zero:~# tail /var/log/syslog&lt;br /&gt;
 ...&lt;br /&gt;
 Jun 19 11:19:35 zero -- MARK --&lt;br /&gt;
 Jun 19 11:39:35 zero -- MARK --&lt;br /&gt;
 Jun 19 11:59:36 zero -- MARK --&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Letze 5 Zeilen anzeigen&lt;br /&gt;
 root@zero:~# tail -n 5 /var/log/auth.log&lt;br /&gt;
 Jun 18 14:30:01 zero CRON[12040]: pam_unix(cron:session): session closed for user root&lt;br /&gt;
 Jun 18 14:39:01 zero CRON[12191]: pam_unix(cron:session): session opened for user root by (uid=0)&lt;br /&gt;
 Jun 18 14:39:01 zero CRON[12191]: pam_unix(cron:session): session closed for user root&lt;br /&gt;
 Jun 18 14:40:01 zero CRON[12237]: pam_unix(cron:session): session opened for user root by (uid=0)&lt;br /&gt;
 Jun 18 14:40:01 zero CRON[12237]: pam_unix(cron:session): session closed for user root&lt;br /&gt;
&lt;br /&gt;
Letze Zeilen anzeigen und fortlaufend aktualisieren&lt;br /&gt;
 root@zero:~# tail -f /var/log/syslog&lt;br /&gt;
 ...&lt;br /&gt;
&lt;br /&gt;
===mkdir: Ein neues Verzeichnis erstellen===&lt;br /&gt;
&lt;br /&gt;
 mkdir        verzeichnis&lt;br /&gt;
Erstellt ein Verzeichnis im working directory (wd)&lt;br /&gt;
&lt;br /&gt;
 mkdir  -p    ver1/ver2&lt;br /&gt;
Erstellt ein Verzeichnis ver2 unterhalb von ver1&lt;br /&gt;
wenn ver1 nicht existiert wird es erstellt&lt;br /&gt;
&lt;br /&gt;
 mkdir -m 753 ver1&lt;br /&gt;
Es wird das Verzeichnis ver1 erstellt mit der mask 753&lt;br /&gt;
&lt;br /&gt;
 mkdir -v     ver1&lt;br /&gt;
Geschwätzige Ausgabe :)&lt;br /&gt;
&lt;br /&gt;
===Zum Löschen von leeren Verzeichnissen wird rmdir benutzt===&lt;br /&gt;
&lt;br /&gt;
 rmdir           ver1&lt;br /&gt;
Löscht das leere Verzeichnis ver1&lt;br /&gt;
&lt;br /&gt;
 rmdir -v        ver1&lt;br /&gt;
Löscht das leere Verzeichnis ver1 und ist geschwätzig&lt;br /&gt;
&lt;br /&gt;
 rmdir -p        /ver1/ver2/ver3&lt;br /&gt;
Löscht das Verzeichnis ver3; wenn dadurch ver2 ein leeres&lt;br /&gt;
Verzeichnis wird, wird dieses auch gelöscht , wenn ver1&lt;br /&gt;
dadurch ein leeres Verzeichnis wird, wird auch dieses gelöscht.&lt;br /&gt;
&lt;br /&gt;
===touch Verändern des Zeitstempels===&lt;br /&gt;
&lt;br /&gt;
Mit touch können wir eine neue leere Datei erzeugen (das ist nicht der eigentliche&lt;br /&gt;
Zweck von touch, eigentlich wird der Zeitstempel geändert)&lt;br /&gt;
&lt;br /&gt;
 touch            dateiname&lt;br /&gt;
&lt;br /&gt;
===Kopieren=== &lt;br /&gt;
cp ist das Kommando um Dateien zu kopieren &lt;br /&gt;
&lt;br /&gt;
Eine Kopie von dat1 mit dem Namen dat2 erstellen:&lt;br /&gt;
&lt;br /&gt;
 xinux@zero:~$ cp dat1 dat2&lt;br /&gt;
&lt;br /&gt;
Eine Kopie von dat1 ins Verzeichnis ver2 erstellen:&lt;br /&gt;
&lt;br /&gt;
 xinux@zero:~$ cp dat1 ver2/&lt;br /&gt;
 &lt;br /&gt;
Eine Kopie erstellen mit ausführlicher Anzeige:&lt;br /&gt;
&lt;br /&gt;
 xinux@zero:~$ cp -v dat1 dat2&lt;br /&gt;
 `dat1' -&amp;gt; `dat2'&lt;br /&gt;
&lt;br /&gt;
Eine Kopie erstellen mit Rückfrage fals etwas überschrieben wird:&lt;br /&gt;
&lt;br /&gt;
 xinux@zero:~$ cp -i dat1 dat2&lt;br /&gt;
 cp: overwrite `dat2'?&lt;br /&gt;
&lt;br /&gt;
Eine Kopie erstellen und die Rückfrage überbrücken:&lt;br /&gt;
&lt;br /&gt;
 xinux@zero:~$ cp -f dat1 dat2&lt;br /&gt;
&lt;br /&gt;
Eine Kopie von dat1 ins Verzeichnis ver2 erstellen fals keine neuere Version von dat1 vorliegt:&lt;br /&gt;
&lt;br /&gt;
 xinux@zero:~$ cp -u dat1 ver2/&lt;br /&gt;
&lt;br /&gt;
Eine Kopie erstellen fals ver2 auf dem selben Dateisystem wie dat1 liegt:&lt;br /&gt;
&lt;br /&gt;
 xinux@zero:~$ cp -x dat1 ver2/&lt;br /&gt;
&lt;br /&gt;
Eine Kopie von ver1, die als ver2 oder unter ver2 als ver1 gespeichert wird erstellen:&lt;br /&gt;
&lt;br /&gt;
 xinux@zero:~$ cp -r ver1/ ver2/&lt;br /&gt;
&lt;br /&gt;
Eine Kopie von einer Datei erstellen und ihre Attribute beibehalten:&lt;br /&gt;
&lt;br /&gt;
 xinux@zero:~$ cp -p sux1 sux2&lt;br /&gt;
&lt;br /&gt;
Eine Kopie erstellen bei der die Links erhalten bleiben:&lt;br /&gt;
&lt;br /&gt;
 xinux@zero:~$ cp -r ver1/ ver2/&lt;br /&gt;
&lt;br /&gt;
Eine Kopie erstellen zum Archivieren (-dpr):&lt;br /&gt;
&lt;br /&gt;
 xinux@zero:~$ cp -a ver1/ ver2/&lt;br /&gt;
&lt;br /&gt;
===rm: Löschen einer Datei===&lt;br /&gt;
&lt;br /&gt;
Um Dateien zu löschen, brauchen wir das Kommando &amp;quot;rm&amp;quot;:&lt;br /&gt;
&lt;br /&gt;
 rm               dat1        dat1 wird gelöscht&lt;br /&gt;
 rm         -i    dat1        dat1 wird nach Bestätigung gelöscht&lt;br /&gt;
 rm         -f    dat1        dat1 wird ohne Rückfragen gelöscht&lt;br /&gt;
 rm         -v    dat1        dat1 wird glöscht (geschwätzige Ausgabe)&lt;br /&gt;
 rm         -r    ver1        Löschen von nicht leeren Verzeichnissen&lt;br /&gt;
                              Achtung !!! Als root kann man sich damit Teile&lt;br /&gt;
                              oder sogar den gesamten Verzeichnisbaum&lt;br /&gt;
                              absägen !!!&lt;br /&gt;
&lt;br /&gt;
===mv: Verschieben===&lt;br /&gt;
&lt;br /&gt;
Mit dem Befehl &amp;quot;mv&amp;quot; werden Daten verschoben, folgendes gilt:&lt;br /&gt;
&lt;br /&gt;
 mv          dat1 dat2         &lt;br /&gt;
Die Datei dat1 wird in dat2 umbenannt&lt;br /&gt;
 mv          dat1 /ver1        &lt;br /&gt;
Die Datei dat1 wird nach /ver1 verschoben&lt;br /&gt;
&lt;br /&gt;
Die Parameter und ihre Bedeutung:&lt;br /&gt;
&lt;br /&gt;
      -i                      wenn eine Datei exisitiert wird vor dem&lt;br /&gt;
                              Überschreiben nachgefragt&lt;br /&gt;
      -v                      verbose (geschwätzig)&lt;br /&gt;
      -u                      nur neuere Daten werden bei Bedarf überschrieben&lt;br /&gt;
      -b                      wenn überschrieben werden soll, wird ein Backup&lt;br /&gt;
                              erstellt&lt;br /&gt;
      -S ENDUNG               das Backup bekommt die Endung ENDUNG&lt;br /&gt;
&lt;br /&gt;
===su Benutzer wechseln===&lt;br /&gt;
&lt;br /&gt;
 su -             &lt;br /&gt;
Wechsel zum Rootaccount, wie wenn dieser sich neu anmelden würde. (Bsp: su -)&lt;br /&gt;
&lt;br /&gt;
 su Benutzernamen &lt;br /&gt;
Wechsel der Identität zu Benutzer (gegebenenfalls Passwortabfrage)&lt;br /&gt;
&lt;br /&gt;
 su -c Kommando   &lt;br /&gt;
Kommando wird als rootaccount ausgeführt&lt;br /&gt;
&lt;br /&gt;
==Der Standard Editor vi==&lt;br /&gt;
Der vi ist der Standardeditor in der Unixwelt. Er ist in jedem Unix-Derivat&lt;br /&gt;
enthalten.&lt;br /&gt;
Der Editor hat zwar den schlechten Ruf umständlich zu bedienen zu sein, ist&lt;br /&gt;
jedoch sehr leistungsfähig und systemübergreifend verfügbar. Beim vi handelt es&lt;br /&gt;
sich um einen rein textorientierten Editor, der mittels eigener Kommandos&lt;br /&gt;
gesteuert wird.&lt;br /&gt;
&lt;br /&gt;
Der Editor VIM ist eine weitere Verbesserung von VI und leichter zu bedienen.&lt;br /&gt;
Und unter Ubuntu/Debian mit &amp;quot;apt-get install vim&amp;quot; zu installieren.&lt;br /&gt;
&lt;br /&gt;
===Starten des Editors:===&lt;br /&gt;
&lt;br /&gt;
Der Editorstart erfolgt einfach durch die Eingabe des Kommandos vi mit dem&lt;br /&gt;
Dateinamen der zu editierenden Datei als Parameter.&lt;br /&gt;
Beispiel:        &lt;br /&gt;
 vi sux.txt&lt;br /&gt;
&lt;br /&gt;
===Die Betriebsmodi des vi:===&lt;br /&gt;
&lt;br /&gt;
Ein Umstand, der dem vi den Ruf der komplizierten Bedienbarkeit zugetragen hat,&lt;br /&gt;
sind die unterschiedlichen Betriebsmodi des Editors. Genauer gesagt verfügt der&lt;br /&gt;
vi über drei Betriebsmodi:&lt;br /&gt;
&lt;br /&gt;
====Kommandomodus:====&lt;br /&gt;
&lt;br /&gt;
Innerhalb dieses Modus werden die eingegebenen Zeichen direkt als Befehle des&lt;br /&gt;
Editors interpretiert und ausgeführt. Dabei gibt es weder ein Bereitschaftszeichen&lt;br /&gt;
(Prompt) noch ein Echo (Ausgabe). Der Kommandomodus ist der Modus, in dem&lt;br /&gt;
sich der vi direkt nach seinem Start befindet.&lt;br /&gt;
&lt;br /&gt;
====Zeilenmodus oder Exmodus:====&lt;br /&gt;
&lt;br /&gt;
Dieser Modus ist der einzige Modus mit einem eigenen Bereitschaftszeichen,&lt;br /&gt;
nämlich dem Doppelpunkt (:). Das Prompt wird ebenso wie die Befehlsausgaben&lt;br /&gt;
in der Statuszeile angezeigt.&lt;br /&gt;
&lt;br /&gt;
====Eingabemodus:====&lt;br /&gt;
&lt;br /&gt;
Der Eingabemodus ist derjenige, in welchem der zu bearbeitende Text bearbeitet&lt;br /&gt;
werden kann. Alle hier eingegebenen Zeichen werden als Text für die aktuelle&lt;br /&gt;
Datei interpretiert. Zwischen den unterschiedlichen Modi kann jederzeit&lt;br /&gt;
gewechselt werden. Von Kommandomodus gelangen Sie durch mehere Wege in&lt;br /&gt;
den Eingabemodus. Man kann durch folgende Aktionen wechslen&lt;br /&gt;
&lt;br /&gt;
{| border=1 cellpadding=2&lt;br /&gt;
|i&lt;br /&gt;
|Text vor der aktuellen Cursorposition einfügen&lt;br /&gt;
|-&lt;br /&gt;
|I&lt;br /&gt;
|Text am Zeilenanfang einfügen&lt;br /&gt;
|-&lt;br /&gt;
|a&lt;br /&gt;
|Text hinter der aktuellen Cursorposition einfügen&lt;br /&gt;
|-&lt;br /&gt;
|A&lt;br /&gt;
|Text am Zeilenende einfügen&lt;br /&gt;
|-&lt;br /&gt;
|o&lt;br /&gt;
|Unterhalb der aktuellen Zeile eine neue Zeile einfügen&lt;br /&gt;
|-&lt;br /&gt;
|O&lt;br /&gt;
|Oberhalb der aktuellen Zeile eine neue Zeile einfügen&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Durch das Drücken der ESC - Taste gelangt man in den Kommandomodus zurück.&lt;br /&gt;
&lt;br /&gt;
Im Kommandomodus können Sie durch den Text navigieren und auch den Text&lt;br /&gt;
selbst bearbeiten, z.B ausschneiden, kopieren usw. Dazu sind einige Kommandos&lt;br /&gt;
nötig, von denen die wichtigsten im Folgenden erläutert werden:&lt;br /&gt;
&lt;br /&gt;
 xinux@zero:/$ vi iwas.txt&lt;br /&gt;
&lt;br /&gt;
[[Image:vim.jpg]]&lt;br /&gt;
&lt;br /&gt;
===Benutzen des Kommandomodus===&lt;br /&gt;
====Steuerung des Cursors durch den Text====&lt;br /&gt;
&lt;br /&gt;
Mittels folgender Kommandos bewegt sich der Cursor durch den Text:&lt;br /&gt;
&lt;br /&gt;
{| border=1 cellpadding=2&lt;br /&gt;
|h&lt;br /&gt;
|Cursor ein Zeichen nach links&lt;br /&gt;
|-&lt;br /&gt;
|l&lt;br /&gt;
|Cursor ein Zeichen nach rechts&lt;br /&gt;
|-&lt;br /&gt;
|k&lt;br /&gt;
|Cursor eine Zeile nach oben&lt;br /&gt;
|-&lt;br /&gt;
|j&lt;br /&gt;
|Cursor eine Zeile nach unten&lt;br /&gt;
|-&lt;br /&gt;
|w&lt;br /&gt;
|Cursor ein Wort nach rechts&lt;br /&gt;
|-&lt;br /&gt;
|b&lt;br /&gt;
|Cursor ein Wort nach links&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Alle diese Kommandos können mit einem vorgestellten Wiederholungsfaktor&lt;br /&gt;
arbeiten. Der Befehl 3w verschiebt demnach den Cursor um 3 Wörter nach rechts.&lt;br /&gt;
&lt;br /&gt;
====Angaben zur Positionierung====&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{| border=1 cellpadding=2&lt;br /&gt;
|STRG+U&lt;br /&gt;
|1⁄2 Bildschirmseite nach oben&lt;br /&gt;
|-&lt;br /&gt;
|STRG+D&lt;br /&gt;
|1⁄2 Bildschirmseite nach unten&lt;br /&gt;
|-&lt;br /&gt;
|STRG+B&lt;br /&gt;
|1 Bildschirmseite nach oben&lt;br /&gt;
|-&lt;br /&gt;
|STRG+F&lt;br /&gt;
|1 Bildschirmseite nach unten&lt;br /&gt;
|-&lt;br /&gt;
|/Ausdruck&lt;br /&gt;
|Sucht den Ausdruck (vorwärts) Weitersuchen mit n , N&lt;br /&gt;
|-&lt;br /&gt;
|?Ausdruck&lt;br /&gt;
|Sucht den Ausdurck (rückwärts) Weitersuchen mit n , N&lt;br /&gt;
|-&lt;br /&gt;
|0&lt;br /&gt;
|Zeilenanfang&lt;br /&gt;
|-&lt;br /&gt;
|$&lt;br /&gt;
|Zeilenende&lt;br /&gt;
|-&lt;br /&gt;
|w&lt;br /&gt;
|Nächstes Wort&lt;br /&gt;
|-&lt;br /&gt;
|b&lt;br /&gt;
|Vorheriges Wort&lt;br /&gt;
|-&lt;br /&gt;
|fc&lt;br /&gt;
|Auf das Zeichen c springen. c steht für ein beliebiges Zeichen&lt;br /&gt;
|-&lt;br /&gt;
|G&lt;br /&gt;
|Letzte Zeile der Datei&lt;br /&gt;
|-&lt;br /&gt;
|ng&lt;br /&gt;
|n-te Zeile der Datei&lt;br /&gt;
|-&lt;br /&gt;
|H&lt;br /&gt;
|Anfang der Bildschirmseite&lt;br /&gt;
|-&lt;br /&gt;
|L&lt;br /&gt;
|Ende der Bildschirmseite&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
====Befehle zur Textbearbeitung -&amp;gt; Was soll geschehen====&lt;br /&gt;
&lt;br /&gt;
{| Border=1 Cellpadding=2&lt;br /&gt;
|x&lt;br /&gt;
|Löscht Zeichen&lt;br /&gt;
|-&lt;br /&gt;
|d&lt;br /&gt;
|Löschen und in den Puffer laden&lt;br /&gt;
|-&lt;br /&gt;
|c&lt;br /&gt;
|Ändern&lt;br /&gt;
|-&lt;br /&gt;
|y&lt;br /&gt;
|In den Puffer laden&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
====Weitere wichtige Befehle:====&lt;br /&gt;
&lt;br /&gt;
{| Border=1 Cellpadding=2&lt;br /&gt;
|p&lt;br /&gt;
|Aus dem Puffer einfügen&lt;br /&gt;
|-&lt;br /&gt;
|u&lt;br /&gt;
|Undo, macht den letzten Befehl rückgängig&lt;br /&gt;
|-&lt;br /&gt;
|STRG+R&lt;br /&gt;
|Redo, macht den letzten Undo rückgängig&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
===Zeilen- oder Exmodus===&lt;br /&gt;
&lt;br /&gt;
Wie schon erwähnt wird der Zeilen oder Exmodus durch einen : eingeleitet.&lt;br /&gt;
Es folgen einige Beispiele.&lt;br /&gt;
&lt;br /&gt;
Befehle zum Speichern und Beenden:&lt;br /&gt;
&lt;br /&gt;
 :w          Schreibt Datei&lt;br /&gt;
 :w Datei2   Schreibt eine Kopie in Datei2&lt;br /&gt;
 :w !        Schreibt Datei (übergehe Schreibschutz)&lt;br /&gt;
 :w ! Datei2 Schreibt eine Kopie in Datei2 (übergehe Schreibschutz)&lt;br /&gt;
 :q          Schließe Datei&lt;br /&gt;
 :q!         Schließe Datei (verwerfe Änderungen)&lt;br /&gt;
 :wq         Schreibe Datei und beende Editor&lt;br /&gt;
 :wq!        Schreibe Datei und beende Editor (übergehe Schreibschutz)&lt;br /&gt;
 :q!         Schließe Datei (verwerfe Änderungen)&lt;br /&gt;
 :h          Hilfe anzeigen, durch drücken von :q Beenden der Hilfe&lt;br /&gt;
 :e Datei3   Editiere Datei3&lt;br /&gt;
 :e #        Editere vorhergehende Datei&lt;br /&gt;
 :1,3co9     Kopiere von der ersten bis zu dritten Zeile &lt;br /&gt;
             und füge den Inhalt unterhalb der neunte Zeile ein.&lt;br /&gt;
&lt;br /&gt;
Interaktionen mit Unix:&lt;br /&gt;
&lt;br /&gt;
 :r Datei4   Fügt Inhalt der Datei4 nach dem Cursor ein&lt;br /&gt;
 :r ! Befehl Fügt Ausgabe des Befehls nach dem Cursor ein&lt;br /&gt;
 :! Befehl   Führt den Befehl aus&lt;br /&gt;
 :sh         Starte Subshell -&amp;gt; mit exit kehrt man wieder zurück&lt;br /&gt;
             Eingabemodus zurück&lt;br /&gt;
&lt;br /&gt;
====Ersetzen von Textteilen====&lt;br /&gt;
&lt;br /&gt;
Die grundsätzliche Syntax lautet:&lt;br /&gt;
&lt;br /&gt;
 :[Zeilennummer,Zeilennummer]s/Muster/Ersetzung/[gc]&lt;br /&gt;
&lt;br /&gt;
 :s/worf/kirn/              der erste worf wird in der aktuellen Zeile durch kirn ersetzt&lt;br /&gt;
 :1,9s/worf/kirn/g          von der 1. bis zur 9. Zeile werden alle worf durch kirn ersetzt&lt;br /&gt;
 :1,$s/worf/kirn/           von der ersten bis zur letzten Zeile ersetze ersten worf durch&lt;br /&gt;
                            kirn&lt;br /&gt;
 :.,$s/worf/kirn/g          von der aktuellen bis zur letzten Zeile ersetze alle worf durch&lt;br /&gt;
                            kirn&lt;br /&gt;
 :1,.s/worf/kirn/c          von der 1. bis zur aktuellen Zeile ersetze worf durch kirn, frage&lt;br /&gt;
                            aber nach&lt;br /&gt;
 :1,$s/^worf/kirn/          von der ersten bis zur letzten Zeile ersetze worf am&lt;br /&gt;
                            Zeilenanfang durch kirn&lt;br /&gt;
 :4,$s/worf$/kirn/          von der 4. bis zur letzten Zeile ersetze worf am Zeilenende&lt;br /&gt;
                            durch kirn&lt;br /&gt;
 :1,$s/^#//                 lösche alle Kommentarzeichen&lt;br /&gt;
 :1,$s/^.orf/kirn/           ersetze alles was am Zeilenanfang ein beliebiges Zeichen hat&lt;br /&gt;
                            gefolgt von einem orf durch kirn&lt;br /&gt;
 :1,$s/^[A-Z]orf/kirn/g     suche nach einem Großbuchstaben am Anfang der Zeile&lt;br /&gt;
                            gefolgt von einem orf und ersetze durch kirn&lt;br /&gt;
 :1,$s/^M[ae][iy]e*r/kirn/  suche alles, was am Anfang der Zeile ein großes M enthält,&lt;br /&gt;
                            gefolgt von einem a oder e , gefolgt von einem i oder y ,&lt;br /&gt;
                            gefolgt von einem e , welches 0 oder N mal vorkommen kann,&lt;br /&gt;
                            gefolgt von einem r und ersetze es durch kirn&lt;br /&gt;
&lt;br /&gt;
==Reguläre Ausdrücke==&lt;br /&gt;
&lt;br /&gt;
{| Border=1 Cellpadding=2&lt;br /&gt;
|c&lt;br /&gt;
|Ein einzelner Buchstabe passt auf sich selbst&lt;br /&gt;
|-&lt;br /&gt;
|.&lt;br /&gt;
|Ein Punkt passt auf jedes Zeichen außer auf das Zeilenende&lt;br /&gt;
|-&lt;br /&gt;
|*&lt;br /&gt;
|Das dem Operator * vorangehende Muster kann 0 oder öfter vorkommen&lt;br /&gt;
|-&lt;br /&gt;
|^&lt;br /&gt;
|(Caret) passt auf den Zeilenanfang&lt;br /&gt;
|-&lt;br /&gt;
|$&lt;br /&gt;
|Passt auf das Zeilenende&lt;br /&gt;
|-&lt;br /&gt;
|\&lt;br /&gt;
|Das folgende Sonderzeichen wird entwertet&lt;br /&gt;
|-&lt;br /&gt;
|[...]&lt;br /&gt;
|Passt auf &amp;quot;genau&amp;quot; eins in [...] angebenen Zeichen&lt;br /&gt;
|-&lt;br /&gt;
|[^...]&lt;br /&gt;
|Passt auf &amp;quot;genau&amp;quot; ein Zeichen welches nicht in [...] angebenen ist&lt;br /&gt;
|-&lt;br /&gt;
|\&amp;lt;&lt;br /&gt;
|Passt auf den Wortanfang&lt;br /&gt;
|-&lt;br /&gt;
|\&amp;gt;&lt;br /&gt;
|Passt auf das Wortende&lt;br /&gt;
|-&lt;br /&gt;
|\+&lt;br /&gt;
|Das dem Operator \+ vorangehende Muster kann 1 oder öfter vorkommen&lt;br /&gt;
|-&lt;br /&gt;
|&amp;amp;&lt;br /&gt;
|Setzt das gefunden Suchmuster ein&lt;br /&gt;
|-&lt;br /&gt;
|\(...\)&lt;br /&gt;
|Speichert den Text auf den das Suchmuster passt zur späteren Verwendung&lt;br /&gt;
|-&lt;br /&gt;
|\n&lt;br /&gt;
|Setzt das vorangehende, mit \(...\) Gefundene wieder ein&lt;br /&gt;
|-&lt;br /&gt;
|(...)&lt;br /&gt;
|Gruppiert Auswahlmöglichkeiten&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;nowiki&amp;gt;|&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
|Trennt Auswahlmöglichkeiten&lt;br /&gt;
|-&lt;br /&gt;
|\b&lt;br /&gt;
|Passt auf den Anfang oder das Ende eines Wortes&lt;br /&gt;
|-&lt;br /&gt;
|\B&lt;br /&gt;
|Symbolisiert den Raum innerhalb eines Wortes&lt;br /&gt;
|-&lt;br /&gt;
|\w&lt;br /&gt;
|Passt auf alle alphanumerischen Zeichen [A-Za-z0-9]&lt;br /&gt;
|-&lt;br /&gt;
|\W&lt;br /&gt;
|Passt auf alle nichtalphanumerischen Zeichen [^A-Za-z0-9]&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Die Rangfolge der Operatoren(von der höchsten zur niedrigsten)&lt;br /&gt;
:(, ), ?, *, + | .&lt;br /&gt;
&lt;br /&gt;
Die anderen Operatoren sind mit den anderen Buchstaben gleichrangig.&lt;br /&gt;
&lt;br /&gt;
===Beispiel zum Suchen===&lt;br /&gt;
&lt;br /&gt;
 Suchmuster               Passt auf&lt;br /&gt;
 ^Tuxer                   Tuxer am Zeilenanfang&lt;br /&gt;
 [tT]uxer                 Tuxer oder tuxer&lt;br /&gt;
 80[23]?86                8086, 80286 oder 80386&lt;br /&gt;
&lt;br /&gt;
===grep===&lt;br /&gt;
&lt;br /&gt;
Mit grep ist es möglich, in Dateien nach regulären Ausdrücken zu suchen. Wenn&lt;br /&gt;
eine Übereinstimmung gefunden wird, wird die komplette Zeile auf die&lt;br /&gt;
Standardausgabe geschrieben. grep kann auch von STDIN lesen.Es ist&lt;br /&gt;
empfehlenswert, sich anzugwöhnen ,das Suchmuster in Anführungszeichen zu&lt;br /&gt;
schreiben. Es gibt 3 Arten fgrep = fastgrep , grep und egrep egrep&lt;br /&gt;
&lt;br /&gt;
Beispiel:&lt;br /&gt;
&lt;br /&gt;
 root@zero:~# cat text&lt;br /&gt;
 quatsch&lt;br /&gt;
 quatsch&lt;br /&gt;
 quatsch&lt;br /&gt;
 wichtig&lt;br /&gt;
 quatsch&lt;br /&gt;
 root@zero:~# grep wichtig text&lt;br /&gt;
 wichtig&lt;br /&gt;
 root@zero:~# &lt;br /&gt;
&lt;br /&gt;
 -c                   meldet nur die Gesamtzahl der Fundstellen&lt;br /&gt;
 -v                   zeigt nur Zeilen, die »Ausdruck« nicht enthalten&lt;br /&gt;
 -i                   ignoriert Groß- und Kleinschreibung&lt;br /&gt;
 -l                    meldet nur Dateinamen mit Fundstellen&lt;br /&gt;
 -n                   listet Zeilennummern zu jeder Fundstelle&lt;br /&gt;
 -f                   Dateiname »Dateiname« enthält die Such-Ausdrücke&lt;br /&gt;
 -E                   ist ein erweiterter regulärer Ausdruck (egrep)&lt;br /&gt;
 -F                   (Muster, Ausdruck) ist ein Muster (String) (fgrep)&lt;br /&gt;
 -b                   listet auch die Position der Fundstellen&lt;br /&gt;
 -C    Anzahl         Anzahl von Zeilen werden nach der Fundstelle ausgegeben&lt;br /&gt;
 -B    Anzahl         Anzahl von Zeilen werden vor der Fundstelle ausgegeben&lt;br /&gt;
 -r                   Durchsucht Verzeichnisse rekursiv&lt;br /&gt;
&lt;br /&gt;
==Useridendifikation==&lt;br /&gt;
===/etc/passwd===&lt;br /&gt;
====Beschreibung====&lt;br /&gt;
passwd ist eine ASCII-Datei, die eine Liste der Benutzer des Systems und deren&lt;br /&gt;
Passwörter enthält. Die Passwortdatei sollte für alle Benutzer lesbar sein, was für&lt;br /&gt;
dieVerschlüsselung notwendig ist; aber nur vom Superuser beschreibbar. Wenn&lt;br /&gt;
Sie eine neue Kennung einrichten, lassen Sie das Passwort-Feld in der Datei frei&lt;br /&gt;
und benutzen Sie passwd(1), um dem System ein Passwort für die neue Kennung&lt;br /&gt;
mitzuteilen.&lt;br /&gt;
&lt;br /&gt;
Die Datei /etc/passwd enthält einen Eintrag pro Zeile mit dem Format:&lt;br /&gt;
login_name:passwd:UID:GID:user_name:directory:shell&lt;br /&gt;
====Die Bedeutung der Felder:====&lt;br /&gt;
# login_name Kennung des Benutzers auf dem System.&lt;br /&gt;
# password   Hier steht bei Shadowsystemen ein x. Die Passwörter sind in der Datei /etc/shadow&lt;br /&gt;
# UID        Die numerische Benutzernummer.&lt;br /&gt;
#  GID        Die numerische Gruppennummer des Benutzers.&lt;br /&gt;
# user_name Ein optionales Kommentarfeld, oft benutzt für den vollen Namen des Benutzers und weitere Informationen (Telefon, Raum-Nummer etc.).&lt;br /&gt;
# directory  Das Heimatverzeichnis $HOME des Benutzers.&lt;br /&gt;
# shell      Das Programm, das beim Einloggen gestartet werden soll (falls nicht nötig, benutzen Sie /bin/bash).&lt;br /&gt;
&lt;br /&gt;
===/etc/group===&lt;br /&gt;
====Beschreibung====&lt;br /&gt;
etc/group ist eine ASCII Datei, die Gruppen definiert, zu denen Benutzer&lt;br /&gt;
gehören. Es gibt nur einen Eintrag pro Zeile; jede Zeile hat folgendes Format:&lt;br /&gt;
         GruppenName:Passwort:GruppenKennung:BenutzerListe&lt;br /&gt;
Beschreibung der Felder:&lt;br /&gt;
#     GruppenName      Die Bezeichnung der Gruppe.&lt;br /&gt;
#     Passwort         Das (verschlüsselte) Gruppen-Passwort. Wenn dieses Feld leer ist, wird kein Passwort benötigt.&lt;br /&gt;
#     GruppenKennung Die numerische Identifikation der Gruppe.&lt;br /&gt;
#     BenutzerListe    Alle Namen der Mitglieder, getrennt durch Kommas.&lt;br /&gt;
&lt;br /&gt;
===/etc/shadow===&lt;br /&gt;
====Beschreibung====&lt;br /&gt;
shadow beinhaltet Informationen zu den verschlüsselten Passwörten, zu den&lt;br /&gt;
Benutzerzugängen und weitere Informationen zur Laufzeit der Passwörter.&lt;br /&gt;
 Name:Passwort:Letzte Änderung:Mintage:Maxtage:Warntage:Inaktiv:Ablauf&lt;br /&gt;
#    Der Loginname&lt;br /&gt;
#    verschlüsseltes Passwort &lt;br /&gt;
&amp;lt;nowiki&amp;gt;*&amp;lt;/nowiki&amp;gt; bedeutet Benutzer kann sich nicht einlogen&lt;br /&gt;
! bedeutet Benutzer hat kein Passwort gesetzt&lt;br /&gt;
#    Tage seit dem 1 Januar 1970 an dem das Passwort letztmals geändert wurde&lt;br /&gt;
#    Tage, die das Passwort behalten werden muss, bevor es wieder geändert werden kann&lt;br /&gt;
#     Die Anzahl der Tage, nach denen der Benutzer das Passwort wieder ändern muss&lt;br /&gt;
#    Anzahl der Tage bevor das Passwort abläuft und der Benutzer gewarnt wird&lt;br /&gt;
#    Wenn der Zugang diese Anzahl von Tagen nicht benutzt wird, wird der Zugang gesperrt&lt;br /&gt;
#    Tag seit dem 1 Januar 1970, an dem der Zugang gesperrt wird&lt;br /&gt;
#    Reserviertes Feld&lt;br /&gt;
&lt;br /&gt;
Die Datei sollte aus Sicherheitgründen nicht für einen normalen Benutzer lesbar&lt;br /&gt;
sein.&lt;br /&gt;
&lt;br /&gt;
==Programme zur Userverwaltung==&lt;br /&gt;
===useradd===&lt;br /&gt;
User anlegen&lt;br /&gt;
 root@zero:~# useradd -m -u 1011 -g users -G admin -d /home/erwin -s /bin/bash -c &amp;quot;Erwin Lehman&amp;quot;  erwin&lt;br /&gt;
{| border=1 cellpadding=2&lt;br /&gt;
|&amp;quot;-m&amp;quot;&lt;br /&gt;
|Lege Homedirectory an&lt;br /&gt;
|-&lt;br /&gt;
|&amp;quot;-u 1011&amp;quot;&lt;br /&gt;
|Userid wird zugeordnet&lt;br /&gt;
|-&lt;br /&gt;
|&amp;quot;-g users&amp;quot;&lt;br /&gt;
|Primäre Gruppe wird zugeordnet&lt;br /&gt;
|-&lt;br /&gt;
|&amp;quot;-G admin&amp;quot;&lt;br /&gt;
|Sekunbdäre Gruppe wird zugeordnet&lt;br /&gt;
|-&lt;br /&gt;
|&amp;quot;-d /home/erwin/&amp;quot;&lt;br /&gt;
|Name des Homedirectory&lt;br /&gt;
|-&lt;br /&gt;
|&amp;quot;-s /bin/bash&amp;quot;&lt;br /&gt;
|Bash wird zugeordnet&lt;br /&gt;
|- &lt;br /&gt;
|&amp;quot;-c Erwin Lehman&amp;quot;&lt;br /&gt;
|Kommentarfeld&lt;br /&gt;
|-&lt;br /&gt;
|&amp;quot;erwin&amp;quot; &lt;br /&gt;
|Name des Users&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Defaulteinstellungen anzeigen&lt;br /&gt;
 root@zero:~# useradd -D&lt;br /&gt;
 GROUP=100&lt;br /&gt;
 HOME=/home&lt;br /&gt;
 INACTIVE=-1&lt;br /&gt;
 EXPIRE=&lt;br /&gt;
 SHELL=/bin/sh&lt;br /&gt;
 SKEL=/etc/skel&lt;br /&gt;
 CREATE_MAIL_SPOOL=no&lt;br /&gt;
&lt;br /&gt;
Defaulteinstellungen ändern&lt;br /&gt;
 useradd -D -s /bin/bash&lt;br /&gt;
&lt;br /&gt;
Konfigurationsdatei&lt;br /&gt;
 root@zero:~# cat /etc/default/useradd &lt;br /&gt;
 SHELL=/bin/bash&lt;br /&gt;
 GROUP=100&lt;br /&gt;
 HOME=/home&lt;br /&gt;
 INACTIVE=-1&lt;br /&gt;
 EXPIRE=&lt;br /&gt;
 SKEL=/etc/skel&lt;br /&gt;
 CREATE_MAIL_SPOOL=no&lt;br /&gt;
&lt;br /&gt;
===usermod===&lt;br /&gt;
User modifizieren&lt;br /&gt;
 root@zero:~# usermod -l fritz -s /bin/sh -G admin,video erwin&lt;br /&gt;
{| border=1 cellpadding=2&lt;br /&gt;
|&amp;quot;-l fritz&amp;quot;&lt;br /&gt;
|Neuer Username&lt;br /&gt;
|-&lt;br /&gt;
|&amp;quot;-s /bin/sh&amp;quot;&lt;br /&gt;
|Neue Shell&lt;br /&gt;
|-&lt;br /&gt;
|&amp;quot;-G admin, video&amp;quot;&lt;br /&gt;
|Sekunbdäre Gruppen werden zugeordnet&lt;br /&gt;
|-&lt;br /&gt;
|&amp;quot;erwin&amp;quot; &lt;br /&gt;
|Name des Users&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
===userdel===&lt;br /&gt;
User inklusive Homedirectory löschen&lt;br /&gt;
 root@zero:~# userdel -r fritz&lt;br /&gt;
&lt;br /&gt;
===passwd===&lt;br /&gt;
Rootpasswort ändern&lt;br /&gt;
 root@zero:~# passwd &lt;br /&gt;
 Geben Sie ein neues UNIX Passwort ein:'''sysadm''' &lt;br /&gt;
 Geben Sie das neue UNIX Passwort erneut ein:'''sysadm''' &lt;br /&gt;
 passwd: Passwort erfolgreich geändert&lt;br /&gt;
&lt;br /&gt;
Passwort von tux ändern&lt;br /&gt;
 root@zero:~# passwd tux&lt;br /&gt;
 Geben Sie ein neues UNIX Passwort ein:'''suxer''' &lt;br /&gt;
 Geben Sie das neue UNIX Passwort erneut ein:'''suxer'''&lt;br /&gt;
 passwd: Passwort erfolgreich geändert&lt;br /&gt;
&lt;br /&gt;
Minimale und Maximale Gültigkeit des Passwortes von tux festlegen&lt;br /&gt;
 root@zero:~# passwd -n 5 -x 120 tux&lt;br /&gt;
&lt;br /&gt;
===groupadd===&lt;br /&gt;
 root@zero:~# groupadd -f -g 2001 xinuxer&lt;br /&gt;
{| border=1 cellpadding=2&lt;br /&gt;
|&amp;quot;-f&amp;quot;&lt;br /&gt;
|Überschreibe bestehende Gruppe&lt;br /&gt;
|-&lt;br /&gt;
|&amp;quot;-g 2001&amp;quot;&lt;br /&gt;
|GID der Gruppe&lt;br /&gt;
|-&lt;br /&gt;
|&amp;quot;xinuxer&amp;quot; &lt;br /&gt;
|Name des Gruppe&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==chmod==&lt;br /&gt;
Die Syntax des Befehls chmod lautet:&lt;br /&gt;
&lt;br /&gt;
'''chmod''' WerWieWas [,WerWieWas,.....] Dateiliste&lt;br /&gt;
&lt;br /&gt;
oder&lt;br /&gt;
&lt;br /&gt;
'''chmod''' Oktalzahl Dateiliste&lt;br /&gt;
&lt;br /&gt;
Durch WerWieWas bzw. Oktalzahl wird die Rechtetabelle definiert. Innerhalb von&lt;br /&gt;
WerWieWas darf es kein Leerzeichen geben. Wer bezeichnet den Benutzerkreis,&lt;br /&gt;
dem man Rechte gibt, Wie die Art, in der die Rechte gegeben werden und Was die&lt;br /&gt;
Rechte als solche. Im einzelnen können folgende Kürzel benutzt werden:&lt;br /&gt;
&lt;br /&gt;
Für Wer kann eines der folgenden Kürzel oder eine Kombination davon stehen:&lt;br /&gt;
 u                   (user) Rechte für den Dateibesitzer&lt;br /&gt;
 g                   (group) Rechte für die Gruppe&lt;br /&gt;
 o                   (others) Rechte für alle anderen Benutzer&lt;br /&gt;
 a                   (all) Rechte für alle Benutzer&lt;br /&gt;
Für Wie steht eines der folgenden Kürzel:&lt;br /&gt;
 +                   Die Rechte werden zu den vorhandenen zusätzlich vergeben&lt;br /&gt;
 -                   Die im Folgenden genannten Rechte werden entzogen&lt;br /&gt;
 =                   Die im Folgenden genannten Rechte ersetzen die bisherigen&lt;br /&gt;
Für Was steht eines der folgenden Kürzel:&lt;br /&gt;
 r                   (read) lesen&lt;br /&gt;
 w                   (write) schreiben&lt;br /&gt;
 x                   (execute) ausführen&lt;br /&gt;
oder diese Sonderformen&lt;br /&gt;
 s                   (usersbit) Programm läuft unter der UID des Besitzers&lt;br /&gt;
 s                   (groupsbit)Programm läuft unter der GID des GRUPPE&lt;br /&gt;
 t                   (stickybit) Dateien im Verzeichnis darf nur Besitzer löschen&lt;br /&gt;
&lt;br /&gt;
===Beispiel===&lt;br /&gt;
Setze für alle Schreib- und Leserecht&lt;br /&gt;
 xinux@zero:~$ chmod a=rw test &lt;br /&gt;
 xinux@zero:~$ ls -l test &lt;br /&gt;
 -rw-rw-rw- 1 xinux xinux 0 2009-06-16 12:01 test&lt;br /&gt;
 xinux@zero:~$ &lt;br /&gt;
&lt;br /&gt;
Erteile Besitzer Ausführungsrecht&lt;br /&gt;
 xinux@zero:~$ chmod u+x test ; ls -l test &lt;br /&gt;
 -rwxrw-rw- 1 xinux xinux 0 2009-06-16 12:01 test&lt;br /&gt;
 xinux@zero:~$ &lt;br /&gt;
&lt;br /&gt;
===chmod oktale Schreibweise===&lt;br /&gt;
 Specialrights        User           Group         Other&lt;br /&gt;
 usbit gsbit sticky    r    w   x     r   w   x     r   w   x&lt;br /&gt;
   1     1      1      1    1   1     1   1   1     1   1   1&lt;br /&gt;
   0     0      0      0    0   0     0   0   0     0   0   0&lt;br /&gt;
 Oktale Wertigkeit pro Recht&lt;br /&gt;
   4     2       1     4    2   1     4   2   1     4   2   1&lt;br /&gt;
&lt;br /&gt;
===Beispiele===&lt;br /&gt;
 xinux@zero:~$ chmod 751 test ; ls -l test&lt;br /&gt;
 -rwxr-x--x 1 xinux xinux 0 2009-06-16 12:01 test&lt;br /&gt;
 xinux@zero:~$ &lt;br /&gt;
&lt;br /&gt;
 xinux@zero:~$ chmod 4770 test ; ls -l test&lt;br /&gt;
 -rwsrwx--- 1 xinux xinux 0 2009-06-16 12:01 test&lt;br /&gt;
 xinux@zero:~$ &lt;br /&gt;
&lt;br /&gt;
 xinux@zero:~$ chmod 0 test ; ls -l test &lt;br /&gt;
 ---------- 1 xinux xinux 0 2009-06-16 12:01 test&lt;br /&gt;
&lt;br /&gt;
===chmod Optionen===&lt;br /&gt;
 -c   (changes) es werden nur die Dateien angezeigt, deren Zugriffsrechte tatsächlich verändert werden&lt;br /&gt;
 -f   (silent, quiet) Fehlermeldungen wegen fehlgeschlagener Änderungsversuche werden unterdrückt&lt;br /&gt;
 -v   (verbose) alle Aktionen werden angezeigt&lt;br /&gt;
 -R   (recursive) die Zugriffsrechte aller Dateien in den Unterverzeichnissen werden ebenfalls geändert&lt;br /&gt;
&lt;br /&gt;
Theoretisch sind alle Kombinationen der Zugriffsrechte denkbar, aber der&lt;br /&gt;
Eigentümer einer Datei darf diese immer lesen, selbst wenn das Lesebit nicht&lt;br /&gt;
gesetzt ist. Genauso macht es wenig Sinn, eine gewöhnliche Textdatei als&lt;br /&gt;
ausführbar zu setzen; die Shell wird damit nichts anfangen können. Ein x für ein&lt;br /&gt;
Verzeichnis gibt an, dass in dieses gewechselt werden kann.&lt;br /&gt;
&lt;br /&gt;
Rechte sind verbindlich&lt;br /&gt;
&lt;br /&gt;
Interessant ist auch ein Konstrukt folgender Art&lt;br /&gt;
 -rwx---rwx&lt;br /&gt;
&lt;br /&gt;
das angibt, dass mit der Datei alles angestellt werden kann, außer durch Nutzer der&lt;br /&gt;
Gruppe. Versucht irgend jemand, der nicht der Gruppe des Eigentümers angehört,&lt;br /&gt;
die Datei zu modifizieren, wird ihm dies gelingen, einem Gruppenmitglied bleibt&lt;br /&gt;
dies versagt, obwohl er ja gleichzeitig ein &amp;quot;Anderer&amp;quot; ist. D.h. die Rechte der&lt;br /&gt;
Gruppe sind verbindlicher, als die Rechte der anderen!&lt;br /&gt;
&lt;br /&gt;
===Bedeutungen der Zugriffsarten===&lt;br /&gt;
====Dateien====&lt;br /&gt;
* r: Der Inhalt der Datei kann gelesen und damit auch kopiert werden. &lt;br /&gt;
 root@zero:~# cat test&lt;br /&gt;
 Dies ist eine Testdatei&lt;br /&gt;
  &lt;br /&gt;
 root@zero:~# cp test backup&lt;br /&gt;
&lt;br /&gt;
* w: Der Inhalt der Datei darf verändert werden. Ob die Datei gelöscht werden kann ist&lt;br /&gt;
keine Eigenschaft der Datei, sondern des Verzeichnisses, indem sich die Datei befindet.&lt;br /&gt;
 root@zero:~# cat &amp;gt; test&lt;br /&gt;
 Hier steht jetzt was anderes&lt;br /&gt;
 ^C&lt;br /&gt;
 root@zero:~# cat test&lt;br /&gt;
 Hier steht jetzt was anderes&lt;br /&gt;
  &lt;br /&gt;
 xinux@zero:~$ ls -ld verzeichnis/&lt;br /&gt;
 dr-xr-xr-x 2 xinux xinux 4096 2009-06-18 11:16 verzeichnis/&lt;br /&gt;
 xinux@zero:~/verzeichnis$ rm text&lt;br /&gt;
 rm: Entfernen von „text“ nicht möglich: Permission denied&lt;br /&gt;
&lt;br /&gt;
* x: Ausführrecht für Programme und Skripte&lt;br /&gt;
 xinux@zero:~$ ./programm&lt;br /&gt;
 -bash: ./programm: Permission denied&lt;br /&gt;
 xinux@zero:~$ chmod +x programm&lt;br /&gt;
 xinux@zero:~$ ./programm&lt;br /&gt;
 Test&lt;br /&gt;
  test&lt;br /&gt;
&lt;br /&gt;
====Verzeichnisse====&lt;br /&gt;
* r: Die Einträge in dem Verzeichnis sind lesbar.&lt;br /&gt;
Leserecht von verzeichnis/ entziehen&lt;br /&gt;
 xinux@zero:~$ chmod a-r verzeichnis/&lt;br /&gt;
 xinux@zero:~$ ls verzeichnis/&lt;br /&gt;
 ls: Öffnen von Verzeichnis verzeichnis/ nicht möglich: Permission denied&lt;br /&gt;
Leserecht für Benutzer und Gruppe vergeben&lt;br /&gt;
 xinux@zero:~$ chmod a+r verzeichnis/&lt;br /&gt;
 xinux@zero:~$ ls verzeichnis/&lt;br /&gt;
 text&lt;br /&gt;
&lt;br /&gt;
* w: Die Einträge in dem Verzeichnis können geändert werden. &lt;br /&gt;
Neue Datei erstellen&lt;br /&gt;
 xinux@zero:~$ touch neu&lt;br /&gt;
 xinux@zero:~$ ls neu&lt;br /&gt;
 neu&lt;br /&gt;
&lt;br /&gt;
Datei löschen&lt;br /&gt;
 xinux@zero:~$ rm neu&lt;br /&gt;
 xinux@zero:~$ ls neu&lt;br /&gt;
 ls: Zugriff auf neu nicht möglich: No such file or directory&lt;br /&gt;
&lt;br /&gt;
* x: Der Name des Verzeichnisses kann in einem Pfadnamen erscheinen.&lt;br /&gt;
Verzeichnis ohne x Recht&lt;br /&gt;
 xinux@zero:~$ chmod a-x verzeichnis/&lt;br /&gt;
Wechseln in Verzeichnis mangels x-Recht nicht möglich&lt;br /&gt;
 xinux@zero:~$ cd verzeichnis/&lt;br /&gt;
 -bash: cd: verzeichnis/: Permission denied&lt;br /&gt;
x-Recht vergeben&lt;br /&gt;
 xinux@zero:~$ chmod a+x verzeichnis/&lt;br /&gt;
damit Wechsel in Verzeichnis möglich&lt;br /&gt;
 xinux@zero:~$ cd verzeichnis/&lt;br /&gt;
 xinux@zero:~/verzeichnis$ pwd&lt;br /&gt;
 /home/xinux/verzeichnis&lt;br /&gt;
&lt;br /&gt;
====umask====&lt;br /&gt;
Neue Dateien und Verzeichnisse werden mit ein und denselben Zufriffsrechten erzeugt.&lt;br /&gt;
 xinux@zero:~$ mkdir text&lt;br /&gt;
 xinux@zero:~$ touch textdat&lt;br /&gt;
 xinux@zero:~$ ls -ld text*&lt;br /&gt;
 drwxr-xr-x 2 xinux xinux 4096 2009-06-18 11:37 text&lt;br /&gt;
 -rw-r--r-- 1 xinux xinux    0 2009-06-18 11:37 textdat&lt;br /&gt;
&lt;br /&gt;
Zuständig für dieses Verhalten ist die sogenannte umask, die oft in der Datei&lt;br /&gt;
/etc/profile auf den Wert 022 voreingestellt ist. Zusätzlich wird noch eine&lt;br /&gt;
Maximalmaske benötigt, die sich für Verzeichnisse und andere Dateien&lt;br /&gt;
unterscheidet. Die bei der Erzeugung gesetzten Rechte entstehen nun, indem von&lt;br /&gt;
der Maximalmaske der durch die umask vorgegebene Wert subtrahiert wird:&lt;br /&gt;
&lt;br /&gt;
{| border=1 cellpadding=2&lt;br /&gt;
!&lt;br /&gt;
! Dateien&lt;br /&gt;
! Verzeichnisse&lt;br /&gt;
|-&lt;br /&gt;
| Systemvorgabe&lt;br /&gt;
| 666&lt;br /&gt;
| 777&lt;br /&gt;
|-&lt;br /&gt;
| -umask&lt;br /&gt;
| 022&lt;br /&gt;
| 022&lt;br /&gt;
|-&lt;br /&gt;
| Ergebnis&lt;br /&gt;
| 644&lt;br /&gt;
| 755&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
 xinux@zero:~$ grep umask /etc/profile&lt;br /&gt;
 umask 022&lt;br /&gt;
&lt;br /&gt;
==Gruppenzugehörigkeit==&lt;br /&gt;
===newgrp===&lt;br /&gt;
Ändert die Gruppenzugehörigkeit eines Benutzers auf die angegebene Gruppe. Wenn keine Gruppe angegeben wird, wird die &lt;br /&gt;
Anmeldegruppe des Benutzers verwendet. Die neue Gruppe wird anschließend fü Zugriffskontrollen verwendet.&lt;br /&gt;
&lt;br /&gt;
 newgrp Gruppenname&lt;br /&gt;
&lt;br /&gt;
 root@zero:~# newgrp hacker&lt;br /&gt;
 root@zero:~# id&lt;br /&gt;
 uid=0(root) gid=1006(hacker) Gruppen=0(root),1006(hacker)&lt;br /&gt;
&lt;br /&gt;
===chgrp===&lt;br /&gt;
Verändert die Besitzugehörigkeit zu der angegebenen Gruppe&lt;br /&gt;
&lt;br /&gt;
 chgrp [Optionen] Gruppe Datei(en)&lt;br /&gt;
&lt;br /&gt;
Optionen:&lt;br /&gt;
 -c Zeigt Veränderungen an&lt;br /&gt;
 -f Unterdrückt die meisten Fehlermeldungen&lt;br /&gt;
 -R Verändert Dateien und Verzeichnisse rekursiv&lt;br /&gt;
 -v Gibt geschwätzige Ausgabe aus.&lt;br /&gt;
&lt;br /&gt;
 root@zero:~# ls -l&lt;br /&gt;
 ...&lt;br /&gt;
 d-wx--x--x  3 root root 4096 2009-06-18 13:34 verzeichnis&lt;br /&gt;
 &lt;br /&gt;
 root@zero:~# chgrp -R xinux verzeichnis/&lt;br /&gt;
 root@zero:~# ls -l&lt;br /&gt;
 ...&lt;br /&gt;
 d-wx--x--x  3 root xinux 4096 2009-06-18 13:34 verzeichnis&lt;br /&gt;
&lt;br /&gt;
 xinux@zero:~$ cd /root/verzeichnis/&lt;br /&gt;
 xinux@zero:/root/verzeichnis$ pwd&lt;br /&gt;
 /root/verzeichnis&lt;br /&gt;
&lt;br /&gt;
===chown===&lt;br /&gt;
Ändert den Eigentümer von einer oder mehreren Dateien in den angegebenen Benutzer. &lt;br /&gt;
chown erlaubt ebenfalls das Ändern der Gruppeneigentümreschaft. Nur der aktuelle Eigentümer einer&lt;br /&gt;
Datei oder der Superuser (root) darf die Eigentumsverhältnisse ändern.&lt;br /&gt;
&lt;br /&gt;
 chown [Optionen] Benutzer(:Gruppe) Dateien&lt;br /&gt;
&lt;br /&gt;
Optionen:&lt;br /&gt;
 -c Gibt Informationen über die veränderten Dateien aus&lt;br /&gt;
 --dereference Symbolischen Links folgen&lt;br /&gt;
 -v Gibt Informationen über alle Dateien aus, die chown zu ändern versucht, egal, ob die Änderung erfolgt ist oder nicht&lt;br /&gt;
 -R Geht rekursiv durch alle Unterverzeichnisse und führt die Änderungen durch. &lt;br /&gt;
&lt;br /&gt;
 root@zero:~# chown -R xinux.xinux verzeichnis/&lt;br /&gt;
 root@zero:~# ls -l&lt;br /&gt;
 insgesamt 12&lt;br /&gt;
 drwx------ 13 root  root  4096 2009-04-21 15:11 profile&lt;br /&gt;
 --w-------  1 root  root     0 2009-06-18 11:13 test&lt;br /&gt;
 -rw-r--r--  1 root  root    40 2009-06-18 12:04 text&lt;br /&gt;
 drwxrwx--x  3 xinux xinux 4096 2009-06-18 13:39 verzeichnis&lt;br /&gt;
 &lt;br /&gt;
 root@zero:~# chown -R -c xinux.xinux verzeichnis/&lt;br /&gt;
 &lt;br /&gt;
 root@zero:~# chown -R -v xinux.xinux verzeichnis/&lt;br /&gt;
 Eigentümer von „verzeichnis/01“ als xinux:xinux erhalten&lt;br /&gt;
 Eigentümer von „verzeichnis/test“ als xinux:xinux erhalten&lt;br /&gt;
 Eigentümer von „verzeichnis/“ als xinux:xinux erhalten&lt;br /&gt;
&lt;br /&gt;
==Eingabe/Ausgabe==&lt;br /&gt;
Standardeingabe (0): Laufende Programme erwarten von hier ihre Eingaben (normalerweise handelt es sich um die Tastatur).&lt;br /&gt;
&lt;br /&gt;
Standardausgabe (1): Programme schreiben auf diese ihre Ausgaben (Bildschirm).&lt;br /&gt;
&lt;br /&gt;
Standardfehlerausgabe (2) : Fehlerausgaben landen hier (Bildschirm, aber nur die aktive Konsole).&lt;br /&gt;
&lt;br /&gt;
[[Bild:std.jpg]]&lt;br /&gt;
&lt;br /&gt;
===cat===&lt;br /&gt;
Das Programm cat liest von STDIN und gibt es STDOUT wieder aus&lt;br /&gt;
&lt;br /&gt;
Einlesen der Datei text&lt;br /&gt;
 root@zero:~# cat &amp;lt; text&lt;br /&gt;
 wichtig&lt;br /&gt;
&lt;br /&gt;
Schreiben in die Datei text, dies überschreibt den bisherigen Inhalt der Datei&lt;br /&gt;
 root@zero:~# cat &amp;gt; text&lt;br /&gt;
 sogar noch wichtiger &lt;br /&gt;
 &lt;br /&gt;
Ausgeben der Datei text&lt;br /&gt;
 root@zero:~# cat text &lt;br /&gt;
 sogar noch wichtiger&lt;br /&gt;
&lt;br /&gt;
Lesen aus der Datei text und schreiben in die Datei neuertext&lt;br /&gt;
 root@zero:~# cat &amp;lt; text &amp;gt; neuertext&lt;br /&gt;
 root@zero:~# cat neuertext&lt;br /&gt;
 sogar noch wichtiger&lt;br /&gt;
&lt;br /&gt;
Anhängen der Ausgabe von date an die Datei neuertext&lt;br /&gt;
 root@zero:~# date &amp;gt;&amp;gt; neuertext&lt;br /&gt;
 root@zero:~# cat neuertext&lt;br /&gt;
 sogar noch wichtiger&lt;br /&gt;
 Do 18. Jun 14:08:58 CEST 2009&lt;br /&gt;
&lt;br /&gt;
Umleiten des Standardfehlerkanals nach error&lt;br /&gt;
 root@zero:~# rm sux 2&amp;gt; error&lt;br /&gt;
 root@zero:~# more error&lt;br /&gt;
 rm: Entfernen von „sux“ nicht möglich: No such file or directory&lt;br /&gt;
&lt;br /&gt;
===Umleitungen===&lt;br /&gt;
Nacheinander auszuführende Kommandos&lt;br /&gt;
 root@zero:~# pwd; date&lt;br /&gt;
 /root&lt;br /&gt;
 Do 18. Jun 14:13:05 CEST 2009&lt;br /&gt;
 &lt;br /&gt;
Übergeben der Ausgabe von tail als Eingabe von grep mit Hilfe der Pipe &amp;quot;|&amp;quot;&lt;br /&gt;
 root@zero:~# tail /var/log/auth.log | grep xinux&lt;br /&gt;
 Jun 18 13:52:33 zero nss_wins[11433]: pam_unix(login:session): session closed for user xinux&lt;br /&gt;
&lt;br /&gt;
Übergeben der letzten 100 Zeilen von syslog als Eingabe von grep&lt;br /&gt;
 root@zero:~# tail /var/log/syslog -n 100 | grep error&lt;br /&gt;
 Jun 18 09:30:54 zero kernel: [154384.692135] end_request: I/O error, dev fd0, sector 0&lt;br /&gt;
 Jun 18 09:30:54 zero kernel: [154384.712137] end_request: I/O error, dev fd0, sector 0&lt;br /&gt;
&lt;br /&gt;
==tr==&lt;br /&gt;
tr ist ein Programm um Zeichen zu übersetzen. Dies betrifft nur die Ausgabe, die Datei selbst bleibt unverändert.&lt;br /&gt;
&lt;br /&gt;
Ersetzt Kleinbuchstaben durch Großbuchstaben aus der Datei text&lt;br /&gt;
 root@zero:~# tr &amp;quot;a-z&amp;quot; &amp;quot;A-Z&amp;quot; &amp;lt; text&lt;br /&gt;
 SOGAR NOCH WICHTIGER&lt;br /&gt;
 123&lt;br /&gt;
 34&lt;br /&gt;
 4711&lt;br /&gt;
 TEST&lt;br /&gt;
&lt;br /&gt;
Ersetzt alle Zahlen durch X&lt;br /&gt;
 root@zero:~# tr &amp;quot;0-9&amp;quot; &amp;quot;X&amp;quot; &amp;lt; text&lt;br /&gt;
 sogar noch wichtiger&lt;br /&gt;
 XXX&lt;br /&gt;
 XX&lt;br /&gt;
 XXXX&lt;br /&gt;
 test&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
 root@zero:~# cat &amp;gt; test&lt;br /&gt;
 +++++&lt;br /&gt;
 ###&lt;br /&gt;
 1111&lt;br /&gt;
&lt;br /&gt;
-s löscht mehrfach kommende Zeichen&lt;br /&gt;
 root@zero:~# tr '''-s''' &amp;quot;+&amp;quot; &amp;lt; test&lt;br /&gt;
 +&lt;br /&gt;
 ###&lt;br /&gt;
 1111&lt;br /&gt;
&lt;br /&gt;
-d löscht vorkommende Zeichen &lt;br /&gt;
 root@zero:~# tr '''-d''' &amp;quot;#&amp;quot; &amp;lt; test&lt;br /&gt;
 +++++ &lt;br /&gt;
 &lt;br /&gt;
 1111&lt;br /&gt;
&lt;br /&gt;
==cut==&lt;br /&gt;
Spalten aus einer Datei schneiden. Dies betrifft nur die Ausgabe, die Datei selbst bleibt unverändert.&lt;br /&gt;
 &lt;br /&gt;
Schneidet die erste Spalte aus, der Delimiter ist : &lt;br /&gt;
 root@zero:~# cut -f 1 -d : /etc/passwd&lt;br /&gt;
 root&lt;br /&gt;
 daemon&lt;br /&gt;
 bin&lt;br /&gt;
 ...&lt;br /&gt;
 xinux&lt;br /&gt;
&lt;br /&gt;
 root@zero:~# more test&lt;br /&gt;
 1234#5678#9999&lt;br /&gt;
 &lt;br /&gt;
Schneidet die zweite Spalte aus, der Delimiter ist #&lt;br /&gt;
 root@zero:~# cut -f 2 -d &amp;quot;#&amp;quot; &amp;lt; test&lt;br /&gt;
 5678&lt;br /&gt;
&lt;br /&gt;
Schneidet bis zum 3 Zeichen ab&lt;br /&gt;
 root@zero:~$ echo S01policykit | cut -c 4-&lt;br /&gt;
 policykit&lt;br /&gt;
&lt;br /&gt;
==expand==&lt;br /&gt;
Ersetzt Tabulatorzeichen durch Folgen von Leerzeichen und schreibt das Ergebnis auf die Standardausgabe&lt;br /&gt;
 root@zero:~# expand /etc/samba/smb.conf&lt;br /&gt;
 ...&lt;br /&gt;
&lt;br /&gt;
==fmt==&lt;br /&gt;
#Setzt den Text der Dateien im Blocksatz der angegebenen Breite durch Auffüllen von Zeilen und Entfernen von Zeilenwechseln.&lt;br /&gt;
Standardgemäß werden Leerzeilen, die Position von Leerzeichen und der Einzug am Zeilenanfang erhalten. fmt versucht, &lt;br /&gt;
Zeilenumbrüche an Satzenden durchzuführen sowie sie nach dem ersten oder vor dem letzten Wort eines Satzes zu vermeiden. &lt;br /&gt;
 &lt;br /&gt;
 fmt [Optionen] [Dateien]&lt;br /&gt;
&lt;br /&gt;
Optionen&lt;br /&gt;
&lt;br /&gt;
* -p ''Präfix'': Formatiert nur Zeilen, die mit ''Präfix'' anfangen&lt;br /&gt;
 root@zero:/tmp# fmt -p '#' text&lt;br /&gt;
 #Setzt den Text der Dateien im Blocksatz der angegebenen Breite durch&lt;br /&gt;
 #Auffüllen von Zeilen und Entfernen von Zeilenwechseln.  Standardgemäß&lt;br /&gt;
 #werden Leerzeilen, die Position von Leerzeichen und der Einzug am&lt;br /&gt;
 #Zeilenanfang erhalten. fmt versucht,&lt;br /&gt;
 Zeilenumbrüche an Satzenden durchzuführen sowie sie nach dem ersten oder vor dem letzten Wort eines Satzes zu vermeiden.&lt;br /&gt;
&lt;br /&gt;
* -u : Erzwingt genau ein Leerzeichen zwischen Wörtern und zwei Leerzeichen zwischen Sätzen&lt;br /&gt;
&lt;br /&gt;
* -w ''Breite'': Setzt die Ausgabebreite auf ''Breite''&lt;br /&gt;
 root@zero:/tmp# fmt -w 30 text&lt;br /&gt;
 #Setzt den Text der Dateien&lt;br /&gt;
 im Blocksatz der angegebenen&lt;br /&gt;
 Breite durch Auffüllen&lt;br /&gt;
 von Zeilen und Entfernen&lt;br /&gt;
 von Zeilenwechseln.&lt;br /&gt;
 #Standardgemäß werden&lt;br /&gt;
 Leerzeilen, die Position von&lt;br /&gt;
 Leerzeichen und der Einzug am&lt;br /&gt;
 Zeilenanfang erhalten. fmt&lt;br /&gt;
 versucht, Zeilenumbrüche&lt;br /&gt;
 an Satzenden durchzuführen&lt;br /&gt;
 sowie sie nach dem ersten&lt;br /&gt;
 oder vor dem letzten Wort&lt;br /&gt;
 eines Satzes zu vermeiden.&lt;br /&gt;
&lt;br /&gt;
==join==&lt;br /&gt;
Führt die Zeilen zweier sortierter Dateien anhand von '''Übereinstimmungen''' in einem gemeinsamen Feld zusammen.&lt;br /&gt;
&lt;br /&gt;
 root@zero:~# more name&lt;br /&gt;
 1. karl&lt;br /&gt;
 2. heinz&lt;br /&gt;
 3. hans&lt;br /&gt;
 4. otto&lt;br /&gt;
 root@zero:~# more tel&lt;br /&gt;
 1. 1234&lt;br /&gt;
 2. 4321&lt;br /&gt;
 3. 222&lt;br /&gt;
 4. 121212&lt;br /&gt;
 root@zero:~# join name tel &amp;gt; telefonbuch&lt;br /&gt;
 root@zero:~# more telefonbuch&lt;br /&gt;
 1. karl 1234&lt;br /&gt;
 2. heinz 4321&lt;br /&gt;
 3. hans 222&lt;br /&gt;
 4. otto 121212&lt;br /&gt;
&lt;br /&gt;
 root@zero:~# join -t : /etc/passwd /etc/shadow&lt;br /&gt;
 ....&lt;br /&gt;
 daemon:x:1:1:daemon:/usr/sbin:/bin/sh:*:14181:0:99999:7:::&lt;br /&gt;
 bin:x:2:2:bin:/bin:/bin/sh:*:14181:0:99999:7:::&lt;br /&gt;
 sys:x:3:3:sys:/dev:/bin/sh:*:14181:0:99999:7:::&lt;br /&gt;
 sync:x:4:65534:sync:/bin:/bin/sync:*:14181:0:99999:7:::&lt;br /&gt;
 ...&lt;br /&gt;
&lt;br /&gt;
join in dat1 nach Feld 3 und in dat2 nach Feld 2&lt;br /&gt;
 thomas@lydia:~$ cat dat1 &lt;br /&gt;
 hugo:ps:1111&lt;br /&gt;
 erwin:zw:2222&lt;br /&gt;
 karl:sb:3333&lt;br /&gt;
 rudi:kl:4444&lt;br /&gt;
 thomas@lydia:~$ cat dat2&lt;br /&gt;
 blau:1111:svn&lt;br /&gt;
 grün:2222:fcs&lt;br /&gt;
 gelb:3333:fch&lt;br /&gt;
 rot:4444:fck&lt;br /&gt;
 thomas@lydia:~$ join -t : -1 3 -2 2 dat1 dat2 &lt;br /&gt;
 1111:hugo:ps:blau:svn&lt;br /&gt;
 2222:erwin:zw:grün:fcs&lt;br /&gt;
 3333:karl:sb:gelb:fch&lt;br /&gt;
 4444:rudi:kl:rot:fck&lt;br /&gt;
&lt;br /&gt;
==nl==&lt;br /&gt;
Nummeriert die Zeilen in einer Datei.&lt;br /&gt;
&lt;br /&gt;
 root@zero:~# nl /etc/passwd                                                   &lt;br /&gt;
     1  root:x:0:0:root:/root:/bin/bash                                       &lt;br /&gt;
     2  daemon:x:1:1:daemon:/usr/sbin:/bin/sh                                 &lt;br /&gt;
     3  bin:x:2:2:bin:/bin:/bin/sh                                            &lt;br /&gt;
     4  sys:x:3:3:sys:/dev:/bin/sh                                            &lt;br /&gt;
     5  sync:x:4:65534:sync:/bin:/bin/sync&lt;br /&gt;
     ...&lt;br /&gt;
Nummereriet mit führenden Nullen der Separatir ist ein :&lt;br /&gt;
 root@zero:~# nl -s : -n rz dat1&lt;br /&gt;
&lt;br /&gt;
==od==&lt;br /&gt;
Gibt Dateien im Oktal und anderen Formaten aus.&lt;br /&gt;
&lt;br /&gt;
 od [Optionen] Datei&lt;br /&gt;
&lt;br /&gt;
* -j ''Bytes'': Überspringt die Anzahl ''Bytes'' einer Datei&lt;br /&gt;
* -N ''Bytes'': Gibt nur die Anzahl ''Bytes'' aus&lt;br /&gt;
* -c : Gebe ASCII Zeichen aus&lt;br /&gt;
* -f : Gebe Fließkommazahlen aus&lt;br /&gt;
* -i : Gebe Dezimal Integer aus&lt;br /&gt;
* -l : Gebe Dezimal Long aus&lt;br /&gt;
* -o : Gebe Oktal 2 Byte Einheiten aus&lt;br /&gt;
* -s : Gebe Dezimal 2 Byte Einheiten aus&lt;br /&gt;
* -x : Gebe Hexadezimale 2 Byte einheiten aus&lt;br /&gt;
&lt;br /&gt;
Beispiele&lt;br /&gt;
&lt;br /&gt;
Gebe Master Boot Record (die ersten 512 Byte der Festplatte /dev/sda) als Hexadezimal aus&lt;br /&gt;
 root@zero:~# od '''-x -N''' 512 /dev/sda&lt;br /&gt;
 0000000 48eb 1090 d08e 00bc b8b0 0000 d88e c08e&lt;br /&gt;
 0000020 befb 7c00 00bf b906 0200 a4f3 21ea 0006&lt;br /&gt;
 0000040 be00 07be 0438 0b75 c683 8110 fefe 7507&lt;br /&gt;
 0000060 ebf3 b416 b002 bb01 7c00 80b2 748a 0203&lt;br /&gt;
 0000100 00ff 2000 0001 0000 0200 90fa f690 80c2&lt;br /&gt;
 ...&lt;br /&gt;
&lt;br /&gt;
Schreibe &amp;quot;suxer&amp;quot; in die Datei test&lt;br /&gt;
 root@zero:~# echo &amp;quot;suxer&amp;quot; &amp;gt; test&lt;br /&gt;
Ausgabe Hexadezimal&lt;br /&gt;
 root@zero:~# od -x test&lt;br /&gt;
 0000000 7573 6578 0a72&lt;br /&gt;
 0000006&lt;br /&gt;
&lt;br /&gt;
Ausgabe ASCII Zeichen&lt;br /&gt;
 root@zero:~# od -c test&lt;br /&gt;
 0000000   s   u   x   e   r  \n&lt;br /&gt;
 0000006&lt;br /&gt;
&lt;br /&gt;
==paste==&lt;br /&gt;
Fügt die Zeilen von zwei oder mehr Dateien horizontal zusammen&lt;br /&gt;
 root@zero:~# paste name tel&lt;br /&gt;
 1. karl 1. 1234&lt;br /&gt;
 2. heinz        2. 4321&lt;br /&gt;
 3. hans 3. 222&lt;br /&gt;
 4. otto 4. 121212&lt;br /&gt;
&lt;br /&gt;
==pr==&lt;br /&gt;
Bereitet Textdateien zum Drucken vor.&lt;br /&gt;
&lt;br /&gt;
 root@zero:~# echo &amp;quot;Plan für heute&amp;quot; &amp;gt; dokument&lt;br /&gt;
 root@zero:~# more dokument&lt;br /&gt;
 Plan für heute&lt;br /&gt;
 root@zero:~# pr dokument   &lt;br /&gt;
  &lt;br /&gt;
 &lt;br /&gt;
 2009-06-19 12:44                    dokument                     Seite 1&lt;br /&gt;
 &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
 Plan für heute&lt;br /&gt;
&lt;br /&gt;
Anmerkung Ausmaße der Bildschirmausgabe wie eine Druckseite.&lt;br /&gt;
&lt;br /&gt;
==sed==&lt;br /&gt;
streaming editor. Mit sed ist es möglich, den Inhalt einer Datei automatisch (nicht interaktiv) zu&lt;br /&gt;
bearbeiten. Wie unter Linux üblich, wird auch hier der Text nicht wirklich verändert sondern die &lt;br /&gt;
Änderung erfolgt über die Standardausgabe, die wieder umgeleitet werden kann. Die Syntax ist ähnlich &lt;br /&gt;
des ex modus von vi. Reguläre Ausdrücke können nach Belieben benutzt werden. &lt;br /&gt;
&lt;br /&gt;
Optionen:&lt;br /&gt;
 -e Zeichenkette  wendet die Editorbefehle aus Zeichenkette auf den Text an.&lt;br /&gt;
 -n gibt nur die Zeilen aus, die explizit (durch &amp;quot;p&amp;quot; ausgedruckt werden sollen&lt;br /&gt;
&lt;br /&gt;
Gibt die dritte Zeile der Datei text aus&lt;br /&gt;
 root@zero:~# sed -n &amp;quot;3p&amp;quot; text&lt;br /&gt;
 34&lt;br /&gt;
&lt;br /&gt;
Gibt die erste bis dritte Zeile von text aus&lt;br /&gt;
 root@zero:~# sed -n &amp;quot;1,3p&amp;quot; text&lt;br /&gt;
 sogar noch wichtiger&lt;br /&gt;
 123&lt;br /&gt;
 34&lt;br /&gt;
&lt;br /&gt;
Löschen der Zeile mit &amp;quot;sogar&amp;quot;&lt;br /&gt;
 root@zero:~# sed -e '/sogar/d' &amp;lt; text&lt;br /&gt;
 123&lt;br /&gt;
 34&lt;br /&gt;
 4711&lt;br /&gt;
 test&lt;br /&gt;
&lt;br /&gt;
und schreiben in text2&lt;br /&gt;
 root@zero:~# sed -e '/sogar/d' &amp;lt; text &amp;gt; text2&lt;br /&gt;
 root@zero:~# more text2&lt;br /&gt;
 123&lt;br /&gt;
 34&lt;br /&gt;
 4711&lt;br /&gt;
 test&lt;br /&gt;
&lt;br /&gt;
Alle 3en durch DREI ersetzen&lt;br /&gt;
 root@zero:~# sed -e 's/3/DREI/g' &amp;lt; text&lt;br /&gt;
 sogar noch wichtiger&lt;br /&gt;
 12DREI&lt;br /&gt;
 DREI4&lt;br /&gt;
 4711&lt;br /&gt;
 test&lt;br /&gt;
&lt;br /&gt;
==wc==&lt;br /&gt;
Zählt die Anzahl von Zeichen, Wörter oder Zeilen&lt;br /&gt;
&lt;br /&gt;
Optionen&lt;br /&gt;
* -m : Zählt die Anzahl der Zeichen&lt;br /&gt;
 root@zero:~# more name&lt;br /&gt;
 1. karl&lt;br /&gt;
 2. heinz&lt;br /&gt;
 3. hans&lt;br /&gt;
 4. otto&lt;br /&gt;
 root@zero:~# wc '''-m''' tel&lt;br /&gt;
 33 tel&lt;br /&gt;
&lt;br /&gt;
* -w : Zählt die Anzahl der Wörter (einschließlich Zahlen und andere Zeichen)&lt;br /&gt;
 root@zero:~# wc '''-w''' name&lt;br /&gt;
 8 name&lt;br /&gt;
&lt;br /&gt;
* -l : Zählt die Anzahl der Zeilen&lt;br /&gt;
 root@zero:~# wc '''-l''' name&lt;br /&gt;
 4 name&lt;br /&gt;
&lt;br /&gt;
==Sort==&lt;br /&gt;
&lt;br /&gt;
Zum sortieren von Dateien nach Feldern benutzt man sort. sort liest von STDIN man kann die Datei aber auch als Argument übergeben. &lt;br /&gt;
&lt;br /&gt;
Sortiert nach dem ersten Feld&lt;br /&gt;
  root@zero:~# sort /etc/passwd 	 &lt;br /&gt;
&lt;br /&gt;
Es wird geprüft ob die Datei schon sortiert ist &lt;br /&gt;
 root@zero:~# sort -c /etc/passwd 	&lt;br /&gt;
&lt;br /&gt;
Sortiert nach dem ersten Feld (Richtungsumkehr)  &lt;br /&gt;
 root@zero:~#  sort -r /etc/passwd&lt;br /&gt;
&lt;br /&gt;
Führende Leersortzeichen werden ignoriert &lt;br /&gt;
 root@zero:~# sort -b /etc/passwd&lt;br /&gt;
&lt;br /&gt;
Ausgabe  in die Datei pass&lt;br /&gt;
 root@zero:~# sort  /etc/passwd   -o pass	 &lt;br /&gt;
&lt;br /&gt;
nimmt : als Trenner -Voreinstellung ist TAB&lt;br /&gt;
  root@zero:~# sort -t : /etc/passwd&lt;br /&gt;
&lt;br /&gt;
sortiert nach dem  3 Feld,  der Trenner ist : und es wird nummerisch sortiert&lt;br /&gt;
&lt;br /&gt;
 root@zero:~# sort -t: +2 -n /etc/passwd		&lt;br /&gt;
&lt;br /&gt;
sortiert nach dem  3 Feld,  der Trenner ist : und es wird nummerisch sortiert&lt;br /&gt;
					&lt;br /&gt;
 root@zero:~# sort -t: -k 3 -n /etc/passwd&lt;br /&gt;
&lt;br /&gt;
Sortiert nach dem  3  bis zum 5 Feld, der Trenner ist : und es wird nummerisch sortiert&lt;br /&gt;
	&lt;br /&gt;
 root@zero:~# sort -t: -k 3,5 -n /etc/passwd	&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==INodes==&lt;br /&gt;
Inode (oder I-Node) wird im Deutschen am besten als Informationsknoten oder&lt;br /&gt;
Indexeintrag bezeichnet. Er fasst alle Attribute einer Datei zusammen außer dem Inhalt&lt;br /&gt;
und dem Namen der Datei.&lt;br /&gt;
&lt;br /&gt;
===Daten===&lt;br /&gt;
{| border=1 cellpadding=2&lt;br /&gt;
|type&lt;br /&gt;
|Der Typ der Datei wird als einzelner Buchstabe angezeigt. Der Typ einer Datei wird beim Anlegen der Datei festgelegt&lt;br /&gt;
|-&lt;br /&gt;
|Permissions &lt;br /&gt;
|Die Zugriffsrechte der Datei werden in den 12 Bit sstrwxrwxrwx abgespeichert.Wenn sie gesetzt sind, werden sie bei &lt;br /&gt;
der Ausgabe an Stelle der x-Rechte ausgegeben. Die Zugriffsrechte können mit dem Kommando chmod verändert werden.&lt;br /&gt;
|-&lt;br /&gt;
|link count&lt;br /&gt;
|In UNIX kann eine Datei mehr als einen Namen haben. Der Link Count gibt die Anzahl der Namen einer Datei an. Er kann&lt;br /&gt;
mit dem Kommando ln erhöht und dem Kommando rm erniedrigt werden.&lt;br /&gt;
|-&lt;br /&gt;
|owner&lt;br /&gt;
|Für den Dateieigentümer gelten die in der ersten rwx-Gruppe festgelegten Zugriffsrechte. Standardmäßig ist der &lt;br /&gt;
Eigentümer einer Datei derjenige Benutzer, der die Datei angelegt hat.&lt;br /&gt;
|-&lt;br /&gt;
|group&lt;br /&gt;
|Für Benutzer, die in der gleichen Gruppe sind, der die Datei angehört, gelten die in der zweiten rwx-Gruppe festgelegten&lt;br /&gt;
Zugriffsrechte. In System V gehört eine Datei standardmäßig der Gruppe an, in der der anlegende Benutzer gerade ist.&lt;br /&gt;
|-&lt;br /&gt;
|size&lt;br /&gt;
|Bei normalen Dateien und Verzeichnissen gibt diese Information die Länge der Datei in Byte an.&lt;br /&gt;
|-&lt;br /&gt;
|access time&lt;br /&gt;
|Die Zugriffszeit gibt den Zeitpunkt des letzten Lesezugriffes auf eine Datei an. Aus Effizienzgründen wird die &lt;br /&gt;
Zugriffszeit an Verzeichnissen nicht gesetzt, wenn ein Verzeichnis durchsucht wird, obwohl man dies erwarten könnte. ''(ls -l --time=atime)''&lt;br /&gt;
|-&lt;br /&gt;
|modification time&lt;br /&gt;
|Die Modifikationszeit gibt die Zeit des letzten Schreibzugriffes auf die Daten der Datei an. Intern speichert UNIX &lt;br /&gt;
die Zeit als Sekunden seit Beginn des Jahres 1970 und in GMT ab. Für die Ausgabe wird dies in ein besser lesbares &lt;br /&gt;
Format in der lokalen Zeitzone umgewandelt. ''(ls -l)''&lt;br /&gt;
|-&lt;br /&gt;
|change time &lt;br /&gt;
|Die Veränderungszeit gibt das Datum der letzten Statusänderung der Datei an. Sie wird immer dann gesetzt, wenn die &lt;br /&gt;
Informationen über die Datei sich ändern (Datum der Erzeugung wird nicht gespeichert) ''(ls -lc)''&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
===Dateiarten===&lt;br /&gt;
{| border=1 cellpadding=2&lt;br /&gt;
!Zeichen&lt;br /&gt;
!Typ&lt;br /&gt;
!Zweck&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;nowiki&amp;gt;-&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
|file&lt;br /&gt;
|normale Datei&lt;br /&gt;
|-&lt;br /&gt;
|d&lt;br /&gt;
|directory&lt;br /&gt;
|Verzeichnis&lt;br /&gt;
|-&lt;br /&gt;
|b&lt;br /&gt;
|block device&lt;br /&gt;
|Gerätedatei&lt;br /&gt;
|-&lt;br /&gt;
|c&lt;br /&gt;
|character device&lt;br /&gt;
|Gerätedatei&lt;br /&gt;
|-&lt;br /&gt;
|l&lt;br /&gt;
|link&lt;br /&gt;
|Querverweis&lt;br /&gt;
|-&lt;br /&gt;
|p&lt;br /&gt;
|named pipe&lt;br /&gt;
|Benannte Pipeline&lt;br /&gt;
|-&lt;br /&gt;
|s&lt;br /&gt;
|socket&lt;br /&gt;
|Netzwerkverbindung&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
====Normale Dateien====&lt;br /&gt;
Unter einer normalen Datei versteht man die Ansammlung von Daten. Dies kann ein Text, Programm, Bild oder sonstiges sein. &lt;br /&gt;
Beispiel&lt;br /&gt;
 root@zero:~# ls -l text | cut -c 1&lt;br /&gt;
 -&lt;br /&gt;
&lt;br /&gt;
====Verzeichnisse====&lt;br /&gt;
Dateien werden in Verzeichnissen gespeichert, nur so ist eine Ordnung möglich. &lt;br /&gt;
 root@zero:~# mkdir -v Ordner&lt;br /&gt;
 mkdir: Verzeichnis „Ordner“ angelegt&lt;br /&gt;
 &lt;br /&gt;
 root@zero:~# ls -ld Ordner | cut -c 1&lt;br /&gt;
 d&lt;br /&gt;
&lt;br /&gt;
====Gerätedateien (Block und Char)====&lt;br /&gt;
Gerätedateien ermöglichen Anwendungsprogrammen unter Benutzung des  Kernels den Zugriff auf die Hardwarekomponenten des Systems. Ansprechbar über Major und Minor Nummern &lt;br /&gt;
&lt;br /&gt;
Beispiele&lt;br /&gt;
&lt;br /&gt;
Sicherung des Master Boot Records der ersten Festplatte&lt;br /&gt;
 root@zero:~# dd if=/dev/sda of=/tmp/mbr.img bs=512 count=1&lt;br /&gt;
&lt;br /&gt;
Block Device &lt;br /&gt;
 root@zero:~# ls -l /dev/sda | cut -c 1 &lt;br /&gt;
 b&lt;br /&gt;
&lt;br /&gt;
Character Device &lt;br /&gt;
 root@zero:~# ls -l /dev/ttyS0  | cut -c 1 &lt;br /&gt;
 c&lt;br /&gt;
&lt;br /&gt;
Erstellen einer Gerätedatei&lt;br /&gt;
 root@zero:/dev# mknod sata1 b 8 0 &lt;br /&gt;
 root@zero:/dev# fdisk -l /dev/sata1 &lt;br /&gt;
 &lt;br /&gt;
 Platte /dev/sata1: 6442 MByte, 6442450944 Byte&lt;br /&gt;
 255 Köpfe, 63 Sektoren/Spuren, 783 Zylinder&lt;br /&gt;
 Einheiten = Zylinder von 16065 × 512 = 8225280 Bytes&lt;br /&gt;
 Disk identifier: 0x0005efab&lt;br /&gt;
 &lt;br /&gt;
       Gerät  boot.     Anfang        Ende     Blöcke   Id  System&lt;br /&gt;
 /dev/sata1p1   *           1         743     5968116   83  Linux&lt;br /&gt;
 /dev/sata1p2             744         783      321300    5  Erweiterte&lt;br /&gt;
 /dev/sata1p5             744         783      321268+  82  Linux Swap / Solaris&lt;br /&gt;
&lt;br /&gt;
====Named Pipes====&lt;br /&gt;
Benannte Pipes (Named Pipes) können dagegen auch zur Kommunikation zwischen Prozessen eingesetzt werden, die nicht miteinander&lt;br /&gt;
verwandt sind und sich darüber hinaus auf unterschiedlichen Rechnern innerhalb eines Netzwerkes befinden dürfen. Sie sind &lt;br /&gt;
flexibler als anonyme Pipes und eignen sich für sogenannte Client-Server-Anwendungen (es lassen sich auch RPCs realisieren).&lt;br /&gt;
Benannte Pipes ermöglichen die gleichzeitige Kommunikation in beide Richtungen, das heißt, Daten können im Vollduplexbetrieb &lt;br /&gt;
zwischen den Prozessen ausgetauscht werden.&lt;br /&gt;
 &lt;br /&gt;
Erstelle Named Pipe mit Namen /tmp/roehre. Schreibe &amp;quot;hallo welt&amp;quot; in die Pipe und bleibe&lt;br /&gt;
 xinux@zero:~$ mkfifo /tmp/roehre&lt;br /&gt;
 xinux@zero:~$ echo hallo welt &amp;gt; /tmp/roehre &lt;br /&gt;
&lt;br /&gt;
Gebe Inhalt der Pipe mit cat aus&lt;br /&gt;
 root@zero:~# cat &amp;lt; /tmp/roehre &lt;br /&gt;
 hallo welt&lt;br /&gt;
 root@zero:~# ls -l /tmp/roehre | cut -c 1&lt;br /&gt;
 p&lt;br /&gt;
&lt;br /&gt;
====Sockets====&lt;br /&gt;
Schnittstelle um es lokalen Anwendungen zu ermöglichen, miteinander Netwerkmässig zu kommunizieren.&lt;br /&gt;
&lt;br /&gt;
 root@lydia:~# netstat  -lnxp | tail -1&lt;br /&gt;
  unix  2 [ ACC ] STREAM HÖRT 21951 6646/nm-applet /tmp/orbit-thomas/linc-19f6-0-2b9b81095cede&lt;br /&gt;
&lt;br /&gt;
 root@lydia:~# ls -l /tmp/orbit-thomas/linc-19f6-0-2b9b81095cede  | cut -c 1 &lt;br /&gt;
 s&lt;br /&gt;
&lt;br /&gt;
====Links====&lt;br /&gt;
Bei Links handelt es sich um symbolische Verweise auf andere Dateien&lt;br /&gt;
&lt;br /&gt;
'''Softlink'''&lt;br /&gt;
Ein Softlink ist eine Datei die nur auf den Namen einer anderen Datei verweist. Wenn die Originaldatei gelöscht wird, zeigt &lt;br /&gt;
der Link ins Leere. &lt;br /&gt;
&lt;br /&gt;
 ln -s datei softlink&lt;br /&gt;
&lt;br /&gt;
{| border=1 cellpadding=2&lt;br /&gt;
| Vorteile&lt;br /&gt;
| Symbolische Links können auch auf Verzeichnisse angelegt werden&amp;lt;br&amp;gt;Sie sind partitionsübergreifend&amp;lt;br&amp;gt;Man kann sie auf Dateien anlegen, die noch nicht existieren&lt;br /&gt;
|-&lt;br /&gt;
| Nachteile&lt;br /&gt;
| Wenn das Original gelöscht ist, ist kein Zugriff mehr möglich&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Beispiel&lt;br /&gt;
 root@zero:~# ln -s text verweis&lt;br /&gt;
 root@zero:~# ls -l verweis&lt;br /&gt;
 lrwxrwxrwx 1 root root 4 2009-06-18 15:48 verweis -&amp;gt; text&lt;br /&gt;
&lt;br /&gt;
'''Hardlinks'''&lt;br /&gt;
 ln datei hardlink&lt;br /&gt;
Eigentlich ist jede Datei ein Hardlink. Ein Hardlink ist ein Verzeichniseintrag,&lt;br /&gt;
der auf eine Inode verweist. Beim Erzeugen einer Datei verweist ein Eintrag auf&lt;br /&gt;
eine Inode. Man kann dann weitere Verweise erzeugen. Der Linkcounter wird&lt;br /&gt;
jeweils um 1 erhöht. Beim Löschen einer Datei wird er jeweils um 1 reduziert.&lt;br /&gt;
Wird der Wert 0 erreicht, ist die Datei gelöscht.&lt;br /&gt;
{| border=1 cellpadding=2&lt;br /&gt;
| Vorteile&lt;br /&gt;
|Zugriff auf die Daten, selbst wenn das Orginal gelöscht ist.&lt;br /&gt;
|-&lt;br /&gt;
|Nachteile&lt;br /&gt;
|Man kann keine Hardlinks auf Verzeichnisse anlegen.&lt;br /&gt;
Ist nur innerhalb einer Partion möglich.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Beispiel&lt;br /&gt;
 root@zero:~# touch 1&lt;br /&gt;
 root@zero:~# echo &amp;quot;text&amp;quot; &amp;gt; 1&lt;br /&gt;
 root@zero:~# ln 1 2&lt;br /&gt;
 root@zero:~# more 2&lt;br /&gt;
 text&lt;br /&gt;
 root@zero:~# echo &amp;quot;doch kein text&amp;quot; &amp;gt; 1&lt;br /&gt;
 root@zero:~# more 1&lt;br /&gt;
 doch kein text&lt;br /&gt;
 root@zero:~# more 2&lt;br /&gt;
 doch kein text&lt;br /&gt;
&lt;br /&gt;
Weitere Optionen:&lt;br /&gt;
 -b sichert Dateien, statt sie zu überschreiben &lt;br /&gt;
 -f Überschreibt bestehende, gleichnamige Dateien&lt;br /&gt;
 -i fragt vor dem Überschreiben nach Bestätigung&lt;br /&gt;
 -v ausführliche Meldungen&lt;br /&gt;
Softlink mit dem Namen passwd im Homeverzeichnis angelegt&lt;br /&gt;
 xinux@zero:~$ ln -vs /etc/passwd .&lt;br /&gt;
 „./passwd“ -&amp;gt; „/etc/passwd“&lt;br /&gt;
Softlink mit dem Namen passwd im Homeverzeichnis angelegt(Original exestiert nicht) &lt;br /&gt;
 xinux@zero:~$ ln -vs /etc/hund .&lt;br /&gt;
 „./hund“ -&amp;gt; „/etc/hund“&lt;br /&gt;
Hardlink mit dem Namen hosts im Homeverzeichnis angelegt&lt;br /&gt;
  xinux@zero:~$ ln -v /etc/hosts .&lt;br /&gt;
 „./hosts“ =&amp;gt; „/etc/hosts“&lt;br /&gt;
Auf eine nicht existierende Datei kann kein Hardlink angelegt werden!&lt;br /&gt;
 xinux@zero:~$ ln -v /etc/katze .&lt;br /&gt;
 ln: Zugriff auf „/etc/katze“: No such file or directory&lt;br /&gt;
&lt;br /&gt;
==Shellsonderzeichen==&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot; cellpadding=&amp;quot;2&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
|;&lt;br /&gt;
|Trenne Kommandos&lt;br /&gt;
|-&lt;br /&gt;
|. oder source&lt;br /&gt;
|Ausführen wie in aktueller Shell&lt;br /&gt;
|-&lt;br /&gt;
|#&lt;br /&gt;
|Kommentar&lt;br /&gt;
|-&lt;br /&gt;
|&amp;amp;&lt;br /&gt;
|Programm im Hintergrund starten &lt;br /&gt;
|-&lt;br /&gt;
|&amp;amp;&amp;amp;&lt;br /&gt;
|UND -Ausführung  (wenn links wahr dann führe rechts aus)&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;nowiki&amp;gt;|&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
|STOUT von links wird zu STDIN von rechts &lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;nowiki&amp;gt;||&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
|ODER -Ausführung (wenn links falsch dann führe rechts aus)&lt;br /&gt;
|-&lt;br /&gt;
|*&lt;br /&gt;
|steht für beliebig viel Zeichen auch 0 &lt;br /&gt;
|-&lt;br /&gt;
|?&lt;br /&gt;
|steht für genau ein Zeichen &lt;br /&gt;
|-&lt;br /&gt;
|[abc]&lt;br /&gt;
|steht für eins der Zeichen in [ ] hier a b oder c &lt;br /&gt;
|-&lt;br /&gt;
|[ausdruck] &lt;br /&gt;
|Andere Schreibweis für test &lt;br /&gt;
|-&lt;br /&gt;
|~&lt;br /&gt;
|das Homeverzeichnis&lt;br /&gt;
|-&lt;br /&gt;
|&amp;gt;    und    &amp;gt;&amp;gt;&lt;br /&gt;
|leite in Datei um   &amp;gt;  überschreibe     &amp;gt;&amp;gt; hänge an &lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;&lt;br /&gt;
|lesen aus Datei &lt;br /&gt;
|-&lt;br /&gt;
|2&amp;gt;&amp;amp;1&lt;br /&gt;
|leite STDERR auf STDOUT&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;&amp;lt; ende&lt;br /&gt;
|Lesen aus Datei (Heredokument)&lt;br /&gt;
|-&lt;br /&gt;
|(...)&lt;br /&gt;
|Alles inhalb von ( ) wird als Subshell ausgeführt&lt;br /&gt;
|-&lt;br /&gt;
|{...}&lt;br /&gt;
|Gruppieren von Komandos &lt;br /&gt;
|-&lt;br /&gt;
|{ ,  ,  , }&lt;br /&gt;
|Zeichenketten zusammensetzen &lt;br /&gt;
|-&lt;br /&gt;
|$&lt;br /&gt;
|Inhalt von Variablen ausgeben $SUX&lt;br /&gt;
|-&lt;br /&gt;
|$* oder $@&lt;br /&gt;
|Liste der übergebenen Parameter&lt;br /&gt;
|-&lt;br /&gt;
|$# &lt;br /&gt;
|Anzahl der übergebenen Parameter &lt;br /&gt;
|-&lt;br /&gt;
|$0&lt;br /&gt;
|Name des Shellprogramms &lt;br /&gt;
|-&lt;br /&gt;
|$?&lt;br /&gt;
|Rückgabewert des letzten Kommandos &lt;br /&gt;
|-&lt;br /&gt;
|$!  und  $$&lt;br /&gt;
|PID des  $!  = letzten Hintergrund  -  , $$ = aktuellen Prozess&lt;br /&gt;
|-&lt;br /&gt;
|$1 ..$9&lt;br /&gt;
|Parameter 1 bis 9 &lt;br /&gt;
|-&lt;br /&gt;
|$() oder `  `&lt;br /&gt;
|Kommandosubstition&lt;br /&gt;
|-&lt;br /&gt;
|${ }&lt;br /&gt;
|Funktion zur Manipulation von Zeichenketten &lt;br /&gt;
|-&lt;br /&gt;
|$(( )) oder $[ ]&lt;br /&gt;
|Arithmetische Berechnung &lt;br /&gt;
|-&lt;br /&gt;
|&amp;quot;...&amp;quot;&lt;br /&gt;
|Entwertung der Sonderzeichen ausser $ ' \&lt;br /&gt;
|-&lt;br /&gt;
|'...'&lt;br /&gt;
|Entwertung sämtlicher Sonderzeichen ausser ' selbst&lt;br /&gt;
|-&lt;br /&gt;
|\  &lt;br /&gt;
|Entwertung des folgenden Sonderzeichens &lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==Prozesse==&lt;br /&gt;
===Was ist ein Prozess?===&lt;br /&gt;
Ein Prozess setzt sich aus zwei Teilen zusammen:&lt;br /&gt;
&lt;br /&gt;
1.Programm, das in den Hauptspeicher geladen wurde&lt;br /&gt;
&lt;br /&gt;
2.Prozessumgebung &lt;br /&gt;
Unter einem Prozess versteht man ein Programm (binär), das in den Hauptspeicher&lt;br /&gt;
geladen wurde. Also nicht das Program selbst, das auf der Festplatte liegt ist der&lt;br /&gt;
Prozess, sondern es wird erst durch das Laden in den Hauptspeicher dazu.&lt;br /&gt;
Normalerweise liegt ein Programm als ausführbare Datei irgendwo auf der&lt;br /&gt;
Festplatte oder auf Diskette. Ob es sich bei dem Programm um eine binäre Datei&lt;br /&gt;
handelt, kann man mit dem Befehl '' file '' feststellen.&lt;br /&gt;
 &lt;br /&gt;
 root@zero:~# file /bin/mkdir&lt;br /&gt;
 /bin/mkdir: ELF 32-bit LSB executable, Intel 80386, version 1 (SYSV), dynamically linked (uses shared libs), for GNU/Linux 2.6.8, stripped&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Die Datei liegt im Maschinencode vor und kann in den Hauptspeicher geladen&lt;br /&gt;
werden. Sobald dies geschehen ist, kann der Rechner diesen Maschinencode&lt;br /&gt;
abarbeiten (ausführen).&lt;br /&gt;
&lt;br /&gt;
Da aber ein Programm nicht direkt auf die Hardware zugreifen soll, muss es vom&lt;br /&gt;
Betriebsystem kontrolliert werden. Das Betriebssystem liegt logisch gesehen&lt;br /&gt;
zwischen Hardware und Anwendung. Das Betriebssystem ordnet jedem Prozess&lt;br /&gt;
verschiedene Kenndaten zu, um die Prozesse verwalten zu können. Alle&lt;br /&gt;
Kenndaten, die einem Prozess zugeordnet sind, nennt man die&lt;br /&gt;
Prozessumgebung.Wenn man in der Shell ein Kommando eingibt, wird ein Prozess&lt;br /&gt;
kreiert. Natürlich ist die Shell selbst auch ein Prozess. Ein Prozess kann aber&lt;br /&gt;
genauso gut ein Serverprozess (Dienst) sein, z.B. Apache.&lt;br /&gt;
Ein wesentliches Merkmal eines Prozesses ist die Prozesskommunikation. Über im&lt;br /&gt;
Betriebssystem implementierte Methoden ist es möglich, dass verschiedene&lt;br /&gt;
Prozesse Signale und Daten untereinander austauschen können.&lt;br /&gt;
Dadurch wird auch dem Benutzer ermöglicht, einem Prozeß bestimmte Signale zu&lt;br /&gt;
senden bzw. auf den Status eines Prozesses Einfluss zu nehmen.&lt;br /&gt;
&lt;br /&gt;
===Prozesstabelle (Anzeige mit ps)===&lt;br /&gt;
Da zu jedem Prozess Kenndaten geführt werden, müssen diese auch irgendwo&lt;br /&gt;
festgehalten werden. Das geschieht in der sogenannten Prozesstabelle.&lt;br /&gt;
&lt;br /&gt;
Kenndaten der Prozesse (Auswahl):&lt;br /&gt;
* F Flags (z.B. ausgelagert; Systemprozess; Trace,...)&lt;br /&gt;
* UID Nutzer, mit dessen Rechten der Prozess ausgeführt wird&lt;br /&gt;
* PID Prozess - ID. Diese Nummer gibt eine eindeutige Prozess - Nummer&lt;br /&gt;
an. Sie wird vom System automatisch beim Starten des Prozesses&lt;br /&gt;
vergeben und ist für die Laufzeit eindeutig.&lt;br /&gt;
* PPID Prozessnumer der Eltern-Prozesses&lt;br /&gt;
* PRI Priorität eines Prozesses; je niedriger der Wert ist, desto besser&lt;br /&gt;
* NI ist der Nicewert des Prozesses; Nice erniedrigt den Grundwert&lt;br /&gt;
der Priorität des Prozesses und gibt damit Prozessorzeit für andere&lt;br /&gt;
Prozesse frei.&lt;br /&gt;
* SIZE Speichergröße des Prozesses inklusive Stack (eine Art Zwischenspeicher)&lt;br /&gt;
* RSS Verbrauch an physischen Speicher&lt;br /&gt;
* WCHAN ist der Name der Kernerlfunktion, in der der Prozess schläft&lt;br /&gt;
* STAT Status des Prozesses&lt;br /&gt;
R läuft       S schlafend     D nicht störbarer Schlaf&lt;br /&gt;
T angehalten  Z Zombie        W der Prozess belegt keine Seiten&lt;br /&gt;
* TIME Bisland benötigte Prozessorzeit&lt;br /&gt;
* SIZE ist die Größe von Text, Daten und Stack&lt;br /&gt;
* TTY die Nummer des kontrollierenden Teminal; wenn hier ein ? steht,&lt;br /&gt;
handelt es sich um einen Dämon oder Serverprozess.&lt;br /&gt;
* COMMAND Angabe des Prozesses selbst. Dies ist meist der Programmname.&lt;br /&gt;
&lt;br /&gt;
Weiteres&lt;br /&gt;
* GID Gruppe, unter der der Prozess läuft&lt;br /&gt;
* Verweis auf das aktuellen Arbeitsverzeichnis&lt;br /&gt;
* Um mit relativen Pfadangaben arbeiten zu können braucht man diesen Eintrag&lt;br /&gt;
* Tabelle mit Verweisen auf aktuell geöffnete Dateien&lt;br /&gt;
* 3 sind automatisch geöffnet Standardeingabe, Standardausgabe und&lt;br /&gt;
Standardfehlerkanal&lt;br /&gt;
&lt;br /&gt;
Beispiel&lt;br /&gt;
 root@zero:~# ps -l&lt;br /&gt;
 F S   UID   PID  PPID  C PRI  NI ADDR SZ WCHAN  TTY          TIME CMD&lt;br /&gt;
 4 R     0 18639 18631  0  80   0 -  1080 -      pts/0    00:00:00 bash&lt;br /&gt;
 0 R     0 25904 18639  0  80   0 -   635 -      pts/0    00:00:00 ps&lt;br /&gt;
&lt;br /&gt;
===Eltern und Kinder===&lt;br /&gt;
Jeder Prozess kann weitere Prozesse erzeugen. Die erzeugten Prozesse bezeichnet&lt;br /&gt;
man als Kindprozesse. Jeder Kindprozess weiß anhand der PID, woher er stammt.&lt;br /&gt;
&lt;br /&gt;
Alle Prozesse sind von einem anderen Prozess gestartet worden, mit Ausnahme&lt;br /&gt;
des Pseudoprozesses (noch im Kernel beim Starten erzeugter Prozess). Dieser hat&lt;br /&gt;
die Prozessnummer 0. Er hat die Aufgabe, den Init Prozess ( /sbin/init die Nummer&lt;br /&gt;
1) zu starten, der in System V alle anderen Prozesse direkt oder über seine Kind-&lt;br /&gt;
prozesse startet. (init wird konfiguriert durch die /etc/inittab)&lt;br /&gt;
&lt;br /&gt;
Es gibt zwei Arten wie ein Prozess gestartet werden kann:&lt;br /&gt;
&lt;br /&gt;
# Fork und Exec: Prozessumgebung wird dupliziert, der neue Prozess bekommt eine eigene neue PID&lt;br /&gt;
# Exec: Alter Prozess wird durch neuen Prozess überladen (geht mit dem shell-buildin exec)&lt;br /&gt;
&lt;br /&gt;
'''Rechte auf Objekte UID GID'''&lt;br /&gt;
Ob ein Prozess auf eine Datei zugreifen kann, entscheidet der Kernel anhand der&lt;br /&gt;
Zugriffssrechte, die auf der Datei gesetzt sind. Er checkt anhand der UID und GID&lt;br /&gt;
des Prozesses, ob es erlaubt ist. Mit dieser Technik wird letztendlich geprüft, was&lt;br /&gt;
ein User darf, und was nicht.&lt;br /&gt;
&lt;br /&gt;
===Rechenzeit und Priorität===&lt;br /&gt;
Da auch bei Prozessen eine Gerechtigkeit herschen muss, muss eine Instanz&lt;br /&gt;
darüber entscheiden wie lange ein Prozess Rechenzeit verbrauchen darf.&lt;br /&gt;
Folgende Kenndaten werden dazu benötigt&lt;br /&gt;
* clocktick = Zeiteinheit&lt;br /&gt;
* n = Faktor über den Kernel einstellbar&lt;br /&gt;
* slice = n &amp;lt;nowiki&amp;gt;*&amp;lt;/nowiki&amp;gt; clocktick&lt;br /&gt;
* agingtime = weitere Zeiteinheit über den Kernel einstellbar&lt;br /&gt;
&lt;br /&gt;
Es wird davon ausgegangen das der Prozess mit der niedrigsten Priorität gerade&lt;br /&gt;
rechnet. Pro clocktick erhöht sich die Priorität dieses Prozesses um eins.&lt;br /&gt;
&lt;br /&gt;
Jetzt können 3 Situationen eintreten die alle dazu führen das der Scheduler&lt;br /&gt;
aufgerufen wird.&lt;br /&gt;
&lt;br /&gt;
# Prozess blockiert wegen einer Ausgabe oder Eingabe.&lt;br /&gt;
# Gibt Rechenzeit freiwillig ab.&lt;br /&gt;
# Der Slice endet.&lt;br /&gt;
&lt;br /&gt;
Der Aufruf des Schedulers bewirkt das der Prozess mit der niedrigsten Priorität&lt;br /&gt;
gescheduled wird, er also nun rechnen darf. Nach Ablauf der agingtime werden&lt;br /&gt;
nun die Prozesse &amp;quot;gealtert&amp;quot;. Das geschieht nach folgender Formel&lt;br /&gt;
&lt;br /&gt;
Neue Priorität = Alte Priorität / 2 + Nicewert&lt;br /&gt;
&lt;br /&gt;
Der User hat die Möglichkeit, über den sogenannten Nicefaktor den Grundwert für&lt;br /&gt;
einen Prozess zu senken. Der Prozess braucht dann länger für seine Abarbeitung.&lt;br /&gt;
Er verhält sich somit netter zu den anderen Prozessen. Normale User können nur&lt;br /&gt;
netter werden, der Systemverwalter kann auch nicht netter (gemeiner) werden. Der&lt;br /&gt;
Bereich liegt zwischen 19 (sehr nett) bis 0 (weniger nett) für die User, und 19 bis&lt;br /&gt;
-20 für root.&lt;br /&gt;
&lt;br /&gt;
[[Image:pri.png]]&lt;br /&gt;
&lt;br /&gt;
'''Signale'''&lt;br /&gt;
&lt;br /&gt;
Mit den Kommando kill und killall kann man Prozessen Signale schicken&lt;br /&gt;
&lt;br /&gt;
 kill -Signalnummer PID &lt;br /&gt;
&lt;br /&gt;
Signalnummer&lt;br /&gt;
{| border=1 cellpadding=2&lt;br /&gt;
!Signalname&lt;br /&gt;
!Wert&lt;br /&gt;
!Aktion&lt;br /&gt;
|-&lt;br /&gt;
|SIGHUP&lt;br /&gt;
|1&lt;br /&gt;
|Neuinitialisierung eines Prozesses&lt;br /&gt;
|-&lt;br /&gt;
|SIGINT&lt;br /&gt;
|2&lt;br /&gt;
|Interrupt-Signal von der Tastatur (STRG+c)&lt;br /&gt;
|-&lt;br /&gt;
|SIGQUIT&lt;br /&gt;
|3&lt;br /&gt;
|Interrupt-Signal von der Tastatur (STRG+c) mit Dump&lt;br /&gt;
|-&lt;br /&gt;
|SIGKILL&lt;br /&gt;
|9&lt;br /&gt;
|unwiderrufliches Beendigungssignal (Töten)&lt;br /&gt;
|-&lt;br /&gt;
|SIGSEGV&lt;br /&gt;
|11&lt;br /&gt;
|Ungültige Speicherreferenz (bedeutet oft auf defekten Speicher)&lt;br /&gt;
|-&lt;br /&gt;
|SIGTERM &lt;br /&gt;
|15&lt;br /&gt;
|Beendigungssignal (geöffnete Dateien werden geschlossen)&lt;br /&gt;
|-&lt;br /&gt;
|SIGCONT &lt;br /&gt;
|18&lt;br /&gt;
|Weiterfahren, wenn gestoppt&lt;br /&gt;
|-&lt;br /&gt;
|SIGSTOP&lt;br /&gt;
|19&lt;br /&gt;
|Prozessstop&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Beispiel&lt;br /&gt;
 root@zero:~# kill -1 7562&lt;br /&gt;
&lt;br /&gt;
===Programme im Zusammenhang mit Prozessen===&lt;br /&gt;
* ps: Zeigt die Prozesse mit ihrem Status an&lt;br /&gt;
 root@zero:~# ps&lt;br /&gt;
  PID TTY          TIME CMD&lt;br /&gt;
 14134 pts/0    00:00:00 bash&lt;br /&gt;
 14149 pts/0    00:00:00 ps&lt;br /&gt;
&lt;br /&gt;
 root@zero:~# ps -elf | grep apache&lt;br /&gt;
 1 S root      5738     1  0  80   0 -  5461 select Jun16 ?        00:00:00 /usr/sbin/apache2 -k start&lt;br /&gt;
 5 S www-data  5739  5738  0  80   0 -  5581 inet_c Jun16 ?        00:00:00 /usr/sbin/apache2 -k start&lt;br /&gt;
 5 S www-data  5742  5738  0  80   0 -  5461 inet_c Jun16 ?        00:00:00 /usr/sbin/apache2 -k start&lt;br /&gt;
 5 S www-data  5743  5738  0  80   0 -  5461 inet_c Jun16 ?        00:00:00 /usr/sbin/apache2 -k start&lt;br /&gt;
 5 S www-data  5745  5738  0  80   0 -  5461 inet_c Jun16 ?        00:00:00 /usr/sbin/apache2 -k start&lt;br /&gt;
 5 S www-data  5746  5738  0  80   0 -  5461 inet_c Jun16 ?        00:00:00 /usr/sbin/apache2 -k start&lt;br /&gt;
 0 S root     14153 14134  0  80   0 -   837 pipe_w 16:59 pts/0    00:00:00 grep apache&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* nice: Lässt ein Programm mit verändertem Grundwert der Priorität laufen&lt;br /&gt;
 root@zero:~# nice&lt;br /&gt;
 0&lt;br /&gt;
 root@zero:~# nice -n 9 bash&lt;br /&gt;
 root@zero:~# nice&lt;br /&gt;
 9&lt;br /&gt;
 root@zero:~#&lt;br /&gt;
&lt;br /&gt;
* renice: Ändert den Grundwert der Priorität eines laufenden Prozesses&lt;br /&gt;
 root@zero:~# renice 10 5742&lt;br /&gt;
 5742: Alte Priorität: 0, neue Priorität: 10&lt;br /&gt;
&lt;br /&gt;
* top: Zeigt die Prozesse mit ihrem Status an (Abbrechen mit q)&lt;br /&gt;
 root@zero:~# top&lt;br /&gt;
&lt;br /&gt;
* pstree: Zeigt die Prozesse als Baumstruktur&lt;br /&gt;
 root@zero:~# pstree&lt;br /&gt;
 init─┬─NetworkManager&lt;br /&gt;
      ├─acpid&lt;br /&gt;
      ├─apache2───5*[apache2]&lt;br /&gt;
      ├─atd&lt;br /&gt;
      ├─bluetoothd&lt;br /&gt;
      ├─console-kit-dae───63*[{console-kit-dae}]&lt;br /&gt;
      ├─cron&lt;br /&gt;
      ├─cupsd&lt;br /&gt;
      ├─dbus-daemon&lt;br /&gt;
      ├─dd&lt;br /&gt;
      ├─gdm───gdm─┬─Xorg&lt;br /&gt;
      │           └─gdmgreeter&lt;br /&gt;
      ├─6*[getty]&lt;br /&gt;
      ├─hald───hald-runner─┬─hald-addon-acpi&lt;br /&gt;
      │                    ├─hald-addon-inpu&lt;br /&gt;
      │                    └─2*[hald-addon-stor]&lt;br /&gt;
      ├─klogd&lt;br /&gt;
      ├─nm-system-setti&lt;br /&gt;
      ├─nmbd&lt;br /&gt;
      ├─nscd───11*[{nscd}]&lt;br /&gt;
      ├─portmap&lt;br /&gt;
      ├─rpc.statd&lt;br /&gt;
      ├─slapd───2*[{slapd}]&lt;br /&gt;
      ├─smbd───smbd&lt;br /&gt;
      ├─sshd───sshd───bash───bash───pstree&lt;br /&gt;
      ├─syslogd&lt;br /&gt;
      ├─system-tools-ba&lt;br /&gt;
      ├─udevd&lt;br /&gt;
      ├─winbindd─┬─winbindd───winbindd&lt;br /&gt;
      │          └─3*[winbindd]&lt;br /&gt;
      └─wpa_supplicant&lt;br /&gt;
&lt;br /&gt;
===Jobs===&lt;br /&gt;
Unter einem Job versteht man ein Programm, welches man von der Shell gelöst&lt;br /&gt;
hat. D. h. man kann ganz normal weiter arbeiten und der Job verrichtet seinen&lt;br /&gt;
Dienst im Hintergrund. Man kann jederzeit zu diesem Job wieder Kontakt&lt;br /&gt;
aufnehmen.&lt;br /&gt;
&lt;br /&gt;
Ein Job kann auf 2 Arten gestarten werden:&lt;br /&gt;
&lt;br /&gt;
# Durch Anhängen des &amp;amp; Zeichens beim Programmstart&lt;br /&gt;
 root@zero:~# tail -f /var/log/messages &amp;amp;&lt;br /&gt;
 Jun 19 06:59:31 zero -- MARK --&lt;br /&gt;
 Jun 19 07:19:31 zero -- MARK --&lt;br /&gt;
 Jun 19 07:39:32 zero -- MARK --&lt;br /&gt;
 Jun 19 07:44:57 zero syslogd 1.5.0#5ubuntu3: restart.&lt;br /&gt;
 Jun 19 07:59:32 zero -- MARK --&lt;br /&gt;
 Jun 19 08:19:32 zero -- MARK --&lt;br /&gt;
 Jun 19 08:39:32 zero -- MARK --&lt;br /&gt;
 Jun 19 08:59:32 zero -- MARK --&lt;br /&gt;
 Jun 19 09:19:33 zero -- MARK --&lt;br /&gt;
 Jun 19 09:39:33 zero -- MARK --&lt;br /&gt;
 [3] 27421&lt;br /&gt;
&lt;br /&gt;
# Durch Stoppen des Prozesses durch Drücken von Strg-Z und in den Hintergrund schicken mit %n (n ist die Jobnummer)&lt;br /&gt;
 root@zero:~# watch cat /proc/cpuinfo&lt;br /&gt;
 Strg-Z&lt;br /&gt;
 [4]+  Stopped                 watch cat /proc/cpuinfo&lt;br /&gt;
 root@zero:~# bg %4&lt;br /&gt;
 [4]+ watch cat /proc/cpuinfo &amp;amp;&lt;br /&gt;
&lt;br /&gt;
Anweisungen im Zusammenhang mit Jobs (n ist die Jobnummer)&lt;br /&gt;
* bg %n : Einen Job in den Hintergrund stellen (wie oben)&lt;br /&gt;
* fg %n : Einen Job in den Vordergrund holen&lt;br /&gt;
 root@zero:~# fg %4&lt;br /&gt;
 watch cat /proc/cpuinfo&lt;br /&gt;
&lt;br /&gt;
* jobs : Aktive Jobs ausgeben&lt;br /&gt;
&lt;br /&gt;
 root@zero:~# jobs&lt;br /&gt;
 [1]   Running                 tail -f /var/log/syslog &amp;amp;&lt;br /&gt;
 [2]   Running                 tail -f /var/log/syslog &amp;amp;&lt;br /&gt;
 [3]-  Running                 tail -f /var/log/messages &amp;amp;&lt;br /&gt;
 [4]+  Stopped                 watch cat /proc/cpuinfo&lt;br /&gt;
&lt;br /&gt;
* Strg-Z : Einen Vordergrund-Job vorübergehend anhalten&lt;br /&gt;
* kill -STOP %n : Unterbricht Job im Hintergrund&lt;br /&gt;
 root@zero:~# kill -STOP %1&lt;br /&gt;
 root@zero:~# jobs&lt;br /&gt;
 [1]+  '''Stopped'''                 tail -f /var/log/syslog&lt;br /&gt;
 [2]   Running                 tail -f /var/log/syslog &amp;amp;&lt;br /&gt;
 [3]   Running                 tail -f /var/log/messages &amp;amp;&lt;br /&gt;
 [4]-  Stopped                 watch cat /proc/cpuinfo&lt;br /&gt;
* kill -CONT %n : Setzt den unterbrochenen Job im Hintergrund fort&lt;br /&gt;
root@zero:~# kill -CONT %1&lt;br /&gt;
root@zero:~# jobs&lt;br /&gt;
 [1]+  '''Running'''                 tail -f /var/log/syslog &amp;amp;&lt;br /&gt;
 [2]   Running                 tail -f /var/log/syslog &amp;amp;&lt;br /&gt;
 [3]   Running                 tail -f /var/log/messages &amp;amp;&lt;br /&gt;
 [4]-  Stopped                 watch cat /proc/cpuinfo&lt;br /&gt;
* kill -KILL %n : Tötet Job im Hintergrund&lt;br /&gt;
 root@zero:~# kill -KILL %1&lt;br /&gt;
 root@zero:~# jobs&lt;br /&gt;
 [1]+  '''Killed'''                  tail -f /var/log/syslog&lt;br /&gt;
 [2]   Running                 tail -f /var/log/syslog &amp;amp;&lt;br /&gt;
 [3]   Running                 tail -f /var/log/messages &amp;amp;&lt;br /&gt;
 [4]-  Stopped                 watch cat /proc/cpuinfo&lt;br /&gt;
 root@zero:~# jobs&lt;br /&gt;
 [2]   Running                 tail -f /var/log/syslog &amp;amp;&lt;br /&gt;
 [3]-  Running                 tail -f /var/log/messages &amp;amp;&lt;br /&gt;
 [4]+  Stopped                 watch cat /proc/cpuinfo&lt;br /&gt;
&lt;br /&gt;
Bedingungen, die zu Jobausführung eingehalten werden sollen:&lt;br /&gt;
* Der Job soll nicht auf den Bildschirm schreiben (Standardausgabe +Standardfehlerkanal).&lt;br /&gt;
* Er soll keine Eingaben vom Benutzer erwarten.&lt;br /&gt;
&lt;br /&gt;
==Suchen von Dateien==&lt;br /&gt;
===find===&lt;br /&gt;
 find ab_wo_wird_gesucht was_wird_gesucht aktion&lt;br /&gt;
 find [Pfad] [Bedingung] [Aktion]&lt;br /&gt;
&lt;br /&gt;
====Nach Namen====&lt;br /&gt;
 find [Pfad] '''-name''' [Name]&lt;br /&gt;
 &lt;br /&gt;
Finde alle Dateien mit Namen test ab dem Verzeichnis /home und gebe diese Zeilenweise aus&lt;br /&gt;
 root@zero:~# find /home -name test -print&lt;br /&gt;
 /home/xinux/test&lt;br /&gt;
 /home/test&lt;br /&gt;
&lt;br /&gt;
Wie oben, jedoch mit Namensanfang test&lt;br /&gt;
 root@zero:/home/xinux# find /home -name 'test*'&lt;br /&gt;
 /home/xinux/testdatei&lt;br /&gt;
 /home/xinux/test&lt;br /&gt;
 /home/test&lt;br /&gt;
&lt;br /&gt;
====Nach Benutzer(Eigentümer)====&lt;br /&gt;
 root@zero:/tmp# find /tmp/ '''-user''' xinux&lt;br /&gt;
 /tmp/datei&lt;br /&gt;
&lt;br /&gt;
====Nach Gruppe====&lt;br /&gt;
 root@zero:/tmp# find /tmp/ '''-group''' hacker&lt;br /&gt;
 /tmp/datei3&lt;br /&gt;
 /tmp/datei2&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
====Nach Typ====&lt;br /&gt;
Es wird nach Dateien anhand Ihrer Art gesucht:&lt;br /&gt;
 find [Pfad] '''-type''' [Typ] &lt;br /&gt;
Typ:&lt;br /&gt;
* f: Normale Dateien&lt;br /&gt;
 root@zero:~# find /tmp/ -type f&lt;br /&gt;
 /tmp/mbr.img&lt;br /&gt;
 /tmp/datei&lt;br /&gt;
 /tmp/zeugs&lt;br /&gt;
 /tmp/.X0-lock&lt;br /&gt;
* d: Verzeichnisse&lt;br /&gt;
 root@zero:~# find /var/log -type d&lt;br /&gt;
 /var/log&lt;br /&gt;
 /var/log/apache2&lt;br /&gt;
 /var/log/unattended-upgrades&lt;br /&gt;
 /var/log/apparmor&lt;br /&gt;
 /var/log/ConsoleKit&lt;br /&gt;
 /var/log/dist-upgrade&lt;br /&gt;
 /var/log/dist-upgrade/20090526-1052&lt;br /&gt;
 /var/log/cups&lt;br /&gt;
 /var/log/apt&lt;br /&gt;
 /var/log/fsck&lt;br /&gt;
 /var/log/samba&lt;br /&gt;
 /var/log/samba/cores&lt;br /&gt;
 /var/log/samba/cores/smbd&lt;br /&gt;
 /var/log/samba/cores/nmbd&lt;br /&gt;
 /var/log/samba/cores/winbindd&lt;br /&gt;
 /var/log/installer&lt;br /&gt;
 /var/log/gdm&lt;br /&gt;
 /var/log/news&lt;br /&gt;
* c: Char Devices (Zeichenorientierte Gerätedatei)&lt;br /&gt;
 root@zero:~# find / -type c&lt;br /&gt;
 /lib/udev/devices/kmem&lt;br /&gt;
 /lib/udev/devices/null&lt;br /&gt;
 /lib/udev/devices/console&lt;br /&gt;
 /lib/udev/devices/ppp&lt;br /&gt;
 /lib/udev/devices/net/tun&lt;br /&gt;
* b: Block Devices (Blockorientierte Gerätedatei)&lt;br /&gt;
* p: Benannte Pipe&lt;br /&gt;
* l: Links&lt;br /&gt;
* s: Sockets&lt;br /&gt;
&lt;br /&gt;
====Nach Modifikation====&lt;br /&gt;
Listet alle Dateien in /etc auf, die innerhalb von zwei Tagen modifiziert wurden&lt;br /&gt;
 root@zero:/var/log# find /etc/ -mtime 2 -print&lt;br /&gt;
 /etc/apache2&lt;br /&gt;
 /etc/apache2/mods-available&lt;br /&gt;
 /etc/apache2/conf.d&lt;br /&gt;
 /etc/apache2/sites-available&lt;br /&gt;
 /etc/bash_completion.d&lt;br /&gt;
 /etc/blkid.tab.old&lt;br /&gt;
 /etc/firefox-3.0/profile&lt;br /&gt;
 /etc/firefox-3.0/profile/chrome&lt;br /&gt;
 /etc/firefox-3.0/pref&lt;br /&gt;
 /etc/profile.d&lt;br /&gt;
 /etc/ufw/applications.d&lt;br /&gt;
 /etc/logrotate.d&lt;br /&gt;
 /etc/xulrunner-1.9&lt;br /&gt;
 /etc/blkid.tab&lt;br /&gt;
 /etc/cron.daily&lt;br /&gt;
 /etc/alternatives&lt;br /&gt;
 /etc/alternatives/x-www-browser&lt;br /&gt;
 /etc/alternatives/xulrunner&lt;br /&gt;
 /etc/gre.d&lt;br /&gt;
 /etc/hal/fdi/policy&lt;br /&gt;
 /etc/dbus-1/system.d&lt;br /&gt;
 /etc/udev/rules.d&lt;br /&gt;
&lt;br /&gt;
====Nach Größe====&lt;br /&gt;
Finde Dateien in /tmp, die größer als 100 MByte sind&lt;br /&gt;
 root@zero:/tmp# find /tmp/ -size +100M&lt;br /&gt;
 /tmp/datei&lt;br /&gt;
&lt;br /&gt;
Finde Dateien in /tmp, die kleiner als 100 KByte sind&lt;br /&gt;
 root@zero:/tmp# find /tmp/ -size -100k&lt;br /&gt;
 /tmp/&lt;br /&gt;
 /tmp/datei3&lt;br /&gt;
 /tmp/backup &lt;br /&gt;
 /tmp/datei2&lt;br /&gt;
 /tmp/.winbindd &lt;br /&gt;
 /tmp/.winbindd/pipe&lt;br /&gt;
 /tmp/mbr.img&lt;br /&gt;
 /tmp/zeugs&lt;br /&gt;
 /tmp/.ICE-unix&lt;br /&gt;
 /tmp/.X0-lock&lt;br /&gt;
 /tmp/datei1&lt;br /&gt;
 /tmp/.X11-unix&lt;br /&gt;
 /tmp/.X11-unix/X0&lt;br /&gt;
 /tmp/pulse-PKdhtXMmr18n&lt;br /&gt;
&lt;br /&gt;
====Nach Berechtigungen====&lt;br /&gt;
Finde Dateien in Home mit der Berechtigung 777 (-rwxrwxrwx)&lt;br /&gt;
 root@zero:/var# find /home/ -perm 777&lt;br /&gt;
 /home/samba&lt;br /&gt;
 /home/xinux/Examples&lt;br /&gt;
 /home/xinux/.pulse/1f0763ee4cf4c7e1d3c07fd149dda37b:runtime&lt;br /&gt;
 /home/test/Examples&lt;br /&gt;
&lt;br /&gt;
===locate===&lt;br /&gt;
Locate arbeitet über einen Index, der erstellt und aktualisiert werden muss. Aus diesem Grund kann locate teilweise nicht &lt;br /&gt;
akutell sein. Es ist immer schneller als find und es durchsucht immer das ganze Dateisystem. &lt;br /&gt;
 locate [Dateiname]&lt;br /&gt;
 &lt;br /&gt;
Lokalisiere die Datei wvdial.conf. Anmerkung: Der Stern wird beim Suchen automatisch hinzugefügt. Entspricht also&lt;br /&gt;
wvidal.conf*&lt;br /&gt;
 root@zero:~# locate wvdial.conf&lt;br /&gt;
 /etc/wvdial.conf&lt;br /&gt;
 /usr/share/man/man5/wvdial.conf.5.gz&lt;br /&gt;
 /var/lib/dpkg/info/wvdial.conffiles&lt;br /&gt;
 /var/lib/dpkg/info/wvdial.config&lt;br /&gt;
&lt;br /&gt;
Lokalisiere die Datei wvdial.conf und nur diese&lt;br /&gt;
 root@zero:~# locate -b '\wvdial.conf'&lt;br /&gt;
 /etc/wvdial.conf&lt;br /&gt;
&lt;br /&gt;
Aktualisieren des Indexes&lt;br /&gt;
 root@zero:~# updatedb&lt;br /&gt;
&lt;br /&gt;
==Wie wird ein Kommando lokalisiert==&lt;br /&gt;
Wenn die Shell alle Ersetzungen in der Kommandozeile vorgenommen und alle Umleitungen vorbereitet hat, ist der Zeitpunkt &lt;br /&gt;
gekommen, auf den der Anwender die ganze Zeit gewartet hat. Die Shell versucht das Kommando auszuführen. Dazu muss sie &lt;br /&gt;
es aber erst lokalisieren. Das erste passende Kommando wird ausgeführt.&lt;br /&gt;
&lt;br /&gt;
Als Kommandoname wird immer das erste Wort eines einfachen Kommandos erkannt. Ein Kommandoname kann mit Pfadnamen in &lt;br /&gt;
einem Verzeichnis (absolut oder relativ) angegeben werden. Die Shell erkennt dies an (mindestens) einem Slash `/' &lt;br /&gt;
im Kommandonamen. Wenn kein Verzeichnis angegeben ist, versucht die Shell selbst, das Kommando zu finden. Dazu wird &lt;br /&gt;
der Kommandoname zuerst in der Hashtabelle gesucht, dann wird er mit den Synonymen, mit den Scriptfunktionen und &lt;br /&gt;
schließlich mit den Shellfunktionen verglichen. &lt;br /&gt;
&lt;br /&gt;
Wird auf diese Weise kein Programm dieses Namens gefunden, werden alle in der PATH-Umgebungsvariablen aufgeführten &lt;br /&gt;
Verzeichnisse nach einer ausführbaren Datei dieses Namens durchsucht. Wird auch hier kein passendes Kommando gefunden, &lt;br /&gt;
gibt die Shell eine Fehlermeldung aus.&lt;br /&gt;
&lt;br /&gt;
===which und type===&lt;br /&gt;
====which====&lt;br /&gt;
which gibt die vollen Pfadnamen der Dateien aus, die bei Benutzung des angegebenen Befehls ausgeführt werden würden.&lt;br /&gt;
&lt;br /&gt;
 which [-a] Dateiname &lt;br /&gt;
&lt;br /&gt;
Optionen:&lt;br /&gt;
&lt;br /&gt;
* -a : Alle Treffer ausgeben, nicht nur den ersten&lt;br /&gt;
* --skip-dot : Verzeichnisse, die mit einem Punkt beginnen, auslassen&lt;br /&gt;
&lt;br /&gt;
Beispiel&lt;br /&gt;
 root@zero:~# which startx&lt;br /&gt;
 /usr/bin/startx&lt;br /&gt;
&lt;br /&gt;
====type====&lt;br /&gt;
Anzeigen der absoluten Pfadnamen von Befehlen, und ob sich diese Befehle in der Hash-Tabelle der aktuellen&lt;br /&gt;
Shell befinden.&lt;br /&gt;
&lt;br /&gt;
 type [Optionen] Befehle&lt;br /&gt;
&lt;br /&gt;
Beispiel&lt;br /&gt;
 root@zero:~# type ls&lt;br /&gt;
 ls is aliased to `ls --color=auto'&lt;br /&gt;
&lt;br /&gt;
Optionen:&lt;br /&gt;
&lt;br /&gt;
* -a : Alle vorkommenden Befehle werden ausgegeben, nicht nur das, welches aufgerufen werden würde&lt;br /&gt;
 root@zero:~# type '''-a''' ls&lt;br /&gt;
 ls is aliased to `ls --color=auto'&lt;br /&gt;
 ls is /bin/ls&lt;br /&gt;
&lt;br /&gt;
* -p : Anzeigen des Eintrags von Befehl in der Hash-Tabelle. Dieser Wert kann sich vom ersten Auftreten des Befehls in PATH&lt;br /&gt;
unterscheiden&lt;br /&gt;
 root@zero:~# type '''-p''' apache2&lt;br /&gt;
 /usr/sbin/apache2&lt;br /&gt;
&lt;br /&gt;
* -t : Anzeigen, ob Befehl ein Aliasname, ein Schlüsselwort, eine Funktion, ein eingebauter Befehl oder eine Datei ist&lt;br /&gt;
 root@zero:~# type '''-t''' apache2&lt;br /&gt;
 file&lt;/div&gt;</summary>
		<author><name>192.168.178.46</name></author>
	</entry>
	<entry>
		<id>https://www.xinux.net/index.php?title=Linux_Grundlagen&amp;diff=88</id>
		<title>Linux Grundlagen</title>
		<link rel="alternate" type="text/html" href="https://www.xinux.net/index.php?title=Linux_Grundlagen&amp;diff=88"/>
		<updated>2009-07-07T11:02:28Z</updated>

		<summary type="html">&lt;p&gt;192.168.178.46: /* Was ist ein Prozess? */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Einführung==&lt;br /&gt;
===Geschichte Unix===&lt;br /&gt;
====1969====&lt;br /&gt;
Am Anfang von Linux steht Multics, ein von Bell Laboratories geschaffenes &amp;quot;Betriebssystem&amp;quot;, &lt;br /&gt;
das noch mit Lochkarten arbeitete. Multics wird mit Unterstützung von AT&amp;amp;T und Western &lt;br /&gt;
Electric unter Mitarbeit von Ken Thompson und Dennis Ritchie weiterentwickelt. Obwohl sich &lt;br /&gt;
Bell Laboratories bald zurückzieht, gibt Thompson das Projekt nicht auf.  Zum Entwicklerteam &lt;br /&gt;
gehören auch Rudd Canaday und Brian Kernighan. Letzterer gibt 1970 dem Betriebssystem den Namen UNIX. &lt;br /&gt;
Thompson definiert 7 Richtlinien für UNIX:&lt;br /&gt;
 &lt;br /&gt;
# Hierarchische Anordnung der Dateisysteme&lt;br /&gt;
# Die Ausgabe von Daten an die Peripherie(-geräte) und Dateien soll gleich sein.&lt;br /&gt;
# Prozesse und Programme sollen miteinander kommunizieren.&lt;br /&gt;
# Multitasking (voneinander getrennte Prozesse)&lt;br /&gt;
# Persönliche Shell's&lt;br /&gt;
# Der Compiler soll für viele Programmiersprachen tauglich sein.&lt;br /&gt;
# Portabilität&lt;br /&gt;
&lt;br /&gt;
====1971====&lt;br /&gt;
Bis 1971 ist das für eine DEC PDP-7 geschriebene Unix als Version 1 auf eine PDP-11 portiert. Bis&lt;br /&gt;
zur Version 4 entwickelt Ritchie die Programmier- (Hoch-) Sprache C. Das in Assembler geschriebene&lt;br /&gt;
Unix wird fast völlig nach C übersetzt, wodurch zum erstenmal die geforderte Hardware-Unabhängigkeit&lt;br /&gt;
des Betriebssystems realisiert werden kann.&lt;br /&gt;
&lt;br /&gt;
====1975====&lt;br /&gt;
Da AT&amp;amp;T aufgrund vertraglicher Bindungen mit der US-Bundesregierung Unix nicht kommerziell vermarkten darf, stellt sie den Source Code für ein paar hundert Dollar den Universitäten, Lehr- und Forschungsanstalten zur Verfügung. Dies führt zu einer sehr dynamischen Entwicklung von Unix. 1975 wird die Version 6 als erstes UNIX-System veröffentlicht, die darauffolgende Version 7 wird sehr erfolgreich. Da es keine Standardisierung gibt, entwickeln bald verschiedenste Firmen ihr eigenes UNIX. Ab 1984 wird AT&amp;amp;T per Gerichtsbeschluss erlaubt, Unix zu vermarkten. AT&amp;amp;T verkauft sein Unix V und beginnt, sich um einen internationalen Standard von UNIX zu bemühen. &lt;br /&gt;
&lt;br /&gt;
====1984====&lt;br /&gt;
Durch Richard Stallman wird die Free Software Foundation (FSF) gegründet. Diese initiiert ein Projekt namens GNU (GNU ist Not Unix), welches das Ziel verfolgt, ein freies UNIX System zu schaffen. &lt;br /&gt;
&lt;br /&gt;
====1987====&lt;br /&gt;
AT&amp;amp;T verbietet die Verwendung des Unix Quellcodes an den Universitäten. Während dieser Zeit ist Andrew (Andy) Tannenbaum Professor an der Freien Universität von Amsterdam und entwickelt Minix. Minix ist ein kostengünstiges Lehrbetriebssystem und kommt ohne jeglichen AT&amp;amp;T Code aus, obwohl es die gleiche Funktionalität wie Unix 7 bietet. Im Usenet unter comp.os.minix entsteht eine Minix-Gemeinde, die den Minix Kernel und die Anwendungen rundherum programmiert und verbessert.&lt;br /&gt;
&lt;br /&gt;
====1991====&lt;br /&gt;
Linus Torvalds hat als Student für Computerwissenschaften an der Universität in Helsinki Minix installiert und das Buch von Andy Tannenbaum gelesen. Er beginnt im Sinne der FSF einen Unix ähnlichen Kernel zu programmieren mit der Idee, &amp;quot;ein besseres Minix als Minix&amp;quot; zu bauen. 1992 stellt er die Version 0.02 mit dem Namen Linux der Internetgemeinde zur Verfügung. &lt;br /&gt;
&lt;br /&gt;
====1994====&lt;br /&gt;
Die Linux Version 1.0 wird freigegeben. Das Linux Fieber beginnt... &lt;br /&gt;
&lt;br /&gt;
====1998====&lt;br /&gt;
Der Kreis der Linux Entwickler und Anwender ist kräftig angeschwollen. KDE 1.0 wird veröffentlicht. Die Zuwachsraten von Linux übertreffen die von Windows NT deutlich. &lt;br /&gt;
&lt;br /&gt;
====1999====&lt;br /&gt;
Der lange erwartete stabile Linux Kernel Version 2.2 wird freigegeben. Namhafte Firmen wie IBM kündigen ihre Unterstützung für Linux an. &lt;br /&gt;
&lt;br /&gt;
====2001====&lt;br /&gt;
Der lange erwartete stabile Linux Kernel Version 2.4 wird freigegeben. USB Unterstützung und eine neue Firewallimplementierung zeichnen ihn aus.&lt;br /&gt;
&lt;br /&gt;
====2003====&lt;br /&gt;
Linux Kernel Version 2.6 wird freigegeben. Am auffälligsten sind Änderungen bei der Modulverwaltung.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Distributionen===&lt;br /&gt;
{| Border=1 Cellpadding=2&lt;br /&gt;
| &lt;br /&gt;
|Url&lt;br /&gt;
|Paketformat&lt;br /&gt;
|-&lt;br /&gt;
|Red Hat&lt;br /&gt;
|www.redhat.com&lt;br /&gt;
|rpm&lt;br /&gt;
|-&lt;br /&gt;
|fedora&lt;br /&gt;
|fedora.redhat.com&lt;br /&gt;
|rpm&lt;br /&gt;
|-&lt;br /&gt;
|CentOS&lt;br /&gt;
|www.centos.org&lt;br /&gt;
|rpm&lt;br /&gt;
|-&lt;br /&gt;
|Suse/openSUSE&lt;br /&gt;
|www.opensuse.org&lt;br /&gt;
|rpm&lt;br /&gt;
|-&lt;br /&gt;
|Debian&lt;br /&gt;
|www.debian.org&lt;br /&gt;
|deb&lt;br /&gt;
|-&lt;br /&gt;
|Ubuntu&lt;br /&gt;
|www.ubuntu.com&lt;br /&gt;
|deb&lt;br /&gt;
|-&lt;br /&gt;
|Mandrake&lt;br /&gt;
|www.linux-mandrake.com&lt;br /&gt;
|rpm&lt;br /&gt;
|-&lt;br /&gt;
|Easy Linux&lt;br /&gt;
|www.easy-linux.de&lt;br /&gt;
|rpm&lt;br /&gt;
|-&lt;br /&gt;
|Turbo&lt;br /&gt;
|www.turbolinux.com&lt;br /&gt;
|rpm&lt;br /&gt;
|-&lt;br /&gt;
|minis&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|toms&lt;br /&gt;
|www.toms.net/rb&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|damn small linux&lt;br /&gt;
|www.damnsmalllinux.org&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|pocket-linux&lt;br /&gt;
|www.pocket-linux.org&lt;br /&gt;
|&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
====Bücher====&lt;br /&gt;
 Titel : Das Linux Anwenderhandbuch und Leitfaden für die Systemverwaltung&lt;br /&gt;
 Autor : Sebastian Hetze, Dirk Hohndel, Olaf Kirch und Martin Müller&lt;br /&gt;
 Verlag: Lunetix&lt;br /&gt;
 ISBN : 3-929764-06-7&lt;br /&gt;
&lt;br /&gt;
 Titel : Linux in a Nutshell&lt;br /&gt;
 Autor : Jessica Perry Hekman und die Mitarbeiter von O'Reilly &amp;amp; Associates&lt;br /&gt;
 Verlag: O'Reilly&lt;br /&gt;
 ISBN : 3-930673-57-6&lt;br /&gt;
&lt;br /&gt;
 Titel : Linux - Wegweiser zur Installation und Konfiguration&lt;br /&gt;
 Autor : Matt Welsh, Lar Kaufman, Matthias Kalle Dallheimer&lt;br /&gt;
 Verlag: O'Reilly&lt;br /&gt;
 ISBN : 3-930673-58-4 (deutsch), 1-56592-469-X (englisch)&lt;br /&gt;
&lt;br /&gt;
 Titel : Linux - Installation, Konfiguration, Anwendung&lt;br /&gt;
 Autor : Michael KoflerMultitasking&lt;br /&gt;
 Verlag: Addison-Wesley&lt;br /&gt;
 ISBN : 3-8273-1475-5&lt;br /&gt;
&lt;br /&gt;
 Titel : Linux - Wegweiser für Netzwerker&lt;br /&gt;
 Autor : Olaf Kirch&lt;br /&gt;
 Verlag: O'Reilly&lt;br /&gt;
 ISBN : 3-930673-18-5&lt;br /&gt;
&lt;br /&gt;
 Titel : TCP/IP-Netzwerk-Administration&lt;br /&gt;
 Autor : Craig Hunt&lt;br /&gt;
 Verlag: O'Reilly&lt;br /&gt;
 ISBN : 3-89721-110-6&lt;br /&gt;
&lt;br /&gt;
 Titel : Essential System Administration&lt;br /&gt;
 Autor : Eleen Frisch&lt;br /&gt;
 Verlag: O'Reilly&lt;br /&gt;
 ISBN : 1-56592-127-5&lt;br /&gt;
&lt;br /&gt;
==Betriebssystem==&lt;br /&gt;
===Was ist ein Betriebssystem?===&lt;br /&gt;
&lt;br /&gt;
Ein Betriebssystem liegt logisch gesehen zwischenAnwendungsprogramm und Hardware.&lt;br /&gt;
&lt;br /&gt;
Es nimmt die Anforderungen der Anwendungsprogramme entgegen und leitet&lt;br /&gt;
diese kontrolliert an die Hardware weiter. Kein Anwendungsprogramm sollte&lt;br /&gt;
direkt auf die Hardware zugreifen können. Den zentralen Zugang schafft einzig&lt;br /&gt;
das Betriebssystem. Somit kann das Betriebssystem unsinnige Anforderungen&lt;br /&gt;
oder Bedienungsfehler abblocken.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Image:Linux.jpg]]&lt;br /&gt;
&lt;br /&gt;
===Aufgaben eines Betriebssystems===&lt;br /&gt;
&lt;br /&gt;
# Verbergen der Komplexität der Maschine vor dem Anwender (Abstraktion)&lt;br /&gt;
# Bereitstellen einer Benutzerschnittstelle (&amp;quot;Kommandointerpreter&amp;quot;, &amp;quot;Shell&amp;quot;)&lt;br /&gt;
# Bereitstellen einer normierten Programmierschnittstelle (API)&lt;br /&gt;
# Verwaltung der Ressourcen der Maschine::&lt;br /&gt;
Hauptspeicher&lt;br /&gt;
Prozessor(en)&lt;br /&gt;
Hintergrundspeicher (Platte, Band, etc.)&lt;br /&gt;
Geräte (Terminal, Drucker, Plotter, etc.)&lt;br /&gt;
Rechenzeit&lt;br /&gt;
Koordination von Prozessen&lt;br /&gt;
&lt;br /&gt;
===Aufbau eines Betriebssystems===&lt;br /&gt;
&lt;br /&gt;
Ein Rechensystem besteht aus Hardware, Systemprogrammen und Anwendungs-&lt;br /&gt;
programmen. Unter einem Betriebssystem wird meist die Summe aus Betriebs-&lt;br /&gt;
systemkern (Kernel) und den wichtigsten Systemprogrammen verstanden. Ein&lt;br /&gt;
minimaler LINUX-Kernel besitzt ungefähr eine Größe von 400 - 800 kByte.&lt;br /&gt;
Weitere wichtige Systemkomponenten benötigen zusätzlich 10 - 100 Mbyte&lt;br /&gt;
Plattenplatz.&lt;br /&gt;
&lt;br /&gt;
Ein Betriebssystem stellt den Rechner als erweiterte Maschine (virtuelle&lt;br /&gt;
Maschine) über definierte Software-Schnittstellen zur Verfügung.&lt;br /&gt;
Das Betriebssystem dient als Betriebsmittelverwalter, der Anforderungen&lt;br /&gt;
befriedigt, protokolliert, abrechnet und vermittelt.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Aufgaben des Betriebssystemkerns:&lt;br /&gt;
&lt;br /&gt;
{| Border=1 Cellpadding=2&lt;br /&gt;
|Prozessverwaltung  (dispatching and scheduling)&lt;br /&gt;
| Mehrere Benutzer können mit mehreren Aktionen gleichzeitig im System arbeiten, ohne sich gegenseitig zu beeinflussen. Damit dies möglich ist,  müssen die Aktionen organisiert, koordiniert und verwaltet werden. Die zu verwaltende Einheit nennt man Prozess.&lt;br /&gt;
|-&lt;br /&gt;
|Speicherverwaltung   (memory management)&lt;br /&gt;
|Zuteilen von Speicherbereichen an laufende Prozesse, Schutz der Speicherbereiche vor unbefugten Zugriffen, bei Speicherengpässen: Auslagern von ganzen (swapping) oder von Teilen (paging) von Prozessen auf die Platte (swap file).&lt;br /&gt;
|-&lt;br /&gt;
|Dateiverwaltung  (file handling)&lt;br /&gt;
|Zuteilung von Plattenplatz für Programme, Benutzer und Systemdienste, Schreiben, Lesen und Strukturieren der Daten auf den Massenspeichern; Durch Bereitstellung einer entsprechenden Schnittstelle (VFS, virtual file system) kann der Kern Dateisysteme unterschiedlichster Art (EXT2, FAT, NFS, HPFS, NTFS, ...) ansprechen.&lt;br /&gt;
|-&lt;br /&gt;
|Geräteverwaltung  (resource management)&lt;br /&gt;
|Der Kern ermöglicht und kontrolliert den Zugriff auf die Hardware. Er steuert die Ein- und Ausgabetätigkeiten der Anwender. An den Kern&lt;br /&gt;
gebunden sind die entsprechenden Gerätetreiber (device driver), die damit eine Kommunikation zwischen Kern und Hardware ermöglichen.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
===Multitasking===&lt;br /&gt;
&lt;br /&gt;
Multitasking bedeutet, dass ein Rechner aus Anwendersicht mehrere Aufgaben&lt;br /&gt;
(Tasks) gleichzeitg übernehmen kann. Das Betriebssystem (OS) unterteilt die&lt;br /&gt;
gleichzeitig anstehenden Aufgaben in Einzelarbeitsschritte (Prozesse) und&lt;br /&gt;
managed durch ein Zeitscheibenverfahren (scheduling) die gleichmäßige&lt;br /&gt;
Abarbeitung der Prozesse.&lt;br /&gt;
&lt;br /&gt;
Es wird unterschieden zwischen:&lt;br /&gt;
&lt;br /&gt;
*non-präamptiven (kooperativen=die Ressourcen werden vom aktiven Prozess freigegeben, bei einem Hänger steht das ganze System)&lt;br /&gt;
&lt;br /&gt;
und&lt;br /&gt;
&lt;br /&gt;
*präamptiven (reinem=der Betriebssystemkern steuert Taskwechsel, indem nach einer festgelegten Zeit vom gerade aktiven Prozess zum nächsten weitergeschaltet wird)&lt;br /&gt;
&lt;br /&gt;
===Mehrprozessorbetrieb===&lt;br /&gt;
&lt;br /&gt;
Bei mehreren Prozessoren und Unterstützung durch das OS&lt;br /&gt;
(NT,Linux,Unix,Novell) können mehrere Tasks auf diese verteilt werden und&lt;br /&gt;
gleichzeitig bearbeitet werden. Nachteilig ist, dass dies nicht oder kaum von&lt;br /&gt;
Anwendungsprogrammen unterstützt wird und es zu Kommunikationsproblemen&lt;br /&gt;
zwischen den einzelnen Tasks kommen kann.&lt;br /&gt;
&lt;br /&gt;
===Arten von von Betriebssystemen===&lt;br /&gt;
&lt;br /&gt;
{|Border=1 Cellpadding=2&lt;br /&gt;
|&lt;br /&gt;
|SingleUser  &lt;br /&gt;
|Multiuser&lt;br /&gt;
|-&lt;br /&gt;
|Single Tasking&lt;br /&gt;
|MS - DOS&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|Multi Tasking&lt;br /&gt;
|Windows 3.x&lt;br /&gt;
|UNIX&lt;br /&gt;
|-&lt;br /&gt;
|&lt;br /&gt;
|Windows 95/98&lt;br /&gt;
|Linux&lt;br /&gt;
|-&lt;br /&gt;
|&lt;br /&gt;
|Windows NT4 ohne Erweiterungen&lt;br /&gt;
|VMS&lt;br /&gt;
|-&lt;br /&gt;
|&lt;br /&gt;
|OS/2 &lt;br /&gt;
|Windows NT mit  Erweiterungen&lt;br /&gt;
|-&lt;br /&gt;
|&lt;br /&gt;
|Apple&lt;br /&gt;
|Windows 2000, XP, 2003&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
===SHELL===&lt;br /&gt;
&lt;br /&gt;
Wenn man mit Linux arbeiten will, kann man nicht direkt mit dem Betriebssystem&lt;br /&gt;
kommunizieren. Man braucht dazu ein Hilfsprogramm, welches die&lt;br /&gt;
Kommandoeingaben ordnungsgemäß an das Betriebssystem weiterleitet. Dieses&lt;br /&gt;
Hilfsprogramm hat den Namen Shell.&lt;br /&gt;
&lt;br /&gt;
Die Shell schirmt den Betriebssystemkern von den Anwendungsprogrammen ab.&lt;br /&gt;
Die unterschiedlichen Shells erfüllen alle dieselbe Aufgabe, sie unterscheiden sich&lt;br /&gt;
allerdings in ihrer Syntax.&lt;br /&gt;
&lt;br /&gt;
==Die Installation im Überblick==&lt;br /&gt;
&lt;br /&gt;
Die Installation von Linux geschieht in folgenden Schritten:&lt;br /&gt;
&lt;br /&gt;
# Analyse (Welche Hardware habe ich? ,Hab ich weitere Betriebsysteme?)&lt;br /&gt;
# Booten des Linux-Kernels. (von CD oder Diskette)&lt;br /&gt;
# Laden einer RAM-Disk (das macht das Installationsprogramm automatisch).&lt;br /&gt;
# Partitionieren der Festplatte (fdisk).&lt;br /&gt;
# Einrichten der Swappartition (mkswap), Formatieren der Festplatte (mkfs).&lt;br /&gt;
# Montieren der Dateisysteme (mount), Aktivieren der Swapbereiche (swapon).&lt;br /&gt;
# Kopieren und Auspacken der Daten vom Installationsmedium auf die Festplatte (die eigentliche Installation). (rpm, dpkg oder tar).&lt;br /&gt;
# Geeignete Wahl der Bootmethode unter Berücksichtigung von Punkt 1 (grub, lilo).&lt;br /&gt;
# Konfiguration des Systems (Netz, Modem etc...).&lt;br /&gt;
&lt;br /&gt;
==Erste Schritte==&lt;br /&gt;
===Anmelden===&lt;br /&gt;
Sie können sich nun mit dem Usernamen und dem Passwort, das sie bei der Installation angelegt haben anmelden!&lt;br /&gt;
[[Image:benutzer.jpg]]&lt;br /&gt;
&lt;br /&gt;
[[Image:passwd.jpg]]&lt;br /&gt;
&lt;br /&gt;
===Terminal öffnen===&lt;br /&gt;
&lt;br /&gt;
Ein Terminal öffnen Sie über das Startmenü:&lt;br /&gt;
&lt;br /&gt;
[[Image:Terminalde.jpg]]&lt;br /&gt;
&lt;br /&gt;
Das geöffnete Terminal sieht dann folgendermaßen aus:&lt;br /&gt;
&lt;br /&gt;
[[Image:Terminalde2.jpg]]&lt;br /&gt;
&lt;br /&gt;
===Sudo===&lt;br /&gt;
Rootrechte erlangen sie über den &amp;quot;Sudo&amp;quot;-Befehl&lt;br /&gt;
 &lt;br /&gt;
''Den nächsten Befehl als root ausführen''&lt;br /&gt;
 xinux@zero:~$ sudo cat /etc/shadow&lt;br /&gt;
 [sudo] password for xinux:&lt;br /&gt;
&lt;br /&gt;
''Eine komplette Sitzung als root starten''&lt;br /&gt;
 xinux@zero:~$ sudo -i&lt;br /&gt;
 [sudo] password for xinux:&lt;br /&gt;
 root@zero:~#&lt;br /&gt;
&lt;br /&gt;
===Virtuelle Konsolen===&lt;br /&gt;
&lt;br /&gt;
In die Virtuelle Konsole gelangen sie über &amp;quot;STRG+ALT+(F1-F6)&amp;quot;.&lt;br /&gt;
Sie funktioniert wie ein ganz normales Terminal, und mit &amp;quot;ALT+F7&amp;quot;&lt;br /&gt;
gelangen sie wieder zurück auf die grafische Benutzeroberfläche&lt;br /&gt;
&lt;br /&gt;
===Abmelden===&lt;br /&gt;
&lt;br /&gt;
Abmelden können Sie sich wieder über das Startmenu unter:&lt;br /&gt;
&lt;br /&gt;
[[Image:Logout.jpg]]&lt;br /&gt;
&lt;br /&gt;
Fals sie nur einzelne Sitzungen in einem der Terminals oder &lt;br /&gt;
den Virtuellen Konsolen Abmelden wollen benutzen sie dazu den Befehl: &amp;quot;exit&amp;quot;&lt;br /&gt;
&lt;br /&gt;
===Herunterfahren===&lt;br /&gt;
&lt;br /&gt;
Das Herunterfahren funktioniert auf dem selben Weg.&lt;br /&gt;
&lt;br /&gt;
Entweder sie Benutzen wieder das Startmenü und benutzen diesmal den &amp;quot;Ausschalten ...&amp;quot; Knopf,&lt;br /&gt;
&lt;br /&gt;
Oder sie geben den äquivalenten &amp;quot;shutdown&amp;quot;-Befehl in einem Terminal bzw. der virtuellen Konsole ein.&lt;br /&gt;
&lt;br /&gt;
Allerdings müssen sie dazu als Administrator angemeldet sein s. &amp;quot;Sudo&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Wenn Sie den &amp;quot;shutdown&amp;quot;-Befehl benutzen wollen muss hinter den Befehl&lt;br /&gt;
&lt;br /&gt;
eine Zeitangabe in Minuten oder das wort &amp;quot;now&amp;quot; für sofortiges Ausschalten hinzugefügt werden:&lt;br /&gt;
&lt;br /&gt;
 xinux@zero:~$ sudo -i&lt;br /&gt;
 root@zero:~# shutdown 60&lt;br /&gt;
 &lt;br /&gt;
 Broadcast message from xinux@zero &lt;br /&gt;
         (/dev/pts/3) at 14:29 ...&lt;br /&gt;
 &lt;br /&gt;
 The system is going down for maintenance in 60 minutes!&lt;br /&gt;
&lt;br /&gt;
Sollten sie den Befehl widerrufen wollen dann drücken sie &amp;quot;STRG+C&amp;quot;,&lt;br /&gt;
&lt;br /&gt;
in dem Terminal in dem der shutdown Befehl gestartet wurde,&lt;br /&gt;
&lt;br /&gt;
oder geben sie den &amp;quot;shutdown&amp;quot;-Befehl zusammen mit der Abbruchoption &amp;quot;-c&amp;quot; in einem anderen Terminal ein:&lt;br /&gt;
&lt;br /&gt;
 root@zero:~# shutdown -c&lt;br /&gt;
&lt;br /&gt;
 shutdown: Shutdown cancelled&lt;br /&gt;
 root@zero:~# &lt;br /&gt;
&lt;br /&gt;
Wenn Sie den Rechner Neustarten möchten gibt es dazu die Option &amp;quot;-r&amp;quot; für den &amp;quot;shutdown&amp;quot;-Befehl&lt;br /&gt;
&lt;br /&gt;
oder den &amp;quot;reboot&amp;quot;-Befehl die beide auch als root ausgeführt werden müssen:&lt;br /&gt;
&lt;br /&gt;
 xinux@zero:~$ sudo -i&lt;br /&gt;
 [sudo] password for xinux: &lt;br /&gt;
 root@zero:~# shutdown -r now&lt;br /&gt;
&lt;br /&gt;
 root@zero:~# reboot&lt;br /&gt;
&lt;br /&gt;
===&amp;quot;man&amp;quot;===&lt;br /&gt;
&lt;br /&gt;
Programm zum Einsehen der Online-Manuals&lt;br /&gt;
&lt;br /&gt;
Die Manuals sind in folgende Sektionen unterteilt:&lt;br /&gt;
# Ausführbare Programme oder Shellbefehle&lt;br /&gt;
# Systemaufrufe (Kernelfunktionen)&lt;br /&gt;
# Bibliotheksaufrufe (Funktionen in System-Bibliotheken)&lt;br /&gt;
# Spezielle Dateien (gewöhnlich in /dev)&lt;br /&gt;
# Dateiformate und Konventionen, z. B. /etc/passwd&lt;br /&gt;
# Spiele&lt;br /&gt;
# Makropakete und Konventionen, z. B. man(7), groff(7)&lt;br /&gt;
# Systemadministrationsbefehle (in der Regel nur für root)&lt;br /&gt;
# Kernelroutinen [Nicht Standard]&lt;br /&gt;
&lt;br /&gt;
Aufruf eines Manuals erfolgt durch ''man kommando''&lt;br /&gt;
Beendet wird durch Drücken des Buchstabens q&lt;br /&gt;
Gesucht wird vorwärts durch Eingabe eines /suchausdruck&lt;br /&gt;
Gesucht wird rückwärts durch Eingabe eines ?suchausdruck&lt;br /&gt;
&lt;br /&gt;
Beispiele:&lt;br /&gt;
&lt;br /&gt;
      man passwd        Anschauen der Manualseite zum Programm passwd&lt;br /&gt;
      man 5 passwd      Anschauen der Manualseite zur Datei /etc/passwd&lt;br /&gt;
      man -a passwd     Anschauen aller Manualseiten zu passwd&lt;br /&gt;
      man -k passwd     Durchsucht die Kurzbeschreibungen der Manualseite&lt;br /&gt;
                        nach passwd und gibt alle Treffer aus&lt;br /&gt;
      man -f passwd      Gibt alle gefunden Kurzbescheibungen zu passwd aus&lt;br /&gt;
      man -L en passwd Gibt englische Manualseiten aus&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Was geht vor auf meinem System? (date,who)===&lt;br /&gt;
&lt;br /&gt;
Das Kommando date dient zur Abfrage von Datum und Uhrzeit.&lt;br /&gt;
&lt;br /&gt;
 xinux@zero:~ &amp;gt; date&lt;br /&gt;
 Fre Mär 16 16:35:03 CET 2001&lt;br /&gt;
&lt;br /&gt;
oder auch Anzeige der Grennwich Zeit:&lt;br /&gt;
&lt;br /&gt;
 xinux@zero:~ &amp;gt; date -u&lt;br /&gt;
 Fre Mär 16 15:35:34 UTC 2001&lt;br /&gt;
&lt;br /&gt;
 xinux@zero:~ &amp;gt; date -u &amp;quot;+%X&amp;quot;&lt;br /&gt;
 15:37:19&lt;br /&gt;
&lt;br /&gt;
 xinux@zero:~ &amp;gt; date -u &amp;quot;+%x&amp;quot;&lt;br /&gt;
 01/15/02&lt;br /&gt;
&lt;br /&gt;
who zeigt alle angemeldeten Benutzer an&lt;br /&gt;
&lt;br /&gt;
 thomas@cardassia:~ &amp;gt; who&lt;br /&gt;
 thomas             tty1 Feb 27 16:39&lt;br /&gt;
 thomas             tty2 Mar 2 17:08&lt;br /&gt;
 tina               tty6 Mar 16 16:38&lt;br /&gt;
&lt;br /&gt;
Mit `who --help' bekommen Sie mehr Informationen.&lt;br /&gt;
&lt;br /&gt;
 thomas@cardassia:~ &amp;gt; who --help&lt;br /&gt;
&lt;br /&gt;
Benutzung: who [OPTION]... [ DATEI | ARG1 ARG2 ]&lt;br /&gt;
&lt;br /&gt;
 -H, --heading             print line of column headings&lt;br /&gt;
 -i, -u, --idle            add user idle time as HOURS:MINUTES, . or old&lt;br /&gt;
 -l, --lookup              attempt to canonicalize hostnames via DNS&lt;br /&gt;
 -m                        only hostname and user associated with stdin&lt;br /&gt;
 -q, --count               all login names and number of users logged on&lt;br /&gt;
 -s                        (ignored)&lt;br /&gt;
 -T, -w, --mesg            add user's message status as +, - or ?&lt;br /&gt;
     --message             same as -T&lt;br /&gt;
     --writable            same as -T&lt;br /&gt;
     --help                display this help and exit&lt;br /&gt;
     --version             output version information and exit&lt;br /&gt;
&lt;br /&gt;
==Das UNIX-Dateisystem==&lt;br /&gt;
===Verzeichnisbaum===&lt;br /&gt;
&lt;br /&gt;
[[Image:vztree.jpg]]&lt;br /&gt;
&lt;br /&gt;
Das Betriebssystem UNIX besitzt ein hierarchisches Dateisystem. Es besteht aus:&lt;br /&gt;
* Dateien (Files)&lt;br /&gt;
Dateien speichern Informationen (Text, Bilder, Sound, Videos, Programme) und&lt;br /&gt;
werden über den Dateinamen angesprochen.&lt;br /&gt;
&lt;br /&gt;
* Verzeichnissen (Directories, Kataloge)&lt;br /&gt;
Verzeichnisse besitzen ebenfalls einen Namen und dienen zur Ordnung des&lt;br /&gt;
Dateisystems. Ein Verzeichnis kann Dateien und Unterverzeichnisse&lt;br /&gt;
(Subdirectories) enthalten. Das oberste Verzeichnis im Dateisystem heisst&lt;br /&gt;
Rootverzeichnis oder kurz Root und wird durch / (sprich: slash)&lt;br /&gt;
gekennzeichnet.&lt;br /&gt;
&lt;br /&gt;
Im Gegensatz zu Windows kennt UNIX keine Laufwerke.&lt;br /&gt;
Das obige Bild zeigt ein typisches UNIX-Dateisystem.&lt;br /&gt;
Unterhalb des Rootverzeichnisses befinden sich eine Vielzahl vonVerzeichnissen.&lt;br /&gt;
&lt;br /&gt;
===Wichtige Verzeichnisse===&lt;br /&gt;
&lt;br /&gt;
• '''Homeverzeichnis'''&lt;br /&gt;
&lt;br /&gt;
das Verzeichnis, in dem man sich unmittelbar nach dem Anmelden befindet. Das&lt;br /&gt;
Homeverzeichnis wird vom Systemverwalter eingerichtet; jeder Anwender&lt;br /&gt;
besitzt ein festes Homeverzeichnis. z.B. /home/hans&lt;br /&gt;
&lt;br /&gt;
~ (Tilde) bzw. $HOME (Shellvariable) kennzeichnen das Homeverzeichnis.&lt;br /&gt;
&lt;br /&gt;
• '''Aktuelles Verzeichnis'''&lt;br /&gt;
&lt;br /&gt;
Verzeichnis, in dem man sich aktuell befindet.&lt;br /&gt;
Das aktuelle Verzeichnis wird mit dem Befehl cd (change directory) oder per&lt;br /&gt;
Mausklick verändert.&lt;br /&gt;
Ein einfacher Punkt . kennzeichnet das aktuelle Verzeichnis.&lt;br /&gt;
&lt;br /&gt;
• '''Elternverzeichnis'''&lt;br /&gt;
&lt;br /&gt;
Verzeichnis unmittelbar oberhalb des aktuellen Verzeichnisses.&lt;br /&gt;
Jedes Verzeichnis ausser / besitzt genau ein Elternverzeichnis.&lt;br /&gt;
Zwei Punkte .. kennzeichnen das Elternverzeichnis (abhängig vom aktuellen&lt;br /&gt;
VZ).&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Absoluter Pfadname:===&lt;br /&gt;
&lt;br /&gt;
Beschreibt ausgehend vom Rootverzeichnis den Weg zum Zielverzeichnis oder zur&lt;br /&gt;
Zieldatei. (Welche Verzeichnisse müssen ausgehend von / durchlaufen werden, um&lt;br /&gt;
zum Ziel zu kommen?) Ein absoluter Pfadname beginnt immer mit / .&lt;br /&gt;
&lt;br /&gt;
===Relativer Pfadname:===&lt;br /&gt;
&lt;br /&gt;
Beschreibt ausgehend vom aktuellen Verzeichnis den Weg zum Zielverzeichnis&lt;br /&gt;
oder zur Zieldatei; ein relativer Pfadname beginnt nicht mit / .&lt;br /&gt;
/home/suxer&lt;br /&gt;
absoluter Pfadname für das Verzeichnis sub1 im Homeverzeichnis von suxer&lt;br /&gt;
&lt;br /&gt;
===Verzeichnisstruktur===&lt;br /&gt;
&lt;br /&gt;
 /bin         Kommandos die beim starten benötigt werden (Zugriff hat jeder)&lt;br /&gt;
 /sbin        Wichtige System-Programme (In der Regel root vorberhalten)&lt;br /&gt;
 /boot        Hier findet man die Dateien des Bootmanagers und des Kernel.&lt;br /&gt;
 /dev         In diesem Verzeichnis stehen die Gerätedateien (Devices),&lt;br /&gt;
 /home        Alle Heimatverzeichnisse der Nutzer findet man hier.&lt;br /&gt;
 /lib         Beim Systemstart benötigten Bibliotheken und Modules stehen hier.&lt;br /&gt;
 /mnt         Mountpunkt für temporäre Partitionen&lt;br /&gt;
 /opt         Software, die nicht Installationsumfang von Linux gehören.&lt;br /&gt;
 /root        Heimatverzeichnis des Administrators.&lt;br /&gt;
 /tmp         Temporäre Dateien können hier abgelegt werden&lt;br /&gt;
 /usr         statische Dateien (kann read-only gemountet sein)&lt;br /&gt;
 /var         variable Dateien (muss beschreibar sein )&lt;br /&gt;
 /etc         Konfiguartionsdateien und Startscripte&lt;br /&gt;
 /proc        Virtuelles Dateisystem -&amp;gt; repräsentiert den Kernel&lt;br /&gt;
&lt;br /&gt;
===Unterverzeichnisse von /usr===&lt;br /&gt;
&lt;br /&gt;
 sbin         Programme für root die beim Start nicht benötigt werden&lt;br /&gt;
 bin          Programme für alle die beim Start nicht benötigt werden&lt;br /&gt;
 X11R6        Dateien des X-Window-Sytems&lt;br /&gt;
 bin          Ausführbare Programme&lt;br /&gt;
 doc          Dokumentationen&lt;br /&gt;
 etc          Konfigurationsdateien&lt;br /&gt;
 games        Spiele&lt;br /&gt;
 include      Headerdateien für C-Programme&lt;br /&gt;
 local        Pakete die nicht zur Distribution gehören ähnlich /opt&lt;br /&gt;
 share        Pakete die von mehreren Paketen genutzt werden&lt;br /&gt;
 share/man    Die Manualpages&lt;br /&gt;
 share/info   Seiten des Infosystems&lt;br /&gt;
 share/doc    Dokumentationen&lt;br /&gt;
 src          Sources von Programmen (Kernel und andere)&lt;br /&gt;
&lt;br /&gt;
===Unterverzeichnisse von /var===&lt;br /&gt;
&lt;br /&gt;
 cache        Zwischenspreicher für Progammes&lt;br /&gt;
 games        Variable Daten der Games (Scores etc...)&lt;br /&gt;
 lock         Sperrdateien&lt;br /&gt;
 log          Die Logdateien (wichtiges Verzeichnis für Admins)&lt;br /&gt;
 mail         Das Mailsystem&lt;br /&gt;
 run          Dateien zu laufemdem Prozessen&lt;br /&gt;
 spool        Spooldateien (z.B. für das Drucksystem&lt;br /&gt;
 state        Statusinfos&lt;br /&gt;
 tmp          Wie /tmp eventuell nicht auf root Partion&lt;br /&gt;
&lt;br /&gt;
==Einfache Komandos==&lt;br /&gt;
===cd: Wechseln des Arbeitsverzeichnis===&lt;br /&gt;
&lt;br /&gt;
Um festzustellen in welchem Verzeichnis man sich befindet, sollte man den&lt;br /&gt;
Befehl &amp;quot;pwd&amp;quot; benutzen,&lt;br /&gt;
&lt;br /&gt;
und mit dem Befehl &amp;quot;cd&amp;quot; kann man zwischen den Verzeichnissen wechseln:&lt;br /&gt;
&lt;br /&gt;
Wechsele ins homeverzeichnis von Xinux&lt;br /&gt;
&lt;br /&gt;
 xinux@zero:~$ cd /home/xinux/&lt;br /&gt;
 xinux@zero:~$ pwd&lt;br /&gt;
 /home/xinux&lt;br /&gt;
&lt;br /&gt;
cd ~ -&amp;gt; wechsele ins jeweilige Homeverzeichnis&lt;br /&gt;
&lt;br /&gt;
cd .. -&amp;gt; wechsele ein Verzeichnis höher&lt;br /&gt;
&lt;br /&gt;
cd ../verzeichnis -&amp;gt; wechsele in eine paralleles Verzeichnis &amp;lt;- (ist eine relative Pfadangabe !)&lt;br /&gt;
&lt;br /&gt;
cd - -&amp;gt; wechsele in das Verzeichnis, in dem vorher gearbeitet wurde.&lt;br /&gt;
&lt;br /&gt;
Mit cd / wechselt man in das Wurzelverzeichnis.&lt;br /&gt;
&lt;br /&gt;
 xinux@zero:/var/log$ cd /&lt;br /&gt;
 xinux@zero:/$ pwd&lt;br /&gt;
 /&lt;br /&gt;
&lt;br /&gt;
===ls: Listing===&lt;br /&gt;
&lt;br /&gt;
Den Inhalt von Verzeichnissen kann man sich mit dem Befehl &amp;quot;ls&amp;quot; anzeigen lassen&lt;br /&gt;
wobei &amp;quot;ls&amp;quot; eine Vielzahl von Optionen besitzt:&lt;br /&gt;
&lt;br /&gt;
 ls                                  standard&lt;br /&gt;
 ls -l                               langes listing&lt;br /&gt;
 ls -a                               alle Dateien&lt;br /&gt;
 ls -i                               mit Inode&lt;br /&gt;
 ls -h                               gut lesbare Dateigröße&lt;br /&gt;
 ls -d                               Verzechnis wird angezeigt, nicht der Inhalt&lt;br /&gt;
 ls -L                               sortiert nach Größe&lt;br /&gt;
 ls -t                               sortiert nach Datum&lt;br /&gt;
 ls -F                               mit nützlichem Anhang&lt;br /&gt;
&lt;br /&gt;
 xinux@zero:/$ ls -l /var/log/messages&lt;br /&gt;
 -rw-r----- 1 syslog adm 2296 2009-06-16 10:05 /var/log/messages&lt;br /&gt;
&lt;br /&gt;
===more: Seitenweises Anzeigen von Seiten===&lt;br /&gt;
 root@zero:~# more /var/log/messages&lt;br /&gt;
 ...&lt;br /&gt;
&lt;br /&gt;
===head: erste Zeilen anzeigen===&lt;br /&gt;
Erste 10 Zeilen anzeigen&lt;br /&gt;
 root@zero:~# head /var/log/messages&lt;br /&gt;
 Jun 15 12:37:08 zero syslogd 1.5.0#5ubuntu3: restart.&lt;br /&gt;
 Jun 15 12:38:43 zero kernel: [  830.065036] mtrr: your processor doesn't support write-combining&lt;br /&gt;
 Jun 15 12:46:05 zero pulseaudio[4817]: pid.c: Stale PID file, overwriting.&lt;br /&gt;
 Jun 15 13:05:24 zero -- MARK --&lt;br /&gt;
 ...&lt;br /&gt;
&lt;br /&gt;
Erste zwei Zeilen anzeigen&lt;br /&gt;
 root@zero:~# head -n 2 /var/log/messages&lt;br /&gt;
 Jun 15 12:37:08 zero syslogd 1.5.0#5ubuntu3: restart.&lt;br /&gt;
 Jun 15 12:38:43 zero kernel: [  830.065036] mtrr: your processor doesn't support write-combining&lt;br /&gt;
&lt;br /&gt;
===tail: letzte Zeilen anzeigen===&lt;br /&gt;
 &lt;br /&gt;
 root@zero:~# tail /var/log/syslog&lt;br /&gt;
 ...&lt;br /&gt;
 Jun 19 11:19:35 zero -- MARK --&lt;br /&gt;
 Jun 19 11:39:35 zero -- MARK --&lt;br /&gt;
 Jun 19 11:59:36 zero -- MARK --&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Letze 5 Zeilen anzeigen&lt;br /&gt;
 root@zero:~# tail -n 5 /var/log/auth.log&lt;br /&gt;
 Jun 18 14:30:01 zero CRON[12040]: pam_unix(cron:session): session closed for user root&lt;br /&gt;
 Jun 18 14:39:01 zero CRON[12191]: pam_unix(cron:session): session opened for user root by (uid=0)&lt;br /&gt;
 Jun 18 14:39:01 zero CRON[12191]: pam_unix(cron:session): session closed for user root&lt;br /&gt;
 Jun 18 14:40:01 zero CRON[12237]: pam_unix(cron:session): session opened for user root by (uid=0)&lt;br /&gt;
 Jun 18 14:40:01 zero CRON[12237]: pam_unix(cron:session): session closed for user root&lt;br /&gt;
&lt;br /&gt;
Letze Zeilen anzeigen und fortlaufend aktualisieren&lt;br /&gt;
 root@zero:~# tail -f /var/log/syslog&lt;br /&gt;
 ...&lt;br /&gt;
&lt;br /&gt;
===mkdir: Ein neues Verzeichnis erstellen===&lt;br /&gt;
&lt;br /&gt;
 mkdir        verzeichnis&lt;br /&gt;
Erstellt ein Verzeichnis im working directory (wd)&lt;br /&gt;
&lt;br /&gt;
 mkdir  -p    ver1/ver2&lt;br /&gt;
Erstellt ein Verzeichnis ver2 unterhalb von ver1&lt;br /&gt;
wenn ver1 nicht existiert wird es erstellt&lt;br /&gt;
&lt;br /&gt;
 mkdir -m 753 ver1&lt;br /&gt;
Es wird das Verzeichnis ver1 erstellt mit der mask 753&lt;br /&gt;
&lt;br /&gt;
 mkdir -v     ver1&lt;br /&gt;
Geschwätzige Ausgabe :)&lt;br /&gt;
&lt;br /&gt;
===Zum Löschen von leeren Verzeichnissen wird rmdir benutzt===&lt;br /&gt;
&lt;br /&gt;
 rmdir           ver1&lt;br /&gt;
Löscht das leere Verzeichnis ver1&lt;br /&gt;
&lt;br /&gt;
 rmdir -v        ver1&lt;br /&gt;
Löscht das leere Verzeichnis ver1 und ist geschwätzig&lt;br /&gt;
&lt;br /&gt;
 rmdir -p        /ver1/ver2/ver3&lt;br /&gt;
Löscht das Verzeichnis ver3; wenn dadurch ver2 ein leeres&lt;br /&gt;
Verzeichnis wird, wird dieses auch gelöscht , wenn ver1&lt;br /&gt;
dadurch ein leeres Verzeichnis wird, wird auch dieses gelöscht.&lt;br /&gt;
&lt;br /&gt;
===touch Verändern des Zeitstempels===&lt;br /&gt;
&lt;br /&gt;
Mit touch können wir eine neue leere Datei erzeugen (das ist nicht der eigentliche&lt;br /&gt;
Zweck von touch, eigentlich wird der Zeitstempel geändert)&lt;br /&gt;
&lt;br /&gt;
 touch            dateiname&lt;br /&gt;
&lt;br /&gt;
===Kopieren=== &lt;br /&gt;
cp ist das Kommando um Dateien zu kopieren &lt;br /&gt;
&lt;br /&gt;
Eine Kopie von dat1 mit dem Namen dat2 erstellen:&lt;br /&gt;
&lt;br /&gt;
 xinux@zero:~$ cp dat1 dat2&lt;br /&gt;
&lt;br /&gt;
Eine Kopie von dat1 ins Verzeichnis ver2 erstellen:&lt;br /&gt;
&lt;br /&gt;
 xinux@zero:~$ cp dat1 ver2/&lt;br /&gt;
 &lt;br /&gt;
Eine Kopie erstellen mit ausführlicher Anzeige:&lt;br /&gt;
&lt;br /&gt;
 xinux@zero:~$ cp -v dat1 dat2&lt;br /&gt;
 `dat1' -&amp;gt; `dat2'&lt;br /&gt;
&lt;br /&gt;
Eine Kopie erstellen mit Rückfrage fals etwas überschrieben wird:&lt;br /&gt;
&lt;br /&gt;
 xinux@zero:~$ cp -i dat1 dat2&lt;br /&gt;
 cp: overwrite `dat2'?&lt;br /&gt;
&lt;br /&gt;
Eine Kopie erstellen und die Rückfrage überbrücken:&lt;br /&gt;
&lt;br /&gt;
 xinux@zero:~$ cp -f dat1 dat2&lt;br /&gt;
&lt;br /&gt;
Eine Kopie von dat1 ins Verzeichnis ver2 erstellen fals keine neuere Version von dat1 vorliegt:&lt;br /&gt;
&lt;br /&gt;
 xinux@zero:~$ cp -u dat1 ver2/&lt;br /&gt;
&lt;br /&gt;
Eine Kopie erstellen fals ver2 auf dem selben Dateisystem wie dat1 liegt:&lt;br /&gt;
&lt;br /&gt;
 xinux@zero:~$ cp -x dat1 ver2/&lt;br /&gt;
&lt;br /&gt;
Eine Kopie von ver1, die als ver2 oder unter ver2 als ver1 gespeichert wird erstellen:&lt;br /&gt;
&lt;br /&gt;
 xinux@zero:~$ cp -r ver1/ ver2/&lt;br /&gt;
&lt;br /&gt;
Eine Kopie von einer Datei erstellen und ihre Attribute beibehalten:&lt;br /&gt;
&lt;br /&gt;
 xinux@zero:~$ cp -p sux1 sux2&lt;br /&gt;
&lt;br /&gt;
Eine Kopie erstellen bei der die Links erhalten bleiben:&lt;br /&gt;
&lt;br /&gt;
 xinux@zero:~$ cp -r ver1/ ver2/&lt;br /&gt;
&lt;br /&gt;
Eine Kopie erstellen zum Archivieren (-dpr):&lt;br /&gt;
&lt;br /&gt;
 xinux@zero:~$ cp -a ver1/ ver2/&lt;br /&gt;
&lt;br /&gt;
===rm: Löschen einer Datei===&lt;br /&gt;
&lt;br /&gt;
Um Dateien zu löschen, brauchen wir das Kommando &amp;quot;rm&amp;quot;:&lt;br /&gt;
&lt;br /&gt;
 rm               dat1        dat1 wird gelöscht&lt;br /&gt;
 rm         -i    dat1        dat1 wird nach Bestätigung gelöscht&lt;br /&gt;
 rm         -f    dat1        dat1 wird ohne Rückfragen gelöscht&lt;br /&gt;
 rm         -v    dat1        dat1 wird glöscht (geschwätzige Ausgabe)&lt;br /&gt;
 rm         -r    ver1        Löschen von nicht leeren Verzeichnissen&lt;br /&gt;
                              Achtung !!! Als root kann man sich damit Teile&lt;br /&gt;
                              oder sogar den gesamten Verzeichnisbaum&lt;br /&gt;
                              absägen !!!&lt;br /&gt;
&lt;br /&gt;
===mv: Verschieben===&lt;br /&gt;
&lt;br /&gt;
Mit dem Befehl &amp;quot;mv&amp;quot; werden Daten verschoben, folgendes gilt:&lt;br /&gt;
&lt;br /&gt;
 mv          dat1 dat2         &lt;br /&gt;
Die Datei dat1 wird in dat2 umbenannt&lt;br /&gt;
 mv          dat1 /ver1        &lt;br /&gt;
Die Datei dat1 wird nach /ver1 verschoben&lt;br /&gt;
&lt;br /&gt;
Die Parameter und ihre Bedeutung:&lt;br /&gt;
&lt;br /&gt;
      -i                      wenn eine Datei exisitiert wird vor dem&lt;br /&gt;
                              Überschreiben nachgefragt&lt;br /&gt;
      -v                      verbose (geschwätzig)&lt;br /&gt;
      -u                      nur neuere Daten werden bei Bedarf überschrieben&lt;br /&gt;
      -b                      wenn überschrieben werden soll, wird ein Backup&lt;br /&gt;
                              erstellt&lt;br /&gt;
      -S ENDUNG               das Backup bekommt die Endung ENDUNG&lt;br /&gt;
&lt;br /&gt;
===su Benutzer wechseln===&lt;br /&gt;
&lt;br /&gt;
 su -             &lt;br /&gt;
Wechsel zum Rootaccount, wie wenn dieser sich neu anmelden würde. (Bsp: su -)&lt;br /&gt;
&lt;br /&gt;
 su Benutzernamen &lt;br /&gt;
Wechsel der Identität zu Benutzer (gegebenenfalls Passwortabfrage)&lt;br /&gt;
&lt;br /&gt;
 su -c Kommando   &lt;br /&gt;
Kommando wird als rootaccount ausgeführt&lt;br /&gt;
&lt;br /&gt;
==Der Standard Editor vi==&lt;br /&gt;
Der vi ist der Standardeditor in der Unixwelt. Er ist in jedem Unix-Derivat&lt;br /&gt;
enthalten.&lt;br /&gt;
Der Editor hat zwar den schlechten Ruf umständlich zu bedienen zu sein, ist&lt;br /&gt;
jedoch sehr leistungsfähig und systemübergreifend verfügbar. Beim vi handelt es&lt;br /&gt;
sich um einen rein textorientierten Editor, der mittels eigener Kommandos&lt;br /&gt;
gesteuert wird.&lt;br /&gt;
&lt;br /&gt;
Der Editor VIM ist eine weitere Verbesserung von VI und leichter zu bedienen.&lt;br /&gt;
Und unter Ubuntu/Debian mit &amp;quot;apt-get install vim&amp;quot; zu installieren.&lt;br /&gt;
&lt;br /&gt;
===Starten des Editors:===&lt;br /&gt;
&lt;br /&gt;
Der Editorstart erfolgt einfach durch die Eingabe des Kommandos vi mit dem&lt;br /&gt;
Dateinamen der zu editierenden Datei als Parameter.&lt;br /&gt;
Beispiel:        &lt;br /&gt;
 vi sux.txt&lt;br /&gt;
&lt;br /&gt;
===Die Betriebsmodi des vi:===&lt;br /&gt;
&lt;br /&gt;
Ein Umstand, der dem vi den Ruf der komplizierten Bedienbarkeit zugetragen hat,&lt;br /&gt;
sind die unterschiedlichen Betriebsmodi des Editors. Genauer gesagt verfügt der&lt;br /&gt;
vi über drei Betriebsmodi:&lt;br /&gt;
&lt;br /&gt;
====Kommandomodus:====&lt;br /&gt;
&lt;br /&gt;
Innerhalb dieses Modus werden die eingegebenen Zeichen direkt als Befehle des&lt;br /&gt;
Editors interpretiert und ausgeführt. Dabei gibt es weder ein Bereitschaftszeichen&lt;br /&gt;
(Prompt) noch ein Echo (Ausgabe). Der Kommandomodus ist der Modus, in dem&lt;br /&gt;
sich der vi direkt nach seinem Start befindet.&lt;br /&gt;
&lt;br /&gt;
====Zeilenmodus oder Exmodus:====&lt;br /&gt;
&lt;br /&gt;
Dieser Modus ist der einzige Modus mit einem eigenen Bereitschaftszeichen,&lt;br /&gt;
nämlich dem Doppelpunkt (:). Das Prompt wird ebenso wie die Befehlsausgaben&lt;br /&gt;
in der Statuszeile angezeigt.&lt;br /&gt;
&lt;br /&gt;
====Eingabemodus:====&lt;br /&gt;
&lt;br /&gt;
Der Eingabemodus ist derjenige, in welchem der zu bearbeitende Text bearbeitet&lt;br /&gt;
werden kann. Alle hier eingegebenen Zeichen werden als Text für die aktuelle&lt;br /&gt;
Datei interpretiert. Zwischen den unterschiedlichen Modi kann jederzeit&lt;br /&gt;
gewechselt werden. Von Kommandomodus gelangen Sie durch mehere Wege in&lt;br /&gt;
den Eingabemodus. Man kann durch folgende Aktionen wechslen&lt;br /&gt;
&lt;br /&gt;
{| border=1 cellpadding=2&lt;br /&gt;
|i&lt;br /&gt;
|Text vor der aktuellen Cursorposition einfügen&lt;br /&gt;
|-&lt;br /&gt;
|I&lt;br /&gt;
|Text am Zeilenanfang einfügen&lt;br /&gt;
|-&lt;br /&gt;
|a&lt;br /&gt;
|Text hinter der aktuellen Cursorposition einfügen&lt;br /&gt;
|-&lt;br /&gt;
|A&lt;br /&gt;
|Text am Zeilenende einfügen&lt;br /&gt;
|-&lt;br /&gt;
|o&lt;br /&gt;
|Unterhalb der aktuellen Zeile eine neue Zeile einfügen&lt;br /&gt;
|-&lt;br /&gt;
|O&lt;br /&gt;
|Oberhalb der aktuellen Zeile eine neue Zeile einfügen&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Durch das Drücken der ESC - Taste gelangt man in den Kommandomodus zurück.&lt;br /&gt;
&lt;br /&gt;
Im Kommandomodus können Sie durch den Text navigieren und auch den Text&lt;br /&gt;
selbst bearbeiten, z.B ausschneiden, kopieren usw. Dazu sind einige Kommandos&lt;br /&gt;
nötig, von denen die wichtigsten im Folgenden erläutert werden:&lt;br /&gt;
&lt;br /&gt;
 xinux@zero:/$ vi iwas.txt&lt;br /&gt;
&lt;br /&gt;
[[Image:vim.jpg]]&lt;br /&gt;
&lt;br /&gt;
===Benutzen des Kommandomodus===&lt;br /&gt;
====Steuerung des Cursors durch den Text====&lt;br /&gt;
&lt;br /&gt;
Mittels folgender Kommandos bewegt sich der Cursor durch den Text:&lt;br /&gt;
&lt;br /&gt;
{| border=1 cellpadding=2&lt;br /&gt;
|h&lt;br /&gt;
|Cursor ein Zeichen nach links&lt;br /&gt;
|-&lt;br /&gt;
|l&lt;br /&gt;
|Cursor ein Zeichen nach rechts&lt;br /&gt;
|-&lt;br /&gt;
|k&lt;br /&gt;
|Cursor eine Zeile nach oben&lt;br /&gt;
|-&lt;br /&gt;
|j&lt;br /&gt;
|Cursor eine Zeile nach unten&lt;br /&gt;
|-&lt;br /&gt;
|w&lt;br /&gt;
|Cursor ein Wort nach rechts&lt;br /&gt;
|-&lt;br /&gt;
|b&lt;br /&gt;
|Cursor ein Wort nach links&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Alle diese Kommandos können mit einem vorgestellten Wiederholungsfaktor&lt;br /&gt;
arbeiten. Der Befehl 3w verschiebt demnach den Cursor um 3 Wörter nach rechts.&lt;br /&gt;
&lt;br /&gt;
====Angaben zur Positionierung====&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{| border=1 cellpadding=2&lt;br /&gt;
|STRG+U&lt;br /&gt;
|1⁄2 Bildschirmseite nach oben&lt;br /&gt;
|-&lt;br /&gt;
|STRG+D&lt;br /&gt;
|1⁄2 Bildschirmseite nach unten&lt;br /&gt;
|-&lt;br /&gt;
|STRG+B&lt;br /&gt;
|1 Bildschirmseite nach oben&lt;br /&gt;
|-&lt;br /&gt;
|STRG+F&lt;br /&gt;
|1 Bildschirmseite nach unten&lt;br /&gt;
|-&lt;br /&gt;
|/Ausdruck&lt;br /&gt;
|Sucht den Ausdruck (vorwärts) Weitersuchen mit n , N&lt;br /&gt;
|-&lt;br /&gt;
|?Ausdruck&lt;br /&gt;
|Sucht den Ausdurck (rückwärts) Weitersuchen mit n , N&lt;br /&gt;
|-&lt;br /&gt;
|0&lt;br /&gt;
|Zeilenanfang&lt;br /&gt;
|-&lt;br /&gt;
|$&lt;br /&gt;
|Zeilenende&lt;br /&gt;
|-&lt;br /&gt;
|w&lt;br /&gt;
|Nächstes Wort&lt;br /&gt;
|-&lt;br /&gt;
|b&lt;br /&gt;
|Vorheriges Wort&lt;br /&gt;
|-&lt;br /&gt;
|fc&lt;br /&gt;
|Auf das Zeichen c springen. c steht für ein beliebiges Zeichen&lt;br /&gt;
|-&lt;br /&gt;
|G&lt;br /&gt;
|Letzte Zeile der Datei&lt;br /&gt;
|-&lt;br /&gt;
|ng&lt;br /&gt;
|n-te Zeile der Datei&lt;br /&gt;
|-&lt;br /&gt;
|H&lt;br /&gt;
|Anfang der Bildschirmseite&lt;br /&gt;
|-&lt;br /&gt;
|L&lt;br /&gt;
|Ende der Bildschirmseite&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
====Befehle zur Textbearbeitung -&amp;gt; Was soll geschehen====&lt;br /&gt;
&lt;br /&gt;
{| Border=1 Cellpadding=2&lt;br /&gt;
|x&lt;br /&gt;
|Löscht Zeichen&lt;br /&gt;
|-&lt;br /&gt;
|d&lt;br /&gt;
|Löschen und in den Puffer laden&lt;br /&gt;
|-&lt;br /&gt;
|c&lt;br /&gt;
|Ändern&lt;br /&gt;
|-&lt;br /&gt;
|y&lt;br /&gt;
|In den Puffer laden&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
====Weitere wichtige Befehle:====&lt;br /&gt;
&lt;br /&gt;
{| Border=1 Cellpadding=2&lt;br /&gt;
|p&lt;br /&gt;
|Aus dem Puffer einfügen&lt;br /&gt;
|-&lt;br /&gt;
|u&lt;br /&gt;
|Undo, macht den letzten Befehl rückgängig&lt;br /&gt;
|-&lt;br /&gt;
|STRG+R&lt;br /&gt;
|Redo, macht den letzten Undo rückgängig&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
===Zeilen- oder Exmodus===&lt;br /&gt;
&lt;br /&gt;
Wie schon erwähnt wird der Zeilen oder Exmodus durch einen : eingeleitet.&lt;br /&gt;
Es folgen einige Beispiele.&lt;br /&gt;
&lt;br /&gt;
Befehle zum Speichern und Beenden:&lt;br /&gt;
&lt;br /&gt;
 :w          Schreibt Datei&lt;br /&gt;
 :w Datei2   Schreibt eine Kopie in Datei2&lt;br /&gt;
 :w !        Schreibt Datei (übergehe Schreibschutz)&lt;br /&gt;
 :w ! Datei2 Schreibt eine Kopie in Datei2 (übergehe Schreibschutz)&lt;br /&gt;
 :q          Schließe Datei&lt;br /&gt;
 :q!         Schließe Datei (verwerfe Änderungen)&lt;br /&gt;
 :wq         Schreibe Datei und beende Editor&lt;br /&gt;
 :wq!        Schreibe Datei und beende Editor (übergehe Schreibschutz)&lt;br /&gt;
 :q!         Schließe Datei (verwerfe Änderungen)&lt;br /&gt;
 :h          Hilfe anzeigen, durch drücken von :q Beenden der Hilfe&lt;br /&gt;
 :e Datei3   Editiere Datei3&lt;br /&gt;
 :e #        Editere vorhergehende Datei&lt;br /&gt;
 :1,3co9     Kopiere von der ersten bis zu dritten Zeile &lt;br /&gt;
             und füge den Inhalt unterhalb der neunte Zeile ein.&lt;br /&gt;
&lt;br /&gt;
Interaktionen mit Unix:&lt;br /&gt;
&lt;br /&gt;
 :r Datei4   Fügt Inhalt der Datei4 nach dem Cursor ein&lt;br /&gt;
 :r ! Befehl Fügt Ausgabe des Befehls nach dem Cursor ein&lt;br /&gt;
 :! Befehl   Führt den Befehl aus&lt;br /&gt;
 :sh         Starte Subshell -&amp;gt; mit exit kehrt man wieder zurück&lt;br /&gt;
             Eingabemodus zurück&lt;br /&gt;
&lt;br /&gt;
====Ersetzen von Textteilen====&lt;br /&gt;
&lt;br /&gt;
Die grundsätzliche Syntax lautet:&lt;br /&gt;
&lt;br /&gt;
 :[Zeilennummer,Zeilennummer]s/Muster/Ersetzung/[gc]&lt;br /&gt;
&lt;br /&gt;
 :s/worf/kirn/              der erste worf wird in der aktuellen Zeile durch kirn ersetzt&lt;br /&gt;
 :1,9s/worf/kirn/g          von der 1. bis zur 9. Zeile werden alle worf durch kirn ersetzt&lt;br /&gt;
 :1,$s/worf/kirn/           von der ersten bis zur letzten Zeile ersetze ersten worf durch&lt;br /&gt;
                            kirn&lt;br /&gt;
 :.,$s/worf/kirn/g          von der aktuellen bis zur letzten Zeile ersetze alle worf durch&lt;br /&gt;
                            kirn&lt;br /&gt;
 :1,.s/worf/kirn/c          von der 1. bis zur aktuellen Zeile ersetze worf durch kirn, frage&lt;br /&gt;
                            aber nach&lt;br /&gt;
 :1,$s/^worf/kirn/          von der ersten bis zur letzten Zeile ersetze worf am&lt;br /&gt;
                            Zeilenanfang durch kirn&lt;br /&gt;
 :4,$s/worf$/kirn/          von der 4. bis zur letzten Zeile ersetze worf am Zeilenende&lt;br /&gt;
                            durch kirn&lt;br /&gt;
 :1,$s/^#//                 lösche alle Kommentarzeichen&lt;br /&gt;
 :1,$s/^.orf/kirn/           ersetze alles was am Zeilenanfang ein beliebiges Zeichen hat&lt;br /&gt;
                            gefolgt von einem orf durch kirn&lt;br /&gt;
 :1,$s/^[A-Z]orf/kirn/g     suche nach einem Großbuchstaben am Anfang der Zeile&lt;br /&gt;
                            gefolgt von einem orf und ersetze durch kirn&lt;br /&gt;
 :1,$s/^M[ae][iy]e*r/kirn/  suche alles, was am Anfang der Zeile ein großes M enthält,&lt;br /&gt;
                            gefolgt von einem a oder e , gefolgt von einem i oder y ,&lt;br /&gt;
                            gefolgt von einem e , welches 0 oder N mal vorkommen kann,&lt;br /&gt;
                            gefolgt von einem r und ersetze es durch kirn&lt;br /&gt;
&lt;br /&gt;
==Reguläre Ausdrücke==&lt;br /&gt;
&lt;br /&gt;
{| Border=1 Cellpadding=2&lt;br /&gt;
|c&lt;br /&gt;
|Ein einzelner Buchstabe passt auf sich selbst&lt;br /&gt;
|-&lt;br /&gt;
|.&lt;br /&gt;
|Ein Punkt passt auf jedes Zeichen außer auf das Zeilenende&lt;br /&gt;
|-&lt;br /&gt;
|*&lt;br /&gt;
|Das dem Operator * vorangehende Muster kann 0 oder öfter vorkommen&lt;br /&gt;
|-&lt;br /&gt;
|^&lt;br /&gt;
|(Caret) passt auf den Zeilenanfang&lt;br /&gt;
|-&lt;br /&gt;
|$&lt;br /&gt;
|Passt auf das Zeilenende&lt;br /&gt;
|-&lt;br /&gt;
|\&lt;br /&gt;
|Das folgende Sonderzeichen wird entwertet&lt;br /&gt;
|-&lt;br /&gt;
|[...]&lt;br /&gt;
|Passt auf &amp;quot;genau&amp;quot; eins in [...] angebenen Zeichen&lt;br /&gt;
|-&lt;br /&gt;
|[^...]&lt;br /&gt;
|Passt auf &amp;quot;genau&amp;quot; ein Zeichen welches nicht in [...] angebenen ist&lt;br /&gt;
|-&lt;br /&gt;
|\&amp;lt;&lt;br /&gt;
|Passt auf den Wortanfang&lt;br /&gt;
|-&lt;br /&gt;
|\&amp;gt;&lt;br /&gt;
|Passt auf das Wortende&lt;br /&gt;
|-&lt;br /&gt;
|\+&lt;br /&gt;
|Das dem Operator \+ vorangehende Muster kann 1 oder öfter vorkommen&lt;br /&gt;
|-&lt;br /&gt;
|&amp;amp;&lt;br /&gt;
|Setzt das gefunden Suchmuster ein&lt;br /&gt;
|-&lt;br /&gt;
|\(...\)&lt;br /&gt;
|Speichert den Text auf den das Suchmuster passt zur späteren Verwendung&lt;br /&gt;
|-&lt;br /&gt;
|\n&lt;br /&gt;
|Setzt das vorangehende, mit \(...\) Gefundene wieder ein&lt;br /&gt;
|-&lt;br /&gt;
|(...)&lt;br /&gt;
|Gruppiert Auswahlmöglichkeiten&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;nowiki&amp;gt;|&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
|Trennt Auswahlmöglichkeiten&lt;br /&gt;
|-&lt;br /&gt;
|\b&lt;br /&gt;
|Passt auf den Anfang oder das Ende eines Wortes&lt;br /&gt;
|-&lt;br /&gt;
|\B&lt;br /&gt;
|Symbolisiert den Raum innerhalb eines Wortes&lt;br /&gt;
|-&lt;br /&gt;
|\w&lt;br /&gt;
|Passt auf alle alphanumerischen Zeichen [A-Za-z0-9]&lt;br /&gt;
|-&lt;br /&gt;
|\W&lt;br /&gt;
|Passt auf alle nichtalphanumerischen Zeichen [^A-Za-z0-9]&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Die Rangfolge der Operatoren(von der höchsten zur niedrigsten)&lt;br /&gt;
:(, ), ?, *, + | .&lt;br /&gt;
&lt;br /&gt;
Die anderen Operatoren sind mit den anderen Buchstaben gleichrangig.&lt;br /&gt;
&lt;br /&gt;
===Beispiel zum Suchen===&lt;br /&gt;
&lt;br /&gt;
 Suchmuster               Passt auf&lt;br /&gt;
 ^Tuxer                   Tuxer am Zeilenanfang&lt;br /&gt;
 [tT]uxer                 Tuxer oder tuxer&lt;br /&gt;
 80[23]?86                8086, 80286 oder 80386&lt;br /&gt;
&lt;br /&gt;
===grep===&lt;br /&gt;
&lt;br /&gt;
Mit grep ist es möglich, in Dateien nach regulären Ausdrücken zu suchen. Wenn&lt;br /&gt;
eine Übereinstimmung gefunden wird, wird die komplette Zeile auf die&lt;br /&gt;
Standardausgabe geschrieben. grep kann auch von STDIN lesen.Es ist&lt;br /&gt;
empfehlenswert, sich anzugwöhnen ,das Suchmuster in Anführungszeichen zu&lt;br /&gt;
schreiben. Es gibt 3 Arten fgrep = fastgrep , grep und egrep egrep&lt;br /&gt;
&lt;br /&gt;
Beispiel:&lt;br /&gt;
&lt;br /&gt;
 root@zero:~# cat text&lt;br /&gt;
 quatsch&lt;br /&gt;
 quatsch&lt;br /&gt;
 quatsch&lt;br /&gt;
 wichtig&lt;br /&gt;
 quatsch&lt;br /&gt;
 root@zero:~# grep wichtig text&lt;br /&gt;
 wichtig&lt;br /&gt;
 root@zero:~# &lt;br /&gt;
&lt;br /&gt;
 -c                   meldet nur die Gesamtzahl der Fundstellen&lt;br /&gt;
 -v                   zeigt nur Zeilen, die »Ausdruck« nicht enthalten&lt;br /&gt;
 -i                   ignoriert Groß- und Kleinschreibung&lt;br /&gt;
 -l                    meldet nur Dateinamen mit Fundstellen&lt;br /&gt;
 -n                   listet Zeilennummern zu jeder Fundstelle&lt;br /&gt;
 -f                   Dateiname »Dateiname« enthält die Such-Ausdrücke&lt;br /&gt;
 -E                   ist ein erweiterter regulärer Ausdruck (egrep)&lt;br /&gt;
 -F                   (Muster, Ausdruck) ist ein Muster (String) (fgrep)&lt;br /&gt;
 -b                   listet auch die Position der Fundstellen&lt;br /&gt;
 -C    Anzahl         Anzahl von Zeilen werden nach der Fundstelle ausgegeben&lt;br /&gt;
 -B    Anzahl         Anzahl von Zeilen werden vor der Fundstelle ausgegeben&lt;br /&gt;
 -r                   Durchsucht Verzeichnisse rekursiv&lt;br /&gt;
&lt;br /&gt;
==Useridendifikation==&lt;br /&gt;
===/etc/passwd===&lt;br /&gt;
====Beschreibung====&lt;br /&gt;
passwd ist eine ASCII-Datei, die eine Liste der Benutzer des Systems und deren&lt;br /&gt;
Passwörter enthält. Die Passwortdatei sollte für alle Benutzer lesbar sein, was für&lt;br /&gt;
dieVerschlüsselung notwendig ist; aber nur vom Superuser beschreibbar. Wenn&lt;br /&gt;
Sie eine neue Kennung einrichten, lassen Sie das Passwort-Feld in der Datei frei&lt;br /&gt;
und benutzen Sie passwd(1), um dem System ein Passwort für die neue Kennung&lt;br /&gt;
mitzuteilen.&lt;br /&gt;
&lt;br /&gt;
Die Datei /etc/passwd enthält einen Eintrag pro Zeile mit dem Format:&lt;br /&gt;
login_name:passwd:UID:GID:user_name:directory:shell&lt;br /&gt;
====Die Bedeutung der Felder:====&lt;br /&gt;
# login_name Kennung des Benutzers auf dem System.&lt;br /&gt;
# password   Hier steht bei Shadowsystemen ein x. Die Passwörter sind in der Datei /etc/shadow&lt;br /&gt;
# UID        Die numerische Benutzernummer.&lt;br /&gt;
#  GID        Die numerische Gruppennummer des Benutzers.&lt;br /&gt;
# user_name Ein optionales Kommentarfeld, oft benutzt für den vollen Namen des Benutzers und weitere Informationen (Telefon, Raum-Nummer etc.).&lt;br /&gt;
# directory  Das Heimatverzeichnis $HOME des Benutzers.&lt;br /&gt;
# shell      Das Programm, das beim Einloggen gestartet werden soll (falls nicht nötig, benutzen Sie /bin/bash).&lt;br /&gt;
&lt;br /&gt;
===/etc/group===&lt;br /&gt;
====Beschreibung====&lt;br /&gt;
etc/group ist eine ASCII Datei, die Gruppen definiert, zu denen Benutzer&lt;br /&gt;
gehören. Es gibt nur einen Eintrag pro Zeile; jede Zeile hat folgendes Format:&lt;br /&gt;
         GruppenName:Passwort:GruppenKennung:BenutzerListe&lt;br /&gt;
Beschreibung der Felder:&lt;br /&gt;
#     GruppenName      Die Bezeichnung der Gruppe.&lt;br /&gt;
#     Passwort         Das (verschlüsselte) Gruppen-Passwort. Wenn dieses Feld leer ist, wird kein Passwort benötigt.&lt;br /&gt;
#     GruppenKennung Die numerische Identifikation der Gruppe.&lt;br /&gt;
#     BenutzerListe    Alle Namen der Mitglieder, getrennt durch Kommas.&lt;br /&gt;
&lt;br /&gt;
===/etc/shadow===&lt;br /&gt;
====Beschreibung====&lt;br /&gt;
shadow beinhaltet Informationen zu den verschlüsselten Passwörten, zu den&lt;br /&gt;
Benutzerzugängen und weitere Informationen zur Laufzeit der Passwörter.&lt;br /&gt;
 Name:Passwort:Letzte Änderung:Mintage:Maxtage:Warntage:Inaktiv:Ablauf&lt;br /&gt;
#    Der Loginname&lt;br /&gt;
#    verschlüsseltes Passwort &lt;br /&gt;
&amp;lt;nowiki&amp;gt;*&amp;lt;/nowiki&amp;gt; bedeutet Benutzer kann sich nicht einlogen&lt;br /&gt;
! bedeutet Benutzer hat kein Passwort gesetzt&lt;br /&gt;
#    Tage seit dem 1 Januar 1970 an dem das Passwort letztmals geändert wurde&lt;br /&gt;
#    Tage, die das Passwort behalten werden muss, bevor es wieder geändert werden kann&lt;br /&gt;
#     Die Anzahl der Tage, nach denen der Benutzer das Passwort wieder ändern muss&lt;br /&gt;
#    Anzahl der Tage bevor das Passwort abläuft und der Benutzer gewarnt wird&lt;br /&gt;
#    Wenn der Zugang diese Anzahl von Tagen nicht benutzt wird, wird der Zugang gesperrt&lt;br /&gt;
#    Tag seit dem 1 Januar 1970, an dem der Zugang gesperrt wird&lt;br /&gt;
#    Reserviertes Feld&lt;br /&gt;
&lt;br /&gt;
Die Datei sollte aus Sicherheitgründen nicht für einen normalen Benutzer lesbar&lt;br /&gt;
sein.&lt;br /&gt;
&lt;br /&gt;
==Programme zur Userverwaltung==&lt;br /&gt;
===useradd===&lt;br /&gt;
User anlegen&lt;br /&gt;
 root@zero:~# useradd -m -u 1011 -g users -G admin -d /home/erwin -s /bin/bash -c &amp;quot;Erwin Lehman&amp;quot;  erwin&lt;br /&gt;
{| border=1 cellpadding=2&lt;br /&gt;
|&amp;quot;-m&amp;quot;&lt;br /&gt;
|Lege Homedirectory an&lt;br /&gt;
|-&lt;br /&gt;
|&amp;quot;-u 1011&amp;quot;&lt;br /&gt;
|Userid wird zugeordnet&lt;br /&gt;
|-&lt;br /&gt;
|&amp;quot;-g users&amp;quot;&lt;br /&gt;
|Primäre Gruppe wird zugeordnet&lt;br /&gt;
|-&lt;br /&gt;
|&amp;quot;-G admin&amp;quot;&lt;br /&gt;
|Sekunbdäre Gruppe wird zugeordnet&lt;br /&gt;
|-&lt;br /&gt;
|&amp;quot;-d /home/erwin/&amp;quot;&lt;br /&gt;
|Name des Homedirectory&lt;br /&gt;
|-&lt;br /&gt;
|&amp;quot;-s /bin/bash&amp;quot;&lt;br /&gt;
|Bash wird zugeordnet&lt;br /&gt;
|- &lt;br /&gt;
|&amp;quot;-c Erwin Lehman&amp;quot;&lt;br /&gt;
|Kommentarfeld&lt;br /&gt;
|-&lt;br /&gt;
|&amp;quot;erwin&amp;quot; &lt;br /&gt;
|Name des Users&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Defaulteinstellungen anzeigen&lt;br /&gt;
 root@zero:~# useradd -D&lt;br /&gt;
 GROUP=100&lt;br /&gt;
 HOME=/home&lt;br /&gt;
 INACTIVE=-1&lt;br /&gt;
 EXPIRE=&lt;br /&gt;
 SHELL=/bin/sh&lt;br /&gt;
 SKEL=/etc/skel&lt;br /&gt;
 CREATE_MAIL_SPOOL=no&lt;br /&gt;
&lt;br /&gt;
Defaulteinstellungen ändern&lt;br /&gt;
 useradd -D -s /bin/bash&lt;br /&gt;
&lt;br /&gt;
Konfigurationsdatei&lt;br /&gt;
 root@zero:~# cat /etc/default/useradd &lt;br /&gt;
 SHELL=/bin/bash&lt;br /&gt;
 GROUP=100&lt;br /&gt;
 HOME=/home&lt;br /&gt;
 INACTIVE=-1&lt;br /&gt;
 EXPIRE=&lt;br /&gt;
 SKEL=/etc/skel&lt;br /&gt;
 CREATE_MAIL_SPOOL=no&lt;br /&gt;
&lt;br /&gt;
===usermod===&lt;br /&gt;
User modifizieren&lt;br /&gt;
 root@zero:~# usermod -l fritz -s /bin/sh -G admin,video erwin&lt;br /&gt;
{| border=1 cellpadding=2&lt;br /&gt;
|&amp;quot;-l fritz&amp;quot;&lt;br /&gt;
|Neuer Username&lt;br /&gt;
|-&lt;br /&gt;
|&amp;quot;-s /bin/sh&amp;quot;&lt;br /&gt;
|Neue Shell&lt;br /&gt;
|-&lt;br /&gt;
|&amp;quot;-G admin, video&amp;quot;&lt;br /&gt;
|Sekunbdäre Gruppen werden zugeordnet&lt;br /&gt;
|-&lt;br /&gt;
|&amp;quot;erwin&amp;quot; &lt;br /&gt;
|Name des Users&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
===userdel===&lt;br /&gt;
User inklusive Homedirectory löschen&lt;br /&gt;
 root@zero:~# userdel -r fritz&lt;br /&gt;
&lt;br /&gt;
===passwd===&lt;br /&gt;
Rootpasswort ändern&lt;br /&gt;
 root@zero:~# passwd &lt;br /&gt;
 Geben Sie ein neues UNIX Passwort ein:'''sysadm''' &lt;br /&gt;
 Geben Sie das neue UNIX Passwort erneut ein:'''sysadm''' &lt;br /&gt;
 passwd: Passwort erfolgreich geändert&lt;br /&gt;
&lt;br /&gt;
Passwort von tux ändern&lt;br /&gt;
 root@zero:~# passwd tux&lt;br /&gt;
 Geben Sie ein neues UNIX Passwort ein:'''suxer''' &lt;br /&gt;
 Geben Sie das neue UNIX Passwort erneut ein:'''suxer'''&lt;br /&gt;
 passwd: Passwort erfolgreich geändert&lt;br /&gt;
&lt;br /&gt;
Minimale und Maximale Gültigkeit des Passwortes von tux festlegen&lt;br /&gt;
 root@zero:~# passwd -n 5 -x 120 tux&lt;br /&gt;
&lt;br /&gt;
===groupadd===&lt;br /&gt;
 root@zero:~# groupadd -f -g 2001 xinuxer&lt;br /&gt;
{| border=1 cellpadding=2&lt;br /&gt;
|&amp;quot;-f&amp;quot;&lt;br /&gt;
|Überschreibe bestehende Gruppe&lt;br /&gt;
|-&lt;br /&gt;
|&amp;quot;-g 2001&amp;quot;&lt;br /&gt;
|GID der Gruppe&lt;br /&gt;
|-&lt;br /&gt;
|&amp;quot;xinuxer&amp;quot; &lt;br /&gt;
|Name des Gruppe&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==chmod==&lt;br /&gt;
Die Syntax des Befehls chmod lautet:&lt;br /&gt;
&lt;br /&gt;
'''chmod''' WerWieWas [,WerWieWas,.....] Dateiliste&lt;br /&gt;
&lt;br /&gt;
oder&lt;br /&gt;
&lt;br /&gt;
'''chmod''' Oktalzahl Dateiliste&lt;br /&gt;
&lt;br /&gt;
Durch WerWieWas bzw. Oktalzahl wird die Rechtetabelle definiert. Innerhalb von&lt;br /&gt;
WerWieWas darf es kein Leerzeichen geben. Wer bezeichnet den Benutzerkreis,&lt;br /&gt;
dem man Rechte gibt, Wie die Art, in der die Rechte gegeben werden und Was die&lt;br /&gt;
Rechte als solche. Im einzelnen können folgende Kürzel benutzt werden:&lt;br /&gt;
&lt;br /&gt;
Für Wer kann eines der folgenden Kürzel oder eine Kombination davon stehen:&lt;br /&gt;
 u                   (user) Rechte für den Dateibesitzer&lt;br /&gt;
 g                   (group) Rechte für die Gruppe&lt;br /&gt;
 o                   (others) Rechte für alle anderen Benutzer&lt;br /&gt;
 a                   (all) Rechte für alle Benutzer&lt;br /&gt;
Für Wie steht eines der folgenden Kürzel:&lt;br /&gt;
 +                   Die Rechte werden zu den vorhandenen zusätzlich vergeben&lt;br /&gt;
 -                   Die im Folgenden genannten Rechte werden entzogen&lt;br /&gt;
 =                   Die im Folgenden genannten Rechte ersetzen die bisherigen&lt;br /&gt;
Für Was steht eines der folgenden Kürzel:&lt;br /&gt;
 r                   (read) lesen&lt;br /&gt;
 w                   (write) schreiben&lt;br /&gt;
 x                   (execute) ausführen&lt;br /&gt;
oder diese Sonderformen&lt;br /&gt;
 s                   (usersbit) Programm läuft unter der UID des Besitzers&lt;br /&gt;
 s                   (groupsbit)Programm läuft unter der GID des GRUPPE&lt;br /&gt;
 t                   (stickybit) Dateien im Verzeichnis darf nur Besitzer löschen&lt;br /&gt;
&lt;br /&gt;
===Beispiel===&lt;br /&gt;
Setze für alle Schreib- und Leserecht&lt;br /&gt;
 xinux@zero:~$ chmod a=rw test &lt;br /&gt;
 xinux@zero:~$ ls -l test &lt;br /&gt;
 -rw-rw-rw- 1 xinux xinux 0 2009-06-16 12:01 test&lt;br /&gt;
 xinux@zero:~$ &lt;br /&gt;
&lt;br /&gt;
Erteile Besitzer Ausführungsrecht&lt;br /&gt;
 xinux@zero:~$ chmod u+x test ; ls -l test &lt;br /&gt;
 -rwxrw-rw- 1 xinux xinux 0 2009-06-16 12:01 test&lt;br /&gt;
 xinux@zero:~$ &lt;br /&gt;
&lt;br /&gt;
===chmod oktale Schreibweise===&lt;br /&gt;
 Specialrights        User           Group         Other&lt;br /&gt;
 usbit gsbit sticky    r    w   x     r   w   x     r   w   x&lt;br /&gt;
   1     1      1      1    1   1     1   1   1     1   1   1&lt;br /&gt;
   0     0      0      0    0   0     0   0   0     0   0   0&lt;br /&gt;
 Oktale Wertigkeit pro Recht&lt;br /&gt;
   4     2       1     4    2   1     4   2   1     4   2   1&lt;br /&gt;
&lt;br /&gt;
===Beispiele===&lt;br /&gt;
 xinux@zero:~$ chmod 751 test ; ls -l test&lt;br /&gt;
 -rwxr-x--x 1 xinux xinux 0 2009-06-16 12:01 test&lt;br /&gt;
 xinux@zero:~$ &lt;br /&gt;
&lt;br /&gt;
 xinux@zero:~$ chmod 4770 test ; ls -l test&lt;br /&gt;
 -rwsrwx--- 1 xinux xinux 0 2009-06-16 12:01 test&lt;br /&gt;
 xinux@zero:~$ &lt;br /&gt;
&lt;br /&gt;
 xinux@zero:~$ chmod 0 test ; ls -l test &lt;br /&gt;
 ---------- 1 xinux xinux 0 2009-06-16 12:01 test&lt;br /&gt;
&lt;br /&gt;
===chmod Optionen===&lt;br /&gt;
 -c   (changes) es werden nur die Dateien angezeigt, deren Zugriffsrechte tatsächlich verändert werden&lt;br /&gt;
 -f   (silent, quiet) Fehlermeldungen wegen fehlgeschlagener Änderungsversuche werden unterdrückt&lt;br /&gt;
 -v   (verbose) alle Aktionen werden angezeigt&lt;br /&gt;
 -R   (recursive) die Zugriffsrechte aller Dateien in den Unterverzeichnissen werden ebenfalls geändert&lt;br /&gt;
&lt;br /&gt;
Theoretisch sind alle Kombinationen der Zugriffsrechte denkbar, aber der&lt;br /&gt;
Eigentümer einer Datei darf diese immer lesen, selbst wenn das Lesebit nicht&lt;br /&gt;
gesetzt ist. Genauso macht es wenig Sinn, eine gewöhnliche Textdatei als&lt;br /&gt;
ausführbar zu setzen; die Shell wird damit nichts anfangen können. Ein x für ein&lt;br /&gt;
Verzeichnis gibt an, dass in dieses gewechselt werden kann.&lt;br /&gt;
&lt;br /&gt;
Rechte sind verbindlich&lt;br /&gt;
&lt;br /&gt;
Interessant ist auch ein Konstrukt folgender Art&lt;br /&gt;
 -rwx---rwx&lt;br /&gt;
&lt;br /&gt;
das angibt, dass mit der Datei alles angestellt werden kann, außer durch Nutzer der&lt;br /&gt;
Gruppe. Versucht irgend jemand, der nicht der Gruppe des Eigentümers angehört,&lt;br /&gt;
die Datei zu modifizieren, wird ihm dies gelingen, einem Gruppenmitglied bleibt&lt;br /&gt;
dies versagt, obwohl er ja gleichzeitig ein &amp;quot;Anderer&amp;quot; ist. D.h. die Rechte der&lt;br /&gt;
Gruppe sind verbindlicher, als die Rechte der anderen!&lt;br /&gt;
&lt;br /&gt;
===Bedeutungen der Zugriffsarten===&lt;br /&gt;
====Dateien====&lt;br /&gt;
* r: Der Inhalt der Datei kann gelesen und damit auch kopiert werden. &lt;br /&gt;
 root@zero:~# cat test&lt;br /&gt;
 Dies ist eine Testdatei&lt;br /&gt;
  &lt;br /&gt;
 root@zero:~# cp test backup&lt;br /&gt;
&lt;br /&gt;
* w: Der Inhalt der Datei darf verändert werden. Ob die Datei gelöscht werden kann ist&lt;br /&gt;
keine Eigenschaft der Datei, sondern des Verzeichnisses, indem sich die Datei befindet.&lt;br /&gt;
 root@zero:~# cat &amp;gt; test&lt;br /&gt;
 Hier steht jetzt was anderes&lt;br /&gt;
 ^C&lt;br /&gt;
 root@zero:~# cat test&lt;br /&gt;
 Hier steht jetzt was anderes&lt;br /&gt;
  &lt;br /&gt;
 xinux@zero:~$ ls -ld verzeichnis/&lt;br /&gt;
 dr-xr-xr-x 2 xinux xinux 4096 2009-06-18 11:16 verzeichnis/&lt;br /&gt;
 xinux@zero:~/verzeichnis$ rm text&lt;br /&gt;
 rm: Entfernen von „text“ nicht möglich: Permission denied&lt;br /&gt;
&lt;br /&gt;
* x: Ausführrecht für Programme und Skripte&lt;br /&gt;
 xinux@zero:~$ ./programm&lt;br /&gt;
 -bash: ./programm: Permission denied&lt;br /&gt;
 xinux@zero:~$ chmod +x programm&lt;br /&gt;
 xinux@zero:~$ ./programm&lt;br /&gt;
 Test&lt;br /&gt;
  test&lt;br /&gt;
&lt;br /&gt;
====Verzeichnisse====&lt;br /&gt;
* r: Die Einträge in dem Verzeichnis sind lesbar.&lt;br /&gt;
Leserecht von verzeichnis/ entziehen&lt;br /&gt;
 xinux@zero:~$ chmod a-r verzeichnis/&lt;br /&gt;
 xinux@zero:~$ ls verzeichnis/&lt;br /&gt;
 ls: Öffnen von Verzeichnis verzeichnis/ nicht möglich: Permission denied&lt;br /&gt;
Leserecht für Benutzer und Gruppe vergeben&lt;br /&gt;
 xinux@zero:~$ chmod a+r verzeichnis/&lt;br /&gt;
 xinux@zero:~$ ls verzeichnis/&lt;br /&gt;
 text&lt;br /&gt;
&lt;br /&gt;
* w: Die Einträge in dem Verzeichnis können geändert werden. &lt;br /&gt;
Neue Datei erstellen&lt;br /&gt;
 xinux@zero:~$ touch neu&lt;br /&gt;
 xinux@zero:~$ ls neu&lt;br /&gt;
 neu&lt;br /&gt;
&lt;br /&gt;
Datei löschen&lt;br /&gt;
 xinux@zero:~$ rm neu&lt;br /&gt;
 xinux@zero:~$ ls neu&lt;br /&gt;
 ls: Zugriff auf neu nicht möglich: No such file or directory&lt;br /&gt;
&lt;br /&gt;
* x: Der Name des Verzeichnisses kann in einem Pfadnamen erscheinen.&lt;br /&gt;
Verzeichnis ohne x Recht&lt;br /&gt;
 xinux@zero:~$ chmod a-x verzeichnis/&lt;br /&gt;
Wechseln in Verzeichnis mangels x-Recht nicht möglich&lt;br /&gt;
 xinux@zero:~$ cd verzeichnis/&lt;br /&gt;
 -bash: cd: verzeichnis/: Permission denied&lt;br /&gt;
x-Recht vergeben&lt;br /&gt;
 xinux@zero:~$ chmod a+x verzeichnis/&lt;br /&gt;
damit Wechsel in Verzeichnis möglich&lt;br /&gt;
 xinux@zero:~$ cd verzeichnis/&lt;br /&gt;
 xinux@zero:~/verzeichnis$ pwd&lt;br /&gt;
 /home/xinux/verzeichnis&lt;br /&gt;
&lt;br /&gt;
====umask====&lt;br /&gt;
Neue Dateien und Verzeichnisse werden mit ein und denselben Zufriffsrechten erzeugt.&lt;br /&gt;
 xinux@zero:~$ mkdir text&lt;br /&gt;
 xinux@zero:~$ touch textdat&lt;br /&gt;
 xinux@zero:~$ ls -ld text*&lt;br /&gt;
 drwxr-xr-x 2 xinux xinux 4096 2009-06-18 11:37 text&lt;br /&gt;
 -rw-r--r-- 1 xinux xinux    0 2009-06-18 11:37 textdat&lt;br /&gt;
&lt;br /&gt;
Zuständig für dieses Verhalten ist die sogenannte umask, die oft in der Datei&lt;br /&gt;
/etc/profile auf den Wert 022 voreingestellt ist. Zusätzlich wird noch eine&lt;br /&gt;
Maximalmaske benötigt, die sich für Verzeichnisse und andere Dateien&lt;br /&gt;
unterscheidet. Die bei der Erzeugung gesetzten Rechte entstehen nun, indem von&lt;br /&gt;
der Maximalmaske der durch die umask vorgegebene Wert subtrahiert wird:&lt;br /&gt;
&lt;br /&gt;
{| border=1 cellpadding=2&lt;br /&gt;
!&lt;br /&gt;
! Dateien&lt;br /&gt;
! Verzeichnisse&lt;br /&gt;
|-&lt;br /&gt;
| Systemvorgabe&lt;br /&gt;
| 666&lt;br /&gt;
| 777&lt;br /&gt;
|-&lt;br /&gt;
| -umask&lt;br /&gt;
| 022&lt;br /&gt;
| 022&lt;br /&gt;
|-&lt;br /&gt;
| Ergebnis&lt;br /&gt;
| 644&lt;br /&gt;
| 755&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
 xinux@zero:~$ grep umask /etc/profile&lt;br /&gt;
 umask 022&lt;br /&gt;
&lt;br /&gt;
==Gruppenzugehörigkeit==&lt;br /&gt;
===newgrp===&lt;br /&gt;
Ändert die Gruppenzugehörigkeit eines Benutzers auf die angegebene Gruppe. Wenn keine Gruppe angegeben wird, wird die &lt;br /&gt;
Anmeldegruppe des Benutzers verwendet. Die neue Gruppe wird anschließend fü Zugriffskontrollen verwendet.&lt;br /&gt;
&lt;br /&gt;
 newgrp Gruppenname&lt;br /&gt;
&lt;br /&gt;
 root@zero:~# newgrp hacker&lt;br /&gt;
 root@zero:~# id&lt;br /&gt;
 uid=0(root) gid=1006(hacker) Gruppen=0(root),1006(hacker)&lt;br /&gt;
&lt;br /&gt;
===chgrp===&lt;br /&gt;
Verändert die Besitzugehörigkeit zu der angegebenen Gruppe&lt;br /&gt;
&lt;br /&gt;
 chgrp [Optionen] Gruppe Datei(en)&lt;br /&gt;
&lt;br /&gt;
Optionen:&lt;br /&gt;
 -c Zeigt Veränderungen an&lt;br /&gt;
 -f Unterdrückt die meisten Fehlermeldungen&lt;br /&gt;
 -R Verändert Dateien und Verzeichnisse rekursiv&lt;br /&gt;
 -v Gibt geschwätzige Ausgabe aus.&lt;br /&gt;
&lt;br /&gt;
 root@zero:~# ls -l&lt;br /&gt;
 ...&lt;br /&gt;
 d-wx--x--x  3 root root 4096 2009-06-18 13:34 verzeichnis&lt;br /&gt;
 &lt;br /&gt;
 root@zero:~# chgrp -R xinux verzeichnis/&lt;br /&gt;
 root@zero:~# ls -l&lt;br /&gt;
 ...&lt;br /&gt;
 d-wx--x--x  3 root xinux 4096 2009-06-18 13:34 verzeichnis&lt;br /&gt;
&lt;br /&gt;
 xinux@zero:~$ cd /root/verzeichnis/&lt;br /&gt;
 xinux@zero:/root/verzeichnis$ pwd&lt;br /&gt;
 /root/verzeichnis&lt;br /&gt;
&lt;br /&gt;
===chown===&lt;br /&gt;
Ändert den Eigentümer von einer oder mehreren Dateien in den angegebenen Benutzer. &lt;br /&gt;
chown erlaubt ebenfalls das Ändern der Gruppeneigentümreschaft. Nur der aktuelle Eigentümer einer&lt;br /&gt;
Datei oder der Superuser (root) darf die Eigentumsverhältnisse ändern.&lt;br /&gt;
&lt;br /&gt;
 chown [Optionen] Benutzer(:Gruppe) Dateien&lt;br /&gt;
&lt;br /&gt;
Optionen:&lt;br /&gt;
 -c Gibt Informationen über die veränderten Dateien aus&lt;br /&gt;
 --dereference Symbolischen Links folgen&lt;br /&gt;
 -v Gibt Informationen über alle Dateien aus, die chown zu ändern versucht, egal, ob die Änderung erfolgt ist oder nicht&lt;br /&gt;
 -R Geht rekursiv durch alle Unterverzeichnisse und führt die Änderungen durch. &lt;br /&gt;
&lt;br /&gt;
 root@zero:~# chown -R xinux.xinux verzeichnis/&lt;br /&gt;
 root@zero:~# ls -l&lt;br /&gt;
 insgesamt 12&lt;br /&gt;
 drwx------ 13 root  root  4096 2009-04-21 15:11 profile&lt;br /&gt;
 --w-------  1 root  root     0 2009-06-18 11:13 test&lt;br /&gt;
 -rw-r--r--  1 root  root    40 2009-06-18 12:04 text&lt;br /&gt;
 drwxrwx--x  3 xinux xinux 4096 2009-06-18 13:39 verzeichnis&lt;br /&gt;
 &lt;br /&gt;
 root@zero:~# chown -R -c xinux.xinux verzeichnis/&lt;br /&gt;
 &lt;br /&gt;
 root@zero:~# chown -R -v xinux.xinux verzeichnis/&lt;br /&gt;
 Eigentümer von „verzeichnis/01“ als xinux:xinux erhalten&lt;br /&gt;
 Eigentümer von „verzeichnis/test“ als xinux:xinux erhalten&lt;br /&gt;
 Eigentümer von „verzeichnis/“ als xinux:xinux erhalten&lt;br /&gt;
&lt;br /&gt;
==Eingabe/Ausgabe==&lt;br /&gt;
Standardeingabe (0): Laufende Programme erwarten von hier ihre Eingaben (normalerweise handelt es sich um die Tastatur).&lt;br /&gt;
&lt;br /&gt;
Standardausgabe (1): Programme schreiben auf diese ihre Ausgaben (Bildschirm).&lt;br /&gt;
&lt;br /&gt;
Standardfehlerausgabe (2) : Fehlerausgaben landen hier (Bildschirm, aber nur die aktive Konsole).&lt;br /&gt;
&lt;br /&gt;
[[Bild:std.jpg]]&lt;br /&gt;
&lt;br /&gt;
===cat===&lt;br /&gt;
Das Programm cat liest von STDIN und gibt es STDOUT wieder aus&lt;br /&gt;
&lt;br /&gt;
Einlesen der Datei text&lt;br /&gt;
 root@zero:~# cat &amp;lt; text&lt;br /&gt;
 wichtig&lt;br /&gt;
&lt;br /&gt;
Schreiben in die Datei text, dies überschreibt den bisherigen Inhalt der Datei&lt;br /&gt;
 root@zero:~# cat &amp;gt; text&lt;br /&gt;
 sogar noch wichtiger &lt;br /&gt;
 &lt;br /&gt;
Ausgeben der Datei text&lt;br /&gt;
 root@zero:~# cat text &lt;br /&gt;
 sogar noch wichtiger&lt;br /&gt;
&lt;br /&gt;
Lesen aus der Datei text und schreiben in die Datei neuertext&lt;br /&gt;
 root@zero:~# cat &amp;lt; text &amp;gt; neuertext&lt;br /&gt;
 root@zero:~# cat neuertext&lt;br /&gt;
 sogar noch wichtiger&lt;br /&gt;
&lt;br /&gt;
Anhängen der Ausgabe von date an die Datei neuertext&lt;br /&gt;
 root@zero:~# date &amp;gt;&amp;gt; neuertext&lt;br /&gt;
 root@zero:~# cat neuertext&lt;br /&gt;
 sogar noch wichtiger&lt;br /&gt;
 Do 18. Jun 14:08:58 CEST 2009&lt;br /&gt;
&lt;br /&gt;
Umleiten des Standardfehlerkanals nach error&lt;br /&gt;
 root@zero:~# rm sux 2&amp;gt; error&lt;br /&gt;
 root@zero:~# more error&lt;br /&gt;
 rm: Entfernen von „sux“ nicht möglich: No such file or directory&lt;br /&gt;
&lt;br /&gt;
===Umleitungen===&lt;br /&gt;
Nacheinander auszuführende Kommandos&lt;br /&gt;
 root@zero:~# pwd; date&lt;br /&gt;
 /root&lt;br /&gt;
 Do 18. Jun 14:13:05 CEST 2009&lt;br /&gt;
 &lt;br /&gt;
Übergeben der Ausgabe von tail als Eingabe von grep mit Hilfe der Pipe &amp;quot;|&amp;quot;&lt;br /&gt;
 root@zero:~# tail /var/log/auth.log | grep xinux&lt;br /&gt;
 Jun 18 13:52:33 zero nss_wins[11433]: pam_unix(login:session): session closed for user xinux&lt;br /&gt;
&lt;br /&gt;
Übergeben der letzten 100 Zeilen von syslog als Eingabe von grep&lt;br /&gt;
 root@zero:~# tail /var/log/syslog -n 100 | grep error&lt;br /&gt;
 Jun 18 09:30:54 zero kernel: [154384.692135] end_request: I/O error, dev fd0, sector 0&lt;br /&gt;
 Jun 18 09:30:54 zero kernel: [154384.712137] end_request: I/O error, dev fd0, sector 0&lt;br /&gt;
&lt;br /&gt;
==tr==&lt;br /&gt;
tr ist ein Programm um Zeichen zu übersetzen. Dies betrifft nur die Ausgabe, die Datei selbst bleibt unverändert.&lt;br /&gt;
&lt;br /&gt;
Ersetzt Kleinbuchstaben durch Großbuchstaben aus der Datei text&lt;br /&gt;
 root@zero:~# tr &amp;quot;a-z&amp;quot; &amp;quot;A-Z&amp;quot; &amp;lt; text&lt;br /&gt;
 SOGAR NOCH WICHTIGER&lt;br /&gt;
 123&lt;br /&gt;
 34&lt;br /&gt;
 4711&lt;br /&gt;
 TEST&lt;br /&gt;
&lt;br /&gt;
Ersetzt alle Zahlen durch X&lt;br /&gt;
 root@zero:~# tr &amp;quot;0-9&amp;quot; &amp;quot;X&amp;quot; &amp;lt; text&lt;br /&gt;
 sogar noch wichtiger&lt;br /&gt;
 XXX&lt;br /&gt;
 XX&lt;br /&gt;
 XXXX&lt;br /&gt;
 test&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
 root@zero:~# cat &amp;gt; test&lt;br /&gt;
 +++++&lt;br /&gt;
 ###&lt;br /&gt;
 1111&lt;br /&gt;
&lt;br /&gt;
-s löscht mehrfach kommende Zeichen&lt;br /&gt;
 root@zero:~# tr '''-s''' &amp;quot;+&amp;quot; &amp;lt; test&lt;br /&gt;
 +&lt;br /&gt;
 ###&lt;br /&gt;
 1111&lt;br /&gt;
&lt;br /&gt;
-d löscht vorkommende Zeichen &lt;br /&gt;
 root@zero:~# tr '''-d''' &amp;quot;#&amp;quot; &amp;lt; test&lt;br /&gt;
 +++++ &lt;br /&gt;
 &lt;br /&gt;
 1111&lt;br /&gt;
&lt;br /&gt;
==cut==&lt;br /&gt;
Spalten aus einer Datei schneiden. Dies betrifft nur die Ausgabe, die Datei selbst bleibt unverändert.&lt;br /&gt;
 &lt;br /&gt;
Schneidet die erste Spalte aus, der Delimiter ist : &lt;br /&gt;
 root@zero:~# cut -f 1 -d : /etc/passwd&lt;br /&gt;
 root&lt;br /&gt;
 daemon&lt;br /&gt;
 bin&lt;br /&gt;
 ...&lt;br /&gt;
 xinux&lt;br /&gt;
&lt;br /&gt;
 root@zero:~# more test&lt;br /&gt;
 1234#5678#9999&lt;br /&gt;
 &lt;br /&gt;
Schneidet die zweite Spalte aus, der Delimiter ist #&lt;br /&gt;
 root@zero:~# cut -f 2 -d &amp;quot;#&amp;quot; &amp;lt; test&lt;br /&gt;
 5678&lt;br /&gt;
&lt;br /&gt;
Schneidet bis zum 3 Zeichen ab&lt;br /&gt;
 root@zero:~$ echo S01policykit | cut -c 4-&lt;br /&gt;
 policykit&lt;br /&gt;
&lt;br /&gt;
==expand==&lt;br /&gt;
Ersetzt Tabulatorzeichen durch Folgen von Leerzeichen und schreibt das Ergebnis auf die Standardausgabe&lt;br /&gt;
 root@zero:~# expand /etc/samba/smb.conf&lt;br /&gt;
 ...&lt;br /&gt;
&lt;br /&gt;
==fmt==&lt;br /&gt;
#Setzt den Text der Dateien im Blocksatz der angegebenen Breite durch Auffüllen von Zeilen und Entfernen von Zeilenwechseln.&lt;br /&gt;
Standardgemäß werden Leerzeilen, die Position von Leerzeichen und der Einzug am Zeilenanfang erhalten. fmt versucht, &lt;br /&gt;
Zeilenumbrüche an Satzenden durchzuführen sowie sie nach dem ersten oder vor dem letzten Wort eines Satzes zu vermeiden. &lt;br /&gt;
 &lt;br /&gt;
 fmt [Optionen] [Dateien]&lt;br /&gt;
&lt;br /&gt;
Optionen&lt;br /&gt;
&lt;br /&gt;
* -p ''Präfix'': Formatiert nur Zeilen, die mit ''Präfix'' anfangen&lt;br /&gt;
 root@zero:/tmp# fmt -p '#' text&lt;br /&gt;
 #Setzt den Text der Dateien im Blocksatz der angegebenen Breite durch&lt;br /&gt;
 #Auffüllen von Zeilen und Entfernen von Zeilenwechseln.  Standardgemäß&lt;br /&gt;
 #werden Leerzeilen, die Position von Leerzeichen und der Einzug am&lt;br /&gt;
 #Zeilenanfang erhalten. fmt versucht,&lt;br /&gt;
 Zeilenumbrüche an Satzenden durchzuführen sowie sie nach dem ersten oder vor dem letzten Wort eines Satzes zu vermeiden.&lt;br /&gt;
&lt;br /&gt;
* -u : Erzwingt genau ein Leerzeichen zwischen Wörtern und zwei Leerzeichen zwischen Sätzen&lt;br /&gt;
&lt;br /&gt;
* -w ''Breite'': Setzt die Ausgabebreite auf ''Breite''&lt;br /&gt;
 root@zero:/tmp# fmt -w 30 text&lt;br /&gt;
 #Setzt den Text der Dateien&lt;br /&gt;
 im Blocksatz der angegebenen&lt;br /&gt;
 Breite durch Auffüllen&lt;br /&gt;
 von Zeilen und Entfernen&lt;br /&gt;
 von Zeilenwechseln.&lt;br /&gt;
 #Standardgemäß werden&lt;br /&gt;
 Leerzeilen, die Position von&lt;br /&gt;
 Leerzeichen und der Einzug am&lt;br /&gt;
 Zeilenanfang erhalten. fmt&lt;br /&gt;
 versucht, Zeilenumbrüche&lt;br /&gt;
 an Satzenden durchzuführen&lt;br /&gt;
 sowie sie nach dem ersten&lt;br /&gt;
 oder vor dem letzten Wort&lt;br /&gt;
 eines Satzes zu vermeiden.&lt;br /&gt;
&lt;br /&gt;
==join==&lt;br /&gt;
Führt die Zeilen zweier sortierter Dateien anhand von '''Übereinstimmungen''' in einem gemeinsamen Feld zusammen.&lt;br /&gt;
&lt;br /&gt;
 root@zero:~# more name&lt;br /&gt;
 1. karl&lt;br /&gt;
 2. heinz&lt;br /&gt;
 3. hans&lt;br /&gt;
 4. otto&lt;br /&gt;
 root@zero:~# more tel&lt;br /&gt;
 1. 1234&lt;br /&gt;
 2. 4321&lt;br /&gt;
 3. 222&lt;br /&gt;
 4. 121212&lt;br /&gt;
 root@zero:~# join name tel &amp;gt; telefonbuch&lt;br /&gt;
 root@zero:~# more telefonbuch&lt;br /&gt;
 1. karl 1234&lt;br /&gt;
 2. heinz 4321&lt;br /&gt;
 3. hans 222&lt;br /&gt;
 4. otto 121212&lt;br /&gt;
&lt;br /&gt;
 root@zero:~# join -t : /etc/passwd /etc/shadow&lt;br /&gt;
 ....&lt;br /&gt;
 daemon:x:1:1:daemon:/usr/sbin:/bin/sh:*:14181:0:99999:7:::&lt;br /&gt;
 bin:x:2:2:bin:/bin:/bin/sh:*:14181:0:99999:7:::&lt;br /&gt;
 sys:x:3:3:sys:/dev:/bin/sh:*:14181:0:99999:7:::&lt;br /&gt;
 sync:x:4:65534:sync:/bin:/bin/sync:*:14181:0:99999:7:::&lt;br /&gt;
 ...&lt;br /&gt;
&lt;br /&gt;
join in dat1 nach Feld 3 und in dat2 nach Feld 2&lt;br /&gt;
 thomas@lydia:~$ cat dat1 &lt;br /&gt;
 hugo:ps:1111&lt;br /&gt;
 erwin:zw:2222&lt;br /&gt;
 karl:sb:3333&lt;br /&gt;
 rudi:kl:4444&lt;br /&gt;
 thomas@lydia:~$ cat dat2&lt;br /&gt;
 blau:1111:svn&lt;br /&gt;
 grün:2222:fcs&lt;br /&gt;
 gelb:3333:fch&lt;br /&gt;
 rot:4444:fck&lt;br /&gt;
 thomas@lydia:~$ join -t : -1 3 -2 2 dat1 dat2 &lt;br /&gt;
 1111:hugo:ps:blau:svn&lt;br /&gt;
 2222:erwin:zw:grün:fcs&lt;br /&gt;
 3333:karl:sb:gelb:fch&lt;br /&gt;
 4444:rudi:kl:rot:fck&lt;br /&gt;
&lt;br /&gt;
==nl==&lt;br /&gt;
Nummeriert die Zeilen in einer Datei.&lt;br /&gt;
&lt;br /&gt;
 root@zero:~# nl /etc/passwd                                                   &lt;br /&gt;
     1  root:x:0:0:root:/root:/bin/bash                                       &lt;br /&gt;
     2  daemon:x:1:1:daemon:/usr/sbin:/bin/sh                                 &lt;br /&gt;
     3  bin:x:2:2:bin:/bin:/bin/sh                                            &lt;br /&gt;
     4  sys:x:3:3:sys:/dev:/bin/sh                                            &lt;br /&gt;
     5  sync:x:4:65534:sync:/bin:/bin/sync&lt;br /&gt;
     ...&lt;br /&gt;
Nummereriet mit führenden Nullen der Separatir ist ein :&lt;br /&gt;
 root@zero:~# nl -s : -n rz dat1&lt;br /&gt;
&lt;br /&gt;
==od==&lt;br /&gt;
Gibt Dateien im Oktal und anderen Formaten aus.&lt;br /&gt;
&lt;br /&gt;
 od [Optionen] Datei&lt;br /&gt;
&lt;br /&gt;
* -j ''Bytes'': Überspringt die Anzahl ''Bytes'' einer Datei&lt;br /&gt;
* -N ''Bytes'': Gibt nur die Anzahl ''Bytes'' aus&lt;br /&gt;
* -c : Gebe ASCII Zeichen aus&lt;br /&gt;
* -f : Gebe Fließkommazahlen aus&lt;br /&gt;
* -i : Gebe Dezimal Integer aus&lt;br /&gt;
* -l : Gebe Dezimal Long aus&lt;br /&gt;
* -o : Gebe Oktal 2 Byte Einheiten aus&lt;br /&gt;
* -s : Gebe Dezimal 2 Byte Einheiten aus&lt;br /&gt;
* -x : Gebe Hexadezimale 2 Byte einheiten aus&lt;br /&gt;
&lt;br /&gt;
Beispiele&lt;br /&gt;
&lt;br /&gt;
Gebe Master Boot Record (die ersten 512 Byte der Festplatte /dev/sda) als Hexadezimal aus&lt;br /&gt;
 root@zero:~# od '''-x -N''' 512 /dev/sda&lt;br /&gt;
 0000000 48eb 1090 d08e 00bc b8b0 0000 d88e c08e&lt;br /&gt;
 0000020 befb 7c00 00bf b906 0200 a4f3 21ea 0006&lt;br /&gt;
 0000040 be00 07be 0438 0b75 c683 8110 fefe 7507&lt;br /&gt;
 0000060 ebf3 b416 b002 bb01 7c00 80b2 748a 0203&lt;br /&gt;
 0000100 00ff 2000 0001 0000 0200 90fa f690 80c2&lt;br /&gt;
 ...&lt;br /&gt;
&lt;br /&gt;
Schreibe &amp;quot;suxer&amp;quot; in die Datei test&lt;br /&gt;
 root@zero:~# echo &amp;quot;suxer&amp;quot; &amp;gt; test&lt;br /&gt;
Ausgabe Hexadezimal&lt;br /&gt;
 root@zero:~# od -x test&lt;br /&gt;
 0000000 7573 6578 0a72&lt;br /&gt;
 0000006&lt;br /&gt;
&lt;br /&gt;
Ausgabe ASCII Zeichen&lt;br /&gt;
 root@zero:~# od -c test&lt;br /&gt;
 0000000   s   u   x   e   r  \n&lt;br /&gt;
 0000006&lt;br /&gt;
&lt;br /&gt;
==paste==&lt;br /&gt;
Fügt die Zeilen von zwei oder mehr Dateien horizontal zusammen&lt;br /&gt;
 root@zero:~# paste name tel&lt;br /&gt;
 1. karl 1. 1234&lt;br /&gt;
 2. heinz        2. 4321&lt;br /&gt;
 3. hans 3. 222&lt;br /&gt;
 4. otto 4. 121212&lt;br /&gt;
&lt;br /&gt;
==pr==&lt;br /&gt;
Bereitet Textdateien zum Drucken vor.&lt;br /&gt;
&lt;br /&gt;
 root@zero:~# echo &amp;quot;Plan für heute&amp;quot; &amp;gt; dokument&lt;br /&gt;
 root@zero:~# more dokument&lt;br /&gt;
 Plan für heute&lt;br /&gt;
 root@zero:~# pr dokument   &lt;br /&gt;
  &lt;br /&gt;
 &lt;br /&gt;
 2009-06-19 12:44                    dokument                     Seite 1&lt;br /&gt;
 &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
 Plan für heute&lt;br /&gt;
&lt;br /&gt;
Anmerkung Ausmaße der Bildschirmausgabe wie eine Druckseite.&lt;br /&gt;
&lt;br /&gt;
==sed==&lt;br /&gt;
streaming editor. Mit sed ist es möglich, den Inhalt einer Datei automatisch (nicht interaktiv) zu&lt;br /&gt;
bearbeiten. Wie unter Linux üblich, wird auch hier der Text nicht wirklich verändert sondern die &lt;br /&gt;
Änderung erfolgt über die Standardausgabe, die wieder umgeleitet werden kann. Die Syntax ist ähnlich &lt;br /&gt;
des ex modus von vi. Reguläre Ausdrücke können nach Belieben benutzt werden. &lt;br /&gt;
&lt;br /&gt;
Optionen:&lt;br /&gt;
 -e Zeichenkette  wendet die Editorbefehle aus Zeichenkette auf den Text an.&lt;br /&gt;
 -n gibt nur die Zeilen aus, die explizit (durch &amp;quot;p&amp;quot; ausgedruckt werden sollen&lt;br /&gt;
&lt;br /&gt;
Gibt die dritte Zeile der Datei text aus&lt;br /&gt;
 root@zero:~# sed -n &amp;quot;3p&amp;quot; text&lt;br /&gt;
 34&lt;br /&gt;
&lt;br /&gt;
Gibt die erste bis dritte Zeile von text aus&lt;br /&gt;
 root@zero:~# sed -n &amp;quot;1,3p&amp;quot; text&lt;br /&gt;
 sogar noch wichtiger&lt;br /&gt;
 123&lt;br /&gt;
 34&lt;br /&gt;
&lt;br /&gt;
Löschen der Zeile mit &amp;quot;sogar&amp;quot;&lt;br /&gt;
 root@zero:~# sed -e '/sogar/d' &amp;lt; text&lt;br /&gt;
 123&lt;br /&gt;
 34&lt;br /&gt;
 4711&lt;br /&gt;
 test&lt;br /&gt;
&lt;br /&gt;
und schreiben in text2&lt;br /&gt;
 root@zero:~# sed -e '/sogar/d' &amp;lt; text &amp;gt; text2&lt;br /&gt;
 root@zero:~# more text2&lt;br /&gt;
 123&lt;br /&gt;
 34&lt;br /&gt;
 4711&lt;br /&gt;
 test&lt;br /&gt;
&lt;br /&gt;
Alle 3en durch DREI ersetzen&lt;br /&gt;
 root@zero:~# sed -e 's/3/DREI/g' &amp;lt; text&lt;br /&gt;
 sogar noch wichtiger&lt;br /&gt;
 12DREI&lt;br /&gt;
 DREI4&lt;br /&gt;
 4711&lt;br /&gt;
 test&lt;br /&gt;
&lt;br /&gt;
==wc==&lt;br /&gt;
Zählt die Anzahl von Zeichen, Wörter oder Zeilen&lt;br /&gt;
&lt;br /&gt;
Optionen&lt;br /&gt;
* -m : Zählt die Anzahl der Zeichen&lt;br /&gt;
 root@zero:~# more name&lt;br /&gt;
 1. karl&lt;br /&gt;
 2. heinz&lt;br /&gt;
 3. hans&lt;br /&gt;
 4. otto&lt;br /&gt;
 root@zero:~# wc '''-m''' tel&lt;br /&gt;
 33 tel&lt;br /&gt;
&lt;br /&gt;
* -w : Zählt die Anzahl der Wörter (einschließlich Zahlen und andere Zeichen)&lt;br /&gt;
 root@zero:~# wc '''-w''' name&lt;br /&gt;
 8 name&lt;br /&gt;
&lt;br /&gt;
* -l : Zählt die Anzahl der Zeilen&lt;br /&gt;
 root@zero:~# wc '''-l''' name&lt;br /&gt;
 4 name&lt;br /&gt;
&lt;br /&gt;
==Sort==&lt;br /&gt;
&lt;br /&gt;
Zum sortieren von Dateien nach Feldern benutzt man sort. sort liest von STDIN man kann die Datei aber auch als Argument übergeben. &lt;br /&gt;
&lt;br /&gt;
Sortiert nach dem ersten Feld&lt;br /&gt;
  root@zero:~# sort /etc/passwd 	 &lt;br /&gt;
&lt;br /&gt;
Es wird geprüft ob die Datei schon sortiert ist &lt;br /&gt;
 root@zero:~# sort -c /etc/passwd 	&lt;br /&gt;
&lt;br /&gt;
Sortiert nach dem ersten Feld (Richtungsumkehr)  &lt;br /&gt;
 root@zero:~#  sort -r /etc/passwd&lt;br /&gt;
&lt;br /&gt;
Führende Leersortzeichen werden ignoriert &lt;br /&gt;
 root@zero:~# sort -b /etc/passwd&lt;br /&gt;
&lt;br /&gt;
Ausgabe  in die Datei pass&lt;br /&gt;
 root@zero:~# sort  /etc/passwd   -o pass	 &lt;br /&gt;
&lt;br /&gt;
nimmt : als Trenner -Voreinstellung ist TAB&lt;br /&gt;
  root@zero:~# sort -t : /etc/passwd&lt;br /&gt;
&lt;br /&gt;
sortiert nach dem  3 Feld,  der Trenner ist : und es wird nummerisch sortiert&lt;br /&gt;
&lt;br /&gt;
 root@zero:~# sort -t: +2 -n /etc/passwd		&lt;br /&gt;
&lt;br /&gt;
sortiert nach dem  3 Feld,  der Trenner ist : und es wird nummerisch sortiert&lt;br /&gt;
					&lt;br /&gt;
 root@zero:~# sort -t: -k 3 -n /etc/passwd&lt;br /&gt;
&lt;br /&gt;
Sortiert nach dem  3  bis zum 5 Feld, der Trenner ist : und es wird nummerisch sortiert&lt;br /&gt;
	&lt;br /&gt;
 root@zero:~# sort -t: -k 3,5 -n /etc/passwd	&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==INodes==&lt;br /&gt;
Inode (oder I-Node) wird im Deutschen am besten als Informationsknoten oder&lt;br /&gt;
Indexeintrag bezeichnet. Er fasst alle Attribute einer Datei zusammen außer dem Inhalt&lt;br /&gt;
und dem Namen der Datei.&lt;br /&gt;
&lt;br /&gt;
===Daten===&lt;br /&gt;
{| border=1 cellpadding=2&lt;br /&gt;
|type&lt;br /&gt;
|Der Typ der Datei wird als einzelner Buchstabe angezeigt. Der Typ einer Datei wird beim Anlegen der Datei festgelegt&lt;br /&gt;
|-&lt;br /&gt;
|Permissions &lt;br /&gt;
|Die Zugriffsrechte der Datei werden in den 12 Bit sstrwxrwxrwx abgespeichert.Wenn sie gesetzt sind, werden sie bei &lt;br /&gt;
der Ausgabe an Stelle der x-Rechte ausgegeben. Die Zugriffsrechte können mit dem Kommando chmod verändert werden.&lt;br /&gt;
|-&lt;br /&gt;
|link count&lt;br /&gt;
|In UNIX kann eine Datei mehr als einen Namen haben. Der Link Count gibt die Anzahl der Namen einer Datei an. Er kann&lt;br /&gt;
mit dem Kommando ln erhöht und dem Kommando rm erniedrigt werden.&lt;br /&gt;
|-&lt;br /&gt;
|owner&lt;br /&gt;
|Für den Dateieigentümer gelten die in der ersten rwx-Gruppe festgelegten Zugriffsrechte. Standardmäßig ist der &lt;br /&gt;
Eigentümer einer Datei derjenige Benutzer, der die Datei angelegt hat.&lt;br /&gt;
|-&lt;br /&gt;
|group&lt;br /&gt;
|Für Benutzer, die in der gleichen Gruppe sind, der die Datei angehört, gelten die in der zweiten rwx-Gruppe festgelegten&lt;br /&gt;
Zugriffsrechte. In System V gehört eine Datei standardmäßig der Gruppe an, in der der anlegende Benutzer gerade ist.&lt;br /&gt;
|-&lt;br /&gt;
|size&lt;br /&gt;
|Bei normalen Dateien und Verzeichnissen gibt diese Information die Länge der Datei in Byte an.&lt;br /&gt;
|-&lt;br /&gt;
|access time&lt;br /&gt;
|Die Zugriffszeit gibt den Zeitpunkt des letzten Lesezugriffes auf eine Datei an. Aus Effizienzgründen wird die &lt;br /&gt;
Zugriffszeit an Verzeichnissen nicht gesetzt, wenn ein Verzeichnis durchsucht wird, obwohl man dies erwarten könnte. ''(ls -l --time=atime)''&lt;br /&gt;
|-&lt;br /&gt;
|modification time&lt;br /&gt;
|Die Modifikationszeit gibt die Zeit des letzten Schreibzugriffes auf die Daten der Datei an. Intern speichert UNIX &lt;br /&gt;
die Zeit als Sekunden seit Beginn des Jahres 1970 und in GMT ab. Für die Ausgabe wird dies in ein besser lesbares &lt;br /&gt;
Format in der lokalen Zeitzone umgewandelt. ''(ls -l)''&lt;br /&gt;
|-&lt;br /&gt;
|change time &lt;br /&gt;
|Die Veränderungszeit gibt das Datum der letzten Statusänderung der Datei an. Sie wird immer dann gesetzt, wenn die &lt;br /&gt;
Informationen über die Datei sich ändern (Datum der Erzeugung wird nicht gespeichert) ''(ls -lc)''&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
===Dateiarten===&lt;br /&gt;
{| border=1 cellpadding=2&lt;br /&gt;
!Zeichen&lt;br /&gt;
!Typ&lt;br /&gt;
!Zweck&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;nowiki&amp;gt;-&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
|file&lt;br /&gt;
|normale Datei&lt;br /&gt;
|-&lt;br /&gt;
|d&lt;br /&gt;
|directory&lt;br /&gt;
|Verzeichnis&lt;br /&gt;
|-&lt;br /&gt;
|b&lt;br /&gt;
|block device&lt;br /&gt;
|Gerätedatei&lt;br /&gt;
|-&lt;br /&gt;
|c&lt;br /&gt;
|character device&lt;br /&gt;
|Gerätedatei&lt;br /&gt;
|-&lt;br /&gt;
|l&lt;br /&gt;
|link&lt;br /&gt;
|Querverweis&lt;br /&gt;
|-&lt;br /&gt;
|p&lt;br /&gt;
|named pipe&lt;br /&gt;
|Benannte Pipeline&lt;br /&gt;
|-&lt;br /&gt;
|s&lt;br /&gt;
|socket&lt;br /&gt;
|Netzwerkverbindung&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
====Normale Dateien====&lt;br /&gt;
Unter einer normalen Datei versteht man die Ansammlung von Daten. Dies kann ein Text, Programm, Bild oder sonstiges sein. &lt;br /&gt;
Beispiel&lt;br /&gt;
 root@zero:~# ls -l text | cut -c 1&lt;br /&gt;
 -&lt;br /&gt;
&lt;br /&gt;
====Verzeichnisse====&lt;br /&gt;
Dateien werden in Verzeichnissen gespeichert, nur so ist eine Ordnung möglich. &lt;br /&gt;
 root@zero:~# mkdir -v Ordner&lt;br /&gt;
 mkdir: Verzeichnis „Ordner“ angelegt&lt;br /&gt;
 &lt;br /&gt;
 root@zero:~# ls -ld Ordner | cut -c 1&lt;br /&gt;
 d&lt;br /&gt;
&lt;br /&gt;
====Gerätedateien (Block und Char)====&lt;br /&gt;
Gerätedateien ermöglichen Anwendungsprogrammen unter Benutzung des  Kernels den Zugriff auf die Hardwarekomponenten des Systems. Ansprechbar über Major und Minor Nummern &lt;br /&gt;
&lt;br /&gt;
Beispiele&lt;br /&gt;
&lt;br /&gt;
Sicherung des Master Boot Records der ersten Festplatte&lt;br /&gt;
 root@zero:~# dd if=/dev/sda of=/tmp/mbr.img bs=512 count=1&lt;br /&gt;
&lt;br /&gt;
Block Device &lt;br /&gt;
 root@zero:~# ls -l /dev/sda | cut -c 1 &lt;br /&gt;
 b&lt;br /&gt;
&lt;br /&gt;
Character Device &lt;br /&gt;
 root@zero:~# ls -l /dev/ttyS0  | cut -c 1 &lt;br /&gt;
 c&lt;br /&gt;
&lt;br /&gt;
Erstellen einer Gerätedatei&lt;br /&gt;
 root@zero:/dev# mknod sata1 b 8 0 &lt;br /&gt;
 root@zero:/dev# fdisk -l /dev/sata1 &lt;br /&gt;
 &lt;br /&gt;
 Platte /dev/sata1: 6442 MByte, 6442450944 Byte&lt;br /&gt;
 255 Köpfe, 63 Sektoren/Spuren, 783 Zylinder&lt;br /&gt;
 Einheiten = Zylinder von 16065 × 512 = 8225280 Bytes&lt;br /&gt;
 Disk identifier: 0x0005efab&lt;br /&gt;
 &lt;br /&gt;
       Gerät  boot.     Anfang        Ende     Blöcke   Id  System&lt;br /&gt;
 /dev/sata1p1   *           1         743     5968116   83  Linux&lt;br /&gt;
 /dev/sata1p2             744         783      321300    5  Erweiterte&lt;br /&gt;
 /dev/sata1p5             744         783      321268+  82  Linux Swap / Solaris&lt;br /&gt;
&lt;br /&gt;
====Named Pipes====&lt;br /&gt;
Benannte Pipes (Named Pipes) können dagegen auch zur Kommunikation zwischen Prozessen eingesetzt werden, die nicht miteinander&lt;br /&gt;
verwandt sind und sich darüber hinaus auf unterschiedlichen Rechnern innerhalb eines Netzwerkes befinden dürfen. Sie sind &lt;br /&gt;
flexibler als anonyme Pipes und eignen sich für sogenannte Client-Server-Anwendungen (es lassen sich auch RPCs realisieren).&lt;br /&gt;
Benannte Pipes ermöglichen die gleichzeitige Kommunikation in beide Richtungen, das heißt, Daten können im Vollduplexbetrieb &lt;br /&gt;
zwischen den Prozessen ausgetauscht werden.&lt;br /&gt;
 &lt;br /&gt;
Erstelle Named Pipe mit Namen /tmp/roehre. Schreibe &amp;quot;hallo welt&amp;quot; in die Pipe und bleibe&lt;br /&gt;
 xinux@zero:~$ mkfifo /tmp/roehre&lt;br /&gt;
 xinux@zero:~$ echo hallo welt &amp;gt; /tmp/roehre &lt;br /&gt;
&lt;br /&gt;
Gebe Inhalt der Pipe mit cat aus&lt;br /&gt;
 root@zero:~# cat &amp;lt; /tmp/roehre &lt;br /&gt;
 hallo welt&lt;br /&gt;
 root@zero:~# ls -l /tmp/roehre | cut -c 1&lt;br /&gt;
 p&lt;br /&gt;
&lt;br /&gt;
====Sockets====&lt;br /&gt;
Schnittstelle um es lokalen Anwendungen zu ermöglichen, miteinander Netwerkmässig zu kommunizieren.&lt;br /&gt;
&lt;br /&gt;
 root@lydia:~# netstat  -lnxp | tail -1&lt;br /&gt;
  unix  2 [ ACC ] STREAM HÖRT 21951 6646/nm-applet /tmp/orbit-thomas/linc-19f6-0-2b9b81095cede&lt;br /&gt;
&lt;br /&gt;
 root@lydia:~# ls -l /tmp/orbit-thomas/linc-19f6-0-2b9b81095cede  | cut -c 1 &lt;br /&gt;
 s&lt;br /&gt;
&lt;br /&gt;
====Links====&lt;br /&gt;
Bei Links handelt es sich um symbolische Verweise auf andere Dateien&lt;br /&gt;
&lt;br /&gt;
'''Softlink'''&lt;br /&gt;
Ein Softlink ist eine Datei die nur auf den Namen einer anderen Datei verweist. Wenn die Originaldatei gelöscht wird, zeigt &lt;br /&gt;
der Link ins Leere. &lt;br /&gt;
&lt;br /&gt;
 ln -s datei softlink&lt;br /&gt;
&lt;br /&gt;
{| border=1 cellpadding=2&lt;br /&gt;
| Vorteile&lt;br /&gt;
| Symbolische Links können auch auf Verzeichnisse angelegt werden&amp;lt;br&amp;gt;Sie sind partitionsübergreifend&amp;lt;br&amp;gt;Man kann sie auf Dateien anlegen, die noch nicht existieren&lt;br /&gt;
|-&lt;br /&gt;
| Nachteile&lt;br /&gt;
| Wenn das Original gelöscht ist, ist kein Zugriff mehr möglich&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Beispiel&lt;br /&gt;
 root@zero:~# ln -s text verweis&lt;br /&gt;
 root@zero:~# ls -l verweis&lt;br /&gt;
 lrwxrwxrwx 1 root root 4 2009-06-18 15:48 verweis -&amp;gt; text&lt;br /&gt;
&lt;br /&gt;
'''Hardlinks'''&lt;br /&gt;
 ln datei hardlink&lt;br /&gt;
Eigentlich ist jede Datei ein Hardlink. Ein Hardlink ist ein Verzeichniseintrag,&lt;br /&gt;
der auf eine Inode verweist. Beim Erzeugen einer Datei verweist ein Eintrag auf&lt;br /&gt;
eine Inode. Man kann dann weitere Verweise erzeugen. Der Linkcounter wird&lt;br /&gt;
jeweils um 1 erhöht. Beim Löschen einer Datei wird er jeweils um 1 reduziert.&lt;br /&gt;
Wird der Wert 0 erreicht, ist die Datei gelöscht.&lt;br /&gt;
{| border=1 cellpadding=2&lt;br /&gt;
| Vorteile&lt;br /&gt;
|Zugriff auf die Daten, selbst wenn das Orginal gelöscht ist.&lt;br /&gt;
|-&lt;br /&gt;
|Nachteile&lt;br /&gt;
|Man kann keine Hardlinks auf Verzeichnisse anlegen.&lt;br /&gt;
Ist nur innerhalb einer Partion möglich.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Beispiel&lt;br /&gt;
 root@zero:~# touch 1&lt;br /&gt;
 root@zero:~# echo &amp;quot;text&amp;quot; &amp;gt; 1&lt;br /&gt;
 root@zero:~# ln 1 2&lt;br /&gt;
 root@zero:~# more 2&lt;br /&gt;
 text&lt;br /&gt;
 root@zero:~# echo &amp;quot;doch kein text&amp;quot; &amp;gt; 1&lt;br /&gt;
 root@zero:~# more 1&lt;br /&gt;
 doch kein text&lt;br /&gt;
 root@zero:~# more 2&lt;br /&gt;
 doch kein text&lt;br /&gt;
&lt;br /&gt;
Weitere Optionen:&lt;br /&gt;
 -b sichert Dateien, statt sie zu überschreiben &lt;br /&gt;
 -f Überschreibt bestehende, gleichnamige Dateien&lt;br /&gt;
 -i fragt vor dem Überschreiben nach Bestätigung&lt;br /&gt;
 -v ausführliche Meldungen&lt;br /&gt;
Softlink mit dem Namen passwd im Homeverzeichnis angelegt&lt;br /&gt;
 xinux@zero:~$ ln -vs /etc/passwd .&lt;br /&gt;
 „./passwd“ -&amp;gt; „/etc/passwd“&lt;br /&gt;
Softlink mit dem Namen passwd im Homeverzeichnis angelegt(Original exestiert nicht) &lt;br /&gt;
 xinux@zero:~$ ln -vs /etc/hund .&lt;br /&gt;
 „./hund“ -&amp;gt; „/etc/hund“&lt;br /&gt;
Hardlink mit dem Namen hosts im Homeverzeichnis angelegt&lt;br /&gt;
  xinux@zero:~$ ln -v /etc/hosts .&lt;br /&gt;
 „./hosts“ =&amp;gt; „/etc/hosts“&lt;br /&gt;
Auf eine nicht existierende Datei kann kein Hardlink angelegt werden!&lt;br /&gt;
 xinux@zero:~$ ln -v /etc/katze .&lt;br /&gt;
 ln: Zugriff auf „/etc/katze“: No such file or directory&lt;br /&gt;
&lt;br /&gt;
==Shellsonderzeichen==&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot; cellpadding=&amp;quot;2&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
|;&lt;br /&gt;
|Trenne Kommandos&lt;br /&gt;
|-&lt;br /&gt;
|. oder source&lt;br /&gt;
|Ausführen wie in aktueller Shell&lt;br /&gt;
|-&lt;br /&gt;
|#&lt;br /&gt;
|Kommentar&lt;br /&gt;
|-&lt;br /&gt;
|&amp;amp;&lt;br /&gt;
|Programm im Hintergrund starten &lt;br /&gt;
|-&lt;br /&gt;
|&amp;amp;&amp;amp;&lt;br /&gt;
|UND -Ausführung  (wenn links wahr dann führe rechts aus)&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;nowiki&amp;gt;|&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
|STOUT von links wird zu STDIN von rechts &lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;nowiki&amp;gt;||&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
|ODER -Ausführung (wenn links falsch dann führe rechts aus)&lt;br /&gt;
|-&lt;br /&gt;
|*&lt;br /&gt;
|steht für beliebig viel Zeichen auch 0 &lt;br /&gt;
|-&lt;br /&gt;
|?&lt;br /&gt;
|steht für genau ein Zeichen &lt;br /&gt;
|-&lt;br /&gt;
|[abc]&lt;br /&gt;
|steht für eins der Zeichen in [ ] hier a b oder c &lt;br /&gt;
|-&lt;br /&gt;
|[ausdruck] &lt;br /&gt;
|Andere Schreibweis für test &lt;br /&gt;
|-&lt;br /&gt;
|~&lt;br /&gt;
|das Homeverzeichnis&lt;br /&gt;
|-&lt;br /&gt;
|&amp;gt;    und    &amp;gt;&amp;gt;&lt;br /&gt;
|leite in Datei um   &amp;gt;  überschreibe     &amp;gt;&amp;gt; hänge an &lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;&lt;br /&gt;
|lesen aus Datei &lt;br /&gt;
|-&lt;br /&gt;
|2&amp;gt;&amp;amp;1&lt;br /&gt;
|leite STDERR auf STDOUT&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;&amp;lt; ende&lt;br /&gt;
|Lesen aus Datei (Heredokument)&lt;br /&gt;
|-&lt;br /&gt;
|(...)&lt;br /&gt;
|Alles inhalb von ( ) wird als Subshell ausgeführt&lt;br /&gt;
|-&lt;br /&gt;
|{...}&lt;br /&gt;
|Gruppieren von Komandos &lt;br /&gt;
|-&lt;br /&gt;
|{ ,  ,  , }&lt;br /&gt;
|Zeichenketten zusammensetzen &lt;br /&gt;
|-&lt;br /&gt;
|$&lt;br /&gt;
|Inhalt von Variablen ausgeben $SUX&lt;br /&gt;
|-&lt;br /&gt;
|$* oder $@&lt;br /&gt;
|Liste der übergebenen Parameter&lt;br /&gt;
|-&lt;br /&gt;
|$# &lt;br /&gt;
|Anzahl der übergebenen Parameter &lt;br /&gt;
|-&lt;br /&gt;
|$0&lt;br /&gt;
|Name des Shellprogramms &lt;br /&gt;
|-&lt;br /&gt;
|$?&lt;br /&gt;
|Rückgabewert des letzten Kommandos &lt;br /&gt;
|-&lt;br /&gt;
|$!  und  $$&lt;br /&gt;
|PID des  $!  = letzten Hintergrund  -  , $$ = aktuellen Prozess&lt;br /&gt;
|-&lt;br /&gt;
|$1 ..$9&lt;br /&gt;
|Parameter 1 bis 9 &lt;br /&gt;
|-&lt;br /&gt;
|$() oder `  `&lt;br /&gt;
|Kommandosubstition&lt;br /&gt;
|-&lt;br /&gt;
|${ }&lt;br /&gt;
|Funktion zur Manipulation von Zeichenketten &lt;br /&gt;
|-&lt;br /&gt;
|$(( )) oder $[ ]&lt;br /&gt;
|Arithmetische Berechnung &lt;br /&gt;
|-&lt;br /&gt;
|&amp;quot;...&amp;quot;&lt;br /&gt;
|Entwertung der Sonderzeichen ausser $ ' \&lt;br /&gt;
|-&lt;br /&gt;
|'...'&lt;br /&gt;
|Entwertung sämtlicher Sonderzeichen ausser ' selbst&lt;br /&gt;
|-&lt;br /&gt;
|\  &lt;br /&gt;
|Entwertung des folgenden Sonderzeichens &lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Prozesse==&lt;br /&gt;
===Was ist ein Prozess?===&lt;br /&gt;
Ein Prozess setzt sich aus zwei Teilen zusammen:&lt;br /&gt;
&lt;br /&gt;
1.Programm, das in den Hauptspeicher geladen wurde&lt;br /&gt;
&lt;br /&gt;
2.Prozessumgebung &lt;br /&gt;
Unter einem Prozess versteht man ein Programm (binär), das in den Hauptspeicher&lt;br /&gt;
geladen wurde. Also nicht das Program selbst, das auf der Festplatte liegt ist der&lt;br /&gt;
Prozess, sondern es wird erst durch das Laden in den Hauptspeicher dazu.&lt;br /&gt;
Normalerweise liegt ein Programm als ausführbare Datei irgendwo auf der&lt;br /&gt;
Festplatte oder auf Diskette. Ob es sich bei dem Programm um eine binäre Datei&lt;br /&gt;
handelt, kann man mit dem Befehl '' file '' feststellen.&lt;br /&gt;
 &lt;br /&gt;
 root@zero:~# file /bin/mkdir&lt;br /&gt;
 /bin/mkdir: ELF 32-bit LSB executable, Intel 80386, version 1 (SYSV), dynamically linked (uses shared libs), for GNU/Linux 2.6.8, stripped&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Die Datei liegt im Maschinencode vor und kann in den Hauptspeicher geladen&lt;br /&gt;
werden. Sobald dies geschehen ist, kann der Rechner diesen Maschinencode&lt;br /&gt;
abarbeiten (ausführen).&lt;br /&gt;
&lt;br /&gt;
Da aber ein Programm nicht direkt auf die Hardware zugreifen soll, muss es vom&lt;br /&gt;
Betriebsystem kontrolliert werden. Das Betriebssystem liegt logisch gesehen&lt;br /&gt;
zwischen Hardware und Anwendung. Das Betriebssystem ordnet jedem Prozess&lt;br /&gt;
verschiedene Kenndaten zu, um die Prozesse verwalten zu können. Alle&lt;br /&gt;
Kenndaten, die einem Prozess zugeordnet sind, nennt man die&lt;br /&gt;
Prozessumgebung.Wenn man in der Shell ein Kommando eingibt, wird ein Prozess&lt;br /&gt;
kreiert. Natürlich ist die Shell selbst auch ein Prozess. Ein Prozess kann aber&lt;br /&gt;
genauso gut ein Serverprozess (Dienst) sein, z.B. Apache.&lt;br /&gt;
Ein wesentliches Merkmal eines Prozesses ist die Prozesskommunikation. Über im&lt;br /&gt;
Betriebssystem implementierte Methoden ist es möglich, dass verschiedene&lt;br /&gt;
Prozesse Signale und Daten untereinander austauschen können.&lt;br /&gt;
Dadurch wird auch dem Benutzer ermöglicht, einem Prozeß bestimmte Signale zu&lt;br /&gt;
senden bzw. auf den Status eines Prozesses Einfluss zu nehmen.&lt;br /&gt;
&lt;br /&gt;
===Prozesstabelle (Anzeige mit ps)===&lt;br /&gt;
Da zu jedem Prozess Kenndaten geführt werden, müssen diese auch irgendwo&lt;br /&gt;
festgehalten werden. Das geschieht in der sogenannten Prozesstabelle.&lt;br /&gt;
&lt;br /&gt;
Kenndaten der Prozesse (Auswahl):&lt;br /&gt;
* F Flags (z.B. ausgelagert; Systemprozess; Trace,...)&lt;br /&gt;
* UID Nutzer, mit dessen Rechten der Prozess ausgeführt wird&lt;br /&gt;
* PID Prozess - ID. Diese Nummer gibt eine eindeutige Prozess - Nummer&lt;br /&gt;
an. Sie wird vom System automatisch beim Starten des Prozesses&lt;br /&gt;
vergeben und ist für die Laufzeit eindeutig.&lt;br /&gt;
* PPID Prozessnumer der Eltern-Prozesses&lt;br /&gt;
* PRI Priorität eines Prozesses; je niedriger der Wert ist, desto besser&lt;br /&gt;
* NI ist der Nicewert des Prozesses; Nice erniedrigt den Grundwert&lt;br /&gt;
der Priorität des Prozesses und gibt damit Prozessorzeit für andere&lt;br /&gt;
Prozesse frei.&lt;br /&gt;
* SIZE Speichergröße des Prozesses inklusive Stack (eine Art Zwischenspeicher)&lt;br /&gt;
* RSS Verbrauch an physischen Speicher&lt;br /&gt;
* WCHAN ist der Name der Kernerlfunktion, in der der Prozess schläft&lt;br /&gt;
* STAT Status des Prozesses&lt;br /&gt;
R läuft       S schlafend     D nicht störbarer Schlaf&lt;br /&gt;
T angehalten  Z Zombie        W der Prozess belegt keine Seiten&lt;br /&gt;
* TIME Bisland benötigte Prozessorzeit&lt;br /&gt;
* SIZE ist die Größe von Text, Daten und Stack&lt;br /&gt;
* TTY die Nummer des kontrollierenden Teminal; wenn hier ein ? steht,&lt;br /&gt;
handelt es sich um einen Dämon oder Serverprozess.&lt;br /&gt;
* COMMAND Angabe des Prozesses selbst. Dies ist meist der Programmname.&lt;br /&gt;
&lt;br /&gt;
Weiteres&lt;br /&gt;
* GID Gruppe, unter der der Prozess läuft&lt;br /&gt;
* Verweis auf das aktuellen Arbeitsverzeichnis&lt;br /&gt;
* Um mit relativen Pfadangaben arbeiten zu können braucht man diesen Eintrag&lt;br /&gt;
* Tabelle mit Verweisen auf aktuell geöffnete Dateien&lt;br /&gt;
* 3 sind automatisch geöffnet Standardeingabe, Standardausgabe und&lt;br /&gt;
Standardfehlerkanal&lt;br /&gt;
&lt;br /&gt;
Beispiel&lt;br /&gt;
 root@zero:~# ps -l&lt;br /&gt;
 F S   UID   PID  PPID  C PRI  NI ADDR SZ WCHAN  TTY          TIME CMD&lt;br /&gt;
 4 R     0 18639 18631  0  80   0 -  1080 -      pts/0    00:00:00 bash&lt;br /&gt;
 0 R     0 25904 18639  0  80   0 -   635 -      pts/0    00:00:00 ps&lt;br /&gt;
&lt;br /&gt;
===Eltern und Kinder===&lt;br /&gt;
Jeder Prozess kann weitere Prozesse erzeugen. Die erzeugten Prozesse bezeichnet&lt;br /&gt;
man als Kindprozesse. Jeder Kindprozess weiß anhand der PID, woher er stammt.&lt;br /&gt;
&lt;br /&gt;
Alle Prozesse sind von einem anderen Prozess gestartet worden, mit Ausnahme&lt;br /&gt;
des Pseudoprozesses (noch im Kernel beim Starten erzeugter Prozess). Dieser hat&lt;br /&gt;
die Prozessnummer 0. Er hat die Aufgabe, den Init Prozess ( /sbin/init die Nummer&lt;br /&gt;
1) zu starten, der in System V alle anderen Prozesse direkt oder über seine Kind-&lt;br /&gt;
prozesse startet. (init wird konfiguriert durch die /etc/inittab)&lt;br /&gt;
&lt;br /&gt;
Es gibt zwei Arten wie ein Prozess gestartet werden kann:&lt;br /&gt;
&lt;br /&gt;
# Fork und Exec: Prozessumgebung wird dupliziert, der neue Prozess bekommt eine eigene neue PID&lt;br /&gt;
# Exec: Alter Prozess wird durch neuen Prozess überladen (geht mit dem shell-buildin exec)&lt;br /&gt;
&lt;br /&gt;
'''Rechte auf Objekte UID GID'''&lt;br /&gt;
Ob ein Prozess auf eine Datei zugreifen kann, entscheidet der Kernel anhand der&lt;br /&gt;
Zugriffssrechte, die auf der Datei gesetzt sind. Er checkt anhand der UID und GID&lt;br /&gt;
des Prozesses, ob es erlaubt ist. Mit dieser Technik wird letztendlich geprüft, was&lt;br /&gt;
ein User darf, und was nicht.&lt;br /&gt;
&lt;br /&gt;
===Rechenzeit und Priorität===&lt;br /&gt;
Da auch bei Prozessen eine Gerechtigkeit herschen muss, muss eine Instanz&lt;br /&gt;
darüber entscheiden wie lange ein Prozess Rechenzeit verbrauchen darf.&lt;br /&gt;
Folgende Kenndaten werden dazu benötigt&lt;br /&gt;
* clocktick = Zeiteinheit&lt;br /&gt;
* n = Faktor über den Kernel einstellbar&lt;br /&gt;
* slice = n &amp;lt;nowiki&amp;gt;*&amp;lt;/nowiki&amp;gt; clocktick&lt;br /&gt;
* agingtime = weitere Zeiteinheit über den Kernel einstellbar&lt;br /&gt;
&lt;br /&gt;
Es wird davon ausgegangen das der Prozess mit der niedrigsten Priorität gerade&lt;br /&gt;
rechnet. Pro clocktick erhöht sich die Priorität dieses Prozesses um eins.&lt;br /&gt;
&lt;br /&gt;
Jetzt können 3 Situationen eintreten die alle dazu führen das der Scheduler&lt;br /&gt;
aufgerufen wird.&lt;br /&gt;
&lt;br /&gt;
# Prozess blockiert wegen einer Ausgabe oder Eingabe.&lt;br /&gt;
# Gibt Rechenzeit freiwillig ab.&lt;br /&gt;
# Der Slice endet.&lt;br /&gt;
&lt;br /&gt;
Der Aufruf des Schedulers bewirkt das der Prozess mit der niedrigsten Priorität&lt;br /&gt;
gescheduled wird, er also nun rechnen darf. Nach Ablauf der agingtime werden&lt;br /&gt;
nun die Prozesse &amp;quot;gealtert&amp;quot;. Das geschieht nach folgender Formel&lt;br /&gt;
&lt;br /&gt;
Neue Priorität = Alte Priorität / 2 + Nicewert&lt;br /&gt;
&lt;br /&gt;
Der User hat die Möglichkeit, über den sogenannten Nicefaktor den Grundwert für&lt;br /&gt;
einen Prozess zu senken. Der Prozess braucht dann länger für seine Abarbeitung.&lt;br /&gt;
Er verhält sich somit netter zu den anderen Prozessen. Normale User können nur&lt;br /&gt;
netter werden, der Systemverwalter kann auch nicht netter (gemeiner) werden. Der&lt;br /&gt;
Bereich liegt zwischen 19 (sehr nett) bis 0 (weniger nett) für die User, und 19 bis&lt;br /&gt;
-20 für root.&lt;br /&gt;
&lt;br /&gt;
[[Image:pri.png]]&lt;br /&gt;
&lt;br /&gt;
'''Signale'''&lt;br /&gt;
&lt;br /&gt;
Mit den Kommando kill und killall kann man Prozessen Signale schicken&lt;br /&gt;
&lt;br /&gt;
 kill -Signalnummer PID &lt;br /&gt;
&lt;br /&gt;
Signalnummer&lt;br /&gt;
{| border=1 cellpadding=2&lt;br /&gt;
!Signalname&lt;br /&gt;
!Wert&lt;br /&gt;
!Aktion&lt;br /&gt;
|-&lt;br /&gt;
|SIGHUP&lt;br /&gt;
|1&lt;br /&gt;
|Neuinitialisierung eines Prozesses&lt;br /&gt;
|-&lt;br /&gt;
|SIGINT&lt;br /&gt;
|2&lt;br /&gt;
|Interrupt-Signal von der Tastatur (STRG+c)&lt;br /&gt;
|-&lt;br /&gt;
|SIGQUIT&lt;br /&gt;
|3&lt;br /&gt;
|Interrupt-Signal von der Tastatur (STRG+c) mit Dump&lt;br /&gt;
|-&lt;br /&gt;
|SIGKILL&lt;br /&gt;
|9&lt;br /&gt;
|unwiderrufliches Beendigungssignal (Töten)&lt;br /&gt;
|-&lt;br /&gt;
|SIGSEGV&lt;br /&gt;
|11&lt;br /&gt;
|Ungültige Speicherreferenz (bedeutet oft auf defekten Speicher)&lt;br /&gt;
|-&lt;br /&gt;
|SIGTERM &lt;br /&gt;
|15&lt;br /&gt;
|Beendigungssignal (geöffnete Dateien werden geschlossen)&lt;br /&gt;
|-&lt;br /&gt;
|SIGCONT &lt;br /&gt;
|18&lt;br /&gt;
|Weiterfahren, wenn gestoppt&lt;br /&gt;
|-&lt;br /&gt;
|SIGSTOP&lt;br /&gt;
|19&lt;br /&gt;
|Prozessstop&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Beispiel&lt;br /&gt;
 root@zero:~# kill -1 7562&lt;br /&gt;
&lt;br /&gt;
===Programme im Zusammenhang mit Prozessen===&lt;br /&gt;
* ps: Zeigt die Prozesse mit ihrem Status an&lt;br /&gt;
 root@zero:~# ps&lt;br /&gt;
  PID TTY          TIME CMD&lt;br /&gt;
 14134 pts/0    00:00:00 bash&lt;br /&gt;
 14149 pts/0    00:00:00 ps&lt;br /&gt;
&lt;br /&gt;
 root@zero:~# ps -elf | grep apache&lt;br /&gt;
 1 S root      5738     1  0  80   0 -  5461 select Jun16 ?        00:00:00 /usr/sbin/apache2 -k start&lt;br /&gt;
 5 S www-data  5739  5738  0  80   0 -  5581 inet_c Jun16 ?        00:00:00 /usr/sbin/apache2 -k start&lt;br /&gt;
 5 S www-data  5742  5738  0  80   0 -  5461 inet_c Jun16 ?        00:00:00 /usr/sbin/apache2 -k start&lt;br /&gt;
 5 S www-data  5743  5738  0  80   0 -  5461 inet_c Jun16 ?        00:00:00 /usr/sbin/apache2 -k start&lt;br /&gt;
 5 S www-data  5745  5738  0  80   0 -  5461 inet_c Jun16 ?        00:00:00 /usr/sbin/apache2 -k start&lt;br /&gt;
 5 S www-data  5746  5738  0  80   0 -  5461 inet_c Jun16 ?        00:00:00 /usr/sbin/apache2 -k start&lt;br /&gt;
 0 S root     14153 14134  0  80   0 -   837 pipe_w 16:59 pts/0    00:00:00 grep apache&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* nice: Lässt ein Programm mit verändertem Grundwert der Priorität laufen&lt;br /&gt;
 root@zero:~# nice&lt;br /&gt;
 0&lt;br /&gt;
 root@zero:~# nice -n 9 bash&lt;br /&gt;
 root@zero:~# nice&lt;br /&gt;
 9&lt;br /&gt;
 root@zero:~#&lt;br /&gt;
&lt;br /&gt;
* renice: Ändert den Grundwert der Priorität eines laufenden Prozesses&lt;br /&gt;
 root@zero:~# renice 10 5742&lt;br /&gt;
 5742: Alte Priorität: 0, neue Priorität: 10&lt;br /&gt;
&lt;br /&gt;
* top: Zeigt die Prozesse mit ihrem Status an (Abbrechen mit q)&lt;br /&gt;
 root@zero:~# top&lt;br /&gt;
&lt;br /&gt;
* pstree: Zeigt die Prozesse als Baumstruktur&lt;br /&gt;
 root@zero:~# pstree&lt;br /&gt;
 init─┬─NetworkManager&lt;br /&gt;
      ├─acpid&lt;br /&gt;
      ├─apache2───5*[apache2]&lt;br /&gt;
      ├─atd&lt;br /&gt;
      ├─bluetoothd&lt;br /&gt;
      ├─console-kit-dae───63*[{console-kit-dae}]&lt;br /&gt;
      ├─cron&lt;br /&gt;
      ├─cupsd&lt;br /&gt;
      ├─dbus-daemon&lt;br /&gt;
      ├─dd&lt;br /&gt;
      ├─gdm───gdm─┬─Xorg&lt;br /&gt;
      │           └─gdmgreeter&lt;br /&gt;
      ├─6*[getty]&lt;br /&gt;
      ├─hald───hald-runner─┬─hald-addon-acpi&lt;br /&gt;
      │                    ├─hald-addon-inpu&lt;br /&gt;
      │                    └─2*[hald-addon-stor]&lt;br /&gt;
      ├─klogd&lt;br /&gt;
      ├─nm-system-setti&lt;br /&gt;
      ├─nmbd&lt;br /&gt;
      ├─nscd───11*[{nscd}]&lt;br /&gt;
      ├─portmap&lt;br /&gt;
      ├─rpc.statd&lt;br /&gt;
      ├─slapd───2*[{slapd}]&lt;br /&gt;
      ├─smbd───smbd&lt;br /&gt;
      ├─sshd───sshd───bash───bash───pstree&lt;br /&gt;
      ├─syslogd&lt;br /&gt;
      ├─system-tools-ba&lt;br /&gt;
      ├─udevd&lt;br /&gt;
      ├─winbindd─┬─winbindd───winbindd&lt;br /&gt;
      │          └─3*[winbindd]&lt;br /&gt;
      └─wpa_supplicant&lt;br /&gt;
&lt;br /&gt;
===Jobs===&lt;br /&gt;
Unter einem Job versteht man ein Programm, welches man von der Shell gelöst&lt;br /&gt;
hat. D. h. man kann ganz normal weiter arbeiten und der Job verrichtet seinen&lt;br /&gt;
Dienst im Hintergrund. Man kann jederzeit zu diesem Job wieder Kontakt&lt;br /&gt;
aufnehmen.&lt;br /&gt;
&lt;br /&gt;
Ein Job kann auf 2 Arten gestarten werden:&lt;br /&gt;
&lt;br /&gt;
# Durch Anhängen des &amp;amp; Zeichens beim Programmstart&lt;br /&gt;
 root@zero:~# tail -f /var/log/messages &amp;amp;&lt;br /&gt;
 Jun 19 06:59:31 zero -- MARK --&lt;br /&gt;
 Jun 19 07:19:31 zero -- MARK --&lt;br /&gt;
 Jun 19 07:39:32 zero -- MARK --&lt;br /&gt;
 Jun 19 07:44:57 zero syslogd 1.5.0#5ubuntu3: restart.&lt;br /&gt;
 Jun 19 07:59:32 zero -- MARK --&lt;br /&gt;
 Jun 19 08:19:32 zero -- MARK --&lt;br /&gt;
 Jun 19 08:39:32 zero -- MARK --&lt;br /&gt;
 Jun 19 08:59:32 zero -- MARK --&lt;br /&gt;
 Jun 19 09:19:33 zero -- MARK --&lt;br /&gt;
 Jun 19 09:39:33 zero -- MARK --&lt;br /&gt;
 [3] 27421&lt;br /&gt;
&lt;br /&gt;
# Durch Stoppen des Prozesses durch Drücken von Strg-Z und in den Hintergrund schicken mit %n (n ist die Jobnummer)&lt;br /&gt;
 root@zero:~# watch cat /proc/cpuinfo&lt;br /&gt;
 Strg-Z&lt;br /&gt;
 [4]+  Stopped                 watch cat /proc/cpuinfo&lt;br /&gt;
 root@zero:~# bg %4&lt;br /&gt;
 [4]+ watch cat /proc/cpuinfo &amp;amp;&lt;br /&gt;
&lt;br /&gt;
Anweisungen im Zusammenhang mit Jobs (n ist die Jobnummer)&lt;br /&gt;
* bg %n : Einen Job in den Hintergrund stellen (wie oben)&lt;br /&gt;
* fg %n : Einen Job in den Vordergrund holen&lt;br /&gt;
 root@zero:~# fg %4&lt;br /&gt;
 watch cat /proc/cpuinfo&lt;br /&gt;
&lt;br /&gt;
* jobs : Aktive Jobs ausgeben&lt;br /&gt;
&lt;br /&gt;
 root@zero:~# jobs&lt;br /&gt;
 [1]   Running                 tail -f /var/log/syslog &amp;amp;&lt;br /&gt;
 [2]   Running                 tail -f /var/log/syslog &amp;amp;&lt;br /&gt;
 [3]-  Running                 tail -f /var/log/messages &amp;amp;&lt;br /&gt;
 [4]+  Stopped                 watch cat /proc/cpuinfo&lt;br /&gt;
&lt;br /&gt;
* Strg-Z : Einen Vordergrund-Job vorübergehend anhalten&lt;br /&gt;
* kill -STOP %n : Unterbricht Job im Hintergrund&lt;br /&gt;
 root@zero:~# kill -STOP %1&lt;br /&gt;
 root@zero:~# jobs&lt;br /&gt;
 [1]+  '''Stopped'''                 tail -f /var/log/syslog&lt;br /&gt;
 [2]   Running                 tail -f /var/log/syslog &amp;amp;&lt;br /&gt;
 [3]   Running                 tail -f /var/log/messages &amp;amp;&lt;br /&gt;
 [4]-  Stopped                 watch cat /proc/cpuinfo&lt;br /&gt;
* kill -CONT %n : Setzt den unterbrochenen Job im Hintergrund fort&lt;br /&gt;
root@zero:~# kill -CONT %1&lt;br /&gt;
root@zero:~# jobs&lt;br /&gt;
 [1]+  '''Running'''                 tail -f /var/log/syslog &amp;amp;&lt;br /&gt;
 [2]   Running                 tail -f /var/log/syslog &amp;amp;&lt;br /&gt;
 [3]   Running                 tail -f /var/log/messages &amp;amp;&lt;br /&gt;
 [4]-  Stopped                 watch cat /proc/cpuinfo&lt;br /&gt;
* kill -KILL %n : Tötet Job im Hintergrund&lt;br /&gt;
 root@zero:~# kill -KILL %1&lt;br /&gt;
 root@zero:~# jobs&lt;br /&gt;
 [1]+  '''Killed'''                  tail -f /var/log/syslog&lt;br /&gt;
 [2]   Running                 tail -f /var/log/syslog &amp;amp;&lt;br /&gt;
 [3]   Running                 tail -f /var/log/messages &amp;amp;&lt;br /&gt;
 [4]-  Stopped                 watch cat /proc/cpuinfo&lt;br /&gt;
 root@zero:~# jobs&lt;br /&gt;
 [2]   Running                 tail -f /var/log/syslog &amp;amp;&lt;br /&gt;
 [3]-  Running                 tail -f /var/log/messages &amp;amp;&lt;br /&gt;
 [4]+  Stopped                 watch cat /proc/cpuinfo&lt;br /&gt;
&lt;br /&gt;
Bedingungen, die zu Jobausführung eingehalten werden sollen:&lt;br /&gt;
* Der Job soll nicht auf den Bildschirm schreiben (Standardausgabe +Standardfehlerkanal).&lt;br /&gt;
* Er soll keine Eingaben vom Benutzer erwarten.&lt;br /&gt;
&lt;br /&gt;
==Suchen von Dateien==&lt;br /&gt;
===find===&lt;br /&gt;
 find ab_wo_wird_gesucht was_wird_gesucht aktion&lt;br /&gt;
 find [Pfad] [Bedingung] [Aktion]&lt;br /&gt;
&lt;br /&gt;
====Nach Namen====&lt;br /&gt;
 find [Pfad] '''-name''' [Name]&lt;br /&gt;
 &lt;br /&gt;
Finde alle Dateien mit Namen test ab dem Verzeichnis /home und gebe diese Zeilenweise aus&lt;br /&gt;
 root@zero:~# find /home -name test -print&lt;br /&gt;
 /home/xinux/test&lt;br /&gt;
 /home/test&lt;br /&gt;
&lt;br /&gt;
Wie oben, jedoch mit Namensanfang test&lt;br /&gt;
 root@zero:/home/xinux# find /home -name 'test*'&lt;br /&gt;
 /home/xinux/testdatei&lt;br /&gt;
 /home/xinux/test&lt;br /&gt;
 /home/test&lt;br /&gt;
&lt;br /&gt;
====Nach Benutzer(Eigentümer)====&lt;br /&gt;
 root@zero:/tmp# find /tmp/ '''-user''' xinux&lt;br /&gt;
 /tmp/datei&lt;br /&gt;
&lt;br /&gt;
====Nach Gruppe====&lt;br /&gt;
 root@zero:/tmp# find /tmp/ '''-group''' hacker&lt;br /&gt;
 /tmp/datei3&lt;br /&gt;
 /tmp/datei2&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
====Nach Typ====&lt;br /&gt;
Es wird nach Dateien anhand Ihrer Art gesucht:&lt;br /&gt;
 find [Pfad] '''-type''' [Typ] &lt;br /&gt;
Typ:&lt;br /&gt;
* f: Normale Dateien&lt;br /&gt;
 root@zero:~# find /tmp/ -type f&lt;br /&gt;
 /tmp/mbr.img&lt;br /&gt;
 /tmp/datei&lt;br /&gt;
 /tmp/zeugs&lt;br /&gt;
 /tmp/.X0-lock&lt;br /&gt;
* d: Verzeichnisse&lt;br /&gt;
 root@zero:~# find /var/log -type d&lt;br /&gt;
 /var/log&lt;br /&gt;
 /var/log/apache2&lt;br /&gt;
 /var/log/unattended-upgrades&lt;br /&gt;
 /var/log/apparmor&lt;br /&gt;
 /var/log/ConsoleKit&lt;br /&gt;
 /var/log/dist-upgrade&lt;br /&gt;
 /var/log/dist-upgrade/20090526-1052&lt;br /&gt;
 /var/log/cups&lt;br /&gt;
 /var/log/apt&lt;br /&gt;
 /var/log/fsck&lt;br /&gt;
 /var/log/samba&lt;br /&gt;
 /var/log/samba/cores&lt;br /&gt;
 /var/log/samba/cores/smbd&lt;br /&gt;
 /var/log/samba/cores/nmbd&lt;br /&gt;
 /var/log/samba/cores/winbindd&lt;br /&gt;
 /var/log/installer&lt;br /&gt;
 /var/log/gdm&lt;br /&gt;
 /var/log/news&lt;br /&gt;
* c: Char Devices (Zeichenorientierte Gerätedatei)&lt;br /&gt;
 root@zero:~# find / -type c&lt;br /&gt;
 /lib/udev/devices/kmem&lt;br /&gt;
 /lib/udev/devices/null&lt;br /&gt;
 /lib/udev/devices/console&lt;br /&gt;
 /lib/udev/devices/ppp&lt;br /&gt;
 /lib/udev/devices/net/tun&lt;br /&gt;
* b: Block Devices (Blockorientierte Gerätedatei)&lt;br /&gt;
* p: Benannte Pipe&lt;br /&gt;
* l: Links&lt;br /&gt;
* s: Sockets&lt;br /&gt;
&lt;br /&gt;
====Nach Modifikation====&lt;br /&gt;
Listet alle Dateien in /etc auf, die innerhalb von zwei Tagen modifiziert wurden&lt;br /&gt;
 root@zero:/var/log# find /etc/ -mtime 2 -print&lt;br /&gt;
 /etc/apache2&lt;br /&gt;
 /etc/apache2/mods-available&lt;br /&gt;
 /etc/apache2/conf.d&lt;br /&gt;
 /etc/apache2/sites-available&lt;br /&gt;
 /etc/bash_completion.d&lt;br /&gt;
 /etc/blkid.tab.old&lt;br /&gt;
 /etc/firefox-3.0/profile&lt;br /&gt;
 /etc/firefox-3.0/profile/chrome&lt;br /&gt;
 /etc/firefox-3.0/pref&lt;br /&gt;
 /etc/profile.d&lt;br /&gt;
 /etc/ufw/applications.d&lt;br /&gt;
 /etc/logrotate.d&lt;br /&gt;
 /etc/xulrunner-1.9&lt;br /&gt;
 /etc/blkid.tab&lt;br /&gt;
 /etc/cron.daily&lt;br /&gt;
 /etc/alternatives&lt;br /&gt;
 /etc/alternatives/x-www-browser&lt;br /&gt;
 /etc/alternatives/xulrunner&lt;br /&gt;
 /etc/gre.d&lt;br /&gt;
 /etc/hal/fdi/policy&lt;br /&gt;
 /etc/dbus-1/system.d&lt;br /&gt;
 /etc/udev/rules.d&lt;br /&gt;
&lt;br /&gt;
====Nach Größe====&lt;br /&gt;
Finde Dateien in /tmp, die größer als 100 MByte sind&lt;br /&gt;
 root@zero:/tmp# find /tmp/ -size +100M&lt;br /&gt;
 /tmp/datei&lt;br /&gt;
&lt;br /&gt;
Finde Dateien in /tmp, die kleiner als 100 KByte sind&lt;br /&gt;
 root@zero:/tmp# find /tmp/ -size -100k&lt;br /&gt;
 /tmp/&lt;br /&gt;
 /tmp/datei3&lt;br /&gt;
 /tmp/backup &lt;br /&gt;
 /tmp/datei2&lt;br /&gt;
 /tmp/.winbindd &lt;br /&gt;
 /tmp/.winbindd/pipe&lt;br /&gt;
 /tmp/mbr.img&lt;br /&gt;
 /tmp/zeugs&lt;br /&gt;
 /tmp/.ICE-unix&lt;br /&gt;
 /tmp/.X0-lock&lt;br /&gt;
 /tmp/datei1&lt;br /&gt;
 /tmp/.X11-unix&lt;br /&gt;
 /tmp/.X11-unix/X0&lt;br /&gt;
 /tmp/pulse-PKdhtXMmr18n&lt;br /&gt;
&lt;br /&gt;
====Nach Berechtigungen====&lt;br /&gt;
Finde Dateien in Home mit der Berechtigung 777 (-rwxrwxrwx)&lt;br /&gt;
 root@zero:/var# find /home/ -perm 777&lt;br /&gt;
 /home/samba&lt;br /&gt;
 /home/xinux/Examples&lt;br /&gt;
 /home/xinux/.pulse/1f0763ee4cf4c7e1d3c07fd149dda37b:runtime&lt;br /&gt;
 /home/test/Examples&lt;br /&gt;
&lt;br /&gt;
===locate===&lt;br /&gt;
Locate arbeitet über einen Index, der erstellt und aktualisiert werden muss. Aus diesem Grund kann locate teilweise nicht &lt;br /&gt;
akutell sein. Es ist immer schneller als find und es durchsucht immer das ganze Dateisystem. &lt;br /&gt;
 locate [Dateiname]&lt;br /&gt;
 &lt;br /&gt;
Lokalisiere die Datei wvdial.conf. Anmerkung: Der Stern wird beim Suchen automatisch hinzugefügt. Entspricht also&lt;br /&gt;
wvidal.conf*&lt;br /&gt;
 root@zero:~# locate wvdial.conf&lt;br /&gt;
 /etc/wvdial.conf&lt;br /&gt;
 /usr/share/man/man5/wvdial.conf.5.gz&lt;br /&gt;
 /var/lib/dpkg/info/wvdial.conffiles&lt;br /&gt;
 /var/lib/dpkg/info/wvdial.config&lt;br /&gt;
&lt;br /&gt;
Lokalisiere die Datei wvdial.conf und nur diese&lt;br /&gt;
 root@zero:~# locate -b '\wvdial.conf'&lt;br /&gt;
 /etc/wvdial.conf&lt;br /&gt;
&lt;br /&gt;
Aktualisieren des Indexes&lt;br /&gt;
 root@zero:~# updatedb&lt;br /&gt;
&lt;br /&gt;
==Wie wird ein Kommando lokalisiert==&lt;br /&gt;
Wenn die Shell alle Ersetzungen in der Kommandozeile vorgenommen und alle Umleitungen vorbereitet hat, ist der Zeitpunkt &lt;br /&gt;
gekommen, auf den der Anwender die ganze Zeit gewartet hat. Die Shell versucht das Kommando auszuführen. Dazu muss sie &lt;br /&gt;
es aber erst lokalisieren. Das erste passende Kommando wird ausgeführt.&lt;br /&gt;
&lt;br /&gt;
Als Kommandoname wird immer das erste Wort eines einfachen Kommandos erkannt. Ein Kommandoname kann mit Pfadnamen in &lt;br /&gt;
einem Verzeichnis (absolut oder relativ) angegeben werden. Die Shell erkennt dies an (mindestens) einem Slash `/' &lt;br /&gt;
im Kommandonamen. Wenn kein Verzeichnis angegeben ist, versucht die Shell selbst, das Kommando zu finden. Dazu wird &lt;br /&gt;
der Kommandoname zuerst in der Hashtabelle gesucht, dann wird er mit den Synonymen, mit den Scriptfunktionen und &lt;br /&gt;
schließlich mit den Shellfunktionen verglichen. &lt;br /&gt;
&lt;br /&gt;
Wird auf diese Weise kein Programm dieses Namens gefunden, werden alle in der PATH-Umgebungsvariablen aufgeführten &lt;br /&gt;
Verzeichnisse nach einer ausführbaren Datei dieses Namens durchsucht. Wird auch hier kein passendes Kommando gefunden, &lt;br /&gt;
gibt die Shell eine Fehlermeldung aus.&lt;br /&gt;
&lt;br /&gt;
===which und type===&lt;br /&gt;
====which====&lt;br /&gt;
which gibt die vollen Pfadnamen der Dateien aus, die bei Benutzung des angegebenen Befehls ausgeführt werden würden.&lt;br /&gt;
&lt;br /&gt;
 which [-a] Dateiname &lt;br /&gt;
&lt;br /&gt;
Optionen:&lt;br /&gt;
&lt;br /&gt;
* -a : Alle Treffer ausgeben, nicht nur den ersten&lt;br /&gt;
* --skip-dot : Verzeichnisse, die mit einem Punkt beginnen, auslassen&lt;br /&gt;
&lt;br /&gt;
Beispiel&lt;br /&gt;
 root@zero:~# which startx&lt;br /&gt;
 /usr/bin/startx&lt;br /&gt;
&lt;br /&gt;
====type====&lt;br /&gt;
Anzeigen der absoluten Pfadnamen von Befehlen, und ob sich diese Befehle in der Hash-Tabelle der aktuellen&lt;br /&gt;
Shell befinden.&lt;br /&gt;
&lt;br /&gt;
 type [Optionen] Befehle&lt;br /&gt;
&lt;br /&gt;
Beispiel&lt;br /&gt;
 root@zero:~# type ls&lt;br /&gt;
 ls is aliased to `ls --color=auto'&lt;br /&gt;
&lt;br /&gt;
Optionen:&lt;br /&gt;
&lt;br /&gt;
* -a : Alle vorkommenden Befehle werden ausgegeben, nicht nur das, welches aufgerufen werden würde&lt;br /&gt;
 root@zero:~# type '''-a''' ls&lt;br /&gt;
 ls is aliased to `ls --color=auto'&lt;br /&gt;
 ls is /bin/ls&lt;br /&gt;
&lt;br /&gt;
* -p : Anzeigen des Eintrags von Befehl in der Hash-Tabelle. Dieser Wert kann sich vom ersten Auftreten des Befehls in PATH&lt;br /&gt;
unterscheiden&lt;br /&gt;
 root@zero:~# type '''-p''' apache2&lt;br /&gt;
 /usr/sbin/apache2&lt;br /&gt;
&lt;br /&gt;
* -t : Anzeigen, ob Befehl ein Aliasname, ein Schlüsselwort, eine Funktion, ein eingebauter Befehl oder eine Datei ist&lt;br /&gt;
 root@zero:~# type '''-t''' apache2&lt;br /&gt;
 file&lt;/div&gt;</summary>
		<author><name>192.168.178.46</name></author>
	</entry>
	<entry>
		<id>https://www.xinux.net/index.php?title=Linux_Grundlagen&amp;diff=87</id>
		<title>Linux Grundlagen</title>
		<link rel="alternate" type="text/html" href="https://www.xinux.net/index.php?title=Linux_Grundlagen&amp;diff=87"/>
		<updated>2009-07-07T11:01:53Z</updated>

		<summary type="html">&lt;p&gt;192.168.178.46: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Einführung==&lt;br /&gt;
===Geschichte Unix===&lt;br /&gt;
====1969====&lt;br /&gt;
Am Anfang von Linux steht Multics, ein von Bell Laboratories geschaffenes &amp;quot;Betriebssystem&amp;quot;, &lt;br /&gt;
das noch mit Lochkarten arbeitete. Multics wird mit Unterstützung von AT&amp;amp;T und Western &lt;br /&gt;
Electric unter Mitarbeit von Ken Thompson und Dennis Ritchie weiterentwickelt. Obwohl sich &lt;br /&gt;
Bell Laboratories bald zurückzieht, gibt Thompson das Projekt nicht auf.  Zum Entwicklerteam &lt;br /&gt;
gehören auch Rudd Canaday und Brian Kernighan. Letzterer gibt 1970 dem Betriebssystem den Namen UNIX. &lt;br /&gt;
Thompson definiert 7 Richtlinien für UNIX:&lt;br /&gt;
 &lt;br /&gt;
# Hierarchische Anordnung der Dateisysteme&lt;br /&gt;
# Die Ausgabe von Daten an die Peripherie(-geräte) und Dateien soll gleich sein.&lt;br /&gt;
# Prozesse und Programme sollen miteinander kommunizieren.&lt;br /&gt;
# Multitasking (voneinander getrennte Prozesse)&lt;br /&gt;
# Persönliche Shell's&lt;br /&gt;
# Der Compiler soll für viele Programmiersprachen tauglich sein.&lt;br /&gt;
# Portabilität&lt;br /&gt;
&lt;br /&gt;
====1971====&lt;br /&gt;
Bis 1971 ist das für eine DEC PDP-7 geschriebene Unix als Version 1 auf eine PDP-11 portiert. Bis&lt;br /&gt;
zur Version 4 entwickelt Ritchie die Programmier- (Hoch-) Sprache C. Das in Assembler geschriebene&lt;br /&gt;
Unix wird fast völlig nach C übersetzt, wodurch zum erstenmal die geforderte Hardware-Unabhängigkeit&lt;br /&gt;
des Betriebssystems realisiert werden kann.&lt;br /&gt;
&lt;br /&gt;
====1975====&lt;br /&gt;
Da AT&amp;amp;T aufgrund vertraglicher Bindungen mit der US-Bundesregierung Unix nicht kommerziell vermarkten darf, stellt sie den Source Code für ein paar hundert Dollar den Universitäten, Lehr- und Forschungsanstalten zur Verfügung. Dies führt zu einer sehr dynamischen Entwicklung von Unix. 1975 wird die Version 6 als erstes UNIX-System veröffentlicht, die darauffolgende Version 7 wird sehr erfolgreich. Da es keine Standardisierung gibt, entwickeln bald verschiedenste Firmen ihr eigenes UNIX. Ab 1984 wird AT&amp;amp;T per Gerichtsbeschluss erlaubt, Unix zu vermarkten. AT&amp;amp;T verkauft sein Unix V und beginnt, sich um einen internationalen Standard von UNIX zu bemühen. &lt;br /&gt;
&lt;br /&gt;
====1984====&lt;br /&gt;
Durch Richard Stallman wird die Free Software Foundation (FSF) gegründet. Diese initiiert ein Projekt namens GNU (GNU ist Not Unix), welches das Ziel verfolgt, ein freies UNIX System zu schaffen. &lt;br /&gt;
&lt;br /&gt;
====1987====&lt;br /&gt;
AT&amp;amp;T verbietet die Verwendung des Unix Quellcodes an den Universitäten. Während dieser Zeit ist Andrew (Andy) Tannenbaum Professor an der Freien Universität von Amsterdam und entwickelt Minix. Minix ist ein kostengünstiges Lehrbetriebssystem und kommt ohne jeglichen AT&amp;amp;T Code aus, obwohl es die gleiche Funktionalität wie Unix 7 bietet. Im Usenet unter comp.os.minix entsteht eine Minix-Gemeinde, die den Minix Kernel und die Anwendungen rundherum programmiert und verbessert.&lt;br /&gt;
&lt;br /&gt;
====1991====&lt;br /&gt;
Linus Torvalds hat als Student für Computerwissenschaften an der Universität in Helsinki Minix installiert und das Buch von Andy Tannenbaum gelesen. Er beginnt im Sinne der FSF einen Unix ähnlichen Kernel zu programmieren mit der Idee, &amp;quot;ein besseres Minix als Minix&amp;quot; zu bauen. 1992 stellt er die Version 0.02 mit dem Namen Linux der Internetgemeinde zur Verfügung. &lt;br /&gt;
&lt;br /&gt;
====1994====&lt;br /&gt;
Die Linux Version 1.0 wird freigegeben. Das Linux Fieber beginnt... &lt;br /&gt;
&lt;br /&gt;
====1998====&lt;br /&gt;
Der Kreis der Linux Entwickler und Anwender ist kräftig angeschwollen. KDE 1.0 wird veröffentlicht. Die Zuwachsraten von Linux übertreffen die von Windows NT deutlich. &lt;br /&gt;
&lt;br /&gt;
====1999====&lt;br /&gt;
Der lange erwartete stabile Linux Kernel Version 2.2 wird freigegeben. Namhafte Firmen wie IBM kündigen ihre Unterstützung für Linux an. &lt;br /&gt;
&lt;br /&gt;
====2001====&lt;br /&gt;
Der lange erwartete stabile Linux Kernel Version 2.4 wird freigegeben. USB Unterstützung und eine neue Firewallimplementierung zeichnen ihn aus.&lt;br /&gt;
&lt;br /&gt;
====2003====&lt;br /&gt;
Linux Kernel Version 2.6 wird freigegeben. Am auffälligsten sind Änderungen bei der Modulverwaltung.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Distributionen===&lt;br /&gt;
{| Border=1 Cellpadding=2&lt;br /&gt;
| &lt;br /&gt;
|Url&lt;br /&gt;
|Paketformat&lt;br /&gt;
|-&lt;br /&gt;
|Red Hat&lt;br /&gt;
|www.redhat.com&lt;br /&gt;
|rpm&lt;br /&gt;
|-&lt;br /&gt;
|fedora&lt;br /&gt;
|fedora.redhat.com&lt;br /&gt;
|rpm&lt;br /&gt;
|-&lt;br /&gt;
|CentOS&lt;br /&gt;
|www.centos.org&lt;br /&gt;
|rpm&lt;br /&gt;
|-&lt;br /&gt;
|Suse/openSUSE&lt;br /&gt;
|www.opensuse.org&lt;br /&gt;
|rpm&lt;br /&gt;
|-&lt;br /&gt;
|Debian&lt;br /&gt;
|www.debian.org&lt;br /&gt;
|deb&lt;br /&gt;
|-&lt;br /&gt;
|Ubuntu&lt;br /&gt;
|www.ubuntu.com&lt;br /&gt;
|deb&lt;br /&gt;
|-&lt;br /&gt;
|Mandrake&lt;br /&gt;
|www.linux-mandrake.com&lt;br /&gt;
|rpm&lt;br /&gt;
|-&lt;br /&gt;
|Easy Linux&lt;br /&gt;
|www.easy-linux.de&lt;br /&gt;
|rpm&lt;br /&gt;
|-&lt;br /&gt;
|Turbo&lt;br /&gt;
|www.turbolinux.com&lt;br /&gt;
|rpm&lt;br /&gt;
|-&lt;br /&gt;
|minis&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|toms&lt;br /&gt;
|www.toms.net/rb&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|damn small linux&lt;br /&gt;
|www.damnsmalllinux.org&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|pocket-linux&lt;br /&gt;
|www.pocket-linux.org&lt;br /&gt;
|&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
====Bücher====&lt;br /&gt;
 Titel : Das Linux Anwenderhandbuch und Leitfaden für die Systemverwaltung&lt;br /&gt;
 Autor : Sebastian Hetze, Dirk Hohndel, Olaf Kirch und Martin Müller&lt;br /&gt;
 Verlag: Lunetix&lt;br /&gt;
 ISBN : 3-929764-06-7&lt;br /&gt;
&lt;br /&gt;
 Titel : Linux in a Nutshell&lt;br /&gt;
 Autor : Jessica Perry Hekman und die Mitarbeiter von O'Reilly &amp;amp; Associates&lt;br /&gt;
 Verlag: O'Reilly&lt;br /&gt;
 ISBN : 3-930673-57-6&lt;br /&gt;
&lt;br /&gt;
 Titel : Linux - Wegweiser zur Installation und Konfiguration&lt;br /&gt;
 Autor : Matt Welsh, Lar Kaufman, Matthias Kalle Dallheimer&lt;br /&gt;
 Verlag: O'Reilly&lt;br /&gt;
 ISBN : 3-930673-58-4 (deutsch), 1-56592-469-X (englisch)&lt;br /&gt;
&lt;br /&gt;
 Titel : Linux - Installation, Konfiguration, Anwendung&lt;br /&gt;
 Autor : Michael KoflerMultitasking&lt;br /&gt;
 Verlag: Addison-Wesley&lt;br /&gt;
 ISBN : 3-8273-1475-5&lt;br /&gt;
&lt;br /&gt;
 Titel : Linux - Wegweiser für Netzwerker&lt;br /&gt;
 Autor : Olaf Kirch&lt;br /&gt;
 Verlag: O'Reilly&lt;br /&gt;
 ISBN : 3-930673-18-5&lt;br /&gt;
&lt;br /&gt;
 Titel : TCP/IP-Netzwerk-Administration&lt;br /&gt;
 Autor : Craig Hunt&lt;br /&gt;
 Verlag: O'Reilly&lt;br /&gt;
 ISBN : 3-89721-110-6&lt;br /&gt;
&lt;br /&gt;
 Titel : Essential System Administration&lt;br /&gt;
 Autor : Eleen Frisch&lt;br /&gt;
 Verlag: O'Reilly&lt;br /&gt;
 ISBN : 1-56592-127-5&lt;br /&gt;
&lt;br /&gt;
==Betriebssystem==&lt;br /&gt;
===Was ist ein Betriebssystem?===&lt;br /&gt;
&lt;br /&gt;
Ein Betriebssystem liegt logisch gesehen zwischenAnwendungsprogramm und Hardware.&lt;br /&gt;
&lt;br /&gt;
Es nimmt die Anforderungen der Anwendungsprogramme entgegen und leitet&lt;br /&gt;
diese kontrolliert an die Hardware weiter. Kein Anwendungsprogramm sollte&lt;br /&gt;
direkt auf die Hardware zugreifen können. Den zentralen Zugang schafft einzig&lt;br /&gt;
das Betriebssystem. Somit kann das Betriebssystem unsinnige Anforderungen&lt;br /&gt;
oder Bedienungsfehler abblocken.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Image:Linux.jpg]]&lt;br /&gt;
&lt;br /&gt;
===Aufgaben eines Betriebssystems===&lt;br /&gt;
&lt;br /&gt;
# Verbergen der Komplexität der Maschine vor dem Anwender (Abstraktion)&lt;br /&gt;
# Bereitstellen einer Benutzerschnittstelle (&amp;quot;Kommandointerpreter&amp;quot;, &amp;quot;Shell&amp;quot;)&lt;br /&gt;
# Bereitstellen einer normierten Programmierschnittstelle (API)&lt;br /&gt;
# Verwaltung der Ressourcen der Maschine::&lt;br /&gt;
Hauptspeicher&lt;br /&gt;
Prozessor(en)&lt;br /&gt;
Hintergrundspeicher (Platte, Band, etc.)&lt;br /&gt;
Geräte (Terminal, Drucker, Plotter, etc.)&lt;br /&gt;
Rechenzeit&lt;br /&gt;
Koordination von Prozessen&lt;br /&gt;
&lt;br /&gt;
===Aufbau eines Betriebssystems===&lt;br /&gt;
&lt;br /&gt;
Ein Rechensystem besteht aus Hardware, Systemprogrammen und Anwendungs-&lt;br /&gt;
programmen. Unter einem Betriebssystem wird meist die Summe aus Betriebs-&lt;br /&gt;
systemkern (Kernel) und den wichtigsten Systemprogrammen verstanden. Ein&lt;br /&gt;
minimaler LINUX-Kernel besitzt ungefähr eine Größe von 400 - 800 kByte.&lt;br /&gt;
Weitere wichtige Systemkomponenten benötigen zusätzlich 10 - 100 Mbyte&lt;br /&gt;
Plattenplatz.&lt;br /&gt;
&lt;br /&gt;
Ein Betriebssystem stellt den Rechner als erweiterte Maschine (virtuelle&lt;br /&gt;
Maschine) über definierte Software-Schnittstellen zur Verfügung.&lt;br /&gt;
Das Betriebssystem dient als Betriebsmittelverwalter, der Anforderungen&lt;br /&gt;
befriedigt, protokolliert, abrechnet und vermittelt.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Aufgaben des Betriebssystemkerns:&lt;br /&gt;
&lt;br /&gt;
{| Border=1 Cellpadding=2&lt;br /&gt;
|Prozessverwaltung  (dispatching and scheduling)&lt;br /&gt;
| Mehrere Benutzer können mit mehreren Aktionen gleichzeitig im System arbeiten, ohne sich gegenseitig zu beeinflussen. Damit dies möglich ist,  müssen die Aktionen organisiert, koordiniert und verwaltet werden. Die zu verwaltende Einheit nennt man Prozess.&lt;br /&gt;
|-&lt;br /&gt;
|Speicherverwaltung   (memory management)&lt;br /&gt;
|Zuteilen von Speicherbereichen an laufende Prozesse, Schutz der Speicherbereiche vor unbefugten Zugriffen, bei Speicherengpässen: Auslagern von ganzen (swapping) oder von Teilen (paging) von Prozessen auf die Platte (swap file).&lt;br /&gt;
|-&lt;br /&gt;
|Dateiverwaltung  (file handling)&lt;br /&gt;
|Zuteilung von Plattenplatz für Programme, Benutzer und Systemdienste, Schreiben, Lesen und Strukturieren der Daten auf den Massenspeichern; Durch Bereitstellung einer entsprechenden Schnittstelle (VFS, virtual file system) kann der Kern Dateisysteme unterschiedlichster Art (EXT2, FAT, NFS, HPFS, NTFS, ...) ansprechen.&lt;br /&gt;
|-&lt;br /&gt;
|Geräteverwaltung  (resource management)&lt;br /&gt;
|Der Kern ermöglicht und kontrolliert den Zugriff auf die Hardware. Er steuert die Ein- und Ausgabetätigkeiten der Anwender. An den Kern&lt;br /&gt;
gebunden sind die entsprechenden Gerätetreiber (device driver), die damit eine Kommunikation zwischen Kern und Hardware ermöglichen.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
===Multitasking===&lt;br /&gt;
&lt;br /&gt;
Multitasking bedeutet, dass ein Rechner aus Anwendersicht mehrere Aufgaben&lt;br /&gt;
(Tasks) gleichzeitg übernehmen kann. Das Betriebssystem (OS) unterteilt die&lt;br /&gt;
gleichzeitig anstehenden Aufgaben in Einzelarbeitsschritte (Prozesse) und&lt;br /&gt;
managed durch ein Zeitscheibenverfahren (scheduling) die gleichmäßige&lt;br /&gt;
Abarbeitung der Prozesse.&lt;br /&gt;
&lt;br /&gt;
Es wird unterschieden zwischen:&lt;br /&gt;
&lt;br /&gt;
*non-präamptiven (kooperativen=die Ressourcen werden vom aktiven Prozess freigegeben, bei einem Hänger steht das ganze System)&lt;br /&gt;
&lt;br /&gt;
und&lt;br /&gt;
&lt;br /&gt;
*präamptiven (reinem=der Betriebssystemkern steuert Taskwechsel, indem nach einer festgelegten Zeit vom gerade aktiven Prozess zum nächsten weitergeschaltet wird)&lt;br /&gt;
&lt;br /&gt;
===Mehrprozessorbetrieb===&lt;br /&gt;
&lt;br /&gt;
Bei mehreren Prozessoren und Unterstützung durch das OS&lt;br /&gt;
(NT,Linux,Unix,Novell) können mehrere Tasks auf diese verteilt werden und&lt;br /&gt;
gleichzeitig bearbeitet werden. Nachteilig ist, dass dies nicht oder kaum von&lt;br /&gt;
Anwendungsprogrammen unterstützt wird und es zu Kommunikationsproblemen&lt;br /&gt;
zwischen den einzelnen Tasks kommen kann.&lt;br /&gt;
&lt;br /&gt;
===Arten von von Betriebssystemen===&lt;br /&gt;
&lt;br /&gt;
{|Border=1 Cellpadding=2&lt;br /&gt;
|&lt;br /&gt;
|SingleUser  &lt;br /&gt;
|Multiuser&lt;br /&gt;
|-&lt;br /&gt;
|Single Tasking&lt;br /&gt;
|MS - DOS&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|Multi Tasking&lt;br /&gt;
|Windows 3.x&lt;br /&gt;
|UNIX&lt;br /&gt;
|-&lt;br /&gt;
|&lt;br /&gt;
|Windows 95/98&lt;br /&gt;
|Linux&lt;br /&gt;
|-&lt;br /&gt;
|&lt;br /&gt;
|Windows NT4 ohne Erweiterungen&lt;br /&gt;
|VMS&lt;br /&gt;
|-&lt;br /&gt;
|&lt;br /&gt;
|OS/2 &lt;br /&gt;
|Windows NT mit  Erweiterungen&lt;br /&gt;
|-&lt;br /&gt;
|&lt;br /&gt;
|Apple&lt;br /&gt;
|Windows 2000, XP, 2003&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
===SHELL===&lt;br /&gt;
&lt;br /&gt;
Wenn man mit Linux arbeiten will, kann man nicht direkt mit dem Betriebssystem&lt;br /&gt;
kommunizieren. Man braucht dazu ein Hilfsprogramm, welches die&lt;br /&gt;
Kommandoeingaben ordnungsgemäß an das Betriebssystem weiterleitet. Dieses&lt;br /&gt;
Hilfsprogramm hat den Namen Shell.&lt;br /&gt;
&lt;br /&gt;
Die Shell schirmt den Betriebssystemkern von den Anwendungsprogrammen ab.&lt;br /&gt;
Die unterschiedlichen Shells erfüllen alle dieselbe Aufgabe, sie unterscheiden sich&lt;br /&gt;
allerdings in ihrer Syntax.&lt;br /&gt;
&lt;br /&gt;
==Die Installation im Überblick==&lt;br /&gt;
&lt;br /&gt;
Die Installation von Linux geschieht in folgenden Schritten:&lt;br /&gt;
&lt;br /&gt;
# Analyse (Welche Hardware habe ich? ,Hab ich weitere Betriebsysteme?)&lt;br /&gt;
# Booten des Linux-Kernels. (von CD oder Diskette)&lt;br /&gt;
# Laden einer RAM-Disk (das macht das Installationsprogramm automatisch).&lt;br /&gt;
# Partitionieren der Festplatte (fdisk).&lt;br /&gt;
# Einrichten der Swappartition (mkswap), Formatieren der Festplatte (mkfs).&lt;br /&gt;
# Montieren der Dateisysteme (mount), Aktivieren der Swapbereiche (swapon).&lt;br /&gt;
# Kopieren und Auspacken der Daten vom Installationsmedium auf die Festplatte (die eigentliche Installation). (rpm, dpkg oder tar).&lt;br /&gt;
# Geeignete Wahl der Bootmethode unter Berücksichtigung von Punkt 1 (grub, lilo).&lt;br /&gt;
# Konfiguration des Systems (Netz, Modem etc...).&lt;br /&gt;
&lt;br /&gt;
==Erste Schritte==&lt;br /&gt;
===Anmelden===&lt;br /&gt;
Sie können sich nun mit dem Usernamen und dem Passwort, das sie bei der Installation angelegt haben anmelden!&lt;br /&gt;
[[Image:benutzer.jpg]]&lt;br /&gt;
&lt;br /&gt;
[[Image:passwd.jpg]]&lt;br /&gt;
&lt;br /&gt;
===Terminal öffnen===&lt;br /&gt;
&lt;br /&gt;
Ein Terminal öffnen Sie über das Startmenü:&lt;br /&gt;
&lt;br /&gt;
[[Image:Terminalde.jpg]]&lt;br /&gt;
&lt;br /&gt;
Das geöffnete Terminal sieht dann folgendermaßen aus:&lt;br /&gt;
&lt;br /&gt;
[[Image:Terminalde2.jpg]]&lt;br /&gt;
&lt;br /&gt;
===Sudo===&lt;br /&gt;
Rootrechte erlangen sie über den &amp;quot;Sudo&amp;quot;-Befehl&lt;br /&gt;
 &lt;br /&gt;
''Den nächsten Befehl als root ausführen''&lt;br /&gt;
 xinux@zero:~$ sudo cat /etc/shadow&lt;br /&gt;
 [sudo] password for xinux:&lt;br /&gt;
&lt;br /&gt;
''Eine komplette Sitzung als root starten''&lt;br /&gt;
 xinux@zero:~$ sudo -i&lt;br /&gt;
 [sudo] password for xinux:&lt;br /&gt;
 root@zero:~#&lt;br /&gt;
&lt;br /&gt;
===Virtuelle Konsolen===&lt;br /&gt;
&lt;br /&gt;
In die Virtuelle Konsole gelangen sie über &amp;quot;STRG+ALT+(F1-F6)&amp;quot;.&lt;br /&gt;
Sie funktioniert wie ein ganz normales Terminal, und mit &amp;quot;ALT+F7&amp;quot;&lt;br /&gt;
gelangen sie wieder zurück auf die grafische Benutzeroberfläche&lt;br /&gt;
&lt;br /&gt;
===Abmelden===&lt;br /&gt;
&lt;br /&gt;
Abmelden können Sie sich wieder über das Startmenu unter:&lt;br /&gt;
&lt;br /&gt;
[[Image:Logout.jpg]]&lt;br /&gt;
&lt;br /&gt;
Fals sie nur einzelne Sitzungen in einem der Terminals oder &lt;br /&gt;
den Virtuellen Konsolen Abmelden wollen benutzen sie dazu den Befehl: &amp;quot;exit&amp;quot;&lt;br /&gt;
&lt;br /&gt;
===Herunterfahren===&lt;br /&gt;
&lt;br /&gt;
Das Herunterfahren funktioniert auf dem selben Weg.&lt;br /&gt;
&lt;br /&gt;
Entweder sie Benutzen wieder das Startmenü und benutzen diesmal den &amp;quot;Ausschalten ...&amp;quot; Knopf,&lt;br /&gt;
&lt;br /&gt;
Oder sie geben den äquivalenten &amp;quot;shutdown&amp;quot;-Befehl in einem Terminal bzw. der virtuellen Konsole ein.&lt;br /&gt;
&lt;br /&gt;
Allerdings müssen sie dazu als Administrator angemeldet sein s. &amp;quot;Sudo&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Wenn Sie den &amp;quot;shutdown&amp;quot;-Befehl benutzen wollen muss hinter den Befehl&lt;br /&gt;
&lt;br /&gt;
eine Zeitangabe in Minuten oder das wort &amp;quot;now&amp;quot; für sofortiges Ausschalten hinzugefügt werden:&lt;br /&gt;
&lt;br /&gt;
 xinux@zero:~$ sudo -i&lt;br /&gt;
 root@zero:~# shutdown 60&lt;br /&gt;
 &lt;br /&gt;
 Broadcast message from xinux@zero &lt;br /&gt;
         (/dev/pts/3) at 14:29 ...&lt;br /&gt;
 &lt;br /&gt;
 The system is going down for maintenance in 60 minutes!&lt;br /&gt;
&lt;br /&gt;
Sollten sie den Befehl widerrufen wollen dann drücken sie &amp;quot;STRG+C&amp;quot;,&lt;br /&gt;
&lt;br /&gt;
in dem Terminal in dem der shutdown Befehl gestartet wurde,&lt;br /&gt;
&lt;br /&gt;
oder geben sie den &amp;quot;shutdown&amp;quot;-Befehl zusammen mit der Abbruchoption &amp;quot;-c&amp;quot; in einem anderen Terminal ein:&lt;br /&gt;
&lt;br /&gt;
 root@zero:~# shutdown -c&lt;br /&gt;
&lt;br /&gt;
 shutdown: Shutdown cancelled&lt;br /&gt;
 root@zero:~# &lt;br /&gt;
&lt;br /&gt;
Wenn Sie den Rechner Neustarten möchten gibt es dazu die Option &amp;quot;-r&amp;quot; für den &amp;quot;shutdown&amp;quot;-Befehl&lt;br /&gt;
&lt;br /&gt;
oder den &amp;quot;reboot&amp;quot;-Befehl die beide auch als root ausgeführt werden müssen:&lt;br /&gt;
&lt;br /&gt;
 xinux@zero:~$ sudo -i&lt;br /&gt;
 [sudo] password for xinux: &lt;br /&gt;
 root@zero:~# shutdown -r now&lt;br /&gt;
&lt;br /&gt;
 root@zero:~# reboot&lt;br /&gt;
&lt;br /&gt;
===&amp;quot;man&amp;quot;===&lt;br /&gt;
&lt;br /&gt;
Programm zum Einsehen der Online-Manuals&lt;br /&gt;
&lt;br /&gt;
Die Manuals sind in folgende Sektionen unterteilt:&lt;br /&gt;
# Ausführbare Programme oder Shellbefehle&lt;br /&gt;
# Systemaufrufe (Kernelfunktionen)&lt;br /&gt;
# Bibliotheksaufrufe (Funktionen in System-Bibliotheken)&lt;br /&gt;
# Spezielle Dateien (gewöhnlich in /dev)&lt;br /&gt;
# Dateiformate und Konventionen, z. B. /etc/passwd&lt;br /&gt;
# Spiele&lt;br /&gt;
# Makropakete und Konventionen, z. B. man(7), groff(7)&lt;br /&gt;
# Systemadministrationsbefehle (in der Regel nur für root)&lt;br /&gt;
# Kernelroutinen [Nicht Standard]&lt;br /&gt;
&lt;br /&gt;
Aufruf eines Manuals erfolgt durch ''man kommando''&lt;br /&gt;
Beendet wird durch Drücken des Buchstabens q&lt;br /&gt;
Gesucht wird vorwärts durch Eingabe eines /suchausdruck&lt;br /&gt;
Gesucht wird rückwärts durch Eingabe eines ?suchausdruck&lt;br /&gt;
&lt;br /&gt;
Beispiele:&lt;br /&gt;
&lt;br /&gt;
      man passwd        Anschauen der Manualseite zum Programm passwd&lt;br /&gt;
      man 5 passwd      Anschauen der Manualseite zur Datei /etc/passwd&lt;br /&gt;
      man -a passwd     Anschauen aller Manualseiten zu passwd&lt;br /&gt;
      man -k passwd     Durchsucht die Kurzbeschreibungen der Manualseite&lt;br /&gt;
                        nach passwd und gibt alle Treffer aus&lt;br /&gt;
      man -f passwd      Gibt alle gefunden Kurzbescheibungen zu passwd aus&lt;br /&gt;
      man -L en passwd Gibt englische Manualseiten aus&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Was geht vor auf meinem System? (date,who)===&lt;br /&gt;
&lt;br /&gt;
Das Kommando date dient zur Abfrage von Datum und Uhrzeit.&lt;br /&gt;
&lt;br /&gt;
 xinux@zero:~ &amp;gt; date&lt;br /&gt;
 Fre Mär 16 16:35:03 CET 2001&lt;br /&gt;
&lt;br /&gt;
oder auch Anzeige der Grennwich Zeit:&lt;br /&gt;
&lt;br /&gt;
 xinux@zero:~ &amp;gt; date -u&lt;br /&gt;
 Fre Mär 16 15:35:34 UTC 2001&lt;br /&gt;
&lt;br /&gt;
 xinux@zero:~ &amp;gt; date -u &amp;quot;+%X&amp;quot;&lt;br /&gt;
 15:37:19&lt;br /&gt;
&lt;br /&gt;
 xinux@zero:~ &amp;gt; date -u &amp;quot;+%x&amp;quot;&lt;br /&gt;
 01/15/02&lt;br /&gt;
&lt;br /&gt;
who zeigt alle angemeldeten Benutzer an&lt;br /&gt;
&lt;br /&gt;
 thomas@cardassia:~ &amp;gt; who&lt;br /&gt;
 thomas             tty1 Feb 27 16:39&lt;br /&gt;
 thomas             tty2 Mar 2 17:08&lt;br /&gt;
 tina               tty6 Mar 16 16:38&lt;br /&gt;
&lt;br /&gt;
Mit `who --help' bekommen Sie mehr Informationen.&lt;br /&gt;
&lt;br /&gt;
 thomas@cardassia:~ &amp;gt; who --help&lt;br /&gt;
&lt;br /&gt;
Benutzung: who [OPTION]... [ DATEI | ARG1 ARG2 ]&lt;br /&gt;
&lt;br /&gt;
 -H, --heading             print line of column headings&lt;br /&gt;
 -i, -u, --idle            add user idle time as HOURS:MINUTES, . or old&lt;br /&gt;
 -l, --lookup              attempt to canonicalize hostnames via DNS&lt;br /&gt;
 -m                        only hostname and user associated with stdin&lt;br /&gt;
 -q, --count               all login names and number of users logged on&lt;br /&gt;
 -s                        (ignored)&lt;br /&gt;
 -T, -w, --mesg            add user's message status as +, - or ?&lt;br /&gt;
     --message             same as -T&lt;br /&gt;
     --writable            same as -T&lt;br /&gt;
     --help                display this help and exit&lt;br /&gt;
     --version             output version information and exit&lt;br /&gt;
&lt;br /&gt;
==Das UNIX-Dateisystem==&lt;br /&gt;
===Verzeichnisbaum===&lt;br /&gt;
&lt;br /&gt;
[[Image:vztree.jpg]]&lt;br /&gt;
&lt;br /&gt;
Das Betriebssystem UNIX besitzt ein hierarchisches Dateisystem. Es besteht aus:&lt;br /&gt;
* Dateien (Files)&lt;br /&gt;
Dateien speichern Informationen (Text, Bilder, Sound, Videos, Programme) und&lt;br /&gt;
werden über den Dateinamen angesprochen.&lt;br /&gt;
&lt;br /&gt;
* Verzeichnissen (Directories, Kataloge)&lt;br /&gt;
Verzeichnisse besitzen ebenfalls einen Namen und dienen zur Ordnung des&lt;br /&gt;
Dateisystems. Ein Verzeichnis kann Dateien und Unterverzeichnisse&lt;br /&gt;
(Subdirectories) enthalten. Das oberste Verzeichnis im Dateisystem heisst&lt;br /&gt;
Rootverzeichnis oder kurz Root und wird durch / (sprich: slash)&lt;br /&gt;
gekennzeichnet.&lt;br /&gt;
&lt;br /&gt;
Im Gegensatz zu Windows kennt UNIX keine Laufwerke.&lt;br /&gt;
Das obige Bild zeigt ein typisches UNIX-Dateisystem.&lt;br /&gt;
Unterhalb des Rootverzeichnisses befinden sich eine Vielzahl vonVerzeichnissen.&lt;br /&gt;
&lt;br /&gt;
===Wichtige Verzeichnisse===&lt;br /&gt;
&lt;br /&gt;
• '''Homeverzeichnis'''&lt;br /&gt;
&lt;br /&gt;
das Verzeichnis, in dem man sich unmittelbar nach dem Anmelden befindet. Das&lt;br /&gt;
Homeverzeichnis wird vom Systemverwalter eingerichtet; jeder Anwender&lt;br /&gt;
besitzt ein festes Homeverzeichnis. z.B. /home/hans&lt;br /&gt;
&lt;br /&gt;
~ (Tilde) bzw. $HOME (Shellvariable) kennzeichnen das Homeverzeichnis.&lt;br /&gt;
&lt;br /&gt;
• '''Aktuelles Verzeichnis'''&lt;br /&gt;
&lt;br /&gt;
Verzeichnis, in dem man sich aktuell befindet.&lt;br /&gt;
Das aktuelle Verzeichnis wird mit dem Befehl cd (change directory) oder per&lt;br /&gt;
Mausklick verändert.&lt;br /&gt;
Ein einfacher Punkt . kennzeichnet das aktuelle Verzeichnis.&lt;br /&gt;
&lt;br /&gt;
• '''Elternverzeichnis'''&lt;br /&gt;
&lt;br /&gt;
Verzeichnis unmittelbar oberhalb des aktuellen Verzeichnisses.&lt;br /&gt;
Jedes Verzeichnis ausser / besitzt genau ein Elternverzeichnis.&lt;br /&gt;
Zwei Punkte .. kennzeichnen das Elternverzeichnis (abhängig vom aktuellen&lt;br /&gt;
VZ).&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Absoluter Pfadname:===&lt;br /&gt;
&lt;br /&gt;
Beschreibt ausgehend vom Rootverzeichnis den Weg zum Zielverzeichnis oder zur&lt;br /&gt;
Zieldatei. (Welche Verzeichnisse müssen ausgehend von / durchlaufen werden, um&lt;br /&gt;
zum Ziel zu kommen?) Ein absoluter Pfadname beginnt immer mit / .&lt;br /&gt;
&lt;br /&gt;
===Relativer Pfadname:===&lt;br /&gt;
&lt;br /&gt;
Beschreibt ausgehend vom aktuellen Verzeichnis den Weg zum Zielverzeichnis&lt;br /&gt;
oder zur Zieldatei; ein relativer Pfadname beginnt nicht mit / .&lt;br /&gt;
/home/suxer&lt;br /&gt;
absoluter Pfadname für das Verzeichnis sub1 im Homeverzeichnis von suxer&lt;br /&gt;
&lt;br /&gt;
===Verzeichnisstruktur===&lt;br /&gt;
&lt;br /&gt;
 /bin         Kommandos die beim starten benötigt werden (Zugriff hat jeder)&lt;br /&gt;
 /sbin        Wichtige System-Programme (In der Regel root vorberhalten)&lt;br /&gt;
 /boot        Hier findet man die Dateien des Bootmanagers und des Kernel.&lt;br /&gt;
 /dev         In diesem Verzeichnis stehen die Gerätedateien (Devices),&lt;br /&gt;
 /home        Alle Heimatverzeichnisse der Nutzer findet man hier.&lt;br /&gt;
 /lib         Beim Systemstart benötigten Bibliotheken und Modules stehen hier.&lt;br /&gt;
 /mnt         Mountpunkt für temporäre Partitionen&lt;br /&gt;
 /opt         Software, die nicht Installationsumfang von Linux gehören.&lt;br /&gt;
 /root        Heimatverzeichnis des Administrators.&lt;br /&gt;
 /tmp         Temporäre Dateien können hier abgelegt werden&lt;br /&gt;
 /usr         statische Dateien (kann read-only gemountet sein)&lt;br /&gt;
 /var         variable Dateien (muss beschreibar sein )&lt;br /&gt;
 /etc         Konfiguartionsdateien und Startscripte&lt;br /&gt;
 /proc        Virtuelles Dateisystem -&amp;gt; repräsentiert den Kernel&lt;br /&gt;
&lt;br /&gt;
===Unterverzeichnisse von /usr===&lt;br /&gt;
&lt;br /&gt;
 sbin         Programme für root die beim Start nicht benötigt werden&lt;br /&gt;
 bin          Programme für alle die beim Start nicht benötigt werden&lt;br /&gt;
 X11R6        Dateien des X-Window-Sytems&lt;br /&gt;
 bin          Ausführbare Programme&lt;br /&gt;
 doc          Dokumentationen&lt;br /&gt;
 etc          Konfigurationsdateien&lt;br /&gt;
 games        Spiele&lt;br /&gt;
 include      Headerdateien für C-Programme&lt;br /&gt;
 local        Pakete die nicht zur Distribution gehören ähnlich /opt&lt;br /&gt;
 share        Pakete die von mehreren Paketen genutzt werden&lt;br /&gt;
 share/man    Die Manualpages&lt;br /&gt;
 share/info   Seiten des Infosystems&lt;br /&gt;
 share/doc    Dokumentationen&lt;br /&gt;
 src          Sources von Programmen (Kernel und andere)&lt;br /&gt;
&lt;br /&gt;
===Unterverzeichnisse von /var===&lt;br /&gt;
&lt;br /&gt;
 cache        Zwischenspreicher für Progammes&lt;br /&gt;
 games        Variable Daten der Games (Scores etc...)&lt;br /&gt;
 lock         Sperrdateien&lt;br /&gt;
 log          Die Logdateien (wichtiges Verzeichnis für Admins)&lt;br /&gt;
 mail         Das Mailsystem&lt;br /&gt;
 run          Dateien zu laufemdem Prozessen&lt;br /&gt;
 spool        Spooldateien (z.B. für das Drucksystem&lt;br /&gt;
 state        Statusinfos&lt;br /&gt;
 tmp          Wie /tmp eventuell nicht auf root Partion&lt;br /&gt;
&lt;br /&gt;
==Einfache Komandos==&lt;br /&gt;
===cd: Wechseln des Arbeitsverzeichnis===&lt;br /&gt;
&lt;br /&gt;
Um festzustellen in welchem Verzeichnis man sich befindet, sollte man den&lt;br /&gt;
Befehl &amp;quot;pwd&amp;quot; benutzen,&lt;br /&gt;
&lt;br /&gt;
und mit dem Befehl &amp;quot;cd&amp;quot; kann man zwischen den Verzeichnissen wechseln:&lt;br /&gt;
&lt;br /&gt;
Wechsele ins homeverzeichnis von Xinux&lt;br /&gt;
&lt;br /&gt;
 xinux@zero:~$ cd /home/xinux/&lt;br /&gt;
 xinux@zero:~$ pwd&lt;br /&gt;
 /home/xinux&lt;br /&gt;
&lt;br /&gt;
cd ~ -&amp;gt; wechsele ins jeweilige Homeverzeichnis&lt;br /&gt;
&lt;br /&gt;
cd .. -&amp;gt; wechsele ein Verzeichnis höher&lt;br /&gt;
&lt;br /&gt;
cd ../verzeichnis -&amp;gt; wechsele in eine paralleles Verzeichnis &amp;lt;- (ist eine relative Pfadangabe !)&lt;br /&gt;
&lt;br /&gt;
cd - -&amp;gt; wechsele in das Verzeichnis, in dem vorher gearbeitet wurde.&lt;br /&gt;
&lt;br /&gt;
Mit cd / wechselt man in das Wurzelverzeichnis.&lt;br /&gt;
&lt;br /&gt;
 xinux@zero:/var/log$ cd /&lt;br /&gt;
 xinux@zero:/$ pwd&lt;br /&gt;
 /&lt;br /&gt;
&lt;br /&gt;
===ls: Listing===&lt;br /&gt;
&lt;br /&gt;
Den Inhalt von Verzeichnissen kann man sich mit dem Befehl &amp;quot;ls&amp;quot; anzeigen lassen&lt;br /&gt;
wobei &amp;quot;ls&amp;quot; eine Vielzahl von Optionen besitzt:&lt;br /&gt;
&lt;br /&gt;
 ls                                  standard&lt;br /&gt;
 ls -l                               langes listing&lt;br /&gt;
 ls -a                               alle Dateien&lt;br /&gt;
 ls -i                               mit Inode&lt;br /&gt;
 ls -h                               gut lesbare Dateigröße&lt;br /&gt;
 ls -d                               Verzechnis wird angezeigt, nicht der Inhalt&lt;br /&gt;
 ls -L                               sortiert nach Größe&lt;br /&gt;
 ls -t                               sortiert nach Datum&lt;br /&gt;
 ls -F                               mit nützlichem Anhang&lt;br /&gt;
&lt;br /&gt;
 xinux@zero:/$ ls -l /var/log/messages&lt;br /&gt;
 -rw-r----- 1 syslog adm 2296 2009-06-16 10:05 /var/log/messages&lt;br /&gt;
&lt;br /&gt;
===more: Seitenweises Anzeigen von Seiten===&lt;br /&gt;
 root@zero:~# more /var/log/messages&lt;br /&gt;
 ...&lt;br /&gt;
&lt;br /&gt;
===head: erste Zeilen anzeigen===&lt;br /&gt;
Erste 10 Zeilen anzeigen&lt;br /&gt;
 root@zero:~# head /var/log/messages&lt;br /&gt;
 Jun 15 12:37:08 zero syslogd 1.5.0#5ubuntu3: restart.&lt;br /&gt;
 Jun 15 12:38:43 zero kernel: [  830.065036] mtrr: your processor doesn't support write-combining&lt;br /&gt;
 Jun 15 12:46:05 zero pulseaudio[4817]: pid.c: Stale PID file, overwriting.&lt;br /&gt;
 Jun 15 13:05:24 zero -- MARK --&lt;br /&gt;
 ...&lt;br /&gt;
&lt;br /&gt;
Erste zwei Zeilen anzeigen&lt;br /&gt;
 root@zero:~# head -n 2 /var/log/messages&lt;br /&gt;
 Jun 15 12:37:08 zero syslogd 1.5.0#5ubuntu3: restart.&lt;br /&gt;
 Jun 15 12:38:43 zero kernel: [  830.065036] mtrr: your processor doesn't support write-combining&lt;br /&gt;
&lt;br /&gt;
===tail: letzte Zeilen anzeigen===&lt;br /&gt;
 &lt;br /&gt;
 root@zero:~# tail /var/log/syslog&lt;br /&gt;
 ...&lt;br /&gt;
 Jun 19 11:19:35 zero -- MARK --&lt;br /&gt;
 Jun 19 11:39:35 zero -- MARK --&lt;br /&gt;
 Jun 19 11:59:36 zero -- MARK --&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Letze 5 Zeilen anzeigen&lt;br /&gt;
 root@zero:~# tail -n 5 /var/log/auth.log&lt;br /&gt;
 Jun 18 14:30:01 zero CRON[12040]: pam_unix(cron:session): session closed for user root&lt;br /&gt;
 Jun 18 14:39:01 zero CRON[12191]: pam_unix(cron:session): session opened for user root by (uid=0)&lt;br /&gt;
 Jun 18 14:39:01 zero CRON[12191]: pam_unix(cron:session): session closed for user root&lt;br /&gt;
 Jun 18 14:40:01 zero CRON[12237]: pam_unix(cron:session): session opened for user root by (uid=0)&lt;br /&gt;
 Jun 18 14:40:01 zero CRON[12237]: pam_unix(cron:session): session closed for user root&lt;br /&gt;
&lt;br /&gt;
Letze Zeilen anzeigen und fortlaufend aktualisieren&lt;br /&gt;
 root@zero:~# tail -f /var/log/syslog&lt;br /&gt;
 ...&lt;br /&gt;
&lt;br /&gt;
===mkdir: Ein neues Verzeichnis erstellen===&lt;br /&gt;
&lt;br /&gt;
 mkdir        verzeichnis&lt;br /&gt;
Erstellt ein Verzeichnis im working directory (wd)&lt;br /&gt;
&lt;br /&gt;
 mkdir  -p    ver1/ver2&lt;br /&gt;
Erstellt ein Verzeichnis ver2 unterhalb von ver1&lt;br /&gt;
wenn ver1 nicht existiert wird es erstellt&lt;br /&gt;
&lt;br /&gt;
 mkdir -m 753 ver1&lt;br /&gt;
Es wird das Verzeichnis ver1 erstellt mit der mask 753&lt;br /&gt;
&lt;br /&gt;
 mkdir -v     ver1&lt;br /&gt;
Geschwätzige Ausgabe :)&lt;br /&gt;
&lt;br /&gt;
===Zum Löschen von leeren Verzeichnissen wird rmdir benutzt===&lt;br /&gt;
&lt;br /&gt;
 rmdir           ver1&lt;br /&gt;
Löscht das leere Verzeichnis ver1&lt;br /&gt;
&lt;br /&gt;
 rmdir -v        ver1&lt;br /&gt;
Löscht das leere Verzeichnis ver1 und ist geschwätzig&lt;br /&gt;
&lt;br /&gt;
 rmdir -p        /ver1/ver2/ver3&lt;br /&gt;
Löscht das Verzeichnis ver3; wenn dadurch ver2 ein leeres&lt;br /&gt;
Verzeichnis wird, wird dieses auch gelöscht , wenn ver1&lt;br /&gt;
dadurch ein leeres Verzeichnis wird, wird auch dieses gelöscht.&lt;br /&gt;
&lt;br /&gt;
===touch Verändern des Zeitstempels===&lt;br /&gt;
&lt;br /&gt;
Mit touch können wir eine neue leere Datei erzeugen (das ist nicht der eigentliche&lt;br /&gt;
Zweck von touch, eigentlich wird der Zeitstempel geändert)&lt;br /&gt;
&lt;br /&gt;
 touch            dateiname&lt;br /&gt;
&lt;br /&gt;
===Kopieren=== &lt;br /&gt;
cp ist das Kommando um Dateien zu kopieren &lt;br /&gt;
&lt;br /&gt;
Eine Kopie von dat1 mit dem Namen dat2 erstellen:&lt;br /&gt;
&lt;br /&gt;
 xinux@zero:~$ cp dat1 dat2&lt;br /&gt;
&lt;br /&gt;
Eine Kopie von dat1 ins Verzeichnis ver2 erstellen:&lt;br /&gt;
&lt;br /&gt;
 xinux@zero:~$ cp dat1 ver2/&lt;br /&gt;
 &lt;br /&gt;
Eine Kopie erstellen mit ausführlicher Anzeige:&lt;br /&gt;
&lt;br /&gt;
 xinux@zero:~$ cp -v dat1 dat2&lt;br /&gt;
 `dat1' -&amp;gt; `dat2'&lt;br /&gt;
&lt;br /&gt;
Eine Kopie erstellen mit Rückfrage fals etwas überschrieben wird:&lt;br /&gt;
&lt;br /&gt;
 xinux@zero:~$ cp -i dat1 dat2&lt;br /&gt;
 cp: overwrite `dat2'?&lt;br /&gt;
&lt;br /&gt;
Eine Kopie erstellen und die Rückfrage überbrücken:&lt;br /&gt;
&lt;br /&gt;
 xinux@zero:~$ cp -f dat1 dat2&lt;br /&gt;
&lt;br /&gt;
Eine Kopie von dat1 ins Verzeichnis ver2 erstellen fals keine neuere Version von dat1 vorliegt:&lt;br /&gt;
&lt;br /&gt;
 xinux@zero:~$ cp -u dat1 ver2/&lt;br /&gt;
&lt;br /&gt;
Eine Kopie erstellen fals ver2 auf dem selben Dateisystem wie dat1 liegt:&lt;br /&gt;
&lt;br /&gt;
 xinux@zero:~$ cp -x dat1 ver2/&lt;br /&gt;
&lt;br /&gt;
Eine Kopie von ver1, die als ver2 oder unter ver2 als ver1 gespeichert wird erstellen:&lt;br /&gt;
&lt;br /&gt;
 xinux@zero:~$ cp -r ver1/ ver2/&lt;br /&gt;
&lt;br /&gt;
Eine Kopie von einer Datei erstellen und ihre Attribute beibehalten:&lt;br /&gt;
&lt;br /&gt;
 xinux@zero:~$ cp -p sux1 sux2&lt;br /&gt;
&lt;br /&gt;
Eine Kopie erstellen bei der die Links erhalten bleiben:&lt;br /&gt;
&lt;br /&gt;
 xinux@zero:~$ cp -r ver1/ ver2/&lt;br /&gt;
&lt;br /&gt;
Eine Kopie erstellen zum Archivieren (-dpr):&lt;br /&gt;
&lt;br /&gt;
 xinux@zero:~$ cp -a ver1/ ver2/&lt;br /&gt;
&lt;br /&gt;
===rm: Löschen einer Datei===&lt;br /&gt;
&lt;br /&gt;
Um Dateien zu löschen, brauchen wir das Kommando &amp;quot;rm&amp;quot;:&lt;br /&gt;
&lt;br /&gt;
 rm               dat1        dat1 wird gelöscht&lt;br /&gt;
 rm         -i    dat1        dat1 wird nach Bestätigung gelöscht&lt;br /&gt;
 rm         -f    dat1        dat1 wird ohne Rückfragen gelöscht&lt;br /&gt;
 rm         -v    dat1        dat1 wird glöscht (geschwätzige Ausgabe)&lt;br /&gt;
 rm         -r    ver1        Löschen von nicht leeren Verzeichnissen&lt;br /&gt;
                              Achtung !!! Als root kann man sich damit Teile&lt;br /&gt;
                              oder sogar den gesamten Verzeichnisbaum&lt;br /&gt;
                              absägen !!!&lt;br /&gt;
&lt;br /&gt;
===mv: Verschieben===&lt;br /&gt;
&lt;br /&gt;
Mit dem Befehl &amp;quot;mv&amp;quot; werden Daten verschoben, folgendes gilt:&lt;br /&gt;
&lt;br /&gt;
 mv          dat1 dat2         &lt;br /&gt;
Die Datei dat1 wird in dat2 umbenannt&lt;br /&gt;
 mv          dat1 /ver1        &lt;br /&gt;
Die Datei dat1 wird nach /ver1 verschoben&lt;br /&gt;
&lt;br /&gt;
Die Parameter und ihre Bedeutung:&lt;br /&gt;
&lt;br /&gt;
      -i                      wenn eine Datei exisitiert wird vor dem&lt;br /&gt;
                              Überschreiben nachgefragt&lt;br /&gt;
      -v                      verbose (geschwätzig)&lt;br /&gt;
      -u                      nur neuere Daten werden bei Bedarf überschrieben&lt;br /&gt;
      -b                      wenn überschrieben werden soll, wird ein Backup&lt;br /&gt;
                              erstellt&lt;br /&gt;
      -S ENDUNG               das Backup bekommt die Endung ENDUNG&lt;br /&gt;
&lt;br /&gt;
===su Benutzer wechseln===&lt;br /&gt;
&lt;br /&gt;
 su -             &lt;br /&gt;
Wechsel zum Rootaccount, wie wenn dieser sich neu anmelden würde. (Bsp: su -)&lt;br /&gt;
&lt;br /&gt;
 su Benutzernamen &lt;br /&gt;
Wechsel der Identität zu Benutzer (gegebenenfalls Passwortabfrage)&lt;br /&gt;
&lt;br /&gt;
 su -c Kommando   &lt;br /&gt;
Kommando wird als rootaccount ausgeführt&lt;br /&gt;
&lt;br /&gt;
==Der Standard Editor vi==&lt;br /&gt;
Der vi ist der Standardeditor in der Unixwelt. Er ist in jedem Unix-Derivat&lt;br /&gt;
enthalten.&lt;br /&gt;
Der Editor hat zwar den schlechten Ruf umständlich zu bedienen zu sein, ist&lt;br /&gt;
jedoch sehr leistungsfähig und systemübergreifend verfügbar. Beim vi handelt es&lt;br /&gt;
sich um einen rein textorientierten Editor, der mittels eigener Kommandos&lt;br /&gt;
gesteuert wird.&lt;br /&gt;
&lt;br /&gt;
Der Editor VIM ist eine weitere Verbesserung von VI und leichter zu bedienen.&lt;br /&gt;
Und unter Ubuntu/Debian mit &amp;quot;apt-get install vim&amp;quot; zu installieren.&lt;br /&gt;
&lt;br /&gt;
===Starten des Editors:===&lt;br /&gt;
&lt;br /&gt;
Der Editorstart erfolgt einfach durch die Eingabe des Kommandos vi mit dem&lt;br /&gt;
Dateinamen der zu editierenden Datei als Parameter.&lt;br /&gt;
Beispiel:        &lt;br /&gt;
 vi sux.txt&lt;br /&gt;
&lt;br /&gt;
===Die Betriebsmodi des vi:===&lt;br /&gt;
&lt;br /&gt;
Ein Umstand, der dem vi den Ruf der komplizierten Bedienbarkeit zugetragen hat,&lt;br /&gt;
sind die unterschiedlichen Betriebsmodi des Editors. Genauer gesagt verfügt der&lt;br /&gt;
vi über drei Betriebsmodi:&lt;br /&gt;
&lt;br /&gt;
====Kommandomodus:====&lt;br /&gt;
&lt;br /&gt;
Innerhalb dieses Modus werden die eingegebenen Zeichen direkt als Befehle des&lt;br /&gt;
Editors interpretiert und ausgeführt. Dabei gibt es weder ein Bereitschaftszeichen&lt;br /&gt;
(Prompt) noch ein Echo (Ausgabe). Der Kommandomodus ist der Modus, in dem&lt;br /&gt;
sich der vi direkt nach seinem Start befindet.&lt;br /&gt;
&lt;br /&gt;
====Zeilenmodus oder Exmodus:====&lt;br /&gt;
&lt;br /&gt;
Dieser Modus ist der einzige Modus mit einem eigenen Bereitschaftszeichen,&lt;br /&gt;
nämlich dem Doppelpunkt (:). Das Prompt wird ebenso wie die Befehlsausgaben&lt;br /&gt;
in der Statuszeile angezeigt.&lt;br /&gt;
&lt;br /&gt;
====Eingabemodus:====&lt;br /&gt;
&lt;br /&gt;
Der Eingabemodus ist derjenige, in welchem der zu bearbeitende Text bearbeitet&lt;br /&gt;
werden kann. Alle hier eingegebenen Zeichen werden als Text für die aktuelle&lt;br /&gt;
Datei interpretiert. Zwischen den unterschiedlichen Modi kann jederzeit&lt;br /&gt;
gewechselt werden. Von Kommandomodus gelangen Sie durch mehere Wege in&lt;br /&gt;
den Eingabemodus. Man kann durch folgende Aktionen wechslen&lt;br /&gt;
&lt;br /&gt;
{| border=1 cellpadding=2&lt;br /&gt;
|i&lt;br /&gt;
|Text vor der aktuellen Cursorposition einfügen&lt;br /&gt;
|-&lt;br /&gt;
|I&lt;br /&gt;
|Text am Zeilenanfang einfügen&lt;br /&gt;
|-&lt;br /&gt;
|a&lt;br /&gt;
|Text hinter der aktuellen Cursorposition einfügen&lt;br /&gt;
|-&lt;br /&gt;
|A&lt;br /&gt;
|Text am Zeilenende einfügen&lt;br /&gt;
|-&lt;br /&gt;
|o&lt;br /&gt;
|Unterhalb der aktuellen Zeile eine neue Zeile einfügen&lt;br /&gt;
|-&lt;br /&gt;
|O&lt;br /&gt;
|Oberhalb der aktuellen Zeile eine neue Zeile einfügen&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Durch das Drücken der ESC - Taste gelangt man in den Kommandomodus zurück.&lt;br /&gt;
&lt;br /&gt;
Im Kommandomodus können Sie durch den Text navigieren und auch den Text&lt;br /&gt;
selbst bearbeiten, z.B ausschneiden, kopieren usw. Dazu sind einige Kommandos&lt;br /&gt;
nötig, von denen die wichtigsten im Folgenden erläutert werden:&lt;br /&gt;
&lt;br /&gt;
 xinux@zero:/$ vi iwas.txt&lt;br /&gt;
&lt;br /&gt;
[[Image:vim.jpg]]&lt;br /&gt;
&lt;br /&gt;
===Benutzen des Kommandomodus===&lt;br /&gt;
====Steuerung des Cursors durch den Text====&lt;br /&gt;
&lt;br /&gt;
Mittels folgender Kommandos bewegt sich der Cursor durch den Text:&lt;br /&gt;
&lt;br /&gt;
{| border=1 cellpadding=2&lt;br /&gt;
|h&lt;br /&gt;
|Cursor ein Zeichen nach links&lt;br /&gt;
|-&lt;br /&gt;
|l&lt;br /&gt;
|Cursor ein Zeichen nach rechts&lt;br /&gt;
|-&lt;br /&gt;
|k&lt;br /&gt;
|Cursor eine Zeile nach oben&lt;br /&gt;
|-&lt;br /&gt;
|j&lt;br /&gt;
|Cursor eine Zeile nach unten&lt;br /&gt;
|-&lt;br /&gt;
|w&lt;br /&gt;
|Cursor ein Wort nach rechts&lt;br /&gt;
|-&lt;br /&gt;
|b&lt;br /&gt;
|Cursor ein Wort nach links&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Alle diese Kommandos können mit einem vorgestellten Wiederholungsfaktor&lt;br /&gt;
arbeiten. Der Befehl 3w verschiebt demnach den Cursor um 3 Wörter nach rechts.&lt;br /&gt;
&lt;br /&gt;
====Angaben zur Positionierung====&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{| border=1 cellpadding=2&lt;br /&gt;
|STRG+U&lt;br /&gt;
|1⁄2 Bildschirmseite nach oben&lt;br /&gt;
|-&lt;br /&gt;
|STRG+D&lt;br /&gt;
|1⁄2 Bildschirmseite nach unten&lt;br /&gt;
|-&lt;br /&gt;
|STRG+B&lt;br /&gt;
|1 Bildschirmseite nach oben&lt;br /&gt;
|-&lt;br /&gt;
|STRG+F&lt;br /&gt;
|1 Bildschirmseite nach unten&lt;br /&gt;
|-&lt;br /&gt;
|/Ausdruck&lt;br /&gt;
|Sucht den Ausdruck (vorwärts) Weitersuchen mit n , N&lt;br /&gt;
|-&lt;br /&gt;
|?Ausdruck&lt;br /&gt;
|Sucht den Ausdurck (rückwärts) Weitersuchen mit n , N&lt;br /&gt;
|-&lt;br /&gt;
|0&lt;br /&gt;
|Zeilenanfang&lt;br /&gt;
|-&lt;br /&gt;
|$&lt;br /&gt;
|Zeilenende&lt;br /&gt;
|-&lt;br /&gt;
|w&lt;br /&gt;
|Nächstes Wort&lt;br /&gt;
|-&lt;br /&gt;
|b&lt;br /&gt;
|Vorheriges Wort&lt;br /&gt;
|-&lt;br /&gt;
|fc&lt;br /&gt;
|Auf das Zeichen c springen. c steht für ein beliebiges Zeichen&lt;br /&gt;
|-&lt;br /&gt;
|G&lt;br /&gt;
|Letzte Zeile der Datei&lt;br /&gt;
|-&lt;br /&gt;
|ng&lt;br /&gt;
|n-te Zeile der Datei&lt;br /&gt;
|-&lt;br /&gt;
|H&lt;br /&gt;
|Anfang der Bildschirmseite&lt;br /&gt;
|-&lt;br /&gt;
|L&lt;br /&gt;
|Ende der Bildschirmseite&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
====Befehle zur Textbearbeitung -&amp;gt; Was soll geschehen====&lt;br /&gt;
&lt;br /&gt;
{| Border=1 Cellpadding=2&lt;br /&gt;
|x&lt;br /&gt;
|Löscht Zeichen&lt;br /&gt;
|-&lt;br /&gt;
|d&lt;br /&gt;
|Löschen und in den Puffer laden&lt;br /&gt;
|-&lt;br /&gt;
|c&lt;br /&gt;
|Ändern&lt;br /&gt;
|-&lt;br /&gt;
|y&lt;br /&gt;
|In den Puffer laden&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
====Weitere wichtige Befehle:====&lt;br /&gt;
&lt;br /&gt;
{| Border=1 Cellpadding=2&lt;br /&gt;
|p&lt;br /&gt;
|Aus dem Puffer einfügen&lt;br /&gt;
|-&lt;br /&gt;
|u&lt;br /&gt;
|Undo, macht den letzten Befehl rückgängig&lt;br /&gt;
|-&lt;br /&gt;
|STRG+R&lt;br /&gt;
|Redo, macht den letzten Undo rückgängig&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
===Zeilen- oder Exmodus===&lt;br /&gt;
&lt;br /&gt;
Wie schon erwähnt wird der Zeilen oder Exmodus durch einen : eingeleitet.&lt;br /&gt;
Es folgen einige Beispiele.&lt;br /&gt;
&lt;br /&gt;
Befehle zum Speichern und Beenden:&lt;br /&gt;
&lt;br /&gt;
 :w          Schreibt Datei&lt;br /&gt;
 :w Datei2   Schreibt eine Kopie in Datei2&lt;br /&gt;
 :w !        Schreibt Datei (übergehe Schreibschutz)&lt;br /&gt;
 :w ! Datei2 Schreibt eine Kopie in Datei2 (übergehe Schreibschutz)&lt;br /&gt;
 :q          Schließe Datei&lt;br /&gt;
 :q!         Schließe Datei (verwerfe Änderungen)&lt;br /&gt;
 :wq         Schreibe Datei und beende Editor&lt;br /&gt;
 :wq!        Schreibe Datei und beende Editor (übergehe Schreibschutz)&lt;br /&gt;
 :q!         Schließe Datei (verwerfe Änderungen)&lt;br /&gt;
 :h          Hilfe anzeigen, durch drücken von :q Beenden der Hilfe&lt;br /&gt;
 :e Datei3   Editiere Datei3&lt;br /&gt;
 :e #        Editere vorhergehende Datei&lt;br /&gt;
 :1,3co9     Kopiere von der ersten bis zu dritten Zeile &lt;br /&gt;
             und füge den Inhalt unterhalb der neunte Zeile ein.&lt;br /&gt;
&lt;br /&gt;
Interaktionen mit Unix:&lt;br /&gt;
&lt;br /&gt;
 :r Datei4   Fügt Inhalt der Datei4 nach dem Cursor ein&lt;br /&gt;
 :r ! Befehl Fügt Ausgabe des Befehls nach dem Cursor ein&lt;br /&gt;
 :! Befehl   Führt den Befehl aus&lt;br /&gt;
 :sh         Starte Subshell -&amp;gt; mit exit kehrt man wieder zurück&lt;br /&gt;
             Eingabemodus zurück&lt;br /&gt;
&lt;br /&gt;
====Ersetzen von Textteilen====&lt;br /&gt;
&lt;br /&gt;
Die grundsätzliche Syntax lautet:&lt;br /&gt;
&lt;br /&gt;
 :[Zeilennummer,Zeilennummer]s/Muster/Ersetzung/[gc]&lt;br /&gt;
&lt;br /&gt;
 :s/worf/kirn/              der erste worf wird in der aktuellen Zeile durch kirn ersetzt&lt;br /&gt;
 :1,9s/worf/kirn/g          von der 1. bis zur 9. Zeile werden alle worf durch kirn ersetzt&lt;br /&gt;
 :1,$s/worf/kirn/           von der ersten bis zur letzten Zeile ersetze ersten worf durch&lt;br /&gt;
                            kirn&lt;br /&gt;
 :.,$s/worf/kirn/g          von der aktuellen bis zur letzten Zeile ersetze alle worf durch&lt;br /&gt;
                            kirn&lt;br /&gt;
 :1,.s/worf/kirn/c          von der 1. bis zur aktuellen Zeile ersetze worf durch kirn, frage&lt;br /&gt;
                            aber nach&lt;br /&gt;
 :1,$s/^worf/kirn/          von der ersten bis zur letzten Zeile ersetze worf am&lt;br /&gt;
                            Zeilenanfang durch kirn&lt;br /&gt;
 :4,$s/worf$/kirn/          von der 4. bis zur letzten Zeile ersetze worf am Zeilenende&lt;br /&gt;
                            durch kirn&lt;br /&gt;
 :1,$s/^#//                 lösche alle Kommentarzeichen&lt;br /&gt;
 :1,$s/^.orf/kirn/           ersetze alles was am Zeilenanfang ein beliebiges Zeichen hat&lt;br /&gt;
                            gefolgt von einem orf durch kirn&lt;br /&gt;
 :1,$s/^[A-Z]orf/kirn/g     suche nach einem Großbuchstaben am Anfang der Zeile&lt;br /&gt;
                            gefolgt von einem orf und ersetze durch kirn&lt;br /&gt;
 :1,$s/^M[ae][iy]e*r/kirn/  suche alles, was am Anfang der Zeile ein großes M enthält,&lt;br /&gt;
                            gefolgt von einem a oder e , gefolgt von einem i oder y ,&lt;br /&gt;
                            gefolgt von einem e , welches 0 oder N mal vorkommen kann,&lt;br /&gt;
                            gefolgt von einem r und ersetze es durch kirn&lt;br /&gt;
&lt;br /&gt;
==Reguläre Ausdrücke==&lt;br /&gt;
&lt;br /&gt;
{| Border=1 Cellpadding=2&lt;br /&gt;
|c&lt;br /&gt;
|Ein einzelner Buchstabe passt auf sich selbst&lt;br /&gt;
|-&lt;br /&gt;
|.&lt;br /&gt;
|Ein Punkt passt auf jedes Zeichen außer auf das Zeilenende&lt;br /&gt;
|-&lt;br /&gt;
|*&lt;br /&gt;
|Das dem Operator * vorangehende Muster kann 0 oder öfter vorkommen&lt;br /&gt;
|-&lt;br /&gt;
|^&lt;br /&gt;
|(Caret) passt auf den Zeilenanfang&lt;br /&gt;
|-&lt;br /&gt;
|$&lt;br /&gt;
|Passt auf das Zeilenende&lt;br /&gt;
|-&lt;br /&gt;
|\&lt;br /&gt;
|Das folgende Sonderzeichen wird entwertet&lt;br /&gt;
|-&lt;br /&gt;
|[...]&lt;br /&gt;
|Passt auf &amp;quot;genau&amp;quot; eins in [...] angebenen Zeichen&lt;br /&gt;
|-&lt;br /&gt;
|[^...]&lt;br /&gt;
|Passt auf &amp;quot;genau&amp;quot; ein Zeichen welches nicht in [...] angebenen ist&lt;br /&gt;
|-&lt;br /&gt;
|\&amp;lt;&lt;br /&gt;
|Passt auf den Wortanfang&lt;br /&gt;
|-&lt;br /&gt;
|\&amp;gt;&lt;br /&gt;
|Passt auf das Wortende&lt;br /&gt;
|-&lt;br /&gt;
|\+&lt;br /&gt;
|Das dem Operator \+ vorangehende Muster kann 1 oder öfter vorkommen&lt;br /&gt;
|-&lt;br /&gt;
|&amp;amp;&lt;br /&gt;
|Setzt das gefunden Suchmuster ein&lt;br /&gt;
|-&lt;br /&gt;
|\(...\)&lt;br /&gt;
|Speichert den Text auf den das Suchmuster passt zur späteren Verwendung&lt;br /&gt;
|-&lt;br /&gt;
|\n&lt;br /&gt;
|Setzt das vorangehende, mit \(...\) Gefundene wieder ein&lt;br /&gt;
|-&lt;br /&gt;
|(...)&lt;br /&gt;
|Gruppiert Auswahlmöglichkeiten&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;nowiki&amp;gt;|&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
|Trennt Auswahlmöglichkeiten&lt;br /&gt;
|-&lt;br /&gt;
|\b&lt;br /&gt;
|Passt auf den Anfang oder das Ende eines Wortes&lt;br /&gt;
|-&lt;br /&gt;
|\B&lt;br /&gt;
|Symbolisiert den Raum innerhalb eines Wortes&lt;br /&gt;
|-&lt;br /&gt;
|\w&lt;br /&gt;
|Passt auf alle alphanumerischen Zeichen [A-Za-z0-9]&lt;br /&gt;
|-&lt;br /&gt;
|\W&lt;br /&gt;
|Passt auf alle nichtalphanumerischen Zeichen [^A-Za-z0-9]&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Die Rangfolge der Operatoren(von der höchsten zur niedrigsten)&lt;br /&gt;
:(, ), ?, *, + | .&lt;br /&gt;
&lt;br /&gt;
Die anderen Operatoren sind mit den anderen Buchstaben gleichrangig.&lt;br /&gt;
&lt;br /&gt;
===Beispiel zum Suchen===&lt;br /&gt;
&lt;br /&gt;
 Suchmuster               Passt auf&lt;br /&gt;
 ^Tuxer                   Tuxer am Zeilenanfang&lt;br /&gt;
 [tT]uxer                 Tuxer oder tuxer&lt;br /&gt;
 80[23]?86                8086, 80286 oder 80386&lt;br /&gt;
&lt;br /&gt;
===grep===&lt;br /&gt;
&lt;br /&gt;
Mit grep ist es möglich, in Dateien nach regulären Ausdrücken zu suchen. Wenn&lt;br /&gt;
eine Übereinstimmung gefunden wird, wird die komplette Zeile auf die&lt;br /&gt;
Standardausgabe geschrieben. grep kann auch von STDIN lesen.Es ist&lt;br /&gt;
empfehlenswert, sich anzugwöhnen ,das Suchmuster in Anführungszeichen zu&lt;br /&gt;
schreiben. Es gibt 3 Arten fgrep = fastgrep , grep und egrep egrep&lt;br /&gt;
&lt;br /&gt;
Beispiel:&lt;br /&gt;
&lt;br /&gt;
 root@zero:~# cat text&lt;br /&gt;
 quatsch&lt;br /&gt;
 quatsch&lt;br /&gt;
 quatsch&lt;br /&gt;
 wichtig&lt;br /&gt;
 quatsch&lt;br /&gt;
 root@zero:~# grep wichtig text&lt;br /&gt;
 wichtig&lt;br /&gt;
 root@zero:~# &lt;br /&gt;
&lt;br /&gt;
 -c                   meldet nur die Gesamtzahl der Fundstellen&lt;br /&gt;
 -v                   zeigt nur Zeilen, die »Ausdruck« nicht enthalten&lt;br /&gt;
 -i                   ignoriert Groß- und Kleinschreibung&lt;br /&gt;
 -l                    meldet nur Dateinamen mit Fundstellen&lt;br /&gt;
 -n                   listet Zeilennummern zu jeder Fundstelle&lt;br /&gt;
 -f                   Dateiname »Dateiname« enthält die Such-Ausdrücke&lt;br /&gt;
 -E                   ist ein erweiterter regulärer Ausdruck (egrep)&lt;br /&gt;
 -F                   (Muster, Ausdruck) ist ein Muster (String) (fgrep)&lt;br /&gt;
 -b                   listet auch die Position der Fundstellen&lt;br /&gt;
 -C    Anzahl         Anzahl von Zeilen werden nach der Fundstelle ausgegeben&lt;br /&gt;
 -B    Anzahl         Anzahl von Zeilen werden vor der Fundstelle ausgegeben&lt;br /&gt;
 -r                   Durchsucht Verzeichnisse rekursiv&lt;br /&gt;
&lt;br /&gt;
==Useridendifikation==&lt;br /&gt;
===/etc/passwd===&lt;br /&gt;
====Beschreibung====&lt;br /&gt;
passwd ist eine ASCII-Datei, die eine Liste der Benutzer des Systems und deren&lt;br /&gt;
Passwörter enthält. Die Passwortdatei sollte für alle Benutzer lesbar sein, was für&lt;br /&gt;
dieVerschlüsselung notwendig ist; aber nur vom Superuser beschreibbar. Wenn&lt;br /&gt;
Sie eine neue Kennung einrichten, lassen Sie das Passwort-Feld in der Datei frei&lt;br /&gt;
und benutzen Sie passwd(1), um dem System ein Passwort für die neue Kennung&lt;br /&gt;
mitzuteilen.&lt;br /&gt;
&lt;br /&gt;
Die Datei /etc/passwd enthält einen Eintrag pro Zeile mit dem Format:&lt;br /&gt;
login_name:passwd:UID:GID:user_name:directory:shell&lt;br /&gt;
====Die Bedeutung der Felder:====&lt;br /&gt;
# login_name Kennung des Benutzers auf dem System.&lt;br /&gt;
# password   Hier steht bei Shadowsystemen ein x. Die Passwörter sind in der Datei /etc/shadow&lt;br /&gt;
# UID        Die numerische Benutzernummer.&lt;br /&gt;
#  GID        Die numerische Gruppennummer des Benutzers.&lt;br /&gt;
# user_name Ein optionales Kommentarfeld, oft benutzt für den vollen Namen des Benutzers und weitere Informationen (Telefon, Raum-Nummer etc.).&lt;br /&gt;
# directory  Das Heimatverzeichnis $HOME des Benutzers.&lt;br /&gt;
# shell      Das Programm, das beim Einloggen gestartet werden soll (falls nicht nötig, benutzen Sie /bin/bash).&lt;br /&gt;
&lt;br /&gt;
===/etc/group===&lt;br /&gt;
====Beschreibung====&lt;br /&gt;
etc/group ist eine ASCII Datei, die Gruppen definiert, zu denen Benutzer&lt;br /&gt;
gehören. Es gibt nur einen Eintrag pro Zeile; jede Zeile hat folgendes Format:&lt;br /&gt;
         GruppenName:Passwort:GruppenKennung:BenutzerListe&lt;br /&gt;
Beschreibung der Felder:&lt;br /&gt;
#     GruppenName      Die Bezeichnung der Gruppe.&lt;br /&gt;
#     Passwort         Das (verschlüsselte) Gruppen-Passwort. Wenn dieses Feld leer ist, wird kein Passwort benötigt.&lt;br /&gt;
#     GruppenKennung Die numerische Identifikation der Gruppe.&lt;br /&gt;
#     BenutzerListe    Alle Namen der Mitglieder, getrennt durch Kommas.&lt;br /&gt;
&lt;br /&gt;
===/etc/shadow===&lt;br /&gt;
====Beschreibung====&lt;br /&gt;
shadow beinhaltet Informationen zu den verschlüsselten Passwörten, zu den&lt;br /&gt;
Benutzerzugängen und weitere Informationen zur Laufzeit der Passwörter.&lt;br /&gt;
 Name:Passwort:Letzte Änderung:Mintage:Maxtage:Warntage:Inaktiv:Ablauf&lt;br /&gt;
#    Der Loginname&lt;br /&gt;
#    verschlüsseltes Passwort &lt;br /&gt;
&amp;lt;nowiki&amp;gt;*&amp;lt;/nowiki&amp;gt; bedeutet Benutzer kann sich nicht einlogen&lt;br /&gt;
! bedeutet Benutzer hat kein Passwort gesetzt&lt;br /&gt;
#    Tage seit dem 1 Januar 1970 an dem das Passwort letztmals geändert wurde&lt;br /&gt;
#    Tage, die das Passwort behalten werden muss, bevor es wieder geändert werden kann&lt;br /&gt;
#     Die Anzahl der Tage, nach denen der Benutzer das Passwort wieder ändern muss&lt;br /&gt;
#    Anzahl der Tage bevor das Passwort abläuft und der Benutzer gewarnt wird&lt;br /&gt;
#    Wenn der Zugang diese Anzahl von Tagen nicht benutzt wird, wird der Zugang gesperrt&lt;br /&gt;
#    Tag seit dem 1 Januar 1970, an dem der Zugang gesperrt wird&lt;br /&gt;
#    Reserviertes Feld&lt;br /&gt;
&lt;br /&gt;
Die Datei sollte aus Sicherheitgründen nicht für einen normalen Benutzer lesbar&lt;br /&gt;
sein.&lt;br /&gt;
&lt;br /&gt;
==Programme zur Userverwaltung==&lt;br /&gt;
===useradd===&lt;br /&gt;
User anlegen&lt;br /&gt;
 root@zero:~# useradd -m -u 1011 -g users -G admin -d /home/erwin -s /bin/bash -c &amp;quot;Erwin Lehman&amp;quot;  erwin&lt;br /&gt;
{| border=1 cellpadding=2&lt;br /&gt;
|&amp;quot;-m&amp;quot;&lt;br /&gt;
|Lege Homedirectory an&lt;br /&gt;
|-&lt;br /&gt;
|&amp;quot;-u 1011&amp;quot;&lt;br /&gt;
|Userid wird zugeordnet&lt;br /&gt;
|-&lt;br /&gt;
|&amp;quot;-g users&amp;quot;&lt;br /&gt;
|Primäre Gruppe wird zugeordnet&lt;br /&gt;
|-&lt;br /&gt;
|&amp;quot;-G admin&amp;quot;&lt;br /&gt;
|Sekunbdäre Gruppe wird zugeordnet&lt;br /&gt;
|-&lt;br /&gt;
|&amp;quot;-d /home/erwin/&amp;quot;&lt;br /&gt;
|Name des Homedirectory&lt;br /&gt;
|-&lt;br /&gt;
|&amp;quot;-s /bin/bash&amp;quot;&lt;br /&gt;
|Bash wird zugeordnet&lt;br /&gt;
|- &lt;br /&gt;
|&amp;quot;-c Erwin Lehman&amp;quot;&lt;br /&gt;
|Kommentarfeld&lt;br /&gt;
|-&lt;br /&gt;
|&amp;quot;erwin&amp;quot; &lt;br /&gt;
|Name des Users&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Defaulteinstellungen anzeigen&lt;br /&gt;
 root@zero:~# useradd -D&lt;br /&gt;
 GROUP=100&lt;br /&gt;
 HOME=/home&lt;br /&gt;
 INACTIVE=-1&lt;br /&gt;
 EXPIRE=&lt;br /&gt;
 SHELL=/bin/sh&lt;br /&gt;
 SKEL=/etc/skel&lt;br /&gt;
 CREATE_MAIL_SPOOL=no&lt;br /&gt;
&lt;br /&gt;
Defaulteinstellungen ändern&lt;br /&gt;
 useradd -D -s /bin/bash&lt;br /&gt;
&lt;br /&gt;
Konfigurationsdatei&lt;br /&gt;
 root@zero:~# cat /etc/default/useradd &lt;br /&gt;
 SHELL=/bin/bash&lt;br /&gt;
 GROUP=100&lt;br /&gt;
 HOME=/home&lt;br /&gt;
 INACTIVE=-1&lt;br /&gt;
 EXPIRE=&lt;br /&gt;
 SKEL=/etc/skel&lt;br /&gt;
 CREATE_MAIL_SPOOL=no&lt;br /&gt;
&lt;br /&gt;
===usermod===&lt;br /&gt;
User modifizieren&lt;br /&gt;
 root@zero:~# usermod -l fritz -s /bin/sh -G admin,video erwin&lt;br /&gt;
{| border=1 cellpadding=2&lt;br /&gt;
|&amp;quot;-l fritz&amp;quot;&lt;br /&gt;
|Neuer Username&lt;br /&gt;
|-&lt;br /&gt;
|&amp;quot;-s /bin/sh&amp;quot;&lt;br /&gt;
|Neue Shell&lt;br /&gt;
|-&lt;br /&gt;
|&amp;quot;-G admin, video&amp;quot;&lt;br /&gt;
|Sekunbdäre Gruppen werden zugeordnet&lt;br /&gt;
|-&lt;br /&gt;
|&amp;quot;erwin&amp;quot; &lt;br /&gt;
|Name des Users&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
===userdel===&lt;br /&gt;
User inklusive Homedirectory löschen&lt;br /&gt;
 root@zero:~# userdel -r fritz&lt;br /&gt;
&lt;br /&gt;
===passwd===&lt;br /&gt;
Rootpasswort ändern&lt;br /&gt;
 root@zero:~# passwd &lt;br /&gt;
 Geben Sie ein neues UNIX Passwort ein:'''sysadm''' &lt;br /&gt;
 Geben Sie das neue UNIX Passwort erneut ein:'''sysadm''' &lt;br /&gt;
 passwd: Passwort erfolgreich geändert&lt;br /&gt;
&lt;br /&gt;
Passwort von tux ändern&lt;br /&gt;
 root@zero:~# passwd tux&lt;br /&gt;
 Geben Sie ein neues UNIX Passwort ein:'''suxer''' &lt;br /&gt;
 Geben Sie das neue UNIX Passwort erneut ein:'''suxer'''&lt;br /&gt;
 passwd: Passwort erfolgreich geändert&lt;br /&gt;
&lt;br /&gt;
Minimale und Maximale Gültigkeit des Passwortes von tux festlegen&lt;br /&gt;
 root@zero:~# passwd -n 5 -x 120 tux&lt;br /&gt;
&lt;br /&gt;
===groupadd===&lt;br /&gt;
 root@zero:~# groupadd -f -g 2001 xinuxer&lt;br /&gt;
{| border=1 cellpadding=2&lt;br /&gt;
|&amp;quot;-f&amp;quot;&lt;br /&gt;
|Überschreibe bestehende Gruppe&lt;br /&gt;
|-&lt;br /&gt;
|&amp;quot;-g 2001&amp;quot;&lt;br /&gt;
|GID der Gruppe&lt;br /&gt;
|-&lt;br /&gt;
|&amp;quot;xinuxer&amp;quot; &lt;br /&gt;
|Name des Gruppe&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==chmod==&lt;br /&gt;
Die Syntax des Befehls chmod lautet:&lt;br /&gt;
&lt;br /&gt;
'''chmod''' WerWieWas [,WerWieWas,.....] Dateiliste&lt;br /&gt;
&lt;br /&gt;
oder&lt;br /&gt;
&lt;br /&gt;
'''chmod''' Oktalzahl Dateiliste&lt;br /&gt;
&lt;br /&gt;
Durch WerWieWas bzw. Oktalzahl wird die Rechtetabelle definiert. Innerhalb von&lt;br /&gt;
WerWieWas darf es kein Leerzeichen geben. Wer bezeichnet den Benutzerkreis,&lt;br /&gt;
dem man Rechte gibt, Wie die Art, in der die Rechte gegeben werden und Was die&lt;br /&gt;
Rechte als solche. Im einzelnen können folgende Kürzel benutzt werden:&lt;br /&gt;
&lt;br /&gt;
Für Wer kann eines der folgenden Kürzel oder eine Kombination davon stehen:&lt;br /&gt;
 u                   (user) Rechte für den Dateibesitzer&lt;br /&gt;
 g                   (group) Rechte für die Gruppe&lt;br /&gt;
 o                   (others) Rechte für alle anderen Benutzer&lt;br /&gt;
 a                   (all) Rechte für alle Benutzer&lt;br /&gt;
Für Wie steht eines der folgenden Kürzel:&lt;br /&gt;
 +                   Die Rechte werden zu den vorhandenen zusätzlich vergeben&lt;br /&gt;
 -                   Die im Folgenden genannten Rechte werden entzogen&lt;br /&gt;
 =                   Die im Folgenden genannten Rechte ersetzen die bisherigen&lt;br /&gt;
Für Was steht eines der folgenden Kürzel:&lt;br /&gt;
 r                   (read) lesen&lt;br /&gt;
 w                   (write) schreiben&lt;br /&gt;
 x                   (execute) ausführen&lt;br /&gt;
oder diese Sonderformen&lt;br /&gt;
 s                   (usersbit) Programm läuft unter der UID des Besitzers&lt;br /&gt;
 s                   (groupsbit)Programm läuft unter der GID des GRUPPE&lt;br /&gt;
 t                   (stickybit) Dateien im Verzeichnis darf nur Besitzer löschen&lt;br /&gt;
&lt;br /&gt;
===Beispiel===&lt;br /&gt;
Setze für alle Schreib- und Leserecht&lt;br /&gt;
 xinux@zero:~$ chmod a=rw test &lt;br /&gt;
 xinux@zero:~$ ls -l test &lt;br /&gt;
 -rw-rw-rw- 1 xinux xinux 0 2009-06-16 12:01 test&lt;br /&gt;
 xinux@zero:~$ &lt;br /&gt;
&lt;br /&gt;
Erteile Besitzer Ausführungsrecht&lt;br /&gt;
 xinux@zero:~$ chmod u+x test ; ls -l test &lt;br /&gt;
 -rwxrw-rw- 1 xinux xinux 0 2009-06-16 12:01 test&lt;br /&gt;
 xinux@zero:~$ &lt;br /&gt;
&lt;br /&gt;
===chmod oktale Schreibweise===&lt;br /&gt;
 Specialrights        User           Group         Other&lt;br /&gt;
 usbit gsbit sticky    r    w   x     r   w   x     r   w   x&lt;br /&gt;
   1     1      1      1    1   1     1   1   1     1   1   1&lt;br /&gt;
   0     0      0      0    0   0     0   0   0     0   0   0&lt;br /&gt;
 Oktale Wertigkeit pro Recht&lt;br /&gt;
   4     2       1     4    2   1     4   2   1     4   2   1&lt;br /&gt;
&lt;br /&gt;
===Beispiele===&lt;br /&gt;
 xinux@zero:~$ chmod 751 test ; ls -l test&lt;br /&gt;
 -rwxr-x--x 1 xinux xinux 0 2009-06-16 12:01 test&lt;br /&gt;
 xinux@zero:~$ &lt;br /&gt;
&lt;br /&gt;
 xinux@zero:~$ chmod 4770 test ; ls -l test&lt;br /&gt;
 -rwsrwx--- 1 xinux xinux 0 2009-06-16 12:01 test&lt;br /&gt;
 xinux@zero:~$ &lt;br /&gt;
&lt;br /&gt;
 xinux@zero:~$ chmod 0 test ; ls -l test &lt;br /&gt;
 ---------- 1 xinux xinux 0 2009-06-16 12:01 test&lt;br /&gt;
&lt;br /&gt;
===chmod Optionen===&lt;br /&gt;
 -c   (changes) es werden nur die Dateien angezeigt, deren Zugriffsrechte tatsächlich verändert werden&lt;br /&gt;
 -f   (silent, quiet) Fehlermeldungen wegen fehlgeschlagener Änderungsversuche werden unterdrückt&lt;br /&gt;
 -v   (verbose) alle Aktionen werden angezeigt&lt;br /&gt;
 -R   (recursive) die Zugriffsrechte aller Dateien in den Unterverzeichnissen werden ebenfalls geändert&lt;br /&gt;
&lt;br /&gt;
Theoretisch sind alle Kombinationen der Zugriffsrechte denkbar, aber der&lt;br /&gt;
Eigentümer einer Datei darf diese immer lesen, selbst wenn das Lesebit nicht&lt;br /&gt;
gesetzt ist. Genauso macht es wenig Sinn, eine gewöhnliche Textdatei als&lt;br /&gt;
ausführbar zu setzen; die Shell wird damit nichts anfangen können. Ein x für ein&lt;br /&gt;
Verzeichnis gibt an, dass in dieses gewechselt werden kann.&lt;br /&gt;
&lt;br /&gt;
Rechte sind verbindlich&lt;br /&gt;
&lt;br /&gt;
Interessant ist auch ein Konstrukt folgender Art&lt;br /&gt;
 -rwx---rwx&lt;br /&gt;
&lt;br /&gt;
das angibt, dass mit der Datei alles angestellt werden kann, außer durch Nutzer der&lt;br /&gt;
Gruppe. Versucht irgend jemand, der nicht der Gruppe des Eigentümers angehört,&lt;br /&gt;
die Datei zu modifizieren, wird ihm dies gelingen, einem Gruppenmitglied bleibt&lt;br /&gt;
dies versagt, obwohl er ja gleichzeitig ein &amp;quot;Anderer&amp;quot; ist. D.h. die Rechte der&lt;br /&gt;
Gruppe sind verbindlicher, als die Rechte der anderen!&lt;br /&gt;
&lt;br /&gt;
===Bedeutungen der Zugriffsarten===&lt;br /&gt;
====Dateien====&lt;br /&gt;
* r: Der Inhalt der Datei kann gelesen und damit auch kopiert werden. &lt;br /&gt;
 root@zero:~# cat test&lt;br /&gt;
 Dies ist eine Testdatei&lt;br /&gt;
  &lt;br /&gt;
 root@zero:~# cp test backup&lt;br /&gt;
&lt;br /&gt;
* w: Der Inhalt der Datei darf verändert werden. Ob die Datei gelöscht werden kann ist&lt;br /&gt;
keine Eigenschaft der Datei, sondern des Verzeichnisses, indem sich die Datei befindet.&lt;br /&gt;
 root@zero:~# cat &amp;gt; test&lt;br /&gt;
 Hier steht jetzt was anderes&lt;br /&gt;
 ^C&lt;br /&gt;
 root@zero:~# cat test&lt;br /&gt;
 Hier steht jetzt was anderes&lt;br /&gt;
  &lt;br /&gt;
 xinux@zero:~$ ls -ld verzeichnis/&lt;br /&gt;
 dr-xr-xr-x 2 xinux xinux 4096 2009-06-18 11:16 verzeichnis/&lt;br /&gt;
 xinux@zero:~/verzeichnis$ rm text&lt;br /&gt;
 rm: Entfernen von „text“ nicht möglich: Permission denied&lt;br /&gt;
&lt;br /&gt;
* x: Ausführrecht für Programme und Skripte&lt;br /&gt;
 xinux@zero:~$ ./programm&lt;br /&gt;
 -bash: ./programm: Permission denied&lt;br /&gt;
 xinux@zero:~$ chmod +x programm&lt;br /&gt;
 xinux@zero:~$ ./programm&lt;br /&gt;
 Test&lt;br /&gt;
  test&lt;br /&gt;
&lt;br /&gt;
====Verzeichnisse====&lt;br /&gt;
* r: Die Einträge in dem Verzeichnis sind lesbar.&lt;br /&gt;
Leserecht von verzeichnis/ entziehen&lt;br /&gt;
 xinux@zero:~$ chmod a-r verzeichnis/&lt;br /&gt;
 xinux@zero:~$ ls verzeichnis/&lt;br /&gt;
 ls: Öffnen von Verzeichnis verzeichnis/ nicht möglich: Permission denied&lt;br /&gt;
Leserecht für Benutzer und Gruppe vergeben&lt;br /&gt;
 xinux@zero:~$ chmod a+r verzeichnis/&lt;br /&gt;
 xinux@zero:~$ ls verzeichnis/&lt;br /&gt;
 text&lt;br /&gt;
&lt;br /&gt;
* w: Die Einträge in dem Verzeichnis können geändert werden. &lt;br /&gt;
Neue Datei erstellen&lt;br /&gt;
 xinux@zero:~$ touch neu&lt;br /&gt;
 xinux@zero:~$ ls neu&lt;br /&gt;
 neu&lt;br /&gt;
&lt;br /&gt;
Datei löschen&lt;br /&gt;
 xinux@zero:~$ rm neu&lt;br /&gt;
 xinux@zero:~$ ls neu&lt;br /&gt;
 ls: Zugriff auf neu nicht möglich: No such file or directory&lt;br /&gt;
&lt;br /&gt;
* x: Der Name des Verzeichnisses kann in einem Pfadnamen erscheinen.&lt;br /&gt;
Verzeichnis ohne x Recht&lt;br /&gt;
 xinux@zero:~$ chmod a-x verzeichnis/&lt;br /&gt;
Wechseln in Verzeichnis mangels x-Recht nicht möglich&lt;br /&gt;
 xinux@zero:~$ cd verzeichnis/&lt;br /&gt;
 -bash: cd: verzeichnis/: Permission denied&lt;br /&gt;
x-Recht vergeben&lt;br /&gt;
 xinux@zero:~$ chmod a+x verzeichnis/&lt;br /&gt;
damit Wechsel in Verzeichnis möglich&lt;br /&gt;
 xinux@zero:~$ cd verzeichnis/&lt;br /&gt;
 xinux@zero:~/verzeichnis$ pwd&lt;br /&gt;
 /home/xinux/verzeichnis&lt;br /&gt;
&lt;br /&gt;
====umask====&lt;br /&gt;
Neue Dateien und Verzeichnisse werden mit ein und denselben Zufriffsrechten erzeugt.&lt;br /&gt;
 xinux@zero:~$ mkdir text&lt;br /&gt;
 xinux@zero:~$ touch textdat&lt;br /&gt;
 xinux@zero:~$ ls -ld text*&lt;br /&gt;
 drwxr-xr-x 2 xinux xinux 4096 2009-06-18 11:37 text&lt;br /&gt;
 -rw-r--r-- 1 xinux xinux    0 2009-06-18 11:37 textdat&lt;br /&gt;
&lt;br /&gt;
Zuständig für dieses Verhalten ist die sogenannte umask, die oft in der Datei&lt;br /&gt;
/etc/profile auf den Wert 022 voreingestellt ist. Zusätzlich wird noch eine&lt;br /&gt;
Maximalmaske benötigt, die sich für Verzeichnisse und andere Dateien&lt;br /&gt;
unterscheidet. Die bei der Erzeugung gesetzten Rechte entstehen nun, indem von&lt;br /&gt;
der Maximalmaske der durch die umask vorgegebene Wert subtrahiert wird:&lt;br /&gt;
&lt;br /&gt;
{| border=1 cellpadding=2&lt;br /&gt;
!&lt;br /&gt;
! Dateien&lt;br /&gt;
! Verzeichnisse&lt;br /&gt;
|-&lt;br /&gt;
| Systemvorgabe&lt;br /&gt;
| 666&lt;br /&gt;
| 777&lt;br /&gt;
|-&lt;br /&gt;
| -umask&lt;br /&gt;
| 022&lt;br /&gt;
| 022&lt;br /&gt;
|-&lt;br /&gt;
| Ergebnis&lt;br /&gt;
| 644&lt;br /&gt;
| 755&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
 xinux@zero:~$ grep umask /etc/profile&lt;br /&gt;
 umask 022&lt;br /&gt;
&lt;br /&gt;
==Gruppenzugehörigkeit==&lt;br /&gt;
===newgrp===&lt;br /&gt;
Ändert die Gruppenzugehörigkeit eines Benutzers auf die angegebene Gruppe. Wenn keine Gruppe angegeben wird, wird die &lt;br /&gt;
Anmeldegruppe des Benutzers verwendet. Die neue Gruppe wird anschließend fü Zugriffskontrollen verwendet.&lt;br /&gt;
&lt;br /&gt;
 newgrp Gruppenname&lt;br /&gt;
&lt;br /&gt;
 root@zero:~# newgrp hacker&lt;br /&gt;
 root@zero:~# id&lt;br /&gt;
 uid=0(root) gid=1006(hacker) Gruppen=0(root),1006(hacker)&lt;br /&gt;
&lt;br /&gt;
===chgrp===&lt;br /&gt;
Verändert die Besitzugehörigkeit zu der angegebenen Gruppe&lt;br /&gt;
&lt;br /&gt;
 chgrp [Optionen] Gruppe Datei(en)&lt;br /&gt;
&lt;br /&gt;
Optionen:&lt;br /&gt;
 -c Zeigt Veränderungen an&lt;br /&gt;
 -f Unterdrückt die meisten Fehlermeldungen&lt;br /&gt;
 -R Verändert Dateien und Verzeichnisse rekursiv&lt;br /&gt;
 -v Gibt geschwätzige Ausgabe aus.&lt;br /&gt;
&lt;br /&gt;
 root@zero:~# ls -l&lt;br /&gt;
 ...&lt;br /&gt;
 d-wx--x--x  3 root root 4096 2009-06-18 13:34 verzeichnis&lt;br /&gt;
 &lt;br /&gt;
 root@zero:~# chgrp -R xinux verzeichnis/&lt;br /&gt;
 root@zero:~# ls -l&lt;br /&gt;
 ...&lt;br /&gt;
 d-wx--x--x  3 root xinux 4096 2009-06-18 13:34 verzeichnis&lt;br /&gt;
&lt;br /&gt;
 xinux@zero:~$ cd /root/verzeichnis/&lt;br /&gt;
 xinux@zero:/root/verzeichnis$ pwd&lt;br /&gt;
 /root/verzeichnis&lt;br /&gt;
&lt;br /&gt;
===chown===&lt;br /&gt;
Ändert den Eigentümer von einer oder mehreren Dateien in den angegebenen Benutzer. &lt;br /&gt;
chown erlaubt ebenfalls das Ändern der Gruppeneigentümreschaft. Nur der aktuelle Eigentümer einer&lt;br /&gt;
Datei oder der Superuser (root) darf die Eigentumsverhältnisse ändern.&lt;br /&gt;
&lt;br /&gt;
 chown [Optionen] Benutzer(:Gruppe) Dateien&lt;br /&gt;
&lt;br /&gt;
Optionen:&lt;br /&gt;
 -c Gibt Informationen über die veränderten Dateien aus&lt;br /&gt;
 --dereference Symbolischen Links folgen&lt;br /&gt;
 -v Gibt Informationen über alle Dateien aus, die chown zu ändern versucht, egal, ob die Änderung erfolgt ist oder nicht&lt;br /&gt;
 -R Geht rekursiv durch alle Unterverzeichnisse und führt die Änderungen durch. &lt;br /&gt;
&lt;br /&gt;
 root@zero:~# chown -R xinux.xinux verzeichnis/&lt;br /&gt;
 root@zero:~# ls -l&lt;br /&gt;
 insgesamt 12&lt;br /&gt;
 drwx------ 13 root  root  4096 2009-04-21 15:11 profile&lt;br /&gt;
 --w-------  1 root  root     0 2009-06-18 11:13 test&lt;br /&gt;
 -rw-r--r--  1 root  root    40 2009-06-18 12:04 text&lt;br /&gt;
 drwxrwx--x  3 xinux xinux 4096 2009-06-18 13:39 verzeichnis&lt;br /&gt;
 &lt;br /&gt;
 root@zero:~# chown -R -c xinux.xinux verzeichnis/&lt;br /&gt;
 &lt;br /&gt;
 root@zero:~# chown -R -v xinux.xinux verzeichnis/&lt;br /&gt;
 Eigentümer von „verzeichnis/01“ als xinux:xinux erhalten&lt;br /&gt;
 Eigentümer von „verzeichnis/test“ als xinux:xinux erhalten&lt;br /&gt;
 Eigentümer von „verzeichnis/“ als xinux:xinux erhalten&lt;br /&gt;
&lt;br /&gt;
==Eingabe/Ausgabe==&lt;br /&gt;
Standardeingabe (0): Laufende Programme erwarten von hier ihre Eingaben (normalerweise handelt es sich um die Tastatur).&lt;br /&gt;
&lt;br /&gt;
Standardausgabe (1): Programme schreiben auf diese ihre Ausgaben (Bildschirm).&lt;br /&gt;
&lt;br /&gt;
Standardfehlerausgabe (2) : Fehlerausgaben landen hier (Bildschirm, aber nur die aktive Konsole).&lt;br /&gt;
&lt;br /&gt;
[[Bild:std.jpg]]&lt;br /&gt;
&lt;br /&gt;
===cat===&lt;br /&gt;
Das Programm cat liest von STDIN und gibt es STDOUT wieder aus&lt;br /&gt;
&lt;br /&gt;
Einlesen der Datei text&lt;br /&gt;
 root@zero:~# cat &amp;lt; text&lt;br /&gt;
 wichtig&lt;br /&gt;
&lt;br /&gt;
Schreiben in die Datei text, dies überschreibt den bisherigen Inhalt der Datei&lt;br /&gt;
 root@zero:~# cat &amp;gt; text&lt;br /&gt;
 sogar noch wichtiger &lt;br /&gt;
 &lt;br /&gt;
Ausgeben der Datei text&lt;br /&gt;
 root@zero:~# cat text &lt;br /&gt;
 sogar noch wichtiger&lt;br /&gt;
&lt;br /&gt;
Lesen aus der Datei text und schreiben in die Datei neuertext&lt;br /&gt;
 root@zero:~# cat &amp;lt; text &amp;gt; neuertext&lt;br /&gt;
 root@zero:~# cat neuertext&lt;br /&gt;
 sogar noch wichtiger&lt;br /&gt;
&lt;br /&gt;
Anhängen der Ausgabe von date an die Datei neuertext&lt;br /&gt;
 root@zero:~# date &amp;gt;&amp;gt; neuertext&lt;br /&gt;
 root@zero:~# cat neuertext&lt;br /&gt;
 sogar noch wichtiger&lt;br /&gt;
 Do 18. Jun 14:08:58 CEST 2009&lt;br /&gt;
&lt;br /&gt;
Umleiten des Standardfehlerkanals nach error&lt;br /&gt;
 root@zero:~# rm sux 2&amp;gt; error&lt;br /&gt;
 root@zero:~# more error&lt;br /&gt;
 rm: Entfernen von „sux“ nicht möglich: No such file or directory&lt;br /&gt;
&lt;br /&gt;
===Umleitungen===&lt;br /&gt;
Nacheinander auszuführende Kommandos&lt;br /&gt;
 root@zero:~# pwd; date&lt;br /&gt;
 /root&lt;br /&gt;
 Do 18. Jun 14:13:05 CEST 2009&lt;br /&gt;
 &lt;br /&gt;
Übergeben der Ausgabe von tail als Eingabe von grep mit Hilfe der Pipe &amp;quot;|&amp;quot;&lt;br /&gt;
 root@zero:~# tail /var/log/auth.log | grep xinux&lt;br /&gt;
 Jun 18 13:52:33 zero nss_wins[11433]: pam_unix(login:session): session closed for user xinux&lt;br /&gt;
&lt;br /&gt;
Übergeben der letzten 100 Zeilen von syslog als Eingabe von grep&lt;br /&gt;
 root@zero:~# tail /var/log/syslog -n 100 | grep error&lt;br /&gt;
 Jun 18 09:30:54 zero kernel: [154384.692135] end_request: I/O error, dev fd0, sector 0&lt;br /&gt;
 Jun 18 09:30:54 zero kernel: [154384.712137] end_request: I/O error, dev fd0, sector 0&lt;br /&gt;
&lt;br /&gt;
==tr==&lt;br /&gt;
tr ist ein Programm um Zeichen zu übersetzen. Dies betrifft nur die Ausgabe, die Datei selbst bleibt unverändert.&lt;br /&gt;
&lt;br /&gt;
Ersetzt Kleinbuchstaben durch Großbuchstaben aus der Datei text&lt;br /&gt;
 root@zero:~# tr &amp;quot;a-z&amp;quot; &amp;quot;A-Z&amp;quot; &amp;lt; text&lt;br /&gt;
 SOGAR NOCH WICHTIGER&lt;br /&gt;
 123&lt;br /&gt;
 34&lt;br /&gt;
 4711&lt;br /&gt;
 TEST&lt;br /&gt;
&lt;br /&gt;
Ersetzt alle Zahlen durch X&lt;br /&gt;
 root@zero:~# tr &amp;quot;0-9&amp;quot; &amp;quot;X&amp;quot; &amp;lt; text&lt;br /&gt;
 sogar noch wichtiger&lt;br /&gt;
 XXX&lt;br /&gt;
 XX&lt;br /&gt;
 XXXX&lt;br /&gt;
 test&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
 root@zero:~# cat &amp;gt; test&lt;br /&gt;
 +++++&lt;br /&gt;
 ###&lt;br /&gt;
 1111&lt;br /&gt;
&lt;br /&gt;
-s löscht mehrfach kommende Zeichen&lt;br /&gt;
 root@zero:~# tr '''-s''' &amp;quot;+&amp;quot; &amp;lt; test&lt;br /&gt;
 +&lt;br /&gt;
 ###&lt;br /&gt;
 1111&lt;br /&gt;
&lt;br /&gt;
-d löscht vorkommende Zeichen &lt;br /&gt;
 root@zero:~# tr '''-d''' &amp;quot;#&amp;quot; &amp;lt; test&lt;br /&gt;
 +++++ &lt;br /&gt;
 &lt;br /&gt;
 1111&lt;br /&gt;
&lt;br /&gt;
==cut==&lt;br /&gt;
Spalten aus einer Datei schneiden. Dies betrifft nur die Ausgabe, die Datei selbst bleibt unverändert.&lt;br /&gt;
 &lt;br /&gt;
Schneidet die erste Spalte aus, der Delimiter ist : &lt;br /&gt;
 root@zero:~# cut -f 1 -d : /etc/passwd&lt;br /&gt;
 root&lt;br /&gt;
 daemon&lt;br /&gt;
 bin&lt;br /&gt;
 ...&lt;br /&gt;
 xinux&lt;br /&gt;
&lt;br /&gt;
 root@zero:~# more test&lt;br /&gt;
 1234#5678#9999&lt;br /&gt;
 &lt;br /&gt;
Schneidet die zweite Spalte aus, der Delimiter ist #&lt;br /&gt;
 root@zero:~# cut -f 2 -d &amp;quot;#&amp;quot; &amp;lt; test&lt;br /&gt;
 5678&lt;br /&gt;
&lt;br /&gt;
Schneidet bis zum 3 Zeichen ab&lt;br /&gt;
 root@zero:~$ echo S01policykit | cut -c 4-&lt;br /&gt;
 policykit&lt;br /&gt;
&lt;br /&gt;
==expand==&lt;br /&gt;
Ersetzt Tabulatorzeichen durch Folgen von Leerzeichen und schreibt das Ergebnis auf die Standardausgabe&lt;br /&gt;
 root@zero:~# expand /etc/samba/smb.conf&lt;br /&gt;
 ...&lt;br /&gt;
&lt;br /&gt;
==fmt==&lt;br /&gt;
#Setzt den Text der Dateien im Blocksatz der angegebenen Breite durch Auffüllen von Zeilen und Entfernen von Zeilenwechseln.&lt;br /&gt;
Standardgemäß werden Leerzeilen, die Position von Leerzeichen und der Einzug am Zeilenanfang erhalten. fmt versucht, &lt;br /&gt;
Zeilenumbrüche an Satzenden durchzuführen sowie sie nach dem ersten oder vor dem letzten Wort eines Satzes zu vermeiden. &lt;br /&gt;
 &lt;br /&gt;
 fmt [Optionen] [Dateien]&lt;br /&gt;
&lt;br /&gt;
Optionen&lt;br /&gt;
&lt;br /&gt;
* -p ''Präfix'': Formatiert nur Zeilen, die mit ''Präfix'' anfangen&lt;br /&gt;
 root@zero:/tmp# fmt -p '#' text&lt;br /&gt;
 #Setzt den Text der Dateien im Blocksatz der angegebenen Breite durch&lt;br /&gt;
 #Auffüllen von Zeilen und Entfernen von Zeilenwechseln.  Standardgemäß&lt;br /&gt;
 #werden Leerzeilen, die Position von Leerzeichen und der Einzug am&lt;br /&gt;
 #Zeilenanfang erhalten. fmt versucht,&lt;br /&gt;
 Zeilenumbrüche an Satzenden durchzuführen sowie sie nach dem ersten oder vor dem letzten Wort eines Satzes zu vermeiden.&lt;br /&gt;
&lt;br /&gt;
* -u : Erzwingt genau ein Leerzeichen zwischen Wörtern und zwei Leerzeichen zwischen Sätzen&lt;br /&gt;
&lt;br /&gt;
* -w ''Breite'': Setzt die Ausgabebreite auf ''Breite''&lt;br /&gt;
 root@zero:/tmp# fmt -w 30 text&lt;br /&gt;
 #Setzt den Text der Dateien&lt;br /&gt;
 im Blocksatz der angegebenen&lt;br /&gt;
 Breite durch Auffüllen&lt;br /&gt;
 von Zeilen und Entfernen&lt;br /&gt;
 von Zeilenwechseln.&lt;br /&gt;
 #Standardgemäß werden&lt;br /&gt;
 Leerzeilen, die Position von&lt;br /&gt;
 Leerzeichen und der Einzug am&lt;br /&gt;
 Zeilenanfang erhalten. fmt&lt;br /&gt;
 versucht, Zeilenumbrüche&lt;br /&gt;
 an Satzenden durchzuführen&lt;br /&gt;
 sowie sie nach dem ersten&lt;br /&gt;
 oder vor dem letzten Wort&lt;br /&gt;
 eines Satzes zu vermeiden.&lt;br /&gt;
&lt;br /&gt;
==join==&lt;br /&gt;
Führt die Zeilen zweier sortierter Dateien anhand von '''Übereinstimmungen''' in einem gemeinsamen Feld zusammen.&lt;br /&gt;
&lt;br /&gt;
 root@zero:~# more name&lt;br /&gt;
 1. karl&lt;br /&gt;
 2. heinz&lt;br /&gt;
 3. hans&lt;br /&gt;
 4. otto&lt;br /&gt;
 root@zero:~# more tel&lt;br /&gt;
 1. 1234&lt;br /&gt;
 2. 4321&lt;br /&gt;
 3. 222&lt;br /&gt;
 4. 121212&lt;br /&gt;
 root@zero:~# join name tel &amp;gt; telefonbuch&lt;br /&gt;
 root@zero:~# more telefonbuch&lt;br /&gt;
 1. karl 1234&lt;br /&gt;
 2. heinz 4321&lt;br /&gt;
 3. hans 222&lt;br /&gt;
 4. otto 121212&lt;br /&gt;
&lt;br /&gt;
 root@zero:~# join -t : /etc/passwd /etc/shadow&lt;br /&gt;
 ....&lt;br /&gt;
 daemon:x:1:1:daemon:/usr/sbin:/bin/sh:*:14181:0:99999:7:::&lt;br /&gt;
 bin:x:2:2:bin:/bin:/bin/sh:*:14181:0:99999:7:::&lt;br /&gt;
 sys:x:3:3:sys:/dev:/bin/sh:*:14181:0:99999:7:::&lt;br /&gt;
 sync:x:4:65534:sync:/bin:/bin/sync:*:14181:0:99999:7:::&lt;br /&gt;
 ...&lt;br /&gt;
&lt;br /&gt;
join in dat1 nach Feld 3 und in dat2 nach Feld 2&lt;br /&gt;
 thomas@lydia:~$ cat dat1 &lt;br /&gt;
 hugo:ps:1111&lt;br /&gt;
 erwin:zw:2222&lt;br /&gt;
 karl:sb:3333&lt;br /&gt;
 rudi:kl:4444&lt;br /&gt;
 thomas@lydia:~$ cat dat2&lt;br /&gt;
 blau:1111:svn&lt;br /&gt;
 grün:2222:fcs&lt;br /&gt;
 gelb:3333:fch&lt;br /&gt;
 rot:4444:fck&lt;br /&gt;
 thomas@lydia:~$ join -t : -1 3 -2 2 dat1 dat2 &lt;br /&gt;
 1111:hugo:ps:blau:svn&lt;br /&gt;
 2222:erwin:zw:grün:fcs&lt;br /&gt;
 3333:karl:sb:gelb:fch&lt;br /&gt;
 4444:rudi:kl:rot:fck&lt;br /&gt;
&lt;br /&gt;
==nl==&lt;br /&gt;
Nummeriert die Zeilen in einer Datei.&lt;br /&gt;
&lt;br /&gt;
 root@zero:~# nl /etc/passwd                                                   &lt;br /&gt;
     1  root:x:0:0:root:/root:/bin/bash                                       &lt;br /&gt;
     2  daemon:x:1:1:daemon:/usr/sbin:/bin/sh                                 &lt;br /&gt;
     3  bin:x:2:2:bin:/bin:/bin/sh                                            &lt;br /&gt;
     4  sys:x:3:3:sys:/dev:/bin/sh                                            &lt;br /&gt;
     5  sync:x:4:65534:sync:/bin:/bin/sync&lt;br /&gt;
     ...&lt;br /&gt;
Nummereriet mit führenden Nullen der Separatir ist ein :&lt;br /&gt;
 root@zero:~# nl -s : -n rz dat1&lt;br /&gt;
&lt;br /&gt;
==od==&lt;br /&gt;
Gibt Dateien im Oktal und anderen Formaten aus.&lt;br /&gt;
&lt;br /&gt;
 od [Optionen] Datei&lt;br /&gt;
&lt;br /&gt;
* -j ''Bytes'': Überspringt die Anzahl ''Bytes'' einer Datei&lt;br /&gt;
* -N ''Bytes'': Gibt nur die Anzahl ''Bytes'' aus&lt;br /&gt;
* -c : Gebe ASCII Zeichen aus&lt;br /&gt;
* -f : Gebe Fließkommazahlen aus&lt;br /&gt;
* -i : Gebe Dezimal Integer aus&lt;br /&gt;
* -l : Gebe Dezimal Long aus&lt;br /&gt;
* -o : Gebe Oktal 2 Byte Einheiten aus&lt;br /&gt;
* -s : Gebe Dezimal 2 Byte Einheiten aus&lt;br /&gt;
* -x : Gebe Hexadezimale 2 Byte einheiten aus&lt;br /&gt;
&lt;br /&gt;
Beispiele&lt;br /&gt;
&lt;br /&gt;
Gebe Master Boot Record (die ersten 512 Byte der Festplatte /dev/sda) als Hexadezimal aus&lt;br /&gt;
 root@zero:~# od '''-x -N''' 512 /dev/sda&lt;br /&gt;
 0000000 48eb 1090 d08e 00bc b8b0 0000 d88e c08e&lt;br /&gt;
 0000020 befb 7c00 00bf b906 0200 a4f3 21ea 0006&lt;br /&gt;
 0000040 be00 07be 0438 0b75 c683 8110 fefe 7507&lt;br /&gt;
 0000060 ebf3 b416 b002 bb01 7c00 80b2 748a 0203&lt;br /&gt;
 0000100 00ff 2000 0001 0000 0200 90fa f690 80c2&lt;br /&gt;
 ...&lt;br /&gt;
&lt;br /&gt;
Schreibe &amp;quot;suxer&amp;quot; in die Datei test&lt;br /&gt;
 root@zero:~# echo &amp;quot;suxer&amp;quot; &amp;gt; test&lt;br /&gt;
Ausgabe Hexadezimal&lt;br /&gt;
 root@zero:~# od -x test&lt;br /&gt;
 0000000 7573 6578 0a72&lt;br /&gt;
 0000006&lt;br /&gt;
&lt;br /&gt;
Ausgabe ASCII Zeichen&lt;br /&gt;
 root@zero:~# od -c test&lt;br /&gt;
 0000000   s   u   x   e   r  \n&lt;br /&gt;
 0000006&lt;br /&gt;
&lt;br /&gt;
==paste==&lt;br /&gt;
Fügt die Zeilen von zwei oder mehr Dateien horizontal zusammen&lt;br /&gt;
 root@zero:~# paste name tel&lt;br /&gt;
 1. karl 1. 1234&lt;br /&gt;
 2. heinz        2. 4321&lt;br /&gt;
 3. hans 3. 222&lt;br /&gt;
 4. otto 4. 121212&lt;br /&gt;
&lt;br /&gt;
==pr==&lt;br /&gt;
Bereitet Textdateien zum Drucken vor.&lt;br /&gt;
&lt;br /&gt;
 root@zero:~# echo &amp;quot;Plan für heute&amp;quot; &amp;gt; dokument&lt;br /&gt;
 root@zero:~# more dokument&lt;br /&gt;
 Plan für heute&lt;br /&gt;
 root@zero:~# pr dokument   &lt;br /&gt;
  &lt;br /&gt;
 &lt;br /&gt;
 2009-06-19 12:44                    dokument                     Seite 1&lt;br /&gt;
 &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
 Plan für heute&lt;br /&gt;
&lt;br /&gt;
Anmerkung Ausmaße der Bildschirmausgabe wie eine Druckseite.&lt;br /&gt;
&lt;br /&gt;
==sed==&lt;br /&gt;
streaming editor. Mit sed ist es möglich, den Inhalt einer Datei automatisch (nicht interaktiv) zu&lt;br /&gt;
bearbeiten. Wie unter Linux üblich, wird auch hier der Text nicht wirklich verändert sondern die &lt;br /&gt;
Änderung erfolgt über die Standardausgabe, die wieder umgeleitet werden kann. Die Syntax ist ähnlich &lt;br /&gt;
des ex modus von vi. Reguläre Ausdrücke können nach Belieben benutzt werden. &lt;br /&gt;
&lt;br /&gt;
Optionen:&lt;br /&gt;
 -e Zeichenkette  wendet die Editorbefehle aus Zeichenkette auf den Text an.&lt;br /&gt;
 -n gibt nur die Zeilen aus, die explizit (durch &amp;quot;p&amp;quot; ausgedruckt werden sollen&lt;br /&gt;
&lt;br /&gt;
Gibt die dritte Zeile der Datei text aus&lt;br /&gt;
 root@zero:~# sed -n &amp;quot;3p&amp;quot; text&lt;br /&gt;
 34&lt;br /&gt;
&lt;br /&gt;
Gibt die erste bis dritte Zeile von text aus&lt;br /&gt;
 root@zero:~# sed -n &amp;quot;1,3p&amp;quot; text&lt;br /&gt;
 sogar noch wichtiger&lt;br /&gt;
 123&lt;br /&gt;
 34&lt;br /&gt;
&lt;br /&gt;
Löschen der Zeile mit &amp;quot;sogar&amp;quot;&lt;br /&gt;
 root@zero:~# sed -e '/sogar/d' &amp;lt; text&lt;br /&gt;
 123&lt;br /&gt;
 34&lt;br /&gt;
 4711&lt;br /&gt;
 test&lt;br /&gt;
&lt;br /&gt;
und schreiben in text2&lt;br /&gt;
 root@zero:~# sed -e '/sogar/d' &amp;lt; text &amp;gt; text2&lt;br /&gt;
 root@zero:~# more text2&lt;br /&gt;
 123&lt;br /&gt;
 34&lt;br /&gt;
 4711&lt;br /&gt;
 test&lt;br /&gt;
&lt;br /&gt;
Alle 3en durch DREI ersetzen&lt;br /&gt;
 root@zero:~# sed -e 's/3/DREI/g' &amp;lt; text&lt;br /&gt;
 sogar noch wichtiger&lt;br /&gt;
 12DREI&lt;br /&gt;
 DREI4&lt;br /&gt;
 4711&lt;br /&gt;
 test&lt;br /&gt;
&lt;br /&gt;
==wc==&lt;br /&gt;
Zählt die Anzahl von Zeichen, Wörter oder Zeilen&lt;br /&gt;
&lt;br /&gt;
Optionen&lt;br /&gt;
* -m : Zählt die Anzahl der Zeichen&lt;br /&gt;
 root@zero:~# more name&lt;br /&gt;
 1. karl&lt;br /&gt;
 2. heinz&lt;br /&gt;
 3. hans&lt;br /&gt;
 4. otto&lt;br /&gt;
 root@zero:~# wc '''-m''' tel&lt;br /&gt;
 33 tel&lt;br /&gt;
&lt;br /&gt;
* -w : Zählt die Anzahl der Wörter (einschließlich Zahlen und andere Zeichen)&lt;br /&gt;
 root@zero:~# wc '''-w''' name&lt;br /&gt;
 8 name&lt;br /&gt;
&lt;br /&gt;
* -l : Zählt die Anzahl der Zeilen&lt;br /&gt;
 root@zero:~# wc '''-l''' name&lt;br /&gt;
 4 name&lt;br /&gt;
&lt;br /&gt;
==Sort==&lt;br /&gt;
&lt;br /&gt;
Zum sortieren von Dateien nach Feldern benutzt man sort. sort liest von STDIN man kann die Datei aber auch als Argument übergeben. &lt;br /&gt;
&lt;br /&gt;
Sortiert nach dem ersten Feld&lt;br /&gt;
  root@zero:~# sort /etc/passwd 	 &lt;br /&gt;
&lt;br /&gt;
Es wird geprüft ob die Datei schon sortiert ist &lt;br /&gt;
 root@zero:~# sort -c /etc/passwd 	&lt;br /&gt;
&lt;br /&gt;
Sortiert nach dem ersten Feld (Richtungsumkehr)  &lt;br /&gt;
 root@zero:~#  sort -r /etc/passwd&lt;br /&gt;
&lt;br /&gt;
Führende Leersortzeichen werden ignoriert &lt;br /&gt;
 root@zero:~# sort -b /etc/passwd&lt;br /&gt;
&lt;br /&gt;
Ausgabe  in die Datei pass&lt;br /&gt;
 root@zero:~# sort  /etc/passwd   -o pass	 &lt;br /&gt;
&lt;br /&gt;
nimmt : als Trenner -Voreinstellung ist TAB&lt;br /&gt;
  root@zero:~# sort -t : /etc/passwd&lt;br /&gt;
&lt;br /&gt;
sortiert nach dem  3 Feld,  der Trenner ist : und es wird nummerisch sortiert&lt;br /&gt;
&lt;br /&gt;
 root@zero:~# sort -t: +2 -n /etc/passwd		&lt;br /&gt;
&lt;br /&gt;
sortiert nach dem  3 Feld,  der Trenner ist : und es wird nummerisch sortiert&lt;br /&gt;
					&lt;br /&gt;
 root@zero:~# sort -t: -k 3 -n /etc/passwd&lt;br /&gt;
&lt;br /&gt;
Sortiert nach dem  3  bis zum 5 Feld, der Trenner ist : und es wird nummerisch sortiert&lt;br /&gt;
	&lt;br /&gt;
 root@zero:~# sort -t: -k 3,5 -n /etc/passwd	&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==INodes==&lt;br /&gt;
Inode (oder I-Node) wird im Deutschen am besten als Informationsknoten oder&lt;br /&gt;
Indexeintrag bezeichnet. Er fasst alle Attribute einer Datei zusammen außer dem Inhalt&lt;br /&gt;
und dem Namen der Datei.&lt;br /&gt;
&lt;br /&gt;
===Daten===&lt;br /&gt;
{| border=1 cellpadding=2&lt;br /&gt;
|type&lt;br /&gt;
|Der Typ der Datei wird als einzelner Buchstabe angezeigt. Der Typ einer Datei wird beim Anlegen der Datei festgelegt&lt;br /&gt;
|-&lt;br /&gt;
|Permissions &lt;br /&gt;
|Die Zugriffsrechte der Datei werden in den 12 Bit sstrwxrwxrwx abgespeichert.Wenn sie gesetzt sind, werden sie bei &lt;br /&gt;
der Ausgabe an Stelle der x-Rechte ausgegeben. Die Zugriffsrechte können mit dem Kommando chmod verändert werden.&lt;br /&gt;
|-&lt;br /&gt;
|link count&lt;br /&gt;
|In UNIX kann eine Datei mehr als einen Namen haben. Der Link Count gibt die Anzahl der Namen einer Datei an. Er kann&lt;br /&gt;
mit dem Kommando ln erhöht und dem Kommando rm erniedrigt werden.&lt;br /&gt;
|-&lt;br /&gt;
|owner&lt;br /&gt;
|Für den Dateieigentümer gelten die in der ersten rwx-Gruppe festgelegten Zugriffsrechte. Standardmäßig ist der &lt;br /&gt;
Eigentümer einer Datei derjenige Benutzer, der die Datei angelegt hat.&lt;br /&gt;
|-&lt;br /&gt;
|group&lt;br /&gt;
|Für Benutzer, die in der gleichen Gruppe sind, der die Datei angehört, gelten die in der zweiten rwx-Gruppe festgelegten&lt;br /&gt;
Zugriffsrechte. In System V gehört eine Datei standardmäßig der Gruppe an, in der der anlegende Benutzer gerade ist.&lt;br /&gt;
|-&lt;br /&gt;
|size&lt;br /&gt;
|Bei normalen Dateien und Verzeichnissen gibt diese Information die Länge der Datei in Byte an.&lt;br /&gt;
|-&lt;br /&gt;
|access time&lt;br /&gt;
|Die Zugriffszeit gibt den Zeitpunkt des letzten Lesezugriffes auf eine Datei an. Aus Effizienzgründen wird die &lt;br /&gt;
Zugriffszeit an Verzeichnissen nicht gesetzt, wenn ein Verzeichnis durchsucht wird, obwohl man dies erwarten könnte. ''(ls -l --time=atime)''&lt;br /&gt;
|-&lt;br /&gt;
|modification time&lt;br /&gt;
|Die Modifikationszeit gibt die Zeit des letzten Schreibzugriffes auf die Daten der Datei an. Intern speichert UNIX &lt;br /&gt;
die Zeit als Sekunden seit Beginn des Jahres 1970 und in GMT ab. Für die Ausgabe wird dies in ein besser lesbares &lt;br /&gt;
Format in der lokalen Zeitzone umgewandelt. ''(ls -l)''&lt;br /&gt;
|-&lt;br /&gt;
|change time &lt;br /&gt;
|Die Veränderungszeit gibt das Datum der letzten Statusänderung der Datei an. Sie wird immer dann gesetzt, wenn die &lt;br /&gt;
Informationen über die Datei sich ändern (Datum der Erzeugung wird nicht gespeichert) ''(ls -lc)''&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
===Dateiarten===&lt;br /&gt;
{| border=1 cellpadding=2&lt;br /&gt;
!Zeichen&lt;br /&gt;
!Typ&lt;br /&gt;
!Zweck&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;nowiki&amp;gt;-&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
|file&lt;br /&gt;
|normale Datei&lt;br /&gt;
|-&lt;br /&gt;
|d&lt;br /&gt;
|directory&lt;br /&gt;
|Verzeichnis&lt;br /&gt;
|-&lt;br /&gt;
|b&lt;br /&gt;
|block device&lt;br /&gt;
|Gerätedatei&lt;br /&gt;
|-&lt;br /&gt;
|c&lt;br /&gt;
|character device&lt;br /&gt;
|Gerätedatei&lt;br /&gt;
|-&lt;br /&gt;
|l&lt;br /&gt;
|link&lt;br /&gt;
|Querverweis&lt;br /&gt;
|-&lt;br /&gt;
|p&lt;br /&gt;
|named pipe&lt;br /&gt;
|Benannte Pipeline&lt;br /&gt;
|-&lt;br /&gt;
|s&lt;br /&gt;
|socket&lt;br /&gt;
|Netzwerkverbindung&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
====Normale Dateien====&lt;br /&gt;
Unter einer normalen Datei versteht man die Ansammlung von Daten. Dies kann ein Text, Programm, Bild oder sonstiges sein. &lt;br /&gt;
Beispiel&lt;br /&gt;
 root@zero:~# ls -l text | cut -c 1&lt;br /&gt;
 -&lt;br /&gt;
&lt;br /&gt;
====Verzeichnisse====&lt;br /&gt;
Dateien werden in Verzeichnissen gespeichert, nur so ist eine Ordnung möglich. &lt;br /&gt;
 root@zero:~# mkdir -v Ordner&lt;br /&gt;
 mkdir: Verzeichnis „Ordner“ angelegt&lt;br /&gt;
 &lt;br /&gt;
 root@zero:~# ls -ld Ordner | cut -c 1&lt;br /&gt;
 d&lt;br /&gt;
&lt;br /&gt;
====Gerätedateien (Block und Char)====&lt;br /&gt;
Gerätedateien ermöglichen Anwendungsprogrammen unter Benutzung des  Kernels den Zugriff auf die Hardwarekomponenten des Systems. Ansprechbar über Major und Minor Nummern &lt;br /&gt;
&lt;br /&gt;
Beispiele&lt;br /&gt;
&lt;br /&gt;
Sicherung des Master Boot Records der ersten Festplatte&lt;br /&gt;
 root@zero:~# dd if=/dev/sda of=/tmp/mbr.img bs=512 count=1&lt;br /&gt;
&lt;br /&gt;
Block Device &lt;br /&gt;
 root@zero:~# ls -l /dev/sda | cut -c 1 &lt;br /&gt;
 b&lt;br /&gt;
&lt;br /&gt;
Character Device &lt;br /&gt;
 root@zero:~# ls -l /dev/ttyS0  | cut -c 1 &lt;br /&gt;
 c&lt;br /&gt;
&lt;br /&gt;
Erstellen einer Gerätedatei&lt;br /&gt;
 root@zero:/dev# mknod sata1 b 8 0 &lt;br /&gt;
 root@zero:/dev# fdisk -l /dev/sata1 &lt;br /&gt;
 &lt;br /&gt;
 Platte /dev/sata1: 6442 MByte, 6442450944 Byte&lt;br /&gt;
 255 Köpfe, 63 Sektoren/Spuren, 783 Zylinder&lt;br /&gt;
 Einheiten = Zylinder von 16065 × 512 = 8225280 Bytes&lt;br /&gt;
 Disk identifier: 0x0005efab&lt;br /&gt;
 &lt;br /&gt;
       Gerät  boot.     Anfang        Ende     Blöcke   Id  System&lt;br /&gt;
 /dev/sata1p1   *           1         743     5968116   83  Linux&lt;br /&gt;
 /dev/sata1p2             744         783      321300    5  Erweiterte&lt;br /&gt;
 /dev/sata1p5             744         783      321268+  82  Linux Swap / Solaris&lt;br /&gt;
&lt;br /&gt;
====Named Pipes====&lt;br /&gt;
Benannte Pipes (Named Pipes) können dagegen auch zur Kommunikation zwischen Prozessen eingesetzt werden, die nicht miteinander&lt;br /&gt;
verwandt sind und sich darüber hinaus auf unterschiedlichen Rechnern innerhalb eines Netzwerkes befinden dürfen. Sie sind &lt;br /&gt;
flexibler als anonyme Pipes und eignen sich für sogenannte Client-Server-Anwendungen (es lassen sich auch RPCs realisieren).&lt;br /&gt;
Benannte Pipes ermöglichen die gleichzeitige Kommunikation in beide Richtungen, das heißt, Daten können im Vollduplexbetrieb &lt;br /&gt;
zwischen den Prozessen ausgetauscht werden.&lt;br /&gt;
 &lt;br /&gt;
Erstelle Named Pipe mit Namen /tmp/roehre. Schreibe &amp;quot;hallo welt&amp;quot; in die Pipe und bleibe&lt;br /&gt;
 xinux@zero:~$ mkfifo /tmp/roehre&lt;br /&gt;
 xinux@zero:~$ echo hallo welt &amp;gt; /tmp/roehre &lt;br /&gt;
&lt;br /&gt;
Gebe Inhalt der Pipe mit cat aus&lt;br /&gt;
 root@zero:~# cat &amp;lt; /tmp/roehre &lt;br /&gt;
 hallo welt&lt;br /&gt;
 root@zero:~# ls -l /tmp/roehre | cut -c 1&lt;br /&gt;
 p&lt;br /&gt;
&lt;br /&gt;
====Sockets====&lt;br /&gt;
Schnittstelle um es lokalen Anwendungen zu ermöglichen, miteinander Netwerkmässig zu kommunizieren.&lt;br /&gt;
&lt;br /&gt;
 root@lydia:~# netstat  -lnxp | tail -1&lt;br /&gt;
  unix  2 [ ACC ] STREAM HÖRT 21951 6646/nm-applet /tmp/orbit-thomas/linc-19f6-0-2b9b81095cede&lt;br /&gt;
&lt;br /&gt;
 root@lydia:~# ls -l /tmp/orbit-thomas/linc-19f6-0-2b9b81095cede  | cut -c 1 &lt;br /&gt;
 s&lt;br /&gt;
&lt;br /&gt;
====Links====&lt;br /&gt;
Bei Links handelt es sich um symbolische Verweise auf andere Dateien&lt;br /&gt;
&lt;br /&gt;
'''Softlink'''&lt;br /&gt;
Ein Softlink ist eine Datei die nur auf den Namen einer anderen Datei verweist. Wenn die Originaldatei gelöscht wird, zeigt &lt;br /&gt;
der Link ins Leere. &lt;br /&gt;
&lt;br /&gt;
 ln -s datei softlink&lt;br /&gt;
&lt;br /&gt;
{| border=1 cellpadding=2&lt;br /&gt;
| Vorteile&lt;br /&gt;
| Symbolische Links können auch auf Verzeichnisse angelegt werden&amp;lt;br&amp;gt;Sie sind partitionsübergreifend&amp;lt;br&amp;gt;Man kann sie auf Dateien anlegen, die noch nicht existieren&lt;br /&gt;
|-&lt;br /&gt;
| Nachteile&lt;br /&gt;
| Wenn das Original gelöscht ist, ist kein Zugriff mehr möglich&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Beispiel&lt;br /&gt;
 root@zero:~# ln -s text verweis&lt;br /&gt;
 root@zero:~# ls -l verweis&lt;br /&gt;
 lrwxrwxrwx 1 root root 4 2009-06-18 15:48 verweis -&amp;gt; text&lt;br /&gt;
&lt;br /&gt;
'''Hardlinks'''&lt;br /&gt;
 ln datei hardlink&lt;br /&gt;
Eigentlich ist jede Datei ein Hardlink. Ein Hardlink ist ein Verzeichniseintrag,&lt;br /&gt;
der auf eine Inode verweist. Beim Erzeugen einer Datei verweist ein Eintrag auf&lt;br /&gt;
eine Inode. Man kann dann weitere Verweise erzeugen. Der Linkcounter wird&lt;br /&gt;
jeweils um 1 erhöht. Beim Löschen einer Datei wird er jeweils um 1 reduziert.&lt;br /&gt;
Wird der Wert 0 erreicht, ist die Datei gelöscht.&lt;br /&gt;
{| border=1 cellpadding=2&lt;br /&gt;
| Vorteile&lt;br /&gt;
|Zugriff auf die Daten, selbst wenn das Orginal gelöscht ist.&lt;br /&gt;
|-&lt;br /&gt;
|Nachteile&lt;br /&gt;
|Man kann keine Hardlinks auf Verzeichnisse anlegen.&lt;br /&gt;
Ist nur innerhalb einer Partion möglich.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Beispiel&lt;br /&gt;
 root@zero:~# touch 1&lt;br /&gt;
 root@zero:~# echo &amp;quot;text&amp;quot; &amp;gt; 1&lt;br /&gt;
 root@zero:~# ln 1 2&lt;br /&gt;
 root@zero:~# more 2&lt;br /&gt;
 text&lt;br /&gt;
 root@zero:~# echo &amp;quot;doch kein text&amp;quot; &amp;gt; 1&lt;br /&gt;
 root@zero:~# more 1&lt;br /&gt;
 doch kein text&lt;br /&gt;
 root@zero:~# more 2&lt;br /&gt;
 doch kein text&lt;br /&gt;
&lt;br /&gt;
Weitere Optionen:&lt;br /&gt;
 -b sichert Dateien, statt sie zu überschreiben &lt;br /&gt;
 -f Überschreibt bestehende, gleichnamige Dateien&lt;br /&gt;
 -i fragt vor dem Überschreiben nach Bestätigung&lt;br /&gt;
 -v ausführliche Meldungen&lt;br /&gt;
Softlink mit dem Namen passwd im Homeverzeichnis angelegt&lt;br /&gt;
 xinux@zero:~$ ln -vs /etc/passwd .&lt;br /&gt;
 „./passwd“ -&amp;gt; „/etc/passwd“&lt;br /&gt;
Softlink mit dem Namen passwd im Homeverzeichnis angelegt(Original exestiert nicht) &lt;br /&gt;
 xinux@zero:~$ ln -vs /etc/hund .&lt;br /&gt;
 „./hund“ -&amp;gt; „/etc/hund“&lt;br /&gt;
Hardlink mit dem Namen hosts im Homeverzeichnis angelegt&lt;br /&gt;
  xinux@zero:~$ ln -v /etc/hosts .&lt;br /&gt;
 „./hosts“ =&amp;gt; „/etc/hosts“&lt;br /&gt;
Auf eine nicht existierende Datei kann kein Hardlink angelegt werden!&lt;br /&gt;
 xinux@zero:~$ ln -v /etc/katze .&lt;br /&gt;
 ln: Zugriff auf „/etc/katze“: No such file or directory&lt;br /&gt;
&lt;br /&gt;
==Shellsonderzeichen==&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot; cellpadding=&amp;quot;2&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
|;&lt;br /&gt;
|Trenne Kommandos&lt;br /&gt;
|-&lt;br /&gt;
|. oder source&lt;br /&gt;
|Ausführen wie in aktueller Shell&lt;br /&gt;
|-&lt;br /&gt;
|#&lt;br /&gt;
|Kommentar&lt;br /&gt;
|-&lt;br /&gt;
|&amp;amp;&lt;br /&gt;
|Programm im Hintergrund starten &lt;br /&gt;
|-&lt;br /&gt;
|&amp;amp;&amp;amp;&lt;br /&gt;
|UND -Ausführung  (wenn links wahr dann führe rechts aus)&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;nowiki&amp;gt;|&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
|STOUT von links wird zu STDIN von rechts &lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;nowiki&amp;gt;||&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
|ODER -Ausführung (wenn links falsch dann führe rechts aus)&lt;br /&gt;
|-&lt;br /&gt;
|*&lt;br /&gt;
|steht für beliebig viel Zeichen auch 0 &lt;br /&gt;
|-&lt;br /&gt;
|?&lt;br /&gt;
|steht für genau ein Zeichen &lt;br /&gt;
|-&lt;br /&gt;
|[abc]&lt;br /&gt;
|steht für eins der Zeichen in [ ] hier a b oder c &lt;br /&gt;
|-&lt;br /&gt;
|[ausdruck] &lt;br /&gt;
|Andere Schreibweis für test &lt;br /&gt;
|-&lt;br /&gt;
|~&lt;br /&gt;
|das Homeverzeichnis&lt;br /&gt;
|-&lt;br /&gt;
|&amp;gt;    und    &amp;gt;&amp;gt;&lt;br /&gt;
|leite in Datei um   &amp;gt;  überschreibe     &amp;gt;&amp;gt; hänge an &lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;&lt;br /&gt;
|lesen aus Datei &lt;br /&gt;
|-&lt;br /&gt;
|2&amp;gt;&amp;amp;1&lt;br /&gt;
|leite STDERR auf STDOUT&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;&amp;lt; ende&lt;br /&gt;
|Lesen aus Datei (Heredokument)&lt;br /&gt;
|-&lt;br /&gt;
|(...)&lt;br /&gt;
|Alles inhalb von ( ) wird als Subshell ausgeführt&lt;br /&gt;
|-&lt;br /&gt;
|{...}&lt;br /&gt;
|Gruppieren von Komandos &lt;br /&gt;
|-&lt;br /&gt;
|{ ,  ,  , }&lt;br /&gt;
|Zeichenketten zusammensetzen &lt;br /&gt;
|-&lt;br /&gt;
|$&lt;br /&gt;
|Inhalt von Variablen ausgeben $SUX&lt;br /&gt;
|-&lt;br /&gt;
|$* oder $@&lt;br /&gt;
|Liste der übergebenen Parameter&lt;br /&gt;
|-&lt;br /&gt;
|$# &lt;br /&gt;
|Anzahl der übergebenen Parameter &lt;br /&gt;
|-&lt;br /&gt;
|$0&lt;br /&gt;
|Name des Shellprogramms &lt;br /&gt;
|-&lt;br /&gt;
|$?&lt;br /&gt;
|Rückgabewert des letzten Kommandos &lt;br /&gt;
|-&lt;br /&gt;
|$!  und  $$&lt;br /&gt;
|PID des  $!  = letzten Hintergrund  -  , $$ = aktuellen Prozess&lt;br /&gt;
|-&lt;br /&gt;
|$1 ..$9&lt;br /&gt;
|Parameter 1 bis 9 &lt;br /&gt;
|-&lt;br /&gt;
|$() oder `  `&lt;br /&gt;
|Kommandosubstition&lt;br /&gt;
|-&lt;br /&gt;
|${ }&lt;br /&gt;
|Funktion zur Manipulation von Zeichenketten &lt;br /&gt;
|-&lt;br /&gt;
|$(( )) oder $[ ]&lt;br /&gt;
|Arithmetische Berechnung &lt;br /&gt;
|-&lt;br /&gt;
|&amp;quot;...&amp;quot;&lt;br /&gt;
|Entwertung der Sonderzeichen ausser $ ' \&lt;br /&gt;
|-&lt;br /&gt;
|'...'&lt;br /&gt;
|Entwertung sämtlicher Sonderzeichen ausser ' selbst&lt;br /&gt;
|-&lt;br /&gt;
|\  &lt;br /&gt;
|Entwertung des folgenden Sonderzeichens &lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Prozesse==&lt;br /&gt;
===Was ist ein Prozess?===&lt;br /&gt;
Ein Prozess setzt sich aus zwei Teilen zusammen:&lt;br /&gt;
&lt;br /&gt;
1.Programm, das in den Hauptspeicher geladen wurde&lt;br /&gt;
&lt;br /&gt;
2.Prozessumgebung== &lt;br /&gt;
Unter einem Prozess versteht man ein Programm (binär), das in den Hauptspeicher&lt;br /&gt;
geladen wurde. Also nicht das Program selbst, das auf der Festplatte liegt ist der&lt;br /&gt;
Prozess, sondern es wird erst durch das Laden in den Hauptspeicher dazu.&lt;br /&gt;
Normalerweise liegt ein Programm als ausführbare Datei irgendwo auf der&lt;br /&gt;
Festplatte oder auf Diskette. Ob es sich bei dem Programm um eine binäre Datei&lt;br /&gt;
handelt, kann man mit dem Befehl '' file '' feststellen.&lt;br /&gt;
 &lt;br /&gt;
 root@zero:~# file /bin/mkdir&lt;br /&gt;
 /bin/mkdir: ELF 32-bit LSB executable, Intel 80386, version 1 (SYSV), dynamically linked (uses shared libs), for GNU/Linux 2.6.8, stripped&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Die Datei liegt im Maschinencode vor und kann in den Hauptspeicher geladen&lt;br /&gt;
werden. Sobald dies geschehen ist, kann der Rechner diesen Maschinencode&lt;br /&gt;
abarbeiten (ausführen).&lt;br /&gt;
&lt;br /&gt;
Da aber ein Programm nicht direkt auf die Hardware zugreifen soll, muss es vom&lt;br /&gt;
Betriebsystem kontrolliert werden. Das Betriebssystem liegt logisch gesehen&lt;br /&gt;
zwischen Hardware und Anwendung. Das Betriebssystem ordnet jedem Prozess&lt;br /&gt;
verschiedene Kenndaten zu, um die Prozesse verwalten zu können. Alle&lt;br /&gt;
Kenndaten, die einem Prozess zugeordnet sind, nennt man die&lt;br /&gt;
Prozessumgebung.Wenn man in der Shell ein Kommando eingibt, wird ein Prozess&lt;br /&gt;
kreiert. Natürlich ist die Shell selbst auch ein Prozess. Ein Prozess kann aber&lt;br /&gt;
genauso gut ein Serverprozess (Dienst) sein, z.B. Apache.&lt;br /&gt;
Ein wesentliches Merkmal eines Prozesses ist die Prozesskommunikation. Über im&lt;br /&gt;
Betriebssystem implementierte Methoden ist es möglich, dass verschiedene&lt;br /&gt;
Prozesse Signale und Daten untereinander austauschen können.&lt;br /&gt;
Dadurch wird auch dem Benutzer ermöglicht, einem Prozeß bestimmte Signale zu&lt;br /&gt;
senden bzw. auf den Status eines Prozesses Einfluss zu nehmen.&lt;br /&gt;
&lt;br /&gt;
===Prozesstabelle (Anzeige mit ps)===&lt;br /&gt;
Da zu jedem Prozess Kenndaten geführt werden, müssen diese auch irgendwo&lt;br /&gt;
festgehalten werden. Das geschieht in der sogenannten Prozesstabelle.&lt;br /&gt;
&lt;br /&gt;
Kenndaten der Prozesse (Auswahl):&lt;br /&gt;
* F Flags (z.B. ausgelagert; Systemprozess; Trace,...)&lt;br /&gt;
* UID Nutzer, mit dessen Rechten der Prozess ausgeführt wird&lt;br /&gt;
* PID Prozess - ID. Diese Nummer gibt eine eindeutige Prozess - Nummer&lt;br /&gt;
an. Sie wird vom System automatisch beim Starten des Prozesses&lt;br /&gt;
vergeben und ist für die Laufzeit eindeutig.&lt;br /&gt;
* PPID Prozessnumer der Eltern-Prozesses&lt;br /&gt;
* PRI Priorität eines Prozesses; je niedriger der Wert ist, desto besser&lt;br /&gt;
* NI ist der Nicewert des Prozesses; Nice erniedrigt den Grundwert&lt;br /&gt;
der Priorität des Prozesses und gibt damit Prozessorzeit für andere&lt;br /&gt;
Prozesse frei.&lt;br /&gt;
* SIZE Speichergröße des Prozesses inklusive Stack (eine Art Zwischenspeicher)&lt;br /&gt;
* RSS Verbrauch an physischen Speicher&lt;br /&gt;
* WCHAN ist der Name der Kernerlfunktion, in der der Prozess schläft&lt;br /&gt;
* STAT Status des Prozesses&lt;br /&gt;
R läuft       S schlafend     D nicht störbarer Schlaf&lt;br /&gt;
T angehalten  Z Zombie        W der Prozess belegt keine Seiten&lt;br /&gt;
* TIME Bisland benötigte Prozessorzeit&lt;br /&gt;
* SIZE ist die Größe von Text, Daten und Stack&lt;br /&gt;
* TTY die Nummer des kontrollierenden Teminal; wenn hier ein ? steht,&lt;br /&gt;
handelt es sich um einen Dämon oder Serverprozess.&lt;br /&gt;
* COMMAND Angabe des Prozesses selbst. Dies ist meist der Programmname.&lt;br /&gt;
&lt;br /&gt;
Weiteres&lt;br /&gt;
* GID Gruppe, unter der der Prozess läuft&lt;br /&gt;
* Verweis auf das aktuellen Arbeitsverzeichnis&lt;br /&gt;
* Um mit relativen Pfadangaben arbeiten zu können braucht man diesen Eintrag&lt;br /&gt;
* Tabelle mit Verweisen auf aktuell geöffnete Dateien&lt;br /&gt;
* 3 sind automatisch geöffnet Standardeingabe, Standardausgabe und&lt;br /&gt;
Standardfehlerkanal&lt;br /&gt;
&lt;br /&gt;
Beispiel&lt;br /&gt;
 root@zero:~# ps -l&lt;br /&gt;
 F S   UID   PID  PPID  C PRI  NI ADDR SZ WCHAN  TTY          TIME CMD&lt;br /&gt;
 4 R     0 18639 18631  0  80   0 -  1080 -      pts/0    00:00:00 bash&lt;br /&gt;
 0 R     0 25904 18639  0  80   0 -   635 -      pts/0    00:00:00 ps&lt;br /&gt;
&lt;br /&gt;
===Eltern und Kinder===&lt;br /&gt;
Jeder Prozess kann weitere Prozesse erzeugen. Die erzeugten Prozesse bezeichnet&lt;br /&gt;
man als Kindprozesse. Jeder Kindprozess weiß anhand der PID, woher er stammt.&lt;br /&gt;
&lt;br /&gt;
Alle Prozesse sind von einem anderen Prozess gestartet worden, mit Ausnahme&lt;br /&gt;
des Pseudoprozesses (noch im Kernel beim Starten erzeugter Prozess). Dieser hat&lt;br /&gt;
die Prozessnummer 0. Er hat die Aufgabe, den Init Prozess ( /sbin/init die Nummer&lt;br /&gt;
1) zu starten, der in System V alle anderen Prozesse direkt oder über seine Kind-&lt;br /&gt;
prozesse startet. (init wird konfiguriert durch die /etc/inittab)&lt;br /&gt;
&lt;br /&gt;
Es gibt zwei Arten wie ein Prozess gestartet werden kann:&lt;br /&gt;
&lt;br /&gt;
# Fork und Exec: Prozessumgebung wird dupliziert, der neue Prozess bekommt eine eigene neue PID&lt;br /&gt;
# Exec: Alter Prozess wird durch neuen Prozess überladen (geht mit dem shell-buildin exec)&lt;br /&gt;
&lt;br /&gt;
'''Rechte auf Objekte UID GID'''&lt;br /&gt;
Ob ein Prozess auf eine Datei zugreifen kann, entscheidet der Kernel anhand der&lt;br /&gt;
Zugriffssrechte, die auf der Datei gesetzt sind. Er checkt anhand der UID und GID&lt;br /&gt;
des Prozesses, ob es erlaubt ist. Mit dieser Technik wird letztendlich geprüft, was&lt;br /&gt;
ein User darf, und was nicht.&lt;br /&gt;
&lt;br /&gt;
===Rechenzeit und Priorität===&lt;br /&gt;
Da auch bei Prozessen eine Gerechtigkeit herschen muss, muss eine Instanz&lt;br /&gt;
darüber entscheiden wie lange ein Prozess Rechenzeit verbrauchen darf.&lt;br /&gt;
Folgende Kenndaten werden dazu benötigt&lt;br /&gt;
* clocktick = Zeiteinheit&lt;br /&gt;
* n = Faktor über den Kernel einstellbar&lt;br /&gt;
* slice = n &amp;lt;nowiki&amp;gt;*&amp;lt;/nowiki&amp;gt; clocktick&lt;br /&gt;
* agingtime = weitere Zeiteinheit über den Kernel einstellbar&lt;br /&gt;
&lt;br /&gt;
Es wird davon ausgegangen das der Prozess mit der niedrigsten Priorität gerade&lt;br /&gt;
rechnet. Pro clocktick erhöht sich die Priorität dieses Prozesses um eins.&lt;br /&gt;
&lt;br /&gt;
Jetzt können 3 Situationen eintreten die alle dazu führen das der Scheduler&lt;br /&gt;
aufgerufen wird.&lt;br /&gt;
&lt;br /&gt;
# Prozess blockiert wegen einer Ausgabe oder Eingabe.&lt;br /&gt;
# Gibt Rechenzeit freiwillig ab.&lt;br /&gt;
# Der Slice endet.&lt;br /&gt;
&lt;br /&gt;
Der Aufruf des Schedulers bewirkt das der Prozess mit der niedrigsten Priorität&lt;br /&gt;
gescheduled wird, er also nun rechnen darf. Nach Ablauf der agingtime werden&lt;br /&gt;
nun die Prozesse &amp;quot;gealtert&amp;quot;. Das geschieht nach folgender Formel&lt;br /&gt;
&lt;br /&gt;
Neue Priorität = Alte Priorität / 2 + Nicewert&lt;br /&gt;
&lt;br /&gt;
Der User hat die Möglichkeit, über den sogenannten Nicefaktor den Grundwert für&lt;br /&gt;
einen Prozess zu senken. Der Prozess braucht dann länger für seine Abarbeitung.&lt;br /&gt;
Er verhält sich somit netter zu den anderen Prozessen. Normale User können nur&lt;br /&gt;
netter werden, der Systemverwalter kann auch nicht netter (gemeiner) werden. Der&lt;br /&gt;
Bereich liegt zwischen 19 (sehr nett) bis 0 (weniger nett) für die User, und 19 bis&lt;br /&gt;
-20 für root.&lt;br /&gt;
&lt;br /&gt;
[[Image:pri.png]]&lt;br /&gt;
&lt;br /&gt;
'''Signale'''&lt;br /&gt;
&lt;br /&gt;
Mit den Kommando kill und killall kann man Prozessen Signale schicken&lt;br /&gt;
&lt;br /&gt;
 kill -Signalnummer PID &lt;br /&gt;
&lt;br /&gt;
Signalnummer&lt;br /&gt;
{| border=1 cellpadding=2&lt;br /&gt;
!Signalname&lt;br /&gt;
!Wert&lt;br /&gt;
!Aktion&lt;br /&gt;
|-&lt;br /&gt;
|SIGHUP&lt;br /&gt;
|1&lt;br /&gt;
|Neuinitialisierung eines Prozesses&lt;br /&gt;
|-&lt;br /&gt;
|SIGINT&lt;br /&gt;
|2&lt;br /&gt;
|Interrupt-Signal von der Tastatur (STRG+c)&lt;br /&gt;
|-&lt;br /&gt;
|SIGQUIT&lt;br /&gt;
|3&lt;br /&gt;
|Interrupt-Signal von der Tastatur (STRG+c) mit Dump&lt;br /&gt;
|-&lt;br /&gt;
|SIGKILL&lt;br /&gt;
|9&lt;br /&gt;
|unwiderrufliches Beendigungssignal (Töten)&lt;br /&gt;
|-&lt;br /&gt;
|SIGSEGV&lt;br /&gt;
|11&lt;br /&gt;
|Ungültige Speicherreferenz (bedeutet oft auf defekten Speicher)&lt;br /&gt;
|-&lt;br /&gt;
|SIGTERM &lt;br /&gt;
|15&lt;br /&gt;
|Beendigungssignal (geöffnete Dateien werden geschlossen)&lt;br /&gt;
|-&lt;br /&gt;
|SIGCONT &lt;br /&gt;
|18&lt;br /&gt;
|Weiterfahren, wenn gestoppt&lt;br /&gt;
|-&lt;br /&gt;
|SIGSTOP&lt;br /&gt;
|19&lt;br /&gt;
|Prozessstop&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Beispiel&lt;br /&gt;
 root@zero:~# kill -1 7562&lt;br /&gt;
&lt;br /&gt;
===Programme im Zusammenhang mit Prozessen===&lt;br /&gt;
* ps: Zeigt die Prozesse mit ihrem Status an&lt;br /&gt;
 root@zero:~# ps&lt;br /&gt;
  PID TTY          TIME CMD&lt;br /&gt;
 14134 pts/0    00:00:00 bash&lt;br /&gt;
 14149 pts/0    00:00:00 ps&lt;br /&gt;
&lt;br /&gt;
 root@zero:~# ps -elf | grep apache&lt;br /&gt;
 1 S root      5738     1  0  80   0 -  5461 select Jun16 ?        00:00:00 /usr/sbin/apache2 -k start&lt;br /&gt;
 5 S www-data  5739  5738  0  80   0 -  5581 inet_c Jun16 ?        00:00:00 /usr/sbin/apache2 -k start&lt;br /&gt;
 5 S www-data  5742  5738  0  80   0 -  5461 inet_c Jun16 ?        00:00:00 /usr/sbin/apache2 -k start&lt;br /&gt;
 5 S www-data  5743  5738  0  80   0 -  5461 inet_c Jun16 ?        00:00:00 /usr/sbin/apache2 -k start&lt;br /&gt;
 5 S www-data  5745  5738  0  80   0 -  5461 inet_c Jun16 ?        00:00:00 /usr/sbin/apache2 -k start&lt;br /&gt;
 5 S www-data  5746  5738  0  80   0 -  5461 inet_c Jun16 ?        00:00:00 /usr/sbin/apache2 -k start&lt;br /&gt;
 0 S root     14153 14134  0  80   0 -   837 pipe_w 16:59 pts/0    00:00:00 grep apache&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* nice: Lässt ein Programm mit verändertem Grundwert der Priorität laufen&lt;br /&gt;
 root@zero:~# nice&lt;br /&gt;
 0&lt;br /&gt;
 root@zero:~# nice -n 9 bash&lt;br /&gt;
 root@zero:~# nice&lt;br /&gt;
 9&lt;br /&gt;
 root@zero:~#&lt;br /&gt;
&lt;br /&gt;
* renice: Ändert den Grundwert der Priorität eines laufenden Prozesses&lt;br /&gt;
 root@zero:~# renice 10 5742&lt;br /&gt;
 5742: Alte Priorität: 0, neue Priorität: 10&lt;br /&gt;
&lt;br /&gt;
* top: Zeigt die Prozesse mit ihrem Status an (Abbrechen mit q)&lt;br /&gt;
 root@zero:~# top&lt;br /&gt;
&lt;br /&gt;
* pstree: Zeigt die Prozesse als Baumstruktur&lt;br /&gt;
 root@zero:~# pstree&lt;br /&gt;
 init─┬─NetworkManager&lt;br /&gt;
      ├─acpid&lt;br /&gt;
      ├─apache2───5*[apache2]&lt;br /&gt;
      ├─atd&lt;br /&gt;
      ├─bluetoothd&lt;br /&gt;
      ├─console-kit-dae───63*[{console-kit-dae}]&lt;br /&gt;
      ├─cron&lt;br /&gt;
      ├─cupsd&lt;br /&gt;
      ├─dbus-daemon&lt;br /&gt;
      ├─dd&lt;br /&gt;
      ├─gdm───gdm─┬─Xorg&lt;br /&gt;
      │           └─gdmgreeter&lt;br /&gt;
      ├─6*[getty]&lt;br /&gt;
      ├─hald───hald-runner─┬─hald-addon-acpi&lt;br /&gt;
      │                    ├─hald-addon-inpu&lt;br /&gt;
      │                    └─2*[hald-addon-stor]&lt;br /&gt;
      ├─klogd&lt;br /&gt;
      ├─nm-system-setti&lt;br /&gt;
      ├─nmbd&lt;br /&gt;
      ├─nscd───11*[{nscd}]&lt;br /&gt;
      ├─portmap&lt;br /&gt;
      ├─rpc.statd&lt;br /&gt;
      ├─slapd───2*[{slapd}]&lt;br /&gt;
      ├─smbd───smbd&lt;br /&gt;
      ├─sshd───sshd───bash───bash───pstree&lt;br /&gt;
      ├─syslogd&lt;br /&gt;
      ├─system-tools-ba&lt;br /&gt;
      ├─udevd&lt;br /&gt;
      ├─winbindd─┬─winbindd───winbindd&lt;br /&gt;
      │          └─3*[winbindd]&lt;br /&gt;
      └─wpa_supplicant&lt;br /&gt;
&lt;br /&gt;
===Jobs===&lt;br /&gt;
Unter einem Job versteht man ein Programm, welches man von der Shell gelöst&lt;br /&gt;
hat. D. h. man kann ganz normal weiter arbeiten und der Job verrichtet seinen&lt;br /&gt;
Dienst im Hintergrund. Man kann jederzeit zu diesem Job wieder Kontakt&lt;br /&gt;
aufnehmen.&lt;br /&gt;
&lt;br /&gt;
Ein Job kann auf 2 Arten gestarten werden:&lt;br /&gt;
&lt;br /&gt;
# Durch Anhängen des &amp;amp; Zeichens beim Programmstart&lt;br /&gt;
 root@zero:~# tail -f /var/log/messages &amp;amp;&lt;br /&gt;
 Jun 19 06:59:31 zero -- MARK --&lt;br /&gt;
 Jun 19 07:19:31 zero -- MARK --&lt;br /&gt;
 Jun 19 07:39:32 zero -- MARK --&lt;br /&gt;
 Jun 19 07:44:57 zero syslogd 1.5.0#5ubuntu3: restart.&lt;br /&gt;
 Jun 19 07:59:32 zero -- MARK --&lt;br /&gt;
 Jun 19 08:19:32 zero -- MARK --&lt;br /&gt;
 Jun 19 08:39:32 zero -- MARK --&lt;br /&gt;
 Jun 19 08:59:32 zero -- MARK --&lt;br /&gt;
 Jun 19 09:19:33 zero -- MARK --&lt;br /&gt;
 Jun 19 09:39:33 zero -- MARK --&lt;br /&gt;
 [3] 27421&lt;br /&gt;
&lt;br /&gt;
# Durch Stoppen des Prozesses durch Drücken von Strg-Z und in den Hintergrund schicken mit %n (n ist die Jobnummer)&lt;br /&gt;
 root@zero:~# watch cat /proc/cpuinfo&lt;br /&gt;
 Strg-Z&lt;br /&gt;
 [4]+  Stopped                 watch cat /proc/cpuinfo&lt;br /&gt;
 root@zero:~# bg %4&lt;br /&gt;
 [4]+ watch cat /proc/cpuinfo &amp;amp;&lt;br /&gt;
&lt;br /&gt;
Anweisungen im Zusammenhang mit Jobs (n ist die Jobnummer)&lt;br /&gt;
* bg %n : Einen Job in den Hintergrund stellen (wie oben)&lt;br /&gt;
* fg %n : Einen Job in den Vordergrund holen&lt;br /&gt;
 root@zero:~# fg %4&lt;br /&gt;
 watch cat /proc/cpuinfo&lt;br /&gt;
&lt;br /&gt;
* jobs : Aktive Jobs ausgeben&lt;br /&gt;
&lt;br /&gt;
 root@zero:~# jobs&lt;br /&gt;
 [1]   Running                 tail -f /var/log/syslog &amp;amp;&lt;br /&gt;
 [2]   Running                 tail -f /var/log/syslog &amp;amp;&lt;br /&gt;
 [3]-  Running                 tail -f /var/log/messages &amp;amp;&lt;br /&gt;
 [4]+  Stopped                 watch cat /proc/cpuinfo&lt;br /&gt;
&lt;br /&gt;
* Strg-Z : Einen Vordergrund-Job vorübergehend anhalten&lt;br /&gt;
* kill -STOP %n : Unterbricht Job im Hintergrund&lt;br /&gt;
 root@zero:~# kill -STOP %1&lt;br /&gt;
 root@zero:~# jobs&lt;br /&gt;
 [1]+  '''Stopped'''                 tail -f /var/log/syslog&lt;br /&gt;
 [2]   Running                 tail -f /var/log/syslog &amp;amp;&lt;br /&gt;
 [3]   Running                 tail -f /var/log/messages &amp;amp;&lt;br /&gt;
 [4]-  Stopped                 watch cat /proc/cpuinfo&lt;br /&gt;
* kill -CONT %n : Setzt den unterbrochenen Job im Hintergrund fort&lt;br /&gt;
root@zero:~# kill -CONT %1&lt;br /&gt;
root@zero:~# jobs&lt;br /&gt;
 [1]+  '''Running'''                 tail -f /var/log/syslog &amp;amp;&lt;br /&gt;
 [2]   Running                 tail -f /var/log/syslog &amp;amp;&lt;br /&gt;
 [3]   Running                 tail -f /var/log/messages &amp;amp;&lt;br /&gt;
 [4]-  Stopped                 watch cat /proc/cpuinfo&lt;br /&gt;
* kill -KILL %n : Tötet Job im Hintergrund&lt;br /&gt;
 root@zero:~# kill -KILL %1&lt;br /&gt;
 root@zero:~# jobs&lt;br /&gt;
 [1]+  '''Killed'''                  tail -f /var/log/syslog&lt;br /&gt;
 [2]   Running                 tail -f /var/log/syslog &amp;amp;&lt;br /&gt;
 [3]   Running                 tail -f /var/log/messages &amp;amp;&lt;br /&gt;
 [4]-  Stopped                 watch cat /proc/cpuinfo&lt;br /&gt;
 root@zero:~# jobs&lt;br /&gt;
 [2]   Running                 tail -f /var/log/syslog &amp;amp;&lt;br /&gt;
 [3]-  Running                 tail -f /var/log/messages &amp;amp;&lt;br /&gt;
 [4]+  Stopped                 watch cat /proc/cpuinfo&lt;br /&gt;
&lt;br /&gt;
Bedingungen, die zu Jobausführung eingehalten werden sollen:&lt;br /&gt;
* Der Job soll nicht auf den Bildschirm schreiben (Standardausgabe +Standardfehlerkanal).&lt;br /&gt;
* Er soll keine Eingaben vom Benutzer erwarten.&lt;br /&gt;
&lt;br /&gt;
==Suchen von Dateien==&lt;br /&gt;
===find===&lt;br /&gt;
 find ab_wo_wird_gesucht was_wird_gesucht aktion&lt;br /&gt;
 find [Pfad] [Bedingung] [Aktion]&lt;br /&gt;
&lt;br /&gt;
====Nach Namen====&lt;br /&gt;
 find [Pfad] '''-name''' [Name]&lt;br /&gt;
 &lt;br /&gt;
Finde alle Dateien mit Namen test ab dem Verzeichnis /home und gebe diese Zeilenweise aus&lt;br /&gt;
 root@zero:~# find /home -name test -print&lt;br /&gt;
 /home/xinux/test&lt;br /&gt;
 /home/test&lt;br /&gt;
&lt;br /&gt;
Wie oben, jedoch mit Namensanfang test&lt;br /&gt;
 root@zero:/home/xinux# find /home -name 'test*'&lt;br /&gt;
 /home/xinux/testdatei&lt;br /&gt;
 /home/xinux/test&lt;br /&gt;
 /home/test&lt;br /&gt;
&lt;br /&gt;
====Nach Benutzer(Eigentümer)====&lt;br /&gt;
 root@zero:/tmp# find /tmp/ '''-user''' xinux&lt;br /&gt;
 /tmp/datei&lt;br /&gt;
&lt;br /&gt;
====Nach Gruppe====&lt;br /&gt;
 root@zero:/tmp# find /tmp/ '''-group''' hacker&lt;br /&gt;
 /tmp/datei3&lt;br /&gt;
 /tmp/datei2&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
====Nach Typ====&lt;br /&gt;
Es wird nach Dateien anhand Ihrer Art gesucht:&lt;br /&gt;
 find [Pfad] '''-type''' [Typ] &lt;br /&gt;
Typ:&lt;br /&gt;
* f: Normale Dateien&lt;br /&gt;
 root@zero:~# find /tmp/ -type f&lt;br /&gt;
 /tmp/mbr.img&lt;br /&gt;
 /tmp/datei&lt;br /&gt;
 /tmp/zeugs&lt;br /&gt;
 /tmp/.X0-lock&lt;br /&gt;
* d: Verzeichnisse&lt;br /&gt;
 root@zero:~# find /var/log -type d&lt;br /&gt;
 /var/log&lt;br /&gt;
 /var/log/apache2&lt;br /&gt;
 /var/log/unattended-upgrades&lt;br /&gt;
 /var/log/apparmor&lt;br /&gt;
 /var/log/ConsoleKit&lt;br /&gt;
 /var/log/dist-upgrade&lt;br /&gt;
 /var/log/dist-upgrade/20090526-1052&lt;br /&gt;
 /var/log/cups&lt;br /&gt;
 /var/log/apt&lt;br /&gt;
 /var/log/fsck&lt;br /&gt;
 /var/log/samba&lt;br /&gt;
 /var/log/samba/cores&lt;br /&gt;
 /var/log/samba/cores/smbd&lt;br /&gt;
 /var/log/samba/cores/nmbd&lt;br /&gt;
 /var/log/samba/cores/winbindd&lt;br /&gt;
 /var/log/installer&lt;br /&gt;
 /var/log/gdm&lt;br /&gt;
 /var/log/news&lt;br /&gt;
* c: Char Devices (Zeichenorientierte Gerätedatei)&lt;br /&gt;
 root@zero:~# find / -type c&lt;br /&gt;
 /lib/udev/devices/kmem&lt;br /&gt;
 /lib/udev/devices/null&lt;br /&gt;
 /lib/udev/devices/console&lt;br /&gt;
 /lib/udev/devices/ppp&lt;br /&gt;
 /lib/udev/devices/net/tun&lt;br /&gt;
* b: Block Devices (Blockorientierte Gerätedatei)&lt;br /&gt;
* p: Benannte Pipe&lt;br /&gt;
* l: Links&lt;br /&gt;
* s: Sockets&lt;br /&gt;
&lt;br /&gt;
====Nach Modifikation====&lt;br /&gt;
Listet alle Dateien in /etc auf, die innerhalb von zwei Tagen modifiziert wurden&lt;br /&gt;
 root@zero:/var/log# find /etc/ -mtime 2 -print&lt;br /&gt;
 /etc/apache2&lt;br /&gt;
 /etc/apache2/mods-available&lt;br /&gt;
 /etc/apache2/conf.d&lt;br /&gt;
 /etc/apache2/sites-available&lt;br /&gt;
 /etc/bash_completion.d&lt;br /&gt;
 /etc/blkid.tab.old&lt;br /&gt;
 /etc/firefox-3.0/profile&lt;br /&gt;
 /etc/firefox-3.0/profile/chrome&lt;br /&gt;
 /etc/firefox-3.0/pref&lt;br /&gt;
 /etc/profile.d&lt;br /&gt;
 /etc/ufw/applications.d&lt;br /&gt;
 /etc/logrotate.d&lt;br /&gt;
 /etc/xulrunner-1.9&lt;br /&gt;
 /etc/blkid.tab&lt;br /&gt;
 /etc/cron.daily&lt;br /&gt;
 /etc/alternatives&lt;br /&gt;
 /etc/alternatives/x-www-browser&lt;br /&gt;
 /etc/alternatives/xulrunner&lt;br /&gt;
 /etc/gre.d&lt;br /&gt;
 /etc/hal/fdi/policy&lt;br /&gt;
 /etc/dbus-1/system.d&lt;br /&gt;
 /etc/udev/rules.d&lt;br /&gt;
&lt;br /&gt;
====Nach Größe====&lt;br /&gt;
Finde Dateien in /tmp, die größer als 100 MByte sind&lt;br /&gt;
 root@zero:/tmp# find /tmp/ -size +100M&lt;br /&gt;
 /tmp/datei&lt;br /&gt;
&lt;br /&gt;
Finde Dateien in /tmp, die kleiner als 100 KByte sind&lt;br /&gt;
 root@zero:/tmp# find /tmp/ -size -100k&lt;br /&gt;
 /tmp/&lt;br /&gt;
 /tmp/datei3&lt;br /&gt;
 /tmp/backup &lt;br /&gt;
 /tmp/datei2&lt;br /&gt;
 /tmp/.winbindd &lt;br /&gt;
 /tmp/.winbindd/pipe&lt;br /&gt;
 /tmp/mbr.img&lt;br /&gt;
 /tmp/zeugs&lt;br /&gt;
 /tmp/.ICE-unix&lt;br /&gt;
 /tmp/.X0-lock&lt;br /&gt;
 /tmp/datei1&lt;br /&gt;
 /tmp/.X11-unix&lt;br /&gt;
 /tmp/.X11-unix/X0&lt;br /&gt;
 /tmp/pulse-PKdhtXMmr18n&lt;br /&gt;
&lt;br /&gt;
====Nach Berechtigungen====&lt;br /&gt;
Finde Dateien in Home mit der Berechtigung 777 (-rwxrwxrwx)&lt;br /&gt;
 root@zero:/var# find /home/ -perm 777&lt;br /&gt;
 /home/samba&lt;br /&gt;
 /home/xinux/Examples&lt;br /&gt;
 /home/xinux/.pulse/1f0763ee4cf4c7e1d3c07fd149dda37b:runtime&lt;br /&gt;
 /home/test/Examples&lt;br /&gt;
&lt;br /&gt;
===locate===&lt;br /&gt;
Locate arbeitet über einen Index, der erstellt und aktualisiert werden muss. Aus diesem Grund kann locate teilweise nicht &lt;br /&gt;
akutell sein. Es ist immer schneller als find und es durchsucht immer das ganze Dateisystem. &lt;br /&gt;
 locate [Dateiname]&lt;br /&gt;
 &lt;br /&gt;
Lokalisiere die Datei wvdial.conf. Anmerkung: Der Stern wird beim Suchen automatisch hinzugefügt. Entspricht also&lt;br /&gt;
wvidal.conf*&lt;br /&gt;
 root@zero:~# locate wvdial.conf&lt;br /&gt;
 /etc/wvdial.conf&lt;br /&gt;
 /usr/share/man/man5/wvdial.conf.5.gz&lt;br /&gt;
 /var/lib/dpkg/info/wvdial.conffiles&lt;br /&gt;
 /var/lib/dpkg/info/wvdial.config&lt;br /&gt;
&lt;br /&gt;
Lokalisiere die Datei wvdial.conf und nur diese&lt;br /&gt;
 root@zero:~# locate -b '\wvdial.conf'&lt;br /&gt;
 /etc/wvdial.conf&lt;br /&gt;
&lt;br /&gt;
Aktualisieren des Indexes&lt;br /&gt;
 root@zero:~# updatedb&lt;br /&gt;
&lt;br /&gt;
==Wie wird ein Kommando lokalisiert==&lt;br /&gt;
Wenn die Shell alle Ersetzungen in der Kommandozeile vorgenommen und alle Umleitungen vorbereitet hat, ist der Zeitpunkt &lt;br /&gt;
gekommen, auf den der Anwender die ganze Zeit gewartet hat. Die Shell versucht das Kommando auszuführen. Dazu muss sie &lt;br /&gt;
es aber erst lokalisieren. Das erste passende Kommando wird ausgeführt.&lt;br /&gt;
&lt;br /&gt;
Als Kommandoname wird immer das erste Wort eines einfachen Kommandos erkannt. Ein Kommandoname kann mit Pfadnamen in &lt;br /&gt;
einem Verzeichnis (absolut oder relativ) angegeben werden. Die Shell erkennt dies an (mindestens) einem Slash `/' &lt;br /&gt;
im Kommandonamen. Wenn kein Verzeichnis angegeben ist, versucht die Shell selbst, das Kommando zu finden. Dazu wird &lt;br /&gt;
der Kommandoname zuerst in der Hashtabelle gesucht, dann wird er mit den Synonymen, mit den Scriptfunktionen und &lt;br /&gt;
schließlich mit den Shellfunktionen verglichen. &lt;br /&gt;
&lt;br /&gt;
Wird auf diese Weise kein Programm dieses Namens gefunden, werden alle in der PATH-Umgebungsvariablen aufgeführten &lt;br /&gt;
Verzeichnisse nach einer ausführbaren Datei dieses Namens durchsucht. Wird auch hier kein passendes Kommando gefunden, &lt;br /&gt;
gibt die Shell eine Fehlermeldung aus.&lt;br /&gt;
&lt;br /&gt;
===which und type===&lt;br /&gt;
====which====&lt;br /&gt;
which gibt die vollen Pfadnamen der Dateien aus, die bei Benutzung des angegebenen Befehls ausgeführt werden würden.&lt;br /&gt;
&lt;br /&gt;
 which [-a] Dateiname &lt;br /&gt;
&lt;br /&gt;
Optionen:&lt;br /&gt;
&lt;br /&gt;
* -a : Alle Treffer ausgeben, nicht nur den ersten&lt;br /&gt;
* --skip-dot : Verzeichnisse, die mit einem Punkt beginnen, auslassen&lt;br /&gt;
&lt;br /&gt;
Beispiel&lt;br /&gt;
 root@zero:~# which startx&lt;br /&gt;
 /usr/bin/startx&lt;br /&gt;
&lt;br /&gt;
====type====&lt;br /&gt;
Anzeigen der absoluten Pfadnamen von Befehlen, und ob sich diese Befehle in der Hash-Tabelle der aktuellen&lt;br /&gt;
Shell befinden.&lt;br /&gt;
&lt;br /&gt;
 type [Optionen] Befehle&lt;br /&gt;
&lt;br /&gt;
Beispiel&lt;br /&gt;
 root@zero:~# type ls&lt;br /&gt;
 ls is aliased to `ls --color=auto'&lt;br /&gt;
&lt;br /&gt;
Optionen:&lt;br /&gt;
&lt;br /&gt;
* -a : Alle vorkommenden Befehle werden ausgegeben, nicht nur das, welches aufgerufen werden würde&lt;br /&gt;
 root@zero:~# type '''-a''' ls&lt;br /&gt;
 ls is aliased to `ls --color=auto'&lt;br /&gt;
 ls is /bin/ls&lt;br /&gt;
&lt;br /&gt;
* -p : Anzeigen des Eintrags von Befehl in der Hash-Tabelle. Dieser Wert kann sich vom ersten Auftreten des Befehls in PATH&lt;br /&gt;
unterscheiden&lt;br /&gt;
 root@zero:~# type '''-p''' apache2&lt;br /&gt;
 /usr/sbin/apache2&lt;br /&gt;
&lt;br /&gt;
* -t : Anzeigen, ob Befehl ein Aliasname, ein Schlüsselwort, eine Funktion, ein eingebauter Befehl oder eine Datei ist&lt;br /&gt;
 root@zero:~# type '''-t''' apache2&lt;br /&gt;
 file&lt;/div&gt;</summary>
		<author><name>192.168.178.46</name></author>
	</entry>
	<entry>
		<id>https://www.xinux.net/index.php?title=Linux_Grundlagen&amp;diff=86</id>
		<title>Linux Grundlagen</title>
		<link rel="alternate" type="text/html" href="https://www.xinux.net/index.php?title=Linux_Grundlagen&amp;diff=86"/>
		<updated>2009-07-07T11:00:42Z</updated>

		<summary type="html">&lt;p&gt;192.168.178.46: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Einführung==&lt;br /&gt;
===Geschichte Unix===&lt;br /&gt;
====1969====&lt;br /&gt;
Am Anfang von Linux steht Multics, ein von Bell Laboratories geschaffenes &amp;quot;Betriebssystem&amp;quot;, &lt;br /&gt;
das noch mit Lochkarten arbeitete. Multics wird mit Unterstützung von AT&amp;amp;T und Western &lt;br /&gt;
Electric unter Mitarbeit von Ken Thompson und Dennis Ritchie weiterentwickelt. Obwohl sich &lt;br /&gt;
Bell Laboratories bald zurückzieht, gibt Thompson das Projekt nicht auf.  Zum Entwicklerteam &lt;br /&gt;
gehören auch Rudd Canaday und Brian Kernighan. Letzterer gibt 1970 dem Betriebssystem den Namen UNIX. &lt;br /&gt;
Thompson definiert 7 Richtlinien für UNIX:&lt;br /&gt;
 &lt;br /&gt;
# Hierarchische Anordnung der Dateisysteme&lt;br /&gt;
# Die Ausgabe von Daten an die Peripherie(-geräte) und Dateien soll gleich sein.&lt;br /&gt;
# Prozesse und Programme sollen miteinander kommunizieren.&lt;br /&gt;
# Multitasking (voneinander getrennte Prozesse)&lt;br /&gt;
# Persönliche Shell's&lt;br /&gt;
# Der Compiler soll für viele Programmiersprachen tauglich sein.&lt;br /&gt;
# Portabilität&lt;br /&gt;
&lt;br /&gt;
====1971====&lt;br /&gt;
Bis 1971 ist das für eine DEC PDP-7 geschriebene Unix als Version 1 auf eine PDP-11 portiert. Bis&lt;br /&gt;
zur Version 4 entwickelt Ritchie die Programmier- (Hoch-) Sprache C. Das in Assembler geschriebene&lt;br /&gt;
Unix wird fast völlig nach C übersetzt, wodurch zum erstenmal die geforderte Hardware-Unabhängigkeit&lt;br /&gt;
des Betriebssystems realisiert werden kann.&lt;br /&gt;
&lt;br /&gt;
====1975====&lt;br /&gt;
Da AT&amp;amp;T aufgrund vertraglicher Bindungen mit der US-Bundesregierung Unix nicht kommerziell vermarkten darf, stellt sie den Source Code für ein paar hundert Dollar den Universitäten, Lehr- und Forschungsanstalten zur Verfügung. Dies führt zu einer sehr dynamischen Entwicklung von Unix. 1975 wird die Version 6 als erstes UNIX-System veröffentlicht, die darauffolgende Version 7 wird sehr erfolgreich. Da es keine Standardisierung gibt, entwickeln bald verschiedenste Firmen ihr eigenes UNIX. Ab 1984 wird AT&amp;amp;T per Gerichtsbeschluss erlaubt, Unix zu vermarkten. AT&amp;amp;T verkauft sein Unix V und beginnt, sich um einen internationalen Standard von UNIX zu bemühen. &lt;br /&gt;
&lt;br /&gt;
====1984====&lt;br /&gt;
Durch Richard Stallman wird die Free Software Foundation (FSF) gegründet. Diese initiiert ein Projekt namens GNU (GNU ist Not Unix), welches das Ziel verfolgt, ein freies UNIX System zu schaffen. &lt;br /&gt;
&lt;br /&gt;
====1987====&lt;br /&gt;
AT&amp;amp;T verbietet die Verwendung des Unix Quellcodes an den Universitäten. Während dieser Zeit ist Andrew (Andy) Tannenbaum Professor an der Freien Universität von Amsterdam und entwickelt Minix. Minix ist ein kostengünstiges Lehrbetriebssystem und kommt ohne jeglichen AT&amp;amp;T Code aus, obwohl es die gleiche Funktionalität wie Unix 7 bietet. Im Usenet unter comp.os.minix entsteht eine Minix-Gemeinde, die den Minix Kernel und die Anwendungen rundherum programmiert und verbessert.&lt;br /&gt;
&lt;br /&gt;
====1991====&lt;br /&gt;
Linus Torvalds hat als Student für Computerwissenschaften an der Universität in Helsinki Minix installiert und das Buch von Andy Tannenbaum gelesen. Er beginnt im Sinne der FSF einen Unix ähnlichen Kernel zu programmieren mit der Idee, &amp;quot;ein besseres Minix als Minix&amp;quot; zu bauen. 1992 stellt er die Version 0.02 mit dem Namen Linux der Internetgemeinde zur Verfügung. &lt;br /&gt;
&lt;br /&gt;
====1994====&lt;br /&gt;
Die Linux Version 1.0 wird freigegeben. Das Linux Fieber beginnt... &lt;br /&gt;
&lt;br /&gt;
====1998====&lt;br /&gt;
Der Kreis der Linux Entwickler und Anwender ist kräftig angeschwollen. KDE 1.0 wird veröffentlicht. Die Zuwachsraten von Linux übertreffen die von Windows NT deutlich. &lt;br /&gt;
&lt;br /&gt;
====1999====&lt;br /&gt;
Der lange erwartete stabile Linux Kernel Version 2.2 wird freigegeben. Namhafte Firmen wie IBM kündigen ihre Unterstützung für Linux an. &lt;br /&gt;
&lt;br /&gt;
====2001====&lt;br /&gt;
Der lange erwartete stabile Linux Kernel Version 2.4 wird freigegeben. USB Unterstützung und eine neue Firewallimplementierung zeichnen ihn aus.&lt;br /&gt;
&lt;br /&gt;
====2003====&lt;br /&gt;
Linux Kernel Version 2.6 wird freigegeben. Am auffälligsten sind Änderungen bei der Modulverwaltung.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Distributionen===&lt;br /&gt;
{| Border=1 Cellpadding=2&lt;br /&gt;
| &lt;br /&gt;
|Url&lt;br /&gt;
|Paketformat&lt;br /&gt;
|-&lt;br /&gt;
|Red Hat&lt;br /&gt;
|www.redhat.com&lt;br /&gt;
|rpm&lt;br /&gt;
|-&lt;br /&gt;
|fedora&lt;br /&gt;
|fedora.redhat.com&lt;br /&gt;
|rpm&lt;br /&gt;
|-&lt;br /&gt;
|CentOS&lt;br /&gt;
|www.centos.org&lt;br /&gt;
|rpm&lt;br /&gt;
|-&lt;br /&gt;
|Suse/openSUSE&lt;br /&gt;
|www.opensuse.org&lt;br /&gt;
|rpm&lt;br /&gt;
|-&lt;br /&gt;
|Debian&lt;br /&gt;
|www.debian.org&lt;br /&gt;
|deb&lt;br /&gt;
|-&lt;br /&gt;
|Ubuntu&lt;br /&gt;
|www.ubuntu.com&lt;br /&gt;
|deb&lt;br /&gt;
|-&lt;br /&gt;
|Mandrake&lt;br /&gt;
|www.linux-mandrake.com&lt;br /&gt;
|rpm&lt;br /&gt;
|-&lt;br /&gt;
|Easy Linux&lt;br /&gt;
|www.easy-linux.de&lt;br /&gt;
|rpm&lt;br /&gt;
|-&lt;br /&gt;
|Turbo&lt;br /&gt;
|www.turbolinux.com&lt;br /&gt;
|rpm&lt;br /&gt;
|-&lt;br /&gt;
|minis&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|toms&lt;br /&gt;
|www.toms.net/rb&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|damn small linux&lt;br /&gt;
|www.damnsmalllinux.org&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|pocket-linux&lt;br /&gt;
|www.pocket-linux.org&lt;br /&gt;
|&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
====Bücher====&lt;br /&gt;
 Titel : Das Linux Anwenderhandbuch und Leitfaden für die Systemverwaltung&lt;br /&gt;
 Autor : Sebastian Hetze, Dirk Hohndel, Olaf Kirch und Martin Müller&lt;br /&gt;
 Verlag: Lunetix&lt;br /&gt;
 ISBN : 3-929764-06-7&lt;br /&gt;
&lt;br /&gt;
 Titel : Linux in a Nutshell&lt;br /&gt;
 Autor : Jessica Perry Hekman und die Mitarbeiter von O'Reilly &amp;amp; Associates&lt;br /&gt;
 Verlag: O'Reilly&lt;br /&gt;
 ISBN : 3-930673-57-6&lt;br /&gt;
&lt;br /&gt;
 Titel : Linux - Wegweiser zur Installation und Konfiguration&lt;br /&gt;
 Autor : Matt Welsh, Lar Kaufman, Matthias Kalle Dallheimer&lt;br /&gt;
 Verlag: O'Reilly&lt;br /&gt;
 ISBN : 3-930673-58-4 (deutsch), 1-56592-469-X (englisch)&lt;br /&gt;
&lt;br /&gt;
 Titel : Linux - Installation, Konfiguration, Anwendung&lt;br /&gt;
 Autor : Michael KoflerMultitasking&lt;br /&gt;
 Verlag: Addison-Wesley&lt;br /&gt;
 ISBN : 3-8273-1475-5&lt;br /&gt;
&lt;br /&gt;
 Titel : Linux - Wegweiser für Netzwerker&lt;br /&gt;
 Autor : Olaf Kirch&lt;br /&gt;
 Verlag: O'Reilly&lt;br /&gt;
 ISBN : 3-930673-18-5&lt;br /&gt;
&lt;br /&gt;
 Titel : TCP/IP-Netzwerk-Administration&lt;br /&gt;
 Autor : Craig Hunt&lt;br /&gt;
 Verlag: O'Reilly&lt;br /&gt;
 ISBN : 3-89721-110-6&lt;br /&gt;
&lt;br /&gt;
 Titel : Essential System Administration&lt;br /&gt;
 Autor : Eleen Frisch&lt;br /&gt;
 Verlag: O'Reilly&lt;br /&gt;
 ISBN : 1-56592-127-5&lt;br /&gt;
&lt;br /&gt;
==Betriebssystem==&lt;br /&gt;
===Was ist ein Betriebssystem?===&lt;br /&gt;
&lt;br /&gt;
Ein Betriebssystem liegt logisch gesehen zwischenAnwendungsprogramm und Hardware.&lt;br /&gt;
&lt;br /&gt;
Es nimmt die Anforderungen der Anwendungsprogramme entgegen und leitet&lt;br /&gt;
diese kontrolliert an die Hardware weiter. Kein Anwendungsprogramm sollte&lt;br /&gt;
direkt auf die Hardware zugreifen können. Den zentralen Zugang schafft einzig&lt;br /&gt;
das Betriebssystem. Somit kann das Betriebssystem unsinnige Anforderungen&lt;br /&gt;
oder Bedienungsfehler abblocken.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Image:Linux.jpg]]&lt;br /&gt;
&lt;br /&gt;
===Aufgaben eines Betriebssystems===&lt;br /&gt;
&lt;br /&gt;
# Verbergen der Komplexität der Maschine vor dem Anwender (Abstraktion)&lt;br /&gt;
# Bereitstellen einer Benutzerschnittstelle (&amp;quot;Kommandointerpreter&amp;quot;, &amp;quot;Shell&amp;quot;)&lt;br /&gt;
# Bereitstellen einer normierten Programmierschnittstelle (API)&lt;br /&gt;
# Verwaltung der Ressourcen der Maschine::&lt;br /&gt;
Hauptspeicher&lt;br /&gt;
Prozessor(en)&lt;br /&gt;
Hintergrundspeicher (Platte, Band, etc.)&lt;br /&gt;
Geräte (Terminal, Drucker, Plotter, etc.)&lt;br /&gt;
Rechenzeit&lt;br /&gt;
Koordination von Prozessen&lt;br /&gt;
&lt;br /&gt;
===Aufbau eines Betriebssystems===&lt;br /&gt;
&lt;br /&gt;
Ein Rechensystem besteht aus Hardware, Systemprogrammen und Anwendungs-&lt;br /&gt;
programmen. Unter einem Betriebssystem wird meist die Summe aus Betriebs-&lt;br /&gt;
systemkern (Kernel) und den wichtigsten Systemprogrammen verstanden. Ein&lt;br /&gt;
minimaler LINUX-Kernel besitzt ungefähr eine Größe von 400 - 800 kByte.&lt;br /&gt;
Weitere wichtige Systemkomponenten benötigen zusätzlich 10 - 100 Mbyte&lt;br /&gt;
Plattenplatz.&lt;br /&gt;
&lt;br /&gt;
Ein Betriebssystem stellt den Rechner als erweiterte Maschine (virtuelle&lt;br /&gt;
Maschine) über definierte Software-Schnittstellen zur Verfügung.&lt;br /&gt;
Das Betriebssystem dient als Betriebsmittelverwalter, der Anforderungen&lt;br /&gt;
befriedigt, protokolliert, abrechnet und vermittelt.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Aufgaben des Betriebssystemkerns:&lt;br /&gt;
&lt;br /&gt;
{| Border=1 Cellpadding=2&lt;br /&gt;
|Prozessverwaltung  (dispatching and scheduling)&lt;br /&gt;
| Mehrere Benutzer können mit mehreren Aktionen gleichzeitig im System arbeiten, ohne sich gegenseitig zu beeinflussen. Damit dies möglich ist,  müssen die Aktionen organisiert, koordiniert und verwaltet werden. Die zu verwaltende Einheit nennt man Prozess.&lt;br /&gt;
|-&lt;br /&gt;
|Speicherverwaltung   (memory management)&lt;br /&gt;
|Zuteilen von Speicherbereichen an laufende Prozesse, Schutz der Speicherbereiche vor unbefugten Zugriffen, bei Speicherengpässen: Auslagern von ganzen (swapping) oder von Teilen (paging) von Prozessen auf die Platte (swap file).&lt;br /&gt;
|-&lt;br /&gt;
|Dateiverwaltung  (file handling)&lt;br /&gt;
|Zuteilung von Plattenplatz für Programme, Benutzer und Systemdienste, Schreiben, Lesen und Strukturieren der Daten auf den Massenspeichern; Durch Bereitstellung einer entsprechenden Schnittstelle (VFS, virtual file system) kann der Kern Dateisysteme unterschiedlichster Art (EXT2, FAT, NFS, HPFS, NTFS, ...) ansprechen.&lt;br /&gt;
|-&lt;br /&gt;
|Geräteverwaltung  (resource management)&lt;br /&gt;
|Der Kern ermöglicht und kontrolliert den Zugriff auf die Hardware. Er steuert die Ein- und Ausgabetätigkeiten der Anwender. An den Kern&lt;br /&gt;
gebunden sind die entsprechenden Gerätetreiber (device driver), die damit eine Kommunikation zwischen Kern und Hardware ermöglichen.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
===Multitasking===&lt;br /&gt;
&lt;br /&gt;
Multitasking bedeutet, dass ein Rechner aus Anwendersicht mehrere Aufgaben&lt;br /&gt;
(Tasks) gleichzeitg übernehmen kann. Das Betriebssystem (OS) unterteilt die&lt;br /&gt;
gleichzeitig anstehenden Aufgaben in Einzelarbeitsschritte (Prozesse) und&lt;br /&gt;
managed durch ein Zeitscheibenverfahren (scheduling) die gleichmäßige&lt;br /&gt;
Abarbeitung der Prozesse.&lt;br /&gt;
&lt;br /&gt;
Es wird unterschieden zwischen:&lt;br /&gt;
&lt;br /&gt;
*non-präamptiven (kooperativen=die Ressourcen werden vom aktiven Prozess freigegeben, bei einem Hänger steht das ganze System)&lt;br /&gt;
&lt;br /&gt;
und&lt;br /&gt;
&lt;br /&gt;
*präamptiven (reinem=der Betriebssystemkern steuert Taskwechsel, indem nach einer festgelegten Zeit vom gerade aktiven Prozess zum nächsten weitergeschaltet wird)&lt;br /&gt;
&lt;br /&gt;
===Mehrprozessorbetrieb===&lt;br /&gt;
&lt;br /&gt;
Bei mehreren Prozessoren und Unterstützung durch das OS&lt;br /&gt;
(NT,Linux,Unix,Novell) können mehrere Tasks auf diese verteilt werden und&lt;br /&gt;
gleichzeitig bearbeitet werden. Nachteilig ist, dass dies nicht oder kaum von&lt;br /&gt;
Anwendungsprogrammen unterstützt wird und es zu Kommunikationsproblemen&lt;br /&gt;
zwischen den einzelnen Tasks kommen kann.&lt;br /&gt;
&lt;br /&gt;
===Arten von von Betriebssystemen===&lt;br /&gt;
&lt;br /&gt;
{|Border=1 Cellpadding=2&lt;br /&gt;
|&lt;br /&gt;
|SingleUser  &lt;br /&gt;
|Multiuser&lt;br /&gt;
|-&lt;br /&gt;
|Single Tasking&lt;br /&gt;
|MS - DOS&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|Multi Tasking&lt;br /&gt;
|Windows 3.x&lt;br /&gt;
|UNIX&lt;br /&gt;
|-&lt;br /&gt;
|&lt;br /&gt;
|Windows 95/98&lt;br /&gt;
|Linux&lt;br /&gt;
|-&lt;br /&gt;
|&lt;br /&gt;
|Windows NT4 ohne Erweiterungen&lt;br /&gt;
|VMS&lt;br /&gt;
|-&lt;br /&gt;
|&lt;br /&gt;
|OS/2 &lt;br /&gt;
|Windows NT mit  Erweiterungen&lt;br /&gt;
|-&lt;br /&gt;
|&lt;br /&gt;
|Apple&lt;br /&gt;
|Windows 2000, XP, 2003&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
===SHELL===&lt;br /&gt;
&lt;br /&gt;
Wenn man mit Linux arbeiten will, kann man nicht direkt mit dem Betriebssystem&lt;br /&gt;
kommunizieren. Man braucht dazu ein Hilfsprogramm, welches die&lt;br /&gt;
Kommandoeingaben ordnungsgemäß an das Betriebssystem weiterleitet. Dieses&lt;br /&gt;
Hilfsprogramm hat den Namen Shell.&lt;br /&gt;
&lt;br /&gt;
Die Shell schirmt den Betriebssystemkern von den Anwendungsprogrammen ab.&lt;br /&gt;
Die unterschiedlichen Shells erfüllen alle dieselbe Aufgabe, sie unterscheiden sich&lt;br /&gt;
allerdings in ihrer Syntax.&lt;br /&gt;
&lt;br /&gt;
==Die Installation im Überblick==&lt;br /&gt;
&lt;br /&gt;
Die Installation von Linux geschieht in folgenden Schritten:&lt;br /&gt;
&lt;br /&gt;
# Analyse (Welche Hardware habe ich? ,Hab ich weitere Betriebsysteme?)&lt;br /&gt;
# Booten des Linux-Kernels. (von CD oder Diskette)&lt;br /&gt;
# Laden einer RAM-Disk (das macht das Installationsprogramm automatisch).&lt;br /&gt;
# Partitionieren der Festplatte (fdisk).&lt;br /&gt;
# Einrichten der Swappartition (mkswap), Formatieren der Festplatte (mkfs).&lt;br /&gt;
# Montieren der Dateisysteme (mount), Aktivieren der Swapbereiche (swapon).&lt;br /&gt;
# Kopieren und Auspacken der Daten vom Installationsmedium auf die Festplatte (die eigentliche Installation). (rpm, dpkg oder tar).&lt;br /&gt;
# Geeignete Wahl der Bootmethode unter Berücksichtigung von Punkt 1 (grub, lilo).&lt;br /&gt;
# Konfiguration des Systems (Netz, Modem etc...).&lt;br /&gt;
&lt;br /&gt;
==Erste Schritte==&lt;br /&gt;
===Anmelden===&lt;br /&gt;
Sie können sich nun mit dem Usernamen und dem Passwort, das sie bei der Installation angelegt haben anmelden!&lt;br /&gt;
[[Image:benutzer.jpg]]&lt;br /&gt;
&lt;br /&gt;
[[Image:passwd.jpg]]&lt;br /&gt;
&lt;br /&gt;
===Terminal öffnen===&lt;br /&gt;
&lt;br /&gt;
Ein Terminal öffnen Sie über das Startmenü:&lt;br /&gt;
&lt;br /&gt;
[[Image:Terminalde.jpg]]&lt;br /&gt;
&lt;br /&gt;
Das geöffnete Terminal sieht dann folgendermaßen aus:&lt;br /&gt;
&lt;br /&gt;
[[Image:Terminalde2.jpg]]&lt;br /&gt;
&lt;br /&gt;
===Sudo===&lt;br /&gt;
Rootrechte erlangen sie über den &amp;quot;Sudo&amp;quot;-Befehl&lt;br /&gt;
 &lt;br /&gt;
''Den nächsten Befehl als root ausführen''&lt;br /&gt;
 xinux@zero:~$ sudo cat /etc/shadow&lt;br /&gt;
 [sudo] password for xinux:&lt;br /&gt;
&lt;br /&gt;
''Eine komplette Sitzung als root starten''&lt;br /&gt;
 xinux@zero:~$ sudo -i&lt;br /&gt;
 [sudo] password for xinux:&lt;br /&gt;
 root@zero:~#&lt;br /&gt;
&lt;br /&gt;
===Virtuelle Konsolen===&lt;br /&gt;
&lt;br /&gt;
In die Virtuelle Konsole gelangen sie über &amp;quot;STRG+ALT+(F1-F6)&amp;quot;.&lt;br /&gt;
Sie funktioniert wie ein ganz normales Terminal, und mit &amp;quot;ALT+F7&amp;quot;&lt;br /&gt;
gelangen sie wieder zurück auf die grafische Benutzeroberfläche&lt;br /&gt;
&lt;br /&gt;
===Abmelden===&lt;br /&gt;
&lt;br /&gt;
Abmelden können Sie sich wieder über das Startmenu unter:&lt;br /&gt;
&lt;br /&gt;
[[Image:Logout.jpg]]&lt;br /&gt;
&lt;br /&gt;
Fals sie nur einzelne Sitzungen in einem der Terminals oder &lt;br /&gt;
den Virtuellen Konsolen Abmelden wollen benutzen sie dazu den Befehl: &amp;quot;exit&amp;quot;&lt;br /&gt;
&lt;br /&gt;
===Herunterfahren===&lt;br /&gt;
&lt;br /&gt;
Das Herunterfahren funktioniert auf dem selben Weg.&lt;br /&gt;
&lt;br /&gt;
Entweder sie Benutzen wieder das Startmenü und benutzen diesmal den &amp;quot;Ausschalten ...&amp;quot; Knopf,&lt;br /&gt;
&lt;br /&gt;
Oder sie geben den äquivalenten &amp;quot;shutdown&amp;quot;-Befehl in einem Terminal bzw. der virtuellen Konsole ein.&lt;br /&gt;
&lt;br /&gt;
Allerdings müssen sie dazu als Administrator angemeldet sein s. &amp;quot;Sudo&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Wenn Sie den &amp;quot;shutdown&amp;quot;-Befehl benutzen wollen muss hinter den Befehl&lt;br /&gt;
&lt;br /&gt;
eine Zeitangabe in Minuten oder das wort &amp;quot;now&amp;quot; für sofortiges Ausschalten hinzugefügt werden:&lt;br /&gt;
&lt;br /&gt;
 xinux@zero:~$ sudo -i&lt;br /&gt;
 root@zero:~# shutdown 60&lt;br /&gt;
 &lt;br /&gt;
 Broadcast message from xinux@zero &lt;br /&gt;
         (/dev/pts/3) at 14:29 ...&lt;br /&gt;
 &lt;br /&gt;
 The system is going down for maintenance in 60 minutes!&lt;br /&gt;
&lt;br /&gt;
Sollten sie den Befehl widerrufen wollen dann drücken sie &amp;quot;STRG+C&amp;quot;,&lt;br /&gt;
&lt;br /&gt;
in dem Terminal in dem der shutdown Befehl gestartet wurde,&lt;br /&gt;
&lt;br /&gt;
oder geben sie den &amp;quot;shutdown&amp;quot;-Befehl zusammen mit der Abbruchoption &amp;quot;-c&amp;quot; in einem anderen Terminal ein:&lt;br /&gt;
&lt;br /&gt;
 root@zero:~# shutdown -c&lt;br /&gt;
&lt;br /&gt;
 shutdown: Shutdown cancelled&lt;br /&gt;
 root@zero:~# &lt;br /&gt;
&lt;br /&gt;
Wenn Sie den Rechner Neustarten möchten gibt es dazu die Option &amp;quot;-r&amp;quot; für den &amp;quot;shutdown&amp;quot;-Befehl&lt;br /&gt;
&lt;br /&gt;
oder den &amp;quot;reboot&amp;quot;-Befehl die beide auch als root ausgeführt werden müssen:&lt;br /&gt;
&lt;br /&gt;
 xinux@zero:~$ sudo -i&lt;br /&gt;
 [sudo] password for xinux: &lt;br /&gt;
 root@zero:~# shutdown -r now&lt;br /&gt;
&lt;br /&gt;
 root@zero:~# reboot&lt;br /&gt;
&lt;br /&gt;
===&amp;quot;man&amp;quot;===&lt;br /&gt;
&lt;br /&gt;
Programm zum Einsehen der Online-Manuals&lt;br /&gt;
&lt;br /&gt;
Die Manuals sind in folgende Sektionen unterteilt:&lt;br /&gt;
# Ausführbare Programme oder Shellbefehle&lt;br /&gt;
# Systemaufrufe (Kernelfunktionen)&lt;br /&gt;
# Bibliotheksaufrufe (Funktionen in System-Bibliotheken)&lt;br /&gt;
# Spezielle Dateien (gewöhnlich in /dev)&lt;br /&gt;
# Dateiformate und Konventionen, z. B. /etc/passwd&lt;br /&gt;
# Spiele&lt;br /&gt;
# Makropakete und Konventionen, z. B. man(7), groff(7)&lt;br /&gt;
# Systemadministrationsbefehle (in der Regel nur für root)&lt;br /&gt;
# Kernelroutinen [Nicht Standard]&lt;br /&gt;
&lt;br /&gt;
Aufruf eines Manuals erfolgt durch ''man kommando''&lt;br /&gt;
Beendet wird durch Drücken des Buchstabens q&lt;br /&gt;
Gesucht wird vorwärts durch Eingabe eines /suchausdruck&lt;br /&gt;
Gesucht wird rückwärts durch Eingabe eines ?suchausdruck&lt;br /&gt;
&lt;br /&gt;
Beispiele:&lt;br /&gt;
&lt;br /&gt;
      man passwd        Anschauen der Manualseite zum Programm passwd&lt;br /&gt;
      man 5 passwd      Anschauen der Manualseite zur Datei /etc/passwd&lt;br /&gt;
      man -a passwd     Anschauen aller Manualseiten zu passwd&lt;br /&gt;
      man -k passwd     Durchsucht die Kurzbeschreibungen der Manualseite&lt;br /&gt;
                        nach passwd und gibt alle Treffer aus&lt;br /&gt;
      man -f passwd      Gibt alle gefunden Kurzbescheibungen zu passwd aus&lt;br /&gt;
      man -L en passwd Gibt englische Manualseiten aus&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Was geht vor auf meinem System? (date,who)===&lt;br /&gt;
&lt;br /&gt;
Das Kommando date dient zur Abfrage von Datum und Uhrzeit.&lt;br /&gt;
&lt;br /&gt;
 xinux@zero:~ &amp;gt; date&lt;br /&gt;
 Fre Mär 16 16:35:03 CET 2001&lt;br /&gt;
&lt;br /&gt;
oder auch Anzeige der Grennwich Zeit:&lt;br /&gt;
&lt;br /&gt;
 xinux@zero:~ &amp;gt; date -u&lt;br /&gt;
 Fre Mär 16 15:35:34 UTC 2001&lt;br /&gt;
&lt;br /&gt;
 xinux@zero:~ &amp;gt; date -u &amp;quot;+%X&amp;quot;&lt;br /&gt;
 15:37:19&lt;br /&gt;
&lt;br /&gt;
 xinux@zero:~ &amp;gt; date -u &amp;quot;+%x&amp;quot;&lt;br /&gt;
 01/15/02&lt;br /&gt;
&lt;br /&gt;
who zeigt alle angemeldeten Benutzer an&lt;br /&gt;
&lt;br /&gt;
 thomas@cardassia:~ &amp;gt; who&lt;br /&gt;
 thomas             tty1 Feb 27 16:39&lt;br /&gt;
 thomas             tty2 Mar 2 17:08&lt;br /&gt;
 tina               tty6 Mar 16 16:38&lt;br /&gt;
&lt;br /&gt;
Mit `who --help' bekommen Sie mehr Informationen.&lt;br /&gt;
&lt;br /&gt;
 thomas@cardassia:~ &amp;gt; who --help&lt;br /&gt;
&lt;br /&gt;
Benutzung: who [OPTION]... [ DATEI | ARG1 ARG2 ]&lt;br /&gt;
&lt;br /&gt;
 -H, --heading             print line of column headings&lt;br /&gt;
 -i, -u, --idle            add user idle time as HOURS:MINUTES, . or old&lt;br /&gt;
 -l, --lookup              attempt to canonicalize hostnames via DNS&lt;br /&gt;
 -m                        only hostname and user associated with stdin&lt;br /&gt;
 -q, --count               all login names and number of users logged on&lt;br /&gt;
 -s                        (ignored)&lt;br /&gt;
 -T, -w, --mesg            add user's message status as +, - or ?&lt;br /&gt;
     --message             same as -T&lt;br /&gt;
     --writable            same as -T&lt;br /&gt;
     --help                display this help and exit&lt;br /&gt;
     --version             output version information and exit&lt;br /&gt;
&lt;br /&gt;
==Das UNIX-Dateisystem==&lt;br /&gt;
===Verzeichnisbaum===&lt;br /&gt;
&lt;br /&gt;
[[Image:vztree.jpg]]&lt;br /&gt;
&lt;br /&gt;
Das Betriebssystem UNIX besitzt ein hierarchisches Dateisystem. Es besteht aus:&lt;br /&gt;
* Dateien (Files)&lt;br /&gt;
Dateien speichern Informationen (Text, Bilder, Sound, Videos, Programme) und&lt;br /&gt;
werden über den Dateinamen angesprochen.&lt;br /&gt;
&lt;br /&gt;
* Verzeichnissen (Directories, Kataloge)&lt;br /&gt;
Verzeichnisse besitzen ebenfalls einen Namen und dienen zur Ordnung des&lt;br /&gt;
Dateisystems. Ein Verzeichnis kann Dateien und Unterverzeichnisse&lt;br /&gt;
(Subdirectories) enthalten. Das oberste Verzeichnis im Dateisystem heisst&lt;br /&gt;
Rootverzeichnis oder kurz Root und wird durch / (sprich: slash)&lt;br /&gt;
gekennzeichnet.&lt;br /&gt;
&lt;br /&gt;
Im Gegensatz zu Windows kennt UNIX keine Laufwerke.&lt;br /&gt;
Das obige Bild zeigt ein typisches UNIX-Dateisystem.&lt;br /&gt;
Unterhalb des Rootverzeichnisses befinden sich eine Vielzahl vonVerzeichnissen.&lt;br /&gt;
&lt;br /&gt;
===Wichtige Verzeichnisse===&lt;br /&gt;
&lt;br /&gt;
• '''Homeverzeichnis'''&lt;br /&gt;
&lt;br /&gt;
das Verzeichnis, in dem man sich unmittelbar nach dem Anmelden befindet. Das&lt;br /&gt;
Homeverzeichnis wird vom Systemverwalter eingerichtet; jeder Anwender&lt;br /&gt;
besitzt ein festes Homeverzeichnis. z.B. /home/hans&lt;br /&gt;
&lt;br /&gt;
~ (Tilde) bzw. $HOME (Shellvariable) kennzeichnen das Homeverzeichnis.&lt;br /&gt;
&lt;br /&gt;
• '''Aktuelles Verzeichnis'''&lt;br /&gt;
&lt;br /&gt;
Verzeichnis, in dem man sich aktuell befindet.&lt;br /&gt;
Das aktuelle Verzeichnis wird mit dem Befehl cd (change directory) oder per&lt;br /&gt;
Mausklick verändert.&lt;br /&gt;
Ein einfacher Punkt . kennzeichnet das aktuelle Verzeichnis.&lt;br /&gt;
&lt;br /&gt;
• '''Elternverzeichnis'''&lt;br /&gt;
&lt;br /&gt;
Verzeichnis unmittelbar oberhalb des aktuellen Verzeichnisses.&lt;br /&gt;
Jedes Verzeichnis ausser / besitzt genau ein Elternverzeichnis.&lt;br /&gt;
Zwei Punkte .. kennzeichnen das Elternverzeichnis (abhängig vom aktuellen&lt;br /&gt;
VZ).&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Absoluter Pfadname:===&lt;br /&gt;
&lt;br /&gt;
Beschreibt ausgehend vom Rootverzeichnis den Weg zum Zielverzeichnis oder zur&lt;br /&gt;
Zieldatei. (Welche Verzeichnisse müssen ausgehend von / durchlaufen werden, um&lt;br /&gt;
zum Ziel zu kommen?) Ein absoluter Pfadname beginnt immer mit / .&lt;br /&gt;
&lt;br /&gt;
===Relativer Pfadname:===&lt;br /&gt;
&lt;br /&gt;
Beschreibt ausgehend vom aktuellen Verzeichnis den Weg zum Zielverzeichnis&lt;br /&gt;
oder zur Zieldatei; ein relativer Pfadname beginnt nicht mit / .&lt;br /&gt;
/home/suxer&lt;br /&gt;
absoluter Pfadname für das Verzeichnis sub1 im Homeverzeichnis von suxer&lt;br /&gt;
&lt;br /&gt;
===Verzeichnisstruktur===&lt;br /&gt;
&lt;br /&gt;
 /bin         Kommandos die beim starten benötigt werden (Zugriff hat jeder)&lt;br /&gt;
 /sbin        Wichtige System-Programme (In der Regel root vorberhalten)&lt;br /&gt;
 /boot        Hier findet man die Dateien des Bootmanagers und des Kernel.&lt;br /&gt;
 /dev         In diesem Verzeichnis stehen die Gerätedateien (Devices),&lt;br /&gt;
 /home        Alle Heimatverzeichnisse der Nutzer findet man hier.&lt;br /&gt;
 /lib         Beim Systemstart benötigten Bibliotheken und Modules stehen hier.&lt;br /&gt;
 /mnt         Mountpunkt für temporäre Partitionen&lt;br /&gt;
 /opt         Software, die nicht Installationsumfang von Linux gehören.&lt;br /&gt;
 /root        Heimatverzeichnis des Administrators.&lt;br /&gt;
 /tmp         Temporäre Dateien können hier abgelegt werden&lt;br /&gt;
 /usr         statische Dateien (kann read-only gemountet sein)&lt;br /&gt;
 /var         variable Dateien (muss beschreibar sein )&lt;br /&gt;
 /etc         Konfiguartionsdateien und Startscripte&lt;br /&gt;
 /proc        Virtuelles Dateisystem -&amp;gt; repräsentiert den Kernel&lt;br /&gt;
&lt;br /&gt;
===Unterverzeichnisse von /usr===&lt;br /&gt;
&lt;br /&gt;
 sbin         Programme für root die beim Start nicht benötigt werden&lt;br /&gt;
 bin          Programme für alle die beim Start nicht benötigt werden&lt;br /&gt;
 X11R6        Dateien des X-Window-Sytems&lt;br /&gt;
 bin          Ausführbare Programme&lt;br /&gt;
 doc          Dokumentationen&lt;br /&gt;
 etc          Konfigurationsdateien&lt;br /&gt;
 games        Spiele&lt;br /&gt;
 include      Headerdateien für C-Programme&lt;br /&gt;
 local        Pakete die nicht zur Distribution gehören ähnlich /opt&lt;br /&gt;
 share        Pakete die von mehreren Paketen genutzt werden&lt;br /&gt;
 share/man    Die Manualpages&lt;br /&gt;
 share/info   Seiten des Infosystems&lt;br /&gt;
 share/doc    Dokumentationen&lt;br /&gt;
 src          Sources von Programmen (Kernel und andere)&lt;br /&gt;
&lt;br /&gt;
===Unterverzeichnisse von /var===&lt;br /&gt;
&lt;br /&gt;
 cache        Zwischenspreicher für Progammes&lt;br /&gt;
 games        Variable Daten der Games (Scores etc...)&lt;br /&gt;
 lock         Sperrdateien&lt;br /&gt;
 log          Die Logdateien (wichtiges Verzeichnis für Admins)&lt;br /&gt;
 mail         Das Mailsystem&lt;br /&gt;
 run          Dateien zu laufemdem Prozessen&lt;br /&gt;
 spool        Spooldateien (z.B. für das Drucksystem&lt;br /&gt;
 state        Statusinfos&lt;br /&gt;
 tmp          Wie /tmp eventuell nicht auf root Partion&lt;br /&gt;
&lt;br /&gt;
==Einfache Komandos==&lt;br /&gt;
===cd: Wechseln des Arbeitsverzeichnis===&lt;br /&gt;
&lt;br /&gt;
Um festzustellen in welchem Verzeichnis man sich befindet, sollte man den&lt;br /&gt;
Befehl &amp;quot;pwd&amp;quot; benutzen,&lt;br /&gt;
&lt;br /&gt;
und mit dem Befehl &amp;quot;cd&amp;quot; kann man zwischen den Verzeichnissen wechseln:&lt;br /&gt;
&lt;br /&gt;
Wechsele ins homeverzeichnis von Xinux&lt;br /&gt;
&lt;br /&gt;
 xinux@zero:~$ cd /home/xinux/&lt;br /&gt;
 xinux@zero:~$ pwd&lt;br /&gt;
 /home/xinux&lt;br /&gt;
&lt;br /&gt;
cd ~ -&amp;gt; wechsele ins jeweilige Homeverzeichnis&lt;br /&gt;
&lt;br /&gt;
cd .. -&amp;gt; wechsele ein Verzeichnis höher&lt;br /&gt;
&lt;br /&gt;
cd ../verzeichnis -&amp;gt; wechsele in eine paralleles Verzeichnis &amp;lt;- (ist eine relative Pfadangabe !)&lt;br /&gt;
&lt;br /&gt;
cd - -&amp;gt; wechsele in das Verzeichnis, in dem vorher gearbeitet wurde.&lt;br /&gt;
&lt;br /&gt;
Mit cd / wechselt man in das Wurzelverzeichnis.&lt;br /&gt;
&lt;br /&gt;
 xinux@zero:/var/log$ cd /&lt;br /&gt;
 xinux@zero:/$ pwd&lt;br /&gt;
 /&lt;br /&gt;
&lt;br /&gt;
===ls: Listing===&lt;br /&gt;
&lt;br /&gt;
Den Inhalt von Verzeichnissen kann man sich mit dem Befehl &amp;quot;ls&amp;quot; anzeigen lassen&lt;br /&gt;
wobei &amp;quot;ls&amp;quot; eine Vielzahl von Optionen besitzt:&lt;br /&gt;
&lt;br /&gt;
 ls                                  standard&lt;br /&gt;
 ls -l                               langes listing&lt;br /&gt;
 ls -a                               alle Dateien&lt;br /&gt;
 ls -i                               mit Inode&lt;br /&gt;
 ls -h                               gut lesbare Dateigröße&lt;br /&gt;
 ls -d                               Verzechnis wird angezeigt, nicht der Inhalt&lt;br /&gt;
 ls -L                               sortiert nach Größe&lt;br /&gt;
 ls -t                               sortiert nach Datum&lt;br /&gt;
 ls -F                               mit nützlichem Anhang&lt;br /&gt;
&lt;br /&gt;
 xinux@zero:/$ ls -l /var/log/messages&lt;br /&gt;
 -rw-r----- 1 syslog adm 2296 2009-06-16 10:05 /var/log/messages&lt;br /&gt;
&lt;br /&gt;
===more: Seitenweises Anzeigen von Seiten===&lt;br /&gt;
 root@zero:~# more /var/log/messages&lt;br /&gt;
 ...&lt;br /&gt;
&lt;br /&gt;
===head: erste Zeilen anzeigen===&lt;br /&gt;
Erste 10 Zeilen anzeigen&lt;br /&gt;
 root@zero:~# head /var/log/messages&lt;br /&gt;
 Jun 15 12:37:08 zero syslogd 1.5.0#5ubuntu3: restart.&lt;br /&gt;
 Jun 15 12:38:43 zero kernel: [  830.065036] mtrr: your processor doesn't support write-combining&lt;br /&gt;
 Jun 15 12:46:05 zero pulseaudio[4817]: pid.c: Stale PID file, overwriting.&lt;br /&gt;
 Jun 15 13:05:24 zero -- MARK --&lt;br /&gt;
 ...&lt;br /&gt;
&lt;br /&gt;
Erste zwei Zeilen anzeigen&lt;br /&gt;
 root@zero:~# head -n 2 /var/log/messages&lt;br /&gt;
 Jun 15 12:37:08 zero syslogd 1.5.0#5ubuntu3: restart.&lt;br /&gt;
 Jun 15 12:38:43 zero kernel: [  830.065036] mtrr: your processor doesn't support write-combining&lt;br /&gt;
&lt;br /&gt;
===tail: letzte Zeilen anzeigen===&lt;br /&gt;
 &lt;br /&gt;
 root@zero:~# tail /var/log/syslog&lt;br /&gt;
 ...&lt;br /&gt;
 Jun 19 11:19:35 zero -- MARK --&lt;br /&gt;
 Jun 19 11:39:35 zero -- MARK --&lt;br /&gt;
 Jun 19 11:59:36 zero -- MARK --&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Letze 5 Zeilen anzeigen&lt;br /&gt;
 root@zero:~# tail -n 5 /var/log/auth.log&lt;br /&gt;
 Jun 18 14:30:01 zero CRON[12040]: pam_unix(cron:session): session closed for user root&lt;br /&gt;
 Jun 18 14:39:01 zero CRON[12191]: pam_unix(cron:session): session opened for user root by (uid=0)&lt;br /&gt;
 Jun 18 14:39:01 zero CRON[12191]: pam_unix(cron:session): session closed for user root&lt;br /&gt;
 Jun 18 14:40:01 zero CRON[12237]: pam_unix(cron:session): session opened for user root by (uid=0)&lt;br /&gt;
 Jun 18 14:40:01 zero CRON[12237]: pam_unix(cron:session): session closed for user root&lt;br /&gt;
&lt;br /&gt;
Letze Zeilen anzeigen und fortlaufend aktualisieren&lt;br /&gt;
 root@zero:~# tail -f /var/log/syslog&lt;br /&gt;
 ...&lt;br /&gt;
&lt;br /&gt;
===mkdir: Ein neues Verzeichnis erstellen===&lt;br /&gt;
&lt;br /&gt;
 mkdir        verzeichnis&lt;br /&gt;
Erstellt ein Verzeichnis im working directory (wd)&lt;br /&gt;
&lt;br /&gt;
 mkdir  -p    ver1/ver2&lt;br /&gt;
Erstellt ein Verzeichnis ver2 unterhalb von ver1&lt;br /&gt;
wenn ver1 nicht existiert wird es erstellt&lt;br /&gt;
&lt;br /&gt;
 mkdir -m 753 ver1&lt;br /&gt;
Es wird das Verzeichnis ver1 erstellt mit der mask 753&lt;br /&gt;
&lt;br /&gt;
 mkdir -v     ver1&lt;br /&gt;
Geschwätzige Ausgabe :)&lt;br /&gt;
&lt;br /&gt;
===Zum Löschen von leeren Verzeichnissen wird rmdir benutzt===&lt;br /&gt;
&lt;br /&gt;
 rmdir           ver1&lt;br /&gt;
Löscht das leere Verzeichnis ver1&lt;br /&gt;
&lt;br /&gt;
 rmdir -v        ver1&lt;br /&gt;
Löscht das leere Verzeichnis ver1 und ist geschwätzig&lt;br /&gt;
&lt;br /&gt;
 rmdir -p        /ver1/ver2/ver3&lt;br /&gt;
Löscht das Verzeichnis ver3; wenn dadurch ver2 ein leeres&lt;br /&gt;
Verzeichnis wird, wird dieses auch gelöscht , wenn ver1&lt;br /&gt;
dadurch ein leeres Verzeichnis wird, wird auch dieses gelöscht.&lt;br /&gt;
&lt;br /&gt;
===touch Verändern des Zeitstempels===&lt;br /&gt;
&lt;br /&gt;
Mit touch können wir eine neue leere Datei erzeugen (das ist nicht der eigentliche&lt;br /&gt;
Zweck von touch, eigentlich wird der Zeitstempel geändert)&lt;br /&gt;
&lt;br /&gt;
 touch            dateiname&lt;br /&gt;
&lt;br /&gt;
===Kopieren=== &lt;br /&gt;
cp ist das Kommando um Dateien zu kopieren &lt;br /&gt;
&lt;br /&gt;
Eine Kopie von dat1 mit dem Namen dat2 erstellen:&lt;br /&gt;
&lt;br /&gt;
 xinux@zero:~$ cp dat1 dat2&lt;br /&gt;
&lt;br /&gt;
Eine Kopie von dat1 ins Verzeichnis ver2 erstellen:&lt;br /&gt;
&lt;br /&gt;
 xinux@zero:~$ cp dat1 ver2/&lt;br /&gt;
 &lt;br /&gt;
Eine Kopie erstellen mit ausführlicher Anzeige:&lt;br /&gt;
&lt;br /&gt;
 xinux@zero:~$ cp -v dat1 dat2&lt;br /&gt;
 `dat1' -&amp;gt; `dat2'&lt;br /&gt;
&lt;br /&gt;
Eine Kopie erstellen mit Rückfrage fals etwas überschrieben wird:&lt;br /&gt;
&lt;br /&gt;
 xinux@zero:~$ cp -i dat1 dat2&lt;br /&gt;
 cp: overwrite `dat2'?&lt;br /&gt;
&lt;br /&gt;
Eine Kopie erstellen und die Rückfrage überbrücken:&lt;br /&gt;
&lt;br /&gt;
 xinux@zero:~$ cp -f dat1 dat2&lt;br /&gt;
&lt;br /&gt;
Eine Kopie von dat1 ins Verzeichnis ver2 erstellen fals keine neuere Version von dat1 vorliegt:&lt;br /&gt;
&lt;br /&gt;
 xinux@zero:~$ cp -u dat1 ver2/&lt;br /&gt;
&lt;br /&gt;
Eine Kopie erstellen fals ver2 auf dem selben Dateisystem wie dat1 liegt:&lt;br /&gt;
&lt;br /&gt;
 xinux@zero:~$ cp -x dat1 ver2/&lt;br /&gt;
&lt;br /&gt;
Eine Kopie von ver1, die als ver2 oder unter ver2 als ver1 gespeichert wird erstellen:&lt;br /&gt;
&lt;br /&gt;
 xinux@zero:~$ cp -r ver1/ ver2/&lt;br /&gt;
&lt;br /&gt;
Eine Kopie von einer Datei erstellen und ihre Attribute beibehalten:&lt;br /&gt;
&lt;br /&gt;
 xinux@zero:~$ cp -p sux1 sux2&lt;br /&gt;
&lt;br /&gt;
Eine Kopie erstellen bei der die Links erhalten bleiben:&lt;br /&gt;
&lt;br /&gt;
 xinux@zero:~$ cp -r ver1/ ver2/&lt;br /&gt;
&lt;br /&gt;
Eine Kopie erstellen zum Archivieren (-dpr):&lt;br /&gt;
&lt;br /&gt;
 xinux@zero:~$ cp -a ver1/ ver2/&lt;br /&gt;
&lt;br /&gt;
===rm: Löschen einer Datei===&lt;br /&gt;
&lt;br /&gt;
Um Dateien zu löschen, brauchen wir das Kommando &amp;quot;rm&amp;quot;:&lt;br /&gt;
&lt;br /&gt;
 rm               dat1        dat1 wird gelöscht&lt;br /&gt;
 rm         -i    dat1        dat1 wird nach Bestätigung gelöscht&lt;br /&gt;
 rm         -f    dat1        dat1 wird ohne Rückfragen gelöscht&lt;br /&gt;
 rm         -v    dat1        dat1 wird glöscht (geschwätzige Ausgabe)&lt;br /&gt;
 rm         -r    ver1        Löschen von nicht leeren Verzeichnissen&lt;br /&gt;
                              Achtung !!! Als root kann man sich damit Teile&lt;br /&gt;
                              oder sogar den gesamten Verzeichnisbaum&lt;br /&gt;
                              absägen !!!&lt;br /&gt;
&lt;br /&gt;
===mv: Verschieben===&lt;br /&gt;
&lt;br /&gt;
Mit dem Befehl &amp;quot;mv&amp;quot; werden Daten verschoben, folgendes gilt:&lt;br /&gt;
&lt;br /&gt;
 mv          dat1 dat2         &lt;br /&gt;
Die Datei dat1 wird in dat2 umbenannt&lt;br /&gt;
 mv          dat1 /ver1        &lt;br /&gt;
Die Datei dat1 wird nach /ver1 verschoben&lt;br /&gt;
&lt;br /&gt;
Die Parameter und ihre Bedeutung:&lt;br /&gt;
&lt;br /&gt;
      -i                      wenn eine Datei exisitiert wird vor dem&lt;br /&gt;
                              Überschreiben nachgefragt&lt;br /&gt;
      -v                      verbose (geschwätzig)&lt;br /&gt;
      -u                      nur neuere Daten werden bei Bedarf überschrieben&lt;br /&gt;
      -b                      wenn überschrieben werden soll, wird ein Backup&lt;br /&gt;
                              erstellt&lt;br /&gt;
      -S ENDUNG               das Backup bekommt die Endung ENDUNG&lt;br /&gt;
&lt;br /&gt;
===su Benutzer wechseln===&lt;br /&gt;
&lt;br /&gt;
 su -             &lt;br /&gt;
Wechsel zum Rootaccount, wie wenn dieser sich neu anmelden würde. (Bsp: su -)&lt;br /&gt;
&lt;br /&gt;
 su Benutzernamen &lt;br /&gt;
Wechsel der Identität zu Benutzer (gegebenenfalls Passwortabfrage)&lt;br /&gt;
&lt;br /&gt;
 su -c Kommando   &lt;br /&gt;
Kommando wird als rootaccount ausgeführt&lt;br /&gt;
&lt;br /&gt;
==Der Standard Editor vi==&lt;br /&gt;
Der vi ist der Standardeditor in der Unixwelt. Er ist in jedem Unix-Derivat&lt;br /&gt;
enthalten.&lt;br /&gt;
Der Editor hat zwar den schlechten Ruf umständlich zu bedienen zu sein, ist&lt;br /&gt;
jedoch sehr leistungsfähig und systemübergreifend verfügbar. Beim vi handelt es&lt;br /&gt;
sich um einen rein textorientierten Editor, der mittels eigener Kommandos&lt;br /&gt;
gesteuert wird.&lt;br /&gt;
&lt;br /&gt;
Der Editor VIM ist eine weitere Verbesserung von VI und leichter zu bedienen.&lt;br /&gt;
Und unter Ubuntu/Debian mit &amp;quot;apt-get install vim&amp;quot; zu installieren.&lt;br /&gt;
&lt;br /&gt;
===Starten des Editors:===&lt;br /&gt;
&lt;br /&gt;
Der Editorstart erfolgt einfach durch die Eingabe des Kommandos vi mit dem&lt;br /&gt;
Dateinamen der zu editierenden Datei als Parameter.&lt;br /&gt;
Beispiel:        &lt;br /&gt;
 vi sux.txt&lt;br /&gt;
&lt;br /&gt;
===Die Betriebsmodi des vi:===&lt;br /&gt;
&lt;br /&gt;
Ein Umstand, der dem vi den Ruf der komplizierten Bedienbarkeit zugetragen hat,&lt;br /&gt;
sind die unterschiedlichen Betriebsmodi des Editors. Genauer gesagt verfügt der&lt;br /&gt;
vi über drei Betriebsmodi:&lt;br /&gt;
&lt;br /&gt;
====Kommandomodus:====&lt;br /&gt;
&lt;br /&gt;
Innerhalb dieses Modus werden die eingegebenen Zeichen direkt als Befehle des&lt;br /&gt;
Editors interpretiert und ausgeführt. Dabei gibt es weder ein Bereitschaftszeichen&lt;br /&gt;
(Prompt) noch ein Echo (Ausgabe). Der Kommandomodus ist der Modus, in dem&lt;br /&gt;
sich der vi direkt nach seinem Start befindet.&lt;br /&gt;
&lt;br /&gt;
====Zeilenmodus oder Exmodus:====&lt;br /&gt;
&lt;br /&gt;
Dieser Modus ist der einzige Modus mit einem eigenen Bereitschaftszeichen,&lt;br /&gt;
nämlich dem Doppelpunkt (:). Das Prompt wird ebenso wie die Befehlsausgaben&lt;br /&gt;
in der Statuszeile angezeigt.&lt;br /&gt;
&lt;br /&gt;
====Eingabemodus:====&lt;br /&gt;
&lt;br /&gt;
Der Eingabemodus ist derjenige, in welchem der zu bearbeitende Text bearbeitet&lt;br /&gt;
werden kann. Alle hier eingegebenen Zeichen werden als Text für die aktuelle&lt;br /&gt;
Datei interpretiert. Zwischen den unterschiedlichen Modi kann jederzeit&lt;br /&gt;
gewechselt werden. Von Kommandomodus gelangen Sie durch mehere Wege in&lt;br /&gt;
den Eingabemodus. Man kann durch folgende Aktionen wechslen&lt;br /&gt;
&lt;br /&gt;
{| border=1 cellpadding=2&lt;br /&gt;
|i&lt;br /&gt;
|Text vor der aktuellen Cursorposition einfügen&lt;br /&gt;
|-&lt;br /&gt;
|I&lt;br /&gt;
|Text am Zeilenanfang einfügen&lt;br /&gt;
|-&lt;br /&gt;
|a&lt;br /&gt;
|Text hinter der aktuellen Cursorposition einfügen&lt;br /&gt;
|-&lt;br /&gt;
|A&lt;br /&gt;
|Text am Zeilenende einfügen&lt;br /&gt;
|-&lt;br /&gt;
|o&lt;br /&gt;
|Unterhalb der aktuellen Zeile eine neue Zeile einfügen&lt;br /&gt;
|-&lt;br /&gt;
|O&lt;br /&gt;
|Oberhalb der aktuellen Zeile eine neue Zeile einfügen&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Durch das Drücken der ESC - Taste gelangt man in den Kommandomodus zurück.&lt;br /&gt;
&lt;br /&gt;
Im Kommandomodus können Sie durch den Text navigieren und auch den Text&lt;br /&gt;
selbst bearbeiten, z.B ausschneiden, kopieren usw. Dazu sind einige Kommandos&lt;br /&gt;
nötig, von denen die wichtigsten im Folgenden erläutert werden:&lt;br /&gt;
&lt;br /&gt;
 xinux@zero:/$ vi iwas.txt&lt;br /&gt;
&lt;br /&gt;
[[Image:vim.jpg]]&lt;br /&gt;
&lt;br /&gt;
===Benutzen des Kommandomodus===&lt;br /&gt;
====Steuerung des Cursors durch den Text====&lt;br /&gt;
&lt;br /&gt;
Mittels folgender Kommandos bewegt sich der Cursor durch den Text:&lt;br /&gt;
&lt;br /&gt;
{| border=1 cellpadding=2&lt;br /&gt;
|h&lt;br /&gt;
|Cursor ein Zeichen nach links&lt;br /&gt;
|-&lt;br /&gt;
|l&lt;br /&gt;
|Cursor ein Zeichen nach rechts&lt;br /&gt;
|-&lt;br /&gt;
|k&lt;br /&gt;
|Cursor eine Zeile nach oben&lt;br /&gt;
|-&lt;br /&gt;
|j&lt;br /&gt;
|Cursor eine Zeile nach unten&lt;br /&gt;
|-&lt;br /&gt;
|w&lt;br /&gt;
|Cursor ein Wort nach rechts&lt;br /&gt;
|-&lt;br /&gt;
|b&lt;br /&gt;
|Cursor ein Wort nach links&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Alle diese Kommandos können mit einem vorgestellten Wiederholungsfaktor&lt;br /&gt;
arbeiten. Der Befehl 3w verschiebt demnach den Cursor um 3 Wörter nach rechts.&lt;br /&gt;
&lt;br /&gt;
====Angaben zur Positionierung====&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{| border=1 cellpadding=2&lt;br /&gt;
|STRG+U&lt;br /&gt;
|1⁄2 Bildschirmseite nach oben&lt;br /&gt;
|-&lt;br /&gt;
|STRG+D&lt;br /&gt;
|1⁄2 Bildschirmseite nach unten&lt;br /&gt;
|-&lt;br /&gt;
|STRG+B&lt;br /&gt;
|1 Bildschirmseite nach oben&lt;br /&gt;
|-&lt;br /&gt;
|STRG+F&lt;br /&gt;
|1 Bildschirmseite nach unten&lt;br /&gt;
|-&lt;br /&gt;
|/Ausdruck&lt;br /&gt;
|Sucht den Ausdruck (vorwärts) Weitersuchen mit n , N&lt;br /&gt;
|-&lt;br /&gt;
|?Ausdruck&lt;br /&gt;
|Sucht den Ausdurck (rückwärts) Weitersuchen mit n , N&lt;br /&gt;
|-&lt;br /&gt;
|0&lt;br /&gt;
|Zeilenanfang&lt;br /&gt;
|-&lt;br /&gt;
|$&lt;br /&gt;
|Zeilenende&lt;br /&gt;
|-&lt;br /&gt;
|w&lt;br /&gt;
|Nächstes Wort&lt;br /&gt;
|-&lt;br /&gt;
|b&lt;br /&gt;
|Vorheriges Wort&lt;br /&gt;
|-&lt;br /&gt;
|fc&lt;br /&gt;
|Auf das Zeichen c springen. c steht für ein beliebiges Zeichen&lt;br /&gt;
|-&lt;br /&gt;
|G&lt;br /&gt;
|Letzte Zeile der Datei&lt;br /&gt;
|-&lt;br /&gt;
|ng&lt;br /&gt;
|n-te Zeile der Datei&lt;br /&gt;
|-&lt;br /&gt;
|H&lt;br /&gt;
|Anfang der Bildschirmseite&lt;br /&gt;
|-&lt;br /&gt;
|L&lt;br /&gt;
|Ende der Bildschirmseite&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
====Befehle zur Textbearbeitung -&amp;gt; Was soll geschehen====&lt;br /&gt;
&lt;br /&gt;
{| Border=1 Cellpadding=2&lt;br /&gt;
|x&lt;br /&gt;
|Löscht Zeichen&lt;br /&gt;
|-&lt;br /&gt;
|d&lt;br /&gt;
|Löschen und in den Puffer laden&lt;br /&gt;
|-&lt;br /&gt;
|c&lt;br /&gt;
|Ändern&lt;br /&gt;
|-&lt;br /&gt;
|y&lt;br /&gt;
|In den Puffer laden&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
====Weitere wichtige Befehle:====&lt;br /&gt;
&lt;br /&gt;
{| Border=1 Cellpadding=2&lt;br /&gt;
|p&lt;br /&gt;
|Aus dem Puffer einfügen&lt;br /&gt;
|-&lt;br /&gt;
|u&lt;br /&gt;
|Undo, macht den letzten Befehl rückgängig&lt;br /&gt;
|-&lt;br /&gt;
|STRG+R&lt;br /&gt;
|Redo, macht den letzten Undo rückgängig&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
===Zeilen- oder Exmodus===&lt;br /&gt;
&lt;br /&gt;
Wie schon erwähnt wird der Zeilen oder Exmodus durch einen : eingeleitet.&lt;br /&gt;
Es folgen einige Beispiele.&lt;br /&gt;
&lt;br /&gt;
Befehle zum Speichern und Beenden:&lt;br /&gt;
&lt;br /&gt;
 :w          Schreibt Datei&lt;br /&gt;
 :w Datei2   Schreibt eine Kopie in Datei2&lt;br /&gt;
 :w !        Schreibt Datei (übergehe Schreibschutz)&lt;br /&gt;
 :w ! Datei2 Schreibt eine Kopie in Datei2 (übergehe Schreibschutz)&lt;br /&gt;
 :q          Schließe Datei&lt;br /&gt;
 :q!         Schließe Datei (verwerfe Änderungen)&lt;br /&gt;
 :wq         Schreibe Datei und beende Editor&lt;br /&gt;
 :wq!        Schreibe Datei und beende Editor (übergehe Schreibschutz)&lt;br /&gt;
 :q!         Schließe Datei (verwerfe Änderungen)&lt;br /&gt;
 :h          Hilfe anzeigen, durch drücken von :q Beenden der Hilfe&lt;br /&gt;
 :e Datei3   Editiere Datei3&lt;br /&gt;
 :e #        Editere vorhergehende Datei&lt;br /&gt;
 :1,3co9     Kopiere von der ersten bis zu dritten Zeile &lt;br /&gt;
             und füge den Inhalt unterhalb der neunte Zeile ein.&lt;br /&gt;
&lt;br /&gt;
Interaktionen mit Unix:&lt;br /&gt;
&lt;br /&gt;
 :r Datei4   Fügt Inhalt der Datei4 nach dem Cursor ein&lt;br /&gt;
 :r ! Befehl Fügt Ausgabe des Befehls nach dem Cursor ein&lt;br /&gt;
 :! Befehl   Führt den Befehl aus&lt;br /&gt;
 :sh         Starte Subshell -&amp;gt; mit exit kehrt man wieder zurück&lt;br /&gt;
             Eingabemodus zurück&lt;br /&gt;
&lt;br /&gt;
====Ersetzen von Textteilen====&lt;br /&gt;
&lt;br /&gt;
Die grundsätzliche Syntax lautet:&lt;br /&gt;
&lt;br /&gt;
 :[Zeilennummer,Zeilennummer]s/Muster/Ersetzung/[gc]&lt;br /&gt;
&lt;br /&gt;
 :s/worf/kirn/              der erste worf wird in der aktuellen Zeile durch kirn ersetzt&lt;br /&gt;
 :1,9s/worf/kirn/g          von der 1. bis zur 9. Zeile werden alle worf durch kirn ersetzt&lt;br /&gt;
 :1,$s/worf/kirn/           von der ersten bis zur letzten Zeile ersetze ersten worf durch&lt;br /&gt;
                            kirn&lt;br /&gt;
 :.,$s/worf/kirn/g          von der aktuellen bis zur letzten Zeile ersetze alle worf durch&lt;br /&gt;
                            kirn&lt;br /&gt;
 :1,.s/worf/kirn/c          von der 1. bis zur aktuellen Zeile ersetze worf durch kirn, frage&lt;br /&gt;
                            aber nach&lt;br /&gt;
 :1,$s/^worf/kirn/          von der ersten bis zur letzten Zeile ersetze worf am&lt;br /&gt;
                            Zeilenanfang durch kirn&lt;br /&gt;
 :4,$s/worf$/kirn/          von der 4. bis zur letzten Zeile ersetze worf am Zeilenende&lt;br /&gt;
                            durch kirn&lt;br /&gt;
 :1,$s/^#//                 lösche alle Kommentarzeichen&lt;br /&gt;
 :1,$s/^.orf/kirn/           ersetze alles was am Zeilenanfang ein beliebiges Zeichen hat&lt;br /&gt;
                            gefolgt von einem orf durch kirn&lt;br /&gt;
 :1,$s/^[A-Z]orf/kirn/g     suche nach einem Großbuchstaben am Anfang der Zeile&lt;br /&gt;
                            gefolgt von einem orf und ersetze durch kirn&lt;br /&gt;
 :1,$s/^M[ae][iy]e*r/kirn/  suche alles, was am Anfang der Zeile ein großes M enthält,&lt;br /&gt;
                            gefolgt von einem a oder e , gefolgt von einem i oder y ,&lt;br /&gt;
                            gefolgt von einem e , welches 0 oder N mal vorkommen kann,&lt;br /&gt;
                            gefolgt von einem r und ersetze es durch kirn&lt;br /&gt;
&lt;br /&gt;
==Reguläre Ausdrücke==&lt;br /&gt;
&lt;br /&gt;
{| Border=1 Cellpadding=2&lt;br /&gt;
|c&lt;br /&gt;
|Ein einzelner Buchstabe passt auf sich selbst&lt;br /&gt;
|-&lt;br /&gt;
|.&lt;br /&gt;
|Ein Punkt passt auf jedes Zeichen außer auf das Zeilenende&lt;br /&gt;
|-&lt;br /&gt;
|*&lt;br /&gt;
|Das dem Operator * vorangehende Muster kann 0 oder öfter vorkommen&lt;br /&gt;
|-&lt;br /&gt;
|^&lt;br /&gt;
|(Caret) passt auf den Zeilenanfang&lt;br /&gt;
|-&lt;br /&gt;
|$&lt;br /&gt;
|Passt auf das Zeilenende&lt;br /&gt;
|-&lt;br /&gt;
|\&lt;br /&gt;
|Das folgende Sonderzeichen wird entwertet&lt;br /&gt;
|-&lt;br /&gt;
|[...]&lt;br /&gt;
|Passt auf &amp;quot;genau&amp;quot; eins in [...] angebenen Zeichen&lt;br /&gt;
|-&lt;br /&gt;
|[^...]&lt;br /&gt;
|Passt auf &amp;quot;genau&amp;quot; ein Zeichen welches nicht in [...] angebenen ist&lt;br /&gt;
|-&lt;br /&gt;
|\&amp;lt;&lt;br /&gt;
|Passt auf den Wortanfang&lt;br /&gt;
|-&lt;br /&gt;
|\&amp;gt;&lt;br /&gt;
|Passt auf das Wortende&lt;br /&gt;
|-&lt;br /&gt;
|\+&lt;br /&gt;
|Das dem Operator \+ vorangehende Muster kann 1 oder öfter vorkommen&lt;br /&gt;
|-&lt;br /&gt;
|&amp;amp;&lt;br /&gt;
|Setzt das gefunden Suchmuster ein&lt;br /&gt;
|-&lt;br /&gt;
|\(...\)&lt;br /&gt;
|Speichert den Text auf den das Suchmuster passt zur späteren Verwendung&lt;br /&gt;
|-&lt;br /&gt;
|\n&lt;br /&gt;
|Setzt das vorangehende, mit \(...\) Gefundene wieder ein&lt;br /&gt;
|-&lt;br /&gt;
|(...)&lt;br /&gt;
|Gruppiert Auswahlmöglichkeiten&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;nowiki&amp;gt;|&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
|Trennt Auswahlmöglichkeiten&lt;br /&gt;
|-&lt;br /&gt;
|\b&lt;br /&gt;
|Passt auf den Anfang oder das Ende eines Wortes&lt;br /&gt;
|-&lt;br /&gt;
|\B&lt;br /&gt;
|Symbolisiert den Raum innerhalb eines Wortes&lt;br /&gt;
|-&lt;br /&gt;
|\w&lt;br /&gt;
|Passt auf alle alphanumerischen Zeichen [A-Za-z0-9]&lt;br /&gt;
|-&lt;br /&gt;
|\W&lt;br /&gt;
|Passt auf alle nichtalphanumerischen Zeichen [^A-Za-z0-9]&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Die Rangfolge der Operatoren(von der höchsten zur niedrigsten)&lt;br /&gt;
:(, ), ?, *, + | .&lt;br /&gt;
&lt;br /&gt;
Die anderen Operatoren sind mit den anderen Buchstaben gleichrangig.&lt;br /&gt;
&lt;br /&gt;
===Beispiel zum Suchen===&lt;br /&gt;
&lt;br /&gt;
 Suchmuster               Passt auf&lt;br /&gt;
 ^Tuxer                   Tuxer am Zeilenanfang&lt;br /&gt;
 [tT]uxer                 Tuxer oder tuxer&lt;br /&gt;
 80[23]?86                8086, 80286 oder 80386&lt;br /&gt;
&lt;br /&gt;
===grep===&lt;br /&gt;
&lt;br /&gt;
Mit grep ist es möglich, in Dateien nach regulären Ausdrücken zu suchen. Wenn&lt;br /&gt;
eine Übereinstimmung gefunden wird, wird die komplette Zeile auf die&lt;br /&gt;
Standardausgabe geschrieben. grep kann auch von STDIN lesen.Es ist&lt;br /&gt;
empfehlenswert, sich anzugwöhnen ,das Suchmuster in Anführungszeichen zu&lt;br /&gt;
schreiben. Es gibt 3 Arten fgrep = fastgrep , grep und egrep egrep&lt;br /&gt;
&lt;br /&gt;
Beispiel:&lt;br /&gt;
&lt;br /&gt;
 root@zero:~# cat text&lt;br /&gt;
 quatsch&lt;br /&gt;
 quatsch&lt;br /&gt;
 quatsch&lt;br /&gt;
 wichtig&lt;br /&gt;
 quatsch&lt;br /&gt;
 root@zero:~# grep wichtig text&lt;br /&gt;
 wichtig&lt;br /&gt;
 root@zero:~# &lt;br /&gt;
&lt;br /&gt;
 -c                   meldet nur die Gesamtzahl der Fundstellen&lt;br /&gt;
 -v                   zeigt nur Zeilen, die »Ausdruck« nicht enthalten&lt;br /&gt;
 -i                   ignoriert Groß- und Kleinschreibung&lt;br /&gt;
 -l                    meldet nur Dateinamen mit Fundstellen&lt;br /&gt;
 -n                   listet Zeilennummern zu jeder Fundstelle&lt;br /&gt;
 -f                   Dateiname »Dateiname« enthält die Such-Ausdrücke&lt;br /&gt;
 -E                   ist ein erweiterter regulärer Ausdruck (egrep)&lt;br /&gt;
 -F                   (Muster, Ausdruck) ist ein Muster (String) (fgrep)&lt;br /&gt;
 -b                   listet auch die Position der Fundstellen&lt;br /&gt;
 -C    Anzahl         Anzahl von Zeilen werden nach der Fundstelle ausgegeben&lt;br /&gt;
 -B    Anzahl         Anzahl von Zeilen werden vor der Fundstelle ausgegeben&lt;br /&gt;
 -r                   Durchsucht Verzeichnisse rekursiv&lt;br /&gt;
&lt;br /&gt;
==Useridendifikation==&lt;br /&gt;
===/etc/passwd===&lt;br /&gt;
====Beschreibung====&lt;br /&gt;
passwd ist eine ASCII-Datei, die eine Liste der Benutzer des Systems und deren&lt;br /&gt;
Passwörter enthält. Die Passwortdatei sollte für alle Benutzer lesbar sein, was für&lt;br /&gt;
dieVerschlüsselung notwendig ist; aber nur vom Superuser beschreibbar. Wenn&lt;br /&gt;
Sie eine neue Kennung einrichten, lassen Sie das Passwort-Feld in der Datei frei&lt;br /&gt;
und benutzen Sie passwd(1), um dem System ein Passwort für die neue Kennung&lt;br /&gt;
mitzuteilen.&lt;br /&gt;
&lt;br /&gt;
Die Datei /etc/passwd enthält einen Eintrag pro Zeile mit dem Format:&lt;br /&gt;
login_name:passwd:UID:GID:user_name:directory:shell&lt;br /&gt;
====Die Bedeutung der Felder:====&lt;br /&gt;
# login_name Kennung des Benutzers auf dem System.&lt;br /&gt;
# password   Hier steht bei Shadowsystemen ein x. Die Passwörter sind in der Datei /etc/shadow&lt;br /&gt;
# UID        Die numerische Benutzernummer.&lt;br /&gt;
#  GID        Die numerische Gruppennummer des Benutzers.&lt;br /&gt;
# user_name Ein optionales Kommentarfeld, oft benutzt für den vollen Namen des Benutzers und weitere Informationen (Telefon, Raum-Nummer etc.).&lt;br /&gt;
# directory  Das Heimatverzeichnis $HOME des Benutzers.&lt;br /&gt;
# shell      Das Programm, das beim Einloggen gestartet werden soll (falls nicht nötig, benutzen Sie /bin/bash).&lt;br /&gt;
&lt;br /&gt;
===/etc/group===&lt;br /&gt;
====Beschreibung====&lt;br /&gt;
etc/group ist eine ASCII Datei, die Gruppen definiert, zu denen Benutzer&lt;br /&gt;
gehören. Es gibt nur einen Eintrag pro Zeile; jede Zeile hat folgendes Format:&lt;br /&gt;
         GruppenName:Passwort:GruppenKennung:BenutzerListe&lt;br /&gt;
Beschreibung der Felder:&lt;br /&gt;
#     GruppenName      Die Bezeichnung der Gruppe.&lt;br /&gt;
#     Passwort         Das (verschlüsselte) Gruppen-Passwort. Wenn dieses Feld leer ist, wird kein Passwort benötigt.&lt;br /&gt;
#     GruppenKennung Die numerische Identifikation der Gruppe.&lt;br /&gt;
#     BenutzerListe    Alle Namen der Mitglieder, getrennt durch Kommas.&lt;br /&gt;
&lt;br /&gt;
===/etc/shadow===&lt;br /&gt;
====Beschreibung====&lt;br /&gt;
shadow beinhaltet Informationen zu den verschlüsselten Passwörten, zu den&lt;br /&gt;
Benutzerzugängen und weitere Informationen zur Laufzeit der Passwörter.&lt;br /&gt;
 Name:Passwort:Letzte Änderung:Mintage:Maxtage:Warntage:Inaktiv:Ablauf&lt;br /&gt;
#    Der Loginname&lt;br /&gt;
#    verschlüsseltes Passwort &lt;br /&gt;
&amp;lt;nowiki&amp;gt;*&amp;lt;/nowiki&amp;gt; bedeutet Benutzer kann sich nicht einlogen&lt;br /&gt;
! bedeutet Benutzer hat kein Passwort gesetzt&lt;br /&gt;
#    Tage seit dem 1 Januar 1970 an dem das Passwort letztmals geändert wurde&lt;br /&gt;
#    Tage, die das Passwort behalten werden muss, bevor es wieder geändert werden kann&lt;br /&gt;
#     Die Anzahl der Tage, nach denen der Benutzer das Passwort wieder ändern muss&lt;br /&gt;
#    Anzahl der Tage bevor das Passwort abläuft und der Benutzer gewarnt wird&lt;br /&gt;
#    Wenn der Zugang diese Anzahl von Tagen nicht benutzt wird, wird der Zugang gesperrt&lt;br /&gt;
#    Tag seit dem 1 Januar 1970, an dem der Zugang gesperrt wird&lt;br /&gt;
#    Reserviertes Feld&lt;br /&gt;
&lt;br /&gt;
Die Datei sollte aus Sicherheitgründen nicht für einen normalen Benutzer lesbar&lt;br /&gt;
sein.&lt;br /&gt;
&lt;br /&gt;
==Programme zur Userverwaltung==&lt;br /&gt;
===useradd===&lt;br /&gt;
User anlegen&lt;br /&gt;
 root@zero:~# useradd -m -u 1011 -g users -G admin -d /home/erwin -s /bin/bash -c &amp;quot;Erwin Lehman&amp;quot;  erwin&lt;br /&gt;
{| border=1 cellpadding=2&lt;br /&gt;
|&amp;quot;-m&amp;quot;&lt;br /&gt;
|Lege Homedirectory an&lt;br /&gt;
|-&lt;br /&gt;
|&amp;quot;-u 1011&amp;quot;&lt;br /&gt;
|Userid wird zugeordnet&lt;br /&gt;
|-&lt;br /&gt;
|&amp;quot;-g users&amp;quot;&lt;br /&gt;
|Primäre Gruppe wird zugeordnet&lt;br /&gt;
|-&lt;br /&gt;
|&amp;quot;-G admin&amp;quot;&lt;br /&gt;
|Sekunbdäre Gruppe wird zugeordnet&lt;br /&gt;
|-&lt;br /&gt;
|&amp;quot;-d /home/erwin/&amp;quot;&lt;br /&gt;
|Name des Homedirectory&lt;br /&gt;
|-&lt;br /&gt;
|&amp;quot;-s /bin/bash&amp;quot;&lt;br /&gt;
|Bash wird zugeordnet&lt;br /&gt;
|- &lt;br /&gt;
|&amp;quot;-c Erwin Lehman&amp;quot;&lt;br /&gt;
|Kommentarfeld&lt;br /&gt;
|-&lt;br /&gt;
|&amp;quot;erwin&amp;quot; &lt;br /&gt;
|Name des Users&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Defaulteinstellungen anzeigen&lt;br /&gt;
 root@zero:~# useradd -D&lt;br /&gt;
 GROUP=100&lt;br /&gt;
 HOME=/home&lt;br /&gt;
 INACTIVE=-1&lt;br /&gt;
 EXPIRE=&lt;br /&gt;
 SHELL=/bin/sh&lt;br /&gt;
 SKEL=/etc/skel&lt;br /&gt;
 CREATE_MAIL_SPOOL=no&lt;br /&gt;
&lt;br /&gt;
Defaulteinstellungen ändern&lt;br /&gt;
 useradd -D -s /bin/bash&lt;br /&gt;
&lt;br /&gt;
Konfigurationsdatei&lt;br /&gt;
 root@zero:~# cat /etc/default/useradd &lt;br /&gt;
 SHELL=/bin/bash&lt;br /&gt;
 GROUP=100&lt;br /&gt;
 HOME=/home&lt;br /&gt;
 INACTIVE=-1&lt;br /&gt;
 EXPIRE=&lt;br /&gt;
 SKEL=/etc/skel&lt;br /&gt;
 CREATE_MAIL_SPOOL=no&lt;br /&gt;
&lt;br /&gt;
===usermod===&lt;br /&gt;
User modifizieren&lt;br /&gt;
 root@zero:~# usermod -l fritz -s /bin/sh -G admin,video erwin&lt;br /&gt;
{| border=1 cellpadding=2&lt;br /&gt;
|&amp;quot;-l fritz&amp;quot;&lt;br /&gt;
|Neuer Username&lt;br /&gt;
|-&lt;br /&gt;
|&amp;quot;-s /bin/sh&amp;quot;&lt;br /&gt;
|Neue Shell&lt;br /&gt;
|-&lt;br /&gt;
|&amp;quot;-G admin, video&amp;quot;&lt;br /&gt;
|Sekunbdäre Gruppen werden zugeordnet&lt;br /&gt;
|-&lt;br /&gt;
|&amp;quot;erwin&amp;quot; &lt;br /&gt;
|Name des Users&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
===userdel===&lt;br /&gt;
User inklusive Homedirectory löschen&lt;br /&gt;
 root@zero:~# userdel -r fritz&lt;br /&gt;
&lt;br /&gt;
===passwd===&lt;br /&gt;
Rootpasswort ändern&lt;br /&gt;
 root@zero:~# passwd &lt;br /&gt;
 Geben Sie ein neues UNIX Passwort ein:'''sysadm''' &lt;br /&gt;
 Geben Sie das neue UNIX Passwort erneut ein:'''sysadm''' &lt;br /&gt;
 passwd: Passwort erfolgreich geändert&lt;br /&gt;
&lt;br /&gt;
Passwort von tux ändern&lt;br /&gt;
 root@zero:~# passwd tux&lt;br /&gt;
 Geben Sie ein neues UNIX Passwort ein:'''suxer''' &lt;br /&gt;
 Geben Sie das neue UNIX Passwort erneut ein:'''suxer'''&lt;br /&gt;
 passwd: Passwort erfolgreich geändert&lt;br /&gt;
&lt;br /&gt;
Minimale und Maximale Gültigkeit des Passwortes von tux festlegen&lt;br /&gt;
 root@zero:~# passwd -n 5 -x 120 tux&lt;br /&gt;
&lt;br /&gt;
===groupadd===&lt;br /&gt;
 root@zero:~# groupadd -f -g 2001 xinuxer&lt;br /&gt;
{| border=1 cellpadding=2&lt;br /&gt;
|&amp;quot;-f&amp;quot;&lt;br /&gt;
|Überschreibe bestehende Gruppe&lt;br /&gt;
|-&lt;br /&gt;
|&amp;quot;-g 2001&amp;quot;&lt;br /&gt;
|GID der Gruppe&lt;br /&gt;
|-&lt;br /&gt;
|&amp;quot;xinuxer&amp;quot; &lt;br /&gt;
|Name des Gruppe&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==chmod==&lt;br /&gt;
Die Syntax des Befehls chmod lautet:&lt;br /&gt;
&lt;br /&gt;
'''chmod''' WerWieWas [,WerWieWas,.....] Dateiliste&lt;br /&gt;
&lt;br /&gt;
oder&lt;br /&gt;
&lt;br /&gt;
'''chmod''' Oktalzahl Dateiliste&lt;br /&gt;
&lt;br /&gt;
Durch WerWieWas bzw. Oktalzahl wird die Rechtetabelle definiert. Innerhalb von&lt;br /&gt;
WerWieWas darf es kein Leerzeichen geben. Wer bezeichnet den Benutzerkreis,&lt;br /&gt;
dem man Rechte gibt, Wie die Art, in der die Rechte gegeben werden und Was die&lt;br /&gt;
Rechte als solche. Im einzelnen können folgende Kürzel benutzt werden:&lt;br /&gt;
&lt;br /&gt;
Für Wer kann eines der folgenden Kürzel oder eine Kombination davon stehen:&lt;br /&gt;
 u                   (user) Rechte für den Dateibesitzer&lt;br /&gt;
 g                   (group) Rechte für die Gruppe&lt;br /&gt;
 o                   (others) Rechte für alle anderen Benutzer&lt;br /&gt;
 a                   (all) Rechte für alle Benutzer&lt;br /&gt;
Für Wie steht eines der folgenden Kürzel:&lt;br /&gt;
 +                   Die Rechte werden zu den vorhandenen zusätzlich vergeben&lt;br /&gt;
 -                   Die im Folgenden genannten Rechte werden entzogen&lt;br /&gt;
 =                   Die im Folgenden genannten Rechte ersetzen die bisherigen&lt;br /&gt;
Für Was steht eines der folgenden Kürzel:&lt;br /&gt;
 r                   (read) lesen&lt;br /&gt;
 w                   (write) schreiben&lt;br /&gt;
 x                   (execute) ausführen&lt;br /&gt;
oder diese Sonderformen&lt;br /&gt;
 s                   (usersbit) Programm läuft unter der UID des Besitzers&lt;br /&gt;
 s                   (groupsbit)Programm läuft unter der GID des GRUPPE&lt;br /&gt;
 t                   (stickybit) Dateien im Verzeichnis darf nur Besitzer löschen&lt;br /&gt;
&lt;br /&gt;
===Beispiel===&lt;br /&gt;
Setze für alle Schreib- und Leserecht&lt;br /&gt;
 xinux@zero:~$ chmod a=rw test &lt;br /&gt;
 xinux@zero:~$ ls -l test &lt;br /&gt;
 -rw-rw-rw- 1 xinux xinux 0 2009-06-16 12:01 test&lt;br /&gt;
 xinux@zero:~$ &lt;br /&gt;
&lt;br /&gt;
Erteile Besitzer Ausführungsrecht&lt;br /&gt;
 xinux@zero:~$ chmod u+x test ; ls -l test &lt;br /&gt;
 -rwxrw-rw- 1 xinux xinux 0 2009-06-16 12:01 test&lt;br /&gt;
 xinux@zero:~$ &lt;br /&gt;
&lt;br /&gt;
===chmod oktale Schreibweise===&lt;br /&gt;
 Specialrights        User           Group         Other&lt;br /&gt;
 usbit gsbit sticky    r    w   x     r   w   x     r   w   x&lt;br /&gt;
   1     1      1      1    1   1     1   1   1     1   1   1&lt;br /&gt;
   0     0      0      0    0   0     0   0   0     0   0   0&lt;br /&gt;
 Oktale Wertigkeit pro Recht&lt;br /&gt;
   4     2       1     4    2   1     4   2   1     4   2   1&lt;br /&gt;
&lt;br /&gt;
===Beispiele===&lt;br /&gt;
 xinux@zero:~$ chmod 751 test ; ls -l test&lt;br /&gt;
 -rwxr-x--x 1 xinux xinux 0 2009-06-16 12:01 test&lt;br /&gt;
 xinux@zero:~$ &lt;br /&gt;
&lt;br /&gt;
 xinux@zero:~$ chmod 4770 test ; ls -l test&lt;br /&gt;
 -rwsrwx--- 1 xinux xinux 0 2009-06-16 12:01 test&lt;br /&gt;
 xinux@zero:~$ &lt;br /&gt;
&lt;br /&gt;
 xinux@zero:~$ chmod 0 test ; ls -l test &lt;br /&gt;
 ---------- 1 xinux xinux 0 2009-06-16 12:01 test&lt;br /&gt;
&lt;br /&gt;
===chmod Optionen===&lt;br /&gt;
 -c   (changes) es werden nur die Dateien angezeigt, deren Zugriffsrechte tatsächlich verändert werden&lt;br /&gt;
 -f   (silent, quiet) Fehlermeldungen wegen fehlgeschlagener Änderungsversuche werden unterdrückt&lt;br /&gt;
 -v   (verbose) alle Aktionen werden angezeigt&lt;br /&gt;
 -R   (recursive) die Zugriffsrechte aller Dateien in den Unterverzeichnissen werden ebenfalls geändert&lt;br /&gt;
&lt;br /&gt;
Theoretisch sind alle Kombinationen der Zugriffsrechte denkbar, aber der&lt;br /&gt;
Eigentümer einer Datei darf diese immer lesen, selbst wenn das Lesebit nicht&lt;br /&gt;
gesetzt ist. Genauso macht es wenig Sinn, eine gewöhnliche Textdatei als&lt;br /&gt;
ausführbar zu setzen; die Shell wird damit nichts anfangen können. Ein x für ein&lt;br /&gt;
Verzeichnis gibt an, dass in dieses gewechselt werden kann.&lt;br /&gt;
&lt;br /&gt;
Rechte sind verbindlich&lt;br /&gt;
&lt;br /&gt;
Interessant ist auch ein Konstrukt folgender Art&lt;br /&gt;
 -rwx---rwx&lt;br /&gt;
&lt;br /&gt;
das angibt, dass mit der Datei alles angestellt werden kann, außer durch Nutzer der&lt;br /&gt;
Gruppe. Versucht irgend jemand, der nicht der Gruppe des Eigentümers angehört,&lt;br /&gt;
die Datei zu modifizieren, wird ihm dies gelingen, einem Gruppenmitglied bleibt&lt;br /&gt;
dies versagt, obwohl er ja gleichzeitig ein &amp;quot;Anderer&amp;quot; ist. D.h. die Rechte der&lt;br /&gt;
Gruppe sind verbindlicher, als die Rechte der anderen!&lt;br /&gt;
&lt;br /&gt;
===Bedeutungen der Zugriffsarten===&lt;br /&gt;
====Dateien====&lt;br /&gt;
* r: Der Inhalt der Datei kann gelesen und damit auch kopiert werden. &lt;br /&gt;
 root@zero:~# cat test&lt;br /&gt;
 Dies ist eine Testdatei&lt;br /&gt;
  &lt;br /&gt;
 root@zero:~# cp test backup&lt;br /&gt;
&lt;br /&gt;
* w: Der Inhalt der Datei darf verändert werden. Ob die Datei gelöscht werden kann ist&lt;br /&gt;
keine Eigenschaft der Datei, sondern des Verzeichnisses, indem sich die Datei befindet.&lt;br /&gt;
 root@zero:~# cat &amp;gt; test&lt;br /&gt;
 Hier steht jetzt was anderes&lt;br /&gt;
 ^C&lt;br /&gt;
 root@zero:~# cat test&lt;br /&gt;
 Hier steht jetzt was anderes&lt;br /&gt;
  &lt;br /&gt;
 xinux@zero:~$ ls -ld verzeichnis/&lt;br /&gt;
 dr-xr-xr-x 2 xinux xinux 4096 2009-06-18 11:16 verzeichnis/&lt;br /&gt;
 xinux@zero:~/verzeichnis$ rm text&lt;br /&gt;
 rm: Entfernen von „text“ nicht möglich: Permission denied&lt;br /&gt;
&lt;br /&gt;
* x: Ausführrecht für Programme und Skripte&lt;br /&gt;
 xinux@zero:~$ ./programm&lt;br /&gt;
 -bash: ./programm: Permission denied&lt;br /&gt;
 xinux@zero:~$ chmod +x programm&lt;br /&gt;
 xinux@zero:~$ ./programm&lt;br /&gt;
 Test&lt;br /&gt;
  test&lt;br /&gt;
&lt;br /&gt;
====Verzeichnisse====&lt;br /&gt;
* r: Die Einträge in dem Verzeichnis sind lesbar.&lt;br /&gt;
Leserecht von verzeichnis/ entziehen&lt;br /&gt;
 xinux@zero:~$ chmod a-r verzeichnis/&lt;br /&gt;
 xinux@zero:~$ ls verzeichnis/&lt;br /&gt;
 ls: Öffnen von Verzeichnis verzeichnis/ nicht möglich: Permission denied&lt;br /&gt;
Leserecht für Benutzer und Gruppe vergeben&lt;br /&gt;
 xinux@zero:~$ chmod a+r verzeichnis/&lt;br /&gt;
 xinux@zero:~$ ls verzeichnis/&lt;br /&gt;
 text&lt;br /&gt;
&lt;br /&gt;
* w: Die Einträge in dem Verzeichnis können geändert werden. &lt;br /&gt;
Neue Datei erstellen&lt;br /&gt;
 xinux@zero:~$ touch neu&lt;br /&gt;
 xinux@zero:~$ ls neu&lt;br /&gt;
 neu&lt;br /&gt;
&lt;br /&gt;
Datei löschen&lt;br /&gt;
 xinux@zero:~$ rm neu&lt;br /&gt;
 xinux@zero:~$ ls neu&lt;br /&gt;
 ls: Zugriff auf neu nicht möglich: No such file or directory&lt;br /&gt;
&lt;br /&gt;
* x: Der Name des Verzeichnisses kann in einem Pfadnamen erscheinen.&lt;br /&gt;
Verzeichnis ohne x Recht&lt;br /&gt;
 xinux@zero:~$ chmod a-x verzeichnis/&lt;br /&gt;
Wechseln in Verzeichnis mangels x-Recht nicht möglich&lt;br /&gt;
 xinux@zero:~$ cd verzeichnis/&lt;br /&gt;
 -bash: cd: verzeichnis/: Permission denied&lt;br /&gt;
x-Recht vergeben&lt;br /&gt;
 xinux@zero:~$ chmod a+x verzeichnis/&lt;br /&gt;
damit Wechsel in Verzeichnis möglich&lt;br /&gt;
 xinux@zero:~$ cd verzeichnis/&lt;br /&gt;
 xinux@zero:~/verzeichnis$ pwd&lt;br /&gt;
 /home/xinux/verzeichnis&lt;br /&gt;
&lt;br /&gt;
====umask====&lt;br /&gt;
Neue Dateien und Verzeichnisse werden mit ein und denselben Zufriffsrechten erzeugt.&lt;br /&gt;
 xinux@zero:~$ mkdir text&lt;br /&gt;
 xinux@zero:~$ touch textdat&lt;br /&gt;
 xinux@zero:~$ ls -ld text*&lt;br /&gt;
 drwxr-xr-x 2 xinux xinux 4096 2009-06-18 11:37 text&lt;br /&gt;
 -rw-r--r-- 1 xinux xinux    0 2009-06-18 11:37 textdat&lt;br /&gt;
&lt;br /&gt;
Zuständig für dieses Verhalten ist die sogenannte umask, die oft in der Datei&lt;br /&gt;
/etc/profile auf den Wert 022 voreingestellt ist. Zusätzlich wird noch eine&lt;br /&gt;
Maximalmaske benötigt, die sich für Verzeichnisse und andere Dateien&lt;br /&gt;
unterscheidet. Die bei der Erzeugung gesetzten Rechte entstehen nun, indem von&lt;br /&gt;
der Maximalmaske der durch die umask vorgegebene Wert subtrahiert wird:&lt;br /&gt;
&lt;br /&gt;
{| border=1 cellpadding=2&lt;br /&gt;
!&lt;br /&gt;
! Dateien&lt;br /&gt;
! Verzeichnisse&lt;br /&gt;
|-&lt;br /&gt;
| Systemvorgabe&lt;br /&gt;
| 666&lt;br /&gt;
| 777&lt;br /&gt;
|-&lt;br /&gt;
| -umask&lt;br /&gt;
| 022&lt;br /&gt;
| 022&lt;br /&gt;
|-&lt;br /&gt;
| Ergebnis&lt;br /&gt;
| 644&lt;br /&gt;
| 755&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
 xinux@zero:~$ grep umask /etc/profile&lt;br /&gt;
 umask 022&lt;br /&gt;
&lt;br /&gt;
==Gruppenzugehörigkeit==&lt;br /&gt;
===newgrp===&lt;br /&gt;
Ändert die Gruppenzugehörigkeit eines Benutzers auf die angegebene Gruppe. Wenn keine Gruppe angegeben wird, wird die &lt;br /&gt;
Anmeldegruppe des Benutzers verwendet. Die neue Gruppe wird anschließend fü Zugriffskontrollen verwendet.&lt;br /&gt;
&lt;br /&gt;
 newgrp Gruppenname&lt;br /&gt;
&lt;br /&gt;
 root@zero:~# newgrp hacker&lt;br /&gt;
 root@zero:~# id&lt;br /&gt;
 uid=0(root) gid=1006(hacker) Gruppen=0(root),1006(hacker)&lt;br /&gt;
&lt;br /&gt;
===chgrp===&lt;br /&gt;
Verändert die Besitzugehörigkeit zu der angegebenen Gruppe&lt;br /&gt;
&lt;br /&gt;
 chgrp [Optionen] Gruppe Datei(en)&lt;br /&gt;
&lt;br /&gt;
Optionen:&lt;br /&gt;
 -c Zeigt Veränderungen an&lt;br /&gt;
 -f Unterdrückt die meisten Fehlermeldungen&lt;br /&gt;
 -R Verändert Dateien und Verzeichnisse rekursiv&lt;br /&gt;
 -v Gibt geschwätzige Ausgabe aus.&lt;br /&gt;
&lt;br /&gt;
 root@zero:~# ls -l&lt;br /&gt;
 ...&lt;br /&gt;
 d-wx--x--x  3 root root 4096 2009-06-18 13:34 verzeichnis&lt;br /&gt;
 &lt;br /&gt;
 root@zero:~# chgrp -R xinux verzeichnis/&lt;br /&gt;
 root@zero:~# ls -l&lt;br /&gt;
 ...&lt;br /&gt;
 d-wx--x--x  3 root xinux 4096 2009-06-18 13:34 verzeichnis&lt;br /&gt;
&lt;br /&gt;
 xinux@zero:~$ cd /root/verzeichnis/&lt;br /&gt;
 xinux@zero:/root/verzeichnis$ pwd&lt;br /&gt;
 /root/verzeichnis&lt;br /&gt;
&lt;br /&gt;
===chown===&lt;br /&gt;
Ändert den Eigentümer von einer oder mehreren Dateien in den angegebenen Benutzer. &lt;br /&gt;
chown erlaubt ebenfalls das Ändern der Gruppeneigentümreschaft. Nur der aktuelle Eigentümer einer&lt;br /&gt;
Datei oder der Superuser (root) darf die Eigentumsverhältnisse ändern.&lt;br /&gt;
&lt;br /&gt;
 chown [Optionen] Benutzer(:Gruppe) Dateien&lt;br /&gt;
&lt;br /&gt;
Optionen:&lt;br /&gt;
 -c Gibt Informationen über die veränderten Dateien aus&lt;br /&gt;
 --dereference Symbolischen Links folgen&lt;br /&gt;
 -v Gibt Informationen über alle Dateien aus, die chown zu ändern versucht, egal, ob die Änderung erfolgt ist oder nicht&lt;br /&gt;
 -R Geht rekursiv durch alle Unterverzeichnisse und führt die Änderungen durch. &lt;br /&gt;
&lt;br /&gt;
 root@zero:~# chown -R xinux.xinux verzeichnis/&lt;br /&gt;
 root@zero:~# ls -l&lt;br /&gt;
 insgesamt 12&lt;br /&gt;
 drwx------ 13 root  root  4096 2009-04-21 15:11 profile&lt;br /&gt;
 --w-------  1 root  root     0 2009-06-18 11:13 test&lt;br /&gt;
 -rw-r--r--  1 root  root    40 2009-06-18 12:04 text&lt;br /&gt;
 drwxrwx--x  3 xinux xinux 4096 2009-06-18 13:39 verzeichnis&lt;br /&gt;
 &lt;br /&gt;
 root@zero:~# chown -R -c xinux.xinux verzeichnis/&lt;br /&gt;
 &lt;br /&gt;
 root@zero:~# chown -R -v xinux.xinux verzeichnis/&lt;br /&gt;
 Eigentümer von „verzeichnis/01“ als xinux:xinux erhalten&lt;br /&gt;
 Eigentümer von „verzeichnis/test“ als xinux:xinux erhalten&lt;br /&gt;
 Eigentümer von „verzeichnis/“ als xinux:xinux erhalten&lt;br /&gt;
&lt;br /&gt;
==Eingabe/Ausgabe==&lt;br /&gt;
Standardeingabe (0): Laufende Programme erwarten von hier ihre Eingaben (normalerweise handelt es sich um die Tastatur).&lt;br /&gt;
&lt;br /&gt;
Standardausgabe (1): Programme schreiben auf diese ihre Ausgaben (Bildschirm).&lt;br /&gt;
&lt;br /&gt;
Standardfehlerausgabe (2) : Fehlerausgaben landen hier (Bildschirm, aber nur die aktive Konsole).&lt;br /&gt;
&lt;br /&gt;
[[Bild:std.jpg]]&lt;br /&gt;
&lt;br /&gt;
===cat===&lt;br /&gt;
Das Programm cat liest von STDIN und gibt es STDOUT wieder aus&lt;br /&gt;
&lt;br /&gt;
Einlesen der Datei text&lt;br /&gt;
 root@zero:~# cat &amp;lt; text&lt;br /&gt;
 wichtig&lt;br /&gt;
&lt;br /&gt;
Schreiben in die Datei text, dies überschreibt den bisherigen Inhalt der Datei&lt;br /&gt;
 root@zero:~# cat &amp;gt; text&lt;br /&gt;
 sogar noch wichtiger &lt;br /&gt;
 &lt;br /&gt;
Ausgeben der Datei text&lt;br /&gt;
 root@zero:~# cat text &lt;br /&gt;
 sogar noch wichtiger&lt;br /&gt;
&lt;br /&gt;
Lesen aus der Datei text und schreiben in die Datei neuertext&lt;br /&gt;
 root@zero:~# cat &amp;lt; text &amp;gt; neuertext&lt;br /&gt;
 root@zero:~# cat neuertext&lt;br /&gt;
 sogar noch wichtiger&lt;br /&gt;
&lt;br /&gt;
Anhängen der Ausgabe von date an die Datei neuertext&lt;br /&gt;
 root@zero:~# date &amp;gt;&amp;gt; neuertext&lt;br /&gt;
 root@zero:~# cat neuertext&lt;br /&gt;
 sogar noch wichtiger&lt;br /&gt;
 Do 18. Jun 14:08:58 CEST 2009&lt;br /&gt;
&lt;br /&gt;
Umleiten des Standardfehlerkanals nach error&lt;br /&gt;
 root@zero:~# rm sux 2&amp;gt; error&lt;br /&gt;
 root@zero:~# more error&lt;br /&gt;
 rm: Entfernen von „sux“ nicht möglich: No such file or directory&lt;br /&gt;
&lt;br /&gt;
===Umleitungen===&lt;br /&gt;
Nacheinander auszuführende Kommandos&lt;br /&gt;
 root@zero:~# pwd; date&lt;br /&gt;
 /root&lt;br /&gt;
 Do 18. Jun 14:13:05 CEST 2009&lt;br /&gt;
 &lt;br /&gt;
Übergeben der Ausgabe von tail als Eingabe von grep mit Hilfe der Pipe &amp;quot;|&amp;quot;&lt;br /&gt;
 root@zero:~# tail /var/log/auth.log | grep xinux&lt;br /&gt;
 Jun 18 13:52:33 zero nss_wins[11433]: pam_unix(login:session): session closed for user xinux&lt;br /&gt;
&lt;br /&gt;
Übergeben der letzten 100 Zeilen von syslog als Eingabe von grep&lt;br /&gt;
 root@zero:~# tail /var/log/syslog -n 100 | grep error&lt;br /&gt;
 Jun 18 09:30:54 zero kernel: [154384.692135] end_request: I/O error, dev fd0, sector 0&lt;br /&gt;
 Jun 18 09:30:54 zero kernel: [154384.712137] end_request: I/O error, dev fd0, sector 0&lt;br /&gt;
&lt;br /&gt;
==tr==&lt;br /&gt;
tr ist ein Programm um Zeichen zu übersetzen. Dies betrifft nur die Ausgabe, die Datei selbst bleibt unverändert.&lt;br /&gt;
&lt;br /&gt;
Ersetzt Kleinbuchstaben durch Großbuchstaben aus der Datei text&lt;br /&gt;
 root@zero:~# tr &amp;quot;a-z&amp;quot; &amp;quot;A-Z&amp;quot; &amp;lt; text&lt;br /&gt;
 SOGAR NOCH WICHTIGER&lt;br /&gt;
 123&lt;br /&gt;
 34&lt;br /&gt;
 4711&lt;br /&gt;
 TEST&lt;br /&gt;
&lt;br /&gt;
Ersetzt alle Zahlen durch X&lt;br /&gt;
 root@zero:~# tr &amp;quot;0-9&amp;quot; &amp;quot;X&amp;quot; &amp;lt; text&lt;br /&gt;
 sogar noch wichtiger&lt;br /&gt;
 XXX&lt;br /&gt;
 XX&lt;br /&gt;
 XXXX&lt;br /&gt;
 test&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
 root@zero:~# cat &amp;gt; test&lt;br /&gt;
 +++++&lt;br /&gt;
 ###&lt;br /&gt;
 1111&lt;br /&gt;
&lt;br /&gt;
-s löscht mehrfach kommende Zeichen&lt;br /&gt;
 root@zero:~# tr '''-s''' &amp;quot;+&amp;quot; &amp;lt; test&lt;br /&gt;
 +&lt;br /&gt;
 ###&lt;br /&gt;
 1111&lt;br /&gt;
&lt;br /&gt;
-d löscht vorkommende Zeichen &lt;br /&gt;
 root@zero:~# tr '''-d''' &amp;quot;#&amp;quot; &amp;lt; test&lt;br /&gt;
 +++++ &lt;br /&gt;
 &lt;br /&gt;
 1111&lt;br /&gt;
&lt;br /&gt;
==cut==&lt;br /&gt;
Spalten aus einer Datei schneiden. Dies betrifft nur die Ausgabe, die Datei selbst bleibt unverändert.&lt;br /&gt;
 &lt;br /&gt;
Schneidet die erste Spalte aus, der Delimiter ist : &lt;br /&gt;
 root@zero:~# cut -f 1 -d : /etc/passwd&lt;br /&gt;
 root&lt;br /&gt;
 daemon&lt;br /&gt;
 bin&lt;br /&gt;
 ...&lt;br /&gt;
 xinux&lt;br /&gt;
&lt;br /&gt;
 root@zero:~# more test&lt;br /&gt;
 1234#5678#9999&lt;br /&gt;
 &lt;br /&gt;
Schneidet die zweite Spalte aus, der Delimiter ist #&lt;br /&gt;
 root@zero:~# cut -f 2 -d &amp;quot;#&amp;quot; &amp;lt; test&lt;br /&gt;
 5678&lt;br /&gt;
&lt;br /&gt;
Schneidet bis zum 3 Zeichen ab&lt;br /&gt;
 root@zero:~$ echo S01policykit | cut -c 4-&lt;br /&gt;
 policykit&lt;br /&gt;
&lt;br /&gt;
==expand==&lt;br /&gt;
Ersetzt Tabulatorzeichen durch Folgen von Leerzeichen und schreibt das Ergebnis auf die Standardausgabe&lt;br /&gt;
 root@zero:~# expand /etc/samba/smb.conf&lt;br /&gt;
 ...&lt;br /&gt;
&lt;br /&gt;
==fmt==&lt;br /&gt;
#Setzt den Text der Dateien im Blocksatz der angegebenen Breite durch Auffüllen von Zeilen und Entfernen von Zeilenwechseln.&lt;br /&gt;
Standardgemäß werden Leerzeilen, die Position von Leerzeichen und der Einzug am Zeilenanfang erhalten. fmt versucht, &lt;br /&gt;
Zeilenumbrüche an Satzenden durchzuführen sowie sie nach dem ersten oder vor dem letzten Wort eines Satzes zu vermeiden. &lt;br /&gt;
 &lt;br /&gt;
 fmt [Optionen] [Dateien]&lt;br /&gt;
&lt;br /&gt;
Optionen&lt;br /&gt;
&lt;br /&gt;
* -p ''Präfix'': Formatiert nur Zeilen, die mit ''Präfix'' anfangen&lt;br /&gt;
 root@zero:/tmp# fmt -p '#' text&lt;br /&gt;
 #Setzt den Text der Dateien im Blocksatz der angegebenen Breite durch&lt;br /&gt;
 #Auffüllen von Zeilen und Entfernen von Zeilenwechseln.  Standardgemäß&lt;br /&gt;
 #werden Leerzeilen, die Position von Leerzeichen und der Einzug am&lt;br /&gt;
 #Zeilenanfang erhalten. fmt versucht,&lt;br /&gt;
 Zeilenumbrüche an Satzenden durchzuführen sowie sie nach dem ersten oder vor dem letzten Wort eines Satzes zu vermeiden.&lt;br /&gt;
&lt;br /&gt;
* -u : Erzwingt genau ein Leerzeichen zwischen Wörtern und zwei Leerzeichen zwischen Sätzen&lt;br /&gt;
&lt;br /&gt;
* -w ''Breite'': Setzt die Ausgabebreite auf ''Breite''&lt;br /&gt;
 root@zero:/tmp# fmt -w 30 text&lt;br /&gt;
 #Setzt den Text der Dateien&lt;br /&gt;
 im Blocksatz der angegebenen&lt;br /&gt;
 Breite durch Auffüllen&lt;br /&gt;
 von Zeilen und Entfernen&lt;br /&gt;
 von Zeilenwechseln.&lt;br /&gt;
 #Standardgemäß werden&lt;br /&gt;
 Leerzeilen, die Position von&lt;br /&gt;
 Leerzeichen und der Einzug am&lt;br /&gt;
 Zeilenanfang erhalten. fmt&lt;br /&gt;
 versucht, Zeilenumbrüche&lt;br /&gt;
 an Satzenden durchzuführen&lt;br /&gt;
 sowie sie nach dem ersten&lt;br /&gt;
 oder vor dem letzten Wort&lt;br /&gt;
 eines Satzes zu vermeiden.&lt;br /&gt;
&lt;br /&gt;
==join==&lt;br /&gt;
Führt die Zeilen zweier sortierter Dateien anhand von '''Übereinstimmungen''' in einem gemeinsamen Feld zusammen.&lt;br /&gt;
&lt;br /&gt;
 root@zero:~# more name&lt;br /&gt;
 1. karl&lt;br /&gt;
 2. heinz&lt;br /&gt;
 3. hans&lt;br /&gt;
 4. otto&lt;br /&gt;
 root@zero:~# more tel&lt;br /&gt;
 1. 1234&lt;br /&gt;
 2. 4321&lt;br /&gt;
 3. 222&lt;br /&gt;
 4. 121212&lt;br /&gt;
 root@zero:~# join name tel &amp;gt; telefonbuch&lt;br /&gt;
 root@zero:~# more telefonbuch&lt;br /&gt;
 1. karl 1234&lt;br /&gt;
 2. heinz 4321&lt;br /&gt;
 3. hans 222&lt;br /&gt;
 4. otto 121212&lt;br /&gt;
&lt;br /&gt;
 root@zero:~# join -t : /etc/passwd /etc/shadow&lt;br /&gt;
 ....&lt;br /&gt;
 daemon:x:1:1:daemon:/usr/sbin:/bin/sh:*:14181:0:99999:7:::&lt;br /&gt;
 bin:x:2:2:bin:/bin:/bin/sh:*:14181:0:99999:7:::&lt;br /&gt;
 sys:x:3:3:sys:/dev:/bin/sh:*:14181:0:99999:7:::&lt;br /&gt;
 sync:x:4:65534:sync:/bin:/bin/sync:*:14181:0:99999:7:::&lt;br /&gt;
 ...&lt;br /&gt;
&lt;br /&gt;
join in dat1 nach Feld 3 und in dat2 nach Feld 2&lt;br /&gt;
 thomas@lydia:~$ cat dat1 &lt;br /&gt;
 hugo:ps:1111&lt;br /&gt;
 erwin:zw:2222&lt;br /&gt;
 karl:sb:3333&lt;br /&gt;
 rudi:kl:4444&lt;br /&gt;
 thomas@lydia:~$ cat dat2&lt;br /&gt;
 blau:1111:svn&lt;br /&gt;
 grün:2222:fcs&lt;br /&gt;
 gelb:3333:fch&lt;br /&gt;
 rot:4444:fck&lt;br /&gt;
 thomas@lydia:~$ join -t : -1 3 -2 2 dat1 dat2 &lt;br /&gt;
 1111:hugo:ps:blau:svn&lt;br /&gt;
 2222:erwin:zw:grün:fcs&lt;br /&gt;
 3333:karl:sb:gelb:fch&lt;br /&gt;
 4444:rudi:kl:rot:fck&lt;br /&gt;
&lt;br /&gt;
==nl==&lt;br /&gt;
Nummeriert die Zeilen in einer Datei.&lt;br /&gt;
&lt;br /&gt;
 root@zero:~# nl /etc/passwd                                                   &lt;br /&gt;
     1  root:x:0:0:root:/root:/bin/bash                                       &lt;br /&gt;
     2  daemon:x:1:1:daemon:/usr/sbin:/bin/sh                                 &lt;br /&gt;
     3  bin:x:2:2:bin:/bin:/bin/sh                                            &lt;br /&gt;
     4  sys:x:3:3:sys:/dev:/bin/sh                                            &lt;br /&gt;
     5  sync:x:4:65534:sync:/bin:/bin/sync&lt;br /&gt;
     ...&lt;br /&gt;
Nummereriet mit führenden Nullen der Separatir ist ein :&lt;br /&gt;
 root@zero:~# nl -s : -n rz dat1&lt;br /&gt;
&lt;br /&gt;
==od==&lt;br /&gt;
Gibt Dateien im Oktal und anderen Formaten aus.&lt;br /&gt;
&lt;br /&gt;
 od [Optionen] Datei&lt;br /&gt;
&lt;br /&gt;
* -j ''Bytes'': Überspringt die Anzahl ''Bytes'' einer Datei&lt;br /&gt;
* -N ''Bytes'': Gibt nur die Anzahl ''Bytes'' aus&lt;br /&gt;
* -c : Gebe ASCII Zeichen aus&lt;br /&gt;
* -f : Gebe Fließkommazahlen aus&lt;br /&gt;
* -i : Gebe Dezimal Integer aus&lt;br /&gt;
* -l : Gebe Dezimal Long aus&lt;br /&gt;
* -o : Gebe Oktal 2 Byte Einheiten aus&lt;br /&gt;
* -s : Gebe Dezimal 2 Byte Einheiten aus&lt;br /&gt;
* -x : Gebe Hexadezimale 2 Byte einheiten aus&lt;br /&gt;
&lt;br /&gt;
Beispiele&lt;br /&gt;
&lt;br /&gt;
Gebe Master Boot Record (die ersten 512 Byte der Festplatte /dev/sda) als Hexadezimal aus&lt;br /&gt;
 root@zero:~# od '''-x -N''' 512 /dev/sda&lt;br /&gt;
 0000000 48eb 1090 d08e 00bc b8b0 0000 d88e c08e&lt;br /&gt;
 0000020 befb 7c00 00bf b906 0200 a4f3 21ea 0006&lt;br /&gt;
 0000040 be00 07be 0438 0b75 c683 8110 fefe 7507&lt;br /&gt;
 0000060 ebf3 b416 b002 bb01 7c00 80b2 748a 0203&lt;br /&gt;
 0000100 00ff 2000 0001 0000 0200 90fa f690 80c2&lt;br /&gt;
 ...&lt;br /&gt;
&lt;br /&gt;
Schreibe &amp;quot;suxer&amp;quot; in die Datei test&lt;br /&gt;
 root@zero:~# echo &amp;quot;suxer&amp;quot; &amp;gt; test&lt;br /&gt;
Ausgabe Hexadezimal&lt;br /&gt;
 root@zero:~# od -x test&lt;br /&gt;
 0000000 7573 6578 0a72&lt;br /&gt;
 0000006&lt;br /&gt;
&lt;br /&gt;
Ausgabe ASCII Zeichen&lt;br /&gt;
 root@zero:~# od -c test&lt;br /&gt;
 0000000   s   u   x   e   r  \n&lt;br /&gt;
 0000006&lt;br /&gt;
&lt;br /&gt;
==paste==&lt;br /&gt;
Fügt die Zeilen von zwei oder mehr Dateien horizontal zusammen&lt;br /&gt;
 root@zero:~# paste name tel&lt;br /&gt;
 1. karl 1. 1234&lt;br /&gt;
 2. heinz        2. 4321&lt;br /&gt;
 3. hans 3. 222&lt;br /&gt;
 4. otto 4. 121212&lt;br /&gt;
&lt;br /&gt;
==pr==&lt;br /&gt;
Bereitet Textdateien zum Drucken vor.&lt;br /&gt;
&lt;br /&gt;
 root@zero:~# echo &amp;quot;Plan für heute&amp;quot; &amp;gt; dokument&lt;br /&gt;
 root@zero:~# more dokument&lt;br /&gt;
 Plan für heute&lt;br /&gt;
 root@zero:~# pr dokument   &lt;br /&gt;
  &lt;br /&gt;
 &lt;br /&gt;
 2009-06-19 12:44                    dokument                     Seite 1&lt;br /&gt;
 &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
 Plan für heute&lt;br /&gt;
&lt;br /&gt;
Anmerkung Ausmaße der Bildschirmausgabe wie eine Druckseite.&lt;br /&gt;
&lt;br /&gt;
==sed==&lt;br /&gt;
streaming editor. Mit sed ist es möglich, den Inhalt einer Datei automatisch (nicht interaktiv) zu&lt;br /&gt;
bearbeiten. Wie unter Linux üblich, wird auch hier der Text nicht wirklich verändert sondern die &lt;br /&gt;
Änderung erfolgt über die Standardausgabe, die wieder umgeleitet werden kann. Die Syntax ist ähnlich &lt;br /&gt;
des ex modus von vi. Reguläre Ausdrücke können nach Belieben benutzt werden. &lt;br /&gt;
&lt;br /&gt;
Optionen:&lt;br /&gt;
 -e Zeichenkette  wendet die Editorbefehle aus Zeichenkette auf den Text an.&lt;br /&gt;
 -n gibt nur die Zeilen aus, die explizit (durch &amp;quot;p&amp;quot; ausgedruckt werden sollen&lt;br /&gt;
&lt;br /&gt;
Gibt die dritte Zeile der Datei text aus&lt;br /&gt;
 root@zero:~# sed -n &amp;quot;3p&amp;quot; text&lt;br /&gt;
 34&lt;br /&gt;
&lt;br /&gt;
Gibt die erste bis dritte Zeile von text aus&lt;br /&gt;
 root@zero:~# sed -n &amp;quot;1,3p&amp;quot; text&lt;br /&gt;
 sogar noch wichtiger&lt;br /&gt;
 123&lt;br /&gt;
 34&lt;br /&gt;
&lt;br /&gt;
Löschen der Zeile mit &amp;quot;sogar&amp;quot;&lt;br /&gt;
 root@zero:~# sed -e '/sogar/d' &amp;lt; text&lt;br /&gt;
 123&lt;br /&gt;
 34&lt;br /&gt;
 4711&lt;br /&gt;
 test&lt;br /&gt;
&lt;br /&gt;
und schreiben in text2&lt;br /&gt;
 root@zero:~# sed -e '/sogar/d' &amp;lt; text &amp;gt; text2&lt;br /&gt;
 root@zero:~# more text2&lt;br /&gt;
 123&lt;br /&gt;
 34&lt;br /&gt;
 4711&lt;br /&gt;
 test&lt;br /&gt;
&lt;br /&gt;
Alle 3en durch DREI ersetzen&lt;br /&gt;
 root@zero:~# sed -e 's/3/DREI/g' &amp;lt; text&lt;br /&gt;
 sogar noch wichtiger&lt;br /&gt;
 12DREI&lt;br /&gt;
 DREI4&lt;br /&gt;
 4711&lt;br /&gt;
 test&lt;br /&gt;
&lt;br /&gt;
==wc==&lt;br /&gt;
Zählt die Anzahl von Zeichen, Wörter oder Zeilen&lt;br /&gt;
&lt;br /&gt;
Optionen&lt;br /&gt;
* -m : Zählt die Anzahl der Zeichen&lt;br /&gt;
 root@zero:~# more name&lt;br /&gt;
 1. karl&lt;br /&gt;
 2. heinz&lt;br /&gt;
 3. hans&lt;br /&gt;
 4. otto&lt;br /&gt;
 root@zero:~# wc '''-m''' tel&lt;br /&gt;
 33 tel&lt;br /&gt;
&lt;br /&gt;
* -w : Zählt die Anzahl der Wörter (einschließlich Zahlen und andere Zeichen)&lt;br /&gt;
 root@zero:~# wc '''-w''' name&lt;br /&gt;
 8 name&lt;br /&gt;
&lt;br /&gt;
* -l : Zählt die Anzahl der Zeilen&lt;br /&gt;
 root@zero:~# wc '''-l''' name&lt;br /&gt;
 4 name&lt;br /&gt;
&lt;br /&gt;
==Sort==&lt;br /&gt;
&lt;br /&gt;
Zum sortieren von Dateien nach Feldern benutzt man sort. sort liest von STDIN man kann die Datei aber auch als Argument übergeben. &lt;br /&gt;
&lt;br /&gt;
Sortiert nach dem ersten Feld&lt;br /&gt;
  root@zero:~# sort /etc/passwd 	 &lt;br /&gt;
&lt;br /&gt;
Es wird geprüft ob die Datei schon sortiert ist &lt;br /&gt;
 root@zero:~# sort -c /etc/passwd 	&lt;br /&gt;
&lt;br /&gt;
Sortiert nach dem ersten Feld (Richtungsumkehr)  &lt;br /&gt;
 root@zero:~#  sort -r /etc/passwd&lt;br /&gt;
&lt;br /&gt;
Führende Leersortzeichen werden ignoriert &lt;br /&gt;
 root@zero:~# sort -b /etc/passwd&lt;br /&gt;
&lt;br /&gt;
Ausgabe  in die Datei pass&lt;br /&gt;
 root@zero:~# sort  /etc/passwd   -o pass	 &lt;br /&gt;
&lt;br /&gt;
nimmt : als Trenner -Voreinstellung ist TAB&lt;br /&gt;
  root@zero:~# sort -t : /etc/passwd&lt;br /&gt;
&lt;br /&gt;
sortiert nach dem  3 Feld,  der Trenner ist : und es wird nummerisch sortiert&lt;br /&gt;
&lt;br /&gt;
 root@zero:~# sort -t: +2 -n /etc/passwd		&lt;br /&gt;
&lt;br /&gt;
sortiert nach dem  3 Feld,  der Trenner ist : und es wird nummerisch sortiert&lt;br /&gt;
					&lt;br /&gt;
 root@zero:~# sort -t: -k 3 -n /etc/passwd&lt;br /&gt;
&lt;br /&gt;
Sortiert nach dem  3  bis zum 5 Feld, der Trenner ist : und es wird nummerisch sortiert&lt;br /&gt;
	&lt;br /&gt;
 root@zero:~# sort -t: -k 3,5 -n /etc/passwd	&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==INodes==&lt;br /&gt;
Inode (oder I-Node) wird im Deutschen am besten als Informationsknoten oder&lt;br /&gt;
Indexeintrag bezeichnet. Er fasst alle Attribute einer Datei zusammen außer dem Inhalt&lt;br /&gt;
und dem Namen der Datei.&lt;br /&gt;
&lt;br /&gt;
===Daten===&lt;br /&gt;
{| border=1 cellpadding=2&lt;br /&gt;
|type&lt;br /&gt;
|Der Typ der Datei wird als einzelner Buchstabe angezeigt. Der Typ einer Datei wird beim Anlegen der Datei festgelegt&lt;br /&gt;
|-&lt;br /&gt;
|Permissions &lt;br /&gt;
|Die Zugriffsrechte der Datei werden in den 12 Bit sstrwxrwxrwx abgespeichert.Wenn sie gesetzt sind, werden sie bei &lt;br /&gt;
der Ausgabe an Stelle der x-Rechte ausgegeben. Die Zugriffsrechte können mit dem Kommando chmod verändert werden.&lt;br /&gt;
|-&lt;br /&gt;
|link count&lt;br /&gt;
|In UNIX kann eine Datei mehr als einen Namen haben. Der Link Count gibt die Anzahl der Namen einer Datei an. Er kann&lt;br /&gt;
mit dem Kommando ln erhöht und dem Kommando rm erniedrigt werden.&lt;br /&gt;
|-&lt;br /&gt;
|owner&lt;br /&gt;
|Für den Dateieigentümer gelten die in der ersten rwx-Gruppe festgelegten Zugriffsrechte. Standardmäßig ist der &lt;br /&gt;
Eigentümer einer Datei derjenige Benutzer, der die Datei angelegt hat.&lt;br /&gt;
|-&lt;br /&gt;
|group&lt;br /&gt;
|Für Benutzer, die in der gleichen Gruppe sind, der die Datei angehört, gelten die in der zweiten rwx-Gruppe festgelegten&lt;br /&gt;
Zugriffsrechte. In System V gehört eine Datei standardmäßig der Gruppe an, in der der anlegende Benutzer gerade ist.&lt;br /&gt;
|-&lt;br /&gt;
|size&lt;br /&gt;
|Bei normalen Dateien und Verzeichnissen gibt diese Information die Länge der Datei in Byte an.&lt;br /&gt;
|-&lt;br /&gt;
|access time&lt;br /&gt;
|Die Zugriffszeit gibt den Zeitpunkt des letzten Lesezugriffes auf eine Datei an. Aus Effizienzgründen wird die &lt;br /&gt;
Zugriffszeit an Verzeichnissen nicht gesetzt, wenn ein Verzeichnis durchsucht wird, obwohl man dies erwarten könnte. ''(ls -l --time=atime)''&lt;br /&gt;
|-&lt;br /&gt;
|modification time&lt;br /&gt;
|Die Modifikationszeit gibt die Zeit des letzten Schreibzugriffes auf die Daten der Datei an. Intern speichert UNIX &lt;br /&gt;
die Zeit als Sekunden seit Beginn des Jahres 1970 und in GMT ab. Für die Ausgabe wird dies in ein besser lesbares &lt;br /&gt;
Format in der lokalen Zeitzone umgewandelt. ''(ls -l)''&lt;br /&gt;
|-&lt;br /&gt;
|change time &lt;br /&gt;
|Die Veränderungszeit gibt das Datum der letzten Statusänderung der Datei an. Sie wird immer dann gesetzt, wenn die &lt;br /&gt;
Informationen über die Datei sich ändern (Datum der Erzeugung wird nicht gespeichert) ''(ls -lc)''&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
===Dateiarten===&lt;br /&gt;
{| border=1 cellpadding=2&lt;br /&gt;
!Zeichen&lt;br /&gt;
!Typ&lt;br /&gt;
!Zweck&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;nowiki&amp;gt;-&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
|file&lt;br /&gt;
|normale Datei&lt;br /&gt;
|-&lt;br /&gt;
|d&lt;br /&gt;
|directory&lt;br /&gt;
|Verzeichnis&lt;br /&gt;
|-&lt;br /&gt;
|b&lt;br /&gt;
|block device&lt;br /&gt;
|Gerätedatei&lt;br /&gt;
|-&lt;br /&gt;
|c&lt;br /&gt;
|character device&lt;br /&gt;
|Gerätedatei&lt;br /&gt;
|-&lt;br /&gt;
|l&lt;br /&gt;
|link&lt;br /&gt;
|Querverweis&lt;br /&gt;
|-&lt;br /&gt;
|p&lt;br /&gt;
|named pipe&lt;br /&gt;
|Benannte Pipeline&lt;br /&gt;
|-&lt;br /&gt;
|s&lt;br /&gt;
|socket&lt;br /&gt;
|Netzwerkverbindung&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
====Normale Dateien====&lt;br /&gt;
Unter einer normalen Datei versteht man die Ansammlung von Daten. Dies kann ein Text, Programm, Bild oder sonstiges sein. &lt;br /&gt;
Beispiel&lt;br /&gt;
 root@zero:~# ls -l text | cut -c 1&lt;br /&gt;
 -&lt;br /&gt;
&lt;br /&gt;
====Verzeichnisse====&lt;br /&gt;
Dateien werden in Verzeichnissen gespeichert, nur so ist eine Ordnung möglich. &lt;br /&gt;
 root@zero:~# mkdir -v Ordner&lt;br /&gt;
 mkdir: Verzeichnis „Ordner“ angelegt&lt;br /&gt;
 &lt;br /&gt;
 root@zero:~# ls -ld Ordner | cut -c 1&lt;br /&gt;
 d&lt;br /&gt;
&lt;br /&gt;
====Gerätedateien (Block und Char)====&lt;br /&gt;
Gerätedateien ermöglichen Anwendungsprogrammen unter Benutzung des  Kernels den Zugriff auf die Hardwarekomponenten des Systems. Ansprechbar über Major und Minor Nummern &lt;br /&gt;
&lt;br /&gt;
Beispiele&lt;br /&gt;
&lt;br /&gt;
Sicherung des Master Boot Records der ersten Festplatte&lt;br /&gt;
 root@zero:~# dd if=/dev/sda of=/tmp/mbr.img bs=512 count=1&lt;br /&gt;
&lt;br /&gt;
Block Device &lt;br /&gt;
 root@zero:~# ls -l /dev/sda | cut -c 1 &lt;br /&gt;
 b&lt;br /&gt;
&lt;br /&gt;
Character Device &lt;br /&gt;
 root@zero:~# ls -l /dev/ttyS0  | cut -c 1 &lt;br /&gt;
 c&lt;br /&gt;
&lt;br /&gt;
Erstellen einer Gerätedatei&lt;br /&gt;
 root@zero:/dev# mknod sata1 b 8 0 &lt;br /&gt;
 root@zero:/dev# fdisk -l /dev/sata1 &lt;br /&gt;
 &lt;br /&gt;
 Platte /dev/sata1: 6442 MByte, 6442450944 Byte&lt;br /&gt;
 255 Köpfe, 63 Sektoren/Spuren, 783 Zylinder&lt;br /&gt;
 Einheiten = Zylinder von 16065 × 512 = 8225280 Bytes&lt;br /&gt;
 Disk identifier: 0x0005efab&lt;br /&gt;
 &lt;br /&gt;
       Gerät  boot.     Anfang        Ende     Blöcke   Id  System&lt;br /&gt;
 /dev/sata1p1   *           1         743     5968116   83  Linux&lt;br /&gt;
 /dev/sata1p2             744         783      321300    5  Erweiterte&lt;br /&gt;
 /dev/sata1p5             744         783      321268+  82  Linux Swap / Solaris&lt;br /&gt;
&lt;br /&gt;
====Named Pipes====&lt;br /&gt;
Benannte Pipes (Named Pipes) können dagegen auch zur Kommunikation zwischen Prozessen eingesetzt werden, die nicht miteinander&lt;br /&gt;
verwandt sind und sich darüber hinaus auf unterschiedlichen Rechnern innerhalb eines Netzwerkes befinden dürfen. Sie sind &lt;br /&gt;
flexibler als anonyme Pipes und eignen sich für sogenannte Client-Server-Anwendungen (es lassen sich auch RPCs realisieren).&lt;br /&gt;
Benannte Pipes ermöglichen die gleichzeitige Kommunikation in beide Richtungen, das heißt, Daten können im Vollduplexbetrieb &lt;br /&gt;
zwischen den Prozessen ausgetauscht werden.&lt;br /&gt;
 &lt;br /&gt;
Erstelle Named Pipe mit Namen /tmp/roehre. Schreibe &amp;quot;hallo welt&amp;quot; in die Pipe und bleibe&lt;br /&gt;
 xinux@zero:~$ mkfifo /tmp/roehre&lt;br /&gt;
 xinux@zero:~$ echo hallo welt &amp;gt; /tmp/roehre &lt;br /&gt;
&lt;br /&gt;
Gebe Inhalt der Pipe mit cat aus&lt;br /&gt;
 root@zero:~# cat &amp;lt; /tmp/roehre &lt;br /&gt;
 hallo welt&lt;br /&gt;
 root@zero:~# ls -l /tmp/roehre | cut -c 1&lt;br /&gt;
 p&lt;br /&gt;
&lt;br /&gt;
====Sockets====&lt;br /&gt;
Schnittstelle um es lokalen Anwendungen zu ermöglichen, miteinander Netwerkmässig zu kommunizieren.&lt;br /&gt;
&lt;br /&gt;
 root@lydia:~# netstat  -lnxp | tail -1&lt;br /&gt;
  unix  2 [ ACC ] STREAM HÖRT 21951 6646/nm-applet /tmp/orbit-thomas/linc-19f6-0-2b9b81095cede&lt;br /&gt;
&lt;br /&gt;
 root@lydia:~# ls -l /tmp/orbit-thomas/linc-19f6-0-2b9b81095cede  | cut -c 1 &lt;br /&gt;
 s&lt;br /&gt;
&lt;br /&gt;
====Links====&lt;br /&gt;
Bei Links handelt es sich um symbolische Verweise auf andere Dateien&lt;br /&gt;
&lt;br /&gt;
'''Softlink'''&lt;br /&gt;
Ein Softlink ist eine Datei die nur auf den Namen einer anderen Datei verweist. Wenn die Originaldatei gelöscht wird, zeigt &lt;br /&gt;
der Link ins Leere. &lt;br /&gt;
&lt;br /&gt;
 ln -s datei softlink&lt;br /&gt;
&lt;br /&gt;
{| border=1 cellpadding=2&lt;br /&gt;
| Vorteile&lt;br /&gt;
| Symbolische Links können auch auf Verzeichnisse angelegt werden&amp;lt;br&amp;gt;Sie sind partitionsübergreifend&amp;lt;br&amp;gt;Man kann sie auf Dateien anlegen, die noch nicht existieren&lt;br /&gt;
|-&lt;br /&gt;
| Nachteile&lt;br /&gt;
| Wenn das Original gelöscht ist, ist kein Zugriff mehr möglich&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Beispiel&lt;br /&gt;
 root@zero:~# ln -s text verweis&lt;br /&gt;
 root@zero:~# ls -l verweis&lt;br /&gt;
 lrwxrwxrwx 1 root root 4 2009-06-18 15:48 verweis -&amp;gt; text&lt;br /&gt;
&lt;br /&gt;
'''Hardlinks'''&lt;br /&gt;
 ln datei hardlink&lt;br /&gt;
Eigentlich ist jede Datei ein Hardlink. Ein Hardlink ist ein Verzeichniseintrag,&lt;br /&gt;
der auf eine Inode verweist. Beim Erzeugen einer Datei verweist ein Eintrag auf&lt;br /&gt;
eine Inode. Man kann dann weitere Verweise erzeugen. Der Linkcounter wird&lt;br /&gt;
jeweils um 1 erhöht. Beim Löschen einer Datei wird er jeweils um 1 reduziert.&lt;br /&gt;
Wird der Wert 0 erreicht, ist die Datei gelöscht.&lt;br /&gt;
{| border=1 cellpadding=2&lt;br /&gt;
| Vorteile&lt;br /&gt;
|Zugriff auf die Daten, selbst wenn das Orginal gelöscht ist.&lt;br /&gt;
|-&lt;br /&gt;
|Nachteile&lt;br /&gt;
|Man kann keine Hardlinks auf Verzeichnisse anlegen.&lt;br /&gt;
Ist nur innerhalb einer Partion möglich.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Beispiel&lt;br /&gt;
 root@zero:~# touch 1&lt;br /&gt;
 root@zero:~# echo &amp;quot;text&amp;quot; &amp;gt; 1&lt;br /&gt;
 root@zero:~# ln 1 2&lt;br /&gt;
 root@zero:~# more 2&lt;br /&gt;
 text&lt;br /&gt;
 root@zero:~# echo &amp;quot;doch kein text&amp;quot; &amp;gt; 1&lt;br /&gt;
 root@zero:~# more 1&lt;br /&gt;
 doch kein text&lt;br /&gt;
 root@zero:~# more 2&lt;br /&gt;
 doch kein text&lt;br /&gt;
&lt;br /&gt;
Weitere Optionen:&lt;br /&gt;
 -b sichert Dateien, statt sie zu überschreiben &lt;br /&gt;
 -f Überschreibt bestehende, gleichnamige Dateien&lt;br /&gt;
 -i fragt vor dem Überschreiben nach Bestätigung&lt;br /&gt;
 -v ausführliche Meldungen&lt;br /&gt;
Softlink mit dem Namen passwd im Homeverzeichnis angelegt&lt;br /&gt;
 xinux@zero:~$ ln -vs /etc/passwd .&lt;br /&gt;
 „./passwd“ -&amp;gt; „/etc/passwd“&lt;br /&gt;
Softlink mit dem Namen passwd im Homeverzeichnis angelegt(Original exestiert nicht) &lt;br /&gt;
 xinux@zero:~$ ln -vs /etc/hund .&lt;br /&gt;
 „./hund“ -&amp;gt; „/etc/hund“&lt;br /&gt;
Hardlink mit dem Namen hosts im Homeverzeichnis angelegt&lt;br /&gt;
  xinux@zero:~$ ln -v /etc/hosts .&lt;br /&gt;
 „./hosts“ =&amp;gt; „/etc/hosts“&lt;br /&gt;
Auf eine nicht existierende Datei kann kein Hardlink angelegt werden!&lt;br /&gt;
 xinux@zero:~$ ln -v /etc/katze .&lt;br /&gt;
 ln: Zugriff auf „/etc/katze“: No such file or directory&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Prozesse==&lt;br /&gt;
===Was ist ein Prozess?===&lt;br /&gt;
Ein Prozess setzt sich aus zwei Teilen zusammen:&lt;br /&gt;
&lt;br /&gt;
1.Programm, das in den Hauptspeicher geladen wurde&lt;br /&gt;
&lt;br /&gt;
2.Prozessumgebung== Shellsonderzeichen ==&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot; cellpadding=&amp;quot;2&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
|;&lt;br /&gt;
|Trenne Kommandos&lt;br /&gt;
|-&lt;br /&gt;
|. oder source&lt;br /&gt;
|Ausführen wie in aktueller Shell&lt;br /&gt;
|-&lt;br /&gt;
|#&lt;br /&gt;
|Kommentar&lt;br /&gt;
|-&lt;br /&gt;
|&amp;amp;&lt;br /&gt;
|Programm im Hintergrund starten &lt;br /&gt;
|-&lt;br /&gt;
|&amp;amp;&amp;amp;&lt;br /&gt;
|UND -Ausführung  (wenn links wahr dann führe rechts aus)&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;nowiki&amp;gt;|&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
|STOUT von links wird zu STDIN von rechts &lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;nowiki&amp;gt;||&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
|ODER -Ausführung (wenn links falsch dann führe rechts aus)&lt;br /&gt;
|-&lt;br /&gt;
|*&lt;br /&gt;
|steht für beliebig viel Zeichen auch 0 &lt;br /&gt;
|-&lt;br /&gt;
|?&lt;br /&gt;
|steht für genau ein Zeichen &lt;br /&gt;
|-&lt;br /&gt;
|[abc]&lt;br /&gt;
|steht für eins der Zeichen in [ ] hier a b oder c &lt;br /&gt;
|-&lt;br /&gt;
|[ausdruck] &lt;br /&gt;
|Andere Schreibweis für test &lt;br /&gt;
|-&lt;br /&gt;
|~&lt;br /&gt;
|das Homeverzeichnis&lt;br /&gt;
|-&lt;br /&gt;
|&amp;gt;    und    &amp;gt;&amp;gt;&lt;br /&gt;
|leite in Datei um   &amp;gt;  überschreibe     &amp;gt;&amp;gt; hänge an &lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;&lt;br /&gt;
|lesen aus Datei &lt;br /&gt;
|-&lt;br /&gt;
|2&amp;gt;&amp;amp;1&lt;br /&gt;
|leite STDERR auf STDOUT&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;&amp;lt; ende&lt;br /&gt;
|Lesen aus Datei (Heredokument)&lt;br /&gt;
|-&lt;br /&gt;
|(...)&lt;br /&gt;
|Alles inhalb von ( ) wird als Subshell ausgeführt&lt;br /&gt;
|-&lt;br /&gt;
|{...}&lt;br /&gt;
|Gruppieren von Komandos &lt;br /&gt;
|-&lt;br /&gt;
|{ ,  ,  , }&lt;br /&gt;
|Zeichenketten zusammensetzen &lt;br /&gt;
|-&lt;br /&gt;
|$&lt;br /&gt;
|Inhalt von Variablen ausgeben $SUX&lt;br /&gt;
|-&lt;br /&gt;
|$* oder $@&lt;br /&gt;
|Liste der übergebenen Parameter&lt;br /&gt;
|-&lt;br /&gt;
|$# &lt;br /&gt;
|Anzahl der übergebenen Parameter &lt;br /&gt;
|-&lt;br /&gt;
|$0&lt;br /&gt;
|Name des Shellprogramms &lt;br /&gt;
|-&lt;br /&gt;
|$?&lt;br /&gt;
|Rückgabewert des letzten Kommandos &lt;br /&gt;
|-&lt;br /&gt;
|$!  und  $$&lt;br /&gt;
|PID des  $!  = letzten Hintergrund  -  , $$ = aktuellen Prozess&lt;br /&gt;
|-&lt;br /&gt;
|$1 ..$9&lt;br /&gt;
|Parameter 1 bis 9 &lt;br /&gt;
|-&lt;br /&gt;
|$() oder `  `&lt;br /&gt;
|Kommandosubstition&lt;br /&gt;
|-&lt;br /&gt;
|${ }&lt;br /&gt;
|Funktion zur Manipulation von Zeichenketten &lt;br /&gt;
|-&lt;br /&gt;
|$(( )) oder $[ ]&lt;br /&gt;
|Arithmetische Berechnung &lt;br /&gt;
|-&lt;br /&gt;
|&amp;quot;...&amp;quot;&lt;br /&gt;
|Entwertung der Sonderzeichen ausser $ ' \&lt;br /&gt;
|-&lt;br /&gt;
|'...'&lt;br /&gt;
|Entwertung sämtlicher Sonderzeichen ausser ' selbst&lt;br /&gt;
|-&lt;br /&gt;
|\  &lt;br /&gt;
|Entwertung des folgenden Sonderzeichens &lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Unter einem Prozess versteht man ein Programm (binär), das in den Hauptspeicher&lt;br /&gt;
geladen wurde. Also nicht das Program selbst, das auf der Festplatte liegt ist der&lt;br /&gt;
Prozess, sondern es wird erst durch das Laden in den Hauptspeicher dazu.&lt;br /&gt;
Normalerweise liegt ein Programm als ausführbare Datei irgendwo auf der&lt;br /&gt;
Festplatte oder auf Diskette. Ob es sich bei dem Programm um eine binäre Datei&lt;br /&gt;
handelt, kann man mit dem Befehl '' file '' feststellen.&lt;br /&gt;
 &lt;br /&gt;
 root@zero:~# file /bin/mkdir&lt;br /&gt;
 /bin/mkdir: ELF 32-bit LSB executable, Intel 80386, version 1 (SYSV), dynamically linked (uses shared libs), for GNU/Linux 2.6.8, stripped&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Die Datei liegt im Maschinencode vor und kann in den Hauptspeicher geladen&lt;br /&gt;
werden. Sobald dies geschehen ist, kann der Rechner diesen Maschinencode&lt;br /&gt;
abarbeiten (ausführen).&lt;br /&gt;
&lt;br /&gt;
Da aber ein Programm nicht direkt auf die Hardware zugreifen soll, muss es vom&lt;br /&gt;
Betriebsystem kontrolliert werden. Das Betriebssystem liegt logisch gesehen&lt;br /&gt;
zwischen Hardware und Anwendung. Das Betriebssystem ordnet jedem Prozess&lt;br /&gt;
verschiedene Kenndaten zu, um die Prozesse verwalten zu können. Alle&lt;br /&gt;
Kenndaten, die einem Prozess zugeordnet sind, nennt man die&lt;br /&gt;
Prozessumgebung.Wenn man in der Shell ein Kommando eingibt, wird ein Prozess&lt;br /&gt;
kreiert. Natürlich ist die Shell selbst auch ein Prozess. Ein Prozess kann aber&lt;br /&gt;
genauso gut ein Serverprozess (Dienst) sein, z.B. Apache.&lt;br /&gt;
Ein wesentliches Merkmal eines Prozesses ist die Prozesskommunikation. Über im&lt;br /&gt;
Betriebssystem implementierte Methoden ist es möglich, dass verschiedene&lt;br /&gt;
Prozesse Signale und Daten untereinander austauschen können.&lt;br /&gt;
Dadurch wird auch dem Benutzer ermöglicht, einem Prozeß bestimmte Signale zu&lt;br /&gt;
senden bzw. auf den Status eines Prozesses Einfluss zu nehmen.&lt;br /&gt;
&lt;br /&gt;
===Prozesstabelle (Anzeige mit ps)===&lt;br /&gt;
Da zu jedem Prozess Kenndaten geführt werden, müssen diese auch irgendwo&lt;br /&gt;
festgehalten werden. Das geschieht in der sogenannten Prozesstabelle.&lt;br /&gt;
&lt;br /&gt;
Kenndaten der Prozesse (Auswahl):&lt;br /&gt;
* F Flags (z.B. ausgelagert; Systemprozess; Trace,...)&lt;br /&gt;
* UID Nutzer, mit dessen Rechten der Prozess ausgeführt wird&lt;br /&gt;
* PID Prozess - ID. Diese Nummer gibt eine eindeutige Prozess - Nummer&lt;br /&gt;
an. Sie wird vom System automatisch beim Starten des Prozesses&lt;br /&gt;
vergeben und ist für die Laufzeit eindeutig.&lt;br /&gt;
* PPID Prozessnumer der Eltern-Prozesses&lt;br /&gt;
* PRI Priorität eines Prozesses; je niedriger der Wert ist, desto besser&lt;br /&gt;
* NI ist der Nicewert des Prozesses; Nice erniedrigt den Grundwert&lt;br /&gt;
der Priorität des Prozesses und gibt damit Prozessorzeit für andere&lt;br /&gt;
Prozesse frei.&lt;br /&gt;
* SIZE Speichergröße des Prozesses inklusive Stack (eine Art Zwischenspeicher)&lt;br /&gt;
* RSS Verbrauch an physischen Speicher&lt;br /&gt;
* WCHAN ist der Name der Kernerlfunktion, in der der Prozess schläft&lt;br /&gt;
* STAT Status des Prozesses&lt;br /&gt;
R läuft       S schlafend     D nicht störbarer Schlaf&lt;br /&gt;
T angehalten  Z Zombie        W der Prozess belegt keine Seiten&lt;br /&gt;
* TIME Bisland benötigte Prozessorzeit&lt;br /&gt;
* SIZE ist die Größe von Text, Daten und Stack&lt;br /&gt;
* TTY die Nummer des kontrollierenden Teminal; wenn hier ein ? steht,&lt;br /&gt;
handelt es sich um einen Dämon oder Serverprozess.&lt;br /&gt;
* COMMAND Angabe des Prozesses selbst. Dies ist meist der Programmname.&lt;br /&gt;
&lt;br /&gt;
Weiteres&lt;br /&gt;
* GID Gruppe, unter der der Prozess läuft&lt;br /&gt;
* Verweis auf das aktuellen Arbeitsverzeichnis&lt;br /&gt;
* Um mit relativen Pfadangaben arbeiten zu können braucht man diesen Eintrag&lt;br /&gt;
* Tabelle mit Verweisen auf aktuell geöffnete Dateien&lt;br /&gt;
* 3 sind automatisch geöffnet Standardeingabe, Standardausgabe und&lt;br /&gt;
Standardfehlerkanal&lt;br /&gt;
&lt;br /&gt;
Beispiel&lt;br /&gt;
 root@zero:~# ps -l&lt;br /&gt;
 F S   UID   PID  PPID  C PRI  NI ADDR SZ WCHAN  TTY          TIME CMD&lt;br /&gt;
 4 R     0 18639 18631  0  80   0 -  1080 -      pts/0    00:00:00 bash&lt;br /&gt;
 0 R     0 25904 18639  0  80   0 -   635 -      pts/0    00:00:00 ps&lt;br /&gt;
&lt;br /&gt;
===Eltern und Kinder===&lt;br /&gt;
Jeder Prozess kann weitere Prozesse erzeugen. Die erzeugten Prozesse bezeichnet&lt;br /&gt;
man als Kindprozesse. Jeder Kindprozess weiß anhand der PID, woher er stammt.&lt;br /&gt;
&lt;br /&gt;
Alle Prozesse sind von einem anderen Prozess gestartet worden, mit Ausnahme&lt;br /&gt;
des Pseudoprozesses (noch im Kernel beim Starten erzeugter Prozess). Dieser hat&lt;br /&gt;
die Prozessnummer 0. Er hat die Aufgabe, den Init Prozess ( /sbin/init die Nummer&lt;br /&gt;
1) zu starten, der in System V alle anderen Prozesse direkt oder über seine Kind-&lt;br /&gt;
prozesse startet. (init wird konfiguriert durch die /etc/inittab)&lt;br /&gt;
&lt;br /&gt;
Es gibt zwei Arten wie ein Prozess gestartet werden kann:&lt;br /&gt;
&lt;br /&gt;
# Fork und Exec: Prozessumgebung wird dupliziert, der neue Prozess bekommt eine eigene neue PID&lt;br /&gt;
# Exec: Alter Prozess wird durch neuen Prozess überladen (geht mit dem shell-buildin exec)&lt;br /&gt;
&lt;br /&gt;
'''Rechte auf Objekte UID GID'''&lt;br /&gt;
Ob ein Prozess auf eine Datei zugreifen kann, entscheidet der Kernel anhand der&lt;br /&gt;
Zugriffssrechte, die auf der Datei gesetzt sind. Er checkt anhand der UID und GID&lt;br /&gt;
des Prozesses, ob es erlaubt ist. Mit dieser Technik wird letztendlich geprüft, was&lt;br /&gt;
ein User darf, und was nicht.&lt;br /&gt;
&lt;br /&gt;
===Rechenzeit und Priorität===&lt;br /&gt;
Da auch bei Prozessen eine Gerechtigkeit herschen muss, muss eine Instanz&lt;br /&gt;
darüber entscheiden wie lange ein Prozess Rechenzeit verbrauchen darf.&lt;br /&gt;
Folgende Kenndaten werden dazu benötigt&lt;br /&gt;
* clocktick = Zeiteinheit&lt;br /&gt;
* n = Faktor über den Kernel einstellbar&lt;br /&gt;
* slice = n &amp;lt;nowiki&amp;gt;*&amp;lt;/nowiki&amp;gt; clocktick&lt;br /&gt;
* agingtime = weitere Zeiteinheit über den Kernel einstellbar&lt;br /&gt;
&lt;br /&gt;
Es wird davon ausgegangen das der Prozess mit der niedrigsten Priorität gerade&lt;br /&gt;
rechnet. Pro clocktick erhöht sich die Priorität dieses Prozesses um eins.&lt;br /&gt;
&lt;br /&gt;
Jetzt können 3 Situationen eintreten die alle dazu führen das der Scheduler&lt;br /&gt;
aufgerufen wird.&lt;br /&gt;
&lt;br /&gt;
# Prozess blockiert wegen einer Ausgabe oder Eingabe.&lt;br /&gt;
# Gibt Rechenzeit freiwillig ab.&lt;br /&gt;
# Der Slice endet.&lt;br /&gt;
&lt;br /&gt;
Der Aufruf des Schedulers bewirkt das der Prozess mit der niedrigsten Priorität&lt;br /&gt;
gescheduled wird, er also nun rechnen darf. Nach Ablauf der agingtime werden&lt;br /&gt;
nun die Prozesse &amp;quot;gealtert&amp;quot;. Das geschieht nach folgender Formel&lt;br /&gt;
&lt;br /&gt;
Neue Priorität = Alte Priorität / 2 + Nicewert&lt;br /&gt;
&lt;br /&gt;
Der User hat die Möglichkeit, über den sogenannten Nicefaktor den Grundwert für&lt;br /&gt;
einen Prozess zu senken. Der Prozess braucht dann länger für seine Abarbeitung.&lt;br /&gt;
Er verhält sich somit netter zu den anderen Prozessen. Normale User können nur&lt;br /&gt;
netter werden, der Systemverwalter kann auch nicht netter (gemeiner) werden. Der&lt;br /&gt;
Bereich liegt zwischen 19 (sehr nett) bis 0 (weniger nett) für die User, und 19 bis&lt;br /&gt;
-20 für root.&lt;br /&gt;
&lt;br /&gt;
[[Image:pri.png]]&lt;br /&gt;
&lt;br /&gt;
'''Signale'''&lt;br /&gt;
&lt;br /&gt;
Mit den Kommando kill und killall kann man Prozessen Signale schicken&lt;br /&gt;
&lt;br /&gt;
 kill -Signalnummer PID &lt;br /&gt;
&lt;br /&gt;
Signalnummer&lt;br /&gt;
{| border=1 cellpadding=2&lt;br /&gt;
!Signalname&lt;br /&gt;
!Wert&lt;br /&gt;
!Aktion&lt;br /&gt;
|-&lt;br /&gt;
|SIGHUP&lt;br /&gt;
|1&lt;br /&gt;
|Neuinitialisierung eines Prozesses&lt;br /&gt;
|-&lt;br /&gt;
|SIGINT&lt;br /&gt;
|2&lt;br /&gt;
|Interrupt-Signal von der Tastatur (STRG+c)&lt;br /&gt;
|-&lt;br /&gt;
|SIGQUIT&lt;br /&gt;
|3&lt;br /&gt;
|Interrupt-Signal von der Tastatur (STRG+c) mit Dump&lt;br /&gt;
|-&lt;br /&gt;
|SIGKILL&lt;br /&gt;
|9&lt;br /&gt;
|unwiderrufliches Beendigungssignal (Töten)&lt;br /&gt;
|-&lt;br /&gt;
|SIGSEGV&lt;br /&gt;
|11&lt;br /&gt;
|Ungültige Speicherreferenz (bedeutet oft auf defekten Speicher)&lt;br /&gt;
|-&lt;br /&gt;
|SIGTERM &lt;br /&gt;
|15&lt;br /&gt;
|Beendigungssignal (geöffnete Dateien werden geschlossen)&lt;br /&gt;
|-&lt;br /&gt;
|SIGCONT &lt;br /&gt;
|18&lt;br /&gt;
|Weiterfahren, wenn gestoppt&lt;br /&gt;
|-&lt;br /&gt;
|SIGSTOP&lt;br /&gt;
|19&lt;br /&gt;
|Prozessstop&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Beispiel&lt;br /&gt;
 root@zero:~# kill -1 7562&lt;br /&gt;
&lt;br /&gt;
===Programme im Zusammenhang mit Prozessen===&lt;br /&gt;
* ps: Zeigt die Prozesse mit ihrem Status an&lt;br /&gt;
 root@zero:~# ps&lt;br /&gt;
  PID TTY          TIME CMD&lt;br /&gt;
 14134 pts/0    00:00:00 bash&lt;br /&gt;
 14149 pts/0    00:00:00 ps&lt;br /&gt;
&lt;br /&gt;
 root@zero:~# ps -elf | grep apache&lt;br /&gt;
 1 S root      5738     1  0  80   0 -  5461 select Jun16 ?        00:00:00 /usr/sbin/apache2 -k start&lt;br /&gt;
 5 S www-data  5739  5738  0  80   0 -  5581 inet_c Jun16 ?        00:00:00 /usr/sbin/apache2 -k start&lt;br /&gt;
 5 S www-data  5742  5738  0  80   0 -  5461 inet_c Jun16 ?        00:00:00 /usr/sbin/apache2 -k start&lt;br /&gt;
 5 S www-data  5743  5738  0  80   0 -  5461 inet_c Jun16 ?        00:00:00 /usr/sbin/apache2 -k start&lt;br /&gt;
 5 S www-data  5745  5738  0  80   0 -  5461 inet_c Jun16 ?        00:00:00 /usr/sbin/apache2 -k start&lt;br /&gt;
 5 S www-data  5746  5738  0  80   0 -  5461 inet_c Jun16 ?        00:00:00 /usr/sbin/apache2 -k start&lt;br /&gt;
 0 S root     14153 14134  0  80   0 -   837 pipe_w 16:59 pts/0    00:00:00 grep apache&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* nice: Lässt ein Programm mit verändertem Grundwert der Priorität laufen&lt;br /&gt;
 root@zero:~# nice&lt;br /&gt;
 0&lt;br /&gt;
 root@zero:~# nice -n 9 bash&lt;br /&gt;
 root@zero:~# nice&lt;br /&gt;
 9&lt;br /&gt;
 root@zero:~#&lt;br /&gt;
&lt;br /&gt;
* renice: Ändert den Grundwert der Priorität eines laufenden Prozesses&lt;br /&gt;
 root@zero:~# renice 10 5742&lt;br /&gt;
 5742: Alte Priorität: 0, neue Priorität: 10&lt;br /&gt;
&lt;br /&gt;
* top: Zeigt die Prozesse mit ihrem Status an (Abbrechen mit q)&lt;br /&gt;
 root@zero:~# top&lt;br /&gt;
&lt;br /&gt;
* pstree: Zeigt die Prozesse als Baumstruktur&lt;br /&gt;
 root@zero:~# pstree&lt;br /&gt;
 init─┬─NetworkManager&lt;br /&gt;
      ├─acpid&lt;br /&gt;
      ├─apache2───5*[apache2]&lt;br /&gt;
      ├─atd&lt;br /&gt;
      ├─bluetoothd&lt;br /&gt;
      ├─console-kit-dae───63*[{console-kit-dae}]&lt;br /&gt;
      ├─cron&lt;br /&gt;
      ├─cupsd&lt;br /&gt;
      ├─dbus-daemon&lt;br /&gt;
      ├─dd&lt;br /&gt;
      ├─gdm───gdm─┬─Xorg&lt;br /&gt;
      │           └─gdmgreeter&lt;br /&gt;
      ├─6*[getty]&lt;br /&gt;
      ├─hald───hald-runner─┬─hald-addon-acpi&lt;br /&gt;
      │                    ├─hald-addon-inpu&lt;br /&gt;
      │                    └─2*[hald-addon-stor]&lt;br /&gt;
      ├─klogd&lt;br /&gt;
      ├─nm-system-setti&lt;br /&gt;
      ├─nmbd&lt;br /&gt;
      ├─nscd───11*[{nscd}]&lt;br /&gt;
      ├─portmap&lt;br /&gt;
      ├─rpc.statd&lt;br /&gt;
      ├─slapd───2*[{slapd}]&lt;br /&gt;
      ├─smbd───smbd&lt;br /&gt;
      ├─sshd───sshd───bash───bash───pstree&lt;br /&gt;
      ├─syslogd&lt;br /&gt;
      ├─system-tools-ba&lt;br /&gt;
      ├─udevd&lt;br /&gt;
      ├─winbindd─┬─winbindd───winbindd&lt;br /&gt;
      │          └─3*[winbindd]&lt;br /&gt;
      └─wpa_supplicant&lt;br /&gt;
&lt;br /&gt;
===Jobs===&lt;br /&gt;
Unter einem Job versteht man ein Programm, welches man von der Shell gelöst&lt;br /&gt;
hat. D. h. man kann ganz normal weiter arbeiten und der Job verrichtet seinen&lt;br /&gt;
Dienst im Hintergrund. Man kann jederzeit zu diesem Job wieder Kontakt&lt;br /&gt;
aufnehmen.&lt;br /&gt;
&lt;br /&gt;
Ein Job kann auf 2 Arten gestarten werden:&lt;br /&gt;
&lt;br /&gt;
# Durch Anhängen des &amp;amp; Zeichens beim Programmstart&lt;br /&gt;
 root@zero:~# tail -f /var/log/messages &amp;amp;&lt;br /&gt;
 Jun 19 06:59:31 zero -- MARK --&lt;br /&gt;
 Jun 19 07:19:31 zero -- MARK --&lt;br /&gt;
 Jun 19 07:39:32 zero -- MARK --&lt;br /&gt;
 Jun 19 07:44:57 zero syslogd 1.5.0#5ubuntu3: restart.&lt;br /&gt;
 Jun 19 07:59:32 zero -- MARK --&lt;br /&gt;
 Jun 19 08:19:32 zero -- MARK --&lt;br /&gt;
 Jun 19 08:39:32 zero -- MARK --&lt;br /&gt;
 Jun 19 08:59:32 zero -- MARK --&lt;br /&gt;
 Jun 19 09:19:33 zero -- MARK --&lt;br /&gt;
 Jun 19 09:39:33 zero -- MARK --&lt;br /&gt;
 [3] 27421&lt;br /&gt;
&lt;br /&gt;
# Durch Stoppen des Prozesses durch Drücken von Strg-Z und in den Hintergrund schicken mit %n (n ist die Jobnummer)&lt;br /&gt;
 root@zero:~# watch cat /proc/cpuinfo&lt;br /&gt;
 Strg-Z&lt;br /&gt;
 [4]+  Stopped                 watch cat /proc/cpuinfo&lt;br /&gt;
 root@zero:~# bg %4&lt;br /&gt;
 [4]+ watch cat /proc/cpuinfo &amp;amp;&lt;br /&gt;
&lt;br /&gt;
Anweisungen im Zusammenhang mit Jobs (n ist die Jobnummer)&lt;br /&gt;
* bg %n : Einen Job in den Hintergrund stellen (wie oben)&lt;br /&gt;
* fg %n : Einen Job in den Vordergrund holen&lt;br /&gt;
 root@zero:~# fg %4&lt;br /&gt;
 watch cat /proc/cpuinfo&lt;br /&gt;
&lt;br /&gt;
* jobs : Aktive Jobs ausgeben&lt;br /&gt;
&lt;br /&gt;
 root@zero:~# jobs&lt;br /&gt;
 [1]   Running                 tail -f /var/log/syslog &amp;amp;&lt;br /&gt;
 [2]   Running                 tail -f /var/log/syslog &amp;amp;&lt;br /&gt;
 [3]-  Running                 tail -f /var/log/messages &amp;amp;&lt;br /&gt;
 [4]+  Stopped                 watch cat /proc/cpuinfo&lt;br /&gt;
&lt;br /&gt;
* Strg-Z : Einen Vordergrund-Job vorübergehend anhalten&lt;br /&gt;
* kill -STOP %n : Unterbricht Job im Hintergrund&lt;br /&gt;
 root@zero:~# kill -STOP %1&lt;br /&gt;
 root@zero:~# jobs&lt;br /&gt;
 [1]+  '''Stopped'''                 tail -f /var/log/syslog&lt;br /&gt;
 [2]   Running                 tail -f /var/log/syslog &amp;amp;&lt;br /&gt;
 [3]   Running                 tail -f /var/log/messages &amp;amp;&lt;br /&gt;
 [4]-  Stopped                 watch cat /proc/cpuinfo&lt;br /&gt;
* kill -CONT %n : Setzt den unterbrochenen Job im Hintergrund fort&lt;br /&gt;
root@zero:~# kill -CONT %1&lt;br /&gt;
root@zero:~# jobs&lt;br /&gt;
 [1]+  '''Running'''                 tail -f /var/log/syslog &amp;amp;&lt;br /&gt;
 [2]   Running                 tail -f /var/log/syslog &amp;amp;&lt;br /&gt;
 [3]   Running                 tail -f /var/log/messages &amp;amp;&lt;br /&gt;
 [4]-  Stopped                 watch cat /proc/cpuinfo&lt;br /&gt;
* kill -KILL %n : Tötet Job im Hintergrund&lt;br /&gt;
 root@zero:~# kill -KILL %1&lt;br /&gt;
 root@zero:~# jobs&lt;br /&gt;
 [1]+  '''Killed'''                  tail -f /var/log/syslog&lt;br /&gt;
 [2]   Running                 tail -f /var/log/syslog &amp;amp;&lt;br /&gt;
 [3]   Running                 tail -f /var/log/messages &amp;amp;&lt;br /&gt;
 [4]-  Stopped                 watch cat /proc/cpuinfo&lt;br /&gt;
 root@zero:~# jobs&lt;br /&gt;
 [2]   Running                 tail -f /var/log/syslog &amp;amp;&lt;br /&gt;
 [3]-  Running                 tail -f /var/log/messages &amp;amp;&lt;br /&gt;
 [4]+  Stopped                 watch cat /proc/cpuinfo&lt;br /&gt;
&lt;br /&gt;
Bedingungen, die zu Jobausführung eingehalten werden sollen:&lt;br /&gt;
* Der Job soll nicht auf den Bildschirm schreiben (Standardausgabe +Standardfehlerkanal).&lt;br /&gt;
* Er soll keine Eingaben vom Benutzer erwarten.&lt;br /&gt;
&lt;br /&gt;
==Suchen von Dateien==&lt;br /&gt;
===find===&lt;br /&gt;
 find ab_wo_wird_gesucht was_wird_gesucht aktion&lt;br /&gt;
 find [Pfad] [Bedingung] [Aktion]&lt;br /&gt;
&lt;br /&gt;
====Nach Namen====&lt;br /&gt;
 find [Pfad] '''-name''' [Name]&lt;br /&gt;
 &lt;br /&gt;
Finde alle Dateien mit Namen test ab dem Verzeichnis /home und gebe diese Zeilenweise aus&lt;br /&gt;
 root@zero:~# find /home -name test -print&lt;br /&gt;
 /home/xinux/test&lt;br /&gt;
 /home/test&lt;br /&gt;
&lt;br /&gt;
Wie oben, jedoch mit Namensanfang test&lt;br /&gt;
 root@zero:/home/xinux# find /home -name 'test*'&lt;br /&gt;
 /home/xinux/testdatei&lt;br /&gt;
 /home/xinux/test&lt;br /&gt;
 /home/test&lt;br /&gt;
&lt;br /&gt;
====Nach Benutzer(Eigentümer)====&lt;br /&gt;
 root@zero:/tmp# find /tmp/ '''-user''' xinux&lt;br /&gt;
 /tmp/datei&lt;br /&gt;
&lt;br /&gt;
====Nach Gruppe====&lt;br /&gt;
 root@zero:/tmp# find /tmp/ '''-group''' hacker&lt;br /&gt;
 /tmp/datei3&lt;br /&gt;
 /tmp/datei2&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
====Nach Typ====&lt;br /&gt;
Es wird nach Dateien anhand Ihrer Art gesucht:&lt;br /&gt;
 find [Pfad] '''-type''' [Typ] &lt;br /&gt;
Typ:&lt;br /&gt;
* f: Normale Dateien&lt;br /&gt;
 root@zero:~# find /tmp/ -type f&lt;br /&gt;
 /tmp/mbr.img&lt;br /&gt;
 /tmp/datei&lt;br /&gt;
 /tmp/zeugs&lt;br /&gt;
 /tmp/.X0-lock&lt;br /&gt;
* d: Verzeichnisse&lt;br /&gt;
 root@zero:~# find /var/log -type d&lt;br /&gt;
 /var/log&lt;br /&gt;
 /var/log/apache2&lt;br /&gt;
 /var/log/unattended-upgrades&lt;br /&gt;
 /var/log/apparmor&lt;br /&gt;
 /var/log/ConsoleKit&lt;br /&gt;
 /var/log/dist-upgrade&lt;br /&gt;
 /var/log/dist-upgrade/20090526-1052&lt;br /&gt;
 /var/log/cups&lt;br /&gt;
 /var/log/apt&lt;br /&gt;
 /var/log/fsck&lt;br /&gt;
 /var/log/samba&lt;br /&gt;
 /var/log/samba/cores&lt;br /&gt;
 /var/log/samba/cores/smbd&lt;br /&gt;
 /var/log/samba/cores/nmbd&lt;br /&gt;
 /var/log/samba/cores/winbindd&lt;br /&gt;
 /var/log/installer&lt;br /&gt;
 /var/log/gdm&lt;br /&gt;
 /var/log/news&lt;br /&gt;
* c: Char Devices (Zeichenorientierte Gerätedatei)&lt;br /&gt;
 root@zero:~# find / -type c&lt;br /&gt;
 /lib/udev/devices/kmem&lt;br /&gt;
 /lib/udev/devices/null&lt;br /&gt;
 /lib/udev/devices/console&lt;br /&gt;
 /lib/udev/devices/ppp&lt;br /&gt;
 /lib/udev/devices/net/tun&lt;br /&gt;
* b: Block Devices (Blockorientierte Gerätedatei)&lt;br /&gt;
* p: Benannte Pipe&lt;br /&gt;
* l: Links&lt;br /&gt;
* s: Sockets&lt;br /&gt;
&lt;br /&gt;
====Nach Modifikation====&lt;br /&gt;
Listet alle Dateien in /etc auf, die innerhalb von zwei Tagen modifiziert wurden&lt;br /&gt;
 root@zero:/var/log# find /etc/ -mtime 2 -print&lt;br /&gt;
 /etc/apache2&lt;br /&gt;
 /etc/apache2/mods-available&lt;br /&gt;
 /etc/apache2/conf.d&lt;br /&gt;
 /etc/apache2/sites-available&lt;br /&gt;
 /etc/bash_completion.d&lt;br /&gt;
 /etc/blkid.tab.old&lt;br /&gt;
 /etc/firefox-3.0/profile&lt;br /&gt;
 /etc/firefox-3.0/profile/chrome&lt;br /&gt;
 /etc/firefox-3.0/pref&lt;br /&gt;
 /etc/profile.d&lt;br /&gt;
 /etc/ufw/applications.d&lt;br /&gt;
 /etc/logrotate.d&lt;br /&gt;
 /etc/xulrunner-1.9&lt;br /&gt;
 /etc/blkid.tab&lt;br /&gt;
 /etc/cron.daily&lt;br /&gt;
 /etc/alternatives&lt;br /&gt;
 /etc/alternatives/x-www-browser&lt;br /&gt;
 /etc/alternatives/xulrunner&lt;br /&gt;
 /etc/gre.d&lt;br /&gt;
 /etc/hal/fdi/policy&lt;br /&gt;
 /etc/dbus-1/system.d&lt;br /&gt;
 /etc/udev/rules.d&lt;br /&gt;
&lt;br /&gt;
====Nach Größe====&lt;br /&gt;
Finde Dateien in /tmp, die größer als 100 MByte sind&lt;br /&gt;
 root@zero:/tmp# find /tmp/ -size +100M&lt;br /&gt;
 /tmp/datei&lt;br /&gt;
&lt;br /&gt;
Finde Dateien in /tmp, die kleiner als 100 KByte sind&lt;br /&gt;
 root@zero:/tmp# find /tmp/ -size -100k&lt;br /&gt;
 /tmp/&lt;br /&gt;
 /tmp/datei3&lt;br /&gt;
 /tmp/backup &lt;br /&gt;
 /tmp/datei2&lt;br /&gt;
 /tmp/.winbindd &lt;br /&gt;
 /tmp/.winbindd/pipe&lt;br /&gt;
 /tmp/mbr.img&lt;br /&gt;
 /tmp/zeugs&lt;br /&gt;
 /tmp/.ICE-unix&lt;br /&gt;
 /tmp/.X0-lock&lt;br /&gt;
 /tmp/datei1&lt;br /&gt;
 /tmp/.X11-unix&lt;br /&gt;
 /tmp/.X11-unix/X0&lt;br /&gt;
 /tmp/pulse-PKdhtXMmr18n&lt;br /&gt;
&lt;br /&gt;
====Nach Berechtigungen====&lt;br /&gt;
Finde Dateien in Home mit der Berechtigung 777 (-rwxrwxrwx)&lt;br /&gt;
 root@zero:/var# find /home/ -perm 777&lt;br /&gt;
 /home/samba&lt;br /&gt;
 /home/xinux/Examples&lt;br /&gt;
 /home/xinux/.pulse/1f0763ee4cf4c7e1d3c07fd149dda37b:runtime&lt;br /&gt;
 /home/test/Examples&lt;br /&gt;
&lt;br /&gt;
===locate===&lt;br /&gt;
Locate arbeitet über einen Index, der erstellt und aktualisiert werden muss. Aus diesem Grund kann locate teilweise nicht &lt;br /&gt;
akutell sein. Es ist immer schneller als find und es durchsucht immer das ganze Dateisystem. &lt;br /&gt;
 locate [Dateiname]&lt;br /&gt;
 &lt;br /&gt;
Lokalisiere die Datei wvdial.conf. Anmerkung: Der Stern wird beim Suchen automatisch hinzugefügt. Entspricht also&lt;br /&gt;
wvidal.conf*&lt;br /&gt;
 root@zero:~# locate wvdial.conf&lt;br /&gt;
 /etc/wvdial.conf&lt;br /&gt;
 /usr/share/man/man5/wvdial.conf.5.gz&lt;br /&gt;
 /var/lib/dpkg/info/wvdial.conffiles&lt;br /&gt;
 /var/lib/dpkg/info/wvdial.config&lt;br /&gt;
&lt;br /&gt;
Lokalisiere die Datei wvdial.conf und nur diese&lt;br /&gt;
 root@zero:~# locate -b '\wvdial.conf'&lt;br /&gt;
 /etc/wvdial.conf&lt;br /&gt;
&lt;br /&gt;
Aktualisieren des Indexes&lt;br /&gt;
 root@zero:~# updatedb&lt;br /&gt;
&lt;br /&gt;
==Wie wird ein Kommando lokalisiert==&lt;br /&gt;
Wenn die Shell alle Ersetzungen in der Kommandozeile vorgenommen und alle Umleitungen vorbereitet hat, ist der Zeitpunkt &lt;br /&gt;
gekommen, auf den der Anwender die ganze Zeit gewartet hat. Die Shell versucht das Kommando auszuführen. Dazu muss sie &lt;br /&gt;
es aber erst lokalisieren. Das erste passende Kommando wird ausgeführt.&lt;br /&gt;
&lt;br /&gt;
Als Kommandoname wird immer das erste Wort eines einfachen Kommandos erkannt. Ein Kommandoname kann mit Pfadnamen in &lt;br /&gt;
einem Verzeichnis (absolut oder relativ) angegeben werden. Die Shell erkennt dies an (mindestens) einem Slash `/' &lt;br /&gt;
im Kommandonamen. Wenn kein Verzeichnis angegeben ist, versucht die Shell selbst, das Kommando zu finden. Dazu wird &lt;br /&gt;
der Kommandoname zuerst in der Hashtabelle gesucht, dann wird er mit den Synonymen, mit den Scriptfunktionen und &lt;br /&gt;
schließlich mit den Shellfunktionen verglichen. &lt;br /&gt;
&lt;br /&gt;
Wird auf diese Weise kein Programm dieses Namens gefunden, werden alle in der PATH-Umgebungsvariablen aufgeführten &lt;br /&gt;
Verzeichnisse nach einer ausführbaren Datei dieses Namens durchsucht. Wird auch hier kein passendes Kommando gefunden, &lt;br /&gt;
gibt die Shell eine Fehlermeldung aus.&lt;br /&gt;
&lt;br /&gt;
===which und type===&lt;br /&gt;
====which====&lt;br /&gt;
which gibt die vollen Pfadnamen der Dateien aus, die bei Benutzung des angegebenen Befehls ausgeführt werden würden.&lt;br /&gt;
&lt;br /&gt;
 which [-a] Dateiname &lt;br /&gt;
&lt;br /&gt;
Optionen:&lt;br /&gt;
&lt;br /&gt;
* -a : Alle Treffer ausgeben, nicht nur den ersten&lt;br /&gt;
* --skip-dot : Verzeichnisse, die mit einem Punkt beginnen, auslassen&lt;br /&gt;
&lt;br /&gt;
Beispiel&lt;br /&gt;
 root@zero:~# which startx&lt;br /&gt;
 /usr/bin/startx&lt;br /&gt;
&lt;br /&gt;
====type====&lt;br /&gt;
Anzeigen der absoluten Pfadnamen von Befehlen, und ob sich diese Befehle in der Hash-Tabelle der aktuellen&lt;br /&gt;
Shell befinden.&lt;br /&gt;
&lt;br /&gt;
 type [Optionen] Befehle&lt;br /&gt;
&lt;br /&gt;
Beispiel&lt;br /&gt;
 root@zero:~# type ls&lt;br /&gt;
 ls is aliased to `ls --color=auto'&lt;br /&gt;
&lt;br /&gt;
Optionen:&lt;br /&gt;
&lt;br /&gt;
* -a : Alle vorkommenden Befehle werden ausgegeben, nicht nur das, welches aufgerufen werden würde&lt;br /&gt;
 root@zero:~# type '''-a''' ls&lt;br /&gt;
 ls is aliased to `ls --color=auto'&lt;br /&gt;
 ls is /bin/ls&lt;br /&gt;
&lt;br /&gt;
* -p : Anzeigen des Eintrags von Befehl in der Hash-Tabelle. Dieser Wert kann sich vom ersten Auftreten des Befehls in PATH&lt;br /&gt;
unterscheiden&lt;br /&gt;
 root@zero:~# type '''-p''' apache2&lt;br /&gt;
 /usr/sbin/apache2&lt;br /&gt;
&lt;br /&gt;
* -t : Anzeigen, ob Befehl ein Aliasname, ein Schlüsselwort, eine Funktion, ein eingebauter Befehl oder eine Datei ist&lt;br /&gt;
 root@zero:~# type '''-t''' apache2&lt;br /&gt;
 file&lt;/div&gt;</summary>
		<author><name>192.168.178.46</name></author>
	</entry>
	<entry>
		<id>https://www.xinux.net/index.php?title=Linux_Grundlagen&amp;diff=85</id>
		<title>Linux Grundlagen</title>
		<link rel="alternate" type="text/html" href="https://www.xinux.net/index.php?title=Linux_Grundlagen&amp;diff=85"/>
		<updated>2009-07-07T10:55:56Z</updated>

		<summary type="html">&lt;p&gt;192.168.178.46: /* Links */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Einführung==&lt;br /&gt;
===Geschichte Unix===&lt;br /&gt;
====1969====&lt;br /&gt;
Am Anfang von Linux steht Multics, ein von Bell Laboratories geschaffenes &amp;quot;Betriebssystem&amp;quot;, &lt;br /&gt;
das noch mit Lochkarten arbeitete. Multics wird mit Unterstützung von AT&amp;amp;T und Western &lt;br /&gt;
Electric unter Mitarbeit von Ken Thompson und Dennis Ritchie weiterentwickelt. Obwohl sich &lt;br /&gt;
Bell Laboratories bald zurückzieht, gibt Thompson das Projekt nicht auf.  Zum Entwicklerteam &lt;br /&gt;
gehören auch Rudd Canaday und Brian Kernighan. Letzterer gibt 1970 dem Betriebssystem den Namen UNIX. &lt;br /&gt;
Thompson definiert 7 Richtlinien für UNIX:&lt;br /&gt;
 &lt;br /&gt;
# Hierarchische Anordnung der Dateisysteme&lt;br /&gt;
# Die Ausgabe von Daten an die Peripherie(-geräte) und Dateien soll gleich sein.&lt;br /&gt;
# Prozesse und Programme sollen miteinander kommunizieren.&lt;br /&gt;
# Multitasking (voneinander getrennte Prozesse)&lt;br /&gt;
# Persönliche Shell's&lt;br /&gt;
# Der Compiler soll für viele Programmiersprachen tauglich sein.&lt;br /&gt;
# Portabilität&lt;br /&gt;
&lt;br /&gt;
====1971====&lt;br /&gt;
Bis 1971 ist das für eine DEC PDP-7 geschriebene Unix als Version 1 auf eine PDP-11 portiert. Bis&lt;br /&gt;
zur Version 4 entwickelt Ritchie die Programmier- (Hoch-) Sprache C. Das in Assembler geschriebene&lt;br /&gt;
Unix wird fast völlig nach C übersetzt, wodurch zum erstenmal die geforderte Hardware-Unabhängigkeit&lt;br /&gt;
des Betriebssystems realisiert werden kann.&lt;br /&gt;
&lt;br /&gt;
====1975====&lt;br /&gt;
Da AT&amp;amp;T aufgrund vertraglicher Bindungen mit der US-Bundesregierung Unix nicht kommerziell vermarkten darf, stellt sie den Source Code für ein paar hundert Dollar den Universitäten, Lehr- und Forschungsanstalten zur Verfügung. Dies führt zu einer sehr dynamischen Entwicklung von Unix. 1975 wird die Version 6 als erstes UNIX-System veröffentlicht, die darauffolgende Version 7 wird sehr erfolgreich. Da es keine Standardisierung gibt, entwickeln bald verschiedenste Firmen ihr eigenes UNIX. Ab 1984 wird AT&amp;amp;T per Gerichtsbeschluss erlaubt, Unix zu vermarkten. AT&amp;amp;T verkauft sein Unix V und beginnt, sich um einen internationalen Standard von UNIX zu bemühen. &lt;br /&gt;
&lt;br /&gt;
====1984====&lt;br /&gt;
Durch Richard Stallman wird die Free Software Foundation (FSF) gegründet. Diese initiiert ein Projekt namens GNU (GNU ist Not Unix), welches das Ziel verfolgt, ein freies UNIX System zu schaffen. &lt;br /&gt;
&lt;br /&gt;
====1987====&lt;br /&gt;
AT&amp;amp;T verbietet die Verwendung des Unix Quellcodes an den Universitäten. Während dieser Zeit ist Andrew (Andy) Tannenbaum Professor an der Freien Universität von Amsterdam und entwickelt Minix. Minix ist ein kostengünstiges Lehrbetriebssystem und kommt ohne jeglichen AT&amp;amp;T Code aus, obwohl es die gleiche Funktionalität wie Unix 7 bietet. Im Usenet unter comp.os.minix entsteht eine Minix-Gemeinde, die den Minix Kernel und die Anwendungen rundherum programmiert und verbessert.&lt;br /&gt;
&lt;br /&gt;
====1991====&lt;br /&gt;
Linus Torvalds hat als Student für Computerwissenschaften an der Universität in Helsinki Minix installiert und das Buch von Andy Tannenbaum gelesen. Er beginnt im Sinne der FSF einen Unix ähnlichen Kernel zu programmieren mit der Idee, &amp;quot;ein besseres Minix als Minix&amp;quot; zu bauen. 1992 stellt er die Version 0.02 mit dem Namen Linux der Internetgemeinde zur Verfügung. &lt;br /&gt;
&lt;br /&gt;
====1994====&lt;br /&gt;
Die Linux Version 1.0 wird freigegeben. Das Linux Fieber beginnt... &lt;br /&gt;
&lt;br /&gt;
====1998====&lt;br /&gt;
Der Kreis der Linux Entwickler und Anwender ist kräftig angeschwollen. KDE 1.0 wird veröffentlicht. Die Zuwachsraten von Linux übertreffen die von Windows NT deutlich. &lt;br /&gt;
&lt;br /&gt;
====1999====&lt;br /&gt;
Der lange erwartete stabile Linux Kernel Version 2.2 wird freigegeben. Namhafte Firmen wie IBM kündigen ihre Unterstützung für Linux an. &lt;br /&gt;
&lt;br /&gt;
====2001====&lt;br /&gt;
Der lange erwartete stabile Linux Kernel Version 2.4 wird freigegeben. USB Unterstützung und eine neue Firewallimplementierung zeichnen ihn aus.&lt;br /&gt;
&lt;br /&gt;
====2003====&lt;br /&gt;
Linux Kernel Version 2.6 wird freigegeben. Am auffälligsten sind Änderungen bei der Modulverwaltung.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Distributionen===&lt;br /&gt;
{| Border=1 Cellpadding=2&lt;br /&gt;
| &lt;br /&gt;
|Url&lt;br /&gt;
|Paketformat&lt;br /&gt;
|-&lt;br /&gt;
|Red Hat&lt;br /&gt;
|www.redhat.com&lt;br /&gt;
|rpm&lt;br /&gt;
|-&lt;br /&gt;
|fedora&lt;br /&gt;
|fedora.redhat.com&lt;br /&gt;
|rpm&lt;br /&gt;
|-&lt;br /&gt;
|CentOS&lt;br /&gt;
|www.centos.org&lt;br /&gt;
|rpm&lt;br /&gt;
|-&lt;br /&gt;
|Suse/openSUSE&lt;br /&gt;
|www.opensuse.org&lt;br /&gt;
|rpm&lt;br /&gt;
|-&lt;br /&gt;
|Debian&lt;br /&gt;
|www.debian.org&lt;br /&gt;
|deb&lt;br /&gt;
|-&lt;br /&gt;
|Ubuntu&lt;br /&gt;
|www.ubuntu.com&lt;br /&gt;
|deb&lt;br /&gt;
|-&lt;br /&gt;
|Mandrake&lt;br /&gt;
|www.linux-mandrake.com&lt;br /&gt;
|rpm&lt;br /&gt;
|-&lt;br /&gt;
|Easy Linux&lt;br /&gt;
|www.easy-linux.de&lt;br /&gt;
|rpm&lt;br /&gt;
|-&lt;br /&gt;
|Turbo&lt;br /&gt;
|www.turbolinux.com&lt;br /&gt;
|rpm&lt;br /&gt;
|-&lt;br /&gt;
|minis&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|toms&lt;br /&gt;
|www.toms.net/rb&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|damn small linux&lt;br /&gt;
|www.damnsmalllinux.org&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|pocket-linux&lt;br /&gt;
|www.pocket-linux.org&lt;br /&gt;
|&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
====Bücher====&lt;br /&gt;
 Titel : Das Linux Anwenderhandbuch und Leitfaden für die Systemverwaltung&lt;br /&gt;
 Autor : Sebastian Hetze, Dirk Hohndel, Olaf Kirch und Martin Müller&lt;br /&gt;
 Verlag: Lunetix&lt;br /&gt;
 ISBN : 3-929764-06-7&lt;br /&gt;
&lt;br /&gt;
 Titel : Linux in a Nutshell&lt;br /&gt;
 Autor : Jessica Perry Hekman und die Mitarbeiter von O'Reilly &amp;amp; Associates&lt;br /&gt;
 Verlag: O'Reilly&lt;br /&gt;
 ISBN : 3-930673-57-6&lt;br /&gt;
&lt;br /&gt;
 Titel : Linux - Wegweiser zur Installation und Konfiguration&lt;br /&gt;
 Autor : Matt Welsh, Lar Kaufman, Matthias Kalle Dallheimer&lt;br /&gt;
 Verlag: O'Reilly&lt;br /&gt;
 ISBN : 3-930673-58-4 (deutsch), 1-56592-469-X (englisch)&lt;br /&gt;
&lt;br /&gt;
 Titel : Linux - Installation, Konfiguration, Anwendung&lt;br /&gt;
 Autor : Michael KoflerMultitasking&lt;br /&gt;
 Verlag: Addison-Wesley&lt;br /&gt;
 ISBN : 3-8273-1475-5&lt;br /&gt;
&lt;br /&gt;
 Titel : Linux - Wegweiser für Netzwerker&lt;br /&gt;
 Autor : Olaf Kirch&lt;br /&gt;
 Verlag: O'Reilly&lt;br /&gt;
 ISBN : 3-930673-18-5&lt;br /&gt;
&lt;br /&gt;
 Titel : TCP/IP-Netzwerk-Administration&lt;br /&gt;
 Autor : Craig Hunt&lt;br /&gt;
 Verlag: O'Reilly&lt;br /&gt;
 ISBN : 3-89721-110-6&lt;br /&gt;
&lt;br /&gt;
 Titel : Essential System Administration&lt;br /&gt;
 Autor : Eleen Frisch&lt;br /&gt;
 Verlag: O'Reilly&lt;br /&gt;
 ISBN : 1-56592-127-5&lt;br /&gt;
&lt;br /&gt;
==Betriebssystem==&lt;br /&gt;
===Was ist ein Betriebssystem?===&lt;br /&gt;
&lt;br /&gt;
Ein Betriebssystem liegt logisch gesehen zwischenAnwendungsprogramm und Hardware.&lt;br /&gt;
&lt;br /&gt;
Es nimmt die Anforderungen der Anwendungsprogramme entgegen und leitet&lt;br /&gt;
diese kontrolliert an die Hardware weiter. Kein Anwendungsprogramm sollte&lt;br /&gt;
direkt auf die Hardware zugreifen können. Den zentralen Zugang schafft einzig&lt;br /&gt;
das Betriebssystem. Somit kann das Betriebssystem unsinnige Anforderungen&lt;br /&gt;
oder Bedienungsfehler abblocken.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Image:Linux.jpg]]&lt;br /&gt;
&lt;br /&gt;
===Aufgaben eines Betriebssystems===&lt;br /&gt;
&lt;br /&gt;
# Verbergen der Komplexität der Maschine vor dem Anwender (Abstraktion)&lt;br /&gt;
# Bereitstellen einer Benutzerschnittstelle (&amp;quot;Kommandointerpreter&amp;quot;, &amp;quot;Shell&amp;quot;)&lt;br /&gt;
# Bereitstellen einer normierten Programmierschnittstelle (API)&lt;br /&gt;
# Verwaltung der Ressourcen der Maschine::&lt;br /&gt;
Hauptspeicher&lt;br /&gt;
Prozessor(en)&lt;br /&gt;
Hintergrundspeicher (Platte, Band, etc.)&lt;br /&gt;
Geräte (Terminal, Drucker, Plotter, etc.)&lt;br /&gt;
Rechenzeit&lt;br /&gt;
Koordination von Prozessen&lt;br /&gt;
&lt;br /&gt;
===Aufbau eines Betriebssystems===&lt;br /&gt;
&lt;br /&gt;
Ein Rechensystem besteht aus Hardware, Systemprogrammen und Anwendungs-&lt;br /&gt;
programmen. Unter einem Betriebssystem wird meist die Summe aus Betriebs-&lt;br /&gt;
systemkern (Kernel) und den wichtigsten Systemprogrammen verstanden. Ein&lt;br /&gt;
minimaler LINUX-Kernel besitzt ungefähr eine Größe von 400 - 800 kByte.&lt;br /&gt;
Weitere wichtige Systemkomponenten benötigen zusätzlich 10 - 100 Mbyte&lt;br /&gt;
Plattenplatz.&lt;br /&gt;
&lt;br /&gt;
Ein Betriebssystem stellt den Rechner als erweiterte Maschine (virtuelle&lt;br /&gt;
Maschine) über definierte Software-Schnittstellen zur Verfügung.&lt;br /&gt;
Das Betriebssystem dient als Betriebsmittelverwalter, der Anforderungen&lt;br /&gt;
befriedigt, protokolliert, abrechnet und vermittelt.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Aufgaben des Betriebssystemkerns:&lt;br /&gt;
&lt;br /&gt;
{| Border=1 Cellpadding=2&lt;br /&gt;
|Prozessverwaltung  (dispatching and scheduling)&lt;br /&gt;
| Mehrere Benutzer können mit mehreren Aktionen gleichzeitig im System arbeiten, ohne sich gegenseitig zu beeinflussen. Damit dies möglich ist,  müssen die Aktionen organisiert, koordiniert und verwaltet werden. Die zu verwaltende Einheit nennt man Prozess.&lt;br /&gt;
|-&lt;br /&gt;
|Speicherverwaltung   (memory management)&lt;br /&gt;
|Zuteilen von Speicherbereichen an laufende Prozesse, Schutz der Speicherbereiche vor unbefugten Zugriffen, bei Speicherengpässen: Auslagern von ganzen (swapping) oder von Teilen (paging) von Prozessen auf die Platte (swap file).&lt;br /&gt;
|-&lt;br /&gt;
|Dateiverwaltung  (file handling)&lt;br /&gt;
|Zuteilung von Plattenplatz für Programme, Benutzer und Systemdienste, Schreiben, Lesen und Strukturieren der Daten auf den Massenspeichern; Durch Bereitstellung einer entsprechenden Schnittstelle (VFS, virtual file system) kann der Kern Dateisysteme unterschiedlichster Art (EXT2, FAT, NFS, HPFS, NTFS, ...) ansprechen.&lt;br /&gt;
|-&lt;br /&gt;
|Geräteverwaltung  (resource management)&lt;br /&gt;
|Der Kern ermöglicht und kontrolliert den Zugriff auf die Hardware. Er steuert die Ein- und Ausgabetätigkeiten der Anwender. An den Kern&lt;br /&gt;
gebunden sind die entsprechenden Gerätetreiber (device driver), die damit eine Kommunikation zwischen Kern und Hardware ermöglichen.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
===Multitasking===&lt;br /&gt;
&lt;br /&gt;
Multitasking bedeutet, dass ein Rechner aus Anwendersicht mehrere Aufgaben&lt;br /&gt;
(Tasks) gleichzeitg übernehmen kann. Das Betriebssystem (OS) unterteilt die&lt;br /&gt;
gleichzeitig anstehenden Aufgaben in Einzelarbeitsschritte (Prozesse) und&lt;br /&gt;
managed durch ein Zeitscheibenverfahren (scheduling) die gleichmäßige&lt;br /&gt;
Abarbeitung der Prozesse.&lt;br /&gt;
&lt;br /&gt;
Es wird unterschieden zwischen:&lt;br /&gt;
&lt;br /&gt;
*non-präamptiven (kooperativen=die Ressourcen werden vom aktiven Prozess freigegeben, bei einem Hänger steht das ganze System)&lt;br /&gt;
&lt;br /&gt;
und&lt;br /&gt;
&lt;br /&gt;
*präamptiven (reinem=der Betriebssystemkern steuert Taskwechsel, indem nach einer festgelegten Zeit vom gerade aktiven Prozess zum nächsten weitergeschaltet wird)&lt;br /&gt;
&lt;br /&gt;
===Mehrprozessorbetrieb===&lt;br /&gt;
&lt;br /&gt;
Bei mehreren Prozessoren und Unterstützung durch das OS&lt;br /&gt;
(NT,Linux,Unix,Novell) können mehrere Tasks auf diese verteilt werden und&lt;br /&gt;
gleichzeitig bearbeitet werden. Nachteilig ist, dass dies nicht oder kaum von&lt;br /&gt;
Anwendungsprogrammen unterstützt wird und es zu Kommunikationsproblemen&lt;br /&gt;
zwischen den einzelnen Tasks kommen kann.&lt;br /&gt;
&lt;br /&gt;
===Arten von von Betriebssystemen===&lt;br /&gt;
&lt;br /&gt;
{|Border=1 Cellpadding=2&lt;br /&gt;
|&lt;br /&gt;
|SingleUser  &lt;br /&gt;
|Multiuser&lt;br /&gt;
|-&lt;br /&gt;
|Single Tasking&lt;br /&gt;
|MS - DOS&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|Multi Tasking&lt;br /&gt;
|Windows 3.x&lt;br /&gt;
|UNIX&lt;br /&gt;
|-&lt;br /&gt;
|&lt;br /&gt;
|Windows 95/98&lt;br /&gt;
|Linux&lt;br /&gt;
|-&lt;br /&gt;
|&lt;br /&gt;
|Windows NT4 ohne Erweiterungen&lt;br /&gt;
|VMS&lt;br /&gt;
|-&lt;br /&gt;
|&lt;br /&gt;
|OS/2 &lt;br /&gt;
|Windows NT mit  Erweiterungen&lt;br /&gt;
|-&lt;br /&gt;
|&lt;br /&gt;
|Apple&lt;br /&gt;
|Windows 2000, XP, 2003&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
===SHELL===&lt;br /&gt;
&lt;br /&gt;
Wenn man mit Linux arbeiten will, kann man nicht direkt mit dem Betriebssystem&lt;br /&gt;
kommunizieren. Man braucht dazu ein Hilfsprogramm, welches die&lt;br /&gt;
Kommandoeingaben ordnungsgemäß an das Betriebssystem weiterleitet. Dieses&lt;br /&gt;
Hilfsprogramm hat den Namen Shell.&lt;br /&gt;
&lt;br /&gt;
Die Shell schirmt den Betriebssystemkern von den Anwendungsprogrammen ab.&lt;br /&gt;
Die unterschiedlichen Shells erfüllen alle dieselbe Aufgabe, sie unterscheiden sich&lt;br /&gt;
allerdings in ihrer Syntax.&lt;br /&gt;
&lt;br /&gt;
==Die Installation im Überblick==&lt;br /&gt;
&lt;br /&gt;
Die Installation von Linux geschieht in folgenden Schritten:&lt;br /&gt;
&lt;br /&gt;
# Analyse (Welche Hardware habe ich? ,Hab ich weitere Betriebsysteme?)&lt;br /&gt;
# Booten des Linux-Kernels. (von CD oder Diskette)&lt;br /&gt;
# Laden einer RAM-Disk (das macht das Installationsprogramm automatisch).&lt;br /&gt;
# Partitionieren der Festplatte (fdisk).&lt;br /&gt;
# Einrichten der Swappartition (mkswap), Formatieren der Festplatte (mkfs).&lt;br /&gt;
# Montieren der Dateisysteme (mount), Aktivieren der Swapbereiche (swapon).&lt;br /&gt;
# Kopieren und Auspacken der Daten vom Installationsmedium auf die Festplatte (die eigentliche Installation). (rpm, dpkg oder tar).&lt;br /&gt;
# Geeignete Wahl der Bootmethode unter Berücksichtigung von Punkt 1 (grub, lilo).&lt;br /&gt;
# Konfiguration des Systems (Netz, Modem etc...).&lt;br /&gt;
&lt;br /&gt;
==Erste Schritte==&lt;br /&gt;
===Anmelden===&lt;br /&gt;
Sie können sich nun mit dem Usernamen und dem Passwort, das sie bei der Installation angelegt haben anmelden!&lt;br /&gt;
[[Image:benutzer.jpg]]&lt;br /&gt;
&lt;br /&gt;
[[Image:passwd.jpg]]&lt;br /&gt;
&lt;br /&gt;
===Terminal öffnen===&lt;br /&gt;
&lt;br /&gt;
Ein Terminal öffnen Sie über das Startmenü:&lt;br /&gt;
&lt;br /&gt;
[[Image:Terminalde.jpg]]&lt;br /&gt;
&lt;br /&gt;
Das geöffnete Terminal sieht dann folgendermaßen aus:&lt;br /&gt;
&lt;br /&gt;
[[Image:Terminalde2.jpg]]&lt;br /&gt;
&lt;br /&gt;
===Sudo===&lt;br /&gt;
Rootrechte erlangen sie über den &amp;quot;Sudo&amp;quot;-Befehl&lt;br /&gt;
 &lt;br /&gt;
''Den nächsten Befehl als root ausführen''&lt;br /&gt;
 xinux@zero:~$ sudo cat /etc/shadow&lt;br /&gt;
 [sudo] password for xinux:&lt;br /&gt;
&lt;br /&gt;
''Eine komplette Sitzung als root starten''&lt;br /&gt;
 xinux@zero:~$ sudo -i&lt;br /&gt;
 [sudo] password for xinux:&lt;br /&gt;
 root@zero:~#&lt;br /&gt;
&lt;br /&gt;
===Virtuelle Konsolen===&lt;br /&gt;
&lt;br /&gt;
In die Virtuelle Konsole gelangen sie über &amp;quot;STRG+ALT+(F1-F6)&amp;quot;.&lt;br /&gt;
Sie funktioniert wie ein ganz normales Terminal, und mit &amp;quot;ALT+F7&amp;quot;&lt;br /&gt;
gelangen sie wieder zurück auf die grafische Benutzeroberfläche&lt;br /&gt;
&lt;br /&gt;
===Abmelden===&lt;br /&gt;
&lt;br /&gt;
Abmelden können Sie sich wieder über das Startmenu unter:&lt;br /&gt;
&lt;br /&gt;
[[Image:Logout.jpg]]&lt;br /&gt;
&lt;br /&gt;
Fals sie nur einzelne Sitzungen in einem der Terminals oder &lt;br /&gt;
den Virtuellen Konsolen Abmelden wollen benutzen sie dazu den Befehl: &amp;quot;exit&amp;quot;&lt;br /&gt;
&lt;br /&gt;
===Herunterfahren===&lt;br /&gt;
&lt;br /&gt;
Das Herunterfahren funktioniert auf dem selben Weg.&lt;br /&gt;
&lt;br /&gt;
Entweder sie Benutzen wieder das Startmenü und benutzen diesmal den &amp;quot;Ausschalten ...&amp;quot; Knopf,&lt;br /&gt;
&lt;br /&gt;
Oder sie geben den äquivalenten &amp;quot;shutdown&amp;quot;-Befehl in einem Terminal bzw. der virtuellen Konsole ein.&lt;br /&gt;
&lt;br /&gt;
Allerdings müssen sie dazu als Administrator angemeldet sein s. &amp;quot;Sudo&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Wenn Sie den &amp;quot;shutdown&amp;quot;-Befehl benutzen wollen muss hinter den Befehl&lt;br /&gt;
&lt;br /&gt;
eine Zeitangabe in Minuten oder das wort &amp;quot;now&amp;quot; für sofortiges Ausschalten hinzugefügt werden:&lt;br /&gt;
&lt;br /&gt;
 xinux@zero:~$ sudo -i&lt;br /&gt;
 root@zero:~# shutdown 60&lt;br /&gt;
 &lt;br /&gt;
 Broadcast message from xinux@zero &lt;br /&gt;
         (/dev/pts/3) at 14:29 ...&lt;br /&gt;
 &lt;br /&gt;
 The system is going down for maintenance in 60 minutes!&lt;br /&gt;
&lt;br /&gt;
Sollten sie den Befehl widerrufen wollen dann drücken sie &amp;quot;STRG+C&amp;quot;,&lt;br /&gt;
&lt;br /&gt;
in dem Terminal in dem der shutdown Befehl gestartet wurde,&lt;br /&gt;
&lt;br /&gt;
oder geben sie den &amp;quot;shutdown&amp;quot;-Befehl zusammen mit der Abbruchoption &amp;quot;-c&amp;quot; in einem anderen Terminal ein:&lt;br /&gt;
&lt;br /&gt;
 root@zero:~# shutdown -c&lt;br /&gt;
&lt;br /&gt;
 shutdown: Shutdown cancelled&lt;br /&gt;
 root@zero:~# &lt;br /&gt;
&lt;br /&gt;
Wenn Sie den Rechner Neustarten möchten gibt es dazu die Option &amp;quot;-r&amp;quot; für den &amp;quot;shutdown&amp;quot;-Befehl&lt;br /&gt;
&lt;br /&gt;
oder den &amp;quot;reboot&amp;quot;-Befehl die beide auch als root ausgeführt werden müssen:&lt;br /&gt;
&lt;br /&gt;
 xinux@zero:~$ sudo -i&lt;br /&gt;
 [sudo] password for xinux: &lt;br /&gt;
 root@zero:~# shutdown -r now&lt;br /&gt;
&lt;br /&gt;
 root@zero:~# reboot&lt;br /&gt;
&lt;br /&gt;
===&amp;quot;man&amp;quot;===&lt;br /&gt;
&lt;br /&gt;
Programm zum Einsehen der Online-Manuals&lt;br /&gt;
&lt;br /&gt;
Die Manuals sind in folgende Sektionen unterteilt:&lt;br /&gt;
# Ausführbare Programme oder Shellbefehle&lt;br /&gt;
# Systemaufrufe (Kernelfunktionen)&lt;br /&gt;
# Bibliotheksaufrufe (Funktionen in System-Bibliotheken)&lt;br /&gt;
# Spezielle Dateien (gewöhnlich in /dev)&lt;br /&gt;
# Dateiformate und Konventionen, z. B. /etc/passwd&lt;br /&gt;
# Spiele&lt;br /&gt;
# Makropakete und Konventionen, z. B. man(7), groff(7)&lt;br /&gt;
# Systemadministrationsbefehle (in der Regel nur für root)&lt;br /&gt;
# Kernelroutinen [Nicht Standard]&lt;br /&gt;
&lt;br /&gt;
Aufruf eines Manuals erfolgt durch ''man kommando''&lt;br /&gt;
Beendet wird durch Drücken des Buchstabens q&lt;br /&gt;
Gesucht wird vorwärts durch Eingabe eines /suchausdruck&lt;br /&gt;
Gesucht wird rückwärts durch Eingabe eines ?suchausdruck&lt;br /&gt;
&lt;br /&gt;
Beispiele:&lt;br /&gt;
&lt;br /&gt;
      man passwd        Anschauen der Manualseite zum Programm passwd&lt;br /&gt;
      man 5 passwd      Anschauen der Manualseite zur Datei /etc/passwd&lt;br /&gt;
      man -a passwd     Anschauen aller Manualseiten zu passwd&lt;br /&gt;
      man -k passwd     Durchsucht die Kurzbeschreibungen der Manualseite&lt;br /&gt;
                        nach passwd und gibt alle Treffer aus&lt;br /&gt;
      man -f passwd      Gibt alle gefunden Kurzbescheibungen zu passwd aus&lt;br /&gt;
      man -L en passwd Gibt englische Manualseiten aus&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Was geht vor auf meinem System? (date,who)===&lt;br /&gt;
&lt;br /&gt;
Das Kommando date dient zur Abfrage von Datum und Uhrzeit.&lt;br /&gt;
&lt;br /&gt;
 xinux@zero:~ &amp;gt; date&lt;br /&gt;
 Fre Mär 16 16:35:03 CET 2001&lt;br /&gt;
&lt;br /&gt;
oder auch Anzeige der Grennwich Zeit:&lt;br /&gt;
&lt;br /&gt;
 xinux@zero:~ &amp;gt; date -u&lt;br /&gt;
 Fre Mär 16 15:35:34 UTC 2001&lt;br /&gt;
&lt;br /&gt;
 xinux@zero:~ &amp;gt; date -u &amp;quot;+%X&amp;quot;&lt;br /&gt;
 15:37:19&lt;br /&gt;
&lt;br /&gt;
 xinux@zero:~ &amp;gt; date -u &amp;quot;+%x&amp;quot;&lt;br /&gt;
 01/15/02&lt;br /&gt;
&lt;br /&gt;
who zeigt alle angemeldeten Benutzer an&lt;br /&gt;
&lt;br /&gt;
 thomas@cardassia:~ &amp;gt; who&lt;br /&gt;
 thomas             tty1 Feb 27 16:39&lt;br /&gt;
 thomas             tty2 Mar 2 17:08&lt;br /&gt;
 tina               tty6 Mar 16 16:38&lt;br /&gt;
&lt;br /&gt;
Mit `who --help' bekommen Sie mehr Informationen.&lt;br /&gt;
&lt;br /&gt;
 thomas@cardassia:~ &amp;gt; who --help&lt;br /&gt;
&lt;br /&gt;
Benutzung: who [OPTION]... [ DATEI | ARG1 ARG2 ]&lt;br /&gt;
&lt;br /&gt;
 -H, --heading             print line of column headings&lt;br /&gt;
 -i, -u, --idle            add user idle time as HOURS:MINUTES, . or old&lt;br /&gt;
 -l, --lookup              attempt to canonicalize hostnames via DNS&lt;br /&gt;
 -m                        only hostname and user associated with stdin&lt;br /&gt;
 -q, --count               all login names and number of users logged on&lt;br /&gt;
 -s                        (ignored)&lt;br /&gt;
 -T, -w, --mesg            add user's message status as +, - or ?&lt;br /&gt;
     --message             same as -T&lt;br /&gt;
     --writable            same as -T&lt;br /&gt;
     --help                display this help and exit&lt;br /&gt;
     --version             output version information and exit&lt;br /&gt;
&lt;br /&gt;
==Das UNIX-Dateisystem==&lt;br /&gt;
===Verzeichnisbaum===&lt;br /&gt;
&lt;br /&gt;
[[Image:vztree.jpg]]&lt;br /&gt;
&lt;br /&gt;
Das Betriebssystem UNIX besitzt ein hierarchisches Dateisystem. Es besteht aus:&lt;br /&gt;
* Dateien (Files)&lt;br /&gt;
Dateien speichern Informationen (Text, Bilder, Sound, Videos, Programme) und&lt;br /&gt;
werden über den Dateinamen angesprochen.&lt;br /&gt;
&lt;br /&gt;
* Verzeichnissen (Directories, Kataloge)&lt;br /&gt;
Verzeichnisse besitzen ebenfalls einen Namen und dienen zur Ordnung des&lt;br /&gt;
Dateisystems. Ein Verzeichnis kann Dateien und Unterverzeichnisse&lt;br /&gt;
(Subdirectories) enthalten. Das oberste Verzeichnis im Dateisystem heisst&lt;br /&gt;
Rootverzeichnis oder kurz Root und wird durch / (sprich: slash)&lt;br /&gt;
gekennzeichnet.&lt;br /&gt;
&lt;br /&gt;
Im Gegensatz zu Windows kennt UNIX keine Laufwerke.&lt;br /&gt;
Das obige Bild zeigt ein typisches UNIX-Dateisystem.&lt;br /&gt;
Unterhalb des Rootverzeichnisses befinden sich eine Vielzahl vonVerzeichnissen.&lt;br /&gt;
&lt;br /&gt;
===Wichtige Verzeichnisse===&lt;br /&gt;
&lt;br /&gt;
• '''Homeverzeichnis'''&lt;br /&gt;
&lt;br /&gt;
das Verzeichnis, in dem man sich unmittelbar nach dem Anmelden befindet. Das&lt;br /&gt;
Homeverzeichnis wird vom Systemverwalter eingerichtet; jeder Anwender&lt;br /&gt;
besitzt ein festes Homeverzeichnis. z.B. /home/hans&lt;br /&gt;
&lt;br /&gt;
~ (Tilde) bzw. $HOME (Shellvariable) kennzeichnen das Homeverzeichnis.&lt;br /&gt;
&lt;br /&gt;
• '''Aktuelles Verzeichnis'''&lt;br /&gt;
&lt;br /&gt;
Verzeichnis, in dem man sich aktuell befindet.&lt;br /&gt;
Das aktuelle Verzeichnis wird mit dem Befehl cd (change directory) oder per&lt;br /&gt;
Mausklick verändert.&lt;br /&gt;
Ein einfacher Punkt . kennzeichnet das aktuelle Verzeichnis.&lt;br /&gt;
&lt;br /&gt;
• '''Elternverzeichnis'''&lt;br /&gt;
&lt;br /&gt;
Verzeichnis unmittelbar oberhalb des aktuellen Verzeichnisses.&lt;br /&gt;
Jedes Verzeichnis ausser / besitzt genau ein Elternverzeichnis.&lt;br /&gt;
Zwei Punkte .. kennzeichnen das Elternverzeichnis (abhängig vom aktuellen&lt;br /&gt;
VZ).&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Absoluter Pfadname:===&lt;br /&gt;
&lt;br /&gt;
Beschreibt ausgehend vom Rootverzeichnis den Weg zum Zielverzeichnis oder zur&lt;br /&gt;
Zieldatei. (Welche Verzeichnisse müssen ausgehend von / durchlaufen werden, um&lt;br /&gt;
zum Ziel zu kommen?) Ein absoluter Pfadname beginnt immer mit / .&lt;br /&gt;
&lt;br /&gt;
===Relativer Pfadname:===&lt;br /&gt;
&lt;br /&gt;
Beschreibt ausgehend vom aktuellen Verzeichnis den Weg zum Zielverzeichnis&lt;br /&gt;
oder zur Zieldatei; ein relativer Pfadname beginnt nicht mit / .&lt;br /&gt;
/home/suxer&lt;br /&gt;
absoluter Pfadname für das Verzeichnis sub1 im Homeverzeichnis von suxer&lt;br /&gt;
&lt;br /&gt;
===Verzeichnisstruktur===&lt;br /&gt;
&lt;br /&gt;
 /bin         Kommandos die beim starten benötigt werden (Zugriff hat jeder)&lt;br /&gt;
 /sbin        Wichtige System-Programme (In der Regel root vorberhalten)&lt;br /&gt;
 /boot        Hier findet man die Dateien des Bootmanagers und des Kernel.&lt;br /&gt;
 /dev         In diesem Verzeichnis stehen die Gerätedateien (Devices),&lt;br /&gt;
 /home        Alle Heimatverzeichnisse der Nutzer findet man hier.&lt;br /&gt;
 /lib         Beim Systemstart benötigten Bibliotheken und Modules stehen hier.&lt;br /&gt;
 /mnt         Mountpunkt für temporäre Partitionen&lt;br /&gt;
 /opt         Software, die nicht Installationsumfang von Linux gehören.&lt;br /&gt;
 /root        Heimatverzeichnis des Administrators.&lt;br /&gt;
 /tmp         Temporäre Dateien können hier abgelegt werden&lt;br /&gt;
 /usr         statische Dateien (kann read-only gemountet sein)&lt;br /&gt;
 /var         variable Dateien (muss beschreibar sein )&lt;br /&gt;
 /etc         Konfiguartionsdateien und Startscripte&lt;br /&gt;
 /proc        Virtuelles Dateisystem -&amp;gt; repräsentiert den Kernel&lt;br /&gt;
&lt;br /&gt;
===Unterverzeichnisse von /usr===&lt;br /&gt;
&lt;br /&gt;
 sbin         Programme für root die beim Start nicht benötigt werden&lt;br /&gt;
 bin          Programme für alle die beim Start nicht benötigt werden&lt;br /&gt;
 X11R6        Dateien des X-Window-Sytems&lt;br /&gt;
 bin          Ausführbare Programme&lt;br /&gt;
 doc          Dokumentationen&lt;br /&gt;
 etc          Konfigurationsdateien&lt;br /&gt;
 games        Spiele&lt;br /&gt;
 include      Headerdateien für C-Programme&lt;br /&gt;
 local        Pakete die nicht zur Distribution gehören ähnlich /opt&lt;br /&gt;
 share        Pakete die von mehreren Paketen genutzt werden&lt;br /&gt;
 share/man    Die Manualpages&lt;br /&gt;
 share/info   Seiten des Infosystems&lt;br /&gt;
 share/doc    Dokumentationen&lt;br /&gt;
 src          Sources von Programmen (Kernel und andere)&lt;br /&gt;
&lt;br /&gt;
===Unterverzeichnisse von /var===&lt;br /&gt;
&lt;br /&gt;
 cache        Zwischenspreicher für Progammes&lt;br /&gt;
 games        Variable Daten der Games (Scores etc...)&lt;br /&gt;
 lock         Sperrdateien&lt;br /&gt;
 log          Die Logdateien (wichtiges Verzeichnis für Admins)&lt;br /&gt;
 mail         Das Mailsystem&lt;br /&gt;
 run          Dateien zu laufemdem Prozessen&lt;br /&gt;
 spool        Spooldateien (z.B. für das Drucksystem&lt;br /&gt;
 state        Statusinfos&lt;br /&gt;
 tmp          Wie /tmp eventuell nicht auf root Partion&lt;br /&gt;
&lt;br /&gt;
==Einfache Komandos==&lt;br /&gt;
===cd: Wechseln des Arbeitsverzeichnis===&lt;br /&gt;
&lt;br /&gt;
Um festzustellen in welchem Verzeichnis man sich befindet, sollte man den&lt;br /&gt;
Befehl &amp;quot;pwd&amp;quot; benutzen,&lt;br /&gt;
&lt;br /&gt;
und mit dem Befehl &amp;quot;cd&amp;quot; kann man zwischen den Verzeichnissen wechseln:&lt;br /&gt;
&lt;br /&gt;
Wechsele ins homeverzeichnis von Xinux&lt;br /&gt;
&lt;br /&gt;
 xinux@zero:~$ cd /home/xinux/&lt;br /&gt;
 xinux@zero:~$ pwd&lt;br /&gt;
 /home/xinux&lt;br /&gt;
&lt;br /&gt;
cd ~ -&amp;gt; wechsele ins jeweilige Homeverzeichnis&lt;br /&gt;
&lt;br /&gt;
cd .. -&amp;gt; wechsele ein Verzeichnis höher&lt;br /&gt;
&lt;br /&gt;
cd ../verzeichnis -&amp;gt; wechsele in eine paralleles Verzeichnis &amp;lt;- (ist eine relative Pfadangabe !)&lt;br /&gt;
&lt;br /&gt;
cd - -&amp;gt; wechsele in das Verzeichnis, in dem vorher gearbeitet wurde.&lt;br /&gt;
&lt;br /&gt;
Mit cd / wechselt man in das Wurzelverzeichnis.&lt;br /&gt;
&lt;br /&gt;
 xinux@zero:/var/log$ cd /&lt;br /&gt;
 xinux@zero:/$ pwd&lt;br /&gt;
 /&lt;br /&gt;
&lt;br /&gt;
===ls: Listing===&lt;br /&gt;
&lt;br /&gt;
Den Inhalt von Verzeichnissen kann man sich mit dem Befehl &amp;quot;ls&amp;quot; anzeigen lassen&lt;br /&gt;
wobei &amp;quot;ls&amp;quot; eine Vielzahl von Optionen besitzt:&lt;br /&gt;
&lt;br /&gt;
 ls                                  standard&lt;br /&gt;
 ls -l                               langes listing&lt;br /&gt;
 ls -a                               alle Dateien&lt;br /&gt;
 ls -i                               mit Inode&lt;br /&gt;
 ls -h                               gut lesbare Dateigröße&lt;br /&gt;
 ls -d                               Verzechnis wird angezeigt, nicht der Inhalt&lt;br /&gt;
 ls -L                               sortiert nach Größe&lt;br /&gt;
 ls -t                               sortiert nach Datum&lt;br /&gt;
 ls -F                               mit nützlichem Anhang&lt;br /&gt;
&lt;br /&gt;
 xinux@zero:/$ ls -l /var/log/messages&lt;br /&gt;
 -rw-r----- 1 syslog adm 2296 2009-06-16 10:05 /var/log/messages&lt;br /&gt;
&lt;br /&gt;
===more: Seitenweises Anzeigen von Seiten===&lt;br /&gt;
 root@zero:~# more /var/log/messages&lt;br /&gt;
 ...&lt;br /&gt;
&lt;br /&gt;
===head: erste Zeilen anzeigen===&lt;br /&gt;
Erste 10 Zeilen anzeigen&lt;br /&gt;
 root@zero:~# head /var/log/messages&lt;br /&gt;
 Jun 15 12:37:08 zero syslogd 1.5.0#5ubuntu3: restart.&lt;br /&gt;
 Jun 15 12:38:43 zero kernel: [  830.065036] mtrr: your processor doesn't support write-combining&lt;br /&gt;
 Jun 15 12:46:05 zero pulseaudio[4817]: pid.c: Stale PID file, overwriting.&lt;br /&gt;
 Jun 15 13:05:24 zero -- MARK --&lt;br /&gt;
 ...&lt;br /&gt;
&lt;br /&gt;
Erste zwei Zeilen anzeigen&lt;br /&gt;
 root@zero:~# head -n 2 /var/log/messages&lt;br /&gt;
 Jun 15 12:37:08 zero syslogd 1.5.0#5ubuntu3: restart.&lt;br /&gt;
 Jun 15 12:38:43 zero kernel: [  830.065036] mtrr: your processor doesn't support write-combining&lt;br /&gt;
&lt;br /&gt;
===tail: letzte Zeilen anzeigen===&lt;br /&gt;
 &lt;br /&gt;
 root@zero:~# tail /var/log/syslog&lt;br /&gt;
 ...&lt;br /&gt;
 Jun 19 11:19:35 zero -- MARK --&lt;br /&gt;
 Jun 19 11:39:35 zero -- MARK --&lt;br /&gt;
 Jun 19 11:59:36 zero -- MARK --&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Letze 5 Zeilen anzeigen&lt;br /&gt;
 root@zero:~# tail -n 5 /var/log/auth.log&lt;br /&gt;
 Jun 18 14:30:01 zero CRON[12040]: pam_unix(cron:session): session closed for user root&lt;br /&gt;
 Jun 18 14:39:01 zero CRON[12191]: pam_unix(cron:session): session opened for user root by (uid=0)&lt;br /&gt;
 Jun 18 14:39:01 zero CRON[12191]: pam_unix(cron:session): session closed for user root&lt;br /&gt;
 Jun 18 14:40:01 zero CRON[12237]: pam_unix(cron:session): session opened for user root by (uid=0)&lt;br /&gt;
 Jun 18 14:40:01 zero CRON[12237]: pam_unix(cron:session): session closed for user root&lt;br /&gt;
&lt;br /&gt;
Letze Zeilen anzeigen und fortlaufend aktualisieren&lt;br /&gt;
 root@zero:~# tail -f /var/log/syslog&lt;br /&gt;
 ...&lt;br /&gt;
&lt;br /&gt;
===mkdir: Ein neues Verzeichnis erstellen===&lt;br /&gt;
&lt;br /&gt;
 mkdir        verzeichnis&lt;br /&gt;
Erstellt ein Verzeichnis im working directory (wd)&lt;br /&gt;
&lt;br /&gt;
 mkdir  -p    ver1/ver2&lt;br /&gt;
Erstellt ein Verzeichnis ver2 unterhalb von ver1&lt;br /&gt;
wenn ver1 nicht existiert wird es erstellt&lt;br /&gt;
&lt;br /&gt;
 mkdir -m 753 ver1&lt;br /&gt;
Es wird das Verzeichnis ver1 erstellt mit der mask 753&lt;br /&gt;
&lt;br /&gt;
 mkdir -v     ver1&lt;br /&gt;
Geschwätzige Ausgabe :)&lt;br /&gt;
&lt;br /&gt;
===Zum Löschen von leeren Verzeichnissen wird rmdir benutzt===&lt;br /&gt;
&lt;br /&gt;
 rmdir           ver1&lt;br /&gt;
Löscht das leere Verzeichnis ver1&lt;br /&gt;
&lt;br /&gt;
 rmdir -v        ver1&lt;br /&gt;
Löscht das leere Verzeichnis ver1 und ist geschwätzig&lt;br /&gt;
&lt;br /&gt;
 rmdir -p        /ver1/ver2/ver3&lt;br /&gt;
Löscht das Verzeichnis ver3; wenn dadurch ver2 ein leeres&lt;br /&gt;
Verzeichnis wird, wird dieses auch gelöscht , wenn ver1&lt;br /&gt;
dadurch ein leeres Verzeichnis wird, wird auch dieses gelöscht.&lt;br /&gt;
&lt;br /&gt;
===touch Verändern des Zeitstempels===&lt;br /&gt;
&lt;br /&gt;
Mit touch können wir eine neue leere Datei erzeugen (das ist nicht der eigentliche&lt;br /&gt;
Zweck von touch, eigentlich wird der Zeitstempel geändert)&lt;br /&gt;
&lt;br /&gt;
 touch            dateiname&lt;br /&gt;
&lt;br /&gt;
===Kopieren=== &lt;br /&gt;
cp ist das Kommando um Dateien zu kopieren &lt;br /&gt;
&lt;br /&gt;
Eine Kopie von dat1 mit dem Namen dat2 erstellen:&lt;br /&gt;
&lt;br /&gt;
 xinux@zero:~$ cp dat1 dat2&lt;br /&gt;
&lt;br /&gt;
Eine Kopie von dat1 ins Verzeichnis ver2 erstellen:&lt;br /&gt;
&lt;br /&gt;
 xinux@zero:~$ cp dat1 ver2/&lt;br /&gt;
 &lt;br /&gt;
Eine Kopie erstellen mit ausführlicher Anzeige:&lt;br /&gt;
&lt;br /&gt;
 xinux@zero:~$ cp -v dat1 dat2&lt;br /&gt;
 `dat1' -&amp;gt; `dat2'&lt;br /&gt;
&lt;br /&gt;
Eine Kopie erstellen mit Rückfrage fals etwas überschrieben wird:&lt;br /&gt;
&lt;br /&gt;
 xinux@zero:~$ cp -i dat1 dat2&lt;br /&gt;
 cp: overwrite `dat2'?&lt;br /&gt;
&lt;br /&gt;
Eine Kopie erstellen und die Rückfrage überbrücken:&lt;br /&gt;
&lt;br /&gt;
 xinux@zero:~$ cp -f dat1 dat2&lt;br /&gt;
&lt;br /&gt;
Eine Kopie von dat1 ins Verzeichnis ver2 erstellen fals keine neuere Version von dat1 vorliegt:&lt;br /&gt;
&lt;br /&gt;
 xinux@zero:~$ cp -u dat1 ver2/&lt;br /&gt;
&lt;br /&gt;
Eine Kopie erstellen fals ver2 auf dem selben Dateisystem wie dat1 liegt:&lt;br /&gt;
&lt;br /&gt;
 xinux@zero:~$ cp -x dat1 ver2/&lt;br /&gt;
&lt;br /&gt;
Eine Kopie von ver1, die als ver2 oder unter ver2 als ver1 gespeichert wird erstellen:&lt;br /&gt;
&lt;br /&gt;
 xinux@zero:~$ cp -r ver1/ ver2/&lt;br /&gt;
&lt;br /&gt;
Eine Kopie von einer Datei erstellen und ihre Attribute beibehalten:&lt;br /&gt;
&lt;br /&gt;
 xinux@zero:~$ cp -p sux1 sux2&lt;br /&gt;
&lt;br /&gt;
Eine Kopie erstellen bei der die Links erhalten bleiben:&lt;br /&gt;
&lt;br /&gt;
 xinux@zero:~$ cp -r ver1/ ver2/&lt;br /&gt;
&lt;br /&gt;
Eine Kopie erstellen zum Archivieren (-dpr):&lt;br /&gt;
&lt;br /&gt;
 xinux@zero:~$ cp -a ver1/ ver2/&lt;br /&gt;
&lt;br /&gt;
===rm: Löschen einer Datei===&lt;br /&gt;
&lt;br /&gt;
Um Dateien zu löschen, brauchen wir das Kommando &amp;quot;rm&amp;quot;:&lt;br /&gt;
&lt;br /&gt;
 rm               dat1        dat1 wird gelöscht&lt;br /&gt;
 rm         -i    dat1        dat1 wird nach Bestätigung gelöscht&lt;br /&gt;
 rm         -f    dat1        dat1 wird ohne Rückfragen gelöscht&lt;br /&gt;
 rm         -v    dat1        dat1 wird glöscht (geschwätzige Ausgabe)&lt;br /&gt;
 rm         -r    ver1        Löschen von nicht leeren Verzeichnissen&lt;br /&gt;
                              Achtung !!! Als root kann man sich damit Teile&lt;br /&gt;
                              oder sogar den gesamten Verzeichnisbaum&lt;br /&gt;
                              absägen !!!&lt;br /&gt;
&lt;br /&gt;
===mv: Verschieben===&lt;br /&gt;
&lt;br /&gt;
Mit dem Befehl &amp;quot;mv&amp;quot; werden Daten verschoben, folgendes gilt:&lt;br /&gt;
&lt;br /&gt;
 mv          dat1 dat2         &lt;br /&gt;
Die Datei dat1 wird in dat2 umbenannt&lt;br /&gt;
 mv          dat1 /ver1        &lt;br /&gt;
Die Datei dat1 wird nach /ver1 verschoben&lt;br /&gt;
&lt;br /&gt;
Die Parameter und ihre Bedeutung:&lt;br /&gt;
&lt;br /&gt;
      -i                      wenn eine Datei exisitiert wird vor dem&lt;br /&gt;
                              Überschreiben nachgefragt&lt;br /&gt;
      -v                      verbose (geschwätzig)&lt;br /&gt;
      -u                      nur neuere Daten werden bei Bedarf überschrieben&lt;br /&gt;
      -b                      wenn überschrieben werden soll, wird ein Backup&lt;br /&gt;
                              erstellt&lt;br /&gt;
      -S ENDUNG               das Backup bekommt die Endung ENDUNG&lt;br /&gt;
&lt;br /&gt;
===su Benutzer wechseln===&lt;br /&gt;
&lt;br /&gt;
 su -             &lt;br /&gt;
Wechsel zum Rootaccount, wie wenn dieser sich neu anmelden würde. (Bsp: su -)&lt;br /&gt;
&lt;br /&gt;
 su Benutzernamen &lt;br /&gt;
Wechsel der Identität zu Benutzer (gegebenenfalls Passwortabfrage)&lt;br /&gt;
&lt;br /&gt;
 su -c Kommando   &lt;br /&gt;
Kommando wird als rootaccount ausgeführt&lt;br /&gt;
&lt;br /&gt;
==Der Standard Editor vi==&lt;br /&gt;
Der vi ist der Standardeditor in der Unixwelt. Er ist in jedem Unix-Derivat&lt;br /&gt;
enthalten.&lt;br /&gt;
Der Editor hat zwar den schlechten Ruf umständlich zu bedienen zu sein, ist&lt;br /&gt;
jedoch sehr leistungsfähig und systemübergreifend verfügbar. Beim vi handelt es&lt;br /&gt;
sich um einen rein textorientierten Editor, der mittels eigener Kommandos&lt;br /&gt;
gesteuert wird.&lt;br /&gt;
&lt;br /&gt;
Der Editor VIM ist eine weitere Verbesserung von VI und leichter zu bedienen.&lt;br /&gt;
Und unter Ubuntu/Debian mit &amp;quot;apt-get install vim&amp;quot; zu installieren.&lt;br /&gt;
&lt;br /&gt;
===Starten des Editors:===&lt;br /&gt;
&lt;br /&gt;
Der Editorstart erfolgt einfach durch die Eingabe des Kommandos vi mit dem&lt;br /&gt;
Dateinamen der zu editierenden Datei als Parameter.&lt;br /&gt;
Beispiel:        &lt;br /&gt;
 vi sux.txt&lt;br /&gt;
&lt;br /&gt;
===Die Betriebsmodi des vi:===&lt;br /&gt;
&lt;br /&gt;
Ein Umstand, der dem vi den Ruf der komplizierten Bedienbarkeit zugetragen hat,&lt;br /&gt;
sind die unterschiedlichen Betriebsmodi des Editors. Genauer gesagt verfügt der&lt;br /&gt;
vi über drei Betriebsmodi:&lt;br /&gt;
&lt;br /&gt;
====Kommandomodus:====&lt;br /&gt;
&lt;br /&gt;
Innerhalb dieses Modus werden die eingegebenen Zeichen direkt als Befehle des&lt;br /&gt;
Editors interpretiert und ausgeführt. Dabei gibt es weder ein Bereitschaftszeichen&lt;br /&gt;
(Prompt) noch ein Echo (Ausgabe). Der Kommandomodus ist der Modus, in dem&lt;br /&gt;
sich der vi direkt nach seinem Start befindet.&lt;br /&gt;
&lt;br /&gt;
====Zeilenmodus oder Exmodus:====&lt;br /&gt;
&lt;br /&gt;
Dieser Modus ist der einzige Modus mit einem eigenen Bereitschaftszeichen,&lt;br /&gt;
nämlich dem Doppelpunkt (:). Das Prompt wird ebenso wie die Befehlsausgaben&lt;br /&gt;
in der Statuszeile angezeigt.&lt;br /&gt;
&lt;br /&gt;
====Eingabemodus:====&lt;br /&gt;
&lt;br /&gt;
Der Eingabemodus ist derjenige, in welchem der zu bearbeitende Text bearbeitet&lt;br /&gt;
werden kann. Alle hier eingegebenen Zeichen werden als Text für die aktuelle&lt;br /&gt;
Datei interpretiert. Zwischen den unterschiedlichen Modi kann jederzeit&lt;br /&gt;
gewechselt werden. Von Kommandomodus gelangen Sie durch mehere Wege in&lt;br /&gt;
den Eingabemodus. Man kann durch folgende Aktionen wechslen&lt;br /&gt;
&lt;br /&gt;
{| border=1 cellpadding=2&lt;br /&gt;
|i&lt;br /&gt;
|Text vor der aktuellen Cursorposition einfügen&lt;br /&gt;
|-&lt;br /&gt;
|I&lt;br /&gt;
|Text am Zeilenanfang einfügen&lt;br /&gt;
|-&lt;br /&gt;
|a&lt;br /&gt;
|Text hinter der aktuellen Cursorposition einfügen&lt;br /&gt;
|-&lt;br /&gt;
|A&lt;br /&gt;
|Text am Zeilenende einfügen&lt;br /&gt;
|-&lt;br /&gt;
|o&lt;br /&gt;
|Unterhalb der aktuellen Zeile eine neue Zeile einfügen&lt;br /&gt;
|-&lt;br /&gt;
|O&lt;br /&gt;
|Oberhalb der aktuellen Zeile eine neue Zeile einfügen&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Durch das Drücken der ESC - Taste gelangt man in den Kommandomodus zurück.&lt;br /&gt;
&lt;br /&gt;
Im Kommandomodus können Sie durch den Text navigieren und auch den Text&lt;br /&gt;
selbst bearbeiten, z.B ausschneiden, kopieren usw. Dazu sind einige Kommandos&lt;br /&gt;
nötig, von denen die wichtigsten im Folgenden erläutert werden:&lt;br /&gt;
&lt;br /&gt;
 xinux@zero:/$ vi iwas.txt&lt;br /&gt;
&lt;br /&gt;
[[Image:vim.jpg]]&lt;br /&gt;
&lt;br /&gt;
===Benutzen des Kommandomodus===&lt;br /&gt;
====Steuerung des Cursors durch den Text====&lt;br /&gt;
&lt;br /&gt;
Mittels folgender Kommandos bewegt sich der Cursor durch den Text:&lt;br /&gt;
&lt;br /&gt;
{| border=1 cellpadding=2&lt;br /&gt;
|h&lt;br /&gt;
|Cursor ein Zeichen nach links&lt;br /&gt;
|-&lt;br /&gt;
|l&lt;br /&gt;
|Cursor ein Zeichen nach rechts&lt;br /&gt;
|-&lt;br /&gt;
|k&lt;br /&gt;
|Cursor eine Zeile nach oben&lt;br /&gt;
|-&lt;br /&gt;
|j&lt;br /&gt;
|Cursor eine Zeile nach unten&lt;br /&gt;
|-&lt;br /&gt;
|w&lt;br /&gt;
|Cursor ein Wort nach rechts&lt;br /&gt;
|-&lt;br /&gt;
|b&lt;br /&gt;
|Cursor ein Wort nach links&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Alle diese Kommandos können mit einem vorgestellten Wiederholungsfaktor&lt;br /&gt;
arbeiten. Der Befehl 3w verschiebt demnach den Cursor um 3 Wörter nach rechts.&lt;br /&gt;
&lt;br /&gt;
====Angaben zur Positionierung====&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{| border=1 cellpadding=2&lt;br /&gt;
|STRG+U&lt;br /&gt;
|1⁄2 Bildschirmseite nach oben&lt;br /&gt;
|-&lt;br /&gt;
|STRG+D&lt;br /&gt;
|1⁄2 Bildschirmseite nach unten&lt;br /&gt;
|-&lt;br /&gt;
|STRG+B&lt;br /&gt;
|1 Bildschirmseite nach oben&lt;br /&gt;
|-&lt;br /&gt;
|STRG+F&lt;br /&gt;
|1 Bildschirmseite nach unten&lt;br /&gt;
|-&lt;br /&gt;
|/Ausdruck&lt;br /&gt;
|Sucht den Ausdruck (vorwärts) Weitersuchen mit n , N&lt;br /&gt;
|-&lt;br /&gt;
|?Ausdruck&lt;br /&gt;
|Sucht den Ausdurck (rückwärts) Weitersuchen mit n , N&lt;br /&gt;
|-&lt;br /&gt;
|0&lt;br /&gt;
|Zeilenanfang&lt;br /&gt;
|-&lt;br /&gt;
|$&lt;br /&gt;
|Zeilenende&lt;br /&gt;
|-&lt;br /&gt;
|w&lt;br /&gt;
|Nächstes Wort&lt;br /&gt;
|-&lt;br /&gt;
|b&lt;br /&gt;
|Vorheriges Wort&lt;br /&gt;
|-&lt;br /&gt;
|fc&lt;br /&gt;
|Auf das Zeichen c springen. c steht für ein beliebiges Zeichen&lt;br /&gt;
|-&lt;br /&gt;
|G&lt;br /&gt;
|Letzte Zeile der Datei&lt;br /&gt;
|-&lt;br /&gt;
|ng&lt;br /&gt;
|n-te Zeile der Datei&lt;br /&gt;
|-&lt;br /&gt;
|H&lt;br /&gt;
|Anfang der Bildschirmseite&lt;br /&gt;
|-&lt;br /&gt;
|L&lt;br /&gt;
|Ende der Bildschirmseite&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
====Befehle zur Textbearbeitung -&amp;gt; Was soll geschehen====&lt;br /&gt;
&lt;br /&gt;
{| Border=1 Cellpadding=2&lt;br /&gt;
|x&lt;br /&gt;
|Löscht Zeichen&lt;br /&gt;
|-&lt;br /&gt;
|d&lt;br /&gt;
|Löschen und in den Puffer laden&lt;br /&gt;
|-&lt;br /&gt;
|c&lt;br /&gt;
|Ändern&lt;br /&gt;
|-&lt;br /&gt;
|y&lt;br /&gt;
|In den Puffer laden&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
====Weitere wichtige Befehle:====&lt;br /&gt;
&lt;br /&gt;
{| Border=1 Cellpadding=2&lt;br /&gt;
|p&lt;br /&gt;
|Aus dem Puffer einfügen&lt;br /&gt;
|-&lt;br /&gt;
|u&lt;br /&gt;
|Undo, macht den letzten Befehl rückgängig&lt;br /&gt;
|-&lt;br /&gt;
|STRG+R&lt;br /&gt;
|Redo, macht den letzten Undo rückgängig&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
===Zeilen- oder Exmodus===&lt;br /&gt;
&lt;br /&gt;
Wie schon erwähnt wird der Zeilen oder Exmodus durch einen : eingeleitet.&lt;br /&gt;
Es folgen einige Beispiele.&lt;br /&gt;
&lt;br /&gt;
Befehle zum Speichern und Beenden:&lt;br /&gt;
&lt;br /&gt;
 :w          Schreibt Datei&lt;br /&gt;
 :w Datei2   Schreibt eine Kopie in Datei2&lt;br /&gt;
 :w !        Schreibt Datei (übergehe Schreibschutz)&lt;br /&gt;
 :w ! Datei2 Schreibt eine Kopie in Datei2 (übergehe Schreibschutz)&lt;br /&gt;
 :q          Schließe Datei&lt;br /&gt;
 :q!         Schließe Datei (verwerfe Änderungen)&lt;br /&gt;
 :wq         Schreibe Datei und beende Editor&lt;br /&gt;
 :wq!        Schreibe Datei und beende Editor (übergehe Schreibschutz)&lt;br /&gt;
 :q!         Schließe Datei (verwerfe Änderungen)&lt;br /&gt;
 :h          Hilfe anzeigen, durch drücken von :q Beenden der Hilfe&lt;br /&gt;
 :e Datei3   Editiere Datei3&lt;br /&gt;
 :e #        Editere vorhergehende Datei&lt;br /&gt;
 :1,3co9     Kopiere von der ersten bis zu dritten Zeile &lt;br /&gt;
             und füge den Inhalt unterhalb der neunte Zeile ein.&lt;br /&gt;
&lt;br /&gt;
Interaktionen mit Unix:&lt;br /&gt;
&lt;br /&gt;
 :r Datei4   Fügt Inhalt der Datei4 nach dem Cursor ein&lt;br /&gt;
 :r ! Befehl Fügt Ausgabe des Befehls nach dem Cursor ein&lt;br /&gt;
 :! Befehl   Führt den Befehl aus&lt;br /&gt;
 :sh         Starte Subshell -&amp;gt; mit exit kehrt man wieder zurück&lt;br /&gt;
             Eingabemodus zurück&lt;br /&gt;
&lt;br /&gt;
====Ersetzen von Textteilen====&lt;br /&gt;
&lt;br /&gt;
Die grundsätzliche Syntax lautet:&lt;br /&gt;
&lt;br /&gt;
 :[Zeilennummer,Zeilennummer]s/Muster/Ersetzung/[gc]&lt;br /&gt;
&lt;br /&gt;
 :s/worf/kirn/              der erste worf wird in der aktuellen Zeile durch kirn ersetzt&lt;br /&gt;
 :1,9s/worf/kirn/g          von der 1. bis zur 9. Zeile werden alle worf durch kirn ersetzt&lt;br /&gt;
 :1,$s/worf/kirn/           von der ersten bis zur letzten Zeile ersetze ersten worf durch&lt;br /&gt;
                            kirn&lt;br /&gt;
 :.,$s/worf/kirn/g          von der aktuellen bis zur letzten Zeile ersetze alle worf durch&lt;br /&gt;
                            kirn&lt;br /&gt;
 :1,.s/worf/kirn/c          von der 1. bis zur aktuellen Zeile ersetze worf durch kirn, frage&lt;br /&gt;
                            aber nach&lt;br /&gt;
 :1,$s/^worf/kirn/          von der ersten bis zur letzten Zeile ersetze worf am&lt;br /&gt;
                            Zeilenanfang durch kirn&lt;br /&gt;
 :4,$s/worf$/kirn/          von der 4. bis zur letzten Zeile ersetze worf am Zeilenende&lt;br /&gt;
                            durch kirn&lt;br /&gt;
 :1,$s/^#//                 lösche alle Kommentarzeichen&lt;br /&gt;
 :1,$s/^.orf/kirn/           ersetze alles was am Zeilenanfang ein beliebiges Zeichen hat&lt;br /&gt;
                            gefolgt von einem orf durch kirn&lt;br /&gt;
 :1,$s/^[A-Z]orf/kirn/g     suche nach einem Großbuchstaben am Anfang der Zeile&lt;br /&gt;
                            gefolgt von einem orf und ersetze durch kirn&lt;br /&gt;
 :1,$s/^M[ae][iy]e*r/kirn/  suche alles, was am Anfang der Zeile ein großes M enthält,&lt;br /&gt;
                            gefolgt von einem a oder e , gefolgt von einem i oder y ,&lt;br /&gt;
                            gefolgt von einem e , welches 0 oder N mal vorkommen kann,&lt;br /&gt;
                            gefolgt von einem r und ersetze es durch kirn&lt;br /&gt;
&lt;br /&gt;
==Reguläre Ausdrücke==&lt;br /&gt;
&lt;br /&gt;
{| Border=1 Cellpadding=2&lt;br /&gt;
|c&lt;br /&gt;
|Ein einzelner Buchstabe passt auf sich selbst&lt;br /&gt;
|-&lt;br /&gt;
|.&lt;br /&gt;
|Ein Punkt passt auf jedes Zeichen außer auf das Zeilenende&lt;br /&gt;
|-&lt;br /&gt;
|*&lt;br /&gt;
|Das dem Operator * vorangehende Muster kann 0 oder öfter vorkommen&lt;br /&gt;
|-&lt;br /&gt;
|^&lt;br /&gt;
|(Caret) passt auf den Zeilenanfang&lt;br /&gt;
|-&lt;br /&gt;
|$&lt;br /&gt;
|Passt auf das Zeilenende&lt;br /&gt;
|-&lt;br /&gt;
|\&lt;br /&gt;
|Das folgende Sonderzeichen wird entwertet&lt;br /&gt;
|-&lt;br /&gt;
|[...]&lt;br /&gt;
|Passt auf &amp;quot;genau&amp;quot; eins in [...] angebenen Zeichen&lt;br /&gt;
|-&lt;br /&gt;
|[^...]&lt;br /&gt;
|Passt auf &amp;quot;genau&amp;quot; ein Zeichen welches nicht in [...] angebenen ist&lt;br /&gt;
|-&lt;br /&gt;
|\&amp;lt;&lt;br /&gt;
|Passt auf den Wortanfang&lt;br /&gt;
|-&lt;br /&gt;
|\&amp;gt;&lt;br /&gt;
|Passt auf das Wortende&lt;br /&gt;
|-&lt;br /&gt;
|\+&lt;br /&gt;
|Das dem Operator \+ vorangehende Muster kann 1 oder öfter vorkommen&lt;br /&gt;
|-&lt;br /&gt;
|&amp;amp;&lt;br /&gt;
|Setzt das gefunden Suchmuster ein&lt;br /&gt;
|-&lt;br /&gt;
|\(...\)&lt;br /&gt;
|Speichert den Text auf den das Suchmuster passt zur späteren Verwendung&lt;br /&gt;
|-&lt;br /&gt;
|\n&lt;br /&gt;
|Setzt das vorangehende, mit \(...\) Gefundene wieder ein&lt;br /&gt;
|-&lt;br /&gt;
|(...)&lt;br /&gt;
|Gruppiert Auswahlmöglichkeiten&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;nowiki&amp;gt;|&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
|Trennt Auswahlmöglichkeiten&lt;br /&gt;
|-&lt;br /&gt;
|\b&lt;br /&gt;
|Passt auf den Anfang oder das Ende eines Wortes&lt;br /&gt;
|-&lt;br /&gt;
|\B&lt;br /&gt;
|Symbolisiert den Raum innerhalb eines Wortes&lt;br /&gt;
|-&lt;br /&gt;
|\w&lt;br /&gt;
|Passt auf alle alphanumerischen Zeichen [A-Za-z0-9]&lt;br /&gt;
|-&lt;br /&gt;
|\W&lt;br /&gt;
|Passt auf alle nichtalphanumerischen Zeichen [^A-Za-z0-9]&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Die Rangfolge der Operatoren(von der höchsten zur niedrigsten)&lt;br /&gt;
:(, ), ?, *, + | .&lt;br /&gt;
&lt;br /&gt;
Die anderen Operatoren sind mit den anderen Buchstaben gleichrangig.&lt;br /&gt;
&lt;br /&gt;
===Beispiel zum Suchen===&lt;br /&gt;
&lt;br /&gt;
 Suchmuster               Passt auf&lt;br /&gt;
 ^Tuxer                   Tuxer am Zeilenanfang&lt;br /&gt;
 [tT]uxer                 Tuxer oder tuxer&lt;br /&gt;
 80[23]?86                8086, 80286 oder 80386&lt;br /&gt;
&lt;br /&gt;
===grep===&lt;br /&gt;
&lt;br /&gt;
Mit grep ist es möglich, in Dateien nach regulären Ausdrücken zu suchen. Wenn&lt;br /&gt;
eine Übereinstimmung gefunden wird, wird die komplette Zeile auf die&lt;br /&gt;
Standardausgabe geschrieben. grep kann auch von STDIN lesen.Es ist&lt;br /&gt;
empfehlenswert, sich anzugwöhnen ,das Suchmuster in Anführungszeichen zu&lt;br /&gt;
schreiben. Es gibt 3 Arten fgrep = fastgrep , grep und egrep egrep&lt;br /&gt;
&lt;br /&gt;
Beispiel:&lt;br /&gt;
&lt;br /&gt;
 root@zero:~# cat text&lt;br /&gt;
 quatsch&lt;br /&gt;
 quatsch&lt;br /&gt;
 quatsch&lt;br /&gt;
 wichtig&lt;br /&gt;
 quatsch&lt;br /&gt;
 root@zero:~# grep wichtig text&lt;br /&gt;
 wichtig&lt;br /&gt;
 root@zero:~# &lt;br /&gt;
&lt;br /&gt;
 -c                   meldet nur die Gesamtzahl der Fundstellen&lt;br /&gt;
 -v                   zeigt nur Zeilen, die »Ausdruck« nicht enthalten&lt;br /&gt;
 -i                   ignoriert Groß- und Kleinschreibung&lt;br /&gt;
 -l                    meldet nur Dateinamen mit Fundstellen&lt;br /&gt;
 -n                   listet Zeilennummern zu jeder Fundstelle&lt;br /&gt;
 -f                   Dateiname »Dateiname« enthält die Such-Ausdrücke&lt;br /&gt;
 -E                   ist ein erweiterter regulärer Ausdruck (egrep)&lt;br /&gt;
 -F                   (Muster, Ausdruck) ist ein Muster (String) (fgrep)&lt;br /&gt;
 -b                   listet auch die Position der Fundstellen&lt;br /&gt;
 -C    Anzahl         Anzahl von Zeilen werden nach der Fundstelle ausgegeben&lt;br /&gt;
 -B    Anzahl         Anzahl von Zeilen werden vor der Fundstelle ausgegeben&lt;br /&gt;
 -r                   Durchsucht Verzeichnisse rekursiv&lt;br /&gt;
&lt;br /&gt;
==Useridendifikation==&lt;br /&gt;
===/etc/passwd===&lt;br /&gt;
====Beschreibung====&lt;br /&gt;
passwd ist eine ASCII-Datei, die eine Liste der Benutzer des Systems und deren&lt;br /&gt;
Passwörter enthält. Die Passwortdatei sollte für alle Benutzer lesbar sein, was für&lt;br /&gt;
dieVerschlüsselung notwendig ist; aber nur vom Superuser beschreibbar. Wenn&lt;br /&gt;
Sie eine neue Kennung einrichten, lassen Sie das Passwort-Feld in der Datei frei&lt;br /&gt;
und benutzen Sie passwd(1), um dem System ein Passwort für die neue Kennung&lt;br /&gt;
mitzuteilen.&lt;br /&gt;
&lt;br /&gt;
Die Datei /etc/passwd enthält einen Eintrag pro Zeile mit dem Format:&lt;br /&gt;
login_name:passwd:UID:GID:user_name:directory:shell&lt;br /&gt;
====Die Bedeutung der Felder:====&lt;br /&gt;
# login_name Kennung des Benutzers auf dem System.&lt;br /&gt;
# password   Hier steht bei Shadowsystemen ein x. Die Passwörter sind in der Datei /etc/shadow&lt;br /&gt;
# UID        Die numerische Benutzernummer.&lt;br /&gt;
#  GID        Die numerische Gruppennummer des Benutzers.&lt;br /&gt;
# user_name Ein optionales Kommentarfeld, oft benutzt für den vollen Namen des Benutzers und weitere Informationen (Telefon, Raum-Nummer etc.).&lt;br /&gt;
# directory  Das Heimatverzeichnis $HOME des Benutzers.&lt;br /&gt;
# shell      Das Programm, das beim Einloggen gestartet werden soll (falls nicht nötig, benutzen Sie /bin/bash).&lt;br /&gt;
&lt;br /&gt;
===/etc/group===&lt;br /&gt;
====Beschreibung====&lt;br /&gt;
etc/group ist eine ASCII Datei, die Gruppen definiert, zu denen Benutzer&lt;br /&gt;
gehören. Es gibt nur einen Eintrag pro Zeile; jede Zeile hat folgendes Format:&lt;br /&gt;
         GruppenName:Passwort:GruppenKennung:BenutzerListe&lt;br /&gt;
Beschreibung der Felder:&lt;br /&gt;
#     GruppenName      Die Bezeichnung der Gruppe.&lt;br /&gt;
#     Passwort         Das (verschlüsselte) Gruppen-Passwort. Wenn dieses Feld leer ist, wird kein Passwort benötigt.&lt;br /&gt;
#     GruppenKennung Die numerische Identifikation der Gruppe.&lt;br /&gt;
#     BenutzerListe    Alle Namen der Mitglieder, getrennt durch Kommas.&lt;br /&gt;
&lt;br /&gt;
===/etc/shadow===&lt;br /&gt;
====Beschreibung====&lt;br /&gt;
shadow beinhaltet Informationen zu den verschlüsselten Passwörten, zu den&lt;br /&gt;
Benutzerzugängen und weitere Informationen zur Laufzeit der Passwörter.&lt;br /&gt;
 Name:Passwort:Letzte Änderung:Mintage:Maxtage:Warntage:Inaktiv:Ablauf&lt;br /&gt;
#    Der Loginname&lt;br /&gt;
#    verschlüsseltes Passwort &lt;br /&gt;
&amp;lt;nowiki&amp;gt;*&amp;lt;/nowiki&amp;gt; bedeutet Benutzer kann sich nicht einlogen&lt;br /&gt;
! bedeutet Benutzer hat kein Passwort gesetzt&lt;br /&gt;
#    Tage seit dem 1 Januar 1970 an dem das Passwort letztmals geändert wurde&lt;br /&gt;
#    Tage, die das Passwort behalten werden muss, bevor es wieder geändert werden kann&lt;br /&gt;
#     Die Anzahl der Tage, nach denen der Benutzer das Passwort wieder ändern muss&lt;br /&gt;
#    Anzahl der Tage bevor das Passwort abläuft und der Benutzer gewarnt wird&lt;br /&gt;
#    Wenn der Zugang diese Anzahl von Tagen nicht benutzt wird, wird der Zugang gesperrt&lt;br /&gt;
#    Tag seit dem 1 Januar 1970, an dem der Zugang gesperrt wird&lt;br /&gt;
#    Reserviertes Feld&lt;br /&gt;
&lt;br /&gt;
Die Datei sollte aus Sicherheitgründen nicht für einen normalen Benutzer lesbar&lt;br /&gt;
sein.&lt;br /&gt;
&lt;br /&gt;
==Programme zur Userverwaltung==&lt;br /&gt;
===useradd===&lt;br /&gt;
User anlegen&lt;br /&gt;
 root@zero:~# useradd -m -u 1011 -g users -G admin -d /home/erwin -s /bin/bash -c &amp;quot;Erwin Lehman&amp;quot;  erwin&lt;br /&gt;
{| border=1 cellpadding=2&lt;br /&gt;
|&amp;quot;-m&amp;quot;&lt;br /&gt;
|Lege Homedirectory an&lt;br /&gt;
|-&lt;br /&gt;
|&amp;quot;-u 1011&amp;quot;&lt;br /&gt;
|Userid wird zugeordnet&lt;br /&gt;
|-&lt;br /&gt;
|&amp;quot;-g users&amp;quot;&lt;br /&gt;
|Primäre Gruppe wird zugeordnet&lt;br /&gt;
|-&lt;br /&gt;
|&amp;quot;-G admin&amp;quot;&lt;br /&gt;
|Sekunbdäre Gruppe wird zugeordnet&lt;br /&gt;
|-&lt;br /&gt;
|&amp;quot;-d /home/erwin/&amp;quot;&lt;br /&gt;
|Name des Homedirectory&lt;br /&gt;
|-&lt;br /&gt;
|&amp;quot;-s /bin/bash&amp;quot;&lt;br /&gt;
|Bash wird zugeordnet&lt;br /&gt;
|- &lt;br /&gt;
|&amp;quot;-c Erwin Lehman&amp;quot;&lt;br /&gt;
|Kommentarfeld&lt;br /&gt;
|-&lt;br /&gt;
|&amp;quot;erwin&amp;quot; &lt;br /&gt;
|Name des Users&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Defaulteinstellungen anzeigen&lt;br /&gt;
 root@zero:~# useradd -D&lt;br /&gt;
 GROUP=100&lt;br /&gt;
 HOME=/home&lt;br /&gt;
 INACTIVE=-1&lt;br /&gt;
 EXPIRE=&lt;br /&gt;
 SHELL=/bin/sh&lt;br /&gt;
 SKEL=/etc/skel&lt;br /&gt;
 CREATE_MAIL_SPOOL=no&lt;br /&gt;
&lt;br /&gt;
Defaulteinstellungen ändern&lt;br /&gt;
 useradd -D -s /bin/bash&lt;br /&gt;
&lt;br /&gt;
Konfigurationsdatei&lt;br /&gt;
 root@zero:~# cat /etc/default/useradd &lt;br /&gt;
 SHELL=/bin/bash&lt;br /&gt;
 GROUP=100&lt;br /&gt;
 HOME=/home&lt;br /&gt;
 INACTIVE=-1&lt;br /&gt;
 EXPIRE=&lt;br /&gt;
 SKEL=/etc/skel&lt;br /&gt;
 CREATE_MAIL_SPOOL=no&lt;br /&gt;
&lt;br /&gt;
===usermod===&lt;br /&gt;
User modifizieren&lt;br /&gt;
 root@zero:~# usermod -l fritz -s /bin/sh -G admin,video erwin&lt;br /&gt;
{| border=1 cellpadding=2&lt;br /&gt;
|&amp;quot;-l fritz&amp;quot;&lt;br /&gt;
|Neuer Username&lt;br /&gt;
|-&lt;br /&gt;
|&amp;quot;-s /bin/sh&amp;quot;&lt;br /&gt;
|Neue Shell&lt;br /&gt;
|-&lt;br /&gt;
|&amp;quot;-G admin, video&amp;quot;&lt;br /&gt;
|Sekunbdäre Gruppen werden zugeordnet&lt;br /&gt;
|-&lt;br /&gt;
|&amp;quot;erwin&amp;quot; &lt;br /&gt;
|Name des Users&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
===userdel===&lt;br /&gt;
User inklusive Homedirectory löschen&lt;br /&gt;
 root@zero:~# userdel -r fritz&lt;br /&gt;
&lt;br /&gt;
===passwd===&lt;br /&gt;
Rootpasswort ändern&lt;br /&gt;
 root@zero:~# passwd &lt;br /&gt;
 Geben Sie ein neues UNIX Passwort ein:'''sysadm''' &lt;br /&gt;
 Geben Sie das neue UNIX Passwort erneut ein:'''sysadm''' &lt;br /&gt;
 passwd: Passwort erfolgreich geändert&lt;br /&gt;
&lt;br /&gt;
Passwort von tux ändern&lt;br /&gt;
 root@zero:~# passwd tux&lt;br /&gt;
 Geben Sie ein neues UNIX Passwort ein:'''suxer''' &lt;br /&gt;
 Geben Sie das neue UNIX Passwort erneut ein:'''suxer'''&lt;br /&gt;
 passwd: Passwort erfolgreich geändert&lt;br /&gt;
&lt;br /&gt;
Minimale und Maximale Gültigkeit des Passwortes von tux festlegen&lt;br /&gt;
 root@zero:~# passwd -n 5 -x 120 tux&lt;br /&gt;
&lt;br /&gt;
===groupadd===&lt;br /&gt;
 root@zero:~# groupadd -f -g 2001 xinuxer&lt;br /&gt;
{| border=1 cellpadding=2&lt;br /&gt;
|&amp;quot;-f&amp;quot;&lt;br /&gt;
|Überschreibe bestehende Gruppe&lt;br /&gt;
|-&lt;br /&gt;
|&amp;quot;-g 2001&amp;quot;&lt;br /&gt;
|GID der Gruppe&lt;br /&gt;
|-&lt;br /&gt;
|&amp;quot;xinuxer&amp;quot; &lt;br /&gt;
|Name des Gruppe&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==chmod==&lt;br /&gt;
Die Syntax des Befehls chmod lautet:&lt;br /&gt;
&lt;br /&gt;
'''chmod''' WerWieWas [,WerWieWas,.....] Dateiliste&lt;br /&gt;
&lt;br /&gt;
oder&lt;br /&gt;
&lt;br /&gt;
'''chmod''' Oktalzahl Dateiliste&lt;br /&gt;
&lt;br /&gt;
Durch WerWieWas bzw. Oktalzahl wird die Rechtetabelle definiert. Innerhalb von&lt;br /&gt;
WerWieWas darf es kein Leerzeichen geben. Wer bezeichnet den Benutzerkreis,&lt;br /&gt;
dem man Rechte gibt, Wie die Art, in der die Rechte gegeben werden und Was die&lt;br /&gt;
Rechte als solche. Im einzelnen können folgende Kürzel benutzt werden:&lt;br /&gt;
&lt;br /&gt;
Für Wer kann eines der folgenden Kürzel oder eine Kombination davon stehen:&lt;br /&gt;
 u                   (user) Rechte für den Dateibesitzer&lt;br /&gt;
 g                   (group) Rechte für die Gruppe&lt;br /&gt;
 o                   (others) Rechte für alle anderen Benutzer&lt;br /&gt;
 a                   (all) Rechte für alle Benutzer&lt;br /&gt;
Für Wie steht eines der folgenden Kürzel:&lt;br /&gt;
 +                   Die Rechte werden zu den vorhandenen zusätzlich vergeben&lt;br /&gt;
 -                   Die im Folgenden genannten Rechte werden entzogen&lt;br /&gt;
 =                   Die im Folgenden genannten Rechte ersetzen die bisherigen&lt;br /&gt;
Für Was steht eines der folgenden Kürzel:&lt;br /&gt;
 r                   (read) lesen&lt;br /&gt;
 w                   (write) schreiben&lt;br /&gt;
 x                   (execute) ausführen&lt;br /&gt;
oder diese Sonderformen&lt;br /&gt;
 s                   (usersbit) Programm läuft unter der UID des Besitzers&lt;br /&gt;
 s                   (groupsbit)Programm läuft unter der GID des GRUPPE&lt;br /&gt;
 t                   (stickybit) Dateien im Verzeichnis darf nur Besitzer löschen&lt;br /&gt;
&lt;br /&gt;
===Beispiel===&lt;br /&gt;
Setze für alle Schreib- und Leserecht&lt;br /&gt;
 xinux@zero:~$ chmod a=rw test &lt;br /&gt;
 xinux@zero:~$ ls -l test &lt;br /&gt;
 -rw-rw-rw- 1 xinux xinux 0 2009-06-16 12:01 test&lt;br /&gt;
 xinux@zero:~$ &lt;br /&gt;
&lt;br /&gt;
Erteile Besitzer Ausführungsrecht&lt;br /&gt;
 xinux@zero:~$ chmod u+x test ; ls -l test &lt;br /&gt;
 -rwxrw-rw- 1 xinux xinux 0 2009-06-16 12:01 test&lt;br /&gt;
 xinux@zero:~$ &lt;br /&gt;
&lt;br /&gt;
===chmod oktale Schreibweise===&lt;br /&gt;
 Specialrights        User           Group         Other&lt;br /&gt;
 usbit gsbit sticky    r    w   x     r   w   x     r   w   x&lt;br /&gt;
   1     1      1      1    1   1     1   1   1     1   1   1&lt;br /&gt;
   0     0      0      0    0   0     0   0   0     0   0   0&lt;br /&gt;
 Oktale Wertigkeit pro Recht&lt;br /&gt;
   4     2       1     4    2   1     4   2   1     4   2   1&lt;br /&gt;
&lt;br /&gt;
===Beispiele===&lt;br /&gt;
 xinux@zero:~$ chmod 751 test ; ls -l test&lt;br /&gt;
 -rwxr-x--x 1 xinux xinux 0 2009-06-16 12:01 test&lt;br /&gt;
 xinux@zero:~$ &lt;br /&gt;
&lt;br /&gt;
 xinux@zero:~$ chmod 4770 test ; ls -l test&lt;br /&gt;
 -rwsrwx--- 1 xinux xinux 0 2009-06-16 12:01 test&lt;br /&gt;
 xinux@zero:~$ &lt;br /&gt;
&lt;br /&gt;
 xinux@zero:~$ chmod 0 test ; ls -l test &lt;br /&gt;
 ---------- 1 xinux xinux 0 2009-06-16 12:01 test&lt;br /&gt;
&lt;br /&gt;
===chmod Optionen===&lt;br /&gt;
 -c   (changes) es werden nur die Dateien angezeigt, deren Zugriffsrechte tatsächlich verändert werden&lt;br /&gt;
 -f   (silent, quiet) Fehlermeldungen wegen fehlgeschlagener Änderungsversuche werden unterdrückt&lt;br /&gt;
 -v   (verbose) alle Aktionen werden angezeigt&lt;br /&gt;
 -R   (recursive) die Zugriffsrechte aller Dateien in den Unterverzeichnissen werden ebenfalls geändert&lt;br /&gt;
&lt;br /&gt;
Theoretisch sind alle Kombinationen der Zugriffsrechte denkbar, aber der&lt;br /&gt;
Eigentümer einer Datei darf diese immer lesen, selbst wenn das Lesebit nicht&lt;br /&gt;
gesetzt ist. Genauso macht es wenig Sinn, eine gewöhnliche Textdatei als&lt;br /&gt;
ausführbar zu setzen; die Shell wird damit nichts anfangen können. Ein x für ein&lt;br /&gt;
Verzeichnis gibt an, dass in dieses gewechselt werden kann.&lt;br /&gt;
&lt;br /&gt;
Rechte sind verbindlich&lt;br /&gt;
&lt;br /&gt;
Interessant ist auch ein Konstrukt folgender Art&lt;br /&gt;
 -rwx---rwx&lt;br /&gt;
&lt;br /&gt;
das angibt, dass mit der Datei alles angestellt werden kann, außer durch Nutzer der&lt;br /&gt;
Gruppe. Versucht irgend jemand, der nicht der Gruppe des Eigentümers angehört,&lt;br /&gt;
die Datei zu modifizieren, wird ihm dies gelingen, einem Gruppenmitglied bleibt&lt;br /&gt;
dies versagt, obwohl er ja gleichzeitig ein &amp;quot;Anderer&amp;quot; ist. D.h. die Rechte der&lt;br /&gt;
Gruppe sind verbindlicher, als die Rechte der anderen!&lt;br /&gt;
&lt;br /&gt;
===Bedeutungen der Zugriffsarten===&lt;br /&gt;
====Dateien====&lt;br /&gt;
* r: Der Inhalt der Datei kann gelesen und damit auch kopiert werden. &lt;br /&gt;
 root@zero:~# cat test&lt;br /&gt;
 Dies ist eine Testdatei&lt;br /&gt;
  &lt;br /&gt;
 root@zero:~# cp test backup&lt;br /&gt;
&lt;br /&gt;
* w: Der Inhalt der Datei darf verändert werden. Ob die Datei gelöscht werden kann ist&lt;br /&gt;
keine Eigenschaft der Datei, sondern des Verzeichnisses, indem sich die Datei befindet.&lt;br /&gt;
 root@zero:~# cat &amp;gt; test&lt;br /&gt;
 Hier steht jetzt was anderes&lt;br /&gt;
 ^C&lt;br /&gt;
 root@zero:~# cat test&lt;br /&gt;
 Hier steht jetzt was anderes&lt;br /&gt;
  &lt;br /&gt;
 xinux@zero:~$ ls -ld verzeichnis/&lt;br /&gt;
 dr-xr-xr-x 2 xinux xinux 4096 2009-06-18 11:16 verzeichnis/&lt;br /&gt;
 xinux@zero:~/verzeichnis$ rm text&lt;br /&gt;
 rm: Entfernen von „text“ nicht möglich: Permission denied&lt;br /&gt;
&lt;br /&gt;
* x: Ausführrecht für Programme und Skripte&lt;br /&gt;
 xinux@zero:~$ ./programm&lt;br /&gt;
 -bash: ./programm: Permission denied&lt;br /&gt;
 xinux@zero:~$ chmod +x programm&lt;br /&gt;
 xinux@zero:~$ ./programm&lt;br /&gt;
 Test&lt;br /&gt;
  test&lt;br /&gt;
&lt;br /&gt;
====Verzeichnisse====&lt;br /&gt;
* r: Die Einträge in dem Verzeichnis sind lesbar.&lt;br /&gt;
Leserecht von verzeichnis/ entziehen&lt;br /&gt;
 xinux@zero:~$ chmod a-r verzeichnis/&lt;br /&gt;
 xinux@zero:~$ ls verzeichnis/&lt;br /&gt;
 ls: Öffnen von Verzeichnis verzeichnis/ nicht möglich: Permission denied&lt;br /&gt;
Leserecht für Benutzer und Gruppe vergeben&lt;br /&gt;
 xinux@zero:~$ chmod a+r verzeichnis/&lt;br /&gt;
 xinux@zero:~$ ls verzeichnis/&lt;br /&gt;
 text&lt;br /&gt;
&lt;br /&gt;
* w: Die Einträge in dem Verzeichnis können geändert werden. &lt;br /&gt;
Neue Datei erstellen&lt;br /&gt;
 xinux@zero:~$ touch neu&lt;br /&gt;
 xinux@zero:~$ ls neu&lt;br /&gt;
 neu&lt;br /&gt;
&lt;br /&gt;
Datei löschen&lt;br /&gt;
 xinux@zero:~$ rm neu&lt;br /&gt;
 xinux@zero:~$ ls neu&lt;br /&gt;
 ls: Zugriff auf neu nicht möglich: No such file or directory&lt;br /&gt;
&lt;br /&gt;
* x: Der Name des Verzeichnisses kann in einem Pfadnamen erscheinen.&lt;br /&gt;
Verzeichnis ohne x Recht&lt;br /&gt;
 xinux@zero:~$ chmod a-x verzeichnis/&lt;br /&gt;
Wechseln in Verzeichnis mangels x-Recht nicht möglich&lt;br /&gt;
 xinux@zero:~$ cd verzeichnis/&lt;br /&gt;
 -bash: cd: verzeichnis/: Permission denied&lt;br /&gt;
x-Recht vergeben&lt;br /&gt;
 xinux@zero:~$ chmod a+x verzeichnis/&lt;br /&gt;
damit Wechsel in Verzeichnis möglich&lt;br /&gt;
 xinux@zero:~$ cd verzeichnis/&lt;br /&gt;
 xinux@zero:~/verzeichnis$ pwd&lt;br /&gt;
 /home/xinux/verzeichnis&lt;br /&gt;
&lt;br /&gt;
====umask====&lt;br /&gt;
Neue Dateien und Verzeichnisse werden mit ein und denselben Zufriffsrechten erzeugt.&lt;br /&gt;
 xinux@zero:~$ mkdir text&lt;br /&gt;
 xinux@zero:~$ touch textdat&lt;br /&gt;
 xinux@zero:~$ ls -ld text*&lt;br /&gt;
 drwxr-xr-x 2 xinux xinux 4096 2009-06-18 11:37 text&lt;br /&gt;
 -rw-r--r-- 1 xinux xinux    0 2009-06-18 11:37 textdat&lt;br /&gt;
&lt;br /&gt;
Zuständig für dieses Verhalten ist die sogenannte umask, die oft in der Datei&lt;br /&gt;
/etc/profile auf den Wert 022 voreingestellt ist. Zusätzlich wird noch eine&lt;br /&gt;
Maximalmaske benötigt, die sich für Verzeichnisse und andere Dateien&lt;br /&gt;
unterscheidet. Die bei der Erzeugung gesetzten Rechte entstehen nun, indem von&lt;br /&gt;
der Maximalmaske der durch die umask vorgegebene Wert subtrahiert wird:&lt;br /&gt;
&lt;br /&gt;
{| border=1 cellpadding=2&lt;br /&gt;
!&lt;br /&gt;
! Dateien&lt;br /&gt;
! Verzeichnisse&lt;br /&gt;
|-&lt;br /&gt;
| Systemvorgabe&lt;br /&gt;
| 666&lt;br /&gt;
| 777&lt;br /&gt;
|-&lt;br /&gt;
| -umask&lt;br /&gt;
| 022&lt;br /&gt;
| 022&lt;br /&gt;
|-&lt;br /&gt;
| Ergebnis&lt;br /&gt;
| 644&lt;br /&gt;
| 755&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
 xinux@zero:~$ grep umask /etc/profile&lt;br /&gt;
 umask 022&lt;br /&gt;
&lt;br /&gt;
==Gruppenzugehörigkeit==&lt;br /&gt;
===newgrp===&lt;br /&gt;
Ändert die Gruppenzugehörigkeit eines Benutzers auf die angegebene Gruppe. Wenn keine Gruppe angegeben wird, wird die &lt;br /&gt;
Anmeldegruppe des Benutzers verwendet. Die neue Gruppe wird anschließend fü Zugriffskontrollen verwendet.&lt;br /&gt;
&lt;br /&gt;
 newgrp Gruppenname&lt;br /&gt;
&lt;br /&gt;
 root@zero:~# newgrp hacker&lt;br /&gt;
 root@zero:~# id&lt;br /&gt;
 uid=0(root) gid=1006(hacker) Gruppen=0(root),1006(hacker)&lt;br /&gt;
&lt;br /&gt;
===chgrp===&lt;br /&gt;
Verändert die Besitzugehörigkeit zu der angegebenen Gruppe&lt;br /&gt;
&lt;br /&gt;
 chgrp [Optionen] Gruppe Datei(en)&lt;br /&gt;
&lt;br /&gt;
Optionen:&lt;br /&gt;
 -c Zeigt Veränderungen an&lt;br /&gt;
 -f Unterdrückt die meisten Fehlermeldungen&lt;br /&gt;
 -R Verändert Dateien und Verzeichnisse rekursiv&lt;br /&gt;
 -v Gibt geschwätzige Ausgabe aus.&lt;br /&gt;
&lt;br /&gt;
 root@zero:~# ls -l&lt;br /&gt;
 ...&lt;br /&gt;
 d-wx--x--x  3 root root 4096 2009-06-18 13:34 verzeichnis&lt;br /&gt;
 &lt;br /&gt;
 root@zero:~# chgrp -R xinux verzeichnis/&lt;br /&gt;
 root@zero:~# ls -l&lt;br /&gt;
 ...&lt;br /&gt;
 d-wx--x--x  3 root xinux 4096 2009-06-18 13:34 verzeichnis&lt;br /&gt;
&lt;br /&gt;
 xinux@zero:~$ cd /root/verzeichnis/&lt;br /&gt;
 xinux@zero:/root/verzeichnis$ pwd&lt;br /&gt;
 /root/verzeichnis&lt;br /&gt;
&lt;br /&gt;
===chown===&lt;br /&gt;
Ändert den Eigentümer von einer oder mehreren Dateien in den angegebenen Benutzer. &lt;br /&gt;
chown erlaubt ebenfalls das Ändern der Gruppeneigentümreschaft. Nur der aktuelle Eigentümer einer&lt;br /&gt;
Datei oder der Superuser (root) darf die Eigentumsverhältnisse ändern.&lt;br /&gt;
&lt;br /&gt;
 chown [Optionen] Benutzer(:Gruppe) Dateien&lt;br /&gt;
&lt;br /&gt;
Optionen:&lt;br /&gt;
 -c Gibt Informationen über die veränderten Dateien aus&lt;br /&gt;
 --dereference Symbolischen Links folgen&lt;br /&gt;
 -v Gibt Informationen über alle Dateien aus, die chown zu ändern versucht, egal, ob die Änderung erfolgt ist oder nicht&lt;br /&gt;
 -R Geht rekursiv durch alle Unterverzeichnisse und führt die Änderungen durch. &lt;br /&gt;
&lt;br /&gt;
 root@zero:~# chown -R xinux.xinux verzeichnis/&lt;br /&gt;
 root@zero:~# ls -l&lt;br /&gt;
 insgesamt 12&lt;br /&gt;
 drwx------ 13 root  root  4096 2009-04-21 15:11 profile&lt;br /&gt;
 --w-------  1 root  root     0 2009-06-18 11:13 test&lt;br /&gt;
 -rw-r--r--  1 root  root    40 2009-06-18 12:04 text&lt;br /&gt;
 drwxrwx--x  3 xinux xinux 4096 2009-06-18 13:39 verzeichnis&lt;br /&gt;
 &lt;br /&gt;
 root@zero:~# chown -R -c xinux.xinux verzeichnis/&lt;br /&gt;
 &lt;br /&gt;
 root@zero:~# chown -R -v xinux.xinux verzeichnis/&lt;br /&gt;
 Eigentümer von „verzeichnis/01“ als xinux:xinux erhalten&lt;br /&gt;
 Eigentümer von „verzeichnis/test“ als xinux:xinux erhalten&lt;br /&gt;
 Eigentümer von „verzeichnis/“ als xinux:xinux erhalten&lt;br /&gt;
&lt;br /&gt;
==Eingabe/Ausgabe==&lt;br /&gt;
Standardeingabe (0): Laufende Programme erwarten von hier ihre Eingaben (normalerweise handelt es sich um die Tastatur).&lt;br /&gt;
&lt;br /&gt;
Standardausgabe (1): Programme schreiben auf diese ihre Ausgaben (Bildschirm).&lt;br /&gt;
&lt;br /&gt;
Standardfehlerausgabe (2) : Fehlerausgaben landen hier (Bildschirm, aber nur die aktive Konsole).&lt;br /&gt;
&lt;br /&gt;
[[Bild:std.jpg]]&lt;br /&gt;
&lt;br /&gt;
===cat===&lt;br /&gt;
Das Programm cat liest von STDIN und gibt es STDOUT wieder aus&lt;br /&gt;
&lt;br /&gt;
Einlesen der Datei text&lt;br /&gt;
 root@zero:~# cat &amp;lt; text&lt;br /&gt;
 wichtig&lt;br /&gt;
&lt;br /&gt;
Schreiben in die Datei text, dies überschreibt den bisherigen Inhalt der Datei&lt;br /&gt;
 root@zero:~# cat &amp;gt; text&lt;br /&gt;
 sogar noch wichtiger &lt;br /&gt;
 &lt;br /&gt;
Ausgeben der Datei text&lt;br /&gt;
 root@zero:~# cat text &lt;br /&gt;
 sogar noch wichtiger&lt;br /&gt;
&lt;br /&gt;
Lesen aus der Datei text und schreiben in die Datei neuertext&lt;br /&gt;
 root@zero:~# cat &amp;lt; text &amp;gt; neuertext&lt;br /&gt;
 root@zero:~# cat neuertext&lt;br /&gt;
 sogar noch wichtiger&lt;br /&gt;
&lt;br /&gt;
Anhängen der Ausgabe von date an die Datei neuertext&lt;br /&gt;
 root@zero:~# date &amp;gt;&amp;gt; neuertext&lt;br /&gt;
 root@zero:~# cat neuertext&lt;br /&gt;
 sogar noch wichtiger&lt;br /&gt;
 Do 18. Jun 14:08:58 CEST 2009&lt;br /&gt;
&lt;br /&gt;
Umleiten des Standardfehlerkanals nach error&lt;br /&gt;
 root@zero:~# rm sux 2&amp;gt; error&lt;br /&gt;
 root@zero:~# more error&lt;br /&gt;
 rm: Entfernen von „sux“ nicht möglich: No such file or directory&lt;br /&gt;
&lt;br /&gt;
===Umleitungen===&lt;br /&gt;
Nacheinander auszuführende Kommandos&lt;br /&gt;
 root@zero:~# pwd; date&lt;br /&gt;
 /root&lt;br /&gt;
 Do 18. Jun 14:13:05 CEST 2009&lt;br /&gt;
 &lt;br /&gt;
Übergeben der Ausgabe von tail als Eingabe von grep mit Hilfe der Pipe &amp;quot;|&amp;quot;&lt;br /&gt;
 root@zero:~# tail /var/log/auth.log | grep xinux&lt;br /&gt;
 Jun 18 13:52:33 zero nss_wins[11433]: pam_unix(login:session): session closed for user xinux&lt;br /&gt;
&lt;br /&gt;
Übergeben der letzten 100 Zeilen von syslog als Eingabe von grep&lt;br /&gt;
 root@zero:~# tail /var/log/syslog -n 100 | grep error&lt;br /&gt;
 Jun 18 09:30:54 zero kernel: [154384.692135] end_request: I/O error, dev fd0, sector 0&lt;br /&gt;
 Jun 18 09:30:54 zero kernel: [154384.712137] end_request: I/O error, dev fd0, sector 0&lt;br /&gt;
&lt;br /&gt;
==tr==&lt;br /&gt;
tr ist ein Programm um Zeichen zu übersetzen. Dies betrifft nur die Ausgabe, die Datei selbst bleibt unverändert.&lt;br /&gt;
&lt;br /&gt;
Ersetzt Kleinbuchstaben durch Großbuchstaben aus der Datei text&lt;br /&gt;
 root@zero:~# tr &amp;quot;a-z&amp;quot; &amp;quot;A-Z&amp;quot; &amp;lt; text&lt;br /&gt;
 SOGAR NOCH WICHTIGER&lt;br /&gt;
 123&lt;br /&gt;
 34&lt;br /&gt;
 4711&lt;br /&gt;
 TEST&lt;br /&gt;
&lt;br /&gt;
Ersetzt alle Zahlen durch X&lt;br /&gt;
 root@zero:~# tr &amp;quot;0-9&amp;quot; &amp;quot;X&amp;quot; &amp;lt; text&lt;br /&gt;
 sogar noch wichtiger&lt;br /&gt;
 XXX&lt;br /&gt;
 XX&lt;br /&gt;
 XXXX&lt;br /&gt;
 test&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
 root@zero:~# cat &amp;gt; test&lt;br /&gt;
 +++++&lt;br /&gt;
 ###&lt;br /&gt;
 1111&lt;br /&gt;
&lt;br /&gt;
-s löscht mehrfach kommende Zeichen&lt;br /&gt;
 root@zero:~# tr '''-s''' &amp;quot;+&amp;quot; &amp;lt; test&lt;br /&gt;
 +&lt;br /&gt;
 ###&lt;br /&gt;
 1111&lt;br /&gt;
&lt;br /&gt;
-d löscht vorkommende Zeichen &lt;br /&gt;
 root@zero:~# tr '''-d''' &amp;quot;#&amp;quot; &amp;lt; test&lt;br /&gt;
 +++++ &lt;br /&gt;
 &lt;br /&gt;
 1111&lt;br /&gt;
&lt;br /&gt;
==cut==&lt;br /&gt;
Spalten aus einer Datei schneiden. Dies betrifft nur die Ausgabe, die Datei selbst bleibt unverändert.&lt;br /&gt;
 &lt;br /&gt;
Schneidet die erste Spalte aus, der Delimiter ist : &lt;br /&gt;
 root@zero:~# cut -f 1 -d : /etc/passwd&lt;br /&gt;
 root&lt;br /&gt;
 daemon&lt;br /&gt;
 bin&lt;br /&gt;
 ...&lt;br /&gt;
 xinux&lt;br /&gt;
&lt;br /&gt;
 root@zero:~# more test&lt;br /&gt;
 1234#5678#9999&lt;br /&gt;
 &lt;br /&gt;
Schneidet die zweite Spalte aus, der Delimiter ist #&lt;br /&gt;
 root@zero:~# cut -f 2 -d &amp;quot;#&amp;quot; &amp;lt; test&lt;br /&gt;
 5678&lt;br /&gt;
&lt;br /&gt;
Schneidet bis zum 3 Zeichen ab&lt;br /&gt;
 root@zero:~$ echo S01policykit | cut -c 4-&lt;br /&gt;
 policykit&lt;br /&gt;
&lt;br /&gt;
==expand==&lt;br /&gt;
Ersetzt Tabulatorzeichen durch Folgen von Leerzeichen und schreibt das Ergebnis auf die Standardausgabe&lt;br /&gt;
 root@zero:~# expand /etc/samba/smb.conf&lt;br /&gt;
 ...&lt;br /&gt;
&lt;br /&gt;
==fmt==&lt;br /&gt;
#Setzt den Text der Dateien im Blocksatz der angegebenen Breite durch Auffüllen von Zeilen und Entfernen von Zeilenwechseln.&lt;br /&gt;
Standardgemäß werden Leerzeilen, die Position von Leerzeichen und der Einzug am Zeilenanfang erhalten. fmt versucht, &lt;br /&gt;
Zeilenumbrüche an Satzenden durchzuführen sowie sie nach dem ersten oder vor dem letzten Wort eines Satzes zu vermeiden. &lt;br /&gt;
 &lt;br /&gt;
 fmt [Optionen] [Dateien]&lt;br /&gt;
&lt;br /&gt;
Optionen&lt;br /&gt;
&lt;br /&gt;
* -p ''Präfix'': Formatiert nur Zeilen, die mit ''Präfix'' anfangen&lt;br /&gt;
 root@zero:/tmp# fmt -p '#' text&lt;br /&gt;
 #Setzt den Text der Dateien im Blocksatz der angegebenen Breite durch&lt;br /&gt;
 #Auffüllen von Zeilen und Entfernen von Zeilenwechseln.  Standardgemäß&lt;br /&gt;
 #werden Leerzeilen, die Position von Leerzeichen und der Einzug am&lt;br /&gt;
 #Zeilenanfang erhalten. fmt versucht,&lt;br /&gt;
 Zeilenumbrüche an Satzenden durchzuführen sowie sie nach dem ersten oder vor dem letzten Wort eines Satzes zu vermeiden.&lt;br /&gt;
&lt;br /&gt;
* -u : Erzwingt genau ein Leerzeichen zwischen Wörtern und zwei Leerzeichen zwischen Sätzen&lt;br /&gt;
&lt;br /&gt;
* -w ''Breite'': Setzt die Ausgabebreite auf ''Breite''&lt;br /&gt;
 root@zero:/tmp# fmt -w 30 text&lt;br /&gt;
 #Setzt den Text der Dateien&lt;br /&gt;
 im Blocksatz der angegebenen&lt;br /&gt;
 Breite durch Auffüllen&lt;br /&gt;
 von Zeilen und Entfernen&lt;br /&gt;
 von Zeilenwechseln.&lt;br /&gt;
 #Standardgemäß werden&lt;br /&gt;
 Leerzeilen, die Position von&lt;br /&gt;
 Leerzeichen und der Einzug am&lt;br /&gt;
 Zeilenanfang erhalten. fmt&lt;br /&gt;
 versucht, Zeilenumbrüche&lt;br /&gt;
 an Satzenden durchzuführen&lt;br /&gt;
 sowie sie nach dem ersten&lt;br /&gt;
 oder vor dem letzten Wort&lt;br /&gt;
 eines Satzes zu vermeiden.&lt;br /&gt;
&lt;br /&gt;
==join==&lt;br /&gt;
Führt die Zeilen zweier sortierter Dateien anhand von '''Übereinstimmungen''' in einem gemeinsamen Feld zusammen.&lt;br /&gt;
&lt;br /&gt;
 root@zero:~# more name&lt;br /&gt;
 1. karl&lt;br /&gt;
 2. heinz&lt;br /&gt;
 3. hans&lt;br /&gt;
 4. otto&lt;br /&gt;
 root@zero:~# more tel&lt;br /&gt;
 1. 1234&lt;br /&gt;
 2. 4321&lt;br /&gt;
 3. 222&lt;br /&gt;
 4. 121212&lt;br /&gt;
 root@zero:~# join name tel &amp;gt; telefonbuch&lt;br /&gt;
 root@zero:~# more telefonbuch&lt;br /&gt;
 1. karl 1234&lt;br /&gt;
 2. heinz 4321&lt;br /&gt;
 3. hans 222&lt;br /&gt;
 4. otto 121212&lt;br /&gt;
&lt;br /&gt;
 root@zero:~# join -t : /etc/passwd /etc/shadow&lt;br /&gt;
 ....&lt;br /&gt;
 daemon:x:1:1:daemon:/usr/sbin:/bin/sh:*:14181:0:99999:7:::&lt;br /&gt;
 bin:x:2:2:bin:/bin:/bin/sh:*:14181:0:99999:7:::&lt;br /&gt;
 sys:x:3:3:sys:/dev:/bin/sh:*:14181:0:99999:7:::&lt;br /&gt;
 sync:x:4:65534:sync:/bin:/bin/sync:*:14181:0:99999:7:::&lt;br /&gt;
 ...&lt;br /&gt;
&lt;br /&gt;
join in dat1 nach Feld 3 und in dat2 nach Feld 2&lt;br /&gt;
 thomas@lydia:~$ cat dat1 &lt;br /&gt;
 hugo:ps:1111&lt;br /&gt;
 erwin:zw:2222&lt;br /&gt;
 karl:sb:3333&lt;br /&gt;
 rudi:kl:4444&lt;br /&gt;
 thomas@lydia:~$ cat dat2&lt;br /&gt;
 blau:1111:svn&lt;br /&gt;
 grün:2222:fcs&lt;br /&gt;
 gelb:3333:fch&lt;br /&gt;
 rot:4444:fck&lt;br /&gt;
 thomas@lydia:~$ join -t : -1 3 -2 2 dat1 dat2 &lt;br /&gt;
 1111:hugo:ps:blau:svn&lt;br /&gt;
 2222:erwin:zw:grün:fcs&lt;br /&gt;
 3333:karl:sb:gelb:fch&lt;br /&gt;
 4444:rudi:kl:rot:fck&lt;br /&gt;
&lt;br /&gt;
==nl==&lt;br /&gt;
Nummeriert die Zeilen in einer Datei.&lt;br /&gt;
&lt;br /&gt;
 root@zero:~# nl /etc/passwd                                                   &lt;br /&gt;
     1  root:x:0:0:root:/root:/bin/bash                                       &lt;br /&gt;
     2  daemon:x:1:1:daemon:/usr/sbin:/bin/sh                                 &lt;br /&gt;
     3  bin:x:2:2:bin:/bin:/bin/sh                                            &lt;br /&gt;
     4  sys:x:3:3:sys:/dev:/bin/sh                                            &lt;br /&gt;
     5  sync:x:4:65534:sync:/bin:/bin/sync&lt;br /&gt;
     ...&lt;br /&gt;
Nummereriet mit führenden Nullen der Separatir ist ein :&lt;br /&gt;
 root@zero:~# nl -s : -n rz dat1&lt;br /&gt;
&lt;br /&gt;
==od==&lt;br /&gt;
Gibt Dateien im Oktal und anderen Formaten aus.&lt;br /&gt;
&lt;br /&gt;
 od [Optionen] Datei&lt;br /&gt;
&lt;br /&gt;
* -j ''Bytes'': Überspringt die Anzahl ''Bytes'' einer Datei&lt;br /&gt;
* -N ''Bytes'': Gibt nur die Anzahl ''Bytes'' aus&lt;br /&gt;
* -c : Gebe ASCII Zeichen aus&lt;br /&gt;
* -f : Gebe Fließkommazahlen aus&lt;br /&gt;
* -i : Gebe Dezimal Integer aus&lt;br /&gt;
* -l : Gebe Dezimal Long aus&lt;br /&gt;
* -o : Gebe Oktal 2 Byte Einheiten aus&lt;br /&gt;
* -s : Gebe Dezimal 2 Byte Einheiten aus&lt;br /&gt;
* -x : Gebe Hexadezimale 2 Byte einheiten aus&lt;br /&gt;
&lt;br /&gt;
Beispiele&lt;br /&gt;
&lt;br /&gt;
Gebe Master Boot Record (die ersten 512 Byte der Festplatte /dev/sda) als Hexadezimal aus&lt;br /&gt;
 root@zero:~# od '''-x -N''' 512 /dev/sda&lt;br /&gt;
 0000000 48eb 1090 d08e 00bc b8b0 0000 d88e c08e&lt;br /&gt;
 0000020 befb 7c00 00bf b906 0200 a4f3 21ea 0006&lt;br /&gt;
 0000040 be00 07be 0438 0b75 c683 8110 fefe 7507&lt;br /&gt;
 0000060 ebf3 b416 b002 bb01 7c00 80b2 748a 0203&lt;br /&gt;
 0000100 00ff 2000 0001 0000 0200 90fa f690 80c2&lt;br /&gt;
 ...&lt;br /&gt;
&lt;br /&gt;
Schreibe &amp;quot;suxer&amp;quot; in die Datei test&lt;br /&gt;
 root@zero:~# echo &amp;quot;suxer&amp;quot; &amp;gt; test&lt;br /&gt;
Ausgabe Hexadezimal&lt;br /&gt;
 root@zero:~# od -x test&lt;br /&gt;
 0000000 7573 6578 0a72&lt;br /&gt;
 0000006&lt;br /&gt;
&lt;br /&gt;
Ausgabe ASCII Zeichen&lt;br /&gt;
 root@zero:~# od -c test&lt;br /&gt;
 0000000   s   u   x   e   r  \n&lt;br /&gt;
 0000006&lt;br /&gt;
&lt;br /&gt;
==paste==&lt;br /&gt;
Fügt die Zeilen von zwei oder mehr Dateien horizontal zusammen&lt;br /&gt;
 root@zero:~# paste name tel&lt;br /&gt;
 1. karl 1. 1234&lt;br /&gt;
 2. heinz        2. 4321&lt;br /&gt;
 3. hans 3. 222&lt;br /&gt;
 4. otto 4. 121212&lt;br /&gt;
&lt;br /&gt;
==pr==&lt;br /&gt;
Bereitet Textdateien zum Drucken vor.&lt;br /&gt;
&lt;br /&gt;
 root@zero:~# echo &amp;quot;Plan für heute&amp;quot; &amp;gt; dokument&lt;br /&gt;
 root@zero:~# more dokument&lt;br /&gt;
 Plan für heute&lt;br /&gt;
 root@zero:~# pr dokument   &lt;br /&gt;
  &lt;br /&gt;
 &lt;br /&gt;
 2009-06-19 12:44                    dokument                     Seite 1&lt;br /&gt;
 &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
 Plan für heute&lt;br /&gt;
&lt;br /&gt;
Anmerkung Ausmaße der Bildschirmausgabe wie eine Druckseite.&lt;br /&gt;
&lt;br /&gt;
==sed==&lt;br /&gt;
streaming editor. Mit sed ist es möglich, den Inhalt einer Datei automatisch (nicht interaktiv) zu&lt;br /&gt;
bearbeiten. Wie unter Linux üblich, wird auch hier der Text nicht wirklich verändert sondern die &lt;br /&gt;
Änderung erfolgt über die Standardausgabe, die wieder umgeleitet werden kann. Die Syntax ist ähnlich &lt;br /&gt;
des ex modus von vi. Reguläre Ausdrücke können nach Belieben benutzt werden. &lt;br /&gt;
&lt;br /&gt;
Optionen:&lt;br /&gt;
 -e Zeichenkette  wendet die Editorbefehle aus Zeichenkette auf den Text an.&lt;br /&gt;
 -n gibt nur die Zeilen aus, die explizit (durch &amp;quot;p&amp;quot; ausgedruckt werden sollen&lt;br /&gt;
&lt;br /&gt;
Gibt die dritte Zeile der Datei text aus&lt;br /&gt;
 root@zero:~# sed -n &amp;quot;3p&amp;quot; text&lt;br /&gt;
 34&lt;br /&gt;
&lt;br /&gt;
Gibt die erste bis dritte Zeile von text aus&lt;br /&gt;
 root@zero:~# sed -n &amp;quot;1,3p&amp;quot; text&lt;br /&gt;
 sogar noch wichtiger&lt;br /&gt;
 123&lt;br /&gt;
 34&lt;br /&gt;
&lt;br /&gt;
Löschen der Zeile mit &amp;quot;sogar&amp;quot;&lt;br /&gt;
 root@zero:~# sed -e '/sogar/d' &amp;lt; text&lt;br /&gt;
 123&lt;br /&gt;
 34&lt;br /&gt;
 4711&lt;br /&gt;
 test&lt;br /&gt;
&lt;br /&gt;
und schreiben in text2&lt;br /&gt;
 root@zero:~# sed -e '/sogar/d' &amp;lt; text &amp;gt; text2&lt;br /&gt;
 root@zero:~# more text2&lt;br /&gt;
 123&lt;br /&gt;
 34&lt;br /&gt;
 4711&lt;br /&gt;
 test&lt;br /&gt;
&lt;br /&gt;
Alle 3en durch DREI ersetzen&lt;br /&gt;
 root@zero:~# sed -e 's/3/DREI/g' &amp;lt; text&lt;br /&gt;
 sogar noch wichtiger&lt;br /&gt;
 12DREI&lt;br /&gt;
 DREI4&lt;br /&gt;
 4711&lt;br /&gt;
 test&lt;br /&gt;
&lt;br /&gt;
==wc==&lt;br /&gt;
Zählt die Anzahl von Zeichen, Wörter oder Zeilen&lt;br /&gt;
&lt;br /&gt;
Optionen&lt;br /&gt;
* -m : Zählt die Anzahl der Zeichen&lt;br /&gt;
 root@zero:~# more name&lt;br /&gt;
 1. karl&lt;br /&gt;
 2. heinz&lt;br /&gt;
 3. hans&lt;br /&gt;
 4. otto&lt;br /&gt;
 root@zero:~# wc '''-m''' tel&lt;br /&gt;
 33 tel&lt;br /&gt;
&lt;br /&gt;
* -w : Zählt die Anzahl der Wörter (einschließlich Zahlen und andere Zeichen)&lt;br /&gt;
 root@zero:~# wc '''-w''' name&lt;br /&gt;
 8 name&lt;br /&gt;
&lt;br /&gt;
* -l : Zählt die Anzahl der Zeilen&lt;br /&gt;
 root@zero:~# wc '''-l''' name&lt;br /&gt;
 4 name&lt;br /&gt;
&lt;br /&gt;
==Sort==&lt;br /&gt;
&lt;br /&gt;
Zum sortieren von Dateien nach Feldern benutzt man sort. sort liest von STDIN man kann die Datei aber auch als Argument übergeben. &lt;br /&gt;
&lt;br /&gt;
Sortiert nach dem ersten Feld&lt;br /&gt;
  root@zero:~# sort /etc/passwd 	 &lt;br /&gt;
&lt;br /&gt;
Es wird geprüft ob die Datei schon sortiert ist &lt;br /&gt;
 root@zero:~# sort -c /etc/passwd 	&lt;br /&gt;
&lt;br /&gt;
Sortiert nach dem ersten Feld (Richtungsumkehr)  &lt;br /&gt;
 root@zero:~#  sort -r /etc/passwd&lt;br /&gt;
&lt;br /&gt;
Führende Leersortzeichen werden ignoriert &lt;br /&gt;
 root@zero:~# sort -b /etc/passwd&lt;br /&gt;
&lt;br /&gt;
Ausgabe  in die Datei pass&lt;br /&gt;
 root@zero:~# sort  /etc/passwd   -o pass	 &lt;br /&gt;
&lt;br /&gt;
nimmt : als Trenner -Voreinstellung ist TAB&lt;br /&gt;
  root@zero:~# sort -t : /etc/passwd&lt;br /&gt;
&lt;br /&gt;
sortiert nach dem  3 Feld,  der Trenner ist : und es wird nummerisch sortiert&lt;br /&gt;
&lt;br /&gt;
 root@zero:~# sort -t: +2 -n /etc/passwd		&lt;br /&gt;
&lt;br /&gt;
sortiert nach dem  3 Feld,  der Trenner ist : und es wird nummerisch sortiert&lt;br /&gt;
					&lt;br /&gt;
 root@zero:~# sort -t: -k 3 -n /etc/passwd&lt;br /&gt;
&lt;br /&gt;
Sortiert nach dem  3  bis zum 5 Feld, der Trenner ist : und es wird nummerisch sortiert&lt;br /&gt;
	&lt;br /&gt;
 root@zero:~# sort -t: -k 3,5 -n /etc/passwd	&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==INodes==&lt;br /&gt;
Inode (oder I-Node) wird im Deutschen am besten als Informationsknoten oder&lt;br /&gt;
Indexeintrag bezeichnet. Er fasst alle Attribute einer Datei zusammen außer dem Inhalt&lt;br /&gt;
und dem Namen der Datei.&lt;br /&gt;
&lt;br /&gt;
===Daten===&lt;br /&gt;
{| border=1 cellpadding=2&lt;br /&gt;
|type&lt;br /&gt;
|Der Typ der Datei wird als einzelner Buchstabe angezeigt. Der Typ einer Datei wird beim Anlegen der Datei festgelegt&lt;br /&gt;
|-&lt;br /&gt;
|Permissions &lt;br /&gt;
|Die Zugriffsrechte der Datei werden in den 12 Bit sstrwxrwxrwx abgespeichert.Wenn sie gesetzt sind, werden sie bei &lt;br /&gt;
der Ausgabe an Stelle der x-Rechte ausgegeben. Die Zugriffsrechte können mit dem Kommando chmod verändert werden.&lt;br /&gt;
|-&lt;br /&gt;
|link count&lt;br /&gt;
|In UNIX kann eine Datei mehr als einen Namen haben. Der Link Count gibt die Anzahl der Namen einer Datei an. Er kann&lt;br /&gt;
mit dem Kommando ln erhöht und dem Kommando rm erniedrigt werden.&lt;br /&gt;
|-&lt;br /&gt;
|owner&lt;br /&gt;
|Für den Dateieigentümer gelten die in der ersten rwx-Gruppe festgelegten Zugriffsrechte. Standardmäßig ist der &lt;br /&gt;
Eigentümer einer Datei derjenige Benutzer, der die Datei angelegt hat.&lt;br /&gt;
|-&lt;br /&gt;
|group&lt;br /&gt;
|Für Benutzer, die in der gleichen Gruppe sind, der die Datei angehört, gelten die in der zweiten rwx-Gruppe festgelegten&lt;br /&gt;
Zugriffsrechte. In System V gehört eine Datei standardmäßig der Gruppe an, in der der anlegende Benutzer gerade ist.&lt;br /&gt;
|-&lt;br /&gt;
|size&lt;br /&gt;
|Bei normalen Dateien und Verzeichnissen gibt diese Information die Länge der Datei in Byte an.&lt;br /&gt;
|-&lt;br /&gt;
|access time&lt;br /&gt;
|Die Zugriffszeit gibt den Zeitpunkt des letzten Lesezugriffes auf eine Datei an. Aus Effizienzgründen wird die &lt;br /&gt;
Zugriffszeit an Verzeichnissen nicht gesetzt, wenn ein Verzeichnis durchsucht wird, obwohl man dies erwarten könnte. ''(ls -l --time=atime)''&lt;br /&gt;
|-&lt;br /&gt;
|modification time&lt;br /&gt;
|Die Modifikationszeit gibt die Zeit des letzten Schreibzugriffes auf die Daten der Datei an. Intern speichert UNIX &lt;br /&gt;
die Zeit als Sekunden seit Beginn des Jahres 1970 und in GMT ab. Für die Ausgabe wird dies in ein besser lesbares &lt;br /&gt;
Format in der lokalen Zeitzone umgewandelt. ''(ls -l)''&lt;br /&gt;
|-&lt;br /&gt;
|change time &lt;br /&gt;
|Die Veränderungszeit gibt das Datum der letzten Statusänderung der Datei an. Sie wird immer dann gesetzt, wenn die &lt;br /&gt;
Informationen über die Datei sich ändern (Datum der Erzeugung wird nicht gespeichert) ''(ls -lc)''&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
===Dateiarten===&lt;br /&gt;
{| border=1 cellpadding=2&lt;br /&gt;
!Zeichen&lt;br /&gt;
!Typ&lt;br /&gt;
!Zweck&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;nowiki&amp;gt;-&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
|file&lt;br /&gt;
|normale Datei&lt;br /&gt;
|-&lt;br /&gt;
|d&lt;br /&gt;
|directory&lt;br /&gt;
|Verzeichnis&lt;br /&gt;
|-&lt;br /&gt;
|b&lt;br /&gt;
|block device&lt;br /&gt;
|Gerätedatei&lt;br /&gt;
|-&lt;br /&gt;
|c&lt;br /&gt;
|character device&lt;br /&gt;
|Gerätedatei&lt;br /&gt;
|-&lt;br /&gt;
|l&lt;br /&gt;
|link&lt;br /&gt;
|Querverweis&lt;br /&gt;
|-&lt;br /&gt;
|p&lt;br /&gt;
|named pipe&lt;br /&gt;
|Benannte Pipeline&lt;br /&gt;
|-&lt;br /&gt;
|s&lt;br /&gt;
|socket&lt;br /&gt;
|Netzwerkverbindung&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
====Normale Dateien====&lt;br /&gt;
Unter einer normalen Datei versteht man die Ansammlung von Daten. Dies kann ein Text, Programm, Bild oder sonstiges sein. &lt;br /&gt;
Beispiel&lt;br /&gt;
 root@zero:~# ls -l text | cut -c 1&lt;br /&gt;
 -&lt;br /&gt;
&lt;br /&gt;
====Verzeichnisse====&lt;br /&gt;
Dateien werden in Verzeichnissen gespeichert, nur so ist eine Ordnung möglich. &lt;br /&gt;
 root@zero:~# mkdir -v Ordner&lt;br /&gt;
 mkdir: Verzeichnis „Ordner“ angelegt&lt;br /&gt;
 &lt;br /&gt;
 root@zero:~# ls -ld Ordner | cut -c 1&lt;br /&gt;
 d&lt;br /&gt;
&lt;br /&gt;
====Gerätedateien (Block und Char)====&lt;br /&gt;
Gerätedateien ermöglichen Anwendungsprogrammen unter Benutzung des  Kernels den Zugriff auf die Hardwarekomponenten des Systems. Ansprechbar über Major und Minor Nummern &lt;br /&gt;
&lt;br /&gt;
Beispiele&lt;br /&gt;
&lt;br /&gt;
Sicherung des Master Boot Records der ersten Festplatte&lt;br /&gt;
 root@zero:~# dd if=/dev/sda of=/tmp/mbr.img bs=512 count=1&lt;br /&gt;
&lt;br /&gt;
Block Device &lt;br /&gt;
 root@zero:~# ls -l /dev/sda | cut -c 1 &lt;br /&gt;
 b&lt;br /&gt;
&lt;br /&gt;
Character Device &lt;br /&gt;
 root@zero:~# ls -l /dev/ttyS0  | cut -c 1 &lt;br /&gt;
 c&lt;br /&gt;
&lt;br /&gt;
Erstellen einer Gerätedatei&lt;br /&gt;
 root@zero:/dev# mknod sata1 b 8 0 &lt;br /&gt;
 root@zero:/dev# fdisk -l /dev/sata1 &lt;br /&gt;
 &lt;br /&gt;
 Platte /dev/sata1: 6442 MByte, 6442450944 Byte&lt;br /&gt;
 255 Köpfe, 63 Sektoren/Spuren, 783 Zylinder&lt;br /&gt;
 Einheiten = Zylinder von 16065 × 512 = 8225280 Bytes&lt;br /&gt;
 Disk identifier: 0x0005efab&lt;br /&gt;
 &lt;br /&gt;
       Gerät  boot.     Anfang        Ende     Blöcke   Id  System&lt;br /&gt;
 /dev/sata1p1   *           1         743     5968116   83  Linux&lt;br /&gt;
 /dev/sata1p2             744         783      321300    5  Erweiterte&lt;br /&gt;
 /dev/sata1p5             744         783      321268+  82  Linux Swap / Solaris&lt;br /&gt;
&lt;br /&gt;
====Named Pipes====&lt;br /&gt;
Benannte Pipes (Named Pipes) können dagegen auch zur Kommunikation zwischen Prozessen eingesetzt werden, die nicht miteinander&lt;br /&gt;
verwandt sind und sich darüber hinaus auf unterschiedlichen Rechnern innerhalb eines Netzwerkes befinden dürfen. Sie sind &lt;br /&gt;
flexibler als anonyme Pipes und eignen sich für sogenannte Client-Server-Anwendungen (es lassen sich auch RPCs realisieren).&lt;br /&gt;
Benannte Pipes ermöglichen die gleichzeitige Kommunikation in beide Richtungen, das heißt, Daten können im Vollduplexbetrieb &lt;br /&gt;
zwischen den Prozessen ausgetauscht werden.&lt;br /&gt;
 &lt;br /&gt;
Erstelle Named Pipe mit Namen /tmp/roehre. Schreibe &amp;quot;hallo welt&amp;quot; in die Pipe und bleibe&lt;br /&gt;
 xinux@zero:~$ mkfifo /tmp/roehre&lt;br /&gt;
 xinux@zero:~$ echo hallo welt &amp;gt; /tmp/roehre &lt;br /&gt;
&lt;br /&gt;
Gebe Inhalt der Pipe mit cat aus&lt;br /&gt;
 root@zero:~# cat &amp;lt; /tmp/roehre &lt;br /&gt;
 hallo welt&lt;br /&gt;
 root@zero:~# ls -l /tmp/roehre | cut -c 1&lt;br /&gt;
 p&lt;br /&gt;
&lt;br /&gt;
====Sockets====&lt;br /&gt;
Schnittstelle um es lokalen Anwendungen zu ermöglichen, miteinander Netwerkmässig zu kommunizieren.&lt;br /&gt;
&lt;br /&gt;
 root@lydia:~# netstat  -lnxp | tail -1&lt;br /&gt;
  unix  2 [ ACC ] STREAM HÖRT 21951 6646/nm-applet /tmp/orbit-thomas/linc-19f6-0-2b9b81095cede&lt;br /&gt;
&lt;br /&gt;
 root@lydia:~# ls -l /tmp/orbit-thomas/linc-19f6-0-2b9b81095cede  | cut -c 1 &lt;br /&gt;
 s&lt;br /&gt;
&lt;br /&gt;
====Links====&lt;br /&gt;
Bei Links handelt es sich um symbolische Verweise auf andere Dateien&lt;br /&gt;
&lt;br /&gt;
'''Softlink'''&lt;br /&gt;
Ein Softlink ist eine Datei die nur auf den Namen einer anderen Datei verweist. Wenn die Originaldatei gelöscht wird, zeigt &lt;br /&gt;
der Link ins Leere. &lt;br /&gt;
&lt;br /&gt;
 ln -s datei softlink&lt;br /&gt;
&lt;br /&gt;
{| border=1 cellpadding=2&lt;br /&gt;
| Vorteile&lt;br /&gt;
| Symbolische Links können auch auf Verzeichnisse angelegt werden&amp;lt;br&amp;gt;Sie sind partitionsübergreifend&amp;lt;br&amp;gt;Man kann sie auf Dateien anlegen, die noch nicht existieren&lt;br /&gt;
|-&lt;br /&gt;
| Nachteile&lt;br /&gt;
| Wenn das Original gelöscht ist, ist kein Zugriff mehr möglich&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Beispiel&lt;br /&gt;
 root@zero:~# ln -s text verweis&lt;br /&gt;
 root@zero:~# ls -l verweis&lt;br /&gt;
 lrwxrwxrwx 1 root root 4 2009-06-18 15:48 verweis -&amp;gt; text&lt;br /&gt;
&lt;br /&gt;
'''Hardlinks'''&lt;br /&gt;
 ln datei hardlink&lt;br /&gt;
Eigentlich ist jede Datei ein Hardlink. Ein Hardlink ist ein Verzeichniseintrag,&lt;br /&gt;
der auf eine Inode verweist. Beim Erzeugen einer Datei verweist ein Eintrag auf&lt;br /&gt;
eine Inode. Man kann dann weitere Verweise erzeugen. Der Linkcounter wird&lt;br /&gt;
jeweils um 1 erhöht. Beim Löschen einer Datei wird er jeweils um 1 reduziert.&lt;br /&gt;
Wird der Wert 0 erreicht, ist die Datei gelöscht.&lt;br /&gt;
{| border=1 cellpadding=2&lt;br /&gt;
| Vorteile&lt;br /&gt;
|Zugriff auf die Daten, selbst wenn das Orginal gelöscht ist.&lt;br /&gt;
|-&lt;br /&gt;
|Nachteile&lt;br /&gt;
|Man kann keine Hardlinks auf Verzeichnisse anlegen.&lt;br /&gt;
Ist nur innerhalb einer Partion möglich.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Beispiel&lt;br /&gt;
 root@zero:~# touch 1&lt;br /&gt;
 root@zero:~# echo &amp;quot;text&amp;quot; &amp;gt; 1&lt;br /&gt;
 root@zero:~# ln 1 2&lt;br /&gt;
 root@zero:~# more 2&lt;br /&gt;
 text&lt;br /&gt;
 root@zero:~# echo &amp;quot;doch kein text&amp;quot; &amp;gt; 1&lt;br /&gt;
 root@zero:~# more 1&lt;br /&gt;
 doch kein text&lt;br /&gt;
 root@zero:~# more 2&lt;br /&gt;
 doch kein text&lt;br /&gt;
&lt;br /&gt;
Weitere Optionen:&lt;br /&gt;
 -b sichert Dateien, statt sie zu überschreiben &lt;br /&gt;
 -f Überschreibt bestehende, gleichnamige Dateien&lt;br /&gt;
 -i fragt vor dem Überschreiben nach Bestätigung&lt;br /&gt;
 -v ausführliche Meldungen&lt;br /&gt;
Softlink mit dem Namen passwd im Homeverzeichnis angelegt&lt;br /&gt;
 xinux@zero:~$ ln -vs /etc/passwd .&lt;br /&gt;
 „./passwd“ -&amp;gt; „/etc/passwd“&lt;br /&gt;
Softlink mit dem Namen passwd im Homeverzeichnis angelegt(Original exestiert nicht) &lt;br /&gt;
 xinux@zero:~$ ln -vs /etc/hund .&lt;br /&gt;
 „./hund“ -&amp;gt; „/etc/hund“&lt;br /&gt;
Hardlink mit dem Namen hosts im Homeverzeichnis angelegt&lt;br /&gt;
  xinux@zero:~$ ln -v /etc/hosts .&lt;br /&gt;
 „./hosts“ =&amp;gt; „/etc/hosts“&lt;br /&gt;
Auf eine nicht existierende Datei kann kein Hardlink angelegt werden!&lt;br /&gt;
 xinux@zero:~$ ln -v /etc/katze .&lt;br /&gt;
 ln: Zugriff auf „/etc/katze“: No such file or directory&lt;br /&gt;
&lt;br /&gt;
==Prozesse==&lt;br /&gt;
===Was ist ein Prozess?===&lt;br /&gt;
Ein Prozess setzt sich aus zwei Teilen zusammen:&lt;br /&gt;
&lt;br /&gt;
1.Programm, das in den Hauptspeicher geladen wurde&lt;br /&gt;
&lt;br /&gt;
2.Prozessumgebung&lt;br /&gt;
&lt;br /&gt;
Unter einem Prozess versteht man ein Programm (binär), das in den Hauptspeicher&lt;br /&gt;
geladen wurde. Also nicht das Program selbst, das auf der Festplatte liegt ist der&lt;br /&gt;
Prozess, sondern es wird erst durch das Laden in den Hauptspeicher dazu.&lt;br /&gt;
Normalerweise liegt ein Programm als ausführbare Datei irgendwo auf der&lt;br /&gt;
Festplatte oder auf Diskette. Ob es sich bei dem Programm um eine binäre Datei&lt;br /&gt;
handelt, kann man mit dem Befehl '' file '' feststellen.&lt;br /&gt;
 &lt;br /&gt;
 root@zero:~# file /bin/mkdir&lt;br /&gt;
 /bin/mkdir: ELF 32-bit LSB executable, Intel 80386, version 1 (SYSV), dynamically linked (uses shared libs), for GNU/Linux 2.6.8, stripped&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Die Datei liegt im Maschinencode vor und kann in den Hauptspeicher geladen&lt;br /&gt;
werden. Sobald dies geschehen ist, kann der Rechner diesen Maschinencode&lt;br /&gt;
abarbeiten (ausführen).&lt;br /&gt;
&lt;br /&gt;
Da aber ein Programm nicht direkt auf die Hardware zugreifen soll, muss es vom&lt;br /&gt;
Betriebsystem kontrolliert werden. Das Betriebssystem liegt logisch gesehen&lt;br /&gt;
zwischen Hardware und Anwendung. Das Betriebssystem ordnet jedem Prozess&lt;br /&gt;
verschiedene Kenndaten zu, um die Prozesse verwalten zu können. Alle&lt;br /&gt;
Kenndaten, die einem Prozess zugeordnet sind, nennt man die&lt;br /&gt;
Prozessumgebung.Wenn man in der Shell ein Kommando eingibt, wird ein Prozess&lt;br /&gt;
kreiert. Natürlich ist die Shell selbst auch ein Prozess. Ein Prozess kann aber&lt;br /&gt;
genauso gut ein Serverprozess (Dienst) sein, z.B. Apache.&lt;br /&gt;
Ein wesentliches Merkmal eines Prozesses ist die Prozesskommunikation. Über im&lt;br /&gt;
Betriebssystem implementierte Methoden ist es möglich, dass verschiedene&lt;br /&gt;
Prozesse Signale und Daten untereinander austauschen können.&lt;br /&gt;
Dadurch wird auch dem Benutzer ermöglicht, einem Prozeß bestimmte Signale zu&lt;br /&gt;
senden bzw. auf den Status eines Prozesses Einfluss zu nehmen.&lt;br /&gt;
&lt;br /&gt;
===Prozesstabelle (Anzeige mit ps)===&lt;br /&gt;
Da zu jedem Prozess Kenndaten geführt werden, müssen diese auch irgendwo&lt;br /&gt;
festgehalten werden. Das geschieht in der sogenannten Prozesstabelle.&lt;br /&gt;
&lt;br /&gt;
Kenndaten der Prozesse (Auswahl):&lt;br /&gt;
* F Flags (z.B. ausgelagert; Systemprozess; Trace,...)&lt;br /&gt;
* UID Nutzer, mit dessen Rechten der Prozess ausgeführt wird&lt;br /&gt;
* PID Prozess - ID. Diese Nummer gibt eine eindeutige Prozess - Nummer&lt;br /&gt;
an. Sie wird vom System automatisch beim Starten des Prozesses&lt;br /&gt;
vergeben und ist für die Laufzeit eindeutig.&lt;br /&gt;
* PPID Prozessnumer der Eltern-Prozesses&lt;br /&gt;
* PRI Priorität eines Prozesses; je niedriger der Wert ist, desto besser&lt;br /&gt;
* NI ist der Nicewert des Prozesses; Nice erniedrigt den Grundwert&lt;br /&gt;
der Priorität des Prozesses und gibt damit Prozessorzeit für andere&lt;br /&gt;
Prozesse frei.&lt;br /&gt;
* SIZE Speichergröße des Prozesses inklusive Stack (eine Art Zwischenspeicher)&lt;br /&gt;
* RSS Verbrauch an physischen Speicher&lt;br /&gt;
* WCHAN ist der Name der Kernerlfunktion, in der der Prozess schläft&lt;br /&gt;
* STAT Status des Prozesses&lt;br /&gt;
R läuft       S schlafend     D nicht störbarer Schlaf&lt;br /&gt;
T angehalten  Z Zombie        W der Prozess belegt keine Seiten&lt;br /&gt;
* TIME Bisland benötigte Prozessorzeit&lt;br /&gt;
* SIZE ist die Größe von Text, Daten und Stack&lt;br /&gt;
* TTY die Nummer des kontrollierenden Teminal; wenn hier ein ? steht,&lt;br /&gt;
handelt es sich um einen Dämon oder Serverprozess.&lt;br /&gt;
* COMMAND Angabe des Prozesses selbst. Dies ist meist der Programmname.&lt;br /&gt;
&lt;br /&gt;
Weiteres&lt;br /&gt;
* GID Gruppe, unter der der Prozess läuft&lt;br /&gt;
* Verweis auf das aktuellen Arbeitsverzeichnis&lt;br /&gt;
* Um mit relativen Pfadangaben arbeiten zu können braucht man diesen Eintrag&lt;br /&gt;
* Tabelle mit Verweisen auf aktuell geöffnete Dateien&lt;br /&gt;
* 3 sind automatisch geöffnet Standardeingabe, Standardausgabe und&lt;br /&gt;
Standardfehlerkanal&lt;br /&gt;
&lt;br /&gt;
Beispiel&lt;br /&gt;
 root@zero:~# ps -l&lt;br /&gt;
 F S   UID   PID  PPID  C PRI  NI ADDR SZ WCHAN  TTY          TIME CMD&lt;br /&gt;
 4 R     0 18639 18631  0  80   0 -  1080 -      pts/0    00:00:00 bash&lt;br /&gt;
 0 R     0 25904 18639  0  80   0 -   635 -      pts/0    00:00:00 ps&lt;br /&gt;
&lt;br /&gt;
===Eltern und Kinder===&lt;br /&gt;
Jeder Prozess kann weitere Prozesse erzeugen. Die erzeugten Prozesse bezeichnet&lt;br /&gt;
man als Kindprozesse. Jeder Kindprozess weiß anhand der PID, woher er stammt.&lt;br /&gt;
&lt;br /&gt;
Alle Prozesse sind von einem anderen Prozess gestartet worden, mit Ausnahme&lt;br /&gt;
des Pseudoprozesses (noch im Kernel beim Starten erzeugter Prozess). Dieser hat&lt;br /&gt;
die Prozessnummer 0. Er hat die Aufgabe, den Init Prozess ( /sbin/init die Nummer&lt;br /&gt;
1) zu starten, der in System V alle anderen Prozesse direkt oder über seine Kind-&lt;br /&gt;
prozesse startet. (init wird konfiguriert durch die /etc/inittab)&lt;br /&gt;
&lt;br /&gt;
Es gibt zwei Arten wie ein Prozess gestartet werden kann:&lt;br /&gt;
&lt;br /&gt;
# Fork und Exec: Prozessumgebung wird dupliziert, der neue Prozess bekommt eine eigene neue PID&lt;br /&gt;
# Exec: Alter Prozess wird durch neuen Prozess überladen (geht mit dem shell-buildin exec)&lt;br /&gt;
&lt;br /&gt;
'''Rechte auf Objekte UID GID'''&lt;br /&gt;
Ob ein Prozess auf eine Datei zugreifen kann, entscheidet der Kernel anhand der&lt;br /&gt;
Zugriffssrechte, die auf der Datei gesetzt sind. Er checkt anhand der UID und GID&lt;br /&gt;
des Prozesses, ob es erlaubt ist. Mit dieser Technik wird letztendlich geprüft, was&lt;br /&gt;
ein User darf, und was nicht.&lt;br /&gt;
&lt;br /&gt;
===Rechenzeit und Priorität===&lt;br /&gt;
Da auch bei Prozessen eine Gerechtigkeit herschen muss, muss eine Instanz&lt;br /&gt;
darüber entscheiden wie lange ein Prozess Rechenzeit verbrauchen darf.&lt;br /&gt;
Folgende Kenndaten werden dazu benötigt&lt;br /&gt;
* clocktick = Zeiteinheit&lt;br /&gt;
* n = Faktor über den Kernel einstellbar&lt;br /&gt;
* slice = n &amp;lt;nowiki&amp;gt;*&amp;lt;/nowiki&amp;gt; clocktick&lt;br /&gt;
* agingtime = weitere Zeiteinheit über den Kernel einstellbar&lt;br /&gt;
&lt;br /&gt;
Es wird davon ausgegangen das der Prozess mit der niedrigsten Priorität gerade&lt;br /&gt;
rechnet. Pro clocktick erhöht sich die Priorität dieses Prozesses um eins.&lt;br /&gt;
&lt;br /&gt;
Jetzt können 3 Situationen eintreten die alle dazu führen das der Scheduler&lt;br /&gt;
aufgerufen wird.&lt;br /&gt;
&lt;br /&gt;
# Prozess blockiert wegen einer Ausgabe oder Eingabe.&lt;br /&gt;
# Gibt Rechenzeit freiwillig ab.&lt;br /&gt;
# Der Slice endet.&lt;br /&gt;
&lt;br /&gt;
Der Aufruf des Schedulers bewirkt das der Prozess mit der niedrigsten Priorität&lt;br /&gt;
gescheduled wird, er also nun rechnen darf. Nach Ablauf der agingtime werden&lt;br /&gt;
nun die Prozesse &amp;quot;gealtert&amp;quot;. Das geschieht nach folgender Formel&lt;br /&gt;
&lt;br /&gt;
Neue Priorität = Alte Priorität / 2 + Nicewert&lt;br /&gt;
&lt;br /&gt;
Der User hat die Möglichkeit, über den sogenannten Nicefaktor den Grundwert für&lt;br /&gt;
einen Prozess zu senken. Der Prozess braucht dann länger für seine Abarbeitung.&lt;br /&gt;
Er verhält sich somit netter zu den anderen Prozessen. Normale User können nur&lt;br /&gt;
netter werden, der Systemverwalter kann auch nicht netter (gemeiner) werden. Der&lt;br /&gt;
Bereich liegt zwischen 19 (sehr nett) bis 0 (weniger nett) für die User, und 19 bis&lt;br /&gt;
-20 für root.&lt;br /&gt;
&lt;br /&gt;
[[Image:pri.png]]&lt;br /&gt;
&lt;br /&gt;
'''Signale'''&lt;br /&gt;
&lt;br /&gt;
Mit den Kommando kill und killall kann man Prozessen Signale schicken&lt;br /&gt;
&lt;br /&gt;
 kill -Signalnummer PID &lt;br /&gt;
&lt;br /&gt;
Signalnummer&lt;br /&gt;
{| border=1 cellpadding=2&lt;br /&gt;
!Signalname&lt;br /&gt;
!Wert&lt;br /&gt;
!Aktion&lt;br /&gt;
|-&lt;br /&gt;
|SIGHUP&lt;br /&gt;
|1&lt;br /&gt;
|Neuinitialisierung eines Prozesses&lt;br /&gt;
|-&lt;br /&gt;
|SIGINT&lt;br /&gt;
|2&lt;br /&gt;
|Interrupt-Signal von der Tastatur (STRG+c)&lt;br /&gt;
|-&lt;br /&gt;
|SIGQUIT&lt;br /&gt;
|3&lt;br /&gt;
|Interrupt-Signal von der Tastatur (STRG+c) mit Dump&lt;br /&gt;
|-&lt;br /&gt;
|SIGKILL&lt;br /&gt;
|9&lt;br /&gt;
|unwiderrufliches Beendigungssignal (Töten)&lt;br /&gt;
|-&lt;br /&gt;
|SIGSEGV&lt;br /&gt;
|11&lt;br /&gt;
|Ungültige Speicherreferenz (bedeutet oft auf defekten Speicher)&lt;br /&gt;
|-&lt;br /&gt;
|SIGTERM &lt;br /&gt;
|15&lt;br /&gt;
|Beendigungssignal (geöffnete Dateien werden geschlossen)&lt;br /&gt;
|-&lt;br /&gt;
|SIGCONT &lt;br /&gt;
|18&lt;br /&gt;
|Weiterfahren, wenn gestoppt&lt;br /&gt;
|-&lt;br /&gt;
|SIGSTOP&lt;br /&gt;
|19&lt;br /&gt;
|Prozessstop&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Beispiel&lt;br /&gt;
 root@zero:~# kill -1 7562&lt;br /&gt;
&lt;br /&gt;
===Programme im Zusammenhang mit Prozessen===&lt;br /&gt;
* ps: Zeigt die Prozesse mit ihrem Status an&lt;br /&gt;
 root@zero:~# ps&lt;br /&gt;
  PID TTY          TIME CMD&lt;br /&gt;
 14134 pts/0    00:00:00 bash&lt;br /&gt;
 14149 pts/0    00:00:00 ps&lt;br /&gt;
&lt;br /&gt;
 root@zero:~# ps -elf | grep apache&lt;br /&gt;
 1 S root      5738     1  0  80   0 -  5461 select Jun16 ?        00:00:00 /usr/sbin/apache2 -k start&lt;br /&gt;
 5 S www-data  5739  5738  0  80   0 -  5581 inet_c Jun16 ?        00:00:00 /usr/sbin/apache2 -k start&lt;br /&gt;
 5 S www-data  5742  5738  0  80   0 -  5461 inet_c Jun16 ?        00:00:00 /usr/sbin/apache2 -k start&lt;br /&gt;
 5 S www-data  5743  5738  0  80   0 -  5461 inet_c Jun16 ?        00:00:00 /usr/sbin/apache2 -k start&lt;br /&gt;
 5 S www-data  5745  5738  0  80   0 -  5461 inet_c Jun16 ?        00:00:00 /usr/sbin/apache2 -k start&lt;br /&gt;
 5 S www-data  5746  5738  0  80   0 -  5461 inet_c Jun16 ?        00:00:00 /usr/sbin/apache2 -k start&lt;br /&gt;
 0 S root     14153 14134  0  80   0 -   837 pipe_w 16:59 pts/0    00:00:00 grep apache&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* nice: Lässt ein Programm mit verändertem Grundwert der Priorität laufen&lt;br /&gt;
 root@zero:~# nice&lt;br /&gt;
 0&lt;br /&gt;
 root@zero:~# nice -n 9 bash&lt;br /&gt;
 root@zero:~# nice&lt;br /&gt;
 9&lt;br /&gt;
 root@zero:~#&lt;br /&gt;
&lt;br /&gt;
* renice: Ändert den Grundwert der Priorität eines laufenden Prozesses&lt;br /&gt;
 root@zero:~# renice 10 5742&lt;br /&gt;
 5742: Alte Priorität: 0, neue Priorität: 10&lt;br /&gt;
&lt;br /&gt;
* top: Zeigt die Prozesse mit ihrem Status an (Abbrechen mit q)&lt;br /&gt;
 root@zero:~# top&lt;br /&gt;
&lt;br /&gt;
* pstree: Zeigt die Prozesse als Baumstruktur&lt;br /&gt;
 root@zero:~# pstree&lt;br /&gt;
 init─┬─NetworkManager&lt;br /&gt;
      ├─acpid&lt;br /&gt;
      ├─apache2───5*[apache2]&lt;br /&gt;
      ├─atd&lt;br /&gt;
      ├─bluetoothd&lt;br /&gt;
      ├─console-kit-dae───63*[{console-kit-dae}]&lt;br /&gt;
      ├─cron&lt;br /&gt;
      ├─cupsd&lt;br /&gt;
      ├─dbus-daemon&lt;br /&gt;
      ├─dd&lt;br /&gt;
      ├─gdm───gdm─┬─Xorg&lt;br /&gt;
      │           └─gdmgreeter&lt;br /&gt;
      ├─6*[getty]&lt;br /&gt;
      ├─hald───hald-runner─┬─hald-addon-acpi&lt;br /&gt;
      │                    ├─hald-addon-inpu&lt;br /&gt;
      │                    └─2*[hald-addon-stor]&lt;br /&gt;
      ├─klogd&lt;br /&gt;
      ├─nm-system-setti&lt;br /&gt;
      ├─nmbd&lt;br /&gt;
      ├─nscd───11*[{nscd}]&lt;br /&gt;
      ├─portmap&lt;br /&gt;
      ├─rpc.statd&lt;br /&gt;
      ├─slapd───2*[{slapd}]&lt;br /&gt;
      ├─smbd───smbd&lt;br /&gt;
      ├─sshd───sshd───bash───bash───pstree&lt;br /&gt;
      ├─syslogd&lt;br /&gt;
      ├─system-tools-ba&lt;br /&gt;
      ├─udevd&lt;br /&gt;
      ├─winbindd─┬─winbindd───winbindd&lt;br /&gt;
      │          └─3*[winbindd]&lt;br /&gt;
      └─wpa_supplicant&lt;br /&gt;
&lt;br /&gt;
===Jobs===&lt;br /&gt;
Unter einem Job versteht man ein Programm, welches man von der Shell gelöst&lt;br /&gt;
hat. D. h. man kann ganz normal weiter arbeiten und der Job verrichtet seinen&lt;br /&gt;
Dienst im Hintergrund. Man kann jederzeit zu diesem Job wieder Kontakt&lt;br /&gt;
aufnehmen.&lt;br /&gt;
&lt;br /&gt;
Ein Job kann auf 2 Arten gestarten werden:&lt;br /&gt;
&lt;br /&gt;
# Durch Anhängen des &amp;amp; Zeichens beim Programmstart&lt;br /&gt;
 root@zero:~# tail -f /var/log/messages &amp;amp;&lt;br /&gt;
 Jun 19 06:59:31 zero -- MARK --&lt;br /&gt;
 Jun 19 07:19:31 zero -- MARK --&lt;br /&gt;
 Jun 19 07:39:32 zero -- MARK --&lt;br /&gt;
 Jun 19 07:44:57 zero syslogd 1.5.0#5ubuntu3: restart.&lt;br /&gt;
 Jun 19 07:59:32 zero -- MARK --&lt;br /&gt;
 Jun 19 08:19:32 zero -- MARK --&lt;br /&gt;
 Jun 19 08:39:32 zero -- MARK --&lt;br /&gt;
 Jun 19 08:59:32 zero -- MARK --&lt;br /&gt;
 Jun 19 09:19:33 zero -- MARK --&lt;br /&gt;
 Jun 19 09:39:33 zero -- MARK --&lt;br /&gt;
 [3] 27421&lt;br /&gt;
&lt;br /&gt;
# Durch Stoppen des Prozesses durch Drücken von Strg-Z und in den Hintergrund schicken mit %n (n ist die Jobnummer)&lt;br /&gt;
 root@zero:~# watch cat /proc/cpuinfo&lt;br /&gt;
 Strg-Z&lt;br /&gt;
 [4]+  Stopped                 watch cat /proc/cpuinfo&lt;br /&gt;
 root@zero:~# bg %4&lt;br /&gt;
 [4]+ watch cat /proc/cpuinfo &amp;amp;&lt;br /&gt;
&lt;br /&gt;
Anweisungen im Zusammenhang mit Jobs (n ist die Jobnummer)&lt;br /&gt;
* bg %n : Einen Job in den Hintergrund stellen (wie oben)&lt;br /&gt;
* fg %n : Einen Job in den Vordergrund holen&lt;br /&gt;
 root@zero:~# fg %4&lt;br /&gt;
 watch cat /proc/cpuinfo&lt;br /&gt;
&lt;br /&gt;
* jobs : Aktive Jobs ausgeben&lt;br /&gt;
&lt;br /&gt;
 root@zero:~# jobs&lt;br /&gt;
 [1]   Running                 tail -f /var/log/syslog &amp;amp;&lt;br /&gt;
 [2]   Running                 tail -f /var/log/syslog &amp;amp;&lt;br /&gt;
 [3]-  Running                 tail -f /var/log/messages &amp;amp;&lt;br /&gt;
 [4]+  Stopped                 watch cat /proc/cpuinfo&lt;br /&gt;
&lt;br /&gt;
* Strg-Z : Einen Vordergrund-Job vorübergehend anhalten&lt;br /&gt;
* kill -STOP %n : Unterbricht Job im Hintergrund&lt;br /&gt;
 root@zero:~# kill -STOP %1&lt;br /&gt;
 root@zero:~# jobs&lt;br /&gt;
 [1]+  '''Stopped'''                 tail -f /var/log/syslog&lt;br /&gt;
 [2]   Running                 tail -f /var/log/syslog &amp;amp;&lt;br /&gt;
 [3]   Running                 tail -f /var/log/messages &amp;amp;&lt;br /&gt;
 [4]-  Stopped                 watch cat /proc/cpuinfo&lt;br /&gt;
* kill -CONT %n : Setzt den unterbrochenen Job im Hintergrund fort&lt;br /&gt;
root@zero:~# kill -CONT %1&lt;br /&gt;
root@zero:~# jobs&lt;br /&gt;
 [1]+  '''Running'''                 tail -f /var/log/syslog &amp;amp;&lt;br /&gt;
 [2]   Running                 tail -f /var/log/syslog &amp;amp;&lt;br /&gt;
 [3]   Running                 tail -f /var/log/messages &amp;amp;&lt;br /&gt;
 [4]-  Stopped                 watch cat /proc/cpuinfo&lt;br /&gt;
* kill -KILL %n : Tötet Job im Hintergrund&lt;br /&gt;
 root@zero:~# kill -KILL %1&lt;br /&gt;
 root@zero:~# jobs&lt;br /&gt;
 [1]+  '''Killed'''                  tail -f /var/log/syslog&lt;br /&gt;
 [2]   Running                 tail -f /var/log/syslog &amp;amp;&lt;br /&gt;
 [3]   Running                 tail -f /var/log/messages &amp;amp;&lt;br /&gt;
 [4]-  Stopped                 watch cat /proc/cpuinfo&lt;br /&gt;
 root@zero:~# jobs&lt;br /&gt;
 [2]   Running                 tail -f /var/log/syslog &amp;amp;&lt;br /&gt;
 [3]-  Running                 tail -f /var/log/messages &amp;amp;&lt;br /&gt;
 [4]+  Stopped                 watch cat /proc/cpuinfo&lt;br /&gt;
&lt;br /&gt;
Bedingungen, die zu Jobausführung eingehalten werden sollen:&lt;br /&gt;
* Der Job soll nicht auf den Bildschirm schreiben (Standardausgabe +Standardfehlerkanal).&lt;br /&gt;
* Er soll keine Eingaben vom Benutzer erwarten.&lt;br /&gt;
&lt;br /&gt;
==Suchen von Dateien==&lt;br /&gt;
===find===&lt;br /&gt;
 find ab_wo_wird_gesucht was_wird_gesucht aktion&lt;br /&gt;
 find [Pfad] [Bedingung] [Aktion]&lt;br /&gt;
&lt;br /&gt;
====Nach Namen====&lt;br /&gt;
 find [Pfad] '''-name''' [Name]&lt;br /&gt;
 &lt;br /&gt;
Finde alle Dateien mit Namen test ab dem Verzeichnis /home und gebe diese Zeilenweise aus&lt;br /&gt;
 root@zero:~# find /home -name test -print&lt;br /&gt;
 /home/xinux/test&lt;br /&gt;
 /home/test&lt;br /&gt;
&lt;br /&gt;
Wie oben, jedoch mit Namensanfang test&lt;br /&gt;
 root@zero:/home/xinux# find /home -name 'test*'&lt;br /&gt;
 /home/xinux/testdatei&lt;br /&gt;
 /home/xinux/test&lt;br /&gt;
 /home/test&lt;br /&gt;
&lt;br /&gt;
====Nach Benutzer(Eigentümer)====&lt;br /&gt;
 root@zero:/tmp# find /tmp/ '''-user''' xinux&lt;br /&gt;
 /tmp/datei&lt;br /&gt;
&lt;br /&gt;
====Nach Gruppe====&lt;br /&gt;
 root@zero:/tmp# find /tmp/ '''-group''' hacker&lt;br /&gt;
 /tmp/datei3&lt;br /&gt;
 /tmp/datei2&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
====Nach Typ====&lt;br /&gt;
Es wird nach Dateien anhand Ihrer Art gesucht:&lt;br /&gt;
 find [Pfad] '''-type''' [Typ] &lt;br /&gt;
Typ:&lt;br /&gt;
* f: Normale Dateien&lt;br /&gt;
 root@zero:~# find /tmp/ -type f&lt;br /&gt;
 /tmp/mbr.img&lt;br /&gt;
 /tmp/datei&lt;br /&gt;
 /tmp/zeugs&lt;br /&gt;
 /tmp/.X0-lock&lt;br /&gt;
* d: Verzeichnisse&lt;br /&gt;
 root@zero:~# find /var/log -type d&lt;br /&gt;
 /var/log&lt;br /&gt;
 /var/log/apache2&lt;br /&gt;
 /var/log/unattended-upgrades&lt;br /&gt;
 /var/log/apparmor&lt;br /&gt;
 /var/log/ConsoleKit&lt;br /&gt;
 /var/log/dist-upgrade&lt;br /&gt;
 /var/log/dist-upgrade/20090526-1052&lt;br /&gt;
 /var/log/cups&lt;br /&gt;
 /var/log/apt&lt;br /&gt;
 /var/log/fsck&lt;br /&gt;
 /var/log/samba&lt;br /&gt;
 /var/log/samba/cores&lt;br /&gt;
 /var/log/samba/cores/smbd&lt;br /&gt;
 /var/log/samba/cores/nmbd&lt;br /&gt;
 /var/log/samba/cores/winbindd&lt;br /&gt;
 /var/log/installer&lt;br /&gt;
 /var/log/gdm&lt;br /&gt;
 /var/log/news&lt;br /&gt;
* c: Char Devices (Zeichenorientierte Gerätedatei)&lt;br /&gt;
 root@zero:~# find / -type c&lt;br /&gt;
 /lib/udev/devices/kmem&lt;br /&gt;
 /lib/udev/devices/null&lt;br /&gt;
 /lib/udev/devices/console&lt;br /&gt;
 /lib/udev/devices/ppp&lt;br /&gt;
 /lib/udev/devices/net/tun&lt;br /&gt;
* b: Block Devices (Blockorientierte Gerätedatei)&lt;br /&gt;
* p: Benannte Pipe&lt;br /&gt;
* l: Links&lt;br /&gt;
* s: Sockets&lt;br /&gt;
&lt;br /&gt;
====Nach Modifikation====&lt;br /&gt;
Listet alle Dateien in /etc auf, die innerhalb von zwei Tagen modifiziert wurden&lt;br /&gt;
 root@zero:/var/log# find /etc/ -mtime 2 -print&lt;br /&gt;
 /etc/apache2&lt;br /&gt;
 /etc/apache2/mods-available&lt;br /&gt;
 /etc/apache2/conf.d&lt;br /&gt;
 /etc/apache2/sites-available&lt;br /&gt;
 /etc/bash_completion.d&lt;br /&gt;
 /etc/blkid.tab.old&lt;br /&gt;
 /etc/firefox-3.0/profile&lt;br /&gt;
 /etc/firefox-3.0/profile/chrome&lt;br /&gt;
 /etc/firefox-3.0/pref&lt;br /&gt;
 /etc/profile.d&lt;br /&gt;
 /etc/ufw/applications.d&lt;br /&gt;
 /etc/logrotate.d&lt;br /&gt;
 /etc/xulrunner-1.9&lt;br /&gt;
 /etc/blkid.tab&lt;br /&gt;
 /etc/cron.daily&lt;br /&gt;
 /etc/alternatives&lt;br /&gt;
 /etc/alternatives/x-www-browser&lt;br /&gt;
 /etc/alternatives/xulrunner&lt;br /&gt;
 /etc/gre.d&lt;br /&gt;
 /etc/hal/fdi/policy&lt;br /&gt;
 /etc/dbus-1/system.d&lt;br /&gt;
 /etc/udev/rules.d&lt;br /&gt;
&lt;br /&gt;
====Nach Größe====&lt;br /&gt;
Finde Dateien in /tmp, die größer als 100 MByte sind&lt;br /&gt;
 root@zero:/tmp# find /tmp/ -size +100M&lt;br /&gt;
 /tmp/datei&lt;br /&gt;
&lt;br /&gt;
Finde Dateien in /tmp, die kleiner als 100 KByte sind&lt;br /&gt;
 root@zero:/tmp# find /tmp/ -size -100k&lt;br /&gt;
 /tmp/&lt;br /&gt;
 /tmp/datei3&lt;br /&gt;
 /tmp/backup &lt;br /&gt;
 /tmp/datei2&lt;br /&gt;
 /tmp/.winbindd &lt;br /&gt;
 /tmp/.winbindd/pipe&lt;br /&gt;
 /tmp/mbr.img&lt;br /&gt;
 /tmp/zeugs&lt;br /&gt;
 /tmp/.ICE-unix&lt;br /&gt;
 /tmp/.X0-lock&lt;br /&gt;
 /tmp/datei1&lt;br /&gt;
 /tmp/.X11-unix&lt;br /&gt;
 /tmp/.X11-unix/X0&lt;br /&gt;
 /tmp/pulse-PKdhtXMmr18n&lt;br /&gt;
&lt;br /&gt;
====Nach Berechtigungen====&lt;br /&gt;
Finde Dateien in Home mit der Berechtigung 777 (-rwxrwxrwx)&lt;br /&gt;
 root@zero:/var# find /home/ -perm 777&lt;br /&gt;
 /home/samba&lt;br /&gt;
 /home/xinux/Examples&lt;br /&gt;
 /home/xinux/.pulse/1f0763ee4cf4c7e1d3c07fd149dda37b:runtime&lt;br /&gt;
 /home/test/Examples&lt;br /&gt;
&lt;br /&gt;
===locate===&lt;br /&gt;
Locate arbeitet über einen Index, der erstellt und aktualisiert werden muss. Aus diesem Grund kann locate teilweise nicht &lt;br /&gt;
akutell sein. Es ist immer schneller als find und es durchsucht immer das ganze Dateisystem. &lt;br /&gt;
 locate [Dateiname]&lt;br /&gt;
 &lt;br /&gt;
Lokalisiere die Datei wvdial.conf. Anmerkung: Der Stern wird beim Suchen automatisch hinzugefügt. Entspricht also&lt;br /&gt;
wvidal.conf*&lt;br /&gt;
 root@zero:~# locate wvdial.conf&lt;br /&gt;
 /etc/wvdial.conf&lt;br /&gt;
 /usr/share/man/man5/wvdial.conf.5.gz&lt;br /&gt;
 /var/lib/dpkg/info/wvdial.conffiles&lt;br /&gt;
 /var/lib/dpkg/info/wvdial.config&lt;br /&gt;
&lt;br /&gt;
Lokalisiere die Datei wvdial.conf und nur diese&lt;br /&gt;
 root@zero:~# locate -b '\wvdial.conf'&lt;br /&gt;
 /etc/wvdial.conf&lt;br /&gt;
&lt;br /&gt;
Aktualisieren des Indexes&lt;br /&gt;
 root@zero:~# updatedb&lt;br /&gt;
&lt;br /&gt;
==Wie wird ein Kommando lokalisiert==&lt;br /&gt;
Wenn die Shell alle Ersetzungen in der Kommandozeile vorgenommen und alle Umleitungen vorbereitet hat, ist der Zeitpunkt &lt;br /&gt;
gekommen, auf den der Anwender die ganze Zeit gewartet hat. Die Shell versucht das Kommando auszuführen. Dazu muss sie &lt;br /&gt;
es aber erst lokalisieren. Das erste passende Kommando wird ausgeführt.&lt;br /&gt;
&lt;br /&gt;
Als Kommandoname wird immer das erste Wort eines einfachen Kommandos erkannt. Ein Kommandoname kann mit Pfadnamen in &lt;br /&gt;
einem Verzeichnis (absolut oder relativ) angegeben werden. Die Shell erkennt dies an (mindestens) einem Slash `/' &lt;br /&gt;
im Kommandonamen. Wenn kein Verzeichnis angegeben ist, versucht die Shell selbst, das Kommando zu finden. Dazu wird &lt;br /&gt;
der Kommandoname zuerst in der Hashtabelle gesucht, dann wird er mit den Synonymen, mit den Scriptfunktionen und &lt;br /&gt;
schließlich mit den Shellfunktionen verglichen. &lt;br /&gt;
&lt;br /&gt;
Wird auf diese Weise kein Programm dieses Namens gefunden, werden alle in der PATH-Umgebungsvariablen aufgeführten &lt;br /&gt;
Verzeichnisse nach einer ausführbaren Datei dieses Namens durchsucht. Wird auch hier kein passendes Kommando gefunden, &lt;br /&gt;
gibt die Shell eine Fehlermeldung aus.&lt;br /&gt;
&lt;br /&gt;
===which und type===&lt;br /&gt;
====which====&lt;br /&gt;
which gibt die vollen Pfadnamen der Dateien aus, die bei Benutzung des angegebenen Befehls ausgeführt werden würden.&lt;br /&gt;
&lt;br /&gt;
 which [-a] Dateiname &lt;br /&gt;
&lt;br /&gt;
Optionen:&lt;br /&gt;
&lt;br /&gt;
* -a : Alle Treffer ausgeben, nicht nur den ersten&lt;br /&gt;
* --skip-dot : Verzeichnisse, die mit einem Punkt beginnen, auslassen&lt;br /&gt;
&lt;br /&gt;
Beispiel&lt;br /&gt;
 root@zero:~# which startx&lt;br /&gt;
 /usr/bin/startx&lt;br /&gt;
&lt;br /&gt;
====type====&lt;br /&gt;
Anzeigen der absoluten Pfadnamen von Befehlen, und ob sich diese Befehle in der Hash-Tabelle der aktuellen&lt;br /&gt;
Shell befinden.&lt;br /&gt;
&lt;br /&gt;
 type [Optionen] Befehle&lt;br /&gt;
&lt;br /&gt;
Beispiel&lt;br /&gt;
 root@zero:~# type ls&lt;br /&gt;
 ls is aliased to `ls --color=auto'&lt;br /&gt;
&lt;br /&gt;
Optionen:&lt;br /&gt;
&lt;br /&gt;
* -a : Alle vorkommenden Befehle werden ausgegeben, nicht nur das, welches aufgerufen werden würde&lt;br /&gt;
 root@zero:~# type '''-a''' ls&lt;br /&gt;
 ls is aliased to `ls --color=auto'&lt;br /&gt;
 ls is /bin/ls&lt;br /&gt;
&lt;br /&gt;
* -p : Anzeigen des Eintrags von Befehl in der Hash-Tabelle. Dieser Wert kann sich vom ersten Auftreten des Befehls in PATH&lt;br /&gt;
unterscheiden&lt;br /&gt;
 root@zero:~# type '''-p''' apache2&lt;br /&gt;
 /usr/sbin/apache2&lt;br /&gt;
&lt;br /&gt;
* -t : Anzeigen, ob Befehl ein Aliasname, ein Schlüsselwort, eine Funktion, ein eingebauter Befehl oder eine Datei ist&lt;br /&gt;
 root@zero:~# type '''-t''' apache2&lt;br /&gt;
 file&lt;/div&gt;</summary>
		<author><name>192.168.178.46</name></author>
	</entry>
	<entry>
		<id>https://www.xinux.net/index.php?title=Linux_Grundlagen&amp;diff=84</id>
		<title>Linux Grundlagen</title>
		<link rel="alternate" type="text/html" href="https://www.xinux.net/index.php?title=Linux_Grundlagen&amp;diff=84"/>
		<updated>2009-07-07T10:55:32Z</updated>

		<summary type="html">&lt;p&gt;192.168.178.46: /* Links */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Einführung==&lt;br /&gt;
===Geschichte Unix===&lt;br /&gt;
====1969====&lt;br /&gt;
Am Anfang von Linux steht Multics, ein von Bell Laboratories geschaffenes &amp;quot;Betriebssystem&amp;quot;, &lt;br /&gt;
das noch mit Lochkarten arbeitete. Multics wird mit Unterstützung von AT&amp;amp;T und Western &lt;br /&gt;
Electric unter Mitarbeit von Ken Thompson und Dennis Ritchie weiterentwickelt. Obwohl sich &lt;br /&gt;
Bell Laboratories bald zurückzieht, gibt Thompson das Projekt nicht auf.  Zum Entwicklerteam &lt;br /&gt;
gehören auch Rudd Canaday und Brian Kernighan. Letzterer gibt 1970 dem Betriebssystem den Namen UNIX. &lt;br /&gt;
Thompson definiert 7 Richtlinien für UNIX:&lt;br /&gt;
 &lt;br /&gt;
# Hierarchische Anordnung der Dateisysteme&lt;br /&gt;
# Die Ausgabe von Daten an die Peripherie(-geräte) und Dateien soll gleich sein.&lt;br /&gt;
# Prozesse und Programme sollen miteinander kommunizieren.&lt;br /&gt;
# Multitasking (voneinander getrennte Prozesse)&lt;br /&gt;
# Persönliche Shell's&lt;br /&gt;
# Der Compiler soll für viele Programmiersprachen tauglich sein.&lt;br /&gt;
# Portabilität&lt;br /&gt;
&lt;br /&gt;
====1971====&lt;br /&gt;
Bis 1971 ist das für eine DEC PDP-7 geschriebene Unix als Version 1 auf eine PDP-11 portiert. Bis&lt;br /&gt;
zur Version 4 entwickelt Ritchie die Programmier- (Hoch-) Sprache C. Das in Assembler geschriebene&lt;br /&gt;
Unix wird fast völlig nach C übersetzt, wodurch zum erstenmal die geforderte Hardware-Unabhängigkeit&lt;br /&gt;
des Betriebssystems realisiert werden kann.&lt;br /&gt;
&lt;br /&gt;
====1975====&lt;br /&gt;
Da AT&amp;amp;T aufgrund vertraglicher Bindungen mit der US-Bundesregierung Unix nicht kommerziell vermarkten darf, stellt sie den Source Code für ein paar hundert Dollar den Universitäten, Lehr- und Forschungsanstalten zur Verfügung. Dies führt zu einer sehr dynamischen Entwicklung von Unix. 1975 wird die Version 6 als erstes UNIX-System veröffentlicht, die darauffolgende Version 7 wird sehr erfolgreich. Da es keine Standardisierung gibt, entwickeln bald verschiedenste Firmen ihr eigenes UNIX. Ab 1984 wird AT&amp;amp;T per Gerichtsbeschluss erlaubt, Unix zu vermarkten. AT&amp;amp;T verkauft sein Unix V und beginnt, sich um einen internationalen Standard von UNIX zu bemühen. &lt;br /&gt;
&lt;br /&gt;
====1984====&lt;br /&gt;
Durch Richard Stallman wird die Free Software Foundation (FSF) gegründet. Diese initiiert ein Projekt namens GNU (GNU ist Not Unix), welches das Ziel verfolgt, ein freies UNIX System zu schaffen. &lt;br /&gt;
&lt;br /&gt;
====1987====&lt;br /&gt;
AT&amp;amp;T verbietet die Verwendung des Unix Quellcodes an den Universitäten. Während dieser Zeit ist Andrew (Andy) Tannenbaum Professor an der Freien Universität von Amsterdam und entwickelt Minix. Minix ist ein kostengünstiges Lehrbetriebssystem und kommt ohne jeglichen AT&amp;amp;T Code aus, obwohl es die gleiche Funktionalität wie Unix 7 bietet. Im Usenet unter comp.os.minix entsteht eine Minix-Gemeinde, die den Minix Kernel und die Anwendungen rundherum programmiert und verbessert.&lt;br /&gt;
&lt;br /&gt;
====1991====&lt;br /&gt;
Linus Torvalds hat als Student für Computerwissenschaften an der Universität in Helsinki Minix installiert und das Buch von Andy Tannenbaum gelesen. Er beginnt im Sinne der FSF einen Unix ähnlichen Kernel zu programmieren mit der Idee, &amp;quot;ein besseres Minix als Minix&amp;quot; zu bauen. 1992 stellt er die Version 0.02 mit dem Namen Linux der Internetgemeinde zur Verfügung. &lt;br /&gt;
&lt;br /&gt;
====1994====&lt;br /&gt;
Die Linux Version 1.0 wird freigegeben. Das Linux Fieber beginnt... &lt;br /&gt;
&lt;br /&gt;
====1998====&lt;br /&gt;
Der Kreis der Linux Entwickler und Anwender ist kräftig angeschwollen. KDE 1.0 wird veröffentlicht. Die Zuwachsraten von Linux übertreffen die von Windows NT deutlich. &lt;br /&gt;
&lt;br /&gt;
====1999====&lt;br /&gt;
Der lange erwartete stabile Linux Kernel Version 2.2 wird freigegeben. Namhafte Firmen wie IBM kündigen ihre Unterstützung für Linux an. &lt;br /&gt;
&lt;br /&gt;
====2001====&lt;br /&gt;
Der lange erwartete stabile Linux Kernel Version 2.4 wird freigegeben. USB Unterstützung und eine neue Firewallimplementierung zeichnen ihn aus.&lt;br /&gt;
&lt;br /&gt;
====2003====&lt;br /&gt;
Linux Kernel Version 2.6 wird freigegeben. Am auffälligsten sind Änderungen bei der Modulverwaltung.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Distributionen===&lt;br /&gt;
{| Border=1 Cellpadding=2&lt;br /&gt;
| &lt;br /&gt;
|Url&lt;br /&gt;
|Paketformat&lt;br /&gt;
|-&lt;br /&gt;
|Red Hat&lt;br /&gt;
|www.redhat.com&lt;br /&gt;
|rpm&lt;br /&gt;
|-&lt;br /&gt;
|fedora&lt;br /&gt;
|fedora.redhat.com&lt;br /&gt;
|rpm&lt;br /&gt;
|-&lt;br /&gt;
|CentOS&lt;br /&gt;
|www.centos.org&lt;br /&gt;
|rpm&lt;br /&gt;
|-&lt;br /&gt;
|Suse/openSUSE&lt;br /&gt;
|www.opensuse.org&lt;br /&gt;
|rpm&lt;br /&gt;
|-&lt;br /&gt;
|Debian&lt;br /&gt;
|www.debian.org&lt;br /&gt;
|deb&lt;br /&gt;
|-&lt;br /&gt;
|Ubuntu&lt;br /&gt;
|www.ubuntu.com&lt;br /&gt;
|deb&lt;br /&gt;
|-&lt;br /&gt;
|Mandrake&lt;br /&gt;
|www.linux-mandrake.com&lt;br /&gt;
|rpm&lt;br /&gt;
|-&lt;br /&gt;
|Easy Linux&lt;br /&gt;
|www.easy-linux.de&lt;br /&gt;
|rpm&lt;br /&gt;
|-&lt;br /&gt;
|Turbo&lt;br /&gt;
|www.turbolinux.com&lt;br /&gt;
|rpm&lt;br /&gt;
|-&lt;br /&gt;
|minis&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|toms&lt;br /&gt;
|www.toms.net/rb&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|damn small linux&lt;br /&gt;
|www.damnsmalllinux.org&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|pocket-linux&lt;br /&gt;
|www.pocket-linux.org&lt;br /&gt;
|&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
====Bücher====&lt;br /&gt;
 Titel : Das Linux Anwenderhandbuch und Leitfaden für die Systemverwaltung&lt;br /&gt;
 Autor : Sebastian Hetze, Dirk Hohndel, Olaf Kirch und Martin Müller&lt;br /&gt;
 Verlag: Lunetix&lt;br /&gt;
 ISBN : 3-929764-06-7&lt;br /&gt;
&lt;br /&gt;
 Titel : Linux in a Nutshell&lt;br /&gt;
 Autor : Jessica Perry Hekman und die Mitarbeiter von O'Reilly &amp;amp; Associates&lt;br /&gt;
 Verlag: O'Reilly&lt;br /&gt;
 ISBN : 3-930673-57-6&lt;br /&gt;
&lt;br /&gt;
 Titel : Linux - Wegweiser zur Installation und Konfiguration&lt;br /&gt;
 Autor : Matt Welsh, Lar Kaufman, Matthias Kalle Dallheimer&lt;br /&gt;
 Verlag: O'Reilly&lt;br /&gt;
 ISBN : 3-930673-58-4 (deutsch), 1-56592-469-X (englisch)&lt;br /&gt;
&lt;br /&gt;
 Titel : Linux - Installation, Konfiguration, Anwendung&lt;br /&gt;
 Autor : Michael KoflerMultitasking&lt;br /&gt;
 Verlag: Addison-Wesley&lt;br /&gt;
 ISBN : 3-8273-1475-5&lt;br /&gt;
&lt;br /&gt;
 Titel : Linux - Wegweiser für Netzwerker&lt;br /&gt;
 Autor : Olaf Kirch&lt;br /&gt;
 Verlag: O'Reilly&lt;br /&gt;
 ISBN : 3-930673-18-5&lt;br /&gt;
&lt;br /&gt;
 Titel : TCP/IP-Netzwerk-Administration&lt;br /&gt;
 Autor : Craig Hunt&lt;br /&gt;
 Verlag: O'Reilly&lt;br /&gt;
 ISBN : 3-89721-110-6&lt;br /&gt;
&lt;br /&gt;
 Titel : Essential System Administration&lt;br /&gt;
 Autor : Eleen Frisch&lt;br /&gt;
 Verlag: O'Reilly&lt;br /&gt;
 ISBN : 1-56592-127-5&lt;br /&gt;
&lt;br /&gt;
==Betriebssystem==&lt;br /&gt;
===Was ist ein Betriebssystem?===&lt;br /&gt;
&lt;br /&gt;
Ein Betriebssystem liegt logisch gesehen zwischenAnwendungsprogramm und Hardware.&lt;br /&gt;
&lt;br /&gt;
Es nimmt die Anforderungen der Anwendungsprogramme entgegen und leitet&lt;br /&gt;
diese kontrolliert an die Hardware weiter. Kein Anwendungsprogramm sollte&lt;br /&gt;
direkt auf die Hardware zugreifen können. Den zentralen Zugang schafft einzig&lt;br /&gt;
das Betriebssystem. Somit kann das Betriebssystem unsinnige Anforderungen&lt;br /&gt;
oder Bedienungsfehler abblocken.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Image:Linux.jpg]]&lt;br /&gt;
&lt;br /&gt;
===Aufgaben eines Betriebssystems===&lt;br /&gt;
&lt;br /&gt;
# Verbergen der Komplexität der Maschine vor dem Anwender (Abstraktion)&lt;br /&gt;
# Bereitstellen einer Benutzerschnittstelle (&amp;quot;Kommandointerpreter&amp;quot;, &amp;quot;Shell&amp;quot;)&lt;br /&gt;
# Bereitstellen einer normierten Programmierschnittstelle (API)&lt;br /&gt;
# Verwaltung der Ressourcen der Maschine::&lt;br /&gt;
Hauptspeicher&lt;br /&gt;
Prozessor(en)&lt;br /&gt;
Hintergrundspeicher (Platte, Band, etc.)&lt;br /&gt;
Geräte (Terminal, Drucker, Plotter, etc.)&lt;br /&gt;
Rechenzeit&lt;br /&gt;
Koordination von Prozessen&lt;br /&gt;
&lt;br /&gt;
===Aufbau eines Betriebssystems===&lt;br /&gt;
&lt;br /&gt;
Ein Rechensystem besteht aus Hardware, Systemprogrammen und Anwendungs-&lt;br /&gt;
programmen. Unter einem Betriebssystem wird meist die Summe aus Betriebs-&lt;br /&gt;
systemkern (Kernel) und den wichtigsten Systemprogrammen verstanden. Ein&lt;br /&gt;
minimaler LINUX-Kernel besitzt ungefähr eine Größe von 400 - 800 kByte.&lt;br /&gt;
Weitere wichtige Systemkomponenten benötigen zusätzlich 10 - 100 Mbyte&lt;br /&gt;
Plattenplatz.&lt;br /&gt;
&lt;br /&gt;
Ein Betriebssystem stellt den Rechner als erweiterte Maschine (virtuelle&lt;br /&gt;
Maschine) über definierte Software-Schnittstellen zur Verfügung.&lt;br /&gt;
Das Betriebssystem dient als Betriebsmittelverwalter, der Anforderungen&lt;br /&gt;
befriedigt, protokolliert, abrechnet und vermittelt.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Aufgaben des Betriebssystemkerns:&lt;br /&gt;
&lt;br /&gt;
{| Border=1 Cellpadding=2&lt;br /&gt;
|Prozessverwaltung  (dispatching and scheduling)&lt;br /&gt;
| Mehrere Benutzer können mit mehreren Aktionen gleichzeitig im System arbeiten, ohne sich gegenseitig zu beeinflussen. Damit dies möglich ist,  müssen die Aktionen organisiert, koordiniert und verwaltet werden. Die zu verwaltende Einheit nennt man Prozess.&lt;br /&gt;
|-&lt;br /&gt;
|Speicherverwaltung   (memory management)&lt;br /&gt;
|Zuteilen von Speicherbereichen an laufende Prozesse, Schutz der Speicherbereiche vor unbefugten Zugriffen, bei Speicherengpässen: Auslagern von ganzen (swapping) oder von Teilen (paging) von Prozessen auf die Platte (swap file).&lt;br /&gt;
|-&lt;br /&gt;
|Dateiverwaltung  (file handling)&lt;br /&gt;
|Zuteilung von Plattenplatz für Programme, Benutzer und Systemdienste, Schreiben, Lesen und Strukturieren der Daten auf den Massenspeichern; Durch Bereitstellung einer entsprechenden Schnittstelle (VFS, virtual file system) kann der Kern Dateisysteme unterschiedlichster Art (EXT2, FAT, NFS, HPFS, NTFS, ...) ansprechen.&lt;br /&gt;
|-&lt;br /&gt;
|Geräteverwaltung  (resource management)&lt;br /&gt;
|Der Kern ermöglicht und kontrolliert den Zugriff auf die Hardware. Er steuert die Ein- und Ausgabetätigkeiten der Anwender. An den Kern&lt;br /&gt;
gebunden sind die entsprechenden Gerätetreiber (device driver), die damit eine Kommunikation zwischen Kern und Hardware ermöglichen.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
===Multitasking===&lt;br /&gt;
&lt;br /&gt;
Multitasking bedeutet, dass ein Rechner aus Anwendersicht mehrere Aufgaben&lt;br /&gt;
(Tasks) gleichzeitg übernehmen kann. Das Betriebssystem (OS) unterteilt die&lt;br /&gt;
gleichzeitig anstehenden Aufgaben in Einzelarbeitsschritte (Prozesse) und&lt;br /&gt;
managed durch ein Zeitscheibenverfahren (scheduling) die gleichmäßige&lt;br /&gt;
Abarbeitung der Prozesse.&lt;br /&gt;
&lt;br /&gt;
Es wird unterschieden zwischen:&lt;br /&gt;
&lt;br /&gt;
*non-präamptiven (kooperativen=die Ressourcen werden vom aktiven Prozess freigegeben, bei einem Hänger steht das ganze System)&lt;br /&gt;
&lt;br /&gt;
und&lt;br /&gt;
&lt;br /&gt;
*präamptiven (reinem=der Betriebssystemkern steuert Taskwechsel, indem nach einer festgelegten Zeit vom gerade aktiven Prozess zum nächsten weitergeschaltet wird)&lt;br /&gt;
&lt;br /&gt;
===Mehrprozessorbetrieb===&lt;br /&gt;
&lt;br /&gt;
Bei mehreren Prozessoren und Unterstützung durch das OS&lt;br /&gt;
(NT,Linux,Unix,Novell) können mehrere Tasks auf diese verteilt werden und&lt;br /&gt;
gleichzeitig bearbeitet werden. Nachteilig ist, dass dies nicht oder kaum von&lt;br /&gt;
Anwendungsprogrammen unterstützt wird und es zu Kommunikationsproblemen&lt;br /&gt;
zwischen den einzelnen Tasks kommen kann.&lt;br /&gt;
&lt;br /&gt;
===Arten von von Betriebssystemen===&lt;br /&gt;
&lt;br /&gt;
{|Border=1 Cellpadding=2&lt;br /&gt;
|&lt;br /&gt;
|SingleUser  &lt;br /&gt;
|Multiuser&lt;br /&gt;
|-&lt;br /&gt;
|Single Tasking&lt;br /&gt;
|MS - DOS&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|Multi Tasking&lt;br /&gt;
|Windows 3.x&lt;br /&gt;
|UNIX&lt;br /&gt;
|-&lt;br /&gt;
|&lt;br /&gt;
|Windows 95/98&lt;br /&gt;
|Linux&lt;br /&gt;
|-&lt;br /&gt;
|&lt;br /&gt;
|Windows NT4 ohne Erweiterungen&lt;br /&gt;
|VMS&lt;br /&gt;
|-&lt;br /&gt;
|&lt;br /&gt;
|OS/2 &lt;br /&gt;
|Windows NT mit  Erweiterungen&lt;br /&gt;
|-&lt;br /&gt;
|&lt;br /&gt;
|Apple&lt;br /&gt;
|Windows 2000, XP, 2003&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
===SHELL===&lt;br /&gt;
&lt;br /&gt;
Wenn man mit Linux arbeiten will, kann man nicht direkt mit dem Betriebssystem&lt;br /&gt;
kommunizieren. Man braucht dazu ein Hilfsprogramm, welches die&lt;br /&gt;
Kommandoeingaben ordnungsgemäß an das Betriebssystem weiterleitet. Dieses&lt;br /&gt;
Hilfsprogramm hat den Namen Shell.&lt;br /&gt;
&lt;br /&gt;
Die Shell schirmt den Betriebssystemkern von den Anwendungsprogrammen ab.&lt;br /&gt;
Die unterschiedlichen Shells erfüllen alle dieselbe Aufgabe, sie unterscheiden sich&lt;br /&gt;
allerdings in ihrer Syntax.&lt;br /&gt;
&lt;br /&gt;
==Die Installation im Überblick==&lt;br /&gt;
&lt;br /&gt;
Die Installation von Linux geschieht in folgenden Schritten:&lt;br /&gt;
&lt;br /&gt;
# Analyse (Welche Hardware habe ich? ,Hab ich weitere Betriebsysteme?)&lt;br /&gt;
# Booten des Linux-Kernels. (von CD oder Diskette)&lt;br /&gt;
# Laden einer RAM-Disk (das macht das Installationsprogramm automatisch).&lt;br /&gt;
# Partitionieren der Festplatte (fdisk).&lt;br /&gt;
# Einrichten der Swappartition (mkswap), Formatieren der Festplatte (mkfs).&lt;br /&gt;
# Montieren der Dateisysteme (mount), Aktivieren der Swapbereiche (swapon).&lt;br /&gt;
# Kopieren und Auspacken der Daten vom Installationsmedium auf die Festplatte (die eigentliche Installation). (rpm, dpkg oder tar).&lt;br /&gt;
# Geeignete Wahl der Bootmethode unter Berücksichtigung von Punkt 1 (grub, lilo).&lt;br /&gt;
# Konfiguration des Systems (Netz, Modem etc...).&lt;br /&gt;
&lt;br /&gt;
==Erste Schritte==&lt;br /&gt;
===Anmelden===&lt;br /&gt;
Sie können sich nun mit dem Usernamen und dem Passwort, das sie bei der Installation angelegt haben anmelden!&lt;br /&gt;
[[Image:benutzer.jpg]]&lt;br /&gt;
&lt;br /&gt;
[[Image:passwd.jpg]]&lt;br /&gt;
&lt;br /&gt;
===Terminal öffnen===&lt;br /&gt;
&lt;br /&gt;
Ein Terminal öffnen Sie über das Startmenü:&lt;br /&gt;
&lt;br /&gt;
[[Image:Terminalde.jpg]]&lt;br /&gt;
&lt;br /&gt;
Das geöffnete Terminal sieht dann folgendermaßen aus:&lt;br /&gt;
&lt;br /&gt;
[[Image:Terminalde2.jpg]]&lt;br /&gt;
&lt;br /&gt;
===Sudo===&lt;br /&gt;
Rootrechte erlangen sie über den &amp;quot;Sudo&amp;quot;-Befehl&lt;br /&gt;
 &lt;br /&gt;
''Den nächsten Befehl als root ausführen''&lt;br /&gt;
 xinux@zero:~$ sudo cat /etc/shadow&lt;br /&gt;
 [sudo] password for xinux:&lt;br /&gt;
&lt;br /&gt;
''Eine komplette Sitzung als root starten''&lt;br /&gt;
 xinux@zero:~$ sudo -i&lt;br /&gt;
 [sudo] password for xinux:&lt;br /&gt;
 root@zero:~#&lt;br /&gt;
&lt;br /&gt;
===Virtuelle Konsolen===&lt;br /&gt;
&lt;br /&gt;
In die Virtuelle Konsole gelangen sie über &amp;quot;STRG+ALT+(F1-F6)&amp;quot;.&lt;br /&gt;
Sie funktioniert wie ein ganz normales Terminal, und mit &amp;quot;ALT+F7&amp;quot;&lt;br /&gt;
gelangen sie wieder zurück auf die grafische Benutzeroberfläche&lt;br /&gt;
&lt;br /&gt;
===Abmelden===&lt;br /&gt;
&lt;br /&gt;
Abmelden können Sie sich wieder über das Startmenu unter:&lt;br /&gt;
&lt;br /&gt;
[[Image:Logout.jpg]]&lt;br /&gt;
&lt;br /&gt;
Fals sie nur einzelne Sitzungen in einem der Terminals oder &lt;br /&gt;
den Virtuellen Konsolen Abmelden wollen benutzen sie dazu den Befehl: &amp;quot;exit&amp;quot;&lt;br /&gt;
&lt;br /&gt;
===Herunterfahren===&lt;br /&gt;
&lt;br /&gt;
Das Herunterfahren funktioniert auf dem selben Weg.&lt;br /&gt;
&lt;br /&gt;
Entweder sie Benutzen wieder das Startmenü und benutzen diesmal den &amp;quot;Ausschalten ...&amp;quot; Knopf,&lt;br /&gt;
&lt;br /&gt;
Oder sie geben den äquivalenten &amp;quot;shutdown&amp;quot;-Befehl in einem Terminal bzw. der virtuellen Konsole ein.&lt;br /&gt;
&lt;br /&gt;
Allerdings müssen sie dazu als Administrator angemeldet sein s. &amp;quot;Sudo&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Wenn Sie den &amp;quot;shutdown&amp;quot;-Befehl benutzen wollen muss hinter den Befehl&lt;br /&gt;
&lt;br /&gt;
eine Zeitangabe in Minuten oder das wort &amp;quot;now&amp;quot; für sofortiges Ausschalten hinzugefügt werden:&lt;br /&gt;
&lt;br /&gt;
 xinux@zero:~$ sudo -i&lt;br /&gt;
 root@zero:~# shutdown 60&lt;br /&gt;
 &lt;br /&gt;
 Broadcast message from xinux@zero &lt;br /&gt;
         (/dev/pts/3) at 14:29 ...&lt;br /&gt;
 &lt;br /&gt;
 The system is going down for maintenance in 60 minutes!&lt;br /&gt;
&lt;br /&gt;
Sollten sie den Befehl widerrufen wollen dann drücken sie &amp;quot;STRG+C&amp;quot;,&lt;br /&gt;
&lt;br /&gt;
in dem Terminal in dem der shutdown Befehl gestartet wurde,&lt;br /&gt;
&lt;br /&gt;
oder geben sie den &amp;quot;shutdown&amp;quot;-Befehl zusammen mit der Abbruchoption &amp;quot;-c&amp;quot; in einem anderen Terminal ein:&lt;br /&gt;
&lt;br /&gt;
 root@zero:~# shutdown -c&lt;br /&gt;
&lt;br /&gt;
 shutdown: Shutdown cancelled&lt;br /&gt;
 root@zero:~# &lt;br /&gt;
&lt;br /&gt;
Wenn Sie den Rechner Neustarten möchten gibt es dazu die Option &amp;quot;-r&amp;quot; für den &amp;quot;shutdown&amp;quot;-Befehl&lt;br /&gt;
&lt;br /&gt;
oder den &amp;quot;reboot&amp;quot;-Befehl die beide auch als root ausgeführt werden müssen:&lt;br /&gt;
&lt;br /&gt;
 xinux@zero:~$ sudo -i&lt;br /&gt;
 [sudo] password for xinux: &lt;br /&gt;
 root@zero:~# shutdown -r now&lt;br /&gt;
&lt;br /&gt;
 root@zero:~# reboot&lt;br /&gt;
&lt;br /&gt;
===&amp;quot;man&amp;quot;===&lt;br /&gt;
&lt;br /&gt;
Programm zum Einsehen der Online-Manuals&lt;br /&gt;
&lt;br /&gt;
Die Manuals sind in folgende Sektionen unterteilt:&lt;br /&gt;
# Ausführbare Programme oder Shellbefehle&lt;br /&gt;
# Systemaufrufe (Kernelfunktionen)&lt;br /&gt;
# Bibliotheksaufrufe (Funktionen in System-Bibliotheken)&lt;br /&gt;
# Spezielle Dateien (gewöhnlich in /dev)&lt;br /&gt;
# Dateiformate und Konventionen, z. B. /etc/passwd&lt;br /&gt;
# Spiele&lt;br /&gt;
# Makropakete und Konventionen, z. B. man(7), groff(7)&lt;br /&gt;
# Systemadministrationsbefehle (in der Regel nur für root)&lt;br /&gt;
# Kernelroutinen [Nicht Standard]&lt;br /&gt;
&lt;br /&gt;
Aufruf eines Manuals erfolgt durch ''man kommando''&lt;br /&gt;
Beendet wird durch Drücken des Buchstabens q&lt;br /&gt;
Gesucht wird vorwärts durch Eingabe eines /suchausdruck&lt;br /&gt;
Gesucht wird rückwärts durch Eingabe eines ?suchausdruck&lt;br /&gt;
&lt;br /&gt;
Beispiele:&lt;br /&gt;
&lt;br /&gt;
      man passwd        Anschauen der Manualseite zum Programm passwd&lt;br /&gt;
      man 5 passwd      Anschauen der Manualseite zur Datei /etc/passwd&lt;br /&gt;
      man -a passwd     Anschauen aller Manualseiten zu passwd&lt;br /&gt;
      man -k passwd     Durchsucht die Kurzbeschreibungen der Manualseite&lt;br /&gt;
                        nach passwd und gibt alle Treffer aus&lt;br /&gt;
      man -f passwd      Gibt alle gefunden Kurzbescheibungen zu passwd aus&lt;br /&gt;
      man -L en passwd Gibt englische Manualseiten aus&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Was geht vor auf meinem System? (date,who)===&lt;br /&gt;
&lt;br /&gt;
Das Kommando date dient zur Abfrage von Datum und Uhrzeit.&lt;br /&gt;
&lt;br /&gt;
 xinux@zero:~ &amp;gt; date&lt;br /&gt;
 Fre Mär 16 16:35:03 CET 2001&lt;br /&gt;
&lt;br /&gt;
oder auch Anzeige der Grennwich Zeit:&lt;br /&gt;
&lt;br /&gt;
 xinux@zero:~ &amp;gt; date -u&lt;br /&gt;
 Fre Mär 16 15:35:34 UTC 2001&lt;br /&gt;
&lt;br /&gt;
 xinux@zero:~ &amp;gt; date -u &amp;quot;+%X&amp;quot;&lt;br /&gt;
 15:37:19&lt;br /&gt;
&lt;br /&gt;
 xinux@zero:~ &amp;gt; date -u &amp;quot;+%x&amp;quot;&lt;br /&gt;
 01/15/02&lt;br /&gt;
&lt;br /&gt;
who zeigt alle angemeldeten Benutzer an&lt;br /&gt;
&lt;br /&gt;
 thomas@cardassia:~ &amp;gt; who&lt;br /&gt;
 thomas             tty1 Feb 27 16:39&lt;br /&gt;
 thomas             tty2 Mar 2 17:08&lt;br /&gt;
 tina               tty6 Mar 16 16:38&lt;br /&gt;
&lt;br /&gt;
Mit `who --help' bekommen Sie mehr Informationen.&lt;br /&gt;
&lt;br /&gt;
 thomas@cardassia:~ &amp;gt; who --help&lt;br /&gt;
&lt;br /&gt;
Benutzung: who [OPTION]... [ DATEI | ARG1 ARG2 ]&lt;br /&gt;
&lt;br /&gt;
 -H, --heading             print line of column headings&lt;br /&gt;
 -i, -u, --idle            add user idle time as HOURS:MINUTES, . or old&lt;br /&gt;
 -l, --lookup              attempt to canonicalize hostnames via DNS&lt;br /&gt;
 -m                        only hostname and user associated with stdin&lt;br /&gt;
 -q, --count               all login names and number of users logged on&lt;br /&gt;
 -s                        (ignored)&lt;br /&gt;
 -T, -w, --mesg            add user's message status as +, - or ?&lt;br /&gt;
     --message             same as -T&lt;br /&gt;
     --writable            same as -T&lt;br /&gt;
     --help                display this help and exit&lt;br /&gt;
     --version             output version information and exit&lt;br /&gt;
&lt;br /&gt;
==Das UNIX-Dateisystem==&lt;br /&gt;
===Verzeichnisbaum===&lt;br /&gt;
&lt;br /&gt;
[[Image:vztree.jpg]]&lt;br /&gt;
&lt;br /&gt;
Das Betriebssystem UNIX besitzt ein hierarchisches Dateisystem. Es besteht aus:&lt;br /&gt;
* Dateien (Files)&lt;br /&gt;
Dateien speichern Informationen (Text, Bilder, Sound, Videos, Programme) und&lt;br /&gt;
werden über den Dateinamen angesprochen.&lt;br /&gt;
&lt;br /&gt;
* Verzeichnissen (Directories, Kataloge)&lt;br /&gt;
Verzeichnisse besitzen ebenfalls einen Namen und dienen zur Ordnung des&lt;br /&gt;
Dateisystems. Ein Verzeichnis kann Dateien und Unterverzeichnisse&lt;br /&gt;
(Subdirectories) enthalten. Das oberste Verzeichnis im Dateisystem heisst&lt;br /&gt;
Rootverzeichnis oder kurz Root und wird durch / (sprich: slash)&lt;br /&gt;
gekennzeichnet.&lt;br /&gt;
&lt;br /&gt;
Im Gegensatz zu Windows kennt UNIX keine Laufwerke.&lt;br /&gt;
Das obige Bild zeigt ein typisches UNIX-Dateisystem.&lt;br /&gt;
Unterhalb des Rootverzeichnisses befinden sich eine Vielzahl vonVerzeichnissen.&lt;br /&gt;
&lt;br /&gt;
===Wichtige Verzeichnisse===&lt;br /&gt;
&lt;br /&gt;
• '''Homeverzeichnis'''&lt;br /&gt;
&lt;br /&gt;
das Verzeichnis, in dem man sich unmittelbar nach dem Anmelden befindet. Das&lt;br /&gt;
Homeverzeichnis wird vom Systemverwalter eingerichtet; jeder Anwender&lt;br /&gt;
besitzt ein festes Homeverzeichnis. z.B. /home/hans&lt;br /&gt;
&lt;br /&gt;
~ (Tilde) bzw. $HOME (Shellvariable) kennzeichnen das Homeverzeichnis.&lt;br /&gt;
&lt;br /&gt;
• '''Aktuelles Verzeichnis'''&lt;br /&gt;
&lt;br /&gt;
Verzeichnis, in dem man sich aktuell befindet.&lt;br /&gt;
Das aktuelle Verzeichnis wird mit dem Befehl cd (change directory) oder per&lt;br /&gt;
Mausklick verändert.&lt;br /&gt;
Ein einfacher Punkt . kennzeichnet das aktuelle Verzeichnis.&lt;br /&gt;
&lt;br /&gt;
• '''Elternverzeichnis'''&lt;br /&gt;
&lt;br /&gt;
Verzeichnis unmittelbar oberhalb des aktuellen Verzeichnisses.&lt;br /&gt;
Jedes Verzeichnis ausser / besitzt genau ein Elternverzeichnis.&lt;br /&gt;
Zwei Punkte .. kennzeichnen das Elternverzeichnis (abhängig vom aktuellen&lt;br /&gt;
VZ).&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Absoluter Pfadname:===&lt;br /&gt;
&lt;br /&gt;
Beschreibt ausgehend vom Rootverzeichnis den Weg zum Zielverzeichnis oder zur&lt;br /&gt;
Zieldatei. (Welche Verzeichnisse müssen ausgehend von / durchlaufen werden, um&lt;br /&gt;
zum Ziel zu kommen?) Ein absoluter Pfadname beginnt immer mit / .&lt;br /&gt;
&lt;br /&gt;
===Relativer Pfadname:===&lt;br /&gt;
&lt;br /&gt;
Beschreibt ausgehend vom aktuellen Verzeichnis den Weg zum Zielverzeichnis&lt;br /&gt;
oder zur Zieldatei; ein relativer Pfadname beginnt nicht mit / .&lt;br /&gt;
/home/suxer&lt;br /&gt;
absoluter Pfadname für das Verzeichnis sub1 im Homeverzeichnis von suxer&lt;br /&gt;
&lt;br /&gt;
===Verzeichnisstruktur===&lt;br /&gt;
&lt;br /&gt;
 /bin         Kommandos die beim starten benötigt werden (Zugriff hat jeder)&lt;br /&gt;
 /sbin        Wichtige System-Programme (In der Regel root vorberhalten)&lt;br /&gt;
 /boot        Hier findet man die Dateien des Bootmanagers und des Kernel.&lt;br /&gt;
 /dev         In diesem Verzeichnis stehen die Gerätedateien (Devices),&lt;br /&gt;
 /home        Alle Heimatverzeichnisse der Nutzer findet man hier.&lt;br /&gt;
 /lib         Beim Systemstart benötigten Bibliotheken und Modules stehen hier.&lt;br /&gt;
 /mnt         Mountpunkt für temporäre Partitionen&lt;br /&gt;
 /opt         Software, die nicht Installationsumfang von Linux gehören.&lt;br /&gt;
 /root        Heimatverzeichnis des Administrators.&lt;br /&gt;
 /tmp         Temporäre Dateien können hier abgelegt werden&lt;br /&gt;
 /usr         statische Dateien (kann read-only gemountet sein)&lt;br /&gt;
 /var         variable Dateien (muss beschreibar sein )&lt;br /&gt;
 /etc         Konfiguartionsdateien und Startscripte&lt;br /&gt;
 /proc        Virtuelles Dateisystem -&amp;gt; repräsentiert den Kernel&lt;br /&gt;
&lt;br /&gt;
===Unterverzeichnisse von /usr===&lt;br /&gt;
&lt;br /&gt;
 sbin         Programme für root die beim Start nicht benötigt werden&lt;br /&gt;
 bin          Programme für alle die beim Start nicht benötigt werden&lt;br /&gt;
 X11R6        Dateien des X-Window-Sytems&lt;br /&gt;
 bin          Ausführbare Programme&lt;br /&gt;
 doc          Dokumentationen&lt;br /&gt;
 etc          Konfigurationsdateien&lt;br /&gt;
 games        Spiele&lt;br /&gt;
 include      Headerdateien für C-Programme&lt;br /&gt;
 local        Pakete die nicht zur Distribution gehören ähnlich /opt&lt;br /&gt;
 share        Pakete die von mehreren Paketen genutzt werden&lt;br /&gt;
 share/man    Die Manualpages&lt;br /&gt;
 share/info   Seiten des Infosystems&lt;br /&gt;
 share/doc    Dokumentationen&lt;br /&gt;
 src          Sources von Programmen (Kernel und andere)&lt;br /&gt;
&lt;br /&gt;
===Unterverzeichnisse von /var===&lt;br /&gt;
&lt;br /&gt;
 cache        Zwischenspreicher für Progammes&lt;br /&gt;
 games        Variable Daten der Games (Scores etc...)&lt;br /&gt;
 lock         Sperrdateien&lt;br /&gt;
 log          Die Logdateien (wichtiges Verzeichnis für Admins)&lt;br /&gt;
 mail         Das Mailsystem&lt;br /&gt;
 run          Dateien zu laufemdem Prozessen&lt;br /&gt;
 spool        Spooldateien (z.B. für das Drucksystem&lt;br /&gt;
 state        Statusinfos&lt;br /&gt;
 tmp          Wie /tmp eventuell nicht auf root Partion&lt;br /&gt;
&lt;br /&gt;
==Einfache Komandos==&lt;br /&gt;
===cd: Wechseln des Arbeitsverzeichnis===&lt;br /&gt;
&lt;br /&gt;
Um festzustellen in welchem Verzeichnis man sich befindet, sollte man den&lt;br /&gt;
Befehl &amp;quot;pwd&amp;quot; benutzen,&lt;br /&gt;
&lt;br /&gt;
und mit dem Befehl &amp;quot;cd&amp;quot; kann man zwischen den Verzeichnissen wechseln:&lt;br /&gt;
&lt;br /&gt;
Wechsele ins homeverzeichnis von Xinux&lt;br /&gt;
&lt;br /&gt;
 xinux@zero:~$ cd /home/xinux/&lt;br /&gt;
 xinux@zero:~$ pwd&lt;br /&gt;
 /home/xinux&lt;br /&gt;
&lt;br /&gt;
cd ~ -&amp;gt; wechsele ins jeweilige Homeverzeichnis&lt;br /&gt;
&lt;br /&gt;
cd .. -&amp;gt; wechsele ein Verzeichnis höher&lt;br /&gt;
&lt;br /&gt;
cd ../verzeichnis -&amp;gt; wechsele in eine paralleles Verzeichnis &amp;lt;- (ist eine relative Pfadangabe !)&lt;br /&gt;
&lt;br /&gt;
cd - -&amp;gt; wechsele in das Verzeichnis, in dem vorher gearbeitet wurde.&lt;br /&gt;
&lt;br /&gt;
Mit cd / wechselt man in das Wurzelverzeichnis.&lt;br /&gt;
&lt;br /&gt;
 xinux@zero:/var/log$ cd /&lt;br /&gt;
 xinux@zero:/$ pwd&lt;br /&gt;
 /&lt;br /&gt;
&lt;br /&gt;
===ls: Listing===&lt;br /&gt;
&lt;br /&gt;
Den Inhalt von Verzeichnissen kann man sich mit dem Befehl &amp;quot;ls&amp;quot; anzeigen lassen&lt;br /&gt;
wobei &amp;quot;ls&amp;quot; eine Vielzahl von Optionen besitzt:&lt;br /&gt;
&lt;br /&gt;
 ls                                  standard&lt;br /&gt;
 ls -l                               langes listing&lt;br /&gt;
 ls -a                               alle Dateien&lt;br /&gt;
 ls -i                               mit Inode&lt;br /&gt;
 ls -h                               gut lesbare Dateigröße&lt;br /&gt;
 ls -d                               Verzechnis wird angezeigt, nicht der Inhalt&lt;br /&gt;
 ls -L                               sortiert nach Größe&lt;br /&gt;
 ls -t                               sortiert nach Datum&lt;br /&gt;
 ls -F                               mit nützlichem Anhang&lt;br /&gt;
&lt;br /&gt;
 xinux@zero:/$ ls -l /var/log/messages&lt;br /&gt;
 -rw-r----- 1 syslog adm 2296 2009-06-16 10:05 /var/log/messages&lt;br /&gt;
&lt;br /&gt;
===more: Seitenweises Anzeigen von Seiten===&lt;br /&gt;
 root@zero:~# more /var/log/messages&lt;br /&gt;
 ...&lt;br /&gt;
&lt;br /&gt;
===head: erste Zeilen anzeigen===&lt;br /&gt;
Erste 10 Zeilen anzeigen&lt;br /&gt;
 root@zero:~# head /var/log/messages&lt;br /&gt;
 Jun 15 12:37:08 zero syslogd 1.5.0#5ubuntu3: restart.&lt;br /&gt;
 Jun 15 12:38:43 zero kernel: [  830.065036] mtrr: your processor doesn't support write-combining&lt;br /&gt;
 Jun 15 12:46:05 zero pulseaudio[4817]: pid.c: Stale PID file, overwriting.&lt;br /&gt;
 Jun 15 13:05:24 zero -- MARK --&lt;br /&gt;
 ...&lt;br /&gt;
&lt;br /&gt;
Erste zwei Zeilen anzeigen&lt;br /&gt;
 root@zero:~# head -n 2 /var/log/messages&lt;br /&gt;
 Jun 15 12:37:08 zero syslogd 1.5.0#5ubuntu3: restart.&lt;br /&gt;
 Jun 15 12:38:43 zero kernel: [  830.065036] mtrr: your processor doesn't support write-combining&lt;br /&gt;
&lt;br /&gt;
===tail: letzte Zeilen anzeigen===&lt;br /&gt;
 &lt;br /&gt;
 root@zero:~# tail /var/log/syslog&lt;br /&gt;
 ...&lt;br /&gt;
 Jun 19 11:19:35 zero -- MARK --&lt;br /&gt;
 Jun 19 11:39:35 zero -- MARK --&lt;br /&gt;
 Jun 19 11:59:36 zero -- MARK --&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Letze 5 Zeilen anzeigen&lt;br /&gt;
 root@zero:~# tail -n 5 /var/log/auth.log&lt;br /&gt;
 Jun 18 14:30:01 zero CRON[12040]: pam_unix(cron:session): session closed for user root&lt;br /&gt;
 Jun 18 14:39:01 zero CRON[12191]: pam_unix(cron:session): session opened for user root by (uid=0)&lt;br /&gt;
 Jun 18 14:39:01 zero CRON[12191]: pam_unix(cron:session): session closed for user root&lt;br /&gt;
 Jun 18 14:40:01 zero CRON[12237]: pam_unix(cron:session): session opened for user root by (uid=0)&lt;br /&gt;
 Jun 18 14:40:01 zero CRON[12237]: pam_unix(cron:session): session closed for user root&lt;br /&gt;
&lt;br /&gt;
Letze Zeilen anzeigen und fortlaufend aktualisieren&lt;br /&gt;
 root@zero:~# tail -f /var/log/syslog&lt;br /&gt;
 ...&lt;br /&gt;
&lt;br /&gt;
===mkdir: Ein neues Verzeichnis erstellen===&lt;br /&gt;
&lt;br /&gt;
 mkdir        verzeichnis&lt;br /&gt;
Erstellt ein Verzeichnis im working directory (wd)&lt;br /&gt;
&lt;br /&gt;
 mkdir  -p    ver1/ver2&lt;br /&gt;
Erstellt ein Verzeichnis ver2 unterhalb von ver1&lt;br /&gt;
wenn ver1 nicht existiert wird es erstellt&lt;br /&gt;
&lt;br /&gt;
 mkdir -m 753 ver1&lt;br /&gt;
Es wird das Verzeichnis ver1 erstellt mit der mask 753&lt;br /&gt;
&lt;br /&gt;
 mkdir -v     ver1&lt;br /&gt;
Geschwätzige Ausgabe :)&lt;br /&gt;
&lt;br /&gt;
===Zum Löschen von leeren Verzeichnissen wird rmdir benutzt===&lt;br /&gt;
&lt;br /&gt;
 rmdir           ver1&lt;br /&gt;
Löscht das leere Verzeichnis ver1&lt;br /&gt;
&lt;br /&gt;
 rmdir -v        ver1&lt;br /&gt;
Löscht das leere Verzeichnis ver1 und ist geschwätzig&lt;br /&gt;
&lt;br /&gt;
 rmdir -p        /ver1/ver2/ver3&lt;br /&gt;
Löscht das Verzeichnis ver3; wenn dadurch ver2 ein leeres&lt;br /&gt;
Verzeichnis wird, wird dieses auch gelöscht , wenn ver1&lt;br /&gt;
dadurch ein leeres Verzeichnis wird, wird auch dieses gelöscht.&lt;br /&gt;
&lt;br /&gt;
===touch Verändern des Zeitstempels===&lt;br /&gt;
&lt;br /&gt;
Mit touch können wir eine neue leere Datei erzeugen (das ist nicht der eigentliche&lt;br /&gt;
Zweck von touch, eigentlich wird der Zeitstempel geändert)&lt;br /&gt;
&lt;br /&gt;
 touch            dateiname&lt;br /&gt;
&lt;br /&gt;
===Kopieren=== &lt;br /&gt;
cp ist das Kommando um Dateien zu kopieren &lt;br /&gt;
&lt;br /&gt;
Eine Kopie von dat1 mit dem Namen dat2 erstellen:&lt;br /&gt;
&lt;br /&gt;
 xinux@zero:~$ cp dat1 dat2&lt;br /&gt;
&lt;br /&gt;
Eine Kopie von dat1 ins Verzeichnis ver2 erstellen:&lt;br /&gt;
&lt;br /&gt;
 xinux@zero:~$ cp dat1 ver2/&lt;br /&gt;
 &lt;br /&gt;
Eine Kopie erstellen mit ausführlicher Anzeige:&lt;br /&gt;
&lt;br /&gt;
 xinux@zero:~$ cp -v dat1 dat2&lt;br /&gt;
 `dat1' -&amp;gt; `dat2'&lt;br /&gt;
&lt;br /&gt;
Eine Kopie erstellen mit Rückfrage fals etwas überschrieben wird:&lt;br /&gt;
&lt;br /&gt;
 xinux@zero:~$ cp -i dat1 dat2&lt;br /&gt;
 cp: overwrite `dat2'?&lt;br /&gt;
&lt;br /&gt;
Eine Kopie erstellen und die Rückfrage überbrücken:&lt;br /&gt;
&lt;br /&gt;
 xinux@zero:~$ cp -f dat1 dat2&lt;br /&gt;
&lt;br /&gt;
Eine Kopie von dat1 ins Verzeichnis ver2 erstellen fals keine neuere Version von dat1 vorliegt:&lt;br /&gt;
&lt;br /&gt;
 xinux@zero:~$ cp -u dat1 ver2/&lt;br /&gt;
&lt;br /&gt;
Eine Kopie erstellen fals ver2 auf dem selben Dateisystem wie dat1 liegt:&lt;br /&gt;
&lt;br /&gt;
 xinux@zero:~$ cp -x dat1 ver2/&lt;br /&gt;
&lt;br /&gt;
Eine Kopie von ver1, die als ver2 oder unter ver2 als ver1 gespeichert wird erstellen:&lt;br /&gt;
&lt;br /&gt;
 xinux@zero:~$ cp -r ver1/ ver2/&lt;br /&gt;
&lt;br /&gt;
Eine Kopie von einer Datei erstellen und ihre Attribute beibehalten:&lt;br /&gt;
&lt;br /&gt;
 xinux@zero:~$ cp -p sux1 sux2&lt;br /&gt;
&lt;br /&gt;
Eine Kopie erstellen bei der die Links erhalten bleiben:&lt;br /&gt;
&lt;br /&gt;
 xinux@zero:~$ cp -r ver1/ ver2/&lt;br /&gt;
&lt;br /&gt;
Eine Kopie erstellen zum Archivieren (-dpr):&lt;br /&gt;
&lt;br /&gt;
 xinux@zero:~$ cp -a ver1/ ver2/&lt;br /&gt;
&lt;br /&gt;
===rm: Löschen einer Datei===&lt;br /&gt;
&lt;br /&gt;
Um Dateien zu löschen, brauchen wir das Kommando &amp;quot;rm&amp;quot;:&lt;br /&gt;
&lt;br /&gt;
 rm               dat1        dat1 wird gelöscht&lt;br /&gt;
 rm         -i    dat1        dat1 wird nach Bestätigung gelöscht&lt;br /&gt;
 rm         -f    dat1        dat1 wird ohne Rückfragen gelöscht&lt;br /&gt;
 rm         -v    dat1        dat1 wird glöscht (geschwätzige Ausgabe)&lt;br /&gt;
 rm         -r    ver1        Löschen von nicht leeren Verzeichnissen&lt;br /&gt;
                              Achtung !!! Als root kann man sich damit Teile&lt;br /&gt;
                              oder sogar den gesamten Verzeichnisbaum&lt;br /&gt;
                              absägen !!!&lt;br /&gt;
&lt;br /&gt;
===mv: Verschieben===&lt;br /&gt;
&lt;br /&gt;
Mit dem Befehl &amp;quot;mv&amp;quot; werden Daten verschoben, folgendes gilt:&lt;br /&gt;
&lt;br /&gt;
 mv          dat1 dat2         &lt;br /&gt;
Die Datei dat1 wird in dat2 umbenannt&lt;br /&gt;
 mv          dat1 /ver1        &lt;br /&gt;
Die Datei dat1 wird nach /ver1 verschoben&lt;br /&gt;
&lt;br /&gt;
Die Parameter und ihre Bedeutung:&lt;br /&gt;
&lt;br /&gt;
      -i                      wenn eine Datei exisitiert wird vor dem&lt;br /&gt;
                              Überschreiben nachgefragt&lt;br /&gt;
      -v                      verbose (geschwätzig)&lt;br /&gt;
      -u                      nur neuere Daten werden bei Bedarf überschrieben&lt;br /&gt;
      -b                      wenn überschrieben werden soll, wird ein Backup&lt;br /&gt;
                              erstellt&lt;br /&gt;
      -S ENDUNG               das Backup bekommt die Endung ENDUNG&lt;br /&gt;
&lt;br /&gt;
===su Benutzer wechseln===&lt;br /&gt;
&lt;br /&gt;
 su -             &lt;br /&gt;
Wechsel zum Rootaccount, wie wenn dieser sich neu anmelden würde. (Bsp: su -)&lt;br /&gt;
&lt;br /&gt;
 su Benutzernamen &lt;br /&gt;
Wechsel der Identität zu Benutzer (gegebenenfalls Passwortabfrage)&lt;br /&gt;
&lt;br /&gt;
 su -c Kommando   &lt;br /&gt;
Kommando wird als rootaccount ausgeführt&lt;br /&gt;
&lt;br /&gt;
==Der Standard Editor vi==&lt;br /&gt;
Der vi ist der Standardeditor in der Unixwelt. Er ist in jedem Unix-Derivat&lt;br /&gt;
enthalten.&lt;br /&gt;
Der Editor hat zwar den schlechten Ruf umständlich zu bedienen zu sein, ist&lt;br /&gt;
jedoch sehr leistungsfähig und systemübergreifend verfügbar. Beim vi handelt es&lt;br /&gt;
sich um einen rein textorientierten Editor, der mittels eigener Kommandos&lt;br /&gt;
gesteuert wird.&lt;br /&gt;
&lt;br /&gt;
Der Editor VIM ist eine weitere Verbesserung von VI und leichter zu bedienen.&lt;br /&gt;
Und unter Ubuntu/Debian mit &amp;quot;apt-get install vim&amp;quot; zu installieren.&lt;br /&gt;
&lt;br /&gt;
===Starten des Editors:===&lt;br /&gt;
&lt;br /&gt;
Der Editorstart erfolgt einfach durch die Eingabe des Kommandos vi mit dem&lt;br /&gt;
Dateinamen der zu editierenden Datei als Parameter.&lt;br /&gt;
Beispiel:        &lt;br /&gt;
 vi sux.txt&lt;br /&gt;
&lt;br /&gt;
===Die Betriebsmodi des vi:===&lt;br /&gt;
&lt;br /&gt;
Ein Umstand, der dem vi den Ruf der komplizierten Bedienbarkeit zugetragen hat,&lt;br /&gt;
sind die unterschiedlichen Betriebsmodi des Editors. Genauer gesagt verfügt der&lt;br /&gt;
vi über drei Betriebsmodi:&lt;br /&gt;
&lt;br /&gt;
====Kommandomodus:====&lt;br /&gt;
&lt;br /&gt;
Innerhalb dieses Modus werden die eingegebenen Zeichen direkt als Befehle des&lt;br /&gt;
Editors interpretiert und ausgeführt. Dabei gibt es weder ein Bereitschaftszeichen&lt;br /&gt;
(Prompt) noch ein Echo (Ausgabe). Der Kommandomodus ist der Modus, in dem&lt;br /&gt;
sich der vi direkt nach seinem Start befindet.&lt;br /&gt;
&lt;br /&gt;
====Zeilenmodus oder Exmodus:====&lt;br /&gt;
&lt;br /&gt;
Dieser Modus ist der einzige Modus mit einem eigenen Bereitschaftszeichen,&lt;br /&gt;
nämlich dem Doppelpunkt (:). Das Prompt wird ebenso wie die Befehlsausgaben&lt;br /&gt;
in der Statuszeile angezeigt.&lt;br /&gt;
&lt;br /&gt;
====Eingabemodus:====&lt;br /&gt;
&lt;br /&gt;
Der Eingabemodus ist derjenige, in welchem der zu bearbeitende Text bearbeitet&lt;br /&gt;
werden kann. Alle hier eingegebenen Zeichen werden als Text für die aktuelle&lt;br /&gt;
Datei interpretiert. Zwischen den unterschiedlichen Modi kann jederzeit&lt;br /&gt;
gewechselt werden. Von Kommandomodus gelangen Sie durch mehere Wege in&lt;br /&gt;
den Eingabemodus. Man kann durch folgende Aktionen wechslen&lt;br /&gt;
&lt;br /&gt;
{| border=1 cellpadding=2&lt;br /&gt;
|i&lt;br /&gt;
|Text vor der aktuellen Cursorposition einfügen&lt;br /&gt;
|-&lt;br /&gt;
|I&lt;br /&gt;
|Text am Zeilenanfang einfügen&lt;br /&gt;
|-&lt;br /&gt;
|a&lt;br /&gt;
|Text hinter der aktuellen Cursorposition einfügen&lt;br /&gt;
|-&lt;br /&gt;
|A&lt;br /&gt;
|Text am Zeilenende einfügen&lt;br /&gt;
|-&lt;br /&gt;
|o&lt;br /&gt;
|Unterhalb der aktuellen Zeile eine neue Zeile einfügen&lt;br /&gt;
|-&lt;br /&gt;
|O&lt;br /&gt;
|Oberhalb der aktuellen Zeile eine neue Zeile einfügen&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Durch das Drücken der ESC - Taste gelangt man in den Kommandomodus zurück.&lt;br /&gt;
&lt;br /&gt;
Im Kommandomodus können Sie durch den Text navigieren und auch den Text&lt;br /&gt;
selbst bearbeiten, z.B ausschneiden, kopieren usw. Dazu sind einige Kommandos&lt;br /&gt;
nötig, von denen die wichtigsten im Folgenden erläutert werden:&lt;br /&gt;
&lt;br /&gt;
 xinux@zero:/$ vi iwas.txt&lt;br /&gt;
&lt;br /&gt;
[[Image:vim.jpg]]&lt;br /&gt;
&lt;br /&gt;
===Benutzen des Kommandomodus===&lt;br /&gt;
====Steuerung des Cursors durch den Text====&lt;br /&gt;
&lt;br /&gt;
Mittels folgender Kommandos bewegt sich der Cursor durch den Text:&lt;br /&gt;
&lt;br /&gt;
{| border=1 cellpadding=2&lt;br /&gt;
|h&lt;br /&gt;
|Cursor ein Zeichen nach links&lt;br /&gt;
|-&lt;br /&gt;
|l&lt;br /&gt;
|Cursor ein Zeichen nach rechts&lt;br /&gt;
|-&lt;br /&gt;
|k&lt;br /&gt;
|Cursor eine Zeile nach oben&lt;br /&gt;
|-&lt;br /&gt;
|j&lt;br /&gt;
|Cursor eine Zeile nach unten&lt;br /&gt;
|-&lt;br /&gt;
|w&lt;br /&gt;
|Cursor ein Wort nach rechts&lt;br /&gt;
|-&lt;br /&gt;
|b&lt;br /&gt;
|Cursor ein Wort nach links&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Alle diese Kommandos können mit einem vorgestellten Wiederholungsfaktor&lt;br /&gt;
arbeiten. Der Befehl 3w verschiebt demnach den Cursor um 3 Wörter nach rechts.&lt;br /&gt;
&lt;br /&gt;
====Angaben zur Positionierung====&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{| border=1 cellpadding=2&lt;br /&gt;
|STRG+U&lt;br /&gt;
|1⁄2 Bildschirmseite nach oben&lt;br /&gt;
|-&lt;br /&gt;
|STRG+D&lt;br /&gt;
|1⁄2 Bildschirmseite nach unten&lt;br /&gt;
|-&lt;br /&gt;
|STRG+B&lt;br /&gt;
|1 Bildschirmseite nach oben&lt;br /&gt;
|-&lt;br /&gt;
|STRG+F&lt;br /&gt;
|1 Bildschirmseite nach unten&lt;br /&gt;
|-&lt;br /&gt;
|/Ausdruck&lt;br /&gt;
|Sucht den Ausdruck (vorwärts) Weitersuchen mit n , N&lt;br /&gt;
|-&lt;br /&gt;
|?Ausdruck&lt;br /&gt;
|Sucht den Ausdurck (rückwärts) Weitersuchen mit n , N&lt;br /&gt;
|-&lt;br /&gt;
|0&lt;br /&gt;
|Zeilenanfang&lt;br /&gt;
|-&lt;br /&gt;
|$&lt;br /&gt;
|Zeilenende&lt;br /&gt;
|-&lt;br /&gt;
|w&lt;br /&gt;
|Nächstes Wort&lt;br /&gt;
|-&lt;br /&gt;
|b&lt;br /&gt;
|Vorheriges Wort&lt;br /&gt;
|-&lt;br /&gt;
|fc&lt;br /&gt;
|Auf das Zeichen c springen. c steht für ein beliebiges Zeichen&lt;br /&gt;
|-&lt;br /&gt;
|G&lt;br /&gt;
|Letzte Zeile der Datei&lt;br /&gt;
|-&lt;br /&gt;
|ng&lt;br /&gt;
|n-te Zeile der Datei&lt;br /&gt;
|-&lt;br /&gt;
|H&lt;br /&gt;
|Anfang der Bildschirmseite&lt;br /&gt;
|-&lt;br /&gt;
|L&lt;br /&gt;
|Ende der Bildschirmseite&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
====Befehle zur Textbearbeitung -&amp;gt; Was soll geschehen====&lt;br /&gt;
&lt;br /&gt;
{| Border=1 Cellpadding=2&lt;br /&gt;
|x&lt;br /&gt;
|Löscht Zeichen&lt;br /&gt;
|-&lt;br /&gt;
|d&lt;br /&gt;
|Löschen und in den Puffer laden&lt;br /&gt;
|-&lt;br /&gt;
|c&lt;br /&gt;
|Ändern&lt;br /&gt;
|-&lt;br /&gt;
|y&lt;br /&gt;
|In den Puffer laden&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
====Weitere wichtige Befehle:====&lt;br /&gt;
&lt;br /&gt;
{| Border=1 Cellpadding=2&lt;br /&gt;
|p&lt;br /&gt;
|Aus dem Puffer einfügen&lt;br /&gt;
|-&lt;br /&gt;
|u&lt;br /&gt;
|Undo, macht den letzten Befehl rückgängig&lt;br /&gt;
|-&lt;br /&gt;
|STRG+R&lt;br /&gt;
|Redo, macht den letzten Undo rückgängig&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
===Zeilen- oder Exmodus===&lt;br /&gt;
&lt;br /&gt;
Wie schon erwähnt wird der Zeilen oder Exmodus durch einen : eingeleitet.&lt;br /&gt;
Es folgen einige Beispiele.&lt;br /&gt;
&lt;br /&gt;
Befehle zum Speichern und Beenden:&lt;br /&gt;
&lt;br /&gt;
 :w          Schreibt Datei&lt;br /&gt;
 :w Datei2   Schreibt eine Kopie in Datei2&lt;br /&gt;
 :w !        Schreibt Datei (übergehe Schreibschutz)&lt;br /&gt;
 :w ! Datei2 Schreibt eine Kopie in Datei2 (übergehe Schreibschutz)&lt;br /&gt;
 :q          Schließe Datei&lt;br /&gt;
 :q!         Schließe Datei (verwerfe Änderungen)&lt;br /&gt;
 :wq         Schreibe Datei und beende Editor&lt;br /&gt;
 :wq!        Schreibe Datei und beende Editor (übergehe Schreibschutz)&lt;br /&gt;
 :q!         Schließe Datei (verwerfe Änderungen)&lt;br /&gt;
 :h          Hilfe anzeigen, durch drücken von :q Beenden der Hilfe&lt;br /&gt;
 :e Datei3   Editiere Datei3&lt;br /&gt;
 :e #        Editere vorhergehende Datei&lt;br /&gt;
 :1,3co9     Kopiere von der ersten bis zu dritten Zeile &lt;br /&gt;
             und füge den Inhalt unterhalb der neunte Zeile ein.&lt;br /&gt;
&lt;br /&gt;
Interaktionen mit Unix:&lt;br /&gt;
&lt;br /&gt;
 :r Datei4   Fügt Inhalt der Datei4 nach dem Cursor ein&lt;br /&gt;
 :r ! Befehl Fügt Ausgabe des Befehls nach dem Cursor ein&lt;br /&gt;
 :! Befehl   Führt den Befehl aus&lt;br /&gt;
 :sh         Starte Subshell -&amp;gt; mit exit kehrt man wieder zurück&lt;br /&gt;
             Eingabemodus zurück&lt;br /&gt;
&lt;br /&gt;
====Ersetzen von Textteilen====&lt;br /&gt;
&lt;br /&gt;
Die grundsätzliche Syntax lautet:&lt;br /&gt;
&lt;br /&gt;
 :[Zeilennummer,Zeilennummer]s/Muster/Ersetzung/[gc]&lt;br /&gt;
&lt;br /&gt;
 :s/worf/kirn/              der erste worf wird in der aktuellen Zeile durch kirn ersetzt&lt;br /&gt;
 :1,9s/worf/kirn/g          von der 1. bis zur 9. Zeile werden alle worf durch kirn ersetzt&lt;br /&gt;
 :1,$s/worf/kirn/           von der ersten bis zur letzten Zeile ersetze ersten worf durch&lt;br /&gt;
                            kirn&lt;br /&gt;
 :.,$s/worf/kirn/g          von der aktuellen bis zur letzten Zeile ersetze alle worf durch&lt;br /&gt;
                            kirn&lt;br /&gt;
 :1,.s/worf/kirn/c          von der 1. bis zur aktuellen Zeile ersetze worf durch kirn, frage&lt;br /&gt;
                            aber nach&lt;br /&gt;
 :1,$s/^worf/kirn/          von der ersten bis zur letzten Zeile ersetze worf am&lt;br /&gt;
                            Zeilenanfang durch kirn&lt;br /&gt;
 :4,$s/worf$/kirn/          von der 4. bis zur letzten Zeile ersetze worf am Zeilenende&lt;br /&gt;
                            durch kirn&lt;br /&gt;
 :1,$s/^#//                 lösche alle Kommentarzeichen&lt;br /&gt;
 :1,$s/^.orf/kirn/           ersetze alles was am Zeilenanfang ein beliebiges Zeichen hat&lt;br /&gt;
                            gefolgt von einem orf durch kirn&lt;br /&gt;
 :1,$s/^[A-Z]orf/kirn/g     suche nach einem Großbuchstaben am Anfang der Zeile&lt;br /&gt;
                            gefolgt von einem orf und ersetze durch kirn&lt;br /&gt;
 :1,$s/^M[ae][iy]e*r/kirn/  suche alles, was am Anfang der Zeile ein großes M enthält,&lt;br /&gt;
                            gefolgt von einem a oder e , gefolgt von einem i oder y ,&lt;br /&gt;
                            gefolgt von einem e , welches 0 oder N mal vorkommen kann,&lt;br /&gt;
                            gefolgt von einem r und ersetze es durch kirn&lt;br /&gt;
&lt;br /&gt;
==Reguläre Ausdrücke==&lt;br /&gt;
&lt;br /&gt;
{| Border=1 Cellpadding=2&lt;br /&gt;
|c&lt;br /&gt;
|Ein einzelner Buchstabe passt auf sich selbst&lt;br /&gt;
|-&lt;br /&gt;
|.&lt;br /&gt;
|Ein Punkt passt auf jedes Zeichen außer auf das Zeilenende&lt;br /&gt;
|-&lt;br /&gt;
|*&lt;br /&gt;
|Das dem Operator * vorangehende Muster kann 0 oder öfter vorkommen&lt;br /&gt;
|-&lt;br /&gt;
|^&lt;br /&gt;
|(Caret) passt auf den Zeilenanfang&lt;br /&gt;
|-&lt;br /&gt;
|$&lt;br /&gt;
|Passt auf das Zeilenende&lt;br /&gt;
|-&lt;br /&gt;
|\&lt;br /&gt;
|Das folgende Sonderzeichen wird entwertet&lt;br /&gt;
|-&lt;br /&gt;
|[...]&lt;br /&gt;
|Passt auf &amp;quot;genau&amp;quot; eins in [...] angebenen Zeichen&lt;br /&gt;
|-&lt;br /&gt;
|[^...]&lt;br /&gt;
|Passt auf &amp;quot;genau&amp;quot; ein Zeichen welches nicht in [...] angebenen ist&lt;br /&gt;
|-&lt;br /&gt;
|\&amp;lt;&lt;br /&gt;
|Passt auf den Wortanfang&lt;br /&gt;
|-&lt;br /&gt;
|\&amp;gt;&lt;br /&gt;
|Passt auf das Wortende&lt;br /&gt;
|-&lt;br /&gt;
|\+&lt;br /&gt;
|Das dem Operator \+ vorangehende Muster kann 1 oder öfter vorkommen&lt;br /&gt;
|-&lt;br /&gt;
|&amp;amp;&lt;br /&gt;
|Setzt das gefunden Suchmuster ein&lt;br /&gt;
|-&lt;br /&gt;
|\(...\)&lt;br /&gt;
|Speichert den Text auf den das Suchmuster passt zur späteren Verwendung&lt;br /&gt;
|-&lt;br /&gt;
|\n&lt;br /&gt;
|Setzt das vorangehende, mit \(...\) Gefundene wieder ein&lt;br /&gt;
|-&lt;br /&gt;
|(...)&lt;br /&gt;
|Gruppiert Auswahlmöglichkeiten&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;nowiki&amp;gt;|&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
|Trennt Auswahlmöglichkeiten&lt;br /&gt;
|-&lt;br /&gt;
|\b&lt;br /&gt;
|Passt auf den Anfang oder das Ende eines Wortes&lt;br /&gt;
|-&lt;br /&gt;
|\B&lt;br /&gt;
|Symbolisiert den Raum innerhalb eines Wortes&lt;br /&gt;
|-&lt;br /&gt;
|\w&lt;br /&gt;
|Passt auf alle alphanumerischen Zeichen [A-Za-z0-9]&lt;br /&gt;
|-&lt;br /&gt;
|\W&lt;br /&gt;
|Passt auf alle nichtalphanumerischen Zeichen [^A-Za-z0-9]&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Die Rangfolge der Operatoren(von der höchsten zur niedrigsten)&lt;br /&gt;
:(, ), ?, *, + | .&lt;br /&gt;
&lt;br /&gt;
Die anderen Operatoren sind mit den anderen Buchstaben gleichrangig.&lt;br /&gt;
&lt;br /&gt;
===Beispiel zum Suchen===&lt;br /&gt;
&lt;br /&gt;
 Suchmuster               Passt auf&lt;br /&gt;
 ^Tuxer                   Tuxer am Zeilenanfang&lt;br /&gt;
 [tT]uxer                 Tuxer oder tuxer&lt;br /&gt;
 80[23]?86                8086, 80286 oder 80386&lt;br /&gt;
&lt;br /&gt;
===grep===&lt;br /&gt;
&lt;br /&gt;
Mit grep ist es möglich, in Dateien nach regulären Ausdrücken zu suchen. Wenn&lt;br /&gt;
eine Übereinstimmung gefunden wird, wird die komplette Zeile auf die&lt;br /&gt;
Standardausgabe geschrieben. grep kann auch von STDIN lesen.Es ist&lt;br /&gt;
empfehlenswert, sich anzugwöhnen ,das Suchmuster in Anführungszeichen zu&lt;br /&gt;
schreiben. Es gibt 3 Arten fgrep = fastgrep , grep und egrep egrep&lt;br /&gt;
&lt;br /&gt;
Beispiel:&lt;br /&gt;
&lt;br /&gt;
 root@zero:~# cat text&lt;br /&gt;
 quatsch&lt;br /&gt;
 quatsch&lt;br /&gt;
 quatsch&lt;br /&gt;
 wichtig&lt;br /&gt;
 quatsch&lt;br /&gt;
 root@zero:~# grep wichtig text&lt;br /&gt;
 wichtig&lt;br /&gt;
 root@zero:~# &lt;br /&gt;
&lt;br /&gt;
 -c                   meldet nur die Gesamtzahl der Fundstellen&lt;br /&gt;
 -v                   zeigt nur Zeilen, die »Ausdruck« nicht enthalten&lt;br /&gt;
 -i                   ignoriert Groß- und Kleinschreibung&lt;br /&gt;
 -l                    meldet nur Dateinamen mit Fundstellen&lt;br /&gt;
 -n                   listet Zeilennummern zu jeder Fundstelle&lt;br /&gt;
 -f                   Dateiname »Dateiname« enthält die Such-Ausdrücke&lt;br /&gt;
 -E                   ist ein erweiterter regulärer Ausdruck (egrep)&lt;br /&gt;
 -F                   (Muster, Ausdruck) ist ein Muster (String) (fgrep)&lt;br /&gt;
 -b                   listet auch die Position der Fundstellen&lt;br /&gt;
 -C    Anzahl         Anzahl von Zeilen werden nach der Fundstelle ausgegeben&lt;br /&gt;
 -B    Anzahl         Anzahl von Zeilen werden vor der Fundstelle ausgegeben&lt;br /&gt;
 -r                   Durchsucht Verzeichnisse rekursiv&lt;br /&gt;
&lt;br /&gt;
==Useridendifikation==&lt;br /&gt;
===/etc/passwd===&lt;br /&gt;
====Beschreibung====&lt;br /&gt;
passwd ist eine ASCII-Datei, die eine Liste der Benutzer des Systems und deren&lt;br /&gt;
Passwörter enthält. Die Passwortdatei sollte für alle Benutzer lesbar sein, was für&lt;br /&gt;
dieVerschlüsselung notwendig ist; aber nur vom Superuser beschreibbar. Wenn&lt;br /&gt;
Sie eine neue Kennung einrichten, lassen Sie das Passwort-Feld in der Datei frei&lt;br /&gt;
und benutzen Sie passwd(1), um dem System ein Passwort für die neue Kennung&lt;br /&gt;
mitzuteilen.&lt;br /&gt;
&lt;br /&gt;
Die Datei /etc/passwd enthält einen Eintrag pro Zeile mit dem Format:&lt;br /&gt;
login_name:passwd:UID:GID:user_name:directory:shell&lt;br /&gt;
====Die Bedeutung der Felder:====&lt;br /&gt;
# login_name Kennung des Benutzers auf dem System.&lt;br /&gt;
# password   Hier steht bei Shadowsystemen ein x. Die Passwörter sind in der Datei /etc/shadow&lt;br /&gt;
# UID        Die numerische Benutzernummer.&lt;br /&gt;
#  GID        Die numerische Gruppennummer des Benutzers.&lt;br /&gt;
# user_name Ein optionales Kommentarfeld, oft benutzt für den vollen Namen des Benutzers und weitere Informationen (Telefon, Raum-Nummer etc.).&lt;br /&gt;
# directory  Das Heimatverzeichnis $HOME des Benutzers.&lt;br /&gt;
# shell      Das Programm, das beim Einloggen gestartet werden soll (falls nicht nötig, benutzen Sie /bin/bash).&lt;br /&gt;
&lt;br /&gt;
===/etc/group===&lt;br /&gt;
====Beschreibung====&lt;br /&gt;
etc/group ist eine ASCII Datei, die Gruppen definiert, zu denen Benutzer&lt;br /&gt;
gehören. Es gibt nur einen Eintrag pro Zeile; jede Zeile hat folgendes Format:&lt;br /&gt;
         GruppenName:Passwort:GruppenKennung:BenutzerListe&lt;br /&gt;
Beschreibung der Felder:&lt;br /&gt;
#     GruppenName      Die Bezeichnung der Gruppe.&lt;br /&gt;
#     Passwort         Das (verschlüsselte) Gruppen-Passwort. Wenn dieses Feld leer ist, wird kein Passwort benötigt.&lt;br /&gt;
#     GruppenKennung Die numerische Identifikation der Gruppe.&lt;br /&gt;
#     BenutzerListe    Alle Namen der Mitglieder, getrennt durch Kommas.&lt;br /&gt;
&lt;br /&gt;
===/etc/shadow===&lt;br /&gt;
====Beschreibung====&lt;br /&gt;
shadow beinhaltet Informationen zu den verschlüsselten Passwörten, zu den&lt;br /&gt;
Benutzerzugängen und weitere Informationen zur Laufzeit der Passwörter.&lt;br /&gt;
 Name:Passwort:Letzte Änderung:Mintage:Maxtage:Warntage:Inaktiv:Ablauf&lt;br /&gt;
#    Der Loginname&lt;br /&gt;
#    verschlüsseltes Passwort &lt;br /&gt;
&amp;lt;nowiki&amp;gt;*&amp;lt;/nowiki&amp;gt; bedeutet Benutzer kann sich nicht einlogen&lt;br /&gt;
! bedeutet Benutzer hat kein Passwort gesetzt&lt;br /&gt;
#    Tage seit dem 1 Januar 1970 an dem das Passwort letztmals geändert wurde&lt;br /&gt;
#    Tage, die das Passwort behalten werden muss, bevor es wieder geändert werden kann&lt;br /&gt;
#     Die Anzahl der Tage, nach denen der Benutzer das Passwort wieder ändern muss&lt;br /&gt;
#    Anzahl der Tage bevor das Passwort abläuft und der Benutzer gewarnt wird&lt;br /&gt;
#    Wenn der Zugang diese Anzahl von Tagen nicht benutzt wird, wird der Zugang gesperrt&lt;br /&gt;
#    Tag seit dem 1 Januar 1970, an dem der Zugang gesperrt wird&lt;br /&gt;
#    Reserviertes Feld&lt;br /&gt;
&lt;br /&gt;
Die Datei sollte aus Sicherheitgründen nicht für einen normalen Benutzer lesbar&lt;br /&gt;
sein.&lt;br /&gt;
&lt;br /&gt;
==Programme zur Userverwaltung==&lt;br /&gt;
===useradd===&lt;br /&gt;
User anlegen&lt;br /&gt;
 root@zero:~# useradd -m -u 1011 -g users -G admin -d /home/erwin -s /bin/bash -c &amp;quot;Erwin Lehman&amp;quot;  erwin&lt;br /&gt;
{| border=1 cellpadding=2&lt;br /&gt;
|&amp;quot;-m&amp;quot;&lt;br /&gt;
|Lege Homedirectory an&lt;br /&gt;
|-&lt;br /&gt;
|&amp;quot;-u 1011&amp;quot;&lt;br /&gt;
|Userid wird zugeordnet&lt;br /&gt;
|-&lt;br /&gt;
|&amp;quot;-g users&amp;quot;&lt;br /&gt;
|Primäre Gruppe wird zugeordnet&lt;br /&gt;
|-&lt;br /&gt;
|&amp;quot;-G admin&amp;quot;&lt;br /&gt;
|Sekunbdäre Gruppe wird zugeordnet&lt;br /&gt;
|-&lt;br /&gt;
|&amp;quot;-d /home/erwin/&amp;quot;&lt;br /&gt;
|Name des Homedirectory&lt;br /&gt;
|-&lt;br /&gt;
|&amp;quot;-s /bin/bash&amp;quot;&lt;br /&gt;
|Bash wird zugeordnet&lt;br /&gt;
|- &lt;br /&gt;
|&amp;quot;-c Erwin Lehman&amp;quot;&lt;br /&gt;
|Kommentarfeld&lt;br /&gt;
|-&lt;br /&gt;
|&amp;quot;erwin&amp;quot; &lt;br /&gt;
|Name des Users&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Defaulteinstellungen anzeigen&lt;br /&gt;
 root@zero:~# useradd -D&lt;br /&gt;
 GROUP=100&lt;br /&gt;
 HOME=/home&lt;br /&gt;
 INACTIVE=-1&lt;br /&gt;
 EXPIRE=&lt;br /&gt;
 SHELL=/bin/sh&lt;br /&gt;
 SKEL=/etc/skel&lt;br /&gt;
 CREATE_MAIL_SPOOL=no&lt;br /&gt;
&lt;br /&gt;
Defaulteinstellungen ändern&lt;br /&gt;
 useradd -D -s /bin/bash&lt;br /&gt;
&lt;br /&gt;
Konfigurationsdatei&lt;br /&gt;
 root@zero:~# cat /etc/default/useradd &lt;br /&gt;
 SHELL=/bin/bash&lt;br /&gt;
 GROUP=100&lt;br /&gt;
 HOME=/home&lt;br /&gt;
 INACTIVE=-1&lt;br /&gt;
 EXPIRE=&lt;br /&gt;
 SKEL=/etc/skel&lt;br /&gt;
 CREATE_MAIL_SPOOL=no&lt;br /&gt;
&lt;br /&gt;
===usermod===&lt;br /&gt;
User modifizieren&lt;br /&gt;
 root@zero:~# usermod -l fritz -s /bin/sh -G admin,video erwin&lt;br /&gt;
{| border=1 cellpadding=2&lt;br /&gt;
|&amp;quot;-l fritz&amp;quot;&lt;br /&gt;
|Neuer Username&lt;br /&gt;
|-&lt;br /&gt;
|&amp;quot;-s /bin/sh&amp;quot;&lt;br /&gt;
|Neue Shell&lt;br /&gt;
|-&lt;br /&gt;
|&amp;quot;-G admin, video&amp;quot;&lt;br /&gt;
|Sekunbdäre Gruppen werden zugeordnet&lt;br /&gt;
|-&lt;br /&gt;
|&amp;quot;erwin&amp;quot; &lt;br /&gt;
|Name des Users&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
===userdel===&lt;br /&gt;
User inklusive Homedirectory löschen&lt;br /&gt;
 root@zero:~# userdel -r fritz&lt;br /&gt;
&lt;br /&gt;
===passwd===&lt;br /&gt;
Rootpasswort ändern&lt;br /&gt;
 root@zero:~# passwd &lt;br /&gt;
 Geben Sie ein neues UNIX Passwort ein:'''sysadm''' &lt;br /&gt;
 Geben Sie das neue UNIX Passwort erneut ein:'''sysadm''' &lt;br /&gt;
 passwd: Passwort erfolgreich geändert&lt;br /&gt;
&lt;br /&gt;
Passwort von tux ändern&lt;br /&gt;
 root@zero:~# passwd tux&lt;br /&gt;
 Geben Sie ein neues UNIX Passwort ein:'''suxer''' &lt;br /&gt;
 Geben Sie das neue UNIX Passwort erneut ein:'''suxer'''&lt;br /&gt;
 passwd: Passwort erfolgreich geändert&lt;br /&gt;
&lt;br /&gt;
Minimale und Maximale Gültigkeit des Passwortes von tux festlegen&lt;br /&gt;
 root@zero:~# passwd -n 5 -x 120 tux&lt;br /&gt;
&lt;br /&gt;
===groupadd===&lt;br /&gt;
 root@zero:~# groupadd -f -g 2001 xinuxer&lt;br /&gt;
{| border=1 cellpadding=2&lt;br /&gt;
|&amp;quot;-f&amp;quot;&lt;br /&gt;
|Überschreibe bestehende Gruppe&lt;br /&gt;
|-&lt;br /&gt;
|&amp;quot;-g 2001&amp;quot;&lt;br /&gt;
|GID der Gruppe&lt;br /&gt;
|-&lt;br /&gt;
|&amp;quot;xinuxer&amp;quot; &lt;br /&gt;
|Name des Gruppe&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==chmod==&lt;br /&gt;
Die Syntax des Befehls chmod lautet:&lt;br /&gt;
&lt;br /&gt;
'''chmod''' WerWieWas [,WerWieWas,.....] Dateiliste&lt;br /&gt;
&lt;br /&gt;
oder&lt;br /&gt;
&lt;br /&gt;
'''chmod''' Oktalzahl Dateiliste&lt;br /&gt;
&lt;br /&gt;
Durch WerWieWas bzw. Oktalzahl wird die Rechtetabelle definiert. Innerhalb von&lt;br /&gt;
WerWieWas darf es kein Leerzeichen geben. Wer bezeichnet den Benutzerkreis,&lt;br /&gt;
dem man Rechte gibt, Wie die Art, in der die Rechte gegeben werden und Was die&lt;br /&gt;
Rechte als solche. Im einzelnen können folgende Kürzel benutzt werden:&lt;br /&gt;
&lt;br /&gt;
Für Wer kann eines der folgenden Kürzel oder eine Kombination davon stehen:&lt;br /&gt;
 u                   (user) Rechte für den Dateibesitzer&lt;br /&gt;
 g                   (group) Rechte für die Gruppe&lt;br /&gt;
 o                   (others) Rechte für alle anderen Benutzer&lt;br /&gt;
 a                   (all) Rechte für alle Benutzer&lt;br /&gt;
Für Wie steht eines der folgenden Kürzel:&lt;br /&gt;
 +                   Die Rechte werden zu den vorhandenen zusätzlich vergeben&lt;br /&gt;
 -                   Die im Folgenden genannten Rechte werden entzogen&lt;br /&gt;
 =                   Die im Folgenden genannten Rechte ersetzen die bisherigen&lt;br /&gt;
Für Was steht eines der folgenden Kürzel:&lt;br /&gt;
 r                   (read) lesen&lt;br /&gt;
 w                   (write) schreiben&lt;br /&gt;
 x                   (execute) ausführen&lt;br /&gt;
oder diese Sonderformen&lt;br /&gt;
 s                   (usersbit) Programm läuft unter der UID des Besitzers&lt;br /&gt;
 s                   (groupsbit)Programm läuft unter der GID des GRUPPE&lt;br /&gt;
 t                   (stickybit) Dateien im Verzeichnis darf nur Besitzer löschen&lt;br /&gt;
&lt;br /&gt;
===Beispiel===&lt;br /&gt;
Setze für alle Schreib- und Leserecht&lt;br /&gt;
 xinux@zero:~$ chmod a=rw test &lt;br /&gt;
 xinux@zero:~$ ls -l test &lt;br /&gt;
 -rw-rw-rw- 1 xinux xinux 0 2009-06-16 12:01 test&lt;br /&gt;
 xinux@zero:~$ &lt;br /&gt;
&lt;br /&gt;
Erteile Besitzer Ausführungsrecht&lt;br /&gt;
 xinux@zero:~$ chmod u+x test ; ls -l test &lt;br /&gt;
 -rwxrw-rw- 1 xinux xinux 0 2009-06-16 12:01 test&lt;br /&gt;
 xinux@zero:~$ &lt;br /&gt;
&lt;br /&gt;
===chmod oktale Schreibweise===&lt;br /&gt;
 Specialrights        User           Group         Other&lt;br /&gt;
 usbit gsbit sticky    r    w   x     r   w   x     r   w   x&lt;br /&gt;
   1     1      1      1    1   1     1   1   1     1   1   1&lt;br /&gt;
   0     0      0      0    0   0     0   0   0     0   0   0&lt;br /&gt;
 Oktale Wertigkeit pro Recht&lt;br /&gt;
   4     2       1     4    2   1     4   2   1     4   2   1&lt;br /&gt;
&lt;br /&gt;
===Beispiele===&lt;br /&gt;
 xinux@zero:~$ chmod 751 test ; ls -l test&lt;br /&gt;
 -rwxr-x--x 1 xinux xinux 0 2009-06-16 12:01 test&lt;br /&gt;
 xinux@zero:~$ &lt;br /&gt;
&lt;br /&gt;
 xinux@zero:~$ chmod 4770 test ; ls -l test&lt;br /&gt;
 -rwsrwx--- 1 xinux xinux 0 2009-06-16 12:01 test&lt;br /&gt;
 xinux@zero:~$ &lt;br /&gt;
&lt;br /&gt;
 xinux@zero:~$ chmod 0 test ; ls -l test &lt;br /&gt;
 ---------- 1 xinux xinux 0 2009-06-16 12:01 test&lt;br /&gt;
&lt;br /&gt;
===chmod Optionen===&lt;br /&gt;
 -c   (changes) es werden nur die Dateien angezeigt, deren Zugriffsrechte tatsächlich verändert werden&lt;br /&gt;
 -f   (silent, quiet) Fehlermeldungen wegen fehlgeschlagener Änderungsversuche werden unterdrückt&lt;br /&gt;
 -v   (verbose) alle Aktionen werden angezeigt&lt;br /&gt;
 -R   (recursive) die Zugriffsrechte aller Dateien in den Unterverzeichnissen werden ebenfalls geändert&lt;br /&gt;
&lt;br /&gt;
Theoretisch sind alle Kombinationen der Zugriffsrechte denkbar, aber der&lt;br /&gt;
Eigentümer einer Datei darf diese immer lesen, selbst wenn das Lesebit nicht&lt;br /&gt;
gesetzt ist. Genauso macht es wenig Sinn, eine gewöhnliche Textdatei als&lt;br /&gt;
ausführbar zu setzen; die Shell wird damit nichts anfangen können. Ein x für ein&lt;br /&gt;
Verzeichnis gibt an, dass in dieses gewechselt werden kann.&lt;br /&gt;
&lt;br /&gt;
Rechte sind verbindlich&lt;br /&gt;
&lt;br /&gt;
Interessant ist auch ein Konstrukt folgender Art&lt;br /&gt;
 -rwx---rwx&lt;br /&gt;
&lt;br /&gt;
das angibt, dass mit der Datei alles angestellt werden kann, außer durch Nutzer der&lt;br /&gt;
Gruppe. Versucht irgend jemand, der nicht der Gruppe des Eigentümers angehört,&lt;br /&gt;
die Datei zu modifizieren, wird ihm dies gelingen, einem Gruppenmitglied bleibt&lt;br /&gt;
dies versagt, obwohl er ja gleichzeitig ein &amp;quot;Anderer&amp;quot; ist. D.h. die Rechte der&lt;br /&gt;
Gruppe sind verbindlicher, als die Rechte der anderen!&lt;br /&gt;
&lt;br /&gt;
===Bedeutungen der Zugriffsarten===&lt;br /&gt;
====Dateien====&lt;br /&gt;
* r: Der Inhalt der Datei kann gelesen und damit auch kopiert werden. &lt;br /&gt;
 root@zero:~# cat test&lt;br /&gt;
 Dies ist eine Testdatei&lt;br /&gt;
  &lt;br /&gt;
 root@zero:~# cp test backup&lt;br /&gt;
&lt;br /&gt;
* w: Der Inhalt der Datei darf verändert werden. Ob die Datei gelöscht werden kann ist&lt;br /&gt;
keine Eigenschaft der Datei, sondern des Verzeichnisses, indem sich die Datei befindet.&lt;br /&gt;
 root@zero:~# cat &amp;gt; test&lt;br /&gt;
 Hier steht jetzt was anderes&lt;br /&gt;
 ^C&lt;br /&gt;
 root@zero:~# cat test&lt;br /&gt;
 Hier steht jetzt was anderes&lt;br /&gt;
  &lt;br /&gt;
 xinux@zero:~$ ls -ld verzeichnis/&lt;br /&gt;
 dr-xr-xr-x 2 xinux xinux 4096 2009-06-18 11:16 verzeichnis/&lt;br /&gt;
 xinux@zero:~/verzeichnis$ rm text&lt;br /&gt;
 rm: Entfernen von „text“ nicht möglich: Permission denied&lt;br /&gt;
&lt;br /&gt;
* x: Ausführrecht für Programme und Skripte&lt;br /&gt;
 xinux@zero:~$ ./programm&lt;br /&gt;
 -bash: ./programm: Permission denied&lt;br /&gt;
 xinux@zero:~$ chmod +x programm&lt;br /&gt;
 xinux@zero:~$ ./programm&lt;br /&gt;
 Test&lt;br /&gt;
  test&lt;br /&gt;
&lt;br /&gt;
====Verzeichnisse====&lt;br /&gt;
* r: Die Einträge in dem Verzeichnis sind lesbar.&lt;br /&gt;
Leserecht von verzeichnis/ entziehen&lt;br /&gt;
 xinux@zero:~$ chmod a-r verzeichnis/&lt;br /&gt;
 xinux@zero:~$ ls verzeichnis/&lt;br /&gt;
 ls: Öffnen von Verzeichnis verzeichnis/ nicht möglich: Permission denied&lt;br /&gt;
Leserecht für Benutzer und Gruppe vergeben&lt;br /&gt;
 xinux@zero:~$ chmod a+r verzeichnis/&lt;br /&gt;
 xinux@zero:~$ ls verzeichnis/&lt;br /&gt;
 text&lt;br /&gt;
&lt;br /&gt;
* w: Die Einträge in dem Verzeichnis können geändert werden. &lt;br /&gt;
Neue Datei erstellen&lt;br /&gt;
 xinux@zero:~$ touch neu&lt;br /&gt;
 xinux@zero:~$ ls neu&lt;br /&gt;
 neu&lt;br /&gt;
&lt;br /&gt;
Datei löschen&lt;br /&gt;
 xinux@zero:~$ rm neu&lt;br /&gt;
 xinux@zero:~$ ls neu&lt;br /&gt;
 ls: Zugriff auf neu nicht möglich: No such file or directory&lt;br /&gt;
&lt;br /&gt;
* x: Der Name des Verzeichnisses kann in einem Pfadnamen erscheinen.&lt;br /&gt;
Verzeichnis ohne x Recht&lt;br /&gt;
 xinux@zero:~$ chmod a-x verzeichnis/&lt;br /&gt;
Wechseln in Verzeichnis mangels x-Recht nicht möglich&lt;br /&gt;
 xinux@zero:~$ cd verzeichnis/&lt;br /&gt;
 -bash: cd: verzeichnis/: Permission denied&lt;br /&gt;
x-Recht vergeben&lt;br /&gt;
 xinux@zero:~$ chmod a+x verzeichnis/&lt;br /&gt;
damit Wechsel in Verzeichnis möglich&lt;br /&gt;
 xinux@zero:~$ cd verzeichnis/&lt;br /&gt;
 xinux@zero:~/verzeichnis$ pwd&lt;br /&gt;
 /home/xinux/verzeichnis&lt;br /&gt;
&lt;br /&gt;
====umask====&lt;br /&gt;
Neue Dateien und Verzeichnisse werden mit ein und denselben Zufriffsrechten erzeugt.&lt;br /&gt;
 xinux@zero:~$ mkdir text&lt;br /&gt;
 xinux@zero:~$ touch textdat&lt;br /&gt;
 xinux@zero:~$ ls -ld text*&lt;br /&gt;
 drwxr-xr-x 2 xinux xinux 4096 2009-06-18 11:37 text&lt;br /&gt;
 -rw-r--r-- 1 xinux xinux    0 2009-06-18 11:37 textdat&lt;br /&gt;
&lt;br /&gt;
Zuständig für dieses Verhalten ist die sogenannte umask, die oft in der Datei&lt;br /&gt;
/etc/profile auf den Wert 022 voreingestellt ist. Zusätzlich wird noch eine&lt;br /&gt;
Maximalmaske benötigt, die sich für Verzeichnisse und andere Dateien&lt;br /&gt;
unterscheidet. Die bei der Erzeugung gesetzten Rechte entstehen nun, indem von&lt;br /&gt;
der Maximalmaske der durch die umask vorgegebene Wert subtrahiert wird:&lt;br /&gt;
&lt;br /&gt;
{| border=1 cellpadding=2&lt;br /&gt;
!&lt;br /&gt;
! Dateien&lt;br /&gt;
! Verzeichnisse&lt;br /&gt;
|-&lt;br /&gt;
| Systemvorgabe&lt;br /&gt;
| 666&lt;br /&gt;
| 777&lt;br /&gt;
|-&lt;br /&gt;
| -umask&lt;br /&gt;
| 022&lt;br /&gt;
| 022&lt;br /&gt;
|-&lt;br /&gt;
| Ergebnis&lt;br /&gt;
| 644&lt;br /&gt;
| 755&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
 xinux@zero:~$ grep umask /etc/profile&lt;br /&gt;
 umask 022&lt;br /&gt;
&lt;br /&gt;
==Gruppenzugehörigkeit==&lt;br /&gt;
===newgrp===&lt;br /&gt;
Ändert die Gruppenzugehörigkeit eines Benutzers auf die angegebene Gruppe. Wenn keine Gruppe angegeben wird, wird die &lt;br /&gt;
Anmeldegruppe des Benutzers verwendet. Die neue Gruppe wird anschließend fü Zugriffskontrollen verwendet.&lt;br /&gt;
&lt;br /&gt;
 newgrp Gruppenname&lt;br /&gt;
&lt;br /&gt;
 root@zero:~# newgrp hacker&lt;br /&gt;
 root@zero:~# id&lt;br /&gt;
 uid=0(root) gid=1006(hacker) Gruppen=0(root),1006(hacker)&lt;br /&gt;
&lt;br /&gt;
===chgrp===&lt;br /&gt;
Verändert die Besitzugehörigkeit zu der angegebenen Gruppe&lt;br /&gt;
&lt;br /&gt;
 chgrp [Optionen] Gruppe Datei(en)&lt;br /&gt;
&lt;br /&gt;
Optionen:&lt;br /&gt;
 -c Zeigt Veränderungen an&lt;br /&gt;
 -f Unterdrückt die meisten Fehlermeldungen&lt;br /&gt;
 -R Verändert Dateien und Verzeichnisse rekursiv&lt;br /&gt;
 -v Gibt geschwätzige Ausgabe aus.&lt;br /&gt;
&lt;br /&gt;
 root@zero:~# ls -l&lt;br /&gt;
 ...&lt;br /&gt;
 d-wx--x--x  3 root root 4096 2009-06-18 13:34 verzeichnis&lt;br /&gt;
 &lt;br /&gt;
 root@zero:~# chgrp -R xinux verzeichnis/&lt;br /&gt;
 root@zero:~# ls -l&lt;br /&gt;
 ...&lt;br /&gt;
 d-wx--x--x  3 root xinux 4096 2009-06-18 13:34 verzeichnis&lt;br /&gt;
&lt;br /&gt;
 xinux@zero:~$ cd /root/verzeichnis/&lt;br /&gt;
 xinux@zero:/root/verzeichnis$ pwd&lt;br /&gt;
 /root/verzeichnis&lt;br /&gt;
&lt;br /&gt;
===chown===&lt;br /&gt;
Ändert den Eigentümer von einer oder mehreren Dateien in den angegebenen Benutzer. &lt;br /&gt;
chown erlaubt ebenfalls das Ändern der Gruppeneigentümreschaft. Nur der aktuelle Eigentümer einer&lt;br /&gt;
Datei oder der Superuser (root) darf die Eigentumsverhältnisse ändern.&lt;br /&gt;
&lt;br /&gt;
 chown [Optionen] Benutzer(:Gruppe) Dateien&lt;br /&gt;
&lt;br /&gt;
Optionen:&lt;br /&gt;
 -c Gibt Informationen über die veränderten Dateien aus&lt;br /&gt;
 --dereference Symbolischen Links folgen&lt;br /&gt;
 -v Gibt Informationen über alle Dateien aus, die chown zu ändern versucht, egal, ob die Änderung erfolgt ist oder nicht&lt;br /&gt;
 -R Geht rekursiv durch alle Unterverzeichnisse und führt die Änderungen durch. &lt;br /&gt;
&lt;br /&gt;
 root@zero:~# chown -R xinux.xinux verzeichnis/&lt;br /&gt;
 root@zero:~# ls -l&lt;br /&gt;
 insgesamt 12&lt;br /&gt;
 drwx------ 13 root  root  4096 2009-04-21 15:11 profile&lt;br /&gt;
 --w-------  1 root  root     0 2009-06-18 11:13 test&lt;br /&gt;
 -rw-r--r--  1 root  root    40 2009-06-18 12:04 text&lt;br /&gt;
 drwxrwx--x  3 xinux xinux 4096 2009-06-18 13:39 verzeichnis&lt;br /&gt;
 &lt;br /&gt;
 root@zero:~# chown -R -c xinux.xinux verzeichnis/&lt;br /&gt;
 &lt;br /&gt;
 root@zero:~# chown -R -v xinux.xinux verzeichnis/&lt;br /&gt;
 Eigentümer von „verzeichnis/01“ als xinux:xinux erhalten&lt;br /&gt;
 Eigentümer von „verzeichnis/test“ als xinux:xinux erhalten&lt;br /&gt;
 Eigentümer von „verzeichnis/“ als xinux:xinux erhalten&lt;br /&gt;
&lt;br /&gt;
==Eingabe/Ausgabe==&lt;br /&gt;
Standardeingabe (0): Laufende Programme erwarten von hier ihre Eingaben (normalerweise handelt es sich um die Tastatur).&lt;br /&gt;
&lt;br /&gt;
Standardausgabe (1): Programme schreiben auf diese ihre Ausgaben (Bildschirm).&lt;br /&gt;
&lt;br /&gt;
Standardfehlerausgabe (2) : Fehlerausgaben landen hier (Bildschirm, aber nur die aktive Konsole).&lt;br /&gt;
&lt;br /&gt;
[[Bild:std.jpg]]&lt;br /&gt;
&lt;br /&gt;
===cat===&lt;br /&gt;
Das Programm cat liest von STDIN und gibt es STDOUT wieder aus&lt;br /&gt;
&lt;br /&gt;
Einlesen der Datei text&lt;br /&gt;
 root@zero:~# cat &amp;lt; text&lt;br /&gt;
 wichtig&lt;br /&gt;
&lt;br /&gt;
Schreiben in die Datei text, dies überschreibt den bisherigen Inhalt der Datei&lt;br /&gt;
 root@zero:~# cat &amp;gt; text&lt;br /&gt;
 sogar noch wichtiger &lt;br /&gt;
 &lt;br /&gt;
Ausgeben der Datei text&lt;br /&gt;
 root@zero:~# cat text &lt;br /&gt;
 sogar noch wichtiger&lt;br /&gt;
&lt;br /&gt;
Lesen aus der Datei text und schreiben in die Datei neuertext&lt;br /&gt;
 root@zero:~# cat &amp;lt; text &amp;gt; neuertext&lt;br /&gt;
 root@zero:~# cat neuertext&lt;br /&gt;
 sogar noch wichtiger&lt;br /&gt;
&lt;br /&gt;
Anhängen der Ausgabe von date an die Datei neuertext&lt;br /&gt;
 root@zero:~# date &amp;gt;&amp;gt; neuertext&lt;br /&gt;
 root@zero:~# cat neuertext&lt;br /&gt;
 sogar noch wichtiger&lt;br /&gt;
 Do 18. Jun 14:08:58 CEST 2009&lt;br /&gt;
&lt;br /&gt;
Umleiten des Standardfehlerkanals nach error&lt;br /&gt;
 root@zero:~# rm sux 2&amp;gt; error&lt;br /&gt;
 root@zero:~# more error&lt;br /&gt;
 rm: Entfernen von „sux“ nicht möglich: No such file or directory&lt;br /&gt;
&lt;br /&gt;
===Umleitungen===&lt;br /&gt;
Nacheinander auszuführende Kommandos&lt;br /&gt;
 root@zero:~# pwd; date&lt;br /&gt;
 /root&lt;br /&gt;
 Do 18. Jun 14:13:05 CEST 2009&lt;br /&gt;
 &lt;br /&gt;
Übergeben der Ausgabe von tail als Eingabe von grep mit Hilfe der Pipe &amp;quot;|&amp;quot;&lt;br /&gt;
 root@zero:~# tail /var/log/auth.log | grep xinux&lt;br /&gt;
 Jun 18 13:52:33 zero nss_wins[11433]: pam_unix(login:session): session closed for user xinux&lt;br /&gt;
&lt;br /&gt;
Übergeben der letzten 100 Zeilen von syslog als Eingabe von grep&lt;br /&gt;
 root@zero:~# tail /var/log/syslog -n 100 | grep error&lt;br /&gt;
 Jun 18 09:30:54 zero kernel: [154384.692135] end_request: I/O error, dev fd0, sector 0&lt;br /&gt;
 Jun 18 09:30:54 zero kernel: [154384.712137] end_request: I/O error, dev fd0, sector 0&lt;br /&gt;
&lt;br /&gt;
==tr==&lt;br /&gt;
tr ist ein Programm um Zeichen zu übersetzen. Dies betrifft nur die Ausgabe, die Datei selbst bleibt unverändert.&lt;br /&gt;
&lt;br /&gt;
Ersetzt Kleinbuchstaben durch Großbuchstaben aus der Datei text&lt;br /&gt;
 root@zero:~# tr &amp;quot;a-z&amp;quot; &amp;quot;A-Z&amp;quot; &amp;lt; text&lt;br /&gt;
 SOGAR NOCH WICHTIGER&lt;br /&gt;
 123&lt;br /&gt;
 34&lt;br /&gt;
 4711&lt;br /&gt;
 TEST&lt;br /&gt;
&lt;br /&gt;
Ersetzt alle Zahlen durch X&lt;br /&gt;
 root@zero:~# tr &amp;quot;0-9&amp;quot; &amp;quot;X&amp;quot; &amp;lt; text&lt;br /&gt;
 sogar noch wichtiger&lt;br /&gt;
 XXX&lt;br /&gt;
 XX&lt;br /&gt;
 XXXX&lt;br /&gt;
 test&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
 root@zero:~# cat &amp;gt; test&lt;br /&gt;
 +++++&lt;br /&gt;
 ###&lt;br /&gt;
 1111&lt;br /&gt;
&lt;br /&gt;
-s löscht mehrfach kommende Zeichen&lt;br /&gt;
 root@zero:~# tr '''-s''' &amp;quot;+&amp;quot; &amp;lt; test&lt;br /&gt;
 +&lt;br /&gt;
 ###&lt;br /&gt;
 1111&lt;br /&gt;
&lt;br /&gt;
-d löscht vorkommende Zeichen &lt;br /&gt;
 root@zero:~# tr '''-d''' &amp;quot;#&amp;quot; &amp;lt; test&lt;br /&gt;
 +++++ &lt;br /&gt;
 &lt;br /&gt;
 1111&lt;br /&gt;
&lt;br /&gt;
==cut==&lt;br /&gt;
Spalten aus einer Datei schneiden. Dies betrifft nur die Ausgabe, die Datei selbst bleibt unverändert.&lt;br /&gt;
 &lt;br /&gt;
Schneidet die erste Spalte aus, der Delimiter ist : &lt;br /&gt;
 root@zero:~# cut -f 1 -d : /etc/passwd&lt;br /&gt;
 root&lt;br /&gt;
 daemon&lt;br /&gt;
 bin&lt;br /&gt;
 ...&lt;br /&gt;
 xinux&lt;br /&gt;
&lt;br /&gt;
 root@zero:~# more test&lt;br /&gt;
 1234#5678#9999&lt;br /&gt;
 &lt;br /&gt;
Schneidet die zweite Spalte aus, der Delimiter ist #&lt;br /&gt;
 root@zero:~# cut -f 2 -d &amp;quot;#&amp;quot; &amp;lt; test&lt;br /&gt;
 5678&lt;br /&gt;
&lt;br /&gt;
Schneidet bis zum 3 Zeichen ab&lt;br /&gt;
 root@zero:~$ echo S01policykit | cut -c 4-&lt;br /&gt;
 policykit&lt;br /&gt;
&lt;br /&gt;
==expand==&lt;br /&gt;
Ersetzt Tabulatorzeichen durch Folgen von Leerzeichen und schreibt das Ergebnis auf die Standardausgabe&lt;br /&gt;
 root@zero:~# expand /etc/samba/smb.conf&lt;br /&gt;
 ...&lt;br /&gt;
&lt;br /&gt;
==fmt==&lt;br /&gt;
#Setzt den Text der Dateien im Blocksatz der angegebenen Breite durch Auffüllen von Zeilen und Entfernen von Zeilenwechseln.&lt;br /&gt;
Standardgemäß werden Leerzeilen, die Position von Leerzeichen und der Einzug am Zeilenanfang erhalten. fmt versucht, &lt;br /&gt;
Zeilenumbrüche an Satzenden durchzuführen sowie sie nach dem ersten oder vor dem letzten Wort eines Satzes zu vermeiden. &lt;br /&gt;
 &lt;br /&gt;
 fmt [Optionen] [Dateien]&lt;br /&gt;
&lt;br /&gt;
Optionen&lt;br /&gt;
&lt;br /&gt;
* -p ''Präfix'': Formatiert nur Zeilen, die mit ''Präfix'' anfangen&lt;br /&gt;
 root@zero:/tmp# fmt -p '#' text&lt;br /&gt;
 #Setzt den Text der Dateien im Blocksatz der angegebenen Breite durch&lt;br /&gt;
 #Auffüllen von Zeilen und Entfernen von Zeilenwechseln.  Standardgemäß&lt;br /&gt;
 #werden Leerzeilen, die Position von Leerzeichen und der Einzug am&lt;br /&gt;
 #Zeilenanfang erhalten. fmt versucht,&lt;br /&gt;
 Zeilenumbrüche an Satzenden durchzuführen sowie sie nach dem ersten oder vor dem letzten Wort eines Satzes zu vermeiden.&lt;br /&gt;
&lt;br /&gt;
* -u : Erzwingt genau ein Leerzeichen zwischen Wörtern und zwei Leerzeichen zwischen Sätzen&lt;br /&gt;
&lt;br /&gt;
* -w ''Breite'': Setzt die Ausgabebreite auf ''Breite''&lt;br /&gt;
 root@zero:/tmp# fmt -w 30 text&lt;br /&gt;
 #Setzt den Text der Dateien&lt;br /&gt;
 im Blocksatz der angegebenen&lt;br /&gt;
 Breite durch Auffüllen&lt;br /&gt;
 von Zeilen und Entfernen&lt;br /&gt;
 von Zeilenwechseln.&lt;br /&gt;
 #Standardgemäß werden&lt;br /&gt;
 Leerzeilen, die Position von&lt;br /&gt;
 Leerzeichen und der Einzug am&lt;br /&gt;
 Zeilenanfang erhalten. fmt&lt;br /&gt;
 versucht, Zeilenumbrüche&lt;br /&gt;
 an Satzenden durchzuführen&lt;br /&gt;
 sowie sie nach dem ersten&lt;br /&gt;
 oder vor dem letzten Wort&lt;br /&gt;
 eines Satzes zu vermeiden.&lt;br /&gt;
&lt;br /&gt;
==join==&lt;br /&gt;
Führt die Zeilen zweier sortierter Dateien anhand von '''Übereinstimmungen''' in einem gemeinsamen Feld zusammen.&lt;br /&gt;
&lt;br /&gt;
 root@zero:~# more name&lt;br /&gt;
 1. karl&lt;br /&gt;
 2. heinz&lt;br /&gt;
 3. hans&lt;br /&gt;
 4. otto&lt;br /&gt;
 root@zero:~# more tel&lt;br /&gt;
 1. 1234&lt;br /&gt;
 2. 4321&lt;br /&gt;
 3. 222&lt;br /&gt;
 4. 121212&lt;br /&gt;
 root@zero:~# join name tel &amp;gt; telefonbuch&lt;br /&gt;
 root@zero:~# more telefonbuch&lt;br /&gt;
 1. karl 1234&lt;br /&gt;
 2. heinz 4321&lt;br /&gt;
 3. hans 222&lt;br /&gt;
 4. otto 121212&lt;br /&gt;
&lt;br /&gt;
 root@zero:~# join -t : /etc/passwd /etc/shadow&lt;br /&gt;
 ....&lt;br /&gt;
 daemon:x:1:1:daemon:/usr/sbin:/bin/sh:*:14181:0:99999:7:::&lt;br /&gt;
 bin:x:2:2:bin:/bin:/bin/sh:*:14181:0:99999:7:::&lt;br /&gt;
 sys:x:3:3:sys:/dev:/bin/sh:*:14181:0:99999:7:::&lt;br /&gt;
 sync:x:4:65534:sync:/bin:/bin/sync:*:14181:0:99999:7:::&lt;br /&gt;
 ...&lt;br /&gt;
&lt;br /&gt;
join in dat1 nach Feld 3 und in dat2 nach Feld 2&lt;br /&gt;
 thomas@lydia:~$ cat dat1 &lt;br /&gt;
 hugo:ps:1111&lt;br /&gt;
 erwin:zw:2222&lt;br /&gt;
 karl:sb:3333&lt;br /&gt;
 rudi:kl:4444&lt;br /&gt;
 thomas@lydia:~$ cat dat2&lt;br /&gt;
 blau:1111:svn&lt;br /&gt;
 grün:2222:fcs&lt;br /&gt;
 gelb:3333:fch&lt;br /&gt;
 rot:4444:fck&lt;br /&gt;
 thomas@lydia:~$ join -t : -1 3 -2 2 dat1 dat2 &lt;br /&gt;
 1111:hugo:ps:blau:svn&lt;br /&gt;
 2222:erwin:zw:grün:fcs&lt;br /&gt;
 3333:karl:sb:gelb:fch&lt;br /&gt;
 4444:rudi:kl:rot:fck&lt;br /&gt;
&lt;br /&gt;
==nl==&lt;br /&gt;
Nummeriert die Zeilen in einer Datei.&lt;br /&gt;
&lt;br /&gt;
 root@zero:~# nl /etc/passwd                                                   &lt;br /&gt;
     1  root:x:0:0:root:/root:/bin/bash                                       &lt;br /&gt;
     2  daemon:x:1:1:daemon:/usr/sbin:/bin/sh                                 &lt;br /&gt;
     3  bin:x:2:2:bin:/bin:/bin/sh                                            &lt;br /&gt;
     4  sys:x:3:3:sys:/dev:/bin/sh                                            &lt;br /&gt;
     5  sync:x:4:65534:sync:/bin:/bin/sync&lt;br /&gt;
     ...&lt;br /&gt;
Nummereriet mit führenden Nullen der Separatir ist ein :&lt;br /&gt;
 root@zero:~# nl -s : -n rz dat1&lt;br /&gt;
&lt;br /&gt;
==od==&lt;br /&gt;
Gibt Dateien im Oktal und anderen Formaten aus.&lt;br /&gt;
&lt;br /&gt;
 od [Optionen] Datei&lt;br /&gt;
&lt;br /&gt;
* -j ''Bytes'': Überspringt die Anzahl ''Bytes'' einer Datei&lt;br /&gt;
* -N ''Bytes'': Gibt nur die Anzahl ''Bytes'' aus&lt;br /&gt;
* -c : Gebe ASCII Zeichen aus&lt;br /&gt;
* -f : Gebe Fließkommazahlen aus&lt;br /&gt;
* -i : Gebe Dezimal Integer aus&lt;br /&gt;
* -l : Gebe Dezimal Long aus&lt;br /&gt;
* -o : Gebe Oktal 2 Byte Einheiten aus&lt;br /&gt;
* -s : Gebe Dezimal 2 Byte Einheiten aus&lt;br /&gt;
* -x : Gebe Hexadezimale 2 Byte einheiten aus&lt;br /&gt;
&lt;br /&gt;
Beispiele&lt;br /&gt;
&lt;br /&gt;
Gebe Master Boot Record (die ersten 512 Byte der Festplatte /dev/sda) als Hexadezimal aus&lt;br /&gt;
 root@zero:~# od '''-x -N''' 512 /dev/sda&lt;br /&gt;
 0000000 48eb 1090 d08e 00bc b8b0 0000 d88e c08e&lt;br /&gt;
 0000020 befb 7c00 00bf b906 0200 a4f3 21ea 0006&lt;br /&gt;
 0000040 be00 07be 0438 0b75 c683 8110 fefe 7507&lt;br /&gt;
 0000060 ebf3 b416 b002 bb01 7c00 80b2 748a 0203&lt;br /&gt;
 0000100 00ff 2000 0001 0000 0200 90fa f690 80c2&lt;br /&gt;
 ...&lt;br /&gt;
&lt;br /&gt;
Schreibe &amp;quot;suxer&amp;quot; in die Datei test&lt;br /&gt;
 root@zero:~# echo &amp;quot;suxer&amp;quot; &amp;gt; test&lt;br /&gt;
Ausgabe Hexadezimal&lt;br /&gt;
 root@zero:~# od -x test&lt;br /&gt;
 0000000 7573 6578 0a72&lt;br /&gt;
 0000006&lt;br /&gt;
&lt;br /&gt;
Ausgabe ASCII Zeichen&lt;br /&gt;
 root@zero:~# od -c test&lt;br /&gt;
 0000000   s   u   x   e   r  \n&lt;br /&gt;
 0000006&lt;br /&gt;
&lt;br /&gt;
==paste==&lt;br /&gt;
Fügt die Zeilen von zwei oder mehr Dateien horizontal zusammen&lt;br /&gt;
 root@zero:~# paste name tel&lt;br /&gt;
 1. karl 1. 1234&lt;br /&gt;
 2. heinz        2. 4321&lt;br /&gt;
 3. hans 3. 222&lt;br /&gt;
 4. otto 4. 121212&lt;br /&gt;
&lt;br /&gt;
==pr==&lt;br /&gt;
Bereitet Textdateien zum Drucken vor.&lt;br /&gt;
&lt;br /&gt;
 root@zero:~# echo &amp;quot;Plan für heute&amp;quot; &amp;gt; dokument&lt;br /&gt;
 root@zero:~# more dokument&lt;br /&gt;
 Plan für heute&lt;br /&gt;
 root@zero:~# pr dokument   &lt;br /&gt;
  &lt;br /&gt;
 &lt;br /&gt;
 2009-06-19 12:44                    dokument                     Seite 1&lt;br /&gt;
 &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
 Plan für heute&lt;br /&gt;
&lt;br /&gt;
Anmerkung Ausmaße der Bildschirmausgabe wie eine Druckseite.&lt;br /&gt;
&lt;br /&gt;
==sed==&lt;br /&gt;
streaming editor. Mit sed ist es möglich, den Inhalt einer Datei automatisch (nicht interaktiv) zu&lt;br /&gt;
bearbeiten. Wie unter Linux üblich, wird auch hier der Text nicht wirklich verändert sondern die &lt;br /&gt;
Änderung erfolgt über die Standardausgabe, die wieder umgeleitet werden kann. Die Syntax ist ähnlich &lt;br /&gt;
des ex modus von vi. Reguläre Ausdrücke können nach Belieben benutzt werden. &lt;br /&gt;
&lt;br /&gt;
Optionen:&lt;br /&gt;
 -e Zeichenkette  wendet die Editorbefehle aus Zeichenkette auf den Text an.&lt;br /&gt;
 -n gibt nur die Zeilen aus, die explizit (durch &amp;quot;p&amp;quot; ausgedruckt werden sollen&lt;br /&gt;
&lt;br /&gt;
Gibt die dritte Zeile der Datei text aus&lt;br /&gt;
 root@zero:~# sed -n &amp;quot;3p&amp;quot; text&lt;br /&gt;
 34&lt;br /&gt;
&lt;br /&gt;
Gibt die erste bis dritte Zeile von text aus&lt;br /&gt;
 root@zero:~# sed -n &amp;quot;1,3p&amp;quot; text&lt;br /&gt;
 sogar noch wichtiger&lt;br /&gt;
 123&lt;br /&gt;
 34&lt;br /&gt;
&lt;br /&gt;
Löschen der Zeile mit &amp;quot;sogar&amp;quot;&lt;br /&gt;
 root@zero:~# sed -e '/sogar/d' &amp;lt; text&lt;br /&gt;
 123&lt;br /&gt;
 34&lt;br /&gt;
 4711&lt;br /&gt;
 test&lt;br /&gt;
&lt;br /&gt;
und schreiben in text2&lt;br /&gt;
 root@zero:~# sed -e '/sogar/d' &amp;lt; text &amp;gt; text2&lt;br /&gt;
 root@zero:~# more text2&lt;br /&gt;
 123&lt;br /&gt;
 34&lt;br /&gt;
 4711&lt;br /&gt;
 test&lt;br /&gt;
&lt;br /&gt;
Alle 3en durch DREI ersetzen&lt;br /&gt;
 root@zero:~# sed -e 's/3/DREI/g' &amp;lt; text&lt;br /&gt;
 sogar noch wichtiger&lt;br /&gt;
 12DREI&lt;br /&gt;
 DREI4&lt;br /&gt;
 4711&lt;br /&gt;
 test&lt;br /&gt;
&lt;br /&gt;
==wc==&lt;br /&gt;
Zählt die Anzahl von Zeichen, Wörter oder Zeilen&lt;br /&gt;
&lt;br /&gt;
Optionen&lt;br /&gt;
* -m : Zählt die Anzahl der Zeichen&lt;br /&gt;
 root@zero:~# more name&lt;br /&gt;
 1. karl&lt;br /&gt;
 2. heinz&lt;br /&gt;
 3. hans&lt;br /&gt;
 4. otto&lt;br /&gt;
 root@zero:~# wc '''-m''' tel&lt;br /&gt;
 33 tel&lt;br /&gt;
&lt;br /&gt;
* -w : Zählt die Anzahl der Wörter (einschließlich Zahlen und andere Zeichen)&lt;br /&gt;
 root@zero:~# wc '''-w''' name&lt;br /&gt;
 8 name&lt;br /&gt;
&lt;br /&gt;
* -l : Zählt die Anzahl der Zeilen&lt;br /&gt;
 root@zero:~# wc '''-l''' name&lt;br /&gt;
 4 name&lt;br /&gt;
&lt;br /&gt;
==Sort==&lt;br /&gt;
&lt;br /&gt;
Zum sortieren von Dateien nach Feldern benutzt man sort. sort liest von STDIN man kann die Datei aber auch als Argument übergeben. &lt;br /&gt;
&lt;br /&gt;
Sortiert nach dem ersten Feld&lt;br /&gt;
  root@zero:~# sort /etc/passwd 	 &lt;br /&gt;
&lt;br /&gt;
Es wird geprüft ob die Datei schon sortiert ist &lt;br /&gt;
 root@zero:~# sort -c /etc/passwd 	&lt;br /&gt;
&lt;br /&gt;
Sortiert nach dem ersten Feld (Richtungsumkehr)  &lt;br /&gt;
 root@zero:~#  sort -r /etc/passwd&lt;br /&gt;
&lt;br /&gt;
Führende Leersortzeichen werden ignoriert &lt;br /&gt;
 root@zero:~# sort -b /etc/passwd&lt;br /&gt;
&lt;br /&gt;
Ausgabe  in die Datei pass&lt;br /&gt;
 root@zero:~# sort  /etc/passwd   -o pass	 &lt;br /&gt;
&lt;br /&gt;
nimmt : als Trenner -Voreinstellung ist TAB&lt;br /&gt;
  root@zero:~# sort -t : /etc/passwd&lt;br /&gt;
&lt;br /&gt;
sortiert nach dem  3 Feld,  der Trenner ist : und es wird nummerisch sortiert&lt;br /&gt;
&lt;br /&gt;
 root@zero:~# sort -t: +2 -n /etc/passwd		&lt;br /&gt;
&lt;br /&gt;
sortiert nach dem  3 Feld,  der Trenner ist : und es wird nummerisch sortiert&lt;br /&gt;
					&lt;br /&gt;
 root@zero:~# sort -t: -k 3 -n /etc/passwd&lt;br /&gt;
&lt;br /&gt;
Sortiert nach dem  3  bis zum 5 Feld, der Trenner ist : und es wird nummerisch sortiert&lt;br /&gt;
	&lt;br /&gt;
 root@zero:~# sort -t: -k 3,5 -n /etc/passwd	&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==INodes==&lt;br /&gt;
Inode (oder I-Node) wird im Deutschen am besten als Informationsknoten oder&lt;br /&gt;
Indexeintrag bezeichnet. Er fasst alle Attribute einer Datei zusammen außer dem Inhalt&lt;br /&gt;
und dem Namen der Datei.&lt;br /&gt;
&lt;br /&gt;
===Daten===&lt;br /&gt;
{| border=1 cellpadding=2&lt;br /&gt;
|type&lt;br /&gt;
|Der Typ der Datei wird als einzelner Buchstabe angezeigt. Der Typ einer Datei wird beim Anlegen der Datei festgelegt&lt;br /&gt;
|-&lt;br /&gt;
|Permissions &lt;br /&gt;
|Die Zugriffsrechte der Datei werden in den 12 Bit sstrwxrwxrwx abgespeichert.Wenn sie gesetzt sind, werden sie bei &lt;br /&gt;
der Ausgabe an Stelle der x-Rechte ausgegeben. Die Zugriffsrechte können mit dem Kommando chmod verändert werden.&lt;br /&gt;
|-&lt;br /&gt;
|link count&lt;br /&gt;
|In UNIX kann eine Datei mehr als einen Namen haben. Der Link Count gibt die Anzahl der Namen einer Datei an. Er kann&lt;br /&gt;
mit dem Kommando ln erhöht und dem Kommando rm erniedrigt werden.&lt;br /&gt;
|-&lt;br /&gt;
|owner&lt;br /&gt;
|Für den Dateieigentümer gelten die in der ersten rwx-Gruppe festgelegten Zugriffsrechte. Standardmäßig ist der &lt;br /&gt;
Eigentümer einer Datei derjenige Benutzer, der die Datei angelegt hat.&lt;br /&gt;
|-&lt;br /&gt;
|group&lt;br /&gt;
|Für Benutzer, die in der gleichen Gruppe sind, der die Datei angehört, gelten die in der zweiten rwx-Gruppe festgelegten&lt;br /&gt;
Zugriffsrechte. In System V gehört eine Datei standardmäßig der Gruppe an, in der der anlegende Benutzer gerade ist.&lt;br /&gt;
|-&lt;br /&gt;
|size&lt;br /&gt;
|Bei normalen Dateien und Verzeichnissen gibt diese Information die Länge der Datei in Byte an.&lt;br /&gt;
|-&lt;br /&gt;
|access time&lt;br /&gt;
|Die Zugriffszeit gibt den Zeitpunkt des letzten Lesezugriffes auf eine Datei an. Aus Effizienzgründen wird die &lt;br /&gt;
Zugriffszeit an Verzeichnissen nicht gesetzt, wenn ein Verzeichnis durchsucht wird, obwohl man dies erwarten könnte. ''(ls -l --time=atime)''&lt;br /&gt;
|-&lt;br /&gt;
|modification time&lt;br /&gt;
|Die Modifikationszeit gibt die Zeit des letzten Schreibzugriffes auf die Daten der Datei an. Intern speichert UNIX &lt;br /&gt;
die Zeit als Sekunden seit Beginn des Jahres 1970 und in GMT ab. Für die Ausgabe wird dies in ein besser lesbares &lt;br /&gt;
Format in der lokalen Zeitzone umgewandelt. ''(ls -l)''&lt;br /&gt;
|-&lt;br /&gt;
|change time &lt;br /&gt;
|Die Veränderungszeit gibt das Datum der letzten Statusänderung der Datei an. Sie wird immer dann gesetzt, wenn die &lt;br /&gt;
Informationen über die Datei sich ändern (Datum der Erzeugung wird nicht gespeichert) ''(ls -lc)''&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
===Dateiarten===&lt;br /&gt;
{| border=1 cellpadding=2&lt;br /&gt;
!Zeichen&lt;br /&gt;
!Typ&lt;br /&gt;
!Zweck&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;nowiki&amp;gt;-&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
|file&lt;br /&gt;
|normale Datei&lt;br /&gt;
|-&lt;br /&gt;
|d&lt;br /&gt;
|directory&lt;br /&gt;
|Verzeichnis&lt;br /&gt;
|-&lt;br /&gt;
|b&lt;br /&gt;
|block device&lt;br /&gt;
|Gerätedatei&lt;br /&gt;
|-&lt;br /&gt;
|c&lt;br /&gt;
|character device&lt;br /&gt;
|Gerätedatei&lt;br /&gt;
|-&lt;br /&gt;
|l&lt;br /&gt;
|link&lt;br /&gt;
|Querverweis&lt;br /&gt;
|-&lt;br /&gt;
|p&lt;br /&gt;
|named pipe&lt;br /&gt;
|Benannte Pipeline&lt;br /&gt;
|-&lt;br /&gt;
|s&lt;br /&gt;
|socket&lt;br /&gt;
|Netzwerkverbindung&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
====Normale Dateien====&lt;br /&gt;
Unter einer normalen Datei versteht man die Ansammlung von Daten. Dies kann ein Text, Programm, Bild oder sonstiges sein. &lt;br /&gt;
Beispiel&lt;br /&gt;
 root@zero:~# ls -l text | cut -c 1&lt;br /&gt;
 -&lt;br /&gt;
&lt;br /&gt;
====Verzeichnisse====&lt;br /&gt;
Dateien werden in Verzeichnissen gespeichert, nur so ist eine Ordnung möglich. &lt;br /&gt;
 root@zero:~# mkdir -v Ordner&lt;br /&gt;
 mkdir: Verzeichnis „Ordner“ angelegt&lt;br /&gt;
 &lt;br /&gt;
 root@zero:~# ls -ld Ordner | cut -c 1&lt;br /&gt;
 d&lt;br /&gt;
&lt;br /&gt;
====Gerätedateien (Block und Char)====&lt;br /&gt;
Gerätedateien ermöglichen Anwendungsprogrammen unter Benutzung des  Kernels den Zugriff auf die Hardwarekomponenten des Systems. Ansprechbar über Major und Minor Nummern &lt;br /&gt;
&lt;br /&gt;
Beispiele&lt;br /&gt;
&lt;br /&gt;
Sicherung des Master Boot Records der ersten Festplatte&lt;br /&gt;
 root@zero:~# dd if=/dev/sda of=/tmp/mbr.img bs=512 count=1&lt;br /&gt;
&lt;br /&gt;
Block Device &lt;br /&gt;
 root@zero:~# ls -l /dev/sda | cut -c 1 &lt;br /&gt;
 b&lt;br /&gt;
&lt;br /&gt;
Character Device &lt;br /&gt;
 root@zero:~# ls -l /dev/ttyS0  | cut -c 1 &lt;br /&gt;
 c&lt;br /&gt;
&lt;br /&gt;
Erstellen einer Gerätedatei&lt;br /&gt;
 root@zero:/dev# mknod sata1 b 8 0 &lt;br /&gt;
 root@zero:/dev# fdisk -l /dev/sata1 &lt;br /&gt;
 &lt;br /&gt;
 Platte /dev/sata1: 6442 MByte, 6442450944 Byte&lt;br /&gt;
 255 Köpfe, 63 Sektoren/Spuren, 783 Zylinder&lt;br /&gt;
 Einheiten = Zylinder von 16065 × 512 = 8225280 Bytes&lt;br /&gt;
 Disk identifier: 0x0005efab&lt;br /&gt;
 &lt;br /&gt;
       Gerät  boot.     Anfang        Ende     Blöcke   Id  System&lt;br /&gt;
 /dev/sata1p1   *           1         743     5968116   83  Linux&lt;br /&gt;
 /dev/sata1p2             744         783      321300    5  Erweiterte&lt;br /&gt;
 /dev/sata1p5             744         783      321268+  82  Linux Swap / Solaris&lt;br /&gt;
&lt;br /&gt;
====Named Pipes====&lt;br /&gt;
Benannte Pipes (Named Pipes) können dagegen auch zur Kommunikation zwischen Prozessen eingesetzt werden, die nicht miteinander&lt;br /&gt;
verwandt sind und sich darüber hinaus auf unterschiedlichen Rechnern innerhalb eines Netzwerkes befinden dürfen. Sie sind &lt;br /&gt;
flexibler als anonyme Pipes und eignen sich für sogenannte Client-Server-Anwendungen (es lassen sich auch RPCs realisieren).&lt;br /&gt;
Benannte Pipes ermöglichen die gleichzeitige Kommunikation in beide Richtungen, das heißt, Daten können im Vollduplexbetrieb &lt;br /&gt;
zwischen den Prozessen ausgetauscht werden.&lt;br /&gt;
 &lt;br /&gt;
Erstelle Named Pipe mit Namen /tmp/roehre. Schreibe &amp;quot;hallo welt&amp;quot; in die Pipe und bleibe&lt;br /&gt;
 xinux@zero:~$ mkfifo /tmp/roehre&lt;br /&gt;
 xinux@zero:~$ echo hallo welt &amp;gt; /tmp/roehre &lt;br /&gt;
&lt;br /&gt;
Gebe Inhalt der Pipe mit cat aus&lt;br /&gt;
 root@zero:~# cat &amp;lt; /tmp/roehre &lt;br /&gt;
 hallo welt&lt;br /&gt;
 root@zero:~# ls -l /tmp/roehre | cut -c 1&lt;br /&gt;
 p&lt;br /&gt;
&lt;br /&gt;
====Sockets====&lt;br /&gt;
Schnittstelle um es lokalen Anwendungen zu ermöglichen, miteinander Netwerkmässig zu kommunizieren.&lt;br /&gt;
&lt;br /&gt;
 root@lydia:~# netstat  -lnxp | tail -1&lt;br /&gt;
  unix  2 [ ACC ] STREAM HÖRT 21951 6646/nm-applet /tmp/orbit-thomas/linc-19f6-0-2b9b81095cede&lt;br /&gt;
&lt;br /&gt;
 root@lydia:~# ls -l /tmp/orbit-thomas/linc-19f6-0-2b9b81095cede  | cut -c 1 &lt;br /&gt;
 s&lt;br /&gt;
&lt;br /&gt;
====Links====&lt;br /&gt;
Bei Links handelt es sich um symbolische Verweise auf andere Dateien&lt;br /&gt;
&lt;br /&gt;
'''Softlink'''&lt;br /&gt;
Ein Softlink ist eine Datei die nur auf den Namen einer anderen Datei verweist. Wenn die Originaldatei gelöscht wird, zeigt &lt;br /&gt;
der Link ins Leere. &lt;br /&gt;
&lt;br /&gt;
 ln -s datei softlink&lt;br /&gt;
&lt;br /&gt;
{| border=1 cellpadding=2&lt;br /&gt;
| Vorteile&lt;br /&gt;
| Symbolische Links können auch auf Verzeichnisse angelegt werden&amp;lt;br&amp;gt;Sie sind partitionsübergreifend&amp;lt;br&amp;gt;Man kann sie auf Dateien anlegen, die noch nicht existieren&lt;br /&gt;
|-&lt;br /&gt;
| Nachteile&lt;br /&gt;
| Wenn das Original gelöscht ist, ist kein Zugriff mehr möglich&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Beispiel&lt;br /&gt;
 root@zero:~# ln -s text verweis&lt;br /&gt;
 root@zero:~# ls -l verweis&lt;br /&gt;
 lrwxrwxrwx 1 root root 4 2009-06-18 15:48 verweis -&amp;gt; text&lt;br /&gt;
&lt;br /&gt;
'''Hardlinks'''&lt;br /&gt;
 ln datei hardlink&lt;br /&gt;
Eigentlich ist jede Datei ein Hardlink. Ein Hardlink ist ein Verzeichniseintrag,&lt;br /&gt;
der auf eine Inode verweist. Beim Erzeugen einer Datei verweist ein Eintrag auf&lt;br /&gt;
eine Inode. Man kann dann weitere Verweise erzeugen. Der Linkcounter wird&lt;br /&gt;
jeweils um 1 erhöht. Beim Löschen einer Datei wird er jeweils um 1 reduziert.&lt;br /&gt;
Wird der Wert 0 erreicht, ist die Datei gelöscht.&lt;br /&gt;
{| border=1 cellpadding=2&lt;br /&gt;
| Vorteile&lt;br /&gt;
|Zugriff auf die Daten, selbst wenn das Orginal gelöscht ist.&lt;br /&gt;
|-&lt;br /&gt;
|Nachteile&lt;br /&gt;
|Man kann keine Hardlinks auf Verzeichnisse anlegen.&lt;br /&gt;
Ist nur innerhalb einer Partion möglich.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Beispiel&lt;br /&gt;
 root@zero:~# touch 1&lt;br /&gt;
 root@zero:~# echo &amp;quot;text&amp;quot; &amp;gt; 1&lt;br /&gt;
 root@zero:~# ln 1 2&lt;br /&gt;
 root@zero:~# more 2&lt;br /&gt;
 text&lt;br /&gt;
 root@zero:~# echo &amp;quot;doch kein text&amp;quot; &amp;gt; 1&lt;br /&gt;
 root@zero:~# more 1&lt;br /&gt;
 doch kein text&lt;br /&gt;
 root@zero:~# more 2&lt;br /&gt;
 doch kein text&lt;br /&gt;
&lt;br /&gt;
Weitere Optionen:&lt;br /&gt;
 -b sichert Dateien, statt sie zu überschreiben &lt;br /&gt;
 -f Überschreibt bestehende, gleichnamige Dateien&lt;br /&gt;
 -i fragt vor dem Überschreiben nach Bestätigung&lt;br /&gt;
 -v ausführliche Meldungen&lt;br /&gt;
Softlink mit dem Namen passwd im Homeverzeichnis angelegt&lt;br /&gt;
 xinux@zero:~$ ln -vs /etc/passwd .&lt;br /&gt;
 „./passwd“ -&amp;gt; „/etc/passwd“&lt;br /&gt;
Softlink mit dem Namen passwd im Homeverzeichnis angelegt(Original exestiert nicht) &lt;br /&gt;
 xinux@zero:~$ ln -vs /etc/hund .&lt;br /&gt;
 „./hund“ -&amp;gt; „/etc/hund“&lt;br /&gt;
Hardlink mit dem Namen hosts im Homeverzeichnis angelegt&lt;br /&gt;
  xinux@zero:~$ ln -v /etc/hosts .&lt;br /&gt;
 „./hosts“ =&amp;gt; „/etc/hosts“&lt;br /&gt;
Auf eine nicht exestierende Datei kann kein Hardlink angelegt werden!&lt;br /&gt;
 xinux@zero:~$ ln -v /etc/katze .&lt;br /&gt;
 ln: Zugriff auf „/etc/katze“: No such file or directory&lt;br /&gt;
&lt;br /&gt;
==Prozesse==&lt;br /&gt;
===Was ist ein Prozess?===&lt;br /&gt;
Ein Prozess setzt sich aus zwei Teilen zusammen:&lt;br /&gt;
&lt;br /&gt;
1.Programm, das in den Hauptspeicher geladen wurde&lt;br /&gt;
&lt;br /&gt;
2.Prozessumgebung&lt;br /&gt;
&lt;br /&gt;
Unter einem Prozess versteht man ein Programm (binär), das in den Hauptspeicher&lt;br /&gt;
geladen wurde. Also nicht das Program selbst, das auf der Festplatte liegt ist der&lt;br /&gt;
Prozess, sondern es wird erst durch das Laden in den Hauptspeicher dazu.&lt;br /&gt;
Normalerweise liegt ein Programm als ausführbare Datei irgendwo auf der&lt;br /&gt;
Festplatte oder auf Diskette. Ob es sich bei dem Programm um eine binäre Datei&lt;br /&gt;
handelt, kann man mit dem Befehl '' file '' feststellen.&lt;br /&gt;
 &lt;br /&gt;
 root@zero:~# file /bin/mkdir&lt;br /&gt;
 /bin/mkdir: ELF 32-bit LSB executable, Intel 80386, version 1 (SYSV), dynamically linked (uses shared libs), for GNU/Linux 2.6.8, stripped&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Die Datei liegt im Maschinencode vor und kann in den Hauptspeicher geladen&lt;br /&gt;
werden. Sobald dies geschehen ist, kann der Rechner diesen Maschinencode&lt;br /&gt;
abarbeiten (ausführen).&lt;br /&gt;
&lt;br /&gt;
Da aber ein Programm nicht direkt auf die Hardware zugreifen soll, muss es vom&lt;br /&gt;
Betriebsystem kontrolliert werden. Das Betriebssystem liegt logisch gesehen&lt;br /&gt;
zwischen Hardware und Anwendung. Das Betriebssystem ordnet jedem Prozess&lt;br /&gt;
verschiedene Kenndaten zu, um die Prozesse verwalten zu können. Alle&lt;br /&gt;
Kenndaten, die einem Prozess zugeordnet sind, nennt man die&lt;br /&gt;
Prozessumgebung.Wenn man in der Shell ein Kommando eingibt, wird ein Prozess&lt;br /&gt;
kreiert. Natürlich ist die Shell selbst auch ein Prozess. Ein Prozess kann aber&lt;br /&gt;
genauso gut ein Serverprozess (Dienst) sein, z.B. Apache.&lt;br /&gt;
Ein wesentliches Merkmal eines Prozesses ist die Prozesskommunikation. Über im&lt;br /&gt;
Betriebssystem implementierte Methoden ist es möglich, dass verschiedene&lt;br /&gt;
Prozesse Signale und Daten untereinander austauschen können.&lt;br /&gt;
Dadurch wird auch dem Benutzer ermöglicht, einem Prozeß bestimmte Signale zu&lt;br /&gt;
senden bzw. auf den Status eines Prozesses Einfluss zu nehmen.&lt;br /&gt;
&lt;br /&gt;
===Prozesstabelle (Anzeige mit ps)===&lt;br /&gt;
Da zu jedem Prozess Kenndaten geführt werden, müssen diese auch irgendwo&lt;br /&gt;
festgehalten werden. Das geschieht in der sogenannten Prozesstabelle.&lt;br /&gt;
&lt;br /&gt;
Kenndaten der Prozesse (Auswahl):&lt;br /&gt;
* F Flags (z.B. ausgelagert; Systemprozess; Trace,...)&lt;br /&gt;
* UID Nutzer, mit dessen Rechten der Prozess ausgeführt wird&lt;br /&gt;
* PID Prozess - ID. Diese Nummer gibt eine eindeutige Prozess - Nummer&lt;br /&gt;
an. Sie wird vom System automatisch beim Starten des Prozesses&lt;br /&gt;
vergeben und ist für die Laufzeit eindeutig.&lt;br /&gt;
* PPID Prozessnumer der Eltern-Prozesses&lt;br /&gt;
* PRI Priorität eines Prozesses; je niedriger der Wert ist, desto besser&lt;br /&gt;
* NI ist der Nicewert des Prozesses; Nice erniedrigt den Grundwert&lt;br /&gt;
der Priorität des Prozesses und gibt damit Prozessorzeit für andere&lt;br /&gt;
Prozesse frei.&lt;br /&gt;
* SIZE Speichergröße des Prozesses inklusive Stack (eine Art Zwischenspeicher)&lt;br /&gt;
* RSS Verbrauch an physischen Speicher&lt;br /&gt;
* WCHAN ist der Name der Kernerlfunktion, in der der Prozess schläft&lt;br /&gt;
* STAT Status des Prozesses&lt;br /&gt;
R läuft       S schlafend     D nicht störbarer Schlaf&lt;br /&gt;
T angehalten  Z Zombie        W der Prozess belegt keine Seiten&lt;br /&gt;
* TIME Bisland benötigte Prozessorzeit&lt;br /&gt;
* SIZE ist die Größe von Text, Daten und Stack&lt;br /&gt;
* TTY die Nummer des kontrollierenden Teminal; wenn hier ein ? steht,&lt;br /&gt;
handelt es sich um einen Dämon oder Serverprozess.&lt;br /&gt;
* COMMAND Angabe des Prozesses selbst. Dies ist meist der Programmname.&lt;br /&gt;
&lt;br /&gt;
Weiteres&lt;br /&gt;
* GID Gruppe, unter der der Prozess läuft&lt;br /&gt;
* Verweis auf das aktuellen Arbeitsverzeichnis&lt;br /&gt;
* Um mit relativen Pfadangaben arbeiten zu können braucht man diesen Eintrag&lt;br /&gt;
* Tabelle mit Verweisen auf aktuell geöffnete Dateien&lt;br /&gt;
* 3 sind automatisch geöffnet Standardeingabe, Standardausgabe und&lt;br /&gt;
Standardfehlerkanal&lt;br /&gt;
&lt;br /&gt;
Beispiel&lt;br /&gt;
 root@zero:~# ps -l&lt;br /&gt;
 F S   UID   PID  PPID  C PRI  NI ADDR SZ WCHAN  TTY          TIME CMD&lt;br /&gt;
 4 R     0 18639 18631  0  80   0 -  1080 -      pts/0    00:00:00 bash&lt;br /&gt;
 0 R     0 25904 18639  0  80   0 -   635 -      pts/0    00:00:00 ps&lt;br /&gt;
&lt;br /&gt;
===Eltern und Kinder===&lt;br /&gt;
Jeder Prozess kann weitere Prozesse erzeugen. Die erzeugten Prozesse bezeichnet&lt;br /&gt;
man als Kindprozesse. Jeder Kindprozess weiß anhand der PID, woher er stammt.&lt;br /&gt;
&lt;br /&gt;
Alle Prozesse sind von einem anderen Prozess gestartet worden, mit Ausnahme&lt;br /&gt;
des Pseudoprozesses (noch im Kernel beim Starten erzeugter Prozess). Dieser hat&lt;br /&gt;
die Prozessnummer 0. Er hat die Aufgabe, den Init Prozess ( /sbin/init die Nummer&lt;br /&gt;
1) zu starten, der in System V alle anderen Prozesse direkt oder über seine Kind-&lt;br /&gt;
prozesse startet. (init wird konfiguriert durch die /etc/inittab)&lt;br /&gt;
&lt;br /&gt;
Es gibt zwei Arten wie ein Prozess gestartet werden kann:&lt;br /&gt;
&lt;br /&gt;
# Fork und Exec: Prozessumgebung wird dupliziert, der neue Prozess bekommt eine eigene neue PID&lt;br /&gt;
# Exec: Alter Prozess wird durch neuen Prozess überladen (geht mit dem shell-buildin exec)&lt;br /&gt;
&lt;br /&gt;
'''Rechte auf Objekte UID GID'''&lt;br /&gt;
Ob ein Prozess auf eine Datei zugreifen kann, entscheidet der Kernel anhand der&lt;br /&gt;
Zugriffssrechte, die auf der Datei gesetzt sind. Er checkt anhand der UID und GID&lt;br /&gt;
des Prozesses, ob es erlaubt ist. Mit dieser Technik wird letztendlich geprüft, was&lt;br /&gt;
ein User darf, und was nicht.&lt;br /&gt;
&lt;br /&gt;
===Rechenzeit und Priorität===&lt;br /&gt;
Da auch bei Prozessen eine Gerechtigkeit herschen muss, muss eine Instanz&lt;br /&gt;
darüber entscheiden wie lange ein Prozess Rechenzeit verbrauchen darf.&lt;br /&gt;
Folgende Kenndaten werden dazu benötigt&lt;br /&gt;
* clocktick = Zeiteinheit&lt;br /&gt;
* n = Faktor über den Kernel einstellbar&lt;br /&gt;
* slice = n &amp;lt;nowiki&amp;gt;*&amp;lt;/nowiki&amp;gt; clocktick&lt;br /&gt;
* agingtime = weitere Zeiteinheit über den Kernel einstellbar&lt;br /&gt;
&lt;br /&gt;
Es wird davon ausgegangen das der Prozess mit der niedrigsten Priorität gerade&lt;br /&gt;
rechnet. Pro clocktick erhöht sich die Priorität dieses Prozesses um eins.&lt;br /&gt;
&lt;br /&gt;
Jetzt können 3 Situationen eintreten die alle dazu führen das der Scheduler&lt;br /&gt;
aufgerufen wird.&lt;br /&gt;
&lt;br /&gt;
# Prozess blockiert wegen einer Ausgabe oder Eingabe.&lt;br /&gt;
# Gibt Rechenzeit freiwillig ab.&lt;br /&gt;
# Der Slice endet.&lt;br /&gt;
&lt;br /&gt;
Der Aufruf des Schedulers bewirkt das der Prozess mit der niedrigsten Priorität&lt;br /&gt;
gescheduled wird, er also nun rechnen darf. Nach Ablauf der agingtime werden&lt;br /&gt;
nun die Prozesse &amp;quot;gealtert&amp;quot;. Das geschieht nach folgender Formel&lt;br /&gt;
&lt;br /&gt;
Neue Priorität = Alte Priorität / 2 + Nicewert&lt;br /&gt;
&lt;br /&gt;
Der User hat die Möglichkeit, über den sogenannten Nicefaktor den Grundwert für&lt;br /&gt;
einen Prozess zu senken. Der Prozess braucht dann länger für seine Abarbeitung.&lt;br /&gt;
Er verhält sich somit netter zu den anderen Prozessen. Normale User können nur&lt;br /&gt;
netter werden, der Systemverwalter kann auch nicht netter (gemeiner) werden. Der&lt;br /&gt;
Bereich liegt zwischen 19 (sehr nett) bis 0 (weniger nett) für die User, und 19 bis&lt;br /&gt;
-20 für root.&lt;br /&gt;
&lt;br /&gt;
[[Image:pri.png]]&lt;br /&gt;
&lt;br /&gt;
'''Signale'''&lt;br /&gt;
&lt;br /&gt;
Mit den Kommando kill und killall kann man Prozessen Signale schicken&lt;br /&gt;
&lt;br /&gt;
 kill -Signalnummer PID &lt;br /&gt;
&lt;br /&gt;
Signalnummer&lt;br /&gt;
{| border=1 cellpadding=2&lt;br /&gt;
!Signalname&lt;br /&gt;
!Wert&lt;br /&gt;
!Aktion&lt;br /&gt;
|-&lt;br /&gt;
|SIGHUP&lt;br /&gt;
|1&lt;br /&gt;
|Neuinitialisierung eines Prozesses&lt;br /&gt;
|-&lt;br /&gt;
|SIGINT&lt;br /&gt;
|2&lt;br /&gt;
|Interrupt-Signal von der Tastatur (STRG+c)&lt;br /&gt;
|-&lt;br /&gt;
|SIGQUIT&lt;br /&gt;
|3&lt;br /&gt;
|Interrupt-Signal von der Tastatur (STRG+c) mit Dump&lt;br /&gt;
|-&lt;br /&gt;
|SIGKILL&lt;br /&gt;
|9&lt;br /&gt;
|unwiderrufliches Beendigungssignal (Töten)&lt;br /&gt;
|-&lt;br /&gt;
|SIGSEGV&lt;br /&gt;
|11&lt;br /&gt;
|Ungültige Speicherreferenz (bedeutet oft auf defekten Speicher)&lt;br /&gt;
|-&lt;br /&gt;
|SIGTERM &lt;br /&gt;
|15&lt;br /&gt;
|Beendigungssignal (geöffnete Dateien werden geschlossen)&lt;br /&gt;
|-&lt;br /&gt;
|SIGCONT &lt;br /&gt;
|18&lt;br /&gt;
|Weiterfahren, wenn gestoppt&lt;br /&gt;
|-&lt;br /&gt;
|SIGSTOP&lt;br /&gt;
|19&lt;br /&gt;
|Prozessstop&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Beispiel&lt;br /&gt;
 root@zero:~# kill -1 7562&lt;br /&gt;
&lt;br /&gt;
===Programme im Zusammenhang mit Prozessen===&lt;br /&gt;
* ps: Zeigt die Prozesse mit ihrem Status an&lt;br /&gt;
 root@zero:~# ps&lt;br /&gt;
  PID TTY          TIME CMD&lt;br /&gt;
 14134 pts/0    00:00:00 bash&lt;br /&gt;
 14149 pts/0    00:00:00 ps&lt;br /&gt;
&lt;br /&gt;
 root@zero:~# ps -elf | grep apache&lt;br /&gt;
 1 S root      5738     1  0  80   0 -  5461 select Jun16 ?        00:00:00 /usr/sbin/apache2 -k start&lt;br /&gt;
 5 S www-data  5739  5738  0  80   0 -  5581 inet_c Jun16 ?        00:00:00 /usr/sbin/apache2 -k start&lt;br /&gt;
 5 S www-data  5742  5738  0  80   0 -  5461 inet_c Jun16 ?        00:00:00 /usr/sbin/apache2 -k start&lt;br /&gt;
 5 S www-data  5743  5738  0  80   0 -  5461 inet_c Jun16 ?        00:00:00 /usr/sbin/apache2 -k start&lt;br /&gt;
 5 S www-data  5745  5738  0  80   0 -  5461 inet_c Jun16 ?        00:00:00 /usr/sbin/apache2 -k start&lt;br /&gt;
 5 S www-data  5746  5738  0  80   0 -  5461 inet_c Jun16 ?        00:00:00 /usr/sbin/apache2 -k start&lt;br /&gt;
 0 S root     14153 14134  0  80   0 -   837 pipe_w 16:59 pts/0    00:00:00 grep apache&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* nice: Lässt ein Programm mit verändertem Grundwert der Priorität laufen&lt;br /&gt;
 root@zero:~# nice&lt;br /&gt;
 0&lt;br /&gt;
 root@zero:~# nice -n 9 bash&lt;br /&gt;
 root@zero:~# nice&lt;br /&gt;
 9&lt;br /&gt;
 root@zero:~#&lt;br /&gt;
&lt;br /&gt;
* renice: Ändert den Grundwert der Priorität eines laufenden Prozesses&lt;br /&gt;
 root@zero:~# renice 10 5742&lt;br /&gt;
 5742: Alte Priorität: 0, neue Priorität: 10&lt;br /&gt;
&lt;br /&gt;
* top: Zeigt die Prozesse mit ihrem Status an (Abbrechen mit q)&lt;br /&gt;
 root@zero:~# top&lt;br /&gt;
&lt;br /&gt;
* pstree: Zeigt die Prozesse als Baumstruktur&lt;br /&gt;
 root@zero:~# pstree&lt;br /&gt;
 init─┬─NetworkManager&lt;br /&gt;
      ├─acpid&lt;br /&gt;
      ├─apache2───5*[apache2]&lt;br /&gt;
      ├─atd&lt;br /&gt;
      ├─bluetoothd&lt;br /&gt;
      ├─console-kit-dae───63*[{console-kit-dae}]&lt;br /&gt;
      ├─cron&lt;br /&gt;
      ├─cupsd&lt;br /&gt;
      ├─dbus-daemon&lt;br /&gt;
      ├─dd&lt;br /&gt;
      ├─gdm───gdm─┬─Xorg&lt;br /&gt;
      │           └─gdmgreeter&lt;br /&gt;
      ├─6*[getty]&lt;br /&gt;
      ├─hald───hald-runner─┬─hald-addon-acpi&lt;br /&gt;
      │                    ├─hald-addon-inpu&lt;br /&gt;
      │                    └─2*[hald-addon-stor]&lt;br /&gt;
      ├─klogd&lt;br /&gt;
      ├─nm-system-setti&lt;br /&gt;
      ├─nmbd&lt;br /&gt;
      ├─nscd───11*[{nscd}]&lt;br /&gt;
      ├─portmap&lt;br /&gt;
      ├─rpc.statd&lt;br /&gt;
      ├─slapd───2*[{slapd}]&lt;br /&gt;
      ├─smbd───smbd&lt;br /&gt;
      ├─sshd───sshd───bash───bash───pstree&lt;br /&gt;
      ├─syslogd&lt;br /&gt;
      ├─system-tools-ba&lt;br /&gt;
      ├─udevd&lt;br /&gt;
      ├─winbindd─┬─winbindd───winbindd&lt;br /&gt;
      │          └─3*[winbindd]&lt;br /&gt;
      └─wpa_supplicant&lt;br /&gt;
&lt;br /&gt;
===Jobs===&lt;br /&gt;
Unter einem Job versteht man ein Programm, welches man von der Shell gelöst&lt;br /&gt;
hat. D. h. man kann ganz normal weiter arbeiten und der Job verrichtet seinen&lt;br /&gt;
Dienst im Hintergrund. Man kann jederzeit zu diesem Job wieder Kontakt&lt;br /&gt;
aufnehmen.&lt;br /&gt;
&lt;br /&gt;
Ein Job kann auf 2 Arten gestarten werden:&lt;br /&gt;
&lt;br /&gt;
# Durch Anhängen des &amp;amp; Zeichens beim Programmstart&lt;br /&gt;
 root@zero:~# tail -f /var/log/messages &amp;amp;&lt;br /&gt;
 Jun 19 06:59:31 zero -- MARK --&lt;br /&gt;
 Jun 19 07:19:31 zero -- MARK --&lt;br /&gt;
 Jun 19 07:39:32 zero -- MARK --&lt;br /&gt;
 Jun 19 07:44:57 zero syslogd 1.5.0#5ubuntu3: restart.&lt;br /&gt;
 Jun 19 07:59:32 zero -- MARK --&lt;br /&gt;
 Jun 19 08:19:32 zero -- MARK --&lt;br /&gt;
 Jun 19 08:39:32 zero -- MARK --&lt;br /&gt;
 Jun 19 08:59:32 zero -- MARK --&lt;br /&gt;
 Jun 19 09:19:33 zero -- MARK --&lt;br /&gt;
 Jun 19 09:39:33 zero -- MARK --&lt;br /&gt;
 [3] 27421&lt;br /&gt;
&lt;br /&gt;
# Durch Stoppen des Prozesses durch Drücken von Strg-Z und in den Hintergrund schicken mit %n (n ist die Jobnummer)&lt;br /&gt;
 root@zero:~# watch cat /proc/cpuinfo&lt;br /&gt;
 Strg-Z&lt;br /&gt;
 [4]+  Stopped                 watch cat /proc/cpuinfo&lt;br /&gt;
 root@zero:~# bg %4&lt;br /&gt;
 [4]+ watch cat /proc/cpuinfo &amp;amp;&lt;br /&gt;
&lt;br /&gt;
Anweisungen im Zusammenhang mit Jobs (n ist die Jobnummer)&lt;br /&gt;
* bg %n : Einen Job in den Hintergrund stellen (wie oben)&lt;br /&gt;
* fg %n : Einen Job in den Vordergrund holen&lt;br /&gt;
 root@zero:~# fg %4&lt;br /&gt;
 watch cat /proc/cpuinfo&lt;br /&gt;
&lt;br /&gt;
* jobs : Aktive Jobs ausgeben&lt;br /&gt;
&lt;br /&gt;
 root@zero:~# jobs&lt;br /&gt;
 [1]   Running                 tail -f /var/log/syslog &amp;amp;&lt;br /&gt;
 [2]   Running                 tail -f /var/log/syslog &amp;amp;&lt;br /&gt;
 [3]-  Running                 tail -f /var/log/messages &amp;amp;&lt;br /&gt;
 [4]+  Stopped                 watch cat /proc/cpuinfo&lt;br /&gt;
&lt;br /&gt;
* Strg-Z : Einen Vordergrund-Job vorübergehend anhalten&lt;br /&gt;
* kill -STOP %n : Unterbricht Job im Hintergrund&lt;br /&gt;
 root@zero:~# kill -STOP %1&lt;br /&gt;
 root@zero:~# jobs&lt;br /&gt;
 [1]+  '''Stopped'''                 tail -f /var/log/syslog&lt;br /&gt;
 [2]   Running                 tail -f /var/log/syslog &amp;amp;&lt;br /&gt;
 [3]   Running                 tail -f /var/log/messages &amp;amp;&lt;br /&gt;
 [4]-  Stopped                 watch cat /proc/cpuinfo&lt;br /&gt;
* kill -CONT %n : Setzt den unterbrochenen Job im Hintergrund fort&lt;br /&gt;
root@zero:~# kill -CONT %1&lt;br /&gt;
root@zero:~# jobs&lt;br /&gt;
 [1]+  '''Running'''                 tail -f /var/log/syslog &amp;amp;&lt;br /&gt;
 [2]   Running                 tail -f /var/log/syslog &amp;amp;&lt;br /&gt;
 [3]   Running                 tail -f /var/log/messages &amp;amp;&lt;br /&gt;
 [4]-  Stopped                 watch cat /proc/cpuinfo&lt;br /&gt;
* kill -KILL %n : Tötet Job im Hintergrund&lt;br /&gt;
 root@zero:~# kill -KILL %1&lt;br /&gt;
 root@zero:~# jobs&lt;br /&gt;
 [1]+  '''Killed'''                  tail -f /var/log/syslog&lt;br /&gt;
 [2]   Running                 tail -f /var/log/syslog &amp;amp;&lt;br /&gt;
 [3]   Running                 tail -f /var/log/messages &amp;amp;&lt;br /&gt;
 [4]-  Stopped                 watch cat /proc/cpuinfo&lt;br /&gt;
 root@zero:~# jobs&lt;br /&gt;
 [2]   Running                 tail -f /var/log/syslog &amp;amp;&lt;br /&gt;
 [3]-  Running                 tail -f /var/log/messages &amp;amp;&lt;br /&gt;
 [4]+  Stopped                 watch cat /proc/cpuinfo&lt;br /&gt;
&lt;br /&gt;
Bedingungen, die zu Jobausführung eingehalten werden sollen:&lt;br /&gt;
* Der Job soll nicht auf den Bildschirm schreiben (Standardausgabe +Standardfehlerkanal).&lt;br /&gt;
* Er soll keine Eingaben vom Benutzer erwarten.&lt;br /&gt;
&lt;br /&gt;
==Suchen von Dateien==&lt;br /&gt;
===find===&lt;br /&gt;
 find ab_wo_wird_gesucht was_wird_gesucht aktion&lt;br /&gt;
 find [Pfad] [Bedingung] [Aktion]&lt;br /&gt;
&lt;br /&gt;
====Nach Namen====&lt;br /&gt;
 find [Pfad] '''-name''' [Name]&lt;br /&gt;
 &lt;br /&gt;
Finde alle Dateien mit Namen test ab dem Verzeichnis /home und gebe diese Zeilenweise aus&lt;br /&gt;
 root@zero:~# find /home -name test -print&lt;br /&gt;
 /home/xinux/test&lt;br /&gt;
 /home/test&lt;br /&gt;
&lt;br /&gt;
Wie oben, jedoch mit Namensanfang test&lt;br /&gt;
 root@zero:/home/xinux# find /home -name 'test*'&lt;br /&gt;
 /home/xinux/testdatei&lt;br /&gt;
 /home/xinux/test&lt;br /&gt;
 /home/test&lt;br /&gt;
&lt;br /&gt;
====Nach Benutzer(Eigentümer)====&lt;br /&gt;
 root@zero:/tmp# find /tmp/ '''-user''' xinux&lt;br /&gt;
 /tmp/datei&lt;br /&gt;
&lt;br /&gt;
====Nach Gruppe====&lt;br /&gt;
 root@zero:/tmp# find /tmp/ '''-group''' hacker&lt;br /&gt;
 /tmp/datei3&lt;br /&gt;
 /tmp/datei2&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
====Nach Typ====&lt;br /&gt;
Es wird nach Dateien anhand Ihrer Art gesucht:&lt;br /&gt;
 find [Pfad] '''-type''' [Typ] &lt;br /&gt;
Typ:&lt;br /&gt;
* f: Normale Dateien&lt;br /&gt;
 root@zero:~# find /tmp/ -type f&lt;br /&gt;
 /tmp/mbr.img&lt;br /&gt;
 /tmp/datei&lt;br /&gt;
 /tmp/zeugs&lt;br /&gt;
 /tmp/.X0-lock&lt;br /&gt;
* d: Verzeichnisse&lt;br /&gt;
 root@zero:~# find /var/log -type d&lt;br /&gt;
 /var/log&lt;br /&gt;
 /var/log/apache2&lt;br /&gt;
 /var/log/unattended-upgrades&lt;br /&gt;
 /var/log/apparmor&lt;br /&gt;
 /var/log/ConsoleKit&lt;br /&gt;
 /var/log/dist-upgrade&lt;br /&gt;
 /var/log/dist-upgrade/20090526-1052&lt;br /&gt;
 /var/log/cups&lt;br /&gt;
 /var/log/apt&lt;br /&gt;
 /var/log/fsck&lt;br /&gt;
 /var/log/samba&lt;br /&gt;
 /var/log/samba/cores&lt;br /&gt;
 /var/log/samba/cores/smbd&lt;br /&gt;
 /var/log/samba/cores/nmbd&lt;br /&gt;
 /var/log/samba/cores/winbindd&lt;br /&gt;
 /var/log/installer&lt;br /&gt;
 /var/log/gdm&lt;br /&gt;
 /var/log/news&lt;br /&gt;
* c: Char Devices (Zeichenorientierte Gerätedatei)&lt;br /&gt;
 root@zero:~# find / -type c&lt;br /&gt;
 /lib/udev/devices/kmem&lt;br /&gt;
 /lib/udev/devices/null&lt;br /&gt;
 /lib/udev/devices/console&lt;br /&gt;
 /lib/udev/devices/ppp&lt;br /&gt;
 /lib/udev/devices/net/tun&lt;br /&gt;
* b: Block Devices (Blockorientierte Gerätedatei)&lt;br /&gt;
* p: Benannte Pipe&lt;br /&gt;
* l: Links&lt;br /&gt;
* s: Sockets&lt;br /&gt;
&lt;br /&gt;
====Nach Modifikation====&lt;br /&gt;
Listet alle Dateien in /etc auf, die innerhalb von zwei Tagen modifiziert wurden&lt;br /&gt;
 root@zero:/var/log# find /etc/ -mtime 2 -print&lt;br /&gt;
 /etc/apache2&lt;br /&gt;
 /etc/apache2/mods-available&lt;br /&gt;
 /etc/apache2/conf.d&lt;br /&gt;
 /etc/apache2/sites-available&lt;br /&gt;
 /etc/bash_completion.d&lt;br /&gt;
 /etc/blkid.tab.old&lt;br /&gt;
 /etc/firefox-3.0/profile&lt;br /&gt;
 /etc/firefox-3.0/profile/chrome&lt;br /&gt;
 /etc/firefox-3.0/pref&lt;br /&gt;
 /etc/profile.d&lt;br /&gt;
 /etc/ufw/applications.d&lt;br /&gt;
 /etc/logrotate.d&lt;br /&gt;
 /etc/xulrunner-1.9&lt;br /&gt;
 /etc/blkid.tab&lt;br /&gt;
 /etc/cron.daily&lt;br /&gt;
 /etc/alternatives&lt;br /&gt;
 /etc/alternatives/x-www-browser&lt;br /&gt;
 /etc/alternatives/xulrunner&lt;br /&gt;
 /etc/gre.d&lt;br /&gt;
 /etc/hal/fdi/policy&lt;br /&gt;
 /etc/dbus-1/system.d&lt;br /&gt;
 /etc/udev/rules.d&lt;br /&gt;
&lt;br /&gt;
====Nach Größe====&lt;br /&gt;
Finde Dateien in /tmp, die größer als 100 MByte sind&lt;br /&gt;
 root@zero:/tmp# find /tmp/ -size +100M&lt;br /&gt;
 /tmp/datei&lt;br /&gt;
&lt;br /&gt;
Finde Dateien in /tmp, die kleiner als 100 KByte sind&lt;br /&gt;
 root@zero:/tmp# find /tmp/ -size -100k&lt;br /&gt;
 /tmp/&lt;br /&gt;
 /tmp/datei3&lt;br /&gt;
 /tmp/backup &lt;br /&gt;
 /tmp/datei2&lt;br /&gt;
 /tmp/.winbindd &lt;br /&gt;
 /tmp/.winbindd/pipe&lt;br /&gt;
 /tmp/mbr.img&lt;br /&gt;
 /tmp/zeugs&lt;br /&gt;
 /tmp/.ICE-unix&lt;br /&gt;
 /tmp/.X0-lock&lt;br /&gt;
 /tmp/datei1&lt;br /&gt;
 /tmp/.X11-unix&lt;br /&gt;
 /tmp/.X11-unix/X0&lt;br /&gt;
 /tmp/pulse-PKdhtXMmr18n&lt;br /&gt;
&lt;br /&gt;
====Nach Berechtigungen====&lt;br /&gt;
Finde Dateien in Home mit der Berechtigung 777 (-rwxrwxrwx)&lt;br /&gt;
 root@zero:/var# find /home/ -perm 777&lt;br /&gt;
 /home/samba&lt;br /&gt;
 /home/xinux/Examples&lt;br /&gt;
 /home/xinux/.pulse/1f0763ee4cf4c7e1d3c07fd149dda37b:runtime&lt;br /&gt;
 /home/test/Examples&lt;br /&gt;
&lt;br /&gt;
===locate===&lt;br /&gt;
Locate arbeitet über einen Index, der erstellt und aktualisiert werden muss. Aus diesem Grund kann locate teilweise nicht &lt;br /&gt;
akutell sein. Es ist immer schneller als find und es durchsucht immer das ganze Dateisystem. &lt;br /&gt;
 locate [Dateiname]&lt;br /&gt;
 &lt;br /&gt;
Lokalisiere die Datei wvdial.conf. Anmerkung: Der Stern wird beim Suchen automatisch hinzugefügt. Entspricht also&lt;br /&gt;
wvidal.conf*&lt;br /&gt;
 root@zero:~# locate wvdial.conf&lt;br /&gt;
 /etc/wvdial.conf&lt;br /&gt;
 /usr/share/man/man5/wvdial.conf.5.gz&lt;br /&gt;
 /var/lib/dpkg/info/wvdial.conffiles&lt;br /&gt;
 /var/lib/dpkg/info/wvdial.config&lt;br /&gt;
&lt;br /&gt;
Lokalisiere die Datei wvdial.conf und nur diese&lt;br /&gt;
 root@zero:~# locate -b '\wvdial.conf'&lt;br /&gt;
 /etc/wvdial.conf&lt;br /&gt;
&lt;br /&gt;
Aktualisieren des Indexes&lt;br /&gt;
 root@zero:~# updatedb&lt;br /&gt;
&lt;br /&gt;
==Wie wird ein Kommando lokalisiert==&lt;br /&gt;
Wenn die Shell alle Ersetzungen in der Kommandozeile vorgenommen und alle Umleitungen vorbereitet hat, ist der Zeitpunkt &lt;br /&gt;
gekommen, auf den der Anwender die ganze Zeit gewartet hat. Die Shell versucht das Kommando auszuführen. Dazu muss sie &lt;br /&gt;
es aber erst lokalisieren. Das erste passende Kommando wird ausgeführt.&lt;br /&gt;
&lt;br /&gt;
Als Kommandoname wird immer das erste Wort eines einfachen Kommandos erkannt. Ein Kommandoname kann mit Pfadnamen in &lt;br /&gt;
einem Verzeichnis (absolut oder relativ) angegeben werden. Die Shell erkennt dies an (mindestens) einem Slash `/' &lt;br /&gt;
im Kommandonamen. Wenn kein Verzeichnis angegeben ist, versucht die Shell selbst, das Kommando zu finden. Dazu wird &lt;br /&gt;
der Kommandoname zuerst in der Hashtabelle gesucht, dann wird er mit den Synonymen, mit den Scriptfunktionen und &lt;br /&gt;
schließlich mit den Shellfunktionen verglichen. &lt;br /&gt;
&lt;br /&gt;
Wird auf diese Weise kein Programm dieses Namens gefunden, werden alle in der PATH-Umgebungsvariablen aufgeführten &lt;br /&gt;
Verzeichnisse nach einer ausführbaren Datei dieses Namens durchsucht. Wird auch hier kein passendes Kommando gefunden, &lt;br /&gt;
gibt die Shell eine Fehlermeldung aus.&lt;br /&gt;
&lt;br /&gt;
===which und type===&lt;br /&gt;
====which====&lt;br /&gt;
which gibt die vollen Pfadnamen der Dateien aus, die bei Benutzung des angegebenen Befehls ausgeführt werden würden.&lt;br /&gt;
&lt;br /&gt;
 which [-a] Dateiname &lt;br /&gt;
&lt;br /&gt;
Optionen:&lt;br /&gt;
&lt;br /&gt;
* -a : Alle Treffer ausgeben, nicht nur den ersten&lt;br /&gt;
* --skip-dot : Verzeichnisse, die mit einem Punkt beginnen, auslassen&lt;br /&gt;
&lt;br /&gt;
Beispiel&lt;br /&gt;
 root@zero:~# which startx&lt;br /&gt;
 /usr/bin/startx&lt;br /&gt;
&lt;br /&gt;
====type====&lt;br /&gt;
Anzeigen der absoluten Pfadnamen von Befehlen, und ob sich diese Befehle in der Hash-Tabelle der aktuellen&lt;br /&gt;
Shell befinden.&lt;br /&gt;
&lt;br /&gt;
 type [Optionen] Befehle&lt;br /&gt;
&lt;br /&gt;
Beispiel&lt;br /&gt;
 root@zero:~# type ls&lt;br /&gt;
 ls is aliased to `ls --color=auto'&lt;br /&gt;
&lt;br /&gt;
Optionen:&lt;br /&gt;
&lt;br /&gt;
* -a : Alle vorkommenden Befehle werden ausgegeben, nicht nur das, welches aufgerufen werden würde&lt;br /&gt;
 root@zero:~# type '''-a''' ls&lt;br /&gt;
 ls is aliased to `ls --color=auto'&lt;br /&gt;
 ls is /bin/ls&lt;br /&gt;
&lt;br /&gt;
* -p : Anzeigen des Eintrags von Befehl in der Hash-Tabelle. Dieser Wert kann sich vom ersten Auftreten des Befehls in PATH&lt;br /&gt;
unterscheiden&lt;br /&gt;
 root@zero:~# type '''-p''' apache2&lt;br /&gt;
 /usr/sbin/apache2&lt;br /&gt;
&lt;br /&gt;
* -t : Anzeigen, ob Befehl ein Aliasname, ein Schlüsselwort, eine Funktion, ein eingebauter Befehl oder eine Datei ist&lt;br /&gt;
 root@zero:~# type '''-t''' apache2&lt;br /&gt;
 file&lt;/div&gt;</summary>
		<author><name>192.168.178.46</name></author>
	</entry>
	<entry>
		<id>https://www.xinux.net/index.php?title=Linux_Grundlagen&amp;diff=83</id>
		<title>Linux Grundlagen</title>
		<link rel="alternate" type="text/html" href="https://www.xinux.net/index.php?title=Linux_Grundlagen&amp;diff=83"/>
		<updated>2009-07-07T10:54:13Z</updated>

		<summary type="html">&lt;p&gt;192.168.178.46: /* Gerätedateien (Block und Char) */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Einführung==&lt;br /&gt;
===Geschichte Unix===&lt;br /&gt;
====1969====&lt;br /&gt;
Am Anfang von Linux steht Multics, ein von Bell Laboratories geschaffenes &amp;quot;Betriebssystem&amp;quot;, &lt;br /&gt;
das noch mit Lochkarten arbeitete. Multics wird mit Unterstützung von AT&amp;amp;T und Western &lt;br /&gt;
Electric unter Mitarbeit von Ken Thompson und Dennis Ritchie weiterentwickelt. Obwohl sich &lt;br /&gt;
Bell Laboratories bald zurückzieht, gibt Thompson das Projekt nicht auf.  Zum Entwicklerteam &lt;br /&gt;
gehören auch Rudd Canaday und Brian Kernighan. Letzterer gibt 1970 dem Betriebssystem den Namen UNIX. &lt;br /&gt;
Thompson definiert 7 Richtlinien für UNIX:&lt;br /&gt;
 &lt;br /&gt;
# Hierarchische Anordnung der Dateisysteme&lt;br /&gt;
# Die Ausgabe von Daten an die Peripherie(-geräte) und Dateien soll gleich sein.&lt;br /&gt;
# Prozesse und Programme sollen miteinander kommunizieren.&lt;br /&gt;
# Multitasking (voneinander getrennte Prozesse)&lt;br /&gt;
# Persönliche Shell's&lt;br /&gt;
# Der Compiler soll für viele Programmiersprachen tauglich sein.&lt;br /&gt;
# Portabilität&lt;br /&gt;
&lt;br /&gt;
====1971====&lt;br /&gt;
Bis 1971 ist das für eine DEC PDP-7 geschriebene Unix als Version 1 auf eine PDP-11 portiert. Bis&lt;br /&gt;
zur Version 4 entwickelt Ritchie die Programmier- (Hoch-) Sprache C. Das in Assembler geschriebene&lt;br /&gt;
Unix wird fast völlig nach C übersetzt, wodurch zum erstenmal die geforderte Hardware-Unabhängigkeit&lt;br /&gt;
des Betriebssystems realisiert werden kann.&lt;br /&gt;
&lt;br /&gt;
====1975====&lt;br /&gt;
Da AT&amp;amp;T aufgrund vertraglicher Bindungen mit der US-Bundesregierung Unix nicht kommerziell vermarkten darf, stellt sie den Source Code für ein paar hundert Dollar den Universitäten, Lehr- und Forschungsanstalten zur Verfügung. Dies führt zu einer sehr dynamischen Entwicklung von Unix. 1975 wird die Version 6 als erstes UNIX-System veröffentlicht, die darauffolgende Version 7 wird sehr erfolgreich. Da es keine Standardisierung gibt, entwickeln bald verschiedenste Firmen ihr eigenes UNIX. Ab 1984 wird AT&amp;amp;T per Gerichtsbeschluss erlaubt, Unix zu vermarkten. AT&amp;amp;T verkauft sein Unix V und beginnt, sich um einen internationalen Standard von UNIX zu bemühen. &lt;br /&gt;
&lt;br /&gt;
====1984====&lt;br /&gt;
Durch Richard Stallman wird die Free Software Foundation (FSF) gegründet. Diese initiiert ein Projekt namens GNU (GNU ist Not Unix), welches das Ziel verfolgt, ein freies UNIX System zu schaffen. &lt;br /&gt;
&lt;br /&gt;
====1987====&lt;br /&gt;
AT&amp;amp;T verbietet die Verwendung des Unix Quellcodes an den Universitäten. Während dieser Zeit ist Andrew (Andy) Tannenbaum Professor an der Freien Universität von Amsterdam und entwickelt Minix. Minix ist ein kostengünstiges Lehrbetriebssystem und kommt ohne jeglichen AT&amp;amp;T Code aus, obwohl es die gleiche Funktionalität wie Unix 7 bietet. Im Usenet unter comp.os.minix entsteht eine Minix-Gemeinde, die den Minix Kernel und die Anwendungen rundherum programmiert und verbessert.&lt;br /&gt;
&lt;br /&gt;
====1991====&lt;br /&gt;
Linus Torvalds hat als Student für Computerwissenschaften an der Universität in Helsinki Minix installiert und das Buch von Andy Tannenbaum gelesen. Er beginnt im Sinne der FSF einen Unix ähnlichen Kernel zu programmieren mit der Idee, &amp;quot;ein besseres Minix als Minix&amp;quot; zu bauen. 1992 stellt er die Version 0.02 mit dem Namen Linux der Internetgemeinde zur Verfügung. &lt;br /&gt;
&lt;br /&gt;
====1994====&lt;br /&gt;
Die Linux Version 1.0 wird freigegeben. Das Linux Fieber beginnt... &lt;br /&gt;
&lt;br /&gt;
====1998====&lt;br /&gt;
Der Kreis der Linux Entwickler und Anwender ist kräftig angeschwollen. KDE 1.0 wird veröffentlicht. Die Zuwachsraten von Linux übertreffen die von Windows NT deutlich. &lt;br /&gt;
&lt;br /&gt;
====1999====&lt;br /&gt;
Der lange erwartete stabile Linux Kernel Version 2.2 wird freigegeben. Namhafte Firmen wie IBM kündigen ihre Unterstützung für Linux an. &lt;br /&gt;
&lt;br /&gt;
====2001====&lt;br /&gt;
Der lange erwartete stabile Linux Kernel Version 2.4 wird freigegeben. USB Unterstützung und eine neue Firewallimplementierung zeichnen ihn aus.&lt;br /&gt;
&lt;br /&gt;
====2003====&lt;br /&gt;
Linux Kernel Version 2.6 wird freigegeben. Am auffälligsten sind Änderungen bei der Modulverwaltung.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Distributionen===&lt;br /&gt;
{| Border=1 Cellpadding=2&lt;br /&gt;
| &lt;br /&gt;
|Url&lt;br /&gt;
|Paketformat&lt;br /&gt;
|-&lt;br /&gt;
|Red Hat&lt;br /&gt;
|www.redhat.com&lt;br /&gt;
|rpm&lt;br /&gt;
|-&lt;br /&gt;
|fedora&lt;br /&gt;
|fedora.redhat.com&lt;br /&gt;
|rpm&lt;br /&gt;
|-&lt;br /&gt;
|CentOS&lt;br /&gt;
|www.centos.org&lt;br /&gt;
|rpm&lt;br /&gt;
|-&lt;br /&gt;
|Suse/openSUSE&lt;br /&gt;
|www.opensuse.org&lt;br /&gt;
|rpm&lt;br /&gt;
|-&lt;br /&gt;
|Debian&lt;br /&gt;
|www.debian.org&lt;br /&gt;
|deb&lt;br /&gt;
|-&lt;br /&gt;
|Ubuntu&lt;br /&gt;
|www.ubuntu.com&lt;br /&gt;
|deb&lt;br /&gt;
|-&lt;br /&gt;
|Mandrake&lt;br /&gt;
|www.linux-mandrake.com&lt;br /&gt;
|rpm&lt;br /&gt;
|-&lt;br /&gt;
|Easy Linux&lt;br /&gt;
|www.easy-linux.de&lt;br /&gt;
|rpm&lt;br /&gt;
|-&lt;br /&gt;
|Turbo&lt;br /&gt;
|www.turbolinux.com&lt;br /&gt;
|rpm&lt;br /&gt;
|-&lt;br /&gt;
|minis&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|toms&lt;br /&gt;
|www.toms.net/rb&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|damn small linux&lt;br /&gt;
|www.damnsmalllinux.org&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|pocket-linux&lt;br /&gt;
|www.pocket-linux.org&lt;br /&gt;
|&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
====Bücher====&lt;br /&gt;
 Titel : Das Linux Anwenderhandbuch und Leitfaden für die Systemverwaltung&lt;br /&gt;
 Autor : Sebastian Hetze, Dirk Hohndel, Olaf Kirch und Martin Müller&lt;br /&gt;
 Verlag: Lunetix&lt;br /&gt;
 ISBN : 3-929764-06-7&lt;br /&gt;
&lt;br /&gt;
 Titel : Linux in a Nutshell&lt;br /&gt;
 Autor : Jessica Perry Hekman und die Mitarbeiter von O'Reilly &amp;amp; Associates&lt;br /&gt;
 Verlag: O'Reilly&lt;br /&gt;
 ISBN : 3-930673-57-6&lt;br /&gt;
&lt;br /&gt;
 Titel : Linux - Wegweiser zur Installation und Konfiguration&lt;br /&gt;
 Autor : Matt Welsh, Lar Kaufman, Matthias Kalle Dallheimer&lt;br /&gt;
 Verlag: O'Reilly&lt;br /&gt;
 ISBN : 3-930673-58-4 (deutsch), 1-56592-469-X (englisch)&lt;br /&gt;
&lt;br /&gt;
 Titel : Linux - Installation, Konfiguration, Anwendung&lt;br /&gt;
 Autor : Michael KoflerMultitasking&lt;br /&gt;
 Verlag: Addison-Wesley&lt;br /&gt;
 ISBN : 3-8273-1475-5&lt;br /&gt;
&lt;br /&gt;
 Titel : Linux - Wegweiser für Netzwerker&lt;br /&gt;
 Autor : Olaf Kirch&lt;br /&gt;
 Verlag: O'Reilly&lt;br /&gt;
 ISBN : 3-930673-18-5&lt;br /&gt;
&lt;br /&gt;
 Titel : TCP/IP-Netzwerk-Administration&lt;br /&gt;
 Autor : Craig Hunt&lt;br /&gt;
 Verlag: O'Reilly&lt;br /&gt;
 ISBN : 3-89721-110-6&lt;br /&gt;
&lt;br /&gt;
 Titel : Essential System Administration&lt;br /&gt;
 Autor : Eleen Frisch&lt;br /&gt;
 Verlag: O'Reilly&lt;br /&gt;
 ISBN : 1-56592-127-5&lt;br /&gt;
&lt;br /&gt;
==Betriebssystem==&lt;br /&gt;
===Was ist ein Betriebssystem?===&lt;br /&gt;
&lt;br /&gt;
Ein Betriebssystem liegt logisch gesehen zwischenAnwendungsprogramm und Hardware.&lt;br /&gt;
&lt;br /&gt;
Es nimmt die Anforderungen der Anwendungsprogramme entgegen und leitet&lt;br /&gt;
diese kontrolliert an die Hardware weiter. Kein Anwendungsprogramm sollte&lt;br /&gt;
direkt auf die Hardware zugreifen können. Den zentralen Zugang schafft einzig&lt;br /&gt;
das Betriebssystem. Somit kann das Betriebssystem unsinnige Anforderungen&lt;br /&gt;
oder Bedienungsfehler abblocken.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Image:Linux.jpg]]&lt;br /&gt;
&lt;br /&gt;
===Aufgaben eines Betriebssystems===&lt;br /&gt;
&lt;br /&gt;
# Verbergen der Komplexität der Maschine vor dem Anwender (Abstraktion)&lt;br /&gt;
# Bereitstellen einer Benutzerschnittstelle (&amp;quot;Kommandointerpreter&amp;quot;, &amp;quot;Shell&amp;quot;)&lt;br /&gt;
# Bereitstellen einer normierten Programmierschnittstelle (API)&lt;br /&gt;
# Verwaltung der Ressourcen der Maschine::&lt;br /&gt;
Hauptspeicher&lt;br /&gt;
Prozessor(en)&lt;br /&gt;
Hintergrundspeicher (Platte, Band, etc.)&lt;br /&gt;
Geräte (Terminal, Drucker, Plotter, etc.)&lt;br /&gt;
Rechenzeit&lt;br /&gt;
Koordination von Prozessen&lt;br /&gt;
&lt;br /&gt;
===Aufbau eines Betriebssystems===&lt;br /&gt;
&lt;br /&gt;
Ein Rechensystem besteht aus Hardware, Systemprogrammen und Anwendungs-&lt;br /&gt;
programmen. Unter einem Betriebssystem wird meist die Summe aus Betriebs-&lt;br /&gt;
systemkern (Kernel) und den wichtigsten Systemprogrammen verstanden. Ein&lt;br /&gt;
minimaler LINUX-Kernel besitzt ungefähr eine Größe von 400 - 800 kByte.&lt;br /&gt;
Weitere wichtige Systemkomponenten benötigen zusätzlich 10 - 100 Mbyte&lt;br /&gt;
Plattenplatz.&lt;br /&gt;
&lt;br /&gt;
Ein Betriebssystem stellt den Rechner als erweiterte Maschine (virtuelle&lt;br /&gt;
Maschine) über definierte Software-Schnittstellen zur Verfügung.&lt;br /&gt;
Das Betriebssystem dient als Betriebsmittelverwalter, der Anforderungen&lt;br /&gt;
befriedigt, protokolliert, abrechnet und vermittelt.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Aufgaben des Betriebssystemkerns:&lt;br /&gt;
&lt;br /&gt;
{| Border=1 Cellpadding=2&lt;br /&gt;
|Prozessverwaltung  (dispatching and scheduling)&lt;br /&gt;
| Mehrere Benutzer können mit mehreren Aktionen gleichzeitig im System arbeiten, ohne sich gegenseitig zu beeinflussen. Damit dies möglich ist,  müssen die Aktionen organisiert, koordiniert und verwaltet werden. Die zu verwaltende Einheit nennt man Prozess.&lt;br /&gt;
|-&lt;br /&gt;
|Speicherverwaltung   (memory management)&lt;br /&gt;
|Zuteilen von Speicherbereichen an laufende Prozesse, Schutz der Speicherbereiche vor unbefugten Zugriffen, bei Speicherengpässen: Auslagern von ganzen (swapping) oder von Teilen (paging) von Prozessen auf die Platte (swap file).&lt;br /&gt;
|-&lt;br /&gt;
|Dateiverwaltung  (file handling)&lt;br /&gt;
|Zuteilung von Plattenplatz für Programme, Benutzer und Systemdienste, Schreiben, Lesen und Strukturieren der Daten auf den Massenspeichern; Durch Bereitstellung einer entsprechenden Schnittstelle (VFS, virtual file system) kann der Kern Dateisysteme unterschiedlichster Art (EXT2, FAT, NFS, HPFS, NTFS, ...) ansprechen.&lt;br /&gt;
|-&lt;br /&gt;
|Geräteverwaltung  (resource management)&lt;br /&gt;
|Der Kern ermöglicht und kontrolliert den Zugriff auf die Hardware. Er steuert die Ein- und Ausgabetätigkeiten der Anwender. An den Kern&lt;br /&gt;
gebunden sind die entsprechenden Gerätetreiber (device driver), die damit eine Kommunikation zwischen Kern und Hardware ermöglichen.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
===Multitasking===&lt;br /&gt;
&lt;br /&gt;
Multitasking bedeutet, dass ein Rechner aus Anwendersicht mehrere Aufgaben&lt;br /&gt;
(Tasks) gleichzeitg übernehmen kann. Das Betriebssystem (OS) unterteilt die&lt;br /&gt;
gleichzeitig anstehenden Aufgaben in Einzelarbeitsschritte (Prozesse) und&lt;br /&gt;
managed durch ein Zeitscheibenverfahren (scheduling) die gleichmäßige&lt;br /&gt;
Abarbeitung der Prozesse.&lt;br /&gt;
&lt;br /&gt;
Es wird unterschieden zwischen:&lt;br /&gt;
&lt;br /&gt;
*non-präamptiven (kooperativen=die Ressourcen werden vom aktiven Prozess freigegeben, bei einem Hänger steht das ganze System)&lt;br /&gt;
&lt;br /&gt;
und&lt;br /&gt;
&lt;br /&gt;
*präamptiven (reinem=der Betriebssystemkern steuert Taskwechsel, indem nach einer festgelegten Zeit vom gerade aktiven Prozess zum nächsten weitergeschaltet wird)&lt;br /&gt;
&lt;br /&gt;
===Mehrprozessorbetrieb===&lt;br /&gt;
&lt;br /&gt;
Bei mehreren Prozessoren und Unterstützung durch das OS&lt;br /&gt;
(NT,Linux,Unix,Novell) können mehrere Tasks auf diese verteilt werden und&lt;br /&gt;
gleichzeitig bearbeitet werden. Nachteilig ist, dass dies nicht oder kaum von&lt;br /&gt;
Anwendungsprogrammen unterstützt wird und es zu Kommunikationsproblemen&lt;br /&gt;
zwischen den einzelnen Tasks kommen kann.&lt;br /&gt;
&lt;br /&gt;
===Arten von von Betriebssystemen===&lt;br /&gt;
&lt;br /&gt;
{|Border=1 Cellpadding=2&lt;br /&gt;
|&lt;br /&gt;
|SingleUser  &lt;br /&gt;
|Multiuser&lt;br /&gt;
|-&lt;br /&gt;
|Single Tasking&lt;br /&gt;
|MS - DOS&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|Multi Tasking&lt;br /&gt;
|Windows 3.x&lt;br /&gt;
|UNIX&lt;br /&gt;
|-&lt;br /&gt;
|&lt;br /&gt;
|Windows 95/98&lt;br /&gt;
|Linux&lt;br /&gt;
|-&lt;br /&gt;
|&lt;br /&gt;
|Windows NT4 ohne Erweiterungen&lt;br /&gt;
|VMS&lt;br /&gt;
|-&lt;br /&gt;
|&lt;br /&gt;
|OS/2 &lt;br /&gt;
|Windows NT mit  Erweiterungen&lt;br /&gt;
|-&lt;br /&gt;
|&lt;br /&gt;
|Apple&lt;br /&gt;
|Windows 2000, XP, 2003&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
===SHELL===&lt;br /&gt;
&lt;br /&gt;
Wenn man mit Linux arbeiten will, kann man nicht direkt mit dem Betriebssystem&lt;br /&gt;
kommunizieren. Man braucht dazu ein Hilfsprogramm, welches die&lt;br /&gt;
Kommandoeingaben ordnungsgemäß an das Betriebssystem weiterleitet. Dieses&lt;br /&gt;
Hilfsprogramm hat den Namen Shell.&lt;br /&gt;
&lt;br /&gt;
Die Shell schirmt den Betriebssystemkern von den Anwendungsprogrammen ab.&lt;br /&gt;
Die unterschiedlichen Shells erfüllen alle dieselbe Aufgabe, sie unterscheiden sich&lt;br /&gt;
allerdings in ihrer Syntax.&lt;br /&gt;
&lt;br /&gt;
==Die Installation im Überblick==&lt;br /&gt;
&lt;br /&gt;
Die Installation von Linux geschieht in folgenden Schritten:&lt;br /&gt;
&lt;br /&gt;
# Analyse (Welche Hardware habe ich? ,Hab ich weitere Betriebsysteme?)&lt;br /&gt;
# Booten des Linux-Kernels. (von CD oder Diskette)&lt;br /&gt;
# Laden einer RAM-Disk (das macht das Installationsprogramm automatisch).&lt;br /&gt;
# Partitionieren der Festplatte (fdisk).&lt;br /&gt;
# Einrichten der Swappartition (mkswap), Formatieren der Festplatte (mkfs).&lt;br /&gt;
# Montieren der Dateisysteme (mount), Aktivieren der Swapbereiche (swapon).&lt;br /&gt;
# Kopieren und Auspacken der Daten vom Installationsmedium auf die Festplatte (die eigentliche Installation). (rpm, dpkg oder tar).&lt;br /&gt;
# Geeignete Wahl der Bootmethode unter Berücksichtigung von Punkt 1 (grub, lilo).&lt;br /&gt;
# Konfiguration des Systems (Netz, Modem etc...).&lt;br /&gt;
&lt;br /&gt;
==Erste Schritte==&lt;br /&gt;
===Anmelden===&lt;br /&gt;
Sie können sich nun mit dem Usernamen und dem Passwort, das sie bei der Installation angelegt haben anmelden!&lt;br /&gt;
[[Image:benutzer.jpg]]&lt;br /&gt;
&lt;br /&gt;
[[Image:passwd.jpg]]&lt;br /&gt;
&lt;br /&gt;
===Terminal öffnen===&lt;br /&gt;
&lt;br /&gt;
Ein Terminal öffnen Sie über das Startmenü:&lt;br /&gt;
&lt;br /&gt;
[[Image:Terminalde.jpg]]&lt;br /&gt;
&lt;br /&gt;
Das geöffnete Terminal sieht dann folgendermaßen aus:&lt;br /&gt;
&lt;br /&gt;
[[Image:Terminalde2.jpg]]&lt;br /&gt;
&lt;br /&gt;
===Sudo===&lt;br /&gt;
Rootrechte erlangen sie über den &amp;quot;Sudo&amp;quot;-Befehl&lt;br /&gt;
 &lt;br /&gt;
''Den nächsten Befehl als root ausführen''&lt;br /&gt;
 xinux@zero:~$ sudo cat /etc/shadow&lt;br /&gt;
 [sudo] password for xinux:&lt;br /&gt;
&lt;br /&gt;
''Eine komplette Sitzung als root starten''&lt;br /&gt;
 xinux@zero:~$ sudo -i&lt;br /&gt;
 [sudo] password for xinux:&lt;br /&gt;
 root@zero:~#&lt;br /&gt;
&lt;br /&gt;
===Virtuelle Konsolen===&lt;br /&gt;
&lt;br /&gt;
In die Virtuelle Konsole gelangen sie über &amp;quot;STRG+ALT+(F1-F6)&amp;quot;.&lt;br /&gt;
Sie funktioniert wie ein ganz normales Terminal, und mit &amp;quot;ALT+F7&amp;quot;&lt;br /&gt;
gelangen sie wieder zurück auf die grafische Benutzeroberfläche&lt;br /&gt;
&lt;br /&gt;
===Abmelden===&lt;br /&gt;
&lt;br /&gt;
Abmelden können Sie sich wieder über das Startmenu unter:&lt;br /&gt;
&lt;br /&gt;
[[Image:Logout.jpg]]&lt;br /&gt;
&lt;br /&gt;
Fals sie nur einzelne Sitzungen in einem der Terminals oder &lt;br /&gt;
den Virtuellen Konsolen Abmelden wollen benutzen sie dazu den Befehl: &amp;quot;exit&amp;quot;&lt;br /&gt;
&lt;br /&gt;
===Herunterfahren===&lt;br /&gt;
&lt;br /&gt;
Das Herunterfahren funktioniert auf dem selben Weg.&lt;br /&gt;
&lt;br /&gt;
Entweder sie Benutzen wieder das Startmenü und benutzen diesmal den &amp;quot;Ausschalten ...&amp;quot; Knopf,&lt;br /&gt;
&lt;br /&gt;
Oder sie geben den äquivalenten &amp;quot;shutdown&amp;quot;-Befehl in einem Terminal bzw. der virtuellen Konsole ein.&lt;br /&gt;
&lt;br /&gt;
Allerdings müssen sie dazu als Administrator angemeldet sein s. &amp;quot;Sudo&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Wenn Sie den &amp;quot;shutdown&amp;quot;-Befehl benutzen wollen muss hinter den Befehl&lt;br /&gt;
&lt;br /&gt;
eine Zeitangabe in Minuten oder das wort &amp;quot;now&amp;quot; für sofortiges Ausschalten hinzugefügt werden:&lt;br /&gt;
&lt;br /&gt;
 xinux@zero:~$ sudo -i&lt;br /&gt;
 root@zero:~# shutdown 60&lt;br /&gt;
 &lt;br /&gt;
 Broadcast message from xinux@zero &lt;br /&gt;
         (/dev/pts/3) at 14:29 ...&lt;br /&gt;
 &lt;br /&gt;
 The system is going down for maintenance in 60 minutes!&lt;br /&gt;
&lt;br /&gt;
Sollten sie den Befehl widerrufen wollen dann drücken sie &amp;quot;STRG+C&amp;quot;,&lt;br /&gt;
&lt;br /&gt;
in dem Terminal in dem der shutdown Befehl gestartet wurde,&lt;br /&gt;
&lt;br /&gt;
oder geben sie den &amp;quot;shutdown&amp;quot;-Befehl zusammen mit der Abbruchoption &amp;quot;-c&amp;quot; in einem anderen Terminal ein:&lt;br /&gt;
&lt;br /&gt;
 root@zero:~# shutdown -c&lt;br /&gt;
&lt;br /&gt;
 shutdown: Shutdown cancelled&lt;br /&gt;
 root@zero:~# &lt;br /&gt;
&lt;br /&gt;
Wenn Sie den Rechner Neustarten möchten gibt es dazu die Option &amp;quot;-r&amp;quot; für den &amp;quot;shutdown&amp;quot;-Befehl&lt;br /&gt;
&lt;br /&gt;
oder den &amp;quot;reboot&amp;quot;-Befehl die beide auch als root ausgeführt werden müssen:&lt;br /&gt;
&lt;br /&gt;
 xinux@zero:~$ sudo -i&lt;br /&gt;
 [sudo] password for xinux: &lt;br /&gt;
 root@zero:~# shutdown -r now&lt;br /&gt;
&lt;br /&gt;
 root@zero:~# reboot&lt;br /&gt;
&lt;br /&gt;
===&amp;quot;man&amp;quot;===&lt;br /&gt;
&lt;br /&gt;
Programm zum Einsehen der Online-Manuals&lt;br /&gt;
&lt;br /&gt;
Die Manuals sind in folgende Sektionen unterteilt:&lt;br /&gt;
# Ausführbare Programme oder Shellbefehle&lt;br /&gt;
# Systemaufrufe (Kernelfunktionen)&lt;br /&gt;
# Bibliotheksaufrufe (Funktionen in System-Bibliotheken)&lt;br /&gt;
# Spezielle Dateien (gewöhnlich in /dev)&lt;br /&gt;
# Dateiformate und Konventionen, z. B. /etc/passwd&lt;br /&gt;
# Spiele&lt;br /&gt;
# Makropakete und Konventionen, z. B. man(7), groff(7)&lt;br /&gt;
# Systemadministrationsbefehle (in der Regel nur für root)&lt;br /&gt;
# Kernelroutinen [Nicht Standard]&lt;br /&gt;
&lt;br /&gt;
Aufruf eines Manuals erfolgt durch ''man kommando''&lt;br /&gt;
Beendet wird durch Drücken des Buchstabens q&lt;br /&gt;
Gesucht wird vorwärts durch Eingabe eines /suchausdruck&lt;br /&gt;
Gesucht wird rückwärts durch Eingabe eines ?suchausdruck&lt;br /&gt;
&lt;br /&gt;
Beispiele:&lt;br /&gt;
&lt;br /&gt;
      man passwd        Anschauen der Manualseite zum Programm passwd&lt;br /&gt;
      man 5 passwd      Anschauen der Manualseite zur Datei /etc/passwd&lt;br /&gt;
      man -a passwd     Anschauen aller Manualseiten zu passwd&lt;br /&gt;
      man -k passwd     Durchsucht die Kurzbeschreibungen der Manualseite&lt;br /&gt;
                        nach passwd und gibt alle Treffer aus&lt;br /&gt;
      man -f passwd      Gibt alle gefunden Kurzbescheibungen zu passwd aus&lt;br /&gt;
      man -L en passwd Gibt englische Manualseiten aus&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Was geht vor auf meinem System? (date,who)===&lt;br /&gt;
&lt;br /&gt;
Das Kommando date dient zur Abfrage von Datum und Uhrzeit.&lt;br /&gt;
&lt;br /&gt;
 xinux@zero:~ &amp;gt; date&lt;br /&gt;
 Fre Mär 16 16:35:03 CET 2001&lt;br /&gt;
&lt;br /&gt;
oder auch Anzeige der Grennwich Zeit:&lt;br /&gt;
&lt;br /&gt;
 xinux@zero:~ &amp;gt; date -u&lt;br /&gt;
 Fre Mär 16 15:35:34 UTC 2001&lt;br /&gt;
&lt;br /&gt;
 xinux@zero:~ &amp;gt; date -u &amp;quot;+%X&amp;quot;&lt;br /&gt;
 15:37:19&lt;br /&gt;
&lt;br /&gt;
 xinux@zero:~ &amp;gt; date -u &amp;quot;+%x&amp;quot;&lt;br /&gt;
 01/15/02&lt;br /&gt;
&lt;br /&gt;
who zeigt alle angemeldeten Benutzer an&lt;br /&gt;
&lt;br /&gt;
 thomas@cardassia:~ &amp;gt; who&lt;br /&gt;
 thomas             tty1 Feb 27 16:39&lt;br /&gt;
 thomas             tty2 Mar 2 17:08&lt;br /&gt;
 tina               tty6 Mar 16 16:38&lt;br /&gt;
&lt;br /&gt;
Mit `who --help' bekommen Sie mehr Informationen.&lt;br /&gt;
&lt;br /&gt;
 thomas@cardassia:~ &amp;gt; who --help&lt;br /&gt;
&lt;br /&gt;
Benutzung: who [OPTION]... [ DATEI | ARG1 ARG2 ]&lt;br /&gt;
&lt;br /&gt;
 -H, --heading             print line of column headings&lt;br /&gt;
 -i, -u, --idle            add user idle time as HOURS:MINUTES, . or old&lt;br /&gt;
 -l, --lookup              attempt to canonicalize hostnames via DNS&lt;br /&gt;
 -m                        only hostname and user associated with stdin&lt;br /&gt;
 -q, --count               all login names and number of users logged on&lt;br /&gt;
 -s                        (ignored)&lt;br /&gt;
 -T, -w, --mesg            add user's message status as +, - or ?&lt;br /&gt;
     --message             same as -T&lt;br /&gt;
     --writable            same as -T&lt;br /&gt;
     --help                display this help and exit&lt;br /&gt;
     --version             output version information and exit&lt;br /&gt;
&lt;br /&gt;
==Das UNIX-Dateisystem==&lt;br /&gt;
===Verzeichnisbaum===&lt;br /&gt;
&lt;br /&gt;
[[Image:vztree.jpg]]&lt;br /&gt;
&lt;br /&gt;
Das Betriebssystem UNIX besitzt ein hierarchisches Dateisystem. Es besteht aus:&lt;br /&gt;
* Dateien (Files)&lt;br /&gt;
Dateien speichern Informationen (Text, Bilder, Sound, Videos, Programme) und&lt;br /&gt;
werden über den Dateinamen angesprochen.&lt;br /&gt;
&lt;br /&gt;
* Verzeichnissen (Directories, Kataloge)&lt;br /&gt;
Verzeichnisse besitzen ebenfalls einen Namen und dienen zur Ordnung des&lt;br /&gt;
Dateisystems. Ein Verzeichnis kann Dateien und Unterverzeichnisse&lt;br /&gt;
(Subdirectories) enthalten. Das oberste Verzeichnis im Dateisystem heisst&lt;br /&gt;
Rootverzeichnis oder kurz Root und wird durch / (sprich: slash)&lt;br /&gt;
gekennzeichnet.&lt;br /&gt;
&lt;br /&gt;
Im Gegensatz zu Windows kennt UNIX keine Laufwerke.&lt;br /&gt;
Das obige Bild zeigt ein typisches UNIX-Dateisystem.&lt;br /&gt;
Unterhalb des Rootverzeichnisses befinden sich eine Vielzahl vonVerzeichnissen.&lt;br /&gt;
&lt;br /&gt;
===Wichtige Verzeichnisse===&lt;br /&gt;
&lt;br /&gt;
• '''Homeverzeichnis'''&lt;br /&gt;
&lt;br /&gt;
das Verzeichnis, in dem man sich unmittelbar nach dem Anmelden befindet. Das&lt;br /&gt;
Homeverzeichnis wird vom Systemverwalter eingerichtet; jeder Anwender&lt;br /&gt;
besitzt ein festes Homeverzeichnis. z.B. /home/hans&lt;br /&gt;
&lt;br /&gt;
~ (Tilde) bzw. $HOME (Shellvariable) kennzeichnen das Homeverzeichnis.&lt;br /&gt;
&lt;br /&gt;
• '''Aktuelles Verzeichnis'''&lt;br /&gt;
&lt;br /&gt;
Verzeichnis, in dem man sich aktuell befindet.&lt;br /&gt;
Das aktuelle Verzeichnis wird mit dem Befehl cd (change directory) oder per&lt;br /&gt;
Mausklick verändert.&lt;br /&gt;
Ein einfacher Punkt . kennzeichnet das aktuelle Verzeichnis.&lt;br /&gt;
&lt;br /&gt;
• '''Elternverzeichnis'''&lt;br /&gt;
&lt;br /&gt;
Verzeichnis unmittelbar oberhalb des aktuellen Verzeichnisses.&lt;br /&gt;
Jedes Verzeichnis ausser / besitzt genau ein Elternverzeichnis.&lt;br /&gt;
Zwei Punkte .. kennzeichnen das Elternverzeichnis (abhängig vom aktuellen&lt;br /&gt;
VZ).&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Absoluter Pfadname:===&lt;br /&gt;
&lt;br /&gt;
Beschreibt ausgehend vom Rootverzeichnis den Weg zum Zielverzeichnis oder zur&lt;br /&gt;
Zieldatei. (Welche Verzeichnisse müssen ausgehend von / durchlaufen werden, um&lt;br /&gt;
zum Ziel zu kommen?) Ein absoluter Pfadname beginnt immer mit / .&lt;br /&gt;
&lt;br /&gt;
===Relativer Pfadname:===&lt;br /&gt;
&lt;br /&gt;
Beschreibt ausgehend vom aktuellen Verzeichnis den Weg zum Zielverzeichnis&lt;br /&gt;
oder zur Zieldatei; ein relativer Pfadname beginnt nicht mit / .&lt;br /&gt;
/home/suxer&lt;br /&gt;
absoluter Pfadname für das Verzeichnis sub1 im Homeverzeichnis von suxer&lt;br /&gt;
&lt;br /&gt;
===Verzeichnisstruktur===&lt;br /&gt;
&lt;br /&gt;
 /bin         Kommandos die beim starten benötigt werden (Zugriff hat jeder)&lt;br /&gt;
 /sbin        Wichtige System-Programme (In der Regel root vorberhalten)&lt;br /&gt;
 /boot        Hier findet man die Dateien des Bootmanagers und des Kernel.&lt;br /&gt;
 /dev         In diesem Verzeichnis stehen die Gerätedateien (Devices),&lt;br /&gt;
 /home        Alle Heimatverzeichnisse der Nutzer findet man hier.&lt;br /&gt;
 /lib         Beim Systemstart benötigten Bibliotheken und Modules stehen hier.&lt;br /&gt;
 /mnt         Mountpunkt für temporäre Partitionen&lt;br /&gt;
 /opt         Software, die nicht Installationsumfang von Linux gehören.&lt;br /&gt;
 /root        Heimatverzeichnis des Administrators.&lt;br /&gt;
 /tmp         Temporäre Dateien können hier abgelegt werden&lt;br /&gt;
 /usr         statische Dateien (kann read-only gemountet sein)&lt;br /&gt;
 /var         variable Dateien (muss beschreibar sein )&lt;br /&gt;
 /etc         Konfiguartionsdateien und Startscripte&lt;br /&gt;
 /proc        Virtuelles Dateisystem -&amp;gt; repräsentiert den Kernel&lt;br /&gt;
&lt;br /&gt;
===Unterverzeichnisse von /usr===&lt;br /&gt;
&lt;br /&gt;
 sbin         Programme für root die beim Start nicht benötigt werden&lt;br /&gt;
 bin          Programme für alle die beim Start nicht benötigt werden&lt;br /&gt;
 X11R6        Dateien des X-Window-Sytems&lt;br /&gt;
 bin          Ausführbare Programme&lt;br /&gt;
 doc          Dokumentationen&lt;br /&gt;
 etc          Konfigurationsdateien&lt;br /&gt;
 games        Spiele&lt;br /&gt;
 include      Headerdateien für C-Programme&lt;br /&gt;
 local        Pakete die nicht zur Distribution gehören ähnlich /opt&lt;br /&gt;
 share        Pakete die von mehreren Paketen genutzt werden&lt;br /&gt;
 share/man    Die Manualpages&lt;br /&gt;
 share/info   Seiten des Infosystems&lt;br /&gt;
 share/doc    Dokumentationen&lt;br /&gt;
 src          Sources von Programmen (Kernel und andere)&lt;br /&gt;
&lt;br /&gt;
===Unterverzeichnisse von /var===&lt;br /&gt;
&lt;br /&gt;
 cache        Zwischenspreicher für Progammes&lt;br /&gt;
 games        Variable Daten der Games (Scores etc...)&lt;br /&gt;
 lock         Sperrdateien&lt;br /&gt;
 log          Die Logdateien (wichtiges Verzeichnis für Admins)&lt;br /&gt;
 mail         Das Mailsystem&lt;br /&gt;
 run          Dateien zu laufemdem Prozessen&lt;br /&gt;
 spool        Spooldateien (z.B. für das Drucksystem&lt;br /&gt;
 state        Statusinfos&lt;br /&gt;
 tmp          Wie /tmp eventuell nicht auf root Partion&lt;br /&gt;
&lt;br /&gt;
==Einfache Komandos==&lt;br /&gt;
===cd: Wechseln des Arbeitsverzeichnis===&lt;br /&gt;
&lt;br /&gt;
Um festzustellen in welchem Verzeichnis man sich befindet, sollte man den&lt;br /&gt;
Befehl &amp;quot;pwd&amp;quot; benutzen,&lt;br /&gt;
&lt;br /&gt;
und mit dem Befehl &amp;quot;cd&amp;quot; kann man zwischen den Verzeichnissen wechseln:&lt;br /&gt;
&lt;br /&gt;
Wechsele ins homeverzeichnis von Xinux&lt;br /&gt;
&lt;br /&gt;
 xinux@zero:~$ cd /home/xinux/&lt;br /&gt;
 xinux@zero:~$ pwd&lt;br /&gt;
 /home/xinux&lt;br /&gt;
&lt;br /&gt;
cd ~ -&amp;gt; wechsele ins jeweilige Homeverzeichnis&lt;br /&gt;
&lt;br /&gt;
cd .. -&amp;gt; wechsele ein Verzeichnis höher&lt;br /&gt;
&lt;br /&gt;
cd ../verzeichnis -&amp;gt; wechsele in eine paralleles Verzeichnis &amp;lt;- (ist eine relative Pfadangabe !)&lt;br /&gt;
&lt;br /&gt;
cd - -&amp;gt; wechsele in das Verzeichnis, in dem vorher gearbeitet wurde.&lt;br /&gt;
&lt;br /&gt;
Mit cd / wechselt man in das Wurzelverzeichnis.&lt;br /&gt;
&lt;br /&gt;
 xinux@zero:/var/log$ cd /&lt;br /&gt;
 xinux@zero:/$ pwd&lt;br /&gt;
 /&lt;br /&gt;
&lt;br /&gt;
===ls: Listing===&lt;br /&gt;
&lt;br /&gt;
Den Inhalt von Verzeichnissen kann man sich mit dem Befehl &amp;quot;ls&amp;quot; anzeigen lassen&lt;br /&gt;
wobei &amp;quot;ls&amp;quot; eine Vielzahl von Optionen besitzt:&lt;br /&gt;
&lt;br /&gt;
 ls                                  standard&lt;br /&gt;
 ls -l                               langes listing&lt;br /&gt;
 ls -a                               alle Dateien&lt;br /&gt;
 ls -i                               mit Inode&lt;br /&gt;
 ls -h                               gut lesbare Dateigröße&lt;br /&gt;
 ls -d                               Verzechnis wird angezeigt, nicht der Inhalt&lt;br /&gt;
 ls -L                               sortiert nach Größe&lt;br /&gt;
 ls -t                               sortiert nach Datum&lt;br /&gt;
 ls -F                               mit nützlichem Anhang&lt;br /&gt;
&lt;br /&gt;
 xinux@zero:/$ ls -l /var/log/messages&lt;br /&gt;
 -rw-r----- 1 syslog adm 2296 2009-06-16 10:05 /var/log/messages&lt;br /&gt;
&lt;br /&gt;
===more: Seitenweises Anzeigen von Seiten===&lt;br /&gt;
 root@zero:~# more /var/log/messages&lt;br /&gt;
 ...&lt;br /&gt;
&lt;br /&gt;
===head: erste Zeilen anzeigen===&lt;br /&gt;
Erste 10 Zeilen anzeigen&lt;br /&gt;
 root@zero:~# head /var/log/messages&lt;br /&gt;
 Jun 15 12:37:08 zero syslogd 1.5.0#5ubuntu3: restart.&lt;br /&gt;
 Jun 15 12:38:43 zero kernel: [  830.065036] mtrr: your processor doesn't support write-combining&lt;br /&gt;
 Jun 15 12:46:05 zero pulseaudio[4817]: pid.c: Stale PID file, overwriting.&lt;br /&gt;
 Jun 15 13:05:24 zero -- MARK --&lt;br /&gt;
 ...&lt;br /&gt;
&lt;br /&gt;
Erste zwei Zeilen anzeigen&lt;br /&gt;
 root@zero:~# head -n 2 /var/log/messages&lt;br /&gt;
 Jun 15 12:37:08 zero syslogd 1.5.0#5ubuntu3: restart.&lt;br /&gt;
 Jun 15 12:38:43 zero kernel: [  830.065036] mtrr: your processor doesn't support write-combining&lt;br /&gt;
&lt;br /&gt;
===tail: letzte Zeilen anzeigen===&lt;br /&gt;
 &lt;br /&gt;
 root@zero:~# tail /var/log/syslog&lt;br /&gt;
 ...&lt;br /&gt;
 Jun 19 11:19:35 zero -- MARK --&lt;br /&gt;
 Jun 19 11:39:35 zero -- MARK --&lt;br /&gt;
 Jun 19 11:59:36 zero -- MARK --&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Letze 5 Zeilen anzeigen&lt;br /&gt;
 root@zero:~# tail -n 5 /var/log/auth.log&lt;br /&gt;
 Jun 18 14:30:01 zero CRON[12040]: pam_unix(cron:session): session closed for user root&lt;br /&gt;
 Jun 18 14:39:01 zero CRON[12191]: pam_unix(cron:session): session opened for user root by (uid=0)&lt;br /&gt;
 Jun 18 14:39:01 zero CRON[12191]: pam_unix(cron:session): session closed for user root&lt;br /&gt;
 Jun 18 14:40:01 zero CRON[12237]: pam_unix(cron:session): session opened for user root by (uid=0)&lt;br /&gt;
 Jun 18 14:40:01 zero CRON[12237]: pam_unix(cron:session): session closed for user root&lt;br /&gt;
&lt;br /&gt;
Letze Zeilen anzeigen und fortlaufend aktualisieren&lt;br /&gt;
 root@zero:~# tail -f /var/log/syslog&lt;br /&gt;
 ...&lt;br /&gt;
&lt;br /&gt;
===mkdir: Ein neues Verzeichnis erstellen===&lt;br /&gt;
&lt;br /&gt;
 mkdir        verzeichnis&lt;br /&gt;
Erstellt ein Verzeichnis im working directory (wd)&lt;br /&gt;
&lt;br /&gt;
 mkdir  -p    ver1/ver2&lt;br /&gt;
Erstellt ein Verzeichnis ver2 unterhalb von ver1&lt;br /&gt;
wenn ver1 nicht existiert wird es erstellt&lt;br /&gt;
&lt;br /&gt;
 mkdir -m 753 ver1&lt;br /&gt;
Es wird das Verzeichnis ver1 erstellt mit der mask 753&lt;br /&gt;
&lt;br /&gt;
 mkdir -v     ver1&lt;br /&gt;
Geschwätzige Ausgabe :)&lt;br /&gt;
&lt;br /&gt;
===Zum Löschen von leeren Verzeichnissen wird rmdir benutzt===&lt;br /&gt;
&lt;br /&gt;
 rmdir           ver1&lt;br /&gt;
Löscht das leere Verzeichnis ver1&lt;br /&gt;
&lt;br /&gt;
 rmdir -v        ver1&lt;br /&gt;
Löscht das leere Verzeichnis ver1 und ist geschwätzig&lt;br /&gt;
&lt;br /&gt;
 rmdir -p        /ver1/ver2/ver3&lt;br /&gt;
Löscht das Verzeichnis ver3; wenn dadurch ver2 ein leeres&lt;br /&gt;
Verzeichnis wird, wird dieses auch gelöscht , wenn ver1&lt;br /&gt;
dadurch ein leeres Verzeichnis wird, wird auch dieses gelöscht.&lt;br /&gt;
&lt;br /&gt;
===touch Verändern des Zeitstempels===&lt;br /&gt;
&lt;br /&gt;
Mit touch können wir eine neue leere Datei erzeugen (das ist nicht der eigentliche&lt;br /&gt;
Zweck von touch, eigentlich wird der Zeitstempel geändert)&lt;br /&gt;
&lt;br /&gt;
 touch            dateiname&lt;br /&gt;
&lt;br /&gt;
===Kopieren=== &lt;br /&gt;
cp ist das Kommando um Dateien zu kopieren &lt;br /&gt;
&lt;br /&gt;
Eine Kopie von dat1 mit dem Namen dat2 erstellen:&lt;br /&gt;
&lt;br /&gt;
 xinux@zero:~$ cp dat1 dat2&lt;br /&gt;
&lt;br /&gt;
Eine Kopie von dat1 ins Verzeichnis ver2 erstellen:&lt;br /&gt;
&lt;br /&gt;
 xinux@zero:~$ cp dat1 ver2/&lt;br /&gt;
 &lt;br /&gt;
Eine Kopie erstellen mit ausführlicher Anzeige:&lt;br /&gt;
&lt;br /&gt;
 xinux@zero:~$ cp -v dat1 dat2&lt;br /&gt;
 `dat1' -&amp;gt; `dat2'&lt;br /&gt;
&lt;br /&gt;
Eine Kopie erstellen mit Rückfrage fals etwas überschrieben wird:&lt;br /&gt;
&lt;br /&gt;
 xinux@zero:~$ cp -i dat1 dat2&lt;br /&gt;
 cp: overwrite `dat2'?&lt;br /&gt;
&lt;br /&gt;
Eine Kopie erstellen und die Rückfrage überbrücken:&lt;br /&gt;
&lt;br /&gt;
 xinux@zero:~$ cp -f dat1 dat2&lt;br /&gt;
&lt;br /&gt;
Eine Kopie von dat1 ins Verzeichnis ver2 erstellen fals keine neuere Version von dat1 vorliegt:&lt;br /&gt;
&lt;br /&gt;
 xinux@zero:~$ cp -u dat1 ver2/&lt;br /&gt;
&lt;br /&gt;
Eine Kopie erstellen fals ver2 auf dem selben Dateisystem wie dat1 liegt:&lt;br /&gt;
&lt;br /&gt;
 xinux@zero:~$ cp -x dat1 ver2/&lt;br /&gt;
&lt;br /&gt;
Eine Kopie von ver1, die als ver2 oder unter ver2 als ver1 gespeichert wird erstellen:&lt;br /&gt;
&lt;br /&gt;
 xinux@zero:~$ cp -r ver1/ ver2/&lt;br /&gt;
&lt;br /&gt;
Eine Kopie von einer Datei erstellen und ihre Attribute beibehalten:&lt;br /&gt;
&lt;br /&gt;
 xinux@zero:~$ cp -p sux1 sux2&lt;br /&gt;
&lt;br /&gt;
Eine Kopie erstellen bei der die Links erhalten bleiben:&lt;br /&gt;
&lt;br /&gt;
 xinux@zero:~$ cp -r ver1/ ver2/&lt;br /&gt;
&lt;br /&gt;
Eine Kopie erstellen zum Archivieren (-dpr):&lt;br /&gt;
&lt;br /&gt;
 xinux@zero:~$ cp -a ver1/ ver2/&lt;br /&gt;
&lt;br /&gt;
===rm: Löschen einer Datei===&lt;br /&gt;
&lt;br /&gt;
Um Dateien zu löschen, brauchen wir das Kommando &amp;quot;rm&amp;quot;:&lt;br /&gt;
&lt;br /&gt;
 rm               dat1        dat1 wird gelöscht&lt;br /&gt;
 rm         -i    dat1        dat1 wird nach Bestätigung gelöscht&lt;br /&gt;
 rm         -f    dat1        dat1 wird ohne Rückfragen gelöscht&lt;br /&gt;
 rm         -v    dat1        dat1 wird glöscht (geschwätzige Ausgabe)&lt;br /&gt;
 rm         -r    ver1        Löschen von nicht leeren Verzeichnissen&lt;br /&gt;
                              Achtung !!! Als root kann man sich damit Teile&lt;br /&gt;
                              oder sogar den gesamten Verzeichnisbaum&lt;br /&gt;
                              absägen !!!&lt;br /&gt;
&lt;br /&gt;
===mv: Verschieben===&lt;br /&gt;
&lt;br /&gt;
Mit dem Befehl &amp;quot;mv&amp;quot; werden Daten verschoben, folgendes gilt:&lt;br /&gt;
&lt;br /&gt;
 mv          dat1 dat2         &lt;br /&gt;
Die Datei dat1 wird in dat2 umbenannt&lt;br /&gt;
 mv          dat1 /ver1        &lt;br /&gt;
Die Datei dat1 wird nach /ver1 verschoben&lt;br /&gt;
&lt;br /&gt;
Die Parameter und ihre Bedeutung:&lt;br /&gt;
&lt;br /&gt;
      -i                      wenn eine Datei exisitiert wird vor dem&lt;br /&gt;
                              Überschreiben nachgefragt&lt;br /&gt;
      -v                      verbose (geschwätzig)&lt;br /&gt;
      -u                      nur neuere Daten werden bei Bedarf überschrieben&lt;br /&gt;
      -b                      wenn überschrieben werden soll, wird ein Backup&lt;br /&gt;
                              erstellt&lt;br /&gt;
      -S ENDUNG               das Backup bekommt die Endung ENDUNG&lt;br /&gt;
&lt;br /&gt;
===su Benutzer wechseln===&lt;br /&gt;
&lt;br /&gt;
 su -             &lt;br /&gt;
Wechsel zum Rootaccount, wie wenn dieser sich neu anmelden würde. (Bsp: su -)&lt;br /&gt;
&lt;br /&gt;
 su Benutzernamen &lt;br /&gt;
Wechsel der Identität zu Benutzer (gegebenenfalls Passwortabfrage)&lt;br /&gt;
&lt;br /&gt;
 su -c Kommando   &lt;br /&gt;
Kommando wird als rootaccount ausgeführt&lt;br /&gt;
&lt;br /&gt;
==Der Standard Editor vi==&lt;br /&gt;
Der vi ist der Standardeditor in der Unixwelt. Er ist in jedem Unix-Derivat&lt;br /&gt;
enthalten.&lt;br /&gt;
Der Editor hat zwar den schlechten Ruf umständlich zu bedienen zu sein, ist&lt;br /&gt;
jedoch sehr leistungsfähig und systemübergreifend verfügbar. Beim vi handelt es&lt;br /&gt;
sich um einen rein textorientierten Editor, der mittels eigener Kommandos&lt;br /&gt;
gesteuert wird.&lt;br /&gt;
&lt;br /&gt;
Der Editor VIM ist eine weitere Verbesserung von VI und leichter zu bedienen.&lt;br /&gt;
Und unter Ubuntu/Debian mit &amp;quot;apt-get install vim&amp;quot; zu installieren.&lt;br /&gt;
&lt;br /&gt;
===Starten des Editors:===&lt;br /&gt;
&lt;br /&gt;
Der Editorstart erfolgt einfach durch die Eingabe des Kommandos vi mit dem&lt;br /&gt;
Dateinamen der zu editierenden Datei als Parameter.&lt;br /&gt;
Beispiel:        &lt;br /&gt;
 vi sux.txt&lt;br /&gt;
&lt;br /&gt;
===Die Betriebsmodi des vi:===&lt;br /&gt;
&lt;br /&gt;
Ein Umstand, der dem vi den Ruf der komplizierten Bedienbarkeit zugetragen hat,&lt;br /&gt;
sind die unterschiedlichen Betriebsmodi des Editors. Genauer gesagt verfügt der&lt;br /&gt;
vi über drei Betriebsmodi:&lt;br /&gt;
&lt;br /&gt;
====Kommandomodus:====&lt;br /&gt;
&lt;br /&gt;
Innerhalb dieses Modus werden die eingegebenen Zeichen direkt als Befehle des&lt;br /&gt;
Editors interpretiert und ausgeführt. Dabei gibt es weder ein Bereitschaftszeichen&lt;br /&gt;
(Prompt) noch ein Echo (Ausgabe). Der Kommandomodus ist der Modus, in dem&lt;br /&gt;
sich der vi direkt nach seinem Start befindet.&lt;br /&gt;
&lt;br /&gt;
====Zeilenmodus oder Exmodus:====&lt;br /&gt;
&lt;br /&gt;
Dieser Modus ist der einzige Modus mit einem eigenen Bereitschaftszeichen,&lt;br /&gt;
nämlich dem Doppelpunkt (:). Das Prompt wird ebenso wie die Befehlsausgaben&lt;br /&gt;
in der Statuszeile angezeigt.&lt;br /&gt;
&lt;br /&gt;
====Eingabemodus:====&lt;br /&gt;
&lt;br /&gt;
Der Eingabemodus ist derjenige, in welchem der zu bearbeitende Text bearbeitet&lt;br /&gt;
werden kann. Alle hier eingegebenen Zeichen werden als Text für die aktuelle&lt;br /&gt;
Datei interpretiert. Zwischen den unterschiedlichen Modi kann jederzeit&lt;br /&gt;
gewechselt werden. Von Kommandomodus gelangen Sie durch mehere Wege in&lt;br /&gt;
den Eingabemodus. Man kann durch folgende Aktionen wechslen&lt;br /&gt;
&lt;br /&gt;
{| border=1 cellpadding=2&lt;br /&gt;
|i&lt;br /&gt;
|Text vor der aktuellen Cursorposition einfügen&lt;br /&gt;
|-&lt;br /&gt;
|I&lt;br /&gt;
|Text am Zeilenanfang einfügen&lt;br /&gt;
|-&lt;br /&gt;
|a&lt;br /&gt;
|Text hinter der aktuellen Cursorposition einfügen&lt;br /&gt;
|-&lt;br /&gt;
|A&lt;br /&gt;
|Text am Zeilenende einfügen&lt;br /&gt;
|-&lt;br /&gt;
|o&lt;br /&gt;
|Unterhalb der aktuellen Zeile eine neue Zeile einfügen&lt;br /&gt;
|-&lt;br /&gt;
|O&lt;br /&gt;
|Oberhalb der aktuellen Zeile eine neue Zeile einfügen&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Durch das Drücken der ESC - Taste gelangt man in den Kommandomodus zurück.&lt;br /&gt;
&lt;br /&gt;
Im Kommandomodus können Sie durch den Text navigieren und auch den Text&lt;br /&gt;
selbst bearbeiten, z.B ausschneiden, kopieren usw. Dazu sind einige Kommandos&lt;br /&gt;
nötig, von denen die wichtigsten im Folgenden erläutert werden:&lt;br /&gt;
&lt;br /&gt;
 xinux@zero:/$ vi iwas.txt&lt;br /&gt;
&lt;br /&gt;
[[Image:vim.jpg]]&lt;br /&gt;
&lt;br /&gt;
===Benutzen des Kommandomodus===&lt;br /&gt;
====Steuerung des Cursors durch den Text====&lt;br /&gt;
&lt;br /&gt;
Mittels folgender Kommandos bewegt sich der Cursor durch den Text:&lt;br /&gt;
&lt;br /&gt;
{| border=1 cellpadding=2&lt;br /&gt;
|h&lt;br /&gt;
|Cursor ein Zeichen nach links&lt;br /&gt;
|-&lt;br /&gt;
|l&lt;br /&gt;
|Cursor ein Zeichen nach rechts&lt;br /&gt;
|-&lt;br /&gt;
|k&lt;br /&gt;
|Cursor eine Zeile nach oben&lt;br /&gt;
|-&lt;br /&gt;
|j&lt;br /&gt;
|Cursor eine Zeile nach unten&lt;br /&gt;
|-&lt;br /&gt;
|w&lt;br /&gt;
|Cursor ein Wort nach rechts&lt;br /&gt;
|-&lt;br /&gt;
|b&lt;br /&gt;
|Cursor ein Wort nach links&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Alle diese Kommandos können mit einem vorgestellten Wiederholungsfaktor&lt;br /&gt;
arbeiten. Der Befehl 3w verschiebt demnach den Cursor um 3 Wörter nach rechts.&lt;br /&gt;
&lt;br /&gt;
====Angaben zur Positionierung====&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{| border=1 cellpadding=2&lt;br /&gt;
|STRG+U&lt;br /&gt;
|1⁄2 Bildschirmseite nach oben&lt;br /&gt;
|-&lt;br /&gt;
|STRG+D&lt;br /&gt;
|1⁄2 Bildschirmseite nach unten&lt;br /&gt;
|-&lt;br /&gt;
|STRG+B&lt;br /&gt;
|1 Bildschirmseite nach oben&lt;br /&gt;
|-&lt;br /&gt;
|STRG+F&lt;br /&gt;
|1 Bildschirmseite nach unten&lt;br /&gt;
|-&lt;br /&gt;
|/Ausdruck&lt;br /&gt;
|Sucht den Ausdruck (vorwärts) Weitersuchen mit n , N&lt;br /&gt;
|-&lt;br /&gt;
|?Ausdruck&lt;br /&gt;
|Sucht den Ausdurck (rückwärts) Weitersuchen mit n , N&lt;br /&gt;
|-&lt;br /&gt;
|0&lt;br /&gt;
|Zeilenanfang&lt;br /&gt;
|-&lt;br /&gt;
|$&lt;br /&gt;
|Zeilenende&lt;br /&gt;
|-&lt;br /&gt;
|w&lt;br /&gt;
|Nächstes Wort&lt;br /&gt;
|-&lt;br /&gt;
|b&lt;br /&gt;
|Vorheriges Wort&lt;br /&gt;
|-&lt;br /&gt;
|fc&lt;br /&gt;
|Auf das Zeichen c springen. c steht für ein beliebiges Zeichen&lt;br /&gt;
|-&lt;br /&gt;
|G&lt;br /&gt;
|Letzte Zeile der Datei&lt;br /&gt;
|-&lt;br /&gt;
|ng&lt;br /&gt;
|n-te Zeile der Datei&lt;br /&gt;
|-&lt;br /&gt;
|H&lt;br /&gt;
|Anfang der Bildschirmseite&lt;br /&gt;
|-&lt;br /&gt;
|L&lt;br /&gt;
|Ende der Bildschirmseite&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
====Befehle zur Textbearbeitung -&amp;gt; Was soll geschehen====&lt;br /&gt;
&lt;br /&gt;
{| Border=1 Cellpadding=2&lt;br /&gt;
|x&lt;br /&gt;
|Löscht Zeichen&lt;br /&gt;
|-&lt;br /&gt;
|d&lt;br /&gt;
|Löschen und in den Puffer laden&lt;br /&gt;
|-&lt;br /&gt;
|c&lt;br /&gt;
|Ändern&lt;br /&gt;
|-&lt;br /&gt;
|y&lt;br /&gt;
|In den Puffer laden&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
====Weitere wichtige Befehle:====&lt;br /&gt;
&lt;br /&gt;
{| Border=1 Cellpadding=2&lt;br /&gt;
|p&lt;br /&gt;
|Aus dem Puffer einfügen&lt;br /&gt;
|-&lt;br /&gt;
|u&lt;br /&gt;
|Undo, macht den letzten Befehl rückgängig&lt;br /&gt;
|-&lt;br /&gt;
|STRG+R&lt;br /&gt;
|Redo, macht den letzten Undo rückgängig&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
===Zeilen- oder Exmodus===&lt;br /&gt;
&lt;br /&gt;
Wie schon erwähnt wird der Zeilen oder Exmodus durch einen : eingeleitet.&lt;br /&gt;
Es folgen einige Beispiele.&lt;br /&gt;
&lt;br /&gt;
Befehle zum Speichern und Beenden:&lt;br /&gt;
&lt;br /&gt;
 :w          Schreibt Datei&lt;br /&gt;
 :w Datei2   Schreibt eine Kopie in Datei2&lt;br /&gt;
 :w !        Schreibt Datei (übergehe Schreibschutz)&lt;br /&gt;
 :w ! Datei2 Schreibt eine Kopie in Datei2 (übergehe Schreibschutz)&lt;br /&gt;
 :q          Schließe Datei&lt;br /&gt;
 :q!         Schließe Datei (verwerfe Änderungen)&lt;br /&gt;
 :wq         Schreibe Datei und beende Editor&lt;br /&gt;
 :wq!        Schreibe Datei und beende Editor (übergehe Schreibschutz)&lt;br /&gt;
 :q!         Schließe Datei (verwerfe Änderungen)&lt;br /&gt;
 :h          Hilfe anzeigen, durch drücken von :q Beenden der Hilfe&lt;br /&gt;
 :e Datei3   Editiere Datei3&lt;br /&gt;
 :e #        Editere vorhergehende Datei&lt;br /&gt;
 :1,3co9     Kopiere von der ersten bis zu dritten Zeile &lt;br /&gt;
             und füge den Inhalt unterhalb der neunte Zeile ein.&lt;br /&gt;
&lt;br /&gt;
Interaktionen mit Unix:&lt;br /&gt;
&lt;br /&gt;
 :r Datei4   Fügt Inhalt der Datei4 nach dem Cursor ein&lt;br /&gt;
 :r ! Befehl Fügt Ausgabe des Befehls nach dem Cursor ein&lt;br /&gt;
 :! Befehl   Führt den Befehl aus&lt;br /&gt;
 :sh         Starte Subshell -&amp;gt; mit exit kehrt man wieder zurück&lt;br /&gt;
             Eingabemodus zurück&lt;br /&gt;
&lt;br /&gt;
====Ersetzen von Textteilen====&lt;br /&gt;
&lt;br /&gt;
Die grundsätzliche Syntax lautet:&lt;br /&gt;
&lt;br /&gt;
 :[Zeilennummer,Zeilennummer]s/Muster/Ersetzung/[gc]&lt;br /&gt;
&lt;br /&gt;
 :s/worf/kirn/              der erste worf wird in der aktuellen Zeile durch kirn ersetzt&lt;br /&gt;
 :1,9s/worf/kirn/g          von der 1. bis zur 9. Zeile werden alle worf durch kirn ersetzt&lt;br /&gt;
 :1,$s/worf/kirn/           von der ersten bis zur letzten Zeile ersetze ersten worf durch&lt;br /&gt;
                            kirn&lt;br /&gt;
 :.,$s/worf/kirn/g          von der aktuellen bis zur letzten Zeile ersetze alle worf durch&lt;br /&gt;
                            kirn&lt;br /&gt;
 :1,.s/worf/kirn/c          von der 1. bis zur aktuellen Zeile ersetze worf durch kirn, frage&lt;br /&gt;
                            aber nach&lt;br /&gt;
 :1,$s/^worf/kirn/          von der ersten bis zur letzten Zeile ersetze worf am&lt;br /&gt;
                            Zeilenanfang durch kirn&lt;br /&gt;
 :4,$s/worf$/kirn/          von der 4. bis zur letzten Zeile ersetze worf am Zeilenende&lt;br /&gt;
                            durch kirn&lt;br /&gt;
 :1,$s/^#//                 lösche alle Kommentarzeichen&lt;br /&gt;
 :1,$s/^.orf/kirn/           ersetze alles was am Zeilenanfang ein beliebiges Zeichen hat&lt;br /&gt;
                            gefolgt von einem orf durch kirn&lt;br /&gt;
 :1,$s/^[A-Z]orf/kirn/g     suche nach einem Großbuchstaben am Anfang der Zeile&lt;br /&gt;
                            gefolgt von einem orf und ersetze durch kirn&lt;br /&gt;
 :1,$s/^M[ae][iy]e*r/kirn/  suche alles, was am Anfang der Zeile ein großes M enthält,&lt;br /&gt;
                            gefolgt von einem a oder e , gefolgt von einem i oder y ,&lt;br /&gt;
                            gefolgt von einem e , welches 0 oder N mal vorkommen kann,&lt;br /&gt;
                            gefolgt von einem r und ersetze es durch kirn&lt;br /&gt;
&lt;br /&gt;
==Reguläre Ausdrücke==&lt;br /&gt;
&lt;br /&gt;
{| Border=1 Cellpadding=2&lt;br /&gt;
|c&lt;br /&gt;
|Ein einzelner Buchstabe passt auf sich selbst&lt;br /&gt;
|-&lt;br /&gt;
|.&lt;br /&gt;
|Ein Punkt passt auf jedes Zeichen außer auf das Zeilenende&lt;br /&gt;
|-&lt;br /&gt;
|*&lt;br /&gt;
|Das dem Operator * vorangehende Muster kann 0 oder öfter vorkommen&lt;br /&gt;
|-&lt;br /&gt;
|^&lt;br /&gt;
|(Caret) passt auf den Zeilenanfang&lt;br /&gt;
|-&lt;br /&gt;
|$&lt;br /&gt;
|Passt auf das Zeilenende&lt;br /&gt;
|-&lt;br /&gt;
|\&lt;br /&gt;
|Das folgende Sonderzeichen wird entwertet&lt;br /&gt;
|-&lt;br /&gt;
|[...]&lt;br /&gt;
|Passt auf &amp;quot;genau&amp;quot; eins in [...] angebenen Zeichen&lt;br /&gt;
|-&lt;br /&gt;
|[^...]&lt;br /&gt;
|Passt auf &amp;quot;genau&amp;quot; ein Zeichen welches nicht in [...] angebenen ist&lt;br /&gt;
|-&lt;br /&gt;
|\&amp;lt;&lt;br /&gt;
|Passt auf den Wortanfang&lt;br /&gt;
|-&lt;br /&gt;
|\&amp;gt;&lt;br /&gt;
|Passt auf das Wortende&lt;br /&gt;
|-&lt;br /&gt;
|\+&lt;br /&gt;
|Das dem Operator \+ vorangehende Muster kann 1 oder öfter vorkommen&lt;br /&gt;
|-&lt;br /&gt;
|&amp;amp;&lt;br /&gt;
|Setzt das gefunden Suchmuster ein&lt;br /&gt;
|-&lt;br /&gt;
|\(...\)&lt;br /&gt;
|Speichert den Text auf den das Suchmuster passt zur späteren Verwendung&lt;br /&gt;
|-&lt;br /&gt;
|\n&lt;br /&gt;
|Setzt das vorangehende, mit \(...\) Gefundene wieder ein&lt;br /&gt;
|-&lt;br /&gt;
|(...)&lt;br /&gt;
|Gruppiert Auswahlmöglichkeiten&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;nowiki&amp;gt;|&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
|Trennt Auswahlmöglichkeiten&lt;br /&gt;
|-&lt;br /&gt;
|\b&lt;br /&gt;
|Passt auf den Anfang oder das Ende eines Wortes&lt;br /&gt;
|-&lt;br /&gt;
|\B&lt;br /&gt;
|Symbolisiert den Raum innerhalb eines Wortes&lt;br /&gt;
|-&lt;br /&gt;
|\w&lt;br /&gt;
|Passt auf alle alphanumerischen Zeichen [A-Za-z0-9]&lt;br /&gt;
|-&lt;br /&gt;
|\W&lt;br /&gt;
|Passt auf alle nichtalphanumerischen Zeichen [^A-Za-z0-9]&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Die Rangfolge der Operatoren(von der höchsten zur niedrigsten)&lt;br /&gt;
:(, ), ?, *, + | .&lt;br /&gt;
&lt;br /&gt;
Die anderen Operatoren sind mit den anderen Buchstaben gleichrangig.&lt;br /&gt;
&lt;br /&gt;
===Beispiel zum Suchen===&lt;br /&gt;
&lt;br /&gt;
 Suchmuster               Passt auf&lt;br /&gt;
 ^Tuxer                   Tuxer am Zeilenanfang&lt;br /&gt;
 [tT]uxer                 Tuxer oder tuxer&lt;br /&gt;
 80[23]?86                8086, 80286 oder 80386&lt;br /&gt;
&lt;br /&gt;
===grep===&lt;br /&gt;
&lt;br /&gt;
Mit grep ist es möglich, in Dateien nach regulären Ausdrücken zu suchen. Wenn&lt;br /&gt;
eine Übereinstimmung gefunden wird, wird die komplette Zeile auf die&lt;br /&gt;
Standardausgabe geschrieben. grep kann auch von STDIN lesen.Es ist&lt;br /&gt;
empfehlenswert, sich anzugwöhnen ,das Suchmuster in Anführungszeichen zu&lt;br /&gt;
schreiben. Es gibt 3 Arten fgrep = fastgrep , grep und egrep egrep&lt;br /&gt;
&lt;br /&gt;
Beispiel:&lt;br /&gt;
&lt;br /&gt;
 root@zero:~# cat text&lt;br /&gt;
 quatsch&lt;br /&gt;
 quatsch&lt;br /&gt;
 quatsch&lt;br /&gt;
 wichtig&lt;br /&gt;
 quatsch&lt;br /&gt;
 root@zero:~# grep wichtig text&lt;br /&gt;
 wichtig&lt;br /&gt;
 root@zero:~# &lt;br /&gt;
&lt;br /&gt;
 -c                   meldet nur die Gesamtzahl der Fundstellen&lt;br /&gt;
 -v                   zeigt nur Zeilen, die »Ausdruck« nicht enthalten&lt;br /&gt;
 -i                   ignoriert Groß- und Kleinschreibung&lt;br /&gt;
 -l                    meldet nur Dateinamen mit Fundstellen&lt;br /&gt;
 -n                   listet Zeilennummern zu jeder Fundstelle&lt;br /&gt;
 -f                   Dateiname »Dateiname« enthält die Such-Ausdrücke&lt;br /&gt;
 -E                   ist ein erweiterter regulärer Ausdruck (egrep)&lt;br /&gt;
 -F                   (Muster, Ausdruck) ist ein Muster (String) (fgrep)&lt;br /&gt;
 -b                   listet auch die Position der Fundstellen&lt;br /&gt;
 -C    Anzahl         Anzahl von Zeilen werden nach der Fundstelle ausgegeben&lt;br /&gt;
 -B    Anzahl         Anzahl von Zeilen werden vor der Fundstelle ausgegeben&lt;br /&gt;
 -r                   Durchsucht Verzeichnisse rekursiv&lt;br /&gt;
&lt;br /&gt;
==Useridendifikation==&lt;br /&gt;
===/etc/passwd===&lt;br /&gt;
====Beschreibung====&lt;br /&gt;
passwd ist eine ASCII-Datei, die eine Liste der Benutzer des Systems und deren&lt;br /&gt;
Passwörter enthält. Die Passwortdatei sollte für alle Benutzer lesbar sein, was für&lt;br /&gt;
dieVerschlüsselung notwendig ist; aber nur vom Superuser beschreibbar. Wenn&lt;br /&gt;
Sie eine neue Kennung einrichten, lassen Sie das Passwort-Feld in der Datei frei&lt;br /&gt;
und benutzen Sie passwd(1), um dem System ein Passwort für die neue Kennung&lt;br /&gt;
mitzuteilen.&lt;br /&gt;
&lt;br /&gt;
Die Datei /etc/passwd enthält einen Eintrag pro Zeile mit dem Format:&lt;br /&gt;
login_name:passwd:UID:GID:user_name:directory:shell&lt;br /&gt;
====Die Bedeutung der Felder:====&lt;br /&gt;
# login_name Kennung des Benutzers auf dem System.&lt;br /&gt;
# password   Hier steht bei Shadowsystemen ein x. Die Passwörter sind in der Datei /etc/shadow&lt;br /&gt;
# UID        Die numerische Benutzernummer.&lt;br /&gt;
#  GID        Die numerische Gruppennummer des Benutzers.&lt;br /&gt;
# user_name Ein optionales Kommentarfeld, oft benutzt für den vollen Namen des Benutzers und weitere Informationen (Telefon, Raum-Nummer etc.).&lt;br /&gt;
# directory  Das Heimatverzeichnis $HOME des Benutzers.&lt;br /&gt;
# shell      Das Programm, das beim Einloggen gestartet werden soll (falls nicht nötig, benutzen Sie /bin/bash).&lt;br /&gt;
&lt;br /&gt;
===/etc/group===&lt;br /&gt;
====Beschreibung====&lt;br /&gt;
etc/group ist eine ASCII Datei, die Gruppen definiert, zu denen Benutzer&lt;br /&gt;
gehören. Es gibt nur einen Eintrag pro Zeile; jede Zeile hat folgendes Format:&lt;br /&gt;
         GruppenName:Passwort:GruppenKennung:BenutzerListe&lt;br /&gt;
Beschreibung der Felder:&lt;br /&gt;
#     GruppenName      Die Bezeichnung der Gruppe.&lt;br /&gt;
#     Passwort         Das (verschlüsselte) Gruppen-Passwort. Wenn dieses Feld leer ist, wird kein Passwort benötigt.&lt;br /&gt;
#     GruppenKennung Die numerische Identifikation der Gruppe.&lt;br /&gt;
#     BenutzerListe    Alle Namen der Mitglieder, getrennt durch Kommas.&lt;br /&gt;
&lt;br /&gt;
===/etc/shadow===&lt;br /&gt;
====Beschreibung====&lt;br /&gt;
shadow beinhaltet Informationen zu den verschlüsselten Passwörten, zu den&lt;br /&gt;
Benutzerzugängen und weitere Informationen zur Laufzeit der Passwörter.&lt;br /&gt;
 Name:Passwort:Letzte Änderung:Mintage:Maxtage:Warntage:Inaktiv:Ablauf&lt;br /&gt;
#    Der Loginname&lt;br /&gt;
#    verschlüsseltes Passwort &lt;br /&gt;
&amp;lt;nowiki&amp;gt;*&amp;lt;/nowiki&amp;gt; bedeutet Benutzer kann sich nicht einlogen&lt;br /&gt;
! bedeutet Benutzer hat kein Passwort gesetzt&lt;br /&gt;
#    Tage seit dem 1 Januar 1970 an dem das Passwort letztmals geändert wurde&lt;br /&gt;
#    Tage, die das Passwort behalten werden muss, bevor es wieder geändert werden kann&lt;br /&gt;
#     Die Anzahl der Tage, nach denen der Benutzer das Passwort wieder ändern muss&lt;br /&gt;
#    Anzahl der Tage bevor das Passwort abläuft und der Benutzer gewarnt wird&lt;br /&gt;
#    Wenn der Zugang diese Anzahl von Tagen nicht benutzt wird, wird der Zugang gesperrt&lt;br /&gt;
#    Tag seit dem 1 Januar 1970, an dem der Zugang gesperrt wird&lt;br /&gt;
#    Reserviertes Feld&lt;br /&gt;
&lt;br /&gt;
Die Datei sollte aus Sicherheitgründen nicht für einen normalen Benutzer lesbar&lt;br /&gt;
sein.&lt;br /&gt;
&lt;br /&gt;
==Programme zur Userverwaltung==&lt;br /&gt;
===useradd===&lt;br /&gt;
User anlegen&lt;br /&gt;
 root@zero:~# useradd -m -u 1011 -g users -G admin -d /home/erwin -s /bin/bash -c &amp;quot;Erwin Lehman&amp;quot;  erwin&lt;br /&gt;
{| border=1 cellpadding=2&lt;br /&gt;
|&amp;quot;-m&amp;quot;&lt;br /&gt;
|Lege Homedirectory an&lt;br /&gt;
|-&lt;br /&gt;
|&amp;quot;-u 1011&amp;quot;&lt;br /&gt;
|Userid wird zugeordnet&lt;br /&gt;
|-&lt;br /&gt;
|&amp;quot;-g users&amp;quot;&lt;br /&gt;
|Primäre Gruppe wird zugeordnet&lt;br /&gt;
|-&lt;br /&gt;
|&amp;quot;-G admin&amp;quot;&lt;br /&gt;
|Sekunbdäre Gruppe wird zugeordnet&lt;br /&gt;
|-&lt;br /&gt;
|&amp;quot;-d /home/erwin/&amp;quot;&lt;br /&gt;
|Name des Homedirectory&lt;br /&gt;
|-&lt;br /&gt;
|&amp;quot;-s /bin/bash&amp;quot;&lt;br /&gt;
|Bash wird zugeordnet&lt;br /&gt;
|- &lt;br /&gt;
|&amp;quot;-c Erwin Lehman&amp;quot;&lt;br /&gt;
|Kommentarfeld&lt;br /&gt;
|-&lt;br /&gt;
|&amp;quot;erwin&amp;quot; &lt;br /&gt;
|Name des Users&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Defaulteinstellungen anzeigen&lt;br /&gt;
 root@zero:~# useradd -D&lt;br /&gt;
 GROUP=100&lt;br /&gt;
 HOME=/home&lt;br /&gt;
 INACTIVE=-1&lt;br /&gt;
 EXPIRE=&lt;br /&gt;
 SHELL=/bin/sh&lt;br /&gt;
 SKEL=/etc/skel&lt;br /&gt;
 CREATE_MAIL_SPOOL=no&lt;br /&gt;
&lt;br /&gt;
Defaulteinstellungen ändern&lt;br /&gt;
 useradd -D -s /bin/bash&lt;br /&gt;
&lt;br /&gt;
Konfigurationsdatei&lt;br /&gt;
 root@zero:~# cat /etc/default/useradd &lt;br /&gt;
 SHELL=/bin/bash&lt;br /&gt;
 GROUP=100&lt;br /&gt;
 HOME=/home&lt;br /&gt;
 INACTIVE=-1&lt;br /&gt;
 EXPIRE=&lt;br /&gt;
 SKEL=/etc/skel&lt;br /&gt;
 CREATE_MAIL_SPOOL=no&lt;br /&gt;
&lt;br /&gt;
===usermod===&lt;br /&gt;
User modifizieren&lt;br /&gt;
 root@zero:~# usermod -l fritz -s /bin/sh -G admin,video erwin&lt;br /&gt;
{| border=1 cellpadding=2&lt;br /&gt;
|&amp;quot;-l fritz&amp;quot;&lt;br /&gt;
|Neuer Username&lt;br /&gt;
|-&lt;br /&gt;
|&amp;quot;-s /bin/sh&amp;quot;&lt;br /&gt;
|Neue Shell&lt;br /&gt;
|-&lt;br /&gt;
|&amp;quot;-G admin, video&amp;quot;&lt;br /&gt;
|Sekunbdäre Gruppen werden zugeordnet&lt;br /&gt;
|-&lt;br /&gt;
|&amp;quot;erwin&amp;quot; &lt;br /&gt;
|Name des Users&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
===userdel===&lt;br /&gt;
User inklusive Homedirectory löschen&lt;br /&gt;
 root@zero:~# userdel -r fritz&lt;br /&gt;
&lt;br /&gt;
===passwd===&lt;br /&gt;
Rootpasswort ändern&lt;br /&gt;
 root@zero:~# passwd &lt;br /&gt;
 Geben Sie ein neues UNIX Passwort ein:'''sysadm''' &lt;br /&gt;
 Geben Sie das neue UNIX Passwort erneut ein:'''sysadm''' &lt;br /&gt;
 passwd: Passwort erfolgreich geändert&lt;br /&gt;
&lt;br /&gt;
Passwort von tux ändern&lt;br /&gt;
 root@zero:~# passwd tux&lt;br /&gt;
 Geben Sie ein neues UNIX Passwort ein:'''suxer''' &lt;br /&gt;
 Geben Sie das neue UNIX Passwort erneut ein:'''suxer'''&lt;br /&gt;
 passwd: Passwort erfolgreich geändert&lt;br /&gt;
&lt;br /&gt;
Minimale und Maximale Gültigkeit des Passwortes von tux festlegen&lt;br /&gt;
 root@zero:~# passwd -n 5 -x 120 tux&lt;br /&gt;
&lt;br /&gt;
===groupadd===&lt;br /&gt;
 root@zero:~# groupadd -f -g 2001 xinuxer&lt;br /&gt;
{| border=1 cellpadding=2&lt;br /&gt;
|&amp;quot;-f&amp;quot;&lt;br /&gt;
|Überschreibe bestehende Gruppe&lt;br /&gt;
|-&lt;br /&gt;
|&amp;quot;-g 2001&amp;quot;&lt;br /&gt;
|GID der Gruppe&lt;br /&gt;
|-&lt;br /&gt;
|&amp;quot;xinuxer&amp;quot; &lt;br /&gt;
|Name des Gruppe&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==chmod==&lt;br /&gt;
Die Syntax des Befehls chmod lautet:&lt;br /&gt;
&lt;br /&gt;
'''chmod''' WerWieWas [,WerWieWas,.....] Dateiliste&lt;br /&gt;
&lt;br /&gt;
oder&lt;br /&gt;
&lt;br /&gt;
'''chmod''' Oktalzahl Dateiliste&lt;br /&gt;
&lt;br /&gt;
Durch WerWieWas bzw. Oktalzahl wird die Rechtetabelle definiert. Innerhalb von&lt;br /&gt;
WerWieWas darf es kein Leerzeichen geben. Wer bezeichnet den Benutzerkreis,&lt;br /&gt;
dem man Rechte gibt, Wie die Art, in der die Rechte gegeben werden und Was die&lt;br /&gt;
Rechte als solche. Im einzelnen können folgende Kürzel benutzt werden:&lt;br /&gt;
&lt;br /&gt;
Für Wer kann eines der folgenden Kürzel oder eine Kombination davon stehen:&lt;br /&gt;
 u                   (user) Rechte für den Dateibesitzer&lt;br /&gt;
 g                   (group) Rechte für die Gruppe&lt;br /&gt;
 o                   (others) Rechte für alle anderen Benutzer&lt;br /&gt;
 a                   (all) Rechte für alle Benutzer&lt;br /&gt;
Für Wie steht eines der folgenden Kürzel:&lt;br /&gt;
 +                   Die Rechte werden zu den vorhandenen zusätzlich vergeben&lt;br /&gt;
 -                   Die im Folgenden genannten Rechte werden entzogen&lt;br /&gt;
 =                   Die im Folgenden genannten Rechte ersetzen die bisherigen&lt;br /&gt;
Für Was steht eines der folgenden Kürzel:&lt;br /&gt;
 r                   (read) lesen&lt;br /&gt;
 w                   (write) schreiben&lt;br /&gt;
 x                   (execute) ausführen&lt;br /&gt;
oder diese Sonderformen&lt;br /&gt;
 s                   (usersbit) Programm läuft unter der UID des Besitzers&lt;br /&gt;
 s                   (groupsbit)Programm läuft unter der GID des GRUPPE&lt;br /&gt;
 t                   (stickybit) Dateien im Verzeichnis darf nur Besitzer löschen&lt;br /&gt;
&lt;br /&gt;
===Beispiel===&lt;br /&gt;
Setze für alle Schreib- und Leserecht&lt;br /&gt;
 xinux@zero:~$ chmod a=rw test &lt;br /&gt;
 xinux@zero:~$ ls -l test &lt;br /&gt;
 -rw-rw-rw- 1 xinux xinux 0 2009-06-16 12:01 test&lt;br /&gt;
 xinux@zero:~$ &lt;br /&gt;
&lt;br /&gt;
Erteile Besitzer Ausführungsrecht&lt;br /&gt;
 xinux@zero:~$ chmod u+x test ; ls -l test &lt;br /&gt;
 -rwxrw-rw- 1 xinux xinux 0 2009-06-16 12:01 test&lt;br /&gt;
 xinux@zero:~$ &lt;br /&gt;
&lt;br /&gt;
===chmod oktale Schreibweise===&lt;br /&gt;
 Specialrights        User           Group         Other&lt;br /&gt;
 usbit gsbit sticky    r    w   x     r   w   x     r   w   x&lt;br /&gt;
   1     1      1      1    1   1     1   1   1     1   1   1&lt;br /&gt;
   0     0      0      0    0   0     0   0   0     0   0   0&lt;br /&gt;
 Oktale Wertigkeit pro Recht&lt;br /&gt;
   4     2       1     4    2   1     4   2   1     4   2   1&lt;br /&gt;
&lt;br /&gt;
===Beispiele===&lt;br /&gt;
 xinux@zero:~$ chmod 751 test ; ls -l test&lt;br /&gt;
 -rwxr-x--x 1 xinux xinux 0 2009-06-16 12:01 test&lt;br /&gt;
 xinux@zero:~$ &lt;br /&gt;
&lt;br /&gt;
 xinux@zero:~$ chmod 4770 test ; ls -l test&lt;br /&gt;
 -rwsrwx--- 1 xinux xinux 0 2009-06-16 12:01 test&lt;br /&gt;
 xinux@zero:~$ &lt;br /&gt;
&lt;br /&gt;
 xinux@zero:~$ chmod 0 test ; ls -l test &lt;br /&gt;
 ---------- 1 xinux xinux 0 2009-06-16 12:01 test&lt;br /&gt;
&lt;br /&gt;
===chmod Optionen===&lt;br /&gt;
 -c   (changes) es werden nur die Dateien angezeigt, deren Zugriffsrechte tatsächlich verändert werden&lt;br /&gt;
 -f   (silent, quiet) Fehlermeldungen wegen fehlgeschlagener Änderungsversuche werden unterdrückt&lt;br /&gt;
 -v   (verbose) alle Aktionen werden angezeigt&lt;br /&gt;
 -R   (recursive) die Zugriffsrechte aller Dateien in den Unterverzeichnissen werden ebenfalls geändert&lt;br /&gt;
&lt;br /&gt;
Theoretisch sind alle Kombinationen der Zugriffsrechte denkbar, aber der&lt;br /&gt;
Eigentümer einer Datei darf diese immer lesen, selbst wenn das Lesebit nicht&lt;br /&gt;
gesetzt ist. Genauso macht es wenig Sinn, eine gewöhnliche Textdatei als&lt;br /&gt;
ausführbar zu setzen; die Shell wird damit nichts anfangen können. Ein x für ein&lt;br /&gt;
Verzeichnis gibt an, dass in dieses gewechselt werden kann.&lt;br /&gt;
&lt;br /&gt;
Rechte sind verbindlich&lt;br /&gt;
&lt;br /&gt;
Interessant ist auch ein Konstrukt folgender Art&lt;br /&gt;
 -rwx---rwx&lt;br /&gt;
&lt;br /&gt;
das angibt, dass mit der Datei alles angestellt werden kann, außer durch Nutzer der&lt;br /&gt;
Gruppe. Versucht irgend jemand, der nicht der Gruppe des Eigentümers angehört,&lt;br /&gt;
die Datei zu modifizieren, wird ihm dies gelingen, einem Gruppenmitglied bleibt&lt;br /&gt;
dies versagt, obwohl er ja gleichzeitig ein &amp;quot;Anderer&amp;quot; ist. D.h. die Rechte der&lt;br /&gt;
Gruppe sind verbindlicher, als die Rechte der anderen!&lt;br /&gt;
&lt;br /&gt;
===Bedeutungen der Zugriffsarten===&lt;br /&gt;
====Dateien====&lt;br /&gt;
* r: Der Inhalt der Datei kann gelesen und damit auch kopiert werden. &lt;br /&gt;
 root@zero:~# cat test&lt;br /&gt;
 Dies ist eine Testdatei&lt;br /&gt;
  &lt;br /&gt;
 root@zero:~# cp test backup&lt;br /&gt;
&lt;br /&gt;
* w: Der Inhalt der Datei darf verändert werden. Ob die Datei gelöscht werden kann ist&lt;br /&gt;
keine Eigenschaft der Datei, sondern des Verzeichnisses, indem sich die Datei befindet.&lt;br /&gt;
 root@zero:~# cat &amp;gt; test&lt;br /&gt;
 Hier steht jetzt was anderes&lt;br /&gt;
 ^C&lt;br /&gt;
 root@zero:~# cat test&lt;br /&gt;
 Hier steht jetzt was anderes&lt;br /&gt;
  &lt;br /&gt;
 xinux@zero:~$ ls -ld verzeichnis/&lt;br /&gt;
 dr-xr-xr-x 2 xinux xinux 4096 2009-06-18 11:16 verzeichnis/&lt;br /&gt;
 xinux@zero:~/verzeichnis$ rm text&lt;br /&gt;
 rm: Entfernen von „text“ nicht möglich: Permission denied&lt;br /&gt;
&lt;br /&gt;
* x: Ausführrecht für Programme und Skripte&lt;br /&gt;
 xinux@zero:~$ ./programm&lt;br /&gt;
 -bash: ./programm: Permission denied&lt;br /&gt;
 xinux@zero:~$ chmod +x programm&lt;br /&gt;
 xinux@zero:~$ ./programm&lt;br /&gt;
 Test&lt;br /&gt;
  test&lt;br /&gt;
&lt;br /&gt;
====Verzeichnisse====&lt;br /&gt;
* r: Die Einträge in dem Verzeichnis sind lesbar.&lt;br /&gt;
Leserecht von verzeichnis/ entziehen&lt;br /&gt;
 xinux@zero:~$ chmod a-r verzeichnis/&lt;br /&gt;
 xinux@zero:~$ ls verzeichnis/&lt;br /&gt;
 ls: Öffnen von Verzeichnis verzeichnis/ nicht möglich: Permission denied&lt;br /&gt;
Leserecht für Benutzer und Gruppe vergeben&lt;br /&gt;
 xinux@zero:~$ chmod a+r verzeichnis/&lt;br /&gt;
 xinux@zero:~$ ls verzeichnis/&lt;br /&gt;
 text&lt;br /&gt;
&lt;br /&gt;
* w: Die Einträge in dem Verzeichnis können geändert werden. &lt;br /&gt;
Neue Datei erstellen&lt;br /&gt;
 xinux@zero:~$ touch neu&lt;br /&gt;
 xinux@zero:~$ ls neu&lt;br /&gt;
 neu&lt;br /&gt;
&lt;br /&gt;
Datei löschen&lt;br /&gt;
 xinux@zero:~$ rm neu&lt;br /&gt;
 xinux@zero:~$ ls neu&lt;br /&gt;
 ls: Zugriff auf neu nicht möglich: No such file or directory&lt;br /&gt;
&lt;br /&gt;
* x: Der Name des Verzeichnisses kann in einem Pfadnamen erscheinen.&lt;br /&gt;
Verzeichnis ohne x Recht&lt;br /&gt;
 xinux@zero:~$ chmod a-x verzeichnis/&lt;br /&gt;
Wechseln in Verzeichnis mangels x-Recht nicht möglich&lt;br /&gt;
 xinux@zero:~$ cd verzeichnis/&lt;br /&gt;
 -bash: cd: verzeichnis/: Permission denied&lt;br /&gt;
x-Recht vergeben&lt;br /&gt;
 xinux@zero:~$ chmod a+x verzeichnis/&lt;br /&gt;
damit Wechsel in Verzeichnis möglich&lt;br /&gt;
 xinux@zero:~$ cd verzeichnis/&lt;br /&gt;
 xinux@zero:~/verzeichnis$ pwd&lt;br /&gt;
 /home/xinux/verzeichnis&lt;br /&gt;
&lt;br /&gt;
====umask====&lt;br /&gt;
Neue Dateien und Verzeichnisse werden mit ein und denselben Zufriffsrechten erzeugt.&lt;br /&gt;
 xinux@zero:~$ mkdir text&lt;br /&gt;
 xinux@zero:~$ touch textdat&lt;br /&gt;
 xinux@zero:~$ ls -ld text*&lt;br /&gt;
 drwxr-xr-x 2 xinux xinux 4096 2009-06-18 11:37 text&lt;br /&gt;
 -rw-r--r-- 1 xinux xinux    0 2009-06-18 11:37 textdat&lt;br /&gt;
&lt;br /&gt;
Zuständig für dieses Verhalten ist die sogenannte umask, die oft in der Datei&lt;br /&gt;
/etc/profile auf den Wert 022 voreingestellt ist. Zusätzlich wird noch eine&lt;br /&gt;
Maximalmaske benötigt, die sich für Verzeichnisse und andere Dateien&lt;br /&gt;
unterscheidet. Die bei der Erzeugung gesetzten Rechte entstehen nun, indem von&lt;br /&gt;
der Maximalmaske der durch die umask vorgegebene Wert subtrahiert wird:&lt;br /&gt;
&lt;br /&gt;
{| border=1 cellpadding=2&lt;br /&gt;
!&lt;br /&gt;
! Dateien&lt;br /&gt;
! Verzeichnisse&lt;br /&gt;
|-&lt;br /&gt;
| Systemvorgabe&lt;br /&gt;
| 666&lt;br /&gt;
| 777&lt;br /&gt;
|-&lt;br /&gt;
| -umask&lt;br /&gt;
| 022&lt;br /&gt;
| 022&lt;br /&gt;
|-&lt;br /&gt;
| Ergebnis&lt;br /&gt;
| 644&lt;br /&gt;
| 755&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
 xinux@zero:~$ grep umask /etc/profile&lt;br /&gt;
 umask 022&lt;br /&gt;
&lt;br /&gt;
==Gruppenzugehörigkeit==&lt;br /&gt;
===newgrp===&lt;br /&gt;
Ändert die Gruppenzugehörigkeit eines Benutzers auf die angegebene Gruppe. Wenn keine Gruppe angegeben wird, wird die &lt;br /&gt;
Anmeldegruppe des Benutzers verwendet. Die neue Gruppe wird anschließend fü Zugriffskontrollen verwendet.&lt;br /&gt;
&lt;br /&gt;
 newgrp Gruppenname&lt;br /&gt;
&lt;br /&gt;
 root@zero:~# newgrp hacker&lt;br /&gt;
 root@zero:~# id&lt;br /&gt;
 uid=0(root) gid=1006(hacker) Gruppen=0(root),1006(hacker)&lt;br /&gt;
&lt;br /&gt;
===chgrp===&lt;br /&gt;
Verändert die Besitzugehörigkeit zu der angegebenen Gruppe&lt;br /&gt;
&lt;br /&gt;
 chgrp [Optionen] Gruppe Datei(en)&lt;br /&gt;
&lt;br /&gt;
Optionen:&lt;br /&gt;
 -c Zeigt Veränderungen an&lt;br /&gt;
 -f Unterdrückt die meisten Fehlermeldungen&lt;br /&gt;
 -R Verändert Dateien und Verzeichnisse rekursiv&lt;br /&gt;
 -v Gibt geschwätzige Ausgabe aus.&lt;br /&gt;
&lt;br /&gt;
 root@zero:~# ls -l&lt;br /&gt;
 ...&lt;br /&gt;
 d-wx--x--x  3 root root 4096 2009-06-18 13:34 verzeichnis&lt;br /&gt;
 &lt;br /&gt;
 root@zero:~# chgrp -R xinux verzeichnis/&lt;br /&gt;
 root@zero:~# ls -l&lt;br /&gt;
 ...&lt;br /&gt;
 d-wx--x--x  3 root xinux 4096 2009-06-18 13:34 verzeichnis&lt;br /&gt;
&lt;br /&gt;
 xinux@zero:~$ cd /root/verzeichnis/&lt;br /&gt;
 xinux@zero:/root/verzeichnis$ pwd&lt;br /&gt;
 /root/verzeichnis&lt;br /&gt;
&lt;br /&gt;
===chown===&lt;br /&gt;
Ändert den Eigentümer von einer oder mehreren Dateien in den angegebenen Benutzer. &lt;br /&gt;
chown erlaubt ebenfalls das Ändern der Gruppeneigentümreschaft. Nur der aktuelle Eigentümer einer&lt;br /&gt;
Datei oder der Superuser (root) darf die Eigentumsverhältnisse ändern.&lt;br /&gt;
&lt;br /&gt;
 chown [Optionen] Benutzer(:Gruppe) Dateien&lt;br /&gt;
&lt;br /&gt;
Optionen:&lt;br /&gt;
 -c Gibt Informationen über die veränderten Dateien aus&lt;br /&gt;
 --dereference Symbolischen Links folgen&lt;br /&gt;
 -v Gibt Informationen über alle Dateien aus, die chown zu ändern versucht, egal, ob die Änderung erfolgt ist oder nicht&lt;br /&gt;
 -R Geht rekursiv durch alle Unterverzeichnisse und führt die Änderungen durch. &lt;br /&gt;
&lt;br /&gt;
 root@zero:~# chown -R xinux.xinux verzeichnis/&lt;br /&gt;
 root@zero:~# ls -l&lt;br /&gt;
 insgesamt 12&lt;br /&gt;
 drwx------ 13 root  root  4096 2009-04-21 15:11 profile&lt;br /&gt;
 --w-------  1 root  root     0 2009-06-18 11:13 test&lt;br /&gt;
 -rw-r--r--  1 root  root    40 2009-06-18 12:04 text&lt;br /&gt;
 drwxrwx--x  3 xinux xinux 4096 2009-06-18 13:39 verzeichnis&lt;br /&gt;
 &lt;br /&gt;
 root@zero:~# chown -R -c xinux.xinux verzeichnis/&lt;br /&gt;
 &lt;br /&gt;
 root@zero:~# chown -R -v xinux.xinux verzeichnis/&lt;br /&gt;
 Eigentümer von „verzeichnis/01“ als xinux:xinux erhalten&lt;br /&gt;
 Eigentümer von „verzeichnis/test“ als xinux:xinux erhalten&lt;br /&gt;
 Eigentümer von „verzeichnis/“ als xinux:xinux erhalten&lt;br /&gt;
&lt;br /&gt;
==Eingabe/Ausgabe==&lt;br /&gt;
Standardeingabe (0): Laufende Programme erwarten von hier ihre Eingaben (normalerweise handelt es sich um die Tastatur).&lt;br /&gt;
&lt;br /&gt;
Standardausgabe (1): Programme schreiben auf diese ihre Ausgaben (Bildschirm).&lt;br /&gt;
&lt;br /&gt;
Standardfehlerausgabe (2) : Fehlerausgaben landen hier (Bildschirm, aber nur die aktive Konsole).&lt;br /&gt;
&lt;br /&gt;
[[Bild:std.jpg]]&lt;br /&gt;
&lt;br /&gt;
===cat===&lt;br /&gt;
Das Programm cat liest von STDIN und gibt es STDOUT wieder aus&lt;br /&gt;
&lt;br /&gt;
Einlesen der Datei text&lt;br /&gt;
 root@zero:~# cat &amp;lt; text&lt;br /&gt;
 wichtig&lt;br /&gt;
&lt;br /&gt;
Schreiben in die Datei text, dies überschreibt den bisherigen Inhalt der Datei&lt;br /&gt;
 root@zero:~# cat &amp;gt; text&lt;br /&gt;
 sogar noch wichtiger &lt;br /&gt;
 &lt;br /&gt;
Ausgeben der Datei text&lt;br /&gt;
 root@zero:~# cat text &lt;br /&gt;
 sogar noch wichtiger&lt;br /&gt;
&lt;br /&gt;
Lesen aus der Datei text und schreiben in die Datei neuertext&lt;br /&gt;
 root@zero:~# cat &amp;lt; text &amp;gt; neuertext&lt;br /&gt;
 root@zero:~# cat neuertext&lt;br /&gt;
 sogar noch wichtiger&lt;br /&gt;
&lt;br /&gt;
Anhängen der Ausgabe von date an die Datei neuertext&lt;br /&gt;
 root@zero:~# date &amp;gt;&amp;gt; neuertext&lt;br /&gt;
 root@zero:~# cat neuertext&lt;br /&gt;
 sogar noch wichtiger&lt;br /&gt;
 Do 18. Jun 14:08:58 CEST 2009&lt;br /&gt;
&lt;br /&gt;
Umleiten des Standardfehlerkanals nach error&lt;br /&gt;
 root@zero:~# rm sux 2&amp;gt; error&lt;br /&gt;
 root@zero:~# more error&lt;br /&gt;
 rm: Entfernen von „sux“ nicht möglich: No such file or directory&lt;br /&gt;
&lt;br /&gt;
===Umleitungen===&lt;br /&gt;
Nacheinander auszuführende Kommandos&lt;br /&gt;
 root@zero:~# pwd; date&lt;br /&gt;
 /root&lt;br /&gt;
 Do 18. Jun 14:13:05 CEST 2009&lt;br /&gt;
 &lt;br /&gt;
Übergeben der Ausgabe von tail als Eingabe von grep mit Hilfe der Pipe &amp;quot;|&amp;quot;&lt;br /&gt;
 root@zero:~# tail /var/log/auth.log | grep xinux&lt;br /&gt;
 Jun 18 13:52:33 zero nss_wins[11433]: pam_unix(login:session): session closed for user xinux&lt;br /&gt;
&lt;br /&gt;
Übergeben der letzten 100 Zeilen von syslog als Eingabe von grep&lt;br /&gt;
 root@zero:~# tail /var/log/syslog -n 100 | grep error&lt;br /&gt;
 Jun 18 09:30:54 zero kernel: [154384.692135] end_request: I/O error, dev fd0, sector 0&lt;br /&gt;
 Jun 18 09:30:54 zero kernel: [154384.712137] end_request: I/O error, dev fd0, sector 0&lt;br /&gt;
&lt;br /&gt;
==tr==&lt;br /&gt;
tr ist ein Programm um Zeichen zu übersetzen. Dies betrifft nur die Ausgabe, die Datei selbst bleibt unverändert.&lt;br /&gt;
&lt;br /&gt;
Ersetzt Kleinbuchstaben durch Großbuchstaben aus der Datei text&lt;br /&gt;
 root@zero:~# tr &amp;quot;a-z&amp;quot; &amp;quot;A-Z&amp;quot; &amp;lt; text&lt;br /&gt;
 SOGAR NOCH WICHTIGER&lt;br /&gt;
 123&lt;br /&gt;
 34&lt;br /&gt;
 4711&lt;br /&gt;
 TEST&lt;br /&gt;
&lt;br /&gt;
Ersetzt alle Zahlen durch X&lt;br /&gt;
 root@zero:~# tr &amp;quot;0-9&amp;quot; &amp;quot;X&amp;quot; &amp;lt; text&lt;br /&gt;
 sogar noch wichtiger&lt;br /&gt;
 XXX&lt;br /&gt;
 XX&lt;br /&gt;
 XXXX&lt;br /&gt;
 test&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
 root@zero:~# cat &amp;gt; test&lt;br /&gt;
 +++++&lt;br /&gt;
 ###&lt;br /&gt;
 1111&lt;br /&gt;
&lt;br /&gt;
-s löscht mehrfach kommende Zeichen&lt;br /&gt;
 root@zero:~# tr '''-s''' &amp;quot;+&amp;quot; &amp;lt; test&lt;br /&gt;
 +&lt;br /&gt;
 ###&lt;br /&gt;
 1111&lt;br /&gt;
&lt;br /&gt;
-d löscht vorkommende Zeichen &lt;br /&gt;
 root@zero:~# tr '''-d''' &amp;quot;#&amp;quot; &amp;lt; test&lt;br /&gt;
 +++++ &lt;br /&gt;
 &lt;br /&gt;
 1111&lt;br /&gt;
&lt;br /&gt;
==cut==&lt;br /&gt;
Spalten aus einer Datei schneiden. Dies betrifft nur die Ausgabe, die Datei selbst bleibt unverändert.&lt;br /&gt;
 &lt;br /&gt;
Schneidet die erste Spalte aus, der Delimiter ist : &lt;br /&gt;
 root@zero:~# cut -f 1 -d : /etc/passwd&lt;br /&gt;
 root&lt;br /&gt;
 daemon&lt;br /&gt;
 bin&lt;br /&gt;
 ...&lt;br /&gt;
 xinux&lt;br /&gt;
&lt;br /&gt;
 root@zero:~# more test&lt;br /&gt;
 1234#5678#9999&lt;br /&gt;
 &lt;br /&gt;
Schneidet die zweite Spalte aus, der Delimiter ist #&lt;br /&gt;
 root@zero:~# cut -f 2 -d &amp;quot;#&amp;quot; &amp;lt; test&lt;br /&gt;
 5678&lt;br /&gt;
&lt;br /&gt;
Schneidet bis zum 3 Zeichen ab&lt;br /&gt;
 root@zero:~$ echo S01policykit | cut -c 4-&lt;br /&gt;
 policykit&lt;br /&gt;
&lt;br /&gt;
==expand==&lt;br /&gt;
Ersetzt Tabulatorzeichen durch Folgen von Leerzeichen und schreibt das Ergebnis auf die Standardausgabe&lt;br /&gt;
 root@zero:~# expand /etc/samba/smb.conf&lt;br /&gt;
 ...&lt;br /&gt;
&lt;br /&gt;
==fmt==&lt;br /&gt;
#Setzt den Text der Dateien im Blocksatz der angegebenen Breite durch Auffüllen von Zeilen und Entfernen von Zeilenwechseln.&lt;br /&gt;
Standardgemäß werden Leerzeilen, die Position von Leerzeichen und der Einzug am Zeilenanfang erhalten. fmt versucht, &lt;br /&gt;
Zeilenumbrüche an Satzenden durchzuführen sowie sie nach dem ersten oder vor dem letzten Wort eines Satzes zu vermeiden. &lt;br /&gt;
 &lt;br /&gt;
 fmt [Optionen] [Dateien]&lt;br /&gt;
&lt;br /&gt;
Optionen&lt;br /&gt;
&lt;br /&gt;
* -p ''Präfix'': Formatiert nur Zeilen, die mit ''Präfix'' anfangen&lt;br /&gt;
 root@zero:/tmp# fmt -p '#' text&lt;br /&gt;
 #Setzt den Text der Dateien im Blocksatz der angegebenen Breite durch&lt;br /&gt;
 #Auffüllen von Zeilen und Entfernen von Zeilenwechseln.  Standardgemäß&lt;br /&gt;
 #werden Leerzeilen, die Position von Leerzeichen und der Einzug am&lt;br /&gt;
 #Zeilenanfang erhalten. fmt versucht,&lt;br /&gt;
 Zeilenumbrüche an Satzenden durchzuführen sowie sie nach dem ersten oder vor dem letzten Wort eines Satzes zu vermeiden.&lt;br /&gt;
&lt;br /&gt;
* -u : Erzwingt genau ein Leerzeichen zwischen Wörtern und zwei Leerzeichen zwischen Sätzen&lt;br /&gt;
&lt;br /&gt;
* -w ''Breite'': Setzt die Ausgabebreite auf ''Breite''&lt;br /&gt;
 root@zero:/tmp# fmt -w 30 text&lt;br /&gt;
 #Setzt den Text der Dateien&lt;br /&gt;
 im Blocksatz der angegebenen&lt;br /&gt;
 Breite durch Auffüllen&lt;br /&gt;
 von Zeilen und Entfernen&lt;br /&gt;
 von Zeilenwechseln.&lt;br /&gt;
 #Standardgemäß werden&lt;br /&gt;
 Leerzeilen, die Position von&lt;br /&gt;
 Leerzeichen und der Einzug am&lt;br /&gt;
 Zeilenanfang erhalten. fmt&lt;br /&gt;
 versucht, Zeilenumbrüche&lt;br /&gt;
 an Satzenden durchzuführen&lt;br /&gt;
 sowie sie nach dem ersten&lt;br /&gt;
 oder vor dem letzten Wort&lt;br /&gt;
 eines Satzes zu vermeiden.&lt;br /&gt;
&lt;br /&gt;
==join==&lt;br /&gt;
Führt die Zeilen zweier sortierter Dateien anhand von '''Übereinstimmungen''' in einem gemeinsamen Feld zusammen.&lt;br /&gt;
&lt;br /&gt;
 root@zero:~# more name&lt;br /&gt;
 1. karl&lt;br /&gt;
 2. heinz&lt;br /&gt;
 3. hans&lt;br /&gt;
 4. otto&lt;br /&gt;
 root@zero:~# more tel&lt;br /&gt;
 1. 1234&lt;br /&gt;
 2. 4321&lt;br /&gt;
 3. 222&lt;br /&gt;
 4. 121212&lt;br /&gt;
 root@zero:~# join name tel &amp;gt; telefonbuch&lt;br /&gt;
 root@zero:~# more telefonbuch&lt;br /&gt;
 1. karl 1234&lt;br /&gt;
 2. heinz 4321&lt;br /&gt;
 3. hans 222&lt;br /&gt;
 4. otto 121212&lt;br /&gt;
&lt;br /&gt;
 root@zero:~# join -t : /etc/passwd /etc/shadow&lt;br /&gt;
 ....&lt;br /&gt;
 daemon:x:1:1:daemon:/usr/sbin:/bin/sh:*:14181:0:99999:7:::&lt;br /&gt;
 bin:x:2:2:bin:/bin:/bin/sh:*:14181:0:99999:7:::&lt;br /&gt;
 sys:x:3:3:sys:/dev:/bin/sh:*:14181:0:99999:7:::&lt;br /&gt;
 sync:x:4:65534:sync:/bin:/bin/sync:*:14181:0:99999:7:::&lt;br /&gt;
 ...&lt;br /&gt;
&lt;br /&gt;
join in dat1 nach Feld 3 und in dat2 nach Feld 2&lt;br /&gt;
 thomas@lydia:~$ cat dat1 &lt;br /&gt;
 hugo:ps:1111&lt;br /&gt;
 erwin:zw:2222&lt;br /&gt;
 karl:sb:3333&lt;br /&gt;
 rudi:kl:4444&lt;br /&gt;
 thomas@lydia:~$ cat dat2&lt;br /&gt;
 blau:1111:svn&lt;br /&gt;
 grün:2222:fcs&lt;br /&gt;
 gelb:3333:fch&lt;br /&gt;
 rot:4444:fck&lt;br /&gt;
 thomas@lydia:~$ join -t : -1 3 -2 2 dat1 dat2 &lt;br /&gt;
 1111:hugo:ps:blau:svn&lt;br /&gt;
 2222:erwin:zw:grün:fcs&lt;br /&gt;
 3333:karl:sb:gelb:fch&lt;br /&gt;
 4444:rudi:kl:rot:fck&lt;br /&gt;
&lt;br /&gt;
==nl==&lt;br /&gt;
Nummeriert die Zeilen in einer Datei.&lt;br /&gt;
&lt;br /&gt;
 root@zero:~# nl /etc/passwd                                                   &lt;br /&gt;
     1  root:x:0:0:root:/root:/bin/bash                                       &lt;br /&gt;
     2  daemon:x:1:1:daemon:/usr/sbin:/bin/sh                                 &lt;br /&gt;
     3  bin:x:2:2:bin:/bin:/bin/sh                                            &lt;br /&gt;
     4  sys:x:3:3:sys:/dev:/bin/sh                                            &lt;br /&gt;
     5  sync:x:4:65534:sync:/bin:/bin/sync&lt;br /&gt;
     ...&lt;br /&gt;
Nummereriet mit führenden Nullen der Separatir ist ein :&lt;br /&gt;
 root@zero:~# nl -s : -n rz dat1&lt;br /&gt;
&lt;br /&gt;
==od==&lt;br /&gt;
Gibt Dateien im Oktal und anderen Formaten aus.&lt;br /&gt;
&lt;br /&gt;
 od [Optionen] Datei&lt;br /&gt;
&lt;br /&gt;
* -j ''Bytes'': Überspringt die Anzahl ''Bytes'' einer Datei&lt;br /&gt;
* -N ''Bytes'': Gibt nur die Anzahl ''Bytes'' aus&lt;br /&gt;
* -c : Gebe ASCII Zeichen aus&lt;br /&gt;
* -f : Gebe Fließkommazahlen aus&lt;br /&gt;
* -i : Gebe Dezimal Integer aus&lt;br /&gt;
* -l : Gebe Dezimal Long aus&lt;br /&gt;
* -o : Gebe Oktal 2 Byte Einheiten aus&lt;br /&gt;
* -s : Gebe Dezimal 2 Byte Einheiten aus&lt;br /&gt;
* -x : Gebe Hexadezimale 2 Byte einheiten aus&lt;br /&gt;
&lt;br /&gt;
Beispiele&lt;br /&gt;
&lt;br /&gt;
Gebe Master Boot Record (die ersten 512 Byte der Festplatte /dev/sda) als Hexadezimal aus&lt;br /&gt;
 root@zero:~# od '''-x -N''' 512 /dev/sda&lt;br /&gt;
 0000000 48eb 1090 d08e 00bc b8b0 0000 d88e c08e&lt;br /&gt;
 0000020 befb 7c00 00bf b906 0200 a4f3 21ea 0006&lt;br /&gt;
 0000040 be00 07be 0438 0b75 c683 8110 fefe 7507&lt;br /&gt;
 0000060 ebf3 b416 b002 bb01 7c00 80b2 748a 0203&lt;br /&gt;
 0000100 00ff 2000 0001 0000 0200 90fa f690 80c2&lt;br /&gt;
 ...&lt;br /&gt;
&lt;br /&gt;
Schreibe &amp;quot;suxer&amp;quot; in die Datei test&lt;br /&gt;
 root@zero:~# echo &amp;quot;suxer&amp;quot; &amp;gt; test&lt;br /&gt;
Ausgabe Hexadezimal&lt;br /&gt;
 root@zero:~# od -x test&lt;br /&gt;
 0000000 7573 6578 0a72&lt;br /&gt;
 0000006&lt;br /&gt;
&lt;br /&gt;
Ausgabe ASCII Zeichen&lt;br /&gt;
 root@zero:~# od -c test&lt;br /&gt;
 0000000   s   u   x   e   r  \n&lt;br /&gt;
 0000006&lt;br /&gt;
&lt;br /&gt;
==paste==&lt;br /&gt;
Fügt die Zeilen von zwei oder mehr Dateien horizontal zusammen&lt;br /&gt;
 root@zero:~# paste name tel&lt;br /&gt;
 1. karl 1. 1234&lt;br /&gt;
 2. heinz        2. 4321&lt;br /&gt;
 3. hans 3. 222&lt;br /&gt;
 4. otto 4. 121212&lt;br /&gt;
&lt;br /&gt;
==pr==&lt;br /&gt;
Bereitet Textdateien zum Drucken vor.&lt;br /&gt;
&lt;br /&gt;
 root@zero:~# echo &amp;quot;Plan für heute&amp;quot; &amp;gt; dokument&lt;br /&gt;
 root@zero:~# more dokument&lt;br /&gt;
 Plan für heute&lt;br /&gt;
 root@zero:~# pr dokument   &lt;br /&gt;
  &lt;br /&gt;
 &lt;br /&gt;
 2009-06-19 12:44                    dokument                     Seite 1&lt;br /&gt;
 &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
 Plan für heute&lt;br /&gt;
&lt;br /&gt;
Anmerkung Ausmaße der Bildschirmausgabe wie eine Druckseite.&lt;br /&gt;
&lt;br /&gt;
==sed==&lt;br /&gt;
streaming editor. Mit sed ist es möglich, den Inhalt einer Datei automatisch (nicht interaktiv) zu&lt;br /&gt;
bearbeiten. Wie unter Linux üblich, wird auch hier der Text nicht wirklich verändert sondern die &lt;br /&gt;
Änderung erfolgt über die Standardausgabe, die wieder umgeleitet werden kann. Die Syntax ist ähnlich &lt;br /&gt;
des ex modus von vi. Reguläre Ausdrücke können nach Belieben benutzt werden. &lt;br /&gt;
&lt;br /&gt;
Optionen:&lt;br /&gt;
 -e Zeichenkette  wendet die Editorbefehle aus Zeichenkette auf den Text an.&lt;br /&gt;
 -n gibt nur die Zeilen aus, die explizit (durch &amp;quot;p&amp;quot; ausgedruckt werden sollen&lt;br /&gt;
&lt;br /&gt;
Gibt die dritte Zeile der Datei text aus&lt;br /&gt;
 root@zero:~# sed -n &amp;quot;3p&amp;quot; text&lt;br /&gt;
 34&lt;br /&gt;
&lt;br /&gt;
Gibt die erste bis dritte Zeile von text aus&lt;br /&gt;
 root@zero:~# sed -n &amp;quot;1,3p&amp;quot; text&lt;br /&gt;
 sogar noch wichtiger&lt;br /&gt;
 123&lt;br /&gt;
 34&lt;br /&gt;
&lt;br /&gt;
Löschen der Zeile mit &amp;quot;sogar&amp;quot;&lt;br /&gt;
 root@zero:~# sed -e '/sogar/d' &amp;lt; text&lt;br /&gt;
 123&lt;br /&gt;
 34&lt;br /&gt;
 4711&lt;br /&gt;
 test&lt;br /&gt;
&lt;br /&gt;
und schreiben in text2&lt;br /&gt;
 root@zero:~# sed -e '/sogar/d' &amp;lt; text &amp;gt; text2&lt;br /&gt;
 root@zero:~# more text2&lt;br /&gt;
 123&lt;br /&gt;
 34&lt;br /&gt;
 4711&lt;br /&gt;
 test&lt;br /&gt;
&lt;br /&gt;
Alle 3en durch DREI ersetzen&lt;br /&gt;
 root@zero:~# sed -e 's/3/DREI/g' &amp;lt; text&lt;br /&gt;
 sogar noch wichtiger&lt;br /&gt;
 12DREI&lt;br /&gt;
 DREI4&lt;br /&gt;
 4711&lt;br /&gt;
 test&lt;br /&gt;
&lt;br /&gt;
==wc==&lt;br /&gt;
Zählt die Anzahl von Zeichen, Wörter oder Zeilen&lt;br /&gt;
&lt;br /&gt;
Optionen&lt;br /&gt;
* -m : Zählt die Anzahl der Zeichen&lt;br /&gt;
 root@zero:~# more name&lt;br /&gt;
 1. karl&lt;br /&gt;
 2. heinz&lt;br /&gt;
 3. hans&lt;br /&gt;
 4. otto&lt;br /&gt;
 root@zero:~# wc '''-m''' tel&lt;br /&gt;
 33 tel&lt;br /&gt;
&lt;br /&gt;
* -w : Zählt die Anzahl der Wörter (einschließlich Zahlen und andere Zeichen)&lt;br /&gt;
 root@zero:~# wc '''-w''' name&lt;br /&gt;
 8 name&lt;br /&gt;
&lt;br /&gt;
* -l : Zählt die Anzahl der Zeilen&lt;br /&gt;
 root@zero:~# wc '''-l''' name&lt;br /&gt;
 4 name&lt;br /&gt;
&lt;br /&gt;
==Sort==&lt;br /&gt;
&lt;br /&gt;
Zum sortieren von Dateien nach Feldern benutzt man sort. sort liest von STDIN man kann die Datei aber auch als Argument übergeben. &lt;br /&gt;
&lt;br /&gt;
Sortiert nach dem ersten Feld&lt;br /&gt;
  root@zero:~# sort /etc/passwd 	 &lt;br /&gt;
&lt;br /&gt;
Es wird geprüft ob die Datei schon sortiert ist &lt;br /&gt;
 root@zero:~# sort -c /etc/passwd 	&lt;br /&gt;
&lt;br /&gt;
Sortiert nach dem ersten Feld (Richtungsumkehr)  &lt;br /&gt;
 root@zero:~#  sort -r /etc/passwd&lt;br /&gt;
&lt;br /&gt;
Führende Leersortzeichen werden ignoriert &lt;br /&gt;
 root@zero:~# sort -b /etc/passwd&lt;br /&gt;
&lt;br /&gt;
Ausgabe  in die Datei pass&lt;br /&gt;
 root@zero:~# sort  /etc/passwd   -o pass	 &lt;br /&gt;
&lt;br /&gt;
nimmt : als Trenner -Voreinstellung ist TAB&lt;br /&gt;
  root@zero:~# sort -t : /etc/passwd&lt;br /&gt;
&lt;br /&gt;
sortiert nach dem  3 Feld,  der Trenner ist : und es wird nummerisch sortiert&lt;br /&gt;
&lt;br /&gt;
 root@zero:~# sort -t: +2 -n /etc/passwd		&lt;br /&gt;
&lt;br /&gt;
sortiert nach dem  3 Feld,  der Trenner ist : und es wird nummerisch sortiert&lt;br /&gt;
					&lt;br /&gt;
 root@zero:~# sort -t: -k 3 -n /etc/passwd&lt;br /&gt;
&lt;br /&gt;
Sortiert nach dem  3  bis zum 5 Feld, der Trenner ist : und es wird nummerisch sortiert&lt;br /&gt;
	&lt;br /&gt;
 root@zero:~# sort -t: -k 3,5 -n /etc/passwd	&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==INodes==&lt;br /&gt;
Inode (oder I-Node) wird im Deutschen am besten als Informationsknoten oder&lt;br /&gt;
Indexeintrag bezeichnet. Er fasst alle Attribute einer Datei zusammen außer dem Inhalt&lt;br /&gt;
und dem Namen der Datei.&lt;br /&gt;
&lt;br /&gt;
===Daten===&lt;br /&gt;
{| border=1 cellpadding=2&lt;br /&gt;
|type&lt;br /&gt;
|Der Typ der Datei wird als einzelner Buchstabe angezeigt. Der Typ einer Datei wird beim Anlegen der Datei festgelegt&lt;br /&gt;
|-&lt;br /&gt;
|Permissions &lt;br /&gt;
|Die Zugriffsrechte der Datei werden in den 12 Bit sstrwxrwxrwx abgespeichert.Wenn sie gesetzt sind, werden sie bei &lt;br /&gt;
der Ausgabe an Stelle der x-Rechte ausgegeben. Die Zugriffsrechte können mit dem Kommando chmod verändert werden.&lt;br /&gt;
|-&lt;br /&gt;
|link count&lt;br /&gt;
|In UNIX kann eine Datei mehr als einen Namen haben. Der Link Count gibt die Anzahl der Namen einer Datei an. Er kann&lt;br /&gt;
mit dem Kommando ln erhöht und dem Kommando rm erniedrigt werden.&lt;br /&gt;
|-&lt;br /&gt;
|owner&lt;br /&gt;
|Für den Dateieigentümer gelten die in der ersten rwx-Gruppe festgelegten Zugriffsrechte. Standardmäßig ist der &lt;br /&gt;
Eigentümer einer Datei derjenige Benutzer, der die Datei angelegt hat.&lt;br /&gt;
|-&lt;br /&gt;
|group&lt;br /&gt;
|Für Benutzer, die in der gleichen Gruppe sind, der die Datei angehört, gelten die in der zweiten rwx-Gruppe festgelegten&lt;br /&gt;
Zugriffsrechte. In System V gehört eine Datei standardmäßig der Gruppe an, in der der anlegende Benutzer gerade ist.&lt;br /&gt;
|-&lt;br /&gt;
|size&lt;br /&gt;
|Bei normalen Dateien und Verzeichnissen gibt diese Information die Länge der Datei in Byte an.&lt;br /&gt;
|-&lt;br /&gt;
|access time&lt;br /&gt;
|Die Zugriffszeit gibt den Zeitpunkt des letzten Lesezugriffes auf eine Datei an. Aus Effizienzgründen wird die &lt;br /&gt;
Zugriffszeit an Verzeichnissen nicht gesetzt, wenn ein Verzeichnis durchsucht wird, obwohl man dies erwarten könnte. ''(ls -l --time=atime)''&lt;br /&gt;
|-&lt;br /&gt;
|modification time&lt;br /&gt;
|Die Modifikationszeit gibt die Zeit des letzten Schreibzugriffes auf die Daten der Datei an. Intern speichert UNIX &lt;br /&gt;
die Zeit als Sekunden seit Beginn des Jahres 1970 und in GMT ab. Für die Ausgabe wird dies in ein besser lesbares &lt;br /&gt;
Format in der lokalen Zeitzone umgewandelt. ''(ls -l)''&lt;br /&gt;
|-&lt;br /&gt;
|change time &lt;br /&gt;
|Die Veränderungszeit gibt das Datum der letzten Statusänderung der Datei an. Sie wird immer dann gesetzt, wenn die &lt;br /&gt;
Informationen über die Datei sich ändern (Datum der Erzeugung wird nicht gespeichert) ''(ls -lc)''&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
===Dateiarten===&lt;br /&gt;
{| border=1 cellpadding=2&lt;br /&gt;
!Zeichen&lt;br /&gt;
!Typ&lt;br /&gt;
!Zweck&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;nowiki&amp;gt;-&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
|file&lt;br /&gt;
|normale Datei&lt;br /&gt;
|-&lt;br /&gt;
|d&lt;br /&gt;
|directory&lt;br /&gt;
|Verzeichnis&lt;br /&gt;
|-&lt;br /&gt;
|b&lt;br /&gt;
|block device&lt;br /&gt;
|Gerätedatei&lt;br /&gt;
|-&lt;br /&gt;
|c&lt;br /&gt;
|character device&lt;br /&gt;
|Gerätedatei&lt;br /&gt;
|-&lt;br /&gt;
|l&lt;br /&gt;
|link&lt;br /&gt;
|Querverweis&lt;br /&gt;
|-&lt;br /&gt;
|p&lt;br /&gt;
|named pipe&lt;br /&gt;
|Benannte Pipeline&lt;br /&gt;
|-&lt;br /&gt;
|s&lt;br /&gt;
|socket&lt;br /&gt;
|Netzwerkverbindung&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
====Normale Dateien====&lt;br /&gt;
Unter einer normalen Datei versteht man die Ansammlung von Daten. Dies kann ein Text, Programm, Bild oder sonstiges sein. &lt;br /&gt;
Beispiel&lt;br /&gt;
 root@zero:~# ls -l text | cut -c 1&lt;br /&gt;
 -&lt;br /&gt;
&lt;br /&gt;
====Verzeichnisse====&lt;br /&gt;
Dateien werden in Verzeichnissen gespeichert, nur so ist eine Ordnung möglich. &lt;br /&gt;
 root@zero:~# mkdir -v Ordner&lt;br /&gt;
 mkdir: Verzeichnis „Ordner“ angelegt&lt;br /&gt;
 &lt;br /&gt;
 root@zero:~# ls -ld Ordner | cut -c 1&lt;br /&gt;
 d&lt;br /&gt;
&lt;br /&gt;
====Gerätedateien (Block und Char)====&lt;br /&gt;
Gerätedateien ermöglichen Anwendungsprogrammen unter Benutzung des  Kernels den Zugriff auf die Hardwarekomponenten des Systems. Ansprechbar über Major und Minor Nummern &lt;br /&gt;
&lt;br /&gt;
Beispiele&lt;br /&gt;
&lt;br /&gt;
Sicherung des Master Boot Records der ersten Festplatte&lt;br /&gt;
 root@zero:~# dd if=/dev/sda of=/tmp/mbr.img bs=512 count=1&lt;br /&gt;
&lt;br /&gt;
Block Device &lt;br /&gt;
 root@zero:~# ls -l /dev/sda | cut -c 1 &lt;br /&gt;
 b&lt;br /&gt;
&lt;br /&gt;
Character Device &lt;br /&gt;
 root@zero:~# ls -l /dev/ttyS0  | cut -c 1 &lt;br /&gt;
 c&lt;br /&gt;
&lt;br /&gt;
Erstellen einer Gerätedatei&lt;br /&gt;
 root@zero:/dev# mknod sata1 b 8 0 &lt;br /&gt;
 root@zero:/dev# fdisk -l /dev/sata1 &lt;br /&gt;
 &lt;br /&gt;
 Platte /dev/sata1: 6442 MByte, 6442450944 Byte&lt;br /&gt;
 255 Köpfe, 63 Sektoren/Spuren, 783 Zylinder&lt;br /&gt;
 Einheiten = Zylinder von 16065 × 512 = 8225280 Bytes&lt;br /&gt;
 Disk identifier: 0x0005efab&lt;br /&gt;
 &lt;br /&gt;
       Gerät  boot.     Anfang        Ende     Blöcke   Id  System&lt;br /&gt;
 /dev/sata1p1   *           1         743     5968116   83  Linux&lt;br /&gt;
 /dev/sata1p2             744         783      321300    5  Erweiterte&lt;br /&gt;
 /dev/sata1p5             744         783      321268+  82  Linux Swap / Solaris&lt;br /&gt;
&lt;br /&gt;
====Named Pipes====&lt;br /&gt;
Benannte Pipes (Named Pipes) können dagegen auch zur Kommunikation zwischen Prozessen eingesetzt werden, die nicht miteinander&lt;br /&gt;
verwandt sind und sich darüber hinaus auf unterschiedlichen Rechnern innerhalb eines Netzwerkes befinden dürfen. Sie sind &lt;br /&gt;
flexibler als anonyme Pipes und eignen sich für sogenannte Client-Server-Anwendungen (es lassen sich auch RPCs realisieren).&lt;br /&gt;
Benannte Pipes ermöglichen die gleichzeitige Kommunikation in beide Richtungen, das heißt, Daten können im Vollduplexbetrieb &lt;br /&gt;
zwischen den Prozessen ausgetauscht werden.&lt;br /&gt;
 &lt;br /&gt;
Erstelle Named Pipe mit Namen /tmp/roehre. Schreibe &amp;quot;hallo welt&amp;quot; in die Pipe und bleibe&lt;br /&gt;
 xinux@zero:~$ mkfifo /tmp/roehre&lt;br /&gt;
 xinux@zero:~$ echo hallo welt &amp;gt; /tmp/roehre &lt;br /&gt;
&lt;br /&gt;
Gebe Inhalt der Pipe mit cat aus&lt;br /&gt;
 root@zero:~# cat &amp;lt; /tmp/roehre &lt;br /&gt;
 hallo welt&lt;br /&gt;
 root@zero:~# ls -l /tmp/roehre | cut -c 1&lt;br /&gt;
 p&lt;br /&gt;
&lt;br /&gt;
====Sockets====&lt;br /&gt;
Schnittstelle um es lokalen Anwendungen zu ermöglichen, miteinander Netwerkmässig zu kommunizieren.&lt;br /&gt;
&lt;br /&gt;
 root@lydia:~# netstat  -lnxp | tail -1&lt;br /&gt;
  unix  2 [ ACC ] STREAM HÖRT 21951 6646/nm-applet /tmp/orbit-thomas/linc-19f6-0-2b9b81095cede&lt;br /&gt;
&lt;br /&gt;
 root@lydia:~# ls -l /tmp/orbit-thomas/linc-19f6-0-2b9b81095cede  | cut -c 1 &lt;br /&gt;
 s&lt;br /&gt;
&lt;br /&gt;
====Links====&lt;br /&gt;
Bei Links handelt es sich um symbolische Verweise auf andere Dateien&lt;br /&gt;
&lt;br /&gt;
'''Softlink'''&lt;br /&gt;
Ein Softlink ist eine Datei die nur auf den Namen einer anderen Datei verweist. Wenn die Originaldatei gelöscht wird, zeigt &lt;br /&gt;
der Link ins Leere. &lt;br /&gt;
&lt;br /&gt;
 ln -s datei softlink&lt;br /&gt;
&lt;br /&gt;
{| border=1 cellpadding=2&lt;br /&gt;
| Vorteile&lt;br /&gt;
| Symbolische Links können auch auf Verzeichnisse angelegt werden&amp;lt;br&amp;gt;Sie sind partitionsübergreifend&amp;lt;br&amp;gt;Man kann sie auf Dateien anlegen, die noch nicht existieren&lt;br /&gt;
|-&lt;br /&gt;
| Nachteile&lt;br /&gt;
| Wenn das Original gelöscht ist, ist kein Zugriff mehr möglich&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Beispiel&lt;br /&gt;
 root@zero:~# ln -s text verweis&lt;br /&gt;
 root@zero:~# ls -l verweis&lt;br /&gt;
 lrwxrwxrwx 1 root root 4 2009-06-18 15:48 verweis -&amp;gt; text&lt;br /&gt;
&lt;br /&gt;
'''Hardlinks'''&lt;br /&gt;
 ln datei hardlink&lt;br /&gt;
Eigentlich ist jede Datei ein Hardlink. Ein Hardlink ist ein Verzeichniseintrag,&lt;br /&gt;
der auf eine Inode verweist. Beim Erzeugen einer Datei verweist ein Eintrag auf&lt;br /&gt;
eine Inode. Man kann dann weitere Verweise erzeugen. Der Linkcounter wird&lt;br /&gt;
jeweils um 1 erhöht. Beim Löschen einer Datei wird er jeweils um 1 reduziert.&lt;br /&gt;
Wird der Wert 0 erreicht, ist die Datei gelöscht.&lt;br /&gt;
{| border=1 cellpadding=2&lt;br /&gt;
| Vorteile&lt;br /&gt;
|Zugriff auf die Daten, selbst wenn das Orginal gelöscht ist.&lt;br /&gt;
|-&lt;br /&gt;
|Nachteile&lt;br /&gt;
|Man kann keine Hardlinks auf Verzeichnisse anlegen.&lt;br /&gt;
Ist nur innerhalb einer Partion möglich.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Beispiel&lt;br /&gt;
 root@zero:~# touch 1&lt;br /&gt;
 root@zero:~# echo &amp;quot;text&amp;quot; &amp;gt; 1&lt;br /&gt;
 root@zero:~# ln 1 2&lt;br /&gt;
 root@zero:~# more 2&lt;br /&gt;
 text&lt;br /&gt;
 root@zero:~# echo &amp;quot;doch kein text&amp;quot; &amp;gt; 1&lt;br /&gt;
 root@zero:~# more 1&lt;br /&gt;
 doch kein text&lt;br /&gt;
 root@zero:~# more 2&lt;br /&gt;
 doch kein text&lt;br /&gt;
&lt;br /&gt;
Weitere Optionen:&lt;br /&gt;
 -b sichert Dateien, statt sie zu überschreiben &lt;br /&gt;
 -f Überschreibt bestehende, gleichnamige Dateien&lt;br /&gt;
 -i fragt vor dem Überschreiben nach Bestätigung&lt;br /&gt;
 -v ausführliche Meldungen&lt;br /&gt;
&lt;br /&gt;
==Prozesse==&lt;br /&gt;
===Was ist ein Prozess?===&lt;br /&gt;
Ein Prozess setzt sich aus zwei Teilen zusammen:&lt;br /&gt;
&lt;br /&gt;
1.Programm, das in den Hauptspeicher geladen wurde&lt;br /&gt;
&lt;br /&gt;
2.Prozessumgebung&lt;br /&gt;
&lt;br /&gt;
Unter einem Prozess versteht man ein Programm (binär), das in den Hauptspeicher&lt;br /&gt;
geladen wurde. Also nicht das Program selbst, das auf der Festplatte liegt ist der&lt;br /&gt;
Prozess, sondern es wird erst durch das Laden in den Hauptspeicher dazu.&lt;br /&gt;
Normalerweise liegt ein Programm als ausführbare Datei irgendwo auf der&lt;br /&gt;
Festplatte oder auf Diskette. Ob es sich bei dem Programm um eine binäre Datei&lt;br /&gt;
handelt, kann man mit dem Befehl '' file '' feststellen.&lt;br /&gt;
 &lt;br /&gt;
 root@zero:~# file /bin/mkdir&lt;br /&gt;
 /bin/mkdir: ELF 32-bit LSB executable, Intel 80386, version 1 (SYSV), dynamically linked (uses shared libs), for GNU/Linux 2.6.8, stripped&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Die Datei liegt im Maschinencode vor und kann in den Hauptspeicher geladen&lt;br /&gt;
werden. Sobald dies geschehen ist, kann der Rechner diesen Maschinencode&lt;br /&gt;
abarbeiten (ausführen).&lt;br /&gt;
&lt;br /&gt;
Da aber ein Programm nicht direkt auf die Hardware zugreifen soll, muss es vom&lt;br /&gt;
Betriebsystem kontrolliert werden. Das Betriebssystem liegt logisch gesehen&lt;br /&gt;
zwischen Hardware und Anwendung. Das Betriebssystem ordnet jedem Prozess&lt;br /&gt;
verschiedene Kenndaten zu, um die Prozesse verwalten zu können. Alle&lt;br /&gt;
Kenndaten, die einem Prozess zugeordnet sind, nennt man die&lt;br /&gt;
Prozessumgebung.Wenn man in der Shell ein Kommando eingibt, wird ein Prozess&lt;br /&gt;
kreiert. Natürlich ist die Shell selbst auch ein Prozess. Ein Prozess kann aber&lt;br /&gt;
genauso gut ein Serverprozess (Dienst) sein, z.B. Apache.&lt;br /&gt;
Ein wesentliches Merkmal eines Prozesses ist die Prozesskommunikation. Über im&lt;br /&gt;
Betriebssystem implementierte Methoden ist es möglich, dass verschiedene&lt;br /&gt;
Prozesse Signale und Daten untereinander austauschen können.&lt;br /&gt;
Dadurch wird auch dem Benutzer ermöglicht, einem Prozeß bestimmte Signale zu&lt;br /&gt;
senden bzw. auf den Status eines Prozesses Einfluss zu nehmen.&lt;br /&gt;
&lt;br /&gt;
===Prozesstabelle (Anzeige mit ps)===&lt;br /&gt;
Da zu jedem Prozess Kenndaten geführt werden, müssen diese auch irgendwo&lt;br /&gt;
festgehalten werden. Das geschieht in der sogenannten Prozesstabelle.&lt;br /&gt;
&lt;br /&gt;
Kenndaten der Prozesse (Auswahl):&lt;br /&gt;
* F Flags (z.B. ausgelagert; Systemprozess; Trace,...)&lt;br /&gt;
* UID Nutzer, mit dessen Rechten der Prozess ausgeführt wird&lt;br /&gt;
* PID Prozess - ID. Diese Nummer gibt eine eindeutige Prozess - Nummer&lt;br /&gt;
an. Sie wird vom System automatisch beim Starten des Prozesses&lt;br /&gt;
vergeben und ist für die Laufzeit eindeutig.&lt;br /&gt;
* PPID Prozessnumer der Eltern-Prozesses&lt;br /&gt;
* PRI Priorität eines Prozesses; je niedriger der Wert ist, desto besser&lt;br /&gt;
* NI ist der Nicewert des Prozesses; Nice erniedrigt den Grundwert&lt;br /&gt;
der Priorität des Prozesses und gibt damit Prozessorzeit für andere&lt;br /&gt;
Prozesse frei.&lt;br /&gt;
* SIZE Speichergröße des Prozesses inklusive Stack (eine Art Zwischenspeicher)&lt;br /&gt;
* RSS Verbrauch an physischen Speicher&lt;br /&gt;
* WCHAN ist der Name der Kernerlfunktion, in der der Prozess schläft&lt;br /&gt;
* STAT Status des Prozesses&lt;br /&gt;
R läuft       S schlafend     D nicht störbarer Schlaf&lt;br /&gt;
T angehalten  Z Zombie        W der Prozess belegt keine Seiten&lt;br /&gt;
* TIME Bisland benötigte Prozessorzeit&lt;br /&gt;
* SIZE ist die Größe von Text, Daten und Stack&lt;br /&gt;
* TTY die Nummer des kontrollierenden Teminal; wenn hier ein ? steht,&lt;br /&gt;
handelt es sich um einen Dämon oder Serverprozess.&lt;br /&gt;
* COMMAND Angabe des Prozesses selbst. Dies ist meist der Programmname.&lt;br /&gt;
&lt;br /&gt;
Weiteres&lt;br /&gt;
* GID Gruppe, unter der der Prozess läuft&lt;br /&gt;
* Verweis auf das aktuellen Arbeitsverzeichnis&lt;br /&gt;
* Um mit relativen Pfadangaben arbeiten zu können braucht man diesen Eintrag&lt;br /&gt;
* Tabelle mit Verweisen auf aktuell geöffnete Dateien&lt;br /&gt;
* 3 sind automatisch geöffnet Standardeingabe, Standardausgabe und&lt;br /&gt;
Standardfehlerkanal&lt;br /&gt;
&lt;br /&gt;
Beispiel&lt;br /&gt;
 root@zero:~# ps -l&lt;br /&gt;
 F S   UID   PID  PPID  C PRI  NI ADDR SZ WCHAN  TTY          TIME CMD&lt;br /&gt;
 4 R     0 18639 18631  0  80   0 -  1080 -      pts/0    00:00:00 bash&lt;br /&gt;
 0 R     0 25904 18639  0  80   0 -   635 -      pts/0    00:00:00 ps&lt;br /&gt;
&lt;br /&gt;
===Eltern und Kinder===&lt;br /&gt;
Jeder Prozess kann weitere Prozesse erzeugen. Die erzeugten Prozesse bezeichnet&lt;br /&gt;
man als Kindprozesse. Jeder Kindprozess weiß anhand der PID, woher er stammt.&lt;br /&gt;
&lt;br /&gt;
Alle Prozesse sind von einem anderen Prozess gestartet worden, mit Ausnahme&lt;br /&gt;
des Pseudoprozesses (noch im Kernel beim Starten erzeugter Prozess). Dieser hat&lt;br /&gt;
die Prozessnummer 0. Er hat die Aufgabe, den Init Prozess ( /sbin/init die Nummer&lt;br /&gt;
1) zu starten, der in System V alle anderen Prozesse direkt oder über seine Kind-&lt;br /&gt;
prozesse startet. (init wird konfiguriert durch die /etc/inittab)&lt;br /&gt;
&lt;br /&gt;
Es gibt zwei Arten wie ein Prozess gestartet werden kann:&lt;br /&gt;
&lt;br /&gt;
# Fork und Exec: Prozessumgebung wird dupliziert, der neue Prozess bekommt eine eigene neue PID&lt;br /&gt;
# Exec: Alter Prozess wird durch neuen Prozess überladen (geht mit dem shell-buildin exec)&lt;br /&gt;
&lt;br /&gt;
'''Rechte auf Objekte UID GID'''&lt;br /&gt;
Ob ein Prozess auf eine Datei zugreifen kann, entscheidet der Kernel anhand der&lt;br /&gt;
Zugriffssrechte, die auf der Datei gesetzt sind. Er checkt anhand der UID und GID&lt;br /&gt;
des Prozesses, ob es erlaubt ist. Mit dieser Technik wird letztendlich geprüft, was&lt;br /&gt;
ein User darf, und was nicht.&lt;br /&gt;
&lt;br /&gt;
===Rechenzeit und Priorität===&lt;br /&gt;
Da auch bei Prozessen eine Gerechtigkeit herschen muss, muss eine Instanz&lt;br /&gt;
darüber entscheiden wie lange ein Prozess Rechenzeit verbrauchen darf.&lt;br /&gt;
Folgende Kenndaten werden dazu benötigt&lt;br /&gt;
* clocktick = Zeiteinheit&lt;br /&gt;
* n = Faktor über den Kernel einstellbar&lt;br /&gt;
* slice = n &amp;lt;nowiki&amp;gt;*&amp;lt;/nowiki&amp;gt; clocktick&lt;br /&gt;
* agingtime = weitere Zeiteinheit über den Kernel einstellbar&lt;br /&gt;
&lt;br /&gt;
Es wird davon ausgegangen das der Prozess mit der niedrigsten Priorität gerade&lt;br /&gt;
rechnet. Pro clocktick erhöht sich die Priorität dieses Prozesses um eins.&lt;br /&gt;
&lt;br /&gt;
Jetzt können 3 Situationen eintreten die alle dazu führen das der Scheduler&lt;br /&gt;
aufgerufen wird.&lt;br /&gt;
&lt;br /&gt;
# Prozess blockiert wegen einer Ausgabe oder Eingabe.&lt;br /&gt;
# Gibt Rechenzeit freiwillig ab.&lt;br /&gt;
# Der Slice endet.&lt;br /&gt;
&lt;br /&gt;
Der Aufruf des Schedulers bewirkt das der Prozess mit der niedrigsten Priorität&lt;br /&gt;
gescheduled wird, er also nun rechnen darf. Nach Ablauf der agingtime werden&lt;br /&gt;
nun die Prozesse &amp;quot;gealtert&amp;quot;. Das geschieht nach folgender Formel&lt;br /&gt;
&lt;br /&gt;
Neue Priorität = Alte Priorität / 2 + Nicewert&lt;br /&gt;
&lt;br /&gt;
Der User hat die Möglichkeit, über den sogenannten Nicefaktor den Grundwert für&lt;br /&gt;
einen Prozess zu senken. Der Prozess braucht dann länger für seine Abarbeitung.&lt;br /&gt;
Er verhält sich somit netter zu den anderen Prozessen. Normale User können nur&lt;br /&gt;
netter werden, der Systemverwalter kann auch nicht netter (gemeiner) werden. Der&lt;br /&gt;
Bereich liegt zwischen 19 (sehr nett) bis 0 (weniger nett) für die User, und 19 bis&lt;br /&gt;
-20 für root.&lt;br /&gt;
&lt;br /&gt;
[[Image:pri.png]]&lt;br /&gt;
&lt;br /&gt;
'''Signale'''&lt;br /&gt;
&lt;br /&gt;
Mit den Kommando kill und killall kann man Prozessen Signale schicken&lt;br /&gt;
&lt;br /&gt;
 kill -Signalnummer PID &lt;br /&gt;
&lt;br /&gt;
Signalnummer&lt;br /&gt;
{| border=1 cellpadding=2&lt;br /&gt;
!Signalname&lt;br /&gt;
!Wert&lt;br /&gt;
!Aktion&lt;br /&gt;
|-&lt;br /&gt;
|SIGHUP&lt;br /&gt;
|1&lt;br /&gt;
|Neuinitialisierung eines Prozesses&lt;br /&gt;
|-&lt;br /&gt;
|SIGINT&lt;br /&gt;
|2&lt;br /&gt;
|Interrupt-Signal von der Tastatur (STRG+c)&lt;br /&gt;
|-&lt;br /&gt;
|SIGQUIT&lt;br /&gt;
|3&lt;br /&gt;
|Interrupt-Signal von der Tastatur (STRG+c) mit Dump&lt;br /&gt;
|-&lt;br /&gt;
|SIGKILL&lt;br /&gt;
|9&lt;br /&gt;
|unwiderrufliches Beendigungssignal (Töten)&lt;br /&gt;
|-&lt;br /&gt;
|SIGSEGV&lt;br /&gt;
|11&lt;br /&gt;
|Ungültige Speicherreferenz (bedeutet oft auf defekten Speicher)&lt;br /&gt;
|-&lt;br /&gt;
|SIGTERM &lt;br /&gt;
|15&lt;br /&gt;
|Beendigungssignal (geöffnete Dateien werden geschlossen)&lt;br /&gt;
|-&lt;br /&gt;
|SIGCONT &lt;br /&gt;
|18&lt;br /&gt;
|Weiterfahren, wenn gestoppt&lt;br /&gt;
|-&lt;br /&gt;
|SIGSTOP&lt;br /&gt;
|19&lt;br /&gt;
|Prozessstop&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Beispiel&lt;br /&gt;
 root@zero:~# kill -1 7562&lt;br /&gt;
&lt;br /&gt;
===Programme im Zusammenhang mit Prozessen===&lt;br /&gt;
* ps: Zeigt die Prozesse mit ihrem Status an&lt;br /&gt;
 root@zero:~# ps&lt;br /&gt;
  PID TTY          TIME CMD&lt;br /&gt;
 14134 pts/0    00:00:00 bash&lt;br /&gt;
 14149 pts/0    00:00:00 ps&lt;br /&gt;
&lt;br /&gt;
 root@zero:~# ps -elf | grep apache&lt;br /&gt;
 1 S root      5738     1  0  80   0 -  5461 select Jun16 ?        00:00:00 /usr/sbin/apache2 -k start&lt;br /&gt;
 5 S www-data  5739  5738  0  80   0 -  5581 inet_c Jun16 ?        00:00:00 /usr/sbin/apache2 -k start&lt;br /&gt;
 5 S www-data  5742  5738  0  80   0 -  5461 inet_c Jun16 ?        00:00:00 /usr/sbin/apache2 -k start&lt;br /&gt;
 5 S www-data  5743  5738  0  80   0 -  5461 inet_c Jun16 ?        00:00:00 /usr/sbin/apache2 -k start&lt;br /&gt;
 5 S www-data  5745  5738  0  80   0 -  5461 inet_c Jun16 ?        00:00:00 /usr/sbin/apache2 -k start&lt;br /&gt;
 5 S www-data  5746  5738  0  80   0 -  5461 inet_c Jun16 ?        00:00:00 /usr/sbin/apache2 -k start&lt;br /&gt;
 0 S root     14153 14134  0  80   0 -   837 pipe_w 16:59 pts/0    00:00:00 grep apache&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* nice: Lässt ein Programm mit verändertem Grundwert der Priorität laufen&lt;br /&gt;
 root@zero:~# nice&lt;br /&gt;
 0&lt;br /&gt;
 root@zero:~# nice -n 9 bash&lt;br /&gt;
 root@zero:~# nice&lt;br /&gt;
 9&lt;br /&gt;
 root@zero:~#&lt;br /&gt;
&lt;br /&gt;
* renice: Ändert den Grundwert der Priorität eines laufenden Prozesses&lt;br /&gt;
 root@zero:~# renice 10 5742&lt;br /&gt;
 5742: Alte Priorität: 0, neue Priorität: 10&lt;br /&gt;
&lt;br /&gt;
* top: Zeigt die Prozesse mit ihrem Status an (Abbrechen mit q)&lt;br /&gt;
 root@zero:~# top&lt;br /&gt;
&lt;br /&gt;
* pstree: Zeigt die Prozesse als Baumstruktur&lt;br /&gt;
 root@zero:~# pstree&lt;br /&gt;
 init─┬─NetworkManager&lt;br /&gt;
      ├─acpid&lt;br /&gt;
      ├─apache2───5*[apache2]&lt;br /&gt;
      ├─atd&lt;br /&gt;
      ├─bluetoothd&lt;br /&gt;
      ├─console-kit-dae───63*[{console-kit-dae}]&lt;br /&gt;
      ├─cron&lt;br /&gt;
      ├─cupsd&lt;br /&gt;
      ├─dbus-daemon&lt;br /&gt;
      ├─dd&lt;br /&gt;
      ├─gdm───gdm─┬─Xorg&lt;br /&gt;
      │           └─gdmgreeter&lt;br /&gt;
      ├─6*[getty]&lt;br /&gt;
      ├─hald───hald-runner─┬─hald-addon-acpi&lt;br /&gt;
      │                    ├─hald-addon-inpu&lt;br /&gt;
      │                    └─2*[hald-addon-stor]&lt;br /&gt;
      ├─klogd&lt;br /&gt;
      ├─nm-system-setti&lt;br /&gt;
      ├─nmbd&lt;br /&gt;
      ├─nscd───11*[{nscd}]&lt;br /&gt;
      ├─portmap&lt;br /&gt;
      ├─rpc.statd&lt;br /&gt;
      ├─slapd───2*[{slapd}]&lt;br /&gt;
      ├─smbd───smbd&lt;br /&gt;
      ├─sshd───sshd───bash───bash───pstree&lt;br /&gt;
      ├─syslogd&lt;br /&gt;
      ├─system-tools-ba&lt;br /&gt;
      ├─udevd&lt;br /&gt;
      ├─winbindd─┬─winbindd───winbindd&lt;br /&gt;
      │          └─3*[winbindd]&lt;br /&gt;
      └─wpa_supplicant&lt;br /&gt;
&lt;br /&gt;
===Jobs===&lt;br /&gt;
Unter einem Job versteht man ein Programm, welches man von der Shell gelöst&lt;br /&gt;
hat. D. h. man kann ganz normal weiter arbeiten und der Job verrichtet seinen&lt;br /&gt;
Dienst im Hintergrund. Man kann jederzeit zu diesem Job wieder Kontakt&lt;br /&gt;
aufnehmen.&lt;br /&gt;
&lt;br /&gt;
Ein Job kann auf 2 Arten gestarten werden:&lt;br /&gt;
&lt;br /&gt;
# Durch Anhängen des &amp;amp; Zeichens beim Programmstart&lt;br /&gt;
 root@zero:~# tail -f /var/log/messages &amp;amp;&lt;br /&gt;
 Jun 19 06:59:31 zero -- MARK --&lt;br /&gt;
 Jun 19 07:19:31 zero -- MARK --&lt;br /&gt;
 Jun 19 07:39:32 zero -- MARK --&lt;br /&gt;
 Jun 19 07:44:57 zero syslogd 1.5.0#5ubuntu3: restart.&lt;br /&gt;
 Jun 19 07:59:32 zero -- MARK --&lt;br /&gt;
 Jun 19 08:19:32 zero -- MARK --&lt;br /&gt;
 Jun 19 08:39:32 zero -- MARK --&lt;br /&gt;
 Jun 19 08:59:32 zero -- MARK --&lt;br /&gt;
 Jun 19 09:19:33 zero -- MARK --&lt;br /&gt;
 Jun 19 09:39:33 zero -- MARK --&lt;br /&gt;
 [3] 27421&lt;br /&gt;
&lt;br /&gt;
# Durch Stoppen des Prozesses durch Drücken von Strg-Z und in den Hintergrund schicken mit %n (n ist die Jobnummer)&lt;br /&gt;
 root@zero:~# watch cat /proc/cpuinfo&lt;br /&gt;
 Strg-Z&lt;br /&gt;
 [4]+  Stopped                 watch cat /proc/cpuinfo&lt;br /&gt;
 root@zero:~# bg %4&lt;br /&gt;
 [4]+ watch cat /proc/cpuinfo &amp;amp;&lt;br /&gt;
&lt;br /&gt;
Anweisungen im Zusammenhang mit Jobs (n ist die Jobnummer)&lt;br /&gt;
* bg %n : Einen Job in den Hintergrund stellen (wie oben)&lt;br /&gt;
* fg %n : Einen Job in den Vordergrund holen&lt;br /&gt;
 root@zero:~# fg %4&lt;br /&gt;
 watch cat /proc/cpuinfo&lt;br /&gt;
&lt;br /&gt;
* jobs : Aktive Jobs ausgeben&lt;br /&gt;
&lt;br /&gt;
 root@zero:~# jobs&lt;br /&gt;
 [1]   Running                 tail -f /var/log/syslog &amp;amp;&lt;br /&gt;
 [2]   Running                 tail -f /var/log/syslog &amp;amp;&lt;br /&gt;
 [3]-  Running                 tail -f /var/log/messages &amp;amp;&lt;br /&gt;
 [4]+  Stopped                 watch cat /proc/cpuinfo&lt;br /&gt;
&lt;br /&gt;
* Strg-Z : Einen Vordergrund-Job vorübergehend anhalten&lt;br /&gt;
* kill -STOP %n : Unterbricht Job im Hintergrund&lt;br /&gt;
 root@zero:~# kill -STOP %1&lt;br /&gt;
 root@zero:~# jobs&lt;br /&gt;
 [1]+  '''Stopped'''                 tail -f /var/log/syslog&lt;br /&gt;
 [2]   Running                 tail -f /var/log/syslog &amp;amp;&lt;br /&gt;
 [3]   Running                 tail -f /var/log/messages &amp;amp;&lt;br /&gt;
 [4]-  Stopped                 watch cat /proc/cpuinfo&lt;br /&gt;
* kill -CONT %n : Setzt den unterbrochenen Job im Hintergrund fort&lt;br /&gt;
root@zero:~# kill -CONT %1&lt;br /&gt;
root@zero:~# jobs&lt;br /&gt;
 [1]+  '''Running'''                 tail -f /var/log/syslog &amp;amp;&lt;br /&gt;
 [2]   Running                 tail -f /var/log/syslog &amp;amp;&lt;br /&gt;
 [3]   Running                 tail -f /var/log/messages &amp;amp;&lt;br /&gt;
 [4]-  Stopped                 watch cat /proc/cpuinfo&lt;br /&gt;
* kill -KILL %n : Tötet Job im Hintergrund&lt;br /&gt;
 root@zero:~# kill -KILL %1&lt;br /&gt;
 root@zero:~# jobs&lt;br /&gt;
 [1]+  '''Killed'''                  tail -f /var/log/syslog&lt;br /&gt;
 [2]   Running                 tail -f /var/log/syslog &amp;amp;&lt;br /&gt;
 [3]   Running                 tail -f /var/log/messages &amp;amp;&lt;br /&gt;
 [4]-  Stopped                 watch cat /proc/cpuinfo&lt;br /&gt;
 root@zero:~# jobs&lt;br /&gt;
 [2]   Running                 tail -f /var/log/syslog &amp;amp;&lt;br /&gt;
 [3]-  Running                 tail -f /var/log/messages &amp;amp;&lt;br /&gt;
 [4]+  Stopped                 watch cat /proc/cpuinfo&lt;br /&gt;
&lt;br /&gt;
Bedingungen, die zu Jobausführung eingehalten werden sollen:&lt;br /&gt;
* Der Job soll nicht auf den Bildschirm schreiben (Standardausgabe +Standardfehlerkanal).&lt;br /&gt;
* Er soll keine Eingaben vom Benutzer erwarten.&lt;br /&gt;
&lt;br /&gt;
==Suchen von Dateien==&lt;br /&gt;
===find===&lt;br /&gt;
 find ab_wo_wird_gesucht was_wird_gesucht aktion&lt;br /&gt;
 find [Pfad] [Bedingung] [Aktion]&lt;br /&gt;
&lt;br /&gt;
====Nach Namen====&lt;br /&gt;
 find [Pfad] '''-name''' [Name]&lt;br /&gt;
 &lt;br /&gt;
Finde alle Dateien mit Namen test ab dem Verzeichnis /home und gebe diese Zeilenweise aus&lt;br /&gt;
 root@zero:~# find /home -name test -print&lt;br /&gt;
 /home/xinux/test&lt;br /&gt;
 /home/test&lt;br /&gt;
&lt;br /&gt;
Wie oben, jedoch mit Namensanfang test&lt;br /&gt;
 root@zero:/home/xinux# find /home -name 'test*'&lt;br /&gt;
 /home/xinux/testdatei&lt;br /&gt;
 /home/xinux/test&lt;br /&gt;
 /home/test&lt;br /&gt;
&lt;br /&gt;
====Nach Benutzer(Eigentümer)====&lt;br /&gt;
 root@zero:/tmp# find /tmp/ '''-user''' xinux&lt;br /&gt;
 /tmp/datei&lt;br /&gt;
&lt;br /&gt;
====Nach Gruppe====&lt;br /&gt;
 root@zero:/tmp# find /tmp/ '''-group''' hacker&lt;br /&gt;
 /tmp/datei3&lt;br /&gt;
 /tmp/datei2&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
====Nach Typ====&lt;br /&gt;
Es wird nach Dateien anhand Ihrer Art gesucht:&lt;br /&gt;
 find [Pfad] '''-type''' [Typ] &lt;br /&gt;
Typ:&lt;br /&gt;
* f: Normale Dateien&lt;br /&gt;
 root@zero:~# find /tmp/ -type f&lt;br /&gt;
 /tmp/mbr.img&lt;br /&gt;
 /tmp/datei&lt;br /&gt;
 /tmp/zeugs&lt;br /&gt;
 /tmp/.X0-lock&lt;br /&gt;
* d: Verzeichnisse&lt;br /&gt;
 root@zero:~# find /var/log -type d&lt;br /&gt;
 /var/log&lt;br /&gt;
 /var/log/apache2&lt;br /&gt;
 /var/log/unattended-upgrades&lt;br /&gt;
 /var/log/apparmor&lt;br /&gt;
 /var/log/ConsoleKit&lt;br /&gt;
 /var/log/dist-upgrade&lt;br /&gt;
 /var/log/dist-upgrade/20090526-1052&lt;br /&gt;
 /var/log/cups&lt;br /&gt;
 /var/log/apt&lt;br /&gt;
 /var/log/fsck&lt;br /&gt;
 /var/log/samba&lt;br /&gt;
 /var/log/samba/cores&lt;br /&gt;
 /var/log/samba/cores/smbd&lt;br /&gt;
 /var/log/samba/cores/nmbd&lt;br /&gt;
 /var/log/samba/cores/winbindd&lt;br /&gt;
 /var/log/installer&lt;br /&gt;
 /var/log/gdm&lt;br /&gt;
 /var/log/news&lt;br /&gt;
* c: Char Devices (Zeichenorientierte Gerätedatei)&lt;br /&gt;
 root@zero:~# find / -type c&lt;br /&gt;
 /lib/udev/devices/kmem&lt;br /&gt;
 /lib/udev/devices/null&lt;br /&gt;
 /lib/udev/devices/console&lt;br /&gt;
 /lib/udev/devices/ppp&lt;br /&gt;
 /lib/udev/devices/net/tun&lt;br /&gt;
* b: Block Devices (Blockorientierte Gerätedatei)&lt;br /&gt;
* p: Benannte Pipe&lt;br /&gt;
* l: Links&lt;br /&gt;
* s: Sockets&lt;br /&gt;
&lt;br /&gt;
====Nach Modifikation====&lt;br /&gt;
Listet alle Dateien in /etc auf, die innerhalb von zwei Tagen modifiziert wurden&lt;br /&gt;
 root@zero:/var/log# find /etc/ -mtime 2 -print&lt;br /&gt;
 /etc/apache2&lt;br /&gt;
 /etc/apache2/mods-available&lt;br /&gt;
 /etc/apache2/conf.d&lt;br /&gt;
 /etc/apache2/sites-available&lt;br /&gt;
 /etc/bash_completion.d&lt;br /&gt;
 /etc/blkid.tab.old&lt;br /&gt;
 /etc/firefox-3.0/profile&lt;br /&gt;
 /etc/firefox-3.0/profile/chrome&lt;br /&gt;
 /etc/firefox-3.0/pref&lt;br /&gt;
 /etc/profile.d&lt;br /&gt;
 /etc/ufw/applications.d&lt;br /&gt;
 /etc/logrotate.d&lt;br /&gt;
 /etc/xulrunner-1.9&lt;br /&gt;
 /etc/blkid.tab&lt;br /&gt;
 /etc/cron.daily&lt;br /&gt;
 /etc/alternatives&lt;br /&gt;
 /etc/alternatives/x-www-browser&lt;br /&gt;
 /etc/alternatives/xulrunner&lt;br /&gt;
 /etc/gre.d&lt;br /&gt;
 /etc/hal/fdi/policy&lt;br /&gt;
 /etc/dbus-1/system.d&lt;br /&gt;
 /etc/udev/rules.d&lt;br /&gt;
&lt;br /&gt;
====Nach Größe====&lt;br /&gt;
Finde Dateien in /tmp, die größer als 100 MByte sind&lt;br /&gt;
 root@zero:/tmp# find /tmp/ -size +100M&lt;br /&gt;
 /tmp/datei&lt;br /&gt;
&lt;br /&gt;
Finde Dateien in /tmp, die kleiner als 100 KByte sind&lt;br /&gt;
 root@zero:/tmp# find /tmp/ -size -100k&lt;br /&gt;
 /tmp/&lt;br /&gt;
 /tmp/datei3&lt;br /&gt;
 /tmp/backup &lt;br /&gt;
 /tmp/datei2&lt;br /&gt;
 /tmp/.winbindd &lt;br /&gt;
 /tmp/.winbindd/pipe&lt;br /&gt;
 /tmp/mbr.img&lt;br /&gt;
 /tmp/zeugs&lt;br /&gt;
 /tmp/.ICE-unix&lt;br /&gt;
 /tmp/.X0-lock&lt;br /&gt;
 /tmp/datei1&lt;br /&gt;
 /tmp/.X11-unix&lt;br /&gt;
 /tmp/.X11-unix/X0&lt;br /&gt;
 /tmp/pulse-PKdhtXMmr18n&lt;br /&gt;
&lt;br /&gt;
====Nach Berechtigungen====&lt;br /&gt;
Finde Dateien in Home mit der Berechtigung 777 (-rwxrwxrwx)&lt;br /&gt;
 root@zero:/var# find /home/ -perm 777&lt;br /&gt;
 /home/samba&lt;br /&gt;
 /home/xinux/Examples&lt;br /&gt;
 /home/xinux/.pulse/1f0763ee4cf4c7e1d3c07fd149dda37b:runtime&lt;br /&gt;
 /home/test/Examples&lt;br /&gt;
&lt;br /&gt;
===locate===&lt;br /&gt;
Locate arbeitet über einen Index, der erstellt und aktualisiert werden muss. Aus diesem Grund kann locate teilweise nicht &lt;br /&gt;
akutell sein. Es ist immer schneller als find und es durchsucht immer das ganze Dateisystem. &lt;br /&gt;
 locate [Dateiname]&lt;br /&gt;
 &lt;br /&gt;
Lokalisiere die Datei wvdial.conf. Anmerkung: Der Stern wird beim Suchen automatisch hinzugefügt. Entspricht also&lt;br /&gt;
wvidal.conf*&lt;br /&gt;
 root@zero:~# locate wvdial.conf&lt;br /&gt;
 /etc/wvdial.conf&lt;br /&gt;
 /usr/share/man/man5/wvdial.conf.5.gz&lt;br /&gt;
 /var/lib/dpkg/info/wvdial.conffiles&lt;br /&gt;
 /var/lib/dpkg/info/wvdial.config&lt;br /&gt;
&lt;br /&gt;
Lokalisiere die Datei wvdial.conf und nur diese&lt;br /&gt;
 root@zero:~# locate -b '\wvdial.conf'&lt;br /&gt;
 /etc/wvdial.conf&lt;br /&gt;
&lt;br /&gt;
Aktualisieren des Indexes&lt;br /&gt;
 root@zero:~# updatedb&lt;br /&gt;
&lt;br /&gt;
==Wie wird ein Kommando lokalisiert==&lt;br /&gt;
Wenn die Shell alle Ersetzungen in der Kommandozeile vorgenommen und alle Umleitungen vorbereitet hat, ist der Zeitpunkt &lt;br /&gt;
gekommen, auf den der Anwender die ganze Zeit gewartet hat. Die Shell versucht das Kommando auszuführen. Dazu muss sie &lt;br /&gt;
es aber erst lokalisieren. Das erste passende Kommando wird ausgeführt.&lt;br /&gt;
&lt;br /&gt;
Als Kommandoname wird immer das erste Wort eines einfachen Kommandos erkannt. Ein Kommandoname kann mit Pfadnamen in &lt;br /&gt;
einem Verzeichnis (absolut oder relativ) angegeben werden. Die Shell erkennt dies an (mindestens) einem Slash `/' &lt;br /&gt;
im Kommandonamen. Wenn kein Verzeichnis angegeben ist, versucht die Shell selbst, das Kommando zu finden. Dazu wird &lt;br /&gt;
der Kommandoname zuerst in der Hashtabelle gesucht, dann wird er mit den Synonymen, mit den Scriptfunktionen und &lt;br /&gt;
schließlich mit den Shellfunktionen verglichen. &lt;br /&gt;
&lt;br /&gt;
Wird auf diese Weise kein Programm dieses Namens gefunden, werden alle in der PATH-Umgebungsvariablen aufgeführten &lt;br /&gt;
Verzeichnisse nach einer ausführbaren Datei dieses Namens durchsucht. Wird auch hier kein passendes Kommando gefunden, &lt;br /&gt;
gibt die Shell eine Fehlermeldung aus.&lt;br /&gt;
&lt;br /&gt;
===which und type===&lt;br /&gt;
====which====&lt;br /&gt;
which gibt die vollen Pfadnamen der Dateien aus, die bei Benutzung des angegebenen Befehls ausgeführt werden würden.&lt;br /&gt;
&lt;br /&gt;
 which [-a] Dateiname &lt;br /&gt;
&lt;br /&gt;
Optionen:&lt;br /&gt;
&lt;br /&gt;
* -a : Alle Treffer ausgeben, nicht nur den ersten&lt;br /&gt;
* --skip-dot : Verzeichnisse, die mit einem Punkt beginnen, auslassen&lt;br /&gt;
&lt;br /&gt;
Beispiel&lt;br /&gt;
 root@zero:~# which startx&lt;br /&gt;
 /usr/bin/startx&lt;br /&gt;
&lt;br /&gt;
====type====&lt;br /&gt;
Anzeigen der absoluten Pfadnamen von Befehlen, und ob sich diese Befehle in der Hash-Tabelle der aktuellen&lt;br /&gt;
Shell befinden.&lt;br /&gt;
&lt;br /&gt;
 type [Optionen] Befehle&lt;br /&gt;
&lt;br /&gt;
Beispiel&lt;br /&gt;
 root@zero:~# type ls&lt;br /&gt;
 ls is aliased to `ls --color=auto'&lt;br /&gt;
&lt;br /&gt;
Optionen:&lt;br /&gt;
&lt;br /&gt;
* -a : Alle vorkommenden Befehle werden ausgegeben, nicht nur das, welches aufgerufen werden würde&lt;br /&gt;
 root@zero:~# type '''-a''' ls&lt;br /&gt;
 ls is aliased to `ls --color=auto'&lt;br /&gt;
 ls is /bin/ls&lt;br /&gt;
&lt;br /&gt;
* -p : Anzeigen des Eintrags von Befehl in der Hash-Tabelle. Dieser Wert kann sich vom ersten Auftreten des Befehls in PATH&lt;br /&gt;
unterscheiden&lt;br /&gt;
 root@zero:~# type '''-p''' apache2&lt;br /&gt;
 /usr/sbin/apache2&lt;br /&gt;
&lt;br /&gt;
* -t : Anzeigen, ob Befehl ein Aliasname, ein Schlüsselwort, eine Funktion, ein eingebauter Befehl oder eine Datei ist&lt;br /&gt;
 root@zero:~# type '''-t''' apache2&lt;br /&gt;
 file&lt;/div&gt;</summary>
		<author><name>192.168.178.46</name></author>
	</entry>
	<entry>
		<id>https://www.xinux.net/index.php?title=Linux_Grundlagen&amp;diff=82</id>
		<title>Linux Grundlagen</title>
		<link rel="alternate" type="text/html" href="https://www.xinux.net/index.php?title=Linux_Grundlagen&amp;diff=82"/>
		<updated>2009-07-07T10:52:02Z</updated>

		<summary type="html">&lt;p&gt;192.168.178.46: /* Sockets */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Einführung==&lt;br /&gt;
===Geschichte Unix===&lt;br /&gt;
====1969====&lt;br /&gt;
Am Anfang von Linux steht Multics, ein von Bell Laboratories geschaffenes &amp;quot;Betriebssystem&amp;quot;, &lt;br /&gt;
das noch mit Lochkarten arbeitete. Multics wird mit Unterstützung von AT&amp;amp;T und Western &lt;br /&gt;
Electric unter Mitarbeit von Ken Thompson und Dennis Ritchie weiterentwickelt. Obwohl sich &lt;br /&gt;
Bell Laboratories bald zurückzieht, gibt Thompson das Projekt nicht auf.  Zum Entwicklerteam &lt;br /&gt;
gehören auch Rudd Canaday und Brian Kernighan. Letzterer gibt 1970 dem Betriebssystem den Namen UNIX. &lt;br /&gt;
Thompson definiert 7 Richtlinien für UNIX:&lt;br /&gt;
 &lt;br /&gt;
# Hierarchische Anordnung der Dateisysteme&lt;br /&gt;
# Die Ausgabe von Daten an die Peripherie(-geräte) und Dateien soll gleich sein.&lt;br /&gt;
# Prozesse und Programme sollen miteinander kommunizieren.&lt;br /&gt;
# Multitasking (voneinander getrennte Prozesse)&lt;br /&gt;
# Persönliche Shell's&lt;br /&gt;
# Der Compiler soll für viele Programmiersprachen tauglich sein.&lt;br /&gt;
# Portabilität&lt;br /&gt;
&lt;br /&gt;
====1971====&lt;br /&gt;
Bis 1971 ist das für eine DEC PDP-7 geschriebene Unix als Version 1 auf eine PDP-11 portiert. Bis&lt;br /&gt;
zur Version 4 entwickelt Ritchie die Programmier- (Hoch-) Sprache C. Das in Assembler geschriebene&lt;br /&gt;
Unix wird fast völlig nach C übersetzt, wodurch zum erstenmal die geforderte Hardware-Unabhängigkeit&lt;br /&gt;
des Betriebssystems realisiert werden kann.&lt;br /&gt;
&lt;br /&gt;
====1975====&lt;br /&gt;
Da AT&amp;amp;T aufgrund vertraglicher Bindungen mit der US-Bundesregierung Unix nicht kommerziell vermarkten darf, stellt sie den Source Code für ein paar hundert Dollar den Universitäten, Lehr- und Forschungsanstalten zur Verfügung. Dies führt zu einer sehr dynamischen Entwicklung von Unix. 1975 wird die Version 6 als erstes UNIX-System veröffentlicht, die darauffolgende Version 7 wird sehr erfolgreich. Da es keine Standardisierung gibt, entwickeln bald verschiedenste Firmen ihr eigenes UNIX. Ab 1984 wird AT&amp;amp;T per Gerichtsbeschluss erlaubt, Unix zu vermarkten. AT&amp;amp;T verkauft sein Unix V und beginnt, sich um einen internationalen Standard von UNIX zu bemühen. &lt;br /&gt;
&lt;br /&gt;
====1984====&lt;br /&gt;
Durch Richard Stallman wird die Free Software Foundation (FSF) gegründet. Diese initiiert ein Projekt namens GNU (GNU ist Not Unix), welches das Ziel verfolgt, ein freies UNIX System zu schaffen. &lt;br /&gt;
&lt;br /&gt;
====1987====&lt;br /&gt;
AT&amp;amp;T verbietet die Verwendung des Unix Quellcodes an den Universitäten. Während dieser Zeit ist Andrew (Andy) Tannenbaum Professor an der Freien Universität von Amsterdam und entwickelt Minix. Minix ist ein kostengünstiges Lehrbetriebssystem und kommt ohne jeglichen AT&amp;amp;T Code aus, obwohl es die gleiche Funktionalität wie Unix 7 bietet. Im Usenet unter comp.os.minix entsteht eine Minix-Gemeinde, die den Minix Kernel und die Anwendungen rundherum programmiert und verbessert.&lt;br /&gt;
&lt;br /&gt;
====1991====&lt;br /&gt;
Linus Torvalds hat als Student für Computerwissenschaften an der Universität in Helsinki Minix installiert und das Buch von Andy Tannenbaum gelesen. Er beginnt im Sinne der FSF einen Unix ähnlichen Kernel zu programmieren mit der Idee, &amp;quot;ein besseres Minix als Minix&amp;quot; zu bauen. 1992 stellt er die Version 0.02 mit dem Namen Linux der Internetgemeinde zur Verfügung. &lt;br /&gt;
&lt;br /&gt;
====1994====&lt;br /&gt;
Die Linux Version 1.0 wird freigegeben. Das Linux Fieber beginnt... &lt;br /&gt;
&lt;br /&gt;
====1998====&lt;br /&gt;
Der Kreis der Linux Entwickler und Anwender ist kräftig angeschwollen. KDE 1.0 wird veröffentlicht. Die Zuwachsraten von Linux übertreffen die von Windows NT deutlich. &lt;br /&gt;
&lt;br /&gt;
====1999====&lt;br /&gt;
Der lange erwartete stabile Linux Kernel Version 2.2 wird freigegeben. Namhafte Firmen wie IBM kündigen ihre Unterstützung für Linux an. &lt;br /&gt;
&lt;br /&gt;
====2001====&lt;br /&gt;
Der lange erwartete stabile Linux Kernel Version 2.4 wird freigegeben. USB Unterstützung und eine neue Firewallimplementierung zeichnen ihn aus.&lt;br /&gt;
&lt;br /&gt;
====2003====&lt;br /&gt;
Linux Kernel Version 2.6 wird freigegeben. Am auffälligsten sind Änderungen bei der Modulverwaltung.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Distributionen===&lt;br /&gt;
{| Border=1 Cellpadding=2&lt;br /&gt;
| &lt;br /&gt;
|Url&lt;br /&gt;
|Paketformat&lt;br /&gt;
|-&lt;br /&gt;
|Red Hat&lt;br /&gt;
|www.redhat.com&lt;br /&gt;
|rpm&lt;br /&gt;
|-&lt;br /&gt;
|fedora&lt;br /&gt;
|fedora.redhat.com&lt;br /&gt;
|rpm&lt;br /&gt;
|-&lt;br /&gt;
|CentOS&lt;br /&gt;
|www.centos.org&lt;br /&gt;
|rpm&lt;br /&gt;
|-&lt;br /&gt;
|Suse/openSUSE&lt;br /&gt;
|www.opensuse.org&lt;br /&gt;
|rpm&lt;br /&gt;
|-&lt;br /&gt;
|Debian&lt;br /&gt;
|www.debian.org&lt;br /&gt;
|deb&lt;br /&gt;
|-&lt;br /&gt;
|Ubuntu&lt;br /&gt;
|www.ubuntu.com&lt;br /&gt;
|deb&lt;br /&gt;
|-&lt;br /&gt;
|Mandrake&lt;br /&gt;
|www.linux-mandrake.com&lt;br /&gt;
|rpm&lt;br /&gt;
|-&lt;br /&gt;
|Easy Linux&lt;br /&gt;
|www.easy-linux.de&lt;br /&gt;
|rpm&lt;br /&gt;
|-&lt;br /&gt;
|Turbo&lt;br /&gt;
|www.turbolinux.com&lt;br /&gt;
|rpm&lt;br /&gt;
|-&lt;br /&gt;
|minis&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|toms&lt;br /&gt;
|www.toms.net/rb&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|damn small linux&lt;br /&gt;
|www.damnsmalllinux.org&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|pocket-linux&lt;br /&gt;
|www.pocket-linux.org&lt;br /&gt;
|&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
====Bücher====&lt;br /&gt;
 Titel : Das Linux Anwenderhandbuch und Leitfaden für die Systemverwaltung&lt;br /&gt;
 Autor : Sebastian Hetze, Dirk Hohndel, Olaf Kirch und Martin Müller&lt;br /&gt;
 Verlag: Lunetix&lt;br /&gt;
 ISBN : 3-929764-06-7&lt;br /&gt;
&lt;br /&gt;
 Titel : Linux in a Nutshell&lt;br /&gt;
 Autor : Jessica Perry Hekman und die Mitarbeiter von O'Reilly &amp;amp; Associates&lt;br /&gt;
 Verlag: O'Reilly&lt;br /&gt;
 ISBN : 3-930673-57-6&lt;br /&gt;
&lt;br /&gt;
 Titel : Linux - Wegweiser zur Installation und Konfiguration&lt;br /&gt;
 Autor : Matt Welsh, Lar Kaufman, Matthias Kalle Dallheimer&lt;br /&gt;
 Verlag: O'Reilly&lt;br /&gt;
 ISBN : 3-930673-58-4 (deutsch), 1-56592-469-X (englisch)&lt;br /&gt;
&lt;br /&gt;
 Titel : Linux - Installation, Konfiguration, Anwendung&lt;br /&gt;
 Autor : Michael KoflerMultitasking&lt;br /&gt;
 Verlag: Addison-Wesley&lt;br /&gt;
 ISBN : 3-8273-1475-5&lt;br /&gt;
&lt;br /&gt;
 Titel : Linux - Wegweiser für Netzwerker&lt;br /&gt;
 Autor : Olaf Kirch&lt;br /&gt;
 Verlag: O'Reilly&lt;br /&gt;
 ISBN : 3-930673-18-5&lt;br /&gt;
&lt;br /&gt;
 Titel : TCP/IP-Netzwerk-Administration&lt;br /&gt;
 Autor : Craig Hunt&lt;br /&gt;
 Verlag: O'Reilly&lt;br /&gt;
 ISBN : 3-89721-110-6&lt;br /&gt;
&lt;br /&gt;
 Titel : Essential System Administration&lt;br /&gt;
 Autor : Eleen Frisch&lt;br /&gt;
 Verlag: O'Reilly&lt;br /&gt;
 ISBN : 1-56592-127-5&lt;br /&gt;
&lt;br /&gt;
==Betriebssystem==&lt;br /&gt;
===Was ist ein Betriebssystem?===&lt;br /&gt;
&lt;br /&gt;
Ein Betriebssystem liegt logisch gesehen zwischenAnwendungsprogramm und Hardware.&lt;br /&gt;
&lt;br /&gt;
Es nimmt die Anforderungen der Anwendungsprogramme entgegen und leitet&lt;br /&gt;
diese kontrolliert an die Hardware weiter. Kein Anwendungsprogramm sollte&lt;br /&gt;
direkt auf die Hardware zugreifen können. Den zentralen Zugang schafft einzig&lt;br /&gt;
das Betriebssystem. Somit kann das Betriebssystem unsinnige Anforderungen&lt;br /&gt;
oder Bedienungsfehler abblocken.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Image:Linux.jpg]]&lt;br /&gt;
&lt;br /&gt;
===Aufgaben eines Betriebssystems===&lt;br /&gt;
&lt;br /&gt;
# Verbergen der Komplexität der Maschine vor dem Anwender (Abstraktion)&lt;br /&gt;
# Bereitstellen einer Benutzerschnittstelle (&amp;quot;Kommandointerpreter&amp;quot;, &amp;quot;Shell&amp;quot;)&lt;br /&gt;
# Bereitstellen einer normierten Programmierschnittstelle (API)&lt;br /&gt;
# Verwaltung der Ressourcen der Maschine::&lt;br /&gt;
Hauptspeicher&lt;br /&gt;
Prozessor(en)&lt;br /&gt;
Hintergrundspeicher (Platte, Band, etc.)&lt;br /&gt;
Geräte (Terminal, Drucker, Plotter, etc.)&lt;br /&gt;
Rechenzeit&lt;br /&gt;
Koordination von Prozessen&lt;br /&gt;
&lt;br /&gt;
===Aufbau eines Betriebssystems===&lt;br /&gt;
&lt;br /&gt;
Ein Rechensystem besteht aus Hardware, Systemprogrammen und Anwendungs-&lt;br /&gt;
programmen. Unter einem Betriebssystem wird meist die Summe aus Betriebs-&lt;br /&gt;
systemkern (Kernel) und den wichtigsten Systemprogrammen verstanden. Ein&lt;br /&gt;
minimaler LINUX-Kernel besitzt ungefähr eine Größe von 400 - 800 kByte.&lt;br /&gt;
Weitere wichtige Systemkomponenten benötigen zusätzlich 10 - 100 Mbyte&lt;br /&gt;
Plattenplatz.&lt;br /&gt;
&lt;br /&gt;
Ein Betriebssystem stellt den Rechner als erweiterte Maschine (virtuelle&lt;br /&gt;
Maschine) über definierte Software-Schnittstellen zur Verfügung.&lt;br /&gt;
Das Betriebssystem dient als Betriebsmittelverwalter, der Anforderungen&lt;br /&gt;
befriedigt, protokolliert, abrechnet und vermittelt.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Aufgaben des Betriebssystemkerns:&lt;br /&gt;
&lt;br /&gt;
{| Border=1 Cellpadding=2&lt;br /&gt;
|Prozessverwaltung  (dispatching and scheduling)&lt;br /&gt;
| Mehrere Benutzer können mit mehreren Aktionen gleichzeitig im System arbeiten, ohne sich gegenseitig zu beeinflussen. Damit dies möglich ist,  müssen die Aktionen organisiert, koordiniert und verwaltet werden. Die zu verwaltende Einheit nennt man Prozess.&lt;br /&gt;
|-&lt;br /&gt;
|Speicherverwaltung   (memory management)&lt;br /&gt;
|Zuteilen von Speicherbereichen an laufende Prozesse, Schutz der Speicherbereiche vor unbefugten Zugriffen, bei Speicherengpässen: Auslagern von ganzen (swapping) oder von Teilen (paging) von Prozessen auf die Platte (swap file).&lt;br /&gt;
|-&lt;br /&gt;
|Dateiverwaltung  (file handling)&lt;br /&gt;
|Zuteilung von Plattenplatz für Programme, Benutzer und Systemdienste, Schreiben, Lesen und Strukturieren der Daten auf den Massenspeichern; Durch Bereitstellung einer entsprechenden Schnittstelle (VFS, virtual file system) kann der Kern Dateisysteme unterschiedlichster Art (EXT2, FAT, NFS, HPFS, NTFS, ...) ansprechen.&lt;br /&gt;
|-&lt;br /&gt;
|Geräteverwaltung  (resource management)&lt;br /&gt;
|Der Kern ermöglicht und kontrolliert den Zugriff auf die Hardware. Er steuert die Ein- und Ausgabetätigkeiten der Anwender. An den Kern&lt;br /&gt;
gebunden sind die entsprechenden Gerätetreiber (device driver), die damit eine Kommunikation zwischen Kern und Hardware ermöglichen.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
===Multitasking===&lt;br /&gt;
&lt;br /&gt;
Multitasking bedeutet, dass ein Rechner aus Anwendersicht mehrere Aufgaben&lt;br /&gt;
(Tasks) gleichzeitg übernehmen kann. Das Betriebssystem (OS) unterteilt die&lt;br /&gt;
gleichzeitig anstehenden Aufgaben in Einzelarbeitsschritte (Prozesse) und&lt;br /&gt;
managed durch ein Zeitscheibenverfahren (scheduling) die gleichmäßige&lt;br /&gt;
Abarbeitung der Prozesse.&lt;br /&gt;
&lt;br /&gt;
Es wird unterschieden zwischen:&lt;br /&gt;
&lt;br /&gt;
*non-präamptiven (kooperativen=die Ressourcen werden vom aktiven Prozess freigegeben, bei einem Hänger steht das ganze System)&lt;br /&gt;
&lt;br /&gt;
und&lt;br /&gt;
&lt;br /&gt;
*präamptiven (reinem=der Betriebssystemkern steuert Taskwechsel, indem nach einer festgelegten Zeit vom gerade aktiven Prozess zum nächsten weitergeschaltet wird)&lt;br /&gt;
&lt;br /&gt;
===Mehrprozessorbetrieb===&lt;br /&gt;
&lt;br /&gt;
Bei mehreren Prozessoren und Unterstützung durch das OS&lt;br /&gt;
(NT,Linux,Unix,Novell) können mehrere Tasks auf diese verteilt werden und&lt;br /&gt;
gleichzeitig bearbeitet werden. Nachteilig ist, dass dies nicht oder kaum von&lt;br /&gt;
Anwendungsprogrammen unterstützt wird und es zu Kommunikationsproblemen&lt;br /&gt;
zwischen den einzelnen Tasks kommen kann.&lt;br /&gt;
&lt;br /&gt;
===Arten von von Betriebssystemen===&lt;br /&gt;
&lt;br /&gt;
{|Border=1 Cellpadding=2&lt;br /&gt;
|&lt;br /&gt;
|SingleUser  &lt;br /&gt;
|Multiuser&lt;br /&gt;
|-&lt;br /&gt;
|Single Tasking&lt;br /&gt;
|MS - DOS&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|Multi Tasking&lt;br /&gt;
|Windows 3.x&lt;br /&gt;
|UNIX&lt;br /&gt;
|-&lt;br /&gt;
|&lt;br /&gt;
|Windows 95/98&lt;br /&gt;
|Linux&lt;br /&gt;
|-&lt;br /&gt;
|&lt;br /&gt;
|Windows NT4 ohne Erweiterungen&lt;br /&gt;
|VMS&lt;br /&gt;
|-&lt;br /&gt;
|&lt;br /&gt;
|OS/2 &lt;br /&gt;
|Windows NT mit  Erweiterungen&lt;br /&gt;
|-&lt;br /&gt;
|&lt;br /&gt;
|Apple&lt;br /&gt;
|Windows 2000, XP, 2003&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
===SHELL===&lt;br /&gt;
&lt;br /&gt;
Wenn man mit Linux arbeiten will, kann man nicht direkt mit dem Betriebssystem&lt;br /&gt;
kommunizieren. Man braucht dazu ein Hilfsprogramm, welches die&lt;br /&gt;
Kommandoeingaben ordnungsgemäß an das Betriebssystem weiterleitet. Dieses&lt;br /&gt;
Hilfsprogramm hat den Namen Shell.&lt;br /&gt;
&lt;br /&gt;
Die Shell schirmt den Betriebssystemkern von den Anwendungsprogrammen ab.&lt;br /&gt;
Die unterschiedlichen Shells erfüllen alle dieselbe Aufgabe, sie unterscheiden sich&lt;br /&gt;
allerdings in ihrer Syntax.&lt;br /&gt;
&lt;br /&gt;
==Die Installation im Überblick==&lt;br /&gt;
&lt;br /&gt;
Die Installation von Linux geschieht in folgenden Schritten:&lt;br /&gt;
&lt;br /&gt;
# Analyse (Welche Hardware habe ich? ,Hab ich weitere Betriebsysteme?)&lt;br /&gt;
# Booten des Linux-Kernels. (von CD oder Diskette)&lt;br /&gt;
# Laden einer RAM-Disk (das macht das Installationsprogramm automatisch).&lt;br /&gt;
# Partitionieren der Festplatte (fdisk).&lt;br /&gt;
# Einrichten der Swappartition (mkswap), Formatieren der Festplatte (mkfs).&lt;br /&gt;
# Montieren der Dateisysteme (mount), Aktivieren der Swapbereiche (swapon).&lt;br /&gt;
# Kopieren und Auspacken der Daten vom Installationsmedium auf die Festplatte (die eigentliche Installation). (rpm, dpkg oder tar).&lt;br /&gt;
# Geeignete Wahl der Bootmethode unter Berücksichtigung von Punkt 1 (grub, lilo).&lt;br /&gt;
# Konfiguration des Systems (Netz, Modem etc...).&lt;br /&gt;
&lt;br /&gt;
==Erste Schritte==&lt;br /&gt;
===Anmelden===&lt;br /&gt;
Sie können sich nun mit dem Usernamen und dem Passwort, das sie bei der Installation angelegt haben anmelden!&lt;br /&gt;
[[Image:benutzer.jpg]]&lt;br /&gt;
&lt;br /&gt;
[[Image:passwd.jpg]]&lt;br /&gt;
&lt;br /&gt;
===Terminal öffnen===&lt;br /&gt;
&lt;br /&gt;
Ein Terminal öffnen Sie über das Startmenü:&lt;br /&gt;
&lt;br /&gt;
[[Image:Terminalde.jpg]]&lt;br /&gt;
&lt;br /&gt;
Das geöffnete Terminal sieht dann folgendermaßen aus:&lt;br /&gt;
&lt;br /&gt;
[[Image:Terminalde2.jpg]]&lt;br /&gt;
&lt;br /&gt;
===Sudo===&lt;br /&gt;
Rootrechte erlangen sie über den &amp;quot;Sudo&amp;quot;-Befehl&lt;br /&gt;
 &lt;br /&gt;
''Den nächsten Befehl als root ausführen''&lt;br /&gt;
 xinux@zero:~$ sudo cat /etc/shadow&lt;br /&gt;
 [sudo] password for xinux:&lt;br /&gt;
&lt;br /&gt;
''Eine komplette Sitzung als root starten''&lt;br /&gt;
 xinux@zero:~$ sudo -i&lt;br /&gt;
 [sudo] password for xinux:&lt;br /&gt;
 root@zero:~#&lt;br /&gt;
&lt;br /&gt;
===Virtuelle Konsolen===&lt;br /&gt;
&lt;br /&gt;
In die Virtuelle Konsole gelangen sie über &amp;quot;STRG+ALT+(F1-F6)&amp;quot;.&lt;br /&gt;
Sie funktioniert wie ein ganz normales Terminal, und mit &amp;quot;ALT+F7&amp;quot;&lt;br /&gt;
gelangen sie wieder zurück auf die grafische Benutzeroberfläche&lt;br /&gt;
&lt;br /&gt;
===Abmelden===&lt;br /&gt;
&lt;br /&gt;
Abmelden können Sie sich wieder über das Startmenu unter:&lt;br /&gt;
&lt;br /&gt;
[[Image:Logout.jpg]]&lt;br /&gt;
&lt;br /&gt;
Fals sie nur einzelne Sitzungen in einem der Terminals oder &lt;br /&gt;
den Virtuellen Konsolen Abmelden wollen benutzen sie dazu den Befehl: &amp;quot;exit&amp;quot;&lt;br /&gt;
&lt;br /&gt;
===Herunterfahren===&lt;br /&gt;
&lt;br /&gt;
Das Herunterfahren funktioniert auf dem selben Weg.&lt;br /&gt;
&lt;br /&gt;
Entweder sie Benutzen wieder das Startmenü und benutzen diesmal den &amp;quot;Ausschalten ...&amp;quot; Knopf,&lt;br /&gt;
&lt;br /&gt;
Oder sie geben den äquivalenten &amp;quot;shutdown&amp;quot;-Befehl in einem Terminal bzw. der virtuellen Konsole ein.&lt;br /&gt;
&lt;br /&gt;
Allerdings müssen sie dazu als Administrator angemeldet sein s. &amp;quot;Sudo&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Wenn Sie den &amp;quot;shutdown&amp;quot;-Befehl benutzen wollen muss hinter den Befehl&lt;br /&gt;
&lt;br /&gt;
eine Zeitangabe in Minuten oder das wort &amp;quot;now&amp;quot; für sofortiges Ausschalten hinzugefügt werden:&lt;br /&gt;
&lt;br /&gt;
 xinux@zero:~$ sudo -i&lt;br /&gt;
 root@zero:~# shutdown 60&lt;br /&gt;
 &lt;br /&gt;
 Broadcast message from xinux@zero &lt;br /&gt;
         (/dev/pts/3) at 14:29 ...&lt;br /&gt;
 &lt;br /&gt;
 The system is going down for maintenance in 60 minutes!&lt;br /&gt;
&lt;br /&gt;
Sollten sie den Befehl widerrufen wollen dann drücken sie &amp;quot;STRG+C&amp;quot;,&lt;br /&gt;
&lt;br /&gt;
in dem Terminal in dem der shutdown Befehl gestartet wurde,&lt;br /&gt;
&lt;br /&gt;
oder geben sie den &amp;quot;shutdown&amp;quot;-Befehl zusammen mit der Abbruchoption &amp;quot;-c&amp;quot; in einem anderen Terminal ein:&lt;br /&gt;
&lt;br /&gt;
 root@zero:~# shutdown -c&lt;br /&gt;
&lt;br /&gt;
 shutdown: Shutdown cancelled&lt;br /&gt;
 root@zero:~# &lt;br /&gt;
&lt;br /&gt;
Wenn Sie den Rechner Neustarten möchten gibt es dazu die Option &amp;quot;-r&amp;quot; für den &amp;quot;shutdown&amp;quot;-Befehl&lt;br /&gt;
&lt;br /&gt;
oder den &amp;quot;reboot&amp;quot;-Befehl die beide auch als root ausgeführt werden müssen:&lt;br /&gt;
&lt;br /&gt;
 xinux@zero:~$ sudo -i&lt;br /&gt;
 [sudo] password for xinux: &lt;br /&gt;
 root@zero:~# shutdown -r now&lt;br /&gt;
&lt;br /&gt;
 root@zero:~# reboot&lt;br /&gt;
&lt;br /&gt;
===&amp;quot;man&amp;quot;===&lt;br /&gt;
&lt;br /&gt;
Programm zum Einsehen der Online-Manuals&lt;br /&gt;
&lt;br /&gt;
Die Manuals sind in folgende Sektionen unterteilt:&lt;br /&gt;
# Ausführbare Programme oder Shellbefehle&lt;br /&gt;
# Systemaufrufe (Kernelfunktionen)&lt;br /&gt;
# Bibliotheksaufrufe (Funktionen in System-Bibliotheken)&lt;br /&gt;
# Spezielle Dateien (gewöhnlich in /dev)&lt;br /&gt;
# Dateiformate und Konventionen, z. B. /etc/passwd&lt;br /&gt;
# Spiele&lt;br /&gt;
# Makropakete und Konventionen, z. B. man(7), groff(7)&lt;br /&gt;
# Systemadministrationsbefehle (in der Regel nur für root)&lt;br /&gt;
# Kernelroutinen [Nicht Standard]&lt;br /&gt;
&lt;br /&gt;
Aufruf eines Manuals erfolgt durch ''man kommando''&lt;br /&gt;
Beendet wird durch Drücken des Buchstabens q&lt;br /&gt;
Gesucht wird vorwärts durch Eingabe eines /suchausdruck&lt;br /&gt;
Gesucht wird rückwärts durch Eingabe eines ?suchausdruck&lt;br /&gt;
&lt;br /&gt;
Beispiele:&lt;br /&gt;
&lt;br /&gt;
      man passwd        Anschauen der Manualseite zum Programm passwd&lt;br /&gt;
      man 5 passwd      Anschauen der Manualseite zur Datei /etc/passwd&lt;br /&gt;
      man -a passwd     Anschauen aller Manualseiten zu passwd&lt;br /&gt;
      man -k passwd     Durchsucht die Kurzbeschreibungen der Manualseite&lt;br /&gt;
                        nach passwd und gibt alle Treffer aus&lt;br /&gt;
      man -f passwd      Gibt alle gefunden Kurzbescheibungen zu passwd aus&lt;br /&gt;
      man -L en passwd Gibt englische Manualseiten aus&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Was geht vor auf meinem System? (date,who)===&lt;br /&gt;
&lt;br /&gt;
Das Kommando date dient zur Abfrage von Datum und Uhrzeit.&lt;br /&gt;
&lt;br /&gt;
 xinux@zero:~ &amp;gt; date&lt;br /&gt;
 Fre Mär 16 16:35:03 CET 2001&lt;br /&gt;
&lt;br /&gt;
oder auch Anzeige der Grennwich Zeit:&lt;br /&gt;
&lt;br /&gt;
 xinux@zero:~ &amp;gt; date -u&lt;br /&gt;
 Fre Mär 16 15:35:34 UTC 2001&lt;br /&gt;
&lt;br /&gt;
 xinux@zero:~ &amp;gt; date -u &amp;quot;+%X&amp;quot;&lt;br /&gt;
 15:37:19&lt;br /&gt;
&lt;br /&gt;
 xinux@zero:~ &amp;gt; date -u &amp;quot;+%x&amp;quot;&lt;br /&gt;
 01/15/02&lt;br /&gt;
&lt;br /&gt;
who zeigt alle angemeldeten Benutzer an&lt;br /&gt;
&lt;br /&gt;
 thomas@cardassia:~ &amp;gt; who&lt;br /&gt;
 thomas             tty1 Feb 27 16:39&lt;br /&gt;
 thomas             tty2 Mar 2 17:08&lt;br /&gt;
 tina               tty6 Mar 16 16:38&lt;br /&gt;
&lt;br /&gt;
Mit `who --help' bekommen Sie mehr Informationen.&lt;br /&gt;
&lt;br /&gt;
 thomas@cardassia:~ &amp;gt; who --help&lt;br /&gt;
&lt;br /&gt;
Benutzung: who [OPTION]... [ DATEI | ARG1 ARG2 ]&lt;br /&gt;
&lt;br /&gt;
 -H, --heading             print line of column headings&lt;br /&gt;
 -i, -u, --idle            add user idle time as HOURS:MINUTES, . or old&lt;br /&gt;
 -l, --lookup              attempt to canonicalize hostnames via DNS&lt;br /&gt;
 -m                        only hostname and user associated with stdin&lt;br /&gt;
 -q, --count               all login names and number of users logged on&lt;br /&gt;
 -s                        (ignored)&lt;br /&gt;
 -T, -w, --mesg            add user's message status as +, - or ?&lt;br /&gt;
     --message             same as -T&lt;br /&gt;
     --writable            same as -T&lt;br /&gt;
     --help                display this help and exit&lt;br /&gt;
     --version             output version information and exit&lt;br /&gt;
&lt;br /&gt;
==Das UNIX-Dateisystem==&lt;br /&gt;
===Verzeichnisbaum===&lt;br /&gt;
&lt;br /&gt;
[[Image:vztree.jpg]]&lt;br /&gt;
&lt;br /&gt;
Das Betriebssystem UNIX besitzt ein hierarchisches Dateisystem. Es besteht aus:&lt;br /&gt;
* Dateien (Files)&lt;br /&gt;
Dateien speichern Informationen (Text, Bilder, Sound, Videos, Programme) und&lt;br /&gt;
werden über den Dateinamen angesprochen.&lt;br /&gt;
&lt;br /&gt;
* Verzeichnissen (Directories, Kataloge)&lt;br /&gt;
Verzeichnisse besitzen ebenfalls einen Namen und dienen zur Ordnung des&lt;br /&gt;
Dateisystems. Ein Verzeichnis kann Dateien und Unterverzeichnisse&lt;br /&gt;
(Subdirectories) enthalten. Das oberste Verzeichnis im Dateisystem heisst&lt;br /&gt;
Rootverzeichnis oder kurz Root und wird durch / (sprich: slash)&lt;br /&gt;
gekennzeichnet.&lt;br /&gt;
&lt;br /&gt;
Im Gegensatz zu Windows kennt UNIX keine Laufwerke.&lt;br /&gt;
Das obige Bild zeigt ein typisches UNIX-Dateisystem.&lt;br /&gt;
Unterhalb des Rootverzeichnisses befinden sich eine Vielzahl vonVerzeichnissen.&lt;br /&gt;
&lt;br /&gt;
===Wichtige Verzeichnisse===&lt;br /&gt;
&lt;br /&gt;
• '''Homeverzeichnis'''&lt;br /&gt;
&lt;br /&gt;
das Verzeichnis, in dem man sich unmittelbar nach dem Anmelden befindet. Das&lt;br /&gt;
Homeverzeichnis wird vom Systemverwalter eingerichtet; jeder Anwender&lt;br /&gt;
besitzt ein festes Homeverzeichnis. z.B. /home/hans&lt;br /&gt;
&lt;br /&gt;
~ (Tilde) bzw. $HOME (Shellvariable) kennzeichnen das Homeverzeichnis.&lt;br /&gt;
&lt;br /&gt;
• '''Aktuelles Verzeichnis'''&lt;br /&gt;
&lt;br /&gt;
Verzeichnis, in dem man sich aktuell befindet.&lt;br /&gt;
Das aktuelle Verzeichnis wird mit dem Befehl cd (change directory) oder per&lt;br /&gt;
Mausklick verändert.&lt;br /&gt;
Ein einfacher Punkt . kennzeichnet das aktuelle Verzeichnis.&lt;br /&gt;
&lt;br /&gt;
• '''Elternverzeichnis'''&lt;br /&gt;
&lt;br /&gt;
Verzeichnis unmittelbar oberhalb des aktuellen Verzeichnisses.&lt;br /&gt;
Jedes Verzeichnis ausser / besitzt genau ein Elternverzeichnis.&lt;br /&gt;
Zwei Punkte .. kennzeichnen das Elternverzeichnis (abhängig vom aktuellen&lt;br /&gt;
VZ).&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Absoluter Pfadname:===&lt;br /&gt;
&lt;br /&gt;
Beschreibt ausgehend vom Rootverzeichnis den Weg zum Zielverzeichnis oder zur&lt;br /&gt;
Zieldatei. (Welche Verzeichnisse müssen ausgehend von / durchlaufen werden, um&lt;br /&gt;
zum Ziel zu kommen?) Ein absoluter Pfadname beginnt immer mit / .&lt;br /&gt;
&lt;br /&gt;
===Relativer Pfadname:===&lt;br /&gt;
&lt;br /&gt;
Beschreibt ausgehend vom aktuellen Verzeichnis den Weg zum Zielverzeichnis&lt;br /&gt;
oder zur Zieldatei; ein relativer Pfadname beginnt nicht mit / .&lt;br /&gt;
/home/suxer&lt;br /&gt;
absoluter Pfadname für das Verzeichnis sub1 im Homeverzeichnis von suxer&lt;br /&gt;
&lt;br /&gt;
===Verzeichnisstruktur===&lt;br /&gt;
&lt;br /&gt;
 /bin         Kommandos die beim starten benötigt werden (Zugriff hat jeder)&lt;br /&gt;
 /sbin        Wichtige System-Programme (In der Regel root vorberhalten)&lt;br /&gt;
 /boot        Hier findet man die Dateien des Bootmanagers und des Kernel.&lt;br /&gt;
 /dev         In diesem Verzeichnis stehen die Gerätedateien (Devices),&lt;br /&gt;
 /home        Alle Heimatverzeichnisse der Nutzer findet man hier.&lt;br /&gt;
 /lib         Beim Systemstart benötigten Bibliotheken und Modules stehen hier.&lt;br /&gt;
 /mnt         Mountpunkt für temporäre Partitionen&lt;br /&gt;
 /opt         Software, die nicht Installationsumfang von Linux gehören.&lt;br /&gt;
 /root        Heimatverzeichnis des Administrators.&lt;br /&gt;
 /tmp         Temporäre Dateien können hier abgelegt werden&lt;br /&gt;
 /usr         statische Dateien (kann read-only gemountet sein)&lt;br /&gt;
 /var         variable Dateien (muss beschreibar sein )&lt;br /&gt;
 /etc         Konfiguartionsdateien und Startscripte&lt;br /&gt;
 /proc        Virtuelles Dateisystem -&amp;gt; repräsentiert den Kernel&lt;br /&gt;
&lt;br /&gt;
===Unterverzeichnisse von /usr===&lt;br /&gt;
&lt;br /&gt;
 sbin         Programme für root die beim Start nicht benötigt werden&lt;br /&gt;
 bin          Programme für alle die beim Start nicht benötigt werden&lt;br /&gt;
 X11R6        Dateien des X-Window-Sytems&lt;br /&gt;
 bin          Ausführbare Programme&lt;br /&gt;
 doc          Dokumentationen&lt;br /&gt;
 etc          Konfigurationsdateien&lt;br /&gt;
 games        Spiele&lt;br /&gt;
 include      Headerdateien für C-Programme&lt;br /&gt;
 local        Pakete die nicht zur Distribution gehören ähnlich /opt&lt;br /&gt;
 share        Pakete die von mehreren Paketen genutzt werden&lt;br /&gt;
 share/man    Die Manualpages&lt;br /&gt;
 share/info   Seiten des Infosystems&lt;br /&gt;
 share/doc    Dokumentationen&lt;br /&gt;
 src          Sources von Programmen (Kernel und andere)&lt;br /&gt;
&lt;br /&gt;
===Unterverzeichnisse von /var===&lt;br /&gt;
&lt;br /&gt;
 cache        Zwischenspreicher für Progammes&lt;br /&gt;
 games        Variable Daten der Games (Scores etc...)&lt;br /&gt;
 lock         Sperrdateien&lt;br /&gt;
 log          Die Logdateien (wichtiges Verzeichnis für Admins)&lt;br /&gt;
 mail         Das Mailsystem&lt;br /&gt;
 run          Dateien zu laufemdem Prozessen&lt;br /&gt;
 spool        Spooldateien (z.B. für das Drucksystem&lt;br /&gt;
 state        Statusinfos&lt;br /&gt;
 tmp          Wie /tmp eventuell nicht auf root Partion&lt;br /&gt;
&lt;br /&gt;
==Einfache Komandos==&lt;br /&gt;
===cd: Wechseln des Arbeitsverzeichnis===&lt;br /&gt;
&lt;br /&gt;
Um festzustellen in welchem Verzeichnis man sich befindet, sollte man den&lt;br /&gt;
Befehl &amp;quot;pwd&amp;quot; benutzen,&lt;br /&gt;
&lt;br /&gt;
und mit dem Befehl &amp;quot;cd&amp;quot; kann man zwischen den Verzeichnissen wechseln:&lt;br /&gt;
&lt;br /&gt;
Wechsele ins homeverzeichnis von Xinux&lt;br /&gt;
&lt;br /&gt;
 xinux@zero:~$ cd /home/xinux/&lt;br /&gt;
 xinux@zero:~$ pwd&lt;br /&gt;
 /home/xinux&lt;br /&gt;
&lt;br /&gt;
cd ~ -&amp;gt; wechsele ins jeweilige Homeverzeichnis&lt;br /&gt;
&lt;br /&gt;
cd .. -&amp;gt; wechsele ein Verzeichnis höher&lt;br /&gt;
&lt;br /&gt;
cd ../verzeichnis -&amp;gt; wechsele in eine paralleles Verzeichnis &amp;lt;- (ist eine relative Pfadangabe !)&lt;br /&gt;
&lt;br /&gt;
cd - -&amp;gt; wechsele in das Verzeichnis, in dem vorher gearbeitet wurde.&lt;br /&gt;
&lt;br /&gt;
Mit cd / wechselt man in das Wurzelverzeichnis.&lt;br /&gt;
&lt;br /&gt;
 xinux@zero:/var/log$ cd /&lt;br /&gt;
 xinux@zero:/$ pwd&lt;br /&gt;
 /&lt;br /&gt;
&lt;br /&gt;
===ls: Listing===&lt;br /&gt;
&lt;br /&gt;
Den Inhalt von Verzeichnissen kann man sich mit dem Befehl &amp;quot;ls&amp;quot; anzeigen lassen&lt;br /&gt;
wobei &amp;quot;ls&amp;quot; eine Vielzahl von Optionen besitzt:&lt;br /&gt;
&lt;br /&gt;
 ls                                  standard&lt;br /&gt;
 ls -l                               langes listing&lt;br /&gt;
 ls -a                               alle Dateien&lt;br /&gt;
 ls -i                               mit Inode&lt;br /&gt;
 ls -h                               gut lesbare Dateigröße&lt;br /&gt;
 ls -d                               Verzechnis wird angezeigt, nicht der Inhalt&lt;br /&gt;
 ls -L                               sortiert nach Größe&lt;br /&gt;
 ls -t                               sortiert nach Datum&lt;br /&gt;
 ls -F                               mit nützlichem Anhang&lt;br /&gt;
&lt;br /&gt;
 xinux@zero:/$ ls -l /var/log/messages&lt;br /&gt;
 -rw-r----- 1 syslog adm 2296 2009-06-16 10:05 /var/log/messages&lt;br /&gt;
&lt;br /&gt;
===more: Seitenweises Anzeigen von Seiten===&lt;br /&gt;
 root@zero:~# more /var/log/messages&lt;br /&gt;
 ...&lt;br /&gt;
&lt;br /&gt;
===head: erste Zeilen anzeigen===&lt;br /&gt;
Erste 10 Zeilen anzeigen&lt;br /&gt;
 root@zero:~# head /var/log/messages&lt;br /&gt;
 Jun 15 12:37:08 zero syslogd 1.5.0#5ubuntu3: restart.&lt;br /&gt;
 Jun 15 12:38:43 zero kernel: [  830.065036] mtrr: your processor doesn't support write-combining&lt;br /&gt;
 Jun 15 12:46:05 zero pulseaudio[4817]: pid.c: Stale PID file, overwriting.&lt;br /&gt;
 Jun 15 13:05:24 zero -- MARK --&lt;br /&gt;
 ...&lt;br /&gt;
&lt;br /&gt;
Erste zwei Zeilen anzeigen&lt;br /&gt;
 root@zero:~# head -n 2 /var/log/messages&lt;br /&gt;
 Jun 15 12:37:08 zero syslogd 1.5.0#5ubuntu3: restart.&lt;br /&gt;
 Jun 15 12:38:43 zero kernel: [  830.065036] mtrr: your processor doesn't support write-combining&lt;br /&gt;
&lt;br /&gt;
===tail: letzte Zeilen anzeigen===&lt;br /&gt;
 &lt;br /&gt;
 root@zero:~# tail /var/log/syslog&lt;br /&gt;
 ...&lt;br /&gt;
 Jun 19 11:19:35 zero -- MARK --&lt;br /&gt;
 Jun 19 11:39:35 zero -- MARK --&lt;br /&gt;
 Jun 19 11:59:36 zero -- MARK --&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Letze 5 Zeilen anzeigen&lt;br /&gt;
 root@zero:~# tail -n 5 /var/log/auth.log&lt;br /&gt;
 Jun 18 14:30:01 zero CRON[12040]: pam_unix(cron:session): session closed for user root&lt;br /&gt;
 Jun 18 14:39:01 zero CRON[12191]: pam_unix(cron:session): session opened for user root by (uid=0)&lt;br /&gt;
 Jun 18 14:39:01 zero CRON[12191]: pam_unix(cron:session): session closed for user root&lt;br /&gt;
 Jun 18 14:40:01 zero CRON[12237]: pam_unix(cron:session): session opened for user root by (uid=0)&lt;br /&gt;
 Jun 18 14:40:01 zero CRON[12237]: pam_unix(cron:session): session closed for user root&lt;br /&gt;
&lt;br /&gt;
Letze Zeilen anzeigen und fortlaufend aktualisieren&lt;br /&gt;
 root@zero:~# tail -f /var/log/syslog&lt;br /&gt;
 ...&lt;br /&gt;
&lt;br /&gt;
===mkdir: Ein neues Verzeichnis erstellen===&lt;br /&gt;
&lt;br /&gt;
 mkdir        verzeichnis&lt;br /&gt;
Erstellt ein Verzeichnis im working directory (wd)&lt;br /&gt;
&lt;br /&gt;
 mkdir  -p    ver1/ver2&lt;br /&gt;
Erstellt ein Verzeichnis ver2 unterhalb von ver1&lt;br /&gt;
wenn ver1 nicht existiert wird es erstellt&lt;br /&gt;
&lt;br /&gt;
 mkdir -m 753 ver1&lt;br /&gt;
Es wird das Verzeichnis ver1 erstellt mit der mask 753&lt;br /&gt;
&lt;br /&gt;
 mkdir -v     ver1&lt;br /&gt;
Geschwätzige Ausgabe :)&lt;br /&gt;
&lt;br /&gt;
===Zum Löschen von leeren Verzeichnissen wird rmdir benutzt===&lt;br /&gt;
&lt;br /&gt;
 rmdir           ver1&lt;br /&gt;
Löscht das leere Verzeichnis ver1&lt;br /&gt;
&lt;br /&gt;
 rmdir -v        ver1&lt;br /&gt;
Löscht das leere Verzeichnis ver1 und ist geschwätzig&lt;br /&gt;
&lt;br /&gt;
 rmdir -p        /ver1/ver2/ver3&lt;br /&gt;
Löscht das Verzeichnis ver3; wenn dadurch ver2 ein leeres&lt;br /&gt;
Verzeichnis wird, wird dieses auch gelöscht , wenn ver1&lt;br /&gt;
dadurch ein leeres Verzeichnis wird, wird auch dieses gelöscht.&lt;br /&gt;
&lt;br /&gt;
===touch Verändern des Zeitstempels===&lt;br /&gt;
&lt;br /&gt;
Mit touch können wir eine neue leere Datei erzeugen (das ist nicht der eigentliche&lt;br /&gt;
Zweck von touch, eigentlich wird der Zeitstempel geändert)&lt;br /&gt;
&lt;br /&gt;
 touch            dateiname&lt;br /&gt;
&lt;br /&gt;
===Kopieren=== &lt;br /&gt;
cp ist das Kommando um Dateien zu kopieren &lt;br /&gt;
&lt;br /&gt;
Eine Kopie von dat1 mit dem Namen dat2 erstellen:&lt;br /&gt;
&lt;br /&gt;
 xinux@zero:~$ cp dat1 dat2&lt;br /&gt;
&lt;br /&gt;
Eine Kopie von dat1 ins Verzeichnis ver2 erstellen:&lt;br /&gt;
&lt;br /&gt;
 xinux@zero:~$ cp dat1 ver2/&lt;br /&gt;
 &lt;br /&gt;
Eine Kopie erstellen mit ausführlicher Anzeige:&lt;br /&gt;
&lt;br /&gt;
 xinux@zero:~$ cp -v dat1 dat2&lt;br /&gt;
 `dat1' -&amp;gt; `dat2'&lt;br /&gt;
&lt;br /&gt;
Eine Kopie erstellen mit Rückfrage fals etwas überschrieben wird:&lt;br /&gt;
&lt;br /&gt;
 xinux@zero:~$ cp -i dat1 dat2&lt;br /&gt;
 cp: overwrite `dat2'?&lt;br /&gt;
&lt;br /&gt;
Eine Kopie erstellen und die Rückfrage überbrücken:&lt;br /&gt;
&lt;br /&gt;
 xinux@zero:~$ cp -f dat1 dat2&lt;br /&gt;
&lt;br /&gt;
Eine Kopie von dat1 ins Verzeichnis ver2 erstellen fals keine neuere Version von dat1 vorliegt:&lt;br /&gt;
&lt;br /&gt;
 xinux@zero:~$ cp -u dat1 ver2/&lt;br /&gt;
&lt;br /&gt;
Eine Kopie erstellen fals ver2 auf dem selben Dateisystem wie dat1 liegt:&lt;br /&gt;
&lt;br /&gt;
 xinux@zero:~$ cp -x dat1 ver2/&lt;br /&gt;
&lt;br /&gt;
Eine Kopie von ver1, die als ver2 oder unter ver2 als ver1 gespeichert wird erstellen:&lt;br /&gt;
&lt;br /&gt;
 xinux@zero:~$ cp -r ver1/ ver2/&lt;br /&gt;
&lt;br /&gt;
Eine Kopie von einer Datei erstellen und ihre Attribute beibehalten:&lt;br /&gt;
&lt;br /&gt;
 xinux@zero:~$ cp -p sux1 sux2&lt;br /&gt;
&lt;br /&gt;
Eine Kopie erstellen bei der die Links erhalten bleiben:&lt;br /&gt;
&lt;br /&gt;
 xinux@zero:~$ cp -r ver1/ ver2/&lt;br /&gt;
&lt;br /&gt;
Eine Kopie erstellen zum Archivieren (-dpr):&lt;br /&gt;
&lt;br /&gt;
 xinux@zero:~$ cp -a ver1/ ver2/&lt;br /&gt;
&lt;br /&gt;
===rm: Löschen einer Datei===&lt;br /&gt;
&lt;br /&gt;
Um Dateien zu löschen, brauchen wir das Kommando &amp;quot;rm&amp;quot;:&lt;br /&gt;
&lt;br /&gt;
 rm               dat1        dat1 wird gelöscht&lt;br /&gt;
 rm         -i    dat1        dat1 wird nach Bestätigung gelöscht&lt;br /&gt;
 rm         -f    dat1        dat1 wird ohne Rückfragen gelöscht&lt;br /&gt;
 rm         -v    dat1        dat1 wird glöscht (geschwätzige Ausgabe)&lt;br /&gt;
 rm         -r    ver1        Löschen von nicht leeren Verzeichnissen&lt;br /&gt;
                              Achtung !!! Als root kann man sich damit Teile&lt;br /&gt;
                              oder sogar den gesamten Verzeichnisbaum&lt;br /&gt;
                              absägen !!!&lt;br /&gt;
&lt;br /&gt;
===mv: Verschieben===&lt;br /&gt;
&lt;br /&gt;
Mit dem Befehl &amp;quot;mv&amp;quot; werden Daten verschoben, folgendes gilt:&lt;br /&gt;
&lt;br /&gt;
 mv          dat1 dat2         &lt;br /&gt;
Die Datei dat1 wird in dat2 umbenannt&lt;br /&gt;
 mv          dat1 /ver1        &lt;br /&gt;
Die Datei dat1 wird nach /ver1 verschoben&lt;br /&gt;
&lt;br /&gt;
Die Parameter und ihre Bedeutung:&lt;br /&gt;
&lt;br /&gt;
      -i                      wenn eine Datei exisitiert wird vor dem&lt;br /&gt;
                              Überschreiben nachgefragt&lt;br /&gt;
      -v                      verbose (geschwätzig)&lt;br /&gt;
      -u                      nur neuere Daten werden bei Bedarf überschrieben&lt;br /&gt;
      -b                      wenn überschrieben werden soll, wird ein Backup&lt;br /&gt;
                              erstellt&lt;br /&gt;
      -S ENDUNG               das Backup bekommt die Endung ENDUNG&lt;br /&gt;
&lt;br /&gt;
===su Benutzer wechseln===&lt;br /&gt;
&lt;br /&gt;
 su -             &lt;br /&gt;
Wechsel zum Rootaccount, wie wenn dieser sich neu anmelden würde. (Bsp: su -)&lt;br /&gt;
&lt;br /&gt;
 su Benutzernamen &lt;br /&gt;
Wechsel der Identität zu Benutzer (gegebenenfalls Passwortabfrage)&lt;br /&gt;
&lt;br /&gt;
 su -c Kommando   &lt;br /&gt;
Kommando wird als rootaccount ausgeführt&lt;br /&gt;
&lt;br /&gt;
==Der Standard Editor vi==&lt;br /&gt;
Der vi ist der Standardeditor in der Unixwelt. Er ist in jedem Unix-Derivat&lt;br /&gt;
enthalten.&lt;br /&gt;
Der Editor hat zwar den schlechten Ruf umständlich zu bedienen zu sein, ist&lt;br /&gt;
jedoch sehr leistungsfähig und systemübergreifend verfügbar. Beim vi handelt es&lt;br /&gt;
sich um einen rein textorientierten Editor, der mittels eigener Kommandos&lt;br /&gt;
gesteuert wird.&lt;br /&gt;
&lt;br /&gt;
Der Editor VIM ist eine weitere Verbesserung von VI und leichter zu bedienen.&lt;br /&gt;
Und unter Ubuntu/Debian mit &amp;quot;apt-get install vim&amp;quot; zu installieren.&lt;br /&gt;
&lt;br /&gt;
===Starten des Editors:===&lt;br /&gt;
&lt;br /&gt;
Der Editorstart erfolgt einfach durch die Eingabe des Kommandos vi mit dem&lt;br /&gt;
Dateinamen der zu editierenden Datei als Parameter.&lt;br /&gt;
Beispiel:        &lt;br /&gt;
 vi sux.txt&lt;br /&gt;
&lt;br /&gt;
===Die Betriebsmodi des vi:===&lt;br /&gt;
&lt;br /&gt;
Ein Umstand, der dem vi den Ruf der komplizierten Bedienbarkeit zugetragen hat,&lt;br /&gt;
sind die unterschiedlichen Betriebsmodi des Editors. Genauer gesagt verfügt der&lt;br /&gt;
vi über drei Betriebsmodi:&lt;br /&gt;
&lt;br /&gt;
====Kommandomodus:====&lt;br /&gt;
&lt;br /&gt;
Innerhalb dieses Modus werden die eingegebenen Zeichen direkt als Befehle des&lt;br /&gt;
Editors interpretiert und ausgeführt. Dabei gibt es weder ein Bereitschaftszeichen&lt;br /&gt;
(Prompt) noch ein Echo (Ausgabe). Der Kommandomodus ist der Modus, in dem&lt;br /&gt;
sich der vi direkt nach seinem Start befindet.&lt;br /&gt;
&lt;br /&gt;
====Zeilenmodus oder Exmodus:====&lt;br /&gt;
&lt;br /&gt;
Dieser Modus ist der einzige Modus mit einem eigenen Bereitschaftszeichen,&lt;br /&gt;
nämlich dem Doppelpunkt (:). Das Prompt wird ebenso wie die Befehlsausgaben&lt;br /&gt;
in der Statuszeile angezeigt.&lt;br /&gt;
&lt;br /&gt;
====Eingabemodus:====&lt;br /&gt;
&lt;br /&gt;
Der Eingabemodus ist derjenige, in welchem der zu bearbeitende Text bearbeitet&lt;br /&gt;
werden kann. Alle hier eingegebenen Zeichen werden als Text für die aktuelle&lt;br /&gt;
Datei interpretiert. Zwischen den unterschiedlichen Modi kann jederzeit&lt;br /&gt;
gewechselt werden. Von Kommandomodus gelangen Sie durch mehere Wege in&lt;br /&gt;
den Eingabemodus. Man kann durch folgende Aktionen wechslen&lt;br /&gt;
&lt;br /&gt;
{| border=1 cellpadding=2&lt;br /&gt;
|i&lt;br /&gt;
|Text vor der aktuellen Cursorposition einfügen&lt;br /&gt;
|-&lt;br /&gt;
|I&lt;br /&gt;
|Text am Zeilenanfang einfügen&lt;br /&gt;
|-&lt;br /&gt;
|a&lt;br /&gt;
|Text hinter der aktuellen Cursorposition einfügen&lt;br /&gt;
|-&lt;br /&gt;
|A&lt;br /&gt;
|Text am Zeilenende einfügen&lt;br /&gt;
|-&lt;br /&gt;
|o&lt;br /&gt;
|Unterhalb der aktuellen Zeile eine neue Zeile einfügen&lt;br /&gt;
|-&lt;br /&gt;
|O&lt;br /&gt;
|Oberhalb der aktuellen Zeile eine neue Zeile einfügen&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Durch das Drücken der ESC - Taste gelangt man in den Kommandomodus zurück.&lt;br /&gt;
&lt;br /&gt;
Im Kommandomodus können Sie durch den Text navigieren und auch den Text&lt;br /&gt;
selbst bearbeiten, z.B ausschneiden, kopieren usw. Dazu sind einige Kommandos&lt;br /&gt;
nötig, von denen die wichtigsten im Folgenden erläutert werden:&lt;br /&gt;
&lt;br /&gt;
 xinux@zero:/$ vi iwas.txt&lt;br /&gt;
&lt;br /&gt;
[[Image:vim.jpg]]&lt;br /&gt;
&lt;br /&gt;
===Benutzen des Kommandomodus===&lt;br /&gt;
====Steuerung des Cursors durch den Text====&lt;br /&gt;
&lt;br /&gt;
Mittels folgender Kommandos bewegt sich der Cursor durch den Text:&lt;br /&gt;
&lt;br /&gt;
{| border=1 cellpadding=2&lt;br /&gt;
|h&lt;br /&gt;
|Cursor ein Zeichen nach links&lt;br /&gt;
|-&lt;br /&gt;
|l&lt;br /&gt;
|Cursor ein Zeichen nach rechts&lt;br /&gt;
|-&lt;br /&gt;
|k&lt;br /&gt;
|Cursor eine Zeile nach oben&lt;br /&gt;
|-&lt;br /&gt;
|j&lt;br /&gt;
|Cursor eine Zeile nach unten&lt;br /&gt;
|-&lt;br /&gt;
|w&lt;br /&gt;
|Cursor ein Wort nach rechts&lt;br /&gt;
|-&lt;br /&gt;
|b&lt;br /&gt;
|Cursor ein Wort nach links&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Alle diese Kommandos können mit einem vorgestellten Wiederholungsfaktor&lt;br /&gt;
arbeiten. Der Befehl 3w verschiebt demnach den Cursor um 3 Wörter nach rechts.&lt;br /&gt;
&lt;br /&gt;
====Angaben zur Positionierung====&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{| border=1 cellpadding=2&lt;br /&gt;
|STRG+U&lt;br /&gt;
|1⁄2 Bildschirmseite nach oben&lt;br /&gt;
|-&lt;br /&gt;
|STRG+D&lt;br /&gt;
|1⁄2 Bildschirmseite nach unten&lt;br /&gt;
|-&lt;br /&gt;
|STRG+B&lt;br /&gt;
|1 Bildschirmseite nach oben&lt;br /&gt;
|-&lt;br /&gt;
|STRG+F&lt;br /&gt;
|1 Bildschirmseite nach unten&lt;br /&gt;
|-&lt;br /&gt;
|/Ausdruck&lt;br /&gt;
|Sucht den Ausdruck (vorwärts) Weitersuchen mit n , N&lt;br /&gt;
|-&lt;br /&gt;
|?Ausdruck&lt;br /&gt;
|Sucht den Ausdurck (rückwärts) Weitersuchen mit n , N&lt;br /&gt;
|-&lt;br /&gt;
|0&lt;br /&gt;
|Zeilenanfang&lt;br /&gt;
|-&lt;br /&gt;
|$&lt;br /&gt;
|Zeilenende&lt;br /&gt;
|-&lt;br /&gt;
|w&lt;br /&gt;
|Nächstes Wort&lt;br /&gt;
|-&lt;br /&gt;
|b&lt;br /&gt;
|Vorheriges Wort&lt;br /&gt;
|-&lt;br /&gt;
|fc&lt;br /&gt;
|Auf das Zeichen c springen. c steht für ein beliebiges Zeichen&lt;br /&gt;
|-&lt;br /&gt;
|G&lt;br /&gt;
|Letzte Zeile der Datei&lt;br /&gt;
|-&lt;br /&gt;
|ng&lt;br /&gt;
|n-te Zeile der Datei&lt;br /&gt;
|-&lt;br /&gt;
|H&lt;br /&gt;
|Anfang der Bildschirmseite&lt;br /&gt;
|-&lt;br /&gt;
|L&lt;br /&gt;
|Ende der Bildschirmseite&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
====Befehle zur Textbearbeitung -&amp;gt; Was soll geschehen====&lt;br /&gt;
&lt;br /&gt;
{| Border=1 Cellpadding=2&lt;br /&gt;
|x&lt;br /&gt;
|Löscht Zeichen&lt;br /&gt;
|-&lt;br /&gt;
|d&lt;br /&gt;
|Löschen und in den Puffer laden&lt;br /&gt;
|-&lt;br /&gt;
|c&lt;br /&gt;
|Ändern&lt;br /&gt;
|-&lt;br /&gt;
|y&lt;br /&gt;
|In den Puffer laden&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
====Weitere wichtige Befehle:====&lt;br /&gt;
&lt;br /&gt;
{| Border=1 Cellpadding=2&lt;br /&gt;
|p&lt;br /&gt;
|Aus dem Puffer einfügen&lt;br /&gt;
|-&lt;br /&gt;
|u&lt;br /&gt;
|Undo, macht den letzten Befehl rückgängig&lt;br /&gt;
|-&lt;br /&gt;
|STRG+R&lt;br /&gt;
|Redo, macht den letzten Undo rückgängig&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
===Zeilen- oder Exmodus===&lt;br /&gt;
&lt;br /&gt;
Wie schon erwähnt wird der Zeilen oder Exmodus durch einen : eingeleitet.&lt;br /&gt;
Es folgen einige Beispiele.&lt;br /&gt;
&lt;br /&gt;
Befehle zum Speichern und Beenden:&lt;br /&gt;
&lt;br /&gt;
 :w          Schreibt Datei&lt;br /&gt;
 :w Datei2   Schreibt eine Kopie in Datei2&lt;br /&gt;
 :w !        Schreibt Datei (übergehe Schreibschutz)&lt;br /&gt;
 :w ! Datei2 Schreibt eine Kopie in Datei2 (übergehe Schreibschutz)&lt;br /&gt;
 :q          Schließe Datei&lt;br /&gt;
 :q!         Schließe Datei (verwerfe Änderungen)&lt;br /&gt;
 :wq         Schreibe Datei und beende Editor&lt;br /&gt;
 :wq!        Schreibe Datei und beende Editor (übergehe Schreibschutz)&lt;br /&gt;
 :q!         Schließe Datei (verwerfe Änderungen)&lt;br /&gt;
 :h          Hilfe anzeigen, durch drücken von :q Beenden der Hilfe&lt;br /&gt;
 :e Datei3   Editiere Datei3&lt;br /&gt;
 :e #        Editere vorhergehende Datei&lt;br /&gt;
 :1,3co9     Kopiere von der ersten bis zu dritten Zeile &lt;br /&gt;
             und füge den Inhalt unterhalb der neunte Zeile ein.&lt;br /&gt;
&lt;br /&gt;
Interaktionen mit Unix:&lt;br /&gt;
&lt;br /&gt;
 :r Datei4   Fügt Inhalt der Datei4 nach dem Cursor ein&lt;br /&gt;
 :r ! Befehl Fügt Ausgabe des Befehls nach dem Cursor ein&lt;br /&gt;
 :! Befehl   Führt den Befehl aus&lt;br /&gt;
 :sh         Starte Subshell -&amp;gt; mit exit kehrt man wieder zurück&lt;br /&gt;
             Eingabemodus zurück&lt;br /&gt;
&lt;br /&gt;
====Ersetzen von Textteilen====&lt;br /&gt;
&lt;br /&gt;
Die grundsätzliche Syntax lautet:&lt;br /&gt;
&lt;br /&gt;
 :[Zeilennummer,Zeilennummer]s/Muster/Ersetzung/[gc]&lt;br /&gt;
&lt;br /&gt;
 :s/worf/kirn/              der erste worf wird in der aktuellen Zeile durch kirn ersetzt&lt;br /&gt;
 :1,9s/worf/kirn/g          von der 1. bis zur 9. Zeile werden alle worf durch kirn ersetzt&lt;br /&gt;
 :1,$s/worf/kirn/           von der ersten bis zur letzten Zeile ersetze ersten worf durch&lt;br /&gt;
                            kirn&lt;br /&gt;
 :.,$s/worf/kirn/g          von der aktuellen bis zur letzten Zeile ersetze alle worf durch&lt;br /&gt;
                            kirn&lt;br /&gt;
 :1,.s/worf/kirn/c          von der 1. bis zur aktuellen Zeile ersetze worf durch kirn, frage&lt;br /&gt;
                            aber nach&lt;br /&gt;
 :1,$s/^worf/kirn/          von der ersten bis zur letzten Zeile ersetze worf am&lt;br /&gt;
                            Zeilenanfang durch kirn&lt;br /&gt;
 :4,$s/worf$/kirn/          von der 4. bis zur letzten Zeile ersetze worf am Zeilenende&lt;br /&gt;
                            durch kirn&lt;br /&gt;
 :1,$s/^#//                 lösche alle Kommentarzeichen&lt;br /&gt;
 :1,$s/^.orf/kirn/           ersetze alles was am Zeilenanfang ein beliebiges Zeichen hat&lt;br /&gt;
                            gefolgt von einem orf durch kirn&lt;br /&gt;
 :1,$s/^[A-Z]orf/kirn/g     suche nach einem Großbuchstaben am Anfang der Zeile&lt;br /&gt;
                            gefolgt von einem orf und ersetze durch kirn&lt;br /&gt;
 :1,$s/^M[ae][iy]e*r/kirn/  suche alles, was am Anfang der Zeile ein großes M enthält,&lt;br /&gt;
                            gefolgt von einem a oder e , gefolgt von einem i oder y ,&lt;br /&gt;
                            gefolgt von einem e , welches 0 oder N mal vorkommen kann,&lt;br /&gt;
                            gefolgt von einem r und ersetze es durch kirn&lt;br /&gt;
&lt;br /&gt;
==Reguläre Ausdrücke==&lt;br /&gt;
&lt;br /&gt;
{| Border=1 Cellpadding=2&lt;br /&gt;
|c&lt;br /&gt;
|Ein einzelner Buchstabe passt auf sich selbst&lt;br /&gt;
|-&lt;br /&gt;
|.&lt;br /&gt;
|Ein Punkt passt auf jedes Zeichen außer auf das Zeilenende&lt;br /&gt;
|-&lt;br /&gt;
|*&lt;br /&gt;
|Das dem Operator * vorangehende Muster kann 0 oder öfter vorkommen&lt;br /&gt;
|-&lt;br /&gt;
|^&lt;br /&gt;
|(Caret) passt auf den Zeilenanfang&lt;br /&gt;
|-&lt;br /&gt;
|$&lt;br /&gt;
|Passt auf das Zeilenende&lt;br /&gt;
|-&lt;br /&gt;
|\&lt;br /&gt;
|Das folgende Sonderzeichen wird entwertet&lt;br /&gt;
|-&lt;br /&gt;
|[...]&lt;br /&gt;
|Passt auf &amp;quot;genau&amp;quot; eins in [...] angebenen Zeichen&lt;br /&gt;
|-&lt;br /&gt;
|[^...]&lt;br /&gt;
|Passt auf &amp;quot;genau&amp;quot; ein Zeichen welches nicht in [...] angebenen ist&lt;br /&gt;
|-&lt;br /&gt;
|\&amp;lt;&lt;br /&gt;
|Passt auf den Wortanfang&lt;br /&gt;
|-&lt;br /&gt;
|\&amp;gt;&lt;br /&gt;
|Passt auf das Wortende&lt;br /&gt;
|-&lt;br /&gt;
|\+&lt;br /&gt;
|Das dem Operator \+ vorangehende Muster kann 1 oder öfter vorkommen&lt;br /&gt;
|-&lt;br /&gt;
|&amp;amp;&lt;br /&gt;
|Setzt das gefunden Suchmuster ein&lt;br /&gt;
|-&lt;br /&gt;
|\(...\)&lt;br /&gt;
|Speichert den Text auf den das Suchmuster passt zur späteren Verwendung&lt;br /&gt;
|-&lt;br /&gt;
|\n&lt;br /&gt;
|Setzt das vorangehende, mit \(...\) Gefundene wieder ein&lt;br /&gt;
|-&lt;br /&gt;
|(...)&lt;br /&gt;
|Gruppiert Auswahlmöglichkeiten&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;nowiki&amp;gt;|&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
|Trennt Auswahlmöglichkeiten&lt;br /&gt;
|-&lt;br /&gt;
|\b&lt;br /&gt;
|Passt auf den Anfang oder das Ende eines Wortes&lt;br /&gt;
|-&lt;br /&gt;
|\B&lt;br /&gt;
|Symbolisiert den Raum innerhalb eines Wortes&lt;br /&gt;
|-&lt;br /&gt;
|\w&lt;br /&gt;
|Passt auf alle alphanumerischen Zeichen [A-Za-z0-9]&lt;br /&gt;
|-&lt;br /&gt;
|\W&lt;br /&gt;
|Passt auf alle nichtalphanumerischen Zeichen [^A-Za-z0-9]&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Die Rangfolge der Operatoren(von der höchsten zur niedrigsten)&lt;br /&gt;
:(, ), ?, *, + | .&lt;br /&gt;
&lt;br /&gt;
Die anderen Operatoren sind mit den anderen Buchstaben gleichrangig.&lt;br /&gt;
&lt;br /&gt;
===Beispiel zum Suchen===&lt;br /&gt;
&lt;br /&gt;
 Suchmuster               Passt auf&lt;br /&gt;
 ^Tuxer                   Tuxer am Zeilenanfang&lt;br /&gt;
 [tT]uxer                 Tuxer oder tuxer&lt;br /&gt;
 80[23]?86                8086, 80286 oder 80386&lt;br /&gt;
&lt;br /&gt;
===grep===&lt;br /&gt;
&lt;br /&gt;
Mit grep ist es möglich, in Dateien nach regulären Ausdrücken zu suchen. Wenn&lt;br /&gt;
eine Übereinstimmung gefunden wird, wird die komplette Zeile auf die&lt;br /&gt;
Standardausgabe geschrieben. grep kann auch von STDIN lesen.Es ist&lt;br /&gt;
empfehlenswert, sich anzugwöhnen ,das Suchmuster in Anführungszeichen zu&lt;br /&gt;
schreiben. Es gibt 3 Arten fgrep = fastgrep , grep und egrep egrep&lt;br /&gt;
&lt;br /&gt;
Beispiel:&lt;br /&gt;
&lt;br /&gt;
 root@zero:~# cat text&lt;br /&gt;
 quatsch&lt;br /&gt;
 quatsch&lt;br /&gt;
 quatsch&lt;br /&gt;
 wichtig&lt;br /&gt;
 quatsch&lt;br /&gt;
 root@zero:~# grep wichtig text&lt;br /&gt;
 wichtig&lt;br /&gt;
 root@zero:~# &lt;br /&gt;
&lt;br /&gt;
 -c                   meldet nur die Gesamtzahl der Fundstellen&lt;br /&gt;
 -v                   zeigt nur Zeilen, die »Ausdruck« nicht enthalten&lt;br /&gt;
 -i                   ignoriert Groß- und Kleinschreibung&lt;br /&gt;
 -l                    meldet nur Dateinamen mit Fundstellen&lt;br /&gt;
 -n                   listet Zeilennummern zu jeder Fundstelle&lt;br /&gt;
 -f                   Dateiname »Dateiname« enthält die Such-Ausdrücke&lt;br /&gt;
 -E                   ist ein erweiterter regulärer Ausdruck (egrep)&lt;br /&gt;
 -F                   (Muster, Ausdruck) ist ein Muster (String) (fgrep)&lt;br /&gt;
 -b                   listet auch die Position der Fundstellen&lt;br /&gt;
 -C    Anzahl         Anzahl von Zeilen werden nach der Fundstelle ausgegeben&lt;br /&gt;
 -B    Anzahl         Anzahl von Zeilen werden vor der Fundstelle ausgegeben&lt;br /&gt;
 -r                   Durchsucht Verzeichnisse rekursiv&lt;br /&gt;
&lt;br /&gt;
==Useridendifikation==&lt;br /&gt;
===/etc/passwd===&lt;br /&gt;
====Beschreibung====&lt;br /&gt;
passwd ist eine ASCII-Datei, die eine Liste der Benutzer des Systems und deren&lt;br /&gt;
Passwörter enthält. Die Passwortdatei sollte für alle Benutzer lesbar sein, was für&lt;br /&gt;
dieVerschlüsselung notwendig ist; aber nur vom Superuser beschreibbar. Wenn&lt;br /&gt;
Sie eine neue Kennung einrichten, lassen Sie das Passwort-Feld in der Datei frei&lt;br /&gt;
und benutzen Sie passwd(1), um dem System ein Passwort für die neue Kennung&lt;br /&gt;
mitzuteilen.&lt;br /&gt;
&lt;br /&gt;
Die Datei /etc/passwd enthält einen Eintrag pro Zeile mit dem Format:&lt;br /&gt;
login_name:passwd:UID:GID:user_name:directory:shell&lt;br /&gt;
====Die Bedeutung der Felder:====&lt;br /&gt;
# login_name Kennung des Benutzers auf dem System.&lt;br /&gt;
# password   Hier steht bei Shadowsystemen ein x. Die Passwörter sind in der Datei /etc/shadow&lt;br /&gt;
# UID        Die numerische Benutzernummer.&lt;br /&gt;
#  GID        Die numerische Gruppennummer des Benutzers.&lt;br /&gt;
# user_name Ein optionales Kommentarfeld, oft benutzt für den vollen Namen des Benutzers und weitere Informationen (Telefon, Raum-Nummer etc.).&lt;br /&gt;
# directory  Das Heimatverzeichnis $HOME des Benutzers.&lt;br /&gt;
# shell      Das Programm, das beim Einloggen gestartet werden soll (falls nicht nötig, benutzen Sie /bin/bash).&lt;br /&gt;
&lt;br /&gt;
===/etc/group===&lt;br /&gt;
====Beschreibung====&lt;br /&gt;
etc/group ist eine ASCII Datei, die Gruppen definiert, zu denen Benutzer&lt;br /&gt;
gehören. Es gibt nur einen Eintrag pro Zeile; jede Zeile hat folgendes Format:&lt;br /&gt;
         GruppenName:Passwort:GruppenKennung:BenutzerListe&lt;br /&gt;
Beschreibung der Felder:&lt;br /&gt;
#     GruppenName      Die Bezeichnung der Gruppe.&lt;br /&gt;
#     Passwort         Das (verschlüsselte) Gruppen-Passwort. Wenn dieses Feld leer ist, wird kein Passwort benötigt.&lt;br /&gt;
#     GruppenKennung Die numerische Identifikation der Gruppe.&lt;br /&gt;
#     BenutzerListe    Alle Namen der Mitglieder, getrennt durch Kommas.&lt;br /&gt;
&lt;br /&gt;
===/etc/shadow===&lt;br /&gt;
====Beschreibung====&lt;br /&gt;
shadow beinhaltet Informationen zu den verschlüsselten Passwörten, zu den&lt;br /&gt;
Benutzerzugängen und weitere Informationen zur Laufzeit der Passwörter.&lt;br /&gt;
 Name:Passwort:Letzte Änderung:Mintage:Maxtage:Warntage:Inaktiv:Ablauf&lt;br /&gt;
#    Der Loginname&lt;br /&gt;
#    verschlüsseltes Passwort &lt;br /&gt;
&amp;lt;nowiki&amp;gt;*&amp;lt;/nowiki&amp;gt; bedeutet Benutzer kann sich nicht einlogen&lt;br /&gt;
! bedeutet Benutzer hat kein Passwort gesetzt&lt;br /&gt;
#    Tage seit dem 1 Januar 1970 an dem das Passwort letztmals geändert wurde&lt;br /&gt;
#    Tage, die das Passwort behalten werden muss, bevor es wieder geändert werden kann&lt;br /&gt;
#     Die Anzahl der Tage, nach denen der Benutzer das Passwort wieder ändern muss&lt;br /&gt;
#    Anzahl der Tage bevor das Passwort abläuft und der Benutzer gewarnt wird&lt;br /&gt;
#    Wenn der Zugang diese Anzahl von Tagen nicht benutzt wird, wird der Zugang gesperrt&lt;br /&gt;
#    Tag seit dem 1 Januar 1970, an dem der Zugang gesperrt wird&lt;br /&gt;
#    Reserviertes Feld&lt;br /&gt;
&lt;br /&gt;
Die Datei sollte aus Sicherheitgründen nicht für einen normalen Benutzer lesbar&lt;br /&gt;
sein.&lt;br /&gt;
&lt;br /&gt;
==Programme zur Userverwaltung==&lt;br /&gt;
===useradd===&lt;br /&gt;
User anlegen&lt;br /&gt;
 root@zero:~# useradd -m -u 1011 -g users -G admin -d /home/erwin -s /bin/bash -c &amp;quot;Erwin Lehman&amp;quot;  erwin&lt;br /&gt;
{| border=1 cellpadding=2&lt;br /&gt;
|&amp;quot;-m&amp;quot;&lt;br /&gt;
|Lege Homedirectory an&lt;br /&gt;
|-&lt;br /&gt;
|&amp;quot;-u 1011&amp;quot;&lt;br /&gt;
|Userid wird zugeordnet&lt;br /&gt;
|-&lt;br /&gt;
|&amp;quot;-g users&amp;quot;&lt;br /&gt;
|Primäre Gruppe wird zugeordnet&lt;br /&gt;
|-&lt;br /&gt;
|&amp;quot;-G admin&amp;quot;&lt;br /&gt;
|Sekunbdäre Gruppe wird zugeordnet&lt;br /&gt;
|-&lt;br /&gt;
|&amp;quot;-d /home/erwin/&amp;quot;&lt;br /&gt;
|Name des Homedirectory&lt;br /&gt;
|-&lt;br /&gt;
|&amp;quot;-s /bin/bash&amp;quot;&lt;br /&gt;
|Bash wird zugeordnet&lt;br /&gt;
|- &lt;br /&gt;
|&amp;quot;-c Erwin Lehman&amp;quot;&lt;br /&gt;
|Kommentarfeld&lt;br /&gt;
|-&lt;br /&gt;
|&amp;quot;erwin&amp;quot; &lt;br /&gt;
|Name des Users&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Defaulteinstellungen anzeigen&lt;br /&gt;
 root@zero:~# useradd -D&lt;br /&gt;
 GROUP=100&lt;br /&gt;
 HOME=/home&lt;br /&gt;
 INACTIVE=-1&lt;br /&gt;
 EXPIRE=&lt;br /&gt;
 SHELL=/bin/sh&lt;br /&gt;
 SKEL=/etc/skel&lt;br /&gt;
 CREATE_MAIL_SPOOL=no&lt;br /&gt;
&lt;br /&gt;
Defaulteinstellungen ändern&lt;br /&gt;
 useradd -D -s /bin/bash&lt;br /&gt;
&lt;br /&gt;
Konfigurationsdatei&lt;br /&gt;
 root@zero:~# cat /etc/default/useradd &lt;br /&gt;
 SHELL=/bin/bash&lt;br /&gt;
 GROUP=100&lt;br /&gt;
 HOME=/home&lt;br /&gt;
 INACTIVE=-1&lt;br /&gt;
 EXPIRE=&lt;br /&gt;
 SKEL=/etc/skel&lt;br /&gt;
 CREATE_MAIL_SPOOL=no&lt;br /&gt;
&lt;br /&gt;
===usermod===&lt;br /&gt;
User modifizieren&lt;br /&gt;
 root@zero:~# usermod -l fritz -s /bin/sh -G admin,video erwin&lt;br /&gt;
{| border=1 cellpadding=2&lt;br /&gt;
|&amp;quot;-l fritz&amp;quot;&lt;br /&gt;
|Neuer Username&lt;br /&gt;
|-&lt;br /&gt;
|&amp;quot;-s /bin/sh&amp;quot;&lt;br /&gt;
|Neue Shell&lt;br /&gt;
|-&lt;br /&gt;
|&amp;quot;-G admin, video&amp;quot;&lt;br /&gt;
|Sekunbdäre Gruppen werden zugeordnet&lt;br /&gt;
|-&lt;br /&gt;
|&amp;quot;erwin&amp;quot; &lt;br /&gt;
|Name des Users&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
===userdel===&lt;br /&gt;
User inklusive Homedirectory löschen&lt;br /&gt;
 root@zero:~# userdel -r fritz&lt;br /&gt;
&lt;br /&gt;
===passwd===&lt;br /&gt;
Rootpasswort ändern&lt;br /&gt;
 root@zero:~# passwd &lt;br /&gt;
 Geben Sie ein neues UNIX Passwort ein:'''sysadm''' &lt;br /&gt;
 Geben Sie das neue UNIX Passwort erneut ein:'''sysadm''' &lt;br /&gt;
 passwd: Passwort erfolgreich geändert&lt;br /&gt;
&lt;br /&gt;
Passwort von tux ändern&lt;br /&gt;
 root@zero:~# passwd tux&lt;br /&gt;
 Geben Sie ein neues UNIX Passwort ein:'''suxer''' &lt;br /&gt;
 Geben Sie das neue UNIX Passwort erneut ein:'''suxer'''&lt;br /&gt;
 passwd: Passwort erfolgreich geändert&lt;br /&gt;
&lt;br /&gt;
Minimale und Maximale Gültigkeit des Passwortes von tux festlegen&lt;br /&gt;
 root@zero:~# passwd -n 5 -x 120 tux&lt;br /&gt;
&lt;br /&gt;
===groupadd===&lt;br /&gt;
 root@zero:~# groupadd -f -g 2001 xinuxer&lt;br /&gt;
{| border=1 cellpadding=2&lt;br /&gt;
|&amp;quot;-f&amp;quot;&lt;br /&gt;
|Überschreibe bestehende Gruppe&lt;br /&gt;
|-&lt;br /&gt;
|&amp;quot;-g 2001&amp;quot;&lt;br /&gt;
|GID der Gruppe&lt;br /&gt;
|-&lt;br /&gt;
|&amp;quot;xinuxer&amp;quot; &lt;br /&gt;
|Name des Gruppe&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==chmod==&lt;br /&gt;
Die Syntax des Befehls chmod lautet:&lt;br /&gt;
&lt;br /&gt;
'''chmod''' WerWieWas [,WerWieWas,.....] Dateiliste&lt;br /&gt;
&lt;br /&gt;
oder&lt;br /&gt;
&lt;br /&gt;
'''chmod''' Oktalzahl Dateiliste&lt;br /&gt;
&lt;br /&gt;
Durch WerWieWas bzw. Oktalzahl wird die Rechtetabelle definiert. Innerhalb von&lt;br /&gt;
WerWieWas darf es kein Leerzeichen geben. Wer bezeichnet den Benutzerkreis,&lt;br /&gt;
dem man Rechte gibt, Wie die Art, in der die Rechte gegeben werden und Was die&lt;br /&gt;
Rechte als solche. Im einzelnen können folgende Kürzel benutzt werden:&lt;br /&gt;
&lt;br /&gt;
Für Wer kann eines der folgenden Kürzel oder eine Kombination davon stehen:&lt;br /&gt;
 u                   (user) Rechte für den Dateibesitzer&lt;br /&gt;
 g                   (group) Rechte für die Gruppe&lt;br /&gt;
 o                   (others) Rechte für alle anderen Benutzer&lt;br /&gt;
 a                   (all) Rechte für alle Benutzer&lt;br /&gt;
Für Wie steht eines der folgenden Kürzel:&lt;br /&gt;
 +                   Die Rechte werden zu den vorhandenen zusätzlich vergeben&lt;br /&gt;
 -                   Die im Folgenden genannten Rechte werden entzogen&lt;br /&gt;
 =                   Die im Folgenden genannten Rechte ersetzen die bisherigen&lt;br /&gt;
Für Was steht eines der folgenden Kürzel:&lt;br /&gt;
 r                   (read) lesen&lt;br /&gt;
 w                   (write) schreiben&lt;br /&gt;
 x                   (execute) ausführen&lt;br /&gt;
oder diese Sonderformen&lt;br /&gt;
 s                   (usersbit) Programm läuft unter der UID des Besitzers&lt;br /&gt;
 s                   (groupsbit)Programm läuft unter der GID des GRUPPE&lt;br /&gt;
 t                   (stickybit) Dateien im Verzeichnis darf nur Besitzer löschen&lt;br /&gt;
&lt;br /&gt;
===Beispiel===&lt;br /&gt;
Setze für alle Schreib- und Leserecht&lt;br /&gt;
 xinux@zero:~$ chmod a=rw test &lt;br /&gt;
 xinux@zero:~$ ls -l test &lt;br /&gt;
 -rw-rw-rw- 1 xinux xinux 0 2009-06-16 12:01 test&lt;br /&gt;
 xinux@zero:~$ &lt;br /&gt;
&lt;br /&gt;
Erteile Besitzer Ausführungsrecht&lt;br /&gt;
 xinux@zero:~$ chmod u+x test ; ls -l test &lt;br /&gt;
 -rwxrw-rw- 1 xinux xinux 0 2009-06-16 12:01 test&lt;br /&gt;
 xinux@zero:~$ &lt;br /&gt;
&lt;br /&gt;
===chmod oktale Schreibweise===&lt;br /&gt;
 Specialrights        User           Group         Other&lt;br /&gt;
 usbit gsbit sticky    r    w   x     r   w   x     r   w   x&lt;br /&gt;
   1     1      1      1    1   1     1   1   1     1   1   1&lt;br /&gt;
   0     0      0      0    0   0     0   0   0     0   0   0&lt;br /&gt;
 Oktale Wertigkeit pro Recht&lt;br /&gt;
   4     2       1     4    2   1     4   2   1     4   2   1&lt;br /&gt;
&lt;br /&gt;
===Beispiele===&lt;br /&gt;
 xinux@zero:~$ chmod 751 test ; ls -l test&lt;br /&gt;
 -rwxr-x--x 1 xinux xinux 0 2009-06-16 12:01 test&lt;br /&gt;
 xinux@zero:~$ &lt;br /&gt;
&lt;br /&gt;
 xinux@zero:~$ chmod 4770 test ; ls -l test&lt;br /&gt;
 -rwsrwx--- 1 xinux xinux 0 2009-06-16 12:01 test&lt;br /&gt;
 xinux@zero:~$ &lt;br /&gt;
&lt;br /&gt;
 xinux@zero:~$ chmod 0 test ; ls -l test &lt;br /&gt;
 ---------- 1 xinux xinux 0 2009-06-16 12:01 test&lt;br /&gt;
&lt;br /&gt;
===chmod Optionen===&lt;br /&gt;
 -c   (changes) es werden nur die Dateien angezeigt, deren Zugriffsrechte tatsächlich verändert werden&lt;br /&gt;
 -f   (silent, quiet) Fehlermeldungen wegen fehlgeschlagener Änderungsversuche werden unterdrückt&lt;br /&gt;
 -v   (verbose) alle Aktionen werden angezeigt&lt;br /&gt;
 -R   (recursive) die Zugriffsrechte aller Dateien in den Unterverzeichnissen werden ebenfalls geändert&lt;br /&gt;
&lt;br /&gt;
Theoretisch sind alle Kombinationen der Zugriffsrechte denkbar, aber der&lt;br /&gt;
Eigentümer einer Datei darf diese immer lesen, selbst wenn das Lesebit nicht&lt;br /&gt;
gesetzt ist. Genauso macht es wenig Sinn, eine gewöhnliche Textdatei als&lt;br /&gt;
ausführbar zu setzen; die Shell wird damit nichts anfangen können. Ein x für ein&lt;br /&gt;
Verzeichnis gibt an, dass in dieses gewechselt werden kann.&lt;br /&gt;
&lt;br /&gt;
Rechte sind verbindlich&lt;br /&gt;
&lt;br /&gt;
Interessant ist auch ein Konstrukt folgender Art&lt;br /&gt;
 -rwx---rwx&lt;br /&gt;
&lt;br /&gt;
das angibt, dass mit der Datei alles angestellt werden kann, außer durch Nutzer der&lt;br /&gt;
Gruppe. Versucht irgend jemand, der nicht der Gruppe des Eigentümers angehört,&lt;br /&gt;
die Datei zu modifizieren, wird ihm dies gelingen, einem Gruppenmitglied bleibt&lt;br /&gt;
dies versagt, obwohl er ja gleichzeitig ein &amp;quot;Anderer&amp;quot; ist. D.h. die Rechte der&lt;br /&gt;
Gruppe sind verbindlicher, als die Rechte der anderen!&lt;br /&gt;
&lt;br /&gt;
===Bedeutungen der Zugriffsarten===&lt;br /&gt;
====Dateien====&lt;br /&gt;
* r: Der Inhalt der Datei kann gelesen und damit auch kopiert werden. &lt;br /&gt;
 root@zero:~# cat test&lt;br /&gt;
 Dies ist eine Testdatei&lt;br /&gt;
  &lt;br /&gt;
 root@zero:~# cp test backup&lt;br /&gt;
&lt;br /&gt;
* w: Der Inhalt der Datei darf verändert werden. Ob die Datei gelöscht werden kann ist&lt;br /&gt;
keine Eigenschaft der Datei, sondern des Verzeichnisses, indem sich die Datei befindet.&lt;br /&gt;
 root@zero:~# cat &amp;gt; test&lt;br /&gt;
 Hier steht jetzt was anderes&lt;br /&gt;
 ^C&lt;br /&gt;
 root@zero:~# cat test&lt;br /&gt;
 Hier steht jetzt was anderes&lt;br /&gt;
  &lt;br /&gt;
 xinux@zero:~$ ls -ld verzeichnis/&lt;br /&gt;
 dr-xr-xr-x 2 xinux xinux 4096 2009-06-18 11:16 verzeichnis/&lt;br /&gt;
 xinux@zero:~/verzeichnis$ rm text&lt;br /&gt;
 rm: Entfernen von „text“ nicht möglich: Permission denied&lt;br /&gt;
&lt;br /&gt;
* x: Ausführrecht für Programme und Skripte&lt;br /&gt;
 xinux@zero:~$ ./programm&lt;br /&gt;
 -bash: ./programm: Permission denied&lt;br /&gt;
 xinux@zero:~$ chmod +x programm&lt;br /&gt;
 xinux@zero:~$ ./programm&lt;br /&gt;
 Test&lt;br /&gt;
  test&lt;br /&gt;
&lt;br /&gt;
====Verzeichnisse====&lt;br /&gt;
* r: Die Einträge in dem Verzeichnis sind lesbar.&lt;br /&gt;
Leserecht von verzeichnis/ entziehen&lt;br /&gt;
 xinux@zero:~$ chmod a-r verzeichnis/&lt;br /&gt;
 xinux@zero:~$ ls verzeichnis/&lt;br /&gt;
 ls: Öffnen von Verzeichnis verzeichnis/ nicht möglich: Permission denied&lt;br /&gt;
Leserecht für Benutzer und Gruppe vergeben&lt;br /&gt;
 xinux@zero:~$ chmod a+r verzeichnis/&lt;br /&gt;
 xinux@zero:~$ ls verzeichnis/&lt;br /&gt;
 text&lt;br /&gt;
&lt;br /&gt;
* w: Die Einträge in dem Verzeichnis können geändert werden. &lt;br /&gt;
Neue Datei erstellen&lt;br /&gt;
 xinux@zero:~$ touch neu&lt;br /&gt;
 xinux@zero:~$ ls neu&lt;br /&gt;
 neu&lt;br /&gt;
&lt;br /&gt;
Datei löschen&lt;br /&gt;
 xinux@zero:~$ rm neu&lt;br /&gt;
 xinux@zero:~$ ls neu&lt;br /&gt;
 ls: Zugriff auf neu nicht möglich: No such file or directory&lt;br /&gt;
&lt;br /&gt;
* x: Der Name des Verzeichnisses kann in einem Pfadnamen erscheinen.&lt;br /&gt;
Verzeichnis ohne x Recht&lt;br /&gt;
 xinux@zero:~$ chmod a-x verzeichnis/&lt;br /&gt;
Wechseln in Verzeichnis mangels x-Recht nicht möglich&lt;br /&gt;
 xinux@zero:~$ cd verzeichnis/&lt;br /&gt;
 -bash: cd: verzeichnis/: Permission denied&lt;br /&gt;
x-Recht vergeben&lt;br /&gt;
 xinux@zero:~$ chmod a+x verzeichnis/&lt;br /&gt;
damit Wechsel in Verzeichnis möglich&lt;br /&gt;
 xinux@zero:~$ cd verzeichnis/&lt;br /&gt;
 xinux@zero:~/verzeichnis$ pwd&lt;br /&gt;
 /home/xinux/verzeichnis&lt;br /&gt;
&lt;br /&gt;
====umask====&lt;br /&gt;
Neue Dateien und Verzeichnisse werden mit ein und denselben Zufriffsrechten erzeugt.&lt;br /&gt;
 xinux@zero:~$ mkdir text&lt;br /&gt;
 xinux@zero:~$ touch textdat&lt;br /&gt;
 xinux@zero:~$ ls -ld text*&lt;br /&gt;
 drwxr-xr-x 2 xinux xinux 4096 2009-06-18 11:37 text&lt;br /&gt;
 -rw-r--r-- 1 xinux xinux    0 2009-06-18 11:37 textdat&lt;br /&gt;
&lt;br /&gt;
Zuständig für dieses Verhalten ist die sogenannte umask, die oft in der Datei&lt;br /&gt;
/etc/profile auf den Wert 022 voreingestellt ist. Zusätzlich wird noch eine&lt;br /&gt;
Maximalmaske benötigt, die sich für Verzeichnisse und andere Dateien&lt;br /&gt;
unterscheidet. Die bei der Erzeugung gesetzten Rechte entstehen nun, indem von&lt;br /&gt;
der Maximalmaske der durch die umask vorgegebene Wert subtrahiert wird:&lt;br /&gt;
&lt;br /&gt;
{| border=1 cellpadding=2&lt;br /&gt;
!&lt;br /&gt;
! Dateien&lt;br /&gt;
! Verzeichnisse&lt;br /&gt;
|-&lt;br /&gt;
| Systemvorgabe&lt;br /&gt;
| 666&lt;br /&gt;
| 777&lt;br /&gt;
|-&lt;br /&gt;
| -umask&lt;br /&gt;
| 022&lt;br /&gt;
| 022&lt;br /&gt;
|-&lt;br /&gt;
| Ergebnis&lt;br /&gt;
| 644&lt;br /&gt;
| 755&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
 xinux@zero:~$ grep umask /etc/profile&lt;br /&gt;
 umask 022&lt;br /&gt;
&lt;br /&gt;
==Gruppenzugehörigkeit==&lt;br /&gt;
===newgrp===&lt;br /&gt;
Ändert die Gruppenzugehörigkeit eines Benutzers auf die angegebene Gruppe. Wenn keine Gruppe angegeben wird, wird die &lt;br /&gt;
Anmeldegruppe des Benutzers verwendet. Die neue Gruppe wird anschließend fü Zugriffskontrollen verwendet.&lt;br /&gt;
&lt;br /&gt;
 newgrp Gruppenname&lt;br /&gt;
&lt;br /&gt;
 root@zero:~# newgrp hacker&lt;br /&gt;
 root@zero:~# id&lt;br /&gt;
 uid=0(root) gid=1006(hacker) Gruppen=0(root),1006(hacker)&lt;br /&gt;
&lt;br /&gt;
===chgrp===&lt;br /&gt;
Verändert die Besitzugehörigkeit zu der angegebenen Gruppe&lt;br /&gt;
&lt;br /&gt;
 chgrp [Optionen] Gruppe Datei(en)&lt;br /&gt;
&lt;br /&gt;
Optionen:&lt;br /&gt;
 -c Zeigt Veränderungen an&lt;br /&gt;
 -f Unterdrückt die meisten Fehlermeldungen&lt;br /&gt;
 -R Verändert Dateien und Verzeichnisse rekursiv&lt;br /&gt;
 -v Gibt geschwätzige Ausgabe aus.&lt;br /&gt;
&lt;br /&gt;
 root@zero:~# ls -l&lt;br /&gt;
 ...&lt;br /&gt;
 d-wx--x--x  3 root root 4096 2009-06-18 13:34 verzeichnis&lt;br /&gt;
 &lt;br /&gt;
 root@zero:~# chgrp -R xinux verzeichnis/&lt;br /&gt;
 root@zero:~# ls -l&lt;br /&gt;
 ...&lt;br /&gt;
 d-wx--x--x  3 root xinux 4096 2009-06-18 13:34 verzeichnis&lt;br /&gt;
&lt;br /&gt;
 xinux@zero:~$ cd /root/verzeichnis/&lt;br /&gt;
 xinux@zero:/root/verzeichnis$ pwd&lt;br /&gt;
 /root/verzeichnis&lt;br /&gt;
&lt;br /&gt;
===chown===&lt;br /&gt;
Ändert den Eigentümer von einer oder mehreren Dateien in den angegebenen Benutzer. &lt;br /&gt;
chown erlaubt ebenfalls das Ändern der Gruppeneigentümreschaft. Nur der aktuelle Eigentümer einer&lt;br /&gt;
Datei oder der Superuser (root) darf die Eigentumsverhältnisse ändern.&lt;br /&gt;
&lt;br /&gt;
 chown [Optionen] Benutzer(:Gruppe) Dateien&lt;br /&gt;
&lt;br /&gt;
Optionen:&lt;br /&gt;
 -c Gibt Informationen über die veränderten Dateien aus&lt;br /&gt;
 --dereference Symbolischen Links folgen&lt;br /&gt;
 -v Gibt Informationen über alle Dateien aus, die chown zu ändern versucht, egal, ob die Änderung erfolgt ist oder nicht&lt;br /&gt;
 -R Geht rekursiv durch alle Unterverzeichnisse und führt die Änderungen durch. &lt;br /&gt;
&lt;br /&gt;
 root@zero:~# chown -R xinux.xinux verzeichnis/&lt;br /&gt;
 root@zero:~# ls -l&lt;br /&gt;
 insgesamt 12&lt;br /&gt;
 drwx------ 13 root  root  4096 2009-04-21 15:11 profile&lt;br /&gt;
 --w-------  1 root  root     0 2009-06-18 11:13 test&lt;br /&gt;
 -rw-r--r--  1 root  root    40 2009-06-18 12:04 text&lt;br /&gt;
 drwxrwx--x  3 xinux xinux 4096 2009-06-18 13:39 verzeichnis&lt;br /&gt;
 &lt;br /&gt;
 root@zero:~# chown -R -c xinux.xinux verzeichnis/&lt;br /&gt;
 &lt;br /&gt;
 root@zero:~# chown -R -v xinux.xinux verzeichnis/&lt;br /&gt;
 Eigentümer von „verzeichnis/01“ als xinux:xinux erhalten&lt;br /&gt;
 Eigentümer von „verzeichnis/test“ als xinux:xinux erhalten&lt;br /&gt;
 Eigentümer von „verzeichnis/“ als xinux:xinux erhalten&lt;br /&gt;
&lt;br /&gt;
==Eingabe/Ausgabe==&lt;br /&gt;
Standardeingabe (0): Laufende Programme erwarten von hier ihre Eingaben (normalerweise handelt es sich um die Tastatur).&lt;br /&gt;
&lt;br /&gt;
Standardausgabe (1): Programme schreiben auf diese ihre Ausgaben (Bildschirm).&lt;br /&gt;
&lt;br /&gt;
Standardfehlerausgabe (2) : Fehlerausgaben landen hier (Bildschirm, aber nur die aktive Konsole).&lt;br /&gt;
&lt;br /&gt;
[[Bild:std.jpg]]&lt;br /&gt;
&lt;br /&gt;
===cat===&lt;br /&gt;
Das Programm cat liest von STDIN und gibt es STDOUT wieder aus&lt;br /&gt;
&lt;br /&gt;
Einlesen der Datei text&lt;br /&gt;
 root@zero:~# cat &amp;lt; text&lt;br /&gt;
 wichtig&lt;br /&gt;
&lt;br /&gt;
Schreiben in die Datei text, dies überschreibt den bisherigen Inhalt der Datei&lt;br /&gt;
 root@zero:~# cat &amp;gt; text&lt;br /&gt;
 sogar noch wichtiger &lt;br /&gt;
 &lt;br /&gt;
Ausgeben der Datei text&lt;br /&gt;
 root@zero:~# cat text &lt;br /&gt;
 sogar noch wichtiger&lt;br /&gt;
&lt;br /&gt;
Lesen aus der Datei text und schreiben in die Datei neuertext&lt;br /&gt;
 root@zero:~# cat &amp;lt; text &amp;gt; neuertext&lt;br /&gt;
 root@zero:~# cat neuertext&lt;br /&gt;
 sogar noch wichtiger&lt;br /&gt;
&lt;br /&gt;
Anhängen der Ausgabe von date an die Datei neuertext&lt;br /&gt;
 root@zero:~# date &amp;gt;&amp;gt; neuertext&lt;br /&gt;
 root@zero:~# cat neuertext&lt;br /&gt;
 sogar noch wichtiger&lt;br /&gt;
 Do 18. Jun 14:08:58 CEST 2009&lt;br /&gt;
&lt;br /&gt;
Umleiten des Standardfehlerkanals nach error&lt;br /&gt;
 root@zero:~# rm sux 2&amp;gt; error&lt;br /&gt;
 root@zero:~# more error&lt;br /&gt;
 rm: Entfernen von „sux“ nicht möglich: No such file or directory&lt;br /&gt;
&lt;br /&gt;
===Umleitungen===&lt;br /&gt;
Nacheinander auszuführende Kommandos&lt;br /&gt;
 root@zero:~# pwd; date&lt;br /&gt;
 /root&lt;br /&gt;
 Do 18. Jun 14:13:05 CEST 2009&lt;br /&gt;
 &lt;br /&gt;
Übergeben der Ausgabe von tail als Eingabe von grep mit Hilfe der Pipe &amp;quot;|&amp;quot;&lt;br /&gt;
 root@zero:~# tail /var/log/auth.log | grep xinux&lt;br /&gt;
 Jun 18 13:52:33 zero nss_wins[11433]: pam_unix(login:session): session closed for user xinux&lt;br /&gt;
&lt;br /&gt;
Übergeben der letzten 100 Zeilen von syslog als Eingabe von grep&lt;br /&gt;
 root@zero:~# tail /var/log/syslog -n 100 | grep error&lt;br /&gt;
 Jun 18 09:30:54 zero kernel: [154384.692135] end_request: I/O error, dev fd0, sector 0&lt;br /&gt;
 Jun 18 09:30:54 zero kernel: [154384.712137] end_request: I/O error, dev fd0, sector 0&lt;br /&gt;
&lt;br /&gt;
==tr==&lt;br /&gt;
tr ist ein Programm um Zeichen zu übersetzen. Dies betrifft nur die Ausgabe, die Datei selbst bleibt unverändert.&lt;br /&gt;
&lt;br /&gt;
Ersetzt Kleinbuchstaben durch Großbuchstaben aus der Datei text&lt;br /&gt;
 root@zero:~# tr &amp;quot;a-z&amp;quot; &amp;quot;A-Z&amp;quot; &amp;lt; text&lt;br /&gt;
 SOGAR NOCH WICHTIGER&lt;br /&gt;
 123&lt;br /&gt;
 34&lt;br /&gt;
 4711&lt;br /&gt;
 TEST&lt;br /&gt;
&lt;br /&gt;
Ersetzt alle Zahlen durch X&lt;br /&gt;
 root@zero:~# tr &amp;quot;0-9&amp;quot; &amp;quot;X&amp;quot; &amp;lt; text&lt;br /&gt;
 sogar noch wichtiger&lt;br /&gt;
 XXX&lt;br /&gt;
 XX&lt;br /&gt;
 XXXX&lt;br /&gt;
 test&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
 root@zero:~# cat &amp;gt; test&lt;br /&gt;
 +++++&lt;br /&gt;
 ###&lt;br /&gt;
 1111&lt;br /&gt;
&lt;br /&gt;
-s löscht mehrfach kommende Zeichen&lt;br /&gt;
 root@zero:~# tr '''-s''' &amp;quot;+&amp;quot; &amp;lt; test&lt;br /&gt;
 +&lt;br /&gt;
 ###&lt;br /&gt;
 1111&lt;br /&gt;
&lt;br /&gt;
-d löscht vorkommende Zeichen &lt;br /&gt;
 root@zero:~# tr '''-d''' &amp;quot;#&amp;quot; &amp;lt; test&lt;br /&gt;
 +++++ &lt;br /&gt;
 &lt;br /&gt;
 1111&lt;br /&gt;
&lt;br /&gt;
==cut==&lt;br /&gt;
Spalten aus einer Datei schneiden. Dies betrifft nur die Ausgabe, die Datei selbst bleibt unverändert.&lt;br /&gt;
 &lt;br /&gt;
Schneidet die erste Spalte aus, der Delimiter ist : &lt;br /&gt;
 root@zero:~# cut -f 1 -d : /etc/passwd&lt;br /&gt;
 root&lt;br /&gt;
 daemon&lt;br /&gt;
 bin&lt;br /&gt;
 ...&lt;br /&gt;
 xinux&lt;br /&gt;
&lt;br /&gt;
 root@zero:~# more test&lt;br /&gt;
 1234#5678#9999&lt;br /&gt;
 &lt;br /&gt;
Schneidet die zweite Spalte aus, der Delimiter ist #&lt;br /&gt;
 root@zero:~# cut -f 2 -d &amp;quot;#&amp;quot; &amp;lt; test&lt;br /&gt;
 5678&lt;br /&gt;
&lt;br /&gt;
Schneidet bis zum 3 Zeichen ab&lt;br /&gt;
 root@zero:~$ echo S01policykit | cut -c 4-&lt;br /&gt;
 policykit&lt;br /&gt;
&lt;br /&gt;
==expand==&lt;br /&gt;
Ersetzt Tabulatorzeichen durch Folgen von Leerzeichen und schreibt das Ergebnis auf die Standardausgabe&lt;br /&gt;
 root@zero:~# expand /etc/samba/smb.conf&lt;br /&gt;
 ...&lt;br /&gt;
&lt;br /&gt;
==fmt==&lt;br /&gt;
#Setzt den Text der Dateien im Blocksatz der angegebenen Breite durch Auffüllen von Zeilen und Entfernen von Zeilenwechseln.&lt;br /&gt;
Standardgemäß werden Leerzeilen, die Position von Leerzeichen und der Einzug am Zeilenanfang erhalten. fmt versucht, &lt;br /&gt;
Zeilenumbrüche an Satzenden durchzuführen sowie sie nach dem ersten oder vor dem letzten Wort eines Satzes zu vermeiden. &lt;br /&gt;
 &lt;br /&gt;
 fmt [Optionen] [Dateien]&lt;br /&gt;
&lt;br /&gt;
Optionen&lt;br /&gt;
&lt;br /&gt;
* -p ''Präfix'': Formatiert nur Zeilen, die mit ''Präfix'' anfangen&lt;br /&gt;
 root@zero:/tmp# fmt -p '#' text&lt;br /&gt;
 #Setzt den Text der Dateien im Blocksatz der angegebenen Breite durch&lt;br /&gt;
 #Auffüllen von Zeilen und Entfernen von Zeilenwechseln.  Standardgemäß&lt;br /&gt;
 #werden Leerzeilen, die Position von Leerzeichen und der Einzug am&lt;br /&gt;
 #Zeilenanfang erhalten. fmt versucht,&lt;br /&gt;
 Zeilenumbrüche an Satzenden durchzuführen sowie sie nach dem ersten oder vor dem letzten Wort eines Satzes zu vermeiden.&lt;br /&gt;
&lt;br /&gt;
* -u : Erzwingt genau ein Leerzeichen zwischen Wörtern und zwei Leerzeichen zwischen Sätzen&lt;br /&gt;
&lt;br /&gt;
* -w ''Breite'': Setzt die Ausgabebreite auf ''Breite''&lt;br /&gt;
 root@zero:/tmp# fmt -w 30 text&lt;br /&gt;
 #Setzt den Text der Dateien&lt;br /&gt;
 im Blocksatz der angegebenen&lt;br /&gt;
 Breite durch Auffüllen&lt;br /&gt;
 von Zeilen und Entfernen&lt;br /&gt;
 von Zeilenwechseln.&lt;br /&gt;
 #Standardgemäß werden&lt;br /&gt;
 Leerzeilen, die Position von&lt;br /&gt;
 Leerzeichen und der Einzug am&lt;br /&gt;
 Zeilenanfang erhalten. fmt&lt;br /&gt;
 versucht, Zeilenumbrüche&lt;br /&gt;
 an Satzenden durchzuführen&lt;br /&gt;
 sowie sie nach dem ersten&lt;br /&gt;
 oder vor dem letzten Wort&lt;br /&gt;
 eines Satzes zu vermeiden.&lt;br /&gt;
&lt;br /&gt;
==join==&lt;br /&gt;
Führt die Zeilen zweier sortierter Dateien anhand von '''Übereinstimmungen''' in einem gemeinsamen Feld zusammen.&lt;br /&gt;
&lt;br /&gt;
 root@zero:~# more name&lt;br /&gt;
 1. karl&lt;br /&gt;
 2. heinz&lt;br /&gt;
 3. hans&lt;br /&gt;
 4. otto&lt;br /&gt;
 root@zero:~# more tel&lt;br /&gt;
 1. 1234&lt;br /&gt;
 2. 4321&lt;br /&gt;
 3. 222&lt;br /&gt;
 4. 121212&lt;br /&gt;
 root@zero:~# join name tel &amp;gt; telefonbuch&lt;br /&gt;
 root@zero:~# more telefonbuch&lt;br /&gt;
 1. karl 1234&lt;br /&gt;
 2. heinz 4321&lt;br /&gt;
 3. hans 222&lt;br /&gt;
 4. otto 121212&lt;br /&gt;
&lt;br /&gt;
 root@zero:~# join -t : /etc/passwd /etc/shadow&lt;br /&gt;
 ....&lt;br /&gt;
 daemon:x:1:1:daemon:/usr/sbin:/bin/sh:*:14181:0:99999:7:::&lt;br /&gt;
 bin:x:2:2:bin:/bin:/bin/sh:*:14181:0:99999:7:::&lt;br /&gt;
 sys:x:3:3:sys:/dev:/bin/sh:*:14181:0:99999:7:::&lt;br /&gt;
 sync:x:4:65534:sync:/bin:/bin/sync:*:14181:0:99999:7:::&lt;br /&gt;
 ...&lt;br /&gt;
&lt;br /&gt;
join in dat1 nach Feld 3 und in dat2 nach Feld 2&lt;br /&gt;
 thomas@lydia:~$ cat dat1 &lt;br /&gt;
 hugo:ps:1111&lt;br /&gt;
 erwin:zw:2222&lt;br /&gt;
 karl:sb:3333&lt;br /&gt;
 rudi:kl:4444&lt;br /&gt;
 thomas@lydia:~$ cat dat2&lt;br /&gt;
 blau:1111:svn&lt;br /&gt;
 grün:2222:fcs&lt;br /&gt;
 gelb:3333:fch&lt;br /&gt;
 rot:4444:fck&lt;br /&gt;
 thomas@lydia:~$ join -t : -1 3 -2 2 dat1 dat2 &lt;br /&gt;
 1111:hugo:ps:blau:svn&lt;br /&gt;
 2222:erwin:zw:grün:fcs&lt;br /&gt;
 3333:karl:sb:gelb:fch&lt;br /&gt;
 4444:rudi:kl:rot:fck&lt;br /&gt;
&lt;br /&gt;
==nl==&lt;br /&gt;
Nummeriert die Zeilen in einer Datei.&lt;br /&gt;
&lt;br /&gt;
 root@zero:~# nl /etc/passwd                                                   &lt;br /&gt;
     1  root:x:0:0:root:/root:/bin/bash                                       &lt;br /&gt;
     2  daemon:x:1:1:daemon:/usr/sbin:/bin/sh                                 &lt;br /&gt;
     3  bin:x:2:2:bin:/bin:/bin/sh                                            &lt;br /&gt;
     4  sys:x:3:3:sys:/dev:/bin/sh                                            &lt;br /&gt;
     5  sync:x:4:65534:sync:/bin:/bin/sync&lt;br /&gt;
     ...&lt;br /&gt;
Nummereriet mit führenden Nullen der Separatir ist ein :&lt;br /&gt;
 root@zero:~# nl -s : -n rz dat1&lt;br /&gt;
&lt;br /&gt;
==od==&lt;br /&gt;
Gibt Dateien im Oktal und anderen Formaten aus.&lt;br /&gt;
&lt;br /&gt;
 od [Optionen] Datei&lt;br /&gt;
&lt;br /&gt;
* -j ''Bytes'': Überspringt die Anzahl ''Bytes'' einer Datei&lt;br /&gt;
* -N ''Bytes'': Gibt nur die Anzahl ''Bytes'' aus&lt;br /&gt;
* -c : Gebe ASCII Zeichen aus&lt;br /&gt;
* -f : Gebe Fließkommazahlen aus&lt;br /&gt;
* -i : Gebe Dezimal Integer aus&lt;br /&gt;
* -l : Gebe Dezimal Long aus&lt;br /&gt;
* -o : Gebe Oktal 2 Byte Einheiten aus&lt;br /&gt;
* -s : Gebe Dezimal 2 Byte Einheiten aus&lt;br /&gt;
* -x : Gebe Hexadezimale 2 Byte einheiten aus&lt;br /&gt;
&lt;br /&gt;
Beispiele&lt;br /&gt;
&lt;br /&gt;
Gebe Master Boot Record (die ersten 512 Byte der Festplatte /dev/sda) als Hexadezimal aus&lt;br /&gt;
 root@zero:~# od '''-x -N''' 512 /dev/sda&lt;br /&gt;
 0000000 48eb 1090 d08e 00bc b8b0 0000 d88e c08e&lt;br /&gt;
 0000020 befb 7c00 00bf b906 0200 a4f3 21ea 0006&lt;br /&gt;
 0000040 be00 07be 0438 0b75 c683 8110 fefe 7507&lt;br /&gt;
 0000060 ebf3 b416 b002 bb01 7c00 80b2 748a 0203&lt;br /&gt;
 0000100 00ff 2000 0001 0000 0200 90fa f690 80c2&lt;br /&gt;
 ...&lt;br /&gt;
&lt;br /&gt;
Schreibe &amp;quot;suxer&amp;quot; in die Datei test&lt;br /&gt;
 root@zero:~# echo &amp;quot;suxer&amp;quot; &amp;gt; test&lt;br /&gt;
Ausgabe Hexadezimal&lt;br /&gt;
 root@zero:~# od -x test&lt;br /&gt;
 0000000 7573 6578 0a72&lt;br /&gt;
 0000006&lt;br /&gt;
&lt;br /&gt;
Ausgabe ASCII Zeichen&lt;br /&gt;
 root@zero:~# od -c test&lt;br /&gt;
 0000000   s   u   x   e   r  \n&lt;br /&gt;
 0000006&lt;br /&gt;
&lt;br /&gt;
==paste==&lt;br /&gt;
Fügt die Zeilen von zwei oder mehr Dateien horizontal zusammen&lt;br /&gt;
 root@zero:~# paste name tel&lt;br /&gt;
 1. karl 1. 1234&lt;br /&gt;
 2. heinz        2. 4321&lt;br /&gt;
 3. hans 3. 222&lt;br /&gt;
 4. otto 4. 121212&lt;br /&gt;
&lt;br /&gt;
==pr==&lt;br /&gt;
Bereitet Textdateien zum Drucken vor.&lt;br /&gt;
&lt;br /&gt;
 root@zero:~# echo &amp;quot;Plan für heute&amp;quot; &amp;gt; dokument&lt;br /&gt;
 root@zero:~# more dokument&lt;br /&gt;
 Plan für heute&lt;br /&gt;
 root@zero:~# pr dokument   &lt;br /&gt;
  &lt;br /&gt;
 &lt;br /&gt;
 2009-06-19 12:44                    dokument                     Seite 1&lt;br /&gt;
 &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
 Plan für heute&lt;br /&gt;
&lt;br /&gt;
Anmerkung Ausmaße der Bildschirmausgabe wie eine Druckseite.&lt;br /&gt;
&lt;br /&gt;
==sed==&lt;br /&gt;
streaming editor. Mit sed ist es möglich, den Inhalt einer Datei automatisch (nicht interaktiv) zu&lt;br /&gt;
bearbeiten. Wie unter Linux üblich, wird auch hier der Text nicht wirklich verändert sondern die &lt;br /&gt;
Änderung erfolgt über die Standardausgabe, die wieder umgeleitet werden kann. Die Syntax ist ähnlich &lt;br /&gt;
des ex modus von vi. Reguläre Ausdrücke können nach Belieben benutzt werden. &lt;br /&gt;
&lt;br /&gt;
Optionen:&lt;br /&gt;
 -e Zeichenkette  wendet die Editorbefehle aus Zeichenkette auf den Text an.&lt;br /&gt;
 -n gibt nur die Zeilen aus, die explizit (durch &amp;quot;p&amp;quot; ausgedruckt werden sollen&lt;br /&gt;
&lt;br /&gt;
Gibt die dritte Zeile der Datei text aus&lt;br /&gt;
 root@zero:~# sed -n &amp;quot;3p&amp;quot; text&lt;br /&gt;
 34&lt;br /&gt;
&lt;br /&gt;
Gibt die erste bis dritte Zeile von text aus&lt;br /&gt;
 root@zero:~# sed -n &amp;quot;1,3p&amp;quot; text&lt;br /&gt;
 sogar noch wichtiger&lt;br /&gt;
 123&lt;br /&gt;
 34&lt;br /&gt;
&lt;br /&gt;
Löschen der Zeile mit &amp;quot;sogar&amp;quot;&lt;br /&gt;
 root@zero:~# sed -e '/sogar/d' &amp;lt; text&lt;br /&gt;
 123&lt;br /&gt;
 34&lt;br /&gt;
 4711&lt;br /&gt;
 test&lt;br /&gt;
&lt;br /&gt;
und schreiben in text2&lt;br /&gt;
 root@zero:~# sed -e '/sogar/d' &amp;lt; text &amp;gt; text2&lt;br /&gt;
 root@zero:~# more text2&lt;br /&gt;
 123&lt;br /&gt;
 34&lt;br /&gt;
 4711&lt;br /&gt;
 test&lt;br /&gt;
&lt;br /&gt;
Alle 3en durch DREI ersetzen&lt;br /&gt;
 root@zero:~# sed -e 's/3/DREI/g' &amp;lt; text&lt;br /&gt;
 sogar noch wichtiger&lt;br /&gt;
 12DREI&lt;br /&gt;
 DREI4&lt;br /&gt;
 4711&lt;br /&gt;
 test&lt;br /&gt;
&lt;br /&gt;
==wc==&lt;br /&gt;
Zählt die Anzahl von Zeichen, Wörter oder Zeilen&lt;br /&gt;
&lt;br /&gt;
Optionen&lt;br /&gt;
* -m : Zählt die Anzahl der Zeichen&lt;br /&gt;
 root@zero:~# more name&lt;br /&gt;
 1. karl&lt;br /&gt;
 2. heinz&lt;br /&gt;
 3. hans&lt;br /&gt;
 4. otto&lt;br /&gt;
 root@zero:~# wc '''-m''' tel&lt;br /&gt;
 33 tel&lt;br /&gt;
&lt;br /&gt;
* -w : Zählt die Anzahl der Wörter (einschließlich Zahlen und andere Zeichen)&lt;br /&gt;
 root@zero:~# wc '''-w''' name&lt;br /&gt;
 8 name&lt;br /&gt;
&lt;br /&gt;
* -l : Zählt die Anzahl der Zeilen&lt;br /&gt;
 root@zero:~# wc '''-l''' name&lt;br /&gt;
 4 name&lt;br /&gt;
&lt;br /&gt;
==Sort==&lt;br /&gt;
&lt;br /&gt;
Zum sortieren von Dateien nach Feldern benutzt man sort. sort liest von STDIN man kann die Datei aber auch als Argument übergeben. &lt;br /&gt;
&lt;br /&gt;
Sortiert nach dem ersten Feld&lt;br /&gt;
  root@zero:~# sort /etc/passwd 	 &lt;br /&gt;
&lt;br /&gt;
Es wird geprüft ob die Datei schon sortiert ist &lt;br /&gt;
 root@zero:~# sort -c /etc/passwd 	&lt;br /&gt;
&lt;br /&gt;
Sortiert nach dem ersten Feld (Richtungsumkehr)  &lt;br /&gt;
 root@zero:~#  sort -r /etc/passwd&lt;br /&gt;
&lt;br /&gt;
Führende Leersortzeichen werden ignoriert &lt;br /&gt;
 root@zero:~# sort -b /etc/passwd&lt;br /&gt;
&lt;br /&gt;
Ausgabe  in die Datei pass&lt;br /&gt;
 root@zero:~# sort  /etc/passwd   -o pass	 &lt;br /&gt;
&lt;br /&gt;
nimmt : als Trenner -Voreinstellung ist TAB&lt;br /&gt;
  root@zero:~# sort -t : /etc/passwd&lt;br /&gt;
&lt;br /&gt;
sortiert nach dem  3 Feld,  der Trenner ist : und es wird nummerisch sortiert&lt;br /&gt;
&lt;br /&gt;
 root@zero:~# sort -t: +2 -n /etc/passwd		&lt;br /&gt;
&lt;br /&gt;
sortiert nach dem  3 Feld,  der Trenner ist : und es wird nummerisch sortiert&lt;br /&gt;
					&lt;br /&gt;
 root@zero:~# sort -t: -k 3 -n /etc/passwd&lt;br /&gt;
&lt;br /&gt;
Sortiert nach dem  3  bis zum 5 Feld, der Trenner ist : und es wird nummerisch sortiert&lt;br /&gt;
	&lt;br /&gt;
 root@zero:~# sort -t: -k 3,5 -n /etc/passwd	&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==INodes==&lt;br /&gt;
Inode (oder I-Node) wird im Deutschen am besten als Informationsknoten oder&lt;br /&gt;
Indexeintrag bezeichnet. Er fasst alle Attribute einer Datei zusammen außer dem Inhalt&lt;br /&gt;
und dem Namen der Datei.&lt;br /&gt;
&lt;br /&gt;
===Daten===&lt;br /&gt;
{| border=1 cellpadding=2&lt;br /&gt;
|type&lt;br /&gt;
|Der Typ der Datei wird als einzelner Buchstabe angezeigt. Der Typ einer Datei wird beim Anlegen der Datei festgelegt&lt;br /&gt;
|-&lt;br /&gt;
|Permissions &lt;br /&gt;
|Die Zugriffsrechte der Datei werden in den 12 Bit sstrwxrwxrwx abgespeichert.Wenn sie gesetzt sind, werden sie bei &lt;br /&gt;
der Ausgabe an Stelle der x-Rechte ausgegeben. Die Zugriffsrechte können mit dem Kommando chmod verändert werden.&lt;br /&gt;
|-&lt;br /&gt;
|link count&lt;br /&gt;
|In UNIX kann eine Datei mehr als einen Namen haben. Der Link Count gibt die Anzahl der Namen einer Datei an. Er kann&lt;br /&gt;
mit dem Kommando ln erhöht und dem Kommando rm erniedrigt werden.&lt;br /&gt;
|-&lt;br /&gt;
|owner&lt;br /&gt;
|Für den Dateieigentümer gelten die in der ersten rwx-Gruppe festgelegten Zugriffsrechte. Standardmäßig ist der &lt;br /&gt;
Eigentümer einer Datei derjenige Benutzer, der die Datei angelegt hat.&lt;br /&gt;
|-&lt;br /&gt;
|group&lt;br /&gt;
|Für Benutzer, die in der gleichen Gruppe sind, der die Datei angehört, gelten die in der zweiten rwx-Gruppe festgelegten&lt;br /&gt;
Zugriffsrechte. In System V gehört eine Datei standardmäßig der Gruppe an, in der der anlegende Benutzer gerade ist.&lt;br /&gt;
|-&lt;br /&gt;
|size&lt;br /&gt;
|Bei normalen Dateien und Verzeichnissen gibt diese Information die Länge der Datei in Byte an.&lt;br /&gt;
|-&lt;br /&gt;
|access time&lt;br /&gt;
|Die Zugriffszeit gibt den Zeitpunkt des letzten Lesezugriffes auf eine Datei an. Aus Effizienzgründen wird die &lt;br /&gt;
Zugriffszeit an Verzeichnissen nicht gesetzt, wenn ein Verzeichnis durchsucht wird, obwohl man dies erwarten könnte. ''(ls -l --time=atime)''&lt;br /&gt;
|-&lt;br /&gt;
|modification time&lt;br /&gt;
|Die Modifikationszeit gibt die Zeit des letzten Schreibzugriffes auf die Daten der Datei an. Intern speichert UNIX &lt;br /&gt;
die Zeit als Sekunden seit Beginn des Jahres 1970 und in GMT ab. Für die Ausgabe wird dies in ein besser lesbares &lt;br /&gt;
Format in der lokalen Zeitzone umgewandelt. ''(ls -l)''&lt;br /&gt;
|-&lt;br /&gt;
|change time &lt;br /&gt;
|Die Veränderungszeit gibt das Datum der letzten Statusänderung der Datei an. Sie wird immer dann gesetzt, wenn die &lt;br /&gt;
Informationen über die Datei sich ändern (Datum der Erzeugung wird nicht gespeichert) ''(ls -lc)''&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
===Dateiarten===&lt;br /&gt;
{| border=1 cellpadding=2&lt;br /&gt;
!Zeichen&lt;br /&gt;
!Typ&lt;br /&gt;
!Zweck&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;nowiki&amp;gt;-&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
|file&lt;br /&gt;
|normale Datei&lt;br /&gt;
|-&lt;br /&gt;
|d&lt;br /&gt;
|directory&lt;br /&gt;
|Verzeichnis&lt;br /&gt;
|-&lt;br /&gt;
|b&lt;br /&gt;
|block device&lt;br /&gt;
|Gerätedatei&lt;br /&gt;
|-&lt;br /&gt;
|c&lt;br /&gt;
|character device&lt;br /&gt;
|Gerätedatei&lt;br /&gt;
|-&lt;br /&gt;
|l&lt;br /&gt;
|link&lt;br /&gt;
|Querverweis&lt;br /&gt;
|-&lt;br /&gt;
|p&lt;br /&gt;
|named pipe&lt;br /&gt;
|Benannte Pipeline&lt;br /&gt;
|-&lt;br /&gt;
|s&lt;br /&gt;
|socket&lt;br /&gt;
|Netzwerkverbindung&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
====Normale Dateien====&lt;br /&gt;
Unter einer normalen Datei versteht man die Ansammlung von Daten. Dies kann ein Text, Programm, Bild oder sonstiges sein. &lt;br /&gt;
Beispiel&lt;br /&gt;
 root@zero:~# ls -l text | cut -c 1&lt;br /&gt;
 -&lt;br /&gt;
&lt;br /&gt;
====Verzeichnisse====&lt;br /&gt;
Dateien werden in Verzeichnissen gespeichert, nur so ist eine Ordnung möglich. &lt;br /&gt;
 root@zero:~# mkdir -v Ordner&lt;br /&gt;
 mkdir: Verzeichnis „Ordner“ angelegt&lt;br /&gt;
 &lt;br /&gt;
 root@zero:~# ls -ld Ordner | cut -c 1&lt;br /&gt;
 d&lt;br /&gt;
&lt;br /&gt;
====Gerätedateien (Block und Char)====&lt;br /&gt;
Gerätedateien ermöglichen Anwendungsprogrammen unter Benutzung des  Kernels den Zugriff auf die Hardwarekomponenten des Systems. Ansprechbar über Major und Minor Nummern &lt;br /&gt;
&lt;br /&gt;
Beispiele&lt;br /&gt;
&lt;br /&gt;
Sicherung des Master Boot Records der ersten Festplatte&lt;br /&gt;
 root@zero:~# dd if=/dev/sda of=/tmp/mbr.img bs=512 count=1&lt;br /&gt;
&lt;br /&gt;
Block Device &lt;br /&gt;
 root@zero:~# ls -l /dev/sda | cut -c 1 &lt;br /&gt;
 b&lt;br /&gt;
&lt;br /&gt;
Character Device &lt;br /&gt;
 root@zero:~# ls -l /dev/ttyS0  | cut -c 1 &lt;br /&gt;
 c&lt;br /&gt;
&lt;br /&gt;
====Named Pipes====&lt;br /&gt;
Benannte Pipes (Named Pipes) können dagegen auch zur Kommunikation zwischen Prozessen eingesetzt werden, die nicht miteinander&lt;br /&gt;
verwandt sind und sich darüber hinaus auf unterschiedlichen Rechnern innerhalb eines Netzwerkes befinden dürfen. Sie sind &lt;br /&gt;
flexibler als anonyme Pipes und eignen sich für sogenannte Client-Server-Anwendungen (es lassen sich auch RPCs realisieren).&lt;br /&gt;
Benannte Pipes ermöglichen die gleichzeitige Kommunikation in beide Richtungen, das heißt, Daten können im Vollduplexbetrieb &lt;br /&gt;
zwischen den Prozessen ausgetauscht werden.&lt;br /&gt;
 &lt;br /&gt;
Erstelle Named Pipe mit Namen /tmp/roehre. Schreibe &amp;quot;hallo welt&amp;quot; in die Pipe und bleibe&lt;br /&gt;
 xinux@zero:~$ mkfifo /tmp/roehre&lt;br /&gt;
 xinux@zero:~$ echo hallo welt &amp;gt; /tmp/roehre &lt;br /&gt;
&lt;br /&gt;
Gebe Inhalt der Pipe mit cat aus&lt;br /&gt;
 root@zero:~# cat &amp;lt; /tmp/roehre &lt;br /&gt;
 hallo welt&lt;br /&gt;
 root@zero:~# ls -l /tmp/roehre | cut -c 1&lt;br /&gt;
 p&lt;br /&gt;
&lt;br /&gt;
====Sockets====&lt;br /&gt;
Schnittstelle um es lokalen Anwendungen zu ermöglichen, miteinander Netwerkmässig zu kommunizieren.&lt;br /&gt;
&lt;br /&gt;
 root@lydia:~# netstat  -lnxp | tail -1&lt;br /&gt;
  unix  2 [ ACC ] STREAM HÖRT 21951 6646/nm-applet /tmp/orbit-thomas/linc-19f6-0-2b9b81095cede&lt;br /&gt;
&lt;br /&gt;
 root@lydia:~# ls -l /tmp/orbit-thomas/linc-19f6-0-2b9b81095cede  | cut -c 1 &lt;br /&gt;
 s&lt;br /&gt;
&lt;br /&gt;
====Links====&lt;br /&gt;
Bei Links handelt es sich um symbolische Verweise auf andere Dateien&lt;br /&gt;
&lt;br /&gt;
'''Softlink'''&lt;br /&gt;
Ein Softlink ist eine Datei die nur auf den Namen einer anderen Datei verweist. Wenn die Originaldatei gelöscht wird, zeigt &lt;br /&gt;
der Link ins Leere. &lt;br /&gt;
&lt;br /&gt;
 ln -s datei softlink&lt;br /&gt;
&lt;br /&gt;
{| border=1 cellpadding=2&lt;br /&gt;
| Vorteile&lt;br /&gt;
| Symbolische Links können auch auf Verzeichnisse angelegt werden&amp;lt;br&amp;gt;Sie sind partitionsübergreifend&amp;lt;br&amp;gt;Man kann sie auf Dateien anlegen, die noch nicht existieren&lt;br /&gt;
|-&lt;br /&gt;
| Nachteile&lt;br /&gt;
| Wenn das Original gelöscht ist, ist kein Zugriff mehr möglich&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Beispiel&lt;br /&gt;
 root@zero:~# ln -s text verweis&lt;br /&gt;
 root@zero:~# ls -l verweis&lt;br /&gt;
 lrwxrwxrwx 1 root root 4 2009-06-18 15:48 verweis -&amp;gt; text&lt;br /&gt;
&lt;br /&gt;
'''Hardlinks'''&lt;br /&gt;
 ln datei hardlink&lt;br /&gt;
Eigentlich ist jede Datei ein Hardlink. Ein Hardlink ist ein Verzeichniseintrag,&lt;br /&gt;
der auf eine Inode verweist. Beim Erzeugen einer Datei verweist ein Eintrag auf&lt;br /&gt;
eine Inode. Man kann dann weitere Verweise erzeugen. Der Linkcounter wird&lt;br /&gt;
jeweils um 1 erhöht. Beim Löschen einer Datei wird er jeweils um 1 reduziert.&lt;br /&gt;
Wird der Wert 0 erreicht, ist die Datei gelöscht.&lt;br /&gt;
{| border=1 cellpadding=2&lt;br /&gt;
| Vorteile&lt;br /&gt;
|Zugriff auf die Daten, selbst wenn das Orginal gelöscht ist.&lt;br /&gt;
|-&lt;br /&gt;
|Nachteile&lt;br /&gt;
|Man kann keine Hardlinks auf Verzeichnisse anlegen.&lt;br /&gt;
Ist nur innerhalb einer Partion möglich.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Beispiel&lt;br /&gt;
 root@zero:~# touch 1&lt;br /&gt;
 root@zero:~# echo &amp;quot;text&amp;quot; &amp;gt; 1&lt;br /&gt;
 root@zero:~# ln 1 2&lt;br /&gt;
 root@zero:~# more 2&lt;br /&gt;
 text&lt;br /&gt;
 root@zero:~# echo &amp;quot;doch kein text&amp;quot; &amp;gt; 1&lt;br /&gt;
 root@zero:~# more 1&lt;br /&gt;
 doch kein text&lt;br /&gt;
 root@zero:~# more 2&lt;br /&gt;
 doch kein text&lt;br /&gt;
&lt;br /&gt;
Weitere Optionen:&lt;br /&gt;
 -b sichert Dateien, statt sie zu überschreiben &lt;br /&gt;
 -f Überschreibt bestehende, gleichnamige Dateien&lt;br /&gt;
 -i fragt vor dem Überschreiben nach Bestätigung&lt;br /&gt;
 -v ausführliche Meldungen&lt;br /&gt;
&lt;br /&gt;
==Prozesse==&lt;br /&gt;
===Was ist ein Prozess?===&lt;br /&gt;
Ein Prozess setzt sich aus zwei Teilen zusammen:&lt;br /&gt;
&lt;br /&gt;
1.Programm, das in den Hauptspeicher geladen wurde&lt;br /&gt;
&lt;br /&gt;
2.Prozessumgebung&lt;br /&gt;
&lt;br /&gt;
Unter einem Prozess versteht man ein Programm (binär), das in den Hauptspeicher&lt;br /&gt;
geladen wurde. Also nicht das Program selbst, das auf der Festplatte liegt ist der&lt;br /&gt;
Prozess, sondern es wird erst durch das Laden in den Hauptspeicher dazu.&lt;br /&gt;
Normalerweise liegt ein Programm als ausführbare Datei irgendwo auf der&lt;br /&gt;
Festplatte oder auf Diskette. Ob es sich bei dem Programm um eine binäre Datei&lt;br /&gt;
handelt, kann man mit dem Befehl '' file '' feststellen.&lt;br /&gt;
 &lt;br /&gt;
 root@zero:~# file /bin/mkdir&lt;br /&gt;
 /bin/mkdir: ELF 32-bit LSB executable, Intel 80386, version 1 (SYSV), dynamically linked (uses shared libs), for GNU/Linux 2.6.8, stripped&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Die Datei liegt im Maschinencode vor und kann in den Hauptspeicher geladen&lt;br /&gt;
werden. Sobald dies geschehen ist, kann der Rechner diesen Maschinencode&lt;br /&gt;
abarbeiten (ausführen).&lt;br /&gt;
&lt;br /&gt;
Da aber ein Programm nicht direkt auf die Hardware zugreifen soll, muss es vom&lt;br /&gt;
Betriebsystem kontrolliert werden. Das Betriebssystem liegt logisch gesehen&lt;br /&gt;
zwischen Hardware und Anwendung. Das Betriebssystem ordnet jedem Prozess&lt;br /&gt;
verschiedene Kenndaten zu, um die Prozesse verwalten zu können. Alle&lt;br /&gt;
Kenndaten, die einem Prozess zugeordnet sind, nennt man die&lt;br /&gt;
Prozessumgebung.Wenn man in der Shell ein Kommando eingibt, wird ein Prozess&lt;br /&gt;
kreiert. Natürlich ist die Shell selbst auch ein Prozess. Ein Prozess kann aber&lt;br /&gt;
genauso gut ein Serverprozess (Dienst) sein, z.B. Apache.&lt;br /&gt;
Ein wesentliches Merkmal eines Prozesses ist die Prozesskommunikation. Über im&lt;br /&gt;
Betriebssystem implementierte Methoden ist es möglich, dass verschiedene&lt;br /&gt;
Prozesse Signale und Daten untereinander austauschen können.&lt;br /&gt;
Dadurch wird auch dem Benutzer ermöglicht, einem Prozeß bestimmte Signale zu&lt;br /&gt;
senden bzw. auf den Status eines Prozesses Einfluss zu nehmen.&lt;br /&gt;
&lt;br /&gt;
===Prozesstabelle (Anzeige mit ps)===&lt;br /&gt;
Da zu jedem Prozess Kenndaten geführt werden, müssen diese auch irgendwo&lt;br /&gt;
festgehalten werden. Das geschieht in der sogenannten Prozesstabelle.&lt;br /&gt;
&lt;br /&gt;
Kenndaten der Prozesse (Auswahl):&lt;br /&gt;
* F Flags (z.B. ausgelagert; Systemprozess; Trace,...)&lt;br /&gt;
* UID Nutzer, mit dessen Rechten der Prozess ausgeführt wird&lt;br /&gt;
* PID Prozess - ID. Diese Nummer gibt eine eindeutige Prozess - Nummer&lt;br /&gt;
an. Sie wird vom System automatisch beim Starten des Prozesses&lt;br /&gt;
vergeben und ist für die Laufzeit eindeutig.&lt;br /&gt;
* PPID Prozessnumer der Eltern-Prozesses&lt;br /&gt;
* PRI Priorität eines Prozesses; je niedriger der Wert ist, desto besser&lt;br /&gt;
* NI ist der Nicewert des Prozesses; Nice erniedrigt den Grundwert&lt;br /&gt;
der Priorität des Prozesses und gibt damit Prozessorzeit für andere&lt;br /&gt;
Prozesse frei.&lt;br /&gt;
* SIZE Speichergröße des Prozesses inklusive Stack (eine Art Zwischenspeicher)&lt;br /&gt;
* RSS Verbrauch an physischen Speicher&lt;br /&gt;
* WCHAN ist der Name der Kernerlfunktion, in der der Prozess schläft&lt;br /&gt;
* STAT Status des Prozesses&lt;br /&gt;
R läuft       S schlafend     D nicht störbarer Schlaf&lt;br /&gt;
T angehalten  Z Zombie        W der Prozess belegt keine Seiten&lt;br /&gt;
* TIME Bisland benötigte Prozessorzeit&lt;br /&gt;
* SIZE ist die Größe von Text, Daten und Stack&lt;br /&gt;
* TTY die Nummer des kontrollierenden Teminal; wenn hier ein ? steht,&lt;br /&gt;
handelt es sich um einen Dämon oder Serverprozess.&lt;br /&gt;
* COMMAND Angabe des Prozesses selbst. Dies ist meist der Programmname.&lt;br /&gt;
&lt;br /&gt;
Weiteres&lt;br /&gt;
* GID Gruppe, unter der der Prozess läuft&lt;br /&gt;
* Verweis auf das aktuellen Arbeitsverzeichnis&lt;br /&gt;
* Um mit relativen Pfadangaben arbeiten zu können braucht man diesen Eintrag&lt;br /&gt;
* Tabelle mit Verweisen auf aktuell geöffnete Dateien&lt;br /&gt;
* 3 sind automatisch geöffnet Standardeingabe, Standardausgabe und&lt;br /&gt;
Standardfehlerkanal&lt;br /&gt;
&lt;br /&gt;
Beispiel&lt;br /&gt;
 root@zero:~# ps -l&lt;br /&gt;
 F S   UID   PID  PPID  C PRI  NI ADDR SZ WCHAN  TTY          TIME CMD&lt;br /&gt;
 4 R     0 18639 18631  0  80   0 -  1080 -      pts/0    00:00:00 bash&lt;br /&gt;
 0 R     0 25904 18639  0  80   0 -   635 -      pts/0    00:00:00 ps&lt;br /&gt;
&lt;br /&gt;
===Eltern und Kinder===&lt;br /&gt;
Jeder Prozess kann weitere Prozesse erzeugen. Die erzeugten Prozesse bezeichnet&lt;br /&gt;
man als Kindprozesse. Jeder Kindprozess weiß anhand der PID, woher er stammt.&lt;br /&gt;
&lt;br /&gt;
Alle Prozesse sind von einem anderen Prozess gestartet worden, mit Ausnahme&lt;br /&gt;
des Pseudoprozesses (noch im Kernel beim Starten erzeugter Prozess). Dieser hat&lt;br /&gt;
die Prozessnummer 0. Er hat die Aufgabe, den Init Prozess ( /sbin/init die Nummer&lt;br /&gt;
1) zu starten, der in System V alle anderen Prozesse direkt oder über seine Kind-&lt;br /&gt;
prozesse startet. (init wird konfiguriert durch die /etc/inittab)&lt;br /&gt;
&lt;br /&gt;
Es gibt zwei Arten wie ein Prozess gestartet werden kann:&lt;br /&gt;
&lt;br /&gt;
# Fork und Exec: Prozessumgebung wird dupliziert, der neue Prozess bekommt eine eigene neue PID&lt;br /&gt;
# Exec: Alter Prozess wird durch neuen Prozess überladen (geht mit dem shell-buildin exec)&lt;br /&gt;
&lt;br /&gt;
'''Rechte auf Objekte UID GID'''&lt;br /&gt;
Ob ein Prozess auf eine Datei zugreifen kann, entscheidet der Kernel anhand der&lt;br /&gt;
Zugriffssrechte, die auf der Datei gesetzt sind. Er checkt anhand der UID und GID&lt;br /&gt;
des Prozesses, ob es erlaubt ist. Mit dieser Technik wird letztendlich geprüft, was&lt;br /&gt;
ein User darf, und was nicht.&lt;br /&gt;
&lt;br /&gt;
===Rechenzeit und Priorität===&lt;br /&gt;
Da auch bei Prozessen eine Gerechtigkeit herschen muss, muss eine Instanz&lt;br /&gt;
darüber entscheiden wie lange ein Prozess Rechenzeit verbrauchen darf.&lt;br /&gt;
Folgende Kenndaten werden dazu benötigt&lt;br /&gt;
* clocktick = Zeiteinheit&lt;br /&gt;
* n = Faktor über den Kernel einstellbar&lt;br /&gt;
* slice = n &amp;lt;nowiki&amp;gt;*&amp;lt;/nowiki&amp;gt; clocktick&lt;br /&gt;
* agingtime = weitere Zeiteinheit über den Kernel einstellbar&lt;br /&gt;
&lt;br /&gt;
Es wird davon ausgegangen das der Prozess mit der niedrigsten Priorität gerade&lt;br /&gt;
rechnet. Pro clocktick erhöht sich die Priorität dieses Prozesses um eins.&lt;br /&gt;
&lt;br /&gt;
Jetzt können 3 Situationen eintreten die alle dazu führen das der Scheduler&lt;br /&gt;
aufgerufen wird.&lt;br /&gt;
&lt;br /&gt;
# Prozess blockiert wegen einer Ausgabe oder Eingabe.&lt;br /&gt;
# Gibt Rechenzeit freiwillig ab.&lt;br /&gt;
# Der Slice endet.&lt;br /&gt;
&lt;br /&gt;
Der Aufruf des Schedulers bewirkt das der Prozess mit der niedrigsten Priorität&lt;br /&gt;
gescheduled wird, er also nun rechnen darf. Nach Ablauf der agingtime werden&lt;br /&gt;
nun die Prozesse &amp;quot;gealtert&amp;quot;. Das geschieht nach folgender Formel&lt;br /&gt;
&lt;br /&gt;
Neue Priorität = Alte Priorität / 2 + Nicewert&lt;br /&gt;
&lt;br /&gt;
Der User hat die Möglichkeit, über den sogenannten Nicefaktor den Grundwert für&lt;br /&gt;
einen Prozess zu senken. Der Prozess braucht dann länger für seine Abarbeitung.&lt;br /&gt;
Er verhält sich somit netter zu den anderen Prozessen. Normale User können nur&lt;br /&gt;
netter werden, der Systemverwalter kann auch nicht netter (gemeiner) werden. Der&lt;br /&gt;
Bereich liegt zwischen 19 (sehr nett) bis 0 (weniger nett) für die User, und 19 bis&lt;br /&gt;
-20 für root.&lt;br /&gt;
&lt;br /&gt;
[[Image:pri.png]]&lt;br /&gt;
&lt;br /&gt;
'''Signale'''&lt;br /&gt;
&lt;br /&gt;
Mit den Kommando kill und killall kann man Prozessen Signale schicken&lt;br /&gt;
&lt;br /&gt;
 kill -Signalnummer PID &lt;br /&gt;
&lt;br /&gt;
Signalnummer&lt;br /&gt;
{| border=1 cellpadding=2&lt;br /&gt;
!Signalname&lt;br /&gt;
!Wert&lt;br /&gt;
!Aktion&lt;br /&gt;
|-&lt;br /&gt;
|SIGHUP&lt;br /&gt;
|1&lt;br /&gt;
|Neuinitialisierung eines Prozesses&lt;br /&gt;
|-&lt;br /&gt;
|SIGINT&lt;br /&gt;
|2&lt;br /&gt;
|Interrupt-Signal von der Tastatur (STRG+c)&lt;br /&gt;
|-&lt;br /&gt;
|SIGQUIT&lt;br /&gt;
|3&lt;br /&gt;
|Interrupt-Signal von der Tastatur (STRG+c) mit Dump&lt;br /&gt;
|-&lt;br /&gt;
|SIGKILL&lt;br /&gt;
|9&lt;br /&gt;
|unwiderrufliches Beendigungssignal (Töten)&lt;br /&gt;
|-&lt;br /&gt;
|SIGSEGV&lt;br /&gt;
|11&lt;br /&gt;
|Ungültige Speicherreferenz (bedeutet oft auf defekten Speicher)&lt;br /&gt;
|-&lt;br /&gt;
|SIGTERM &lt;br /&gt;
|15&lt;br /&gt;
|Beendigungssignal (geöffnete Dateien werden geschlossen)&lt;br /&gt;
|-&lt;br /&gt;
|SIGCONT &lt;br /&gt;
|18&lt;br /&gt;
|Weiterfahren, wenn gestoppt&lt;br /&gt;
|-&lt;br /&gt;
|SIGSTOP&lt;br /&gt;
|19&lt;br /&gt;
|Prozessstop&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Beispiel&lt;br /&gt;
 root@zero:~# kill -1 7562&lt;br /&gt;
&lt;br /&gt;
===Programme im Zusammenhang mit Prozessen===&lt;br /&gt;
* ps: Zeigt die Prozesse mit ihrem Status an&lt;br /&gt;
 root@zero:~# ps&lt;br /&gt;
  PID TTY          TIME CMD&lt;br /&gt;
 14134 pts/0    00:00:00 bash&lt;br /&gt;
 14149 pts/0    00:00:00 ps&lt;br /&gt;
&lt;br /&gt;
 root@zero:~# ps -elf | grep apache&lt;br /&gt;
 1 S root      5738     1  0  80   0 -  5461 select Jun16 ?        00:00:00 /usr/sbin/apache2 -k start&lt;br /&gt;
 5 S www-data  5739  5738  0  80   0 -  5581 inet_c Jun16 ?        00:00:00 /usr/sbin/apache2 -k start&lt;br /&gt;
 5 S www-data  5742  5738  0  80   0 -  5461 inet_c Jun16 ?        00:00:00 /usr/sbin/apache2 -k start&lt;br /&gt;
 5 S www-data  5743  5738  0  80   0 -  5461 inet_c Jun16 ?        00:00:00 /usr/sbin/apache2 -k start&lt;br /&gt;
 5 S www-data  5745  5738  0  80   0 -  5461 inet_c Jun16 ?        00:00:00 /usr/sbin/apache2 -k start&lt;br /&gt;
 5 S www-data  5746  5738  0  80   0 -  5461 inet_c Jun16 ?        00:00:00 /usr/sbin/apache2 -k start&lt;br /&gt;
 0 S root     14153 14134  0  80   0 -   837 pipe_w 16:59 pts/0    00:00:00 grep apache&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* nice: Lässt ein Programm mit verändertem Grundwert der Priorität laufen&lt;br /&gt;
 root@zero:~# nice&lt;br /&gt;
 0&lt;br /&gt;
 root@zero:~# nice -n 9 bash&lt;br /&gt;
 root@zero:~# nice&lt;br /&gt;
 9&lt;br /&gt;
 root@zero:~#&lt;br /&gt;
&lt;br /&gt;
* renice: Ändert den Grundwert der Priorität eines laufenden Prozesses&lt;br /&gt;
 root@zero:~# renice 10 5742&lt;br /&gt;
 5742: Alte Priorität: 0, neue Priorität: 10&lt;br /&gt;
&lt;br /&gt;
* top: Zeigt die Prozesse mit ihrem Status an (Abbrechen mit q)&lt;br /&gt;
 root@zero:~# top&lt;br /&gt;
&lt;br /&gt;
* pstree: Zeigt die Prozesse als Baumstruktur&lt;br /&gt;
 root@zero:~# pstree&lt;br /&gt;
 init─┬─NetworkManager&lt;br /&gt;
      ├─acpid&lt;br /&gt;
      ├─apache2───5*[apache2]&lt;br /&gt;
      ├─atd&lt;br /&gt;
      ├─bluetoothd&lt;br /&gt;
      ├─console-kit-dae───63*[{console-kit-dae}]&lt;br /&gt;
      ├─cron&lt;br /&gt;
      ├─cupsd&lt;br /&gt;
      ├─dbus-daemon&lt;br /&gt;
      ├─dd&lt;br /&gt;
      ├─gdm───gdm─┬─Xorg&lt;br /&gt;
      │           └─gdmgreeter&lt;br /&gt;
      ├─6*[getty]&lt;br /&gt;
      ├─hald───hald-runner─┬─hald-addon-acpi&lt;br /&gt;
      │                    ├─hald-addon-inpu&lt;br /&gt;
      │                    └─2*[hald-addon-stor]&lt;br /&gt;
      ├─klogd&lt;br /&gt;
      ├─nm-system-setti&lt;br /&gt;
      ├─nmbd&lt;br /&gt;
      ├─nscd───11*[{nscd}]&lt;br /&gt;
      ├─portmap&lt;br /&gt;
      ├─rpc.statd&lt;br /&gt;
      ├─slapd───2*[{slapd}]&lt;br /&gt;
      ├─smbd───smbd&lt;br /&gt;
      ├─sshd───sshd───bash───bash───pstree&lt;br /&gt;
      ├─syslogd&lt;br /&gt;
      ├─system-tools-ba&lt;br /&gt;
      ├─udevd&lt;br /&gt;
      ├─winbindd─┬─winbindd───winbindd&lt;br /&gt;
      │          └─3*[winbindd]&lt;br /&gt;
      └─wpa_supplicant&lt;br /&gt;
&lt;br /&gt;
===Jobs===&lt;br /&gt;
Unter einem Job versteht man ein Programm, welches man von der Shell gelöst&lt;br /&gt;
hat. D. h. man kann ganz normal weiter arbeiten und der Job verrichtet seinen&lt;br /&gt;
Dienst im Hintergrund. Man kann jederzeit zu diesem Job wieder Kontakt&lt;br /&gt;
aufnehmen.&lt;br /&gt;
&lt;br /&gt;
Ein Job kann auf 2 Arten gestarten werden:&lt;br /&gt;
&lt;br /&gt;
# Durch Anhängen des &amp;amp; Zeichens beim Programmstart&lt;br /&gt;
 root@zero:~# tail -f /var/log/messages &amp;amp;&lt;br /&gt;
 Jun 19 06:59:31 zero -- MARK --&lt;br /&gt;
 Jun 19 07:19:31 zero -- MARK --&lt;br /&gt;
 Jun 19 07:39:32 zero -- MARK --&lt;br /&gt;
 Jun 19 07:44:57 zero syslogd 1.5.0#5ubuntu3: restart.&lt;br /&gt;
 Jun 19 07:59:32 zero -- MARK --&lt;br /&gt;
 Jun 19 08:19:32 zero -- MARK --&lt;br /&gt;
 Jun 19 08:39:32 zero -- MARK --&lt;br /&gt;
 Jun 19 08:59:32 zero -- MARK --&lt;br /&gt;
 Jun 19 09:19:33 zero -- MARK --&lt;br /&gt;
 Jun 19 09:39:33 zero -- MARK --&lt;br /&gt;
 [3] 27421&lt;br /&gt;
&lt;br /&gt;
# Durch Stoppen des Prozesses durch Drücken von Strg-Z und in den Hintergrund schicken mit %n (n ist die Jobnummer)&lt;br /&gt;
 root@zero:~# watch cat /proc/cpuinfo&lt;br /&gt;
 Strg-Z&lt;br /&gt;
 [4]+  Stopped                 watch cat /proc/cpuinfo&lt;br /&gt;
 root@zero:~# bg %4&lt;br /&gt;
 [4]+ watch cat /proc/cpuinfo &amp;amp;&lt;br /&gt;
&lt;br /&gt;
Anweisungen im Zusammenhang mit Jobs (n ist die Jobnummer)&lt;br /&gt;
* bg %n : Einen Job in den Hintergrund stellen (wie oben)&lt;br /&gt;
* fg %n : Einen Job in den Vordergrund holen&lt;br /&gt;
 root@zero:~# fg %4&lt;br /&gt;
 watch cat /proc/cpuinfo&lt;br /&gt;
&lt;br /&gt;
* jobs : Aktive Jobs ausgeben&lt;br /&gt;
&lt;br /&gt;
 root@zero:~# jobs&lt;br /&gt;
 [1]   Running                 tail -f /var/log/syslog &amp;amp;&lt;br /&gt;
 [2]   Running                 tail -f /var/log/syslog &amp;amp;&lt;br /&gt;
 [3]-  Running                 tail -f /var/log/messages &amp;amp;&lt;br /&gt;
 [4]+  Stopped                 watch cat /proc/cpuinfo&lt;br /&gt;
&lt;br /&gt;
* Strg-Z : Einen Vordergrund-Job vorübergehend anhalten&lt;br /&gt;
* kill -STOP %n : Unterbricht Job im Hintergrund&lt;br /&gt;
 root@zero:~# kill -STOP %1&lt;br /&gt;
 root@zero:~# jobs&lt;br /&gt;
 [1]+  '''Stopped'''                 tail -f /var/log/syslog&lt;br /&gt;
 [2]   Running                 tail -f /var/log/syslog &amp;amp;&lt;br /&gt;
 [3]   Running                 tail -f /var/log/messages &amp;amp;&lt;br /&gt;
 [4]-  Stopped                 watch cat /proc/cpuinfo&lt;br /&gt;
* kill -CONT %n : Setzt den unterbrochenen Job im Hintergrund fort&lt;br /&gt;
root@zero:~# kill -CONT %1&lt;br /&gt;
root@zero:~# jobs&lt;br /&gt;
 [1]+  '''Running'''                 tail -f /var/log/syslog &amp;amp;&lt;br /&gt;
 [2]   Running                 tail -f /var/log/syslog &amp;amp;&lt;br /&gt;
 [3]   Running                 tail -f /var/log/messages &amp;amp;&lt;br /&gt;
 [4]-  Stopped                 watch cat /proc/cpuinfo&lt;br /&gt;
* kill -KILL %n : Tötet Job im Hintergrund&lt;br /&gt;
 root@zero:~# kill -KILL %1&lt;br /&gt;
 root@zero:~# jobs&lt;br /&gt;
 [1]+  '''Killed'''                  tail -f /var/log/syslog&lt;br /&gt;
 [2]   Running                 tail -f /var/log/syslog &amp;amp;&lt;br /&gt;
 [3]   Running                 tail -f /var/log/messages &amp;amp;&lt;br /&gt;
 [4]-  Stopped                 watch cat /proc/cpuinfo&lt;br /&gt;
 root@zero:~# jobs&lt;br /&gt;
 [2]   Running                 tail -f /var/log/syslog &amp;amp;&lt;br /&gt;
 [3]-  Running                 tail -f /var/log/messages &amp;amp;&lt;br /&gt;
 [4]+  Stopped                 watch cat /proc/cpuinfo&lt;br /&gt;
&lt;br /&gt;
Bedingungen, die zu Jobausführung eingehalten werden sollen:&lt;br /&gt;
* Der Job soll nicht auf den Bildschirm schreiben (Standardausgabe +Standardfehlerkanal).&lt;br /&gt;
* Er soll keine Eingaben vom Benutzer erwarten.&lt;br /&gt;
&lt;br /&gt;
==Suchen von Dateien==&lt;br /&gt;
===find===&lt;br /&gt;
 find ab_wo_wird_gesucht was_wird_gesucht aktion&lt;br /&gt;
 find [Pfad] [Bedingung] [Aktion]&lt;br /&gt;
&lt;br /&gt;
====Nach Namen====&lt;br /&gt;
 find [Pfad] '''-name''' [Name]&lt;br /&gt;
 &lt;br /&gt;
Finde alle Dateien mit Namen test ab dem Verzeichnis /home und gebe diese Zeilenweise aus&lt;br /&gt;
 root@zero:~# find /home -name test -print&lt;br /&gt;
 /home/xinux/test&lt;br /&gt;
 /home/test&lt;br /&gt;
&lt;br /&gt;
Wie oben, jedoch mit Namensanfang test&lt;br /&gt;
 root@zero:/home/xinux# find /home -name 'test*'&lt;br /&gt;
 /home/xinux/testdatei&lt;br /&gt;
 /home/xinux/test&lt;br /&gt;
 /home/test&lt;br /&gt;
&lt;br /&gt;
====Nach Benutzer(Eigentümer)====&lt;br /&gt;
 root@zero:/tmp# find /tmp/ '''-user''' xinux&lt;br /&gt;
 /tmp/datei&lt;br /&gt;
&lt;br /&gt;
====Nach Gruppe====&lt;br /&gt;
 root@zero:/tmp# find /tmp/ '''-group''' hacker&lt;br /&gt;
 /tmp/datei3&lt;br /&gt;
 /tmp/datei2&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
====Nach Typ====&lt;br /&gt;
Es wird nach Dateien anhand Ihrer Art gesucht:&lt;br /&gt;
 find [Pfad] '''-type''' [Typ] &lt;br /&gt;
Typ:&lt;br /&gt;
* f: Normale Dateien&lt;br /&gt;
 root@zero:~# find /tmp/ -type f&lt;br /&gt;
 /tmp/mbr.img&lt;br /&gt;
 /tmp/datei&lt;br /&gt;
 /tmp/zeugs&lt;br /&gt;
 /tmp/.X0-lock&lt;br /&gt;
* d: Verzeichnisse&lt;br /&gt;
 root@zero:~# find /var/log -type d&lt;br /&gt;
 /var/log&lt;br /&gt;
 /var/log/apache2&lt;br /&gt;
 /var/log/unattended-upgrades&lt;br /&gt;
 /var/log/apparmor&lt;br /&gt;
 /var/log/ConsoleKit&lt;br /&gt;
 /var/log/dist-upgrade&lt;br /&gt;
 /var/log/dist-upgrade/20090526-1052&lt;br /&gt;
 /var/log/cups&lt;br /&gt;
 /var/log/apt&lt;br /&gt;
 /var/log/fsck&lt;br /&gt;
 /var/log/samba&lt;br /&gt;
 /var/log/samba/cores&lt;br /&gt;
 /var/log/samba/cores/smbd&lt;br /&gt;
 /var/log/samba/cores/nmbd&lt;br /&gt;
 /var/log/samba/cores/winbindd&lt;br /&gt;
 /var/log/installer&lt;br /&gt;
 /var/log/gdm&lt;br /&gt;
 /var/log/news&lt;br /&gt;
* c: Char Devices (Zeichenorientierte Gerätedatei)&lt;br /&gt;
 root@zero:~# find / -type c&lt;br /&gt;
 /lib/udev/devices/kmem&lt;br /&gt;
 /lib/udev/devices/null&lt;br /&gt;
 /lib/udev/devices/console&lt;br /&gt;
 /lib/udev/devices/ppp&lt;br /&gt;
 /lib/udev/devices/net/tun&lt;br /&gt;
* b: Block Devices (Blockorientierte Gerätedatei)&lt;br /&gt;
* p: Benannte Pipe&lt;br /&gt;
* l: Links&lt;br /&gt;
* s: Sockets&lt;br /&gt;
&lt;br /&gt;
====Nach Modifikation====&lt;br /&gt;
Listet alle Dateien in /etc auf, die innerhalb von zwei Tagen modifiziert wurden&lt;br /&gt;
 root@zero:/var/log# find /etc/ -mtime 2 -print&lt;br /&gt;
 /etc/apache2&lt;br /&gt;
 /etc/apache2/mods-available&lt;br /&gt;
 /etc/apache2/conf.d&lt;br /&gt;
 /etc/apache2/sites-available&lt;br /&gt;
 /etc/bash_completion.d&lt;br /&gt;
 /etc/blkid.tab.old&lt;br /&gt;
 /etc/firefox-3.0/profile&lt;br /&gt;
 /etc/firefox-3.0/profile/chrome&lt;br /&gt;
 /etc/firefox-3.0/pref&lt;br /&gt;
 /etc/profile.d&lt;br /&gt;
 /etc/ufw/applications.d&lt;br /&gt;
 /etc/logrotate.d&lt;br /&gt;
 /etc/xulrunner-1.9&lt;br /&gt;
 /etc/blkid.tab&lt;br /&gt;
 /etc/cron.daily&lt;br /&gt;
 /etc/alternatives&lt;br /&gt;
 /etc/alternatives/x-www-browser&lt;br /&gt;
 /etc/alternatives/xulrunner&lt;br /&gt;
 /etc/gre.d&lt;br /&gt;
 /etc/hal/fdi/policy&lt;br /&gt;
 /etc/dbus-1/system.d&lt;br /&gt;
 /etc/udev/rules.d&lt;br /&gt;
&lt;br /&gt;
====Nach Größe====&lt;br /&gt;
Finde Dateien in /tmp, die größer als 100 MByte sind&lt;br /&gt;
 root@zero:/tmp# find /tmp/ -size +100M&lt;br /&gt;
 /tmp/datei&lt;br /&gt;
&lt;br /&gt;
Finde Dateien in /tmp, die kleiner als 100 KByte sind&lt;br /&gt;
 root@zero:/tmp# find /tmp/ -size -100k&lt;br /&gt;
 /tmp/&lt;br /&gt;
 /tmp/datei3&lt;br /&gt;
 /tmp/backup &lt;br /&gt;
 /tmp/datei2&lt;br /&gt;
 /tmp/.winbindd &lt;br /&gt;
 /tmp/.winbindd/pipe&lt;br /&gt;
 /tmp/mbr.img&lt;br /&gt;
 /tmp/zeugs&lt;br /&gt;
 /tmp/.ICE-unix&lt;br /&gt;
 /tmp/.X0-lock&lt;br /&gt;
 /tmp/datei1&lt;br /&gt;
 /tmp/.X11-unix&lt;br /&gt;
 /tmp/.X11-unix/X0&lt;br /&gt;
 /tmp/pulse-PKdhtXMmr18n&lt;br /&gt;
&lt;br /&gt;
====Nach Berechtigungen====&lt;br /&gt;
Finde Dateien in Home mit der Berechtigung 777 (-rwxrwxrwx)&lt;br /&gt;
 root@zero:/var# find /home/ -perm 777&lt;br /&gt;
 /home/samba&lt;br /&gt;
 /home/xinux/Examples&lt;br /&gt;
 /home/xinux/.pulse/1f0763ee4cf4c7e1d3c07fd149dda37b:runtime&lt;br /&gt;
 /home/test/Examples&lt;br /&gt;
&lt;br /&gt;
===locate===&lt;br /&gt;
Locate arbeitet über einen Index, der erstellt und aktualisiert werden muss. Aus diesem Grund kann locate teilweise nicht &lt;br /&gt;
akutell sein. Es ist immer schneller als find und es durchsucht immer das ganze Dateisystem. &lt;br /&gt;
 locate [Dateiname]&lt;br /&gt;
 &lt;br /&gt;
Lokalisiere die Datei wvdial.conf. Anmerkung: Der Stern wird beim Suchen automatisch hinzugefügt. Entspricht also&lt;br /&gt;
wvidal.conf*&lt;br /&gt;
 root@zero:~# locate wvdial.conf&lt;br /&gt;
 /etc/wvdial.conf&lt;br /&gt;
 /usr/share/man/man5/wvdial.conf.5.gz&lt;br /&gt;
 /var/lib/dpkg/info/wvdial.conffiles&lt;br /&gt;
 /var/lib/dpkg/info/wvdial.config&lt;br /&gt;
&lt;br /&gt;
Lokalisiere die Datei wvdial.conf und nur diese&lt;br /&gt;
 root@zero:~# locate -b '\wvdial.conf'&lt;br /&gt;
 /etc/wvdial.conf&lt;br /&gt;
&lt;br /&gt;
Aktualisieren des Indexes&lt;br /&gt;
 root@zero:~# updatedb&lt;br /&gt;
&lt;br /&gt;
==Wie wird ein Kommando lokalisiert==&lt;br /&gt;
Wenn die Shell alle Ersetzungen in der Kommandozeile vorgenommen und alle Umleitungen vorbereitet hat, ist der Zeitpunkt &lt;br /&gt;
gekommen, auf den der Anwender die ganze Zeit gewartet hat. Die Shell versucht das Kommando auszuführen. Dazu muss sie &lt;br /&gt;
es aber erst lokalisieren. Das erste passende Kommando wird ausgeführt.&lt;br /&gt;
&lt;br /&gt;
Als Kommandoname wird immer das erste Wort eines einfachen Kommandos erkannt. Ein Kommandoname kann mit Pfadnamen in &lt;br /&gt;
einem Verzeichnis (absolut oder relativ) angegeben werden. Die Shell erkennt dies an (mindestens) einem Slash `/' &lt;br /&gt;
im Kommandonamen. Wenn kein Verzeichnis angegeben ist, versucht die Shell selbst, das Kommando zu finden. Dazu wird &lt;br /&gt;
der Kommandoname zuerst in der Hashtabelle gesucht, dann wird er mit den Synonymen, mit den Scriptfunktionen und &lt;br /&gt;
schließlich mit den Shellfunktionen verglichen. &lt;br /&gt;
&lt;br /&gt;
Wird auf diese Weise kein Programm dieses Namens gefunden, werden alle in der PATH-Umgebungsvariablen aufgeführten &lt;br /&gt;
Verzeichnisse nach einer ausführbaren Datei dieses Namens durchsucht. Wird auch hier kein passendes Kommando gefunden, &lt;br /&gt;
gibt die Shell eine Fehlermeldung aus.&lt;br /&gt;
&lt;br /&gt;
===which und type===&lt;br /&gt;
====which====&lt;br /&gt;
which gibt die vollen Pfadnamen der Dateien aus, die bei Benutzung des angegebenen Befehls ausgeführt werden würden.&lt;br /&gt;
&lt;br /&gt;
 which [-a] Dateiname &lt;br /&gt;
&lt;br /&gt;
Optionen:&lt;br /&gt;
&lt;br /&gt;
* -a : Alle Treffer ausgeben, nicht nur den ersten&lt;br /&gt;
* --skip-dot : Verzeichnisse, die mit einem Punkt beginnen, auslassen&lt;br /&gt;
&lt;br /&gt;
Beispiel&lt;br /&gt;
 root@zero:~# which startx&lt;br /&gt;
 /usr/bin/startx&lt;br /&gt;
&lt;br /&gt;
====type====&lt;br /&gt;
Anzeigen der absoluten Pfadnamen von Befehlen, und ob sich diese Befehle in der Hash-Tabelle der aktuellen&lt;br /&gt;
Shell befinden.&lt;br /&gt;
&lt;br /&gt;
 type [Optionen] Befehle&lt;br /&gt;
&lt;br /&gt;
Beispiel&lt;br /&gt;
 root@zero:~# type ls&lt;br /&gt;
 ls is aliased to `ls --color=auto'&lt;br /&gt;
&lt;br /&gt;
Optionen:&lt;br /&gt;
&lt;br /&gt;
* -a : Alle vorkommenden Befehle werden ausgegeben, nicht nur das, welches aufgerufen werden würde&lt;br /&gt;
 root@zero:~# type '''-a''' ls&lt;br /&gt;
 ls is aliased to `ls --color=auto'&lt;br /&gt;
 ls is /bin/ls&lt;br /&gt;
&lt;br /&gt;
* -p : Anzeigen des Eintrags von Befehl in der Hash-Tabelle. Dieser Wert kann sich vom ersten Auftreten des Befehls in PATH&lt;br /&gt;
unterscheiden&lt;br /&gt;
 root@zero:~# type '''-p''' apache2&lt;br /&gt;
 /usr/sbin/apache2&lt;br /&gt;
&lt;br /&gt;
* -t : Anzeigen, ob Befehl ein Aliasname, ein Schlüsselwort, eine Funktion, ein eingebauter Befehl oder eine Datei ist&lt;br /&gt;
 root@zero:~# type '''-t''' apache2&lt;br /&gt;
 file&lt;/div&gt;</summary>
		<author><name>192.168.178.46</name></author>
	</entry>
	<entry>
		<id>https://www.xinux.net/index.php?title=Linux_Grundlagen&amp;diff=81</id>
		<title>Linux Grundlagen</title>
		<link rel="alternate" type="text/html" href="https://www.xinux.net/index.php?title=Linux_Grundlagen&amp;diff=81"/>
		<updated>2009-07-07T10:51:42Z</updated>

		<summary type="html">&lt;p&gt;192.168.178.46: /* Sockets */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Einführung==&lt;br /&gt;
===Geschichte Unix===&lt;br /&gt;
====1969====&lt;br /&gt;
Am Anfang von Linux steht Multics, ein von Bell Laboratories geschaffenes &amp;quot;Betriebssystem&amp;quot;, &lt;br /&gt;
das noch mit Lochkarten arbeitete. Multics wird mit Unterstützung von AT&amp;amp;T und Western &lt;br /&gt;
Electric unter Mitarbeit von Ken Thompson und Dennis Ritchie weiterentwickelt. Obwohl sich &lt;br /&gt;
Bell Laboratories bald zurückzieht, gibt Thompson das Projekt nicht auf.  Zum Entwicklerteam &lt;br /&gt;
gehören auch Rudd Canaday und Brian Kernighan. Letzterer gibt 1970 dem Betriebssystem den Namen UNIX. &lt;br /&gt;
Thompson definiert 7 Richtlinien für UNIX:&lt;br /&gt;
 &lt;br /&gt;
# Hierarchische Anordnung der Dateisysteme&lt;br /&gt;
# Die Ausgabe von Daten an die Peripherie(-geräte) und Dateien soll gleich sein.&lt;br /&gt;
# Prozesse und Programme sollen miteinander kommunizieren.&lt;br /&gt;
# Multitasking (voneinander getrennte Prozesse)&lt;br /&gt;
# Persönliche Shell's&lt;br /&gt;
# Der Compiler soll für viele Programmiersprachen tauglich sein.&lt;br /&gt;
# Portabilität&lt;br /&gt;
&lt;br /&gt;
====1971====&lt;br /&gt;
Bis 1971 ist das für eine DEC PDP-7 geschriebene Unix als Version 1 auf eine PDP-11 portiert. Bis&lt;br /&gt;
zur Version 4 entwickelt Ritchie die Programmier- (Hoch-) Sprache C. Das in Assembler geschriebene&lt;br /&gt;
Unix wird fast völlig nach C übersetzt, wodurch zum erstenmal die geforderte Hardware-Unabhängigkeit&lt;br /&gt;
des Betriebssystems realisiert werden kann.&lt;br /&gt;
&lt;br /&gt;
====1975====&lt;br /&gt;
Da AT&amp;amp;T aufgrund vertraglicher Bindungen mit der US-Bundesregierung Unix nicht kommerziell vermarkten darf, stellt sie den Source Code für ein paar hundert Dollar den Universitäten, Lehr- und Forschungsanstalten zur Verfügung. Dies führt zu einer sehr dynamischen Entwicklung von Unix. 1975 wird die Version 6 als erstes UNIX-System veröffentlicht, die darauffolgende Version 7 wird sehr erfolgreich. Da es keine Standardisierung gibt, entwickeln bald verschiedenste Firmen ihr eigenes UNIX. Ab 1984 wird AT&amp;amp;T per Gerichtsbeschluss erlaubt, Unix zu vermarkten. AT&amp;amp;T verkauft sein Unix V und beginnt, sich um einen internationalen Standard von UNIX zu bemühen. &lt;br /&gt;
&lt;br /&gt;
====1984====&lt;br /&gt;
Durch Richard Stallman wird die Free Software Foundation (FSF) gegründet. Diese initiiert ein Projekt namens GNU (GNU ist Not Unix), welches das Ziel verfolgt, ein freies UNIX System zu schaffen. &lt;br /&gt;
&lt;br /&gt;
====1987====&lt;br /&gt;
AT&amp;amp;T verbietet die Verwendung des Unix Quellcodes an den Universitäten. Während dieser Zeit ist Andrew (Andy) Tannenbaum Professor an der Freien Universität von Amsterdam und entwickelt Minix. Minix ist ein kostengünstiges Lehrbetriebssystem und kommt ohne jeglichen AT&amp;amp;T Code aus, obwohl es die gleiche Funktionalität wie Unix 7 bietet. Im Usenet unter comp.os.minix entsteht eine Minix-Gemeinde, die den Minix Kernel und die Anwendungen rundherum programmiert und verbessert.&lt;br /&gt;
&lt;br /&gt;
====1991====&lt;br /&gt;
Linus Torvalds hat als Student für Computerwissenschaften an der Universität in Helsinki Minix installiert und das Buch von Andy Tannenbaum gelesen. Er beginnt im Sinne der FSF einen Unix ähnlichen Kernel zu programmieren mit der Idee, &amp;quot;ein besseres Minix als Minix&amp;quot; zu bauen. 1992 stellt er die Version 0.02 mit dem Namen Linux der Internetgemeinde zur Verfügung. &lt;br /&gt;
&lt;br /&gt;
====1994====&lt;br /&gt;
Die Linux Version 1.0 wird freigegeben. Das Linux Fieber beginnt... &lt;br /&gt;
&lt;br /&gt;
====1998====&lt;br /&gt;
Der Kreis der Linux Entwickler und Anwender ist kräftig angeschwollen. KDE 1.0 wird veröffentlicht. Die Zuwachsraten von Linux übertreffen die von Windows NT deutlich. &lt;br /&gt;
&lt;br /&gt;
====1999====&lt;br /&gt;
Der lange erwartete stabile Linux Kernel Version 2.2 wird freigegeben. Namhafte Firmen wie IBM kündigen ihre Unterstützung für Linux an. &lt;br /&gt;
&lt;br /&gt;
====2001====&lt;br /&gt;
Der lange erwartete stabile Linux Kernel Version 2.4 wird freigegeben. USB Unterstützung und eine neue Firewallimplementierung zeichnen ihn aus.&lt;br /&gt;
&lt;br /&gt;
====2003====&lt;br /&gt;
Linux Kernel Version 2.6 wird freigegeben. Am auffälligsten sind Änderungen bei der Modulverwaltung.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Distributionen===&lt;br /&gt;
{| Border=1 Cellpadding=2&lt;br /&gt;
| &lt;br /&gt;
|Url&lt;br /&gt;
|Paketformat&lt;br /&gt;
|-&lt;br /&gt;
|Red Hat&lt;br /&gt;
|www.redhat.com&lt;br /&gt;
|rpm&lt;br /&gt;
|-&lt;br /&gt;
|fedora&lt;br /&gt;
|fedora.redhat.com&lt;br /&gt;
|rpm&lt;br /&gt;
|-&lt;br /&gt;
|CentOS&lt;br /&gt;
|www.centos.org&lt;br /&gt;
|rpm&lt;br /&gt;
|-&lt;br /&gt;
|Suse/openSUSE&lt;br /&gt;
|www.opensuse.org&lt;br /&gt;
|rpm&lt;br /&gt;
|-&lt;br /&gt;
|Debian&lt;br /&gt;
|www.debian.org&lt;br /&gt;
|deb&lt;br /&gt;
|-&lt;br /&gt;
|Ubuntu&lt;br /&gt;
|www.ubuntu.com&lt;br /&gt;
|deb&lt;br /&gt;
|-&lt;br /&gt;
|Mandrake&lt;br /&gt;
|www.linux-mandrake.com&lt;br /&gt;
|rpm&lt;br /&gt;
|-&lt;br /&gt;
|Easy Linux&lt;br /&gt;
|www.easy-linux.de&lt;br /&gt;
|rpm&lt;br /&gt;
|-&lt;br /&gt;
|Turbo&lt;br /&gt;
|www.turbolinux.com&lt;br /&gt;
|rpm&lt;br /&gt;
|-&lt;br /&gt;
|minis&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|toms&lt;br /&gt;
|www.toms.net/rb&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|damn small linux&lt;br /&gt;
|www.damnsmalllinux.org&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|pocket-linux&lt;br /&gt;
|www.pocket-linux.org&lt;br /&gt;
|&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
====Bücher====&lt;br /&gt;
 Titel : Das Linux Anwenderhandbuch und Leitfaden für die Systemverwaltung&lt;br /&gt;
 Autor : Sebastian Hetze, Dirk Hohndel, Olaf Kirch und Martin Müller&lt;br /&gt;
 Verlag: Lunetix&lt;br /&gt;
 ISBN : 3-929764-06-7&lt;br /&gt;
&lt;br /&gt;
 Titel : Linux in a Nutshell&lt;br /&gt;
 Autor : Jessica Perry Hekman und die Mitarbeiter von O'Reilly &amp;amp; Associates&lt;br /&gt;
 Verlag: O'Reilly&lt;br /&gt;
 ISBN : 3-930673-57-6&lt;br /&gt;
&lt;br /&gt;
 Titel : Linux - Wegweiser zur Installation und Konfiguration&lt;br /&gt;
 Autor : Matt Welsh, Lar Kaufman, Matthias Kalle Dallheimer&lt;br /&gt;
 Verlag: O'Reilly&lt;br /&gt;
 ISBN : 3-930673-58-4 (deutsch), 1-56592-469-X (englisch)&lt;br /&gt;
&lt;br /&gt;
 Titel : Linux - Installation, Konfiguration, Anwendung&lt;br /&gt;
 Autor : Michael KoflerMultitasking&lt;br /&gt;
 Verlag: Addison-Wesley&lt;br /&gt;
 ISBN : 3-8273-1475-5&lt;br /&gt;
&lt;br /&gt;
 Titel : Linux - Wegweiser für Netzwerker&lt;br /&gt;
 Autor : Olaf Kirch&lt;br /&gt;
 Verlag: O'Reilly&lt;br /&gt;
 ISBN : 3-930673-18-5&lt;br /&gt;
&lt;br /&gt;
 Titel : TCP/IP-Netzwerk-Administration&lt;br /&gt;
 Autor : Craig Hunt&lt;br /&gt;
 Verlag: O'Reilly&lt;br /&gt;
 ISBN : 3-89721-110-6&lt;br /&gt;
&lt;br /&gt;
 Titel : Essential System Administration&lt;br /&gt;
 Autor : Eleen Frisch&lt;br /&gt;
 Verlag: O'Reilly&lt;br /&gt;
 ISBN : 1-56592-127-5&lt;br /&gt;
&lt;br /&gt;
==Betriebssystem==&lt;br /&gt;
===Was ist ein Betriebssystem?===&lt;br /&gt;
&lt;br /&gt;
Ein Betriebssystem liegt logisch gesehen zwischenAnwendungsprogramm und Hardware.&lt;br /&gt;
&lt;br /&gt;
Es nimmt die Anforderungen der Anwendungsprogramme entgegen und leitet&lt;br /&gt;
diese kontrolliert an die Hardware weiter. Kein Anwendungsprogramm sollte&lt;br /&gt;
direkt auf die Hardware zugreifen können. Den zentralen Zugang schafft einzig&lt;br /&gt;
das Betriebssystem. Somit kann das Betriebssystem unsinnige Anforderungen&lt;br /&gt;
oder Bedienungsfehler abblocken.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Image:Linux.jpg]]&lt;br /&gt;
&lt;br /&gt;
===Aufgaben eines Betriebssystems===&lt;br /&gt;
&lt;br /&gt;
# Verbergen der Komplexität der Maschine vor dem Anwender (Abstraktion)&lt;br /&gt;
# Bereitstellen einer Benutzerschnittstelle (&amp;quot;Kommandointerpreter&amp;quot;, &amp;quot;Shell&amp;quot;)&lt;br /&gt;
# Bereitstellen einer normierten Programmierschnittstelle (API)&lt;br /&gt;
# Verwaltung der Ressourcen der Maschine::&lt;br /&gt;
Hauptspeicher&lt;br /&gt;
Prozessor(en)&lt;br /&gt;
Hintergrundspeicher (Platte, Band, etc.)&lt;br /&gt;
Geräte (Terminal, Drucker, Plotter, etc.)&lt;br /&gt;
Rechenzeit&lt;br /&gt;
Koordination von Prozessen&lt;br /&gt;
&lt;br /&gt;
===Aufbau eines Betriebssystems===&lt;br /&gt;
&lt;br /&gt;
Ein Rechensystem besteht aus Hardware, Systemprogrammen und Anwendungs-&lt;br /&gt;
programmen. Unter einem Betriebssystem wird meist die Summe aus Betriebs-&lt;br /&gt;
systemkern (Kernel) und den wichtigsten Systemprogrammen verstanden. Ein&lt;br /&gt;
minimaler LINUX-Kernel besitzt ungefähr eine Größe von 400 - 800 kByte.&lt;br /&gt;
Weitere wichtige Systemkomponenten benötigen zusätzlich 10 - 100 Mbyte&lt;br /&gt;
Plattenplatz.&lt;br /&gt;
&lt;br /&gt;
Ein Betriebssystem stellt den Rechner als erweiterte Maschine (virtuelle&lt;br /&gt;
Maschine) über definierte Software-Schnittstellen zur Verfügung.&lt;br /&gt;
Das Betriebssystem dient als Betriebsmittelverwalter, der Anforderungen&lt;br /&gt;
befriedigt, protokolliert, abrechnet und vermittelt.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Aufgaben des Betriebssystemkerns:&lt;br /&gt;
&lt;br /&gt;
{| Border=1 Cellpadding=2&lt;br /&gt;
|Prozessverwaltung  (dispatching and scheduling)&lt;br /&gt;
| Mehrere Benutzer können mit mehreren Aktionen gleichzeitig im System arbeiten, ohne sich gegenseitig zu beeinflussen. Damit dies möglich ist,  müssen die Aktionen organisiert, koordiniert und verwaltet werden. Die zu verwaltende Einheit nennt man Prozess.&lt;br /&gt;
|-&lt;br /&gt;
|Speicherverwaltung   (memory management)&lt;br /&gt;
|Zuteilen von Speicherbereichen an laufende Prozesse, Schutz der Speicherbereiche vor unbefugten Zugriffen, bei Speicherengpässen: Auslagern von ganzen (swapping) oder von Teilen (paging) von Prozessen auf die Platte (swap file).&lt;br /&gt;
|-&lt;br /&gt;
|Dateiverwaltung  (file handling)&lt;br /&gt;
|Zuteilung von Plattenplatz für Programme, Benutzer und Systemdienste, Schreiben, Lesen und Strukturieren der Daten auf den Massenspeichern; Durch Bereitstellung einer entsprechenden Schnittstelle (VFS, virtual file system) kann der Kern Dateisysteme unterschiedlichster Art (EXT2, FAT, NFS, HPFS, NTFS, ...) ansprechen.&lt;br /&gt;
|-&lt;br /&gt;
|Geräteverwaltung  (resource management)&lt;br /&gt;
|Der Kern ermöglicht und kontrolliert den Zugriff auf die Hardware. Er steuert die Ein- und Ausgabetätigkeiten der Anwender. An den Kern&lt;br /&gt;
gebunden sind die entsprechenden Gerätetreiber (device driver), die damit eine Kommunikation zwischen Kern und Hardware ermöglichen.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
===Multitasking===&lt;br /&gt;
&lt;br /&gt;
Multitasking bedeutet, dass ein Rechner aus Anwendersicht mehrere Aufgaben&lt;br /&gt;
(Tasks) gleichzeitg übernehmen kann. Das Betriebssystem (OS) unterteilt die&lt;br /&gt;
gleichzeitig anstehenden Aufgaben in Einzelarbeitsschritte (Prozesse) und&lt;br /&gt;
managed durch ein Zeitscheibenverfahren (scheduling) die gleichmäßige&lt;br /&gt;
Abarbeitung der Prozesse.&lt;br /&gt;
&lt;br /&gt;
Es wird unterschieden zwischen:&lt;br /&gt;
&lt;br /&gt;
*non-präamptiven (kooperativen=die Ressourcen werden vom aktiven Prozess freigegeben, bei einem Hänger steht das ganze System)&lt;br /&gt;
&lt;br /&gt;
und&lt;br /&gt;
&lt;br /&gt;
*präamptiven (reinem=der Betriebssystemkern steuert Taskwechsel, indem nach einer festgelegten Zeit vom gerade aktiven Prozess zum nächsten weitergeschaltet wird)&lt;br /&gt;
&lt;br /&gt;
===Mehrprozessorbetrieb===&lt;br /&gt;
&lt;br /&gt;
Bei mehreren Prozessoren und Unterstützung durch das OS&lt;br /&gt;
(NT,Linux,Unix,Novell) können mehrere Tasks auf diese verteilt werden und&lt;br /&gt;
gleichzeitig bearbeitet werden. Nachteilig ist, dass dies nicht oder kaum von&lt;br /&gt;
Anwendungsprogrammen unterstützt wird und es zu Kommunikationsproblemen&lt;br /&gt;
zwischen den einzelnen Tasks kommen kann.&lt;br /&gt;
&lt;br /&gt;
===Arten von von Betriebssystemen===&lt;br /&gt;
&lt;br /&gt;
{|Border=1 Cellpadding=2&lt;br /&gt;
|&lt;br /&gt;
|SingleUser  &lt;br /&gt;
|Multiuser&lt;br /&gt;
|-&lt;br /&gt;
|Single Tasking&lt;br /&gt;
|MS - DOS&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|Multi Tasking&lt;br /&gt;
|Windows 3.x&lt;br /&gt;
|UNIX&lt;br /&gt;
|-&lt;br /&gt;
|&lt;br /&gt;
|Windows 95/98&lt;br /&gt;
|Linux&lt;br /&gt;
|-&lt;br /&gt;
|&lt;br /&gt;
|Windows NT4 ohne Erweiterungen&lt;br /&gt;
|VMS&lt;br /&gt;
|-&lt;br /&gt;
|&lt;br /&gt;
|OS/2 &lt;br /&gt;
|Windows NT mit  Erweiterungen&lt;br /&gt;
|-&lt;br /&gt;
|&lt;br /&gt;
|Apple&lt;br /&gt;
|Windows 2000, XP, 2003&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
===SHELL===&lt;br /&gt;
&lt;br /&gt;
Wenn man mit Linux arbeiten will, kann man nicht direkt mit dem Betriebssystem&lt;br /&gt;
kommunizieren. Man braucht dazu ein Hilfsprogramm, welches die&lt;br /&gt;
Kommandoeingaben ordnungsgemäß an das Betriebssystem weiterleitet. Dieses&lt;br /&gt;
Hilfsprogramm hat den Namen Shell.&lt;br /&gt;
&lt;br /&gt;
Die Shell schirmt den Betriebssystemkern von den Anwendungsprogrammen ab.&lt;br /&gt;
Die unterschiedlichen Shells erfüllen alle dieselbe Aufgabe, sie unterscheiden sich&lt;br /&gt;
allerdings in ihrer Syntax.&lt;br /&gt;
&lt;br /&gt;
==Die Installation im Überblick==&lt;br /&gt;
&lt;br /&gt;
Die Installation von Linux geschieht in folgenden Schritten:&lt;br /&gt;
&lt;br /&gt;
# Analyse (Welche Hardware habe ich? ,Hab ich weitere Betriebsysteme?)&lt;br /&gt;
# Booten des Linux-Kernels. (von CD oder Diskette)&lt;br /&gt;
# Laden einer RAM-Disk (das macht das Installationsprogramm automatisch).&lt;br /&gt;
# Partitionieren der Festplatte (fdisk).&lt;br /&gt;
# Einrichten der Swappartition (mkswap), Formatieren der Festplatte (mkfs).&lt;br /&gt;
# Montieren der Dateisysteme (mount), Aktivieren der Swapbereiche (swapon).&lt;br /&gt;
# Kopieren und Auspacken der Daten vom Installationsmedium auf die Festplatte (die eigentliche Installation). (rpm, dpkg oder tar).&lt;br /&gt;
# Geeignete Wahl der Bootmethode unter Berücksichtigung von Punkt 1 (grub, lilo).&lt;br /&gt;
# Konfiguration des Systems (Netz, Modem etc...).&lt;br /&gt;
&lt;br /&gt;
==Erste Schritte==&lt;br /&gt;
===Anmelden===&lt;br /&gt;
Sie können sich nun mit dem Usernamen und dem Passwort, das sie bei der Installation angelegt haben anmelden!&lt;br /&gt;
[[Image:benutzer.jpg]]&lt;br /&gt;
&lt;br /&gt;
[[Image:passwd.jpg]]&lt;br /&gt;
&lt;br /&gt;
===Terminal öffnen===&lt;br /&gt;
&lt;br /&gt;
Ein Terminal öffnen Sie über das Startmenü:&lt;br /&gt;
&lt;br /&gt;
[[Image:Terminalde.jpg]]&lt;br /&gt;
&lt;br /&gt;
Das geöffnete Terminal sieht dann folgendermaßen aus:&lt;br /&gt;
&lt;br /&gt;
[[Image:Terminalde2.jpg]]&lt;br /&gt;
&lt;br /&gt;
===Sudo===&lt;br /&gt;
Rootrechte erlangen sie über den &amp;quot;Sudo&amp;quot;-Befehl&lt;br /&gt;
 &lt;br /&gt;
''Den nächsten Befehl als root ausführen''&lt;br /&gt;
 xinux@zero:~$ sudo cat /etc/shadow&lt;br /&gt;
 [sudo] password for xinux:&lt;br /&gt;
&lt;br /&gt;
''Eine komplette Sitzung als root starten''&lt;br /&gt;
 xinux@zero:~$ sudo -i&lt;br /&gt;
 [sudo] password for xinux:&lt;br /&gt;
 root@zero:~#&lt;br /&gt;
&lt;br /&gt;
===Virtuelle Konsolen===&lt;br /&gt;
&lt;br /&gt;
In die Virtuelle Konsole gelangen sie über &amp;quot;STRG+ALT+(F1-F6)&amp;quot;.&lt;br /&gt;
Sie funktioniert wie ein ganz normales Terminal, und mit &amp;quot;ALT+F7&amp;quot;&lt;br /&gt;
gelangen sie wieder zurück auf die grafische Benutzeroberfläche&lt;br /&gt;
&lt;br /&gt;
===Abmelden===&lt;br /&gt;
&lt;br /&gt;
Abmelden können Sie sich wieder über das Startmenu unter:&lt;br /&gt;
&lt;br /&gt;
[[Image:Logout.jpg]]&lt;br /&gt;
&lt;br /&gt;
Fals sie nur einzelne Sitzungen in einem der Terminals oder &lt;br /&gt;
den Virtuellen Konsolen Abmelden wollen benutzen sie dazu den Befehl: &amp;quot;exit&amp;quot;&lt;br /&gt;
&lt;br /&gt;
===Herunterfahren===&lt;br /&gt;
&lt;br /&gt;
Das Herunterfahren funktioniert auf dem selben Weg.&lt;br /&gt;
&lt;br /&gt;
Entweder sie Benutzen wieder das Startmenü und benutzen diesmal den &amp;quot;Ausschalten ...&amp;quot; Knopf,&lt;br /&gt;
&lt;br /&gt;
Oder sie geben den äquivalenten &amp;quot;shutdown&amp;quot;-Befehl in einem Terminal bzw. der virtuellen Konsole ein.&lt;br /&gt;
&lt;br /&gt;
Allerdings müssen sie dazu als Administrator angemeldet sein s. &amp;quot;Sudo&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Wenn Sie den &amp;quot;shutdown&amp;quot;-Befehl benutzen wollen muss hinter den Befehl&lt;br /&gt;
&lt;br /&gt;
eine Zeitangabe in Minuten oder das wort &amp;quot;now&amp;quot; für sofortiges Ausschalten hinzugefügt werden:&lt;br /&gt;
&lt;br /&gt;
 xinux@zero:~$ sudo -i&lt;br /&gt;
 root@zero:~# shutdown 60&lt;br /&gt;
 &lt;br /&gt;
 Broadcast message from xinux@zero &lt;br /&gt;
         (/dev/pts/3) at 14:29 ...&lt;br /&gt;
 &lt;br /&gt;
 The system is going down for maintenance in 60 minutes!&lt;br /&gt;
&lt;br /&gt;
Sollten sie den Befehl widerrufen wollen dann drücken sie &amp;quot;STRG+C&amp;quot;,&lt;br /&gt;
&lt;br /&gt;
in dem Terminal in dem der shutdown Befehl gestartet wurde,&lt;br /&gt;
&lt;br /&gt;
oder geben sie den &amp;quot;shutdown&amp;quot;-Befehl zusammen mit der Abbruchoption &amp;quot;-c&amp;quot; in einem anderen Terminal ein:&lt;br /&gt;
&lt;br /&gt;
 root@zero:~# shutdown -c&lt;br /&gt;
&lt;br /&gt;
 shutdown: Shutdown cancelled&lt;br /&gt;
 root@zero:~# &lt;br /&gt;
&lt;br /&gt;
Wenn Sie den Rechner Neustarten möchten gibt es dazu die Option &amp;quot;-r&amp;quot; für den &amp;quot;shutdown&amp;quot;-Befehl&lt;br /&gt;
&lt;br /&gt;
oder den &amp;quot;reboot&amp;quot;-Befehl die beide auch als root ausgeführt werden müssen:&lt;br /&gt;
&lt;br /&gt;
 xinux@zero:~$ sudo -i&lt;br /&gt;
 [sudo] password for xinux: &lt;br /&gt;
 root@zero:~# shutdown -r now&lt;br /&gt;
&lt;br /&gt;
 root@zero:~# reboot&lt;br /&gt;
&lt;br /&gt;
===&amp;quot;man&amp;quot;===&lt;br /&gt;
&lt;br /&gt;
Programm zum Einsehen der Online-Manuals&lt;br /&gt;
&lt;br /&gt;
Die Manuals sind in folgende Sektionen unterteilt:&lt;br /&gt;
# Ausführbare Programme oder Shellbefehle&lt;br /&gt;
# Systemaufrufe (Kernelfunktionen)&lt;br /&gt;
# Bibliotheksaufrufe (Funktionen in System-Bibliotheken)&lt;br /&gt;
# Spezielle Dateien (gewöhnlich in /dev)&lt;br /&gt;
# Dateiformate und Konventionen, z. B. /etc/passwd&lt;br /&gt;
# Spiele&lt;br /&gt;
# Makropakete und Konventionen, z. B. man(7), groff(7)&lt;br /&gt;
# Systemadministrationsbefehle (in der Regel nur für root)&lt;br /&gt;
# Kernelroutinen [Nicht Standard]&lt;br /&gt;
&lt;br /&gt;
Aufruf eines Manuals erfolgt durch ''man kommando''&lt;br /&gt;
Beendet wird durch Drücken des Buchstabens q&lt;br /&gt;
Gesucht wird vorwärts durch Eingabe eines /suchausdruck&lt;br /&gt;
Gesucht wird rückwärts durch Eingabe eines ?suchausdruck&lt;br /&gt;
&lt;br /&gt;
Beispiele:&lt;br /&gt;
&lt;br /&gt;
      man passwd        Anschauen der Manualseite zum Programm passwd&lt;br /&gt;
      man 5 passwd      Anschauen der Manualseite zur Datei /etc/passwd&lt;br /&gt;
      man -a passwd     Anschauen aller Manualseiten zu passwd&lt;br /&gt;
      man -k passwd     Durchsucht die Kurzbeschreibungen der Manualseite&lt;br /&gt;
                        nach passwd und gibt alle Treffer aus&lt;br /&gt;
      man -f passwd      Gibt alle gefunden Kurzbescheibungen zu passwd aus&lt;br /&gt;
      man -L en passwd Gibt englische Manualseiten aus&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Was geht vor auf meinem System? (date,who)===&lt;br /&gt;
&lt;br /&gt;
Das Kommando date dient zur Abfrage von Datum und Uhrzeit.&lt;br /&gt;
&lt;br /&gt;
 xinux@zero:~ &amp;gt; date&lt;br /&gt;
 Fre Mär 16 16:35:03 CET 2001&lt;br /&gt;
&lt;br /&gt;
oder auch Anzeige der Grennwich Zeit:&lt;br /&gt;
&lt;br /&gt;
 xinux@zero:~ &amp;gt; date -u&lt;br /&gt;
 Fre Mär 16 15:35:34 UTC 2001&lt;br /&gt;
&lt;br /&gt;
 xinux@zero:~ &amp;gt; date -u &amp;quot;+%X&amp;quot;&lt;br /&gt;
 15:37:19&lt;br /&gt;
&lt;br /&gt;
 xinux@zero:~ &amp;gt; date -u &amp;quot;+%x&amp;quot;&lt;br /&gt;
 01/15/02&lt;br /&gt;
&lt;br /&gt;
who zeigt alle angemeldeten Benutzer an&lt;br /&gt;
&lt;br /&gt;
 thomas@cardassia:~ &amp;gt; who&lt;br /&gt;
 thomas             tty1 Feb 27 16:39&lt;br /&gt;
 thomas             tty2 Mar 2 17:08&lt;br /&gt;
 tina               tty6 Mar 16 16:38&lt;br /&gt;
&lt;br /&gt;
Mit `who --help' bekommen Sie mehr Informationen.&lt;br /&gt;
&lt;br /&gt;
 thomas@cardassia:~ &amp;gt; who --help&lt;br /&gt;
&lt;br /&gt;
Benutzung: who [OPTION]... [ DATEI | ARG1 ARG2 ]&lt;br /&gt;
&lt;br /&gt;
 -H, --heading             print line of column headings&lt;br /&gt;
 -i, -u, --idle            add user idle time as HOURS:MINUTES, . or old&lt;br /&gt;
 -l, --lookup              attempt to canonicalize hostnames via DNS&lt;br /&gt;
 -m                        only hostname and user associated with stdin&lt;br /&gt;
 -q, --count               all login names and number of users logged on&lt;br /&gt;
 -s                        (ignored)&lt;br /&gt;
 -T, -w, --mesg            add user's message status as +, - or ?&lt;br /&gt;
     --message             same as -T&lt;br /&gt;
     --writable            same as -T&lt;br /&gt;
     --help                display this help and exit&lt;br /&gt;
     --version             output version information and exit&lt;br /&gt;
&lt;br /&gt;
==Das UNIX-Dateisystem==&lt;br /&gt;
===Verzeichnisbaum===&lt;br /&gt;
&lt;br /&gt;
[[Image:vztree.jpg]]&lt;br /&gt;
&lt;br /&gt;
Das Betriebssystem UNIX besitzt ein hierarchisches Dateisystem. Es besteht aus:&lt;br /&gt;
* Dateien (Files)&lt;br /&gt;
Dateien speichern Informationen (Text, Bilder, Sound, Videos, Programme) und&lt;br /&gt;
werden über den Dateinamen angesprochen.&lt;br /&gt;
&lt;br /&gt;
* Verzeichnissen (Directories, Kataloge)&lt;br /&gt;
Verzeichnisse besitzen ebenfalls einen Namen und dienen zur Ordnung des&lt;br /&gt;
Dateisystems. Ein Verzeichnis kann Dateien und Unterverzeichnisse&lt;br /&gt;
(Subdirectories) enthalten. Das oberste Verzeichnis im Dateisystem heisst&lt;br /&gt;
Rootverzeichnis oder kurz Root und wird durch / (sprich: slash)&lt;br /&gt;
gekennzeichnet.&lt;br /&gt;
&lt;br /&gt;
Im Gegensatz zu Windows kennt UNIX keine Laufwerke.&lt;br /&gt;
Das obige Bild zeigt ein typisches UNIX-Dateisystem.&lt;br /&gt;
Unterhalb des Rootverzeichnisses befinden sich eine Vielzahl vonVerzeichnissen.&lt;br /&gt;
&lt;br /&gt;
===Wichtige Verzeichnisse===&lt;br /&gt;
&lt;br /&gt;
• '''Homeverzeichnis'''&lt;br /&gt;
&lt;br /&gt;
das Verzeichnis, in dem man sich unmittelbar nach dem Anmelden befindet. Das&lt;br /&gt;
Homeverzeichnis wird vom Systemverwalter eingerichtet; jeder Anwender&lt;br /&gt;
besitzt ein festes Homeverzeichnis. z.B. /home/hans&lt;br /&gt;
&lt;br /&gt;
~ (Tilde) bzw. $HOME (Shellvariable) kennzeichnen das Homeverzeichnis.&lt;br /&gt;
&lt;br /&gt;
• '''Aktuelles Verzeichnis'''&lt;br /&gt;
&lt;br /&gt;
Verzeichnis, in dem man sich aktuell befindet.&lt;br /&gt;
Das aktuelle Verzeichnis wird mit dem Befehl cd (change directory) oder per&lt;br /&gt;
Mausklick verändert.&lt;br /&gt;
Ein einfacher Punkt . kennzeichnet das aktuelle Verzeichnis.&lt;br /&gt;
&lt;br /&gt;
• '''Elternverzeichnis'''&lt;br /&gt;
&lt;br /&gt;
Verzeichnis unmittelbar oberhalb des aktuellen Verzeichnisses.&lt;br /&gt;
Jedes Verzeichnis ausser / besitzt genau ein Elternverzeichnis.&lt;br /&gt;
Zwei Punkte .. kennzeichnen das Elternverzeichnis (abhängig vom aktuellen&lt;br /&gt;
VZ).&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Absoluter Pfadname:===&lt;br /&gt;
&lt;br /&gt;
Beschreibt ausgehend vom Rootverzeichnis den Weg zum Zielverzeichnis oder zur&lt;br /&gt;
Zieldatei. (Welche Verzeichnisse müssen ausgehend von / durchlaufen werden, um&lt;br /&gt;
zum Ziel zu kommen?) Ein absoluter Pfadname beginnt immer mit / .&lt;br /&gt;
&lt;br /&gt;
===Relativer Pfadname:===&lt;br /&gt;
&lt;br /&gt;
Beschreibt ausgehend vom aktuellen Verzeichnis den Weg zum Zielverzeichnis&lt;br /&gt;
oder zur Zieldatei; ein relativer Pfadname beginnt nicht mit / .&lt;br /&gt;
/home/suxer&lt;br /&gt;
absoluter Pfadname für das Verzeichnis sub1 im Homeverzeichnis von suxer&lt;br /&gt;
&lt;br /&gt;
===Verzeichnisstruktur===&lt;br /&gt;
&lt;br /&gt;
 /bin         Kommandos die beim starten benötigt werden (Zugriff hat jeder)&lt;br /&gt;
 /sbin        Wichtige System-Programme (In der Regel root vorberhalten)&lt;br /&gt;
 /boot        Hier findet man die Dateien des Bootmanagers und des Kernel.&lt;br /&gt;
 /dev         In diesem Verzeichnis stehen die Gerätedateien (Devices),&lt;br /&gt;
 /home        Alle Heimatverzeichnisse der Nutzer findet man hier.&lt;br /&gt;
 /lib         Beim Systemstart benötigten Bibliotheken und Modules stehen hier.&lt;br /&gt;
 /mnt         Mountpunkt für temporäre Partitionen&lt;br /&gt;
 /opt         Software, die nicht Installationsumfang von Linux gehören.&lt;br /&gt;
 /root        Heimatverzeichnis des Administrators.&lt;br /&gt;
 /tmp         Temporäre Dateien können hier abgelegt werden&lt;br /&gt;
 /usr         statische Dateien (kann read-only gemountet sein)&lt;br /&gt;
 /var         variable Dateien (muss beschreibar sein )&lt;br /&gt;
 /etc         Konfiguartionsdateien und Startscripte&lt;br /&gt;
 /proc        Virtuelles Dateisystem -&amp;gt; repräsentiert den Kernel&lt;br /&gt;
&lt;br /&gt;
===Unterverzeichnisse von /usr===&lt;br /&gt;
&lt;br /&gt;
 sbin         Programme für root die beim Start nicht benötigt werden&lt;br /&gt;
 bin          Programme für alle die beim Start nicht benötigt werden&lt;br /&gt;
 X11R6        Dateien des X-Window-Sytems&lt;br /&gt;
 bin          Ausführbare Programme&lt;br /&gt;
 doc          Dokumentationen&lt;br /&gt;
 etc          Konfigurationsdateien&lt;br /&gt;
 games        Spiele&lt;br /&gt;
 include      Headerdateien für C-Programme&lt;br /&gt;
 local        Pakete die nicht zur Distribution gehören ähnlich /opt&lt;br /&gt;
 share        Pakete die von mehreren Paketen genutzt werden&lt;br /&gt;
 share/man    Die Manualpages&lt;br /&gt;
 share/info   Seiten des Infosystems&lt;br /&gt;
 share/doc    Dokumentationen&lt;br /&gt;
 src          Sources von Programmen (Kernel und andere)&lt;br /&gt;
&lt;br /&gt;
===Unterverzeichnisse von /var===&lt;br /&gt;
&lt;br /&gt;
 cache        Zwischenspreicher für Progammes&lt;br /&gt;
 games        Variable Daten der Games (Scores etc...)&lt;br /&gt;
 lock         Sperrdateien&lt;br /&gt;
 log          Die Logdateien (wichtiges Verzeichnis für Admins)&lt;br /&gt;
 mail         Das Mailsystem&lt;br /&gt;
 run          Dateien zu laufemdem Prozessen&lt;br /&gt;
 spool        Spooldateien (z.B. für das Drucksystem&lt;br /&gt;
 state        Statusinfos&lt;br /&gt;
 tmp          Wie /tmp eventuell nicht auf root Partion&lt;br /&gt;
&lt;br /&gt;
==Einfache Komandos==&lt;br /&gt;
===cd: Wechseln des Arbeitsverzeichnis===&lt;br /&gt;
&lt;br /&gt;
Um festzustellen in welchem Verzeichnis man sich befindet, sollte man den&lt;br /&gt;
Befehl &amp;quot;pwd&amp;quot; benutzen,&lt;br /&gt;
&lt;br /&gt;
und mit dem Befehl &amp;quot;cd&amp;quot; kann man zwischen den Verzeichnissen wechseln:&lt;br /&gt;
&lt;br /&gt;
Wechsele ins homeverzeichnis von Xinux&lt;br /&gt;
&lt;br /&gt;
 xinux@zero:~$ cd /home/xinux/&lt;br /&gt;
 xinux@zero:~$ pwd&lt;br /&gt;
 /home/xinux&lt;br /&gt;
&lt;br /&gt;
cd ~ -&amp;gt; wechsele ins jeweilige Homeverzeichnis&lt;br /&gt;
&lt;br /&gt;
cd .. -&amp;gt; wechsele ein Verzeichnis höher&lt;br /&gt;
&lt;br /&gt;
cd ../verzeichnis -&amp;gt; wechsele in eine paralleles Verzeichnis &amp;lt;- (ist eine relative Pfadangabe !)&lt;br /&gt;
&lt;br /&gt;
cd - -&amp;gt; wechsele in das Verzeichnis, in dem vorher gearbeitet wurde.&lt;br /&gt;
&lt;br /&gt;
Mit cd / wechselt man in das Wurzelverzeichnis.&lt;br /&gt;
&lt;br /&gt;
 xinux@zero:/var/log$ cd /&lt;br /&gt;
 xinux@zero:/$ pwd&lt;br /&gt;
 /&lt;br /&gt;
&lt;br /&gt;
===ls: Listing===&lt;br /&gt;
&lt;br /&gt;
Den Inhalt von Verzeichnissen kann man sich mit dem Befehl &amp;quot;ls&amp;quot; anzeigen lassen&lt;br /&gt;
wobei &amp;quot;ls&amp;quot; eine Vielzahl von Optionen besitzt:&lt;br /&gt;
&lt;br /&gt;
 ls                                  standard&lt;br /&gt;
 ls -l                               langes listing&lt;br /&gt;
 ls -a                               alle Dateien&lt;br /&gt;
 ls -i                               mit Inode&lt;br /&gt;
 ls -h                               gut lesbare Dateigröße&lt;br /&gt;
 ls -d                               Verzechnis wird angezeigt, nicht der Inhalt&lt;br /&gt;
 ls -L                               sortiert nach Größe&lt;br /&gt;
 ls -t                               sortiert nach Datum&lt;br /&gt;
 ls -F                               mit nützlichem Anhang&lt;br /&gt;
&lt;br /&gt;
 xinux@zero:/$ ls -l /var/log/messages&lt;br /&gt;
 -rw-r----- 1 syslog adm 2296 2009-06-16 10:05 /var/log/messages&lt;br /&gt;
&lt;br /&gt;
===more: Seitenweises Anzeigen von Seiten===&lt;br /&gt;
 root@zero:~# more /var/log/messages&lt;br /&gt;
 ...&lt;br /&gt;
&lt;br /&gt;
===head: erste Zeilen anzeigen===&lt;br /&gt;
Erste 10 Zeilen anzeigen&lt;br /&gt;
 root@zero:~# head /var/log/messages&lt;br /&gt;
 Jun 15 12:37:08 zero syslogd 1.5.0#5ubuntu3: restart.&lt;br /&gt;
 Jun 15 12:38:43 zero kernel: [  830.065036] mtrr: your processor doesn't support write-combining&lt;br /&gt;
 Jun 15 12:46:05 zero pulseaudio[4817]: pid.c: Stale PID file, overwriting.&lt;br /&gt;
 Jun 15 13:05:24 zero -- MARK --&lt;br /&gt;
 ...&lt;br /&gt;
&lt;br /&gt;
Erste zwei Zeilen anzeigen&lt;br /&gt;
 root@zero:~# head -n 2 /var/log/messages&lt;br /&gt;
 Jun 15 12:37:08 zero syslogd 1.5.0#5ubuntu3: restart.&lt;br /&gt;
 Jun 15 12:38:43 zero kernel: [  830.065036] mtrr: your processor doesn't support write-combining&lt;br /&gt;
&lt;br /&gt;
===tail: letzte Zeilen anzeigen===&lt;br /&gt;
 &lt;br /&gt;
 root@zero:~# tail /var/log/syslog&lt;br /&gt;
 ...&lt;br /&gt;
 Jun 19 11:19:35 zero -- MARK --&lt;br /&gt;
 Jun 19 11:39:35 zero -- MARK --&lt;br /&gt;
 Jun 19 11:59:36 zero -- MARK --&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Letze 5 Zeilen anzeigen&lt;br /&gt;
 root@zero:~# tail -n 5 /var/log/auth.log&lt;br /&gt;
 Jun 18 14:30:01 zero CRON[12040]: pam_unix(cron:session): session closed for user root&lt;br /&gt;
 Jun 18 14:39:01 zero CRON[12191]: pam_unix(cron:session): session opened for user root by (uid=0)&lt;br /&gt;
 Jun 18 14:39:01 zero CRON[12191]: pam_unix(cron:session): session closed for user root&lt;br /&gt;
 Jun 18 14:40:01 zero CRON[12237]: pam_unix(cron:session): session opened for user root by (uid=0)&lt;br /&gt;
 Jun 18 14:40:01 zero CRON[12237]: pam_unix(cron:session): session closed for user root&lt;br /&gt;
&lt;br /&gt;
Letze Zeilen anzeigen und fortlaufend aktualisieren&lt;br /&gt;
 root@zero:~# tail -f /var/log/syslog&lt;br /&gt;
 ...&lt;br /&gt;
&lt;br /&gt;
===mkdir: Ein neues Verzeichnis erstellen===&lt;br /&gt;
&lt;br /&gt;
 mkdir        verzeichnis&lt;br /&gt;
Erstellt ein Verzeichnis im working directory (wd)&lt;br /&gt;
&lt;br /&gt;
 mkdir  -p    ver1/ver2&lt;br /&gt;
Erstellt ein Verzeichnis ver2 unterhalb von ver1&lt;br /&gt;
wenn ver1 nicht existiert wird es erstellt&lt;br /&gt;
&lt;br /&gt;
 mkdir -m 753 ver1&lt;br /&gt;
Es wird das Verzeichnis ver1 erstellt mit der mask 753&lt;br /&gt;
&lt;br /&gt;
 mkdir -v     ver1&lt;br /&gt;
Geschwätzige Ausgabe :)&lt;br /&gt;
&lt;br /&gt;
===Zum Löschen von leeren Verzeichnissen wird rmdir benutzt===&lt;br /&gt;
&lt;br /&gt;
 rmdir           ver1&lt;br /&gt;
Löscht das leere Verzeichnis ver1&lt;br /&gt;
&lt;br /&gt;
 rmdir -v        ver1&lt;br /&gt;
Löscht das leere Verzeichnis ver1 und ist geschwätzig&lt;br /&gt;
&lt;br /&gt;
 rmdir -p        /ver1/ver2/ver3&lt;br /&gt;
Löscht das Verzeichnis ver3; wenn dadurch ver2 ein leeres&lt;br /&gt;
Verzeichnis wird, wird dieses auch gelöscht , wenn ver1&lt;br /&gt;
dadurch ein leeres Verzeichnis wird, wird auch dieses gelöscht.&lt;br /&gt;
&lt;br /&gt;
===touch Verändern des Zeitstempels===&lt;br /&gt;
&lt;br /&gt;
Mit touch können wir eine neue leere Datei erzeugen (das ist nicht der eigentliche&lt;br /&gt;
Zweck von touch, eigentlich wird der Zeitstempel geändert)&lt;br /&gt;
&lt;br /&gt;
 touch            dateiname&lt;br /&gt;
&lt;br /&gt;
===Kopieren=== &lt;br /&gt;
cp ist das Kommando um Dateien zu kopieren &lt;br /&gt;
&lt;br /&gt;
Eine Kopie von dat1 mit dem Namen dat2 erstellen:&lt;br /&gt;
&lt;br /&gt;
 xinux@zero:~$ cp dat1 dat2&lt;br /&gt;
&lt;br /&gt;
Eine Kopie von dat1 ins Verzeichnis ver2 erstellen:&lt;br /&gt;
&lt;br /&gt;
 xinux@zero:~$ cp dat1 ver2/&lt;br /&gt;
 &lt;br /&gt;
Eine Kopie erstellen mit ausführlicher Anzeige:&lt;br /&gt;
&lt;br /&gt;
 xinux@zero:~$ cp -v dat1 dat2&lt;br /&gt;
 `dat1' -&amp;gt; `dat2'&lt;br /&gt;
&lt;br /&gt;
Eine Kopie erstellen mit Rückfrage fals etwas überschrieben wird:&lt;br /&gt;
&lt;br /&gt;
 xinux@zero:~$ cp -i dat1 dat2&lt;br /&gt;
 cp: overwrite `dat2'?&lt;br /&gt;
&lt;br /&gt;
Eine Kopie erstellen und die Rückfrage überbrücken:&lt;br /&gt;
&lt;br /&gt;
 xinux@zero:~$ cp -f dat1 dat2&lt;br /&gt;
&lt;br /&gt;
Eine Kopie von dat1 ins Verzeichnis ver2 erstellen fals keine neuere Version von dat1 vorliegt:&lt;br /&gt;
&lt;br /&gt;
 xinux@zero:~$ cp -u dat1 ver2/&lt;br /&gt;
&lt;br /&gt;
Eine Kopie erstellen fals ver2 auf dem selben Dateisystem wie dat1 liegt:&lt;br /&gt;
&lt;br /&gt;
 xinux@zero:~$ cp -x dat1 ver2/&lt;br /&gt;
&lt;br /&gt;
Eine Kopie von ver1, die als ver2 oder unter ver2 als ver1 gespeichert wird erstellen:&lt;br /&gt;
&lt;br /&gt;
 xinux@zero:~$ cp -r ver1/ ver2/&lt;br /&gt;
&lt;br /&gt;
Eine Kopie von einer Datei erstellen und ihre Attribute beibehalten:&lt;br /&gt;
&lt;br /&gt;
 xinux@zero:~$ cp -p sux1 sux2&lt;br /&gt;
&lt;br /&gt;
Eine Kopie erstellen bei der die Links erhalten bleiben:&lt;br /&gt;
&lt;br /&gt;
 xinux@zero:~$ cp -r ver1/ ver2/&lt;br /&gt;
&lt;br /&gt;
Eine Kopie erstellen zum Archivieren (-dpr):&lt;br /&gt;
&lt;br /&gt;
 xinux@zero:~$ cp -a ver1/ ver2/&lt;br /&gt;
&lt;br /&gt;
===rm: Löschen einer Datei===&lt;br /&gt;
&lt;br /&gt;
Um Dateien zu löschen, brauchen wir das Kommando &amp;quot;rm&amp;quot;:&lt;br /&gt;
&lt;br /&gt;
 rm               dat1        dat1 wird gelöscht&lt;br /&gt;
 rm         -i    dat1        dat1 wird nach Bestätigung gelöscht&lt;br /&gt;
 rm         -f    dat1        dat1 wird ohne Rückfragen gelöscht&lt;br /&gt;
 rm         -v    dat1        dat1 wird glöscht (geschwätzige Ausgabe)&lt;br /&gt;
 rm         -r    ver1        Löschen von nicht leeren Verzeichnissen&lt;br /&gt;
                              Achtung !!! Als root kann man sich damit Teile&lt;br /&gt;
                              oder sogar den gesamten Verzeichnisbaum&lt;br /&gt;
                              absägen !!!&lt;br /&gt;
&lt;br /&gt;
===mv: Verschieben===&lt;br /&gt;
&lt;br /&gt;
Mit dem Befehl &amp;quot;mv&amp;quot; werden Daten verschoben, folgendes gilt:&lt;br /&gt;
&lt;br /&gt;
 mv          dat1 dat2         &lt;br /&gt;
Die Datei dat1 wird in dat2 umbenannt&lt;br /&gt;
 mv          dat1 /ver1        &lt;br /&gt;
Die Datei dat1 wird nach /ver1 verschoben&lt;br /&gt;
&lt;br /&gt;
Die Parameter und ihre Bedeutung:&lt;br /&gt;
&lt;br /&gt;
      -i                      wenn eine Datei exisitiert wird vor dem&lt;br /&gt;
                              Überschreiben nachgefragt&lt;br /&gt;
      -v                      verbose (geschwätzig)&lt;br /&gt;
      -u                      nur neuere Daten werden bei Bedarf überschrieben&lt;br /&gt;
      -b                      wenn überschrieben werden soll, wird ein Backup&lt;br /&gt;
                              erstellt&lt;br /&gt;
      -S ENDUNG               das Backup bekommt die Endung ENDUNG&lt;br /&gt;
&lt;br /&gt;
===su Benutzer wechseln===&lt;br /&gt;
&lt;br /&gt;
 su -             &lt;br /&gt;
Wechsel zum Rootaccount, wie wenn dieser sich neu anmelden würde. (Bsp: su -)&lt;br /&gt;
&lt;br /&gt;
 su Benutzernamen &lt;br /&gt;
Wechsel der Identität zu Benutzer (gegebenenfalls Passwortabfrage)&lt;br /&gt;
&lt;br /&gt;
 su -c Kommando   &lt;br /&gt;
Kommando wird als rootaccount ausgeführt&lt;br /&gt;
&lt;br /&gt;
==Der Standard Editor vi==&lt;br /&gt;
Der vi ist der Standardeditor in der Unixwelt. Er ist in jedem Unix-Derivat&lt;br /&gt;
enthalten.&lt;br /&gt;
Der Editor hat zwar den schlechten Ruf umständlich zu bedienen zu sein, ist&lt;br /&gt;
jedoch sehr leistungsfähig und systemübergreifend verfügbar. Beim vi handelt es&lt;br /&gt;
sich um einen rein textorientierten Editor, der mittels eigener Kommandos&lt;br /&gt;
gesteuert wird.&lt;br /&gt;
&lt;br /&gt;
Der Editor VIM ist eine weitere Verbesserung von VI und leichter zu bedienen.&lt;br /&gt;
Und unter Ubuntu/Debian mit &amp;quot;apt-get install vim&amp;quot; zu installieren.&lt;br /&gt;
&lt;br /&gt;
===Starten des Editors:===&lt;br /&gt;
&lt;br /&gt;
Der Editorstart erfolgt einfach durch die Eingabe des Kommandos vi mit dem&lt;br /&gt;
Dateinamen der zu editierenden Datei als Parameter.&lt;br /&gt;
Beispiel:        &lt;br /&gt;
 vi sux.txt&lt;br /&gt;
&lt;br /&gt;
===Die Betriebsmodi des vi:===&lt;br /&gt;
&lt;br /&gt;
Ein Umstand, der dem vi den Ruf der komplizierten Bedienbarkeit zugetragen hat,&lt;br /&gt;
sind die unterschiedlichen Betriebsmodi des Editors. Genauer gesagt verfügt der&lt;br /&gt;
vi über drei Betriebsmodi:&lt;br /&gt;
&lt;br /&gt;
====Kommandomodus:====&lt;br /&gt;
&lt;br /&gt;
Innerhalb dieses Modus werden die eingegebenen Zeichen direkt als Befehle des&lt;br /&gt;
Editors interpretiert und ausgeführt. Dabei gibt es weder ein Bereitschaftszeichen&lt;br /&gt;
(Prompt) noch ein Echo (Ausgabe). Der Kommandomodus ist der Modus, in dem&lt;br /&gt;
sich der vi direkt nach seinem Start befindet.&lt;br /&gt;
&lt;br /&gt;
====Zeilenmodus oder Exmodus:====&lt;br /&gt;
&lt;br /&gt;
Dieser Modus ist der einzige Modus mit einem eigenen Bereitschaftszeichen,&lt;br /&gt;
nämlich dem Doppelpunkt (:). Das Prompt wird ebenso wie die Befehlsausgaben&lt;br /&gt;
in der Statuszeile angezeigt.&lt;br /&gt;
&lt;br /&gt;
====Eingabemodus:====&lt;br /&gt;
&lt;br /&gt;
Der Eingabemodus ist derjenige, in welchem der zu bearbeitende Text bearbeitet&lt;br /&gt;
werden kann. Alle hier eingegebenen Zeichen werden als Text für die aktuelle&lt;br /&gt;
Datei interpretiert. Zwischen den unterschiedlichen Modi kann jederzeit&lt;br /&gt;
gewechselt werden. Von Kommandomodus gelangen Sie durch mehere Wege in&lt;br /&gt;
den Eingabemodus. Man kann durch folgende Aktionen wechslen&lt;br /&gt;
&lt;br /&gt;
{| border=1 cellpadding=2&lt;br /&gt;
|i&lt;br /&gt;
|Text vor der aktuellen Cursorposition einfügen&lt;br /&gt;
|-&lt;br /&gt;
|I&lt;br /&gt;
|Text am Zeilenanfang einfügen&lt;br /&gt;
|-&lt;br /&gt;
|a&lt;br /&gt;
|Text hinter der aktuellen Cursorposition einfügen&lt;br /&gt;
|-&lt;br /&gt;
|A&lt;br /&gt;
|Text am Zeilenende einfügen&lt;br /&gt;
|-&lt;br /&gt;
|o&lt;br /&gt;
|Unterhalb der aktuellen Zeile eine neue Zeile einfügen&lt;br /&gt;
|-&lt;br /&gt;
|O&lt;br /&gt;
|Oberhalb der aktuellen Zeile eine neue Zeile einfügen&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Durch das Drücken der ESC - Taste gelangt man in den Kommandomodus zurück.&lt;br /&gt;
&lt;br /&gt;
Im Kommandomodus können Sie durch den Text navigieren und auch den Text&lt;br /&gt;
selbst bearbeiten, z.B ausschneiden, kopieren usw. Dazu sind einige Kommandos&lt;br /&gt;
nötig, von denen die wichtigsten im Folgenden erläutert werden:&lt;br /&gt;
&lt;br /&gt;
 xinux@zero:/$ vi iwas.txt&lt;br /&gt;
&lt;br /&gt;
[[Image:vim.jpg]]&lt;br /&gt;
&lt;br /&gt;
===Benutzen des Kommandomodus===&lt;br /&gt;
====Steuerung des Cursors durch den Text====&lt;br /&gt;
&lt;br /&gt;
Mittels folgender Kommandos bewegt sich der Cursor durch den Text:&lt;br /&gt;
&lt;br /&gt;
{| border=1 cellpadding=2&lt;br /&gt;
|h&lt;br /&gt;
|Cursor ein Zeichen nach links&lt;br /&gt;
|-&lt;br /&gt;
|l&lt;br /&gt;
|Cursor ein Zeichen nach rechts&lt;br /&gt;
|-&lt;br /&gt;
|k&lt;br /&gt;
|Cursor eine Zeile nach oben&lt;br /&gt;
|-&lt;br /&gt;
|j&lt;br /&gt;
|Cursor eine Zeile nach unten&lt;br /&gt;
|-&lt;br /&gt;
|w&lt;br /&gt;
|Cursor ein Wort nach rechts&lt;br /&gt;
|-&lt;br /&gt;
|b&lt;br /&gt;
|Cursor ein Wort nach links&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Alle diese Kommandos können mit einem vorgestellten Wiederholungsfaktor&lt;br /&gt;
arbeiten. Der Befehl 3w verschiebt demnach den Cursor um 3 Wörter nach rechts.&lt;br /&gt;
&lt;br /&gt;
====Angaben zur Positionierung====&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{| border=1 cellpadding=2&lt;br /&gt;
|STRG+U&lt;br /&gt;
|1⁄2 Bildschirmseite nach oben&lt;br /&gt;
|-&lt;br /&gt;
|STRG+D&lt;br /&gt;
|1⁄2 Bildschirmseite nach unten&lt;br /&gt;
|-&lt;br /&gt;
|STRG+B&lt;br /&gt;
|1 Bildschirmseite nach oben&lt;br /&gt;
|-&lt;br /&gt;
|STRG+F&lt;br /&gt;
|1 Bildschirmseite nach unten&lt;br /&gt;
|-&lt;br /&gt;
|/Ausdruck&lt;br /&gt;
|Sucht den Ausdruck (vorwärts) Weitersuchen mit n , N&lt;br /&gt;
|-&lt;br /&gt;
|?Ausdruck&lt;br /&gt;
|Sucht den Ausdurck (rückwärts) Weitersuchen mit n , N&lt;br /&gt;
|-&lt;br /&gt;
|0&lt;br /&gt;
|Zeilenanfang&lt;br /&gt;
|-&lt;br /&gt;
|$&lt;br /&gt;
|Zeilenende&lt;br /&gt;
|-&lt;br /&gt;
|w&lt;br /&gt;
|Nächstes Wort&lt;br /&gt;
|-&lt;br /&gt;
|b&lt;br /&gt;
|Vorheriges Wort&lt;br /&gt;
|-&lt;br /&gt;
|fc&lt;br /&gt;
|Auf das Zeichen c springen. c steht für ein beliebiges Zeichen&lt;br /&gt;
|-&lt;br /&gt;
|G&lt;br /&gt;
|Letzte Zeile der Datei&lt;br /&gt;
|-&lt;br /&gt;
|ng&lt;br /&gt;
|n-te Zeile der Datei&lt;br /&gt;
|-&lt;br /&gt;
|H&lt;br /&gt;
|Anfang der Bildschirmseite&lt;br /&gt;
|-&lt;br /&gt;
|L&lt;br /&gt;
|Ende der Bildschirmseite&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
====Befehle zur Textbearbeitung -&amp;gt; Was soll geschehen====&lt;br /&gt;
&lt;br /&gt;
{| Border=1 Cellpadding=2&lt;br /&gt;
|x&lt;br /&gt;
|Löscht Zeichen&lt;br /&gt;
|-&lt;br /&gt;
|d&lt;br /&gt;
|Löschen und in den Puffer laden&lt;br /&gt;
|-&lt;br /&gt;
|c&lt;br /&gt;
|Ändern&lt;br /&gt;
|-&lt;br /&gt;
|y&lt;br /&gt;
|In den Puffer laden&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
====Weitere wichtige Befehle:====&lt;br /&gt;
&lt;br /&gt;
{| Border=1 Cellpadding=2&lt;br /&gt;
|p&lt;br /&gt;
|Aus dem Puffer einfügen&lt;br /&gt;
|-&lt;br /&gt;
|u&lt;br /&gt;
|Undo, macht den letzten Befehl rückgängig&lt;br /&gt;
|-&lt;br /&gt;
|STRG+R&lt;br /&gt;
|Redo, macht den letzten Undo rückgängig&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
===Zeilen- oder Exmodus===&lt;br /&gt;
&lt;br /&gt;
Wie schon erwähnt wird der Zeilen oder Exmodus durch einen : eingeleitet.&lt;br /&gt;
Es folgen einige Beispiele.&lt;br /&gt;
&lt;br /&gt;
Befehle zum Speichern und Beenden:&lt;br /&gt;
&lt;br /&gt;
 :w          Schreibt Datei&lt;br /&gt;
 :w Datei2   Schreibt eine Kopie in Datei2&lt;br /&gt;
 :w !        Schreibt Datei (übergehe Schreibschutz)&lt;br /&gt;
 :w ! Datei2 Schreibt eine Kopie in Datei2 (übergehe Schreibschutz)&lt;br /&gt;
 :q          Schließe Datei&lt;br /&gt;
 :q!         Schließe Datei (verwerfe Änderungen)&lt;br /&gt;
 :wq         Schreibe Datei und beende Editor&lt;br /&gt;
 :wq!        Schreibe Datei und beende Editor (übergehe Schreibschutz)&lt;br /&gt;
 :q!         Schließe Datei (verwerfe Änderungen)&lt;br /&gt;
 :h          Hilfe anzeigen, durch drücken von :q Beenden der Hilfe&lt;br /&gt;
 :e Datei3   Editiere Datei3&lt;br /&gt;
 :e #        Editere vorhergehende Datei&lt;br /&gt;
 :1,3co9     Kopiere von der ersten bis zu dritten Zeile &lt;br /&gt;
             und füge den Inhalt unterhalb der neunte Zeile ein.&lt;br /&gt;
&lt;br /&gt;
Interaktionen mit Unix:&lt;br /&gt;
&lt;br /&gt;
 :r Datei4   Fügt Inhalt der Datei4 nach dem Cursor ein&lt;br /&gt;
 :r ! Befehl Fügt Ausgabe des Befehls nach dem Cursor ein&lt;br /&gt;
 :! Befehl   Führt den Befehl aus&lt;br /&gt;
 :sh         Starte Subshell -&amp;gt; mit exit kehrt man wieder zurück&lt;br /&gt;
             Eingabemodus zurück&lt;br /&gt;
&lt;br /&gt;
====Ersetzen von Textteilen====&lt;br /&gt;
&lt;br /&gt;
Die grundsätzliche Syntax lautet:&lt;br /&gt;
&lt;br /&gt;
 :[Zeilennummer,Zeilennummer]s/Muster/Ersetzung/[gc]&lt;br /&gt;
&lt;br /&gt;
 :s/worf/kirn/              der erste worf wird in der aktuellen Zeile durch kirn ersetzt&lt;br /&gt;
 :1,9s/worf/kirn/g          von der 1. bis zur 9. Zeile werden alle worf durch kirn ersetzt&lt;br /&gt;
 :1,$s/worf/kirn/           von der ersten bis zur letzten Zeile ersetze ersten worf durch&lt;br /&gt;
                            kirn&lt;br /&gt;
 :.,$s/worf/kirn/g          von der aktuellen bis zur letzten Zeile ersetze alle worf durch&lt;br /&gt;
                            kirn&lt;br /&gt;
 :1,.s/worf/kirn/c          von der 1. bis zur aktuellen Zeile ersetze worf durch kirn, frage&lt;br /&gt;
                            aber nach&lt;br /&gt;
 :1,$s/^worf/kirn/          von der ersten bis zur letzten Zeile ersetze worf am&lt;br /&gt;
                            Zeilenanfang durch kirn&lt;br /&gt;
 :4,$s/worf$/kirn/          von der 4. bis zur letzten Zeile ersetze worf am Zeilenende&lt;br /&gt;
                            durch kirn&lt;br /&gt;
 :1,$s/^#//                 lösche alle Kommentarzeichen&lt;br /&gt;
 :1,$s/^.orf/kirn/           ersetze alles was am Zeilenanfang ein beliebiges Zeichen hat&lt;br /&gt;
                            gefolgt von einem orf durch kirn&lt;br /&gt;
 :1,$s/^[A-Z]orf/kirn/g     suche nach einem Großbuchstaben am Anfang der Zeile&lt;br /&gt;
                            gefolgt von einem orf und ersetze durch kirn&lt;br /&gt;
 :1,$s/^M[ae][iy]e*r/kirn/  suche alles, was am Anfang der Zeile ein großes M enthält,&lt;br /&gt;
                            gefolgt von einem a oder e , gefolgt von einem i oder y ,&lt;br /&gt;
                            gefolgt von einem e , welches 0 oder N mal vorkommen kann,&lt;br /&gt;
                            gefolgt von einem r und ersetze es durch kirn&lt;br /&gt;
&lt;br /&gt;
==Reguläre Ausdrücke==&lt;br /&gt;
&lt;br /&gt;
{| Border=1 Cellpadding=2&lt;br /&gt;
|c&lt;br /&gt;
|Ein einzelner Buchstabe passt auf sich selbst&lt;br /&gt;
|-&lt;br /&gt;
|.&lt;br /&gt;
|Ein Punkt passt auf jedes Zeichen außer auf das Zeilenende&lt;br /&gt;
|-&lt;br /&gt;
|*&lt;br /&gt;
|Das dem Operator * vorangehende Muster kann 0 oder öfter vorkommen&lt;br /&gt;
|-&lt;br /&gt;
|^&lt;br /&gt;
|(Caret) passt auf den Zeilenanfang&lt;br /&gt;
|-&lt;br /&gt;
|$&lt;br /&gt;
|Passt auf das Zeilenende&lt;br /&gt;
|-&lt;br /&gt;
|\&lt;br /&gt;
|Das folgende Sonderzeichen wird entwertet&lt;br /&gt;
|-&lt;br /&gt;
|[...]&lt;br /&gt;
|Passt auf &amp;quot;genau&amp;quot; eins in [...] angebenen Zeichen&lt;br /&gt;
|-&lt;br /&gt;
|[^...]&lt;br /&gt;
|Passt auf &amp;quot;genau&amp;quot; ein Zeichen welches nicht in [...] angebenen ist&lt;br /&gt;
|-&lt;br /&gt;
|\&amp;lt;&lt;br /&gt;
|Passt auf den Wortanfang&lt;br /&gt;
|-&lt;br /&gt;
|\&amp;gt;&lt;br /&gt;
|Passt auf das Wortende&lt;br /&gt;
|-&lt;br /&gt;
|\+&lt;br /&gt;
|Das dem Operator \+ vorangehende Muster kann 1 oder öfter vorkommen&lt;br /&gt;
|-&lt;br /&gt;
|&amp;amp;&lt;br /&gt;
|Setzt das gefunden Suchmuster ein&lt;br /&gt;
|-&lt;br /&gt;
|\(...\)&lt;br /&gt;
|Speichert den Text auf den das Suchmuster passt zur späteren Verwendung&lt;br /&gt;
|-&lt;br /&gt;
|\n&lt;br /&gt;
|Setzt das vorangehende, mit \(...\) Gefundene wieder ein&lt;br /&gt;
|-&lt;br /&gt;
|(...)&lt;br /&gt;
|Gruppiert Auswahlmöglichkeiten&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;nowiki&amp;gt;|&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
|Trennt Auswahlmöglichkeiten&lt;br /&gt;
|-&lt;br /&gt;
|\b&lt;br /&gt;
|Passt auf den Anfang oder das Ende eines Wortes&lt;br /&gt;
|-&lt;br /&gt;
|\B&lt;br /&gt;
|Symbolisiert den Raum innerhalb eines Wortes&lt;br /&gt;
|-&lt;br /&gt;
|\w&lt;br /&gt;
|Passt auf alle alphanumerischen Zeichen [A-Za-z0-9]&lt;br /&gt;
|-&lt;br /&gt;
|\W&lt;br /&gt;
|Passt auf alle nichtalphanumerischen Zeichen [^A-Za-z0-9]&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Die Rangfolge der Operatoren(von der höchsten zur niedrigsten)&lt;br /&gt;
:(, ), ?, *, + | .&lt;br /&gt;
&lt;br /&gt;
Die anderen Operatoren sind mit den anderen Buchstaben gleichrangig.&lt;br /&gt;
&lt;br /&gt;
===Beispiel zum Suchen===&lt;br /&gt;
&lt;br /&gt;
 Suchmuster               Passt auf&lt;br /&gt;
 ^Tuxer                   Tuxer am Zeilenanfang&lt;br /&gt;
 [tT]uxer                 Tuxer oder tuxer&lt;br /&gt;
 80[23]?86                8086, 80286 oder 80386&lt;br /&gt;
&lt;br /&gt;
===grep===&lt;br /&gt;
&lt;br /&gt;
Mit grep ist es möglich, in Dateien nach regulären Ausdrücken zu suchen. Wenn&lt;br /&gt;
eine Übereinstimmung gefunden wird, wird die komplette Zeile auf die&lt;br /&gt;
Standardausgabe geschrieben. grep kann auch von STDIN lesen.Es ist&lt;br /&gt;
empfehlenswert, sich anzugwöhnen ,das Suchmuster in Anführungszeichen zu&lt;br /&gt;
schreiben. Es gibt 3 Arten fgrep = fastgrep , grep und egrep egrep&lt;br /&gt;
&lt;br /&gt;
Beispiel:&lt;br /&gt;
&lt;br /&gt;
 root@zero:~# cat text&lt;br /&gt;
 quatsch&lt;br /&gt;
 quatsch&lt;br /&gt;
 quatsch&lt;br /&gt;
 wichtig&lt;br /&gt;
 quatsch&lt;br /&gt;
 root@zero:~# grep wichtig text&lt;br /&gt;
 wichtig&lt;br /&gt;
 root@zero:~# &lt;br /&gt;
&lt;br /&gt;
 -c                   meldet nur die Gesamtzahl der Fundstellen&lt;br /&gt;
 -v                   zeigt nur Zeilen, die »Ausdruck« nicht enthalten&lt;br /&gt;
 -i                   ignoriert Groß- und Kleinschreibung&lt;br /&gt;
 -l                    meldet nur Dateinamen mit Fundstellen&lt;br /&gt;
 -n                   listet Zeilennummern zu jeder Fundstelle&lt;br /&gt;
 -f                   Dateiname »Dateiname« enthält die Such-Ausdrücke&lt;br /&gt;
 -E                   ist ein erweiterter regulärer Ausdruck (egrep)&lt;br /&gt;
 -F                   (Muster, Ausdruck) ist ein Muster (String) (fgrep)&lt;br /&gt;
 -b                   listet auch die Position der Fundstellen&lt;br /&gt;
 -C    Anzahl         Anzahl von Zeilen werden nach der Fundstelle ausgegeben&lt;br /&gt;
 -B    Anzahl         Anzahl von Zeilen werden vor der Fundstelle ausgegeben&lt;br /&gt;
 -r                   Durchsucht Verzeichnisse rekursiv&lt;br /&gt;
&lt;br /&gt;
==Useridendifikation==&lt;br /&gt;
===/etc/passwd===&lt;br /&gt;
====Beschreibung====&lt;br /&gt;
passwd ist eine ASCII-Datei, die eine Liste der Benutzer des Systems und deren&lt;br /&gt;
Passwörter enthält. Die Passwortdatei sollte für alle Benutzer lesbar sein, was für&lt;br /&gt;
dieVerschlüsselung notwendig ist; aber nur vom Superuser beschreibbar. Wenn&lt;br /&gt;
Sie eine neue Kennung einrichten, lassen Sie das Passwort-Feld in der Datei frei&lt;br /&gt;
und benutzen Sie passwd(1), um dem System ein Passwort für die neue Kennung&lt;br /&gt;
mitzuteilen.&lt;br /&gt;
&lt;br /&gt;
Die Datei /etc/passwd enthält einen Eintrag pro Zeile mit dem Format:&lt;br /&gt;
login_name:passwd:UID:GID:user_name:directory:shell&lt;br /&gt;
====Die Bedeutung der Felder:====&lt;br /&gt;
# login_name Kennung des Benutzers auf dem System.&lt;br /&gt;
# password   Hier steht bei Shadowsystemen ein x. Die Passwörter sind in der Datei /etc/shadow&lt;br /&gt;
# UID        Die numerische Benutzernummer.&lt;br /&gt;
#  GID        Die numerische Gruppennummer des Benutzers.&lt;br /&gt;
# user_name Ein optionales Kommentarfeld, oft benutzt für den vollen Namen des Benutzers und weitere Informationen (Telefon, Raum-Nummer etc.).&lt;br /&gt;
# directory  Das Heimatverzeichnis $HOME des Benutzers.&lt;br /&gt;
# shell      Das Programm, das beim Einloggen gestartet werden soll (falls nicht nötig, benutzen Sie /bin/bash).&lt;br /&gt;
&lt;br /&gt;
===/etc/group===&lt;br /&gt;
====Beschreibung====&lt;br /&gt;
etc/group ist eine ASCII Datei, die Gruppen definiert, zu denen Benutzer&lt;br /&gt;
gehören. Es gibt nur einen Eintrag pro Zeile; jede Zeile hat folgendes Format:&lt;br /&gt;
         GruppenName:Passwort:GruppenKennung:BenutzerListe&lt;br /&gt;
Beschreibung der Felder:&lt;br /&gt;
#     GruppenName      Die Bezeichnung der Gruppe.&lt;br /&gt;
#     Passwort         Das (verschlüsselte) Gruppen-Passwort. Wenn dieses Feld leer ist, wird kein Passwort benötigt.&lt;br /&gt;
#     GruppenKennung Die numerische Identifikation der Gruppe.&lt;br /&gt;
#     BenutzerListe    Alle Namen der Mitglieder, getrennt durch Kommas.&lt;br /&gt;
&lt;br /&gt;
===/etc/shadow===&lt;br /&gt;
====Beschreibung====&lt;br /&gt;
shadow beinhaltet Informationen zu den verschlüsselten Passwörten, zu den&lt;br /&gt;
Benutzerzugängen und weitere Informationen zur Laufzeit der Passwörter.&lt;br /&gt;
 Name:Passwort:Letzte Änderung:Mintage:Maxtage:Warntage:Inaktiv:Ablauf&lt;br /&gt;
#    Der Loginname&lt;br /&gt;
#    verschlüsseltes Passwort &lt;br /&gt;
&amp;lt;nowiki&amp;gt;*&amp;lt;/nowiki&amp;gt; bedeutet Benutzer kann sich nicht einlogen&lt;br /&gt;
! bedeutet Benutzer hat kein Passwort gesetzt&lt;br /&gt;
#    Tage seit dem 1 Januar 1970 an dem das Passwort letztmals geändert wurde&lt;br /&gt;
#    Tage, die das Passwort behalten werden muss, bevor es wieder geändert werden kann&lt;br /&gt;
#     Die Anzahl der Tage, nach denen der Benutzer das Passwort wieder ändern muss&lt;br /&gt;
#    Anzahl der Tage bevor das Passwort abläuft und der Benutzer gewarnt wird&lt;br /&gt;
#    Wenn der Zugang diese Anzahl von Tagen nicht benutzt wird, wird der Zugang gesperrt&lt;br /&gt;
#    Tag seit dem 1 Januar 1970, an dem der Zugang gesperrt wird&lt;br /&gt;
#    Reserviertes Feld&lt;br /&gt;
&lt;br /&gt;
Die Datei sollte aus Sicherheitgründen nicht für einen normalen Benutzer lesbar&lt;br /&gt;
sein.&lt;br /&gt;
&lt;br /&gt;
==Programme zur Userverwaltung==&lt;br /&gt;
===useradd===&lt;br /&gt;
User anlegen&lt;br /&gt;
 root@zero:~# useradd -m -u 1011 -g users -G admin -d /home/erwin -s /bin/bash -c &amp;quot;Erwin Lehman&amp;quot;  erwin&lt;br /&gt;
{| border=1 cellpadding=2&lt;br /&gt;
|&amp;quot;-m&amp;quot;&lt;br /&gt;
|Lege Homedirectory an&lt;br /&gt;
|-&lt;br /&gt;
|&amp;quot;-u 1011&amp;quot;&lt;br /&gt;
|Userid wird zugeordnet&lt;br /&gt;
|-&lt;br /&gt;
|&amp;quot;-g users&amp;quot;&lt;br /&gt;
|Primäre Gruppe wird zugeordnet&lt;br /&gt;
|-&lt;br /&gt;
|&amp;quot;-G admin&amp;quot;&lt;br /&gt;
|Sekunbdäre Gruppe wird zugeordnet&lt;br /&gt;
|-&lt;br /&gt;
|&amp;quot;-d /home/erwin/&amp;quot;&lt;br /&gt;
|Name des Homedirectory&lt;br /&gt;
|-&lt;br /&gt;
|&amp;quot;-s /bin/bash&amp;quot;&lt;br /&gt;
|Bash wird zugeordnet&lt;br /&gt;
|- &lt;br /&gt;
|&amp;quot;-c Erwin Lehman&amp;quot;&lt;br /&gt;
|Kommentarfeld&lt;br /&gt;
|-&lt;br /&gt;
|&amp;quot;erwin&amp;quot; &lt;br /&gt;
|Name des Users&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Defaulteinstellungen anzeigen&lt;br /&gt;
 root@zero:~# useradd -D&lt;br /&gt;
 GROUP=100&lt;br /&gt;
 HOME=/home&lt;br /&gt;
 INACTIVE=-1&lt;br /&gt;
 EXPIRE=&lt;br /&gt;
 SHELL=/bin/sh&lt;br /&gt;
 SKEL=/etc/skel&lt;br /&gt;
 CREATE_MAIL_SPOOL=no&lt;br /&gt;
&lt;br /&gt;
Defaulteinstellungen ändern&lt;br /&gt;
 useradd -D -s /bin/bash&lt;br /&gt;
&lt;br /&gt;
Konfigurationsdatei&lt;br /&gt;
 root@zero:~# cat /etc/default/useradd &lt;br /&gt;
 SHELL=/bin/bash&lt;br /&gt;
 GROUP=100&lt;br /&gt;
 HOME=/home&lt;br /&gt;
 INACTIVE=-1&lt;br /&gt;
 EXPIRE=&lt;br /&gt;
 SKEL=/etc/skel&lt;br /&gt;
 CREATE_MAIL_SPOOL=no&lt;br /&gt;
&lt;br /&gt;
===usermod===&lt;br /&gt;
User modifizieren&lt;br /&gt;
 root@zero:~# usermod -l fritz -s /bin/sh -G admin,video erwin&lt;br /&gt;
{| border=1 cellpadding=2&lt;br /&gt;
|&amp;quot;-l fritz&amp;quot;&lt;br /&gt;
|Neuer Username&lt;br /&gt;
|-&lt;br /&gt;
|&amp;quot;-s /bin/sh&amp;quot;&lt;br /&gt;
|Neue Shell&lt;br /&gt;
|-&lt;br /&gt;
|&amp;quot;-G admin, video&amp;quot;&lt;br /&gt;
|Sekunbdäre Gruppen werden zugeordnet&lt;br /&gt;
|-&lt;br /&gt;
|&amp;quot;erwin&amp;quot; &lt;br /&gt;
|Name des Users&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
===userdel===&lt;br /&gt;
User inklusive Homedirectory löschen&lt;br /&gt;
 root@zero:~# userdel -r fritz&lt;br /&gt;
&lt;br /&gt;
===passwd===&lt;br /&gt;
Rootpasswort ändern&lt;br /&gt;
 root@zero:~# passwd &lt;br /&gt;
 Geben Sie ein neues UNIX Passwort ein:'''sysadm''' &lt;br /&gt;
 Geben Sie das neue UNIX Passwort erneut ein:'''sysadm''' &lt;br /&gt;
 passwd: Passwort erfolgreich geändert&lt;br /&gt;
&lt;br /&gt;
Passwort von tux ändern&lt;br /&gt;
 root@zero:~# passwd tux&lt;br /&gt;
 Geben Sie ein neues UNIX Passwort ein:'''suxer''' &lt;br /&gt;
 Geben Sie das neue UNIX Passwort erneut ein:'''suxer'''&lt;br /&gt;
 passwd: Passwort erfolgreich geändert&lt;br /&gt;
&lt;br /&gt;
Minimale und Maximale Gültigkeit des Passwortes von tux festlegen&lt;br /&gt;
 root@zero:~# passwd -n 5 -x 120 tux&lt;br /&gt;
&lt;br /&gt;
===groupadd===&lt;br /&gt;
 root@zero:~# groupadd -f -g 2001 xinuxer&lt;br /&gt;
{| border=1 cellpadding=2&lt;br /&gt;
|&amp;quot;-f&amp;quot;&lt;br /&gt;
|Überschreibe bestehende Gruppe&lt;br /&gt;
|-&lt;br /&gt;
|&amp;quot;-g 2001&amp;quot;&lt;br /&gt;
|GID der Gruppe&lt;br /&gt;
|-&lt;br /&gt;
|&amp;quot;xinuxer&amp;quot; &lt;br /&gt;
|Name des Gruppe&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==chmod==&lt;br /&gt;
Die Syntax des Befehls chmod lautet:&lt;br /&gt;
&lt;br /&gt;
'''chmod''' WerWieWas [,WerWieWas,.....] Dateiliste&lt;br /&gt;
&lt;br /&gt;
oder&lt;br /&gt;
&lt;br /&gt;
'''chmod''' Oktalzahl Dateiliste&lt;br /&gt;
&lt;br /&gt;
Durch WerWieWas bzw. Oktalzahl wird die Rechtetabelle definiert. Innerhalb von&lt;br /&gt;
WerWieWas darf es kein Leerzeichen geben. Wer bezeichnet den Benutzerkreis,&lt;br /&gt;
dem man Rechte gibt, Wie die Art, in der die Rechte gegeben werden und Was die&lt;br /&gt;
Rechte als solche. Im einzelnen können folgende Kürzel benutzt werden:&lt;br /&gt;
&lt;br /&gt;
Für Wer kann eines der folgenden Kürzel oder eine Kombination davon stehen:&lt;br /&gt;
 u                   (user) Rechte für den Dateibesitzer&lt;br /&gt;
 g                   (group) Rechte für die Gruppe&lt;br /&gt;
 o                   (others) Rechte für alle anderen Benutzer&lt;br /&gt;
 a                   (all) Rechte für alle Benutzer&lt;br /&gt;
Für Wie steht eines der folgenden Kürzel:&lt;br /&gt;
 +                   Die Rechte werden zu den vorhandenen zusätzlich vergeben&lt;br /&gt;
 -                   Die im Folgenden genannten Rechte werden entzogen&lt;br /&gt;
 =                   Die im Folgenden genannten Rechte ersetzen die bisherigen&lt;br /&gt;
Für Was steht eines der folgenden Kürzel:&lt;br /&gt;
 r                   (read) lesen&lt;br /&gt;
 w                   (write) schreiben&lt;br /&gt;
 x                   (execute) ausführen&lt;br /&gt;
oder diese Sonderformen&lt;br /&gt;
 s                   (usersbit) Programm läuft unter der UID des Besitzers&lt;br /&gt;
 s                   (groupsbit)Programm läuft unter der GID des GRUPPE&lt;br /&gt;
 t                   (stickybit) Dateien im Verzeichnis darf nur Besitzer löschen&lt;br /&gt;
&lt;br /&gt;
===Beispiel===&lt;br /&gt;
Setze für alle Schreib- und Leserecht&lt;br /&gt;
 xinux@zero:~$ chmod a=rw test &lt;br /&gt;
 xinux@zero:~$ ls -l test &lt;br /&gt;
 -rw-rw-rw- 1 xinux xinux 0 2009-06-16 12:01 test&lt;br /&gt;
 xinux@zero:~$ &lt;br /&gt;
&lt;br /&gt;
Erteile Besitzer Ausführungsrecht&lt;br /&gt;
 xinux@zero:~$ chmod u+x test ; ls -l test &lt;br /&gt;
 -rwxrw-rw- 1 xinux xinux 0 2009-06-16 12:01 test&lt;br /&gt;
 xinux@zero:~$ &lt;br /&gt;
&lt;br /&gt;
===chmod oktale Schreibweise===&lt;br /&gt;
 Specialrights        User           Group         Other&lt;br /&gt;
 usbit gsbit sticky    r    w   x     r   w   x     r   w   x&lt;br /&gt;
   1     1      1      1    1   1     1   1   1     1   1   1&lt;br /&gt;
   0     0      0      0    0   0     0   0   0     0   0   0&lt;br /&gt;
 Oktale Wertigkeit pro Recht&lt;br /&gt;
   4     2       1     4    2   1     4   2   1     4   2   1&lt;br /&gt;
&lt;br /&gt;
===Beispiele===&lt;br /&gt;
 xinux@zero:~$ chmod 751 test ; ls -l test&lt;br /&gt;
 -rwxr-x--x 1 xinux xinux 0 2009-06-16 12:01 test&lt;br /&gt;
 xinux@zero:~$ &lt;br /&gt;
&lt;br /&gt;
 xinux@zero:~$ chmod 4770 test ; ls -l test&lt;br /&gt;
 -rwsrwx--- 1 xinux xinux 0 2009-06-16 12:01 test&lt;br /&gt;
 xinux@zero:~$ &lt;br /&gt;
&lt;br /&gt;
 xinux@zero:~$ chmod 0 test ; ls -l test &lt;br /&gt;
 ---------- 1 xinux xinux 0 2009-06-16 12:01 test&lt;br /&gt;
&lt;br /&gt;
===chmod Optionen===&lt;br /&gt;
 -c   (changes) es werden nur die Dateien angezeigt, deren Zugriffsrechte tatsächlich verändert werden&lt;br /&gt;
 -f   (silent, quiet) Fehlermeldungen wegen fehlgeschlagener Änderungsversuche werden unterdrückt&lt;br /&gt;
 -v   (verbose) alle Aktionen werden angezeigt&lt;br /&gt;
 -R   (recursive) die Zugriffsrechte aller Dateien in den Unterverzeichnissen werden ebenfalls geändert&lt;br /&gt;
&lt;br /&gt;
Theoretisch sind alle Kombinationen der Zugriffsrechte denkbar, aber der&lt;br /&gt;
Eigentümer einer Datei darf diese immer lesen, selbst wenn das Lesebit nicht&lt;br /&gt;
gesetzt ist. Genauso macht es wenig Sinn, eine gewöhnliche Textdatei als&lt;br /&gt;
ausführbar zu setzen; die Shell wird damit nichts anfangen können. Ein x für ein&lt;br /&gt;
Verzeichnis gibt an, dass in dieses gewechselt werden kann.&lt;br /&gt;
&lt;br /&gt;
Rechte sind verbindlich&lt;br /&gt;
&lt;br /&gt;
Interessant ist auch ein Konstrukt folgender Art&lt;br /&gt;
 -rwx---rwx&lt;br /&gt;
&lt;br /&gt;
das angibt, dass mit der Datei alles angestellt werden kann, außer durch Nutzer der&lt;br /&gt;
Gruppe. Versucht irgend jemand, der nicht der Gruppe des Eigentümers angehört,&lt;br /&gt;
die Datei zu modifizieren, wird ihm dies gelingen, einem Gruppenmitglied bleibt&lt;br /&gt;
dies versagt, obwohl er ja gleichzeitig ein &amp;quot;Anderer&amp;quot; ist. D.h. die Rechte der&lt;br /&gt;
Gruppe sind verbindlicher, als die Rechte der anderen!&lt;br /&gt;
&lt;br /&gt;
===Bedeutungen der Zugriffsarten===&lt;br /&gt;
====Dateien====&lt;br /&gt;
* r: Der Inhalt der Datei kann gelesen und damit auch kopiert werden. &lt;br /&gt;
 root@zero:~# cat test&lt;br /&gt;
 Dies ist eine Testdatei&lt;br /&gt;
  &lt;br /&gt;
 root@zero:~# cp test backup&lt;br /&gt;
&lt;br /&gt;
* w: Der Inhalt der Datei darf verändert werden. Ob die Datei gelöscht werden kann ist&lt;br /&gt;
keine Eigenschaft der Datei, sondern des Verzeichnisses, indem sich die Datei befindet.&lt;br /&gt;
 root@zero:~# cat &amp;gt; test&lt;br /&gt;
 Hier steht jetzt was anderes&lt;br /&gt;
 ^C&lt;br /&gt;
 root@zero:~# cat test&lt;br /&gt;
 Hier steht jetzt was anderes&lt;br /&gt;
  &lt;br /&gt;
 xinux@zero:~$ ls -ld verzeichnis/&lt;br /&gt;
 dr-xr-xr-x 2 xinux xinux 4096 2009-06-18 11:16 verzeichnis/&lt;br /&gt;
 xinux@zero:~/verzeichnis$ rm text&lt;br /&gt;
 rm: Entfernen von „text“ nicht möglich: Permission denied&lt;br /&gt;
&lt;br /&gt;
* x: Ausführrecht für Programme und Skripte&lt;br /&gt;
 xinux@zero:~$ ./programm&lt;br /&gt;
 -bash: ./programm: Permission denied&lt;br /&gt;
 xinux@zero:~$ chmod +x programm&lt;br /&gt;
 xinux@zero:~$ ./programm&lt;br /&gt;
 Test&lt;br /&gt;
  test&lt;br /&gt;
&lt;br /&gt;
====Verzeichnisse====&lt;br /&gt;
* r: Die Einträge in dem Verzeichnis sind lesbar.&lt;br /&gt;
Leserecht von verzeichnis/ entziehen&lt;br /&gt;
 xinux@zero:~$ chmod a-r verzeichnis/&lt;br /&gt;
 xinux@zero:~$ ls verzeichnis/&lt;br /&gt;
 ls: Öffnen von Verzeichnis verzeichnis/ nicht möglich: Permission denied&lt;br /&gt;
Leserecht für Benutzer und Gruppe vergeben&lt;br /&gt;
 xinux@zero:~$ chmod a+r verzeichnis/&lt;br /&gt;
 xinux@zero:~$ ls verzeichnis/&lt;br /&gt;
 text&lt;br /&gt;
&lt;br /&gt;
* w: Die Einträge in dem Verzeichnis können geändert werden. &lt;br /&gt;
Neue Datei erstellen&lt;br /&gt;
 xinux@zero:~$ touch neu&lt;br /&gt;
 xinux@zero:~$ ls neu&lt;br /&gt;
 neu&lt;br /&gt;
&lt;br /&gt;
Datei löschen&lt;br /&gt;
 xinux@zero:~$ rm neu&lt;br /&gt;
 xinux@zero:~$ ls neu&lt;br /&gt;
 ls: Zugriff auf neu nicht möglich: No such file or directory&lt;br /&gt;
&lt;br /&gt;
* x: Der Name des Verzeichnisses kann in einem Pfadnamen erscheinen.&lt;br /&gt;
Verzeichnis ohne x Recht&lt;br /&gt;
 xinux@zero:~$ chmod a-x verzeichnis/&lt;br /&gt;
Wechseln in Verzeichnis mangels x-Recht nicht möglich&lt;br /&gt;
 xinux@zero:~$ cd verzeichnis/&lt;br /&gt;
 -bash: cd: verzeichnis/: Permission denied&lt;br /&gt;
x-Recht vergeben&lt;br /&gt;
 xinux@zero:~$ chmod a+x verzeichnis/&lt;br /&gt;
damit Wechsel in Verzeichnis möglich&lt;br /&gt;
 xinux@zero:~$ cd verzeichnis/&lt;br /&gt;
 xinux@zero:~/verzeichnis$ pwd&lt;br /&gt;
 /home/xinux/verzeichnis&lt;br /&gt;
&lt;br /&gt;
====umask====&lt;br /&gt;
Neue Dateien und Verzeichnisse werden mit ein und denselben Zufriffsrechten erzeugt.&lt;br /&gt;
 xinux@zero:~$ mkdir text&lt;br /&gt;
 xinux@zero:~$ touch textdat&lt;br /&gt;
 xinux@zero:~$ ls -ld text*&lt;br /&gt;
 drwxr-xr-x 2 xinux xinux 4096 2009-06-18 11:37 text&lt;br /&gt;
 -rw-r--r-- 1 xinux xinux    0 2009-06-18 11:37 textdat&lt;br /&gt;
&lt;br /&gt;
Zuständig für dieses Verhalten ist die sogenannte umask, die oft in der Datei&lt;br /&gt;
/etc/profile auf den Wert 022 voreingestellt ist. Zusätzlich wird noch eine&lt;br /&gt;
Maximalmaske benötigt, die sich für Verzeichnisse und andere Dateien&lt;br /&gt;
unterscheidet. Die bei der Erzeugung gesetzten Rechte entstehen nun, indem von&lt;br /&gt;
der Maximalmaske der durch die umask vorgegebene Wert subtrahiert wird:&lt;br /&gt;
&lt;br /&gt;
{| border=1 cellpadding=2&lt;br /&gt;
!&lt;br /&gt;
! Dateien&lt;br /&gt;
! Verzeichnisse&lt;br /&gt;
|-&lt;br /&gt;
| Systemvorgabe&lt;br /&gt;
| 666&lt;br /&gt;
| 777&lt;br /&gt;
|-&lt;br /&gt;
| -umask&lt;br /&gt;
| 022&lt;br /&gt;
| 022&lt;br /&gt;
|-&lt;br /&gt;
| Ergebnis&lt;br /&gt;
| 644&lt;br /&gt;
| 755&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
 xinux@zero:~$ grep umask /etc/profile&lt;br /&gt;
 umask 022&lt;br /&gt;
&lt;br /&gt;
==Gruppenzugehörigkeit==&lt;br /&gt;
===newgrp===&lt;br /&gt;
Ändert die Gruppenzugehörigkeit eines Benutzers auf die angegebene Gruppe. Wenn keine Gruppe angegeben wird, wird die &lt;br /&gt;
Anmeldegruppe des Benutzers verwendet. Die neue Gruppe wird anschließend fü Zugriffskontrollen verwendet.&lt;br /&gt;
&lt;br /&gt;
 newgrp Gruppenname&lt;br /&gt;
&lt;br /&gt;
 root@zero:~# newgrp hacker&lt;br /&gt;
 root@zero:~# id&lt;br /&gt;
 uid=0(root) gid=1006(hacker) Gruppen=0(root),1006(hacker)&lt;br /&gt;
&lt;br /&gt;
===chgrp===&lt;br /&gt;
Verändert die Besitzugehörigkeit zu der angegebenen Gruppe&lt;br /&gt;
&lt;br /&gt;
 chgrp [Optionen] Gruppe Datei(en)&lt;br /&gt;
&lt;br /&gt;
Optionen:&lt;br /&gt;
 -c Zeigt Veränderungen an&lt;br /&gt;
 -f Unterdrückt die meisten Fehlermeldungen&lt;br /&gt;
 -R Verändert Dateien und Verzeichnisse rekursiv&lt;br /&gt;
 -v Gibt geschwätzige Ausgabe aus.&lt;br /&gt;
&lt;br /&gt;
 root@zero:~# ls -l&lt;br /&gt;
 ...&lt;br /&gt;
 d-wx--x--x  3 root root 4096 2009-06-18 13:34 verzeichnis&lt;br /&gt;
 &lt;br /&gt;
 root@zero:~# chgrp -R xinux verzeichnis/&lt;br /&gt;
 root@zero:~# ls -l&lt;br /&gt;
 ...&lt;br /&gt;
 d-wx--x--x  3 root xinux 4096 2009-06-18 13:34 verzeichnis&lt;br /&gt;
&lt;br /&gt;
 xinux@zero:~$ cd /root/verzeichnis/&lt;br /&gt;
 xinux@zero:/root/verzeichnis$ pwd&lt;br /&gt;
 /root/verzeichnis&lt;br /&gt;
&lt;br /&gt;
===chown===&lt;br /&gt;
Ändert den Eigentümer von einer oder mehreren Dateien in den angegebenen Benutzer. &lt;br /&gt;
chown erlaubt ebenfalls das Ändern der Gruppeneigentümreschaft. Nur der aktuelle Eigentümer einer&lt;br /&gt;
Datei oder der Superuser (root) darf die Eigentumsverhältnisse ändern.&lt;br /&gt;
&lt;br /&gt;
 chown [Optionen] Benutzer(:Gruppe) Dateien&lt;br /&gt;
&lt;br /&gt;
Optionen:&lt;br /&gt;
 -c Gibt Informationen über die veränderten Dateien aus&lt;br /&gt;
 --dereference Symbolischen Links folgen&lt;br /&gt;
 -v Gibt Informationen über alle Dateien aus, die chown zu ändern versucht, egal, ob die Änderung erfolgt ist oder nicht&lt;br /&gt;
 -R Geht rekursiv durch alle Unterverzeichnisse und führt die Änderungen durch. &lt;br /&gt;
&lt;br /&gt;
 root@zero:~# chown -R xinux.xinux verzeichnis/&lt;br /&gt;
 root@zero:~# ls -l&lt;br /&gt;
 insgesamt 12&lt;br /&gt;
 drwx------ 13 root  root  4096 2009-04-21 15:11 profile&lt;br /&gt;
 --w-------  1 root  root     0 2009-06-18 11:13 test&lt;br /&gt;
 -rw-r--r--  1 root  root    40 2009-06-18 12:04 text&lt;br /&gt;
 drwxrwx--x  3 xinux xinux 4096 2009-06-18 13:39 verzeichnis&lt;br /&gt;
 &lt;br /&gt;
 root@zero:~# chown -R -c xinux.xinux verzeichnis/&lt;br /&gt;
 &lt;br /&gt;
 root@zero:~# chown -R -v xinux.xinux verzeichnis/&lt;br /&gt;
 Eigentümer von „verzeichnis/01“ als xinux:xinux erhalten&lt;br /&gt;
 Eigentümer von „verzeichnis/test“ als xinux:xinux erhalten&lt;br /&gt;
 Eigentümer von „verzeichnis/“ als xinux:xinux erhalten&lt;br /&gt;
&lt;br /&gt;
==Eingabe/Ausgabe==&lt;br /&gt;
Standardeingabe (0): Laufende Programme erwarten von hier ihre Eingaben (normalerweise handelt es sich um die Tastatur).&lt;br /&gt;
&lt;br /&gt;
Standardausgabe (1): Programme schreiben auf diese ihre Ausgaben (Bildschirm).&lt;br /&gt;
&lt;br /&gt;
Standardfehlerausgabe (2) : Fehlerausgaben landen hier (Bildschirm, aber nur die aktive Konsole).&lt;br /&gt;
&lt;br /&gt;
[[Bild:std.jpg]]&lt;br /&gt;
&lt;br /&gt;
===cat===&lt;br /&gt;
Das Programm cat liest von STDIN und gibt es STDOUT wieder aus&lt;br /&gt;
&lt;br /&gt;
Einlesen der Datei text&lt;br /&gt;
 root@zero:~# cat &amp;lt; text&lt;br /&gt;
 wichtig&lt;br /&gt;
&lt;br /&gt;
Schreiben in die Datei text, dies überschreibt den bisherigen Inhalt der Datei&lt;br /&gt;
 root@zero:~# cat &amp;gt; text&lt;br /&gt;
 sogar noch wichtiger &lt;br /&gt;
 &lt;br /&gt;
Ausgeben der Datei text&lt;br /&gt;
 root@zero:~# cat text &lt;br /&gt;
 sogar noch wichtiger&lt;br /&gt;
&lt;br /&gt;
Lesen aus der Datei text und schreiben in die Datei neuertext&lt;br /&gt;
 root@zero:~# cat &amp;lt; text &amp;gt; neuertext&lt;br /&gt;
 root@zero:~# cat neuertext&lt;br /&gt;
 sogar noch wichtiger&lt;br /&gt;
&lt;br /&gt;
Anhängen der Ausgabe von date an die Datei neuertext&lt;br /&gt;
 root@zero:~# date &amp;gt;&amp;gt; neuertext&lt;br /&gt;
 root@zero:~# cat neuertext&lt;br /&gt;
 sogar noch wichtiger&lt;br /&gt;
 Do 18. Jun 14:08:58 CEST 2009&lt;br /&gt;
&lt;br /&gt;
Umleiten des Standardfehlerkanals nach error&lt;br /&gt;
 root@zero:~# rm sux 2&amp;gt; error&lt;br /&gt;
 root@zero:~# more error&lt;br /&gt;
 rm: Entfernen von „sux“ nicht möglich: No such file or directory&lt;br /&gt;
&lt;br /&gt;
===Umleitungen===&lt;br /&gt;
Nacheinander auszuführende Kommandos&lt;br /&gt;
 root@zero:~# pwd; date&lt;br /&gt;
 /root&lt;br /&gt;
 Do 18. Jun 14:13:05 CEST 2009&lt;br /&gt;
 &lt;br /&gt;
Übergeben der Ausgabe von tail als Eingabe von grep mit Hilfe der Pipe &amp;quot;|&amp;quot;&lt;br /&gt;
 root@zero:~# tail /var/log/auth.log | grep xinux&lt;br /&gt;
 Jun 18 13:52:33 zero nss_wins[11433]: pam_unix(login:session): session closed for user xinux&lt;br /&gt;
&lt;br /&gt;
Übergeben der letzten 100 Zeilen von syslog als Eingabe von grep&lt;br /&gt;
 root@zero:~# tail /var/log/syslog -n 100 | grep error&lt;br /&gt;
 Jun 18 09:30:54 zero kernel: [154384.692135] end_request: I/O error, dev fd0, sector 0&lt;br /&gt;
 Jun 18 09:30:54 zero kernel: [154384.712137] end_request: I/O error, dev fd0, sector 0&lt;br /&gt;
&lt;br /&gt;
==tr==&lt;br /&gt;
tr ist ein Programm um Zeichen zu übersetzen. Dies betrifft nur die Ausgabe, die Datei selbst bleibt unverändert.&lt;br /&gt;
&lt;br /&gt;
Ersetzt Kleinbuchstaben durch Großbuchstaben aus der Datei text&lt;br /&gt;
 root@zero:~# tr &amp;quot;a-z&amp;quot; &amp;quot;A-Z&amp;quot; &amp;lt; text&lt;br /&gt;
 SOGAR NOCH WICHTIGER&lt;br /&gt;
 123&lt;br /&gt;
 34&lt;br /&gt;
 4711&lt;br /&gt;
 TEST&lt;br /&gt;
&lt;br /&gt;
Ersetzt alle Zahlen durch X&lt;br /&gt;
 root@zero:~# tr &amp;quot;0-9&amp;quot; &amp;quot;X&amp;quot; &amp;lt; text&lt;br /&gt;
 sogar noch wichtiger&lt;br /&gt;
 XXX&lt;br /&gt;
 XX&lt;br /&gt;
 XXXX&lt;br /&gt;
 test&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
 root@zero:~# cat &amp;gt; test&lt;br /&gt;
 +++++&lt;br /&gt;
 ###&lt;br /&gt;
 1111&lt;br /&gt;
&lt;br /&gt;
-s löscht mehrfach kommende Zeichen&lt;br /&gt;
 root@zero:~# tr '''-s''' &amp;quot;+&amp;quot; &amp;lt; test&lt;br /&gt;
 +&lt;br /&gt;
 ###&lt;br /&gt;
 1111&lt;br /&gt;
&lt;br /&gt;
-d löscht vorkommende Zeichen &lt;br /&gt;
 root@zero:~# tr '''-d''' &amp;quot;#&amp;quot; &amp;lt; test&lt;br /&gt;
 +++++ &lt;br /&gt;
 &lt;br /&gt;
 1111&lt;br /&gt;
&lt;br /&gt;
==cut==&lt;br /&gt;
Spalten aus einer Datei schneiden. Dies betrifft nur die Ausgabe, die Datei selbst bleibt unverändert.&lt;br /&gt;
 &lt;br /&gt;
Schneidet die erste Spalte aus, der Delimiter ist : &lt;br /&gt;
 root@zero:~# cut -f 1 -d : /etc/passwd&lt;br /&gt;
 root&lt;br /&gt;
 daemon&lt;br /&gt;
 bin&lt;br /&gt;
 ...&lt;br /&gt;
 xinux&lt;br /&gt;
&lt;br /&gt;
 root@zero:~# more test&lt;br /&gt;
 1234#5678#9999&lt;br /&gt;
 &lt;br /&gt;
Schneidet die zweite Spalte aus, der Delimiter ist #&lt;br /&gt;
 root@zero:~# cut -f 2 -d &amp;quot;#&amp;quot; &amp;lt; test&lt;br /&gt;
 5678&lt;br /&gt;
&lt;br /&gt;
Schneidet bis zum 3 Zeichen ab&lt;br /&gt;
 root@zero:~$ echo S01policykit | cut -c 4-&lt;br /&gt;
 policykit&lt;br /&gt;
&lt;br /&gt;
==expand==&lt;br /&gt;
Ersetzt Tabulatorzeichen durch Folgen von Leerzeichen und schreibt das Ergebnis auf die Standardausgabe&lt;br /&gt;
 root@zero:~# expand /etc/samba/smb.conf&lt;br /&gt;
 ...&lt;br /&gt;
&lt;br /&gt;
==fmt==&lt;br /&gt;
#Setzt den Text der Dateien im Blocksatz der angegebenen Breite durch Auffüllen von Zeilen und Entfernen von Zeilenwechseln.&lt;br /&gt;
Standardgemäß werden Leerzeilen, die Position von Leerzeichen und der Einzug am Zeilenanfang erhalten. fmt versucht, &lt;br /&gt;
Zeilenumbrüche an Satzenden durchzuführen sowie sie nach dem ersten oder vor dem letzten Wort eines Satzes zu vermeiden. &lt;br /&gt;
 &lt;br /&gt;
 fmt [Optionen] [Dateien]&lt;br /&gt;
&lt;br /&gt;
Optionen&lt;br /&gt;
&lt;br /&gt;
* -p ''Präfix'': Formatiert nur Zeilen, die mit ''Präfix'' anfangen&lt;br /&gt;
 root@zero:/tmp# fmt -p '#' text&lt;br /&gt;
 #Setzt den Text der Dateien im Blocksatz der angegebenen Breite durch&lt;br /&gt;
 #Auffüllen von Zeilen und Entfernen von Zeilenwechseln.  Standardgemäß&lt;br /&gt;
 #werden Leerzeilen, die Position von Leerzeichen und der Einzug am&lt;br /&gt;
 #Zeilenanfang erhalten. fmt versucht,&lt;br /&gt;
 Zeilenumbrüche an Satzenden durchzuführen sowie sie nach dem ersten oder vor dem letzten Wort eines Satzes zu vermeiden.&lt;br /&gt;
&lt;br /&gt;
* -u : Erzwingt genau ein Leerzeichen zwischen Wörtern und zwei Leerzeichen zwischen Sätzen&lt;br /&gt;
&lt;br /&gt;
* -w ''Breite'': Setzt die Ausgabebreite auf ''Breite''&lt;br /&gt;
 root@zero:/tmp# fmt -w 30 text&lt;br /&gt;
 #Setzt den Text der Dateien&lt;br /&gt;
 im Blocksatz der angegebenen&lt;br /&gt;
 Breite durch Auffüllen&lt;br /&gt;
 von Zeilen und Entfernen&lt;br /&gt;
 von Zeilenwechseln.&lt;br /&gt;
 #Standardgemäß werden&lt;br /&gt;
 Leerzeilen, die Position von&lt;br /&gt;
 Leerzeichen und der Einzug am&lt;br /&gt;
 Zeilenanfang erhalten. fmt&lt;br /&gt;
 versucht, Zeilenumbrüche&lt;br /&gt;
 an Satzenden durchzuführen&lt;br /&gt;
 sowie sie nach dem ersten&lt;br /&gt;
 oder vor dem letzten Wort&lt;br /&gt;
 eines Satzes zu vermeiden.&lt;br /&gt;
&lt;br /&gt;
==join==&lt;br /&gt;
Führt die Zeilen zweier sortierter Dateien anhand von '''Übereinstimmungen''' in einem gemeinsamen Feld zusammen.&lt;br /&gt;
&lt;br /&gt;
 root@zero:~# more name&lt;br /&gt;
 1. karl&lt;br /&gt;
 2. heinz&lt;br /&gt;
 3. hans&lt;br /&gt;
 4. otto&lt;br /&gt;
 root@zero:~# more tel&lt;br /&gt;
 1. 1234&lt;br /&gt;
 2. 4321&lt;br /&gt;
 3. 222&lt;br /&gt;
 4. 121212&lt;br /&gt;
 root@zero:~# join name tel &amp;gt; telefonbuch&lt;br /&gt;
 root@zero:~# more telefonbuch&lt;br /&gt;
 1. karl 1234&lt;br /&gt;
 2. heinz 4321&lt;br /&gt;
 3. hans 222&lt;br /&gt;
 4. otto 121212&lt;br /&gt;
&lt;br /&gt;
 root@zero:~# join -t : /etc/passwd /etc/shadow&lt;br /&gt;
 ....&lt;br /&gt;
 daemon:x:1:1:daemon:/usr/sbin:/bin/sh:*:14181:0:99999:7:::&lt;br /&gt;
 bin:x:2:2:bin:/bin:/bin/sh:*:14181:0:99999:7:::&lt;br /&gt;
 sys:x:3:3:sys:/dev:/bin/sh:*:14181:0:99999:7:::&lt;br /&gt;
 sync:x:4:65534:sync:/bin:/bin/sync:*:14181:0:99999:7:::&lt;br /&gt;
 ...&lt;br /&gt;
&lt;br /&gt;
join in dat1 nach Feld 3 und in dat2 nach Feld 2&lt;br /&gt;
 thomas@lydia:~$ cat dat1 &lt;br /&gt;
 hugo:ps:1111&lt;br /&gt;
 erwin:zw:2222&lt;br /&gt;
 karl:sb:3333&lt;br /&gt;
 rudi:kl:4444&lt;br /&gt;
 thomas@lydia:~$ cat dat2&lt;br /&gt;
 blau:1111:svn&lt;br /&gt;
 grün:2222:fcs&lt;br /&gt;
 gelb:3333:fch&lt;br /&gt;
 rot:4444:fck&lt;br /&gt;
 thomas@lydia:~$ join -t : -1 3 -2 2 dat1 dat2 &lt;br /&gt;
 1111:hugo:ps:blau:svn&lt;br /&gt;
 2222:erwin:zw:grün:fcs&lt;br /&gt;
 3333:karl:sb:gelb:fch&lt;br /&gt;
 4444:rudi:kl:rot:fck&lt;br /&gt;
&lt;br /&gt;
==nl==&lt;br /&gt;
Nummeriert die Zeilen in einer Datei.&lt;br /&gt;
&lt;br /&gt;
 root@zero:~# nl /etc/passwd                                                   &lt;br /&gt;
     1  root:x:0:0:root:/root:/bin/bash                                       &lt;br /&gt;
     2  daemon:x:1:1:daemon:/usr/sbin:/bin/sh                                 &lt;br /&gt;
     3  bin:x:2:2:bin:/bin:/bin/sh                                            &lt;br /&gt;
     4  sys:x:3:3:sys:/dev:/bin/sh                                            &lt;br /&gt;
     5  sync:x:4:65534:sync:/bin:/bin/sync&lt;br /&gt;
     ...&lt;br /&gt;
Nummereriet mit führenden Nullen der Separatir ist ein :&lt;br /&gt;
 root@zero:~# nl -s : -n rz dat1&lt;br /&gt;
&lt;br /&gt;
==od==&lt;br /&gt;
Gibt Dateien im Oktal und anderen Formaten aus.&lt;br /&gt;
&lt;br /&gt;
 od [Optionen] Datei&lt;br /&gt;
&lt;br /&gt;
* -j ''Bytes'': Überspringt die Anzahl ''Bytes'' einer Datei&lt;br /&gt;
* -N ''Bytes'': Gibt nur die Anzahl ''Bytes'' aus&lt;br /&gt;
* -c : Gebe ASCII Zeichen aus&lt;br /&gt;
* -f : Gebe Fließkommazahlen aus&lt;br /&gt;
* -i : Gebe Dezimal Integer aus&lt;br /&gt;
* -l : Gebe Dezimal Long aus&lt;br /&gt;
* -o : Gebe Oktal 2 Byte Einheiten aus&lt;br /&gt;
* -s : Gebe Dezimal 2 Byte Einheiten aus&lt;br /&gt;
* -x : Gebe Hexadezimale 2 Byte einheiten aus&lt;br /&gt;
&lt;br /&gt;
Beispiele&lt;br /&gt;
&lt;br /&gt;
Gebe Master Boot Record (die ersten 512 Byte der Festplatte /dev/sda) als Hexadezimal aus&lt;br /&gt;
 root@zero:~# od '''-x -N''' 512 /dev/sda&lt;br /&gt;
 0000000 48eb 1090 d08e 00bc b8b0 0000 d88e c08e&lt;br /&gt;
 0000020 befb 7c00 00bf b906 0200 a4f3 21ea 0006&lt;br /&gt;
 0000040 be00 07be 0438 0b75 c683 8110 fefe 7507&lt;br /&gt;
 0000060 ebf3 b416 b002 bb01 7c00 80b2 748a 0203&lt;br /&gt;
 0000100 00ff 2000 0001 0000 0200 90fa f690 80c2&lt;br /&gt;
 ...&lt;br /&gt;
&lt;br /&gt;
Schreibe &amp;quot;suxer&amp;quot; in die Datei test&lt;br /&gt;
 root@zero:~# echo &amp;quot;suxer&amp;quot; &amp;gt; test&lt;br /&gt;
Ausgabe Hexadezimal&lt;br /&gt;
 root@zero:~# od -x test&lt;br /&gt;
 0000000 7573 6578 0a72&lt;br /&gt;
 0000006&lt;br /&gt;
&lt;br /&gt;
Ausgabe ASCII Zeichen&lt;br /&gt;
 root@zero:~# od -c test&lt;br /&gt;
 0000000   s   u   x   e   r  \n&lt;br /&gt;
 0000006&lt;br /&gt;
&lt;br /&gt;
==paste==&lt;br /&gt;
Fügt die Zeilen von zwei oder mehr Dateien horizontal zusammen&lt;br /&gt;
 root@zero:~# paste name tel&lt;br /&gt;
 1. karl 1. 1234&lt;br /&gt;
 2. heinz        2. 4321&lt;br /&gt;
 3. hans 3. 222&lt;br /&gt;
 4. otto 4. 121212&lt;br /&gt;
&lt;br /&gt;
==pr==&lt;br /&gt;
Bereitet Textdateien zum Drucken vor.&lt;br /&gt;
&lt;br /&gt;
 root@zero:~# echo &amp;quot;Plan für heute&amp;quot; &amp;gt; dokument&lt;br /&gt;
 root@zero:~# more dokument&lt;br /&gt;
 Plan für heute&lt;br /&gt;
 root@zero:~# pr dokument   &lt;br /&gt;
  &lt;br /&gt;
 &lt;br /&gt;
 2009-06-19 12:44                    dokument                     Seite 1&lt;br /&gt;
 &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
 Plan für heute&lt;br /&gt;
&lt;br /&gt;
Anmerkung Ausmaße der Bildschirmausgabe wie eine Druckseite.&lt;br /&gt;
&lt;br /&gt;
==sed==&lt;br /&gt;
streaming editor. Mit sed ist es möglich, den Inhalt einer Datei automatisch (nicht interaktiv) zu&lt;br /&gt;
bearbeiten. Wie unter Linux üblich, wird auch hier der Text nicht wirklich verändert sondern die &lt;br /&gt;
Änderung erfolgt über die Standardausgabe, die wieder umgeleitet werden kann. Die Syntax ist ähnlich &lt;br /&gt;
des ex modus von vi. Reguläre Ausdrücke können nach Belieben benutzt werden. &lt;br /&gt;
&lt;br /&gt;
Optionen:&lt;br /&gt;
 -e Zeichenkette  wendet die Editorbefehle aus Zeichenkette auf den Text an.&lt;br /&gt;
 -n gibt nur die Zeilen aus, die explizit (durch &amp;quot;p&amp;quot; ausgedruckt werden sollen&lt;br /&gt;
&lt;br /&gt;
Gibt die dritte Zeile der Datei text aus&lt;br /&gt;
 root@zero:~# sed -n &amp;quot;3p&amp;quot; text&lt;br /&gt;
 34&lt;br /&gt;
&lt;br /&gt;
Gibt die erste bis dritte Zeile von text aus&lt;br /&gt;
 root@zero:~# sed -n &amp;quot;1,3p&amp;quot; text&lt;br /&gt;
 sogar noch wichtiger&lt;br /&gt;
 123&lt;br /&gt;
 34&lt;br /&gt;
&lt;br /&gt;
Löschen der Zeile mit &amp;quot;sogar&amp;quot;&lt;br /&gt;
 root@zero:~# sed -e '/sogar/d' &amp;lt; text&lt;br /&gt;
 123&lt;br /&gt;
 34&lt;br /&gt;
 4711&lt;br /&gt;
 test&lt;br /&gt;
&lt;br /&gt;
und schreiben in text2&lt;br /&gt;
 root@zero:~# sed -e '/sogar/d' &amp;lt; text &amp;gt; text2&lt;br /&gt;
 root@zero:~# more text2&lt;br /&gt;
 123&lt;br /&gt;
 34&lt;br /&gt;
 4711&lt;br /&gt;
 test&lt;br /&gt;
&lt;br /&gt;
Alle 3en durch DREI ersetzen&lt;br /&gt;
 root@zero:~# sed -e 's/3/DREI/g' &amp;lt; text&lt;br /&gt;
 sogar noch wichtiger&lt;br /&gt;
 12DREI&lt;br /&gt;
 DREI4&lt;br /&gt;
 4711&lt;br /&gt;
 test&lt;br /&gt;
&lt;br /&gt;
==wc==&lt;br /&gt;
Zählt die Anzahl von Zeichen, Wörter oder Zeilen&lt;br /&gt;
&lt;br /&gt;
Optionen&lt;br /&gt;
* -m : Zählt die Anzahl der Zeichen&lt;br /&gt;
 root@zero:~# more name&lt;br /&gt;
 1. karl&lt;br /&gt;
 2. heinz&lt;br /&gt;
 3. hans&lt;br /&gt;
 4. otto&lt;br /&gt;
 root@zero:~# wc '''-m''' tel&lt;br /&gt;
 33 tel&lt;br /&gt;
&lt;br /&gt;
* -w : Zählt die Anzahl der Wörter (einschließlich Zahlen und andere Zeichen)&lt;br /&gt;
 root@zero:~# wc '''-w''' name&lt;br /&gt;
 8 name&lt;br /&gt;
&lt;br /&gt;
* -l : Zählt die Anzahl der Zeilen&lt;br /&gt;
 root@zero:~# wc '''-l''' name&lt;br /&gt;
 4 name&lt;br /&gt;
&lt;br /&gt;
==Sort==&lt;br /&gt;
&lt;br /&gt;
Zum sortieren von Dateien nach Feldern benutzt man sort. sort liest von STDIN man kann die Datei aber auch als Argument übergeben. &lt;br /&gt;
&lt;br /&gt;
Sortiert nach dem ersten Feld&lt;br /&gt;
  root@zero:~# sort /etc/passwd 	 &lt;br /&gt;
&lt;br /&gt;
Es wird geprüft ob die Datei schon sortiert ist &lt;br /&gt;
 root@zero:~# sort -c /etc/passwd 	&lt;br /&gt;
&lt;br /&gt;
Sortiert nach dem ersten Feld (Richtungsumkehr)  &lt;br /&gt;
 root@zero:~#  sort -r /etc/passwd&lt;br /&gt;
&lt;br /&gt;
Führende Leersortzeichen werden ignoriert &lt;br /&gt;
 root@zero:~# sort -b /etc/passwd&lt;br /&gt;
&lt;br /&gt;
Ausgabe  in die Datei pass&lt;br /&gt;
 root@zero:~# sort  /etc/passwd   -o pass	 &lt;br /&gt;
&lt;br /&gt;
nimmt : als Trenner -Voreinstellung ist TAB&lt;br /&gt;
  root@zero:~# sort -t : /etc/passwd&lt;br /&gt;
&lt;br /&gt;
sortiert nach dem  3 Feld,  der Trenner ist : und es wird nummerisch sortiert&lt;br /&gt;
&lt;br /&gt;
 root@zero:~# sort -t: +2 -n /etc/passwd		&lt;br /&gt;
&lt;br /&gt;
sortiert nach dem  3 Feld,  der Trenner ist : und es wird nummerisch sortiert&lt;br /&gt;
					&lt;br /&gt;
 root@zero:~# sort -t: -k 3 -n /etc/passwd&lt;br /&gt;
&lt;br /&gt;
Sortiert nach dem  3  bis zum 5 Feld, der Trenner ist : und es wird nummerisch sortiert&lt;br /&gt;
	&lt;br /&gt;
 root@zero:~# sort -t: -k 3,5 -n /etc/passwd	&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==INodes==&lt;br /&gt;
Inode (oder I-Node) wird im Deutschen am besten als Informationsknoten oder&lt;br /&gt;
Indexeintrag bezeichnet. Er fasst alle Attribute einer Datei zusammen außer dem Inhalt&lt;br /&gt;
und dem Namen der Datei.&lt;br /&gt;
&lt;br /&gt;
===Daten===&lt;br /&gt;
{| border=1 cellpadding=2&lt;br /&gt;
|type&lt;br /&gt;
|Der Typ der Datei wird als einzelner Buchstabe angezeigt. Der Typ einer Datei wird beim Anlegen der Datei festgelegt&lt;br /&gt;
|-&lt;br /&gt;
|Permissions &lt;br /&gt;
|Die Zugriffsrechte der Datei werden in den 12 Bit sstrwxrwxrwx abgespeichert.Wenn sie gesetzt sind, werden sie bei &lt;br /&gt;
der Ausgabe an Stelle der x-Rechte ausgegeben. Die Zugriffsrechte können mit dem Kommando chmod verändert werden.&lt;br /&gt;
|-&lt;br /&gt;
|link count&lt;br /&gt;
|In UNIX kann eine Datei mehr als einen Namen haben. Der Link Count gibt die Anzahl der Namen einer Datei an. Er kann&lt;br /&gt;
mit dem Kommando ln erhöht und dem Kommando rm erniedrigt werden.&lt;br /&gt;
|-&lt;br /&gt;
|owner&lt;br /&gt;
|Für den Dateieigentümer gelten die in der ersten rwx-Gruppe festgelegten Zugriffsrechte. Standardmäßig ist der &lt;br /&gt;
Eigentümer einer Datei derjenige Benutzer, der die Datei angelegt hat.&lt;br /&gt;
|-&lt;br /&gt;
|group&lt;br /&gt;
|Für Benutzer, die in der gleichen Gruppe sind, der die Datei angehört, gelten die in der zweiten rwx-Gruppe festgelegten&lt;br /&gt;
Zugriffsrechte. In System V gehört eine Datei standardmäßig der Gruppe an, in der der anlegende Benutzer gerade ist.&lt;br /&gt;
|-&lt;br /&gt;
|size&lt;br /&gt;
|Bei normalen Dateien und Verzeichnissen gibt diese Information die Länge der Datei in Byte an.&lt;br /&gt;
|-&lt;br /&gt;
|access time&lt;br /&gt;
|Die Zugriffszeit gibt den Zeitpunkt des letzten Lesezugriffes auf eine Datei an. Aus Effizienzgründen wird die &lt;br /&gt;
Zugriffszeit an Verzeichnissen nicht gesetzt, wenn ein Verzeichnis durchsucht wird, obwohl man dies erwarten könnte. ''(ls -l --time=atime)''&lt;br /&gt;
|-&lt;br /&gt;
|modification time&lt;br /&gt;
|Die Modifikationszeit gibt die Zeit des letzten Schreibzugriffes auf die Daten der Datei an. Intern speichert UNIX &lt;br /&gt;
die Zeit als Sekunden seit Beginn des Jahres 1970 und in GMT ab. Für die Ausgabe wird dies in ein besser lesbares &lt;br /&gt;
Format in der lokalen Zeitzone umgewandelt. ''(ls -l)''&lt;br /&gt;
|-&lt;br /&gt;
|change time &lt;br /&gt;
|Die Veränderungszeit gibt das Datum der letzten Statusänderung der Datei an. Sie wird immer dann gesetzt, wenn die &lt;br /&gt;
Informationen über die Datei sich ändern (Datum der Erzeugung wird nicht gespeichert) ''(ls -lc)''&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
===Dateiarten===&lt;br /&gt;
{| border=1 cellpadding=2&lt;br /&gt;
!Zeichen&lt;br /&gt;
!Typ&lt;br /&gt;
!Zweck&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;nowiki&amp;gt;-&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
|file&lt;br /&gt;
|normale Datei&lt;br /&gt;
|-&lt;br /&gt;
|d&lt;br /&gt;
|directory&lt;br /&gt;
|Verzeichnis&lt;br /&gt;
|-&lt;br /&gt;
|b&lt;br /&gt;
|block device&lt;br /&gt;
|Gerätedatei&lt;br /&gt;
|-&lt;br /&gt;
|c&lt;br /&gt;
|character device&lt;br /&gt;
|Gerätedatei&lt;br /&gt;
|-&lt;br /&gt;
|l&lt;br /&gt;
|link&lt;br /&gt;
|Querverweis&lt;br /&gt;
|-&lt;br /&gt;
|p&lt;br /&gt;
|named pipe&lt;br /&gt;
|Benannte Pipeline&lt;br /&gt;
|-&lt;br /&gt;
|s&lt;br /&gt;
|socket&lt;br /&gt;
|Netzwerkverbindung&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
====Normale Dateien====&lt;br /&gt;
Unter einer normalen Datei versteht man die Ansammlung von Daten. Dies kann ein Text, Programm, Bild oder sonstiges sein. &lt;br /&gt;
Beispiel&lt;br /&gt;
 root@zero:~# ls -l text | cut -c 1&lt;br /&gt;
 -&lt;br /&gt;
&lt;br /&gt;
====Verzeichnisse====&lt;br /&gt;
Dateien werden in Verzeichnissen gespeichert, nur so ist eine Ordnung möglich. &lt;br /&gt;
 root@zero:~# mkdir -v Ordner&lt;br /&gt;
 mkdir: Verzeichnis „Ordner“ angelegt&lt;br /&gt;
 &lt;br /&gt;
 root@zero:~# ls -ld Ordner | cut -c 1&lt;br /&gt;
 d&lt;br /&gt;
&lt;br /&gt;
====Gerätedateien (Block und Char)====&lt;br /&gt;
Gerätedateien ermöglichen Anwendungsprogrammen unter Benutzung des  Kernels den Zugriff auf die Hardwarekomponenten des Systems. Ansprechbar über Major und Minor Nummern &lt;br /&gt;
&lt;br /&gt;
Beispiele&lt;br /&gt;
&lt;br /&gt;
Sicherung des Master Boot Records der ersten Festplatte&lt;br /&gt;
 root@zero:~# dd if=/dev/sda of=/tmp/mbr.img bs=512 count=1&lt;br /&gt;
&lt;br /&gt;
Block Device &lt;br /&gt;
 root@zero:~# ls -l /dev/sda | cut -c 1 &lt;br /&gt;
 b&lt;br /&gt;
&lt;br /&gt;
Character Device &lt;br /&gt;
 root@zero:~# ls -l /dev/ttyS0  | cut -c 1 &lt;br /&gt;
 c&lt;br /&gt;
&lt;br /&gt;
====Named Pipes====&lt;br /&gt;
Benannte Pipes (Named Pipes) können dagegen auch zur Kommunikation zwischen Prozessen eingesetzt werden, die nicht miteinander&lt;br /&gt;
verwandt sind und sich darüber hinaus auf unterschiedlichen Rechnern innerhalb eines Netzwerkes befinden dürfen. Sie sind &lt;br /&gt;
flexibler als anonyme Pipes und eignen sich für sogenannte Client-Server-Anwendungen (es lassen sich auch RPCs realisieren).&lt;br /&gt;
Benannte Pipes ermöglichen die gleichzeitige Kommunikation in beide Richtungen, das heißt, Daten können im Vollduplexbetrieb &lt;br /&gt;
zwischen den Prozessen ausgetauscht werden.&lt;br /&gt;
 &lt;br /&gt;
Erstelle Named Pipe mit Namen /tmp/roehre. Schreibe &amp;quot;hallo welt&amp;quot; in die Pipe und bleibe&lt;br /&gt;
 xinux@zero:~$ mkfifo /tmp/roehre&lt;br /&gt;
 xinux@zero:~$ echo hallo welt &amp;gt; /tmp/roehre &lt;br /&gt;
&lt;br /&gt;
Gebe Inhalt der Pipe mit cat aus&lt;br /&gt;
 root@zero:~# cat &amp;lt; /tmp/roehre &lt;br /&gt;
 hallo welt&lt;br /&gt;
 root@zero:~# ls -l /tmp/roehre | cut -c 1&lt;br /&gt;
 p&lt;br /&gt;
&lt;br /&gt;
====Sockets====&lt;br /&gt;
Schnittstelle um es vernetzten Rechnern zu ermöglichen, miteinander zu kommunizieren.&lt;br /&gt;
&lt;br /&gt;
 root@lydia:~# netstat  -lnxp | tail -1&lt;br /&gt;
  unix  2 [ ACC ] STREAM HÖRT 21951 6646/nm-applet /tmp/orbit-thomas/linc-19f6-0-2b9b81095cede&lt;br /&gt;
&lt;br /&gt;
 root@lydia:~# ls -l /tmp/orbit-thomas/linc-19f6-0-2b9b81095cede  | cut -c 1 &lt;br /&gt;
 s&lt;br /&gt;
&lt;br /&gt;
====Links====&lt;br /&gt;
Bei Links handelt es sich um symbolische Verweise auf andere Dateien&lt;br /&gt;
&lt;br /&gt;
'''Softlink'''&lt;br /&gt;
Ein Softlink ist eine Datei die nur auf den Namen einer anderen Datei verweist. Wenn die Originaldatei gelöscht wird, zeigt &lt;br /&gt;
der Link ins Leere. &lt;br /&gt;
&lt;br /&gt;
 ln -s datei softlink&lt;br /&gt;
&lt;br /&gt;
{| border=1 cellpadding=2&lt;br /&gt;
| Vorteile&lt;br /&gt;
| Symbolische Links können auch auf Verzeichnisse angelegt werden&amp;lt;br&amp;gt;Sie sind partitionsübergreifend&amp;lt;br&amp;gt;Man kann sie auf Dateien anlegen, die noch nicht existieren&lt;br /&gt;
|-&lt;br /&gt;
| Nachteile&lt;br /&gt;
| Wenn das Original gelöscht ist, ist kein Zugriff mehr möglich&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Beispiel&lt;br /&gt;
 root@zero:~# ln -s text verweis&lt;br /&gt;
 root@zero:~# ls -l verweis&lt;br /&gt;
 lrwxrwxrwx 1 root root 4 2009-06-18 15:48 verweis -&amp;gt; text&lt;br /&gt;
&lt;br /&gt;
'''Hardlinks'''&lt;br /&gt;
 ln datei hardlink&lt;br /&gt;
Eigentlich ist jede Datei ein Hardlink. Ein Hardlink ist ein Verzeichniseintrag,&lt;br /&gt;
der auf eine Inode verweist. Beim Erzeugen einer Datei verweist ein Eintrag auf&lt;br /&gt;
eine Inode. Man kann dann weitere Verweise erzeugen. Der Linkcounter wird&lt;br /&gt;
jeweils um 1 erhöht. Beim Löschen einer Datei wird er jeweils um 1 reduziert.&lt;br /&gt;
Wird der Wert 0 erreicht, ist die Datei gelöscht.&lt;br /&gt;
{| border=1 cellpadding=2&lt;br /&gt;
| Vorteile&lt;br /&gt;
|Zugriff auf die Daten, selbst wenn das Orginal gelöscht ist.&lt;br /&gt;
|-&lt;br /&gt;
|Nachteile&lt;br /&gt;
|Man kann keine Hardlinks auf Verzeichnisse anlegen.&lt;br /&gt;
Ist nur innerhalb einer Partion möglich.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Beispiel&lt;br /&gt;
 root@zero:~# touch 1&lt;br /&gt;
 root@zero:~# echo &amp;quot;text&amp;quot; &amp;gt; 1&lt;br /&gt;
 root@zero:~# ln 1 2&lt;br /&gt;
 root@zero:~# more 2&lt;br /&gt;
 text&lt;br /&gt;
 root@zero:~# echo &amp;quot;doch kein text&amp;quot; &amp;gt; 1&lt;br /&gt;
 root@zero:~# more 1&lt;br /&gt;
 doch kein text&lt;br /&gt;
 root@zero:~# more 2&lt;br /&gt;
 doch kein text&lt;br /&gt;
&lt;br /&gt;
Weitere Optionen:&lt;br /&gt;
 -b sichert Dateien, statt sie zu überschreiben &lt;br /&gt;
 -f Überschreibt bestehende, gleichnamige Dateien&lt;br /&gt;
 -i fragt vor dem Überschreiben nach Bestätigung&lt;br /&gt;
 -v ausführliche Meldungen&lt;br /&gt;
&lt;br /&gt;
==Prozesse==&lt;br /&gt;
===Was ist ein Prozess?===&lt;br /&gt;
Ein Prozess setzt sich aus zwei Teilen zusammen:&lt;br /&gt;
&lt;br /&gt;
1.Programm, das in den Hauptspeicher geladen wurde&lt;br /&gt;
&lt;br /&gt;
2.Prozessumgebung&lt;br /&gt;
&lt;br /&gt;
Unter einem Prozess versteht man ein Programm (binär), das in den Hauptspeicher&lt;br /&gt;
geladen wurde. Also nicht das Program selbst, das auf der Festplatte liegt ist der&lt;br /&gt;
Prozess, sondern es wird erst durch das Laden in den Hauptspeicher dazu.&lt;br /&gt;
Normalerweise liegt ein Programm als ausführbare Datei irgendwo auf der&lt;br /&gt;
Festplatte oder auf Diskette. Ob es sich bei dem Programm um eine binäre Datei&lt;br /&gt;
handelt, kann man mit dem Befehl '' file '' feststellen.&lt;br /&gt;
 &lt;br /&gt;
 root@zero:~# file /bin/mkdir&lt;br /&gt;
 /bin/mkdir: ELF 32-bit LSB executable, Intel 80386, version 1 (SYSV), dynamically linked (uses shared libs), for GNU/Linux 2.6.8, stripped&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Die Datei liegt im Maschinencode vor und kann in den Hauptspeicher geladen&lt;br /&gt;
werden. Sobald dies geschehen ist, kann der Rechner diesen Maschinencode&lt;br /&gt;
abarbeiten (ausführen).&lt;br /&gt;
&lt;br /&gt;
Da aber ein Programm nicht direkt auf die Hardware zugreifen soll, muss es vom&lt;br /&gt;
Betriebsystem kontrolliert werden. Das Betriebssystem liegt logisch gesehen&lt;br /&gt;
zwischen Hardware und Anwendung. Das Betriebssystem ordnet jedem Prozess&lt;br /&gt;
verschiedene Kenndaten zu, um die Prozesse verwalten zu können. Alle&lt;br /&gt;
Kenndaten, die einem Prozess zugeordnet sind, nennt man die&lt;br /&gt;
Prozessumgebung.Wenn man in der Shell ein Kommando eingibt, wird ein Prozess&lt;br /&gt;
kreiert. Natürlich ist die Shell selbst auch ein Prozess. Ein Prozess kann aber&lt;br /&gt;
genauso gut ein Serverprozess (Dienst) sein, z.B. Apache.&lt;br /&gt;
Ein wesentliches Merkmal eines Prozesses ist die Prozesskommunikation. Über im&lt;br /&gt;
Betriebssystem implementierte Methoden ist es möglich, dass verschiedene&lt;br /&gt;
Prozesse Signale und Daten untereinander austauschen können.&lt;br /&gt;
Dadurch wird auch dem Benutzer ermöglicht, einem Prozeß bestimmte Signale zu&lt;br /&gt;
senden bzw. auf den Status eines Prozesses Einfluss zu nehmen.&lt;br /&gt;
&lt;br /&gt;
===Prozesstabelle (Anzeige mit ps)===&lt;br /&gt;
Da zu jedem Prozess Kenndaten geführt werden, müssen diese auch irgendwo&lt;br /&gt;
festgehalten werden. Das geschieht in der sogenannten Prozesstabelle.&lt;br /&gt;
&lt;br /&gt;
Kenndaten der Prozesse (Auswahl):&lt;br /&gt;
* F Flags (z.B. ausgelagert; Systemprozess; Trace,...)&lt;br /&gt;
* UID Nutzer, mit dessen Rechten der Prozess ausgeführt wird&lt;br /&gt;
* PID Prozess - ID. Diese Nummer gibt eine eindeutige Prozess - Nummer&lt;br /&gt;
an. Sie wird vom System automatisch beim Starten des Prozesses&lt;br /&gt;
vergeben und ist für die Laufzeit eindeutig.&lt;br /&gt;
* PPID Prozessnumer der Eltern-Prozesses&lt;br /&gt;
* PRI Priorität eines Prozesses; je niedriger der Wert ist, desto besser&lt;br /&gt;
* NI ist der Nicewert des Prozesses; Nice erniedrigt den Grundwert&lt;br /&gt;
der Priorität des Prozesses und gibt damit Prozessorzeit für andere&lt;br /&gt;
Prozesse frei.&lt;br /&gt;
* SIZE Speichergröße des Prozesses inklusive Stack (eine Art Zwischenspeicher)&lt;br /&gt;
* RSS Verbrauch an physischen Speicher&lt;br /&gt;
* WCHAN ist der Name der Kernerlfunktion, in der der Prozess schläft&lt;br /&gt;
* STAT Status des Prozesses&lt;br /&gt;
R läuft       S schlafend     D nicht störbarer Schlaf&lt;br /&gt;
T angehalten  Z Zombie        W der Prozess belegt keine Seiten&lt;br /&gt;
* TIME Bisland benötigte Prozessorzeit&lt;br /&gt;
* SIZE ist die Größe von Text, Daten und Stack&lt;br /&gt;
* TTY die Nummer des kontrollierenden Teminal; wenn hier ein ? steht,&lt;br /&gt;
handelt es sich um einen Dämon oder Serverprozess.&lt;br /&gt;
* COMMAND Angabe des Prozesses selbst. Dies ist meist der Programmname.&lt;br /&gt;
&lt;br /&gt;
Weiteres&lt;br /&gt;
* GID Gruppe, unter der der Prozess läuft&lt;br /&gt;
* Verweis auf das aktuellen Arbeitsverzeichnis&lt;br /&gt;
* Um mit relativen Pfadangaben arbeiten zu können braucht man diesen Eintrag&lt;br /&gt;
* Tabelle mit Verweisen auf aktuell geöffnete Dateien&lt;br /&gt;
* 3 sind automatisch geöffnet Standardeingabe, Standardausgabe und&lt;br /&gt;
Standardfehlerkanal&lt;br /&gt;
&lt;br /&gt;
Beispiel&lt;br /&gt;
 root@zero:~# ps -l&lt;br /&gt;
 F S   UID   PID  PPID  C PRI  NI ADDR SZ WCHAN  TTY          TIME CMD&lt;br /&gt;
 4 R     0 18639 18631  0  80   0 -  1080 -      pts/0    00:00:00 bash&lt;br /&gt;
 0 R     0 25904 18639  0  80   0 -   635 -      pts/0    00:00:00 ps&lt;br /&gt;
&lt;br /&gt;
===Eltern und Kinder===&lt;br /&gt;
Jeder Prozess kann weitere Prozesse erzeugen. Die erzeugten Prozesse bezeichnet&lt;br /&gt;
man als Kindprozesse. Jeder Kindprozess weiß anhand der PID, woher er stammt.&lt;br /&gt;
&lt;br /&gt;
Alle Prozesse sind von einem anderen Prozess gestartet worden, mit Ausnahme&lt;br /&gt;
des Pseudoprozesses (noch im Kernel beim Starten erzeugter Prozess). Dieser hat&lt;br /&gt;
die Prozessnummer 0. Er hat die Aufgabe, den Init Prozess ( /sbin/init die Nummer&lt;br /&gt;
1) zu starten, der in System V alle anderen Prozesse direkt oder über seine Kind-&lt;br /&gt;
prozesse startet. (init wird konfiguriert durch die /etc/inittab)&lt;br /&gt;
&lt;br /&gt;
Es gibt zwei Arten wie ein Prozess gestartet werden kann:&lt;br /&gt;
&lt;br /&gt;
# Fork und Exec: Prozessumgebung wird dupliziert, der neue Prozess bekommt eine eigene neue PID&lt;br /&gt;
# Exec: Alter Prozess wird durch neuen Prozess überladen (geht mit dem shell-buildin exec)&lt;br /&gt;
&lt;br /&gt;
'''Rechte auf Objekte UID GID'''&lt;br /&gt;
Ob ein Prozess auf eine Datei zugreifen kann, entscheidet der Kernel anhand der&lt;br /&gt;
Zugriffssrechte, die auf der Datei gesetzt sind. Er checkt anhand der UID und GID&lt;br /&gt;
des Prozesses, ob es erlaubt ist. Mit dieser Technik wird letztendlich geprüft, was&lt;br /&gt;
ein User darf, und was nicht.&lt;br /&gt;
&lt;br /&gt;
===Rechenzeit und Priorität===&lt;br /&gt;
Da auch bei Prozessen eine Gerechtigkeit herschen muss, muss eine Instanz&lt;br /&gt;
darüber entscheiden wie lange ein Prozess Rechenzeit verbrauchen darf.&lt;br /&gt;
Folgende Kenndaten werden dazu benötigt&lt;br /&gt;
* clocktick = Zeiteinheit&lt;br /&gt;
* n = Faktor über den Kernel einstellbar&lt;br /&gt;
* slice = n &amp;lt;nowiki&amp;gt;*&amp;lt;/nowiki&amp;gt; clocktick&lt;br /&gt;
* agingtime = weitere Zeiteinheit über den Kernel einstellbar&lt;br /&gt;
&lt;br /&gt;
Es wird davon ausgegangen das der Prozess mit der niedrigsten Priorität gerade&lt;br /&gt;
rechnet. Pro clocktick erhöht sich die Priorität dieses Prozesses um eins.&lt;br /&gt;
&lt;br /&gt;
Jetzt können 3 Situationen eintreten die alle dazu führen das der Scheduler&lt;br /&gt;
aufgerufen wird.&lt;br /&gt;
&lt;br /&gt;
# Prozess blockiert wegen einer Ausgabe oder Eingabe.&lt;br /&gt;
# Gibt Rechenzeit freiwillig ab.&lt;br /&gt;
# Der Slice endet.&lt;br /&gt;
&lt;br /&gt;
Der Aufruf des Schedulers bewirkt das der Prozess mit der niedrigsten Priorität&lt;br /&gt;
gescheduled wird, er also nun rechnen darf. Nach Ablauf der agingtime werden&lt;br /&gt;
nun die Prozesse &amp;quot;gealtert&amp;quot;. Das geschieht nach folgender Formel&lt;br /&gt;
&lt;br /&gt;
Neue Priorität = Alte Priorität / 2 + Nicewert&lt;br /&gt;
&lt;br /&gt;
Der User hat die Möglichkeit, über den sogenannten Nicefaktor den Grundwert für&lt;br /&gt;
einen Prozess zu senken. Der Prozess braucht dann länger für seine Abarbeitung.&lt;br /&gt;
Er verhält sich somit netter zu den anderen Prozessen. Normale User können nur&lt;br /&gt;
netter werden, der Systemverwalter kann auch nicht netter (gemeiner) werden. Der&lt;br /&gt;
Bereich liegt zwischen 19 (sehr nett) bis 0 (weniger nett) für die User, und 19 bis&lt;br /&gt;
-20 für root.&lt;br /&gt;
&lt;br /&gt;
[[Image:pri.png]]&lt;br /&gt;
&lt;br /&gt;
'''Signale'''&lt;br /&gt;
&lt;br /&gt;
Mit den Kommando kill und killall kann man Prozessen Signale schicken&lt;br /&gt;
&lt;br /&gt;
 kill -Signalnummer PID &lt;br /&gt;
&lt;br /&gt;
Signalnummer&lt;br /&gt;
{| border=1 cellpadding=2&lt;br /&gt;
!Signalname&lt;br /&gt;
!Wert&lt;br /&gt;
!Aktion&lt;br /&gt;
|-&lt;br /&gt;
|SIGHUP&lt;br /&gt;
|1&lt;br /&gt;
|Neuinitialisierung eines Prozesses&lt;br /&gt;
|-&lt;br /&gt;
|SIGINT&lt;br /&gt;
|2&lt;br /&gt;
|Interrupt-Signal von der Tastatur (STRG+c)&lt;br /&gt;
|-&lt;br /&gt;
|SIGQUIT&lt;br /&gt;
|3&lt;br /&gt;
|Interrupt-Signal von der Tastatur (STRG+c) mit Dump&lt;br /&gt;
|-&lt;br /&gt;
|SIGKILL&lt;br /&gt;
|9&lt;br /&gt;
|unwiderrufliches Beendigungssignal (Töten)&lt;br /&gt;
|-&lt;br /&gt;
|SIGSEGV&lt;br /&gt;
|11&lt;br /&gt;
|Ungültige Speicherreferenz (bedeutet oft auf defekten Speicher)&lt;br /&gt;
|-&lt;br /&gt;
|SIGTERM &lt;br /&gt;
|15&lt;br /&gt;
|Beendigungssignal (geöffnete Dateien werden geschlossen)&lt;br /&gt;
|-&lt;br /&gt;
|SIGCONT &lt;br /&gt;
|18&lt;br /&gt;
|Weiterfahren, wenn gestoppt&lt;br /&gt;
|-&lt;br /&gt;
|SIGSTOP&lt;br /&gt;
|19&lt;br /&gt;
|Prozessstop&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Beispiel&lt;br /&gt;
 root@zero:~# kill -1 7562&lt;br /&gt;
&lt;br /&gt;
===Programme im Zusammenhang mit Prozessen===&lt;br /&gt;
* ps: Zeigt die Prozesse mit ihrem Status an&lt;br /&gt;
 root@zero:~# ps&lt;br /&gt;
  PID TTY          TIME CMD&lt;br /&gt;
 14134 pts/0    00:00:00 bash&lt;br /&gt;
 14149 pts/0    00:00:00 ps&lt;br /&gt;
&lt;br /&gt;
 root@zero:~# ps -elf | grep apache&lt;br /&gt;
 1 S root      5738     1  0  80   0 -  5461 select Jun16 ?        00:00:00 /usr/sbin/apache2 -k start&lt;br /&gt;
 5 S www-data  5739  5738  0  80   0 -  5581 inet_c Jun16 ?        00:00:00 /usr/sbin/apache2 -k start&lt;br /&gt;
 5 S www-data  5742  5738  0  80   0 -  5461 inet_c Jun16 ?        00:00:00 /usr/sbin/apache2 -k start&lt;br /&gt;
 5 S www-data  5743  5738  0  80   0 -  5461 inet_c Jun16 ?        00:00:00 /usr/sbin/apache2 -k start&lt;br /&gt;
 5 S www-data  5745  5738  0  80   0 -  5461 inet_c Jun16 ?        00:00:00 /usr/sbin/apache2 -k start&lt;br /&gt;
 5 S www-data  5746  5738  0  80   0 -  5461 inet_c Jun16 ?        00:00:00 /usr/sbin/apache2 -k start&lt;br /&gt;
 0 S root     14153 14134  0  80   0 -   837 pipe_w 16:59 pts/0    00:00:00 grep apache&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* nice: Lässt ein Programm mit verändertem Grundwert der Priorität laufen&lt;br /&gt;
 root@zero:~# nice&lt;br /&gt;
 0&lt;br /&gt;
 root@zero:~# nice -n 9 bash&lt;br /&gt;
 root@zero:~# nice&lt;br /&gt;
 9&lt;br /&gt;
 root@zero:~#&lt;br /&gt;
&lt;br /&gt;
* renice: Ändert den Grundwert der Priorität eines laufenden Prozesses&lt;br /&gt;
 root@zero:~# renice 10 5742&lt;br /&gt;
 5742: Alte Priorität: 0, neue Priorität: 10&lt;br /&gt;
&lt;br /&gt;
* top: Zeigt die Prozesse mit ihrem Status an (Abbrechen mit q)&lt;br /&gt;
 root@zero:~# top&lt;br /&gt;
&lt;br /&gt;
* pstree: Zeigt die Prozesse als Baumstruktur&lt;br /&gt;
 root@zero:~# pstree&lt;br /&gt;
 init─┬─NetworkManager&lt;br /&gt;
      ├─acpid&lt;br /&gt;
      ├─apache2───5*[apache2]&lt;br /&gt;
      ├─atd&lt;br /&gt;
      ├─bluetoothd&lt;br /&gt;
      ├─console-kit-dae───63*[{console-kit-dae}]&lt;br /&gt;
      ├─cron&lt;br /&gt;
      ├─cupsd&lt;br /&gt;
      ├─dbus-daemon&lt;br /&gt;
      ├─dd&lt;br /&gt;
      ├─gdm───gdm─┬─Xorg&lt;br /&gt;
      │           └─gdmgreeter&lt;br /&gt;
      ├─6*[getty]&lt;br /&gt;
      ├─hald───hald-runner─┬─hald-addon-acpi&lt;br /&gt;
      │                    ├─hald-addon-inpu&lt;br /&gt;
      │                    └─2*[hald-addon-stor]&lt;br /&gt;
      ├─klogd&lt;br /&gt;
      ├─nm-system-setti&lt;br /&gt;
      ├─nmbd&lt;br /&gt;
      ├─nscd───11*[{nscd}]&lt;br /&gt;
      ├─portmap&lt;br /&gt;
      ├─rpc.statd&lt;br /&gt;
      ├─slapd───2*[{slapd}]&lt;br /&gt;
      ├─smbd───smbd&lt;br /&gt;
      ├─sshd───sshd───bash───bash───pstree&lt;br /&gt;
      ├─syslogd&lt;br /&gt;
      ├─system-tools-ba&lt;br /&gt;
      ├─udevd&lt;br /&gt;
      ├─winbindd─┬─winbindd───winbindd&lt;br /&gt;
      │          └─3*[winbindd]&lt;br /&gt;
      └─wpa_supplicant&lt;br /&gt;
&lt;br /&gt;
===Jobs===&lt;br /&gt;
Unter einem Job versteht man ein Programm, welches man von der Shell gelöst&lt;br /&gt;
hat. D. h. man kann ganz normal weiter arbeiten und der Job verrichtet seinen&lt;br /&gt;
Dienst im Hintergrund. Man kann jederzeit zu diesem Job wieder Kontakt&lt;br /&gt;
aufnehmen.&lt;br /&gt;
&lt;br /&gt;
Ein Job kann auf 2 Arten gestarten werden:&lt;br /&gt;
&lt;br /&gt;
# Durch Anhängen des &amp;amp; Zeichens beim Programmstart&lt;br /&gt;
 root@zero:~# tail -f /var/log/messages &amp;amp;&lt;br /&gt;
 Jun 19 06:59:31 zero -- MARK --&lt;br /&gt;
 Jun 19 07:19:31 zero -- MARK --&lt;br /&gt;
 Jun 19 07:39:32 zero -- MARK --&lt;br /&gt;
 Jun 19 07:44:57 zero syslogd 1.5.0#5ubuntu3: restart.&lt;br /&gt;
 Jun 19 07:59:32 zero -- MARK --&lt;br /&gt;
 Jun 19 08:19:32 zero -- MARK --&lt;br /&gt;
 Jun 19 08:39:32 zero -- MARK --&lt;br /&gt;
 Jun 19 08:59:32 zero -- MARK --&lt;br /&gt;
 Jun 19 09:19:33 zero -- MARK --&lt;br /&gt;
 Jun 19 09:39:33 zero -- MARK --&lt;br /&gt;
 [3] 27421&lt;br /&gt;
&lt;br /&gt;
# Durch Stoppen des Prozesses durch Drücken von Strg-Z und in den Hintergrund schicken mit %n (n ist die Jobnummer)&lt;br /&gt;
 root@zero:~# watch cat /proc/cpuinfo&lt;br /&gt;
 Strg-Z&lt;br /&gt;
 [4]+  Stopped                 watch cat /proc/cpuinfo&lt;br /&gt;
 root@zero:~# bg %4&lt;br /&gt;
 [4]+ watch cat /proc/cpuinfo &amp;amp;&lt;br /&gt;
&lt;br /&gt;
Anweisungen im Zusammenhang mit Jobs (n ist die Jobnummer)&lt;br /&gt;
* bg %n : Einen Job in den Hintergrund stellen (wie oben)&lt;br /&gt;
* fg %n : Einen Job in den Vordergrund holen&lt;br /&gt;
 root@zero:~# fg %4&lt;br /&gt;
 watch cat /proc/cpuinfo&lt;br /&gt;
&lt;br /&gt;
* jobs : Aktive Jobs ausgeben&lt;br /&gt;
&lt;br /&gt;
 root@zero:~# jobs&lt;br /&gt;
 [1]   Running                 tail -f /var/log/syslog &amp;amp;&lt;br /&gt;
 [2]   Running                 tail -f /var/log/syslog &amp;amp;&lt;br /&gt;
 [3]-  Running                 tail -f /var/log/messages &amp;amp;&lt;br /&gt;
 [4]+  Stopped                 watch cat /proc/cpuinfo&lt;br /&gt;
&lt;br /&gt;
* Strg-Z : Einen Vordergrund-Job vorübergehend anhalten&lt;br /&gt;
* kill -STOP %n : Unterbricht Job im Hintergrund&lt;br /&gt;
 root@zero:~# kill -STOP %1&lt;br /&gt;
 root@zero:~# jobs&lt;br /&gt;
 [1]+  '''Stopped'''                 tail -f /var/log/syslog&lt;br /&gt;
 [2]   Running                 tail -f /var/log/syslog &amp;amp;&lt;br /&gt;
 [3]   Running                 tail -f /var/log/messages &amp;amp;&lt;br /&gt;
 [4]-  Stopped                 watch cat /proc/cpuinfo&lt;br /&gt;
* kill -CONT %n : Setzt den unterbrochenen Job im Hintergrund fort&lt;br /&gt;
root@zero:~# kill -CONT %1&lt;br /&gt;
root@zero:~# jobs&lt;br /&gt;
 [1]+  '''Running'''                 tail -f /var/log/syslog &amp;amp;&lt;br /&gt;
 [2]   Running                 tail -f /var/log/syslog &amp;amp;&lt;br /&gt;
 [3]   Running                 tail -f /var/log/messages &amp;amp;&lt;br /&gt;
 [4]-  Stopped                 watch cat /proc/cpuinfo&lt;br /&gt;
* kill -KILL %n : Tötet Job im Hintergrund&lt;br /&gt;
 root@zero:~# kill -KILL %1&lt;br /&gt;
 root@zero:~# jobs&lt;br /&gt;
 [1]+  '''Killed'''                  tail -f /var/log/syslog&lt;br /&gt;
 [2]   Running                 tail -f /var/log/syslog &amp;amp;&lt;br /&gt;
 [3]   Running                 tail -f /var/log/messages &amp;amp;&lt;br /&gt;
 [4]-  Stopped                 watch cat /proc/cpuinfo&lt;br /&gt;
 root@zero:~# jobs&lt;br /&gt;
 [2]   Running                 tail -f /var/log/syslog &amp;amp;&lt;br /&gt;
 [3]-  Running                 tail -f /var/log/messages &amp;amp;&lt;br /&gt;
 [4]+  Stopped                 watch cat /proc/cpuinfo&lt;br /&gt;
&lt;br /&gt;
Bedingungen, die zu Jobausführung eingehalten werden sollen:&lt;br /&gt;
* Der Job soll nicht auf den Bildschirm schreiben (Standardausgabe +Standardfehlerkanal).&lt;br /&gt;
* Er soll keine Eingaben vom Benutzer erwarten.&lt;br /&gt;
&lt;br /&gt;
==Suchen von Dateien==&lt;br /&gt;
===find===&lt;br /&gt;
 find ab_wo_wird_gesucht was_wird_gesucht aktion&lt;br /&gt;
 find [Pfad] [Bedingung] [Aktion]&lt;br /&gt;
&lt;br /&gt;
====Nach Namen====&lt;br /&gt;
 find [Pfad] '''-name''' [Name]&lt;br /&gt;
 &lt;br /&gt;
Finde alle Dateien mit Namen test ab dem Verzeichnis /home und gebe diese Zeilenweise aus&lt;br /&gt;
 root@zero:~# find /home -name test -print&lt;br /&gt;
 /home/xinux/test&lt;br /&gt;
 /home/test&lt;br /&gt;
&lt;br /&gt;
Wie oben, jedoch mit Namensanfang test&lt;br /&gt;
 root@zero:/home/xinux# find /home -name 'test*'&lt;br /&gt;
 /home/xinux/testdatei&lt;br /&gt;
 /home/xinux/test&lt;br /&gt;
 /home/test&lt;br /&gt;
&lt;br /&gt;
====Nach Benutzer(Eigentümer)====&lt;br /&gt;
 root@zero:/tmp# find /tmp/ '''-user''' xinux&lt;br /&gt;
 /tmp/datei&lt;br /&gt;
&lt;br /&gt;
====Nach Gruppe====&lt;br /&gt;
 root@zero:/tmp# find /tmp/ '''-group''' hacker&lt;br /&gt;
 /tmp/datei3&lt;br /&gt;
 /tmp/datei2&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
====Nach Typ====&lt;br /&gt;
Es wird nach Dateien anhand Ihrer Art gesucht:&lt;br /&gt;
 find [Pfad] '''-type''' [Typ] &lt;br /&gt;
Typ:&lt;br /&gt;
* f: Normale Dateien&lt;br /&gt;
 root@zero:~# find /tmp/ -type f&lt;br /&gt;
 /tmp/mbr.img&lt;br /&gt;
 /tmp/datei&lt;br /&gt;
 /tmp/zeugs&lt;br /&gt;
 /tmp/.X0-lock&lt;br /&gt;
* d: Verzeichnisse&lt;br /&gt;
 root@zero:~# find /var/log -type d&lt;br /&gt;
 /var/log&lt;br /&gt;
 /var/log/apache2&lt;br /&gt;
 /var/log/unattended-upgrades&lt;br /&gt;
 /var/log/apparmor&lt;br /&gt;
 /var/log/ConsoleKit&lt;br /&gt;
 /var/log/dist-upgrade&lt;br /&gt;
 /var/log/dist-upgrade/20090526-1052&lt;br /&gt;
 /var/log/cups&lt;br /&gt;
 /var/log/apt&lt;br /&gt;
 /var/log/fsck&lt;br /&gt;
 /var/log/samba&lt;br /&gt;
 /var/log/samba/cores&lt;br /&gt;
 /var/log/samba/cores/smbd&lt;br /&gt;
 /var/log/samba/cores/nmbd&lt;br /&gt;
 /var/log/samba/cores/winbindd&lt;br /&gt;
 /var/log/installer&lt;br /&gt;
 /var/log/gdm&lt;br /&gt;
 /var/log/news&lt;br /&gt;
* c: Char Devices (Zeichenorientierte Gerätedatei)&lt;br /&gt;
 root@zero:~# find / -type c&lt;br /&gt;
 /lib/udev/devices/kmem&lt;br /&gt;
 /lib/udev/devices/null&lt;br /&gt;
 /lib/udev/devices/console&lt;br /&gt;
 /lib/udev/devices/ppp&lt;br /&gt;
 /lib/udev/devices/net/tun&lt;br /&gt;
* b: Block Devices (Blockorientierte Gerätedatei)&lt;br /&gt;
* p: Benannte Pipe&lt;br /&gt;
* l: Links&lt;br /&gt;
* s: Sockets&lt;br /&gt;
&lt;br /&gt;
====Nach Modifikation====&lt;br /&gt;
Listet alle Dateien in /etc auf, die innerhalb von zwei Tagen modifiziert wurden&lt;br /&gt;
 root@zero:/var/log# find /etc/ -mtime 2 -print&lt;br /&gt;
 /etc/apache2&lt;br /&gt;
 /etc/apache2/mods-available&lt;br /&gt;
 /etc/apache2/conf.d&lt;br /&gt;
 /etc/apache2/sites-available&lt;br /&gt;
 /etc/bash_completion.d&lt;br /&gt;
 /etc/blkid.tab.old&lt;br /&gt;
 /etc/firefox-3.0/profile&lt;br /&gt;
 /etc/firefox-3.0/profile/chrome&lt;br /&gt;
 /etc/firefox-3.0/pref&lt;br /&gt;
 /etc/profile.d&lt;br /&gt;
 /etc/ufw/applications.d&lt;br /&gt;
 /etc/logrotate.d&lt;br /&gt;
 /etc/xulrunner-1.9&lt;br /&gt;
 /etc/blkid.tab&lt;br /&gt;
 /etc/cron.daily&lt;br /&gt;
 /etc/alternatives&lt;br /&gt;
 /etc/alternatives/x-www-browser&lt;br /&gt;
 /etc/alternatives/xulrunner&lt;br /&gt;
 /etc/gre.d&lt;br /&gt;
 /etc/hal/fdi/policy&lt;br /&gt;
 /etc/dbus-1/system.d&lt;br /&gt;
 /etc/udev/rules.d&lt;br /&gt;
&lt;br /&gt;
====Nach Größe====&lt;br /&gt;
Finde Dateien in /tmp, die größer als 100 MByte sind&lt;br /&gt;
 root@zero:/tmp# find /tmp/ -size +100M&lt;br /&gt;
 /tmp/datei&lt;br /&gt;
&lt;br /&gt;
Finde Dateien in /tmp, die kleiner als 100 KByte sind&lt;br /&gt;
 root@zero:/tmp# find /tmp/ -size -100k&lt;br /&gt;
 /tmp/&lt;br /&gt;
 /tmp/datei3&lt;br /&gt;
 /tmp/backup &lt;br /&gt;
 /tmp/datei2&lt;br /&gt;
 /tmp/.winbindd &lt;br /&gt;
 /tmp/.winbindd/pipe&lt;br /&gt;
 /tmp/mbr.img&lt;br /&gt;
 /tmp/zeugs&lt;br /&gt;
 /tmp/.ICE-unix&lt;br /&gt;
 /tmp/.X0-lock&lt;br /&gt;
 /tmp/datei1&lt;br /&gt;
 /tmp/.X11-unix&lt;br /&gt;
 /tmp/.X11-unix/X0&lt;br /&gt;
 /tmp/pulse-PKdhtXMmr18n&lt;br /&gt;
&lt;br /&gt;
====Nach Berechtigungen====&lt;br /&gt;
Finde Dateien in Home mit der Berechtigung 777 (-rwxrwxrwx)&lt;br /&gt;
 root@zero:/var# find /home/ -perm 777&lt;br /&gt;
 /home/samba&lt;br /&gt;
 /home/xinux/Examples&lt;br /&gt;
 /home/xinux/.pulse/1f0763ee4cf4c7e1d3c07fd149dda37b:runtime&lt;br /&gt;
 /home/test/Examples&lt;br /&gt;
&lt;br /&gt;
===locate===&lt;br /&gt;
Locate arbeitet über einen Index, der erstellt und aktualisiert werden muss. Aus diesem Grund kann locate teilweise nicht &lt;br /&gt;
akutell sein. Es ist immer schneller als find und es durchsucht immer das ganze Dateisystem. &lt;br /&gt;
 locate [Dateiname]&lt;br /&gt;
 &lt;br /&gt;
Lokalisiere die Datei wvdial.conf. Anmerkung: Der Stern wird beim Suchen automatisch hinzugefügt. Entspricht also&lt;br /&gt;
wvidal.conf*&lt;br /&gt;
 root@zero:~# locate wvdial.conf&lt;br /&gt;
 /etc/wvdial.conf&lt;br /&gt;
 /usr/share/man/man5/wvdial.conf.5.gz&lt;br /&gt;
 /var/lib/dpkg/info/wvdial.conffiles&lt;br /&gt;
 /var/lib/dpkg/info/wvdial.config&lt;br /&gt;
&lt;br /&gt;
Lokalisiere die Datei wvdial.conf und nur diese&lt;br /&gt;
 root@zero:~# locate -b '\wvdial.conf'&lt;br /&gt;
 /etc/wvdial.conf&lt;br /&gt;
&lt;br /&gt;
Aktualisieren des Indexes&lt;br /&gt;
 root@zero:~# updatedb&lt;br /&gt;
&lt;br /&gt;
==Wie wird ein Kommando lokalisiert==&lt;br /&gt;
Wenn die Shell alle Ersetzungen in der Kommandozeile vorgenommen und alle Umleitungen vorbereitet hat, ist der Zeitpunkt &lt;br /&gt;
gekommen, auf den der Anwender die ganze Zeit gewartet hat. Die Shell versucht das Kommando auszuführen. Dazu muss sie &lt;br /&gt;
es aber erst lokalisieren. Das erste passende Kommando wird ausgeführt.&lt;br /&gt;
&lt;br /&gt;
Als Kommandoname wird immer das erste Wort eines einfachen Kommandos erkannt. Ein Kommandoname kann mit Pfadnamen in &lt;br /&gt;
einem Verzeichnis (absolut oder relativ) angegeben werden. Die Shell erkennt dies an (mindestens) einem Slash `/' &lt;br /&gt;
im Kommandonamen. Wenn kein Verzeichnis angegeben ist, versucht die Shell selbst, das Kommando zu finden. Dazu wird &lt;br /&gt;
der Kommandoname zuerst in der Hashtabelle gesucht, dann wird er mit den Synonymen, mit den Scriptfunktionen und &lt;br /&gt;
schließlich mit den Shellfunktionen verglichen. &lt;br /&gt;
&lt;br /&gt;
Wird auf diese Weise kein Programm dieses Namens gefunden, werden alle in der PATH-Umgebungsvariablen aufgeführten &lt;br /&gt;
Verzeichnisse nach einer ausführbaren Datei dieses Namens durchsucht. Wird auch hier kein passendes Kommando gefunden, &lt;br /&gt;
gibt die Shell eine Fehlermeldung aus.&lt;br /&gt;
&lt;br /&gt;
===which und type===&lt;br /&gt;
====which====&lt;br /&gt;
which gibt die vollen Pfadnamen der Dateien aus, die bei Benutzung des angegebenen Befehls ausgeführt werden würden.&lt;br /&gt;
&lt;br /&gt;
 which [-a] Dateiname &lt;br /&gt;
&lt;br /&gt;
Optionen:&lt;br /&gt;
&lt;br /&gt;
* -a : Alle Treffer ausgeben, nicht nur den ersten&lt;br /&gt;
* --skip-dot : Verzeichnisse, die mit einem Punkt beginnen, auslassen&lt;br /&gt;
&lt;br /&gt;
Beispiel&lt;br /&gt;
 root@zero:~# which startx&lt;br /&gt;
 /usr/bin/startx&lt;br /&gt;
&lt;br /&gt;
====type====&lt;br /&gt;
Anzeigen der absoluten Pfadnamen von Befehlen, und ob sich diese Befehle in der Hash-Tabelle der aktuellen&lt;br /&gt;
Shell befinden.&lt;br /&gt;
&lt;br /&gt;
 type [Optionen] Befehle&lt;br /&gt;
&lt;br /&gt;
Beispiel&lt;br /&gt;
 root@zero:~# type ls&lt;br /&gt;
 ls is aliased to `ls --color=auto'&lt;br /&gt;
&lt;br /&gt;
Optionen:&lt;br /&gt;
&lt;br /&gt;
* -a : Alle vorkommenden Befehle werden ausgegeben, nicht nur das, welches aufgerufen werden würde&lt;br /&gt;
 root@zero:~# type '''-a''' ls&lt;br /&gt;
 ls is aliased to `ls --color=auto'&lt;br /&gt;
 ls is /bin/ls&lt;br /&gt;
&lt;br /&gt;
* -p : Anzeigen des Eintrags von Befehl in der Hash-Tabelle. Dieser Wert kann sich vom ersten Auftreten des Befehls in PATH&lt;br /&gt;
unterscheiden&lt;br /&gt;
 root@zero:~# type '''-p''' apache2&lt;br /&gt;
 /usr/sbin/apache2&lt;br /&gt;
&lt;br /&gt;
* -t : Anzeigen, ob Befehl ein Aliasname, ein Schlüsselwort, eine Funktion, ein eingebauter Befehl oder eine Datei ist&lt;br /&gt;
 root@zero:~# type '''-t''' apache2&lt;br /&gt;
 file&lt;/div&gt;</summary>
		<author><name>192.168.178.46</name></author>
	</entry>
	<entry>
		<id>https://www.xinux.net/index.php?title=Linux_Grundlagen&amp;diff=80</id>
		<title>Linux Grundlagen</title>
		<link rel="alternate" type="text/html" href="https://www.xinux.net/index.php?title=Linux_Grundlagen&amp;diff=80"/>
		<updated>2009-07-07T10:50:33Z</updated>

		<summary type="html">&lt;p&gt;192.168.178.46: /* Named Pipes */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Einführung==&lt;br /&gt;
===Geschichte Unix===&lt;br /&gt;
====1969====&lt;br /&gt;
Am Anfang von Linux steht Multics, ein von Bell Laboratories geschaffenes &amp;quot;Betriebssystem&amp;quot;, &lt;br /&gt;
das noch mit Lochkarten arbeitete. Multics wird mit Unterstützung von AT&amp;amp;T und Western &lt;br /&gt;
Electric unter Mitarbeit von Ken Thompson und Dennis Ritchie weiterentwickelt. Obwohl sich &lt;br /&gt;
Bell Laboratories bald zurückzieht, gibt Thompson das Projekt nicht auf.  Zum Entwicklerteam &lt;br /&gt;
gehören auch Rudd Canaday und Brian Kernighan. Letzterer gibt 1970 dem Betriebssystem den Namen UNIX. &lt;br /&gt;
Thompson definiert 7 Richtlinien für UNIX:&lt;br /&gt;
 &lt;br /&gt;
# Hierarchische Anordnung der Dateisysteme&lt;br /&gt;
# Die Ausgabe von Daten an die Peripherie(-geräte) und Dateien soll gleich sein.&lt;br /&gt;
# Prozesse und Programme sollen miteinander kommunizieren.&lt;br /&gt;
# Multitasking (voneinander getrennte Prozesse)&lt;br /&gt;
# Persönliche Shell's&lt;br /&gt;
# Der Compiler soll für viele Programmiersprachen tauglich sein.&lt;br /&gt;
# Portabilität&lt;br /&gt;
&lt;br /&gt;
====1971====&lt;br /&gt;
Bis 1971 ist das für eine DEC PDP-7 geschriebene Unix als Version 1 auf eine PDP-11 portiert. Bis&lt;br /&gt;
zur Version 4 entwickelt Ritchie die Programmier- (Hoch-) Sprache C. Das in Assembler geschriebene&lt;br /&gt;
Unix wird fast völlig nach C übersetzt, wodurch zum erstenmal die geforderte Hardware-Unabhängigkeit&lt;br /&gt;
des Betriebssystems realisiert werden kann.&lt;br /&gt;
&lt;br /&gt;
====1975====&lt;br /&gt;
Da AT&amp;amp;T aufgrund vertraglicher Bindungen mit der US-Bundesregierung Unix nicht kommerziell vermarkten darf, stellt sie den Source Code für ein paar hundert Dollar den Universitäten, Lehr- und Forschungsanstalten zur Verfügung. Dies führt zu einer sehr dynamischen Entwicklung von Unix. 1975 wird die Version 6 als erstes UNIX-System veröffentlicht, die darauffolgende Version 7 wird sehr erfolgreich. Da es keine Standardisierung gibt, entwickeln bald verschiedenste Firmen ihr eigenes UNIX. Ab 1984 wird AT&amp;amp;T per Gerichtsbeschluss erlaubt, Unix zu vermarkten. AT&amp;amp;T verkauft sein Unix V und beginnt, sich um einen internationalen Standard von UNIX zu bemühen. &lt;br /&gt;
&lt;br /&gt;
====1984====&lt;br /&gt;
Durch Richard Stallman wird die Free Software Foundation (FSF) gegründet. Diese initiiert ein Projekt namens GNU (GNU ist Not Unix), welches das Ziel verfolgt, ein freies UNIX System zu schaffen. &lt;br /&gt;
&lt;br /&gt;
====1987====&lt;br /&gt;
AT&amp;amp;T verbietet die Verwendung des Unix Quellcodes an den Universitäten. Während dieser Zeit ist Andrew (Andy) Tannenbaum Professor an der Freien Universität von Amsterdam und entwickelt Minix. Minix ist ein kostengünstiges Lehrbetriebssystem und kommt ohne jeglichen AT&amp;amp;T Code aus, obwohl es die gleiche Funktionalität wie Unix 7 bietet. Im Usenet unter comp.os.minix entsteht eine Minix-Gemeinde, die den Minix Kernel und die Anwendungen rundherum programmiert und verbessert.&lt;br /&gt;
&lt;br /&gt;
====1991====&lt;br /&gt;
Linus Torvalds hat als Student für Computerwissenschaften an der Universität in Helsinki Minix installiert und das Buch von Andy Tannenbaum gelesen. Er beginnt im Sinne der FSF einen Unix ähnlichen Kernel zu programmieren mit der Idee, &amp;quot;ein besseres Minix als Minix&amp;quot; zu bauen. 1992 stellt er die Version 0.02 mit dem Namen Linux der Internetgemeinde zur Verfügung. &lt;br /&gt;
&lt;br /&gt;
====1994====&lt;br /&gt;
Die Linux Version 1.0 wird freigegeben. Das Linux Fieber beginnt... &lt;br /&gt;
&lt;br /&gt;
====1998====&lt;br /&gt;
Der Kreis der Linux Entwickler und Anwender ist kräftig angeschwollen. KDE 1.0 wird veröffentlicht. Die Zuwachsraten von Linux übertreffen die von Windows NT deutlich. &lt;br /&gt;
&lt;br /&gt;
====1999====&lt;br /&gt;
Der lange erwartete stabile Linux Kernel Version 2.2 wird freigegeben. Namhafte Firmen wie IBM kündigen ihre Unterstützung für Linux an. &lt;br /&gt;
&lt;br /&gt;
====2001====&lt;br /&gt;
Der lange erwartete stabile Linux Kernel Version 2.4 wird freigegeben. USB Unterstützung und eine neue Firewallimplementierung zeichnen ihn aus.&lt;br /&gt;
&lt;br /&gt;
====2003====&lt;br /&gt;
Linux Kernel Version 2.6 wird freigegeben. Am auffälligsten sind Änderungen bei der Modulverwaltung.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Distributionen===&lt;br /&gt;
{| Border=1 Cellpadding=2&lt;br /&gt;
| &lt;br /&gt;
|Url&lt;br /&gt;
|Paketformat&lt;br /&gt;
|-&lt;br /&gt;
|Red Hat&lt;br /&gt;
|www.redhat.com&lt;br /&gt;
|rpm&lt;br /&gt;
|-&lt;br /&gt;
|fedora&lt;br /&gt;
|fedora.redhat.com&lt;br /&gt;
|rpm&lt;br /&gt;
|-&lt;br /&gt;
|CentOS&lt;br /&gt;
|www.centos.org&lt;br /&gt;
|rpm&lt;br /&gt;
|-&lt;br /&gt;
|Suse/openSUSE&lt;br /&gt;
|www.opensuse.org&lt;br /&gt;
|rpm&lt;br /&gt;
|-&lt;br /&gt;
|Debian&lt;br /&gt;
|www.debian.org&lt;br /&gt;
|deb&lt;br /&gt;
|-&lt;br /&gt;
|Ubuntu&lt;br /&gt;
|www.ubuntu.com&lt;br /&gt;
|deb&lt;br /&gt;
|-&lt;br /&gt;
|Mandrake&lt;br /&gt;
|www.linux-mandrake.com&lt;br /&gt;
|rpm&lt;br /&gt;
|-&lt;br /&gt;
|Easy Linux&lt;br /&gt;
|www.easy-linux.de&lt;br /&gt;
|rpm&lt;br /&gt;
|-&lt;br /&gt;
|Turbo&lt;br /&gt;
|www.turbolinux.com&lt;br /&gt;
|rpm&lt;br /&gt;
|-&lt;br /&gt;
|minis&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|toms&lt;br /&gt;
|www.toms.net/rb&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|damn small linux&lt;br /&gt;
|www.damnsmalllinux.org&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|pocket-linux&lt;br /&gt;
|www.pocket-linux.org&lt;br /&gt;
|&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
====Bücher====&lt;br /&gt;
 Titel : Das Linux Anwenderhandbuch und Leitfaden für die Systemverwaltung&lt;br /&gt;
 Autor : Sebastian Hetze, Dirk Hohndel, Olaf Kirch und Martin Müller&lt;br /&gt;
 Verlag: Lunetix&lt;br /&gt;
 ISBN : 3-929764-06-7&lt;br /&gt;
&lt;br /&gt;
 Titel : Linux in a Nutshell&lt;br /&gt;
 Autor : Jessica Perry Hekman und die Mitarbeiter von O'Reilly &amp;amp; Associates&lt;br /&gt;
 Verlag: O'Reilly&lt;br /&gt;
 ISBN : 3-930673-57-6&lt;br /&gt;
&lt;br /&gt;
 Titel : Linux - Wegweiser zur Installation und Konfiguration&lt;br /&gt;
 Autor : Matt Welsh, Lar Kaufman, Matthias Kalle Dallheimer&lt;br /&gt;
 Verlag: O'Reilly&lt;br /&gt;
 ISBN : 3-930673-58-4 (deutsch), 1-56592-469-X (englisch)&lt;br /&gt;
&lt;br /&gt;
 Titel : Linux - Installation, Konfiguration, Anwendung&lt;br /&gt;
 Autor : Michael KoflerMultitasking&lt;br /&gt;
 Verlag: Addison-Wesley&lt;br /&gt;
 ISBN : 3-8273-1475-5&lt;br /&gt;
&lt;br /&gt;
 Titel : Linux - Wegweiser für Netzwerker&lt;br /&gt;
 Autor : Olaf Kirch&lt;br /&gt;
 Verlag: O'Reilly&lt;br /&gt;
 ISBN : 3-930673-18-5&lt;br /&gt;
&lt;br /&gt;
 Titel : TCP/IP-Netzwerk-Administration&lt;br /&gt;
 Autor : Craig Hunt&lt;br /&gt;
 Verlag: O'Reilly&lt;br /&gt;
 ISBN : 3-89721-110-6&lt;br /&gt;
&lt;br /&gt;
 Titel : Essential System Administration&lt;br /&gt;
 Autor : Eleen Frisch&lt;br /&gt;
 Verlag: O'Reilly&lt;br /&gt;
 ISBN : 1-56592-127-5&lt;br /&gt;
&lt;br /&gt;
==Betriebssystem==&lt;br /&gt;
===Was ist ein Betriebssystem?===&lt;br /&gt;
&lt;br /&gt;
Ein Betriebssystem liegt logisch gesehen zwischenAnwendungsprogramm und Hardware.&lt;br /&gt;
&lt;br /&gt;
Es nimmt die Anforderungen der Anwendungsprogramme entgegen und leitet&lt;br /&gt;
diese kontrolliert an die Hardware weiter. Kein Anwendungsprogramm sollte&lt;br /&gt;
direkt auf die Hardware zugreifen können. Den zentralen Zugang schafft einzig&lt;br /&gt;
das Betriebssystem. Somit kann das Betriebssystem unsinnige Anforderungen&lt;br /&gt;
oder Bedienungsfehler abblocken.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Image:Linux.jpg]]&lt;br /&gt;
&lt;br /&gt;
===Aufgaben eines Betriebssystems===&lt;br /&gt;
&lt;br /&gt;
# Verbergen der Komplexität der Maschine vor dem Anwender (Abstraktion)&lt;br /&gt;
# Bereitstellen einer Benutzerschnittstelle (&amp;quot;Kommandointerpreter&amp;quot;, &amp;quot;Shell&amp;quot;)&lt;br /&gt;
# Bereitstellen einer normierten Programmierschnittstelle (API)&lt;br /&gt;
# Verwaltung der Ressourcen der Maschine::&lt;br /&gt;
Hauptspeicher&lt;br /&gt;
Prozessor(en)&lt;br /&gt;
Hintergrundspeicher (Platte, Band, etc.)&lt;br /&gt;
Geräte (Terminal, Drucker, Plotter, etc.)&lt;br /&gt;
Rechenzeit&lt;br /&gt;
Koordination von Prozessen&lt;br /&gt;
&lt;br /&gt;
===Aufbau eines Betriebssystems===&lt;br /&gt;
&lt;br /&gt;
Ein Rechensystem besteht aus Hardware, Systemprogrammen und Anwendungs-&lt;br /&gt;
programmen. Unter einem Betriebssystem wird meist die Summe aus Betriebs-&lt;br /&gt;
systemkern (Kernel) und den wichtigsten Systemprogrammen verstanden. Ein&lt;br /&gt;
minimaler LINUX-Kernel besitzt ungefähr eine Größe von 400 - 800 kByte.&lt;br /&gt;
Weitere wichtige Systemkomponenten benötigen zusätzlich 10 - 100 Mbyte&lt;br /&gt;
Plattenplatz.&lt;br /&gt;
&lt;br /&gt;
Ein Betriebssystem stellt den Rechner als erweiterte Maschine (virtuelle&lt;br /&gt;
Maschine) über definierte Software-Schnittstellen zur Verfügung.&lt;br /&gt;
Das Betriebssystem dient als Betriebsmittelverwalter, der Anforderungen&lt;br /&gt;
befriedigt, protokolliert, abrechnet und vermittelt.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Aufgaben des Betriebssystemkerns:&lt;br /&gt;
&lt;br /&gt;
{| Border=1 Cellpadding=2&lt;br /&gt;
|Prozessverwaltung  (dispatching and scheduling)&lt;br /&gt;
| Mehrere Benutzer können mit mehreren Aktionen gleichzeitig im System arbeiten, ohne sich gegenseitig zu beeinflussen. Damit dies möglich ist,  müssen die Aktionen organisiert, koordiniert und verwaltet werden. Die zu verwaltende Einheit nennt man Prozess.&lt;br /&gt;
|-&lt;br /&gt;
|Speicherverwaltung   (memory management)&lt;br /&gt;
|Zuteilen von Speicherbereichen an laufende Prozesse, Schutz der Speicherbereiche vor unbefugten Zugriffen, bei Speicherengpässen: Auslagern von ganzen (swapping) oder von Teilen (paging) von Prozessen auf die Platte (swap file).&lt;br /&gt;
|-&lt;br /&gt;
|Dateiverwaltung  (file handling)&lt;br /&gt;
|Zuteilung von Plattenplatz für Programme, Benutzer und Systemdienste, Schreiben, Lesen und Strukturieren der Daten auf den Massenspeichern; Durch Bereitstellung einer entsprechenden Schnittstelle (VFS, virtual file system) kann der Kern Dateisysteme unterschiedlichster Art (EXT2, FAT, NFS, HPFS, NTFS, ...) ansprechen.&lt;br /&gt;
|-&lt;br /&gt;
|Geräteverwaltung  (resource management)&lt;br /&gt;
|Der Kern ermöglicht und kontrolliert den Zugriff auf die Hardware. Er steuert die Ein- und Ausgabetätigkeiten der Anwender. An den Kern&lt;br /&gt;
gebunden sind die entsprechenden Gerätetreiber (device driver), die damit eine Kommunikation zwischen Kern und Hardware ermöglichen.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
===Multitasking===&lt;br /&gt;
&lt;br /&gt;
Multitasking bedeutet, dass ein Rechner aus Anwendersicht mehrere Aufgaben&lt;br /&gt;
(Tasks) gleichzeitg übernehmen kann. Das Betriebssystem (OS) unterteilt die&lt;br /&gt;
gleichzeitig anstehenden Aufgaben in Einzelarbeitsschritte (Prozesse) und&lt;br /&gt;
managed durch ein Zeitscheibenverfahren (scheduling) die gleichmäßige&lt;br /&gt;
Abarbeitung der Prozesse.&lt;br /&gt;
&lt;br /&gt;
Es wird unterschieden zwischen:&lt;br /&gt;
&lt;br /&gt;
*non-präamptiven (kooperativen=die Ressourcen werden vom aktiven Prozess freigegeben, bei einem Hänger steht das ganze System)&lt;br /&gt;
&lt;br /&gt;
und&lt;br /&gt;
&lt;br /&gt;
*präamptiven (reinem=der Betriebssystemkern steuert Taskwechsel, indem nach einer festgelegten Zeit vom gerade aktiven Prozess zum nächsten weitergeschaltet wird)&lt;br /&gt;
&lt;br /&gt;
===Mehrprozessorbetrieb===&lt;br /&gt;
&lt;br /&gt;
Bei mehreren Prozessoren und Unterstützung durch das OS&lt;br /&gt;
(NT,Linux,Unix,Novell) können mehrere Tasks auf diese verteilt werden und&lt;br /&gt;
gleichzeitig bearbeitet werden. Nachteilig ist, dass dies nicht oder kaum von&lt;br /&gt;
Anwendungsprogrammen unterstützt wird und es zu Kommunikationsproblemen&lt;br /&gt;
zwischen den einzelnen Tasks kommen kann.&lt;br /&gt;
&lt;br /&gt;
===Arten von von Betriebssystemen===&lt;br /&gt;
&lt;br /&gt;
{|Border=1 Cellpadding=2&lt;br /&gt;
|&lt;br /&gt;
|SingleUser  &lt;br /&gt;
|Multiuser&lt;br /&gt;
|-&lt;br /&gt;
|Single Tasking&lt;br /&gt;
|MS - DOS&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|Multi Tasking&lt;br /&gt;
|Windows 3.x&lt;br /&gt;
|UNIX&lt;br /&gt;
|-&lt;br /&gt;
|&lt;br /&gt;
|Windows 95/98&lt;br /&gt;
|Linux&lt;br /&gt;
|-&lt;br /&gt;
|&lt;br /&gt;
|Windows NT4 ohne Erweiterungen&lt;br /&gt;
|VMS&lt;br /&gt;
|-&lt;br /&gt;
|&lt;br /&gt;
|OS/2 &lt;br /&gt;
|Windows NT mit  Erweiterungen&lt;br /&gt;
|-&lt;br /&gt;
|&lt;br /&gt;
|Apple&lt;br /&gt;
|Windows 2000, XP, 2003&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
===SHELL===&lt;br /&gt;
&lt;br /&gt;
Wenn man mit Linux arbeiten will, kann man nicht direkt mit dem Betriebssystem&lt;br /&gt;
kommunizieren. Man braucht dazu ein Hilfsprogramm, welches die&lt;br /&gt;
Kommandoeingaben ordnungsgemäß an das Betriebssystem weiterleitet. Dieses&lt;br /&gt;
Hilfsprogramm hat den Namen Shell.&lt;br /&gt;
&lt;br /&gt;
Die Shell schirmt den Betriebssystemkern von den Anwendungsprogrammen ab.&lt;br /&gt;
Die unterschiedlichen Shells erfüllen alle dieselbe Aufgabe, sie unterscheiden sich&lt;br /&gt;
allerdings in ihrer Syntax.&lt;br /&gt;
&lt;br /&gt;
==Die Installation im Überblick==&lt;br /&gt;
&lt;br /&gt;
Die Installation von Linux geschieht in folgenden Schritten:&lt;br /&gt;
&lt;br /&gt;
# Analyse (Welche Hardware habe ich? ,Hab ich weitere Betriebsysteme?)&lt;br /&gt;
# Booten des Linux-Kernels. (von CD oder Diskette)&lt;br /&gt;
# Laden einer RAM-Disk (das macht das Installationsprogramm automatisch).&lt;br /&gt;
# Partitionieren der Festplatte (fdisk).&lt;br /&gt;
# Einrichten der Swappartition (mkswap), Formatieren der Festplatte (mkfs).&lt;br /&gt;
# Montieren der Dateisysteme (mount), Aktivieren der Swapbereiche (swapon).&lt;br /&gt;
# Kopieren und Auspacken der Daten vom Installationsmedium auf die Festplatte (die eigentliche Installation). (rpm, dpkg oder tar).&lt;br /&gt;
# Geeignete Wahl der Bootmethode unter Berücksichtigung von Punkt 1 (grub, lilo).&lt;br /&gt;
# Konfiguration des Systems (Netz, Modem etc...).&lt;br /&gt;
&lt;br /&gt;
==Erste Schritte==&lt;br /&gt;
===Anmelden===&lt;br /&gt;
Sie können sich nun mit dem Usernamen und dem Passwort, das sie bei der Installation angelegt haben anmelden!&lt;br /&gt;
[[Image:benutzer.jpg]]&lt;br /&gt;
&lt;br /&gt;
[[Image:passwd.jpg]]&lt;br /&gt;
&lt;br /&gt;
===Terminal öffnen===&lt;br /&gt;
&lt;br /&gt;
Ein Terminal öffnen Sie über das Startmenü:&lt;br /&gt;
&lt;br /&gt;
[[Image:Terminalde.jpg]]&lt;br /&gt;
&lt;br /&gt;
Das geöffnete Terminal sieht dann folgendermaßen aus:&lt;br /&gt;
&lt;br /&gt;
[[Image:Terminalde2.jpg]]&lt;br /&gt;
&lt;br /&gt;
===Sudo===&lt;br /&gt;
Rootrechte erlangen sie über den &amp;quot;Sudo&amp;quot;-Befehl&lt;br /&gt;
 &lt;br /&gt;
''Den nächsten Befehl als root ausführen''&lt;br /&gt;
 xinux@zero:~$ sudo cat /etc/shadow&lt;br /&gt;
 [sudo] password for xinux:&lt;br /&gt;
&lt;br /&gt;
''Eine komplette Sitzung als root starten''&lt;br /&gt;
 xinux@zero:~$ sudo -i&lt;br /&gt;
 [sudo] password for xinux:&lt;br /&gt;
 root@zero:~#&lt;br /&gt;
&lt;br /&gt;
===Virtuelle Konsolen===&lt;br /&gt;
&lt;br /&gt;
In die Virtuelle Konsole gelangen sie über &amp;quot;STRG+ALT+(F1-F6)&amp;quot;.&lt;br /&gt;
Sie funktioniert wie ein ganz normales Terminal, und mit &amp;quot;ALT+F7&amp;quot;&lt;br /&gt;
gelangen sie wieder zurück auf die grafische Benutzeroberfläche&lt;br /&gt;
&lt;br /&gt;
===Abmelden===&lt;br /&gt;
&lt;br /&gt;
Abmelden können Sie sich wieder über das Startmenu unter:&lt;br /&gt;
&lt;br /&gt;
[[Image:Logout.jpg]]&lt;br /&gt;
&lt;br /&gt;
Fals sie nur einzelne Sitzungen in einem der Terminals oder &lt;br /&gt;
den Virtuellen Konsolen Abmelden wollen benutzen sie dazu den Befehl: &amp;quot;exit&amp;quot;&lt;br /&gt;
&lt;br /&gt;
===Herunterfahren===&lt;br /&gt;
&lt;br /&gt;
Das Herunterfahren funktioniert auf dem selben Weg.&lt;br /&gt;
&lt;br /&gt;
Entweder sie Benutzen wieder das Startmenü und benutzen diesmal den &amp;quot;Ausschalten ...&amp;quot; Knopf,&lt;br /&gt;
&lt;br /&gt;
Oder sie geben den äquivalenten &amp;quot;shutdown&amp;quot;-Befehl in einem Terminal bzw. der virtuellen Konsole ein.&lt;br /&gt;
&lt;br /&gt;
Allerdings müssen sie dazu als Administrator angemeldet sein s. &amp;quot;Sudo&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Wenn Sie den &amp;quot;shutdown&amp;quot;-Befehl benutzen wollen muss hinter den Befehl&lt;br /&gt;
&lt;br /&gt;
eine Zeitangabe in Minuten oder das wort &amp;quot;now&amp;quot; für sofortiges Ausschalten hinzugefügt werden:&lt;br /&gt;
&lt;br /&gt;
 xinux@zero:~$ sudo -i&lt;br /&gt;
 root@zero:~# shutdown 60&lt;br /&gt;
 &lt;br /&gt;
 Broadcast message from xinux@zero &lt;br /&gt;
         (/dev/pts/3) at 14:29 ...&lt;br /&gt;
 &lt;br /&gt;
 The system is going down for maintenance in 60 minutes!&lt;br /&gt;
&lt;br /&gt;
Sollten sie den Befehl widerrufen wollen dann drücken sie &amp;quot;STRG+C&amp;quot;,&lt;br /&gt;
&lt;br /&gt;
in dem Terminal in dem der shutdown Befehl gestartet wurde,&lt;br /&gt;
&lt;br /&gt;
oder geben sie den &amp;quot;shutdown&amp;quot;-Befehl zusammen mit der Abbruchoption &amp;quot;-c&amp;quot; in einem anderen Terminal ein:&lt;br /&gt;
&lt;br /&gt;
 root@zero:~# shutdown -c&lt;br /&gt;
&lt;br /&gt;
 shutdown: Shutdown cancelled&lt;br /&gt;
 root@zero:~# &lt;br /&gt;
&lt;br /&gt;
Wenn Sie den Rechner Neustarten möchten gibt es dazu die Option &amp;quot;-r&amp;quot; für den &amp;quot;shutdown&amp;quot;-Befehl&lt;br /&gt;
&lt;br /&gt;
oder den &amp;quot;reboot&amp;quot;-Befehl die beide auch als root ausgeführt werden müssen:&lt;br /&gt;
&lt;br /&gt;
 xinux@zero:~$ sudo -i&lt;br /&gt;
 [sudo] password for xinux: &lt;br /&gt;
 root@zero:~# shutdown -r now&lt;br /&gt;
&lt;br /&gt;
 root@zero:~# reboot&lt;br /&gt;
&lt;br /&gt;
===&amp;quot;man&amp;quot;===&lt;br /&gt;
&lt;br /&gt;
Programm zum Einsehen der Online-Manuals&lt;br /&gt;
&lt;br /&gt;
Die Manuals sind in folgende Sektionen unterteilt:&lt;br /&gt;
# Ausführbare Programme oder Shellbefehle&lt;br /&gt;
# Systemaufrufe (Kernelfunktionen)&lt;br /&gt;
# Bibliotheksaufrufe (Funktionen in System-Bibliotheken)&lt;br /&gt;
# Spezielle Dateien (gewöhnlich in /dev)&lt;br /&gt;
# Dateiformate und Konventionen, z. B. /etc/passwd&lt;br /&gt;
# Spiele&lt;br /&gt;
# Makropakete und Konventionen, z. B. man(7), groff(7)&lt;br /&gt;
# Systemadministrationsbefehle (in der Regel nur für root)&lt;br /&gt;
# Kernelroutinen [Nicht Standard]&lt;br /&gt;
&lt;br /&gt;
Aufruf eines Manuals erfolgt durch ''man kommando''&lt;br /&gt;
Beendet wird durch Drücken des Buchstabens q&lt;br /&gt;
Gesucht wird vorwärts durch Eingabe eines /suchausdruck&lt;br /&gt;
Gesucht wird rückwärts durch Eingabe eines ?suchausdruck&lt;br /&gt;
&lt;br /&gt;
Beispiele:&lt;br /&gt;
&lt;br /&gt;
      man passwd        Anschauen der Manualseite zum Programm passwd&lt;br /&gt;
      man 5 passwd      Anschauen der Manualseite zur Datei /etc/passwd&lt;br /&gt;
      man -a passwd     Anschauen aller Manualseiten zu passwd&lt;br /&gt;
      man -k passwd     Durchsucht die Kurzbeschreibungen der Manualseite&lt;br /&gt;
                        nach passwd und gibt alle Treffer aus&lt;br /&gt;
      man -f passwd      Gibt alle gefunden Kurzbescheibungen zu passwd aus&lt;br /&gt;
      man -L en passwd Gibt englische Manualseiten aus&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Was geht vor auf meinem System? (date,who)===&lt;br /&gt;
&lt;br /&gt;
Das Kommando date dient zur Abfrage von Datum und Uhrzeit.&lt;br /&gt;
&lt;br /&gt;
 xinux@zero:~ &amp;gt; date&lt;br /&gt;
 Fre Mär 16 16:35:03 CET 2001&lt;br /&gt;
&lt;br /&gt;
oder auch Anzeige der Grennwich Zeit:&lt;br /&gt;
&lt;br /&gt;
 xinux@zero:~ &amp;gt; date -u&lt;br /&gt;
 Fre Mär 16 15:35:34 UTC 2001&lt;br /&gt;
&lt;br /&gt;
 xinux@zero:~ &amp;gt; date -u &amp;quot;+%X&amp;quot;&lt;br /&gt;
 15:37:19&lt;br /&gt;
&lt;br /&gt;
 xinux@zero:~ &amp;gt; date -u &amp;quot;+%x&amp;quot;&lt;br /&gt;
 01/15/02&lt;br /&gt;
&lt;br /&gt;
who zeigt alle angemeldeten Benutzer an&lt;br /&gt;
&lt;br /&gt;
 thomas@cardassia:~ &amp;gt; who&lt;br /&gt;
 thomas             tty1 Feb 27 16:39&lt;br /&gt;
 thomas             tty2 Mar 2 17:08&lt;br /&gt;
 tina               tty6 Mar 16 16:38&lt;br /&gt;
&lt;br /&gt;
Mit `who --help' bekommen Sie mehr Informationen.&lt;br /&gt;
&lt;br /&gt;
 thomas@cardassia:~ &amp;gt; who --help&lt;br /&gt;
&lt;br /&gt;
Benutzung: who [OPTION]... [ DATEI | ARG1 ARG2 ]&lt;br /&gt;
&lt;br /&gt;
 -H, --heading             print line of column headings&lt;br /&gt;
 -i, -u, --idle            add user idle time as HOURS:MINUTES, . or old&lt;br /&gt;
 -l, --lookup              attempt to canonicalize hostnames via DNS&lt;br /&gt;
 -m                        only hostname and user associated with stdin&lt;br /&gt;
 -q, --count               all login names and number of users logged on&lt;br /&gt;
 -s                        (ignored)&lt;br /&gt;
 -T, -w, --mesg            add user's message status as +, - or ?&lt;br /&gt;
     --message             same as -T&lt;br /&gt;
     --writable            same as -T&lt;br /&gt;
     --help                display this help and exit&lt;br /&gt;
     --version             output version information and exit&lt;br /&gt;
&lt;br /&gt;
==Das UNIX-Dateisystem==&lt;br /&gt;
===Verzeichnisbaum===&lt;br /&gt;
&lt;br /&gt;
[[Image:vztree.jpg]]&lt;br /&gt;
&lt;br /&gt;
Das Betriebssystem UNIX besitzt ein hierarchisches Dateisystem. Es besteht aus:&lt;br /&gt;
* Dateien (Files)&lt;br /&gt;
Dateien speichern Informationen (Text, Bilder, Sound, Videos, Programme) und&lt;br /&gt;
werden über den Dateinamen angesprochen.&lt;br /&gt;
&lt;br /&gt;
* Verzeichnissen (Directories, Kataloge)&lt;br /&gt;
Verzeichnisse besitzen ebenfalls einen Namen und dienen zur Ordnung des&lt;br /&gt;
Dateisystems. Ein Verzeichnis kann Dateien und Unterverzeichnisse&lt;br /&gt;
(Subdirectories) enthalten. Das oberste Verzeichnis im Dateisystem heisst&lt;br /&gt;
Rootverzeichnis oder kurz Root und wird durch / (sprich: slash)&lt;br /&gt;
gekennzeichnet.&lt;br /&gt;
&lt;br /&gt;
Im Gegensatz zu Windows kennt UNIX keine Laufwerke.&lt;br /&gt;
Das obige Bild zeigt ein typisches UNIX-Dateisystem.&lt;br /&gt;
Unterhalb des Rootverzeichnisses befinden sich eine Vielzahl vonVerzeichnissen.&lt;br /&gt;
&lt;br /&gt;
===Wichtige Verzeichnisse===&lt;br /&gt;
&lt;br /&gt;
• '''Homeverzeichnis'''&lt;br /&gt;
&lt;br /&gt;
das Verzeichnis, in dem man sich unmittelbar nach dem Anmelden befindet. Das&lt;br /&gt;
Homeverzeichnis wird vom Systemverwalter eingerichtet; jeder Anwender&lt;br /&gt;
besitzt ein festes Homeverzeichnis. z.B. /home/hans&lt;br /&gt;
&lt;br /&gt;
~ (Tilde) bzw. $HOME (Shellvariable) kennzeichnen das Homeverzeichnis.&lt;br /&gt;
&lt;br /&gt;
• '''Aktuelles Verzeichnis'''&lt;br /&gt;
&lt;br /&gt;
Verzeichnis, in dem man sich aktuell befindet.&lt;br /&gt;
Das aktuelle Verzeichnis wird mit dem Befehl cd (change directory) oder per&lt;br /&gt;
Mausklick verändert.&lt;br /&gt;
Ein einfacher Punkt . kennzeichnet das aktuelle Verzeichnis.&lt;br /&gt;
&lt;br /&gt;
• '''Elternverzeichnis'''&lt;br /&gt;
&lt;br /&gt;
Verzeichnis unmittelbar oberhalb des aktuellen Verzeichnisses.&lt;br /&gt;
Jedes Verzeichnis ausser / besitzt genau ein Elternverzeichnis.&lt;br /&gt;
Zwei Punkte .. kennzeichnen das Elternverzeichnis (abhängig vom aktuellen&lt;br /&gt;
VZ).&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Absoluter Pfadname:===&lt;br /&gt;
&lt;br /&gt;
Beschreibt ausgehend vom Rootverzeichnis den Weg zum Zielverzeichnis oder zur&lt;br /&gt;
Zieldatei. (Welche Verzeichnisse müssen ausgehend von / durchlaufen werden, um&lt;br /&gt;
zum Ziel zu kommen?) Ein absoluter Pfadname beginnt immer mit / .&lt;br /&gt;
&lt;br /&gt;
===Relativer Pfadname:===&lt;br /&gt;
&lt;br /&gt;
Beschreibt ausgehend vom aktuellen Verzeichnis den Weg zum Zielverzeichnis&lt;br /&gt;
oder zur Zieldatei; ein relativer Pfadname beginnt nicht mit / .&lt;br /&gt;
/home/suxer&lt;br /&gt;
absoluter Pfadname für das Verzeichnis sub1 im Homeverzeichnis von suxer&lt;br /&gt;
&lt;br /&gt;
===Verzeichnisstruktur===&lt;br /&gt;
&lt;br /&gt;
 /bin         Kommandos die beim starten benötigt werden (Zugriff hat jeder)&lt;br /&gt;
 /sbin        Wichtige System-Programme (In der Regel root vorberhalten)&lt;br /&gt;
 /boot        Hier findet man die Dateien des Bootmanagers und des Kernel.&lt;br /&gt;
 /dev         In diesem Verzeichnis stehen die Gerätedateien (Devices),&lt;br /&gt;
 /home        Alle Heimatverzeichnisse der Nutzer findet man hier.&lt;br /&gt;
 /lib         Beim Systemstart benötigten Bibliotheken und Modules stehen hier.&lt;br /&gt;
 /mnt         Mountpunkt für temporäre Partitionen&lt;br /&gt;
 /opt         Software, die nicht Installationsumfang von Linux gehören.&lt;br /&gt;
 /root        Heimatverzeichnis des Administrators.&lt;br /&gt;
 /tmp         Temporäre Dateien können hier abgelegt werden&lt;br /&gt;
 /usr         statische Dateien (kann read-only gemountet sein)&lt;br /&gt;
 /var         variable Dateien (muss beschreibar sein )&lt;br /&gt;
 /etc         Konfiguartionsdateien und Startscripte&lt;br /&gt;
 /proc        Virtuelles Dateisystem -&amp;gt; repräsentiert den Kernel&lt;br /&gt;
&lt;br /&gt;
===Unterverzeichnisse von /usr===&lt;br /&gt;
&lt;br /&gt;
 sbin         Programme für root die beim Start nicht benötigt werden&lt;br /&gt;
 bin          Programme für alle die beim Start nicht benötigt werden&lt;br /&gt;
 X11R6        Dateien des X-Window-Sytems&lt;br /&gt;
 bin          Ausführbare Programme&lt;br /&gt;
 doc          Dokumentationen&lt;br /&gt;
 etc          Konfigurationsdateien&lt;br /&gt;
 games        Spiele&lt;br /&gt;
 include      Headerdateien für C-Programme&lt;br /&gt;
 local        Pakete die nicht zur Distribution gehören ähnlich /opt&lt;br /&gt;
 share        Pakete die von mehreren Paketen genutzt werden&lt;br /&gt;
 share/man    Die Manualpages&lt;br /&gt;
 share/info   Seiten des Infosystems&lt;br /&gt;
 share/doc    Dokumentationen&lt;br /&gt;
 src          Sources von Programmen (Kernel und andere)&lt;br /&gt;
&lt;br /&gt;
===Unterverzeichnisse von /var===&lt;br /&gt;
&lt;br /&gt;
 cache        Zwischenspreicher für Progammes&lt;br /&gt;
 games        Variable Daten der Games (Scores etc...)&lt;br /&gt;
 lock         Sperrdateien&lt;br /&gt;
 log          Die Logdateien (wichtiges Verzeichnis für Admins)&lt;br /&gt;
 mail         Das Mailsystem&lt;br /&gt;
 run          Dateien zu laufemdem Prozessen&lt;br /&gt;
 spool        Spooldateien (z.B. für das Drucksystem&lt;br /&gt;
 state        Statusinfos&lt;br /&gt;
 tmp          Wie /tmp eventuell nicht auf root Partion&lt;br /&gt;
&lt;br /&gt;
==Einfache Komandos==&lt;br /&gt;
===cd: Wechseln des Arbeitsverzeichnis===&lt;br /&gt;
&lt;br /&gt;
Um festzustellen in welchem Verzeichnis man sich befindet, sollte man den&lt;br /&gt;
Befehl &amp;quot;pwd&amp;quot; benutzen,&lt;br /&gt;
&lt;br /&gt;
und mit dem Befehl &amp;quot;cd&amp;quot; kann man zwischen den Verzeichnissen wechseln:&lt;br /&gt;
&lt;br /&gt;
Wechsele ins homeverzeichnis von Xinux&lt;br /&gt;
&lt;br /&gt;
 xinux@zero:~$ cd /home/xinux/&lt;br /&gt;
 xinux@zero:~$ pwd&lt;br /&gt;
 /home/xinux&lt;br /&gt;
&lt;br /&gt;
cd ~ -&amp;gt; wechsele ins jeweilige Homeverzeichnis&lt;br /&gt;
&lt;br /&gt;
cd .. -&amp;gt; wechsele ein Verzeichnis höher&lt;br /&gt;
&lt;br /&gt;
cd ../verzeichnis -&amp;gt; wechsele in eine paralleles Verzeichnis &amp;lt;- (ist eine relative Pfadangabe !)&lt;br /&gt;
&lt;br /&gt;
cd - -&amp;gt; wechsele in das Verzeichnis, in dem vorher gearbeitet wurde.&lt;br /&gt;
&lt;br /&gt;
Mit cd / wechselt man in das Wurzelverzeichnis.&lt;br /&gt;
&lt;br /&gt;
 xinux@zero:/var/log$ cd /&lt;br /&gt;
 xinux@zero:/$ pwd&lt;br /&gt;
 /&lt;br /&gt;
&lt;br /&gt;
===ls: Listing===&lt;br /&gt;
&lt;br /&gt;
Den Inhalt von Verzeichnissen kann man sich mit dem Befehl &amp;quot;ls&amp;quot; anzeigen lassen&lt;br /&gt;
wobei &amp;quot;ls&amp;quot; eine Vielzahl von Optionen besitzt:&lt;br /&gt;
&lt;br /&gt;
 ls                                  standard&lt;br /&gt;
 ls -l                               langes listing&lt;br /&gt;
 ls -a                               alle Dateien&lt;br /&gt;
 ls -i                               mit Inode&lt;br /&gt;
 ls -h                               gut lesbare Dateigröße&lt;br /&gt;
 ls -d                               Verzechnis wird angezeigt, nicht der Inhalt&lt;br /&gt;
 ls -L                               sortiert nach Größe&lt;br /&gt;
 ls -t                               sortiert nach Datum&lt;br /&gt;
 ls -F                               mit nützlichem Anhang&lt;br /&gt;
&lt;br /&gt;
 xinux@zero:/$ ls -l /var/log/messages&lt;br /&gt;
 -rw-r----- 1 syslog adm 2296 2009-06-16 10:05 /var/log/messages&lt;br /&gt;
&lt;br /&gt;
===more: Seitenweises Anzeigen von Seiten===&lt;br /&gt;
 root@zero:~# more /var/log/messages&lt;br /&gt;
 ...&lt;br /&gt;
&lt;br /&gt;
===head: erste Zeilen anzeigen===&lt;br /&gt;
Erste 10 Zeilen anzeigen&lt;br /&gt;
 root@zero:~# head /var/log/messages&lt;br /&gt;
 Jun 15 12:37:08 zero syslogd 1.5.0#5ubuntu3: restart.&lt;br /&gt;
 Jun 15 12:38:43 zero kernel: [  830.065036] mtrr: your processor doesn't support write-combining&lt;br /&gt;
 Jun 15 12:46:05 zero pulseaudio[4817]: pid.c: Stale PID file, overwriting.&lt;br /&gt;
 Jun 15 13:05:24 zero -- MARK --&lt;br /&gt;
 ...&lt;br /&gt;
&lt;br /&gt;
Erste zwei Zeilen anzeigen&lt;br /&gt;
 root@zero:~# head -n 2 /var/log/messages&lt;br /&gt;
 Jun 15 12:37:08 zero syslogd 1.5.0#5ubuntu3: restart.&lt;br /&gt;
 Jun 15 12:38:43 zero kernel: [  830.065036] mtrr: your processor doesn't support write-combining&lt;br /&gt;
&lt;br /&gt;
===tail: letzte Zeilen anzeigen===&lt;br /&gt;
 &lt;br /&gt;
 root@zero:~# tail /var/log/syslog&lt;br /&gt;
 ...&lt;br /&gt;
 Jun 19 11:19:35 zero -- MARK --&lt;br /&gt;
 Jun 19 11:39:35 zero -- MARK --&lt;br /&gt;
 Jun 19 11:59:36 zero -- MARK --&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Letze 5 Zeilen anzeigen&lt;br /&gt;
 root@zero:~# tail -n 5 /var/log/auth.log&lt;br /&gt;
 Jun 18 14:30:01 zero CRON[12040]: pam_unix(cron:session): session closed for user root&lt;br /&gt;
 Jun 18 14:39:01 zero CRON[12191]: pam_unix(cron:session): session opened for user root by (uid=0)&lt;br /&gt;
 Jun 18 14:39:01 zero CRON[12191]: pam_unix(cron:session): session closed for user root&lt;br /&gt;
 Jun 18 14:40:01 zero CRON[12237]: pam_unix(cron:session): session opened for user root by (uid=0)&lt;br /&gt;
 Jun 18 14:40:01 zero CRON[12237]: pam_unix(cron:session): session closed for user root&lt;br /&gt;
&lt;br /&gt;
Letze Zeilen anzeigen und fortlaufend aktualisieren&lt;br /&gt;
 root@zero:~# tail -f /var/log/syslog&lt;br /&gt;
 ...&lt;br /&gt;
&lt;br /&gt;
===mkdir: Ein neues Verzeichnis erstellen===&lt;br /&gt;
&lt;br /&gt;
 mkdir        verzeichnis&lt;br /&gt;
Erstellt ein Verzeichnis im working directory (wd)&lt;br /&gt;
&lt;br /&gt;
 mkdir  -p    ver1/ver2&lt;br /&gt;
Erstellt ein Verzeichnis ver2 unterhalb von ver1&lt;br /&gt;
wenn ver1 nicht existiert wird es erstellt&lt;br /&gt;
&lt;br /&gt;
 mkdir -m 753 ver1&lt;br /&gt;
Es wird das Verzeichnis ver1 erstellt mit der mask 753&lt;br /&gt;
&lt;br /&gt;
 mkdir -v     ver1&lt;br /&gt;
Geschwätzige Ausgabe :)&lt;br /&gt;
&lt;br /&gt;
===Zum Löschen von leeren Verzeichnissen wird rmdir benutzt===&lt;br /&gt;
&lt;br /&gt;
 rmdir           ver1&lt;br /&gt;
Löscht das leere Verzeichnis ver1&lt;br /&gt;
&lt;br /&gt;
 rmdir -v        ver1&lt;br /&gt;
Löscht das leere Verzeichnis ver1 und ist geschwätzig&lt;br /&gt;
&lt;br /&gt;
 rmdir -p        /ver1/ver2/ver3&lt;br /&gt;
Löscht das Verzeichnis ver3; wenn dadurch ver2 ein leeres&lt;br /&gt;
Verzeichnis wird, wird dieses auch gelöscht , wenn ver1&lt;br /&gt;
dadurch ein leeres Verzeichnis wird, wird auch dieses gelöscht.&lt;br /&gt;
&lt;br /&gt;
===touch Verändern des Zeitstempels===&lt;br /&gt;
&lt;br /&gt;
Mit touch können wir eine neue leere Datei erzeugen (das ist nicht der eigentliche&lt;br /&gt;
Zweck von touch, eigentlich wird der Zeitstempel geändert)&lt;br /&gt;
&lt;br /&gt;
 touch            dateiname&lt;br /&gt;
&lt;br /&gt;
===Kopieren=== &lt;br /&gt;
cp ist das Kommando um Dateien zu kopieren &lt;br /&gt;
&lt;br /&gt;
Eine Kopie von dat1 mit dem Namen dat2 erstellen:&lt;br /&gt;
&lt;br /&gt;
 xinux@zero:~$ cp dat1 dat2&lt;br /&gt;
&lt;br /&gt;
Eine Kopie von dat1 ins Verzeichnis ver2 erstellen:&lt;br /&gt;
&lt;br /&gt;
 xinux@zero:~$ cp dat1 ver2/&lt;br /&gt;
 &lt;br /&gt;
Eine Kopie erstellen mit ausführlicher Anzeige:&lt;br /&gt;
&lt;br /&gt;
 xinux@zero:~$ cp -v dat1 dat2&lt;br /&gt;
 `dat1' -&amp;gt; `dat2'&lt;br /&gt;
&lt;br /&gt;
Eine Kopie erstellen mit Rückfrage fals etwas überschrieben wird:&lt;br /&gt;
&lt;br /&gt;
 xinux@zero:~$ cp -i dat1 dat2&lt;br /&gt;
 cp: overwrite `dat2'?&lt;br /&gt;
&lt;br /&gt;
Eine Kopie erstellen und die Rückfrage überbrücken:&lt;br /&gt;
&lt;br /&gt;
 xinux@zero:~$ cp -f dat1 dat2&lt;br /&gt;
&lt;br /&gt;
Eine Kopie von dat1 ins Verzeichnis ver2 erstellen fals keine neuere Version von dat1 vorliegt:&lt;br /&gt;
&lt;br /&gt;
 xinux@zero:~$ cp -u dat1 ver2/&lt;br /&gt;
&lt;br /&gt;
Eine Kopie erstellen fals ver2 auf dem selben Dateisystem wie dat1 liegt:&lt;br /&gt;
&lt;br /&gt;
 xinux@zero:~$ cp -x dat1 ver2/&lt;br /&gt;
&lt;br /&gt;
Eine Kopie von ver1, die als ver2 oder unter ver2 als ver1 gespeichert wird erstellen:&lt;br /&gt;
&lt;br /&gt;
 xinux@zero:~$ cp -r ver1/ ver2/&lt;br /&gt;
&lt;br /&gt;
Eine Kopie von einer Datei erstellen und ihre Attribute beibehalten:&lt;br /&gt;
&lt;br /&gt;
 xinux@zero:~$ cp -p sux1 sux2&lt;br /&gt;
&lt;br /&gt;
Eine Kopie erstellen bei der die Links erhalten bleiben:&lt;br /&gt;
&lt;br /&gt;
 xinux@zero:~$ cp -r ver1/ ver2/&lt;br /&gt;
&lt;br /&gt;
Eine Kopie erstellen zum Archivieren (-dpr):&lt;br /&gt;
&lt;br /&gt;
 xinux@zero:~$ cp -a ver1/ ver2/&lt;br /&gt;
&lt;br /&gt;
===rm: Löschen einer Datei===&lt;br /&gt;
&lt;br /&gt;
Um Dateien zu löschen, brauchen wir das Kommando &amp;quot;rm&amp;quot;:&lt;br /&gt;
&lt;br /&gt;
 rm               dat1        dat1 wird gelöscht&lt;br /&gt;
 rm         -i    dat1        dat1 wird nach Bestätigung gelöscht&lt;br /&gt;
 rm         -f    dat1        dat1 wird ohne Rückfragen gelöscht&lt;br /&gt;
 rm         -v    dat1        dat1 wird glöscht (geschwätzige Ausgabe)&lt;br /&gt;
 rm         -r    ver1        Löschen von nicht leeren Verzeichnissen&lt;br /&gt;
                              Achtung !!! Als root kann man sich damit Teile&lt;br /&gt;
                              oder sogar den gesamten Verzeichnisbaum&lt;br /&gt;
                              absägen !!!&lt;br /&gt;
&lt;br /&gt;
===mv: Verschieben===&lt;br /&gt;
&lt;br /&gt;
Mit dem Befehl &amp;quot;mv&amp;quot; werden Daten verschoben, folgendes gilt:&lt;br /&gt;
&lt;br /&gt;
 mv          dat1 dat2         &lt;br /&gt;
Die Datei dat1 wird in dat2 umbenannt&lt;br /&gt;
 mv          dat1 /ver1        &lt;br /&gt;
Die Datei dat1 wird nach /ver1 verschoben&lt;br /&gt;
&lt;br /&gt;
Die Parameter und ihre Bedeutung:&lt;br /&gt;
&lt;br /&gt;
      -i                      wenn eine Datei exisitiert wird vor dem&lt;br /&gt;
                              Überschreiben nachgefragt&lt;br /&gt;
      -v                      verbose (geschwätzig)&lt;br /&gt;
      -u                      nur neuere Daten werden bei Bedarf überschrieben&lt;br /&gt;
      -b                      wenn überschrieben werden soll, wird ein Backup&lt;br /&gt;
                              erstellt&lt;br /&gt;
      -S ENDUNG               das Backup bekommt die Endung ENDUNG&lt;br /&gt;
&lt;br /&gt;
===su Benutzer wechseln===&lt;br /&gt;
&lt;br /&gt;
 su -             &lt;br /&gt;
Wechsel zum Rootaccount, wie wenn dieser sich neu anmelden würde. (Bsp: su -)&lt;br /&gt;
&lt;br /&gt;
 su Benutzernamen &lt;br /&gt;
Wechsel der Identität zu Benutzer (gegebenenfalls Passwortabfrage)&lt;br /&gt;
&lt;br /&gt;
 su -c Kommando   &lt;br /&gt;
Kommando wird als rootaccount ausgeführt&lt;br /&gt;
&lt;br /&gt;
==Der Standard Editor vi==&lt;br /&gt;
Der vi ist der Standardeditor in der Unixwelt. Er ist in jedem Unix-Derivat&lt;br /&gt;
enthalten.&lt;br /&gt;
Der Editor hat zwar den schlechten Ruf umständlich zu bedienen zu sein, ist&lt;br /&gt;
jedoch sehr leistungsfähig und systemübergreifend verfügbar. Beim vi handelt es&lt;br /&gt;
sich um einen rein textorientierten Editor, der mittels eigener Kommandos&lt;br /&gt;
gesteuert wird.&lt;br /&gt;
&lt;br /&gt;
Der Editor VIM ist eine weitere Verbesserung von VI und leichter zu bedienen.&lt;br /&gt;
Und unter Ubuntu/Debian mit &amp;quot;apt-get install vim&amp;quot; zu installieren.&lt;br /&gt;
&lt;br /&gt;
===Starten des Editors:===&lt;br /&gt;
&lt;br /&gt;
Der Editorstart erfolgt einfach durch die Eingabe des Kommandos vi mit dem&lt;br /&gt;
Dateinamen der zu editierenden Datei als Parameter.&lt;br /&gt;
Beispiel:        &lt;br /&gt;
 vi sux.txt&lt;br /&gt;
&lt;br /&gt;
===Die Betriebsmodi des vi:===&lt;br /&gt;
&lt;br /&gt;
Ein Umstand, der dem vi den Ruf der komplizierten Bedienbarkeit zugetragen hat,&lt;br /&gt;
sind die unterschiedlichen Betriebsmodi des Editors. Genauer gesagt verfügt der&lt;br /&gt;
vi über drei Betriebsmodi:&lt;br /&gt;
&lt;br /&gt;
====Kommandomodus:====&lt;br /&gt;
&lt;br /&gt;
Innerhalb dieses Modus werden die eingegebenen Zeichen direkt als Befehle des&lt;br /&gt;
Editors interpretiert und ausgeführt. Dabei gibt es weder ein Bereitschaftszeichen&lt;br /&gt;
(Prompt) noch ein Echo (Ausgabe). Der Kommandomodus ist der Modus, in dem&lt;br /&gt;
sich der vi direkt nach seinem Start befindet.&lt;br /&gt;
&lt;br /&gt;
====Zeilenmodus oder Exmodus:====&lt;br /&gt;
&lt;br /&gt;
Dieser Modus ist der einzige Modus mit einem eigenen Bereitschaftszeichen,&lt;br /&gt;
nämlich dem Doppelpunkt (:). Das Prompt wird ebenso wie die Befehlsausgaben&lt;br /&gt;
in der Statuszeile angezeigt.&lt;br /&gt;
&lt;br /&gt;
====Eingabemodus:====&lt;br /&gt;
&lt;br /&gt;
Der Eingabemodus ist derjenige, in welchem der zu bearbeitende Text bearbeitet&lt;br /&gt;
werden kann. Alle hier eingegebenen Zeichen werden als Text für die aktuelle&lt;br /&gt;
Datei interpretiert. Zwischen den unterschiedlichen Modi kann jederzeit&lt;br /&gt;
gewechselt werden. Von Kommandomodus gelangen Sie durch mehere Wege in&lt;br /&gt;
den Eingabemodus. Man kann durch folgende Aktionen wechslen&lt;br /&gt;
&lt;br /&gt;
{| border=1 cellpadding=2&lt;br /&gt;
|i&lt;br /&gt;
|Text vor der aktuellen Cursorposition einfügen&lt;br /&gt;
|-&lt;br /&gt;
|I&lt;br /&gt;
|Text am Zeilenanfang einfügen&lt;br /&gt;
|-&lt;br /&gt;
|a&lt;br /&gt;
|Text hinter der aktuellen Cursorposition einfügen&lt;br /&gt;
|-&lt;br /&gt;
|A&lt;br /&gt;
|Text am Zeilenende einfügen&lt;br /&gt;
|-&lt;br /&gt;
|o&lt;br /&gt;
|Unterhalb der aktuellen Zeile eine neue Zeile einfügen&lt;br /&gt;
|-&lt;br /&gt;
|O&lt;br /&gt;
|Oberhalb der aktuellen Zeile eine neue Zeile einfügen&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Durch das Drücken der ESC - Taste gelangt man in den Kommandomodus zurück.&lt;br /&gt;
&lt;br /&gt;
Im Kommandomodus können Sie durch den Text navigieren und auch den Text&lt;br /&gt;
selbst bearbeiten, z.B ausschneiden, kopieren usw. Dazu sind einige Kommandos&lt;br /&gt;
nötig, von denen die wichtigsten im Folgenden erläutert werden:&lt;br /&gt;
&lt;br /&gt;
 xinux@zero:/$ vi iwas.txt&lt;br /&gt;
&lt;br /&gt;
[[Image:vim.jpg]]&lt;br /&gt;
&lt;br /&gt;
===Benutzen des Kommandomodus===&lt;br /&gt;
====Steuerung des Cursors durch den Text====&lt;br /&gt;
&lt;br /&gt;
Mittels folgender Kommandos bewegt sich der Cursor durch den Text:&lt;br /&gt;
&lt;br /&gt;
{| border=1 cellpadding=2&lt;br /&gt;
|h&lt;br /&gt;
|Cursor ein Zeichen nach links&lt;br /&gt;
|-&lt;br /&gt;
|l&lt;br /&gt;
|Cursor ein Zeichen nach rechts&lt;br /&gt;
|-&lt;br /&gt;
|k&lt;br /&gt;
|Cursor eine Zeile nach oben&lt;br /&gt;
|-&lt;br /&gt;
|j&lt;br /&gt;
|Cursor eine Zeile nach unten&lt;br /&gt;
|-&lt;br /&gt;
|w&lt;br /&gt;
|Cursor ein Wort nach rechts&lt;br /&gt;
|-&lt;br /&gt;
|b&lt;br /&gt;
|Cursor ein Wort nach links&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Alle diese Kommandos können mit einem vorgestellten Wiederholungsfaktor&lt;br /&gt;
arbeiten. Der Befehl 3w verschiebt demnach den Cursor um 3 Wörter nach rechts.&lt;br /&gt;
&lt;br /&gt;
====Angaben zur Positionierung====&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{| border=1 cellpadding=2&lt;br /&gt;
|STRG+U&lt;br /&gt;
|1⁄2 Bildschirmseite nach oben&lt;br /&gt;
|-&lt;br /&gt;
|STRG+D&lt;br /&gt;
|1⁄2 Bildschirmseite nach unten&lt;br /&gt;
|-&lt;br /&gt;
|STRG+B&lt;br /&gt;
|1 Bildschirmseite nach oben&lt;br /&gt;
|-&lt;br /&gt;
|STRG+F&lt;br /&gt;
|1 Bildschirmseite nach unten&lt;br /&gt;
|-&lt;br /&gt;
|/Ausdruck&lt;br /&gt;
|Sucht den Ausdruck (vorwärts) Weitersuchen mit n , N&lt;br /&gt;
|-&lt;br /&gt;
|?Ausdruck&lt;br /&gt;
|Sucht den Ausdurck (rückwärts) Weitersuchen mit n , N&lt;br /&gt;
|-&lt;br /&gt;
|0&lt;br /&gt;
|Zeilenanfang&lt;br /&gt;
|-&lt;br /&gt;
|$&lt;br /&gt;
|Zeilenende&lt;br /&gt;
|-&lt;br /&gt;
|w&lt;br /&gt;
|Nächstes Wort&lt;br /&gt;
|-&lt;br /&gt;
|b&lt;br /&gt;
|Vorheriges Wort&lt;br /&gt;
|-&lt;br /&gt;
|fc&lt;br /&gt;
|Auf das Zeichen c springen. c steht für ein beliebiges Zeichen&lt;br /&gt;
|-&lt;br /&gt;
|G&lt;br /&gt;
|Letzte Zeile der Datei&lt;br /&gt;
|-&lt;br /&gt;
|ng&lt;br /&gt;
|n-te Zeile der Datei&lt;br /&gt;
|-&lt;br /&gt;
|H&lt;br /&gt;
|Anfang der Bildschirmseite&lt;br /&gt;
|-&lt;br /&gt;
|L&lt;br /&gt;
|Ende der Bildschirmseite&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
====Befehle zur Textbearbeitung -&amp;gt; Was soll geschehen====&lt;br /&gt;
&lt;br /&gt;
{| Border=1 Cellpadding=2&lt;br /&gt;
|x&lt;br /&gt;
|Löscht Zeichen&lt;br /&gt;
|-&lt;br /&gt;
|d&lt;br /&gt;
|Löschen und in den Puffer laden&lt;br /&gt;
|-&lt;br /&gt;
|c&lt;br /&gt;
|Ändern&lt;br /&gt;
|-&lt;br /&gt;
|y&lt;br /&gt;
|In den Puffer laden&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
====Weitere wichtige Befehle:====&lt;br /&gt;
&lt;br /&gt;
{| Border=1 Cellpadding=2&lt;br /&gt;
|p&lt;br /&gt;
|Aus dem Puffer einfügen&lt;br /&gt;
|-&lt;br /&gt;
|u&lt;br /&gt;
|Undo, macht den letzten Befehl rückgängig&lt;br /&gt;
|-&lt;br /&gt;
|STRG+R&lt;br /&gt;
|Redo, macht den letzten Undo rückgängig&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
===Zeilen- oder Exmodus===&lt;br /&gt;
&lt;br /&gt;
Wie schon erwähnt wird der Zeilen oder Exmodus durch einen : eingeleitet.&lt;br /&gt;
Es folgen einige Beispiele.&lt;br /&gt;
&lt;br /&gt;
Befehle zum Speichern und Beenden:&lt;br /&gt;
&lt;br /&gt;
 :w          Schreibt Datei&lt;br /&gt;
 :w Datei2   Schreibt eine Kopie in Datei2&lt;br /&gt;
 :w !        Schreibt Datei (übergehe Schreibschutz)&lt;br /&gt;
 :w ! Datei2 Schreibt eine Kopie in Datei2 (übergehe Schreibschutz)&lt;br /&gt;
 :q          Schließe Datei&lt;br /&gt;
 :q!         Schließe Datei (verwerfe Änderungen)&lt;br /&gt;
 :wq         Schreibe Datei und beende Editor&lt;br /&gt;
 :wq!        Schreibe Datei und beende Editor (übergehe Schreibschutz)&lt;br /&gt;
 :q!         Schließe Datei (verwerfe Änderungen)&lt;br /&gt;
 :h          Hilfe anzeigen, durch drücken von :q Beenden der Hilfe&lt;br /&gt;
 :e Datei3   Editiere Datei3&lt;br /&gt;
 :e #        Editere vorhergehende Datei&lt;br /&gt;
 :1,3co9     Kopiere von der ersten bis zu dritten Zeile &lt;br /&gt;
             und füge den Inhalt unterhalb der neunte Zeile ein.&lt;br /&gt;
&lt;br /&gt;
Interaktionen mit Unix:&lt;br /&gt;
&lt;br /&gt;
 :r Datei4   Fügt Inhalt der Datei4 nach dem Cursor ein&lt;br /&gt;
 :r ! Befehl Fügt Ausgabe des Befehls nach dem Cursor ein&lt;br /&gt;
 :! Befehl   Führt den Befehl aus&lt;br /&gt;
 :sh         Starte Subshell -&amp;gt; mit exit kehrt man wieder zurück&lt;br /&gt;
             Eingabemodus zurück&lt;br /&gt;
&lt;br /&gt;
====Ersetzen von Textteilen====&lt;br /&gt;
&lt;br /&gt;
Die grundsätzliche Syntax lautet:&lt;br /&gt;
&lt;br /&gt;
 :[Zeilennummer,Zeilennummer]s/Muster/Ersetzung/[gc]&lt;br /&gt;
&lt;br /&gt;
 :s/worf/kirn/              der erste worf wird in der aktuellen Zeile durch kirn ersetzt&lt;br /&gt;
 :1,9s/worf/kirn/g          von der 1. bis zur 9. Zeile werden alle worf durch kirn ersetzt&lt;br /&gt;
 :1,$s/worf/kirn/           von der ersten bis zur letzten Zeile ersetze ersten worf durch&lt;br /&gt;
                            kirn&lt;br /&gt;
 :.,$s/worf/kirn/g          von der aktuellen bis zur letzten Zeile ersetze alle worf durch&lt;br /&gt;
                            kirn&lt;br /&gt;
 :1,.s/worf/kirn/c          von der 1. bis zur aktuellen Zeile ersetze worf durch kirn, frage&lt;br /&gt;
                            aber nach&lt;br /&gt;
 :1,$s/^worf/kirn/          von der ersten bis zur letzten Zeile ersetze worf am&lt;br /&gt;
                            Zeilenanfang durch kirn&lt;br /&gt;
 :4,$s/worf$/kirn/          von der 4. bis zur letzten Zeile ersetze worf am Zeilenende&lt;br /&gt;
                            durch kirn&lt;br /&gt;
 :1,$s/^#//                 lösche alle Kommentarzeichen&lt;br /&gt;
 :1,$s/^.orf/kirn/           ersetze alles was am Zeilenanfang ein beliebiges Zeichen hat&lt;br /&gt;
                            gefolgt von einem orf durch kirn&lt;br /&gt;
 :1,$s/^[A-Z]orf/kirn/g     suche nach einem Großbuchstaben am Anfang der Zeile&lt;br /&gt;
                            gefolgt von einem orf und ersetze durch kirn&lt;br /&gt;
 :1,$s/^M[ae][iy]e*r/kirn/  suche alles, was am Anfang der Zeile ein großes M enthält,&lt;br /&gt;
                            gefolgt von einem a oder e , gefolgt von einem i oder y ,&lt;br /&gt;
                            gefolgt von einem e , welches 0 oder N mal vorkommen kann,&lt;br /&gt;
                            gefolgt von einem r und ersetze es durch kirn&lt;br /&gt;
&lt;br /&gt;
==Reguläre Ausdrücke==&lt;br /&gt;
&lt;br /&gt;
{| Border=1 Cellpadding=2&lt;br /&gt;
|c&lt;br /&gt;
|Ein einzelner Buchstabe passt auf sich selbst&lt;br /&gt;
|-&lt;br /&gt;
|.&lt;br /&gt;
|Ein Punkt passt auf jedes Zeichen außer auf das Zeilenende&lt;br /&gt;
|-&lt;br /&gt;
|*&lt;br /&gt;
|Das dem Operator * vorangehende Muster kann 0 oder öfter vorkommen&lt;br /&gt;
|-&lt;br /&gt;
|^&lt;br /&gt;
|(Caret) passt auf den Zeilenanfang&lt;br /&gt;
|-&lt;br /&gt;
|$&lt;br /&gt;
|Passt auf das Zeilenende&lt;br /&gt;
|-&lt;br /&gt;
|\&lt;br /&gt;
|Das folgende Sonderzeichen wird entwertet&lt;br /&gt;
|-&lt;br /&gt;
|[...]&lt;br /&gt;
|Passt auf &amp;quot;genau&amp;quot; eins in [...] angebenen Zeichen&lt;br /&gt;
|-&lt;br /&gt;
|[^...]&lt;br /&gt;
|Passt auf &amp;quot;genau&amp;quot; ein Zeichen welches nicht in [...] angebenen ist&lt;br /&gt;
|-&lt;br /&gt;
|\&amp;lt;&lt;br /&gt;
|Passt auf den Wortanfang&lt;br /&gt;
|-&lt;br /&gt;
|\&amp;gt;&lt;br /&gt;
|Passt auf das Wortende&lt;br /&gt;
|-&lt;br /&gt;
|\+&lt;br /&gt;
|Das dem Operator \+ vorangehende Muster kann 1 oder öfter vorkommen&lt;br /&gt;
|-&lt;br /&gt;
|&amp;amp;&lt;br /&gt;
|Setzt das gefunden Suchmuster ein&lt;br /&gt;
|-&lt;br /&gt;
|\(...\)&lt;br /&gt;
|Speichert den Text auf den das Suchmuster passt zur späteren Verwendung&lt;br /&gt;
|-&lt;br /&gt;
|\n&lt;br /&gt;
|Setzt das vorangehende, mit \(...\) Gefundene wieder ein&lt;br /&gt;
|-&lt;br /&gt;
|(...)&lt;br /&gt;
|Gruppiert Auswahlmöglichkeiten&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;nowiki&amp;gt;|&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
|Trennt Auswahlmöglichkeiten&lt;br /&gt;
|-&lt;br /&gt;
|\b&lt;br /&gt;
|Passt auf den Anfang oder das Ende eines Wortes&lt;br /&gt;
|-&lt;br /&gt;
|\B&lt;br /&gt;
|Symbolisiert den Raum innerhalb eines Wortes&lt;br /&gt;
|-&lt;br /&gt;
|\w&lt;br /&gt;
|Passt auf alle alphanumerischen Zeichen [A-Za-z0-9]&lt;br /&gt;
|-&lt;br /&gt;
|\W&lt;br /&gt;
|Passt auf alle nichtalphanumerischen Zeichen [^A-Za-z0-9]&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Die Rangfolge der Operatoren(von der höchsten zur niedrigsten)&lt;br /&gt;
:(, ), ?, *, + | .&lt;br /&gt;
&lt;br /&gt;
Die anderen Operatoren sind mit den anderen Buchstaben gleichrangig.&lt;br /&gt;
&lt;br /&gt;
===Beispiel zum Suchen===&lt;br /&gt;
&lt;br /&gt;
 Suchmuster               Passt auf&lt;br /&gt;
 ^Tuxer                   Tuxer am Zeilenanfang&lt;br /&gt;
 [tT]uxer                 Tuxer oder tuxer&lt;br /&gt;
 80[23]?86                8086, 80286 oder 80386&lt;br /&gt;
&lt;br /&gt;
===grep===&lt;br /&gt;
&lt;br /&gt;
Mit grep ist es möglich, in Dateien nach regulären Ausdrücken zu suchen. Wenn&lt;br /&gt;
eine Übereinstimmung gefunden wird, wird die komplette Zeile auf die&lt;br /&gt;
Standardausgabe geschrieben. grep kann auch von STDIN lesen.Es ist&lt;br /&gt;
empfehlenswert, sich anzugwöhnen ,das Suchmuster in Anführungszeichen zu&lt;br /&gt;
schreiben. Es gibt 3 Arten fgrep = fastgrep , grep und egrep egrep&lt;br /&gt;
&lt;br /&gt;
Beispiel:&lt;br /&gt;
&lt;br /&gt;
 root@zero:~# cat text&lt;br /&gt;
 quatsch&lt;br /&gt;
 quatsch&lt;br /&gt;
 quatsch&lt;br /&gt;
 wichtig&lt;br /&gt;
 quatsch&lt;br /&gt;
 root@zero:~# grep wichtig text&lt;br /&gt;
 wichtig&lt;br /&gt;
 root@zero:~# &lt;br /&gt;
&lt;br /&gt;
 -c                   meldet nur die Gesamtzahl der Fundstellen&lt;br /&gt;
 -v                   zeigt nur Zeilen, die »Ausdruck« nicht enthalten&lt;br /&gt;
 -i                   ignoriert Groß- und Kleinschreibung&lt;br /&gt;
 -l                    meldet nur Dateinamen mit Fundstellen&lt;br /&gt;
 -n                   listet Zeilennummern zu jeder Fundstelle&lt;br /&gt;
 -f                   Dateiname »Dateiname« enthält die Such-Ausdrücke&lt;br /&gt;
 -E                   ist ein erweiterter regulärer Ausdruck (egrep)&lt;br /&gt;
 -F                   (Muster, Ausdruck) ist ein Muster (String) (fgrep)&lt;br /&gt;
 -b                   listet auch die Position der Fundstellen&lt;br /&gt;
 -C    Anzahl         Anzahl von Zeilen werden nach der Fundstelle ausgegeben&lt;br /&gt;
 -B    Anzahl         Anzahl von Zeilen werden vor der Fundstelle ausgegeben&lt;br /&gt;
 -r                   Durchsucht Verzeichnisse rekursiv&lt;br /&gt;
&lt;br /&gt;
==Useridendifikation==&lt;br /&gt;
===/etc/passwd===&lt;br /&gt;
====Beschreibung====&lt;br /&gt;
passwd ist eine ASCII-Datei, die eine Liste der Benutzer des Systems und deren&lt;br /&gt;
Passwörter enthält. Die Passwortdatei sollte für alle Benutzer lesbar sein, was für&lt;br /&gt;
dieVerschlüsselung notwendig ist; aber nur vom Superuser beschreibbar. Wenn&lt;br /&gt;
Sie eine neue Kennung einrichten, lassen Sie das Passwort-Feld in der Datei frei&lt;br /&gt;
und benutzen Sie passwd(1), um dem System ein Passwort für die neue Kennung&lt;br /&gt;
mitzuteilen.&lt;br /&gt;
&lt;br /&gt;
Die Datei /etc/passwd enthält einen Eintrag pro Zeile mit dem Format:&lt;br /&gt;
login_name:passwd:UID:GID:user_name:directory:shell&lt;br /&gt;
====Die Bedeutung der Felder:====&lt;br /&gt;
# login_name Kennung des Benutzers auf dem System.&lt;br /&gt;
# password   Hier steht bei Shadowsystemen ein x. Die Passwörter sind in der Datei /etc/shadow&lt;br /&gt;
# UID        Die numerische Benutzernummer.&lt;br /&gt;
#  GID        Die numerische Gruppennummer des Benutzers.&lt;br /&gt;
# user_name Ein optionales Kommentarfeld, oft benutzt für den vollen Namen des Benutzers und weitere Informationen (Telefon, Raum-Nummer etc.).&lt;br /&gt;
# directory  Das Heimatverzeichnis $HOME des Benutzers.&lt;br /&gt;
# shell      Das Programm, das beim Einloggen gestartet werden soll (falls nicht nötig, benutzen Sie /bin/bash).&lt;br /&gt;
&lt;br /&gt;
===/etc/group===&lt;br /&gt;
====Beschreibung====&lt;br /&gt;
etc/group ist eine ASCII Datei, die Gruppen definiert, zu denen Benutzer&lt;br /&gt;
gehören. Es gibt nur einen Eintrag pro Zeile; jede Zeile hat folgendes Format:&lt;br /&gt;
         GruppenName:Passwort:GruppenKennung:BenutzerListe&lt;br /&gt;
Beschreibung der Felder:&lt;br /&gt;
#     GruppenName      Die Bezeichnung der Gruppe.&lt;br /&gt;
#     Passwort         Das (verschlüsselte) Gruppen-Passwort. Wenn dieses Feld leer ist, wird kein Passwort benötigt.&lt;br /&gt;
#     GruppenKennung Die numerische Identifikation der Gruppe.&lt;br /&gt;
#     BenutzerListe    Alle Namen der Mitglieder, getrennt durch Kommas.&lt;br /&gt;
&lt;br /&gt;
===/etc/shadow===&lt;br /&gt;
====Beschreibung====&lt;br /&gt;
shadow beinhaltet Informationen zu den verschlüsselten Passwörten, zu den&lt;br /&gt;
Benutzerzugängen und weitere Informationen zur Laufzeit der Passwörter.&lt;br /&gt;
 Name:Passwort:Letzte Änderung:Mintage:Maxtage:Warntage:Inaktiv:Ablauf&lt;br /&gt;
#    Der Loginname&lt;br /&gt;
#    verschlüsseltes Passwort &lt;br /&gt;
&amp;lt;nowiki&amp;gt;*&amp;lt;/nowiki&amp;gt; bedeutet Benutzer kann sich nicht einlogen&lt;br /&gt;
! bedeutet Benutzer hat kein Passwort gesetzt&lt;br /&gt;
#    Tage seit dem 1 Januar 1970 an dem das Passwort letztmals geändert wurde&lt;br /&gt;
#    Tage, die das Passwort behalten werden muss, bevor es wieder geändert werden kann&lt;br /&gt;
#     Die Anzahl der Tage, nach denen der Benutzer das Passwort wieder ändern muss&lt;br /&gt;
#    Anzahl der Tage bevor das Passwort abläuft und der Benutzer gewarnt wird&lt;br /&gt;
#    Wenn der Zugang diese Anzahl von Tagen nicht benutzt wird, wird der Zugang gesperrt&lt;br /&gt;
#    Tag seit dem 1 Januar 1970, an dem der Zugang gesperrt wird&lt;br /&gt;
#    Reserviertes Feld&lt;br /&gt;
&lt;br /&gt;
Die Datei sollte aus Sicherheitgründen nicht für einen normalen Benutzer lesbar&lt;br /&gt;
sein.&lt;br /&gt;
&lt;br /&gt;
==Programme zur Userverwaltung==&lt;br /&gt;
===useradd===&lt;br /&gt;
User anlegen&lt;br /&gt;
 root@zero:~# useradd -m -u 1011 -g users -G admin -d /home/erwin -s /bin/bash -c &amp;quot;Erwin Lehman&amp;quot;  erwin&lt;br /&gt;
{| border=1 cellpadding=2&lt;br /&gt;
|&amp;quot;-m&amp;quot;&lt;br /&gt;
|Lege Homedirectory an&lt;br /&gt;
|-&lt;br /&gt;
|&amp;quot;-u 1011&amp;quot;&lt;br /&gt;
|Userid wird zugeordnet&lt;br /&gt;
|-&lt;br /&gt;
|&amp;quot;-g users&amp;quot;&lt;br /&gt;
|Primäre Gruppe wird zugeordnet&lt;br /&gt;
|-&lt;br /&gt;
|&amp;quot;-G admin&amp;quot;&lt;br /&gt;
|Sekunbdäre Gruppe wird zugeordnet&lt;br /&gt;
|-&lt;br /&gt;
|&amp;quot;-d /home/erwin/&amp;quot;&lt;br /&gt;
|Name des Homedirectory&lt;br /&gt;
|-&lt;br /&gt;
|&amp;quot;-s /bin/bash&amp;quot;&lt;br /&gt;
|Bash wird zugeordnet&lt;br /&gt;
|- &lt;br /&gt;
|&amp;quot;-c Erwin Lehman&amp;quot;&lt;br /&gt;
|Kommentarfeld&lt;br /&gt;
|-&lt;br /&gt;
|&amp;quot;erwin&amp;quot; &lt;br /&gt;
|Name des Users&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Defaulteinstellungen anzeigen&lt;br /&gt;
 root@zero:~# useradd -D&lt;br /&gt;
 GROUP=100&lt;br /&gt;
 HOME=/home&lt;br /&gt;
 INACTIVE=-1&lt;br /&gt;
 EXPIRE=&lt;br /&gt;
 SHELL=/bin/sh&lt;br /&gt;
 SKEL=/etc/skel&lt;br /&gt;
 CREATE_MAIL_SPOOL=no&lt;br /&gt;
&lt;br /&gt;
Defaulteinstellungen ändern&lt;br /&gt;
 useradd -D -s /bin/bash&lt;br /&gt;
&lt;br /&gt;
Konfigurationsdatei&lt;br /&gt;
 root@zero:~# cat /etc/default/useradd &lt;br /&gt;
 SHELL=/bin/bash&lt;br /&gt;
 GROUP=100&lt;br /&gt;
 HOME=/home&lt;br /&gt;
 INACTIVE=-1&lt;br /&gt;
 EXPIRE=&lt;br /&gt;
 SKEL=/etc/skel&lt;br /&gt;
 CREATE_MAIL_SPOOL=no&lt;br /&gt;
&lt;br /&gt;
===usermod===&lt;br /&gt;
User modifizieren&lt;br /&gt;
 root@zero:~# usermod -l fritz -s /bin/sh -G admin,video erwin&lt;br /&gt;
{| border=1 cellpadding=2&lt;br /&gt;
|&amp;quot;-l fritz&amp;quot;&lt;br /&gt;
|Neuer Username&lt;br /&gt;
|-&lt;br /&gt;
|&amp;quot;-s /bin/sh&amp;quot;&lt;br /&gt;
|Neue Shell&lt;br /&gt;
|-&lt;br /&gt;
|&amp;quot;-G admin, video&amp;quot;&lt;br /&gt;
|Sekunbdäre Gruppen werden zugeordnet&lt;br /&gt;
|-&lt;br /&gt;
|&amp;quot;erwin&amp;quot; &lt;br /&gt;
|Name des Users&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
===userdel===&lt;br /&gt;
User inklusive Homedirectory löschen&lt;br /&gt;
 root@zero:~# userdel -r fritz&lt;br /&gt;
&lt;br /&gt;
===passwd===&lt;br /&gt;
Rootpasswort ändern&lt;br /&gt;
 root@zero:~# passwd &lt;br /&gt;
 Geben Sie ein neues UNIX Passwort ein:'''sysadm''' &lt;br /&gt;
 Geben Sie das neue UNIX Passwort erneut ein:'''sysadm''' &lt;br /&gt;
 passwd: Passwort erfolgreich geändert&lt;br /&gt;
&lt;br /&gt;
Passwort von tux ändern&lt;br /&gt;
 root@zero:~# passwd tux&lt;br /&gt;
 Geben Sie ein neues UNIX Passwort ein:'''suxer''' &lt;br /&gt;
 Geben Sie das neue UNIX Passwort erneut ein:'''suxer'''&lt;br /&gt;
 passwd: Passwort erfolgreich geändert&lt;br /&gt;
&lt;br /&gt;
Minimale und Maximale Gültigkeit des Passwortes von tux festlegen&lt;br /&gt;
 root@zero:~# passwd -n 5 -x 120 tux&lt;br /&gt;
&lt;br /&gt;
===groupadd===&lt;br /&gt;
 root@zero:~# groupadd -f -g 2001 xinuxer&lt;br /&gt;
{| border=1 cellpadding=2&lt;br /&gt;
|&amp;quot;-f&amp;quot;&lt;br /&gt;
|Überschreibe bestehende Gruppe&lt;br /&gt;
|-&lt;br /&gt;
|&amp;quot;-g 2001&amp;quot;&lt;br /&gt;
|GID der Gruppe&lt;br /&gt;
|-&lt;br /&gt;
|&amp;quot;xinuxer&amp;quot; &lt;br /&gt;
|Name des Gruppe&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==chmod==&lt;br /&gt;
Die Syntax des Befehls chmod lautet:&lt;br /&gt;
&lt;br /&gt;
'''chmod''' WerWieWas [,WerWieWas,.....] Dateiliste&lt;br /&gt;
&lt;br /&gt;
oder&lt;br /&gt;
&lt;br /&gt;
'''chmod''' Oktalzahl Dateiliste&lt;br /&gt;
&lt;br /&gt;
Durch WerWieWas bzw. Oktalzahl wird die Rechtetabelle definiert. Innerhalb von&lt;br /&gt;
WerWieWas darf es kein Leerzeichen geben. Wer bezeichnet den Benutzerkreis,&lt;br /&gt;
dem man Rechte gibt, Wie die Art, in der die Rechte gegeben werden und Was die&lt;br /&gt;
Rechte als solche. Im einzelnen können folgende Kürzel benutzt werden:&lt;br /&gt;
&lt;br /&gt;
Für Wer kann eines der folgenden Kürzel oder eine Kombination davon stehen:&lt;br /&gt;
 u                   (user) Rechte für den Dateibesitzer&lt;br /&gt;
 g                   (group) Rechte für die Gruppe&lt;br /&gt;
 o                   (others) Rechte für alle anderen Benutzer&lt;br /&gt;
 a                   (all) Rechte für alle Benutzer&lt;br /&gt;
Für Wie steht eines der folgenden Kürzel:&lt;br /&gt;
 +                   Die Rechte werden zu den vorhandenen zusätzlich vergeben&lt;br /&gt;
 -                   Die im Folgenden genannten Rechte werden entzogen&lt;br /&gt;
 =                   Die im Folgenden genannten Rechte ersetzen die bisherigen&lt;br /&gt;
Für Was steht eines der folgenden Kürzel:&lt;br /&gt;
 r                   (read) lesen&lt;br /&gt;
 w                   (write) schreiben&lt;br /&gt;
 x                   (execute) ausführen&lt;br /&gt;
oder diese Sonderformen&lt;br /&gt;
 s                   (usersbit) Programm läuft unter der UID des Besitzers&lt;br /&gt;
 s                   (groupsbit)Programm läuft unter der GID des GRUPPE&lt;br /&gt;
 t                   (stickybit) Dateien im Verzeichnis darf nur Besitzer löschen&lt;br /&gt;
&lt;br /&gt;
===Beispiel===&lt;br /&gt;
Setze für alle Schreib- und Leserecht&lt;br /&gt;
 xinux@zero:~$ chmod a=rw test &lt;br /&gt;
 xinux@zero:~$ ls -l test &lt;br /&gt;
 -rw-rw-rw- 1 xinux xinux 0 2009-06-16 12:01 test&lt;br /&gt;
 xinux@zero:~$ &lt;br /&gt;
&lt;br /&gt;
Erteile Besitzer Ausführungsrecht&lt;br /&gt;
 xinux@zero:~$ chmod u+x test ; ls -l test &lt;br /&gt;
 -rwxrw-rw- 1 xinux xinux 0 2009-06-16 12:01 test&lt;br /&gt;
 xinux@zero:~$ &lt;br /&gt;
&lt;br /&gt;
===chmod oktale Schreibweise===&lt;br /&gt;
 Specialrights        User           Group         Other&lt;br /&gt;
 usbit gsbit sticky    r    w   x     r   w   x     r   w   x&lt;br /&gt;
   1     1      1      1    1   1     1   1   1     1   1   1&lt;br /&gt;
   0     0      0      0    0   0     0   0   0     0   0   0&lt;br /&gt;
 Oktale Wertigkeit pro Recht&lt;br /&gt;
   4     2       1     4    2   1     4   2   1     4   2   1&lt;br /&gt;
&lt;br /&gt;
===Beispiele===&lt;br /&gt;
 xinux@zero:~$ chmod 751 test ; ls -l test&lt;br /&gt;
 -rwxr-x--x 1 xinux xinux 0 2009-06-16 12:01 test&lt;br /&gt;
 xinux@zero:~$ &lt;br /&gt;
&lt;br /&gt;
 xinux@zero:~$ chmod 4770 test ; ls -l test&lt;br /&gt;
 -rwsrwx--- 1 xinux xinux 0 2009-06-16 12:01 test&lt;br /&gt;
 xinux@zero:~$ &lt;br /&gt;
&lt;br /&gt;
 xinux@zero:~$ chmod 0 test ; ls -l test &lt;br /&gt;
 ---------- 1 xinux xinux 0 2009-06-16 12:01 test&lt;br /&gt;
&lt;br /&gt;
===chmod Optionen===&lt;br /&gt;
 -c   (changes) es werden nur die Dateien angezeigt, deren Zugriffsrechte tatsächlich verändert werden&lt;br /&gt;
 -f   (silent, quiet) Fehlermeldungen wegen fehlgeschlagener Änderungsversuche werden unterdrückt&lt;br /&gt;
 -v   (verbose) alle Aktionen werden angezeigt&lt;br /&gt;
 -R   (recursive) die Zugriffsrechte aller Dateien in den Unterverzeichnissen werden ebenfalls geändert&lt;br /&gt;
&lt;br /&gt;
Theoretisch sind alle Kombinationen der Zugriffsrechte denkbar, aber der&lt;br /&gt;
Eigentümer einer Datei darf diese immer lesen, selbst wenn das Lesebit nicht&lt;br /&gt;
gesetzt ist. Genauso macht es wenig Sinn, eine gewöhnliche Textdatei als&lt;br /&gt;
ausführbar zu setzen; die Shell wird damit nichts anfangen können. Ein x für ein&lt;br /&gt;
Verzeichnis gibt an, dass in dieses gewechselt werden kann.&lt;br /&gt;
&lt;br /&gt;
Rechte sind verbindlich&lt;br /&gt;
&lt;br /&gt;
Interessant ist auch ein Konstrukt folgender Art&lt;br /&gt;
 -rwx---rwx&lt;br /&gt;
&lt;br /&gt;
das angibt, dass mit der Datei alles angestellt werden kann, außer durch Nutzer der&lt;br /&gt;
Gruppe. Versucht irgend jemand, der nicht der Gruppe des Eigentümers angehört,&lt;br /&gt;
die Datei zu modifizieren, wird ihm dies gelingen, einem Gruppenmitglied bleibt&lt;br /&gt;
dies versagt, obwohl er ja gleichzeitig ein &amp;quot;Anderer&amp;quot; ist. D.h. die Rechte der&lt;br /&gt;
Gruppe sind verbindlicher, als die Rechte der anderen!&lt;br /&gt;
&lt;br /&gt;
===Bedeutungen der Zugriffsarten===&lt;br /&gt;
====Dateien====&lt;br /&gt;
* r: Der Inhalt der Datei kann gelesen und damit auch kopiert werden. &lt;br /&gt;
 root@zero:~# cat test&lt;br /&gt;
 Dies ist eine Testdatei&lt;br /&gt;
  &lt;br /&gt;
 root@zero:~# cp test backup&lt;br /&gt;
&lt;br /&gt;
* w: Der Inhalt der Datei darf verändert werden. Ob die Datei gelöscht werden kann ist&lt;br /&gt;
keine Eigenschaft der Datei, sondern des Verzeichnisses, indem sich die Datei befindet.&lt;br /&gt;
 root@zero:~# cat &amp;gt; test&lt;br /&gt;
 Hier steht jetzt was anderes&lt;br /&gt;
 ^C&lt;br /&gt;
 root@zero:~# cat test&lt;br /&gt;
 Hier steht jetzt was anderes&lt;br /&gt;
  &lt;br /&gt;
 xinux@zero:~$ ls -ld verzeichnis/&lt;br /&gt;
 dr-xr-xr-x 2 xinux xinux 4096 2009-06-18 11:16 verzeichnis/&lt;br /&gt;
 xinux@zero:~/verzeichnis$ rm text&lt;br /&gt;
 rm: Entfernen von „text“ nicht möglich: Permission denied&lt;br /&gt;
&lt;br /&gt;
* x: Ausführrecht für Programme und Skripte&lt;br /&gt;
 xinux@zero:~$ ./programm&lt;br /&gt;
 -bash: ./programm: Permission denied&lt;br /&gt;
 xinux@zero:~$ chmod +x programm&lt;br /&gt;
 xinux@zero:~$ ./programm&lt;br /&gt;
 Test&lt;br /&gt;
  test&lt;br /&gt;
&lt;br /&gt;
====Verzeichnisse====&lt;br /&gt;
* r: Die Einträge in dem Verzeichnis sind lesbar.&lt;br /&gt;
Leserecht von verzeichnis/ entziehen&lt;br /&gt;
 xinux@zero:~$ chmod a-r verzeichnis/&lt;br /&gt;
 xinux@zero:~$ ls verzeichnis/&lt;br /&gt;
 ls: Öffnen von Verzeichnis verzeichnis/ nicht möglich: Permission denied&lt;br /&gt;
Leserecht für Benutzer und Gruppe vergeben&lt;br /&gt;
 xinux@zero:~$ chmod a+r verzeichnis/&lt;br /&gt;
 xinux@zero:~$ ls verzeichnis/&lt;br /&gt;
 text&lt;br /&gt;
&lt;br /&gt;
* w: Die Einträge in dem Verzeichnis können geändert werden. &lt;br /&gt;
Neue Datei erstellen&lt;br /&gt;
 xinux@zero:~$ touch neu&lt;br /&gt;
 xinux@zero:~$ ls neu&lt;br /&gt;
 neu&lt;br /&gt;
&lt;br /&gt;
Datei löschen&lt;br /&gt;
 xinux@zero:~$ rm neu&lt;br /&gt;
 xinux@zero:~$ ls neu&lt;br /&gt;
 ls: Zugriff auf neu nicht möglich: No such file or directory&lt;br /&gt;
&lt;br /&gt;
* x: Der Name des Verzeichnisses kann in einem Pfadnamen erscheinen.&lt;br /&gt;
Verzeichnis ohne x Recht&lt;br /&gt;
 xinux@zero:~$ chmod a-x verzeichnis/&lt;br /&gt;
Wechseln in Verzeichnis mangels x-Recht nicht möglich&lt;br /&gt;
 xinux@zero:~$ cd verzeichnis/&lt;br /&gt;
 -bash: cd: verzeichnis/: Permission denied&lt;br /&gt;
x-Recht vergeben&lt;br /&gt;
 xinux@zero:~$ chmod a+x verzeichnis/&lt;br /&gt;
damit Wechsel in Verzeichnis möglich&lt;br /&gt;
 xinux@zero:~$ cd verzeichnis/&lt;br /&gt;
 xinux@zero:~/verzeichnis$ pwd&lt;br /&gt;
 /home/xinux/verzeichnis&lt;br /&gt;
&lt;br /&gt;
====umask====&lt;br /&gt;
Neue Dateien und Verzeichnisse werden mit ein und denselben Zufriffsrechten erzeugt.&lt;br /&gt;
 xinux@zero:~$ mkdir text&lt;br /&gt;
 xinux@zero:~$ touch textdat&lt;br /&gt;
 xinux@zero:~$ ls -ld text*&lt;br /&gt;
 drwxr-xr-x 2 xinux xinux 4096 2009-06-18 11:37 text&lt;br /&gt;
 -rw-r--r-- 1 xinux xinux    0 2009-06-18 11:37 textdat&lt;br /&gt;
&lt;br /&gt;
Zuständig für dieses Verhalten ist die sogenannte umask, die oft in der Datei&lt;br /&gt;
/etc/profile auf den Wert 022 voreingestellt ist. Zusätzlich wird noch eine&lt;br /&gt;
Maximalmaske benötigt, die sich für Verzeichnisse und andere Dateien&lt;br /&gt;
unterscheidet. Die bei der Erzeugung gesetzten Rechte entstehen nun, indem von&lt;br /&gt;
der Maximalmaske der durch die umask vorgegebene Wert subtrahiert wird:&lt;br /&gt;
&lt;br /&gt;
{| border=1 cellpadding=2&lt;br /&gt;
!&lt;br /&gt;
! Dateien&lt;br /&gt;
! Verzeichnisse&lt;br /&gt;
|-&lt;br /&gt;
| Systemvorgabe&lt;br /&gt;
| 666&lt;br /&gt;
| 777&lt;br /&gt;
|-&lt;br /&gt;
| -umask&lt;br /&gt;
| 022&lt;br /&gt;
| 022&lt;br /&gt;
|-&lt;br /&gt;
| Ergebnis&lt;br /&gt;
| 644&lt;br /&gt;
| 755&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
 xinux@zero:~$ grep umask /etc/profile&lt;br /&gt;
 umask 022&lt;br /&gt;
&lt;br /&gt;
==Gruppenzugehörigkeit==&lt;br /&gt;
===newgrp===&lt;br /&gt;
Ändert die Gruppenzugehörigkeit eines Benutzers auf die angegebene Gruppe. Wenn keine Gruppe angegeben wird, wird die &lt;br /&gt;
Anmeldegruppe des Benutzers verwendet. Die neue Gruppe wird anschließend fü Zugriffskontrollen verwendet.&lt;br /&gt;
&lt;br /&gt;
 newgrp Gruppenname&lt;br /&gt;
&lt;br /&gt;
 root@zero:~# newgrp hacker&lt;br /&gt;
 root@zero:~# id&lt;br /&gt;
 uid=0(root) gid=1006(hacker) Gruppen=0(root),1006(hacker)&lt;br /&gt;
&lt;br /&gt;
===chgrp===&lt;br /&gt;
Verändert die Besitzugehörigkeit zu der angegebenen Gruppe&lt;br /&gt;
&lt;br /&gt;
 chgrp [Optionen] Gruppe Datei(en)&lt;br /&gt;
&lt;br /&gt;
Optionen:&lt;br /&gt;
 -c Zeigt Veränderungen an&lt;br /&gt;
 -f Unterdrückt die meisten Fehlermeldungen&lt;br /&gt;
 -R Verändert Dateien und Verzeichnisse rekursiv&lt;br /&gt;
 -v Gibt geschwätzige Ausgabe aus.&lt;br /&gt;
&lt;br /&gt;
 root@zero:~# ls -l&lt;br /&gt;
 ...&lt;br /&gt;
 d-wx--x--x  3 root root 4096 2009-06-18 13:34 verzeichnis&lt;br /&gt;
 &lt;br /&gt;
 root@zero:~# chgrp -R xinux verzeichnis/&lt;br /&gt;
 root@zero:~# ls -l&lt;br /&gt;
 ...&lt;br /&gt;
 d-wx--x--x  3 root xinux 4096 2009-06-18 13:34 verzeichnis&lt;br /&gt;
&lt;br /&gt;
 xinux@zero:~$ cd /root/verzeichnis/&lt;br /&gt;
 xinux@zero:/root/verzeichnis$ pwd&lt;br /&gt;
 /root/verzeichnis&lt;br /&gt;
&lt;br /&gt;
===chown===&lt;br /&gt;
Ändert den Eigentümer von einer oder mehreren Dateien in den angegebenen Benutzer. &lt;br /&gt;
chown erlaubt ebenfalls das Ändern der Gruppeneigentümreschaft. Nur der aktuelle Eigentümer einer&lt;br /&gt;
Datei oder der Superuser (root) darf die Eigentumsverhältnisse ändern.&lt;br /&gt;
&lt;br /&gt;
 chown [Optionen] Benutzer(:Gruppe) Dateien&lt;br /&gt;
&lt;br /&gt;
Optionen:&lt;br /&gt;
 -c Gibt Informationen über die veränderten Dateien aus&lt;br /&gt;
 --dereference Symbolischen Links folgen&lt;br /&gt;
 -v Gibt Informationen über alle Dateien aus, die chown zu ändern versucht, egal, ob die Änderung erfolgt ist oder nicht&lt;br /&gt;
 -R Geht rekursiv durch alle Unterverzeichnisse und führt die Änderungen durch. &lt;br /&gt;
&lt;br /&gt;
 root@zero:~# chown -R xinux.xinux verzeichnis/&lt;br /&gt;
 root@zero:~# ls -l&lt;br /&gt;
 insgesamt 12&lt;br /&gt;
 drwx------ 13 root  root  4096 2009-04-21 15:11 profile&lt;br /&gt;
 --w-------  1 root  root     0 2009-06-18 11:13 test&lt;br /&gt;
 -rw-r--r--  1 root  root    40 2009-06-18 12:04 text&lt;br /&gt;
 drwxrwx--x  3 xinux xinux 4096 2009-06-18 13:39 verzeichnis&lt;br /&gt;
 &lt;br /&gt;
 root@zero:~# chown -R -c xinux.xinux verzeichnis/&lt;br /&gt;
 &lt;br /&gt;
 root@zero:~# chown -R -v xinux.xinux verzeichnis/&lt;br /&gt;
 Eigentümer von „verzeichnis/01“ als xinux:xinux erhalten&lt;br /&gt;
 Eigentümer von „verzeichnis/test“ als xinux:xinux erhalten&lt;br /&gt;
 Eigentümer von „verzeichnis/“ als xinux:xinux erhalten&lt;br /&gt;
&lt;br /&gt;
==Eingabe/Ausgabe==&lt;br /&gt;
Standardeingabe (0): Laufende Programme erwarten von hier ihre Eingaben (normalerweise handelt es sich um die Tastatur).&lt;br /&gt;
&lt;br /&gt;
Standardausgabe (1): Programme schreiben auf diese ihre Ausgaben (Bildschirm).&lt;br /&gt;
&lt;br /&gt;
Standardfehlerausgabe (2) : Fehlerausgaben landen hier (Bildschirm, aber nur die aktive Konsole).&lt;br /&gt;
&lt;br /&gt;
[[Bild:std.jpg]]&lt;br /&gt;
&lt;br /&gt;
===cat===&lt;br /&gt;
Das Programm cat liest von STDIN und gibt es STDOUT wieder aus&lt;br /&gt;
&lt;br /&gt;
Einlesen der Datei text&lt;br /&gt;
 root@zero:~# cat &amp;lt; text&lt;br /&gt;
 wichtig&lt;br /&gt;
&lt;br /&gt;
Schreiben in die Datei text, dies überschreibt den bisherigen Inhalt der Datei&lt;br /&gt;
 root@zero:~# cat &amp;gt; text&lt;br /&gt;
 sogar noch wichtiger &lt;br /&gt;
 &lt;br /&gt;
Ausgeben der Datei text&lt;br /&gt;
 root@zero:~# cat text &lt;br /&gt;
 sogar noch wichtiger&lt;br /&gt;
&lt;br /&gt;
Lesen aus der Datei text und schreiben in die Datei neuertext&lt;br /&gt;
 root@zero:~# cat &amp;lt; text &amp;gt; neuertext&lt;br /&gt;
 root@zero:~# cat neuertext&lt;br /&gt;
 sogar noch wichtiger&lt;br /&gt;
&lt;br /&gt;
Anhängen der Ausgabe von date an die Datei neuertext&lt;br /&gt;
 root@zero:~# date &amp;gt;&amp;gt; neuertext&lt;br /&gt;
 root@zero:~# cat neuertext&lt;br /&gt;
 sogar noch wichtiger&lt;br /&gt;
 Do 18. Jun 14:08:58 CEST 2009&lt;br /&gt;
&lt;br /&gt;
Umleiten des Standardfehlerkanals nach error&lt;br /&gt;
 root@zero:~# rm sux 2&amp;gt; error&lt;br /&gt;
 root@zero:~# more error&lt;br /&gt;
 rm: Entfernen von „sux“ nicht möglich: No such file or directory&lt;br /&gt;
&lt;br /&gt;
===Umleitungen===&lt;br /&gt;
Nacheinander auszuführende Kommandos&lt;br /&gt;
 root@zero:~# pwd; date&lt;br /&gt;
 /root&lt;br /&gt;
 Do 18. Jun 14:13:05 CEST 2009&lt;br /&gt;
 &lt;br /&gt;
Übergeben der Ausgabe von tail als Eingabe von grep mit Hilfe der Pipe &amp;quot;|&amp;quot;&lt;br /&gt;
 root@zero:~# tail /var/log/auth.log | grep xinux&lt;br /&gt;
 Jun 18 13:52:33 zero nss_wins[11433]: pam_unix(login:session): session closed for user xinux&lt;br /&gt;
&lt;br /&gt;
Übergeben der letzten 100 Zeilen von syslog als Eingabe von grep&lt;br /&gt;
 root@zero:~# tail /var/log/syslog -n 100 | grep error&lt;br /&gt;
 Jun 18 09:30:54 zero kernel: [154384.692135] end_request: I/O error, dev fd0, sector 0&lt;br /&gt;
 Jun 18 09:30:54 zero kernel: [154384.712137] end_request: I/O error, dev fd0, sector 0&lt;br /&gt;
&lt;br /&gt;
==tr==&lt;br /&gt;
tr ist ein Programm um Zeichen zu übersetzen. Dies betrifft nur die Ausgabe, die Datei selbst bleibt unverändert.&lt;br /&gt;
&lt;br /&gt;
Ersetzt Kleinbuchstaben durch Großbuchstaben aus der Datei text&lt;br /&gt;
 root@zero:~# tr &amp;quot;a-z&amp;quot; &amp;quot;A-Z&amp;quot; &amp;lt; text&lt;br /&gt;
 SOGAR NOCH WICHTIGER&lt;br /&gt;
 123&lt;br /&gt;
 34&lt;br /&gt;
 4711&lt;br /&gt;
 TEST&lt;br /&gt;
&lt;br /&gt;
Ersetzt alle Zahlen durch X&lt;br /&gt;
 root@zero:~# tr &amp;quot;0-9&amp;quot; &amp;quot;X&amp;quot; &amp;lt; text&lt;br /&gt;
 sogar noch wichtiger&lt;br /&gt;
 XXX&lt;br /&gt;
 XX&lt;br /&gt;
 XXXX&lt;br /&gt;
 test&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
 root@zero:~# cat &amp;gt; test&lt;br /&gt;
 +++++&lt;br /&gt;
 ###&lt;br /&gt;
 1111&lt;br /&gt;
&lt;br /&gt;
-s löscht mehrfach kommende Zeichen&lt;br /&gt;
 root@zero:~# tr '''-s''' &amp;quot;+&amp;quot; &amp;lt; test&lt;br /&gt;
 +&lt;br /&gt;
 ###&lt;br /&gt;
 1111&lt;br /&gt;
&lt;br /&gt;
-d löscht vorkommende Zeichen &lt;br /&gt;
 root@zero:~# tr '''-d''' &amp;quot;#&amp;quot; &amp;lt; test&lt;br /&gt;
 +++++ &lt;br /&gt;
 &lt;br /&gt;
 1111&lt;br /&gt;
&lt;br /&gt;
==cut==&lt;br /&gt;
Spalten aus einer Datei schneiden. Dies betrifft nur die Ausgabe, die Datei selbst bleibt unverändert.&lt;br /&gt;
 &lt;br /&gt;
Schneidet die erste Spalte aus, der Delimiter ist : &lt;br /&gt;
 root@zero:~# cut -f 1 -d : /etc/passwd&lt;br /&gt;
 root&lt;br /&gt;
 daemon&lt;br /&gt;
 bin&lt;br /&gt;
 ...&lt;br /&gt;
 xinux&lt;br /&gt;
&lt;br /&gt;
 root@zero:~# more test&lt;br /&gt;
 1234#5678#9999&lt;br /&gt;
 &lt;br /&gt;
Schneidet die zweite Spalte aus, der Delimiter ist #&lt;br /&gt;
 root@zero:~# cut -f 2 -d &amp;quot;#&amp;quot; &amp;lt; test&lt;br /&gt;
 5678&lt;br /&gt;
&lt;br /&gt;
Schneidet bis zum 3 Zeichen ab&lt;br /&gt;
 root@zero:~$ echo S01policykit | cut -c 4-&lt;br /&gt;
 policykit&lt;br /&gt;
&lt;br /&gt;
==expand==&lt;br /&gt;
Ersetzt Tabulatorzeichen durch Folgen von Leerzeichen und schreibt das Ergebnis auf die Standardausgabe&lt;br /&gt;
 root@zero:~# expand /etc/samba/smb.conf&lt;br /&gt;
 ...&lt;br /&gt;
&lt;br /&gt;
==fmt==&lt;br /&gt;
#Setzt den Text der Dateien im Blocksatz der angegebenen Breite durch Auffüllen von Zeilen und Entfernen von Zeilenwechseln.&lt;br /&gt;
Standardgemäß werden Leerzeilen, die Position von Leerzeichen und der Einzug am Zeilenanfang erhalten. fmt versucht, &lt;br /&gt;
Zeilenumbrüche an Satzenden durchzuführen sowie sie nach dem ersten oder vor dem letzten Wort eines Satzes zu vermeiden. &lt;br /&gt;
 &lt;br /&gt;
 fmt [Optionen] [Dateien]&lt;br /&gt;
&lt;br /&gt;
Optionen&lt;br /&gt;
&lt;br /&gt;
* -p ''Präfix'': Formatiert nur Zeilen, die mit ''Präfix'' anfangen&lt;br /&gt;
 root@zero:/tmp# fmt -p '#' text&lt;br /&gt;
 #Setzt den Text der Dateien im Blocksatz der angegebenen Breite durch&lt;br /&gt;
 #Auffüllen von Zeilen und Entfernen von Zeilenwechseln.  Standardgemäß&lt;br /&gt;
 #werden Leerzeilen, die Position von Leerzeichen und der Einzug am&lt;br /&gt;
 #Zeilenanfang erhalten. fmt versucht,&lt;br /&gt;
 Zeilenumbrüche an Satzenden durchzuführen sowie sie nach dem ersten oder vor dem letzten Wort eines Satzes zu vermeiden.&lt;br /&gt;
&lt;br /&gt;
* -u : Erzwingt genau ein Leerzeichen zwischen Wörtern und zwei Leerzeichen zwischen Sätzen&lt;br /&gt;
&lt;br /&gt;
* -w ''Breite'': Setzt die Ausgabebreite auf ''Breite''&lt;br /&gt;
 root@zero:/tmp# fmt -w 30 text&lt;br /&gt;
 #Setzt den Text der Dateien&lt;br /&gt;
 im Blocksatz der angegebenen&lt;br /&gt;
 Breite durch Auffüllen&lt;br /&gt;
 von Zeilen und Entfernen&lt;br /&gt;
 von Zeilenwechseln.&lt;br /&gt;
 #Standardgemäß werden&lt;br /&gt;
 Leerzeilen, die Position von&lt;br /&gt;
 Leerzeichen und der Einzug am&lt;br /&gt;
 Zeilenanfang erhalten. fmt&lt;br /&gt;
 versucht, Zeilenumbrüche&lt;br /&gt;
 an Satzenden durchzuführen&lt;br /&gt;
 sowie sie nach dem ersten&lt;br /&gt;
 oder vor dem letzten Wort&lt;br /&gt;
 eines Satzes zu vermeiden.&lt;br /&gt;
&lt;br /&gt;
==join==&lt;br /&gt;
Führt die Zeilen zweier sortierter Dateien anhand von '''Übereinstimmungen''' in einem gemeinsamen Feld zusammen.&lt;br /&gt;
&lt;br /&gt;
 root@zero:~# more name&lt;br /&gt;
 1. karl&lt;br /&gt;
 2. heinz&lt;br /&gt;
 3. hans&lt;br /&gt;
 4. otto&lt;br /&gt;
 root@zero:~# more tel&lt;br /&gt;
 1. 1234&lt;br /&gt;
 2. 4321&lt;br /&gt;
 3. 222&lt;br /&gt;
 4. 121212&lt;br /&gt;
 root@zero:~# join name tel &amp;gt; telefonbuch&lt;br /&gt;
 root@zero:~# more telefonbuch&lt;br /&gt;
 1. karl 1234&lt;br /&gt;
 2. heinz 4321&lt;br /&gt;
 3. hans 222&lt;br /&gt;
 4. otto 121212&lt;br /&gt;
&lt;br /&gt;
 root@zero:~# join -t : /etc/passwd /etc/shadow&lt;br /&gt;
 ....&lt;br /&gt;
 daemon:x:1:1:daemon:/usr/sbin:/bin/sh:*:14181:0:99999:7:::&lt;br /&gt;
 bin:x:2:2:bin:/bin:/bin/sh:*:14181:0:99999:7:::&lt;br /&gt;
 sys:x:3:3:sys:/dev:/bin/sh:*:14181:0:99999:7:::&lt;br /&gt;
 sync:x:4:65534:sync:/bin:/bin/sync:*:14181:0:99999:7:::&lt;br /&gt;
 ...&lt;br /&gt;
&lt;br /&gt;
join in dat1 nach Feld 3 und in dat2 nach Feld 2&lt;br /&gt;
 thomas@lydia:~$ cat dat1 &lt;br /&gt;
 hugo:ps:1111&lt;br /&gt;
 erwin:zw:2222&lt;br /&gt;
 karl:sb:3333&lt;br /&gt;
 rudi:kl:4444&lt;br /&gt;
 thomas@lydia:~$ cat dat2&lt;br /&gt;
 blau:1111:svn&lt;br /&gt;
 grün:2222:fcs&lt;br /&gt;
 gelb:3333:fch&lt;br /&gt;
 rot:4444:fck&lt;br /&gt;
 thomas@lydia:~$ join -t : -1 3 -2 2 dat1 dat2 &lt;br /&gt;
 1111:hugo:ps:blau:svn&lt;br /&gt;
 2222:erwin:zw:grün:fcs&lt;br /&gt;
 3333:karl:sb:gelb:fch&lt;br /&gt;
 4444:rudi:kl:rot:fck&lt;br /&gt;
&lt;br /&gt;
==nl==&lt;br /&gt;
Nummeriert die Zeilen in einer Datei.&lt;br /&gt;
&lt;br /&gt;
 root@zero:~# nl /etc/passwd                                                   &lt;br /&gt;
     1  root:x:0:0:root:/root:/bin/bash                                       &lt;br /&gt;
     2  daemon:x:1:1:daemon:/usr/sbin:/bin/sh                                 &lt;br /&gt;
     3  bin:x:2:2:bin:/bin:/bin/sh                                            &lt;br /&gt;
     4  sys:x:3:3:sys:/dev:/bin/sh                                            &lt;br /&gt;
     5  sync:x:4:65534:sync:/bin:/bin/sync&lt;br /&gt;
     ...&lt;br /&gt;
Nummereriet mit führenden Nullen der Separatir ist ein :&lt;br /&gt;
 root@zero:~# nl -s : -n rz dat1&lt;br /&gt;
&lt;br /&gt;
==od==&lt;br /&gt;
Gibt Dateien im Oktal und anderen Formaten aus.&lt;br /&gt;
&lt;br /&gt;
 od [Optionen] Datei&lt;br /&gt;
&lt;br /&gt;
* -j ''Bytes'': Überspringt die Anzahl ''Bytes'' einer Datei&lt;br /&gt;
* -N ''Bytes'': Gibt nur die Anzahl ''Bytes'' aus&lt;br /&gt;
* -c : Gebe ASCII Zeichen aus&lt;br /&gt;
* -f : Gebe Fließkommazahlen aus&lt;br /&gt;
* -i : Gebe Dezimal Integer aus&lt;br /&gt;
* -l : Gebe Dezimal Long aus&lt;br /&gt;
* -o : Gebe Oktal 2 Byte Einheiten aus&lt;br /&gt;
* -s : Gebe Dezimal 2 Byte Einheiten aus&lt;br /&gt;
* -x : Gebe Hexadezimale 2 Byte einheiten aus&lt;br /&gt;
&lt;br /&gt;
Beispiele&lt;br /&gt;
&lt;br /&gt;
Gebe Master Boot Record (die ersten 512 Byte der Festplatte /dev/sda) als Hexadezimal aus&lt;br /&gt;
 root@zero:~# od '''-x -N''' 512 /dev/sda&lt;br /&gt;
 0000000 48eb 1090 d08e 00bc b8b0 0000 d88e c08e&lt;br /&gt;
 0000020 befb 7c00 00bf b906 0200 a4f3 21ea 0006&lt;br /&gt;
 0000040 be00 07be 0438 0b75 c683 8110 fefe 7507&lt;br /&gt;
 0000060 ebf3 b416 b002 bb01 7c00 80b2 748a 0203&lt;br /&gt;
 0000100 00ff 2000 0001 0000 0200 90fa f690 80c2&lt;br /&gt;
 ...&lt;br /&gt;
&lt;br /&gt;
Schreibe &amp;quot;suxer&amp;quot; in die Datei test&lt;br /&gt;
 root@zero:~# echo &amp;quot;suxer&amp;quot; &amp;gt; test&lt;br /&gt;
Ausgabe Hexadezimal&lt;br /&gt;
 root@zero:~# od -x test&lt;br /&gt;
 0000000 7573 6578 0a72&lt;br /&gt;
 0000006&lt;br /&gt;
&lt;br /&gt;
Ausgabe ASCII Zeichen&lt;br /&gt;
 root@zero:~# od -c test&lt;br /&gt;
 0000000   s   u   x   e   r  \n&lt;br /&gt;
 0000006&lt;br /&gt;
&lt;br /&gt;
==paste==&lt;br /&gt;
Fügt die Zeilen von zwei oder mehr Dateien horizontal zusammen&lt;br /&gt;
 root@zero:~# paste name tel&lt;br /&gt;
 1. karl 1. 1234&lt;br /&gt;
 2. heinz        2. 4321&lt;br /&gt;
 3. hans 3. 222&lt;br /&gt;
 4. otto 4. 121212&lt;br /&gt;
&lt;br /&gt;
==pr==&lt;br /&gt;
Bereitet Textdateien zum Drucken vor.&lt;br /&gt;
&lt;br /&gt;
 root@zero:~# echo &amp;quot;Plan für heute&amp;quot; &amp;gt; dokument&lt;br /&gt;
 root@zero:~# more dokument&lt;br /&gt;
 Plan für heute&lt;br /&gt;
 root@zero:~# pr dokument   &lt;br /&gt;
  &lt;br /&gt;
 &lt;br /&gt;
 2009-06-19 12:44                    dokument                     Seite 1&lt;br /&gt;
 &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
 Plan für heute&lt;br /&gt;
&lt;br /&gt;
Anmerkung Ausmaße der Bildschirmausgabe wie eine Druckseite.&lt;br /&gt;
&lt;br /&gt;
==sed==&lt;br /&gt;
streaming editor. Mit sed ist es möglich, den Inhalt einer Datei automatisch (nicht interaktiv) zu&lt;br /&gt;
bearbeiten. Wie unter Linux üblich, wird auch hier der Text nicht wirklich verändert sondern die &lt;br /&gt;
Änderung erfolgt über die Standardausgabe, die wieder umgeleitet werden kann. Die Syntax ist ähnlich &lt;br /&gt;
des ex modus von vi. Reguläre Ausdrücke können nach Belieben benutzt werden. &lt;br /&gt;
&lt;br /&gt;
Optionen:&lt;br /&gt;
 -e Zeichenkette  wendet die Editorbefehle aus Zeichenkette auf den Text an.&lt;br /&gt;
 -n gibt nur die Zeilen aus, die explizit (durch &amp;quot;p&amp;quot; ausgedruckt werden sollen&lt;br /&gt;
&lt;br /&gt;
Gibt die dritte Zeile der Datei text aus&lt;br /&gt;
 root@zero:~# sed -n &amp;quot;3p&amp;quot; text&lt;br /&gt;
 34&lt;br /&gt;
&lt;br /&gt;
Gibt die erste bis dritte Zeile von text aus&lt;br /&gt;
 root@zero:~# sed -n &amp;quot;1,3p&amp;quot; text&lt;br /&gt;
 sogar noch wichtiger&lt;br /&gt;
 123&lt;br /&gt;
 34&lt;br /&gt;
&lt;br /&gt;
Löschen der Zeile mit &amp;quot;sogar&amp;quot;&lt;br /&gt;
 root@zero:~# sed -e '/sogar/d' &amp;lt; text&lt;br /&gt;
 123&lt;br /&gt;
 34&lt;br /&gt;
 4711&lt;br /&gt;
 test&lt;br /&gt;
&lt;br /&gt;
und schreiben in text2&lt;br /&gt;
 root@zero:~# sed -e '/sogar/d' &amp;lt; text &amp;gt; text2&lt;br /&gt;
 root@zero:~# more text2&lt;br /&gt;
 123&lt;br /&gt;
 34&lt;br /&gt;
 4711&lt;br /&gt;
 test&lt;br /&gt;
&lt;br /&gt;
Alle 3en durch DREI ersetzen&lt;br /&gt;
 root@zero:~# sed -e 's/3/DREI/g' &amp;lt; text&lt;br /&gt;
 sogar noch wichtiger&lt;br /&gt;
 12DREI&lt;br /&gt;
 DREI4&lt;br /&gt;
 4711&lt;br /&gt;
 test&lt;br /&gt;
&lt;br /&gt;
==wc==&lt;br /&gt;
Zählt die Anzahl von Zeichen, Wörter oder Zeilen&lt;br /&gt;
&lt;br /&gt;
Optionen&lt;br /&gt;
* -m : Zählt die Anzahl der Zeichen&lt;br /&gt;
 root@zero:~# more name&lt;br /&gt;
 1. karl&lt;br /&gt;
 2. heinz&lt;br /&gt;
 3. hans&lt;br /&gt;
 4. otto&lt;br /&gt;
 root@zero:~# wc '''-m''' tel&lt;br /&gt;
 33 tel&lt;br /&gt;
&lt;br /&gt;
* -w : Zählt die Anzahl der Wörter (einschließlich Zahlen und andere Zeichen)&lt;br /&gt;
 root@zero:~# wc '''-w''' name&lt;br /&gt;
 8 name&lt;br /&gt;
&lt;br /&gt;
* -l : Zählt die Anzahl der Zeilen&lt;br /&gt;
 root@zero:~# wc '''-l''' name&lt;br /&gt;
 4 name&lt;br /&gt;
&lt;br /&gt;
==Sort==&lt;br /&gt;
&lt;br /&gt;
Zum sortieren von Dateien nach Feldern benutzt man sort. sort liest von STDIN man kann die Datei aber auch als Argument übergeben. &lt;br /&gt;
&lt;br /&gt;
Sortiert nach dem ersten Feld&lt;br /&gt;
  root@zero:~# sort /etc/passwd 	 &lt;br /&gt;
&lt;br /&gt;
Es wird geprüft ob die Datei schon sortiert ist &lt;br /&gt;
 root@zero:~# sort -c /etc/passwd 	&lt;br /&gt;
&lt;br /&gt;
Sortiert nach dem ersten Feld (Richtungsumkehr)  &lt;br /&gt;
 root@zero:~#  sort -r /etc/passwd&lt;br /&gt;
&lt;br /&gt;
Führende Leersortzeichen werden ignoriert &lt;br /&gt;
 root@zero:~# sort -b /etc/passwd&lt;br /&gt;
&lt;br /&gt;
Ausgabe  in die Datei pass&lt;br /&gt;
 root@zero:~# sort  /etc/passwd   -o pass	 &lt;br /&gt;
&lt;br /&gt;
nimmt : als Trenner -Voreinstellung ist TAB&lt;br /&gt;
  root@zero:~# sort -t : /etc/passwd&lt;br /&gt;
&lt;br /&gt;
sortiert nach dem  3 Feld,  der Trenner ist : und es wird nummerisch sortiert&lt;br /&gt;
&lt;br /&gt;
 root@zero:~# sort -t: +2 -n /etc/passwd		&lt;br /&gt;
&lt;br /&gt;
sortiert nach dem  3 Feld,  der Trenner ist : und es wird nummerisch sortiert&lt;br /&gt;
					&lt;br /&gt;
 root@zero:~# sort -t: -k 3 -n /etc/passwd&lt;br /&gt;
&lt;br /&gt;
Sortiert nach dem  3  bis zum 5 Feld, der Trenner ist : und es wird nummerisch sortiert&lt;br /&gt;
	&lt;br /&gt;
 root@zero:~# sort -t: -k 3,5 -n /etc/passwd	&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==INodes==&lt;br /&gt;
Inode (oder I-Node) wird im Deutschen am besten als Informationsknoten oder&lt;br /&gt;
Indexeintrag bezeichnet. Er fasst alle Attribute einer Datei zusammen außer dem Inhalt&lt;br /&gt;
und dem Namen der Datei.&lt;br /&gt;
&lt;br /&gt;
===Daten===&lt;br /&gt;
{| border=1 cellpadding=2&lt;br /&gt;
|type&lt;br /&gt;
|Der Typ der Datei wird als einzelner Buchstabe angezeigt. Der Typ einer Datei wird beim Anlegen der Datei festgelegt&lt;br /&gt;
|-&lt;br /&gt;
|Permissions &lt;br /&gt;
|Die Zugriffsrechte der Datei werden in den 12 Bit sstrwxrwxrwx abgespeichert.Wenn sie gesetzt sind, werden sie bei &lt;br /&gt;
der Ausgabe an Stelle der x-Rechte ausgegeben. Die Zugriffsrechte können mit dem Kommando chmod verändert werden.&lt;br /&gt;
|-&lt;br /&gt;
|link count&lt;br /&gt;
|In UNIX kann eine Datei mehr als einen Namen haben. Der Link Count gibt die Anzahl der Namen einer Datei an. Er kann&lt;br /&gt;
mit dem Kommando ln erhöht und dem Kommando rm erniedrigt werden.&lt;br /&gt;
|-&lt;br /&gt;
|owner&lt;br /&gt;
|Für den Dateieigentümer gelten die in der ersten rwx-Gruppe festgelegten Zugriffsrechte. Standardmäßig ist der &lt;br /&gt;
Eigentümer einer Datei derjenige Benutzer, der die Datei angelegt hat.&lt;br /&gt;
|-&lt;br /&gt;
|group&lt;br /&gt;
|Für Benutzer, die in der gleichen Gruppe sind, der die Datei angehört, gelten die in der zweiten rwx-Gruppe festgelegten&lt;br /&gt;
Zugriffsrechte. In System V gehört eine Datei standardmäßig der Gruppe an, in der der anlegende Benutzer gerade ist.&lt;br /&gt;
|-&lt;br /&gt;
|size&lt;br /&gt;
|Bei normalen Dateien und Verzeichnissen gibt diese Information die Länge der Datei in Byte an.&lt;br /&gt;
|-&lt;br /&gt;
|access time&lt;br /&gt;
|Die Zugriffszeit gibt den Zeitpunkt des letzten Lesezugriffes auf eine Datei an. Aus Effizienzgründen wird die &lt;br /&gt;
Zugriffszeit an Verzeichnissen nicht gesetzt, wenn ein Verzeichnis durchsucht wird, obwohl man dies erwarten könnte. ''(ls -l --time=atime)''&lt;br /&gt;
|-&lt;br /&gt;
|modification time&lt;br /&gt;
|Die Modifikationszeit gibt die Zeit des letzten Schreibzugriffes auf die Daten der Datei an. Intern speichert UNIX &lt;br /&gt;
die Zeit als Sekunden seit Beginn des Jahres 1970 und in GMT ab. Für die Ausgabe wird dies in ein besser lesbares &lt;br /&gt;
Format in der lokalen Zeitzone umgewandelt. ''(ls -l)''&lt;br /&gt;
|-&lt;br /&gt;
|change time &lt;br /&gt;
|Die Veränderungszeit gibt das Datum der letzten Statusänderung der Datei an. Sie wird immer dann gesetzt, wenn die &lt;br /&gt;
Informationen über die Datei sich ändern (Datum der Erzeugung wird nicht gespeichert) ''(ls -lc)''&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
===Dateiarten===&lt;br /&gt;
{| border=1 cellpadding=2&lt;br /&gt;
!Zeichen&lt;br /&gt;
!Typ&lt;br /&gt;
!Zweck&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;nowiki&amp;gt;-&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
|file&lt;br /&gt;
|normale Datei&lt;br /&gt;
|-&lt;br /&gt;
|d&lt;br /&gt;
|directory&lt;br /&gt;
|Verzeichnis&lt;br /&gt;
|-&lt;br /&gt;
|b&lt;br /&gt;
|block device&lt;br /&gt;
|Gerätedatei&lt;br /&gt;
|-&lt;br /&gt;
|c&lt;br /&gt;
|character device&lt;br /&gt;
|Gerätedatei&lt;br /&gt;
|-&lt;br /&gt;
|l&lt;br /&gt;
|link&lt;br /&gt;
|Querverweis&lt;br /&gt;
|-&lt;br /&gt;
|p&lt;br /&gt;
|named pipe&lt;br /&gt;
|Benannte Pipeline&lt;br /&gt;
|-&lt;br /&gt;
|s&lt;br /&gt;
|socket&lt;br /&gt;
|Netzwerkverbindung&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
====Normale Dateien====&lt;br /&gt;
Unter einer normalen Datei versteht man die Ansammlung von Daten. Dies kann ein Text, Programm, Bild oder sonstiges sein. &lt;br /&gt;
Beispiel&lt;br /&gt;
 root@zero:~# ls -l text | cut -c 1&lt;br /&gt;
 -&lt;br /&gt;
&lt;br /&gt;
====Verzeichnisse====&lt;br /&gt;
Dateien werden in Verzeichnissen gespeichert, nur so ist eine Ordnung möglich. &lt;br /&gt;
 root@zero:~# mkdir -v Ordner&lt;br /&gt;
 mkdir: Verzeichnis „Ordner“ angelegt&lt;br /&gt;
 &lt;br /&gt;
 root@zero:~# ls -ld Ordner | cut -c 1&lt;br /&gt;
 d&lt;br /&gt;
&lt;br /&gt;
====Gerätedateien (Block und Char)====&lt;br /&gt;
Gerätedateien ermöglichen Anwendungsprogrammen unter Benutzung des  Kernels den Zugriff auf die Hardwarekomponenten des Systems. Ansprechbar über Major und Minor Nummern &lt;br /&gt;
&lt;br /&gt;
Beispiele&lt;br /&gt;
&lt;br /&gt;
Sicherung des Master Boot Records der ersten Festplatte&lt;br /&gt;
 root@zero:~# dd if=/dev/sda of=/tmp/mbr.img bs=512 count=1&lt;br /&gt;
&lt;br /&gt;
Block Device &lt;br /&gt;
 root@zero:~# ls -l /dev/sda | cut -c 1 &lt;br /&gt;
 b&lt;br /&gt;
&lt;br /&gt;
Character Device &lt;br /&gt;
 root@zero:~# ls -l /dev/ttyS0  | cut -c 1 &lt;br /&gt;
 c&lt;br /&gt;
&lt;br /&gt;
====Named Pipes====&lt;br /&gt;
Benannte Pipes (Named Pipes) können dagegen auch zur Kommunikation zwischen Prozessen eingesetzt werden, die nicht miteinander&lt;br /&gt;
verwandt sind und sich darüber hinaus auf unterschiedlichen Rechnern innerhalb eines Netzwerkes befinden dürfen. Sie sind &lt;br /&gt;
flexibler als anonyme Pipes und eignen sich für sogenannte Client-Server-Anwendungen (es lassen sich auch RPCs realisieren).&lt;br /&gt;
Benannte Pipes ermöglichen die gleichzeitige Kommunikation in beide Richtungen, das heißt, Daten können im Vollduplexbetrieb &lt;br /&gt;
zwischen den Prozessen ausgetauscht werden.&lt;br /&gt;
 &lt;br /&gt;
Erstelle Named Pipe mit Namen /tmp/roehre. Schreibe &amp;quot;hallo welt&amp;quot; in die Pipe und bleibe&lt;br /&gt;
 xinux@zero:~$ mkfifo /tmp/roehre&lt;br /&gt;
 xinux@zero:~$ echo hallo welt &amp;gt; /tmp/roehre &lt;br /&gt;
&lt;br /&gt;
Gebe Inhalt der Pipe mit cat aus&lt;br /&gt;
 root@zero:~# cat &amp;lt; /tmp/roehre &lt;br /&gt;
 hallo welt&lt;br /&gt;
 root@zero:~# ls -l /tmp/roehre | cut -c 1&lt;br /&gt;
 p&lt;br /&gt;
&lt;br /&gt;
====Sockets====&lt;br /&gt;
Schnittstelle um es vernetzten Rechnern zu ermöglichen, miteinander zu kommunizieren.&lt;br /&gt;
&lt;br /&gt;
Sie ist in der Regel definiert durch IP-Adresse sowie Port. &lt;br /&gt;
&lt;br /&gt;
====Links====&lt;br /&gt;
Bei Links handelt es sich um symbolische Verweise auf andere Dateien&lt;br /&gt;
&lt;br /&gt;
'''Softlink'''&lt;br /&gt;
Ein Softlink ist eine Datei die nur auf den Namen einer anderen Datei verweist. Wenn die Originaldatei gelöscht wird, zeigt &lt;br /&gt;
der Link ins Leere. &lt;br /&gt;
&lt;br /&gt;
 ln -s datei softlink&lt;br /&gt;
&lt;br /&gt;
{| border=1 cellpadding=2&lt;br /&gt;
| Vorteile&lt;br /&gt;
| Symbolische Links können auch auf Verzeichnisse angelegt werden&amp;lt;br&amp;gt;Sie sind partitionsübergreifend&amp;lt;br&amp;gt;Man kann sie auf Dateien anlegen, die noch nicht existieren&lt;br /&gt;
|-&lt;br /&gt;
| Nachteile&lt;br /&gt;
| Wenn das Original gelöscht ist, ist kein Zugriff mehr möglich&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Beispiel&lt;br /&gt;
 root@zero:~# ln -s text verweis&lt;br /&gt;
 root@zero:~# ls -l verweis&lt;br /&gt;
 lrwxrwxrwx 1 root root 4 2009-06-18 15:48 verweis -&amp;gt; text&lt;br /&gt;
&lt;br /&gt;
'''Hardlinks'''&lt;br /&gt;
 ln datei hardlink&lt;br /&gt;
Eigentlich ist jede Datei ein Hardlink. Ein Hardlink ist ein Verzeichniseintrag,&lt;br /&gt;
der auf eine Inode verweist. Beim Erzeugen einer Datei verweist ein Eintrag auf&lt;br /&gt;
eine Inode. Man kann dann weitere Verweise erzeugen. Der Linkcounter wird&lt;br /&gt;
jeweils um 1 erhöht. Beim Löschen einer Datei wird er jeweils um 1 reduziert.&lt;br /&gt;
Wird der Wert 0 erreicht, ist die Datei gelöscht.&lt;br /&gt;
{| border=1 cellpadding=2&lt;br /&gt;
| Vorteile&lt;br /&gt;
|Zugriff auf die Daten, selbst wenn das Orginal gelöscht ist.&lt;br /&gt;
|-&lt;br /&gt;
|Nachteile&lt;br /&gt;
|Man kann keine Hardlinks auf Verzeichnisse anlegen.&lt;br /&gt;
Ist nur innerhalb einer Partion möglich.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Beispiel&lt;br /&gt;
 root@zero:~# touch 1&lt;br /&gt;
 root@zero:~# echo &amp;quot;text&amp;quot; &amp;gt; 1&lt;br /&gt;
 root@zero:~# ln 1 2&lt;br /&gt;
 root@zero:~# more 2&lt;br /&gt;
 text&lt;br /&gt;
 root@zero:~# echo &amp;quot;doch kein text&amp;quot; &amp;gt; 1&lt;br /&gt;
 root@zero:~# more 1&lt;br /&gt;
 doch kein text&lt;br /&gt;
 root@zero:~# more 2&lt;br /&gt;
 doch kein text&lt;br /&gt;
&lt;br /&gt;
Weitere Optionen:&lt;br /&gt;
 -b sichert Dateien, statt sie zu überschreiben &lt;br /&gt;
 -f Überschreibt bestehende, gleichnamige Dateien&lt;br /&gt;
 -i fragt vor dem Überschreiben nach Bestätigung&lt;br /&gt;
 -v ausführliche Meldungen&lt;br /&gt;
&lt;br /&gt;
==Prozesse==&lt;br /&gt;
===Was ist ein Prozess?===&lt;br /&gt;
Ein Prozess setzt sich aus zwei Teilen zusammen:&lt;br /&gt;
&lt;br /&gt;
1.Programm, das in den Hauptspeicher geladen wurde&lt;br /&gt;
&lt;br /&gt;
2.Prozessumgebung&lt;br /&gt;
&lt;br /&gt;
Unter einem Prozess versteht man ein Programm (binär), das in den Hauptspeicher&lt;br /&gt;
geladen wurde. Also nicht das Program selbst, das auf der Festplatte liegt ist der&lt;br /&gt;
Prozess, sondern es wird erst durch das Laden in den Hauptspeicher dazu.&lt;br /&gt;
Normalerweise liegt ein Programm als ausführbare Datei irgendwo auf der&lt;br /&gt;
Festplatte oder auf Diskette. Ob es sich bei dem Programm um eine binäre Datei&lt;br /&gt;
handelt, kann man mit dem Befehl '' file '' feststellen.&lt;br /&gt;
 &lt;br /&gt;
 root@zero:~# file /bin/mkdir&lt;br /&gt;
 /bin/mkdir: ELF 32-bit LSB executable, Intel 80386, version 1 (SYSV), dynamically linked (uses shared libs), for GNU/Linux 2.6.8, stripped&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Die Datei liegt im Maschinencode vor und kann in den Hauptspeicher geladen&lt;br /&gt;
werden. Sobald dies geschehen ist, kann der Rechner diesen Maschinencode&lt;br /&gt;
abarbeiten (ausführen).&lt;br /&gt;
&lt;br /&gt;
Da aber ein Programm nicht direkt auf die Hardware zugreifen soll, muss es vom&lt;br /&gt;
Betriebsystem kontrolliert werden. Das Betriebssystem liegt logisch gesehen&lt;br /&gt;
zwischen Hardware und Anwendung. Das Betriebssystem ordnet jedem Prozess&lt;br /&gt;
verschiedene Kenndaten zu, um die Prozesse verwalten zu können. Alle&lt;br /&gt;
Kenndaten, die einem Prozess zugeordnet sind, nennt man die&lt;br /&gt;
Prozessumgebung.Wenn man in der Shell ein Kommando eingibt, wird ein Prozess&lt;br /&gt;
kreiert. Natürlich ist die Shell selbst auch ein Prozess. Ein Prozess kann aber&lt;br /&gt;
genauso gut ein Serverprozess (Dienst) sein, z.B. Apache.&lt;br /&gt;
Ein wesentliches Merkmal eines Prozesses ist die Prozesskommunikation. Über im&lt;br /&gt;
Betriebssystem implementierte Methoden ist es möglich, dass verschiedene&lt;br /&gt;
Prozesse Signale und Daten untereinander austauschen können.&lt;br /&gt;
Dadurch wird auch dem Benutzer ermöglicht, einem Prozeß bestimmte Signale zu&lt;br /&gt;
senden bzw. auf den Status eines Prozesses Einfluss zu nehmen.&lt;br /&gt;
&lt;br /&gt;
===Prozesstabelle (Anzeige mit ps)===&lt;br /&gt;
Da zu jedem Prozess Kenndaten geführt werden, müssen diese auch irgendwo&lt;br /&gt;
festgehalten werden. Das geschieht in der sogenannten Prozesstabelle.&lt;br /&gt;
&lt;br /&gt;
Kenndaten der Prozesse (Auswahl):&lt;br /&gt;
* F Flags (z.B. ausgelagert; Systemprozess; Trace,...)&lt;br /&gt;
* UID Nutzer, mit dessen Rechten der Prozess ausgeführt wird&lt;br /&gt;
* PID Prozess - ID. Diese Nummer gibt eine eindeutige Prozess - Nummer&lt;br /&gt;
an. Sie wird vom System automatisch beim Starten des Prozesses&lt;br /&gt;
vergeben und ist für die Laufzeit eindeutig.&lt;br /&gt;
* PPID Prozessnumer der Eltern-Prozesses&lt;br /&gt;
* PRI Priorität eines Prozesses; je niedriger der Wert ist, desto besser&lt;br /&gt;
* NI ist der Nicewert des Prozesses; Nice erniedrigt den Grundwert&lt;br /&gt;
der Priorität des Prozesses und gibt damit Prozessorzeit für andere&lt;br /&gt;
Prozesse frei.&lt;br /&gt;
* SIZE Speichergröße des Prozesses inklusive Stack (eine Art Zwischenspeicher)&lt;br /&gt;
* RSS Verbrauch an physischen Speicher&lt;br /&gt;
* WCHAN ist der Name der Kernerlfunktion, in der der Prozess schläft&lt;br /&gt;
* STAT Status des Prozesses&lt;br /&gt;
R läuft       S schlafend     D nicht störbarer Schlaf&lt;br /&gt;
T angehalten  Z Zombie        W der Prozess belegt keine Seiten&lt;br /&gt;
* TIME Bisland benötigte Prozessorzeit&lt;br /&gt;
* SIZE ist die Größe von Text, Daten und Stack&lt;br /&gt;
* TTY die Nummer des kontrollierenden Teminal; wenn hier ein ? steht,&lt;br /&gt;
handelt es sich um einen Dämon oder Serverprozess.&lt;br /&gt;
* COMMAND Angabe des Prozesses selbst. Dies ist meist der Programmname.&lt;br /&gt;
&lt;br /&gt;
Weiteres&lt;br /&gt;
* GID Gruppe, unter der der Prozess läuft&lt;br /&gt;
* Verweis auf das aktuellen Arbeitsverzeichnis&lt;br /&gt;
* Um mit relativen Pfadangaben arbeiten zu können braucht man diesen Eintrag&lt;br /&gt;
* Tabelle mit Verweisen auf aktuell geöffnete Dateien&lt;br /&gt;
* 3 sind automatisch geöffnet Standardeingabe, Standardausgabe und&lt;br /&gt;
Standardfehlerkanal&lt;br /&gt;
&lt;br /&gt;
Beispiel&lt;br /&gt;
 root@zero:~# ps -l&lt;br /&gt;
 F S   UID   PID  PPID  C PRI  NI ADDR SZ WCHAN  TTY          TIME CMD&lt;br /&gt;
 4 R     0 18639 18631  0  80   0 -  1080 -      pts/0    00:00:00 bash&lt;br /&gt;
 0 R     0 25904 18639  0  80   0 -   635 -      pts/0    00:00:00 ps&lt;br /&gt;
&lt;br /&gt;
===Eltern und Kinder===&lt;br /&gt;
Jeder Prozess kann weitere Prozesse erzeugen. Die erzeugten Prozesse bezeichnet&lt;br /&gt;
man als Kindprozesse. Jeder Kindprozess weiß anhand der PID, woher er stammt.&lt;br /&gt;
&lt;br /&gt;
Alle Prozesse sind von einem anderen Prozess gestartet worden, mit Ausnahme&lt;br /&gt;
des Pseudoprozesses (noch im Kernel beim Starten erzeugter Prozess). Dieser hat&lt;br /&gt;
die Prozessnummer 0. Er hat die Aufgabe, den Init Prozess ( /sbin/init die Nummer&lt;br /&gt;
1) zu starten, der in System V alle anderen Prozesse direkt oder über seine Kind-&lt;br /&gt;
prozesse startet. (init wird konfiguriert durch die /etc/inittab)&lt;br /&gt;
&lt;br /&gt;
Es gibt zwei Arten wie ein Prozess gestartet werden kann:&lt;br /&gt;
&lt;br /&gt;
# Fork und Exec: Prozessumgebung wird dupliziert, der neue Prozess bekommt eine eigene neue PID&lt;br /&gt;
# Exec: Alter Prozess wird durch neuen Prozess überladen (geht mit dem shell-buildin exec)&lt;br /&gt;
&lt;br /&gt;
'''Rechte auf Objekte UID GID'''&lt;br /&gt;
Ob ein Prozess auf eine Datei zugreifen kann, entscheidet der Kernel anhand der&lt;br /&gt;
Zugriffssrechte, die auf der Datei gesetzt sind. Er checkt anhand der UID und GID&lt;br /&gt;
des Prozesses, ob es erlaubt ist. Mit dieser Technik wird letztendlich geprüft, was&lt;br /&gt;
ein User darf, und was nicht.&lt;br /&gt;
&lt;br /&gt;
===Rechenzeit und Priorität===&lt;br /&gt;
Da auch bei Prozessen eine Gerechtigkeit herschen muss, muss eine Instanz&lt;br /&gt;
darüber entscheiden wie lange ein Prozess Rechenzeit verbrauchen darf.&lt;br /&gt;
Folgende Kenndaten werden dazu benötigt&lt;br /&gt;
* clocktick = Zeiteinheit&lt;br /&gt;
* n = Faktor über den Kernel einstellbar&lt;br /&gt;
* slice = n &amp;lt;nowiki&amp;gt;*&amp;lt;/nowiki&amp;gt; clocktick&lt;br /&gt;
* agingtime = weitere Zeiteinheit über den Kernel einstellbar&lt;br /&gt;
&lt;br /&gt;
Es wird davon ausgegangen das der Prozess mit der niedrigsten Priorität gerade&lt;br /&gt;
rechnet. Pro clocktick erhöht sich die Priorität dieses Prozesses um eins.&lt;br /&gt;
&lt;br /&gt;
Jetzt können 3 Situationen eintreten die alle dazu führen das der Scheduler&lt;br /&gt;
aufgerufen wird.&lt;br /&gt;
&lt;br /&gt;
# Prozess blockiert wegen einer Ausgabe oder Eingabe.&lt;br /&gt;
# Gibt Rechenzeit freiwillig ab.&lt;br /&gt;
# Der Slice endet.&lt;br /&gt;
&lt;br /&gt;
Der Aufruf des Schedulers bewirkt das der Prozess mit der niedrigsten Priorität&lt;br /&gt;
gescheduled wird, er also nun rechnen darf. Nach Ablauf der agingtime werden&lt;br /&gt;
nun die Prozesse &amp;quot;gealtert&amp;quot;. Das geschieht nach folgender Formel&lt;br /&gt;
&lt;br /&gt;
Neue Priorität = Alte Priorität / 2 + Nicewert&lt;br /&gt;
&lt;br /&gt;
Der User hat die Möglichkeit, über den sogenannten Nicefaktor den Grundwert für&lt;br /&gt;
einen Prozess zu senken. Der Prozess braucht dann länger für seine Abarbeitung.&lt;br /&gt;
Er verhält sich somit netter zu den anderen Prozessen. Normale User können nur&lt;br /&gt;
netter werden, der Systemverwalter kann auch nicht netter (gemeiner) werden. Der&lt;br /&gt;
Bereich liegt zwischen 19 (sehr nett) bis 0 (weniger nett) für die User, und 19 bis&lt;br /&gt;
-20 für root.&lt;br /&gt;
&lt;br /&gt;
[[Image:pri.png]]&lt;br /&gt;
&lt;br /&gt;
'''Signale'''&lt;br /&gt;
&lt;br /&gt;
Mit den Kommando kill und killall kann man Prozessen Signale schicken&lt;br /&gt;
&lt;br /&gt;
 kill -Signalnummer PID &lt;br /&gt;
&lt;br /&gt;
Signalnummer&lt;br /&gt;
{| border=1 cellpadding=2&lt;br /&gt;
!Signalname&lt;br /&gt;
!Wert&lt;br /&gt;
!Aktion&lt;br /&gt;
|-&lt;br /&gt;
|SIGHUP&lt;br /&gt;
|1&lt;br /&gt;
|Neuinitialisierung eines Prozesses&lt;br /&gt;
|-&lt;br /&gt;
|SIGINT&lt;br /&gt;
|2&lt;br /&gt;
|Interrupt-Signal von der Tastatur (STRG+c)&lt;br /&gt;
|-&lt;br /&gt;
|SIGQUIT&lt;br /&gt;
|3&lt;br /&gt;
|Interrupt-Signal von der Tastatur (STRG+c) mit Dump&lt;br /&gt;
|-&lt;br /&gt;
|SIGKILL&lt;br /&gt;
|9&lt;br /&gt;
|unwiderrufliches Beendigungssignal (Töten)&lt;br /&gt;
|-&lt;br /&gt;
|SIGSEGV&lt;br /&gt;
|11&lt;br /&gt;
|Ungültige Speicherreferenz (bedeutet oft auf defekten Speicher)&lt;br /&gt;
|-&lt;br /&gt;
|SIGTERM &lt;br /&gt;
|15&lt;br /&gt;
|Beendigungssignal (geöffnete Dateien werden geschlossen)&lt;br /&gt;
|-&lt;br /&gt;
|SIGCONT &lt;br /&gt;
|18&lt;br /&gt;
|Weiterfahren, wenn gestoppt&lt;br /&gt;
|-&lt;br /&gt;
|SIGSTOP&lt;br /&gt;
|19&lt;br /&gt;
|Prozessstop&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Beispiel&lt;br /&gt;
 root@zero:~# kill -1 7562&lt;br /&gt;
&lt;br /&gt;
===Programme im Zusammenhang mit Prozessen===&lt;br /&gt;
* ps: Zeigt die Prozesse mit ihrem Status an&lt;br /&gt;
 root@zero:~# ps&lt;br /&gt;
  PID TTY          TIME CMD&lt;br /&gt;
 14134 pts/0    00:00:00 bash&lt;br /&gt;
 14149 pts/0    00:00:00 ps&lt;br /&gt;
&lt;br /&gt;
 root@zero:~# ps -elf | grep apache&lt;br /&gt;
 1 S root      5738     1  0  80   0 -  5461 select Jun16 ?        00:00:00 /usr/sbin/apache2 -k start&lt;br /&gt;
 5 S www-data  5739  5738  0  80   0 -  5581 inet_c Jun16 ?        00:00:00 /usr/sbin/apache2 -k start&lt;br /&gt;
 5 S www-data  5742  5738  0  80   0 -  5461 inet_c Jun16 ?        00:00:00 /usr/sbin/apache2 -k start&lt;br /&gt;
 5 S www-data  5743  5738  0  80   0 -  5461 inet_c Jun16 ?        00:00:00 /usr/sbin/apache2 -k start&lt;br /&gt;
 5 S www-data  5745  5738  0  80   0 -  5461 inet_c Jun16 ?        00:00:00 /usr/sbin/apache2 -k start&lt;br /&gt;
 5 S www-data  5746  5738  0  80   0 -  5461 inet_c Jun16 ?        00:00:00 /usr/sbin/apache2 -k start&lt;br /&gt;
 0 S root     14153 14134  0  80   0 -   837 pipe_w 16:59 pts/0    00:00:00 grep apache&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* nice: Lässt ein Programm mit verändertem Grundwert der Priorität laufen&lt;br /&gt;
 root@zero:~# nice&lt;br /&gt;
 0&lt;br /&gt;
 root@zero:~# nice -n 9 bash&lt;br /&gt;
 root@zero:~# nice&lt;br /&gt;
 9&lt;br /&gt;
 root@zero:~#&lt;br /&gt;
&lt;br /&gt;
* renice: Ändert den Grundwert der Priorität eines laufenden Prozesses&lt;br /&gt;
 root@zero:~# renice 10 5742&lt;br /&gt;
 5742: Alte Priorität: 0, neue Priorität: 10&lt;br /&gt;
&lt;br /&gt;
* top: Zeigt die Prozesse mit ihrem Status an (Abbrechen mit q)&lt;br /&gt;
 root@zero:~# top&lt;br /&gt;
&lt;br /&gt;
* pstree: Zeigt die Prozesse als Baumstruktur&lt;br /&gt;
 root@zero:~# pstree&lt;br /&gt;
 init─┬─NetworkManager&lt;br /&gt;
      ├─acpid&lt;br /&gt;
      ├─apache2───5*[apache2]&lt;br /&gt;
      ├─atd&lt;br /&gt;
      ├─bluetoothd&lt;br /&gt;
      ├─console-kit-dae───63*[{console-kit-dae}]&lt;br /&gt;
      ├─cron&lt;br /&gt;
      ├─cupsd&lt;br /&gt;
      ├─dbus-daemon&lt;br /&gt;
      ├─dd&lt;br /&gt;
      ├─gdm───gdm─┬─Xorg&lt;br /&gt;
      │           └─gdmgreeter&lt;br /&gt;
      ├─6*[getty]&lt;br /&gt;
      ├─hald───hald-runner─┬─hald-addon-acpi&lt;br /&gt;
      │                    ├─hald-addon-inpu&lt;br /&gt;
      │                    └─2*[hald-addon-stor]&lt;br /&gt;
      ├─klogd&lt;br /&gt;
      ├─nm-system-setti&lt;br /&gt;
      ├─nmbd&lt;br /&gt;
      ├─nscd───11*[{nscd}]&lt;br /&gt;
      ├─portmap&lt;br /&gt;
      ├─rpc.statd&lt;br /&gt;
      ├─slapd───2*[{slapd}]&lt;br /&gt;
      ├─smbd───smbd&lt;br /&gt;
      ├─sshd───sshd───bash───bash───pstree&lt;br /&gt;
      ├─syslogd&lt;br /&gt;
      ├─system-tools-ba&lt;br /&gt;
      ├─udevd&lt;br /&gt;
      ├─winbindd─┬─winbindd───winbindd&lt;br /&gt;
      │          └─3*[winbindd]&lt;br /&gt;
      └─wpa_supplicant&lt;br /&gt;
&lt;br /&gt;
===Jobs===&lt;br /&gt;
Unter einem Job versteht man ein Programm, welches man von der Shell gelöst&lt;br /&gt;
hat. D. h. man kann ganz normal weiter arbeiten und der Job verrichtet seinen&lt;br /&gt;
Dienst im Hintergrund. Man kann jederzeit zu diesem Job wieder Kontakt&lt;br /&gt;
aufnehmen.&lt;br /&gt;
&lt;br /&gt;
Ein Job kann auf 2 Arten gestarten werden:&lt;br /&gt;
&lt;br /&gt;
# Durch Anhängen des &amp;amp; Zeichens beim Programmstart&lt;br /&gt;
 root@zero:~# tail -f /var/log/messages &amp;amp;&lt;br /&gt;
 Jun 19 06:59:31 zero -- MARK --&lt;br /&gt;
 Jun 19 07:19:31 zero -- MARK --&lt;br /&gt;
 Jun 19 07:39:32 zero -- MARK --&lt;br /&gt;
 Jun 19 07:44:57 zero syslogd 1.5.0#5ubuntu3: restart.&lt;br /&gt;
 Jun 19 07:59:32 zero -- MARK --&lt;br /&gt;
 Jun 19 08:19:32 zero -- MARK --&lt;br /&gt;
 Jun 19 08:39:32 zero -- MARK --&lt;br /&gt;
 Jun 19 08:59:32 zero -- MARK --&lt;br /&gt;
 Jun 19 09:19:33 zero -- MARK --&lt;br /&gt;
 Jun 19 09:39:33 zero -- MARK --&lt;br /&gt;
 [3] 27421&lt;br /&gt;
&lt;br /&gt;
# Durch Stoppen des Prozesses durch Drücken von Strg-Z und in den Hintergrund schicken mit %n (n ist die Jobnummer)&lt;br /&gt;
 root@zero:~# watch cat /proc/cpuinfo&lt;br /&gt;
 Strg-Z&lt;br /&gt;
 [4]+  Stopped                 watch cat /proc/cpuinfo&lt;br /&gt;
 root@zero:~# bg %4&lt;br /&gt;
 [4]+ watch cat /proc/cpuinfo &amp;amp;&lt;br /&gt;
&lt;br /&gt;
Anweisungen im Zusammenhang mit Jobs (n ist die Jobnummer)&lt;br /&gt;
* bg %n : Einen Job in den Hintergrund stellen (wie oben)&lt;br /&gt;
* fg %n : Einen Job in den Vordergrund holen&lt;br /&gt;
 root@zero:~# fg %4&lt;br /&gt;
 watch cat /proc/cpuinfo&lt;br /&gt;
&lt;br /&gt;
* jobs : Aktive Jobs ausgeben&lt;br /&gt;
&lt;br /&gt;
 root@zero:~# jobs&lt;br /&gt;
 [1]   Running                 tail -f /var/log/syslog &amp;amp;&lt;br /&gt;
 [2]   Running                 tail -f /var/log/syslog &amp;amp;&lt;br /&gt;
 [3]-  Running                 tail -f /var/log/messages &amp;amp;&lt;br /&gt;
 [4]+  Stopped                 watch cat /proc/cpuinfo&lt;br /&gt;
&lt;br /&gt;
* Strg-Z : Einen Vordergrund-Job vorübergehend anhalten&lt;br /&gt;
* kill -STOP %n : Unterbricht Job im Hintergrund&lt;br /&gt;
 root@zero:~# kill -STOP %1&lt;br /&gt;
 root@zero:~# jobs&lt;br /&gt;
 [1]+  '''Stopped'''                 tail -f /var/log/syslog&lt;br /&gt;
 [2]   Running                 tail -f /var/log/syslog &amp;amp;&lt;br /&gt;
 [3]   Running                 tail -f /var/log/messages &amp;amp;&lt;br /&gt;
 [4]-  Stopped                 watch cat /proc/cpuinfo&lt;br /&gt;
* kill -CONT %n : Setzt den unterbrochenen Job im Hintergrund fort&lt;br /&gt;
root@zero:~# kill -CONT %1&lt;br /&gt;
root@zero:~# jobs&lt;br /&gt;
 [1]+  '''Running'''                 tail -f /var/log/syslog &amp;amp;&lt;br /&gt;
 [2]   Running                 tail -f /var/log/syslog &amp;amp;&lt;br /&gt;
 [3]   Running                 tail -f /var/log/messages &amp;amp;&lt;br /&gt;
 [4]-  Stopped                 watch cat /proc/cpuinfo&lt;br /&gt;
* kill -KILL %n : Tötet Job im Hintergrund&lt;br /&gt;
 root@zero:~# kill -KILL %1&lt;br /&gt;
 root@zero:~# jobs&lt;br /&gt;
 [1]+  '''Killed'''                  tail -f /var/log/syslog&lt;br /&gt;
 [2]   Running                 tail -f /var/log/syslog &amp;amp;&lt;br /&gt;
 [3]   Running                 tail -f /var/log/messages &amp;amp;&lt;br /&gt;
 [4]-  Stopped                 watch cat /proc/cpuinfo&lt;br /&gt;
 root@zero:~# jobs&lt;br /&gt;
 [2]   Running                 tail -f /var/log/syslog &amp;amp;&lt;br /&gt;
 [3]-  Running                 tail -f /var/log/messages &amp;amp;&lt;br /&gt;
 [4]+  Stopped                 watch cat /proc/cpuinfo&lt;br /&gt;
&lt;br /&gt;
Bedingungen, die zu Jobausführung eingehalten werden sollen:&lt;br /&gt;
* Der Job soll nicht auf den Bildschirm schreiben (Standardausgabe +Standardfehlerkanal).&lt;br /&gt;
* Er soll keine Eingaben vom Benutzer erwarten.&lt;br /&gt;
&lt;br /&gt;
==Suchen von Dateien==&lt;br /&gt;
===find===&lt;br /&gt;
 find ab_wo_wird_gesucht was_wird_gesucht aktion&lt;br /&gt;
 find [Pfad] [Bedingung] [Aktion]&lt;br /&gt;
&lt;br /&gt;
====Nach Namen====&lt;br /&gt;
 find [Pfad] '''-name''' [Name]&lt;br /&gt;
 &lt;br /&gt;
Finde alle Dateien mit Namen test ab dem Verzeichnis /home und gebe diese Zeilenweise aus&lt;br /&gt;
 root@zero:~# find /home -name test -print&lt;br /&gt;
 /home/xinux/test&lt;br /&gt;
 /home/test&lt;br /&gt;
&lt;br /&gt;
Wie oben, jedoch mit Namensanfang test&lt;br /&gt;
 root@zero:/home/xinux# find /home -name 'test*'&lt;br /&gt;
 /home/xinux/testdatei&lt;br /&gt;
 /home/xinux/test&lt;br /&gt;
 /home/test&lt;br /&gt;
&lt;br /&gt;
====Nach Benutzer(Eigentümer)====&lt;br /&gt;
 root@zero:/tmp# find /tmp/ '''-user''' xinux&lt;br /&gt;
 /tmp/datei&lt;br /&gt;
&lt;br /&gt;
====Nach Gruppe====&lt;br /&gt;
 root@zero:/tmp# find /tmp/ '''-group''' hacker&lt;br /&gt;
 /tmp/datei3&lt;br /&gt;
 /tmp/datei2&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
====Nach Typ====&lt;br /&gt;
Es wird nach Dateien anhand Ihrer Art gesucht:&lt;br /&gt;
 find [Pfad] '''-type''' [Typ] &lt;br /&gt;
Typ:&lt;br /&gt;
* f: Normale Dateien&lt;br /&gt;
 root@zero:~# find /tmp/ -type f&lt;br /&gt;
 /tmp/mbr.img&lt;br /&gt;
 /tmp/datei&lt;br /&gt;
 /tmp/zeugs&lt;br /&gt;
 /tmp/.X0-lock&lt;br /&gt;
* d: Verzeichnisse&lt;br /&gt;
 root@zero:~# find /var/log -type d&lt;br /&gt;
 /var/log&lt;br /&gt;
 /var/log/apache2&lt;br /&gt;
 /var/log/unattended-upgrades&lt;br /&gt;
 /var/log/apparmor&lt;br /&gt;
 /var/log/ConsoleKit&lt;br /&gt;
 /var/log/dist-upgrade&lt;br /&gt;
 /var/log/dist-upgrade/20090526-1052&lt;br /&gt;
 /var/log/cups&lt;br /&gt;
 /var/log/apt&lt;br /&gt;
 /var/log/fsck&lt;br /&gt;
 /var/log/samba&lt;br /&gt;
 /var/log/samba/cores&lt;br /&gt;
 /var/log/samba/cores/smbd&lt;br /&gt;
 /var/log/samba/cores/nmbd&lt;br /&gt;
 /var/log/samba/cores/winbindd&lt;br /&gt;
 /var/log/installer&lt;br /&gt;
 /var/log/gdm&lt;br /&gt;
 /var/log/news&lt;br /&gt;
* c: Char Devices (Zeichenorientierte Gerätedatei)&lt;br /&gt;
 root@zero:~# find / -type c&lt;br /&gt;
 /lib/udev/devices/kmem&lt;br /&gt;
 /lib/udev/devices/null&lt;br /&gt;
 /lib/udev/devices/console&lt;br /&gt;
 /lib/udev/devices/ppp&lt;br /&gt;
 /lib/udev/devices/net/tun&lt;br /&gt;
* b: Block Devices (Blockorientierte Gerätedatei)&lt;br /&gt;
* p: Benannte Pipe&lt;br /&gt;
* l: Links&lt;br /&gt;
* s: Sockets&lt;br /&gt;
&lt;br /&gt;
====Nach Modifikation====&lt;br /&gt;
Listet alle Dateien in /etc auf, die innerhalb von zwei Tagen modifiziert wurden&lt;br /&gt;
 root@zero:/var/log# find /etc/ -mtime 2 -print&lt;br /&gt;
 /etc/apache2&lt;br /&gt;
 /etc/apache2/mods-available&lt;br /&gt;
 /etc/apache2/conf.d&lt;br /&gt;
 /etc/apache2/sites-available&lt;br /&gt;
 /etc/bash_completion.d&lt;br /&gt;
 /etc/blkid.tab.old&lt;br /&gt;
 /etc/firefox-3.0/profile&lt;br /&gt;
 /etc/firefox-3.0/profile/chrome&lt;br /&gt;
 /etc/firefox-3.0/pref&lt;br /&gt;
 /etc/profile.d&lt;br /&gt;
 /etc/ufw/applications.d&lt;br /&gt;
 /etc/logrotate.d&lt;br /&gt;
 /etc/xulrunner-1.9&lt;br /&gt;
 /etc/blkid.tab&lt;br /&gt;
 /etc/cron.daily&lt;br /&gt;
 /etc/alternatives&lt;br /&gt;
 /etc/alternatives/x-www-browser&lt;br /&gt;
 /etc/alternatives/xulrunner&lt;br /&gt;
 /etc/gre.d&lt;br /&gt;
 /etc/hal/fdi/policy&lt;br /&gt;
 /etc/dbus-1/system.d&lt;br /&gt;
 /etc/udev/rules.d&lt;br /&gt;
&lt;br /&gt;
====Nach Größe====&lt;br /&gt;
Finde Dateien in /tmp, die größer als 100 MByte sind&lt;br /&gt;
 root@zero:/tmp# find /tmp/ -size +100M&lt;br /&gt;
 /tmp/datei&lt;br /&gt;
&lt;br /&gt;
Finde Dateien in /tmp, die kleiner als 100 KByte sind&lt;br /&gt;
 root@zero:/tmp# find /tmp/ -size -100k&lt;br /&gt;
 /tmp/&lt;br /&gt;
 /tmp/datei3&lt;br /&gt;
 /tmp/backup &lt;br /&gt;
 /tmp/datei2&lt;br /&gt;
 /tmp/.winbindd &lt;br /&gt;
 /tmp/.winbindd/pipe&lt;br /&gt;
 /tmp/mbr.img&lt;br /&gt;
 /tmp/zeugs&lt;br /&gt;
 /tmp/.ICE-unix&lt;br /&gt;
 /tmp/.X0-lock&lt;br /&gt;
 /tmp/datei1&lt;br /&gt;
 /tmp/.X11-unix&lt;br /&gt;
 /tmp/.X11-unix/X0&lt;br /&gt;
 /tmp/pulse-PKdhtXMmr18n&lt;br /&gt;
&lt;br /&gt;
====Nach Berechtigungen====&lt;br /&gt;
Finde Dateien in Home mit der Berechtigung 777 (-rwxrwxrwx)&lt;br /&gt;
 root@zero:/var# find /home/ -perm 777&lt;br /&gt;
 /home/samba&lt;br /&gt;
 /home/xinux/Examples&lt;br /&gt;
 /home/xinux/.pulse/1f0763ee4cf4c7e1d3c07fd149dda37b:runtime&lt;br /&gt;
 /home/test/Examples&lt;br /&gt;
&lt;br /&gt;
===locate===&lt;br /&gt;
Locate arbeitet über einen Index, der erstellt und aktualisiert werden muss. Aus diesem Grund kann locate teilweise nicht &lt;br /&gt;
akutell sein. Es ist immer schneller als find und es durchsucht immer das ganze Dateisystem. &lt;br /&gt;
 locate [Dateiname]&lt;br /&gt;
 &lt;br /&gt;
Lokalisiere die Datei wvdial.conf. Anmerkung: Der Stern wird beim Suchen automatisch hinzugefügt. Entspricht also&lt;br /&gt;
wvidal.conf*&lt;br /&gt;
 root@zero:~# locate wvdial.conf&lt;br /&gt;
 /etc/wvdial.conf&lt;br /&gt;
 /usr/share/man/man5/wvdial.conf.5.gz&lt;br /&gt;
 /var/lib/dpkg/info/wvdial.conffiles&lt;br /&gt;
 /var/lib/dpkg/info/wvdial.config&lt;br /&gt;
&lt;br /&gt;
Lokalisiere die Datei wvdial.conf und nur diese&lt;br /&gt;
 root@zero:~# locate -b '\wvdial.conf'&lt;br /&gt;
 /etc/wvdial.conf&lt;br /&gt;
&lt;br /&gt;
Aktualisieren des Indexes&lt;br /&gt;
 root@zero:~# updatedb&lt;br /&gt;
&lt;br /&gt;
==Wie wird ein Kommando lokalisiert==&lt;br /&gt;
Wenn die Shell alle Ersetzungen in der Kommandozeile vorgenommen und alle Umleitungen vorbereitet hat, ist der Zeitpunkt &lt;br /&gt;
gekommen, auf den der Anwender die ganze Zeit gewartet hat. Die Shell versucht das Kommando auszuführen. Dazu muss sie &lt;br /&gt;
es aber erst lokalisieren. Das erste passende Kommando wird ausgeführt.&lt;br /&gt;
&lt;br /&gt;
Als Kommandoname wird immer das erste Wort eines einfachen Kommandos erkannt. Ein Kommandoname kann mit Pfadnamen in &lt;br /&gt;
einem Verzeichnis (absolut oder relativ) angegeben werden. Die Shell erkennt dies an (mindestens) einem Slash `/' &lt;br /&gt;
im Kommandonamen. Wenn kein Verzeichnis angegeben ist, versucht die Shell selbst, das Kommando zu finden. Dazu wird &lt;br /&gt;
der Kommandoname zuerst in der Hashtabelle gesucht, dann wird er mit den Synonymen, mit den Scriptfunktionen und &lt;br /&gt;
schließlich mit den Shellfunktionen verglichen. &lt;br /&gt;
&lt;br /&gt;
Wird auf diese Weise kein Programm dieses Namens gefunden, werden alle in der PATH-Umgebungsvariablen aufgeführten &lt;br /&gt;
Verzeichnisse nach einer ausführbaren Datei dieses Namens durchsucht. Wird auch hier kein passendes Kommando gefunden, &lt;br /&gt;
gibt die Shell eine Fehlermeldung aus.&lt;br /&gt;
&lt;br /&gt;
===which und type===&lt;br /&gt;
====which====&lt;br /&gt;
which gibt die vollen Pfadnamen der Dateien aus, die bei Benutzung des angegebenen Befehls ausgeführt werden würden.&lt;br /&gt;
&lt;br /&gt;
 which [-a] Dateiname &lt;br /&gt;
&lt;br /&gt;
Optionen:&lt;br /&gt;
&lt;br /&gt;
* -a : Alle Treffer ausgeben, nicht nur den ersten&lt;br /&gt;
* --skip-dot : Verzeichnisse, die mit einem Punkt beginnen, auslassen&lt;br /&gt;
&lt;br /&gt;
Beispiel&lt;br /&gt;
 root@zero:~# which startx&lt;br /&gt;
 /usr/bin/startx&lt;br /&gt;
&lt;br /&gt;
====type====&lt;br /&gt;
Anzeigen der absoluten Pfadnamen von Befehlen, und ob sich diese Befehle in der Hash-Tabelle der aktuellen&lt;br /&gt;
Shell befinden.&lt;br /&gt;
&lt;br /&gt;
 type [Optionen] Befehle&lt;br /&gt;
&lt;br /&gt;
Beispiel&lt;br /&gt;
 root@zero:~# type ls&lt;br /&gt;
 ls is aliased to `ls --color=auto'&lt;br /&gt;
&lt;br /&gt;
Optionen:&lt;br /&gt;
&lt;br /&gt;
* -a : Alle vorkommenden Befehle werden ausgegeben, nicht nur das, welches aufgerufen werden würde&lt;br /&gt;
 root@zero:~# type '''-a''' ls&lt;br /&gt;
 ls is aliased to `ls --color=auto'&lt;br /&gt;
 ls is /bin/ls&lt;br /&gt;
&lt;br /&gt;
* -p : Anzeigen des Eintrags von Befehl in der Hash-Tabelle. Dieser Wert kann sich vom ersten Auftreten des Befehls in PATH&lt;br /&gt;
unterscheiden&lt;br /&gt;
 root@zero:~# type '''-p''' apache2&lt;br /&gt;
 /usr/sbin/apache2&lt;br /&gt;
&lt;br /&gt;
* -t : Anzeigen, ob Befehl ein Aliasname, ein Schlüsselwort, eine Funktion, ein eingebauter Befehl oder eine Datei ist&lt;br /&gt;
 root@zero:~# type '''-t''' apache2&lt;br /&gt;
 file&lt;/div&gt;</summary>
		<author><name>192.168.178.46</name></author>
	</entry>
	<entry>
		<id>https://www.xinux.net/index.php?title=Linux_Grundlagen&amp;diff=79</id>
		<title>Linux Grundlagen</title>
		<link rel="alternate" type="text/html" href="https://www.xinux.net/index.php?title=Linux_Grundlagen&amp;diff=79"/>
		<updated>2009-07-07T10:49:14Z</updated>

		<summary type="html">&lt;p&gt;192.168.178.46: /* Gerätedateien (Block und Char) */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Einführung==&lt;br /&gt;
===Geschichte Unix===&lt;br /&gt;
====1969====&lt;br /&gt;
Am Anfang von Linux steht Multics, ein von Bell Laboratories geschaffenes &amp;quot;Betriebssystem&amp;quot;, &lt;br /&gt;
das noch mit Lochkarten arbeitete. Multics wird mit Unterstützung von AT&amp;amp;T und Western &lt;br /&gt;
Electric unter Mitarbeit von Ken Thompson und Dennis Ritchie weiterentwickelt. Obwohl sich &lt;br /&gt;
Bell Laboratories bald zurückzieht, gibt Thompson das Projekt nicht auf.  Zum Entwicklerteam &lt;br /&gt;
gehören auch Rudd Canaday und Brian Kernighan. Letzterer gibt 1970 dem Betriebssystem den Namen UNIX. &lt;br /&gt;
Thompson definiert 7 Richtlinien für UNIX:&lt;br /&gt;
 &lt;br /&gt;
# Hierarchische Anordnung der Dateisysteme&lt;br /&gt;
# Die Ausgabe von Daten an die Peripherie(-geräte) und Dateien soll gleich sein.&lt;br /&gt;
# Prozesse und Programme sollen miteinander kommunizieren.&lt;br /&gt;
# Multitasking (voneinander getrennte Prozesse)&lt;br /&gt;
# Persönliche Shell's&lt;br /&gt;
# Der Compiler soll für viele Programmiersprachen tauglich sein.&lt;br /&gt;
# Portabilität&lt;br /&gt;
&lt;br /&gt;
====1971====&lt;br /&gt;
Bis 1971 ist das für eine DEC PDP-7 geschriebene Unix als Version 1 auf eine PDP-11 portiert. Bis&lt;br /&gt;
zur Version 4 entwickelt Ritchie die Programmier- (Hoch-) Sprache C. Das in Assembler geschriebene&lt;br /&gt;
Unix wird fast völlig nach C übersetzt, wodurch zum erstenmal die geforderte Hardware-Unabhängigkeit&lt;br /&gt;
des Betriebssystems realisiert werden kann.&lt;br /&gt;
&lt;br /&gt;
====1975====&lt;br /&gt;
Da AT&amp;amp;T aufgrund vertraglicher Bindungen mit der US-Bundesregierung Unix nicht kommerziell vermarkten darf, stellt sie den Source Code für ein paar hundert Dollar den Universitäten, Lehr- und Forschungsanstalten zur Verfügung. Dies führt zu einer sehr dynamischen Entwicklung von Unix. 1975 wird die Version 6 als erstes UNIX-System veröffentlicht, die darauffolgende Version 7 wird sehr erfolgreich. Da es keine Standardisierung gibt, entwickeln bald verschiedenste Firmen ihr eigenes UNIX. Ab 1984 wird AT&amp;amp;T per Gerichtsbeschluss erlaubt, Unix zu vermarkten. AT&amp;amp;T verkauft sein Unix V und beginnt, sich um einen internationalen Standard von UNIX zu bemühen. &lt;br /&gt;
&lt;br /&gt;
====1984====&lt;br /&gt;
Durch Richard Stallman wird die Free Software Foundation (FSF) gegründet. Diese initiiert ein Projekt namens GNU (GNU ist Not Unix), welches das Ziel verfolgt, ein freies UNIX System zu schaffen. &lt;br /&gt;
&lt;br /&gt;
====1987====&lt;br /&gt;
AT&amp;amp;T verbietet die Verwendung des Unix Quellcodes an den Universitäten. Während dieser Zeit ist Andrew (Andy) Tannenbaum Professor an der Freien Universität von Amsterdam und entwickelt Minix. Minix ist ein kostengünstiges Lehrbetriebssystem und kommt ohne jeglichen AT&amp;amp;T Code aus, obwohl es die gleiche Funktionalität wie Unix 7 bietet. Im Usenet unter comp.os.minix entsteht eine Minix-Gemeinde, die den Minix Kernel und die Anwendungen rundherum programmiert und verbessert.&lt;br /&gt;
&lt;br /&gt;
====1991====&lt;br /&gt;
Linus Torvalds hat als Student für Computerwissenschaften an der Universität in Helsinki Minix installiert und das Buch von Andy Tannenbaum gelesen. Er beginnt im Sinne der FSF einen Unix ähnlichen Kernel zu programmieren mit der Idee, &amp;quot;ein besseres Minix als Minix&amp;quot; zu bauen. 1992 stellt er die Version 0.02 mit dem Namen Linux der Internetgemeinde zur Verfügung. &lt;br /&gt;
&lt;br /&gt;
====1994====&lt;br /&gt;
Die Linux Version 1.0 wird freigegeben. Das Linux Fieber beginnt... &lt;br /&gt;
&lt;br /&gt;
====1998====&lt;br /&gt;
Der Kreis der Linux Entwickler und Anwender ist kräftig angeschwollen. KDE 1.0 wird veröffentlicht. Die Zuwachsraten von Linux übertreffen die von Windows NT deutlich. &lt;br /&gt;
&lt;br /&gt;
====1999====&lt;br /&gt;
Der lange erwartete stabile Linux Kernel Version 2.2 wird freigegeben. Namhafte Firmen wie IBM kündigen ihre Unterstützung für Linux an. &lt;br /&gt;
&lt;br /&gt;
====2001====&lt;br /&gt;
Der lange erwartete stabile Linux Kernel Version 2.4 wird freigegeben. USB Unterstützung und eine neue Firewallimplementierung zeichnen ihn aus.&lt;br /&gt;
&lt;br /&gt;
====2003====&lt;br /&gt;
Linux Kernel Version 2.6 wird freigegeben. Am auffälligsten sind Änderungen bei der Modulverwaltung.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Distributionen===&lt;br /&gt;
{| Border=1 Cellpadding=2&lt;br /&gt;
| &lt;br /&gt;
|Url&lt;br /&gt;
|Paketformat&lt;br /&gt;
|-&lt;br /&gt;
|Red Hat&lt;br /&gt;
|www.redhat.com&lt;br /&gt;
|rpm&lt;br /&gt;
|-&lt;br /&gt;
|fedora&lt;br /&gt;
|fedora.redhat.com&lt;br /&gt;
|rpm&lt;br /&gt;
|-&lt;br /&gt;
|CentOS&lt;br /&gt;
|www.centos.org&lt;br /&gt;
|rpm&lt;br /&gt;
|-&lt;br /&gt;
|Suse/openSUSE&lt;br /&gt;
|www.opensuse.org&lt;br /&gt;
|rpm&lt;br /&gt;
|-&lt;br /&gt;
|Debian&lt;br /&gt;
|www.debian.org&lt;br /&gt;
|deb&lt;br /&gt;
|-&lt;br /&gt;
|Ubuntu&lt;br /&gt;
|www.ubuntu.com&lt;br /&gt;
|deb&lt;br /&gt;
|-&lt;br /&gt;
|Mandrake&lt;br /&gt;
|www.linux-mandrake.com&lt;br /&gt;
|rpm&lt;br /&gt;
|-&lt;br /&gt;
|Easy Linux&lt;br /&gt;
|www.easy-linux.de&lt;br /&gt;
|rpm&lt;br /&gt;
|-&lt;br /&gt;
|Turbo&lt;br /&gt;
|www.turbolinux.com&lt;br /&gt;
|rpm&lt;br /&gt;
|-&lt;br /&gt;
|minis&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|toms&lt;br /&gt;
|www.toms.net/rb&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|damn small linux&lt;br /&gt;
|www.damnsmalllinux.org&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|pocket-linux&lt;br /&gt;
|www.pocket-linux.org&lt;br /&gt;
|&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
====Bücher====&lt;br /&gt;
 Titel : Das Linux Anwenderhandbuch und Leitfaden für die Systemverwaltung&lt;br /&gt;
 Autor : Sebastian Hetze, Dirk Hohndel, Olaf Kirch und Martin Müller&lt;br /&gt;
 Verlag: Lunetix&lt;br /&gt;
 ISBN : 3-929764-06-7&lt;br /&gt;
&lt;br /&gt;
 Titel : Linux in a Nutshell&lt;br /&gt;
 Autor : Jessica Perry Hekman und die Mitarbeiter von O'Reilly &amp;amp; Associates&lt;br /&gt;
 Verlag: O'Reilly&lt;br /&gt;
 ISBN : 3-930673-57-6&lt;br /&gt;
&lt;br /&gt;
 Titel : Linux - Wegweiser zur Installation und Konfiguration&lt;br /&gt;
 Autor : Matt Welsh, Lar Kaufman, Matthias Kalle Dallheimer&lt;br /&gt;
 Verlag: O'Reilly&lt;br /&gt;
 ISBN : 3-930673-58-4 (deutsch), 1-56592-469-X (englisch)&lt;br /&gt;
&lt;br /&gt;
 Titel : Linux - Installation, Konfiguration, Anwendung&lt;br /&gt;
 Autor : Michael KoflerMultitasking&lt;br /&gt;
 Verlag: Addison-Wesley&lt;br /&gt;
 ISBN : 3-8273-1475-5&lt;br /&gt;
&lt;br /&gt;
 Titel : Linux - Wegweiser für Netzwerker&lt;br /&gt;
 Autor : Olaf Kirch&lt;br /&gt;
 Verlag: O'Reilly&lt;br /&gt;
 ISBN : 3-930673-18-5&lt;br /&gt;
&lt;br /&gt;
 Titel : TCP/IP-Netzwerk-Administration&lt;br /&gt;
 Autor : Craig Hunt&lt;br /&gt;
 Verlag: O'Reilly&lt;br /&gt;
 ISBN : 3-89721-110-6&lt;br /&gt;
&lt;br /&gt;
 Titel : Essential System Administration&lt;br /&gt;
 Autor : Eleen Frisch&lt;br /&gt;
 Verlag: O'Reilly&lt;br /&gt;
 ISBN : 1-56592-127-5&lt;br /&gt;
&lt;br /&gt;
==Betriebssystem==&lt;br /&gt;
===Was ist ein Betriebssystem?===&lt;br /&gt;
&lt;br /&gt;
Ein Betriebssystem liegt logisch gesehen zwischenAnwendungsprogramm und Hardware.&lt;br /&gt;
&lt;br /&gt;
Es nimmt die Anforderungen der Anwendungsprogramme entgegen und leitet&lt;br /&gt;
diese kontrolliert an die Hardware weiter. Kein Anwendungsprogramm sollte&lt;br /&gt;
direkt auf die Hardware zugreifen können. Den zentralen Zugang schafft einzig&lt;br /&gt;
das Betriebssystem. Somit kann das Betriebssystem unsinnige Anforderungen&lt;br /&gt;
oder Bedienungsfehler abblocken.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Image:Linux.jpg]]&lt;br /&gt;
&lt;br /&gt;
===Aufgaben eines Betriebssystems===&lt;br /&gt;
&lt;br /&gt;
# Verbergen der Komplexität der Maschine vor dem Anwender (Abstraktion)&lt;br /&gt;
# Bereitstellen einer Benutzerschnittstelle (&amp;quot;Kommandointerpreter&amp;quot;, &amp;quot;Shell&amp;quot;)&lt;br /&gt;
# Bereitstellen einer normierten Programmierschnittstelle (API)&lt;br /&gt;
# Verwaltung der Ressourcen der Maschine::&lt;br /&gt;
Hauptspeicher&lt;br /&gt;
Prozessor(en)&lt;br /&gt;
Hintergrundspeicher (Platte, Band, etc.)&lt;br /&gt;
Geräte (Terminal, Drucker, Plotter, etc.)&lt;br /&gt;
Rechenzeit&lt;br /&gt;
Koordination von Prozessen&lt;br /&gt;
&lt;br /&gt;
===Aufbau eines Betriebssystems===&lt;br /&gt;
&lt;br /&gt;
Ein Rechensystem besteht aus Hardware, Systemprogrammen und Anwendungs-&lt;br /&gt;
programmen. Unter einem Betriebssystem wird meist die Summe aus Betriebs-&lt;br /&gt;
systemkern (Kernel) und den wichtigsten Systemprogrammen verstanden. Ein&lt;br /&gt;
minimaler LINUX-Kernel besitzt ungefähr eine Größe von 400 - 800 kByte.&lt;br /&gt;
Weitere wichtige Systemkomponenten benötigen zusätzlich 10 - 100 Mbyte&lt;br /&gt;
Plattenplatz.&lt;br /&gt;
&lt;br /&gt;
Ein Betriebssystem stellt den Rechner als erweiterte Maschine (virtuelle&lt;br /&gt;
Maschine) über definierte Software-Schnittstellen zur Verfügung.&lt;br /&gt;
Das Betriebssystem dient als Betriebsmittelverwalter, der Anforderungen&lt;br /&gt;
befriedigt, protokolliert, abrechnet und vermittelt.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Aufgaben des Betriebssystemkerns:&lt;br /&gt;
&lt;br /&gt;
{| Border=1 Cellpadding=2&lt;br /&gt;
|Prozessverwaltung  (dispatching and scheduling)&lt;br /&gt;
| Mehrere Benutzer können mit mehreren Aktionen gleichzeitig im System arbeiten, ohne sich gegenseitig zu beeinflussen. Damit dies möglich ist,  müssen die Aktionen organisiert, koordiniert und verwaltet werden. Die zu verwaltende Einheit nennt man Prozess.&lt;br /&gt;
|-&lt;br /&gt;
|Speicherverwaltung   (memory management)&lt;br /&gt;
|Zuteilen von Speicherbereichen an laufende Prozesse, Schutz der Speicherbereiche vor unbefugten Zugriffen, bei Speicherengpässen: Auslagern von ganzen (swapping) oder von Teilen (paging) von Prozessen auf die Platte (swap file).&lt;br /&gt;
|-&lt;br /&gt;
|Dateiverwaltung  (file handling)&lt;br /&gt;
|Zuteilung von Plattenplatz für Programme, Benutzer und Systemdienste, Schreiben, Lesen und Strukturieren der Daten auf den Massenspeichern; Durch Bereitstellung einer entsprechenden Schnittstelle (VFS, virtual file system) kann der Kern Dateisysteme unterschiedlichster Art (EXT2, FAT, NFS, HPFS, NTFS, ...) ansprechen.&lt;br /&gt;
|-&lt;br /&gt;
|Geräteverwaltung  (resource management)&lt;br /&gt;
|Der Kern ermöglicht und kontrolliert den Zugriff auf die Hardware. Er steuert die Ein- und Ausgabetätigkeiten der Anwender. An den Kern&lt;br /&gt;
gebunden sind die entsprechenden Gerätetreiber (device driver), die damit eine Kommunikation zwischen Kern und Hardware ermöglichen.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
===Multitasking===&lt;br /&gt;
&lt;br /&gt;
Multitasking bedeutet, dass ein Rechner aus Anwendersicht mehrere Aufgaben&lt;br /&gt;
(Tasks) gleichzeitg übernehmen kann. Das Betriebssystem (OS) unterteilt die&lt;br /&gt;
gleichzeitig anstehenden Aufgaben in Einzelarbeitsschritte (Prozesse) und&lt;br /&gt;
managed durch ein Zeitscheibenverfahren (scheduling) die gleichmäßige&lt;br /&gt;
Abarbeitung der Prozesse.&lt;br /&gt;
&lt;br /&gt;
Es wird unterschieden zwischen:&lt;br /&gt;
&lt;br /&gt;
*non-präamptiven (kooperativen=die Ressourcen werden vom aktiven Prozess freigegeben, bei einem Hänger steht das ganze System)&lt;br /&gt;
&lt;br /&gt;
und&lt;br /&gt;
&lt;br /&gt;
*präamptiven (reinem=der Betriebssystemkern steuert Taskwechsel, indem nach einer festgelegten Zeit vom gerade aktiven Prozess zum nächsten weitergeschaltet wird)&lt;br /&gt;
&lt;br /&gt;
===Mehrprozessorbetrieb===&lt;br /&gt;
&lt;br /&gt;
Bei mehreren Prozessoren und Unterstützung durch das OS&lt;br /&gt;
(NT,Linux,Unix,Novell) können mehrere Tasks auf diese verteilt werden und&lt;br /&gt;
gleichzeitig bearbeitet werden. Nachteilig ist, dass dies nicht oder kaum von&lt;br /&gt;
Anwendungsprogrammen unterstützt wird und es zu Kommunikationsproblemen&lt;br /&gt;
zwischen den einzelnen Tasks kommen kann.&lt;br /&gt;
&lt;br /&gt;
===Arten von von Betriebssystemen===&lt;br /&gt;
&lt;br /&gt;
{|Border=1 Cellpadding=2&lt;br /&gt;
|&lt;br /&gt;
|SingleUser  &lt;br /&gt;
|Multiuser&lt;br /&gt;
|-&lt;br /&gt;
|Single Tasking&lt;br /&gt;
|MS - DOS&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|Multi Tasking&lt;br /&gt;
|Windows 3.x&lt;br /&gt;
|UNIX&lt;br /&gt;
|-&lt;br /&gt;
|&lt;br /&gt;
|Windows 95/98&lt;br /&gt;
|Linux&lt;br /&gt;
|-&lt;br /&gt;
|&lt;br /&gt;
|Windows NT4 ohne Erweiterungen&lt;br /&gt;
|VMS&lt;br /&gt;
|-&lt;br /&gt;
|&lt;br /&gt;
|OS/2 &lt;br /&gt;
|Windows NT mit  Erweiterungen&lt;br /&gt;
|-&lt;br /&gt;
|&lt;br /&gt;
|Apple&lt;br /&gt;
|Windows 2000, XP, 2003&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
===SHELL===&lt;br /&gt;
&lt;br /&gt;
Wenn man mit Linux arbeiten will, kann man nicht direkt mit dem Betriebssystem&lt;br /&gt;
kommunizieren. Man braucht dazu ein Hilfsprogramm, welches die&lt;br /&gt;
Kommandoeingaben ordnungsgemäß an das Betriebssystem weiterleitet. Dieses&lt;br /&gt;
Hilfsprogramm hat den Namen Shell.&lt;br /&gt;
&lt;br /&gt;
Die Shell schirmt den Betriebssystemkern von den Anwendungsprogrammen ab.&lt;br /&gt;
Die unterschiedlichen Shells erfüllen alle dieselbe Aufgabe, sie unterscheiden sich&lt;br /&gt;
allerdings in ihrer Syntax.&lt;br /&gt;
&lt;br /&gt;
==Die Installation im Überblick==&lt;br /&gt;
&lt;br /&gt;
Die Installation von Linux geschieht in folgenden Schritten:&lt;br /&gt;
&lt;br /&gt;
# Analyse (Welche Hardware habe ich? ,Hab ich weitere Betriebsysteme?)&lt;br /&gt;
# Booten des Linux-Kernels. (von CD oder Diskette)&lt;br /&gt;
# Laden einer RAM-Disk (das macht das Installationsprogramm automatisch).&lt;br /&gt;
# Partitionieren der Festplatte (fdisk).&lt;br /&gt;
# Einrichten der Swappartition (mkswap), Formatieren der Festplatte (mkfs).&lt;br /&gt;
# Montieren der Dateisysteme (mount), Aktivieren der Swapbereiche (swapon).&lt;br /&gt;
# Kopieren und Auspacken der Daten vom Installationsmedium auf die Festplatte (die eigentliche Installation). (rpm, dpkg oder tar).&lt;br /&gt;
# Geeignete Wahl der Bootmethode unter Berücksichtigung von Punkt 1 (grub, lilo).&lt;br /&gt;
# Konfiguration des Systems (Netz, Modem etc...).&lt;br /&gt;
&lt;br /&gt;
==Erste Schritte==&lt;br /&gt;
===Anmelden===&lt;br /&gt;
Sie können sich nun mit dem Usernamen und dem Passwort, das sie bei der Installation angelegt haben anmelden!&lt;br /&gt;
[[Image:benutzer.jpg]]&lt;br /&gt;
&lt;br /&gt;
[[Image:passwd.jpg]]&lt;br /&gt;
&lt;br /&gt;
===Terminal öffnen===&lt;br /&gt;
&lt;br /&gt;
Ein Terminal öffnen Sie über das Startmenü:&lt;br /&gt;
&lt;br /&gt;
[[Image:Terminalde.jpg]]&lt;br /&gt;
&lt;br /&gt;
Das geöffnete Terminal sieht dann folgendermaßen aus:&lt;br /&gt;
&lt;br /&gt;
[[Image:Terminalde2.jpg]]&lt;br /&gt;
&lt;br /&gt;
===Sudo===&lt;br /&gt;
Rootrechte erlangen sie über den &amp;quot;Sudo&amp;quot;-Befehl&lt;br /&gt;
 &lt;br /&gt;
''Den nächsten Befehl als root ausführen''&lt;br /&gt;
 xinux@zero:~$ sudo cat /etc/shadow&lt;br /&gt;
 [sudo] password for xinux:&lt;br /&gt;
&lt;br /&gt;
''Eine komplette Sitzung als root starten''&lt;br /&gt;
 xinux@zero:~$ sudo -i&lt;br /&gt;
 [sudo] password for xinux:&lt;br /&gt;
 root@zero:~#&lt;br /&gt;
&lt;br /&gt;
===Virtuelle Konsolen===&lt;br /&gt;
&lt;br /&gt;
In die Virtuelle Konsole gelangen sie über &amp;quot;STRG+ALT+(F1-F6)&amp;quot;.&lt;br /&gt;
Sie funktioniert wie ein ganz normales Terminal, und mit &amp;quot;ALT+F7&amp;quot;&lt;br /&gt;
gelangen sie wieder zurück auf die grafische Benutzeroberfläche&lt;br /&gt;
&lt;br /&gt;
===Abmelden===&lt;br /&gt;
&lt;br /&gt;
Abmelden können Sie sich wieder über das Startmenu unter:&lt;br /&gt;
&lt;br /&gt;
[[Image:Logout.jpg]]&lt;br /&gt;
&lt;br /&gt;
Fals sie nur einzelne Sitzungen in einem der Terminals oder &lt;br /&gt;
den Virtuellen Konsolen Abmelden wollen benutzen sie dazu den Befehl: &amp;quot;exit&amp;quot;&lt;br /&gt;
&lt;br /&gt;
===Herunterfahren===&lt;br /&gt;
&lt;br /&gt;
Das Herunterfahren funktioniert auf dem selben Weg.&lt;br /&gt;
&lt;br /&gt;
Entweder sie Benutzen wieder das Startmenü und benutzen diesmal den &amp;quot;Ausschalten ...&amp;quot; Knopf,&lt;br /&gt;
&lt;br /&gt;
Oder sie geben den äquivalenten &amp;quot;shutdown&amp;quot;-Befehl in einem Terminal bzw. der virtuellen Konsole ein.&lt;br /&gt;
&lt;br /&gt;
Allerdings müssen sie dazu als Administrator angemeldet sein s. &amp;quot;Sudo&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Wenn Sie den &amp;quot;shutdown&amp;quot;-Befehl benutzen wollen muss hinter den Befehl&lt;br /&gt;
&lt;br /&gt;
eine Zeitangabe in Minuten oder das wort &amp;quot;now&amp;quot; für sofortiges Ausschalten hinzugefügt werden:&lt;br /&gt;
&lt;br /&gt;
 xinux@zero:~$ sudo -i&lt;br /&gt;
 root@zero:~# shutdown 60&lt;br /&gt;
 &lt;br /&gt;
 Broadcast message from xinux@zero &lt;br /&gt;
         (/dev/pts/3) at 14:29 ...&lt;br /&gt;
 &lt;br /&gt;
 The system is going down for maintenance in 60 minutes!&lt;br /&gt;
&lt;br /&gt;
Sollten sie den Befehl widerrufen wollen dann drücken sie &amp;quot;STRG+C&amp;quot;,&lt;br /&gt;
&lt;br /&gt;
in dem Terminal in dem der shutdown Befehl gestartet wurde,&lt;br /&gt;
&lt;br /&gt;
oder geben sie den &amp;quot;shutdown&amp;quot;-Befehl zusammen mit der Abbruchoption &amp;quot;-c&amp;quot; in einem anderen Terminal ein:&lt;br /&gt;
&lt;br /&gt;
 root@zero:~# shutdown -c&lt;br /&gt;
&lt;br /&gt;
 shutdown: Shutdown cancelled&lt;br /&gt;
 root@zero:~# &lt;br /&gt;
&lt;br /&gt;
Wenn Sie den Rechner Neustarten möchten gibt es dazu die Option &amp;quot;-r&amp;quot; für den &amp;quot;shutdown&amp;quot;-Befehl&lt;br /&gt;
&lt;br /&gt;
oder den &amp;quot;reboot&amp;quot;-Befehl die beide auch als root ausgeführt werden müssen:&lt;br /&gt;
&lt;br /&gt;
 xinux@zero:~$ sudo -i&lt;br /&gt;
 [sudo] password for xinux: &lt;br /&gt;
 root@zero:~# shutdown -r now&lt;br /&gt;
&lt;br /&gt;
 root@zero:~# reboot&lt;br /&gt;
&lt;br /&gt;
===&amp;quot;man&amp;quot;===&lt;br /&gt;
&lt;br /&gt;
Programm zum Einsehen der Online-Manuals&lt;br /&gt;
&lt;br /&gt;
Die Manuals sind in folgende Sektionen unterteilt:&lt;br /&gt;
# Ausführbare Programme oder Shellbefehle&lt;br /&gt;
# Systemaufrufe (Kernelfunktionen)&lt;br /&gt;
# Bibliotheksaufrufe (Funktionen in System-Bibliotheken)&lt;br /&gt;
# Spezielle Dateien (gewöhnlich in /dev)&lt;br /&gt;
# Dateiformate und Konventionen, z. B. /etc/passwd&lt;br /&gt;
# Spiele&lt;br /&gt;
# Makropakete und Konventionen, z. B. man(7), groff(7)&lt;br /&gt;
# Systemadministrationsbefehle (in der Regel nur für root)&lt;br /&gt;
# Kernelroutinen [Nicht Standard]&lt;br /&gt;
&lt;br /&gt;
Aufruf eines Manuals erfolgt durch ''man kommando''&lt;br /&gt;
Beendet wird durch Drücken des Buchstabens q&lt;br /&gt;
Gesucht wird vorwärts durch Eingabe eines /suchausdruck&lt;br /&gt;
Gesucht wird rückwärts durch Eingabe eines ?suchausdruck&lt;br /&gt;
&lt;br /&gt;
Beispiele:&lt;br /&gt;
&lt;br /&gt;
      man passwd        Anschauen der Manualseite zum Programm passwd&lt;br /&gt;
      man 5 passwd      Anschauen der Manualseite zur Datei /etc/passwd&lt;br /&gt;
      man -a passwd     Anschauen aller Manualseiten zu passwd&lt;br /&gt;
      man -k passwd     Durchsucht die Kurzbeschreibungen der Manualseite&lt;br /&gt;
                        nach passwd und gibt alle Treffer aus&lt;br /&gt;
      man -f passwd      Gibt alle gefunden Kurzbescheibungen zu passwd aus&lt;br /&gt;
      man -L en passwd Gibt englische Manualseiten aus&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Was geht vor auf meinem System? (date,who)===&lt;br /&gt;
&lt;br /&gt;
Das Kommando date dient zur Abfrage von Datum und Uhrzeit.&lt;br /&gt;
&lt;br /&gt;
 xinux@zero:~ &amp;gt; date&lt;br /&gt;
 Fre Mär 16 16:35:03 CET 2001&lt;br /&gt;
&lt;br /&gt;
oder auch Anzeige der Grennwich Zeit:&lt;br /&gt;
&lt;br /&gt;
 xinux@zero:~ &amp;gt; date -u&lt;br /&gt;
 Fre Mär 16 15:35:34 UTC 2001&lt;br /&gt;
&lt;br /&gt;
 xinux@zero:~ &amp;gt; date -u &amp;quot;+%X&amp;quot;&lt;br /&gt;
 15:37:19&lt;br /&gt;
&lt;br /&gt;
 xinux@zero:~ &amp;gt; date -u &amp;quot;+%x&amp;quot;&lt;br /&gt;
 01/15/02&lt;br /&gt;
&lt;br /&gt;
who zeigt alle angemeldeten Benutzer an&lt;br /&gt;
&lt;br /&gt;
 thomas@cardassia:~ &amp;gt; who&lt;br /&gt;
 thomas             tty1 Feb 27 16:39&lt;br /&gt;
 thomas             tty2 Mar 2 17:08&lt;br /&gt;
 tina               tty6 Mar 16 16:38&lt;br /&gt;
&lt;br /&gt;
Mit `who --help' bekommen Sie mehr Informationen.&lt;br /&gt;
&lt;br /&gt;
 thomas@cardassia:~ &amp;gt; who --help&lt;br /&gt;
&lt;br /&gt;
Benutzung: who [OPTION]... [ DATEI | ARG1 ARG2 ]&lt;br /&gt;
&lt;br /&gt;
 -H, --heading             print line of column headings&lt;br /&gt;
 -i, -u, --idle            add user idle time as HOURS:MINUTES, . or old&lt;br /&gt;
 -l, --lookup              attempt to canonicalize hostnames via DNS&lt;br /&gt;
 -m                        only hostname and user associated with stdin&lt;br /&gt;
 -q, --count               all login names and number of users logged on&lt;br /&gt;
 -s                        (ignored)&lt;br /&gt;
 -T, -w, --mesg            add user's message status as +, - or ?&lt;br /&gt;
     --message             same as -T&lt;br /&gt;
     --writable            same as -T&lt;br /&gt;
     --help                display this help and exit&lt;br /&gt;
     --version             output version information and exit&lt;br /&gt;
&lt;br /&gt;
==Das UNIX-Dateisystem==&lt;br /&gt;
===Verzeichnisbaum===&lt;br /&gt;
&lt;br /&gt;
[[Image:vztree.jpg]]&lt;br /&gt;
&lt;br /&gt;
Das Betriebssystem UNIX besitzt ein hierarchisches Dateisystem. Es besteht aus:&lt;br /&gt;
* Dateien (Files)&lt;br /&gt;
Dateien speichern Informationen (Text, Bilder, Sound, Videos, Programme) und&lt;br /&gt;
werden über den Dateinamen angesprochen.&lt;br /&gt;
&lt;br /&gt;
* Verzeichnissen (Directories, Kataloge)&lt;br /&gt;
Verzeichnisse besitzen ebenfalls einen Namen und dienen zur Ordnung des&lt;br /&gt;
Dateisystems. Ein Verzeichnis kann Dateien und Unterverzeichnisse&lt;br /&gt;
(Subdirectories) enthalten. Das oberste Verzeichnis im Dateisystem heisst&lt;br /&gt;
Rootverzeichnis oder kurz Root und wird durch / (sprich: slash)&lt;br /&gt;
gekennzeichnet.&lt;br /&gt;
&lt;br /&gt;
Im Gegensatz zu Windows kennt UNIX keine Laufwerke.&lt;br /&gt;
Das obige Bild zeigt ein typisches UNIX-Dateisystem.&lt;br /&gt;
Unterhalb des Rootverzeichnisses befinden sich eine Vielzahl vonVerzeichnissen.&lt;br /&gt;
&lt;br /&gt;
===Wichtige Verzeichnisse===&lt;br /&gt;
&lt;br /&gt;
• '''Homeverzeichnis'''&lt;br /&gt;
&lt;br /&gt;
das Verzeichnis, in dem man sich unmittelbar nach dem Anmelden befindet. Das&lt;br /&gt;
Homeverzeichnis wird vom Systemverwalter eingerichtet; jeder Anwender&lt;br /&gt;
besitzt ein festes Homeverzeichnis. z.B. /home/hans&lt;br /&gt;
&lt;br /&gt;
~ (Tilde) bzw. $HOME (Shellvariable) kennzeichnen das Homeverzeichnis.&lt;br /&gt;
&lt;br /&gt;
• '''Aktuelles Verzeichnis'''&lt;br /&gt;
&lt;br /&gt;
Verzeichnis, in dem man sich aktuell befindet.&lt;br /&gt;
Das aktuelle Verzeichnis wird mit dem Befehl cd (change directory) oder per&lt;br /&gt;
Mausklick verändert.&lt;br /&gt;
Ein einfacher Punkt . kennzeichnet das aktuelle Verzeichnis.&lt;br /&gt;
&lt;br /&gt;
• '''Elternverzeichnis'''&lt;br /&gt;
&lt;br /&gt;
Verzeichnis unmittelbar oberhalb des aktuellen Verzeichnisses.&lt;br /&gt;
Jedes Verzeichnis ausser / besitzt genau ein Elternverzeichnis.&lt;br /&gt;
Zwei Punkte .. kennzeichnen das Elternverzeichnis (abhängig vom aktuellen&lt;br /&gt;
VZ).&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Absoluter Pfadname:===&lt;br /&gt;
&lt;br /&gt;
Beschreibt ausgehend vom Rootverzeichnis den Weg zum Zielverzeichnis oder zur&lt;br /&gt;
Zieldatei. (Welche Verzeichnisse müssen ausgehend von / durchlaufen werden, um&lt;br /&gt;
zum Ziel zu kommen?) Ein absoluter Pfadname beginnt immer mit / .&lt;br /&gt;
&lt;br /&gt;
===Relativer Pfadname:===&lt;br /&gt;
&lt;br /&gt;
Beschreibt ausgehend vom aktuellen Verzeichnis den Weg zum Zielverzeichnis&lt;br /&gt;
oder zur Zieldatei; ein relativer Pfadname beginnt nicht mit / .&lt;br /&gt;
/home/suxer&lt;br /&gt;
absoluter Pfadname für das Verzeichnis sub1 im Homeverzeichnis von suxer&lt;br /&gt;
&lt;br /&gt;
===Verzeichnisstruktur===&lt;br /&gt;
&lt;br /&gt;
 /bin         Kommandos die beim starten benötigt werden (Zugriff hat jeder)&lt;br /&gt;
 /sbin        Wichtige System-Programme (In der Regel root vorberhalten)&lt;br /&gt;
 /boot        Hier findet man die Dateien des Bootmanagers und des Kernel.&lt;br /&gt;
 /dev         In diesem Verzeichnis stehen die Gerätedateien (Devices),&lt;br /&gt;
 /home        Alle Heimatverzeichnisse der Nutzer findet man hier.&lt;br /&gt;
 /lib         Beim Systemstart benötigten Bibliotheken und Modules stehen hier.&lt;br /&gt;
 /mnt         Mountpunkt für temporäre Partitionen&lt;br /&gt;
 /opt         Software, die nicht Installationsumfang von Linux gehören.&lt;br /&gt;
 /root        Heimatverzeichnis des Administrators.&lt;br /&gt;
 /tmp         Temporäre Dateien können hier abgelegt werden&lt;br /&gt;
 /usr         statische Dateien (kann read-only gemountet sein)&lt;br /&gt;
 /var         variable Dateien (muss beschreibar sein )&lt;br /&gt;
 /etc         Konfiguartionsdateien und Startscripte&lt;br /&gt;
 /proc        Virtuelles Dateisystem -&amp;gt; repräsentiert den Kernel&lt;br /&gt;
&lt;br /&gt;
===Unterverzeichnisse von /usr===&lt;br /&gt;
&lt;br /&gt;
 sbin         Programme für root die beim Start nicht benötigt werden&lt;br /&gt;
 bin          Programme für alle die beim Start nicht benötigt werden&lt;br /&gt;
 X11R6        Dateien des X-Window-Sytems&lt;br /&gt;
 bin          Ausführbare Programme&lt;br /&gt;
 doc          Dokumentationen&lt;br /&gt;
 etc          Konfigurationsdateien&lt;br /&gt;
 games        Spiele&lt;br /&gt;
 include      Headerdateien für C-Programme&lt;br /&gt;
 local        Pakete die nicht zur Distribution gehören ähnlich /opt&lt;br /&gt;
 share        Pakete die von mehreren Paketen genutzt werden&lt;br /&gt;
 share/man    Die Manualpages&lt;br /&gt;
 share/info   Seiten des Infosystems&lt;br /&gt;
 share/doc    Dokumentationen&lt;br /&gt;
 src          Sources von Programmen (Kernel und andere)&lt;br /&gt;
&lt;br /&gt;
===Unterverzeichnisse von /var===&lt;br /&gt;
&lt;br /&gt;
 cache        Zwischenspreicher für Progammes&lt;br /&gt;
 games        Variable Daten der Games (Scores etc...)&lt;br /&gt;
 lock         Sperrdateien&lt;br /&gt;
 log          Die Logdateien (wichtiges Verzeichnis für Admins)&lt;br /&gt;
 mail         Das Mailsystem&lt;br /&gt;
 run          Dateien zu laufemdem Prozessen&lt;br /&gt;
 spool        Spooldateien (z.B. für das Drucksystem&lt;br /&gt;
 state        Statusinfos&lt;br /&gt;
 tmp          Wie /tmp eventuell nicht auf root Partion&lt;br /&gt;
&lt;br /&gt;
==Einfache Komandos==&lt;br /&gt;
===cd: Wechseln des Arbeitsverzeichnis===&lt;br /&gt;
&lt;br /&gt;
Um festzustellen in welchem Verzeichnis man sich befindet, sollte man den&lt;br /&gt;
Befehl &amp;quot;pwd&amp;quot; benutzen,&lt;br /&gt;
&lt;br /&gt;
und mit dem Befehl &amp;quot;cd&amp;quot; kann man zwischen den Verzeichnissen wechseln:&lt;br /&gt;
&lt;br /&gt;
Wechsele ins homeverzeichnis von Xinux&lt;br /&gt;
&lt;br /&gt;
 xinux@zero:~$ cd /home/xinux/&lt;br /&gt;
 xinux@zero:~$ pwd&lt;br /&gt;
 /home/xinux&lt;br /&gt;
&lt;br /&gt;
cd ~ -&amp;gt; wechsele ins jeweilige Homeverzeichnis&lt;br /&gt;
&lt;br /&gt;
cd .. -&amp;gt; wechsele ein Verzeichnis höher&lt;br /&gt;
&lt;br /&gt;
cd ../verzeichnis -&amp;gt; wechsele in eine paralleles Verzeichnis &amp;lt;- (ist eine relative Pfadangabe !)&lt;br /&gt;
&lt;br /&gt;
cd - -&amp;gt; wechsele in das Verzeichnis, in dem vorher gearbeitet wurde.&lt;br /&gt;
&lt;br /&gt;
Mit cd / wechselt man in das Wurzelverzeichnis.&lt;br /&gt;
&lt;br /&gt;
 xinux@zero:/var/log$ cd /&lt;br /&gt;
 xinux@zero:/$ pwd&lt;br /&gt;
 /&lt;br /&gt;
&lt;br /&gt;
===ls: Listing===&lt;br /&gt;
&lt;br /&gt;
Den Inhalt von Verzeichnissen kann man sich mit dem Befehl &amp;quot;ls&amp;quot; anzeigen lassen&lt;br /&gt;
wobei &amp;quot;ls&amp;quot; eine Vielzahl von Optionen besitzt:&lt;br /&gt;
&lt;br /&gt;
 ls                                  standard&lt;br /&gt;
 ls -l                               langes listing&lt;br /&gt;
 ls -a                               alle Dateien&lt;br /&gt;
 ls -i                               mit Inode&lt;br /&gt;
 ls -h                               gut lesbare Dateigröße&lt;br /&gt;
 ls -d                               Verzechnis wird angezeigt, nicht der Inhalt&lt;br /&gt;
 ls -L                               sortiert nach Größe&lt;br /&gt;
 ls -t                               sortiert nach Datum&lt;br /&gt;
 ls -F                               mit nützlichem Anhang&lt;br /&gt;
&lt;br /&gt;
 xinux@zero:/$ ls -l /var/log/messages&lt;br /&gt;
 -rw-r----- 1 syslog adm 2296 2009-06-16 10:05 /var/log/messages&lt;br /&gt;
&lt;br /&gt;
===more: Seitenweises Anzeigen von Seiten===&lt;br /&gt;
 root@zero:~# more /var/log/messages&lt;br /&gt;
 ...&lt;br /&gt;
&lt;br /&gt;
===head: erste Zeilen anzeigen===&lt;br /&gt;
Erste 10 Zeilen anzeigen&lt;br /&gt;
 root@zero:~# head /var/log/messages&lt;br /&gt;
 Jun 15 12:37:08 zero syslogd 1.5.0#5ubuntu3: restart.&lt;br /&gt;
 Jun 15 12:38:43 zero kernel: [  830.065036] mtrr: your processor doesn't support write-combining&lt;br /&gt;
 Jun 15 12:46:05 zero pulseaudio[4817]: pid.c: Stale PID file, overwriting.&lt;br /&gt;
 Jun 15 13:05:24 zero -- MARK --&lt;br /&gt;
 ...&lt;br /&gt;
&lt;br /&gt;
Erste zwei Zeilen anzeigen&lt;br /&gt;
 root@zero:~# head -n 2 /var/log/messages&lt;br /&gt;
 Jun 15 12:37:08 zero syslogd 1.5.0#5ubuntu3: restart.&lt;br /&gt;
 Jun 15 12:38:43 zero kernel: [  830.065036] mtrr: your processor doesn't support write-combining&lt;br /&gt;
&lt;br /&gt;
===tail: letzte Zeilen anzeigen===&lt;br /&gt;
 &lt;br /&gt;
 root@zero:~# tail /var/log/syslog&lt;br /&gt;
 ...&lt;br /&gt;
 Jun 19 11:19:35 zero -- MARK --&lt;br /&gt;
 Jun 19 11:39:35 zero -- MARK --&lt;br /&gt;
 Jun 19 11:59:36 zero -- MARK --&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Letze 5 Zeilen anzeigen&lt;br /&gt;
 root@zero:~# tail -n 5 /var/log/auth.log&lt;br /&gt;
 Jun 18 14:30:01 zero CRON[12040]: pam_unix(cron:session): session closed for user root&lt;br /&gt;
 Jun 18 14:39:01 zero CRON[12191]: pam_unix(cron:session): session opened for user root by (uid=0)&lt;br /&gt;
 Jun 18 14:39:01 zero CRON[12191]: pam_unix(cron:session): session closed for user root&lt;br /&gt;
 Jun 18 14:40:01 zero CRON[12237]: pam_unix(cron:session): session opened for user root by (uid=0)&lt;br /&gt;
 Jun 18 14:40:01 zero CRON[12237]: pam_unix(cron:session): session closed for user root&lt;br /&gt;
&lt;br /&gt;
Letze Zeilen anzeigen und fortlaufend aktualisieren&lt;br /&gt;
 root@zero:~# tail -f /var/log/syslog&lt;br /&gt;
 ...&lt;br /&gt;
&lt;br /&gt;
===mkdir: Ein neues Verzeichnis erstellen===&lt;br /&gt;
&lt;br /&gt;
 mkdir        verzeichnis&lt;br /&gt;
Erstellt ein Verzeichnis im working directory (wd)&lt;br /&gt;
&lt;br /&gt;
 mkdir  -p    ver1/ver2&lt;br /&gt;
Erstellt ein Verzeichnis ver2 unterhalb von ver1&lt;br /&gt;
wenn ver1 nicht existiert wird es erstellt&lt;br /&gt;
&lt;br /&gt;
 mkdir -m 753 ver1&lt;br /&gt;
Es wird das Verzeichnis ver1 erstellt mit der mask 753&lt;br /&gt;
&lt;br /&gt;
 mkdir -v     ver1&lt;br /&gt;
Geschwätzige Ausgabe :)&lt;br /&gt;
&lt;br /&gt;
===Zum Löschen von leeren Verzeichnissen wird rmdir benutzt===&lt;br /&gt;
&lt;br /&gt;
 rmdir           ver1&lt;br /&gt;
Löscht das leere Verzeichnis ver1&lt;br /&gt;
&lt;br /&gt;
 rmdir -v        ver1&lt;br /&gt;
Löscht das leere Verzeichnis ver1 und ist geschwätzig&lt;br /&gt;
&lt;br /&gt;
 rmdir -p        /ver1/ver2/ver3&lt;br /&gt;
Löscht das Verzeichnis ver3; wenn dadurch ver2 ein leeres&lt;br /&gt;
Verzeichnis wird, wird dieses auch gelöscht , wenn ver1&lt;br /&gt;
dadurch ein leeres Verzeichnis wird, wird auch dieses gelöscht.&lt;br /&gt;
&lt;br /&gt;
===touch Verändern des Zeitstempels===&lt;br /&gt;
&lt;br /&gt;
Mit touch können wir eine neue leere Datei erzeugen (das ist nicht der eigentliche&lt;br /&gt;
Zweck von touch, eigentlich wird der Zeitstempel geändert)&lt;br /&gt;
&lt;br /&gt;
 touch            dateiname&lt;br /&gt;
&lt;br /&gt;
===Kopieren=== &lt;br /&gt;
cp ist das Kommando um Dateien zu kopieren &lt;br /&gt;
&lt;br /&gt;
Eine Kopie von dat1 mit dem Namen dat2 erstellen:&lt;br /&gt;
&lt;br /&gt;
 xinux@zero:~$ cp dat1 dat2&lt;br /&gt;
&lt;br /&gt;
Eine Kopie von dat1 ins Verzeichnis ver2 erstellen:&lt;br /&gt;
&lt;br /&gt;
 xinux@zero:~$ cp dat1 ver2/&lt;br /&gt;
 &lt;br /&gt;
Eine Kopie erstellen mit ausführlicher Anzeige:&lt;br /&gt;
&lt;br /&gt;
 xinux@zero:~$ cp -v dat1 dat2&lt;br /&gt;
 `dat1' -&amp;gt; `dat2'&lt;br /&gt;
&lt;br /&gt;
Eine Kopie erstellen mit Rückfrage fals etwas überschrieben wird:&lt;br /&gt;
&lt;br /&gt;
 xinux@zero:~$ cp -i dat1 dat2&lt;br /&gt;
 cp: overwrite `dat2'?&lt;br /&gt;
&lt;br /&gt;
Eine Kopie erstellen und die Rückfrage überbrücken:&lt;br /&gt;
&lt;br /&gt;
 xinux@zero:~$ cp -f dat1 dat2&lt;br /&gt;
&lt;br /&gt;
Eine Kopie von dat1 ins Verzeichnis ver2 erstellen fals keine neuere Version von dat1 vorliegt:&lt;br /&gt;
&lt;br /&gt;
 xinux@zero:~$ cp -u dat1 ver2/&lt;br /&gt;
&lt;br /&gt;
Eine Kopie erstellen fals ver2 auf dem selben Dateisystem wie dat1 liegt:&lt;br /&gt;
&lt;br /&gt;
 xinux@zero:~$ cp -x dat1 ver2/&lt;br /&gt;
&lt;br /&gt;
Eine Kopie von ver1, die als ver2 oder unter ver2 als ver1 gespeichert wird erstellen:&lt;br /&gt;
&lt;br /&gt;
 xinux@zero:~$ cp -r ver1/ ver2/&lt;br /&gt;
&lt;br /&gt;
Eine Kopie von einer Datei erstellen und ihre Attribute beibehalten:&lt;br /&gt;
&lt;br /&gt;
 xinux@zero:~$ cp -p sux1 sux2&lt;br /&gt;
&lt;br /&gt;
Eine Kopie erstellen bei der die Links erhalten bleiben:&lt;br /&gt;
&lt;br /&gt;
 xinux@zero:~$ cp -r ver1/ ver2/&lt;br /&gt;
&lt;br /&gt;
Eine Kopie erstellen zum Archivieren (-dpr):&lt;br /&gt;
&lt;br /&gt;
 xinux@zero:~$ cp -a ver1/ ver2/&lt;br /&gt;
&lt;br /&gt;
===rm: Löschen einer Datei===&lt;br /&gt;
&lt;br /&gt;
Um Dateien zu löschen, brauchen wir das Kommando &amp;quot;rm&amp;quot;:&lt;br /&gt;
&lt;br /&gt;
 rm               dat1        dat1 wird gelöscht&lt;br /&gt;
 rm         -i    dat1        dat1 wird nach Bestätigung gelöscht&lt;br /&gt;
 rm         -f    dat1        dat1 wird ohne Rückfragen gelöscht&lt;br /&gt;
 rm         -v    dat1        dat1 wird glöscht (geschwätzige Ausgabe)&lt;br /&gt;
 rm         -r    ver1        Löschen von nicht leeren Verzeichnissen&lt;br /&gt;
                              Achtung !!! Als root kann man sich damit Teile&lt;br /&gt;
                              oder sogar den gesamten Verzeichnisbaum&lt;br /&gt;
                              absägen !!!&lt;br /&gt;
&lt;br /&gt;
===mv: Verschieben===&lt;br /&gt;
&lt;br /&gt;
Mit dem Befehl &amp;quot;mv&amp;quot; werden Daten verschoben, folgendes gilt:&lt;br /&gt;
&lt;br /&gt;
 mv          dat1 dat2         &lt;br /&gt;
Die Datei dat1 wird in dat2 umbenannt&lt;br /&gt;
 mv          dat1 /ver1        &lt;br /&gt;
Die Datei dat1 wird nach /ver1 verschoben&lt;br /&gt;
&lt;br /&gt;
Die Parameter und ihre Bedeutung:&lt;br /&gt;
&lt;br /&gt;
      -i                      wenn eine Datei exisitiert wird vor dem&lt;br /&gt;
                              Überschreiben nachgefragt&lt;br /&gt;
      -v                      verbose (geschwätzig)&lt;br /&gt;
      -u                      nur neuere Daten werden bei Bedarf überschrieben&lt;br /&gt;
      -b                      wenn überschrieben werden soll, wird ein Backup&lt;br /&gt;
                              erstellt&lt;br /&gt;
      -S ENDUNG               das Backup bekommt die Endung ENDUNG&lt;br /&gt;
&lt;br /&gt;
===su Benutzer wechseln===&lt;br /&gt;
&lt;br /&gt;
 su -             &lt;br /&gt;
Wechsel zum Rootaccount, wie wenn dieser sich neu anmelden würde. (Bsp: su -)&lt;br /&gt;
&lt;br /&gt;
 su Benutzernamen &lt;br /&gt;
Wechsel der Identität zu Benutzer (gegebenenfalls Passwortabfrage)&lt;br /&gt;
&lt;br /&gt;
 su -c Kommando   &lt;br /&gt;
Kommando wird als rootaccount ausgeführt&lt;br /&gt;
&lt;br /&gt;
==Der Standard Editor vi==&lt;br /&gt;
Der vi ist der Standardeditor in der Unixwelt. Er ist in jedem Unix-Derivat&lt;br /&gt;
enthalten.&lt;br /&gt;
Der Editor hat zwar den schlechten Ruf umständlich zu bedienen zu sein, ist&lt;br /&gt;
jedoch sehr leistungsfähig und systemübergreifend verfügbar. Beim vi handelt es&lt;br /&gt;
sich um einen rein textorientierten Editor, der mittels eigener Kommandos&lt;br /&gt;
gesteuert wird.&lt;br /&gt;
&lt;br /&gt;
Der Editor VIM ist eine weitere Verbesserung von VI und leichter zu bedienen.&lt;br /&gt;
Und unter Ubuntu/Debian mit &amp;quot;apt-get install vim&amp;quot; zu installieren.&lt;br /&gt;
&lt;br /&gt;
===Starten des Editors:===&lt;br /&gt;
&lt;br /&gt;
Der Editorstart erfolgt einfach durch die Eingabe des Kommandos vi mit dem&lt;br /&gt;
Dateinamen der zu editierenden Datei als Parameter.&lt;br /&gt;
Beispiel:        &lt;br /&gt;
 vi sux.txt&lt;br /&gt;
&lt;br /&gt;
===Die Betriebsmodi des vi:===&lt;br /&gt;
&lt;br /&gt;
Ein Umstand, der dem vi den Ruf der komplizierten Bedienbarkeit zugetragen hat,&lt;br /&gt;
sind die unterschiedlichen Betriebsmodi des Editors. Genauer gesagt verfügt der&lt;br /&gt;
vi über drei Betriebsmodi:&lt;br /&gt;
&lt;br /&gt;
====Kommandomodus:====&lt;br /&gt;
&lt;br /&gt;
Innerhalb dieses Modus werden die eingegebenen Zeichen direkt als Befehle des&lt;br /&gt;
Editors interpretiert und ausgeführt. Dabei gibt es weder ein Bereitschaftszeichen&lt;br /&gt;
(Prompt) noch ein Echo (Ausgabe). Der Kommandomodus ist der Modus, in dem&lt;br /&gt;
sich der vi direkt nach seinem Start befindet.&lt;br /&gt;
&lt;br /&gt;
====Zeilenmodus oder Exmodus:====&lt;br /&gt;
&lt;br /&gt;
Dieser Modus ist der einzige Modus mit einem eigenen Bereitschaftszeichen,&lt;br /&gt;
nämlich dem Doppelpunkt (:). Das Prompt wird ebenso wie die Befehlsausgaben&lt;br /&gt;
in der Statuszeile angezeigt.&lt;br /&gt;
&lt;br /&gt;
====Eingabemodus:====&lt;br /&gt;
&lt;br /&gt;
Der Eingabemodus ist derjenige, in welchem der zu bearbeitende Text bearbeitet&lt;br /&gt;
werden kann. Alle hier eingegebenen Zeichen werden als Text für die aktuelle&lt;br /&gt;
Datei interpretiert. Zwischen den unterschiedlichen Modi kann jederzeit&lt;br /&gt;
gewechselt werden. Von Kommandomodus gelangen Sie durch mehere Wege in&lt;br /&gt;
den Eingabemodus. Man kann durch folgende Aktionen wechslen&lt;br /&gt;
&lt;br /&gt;
{| border=1 cellpadding=2&lt;br /&gt;
|i&lt;br /&gt;
|Text vor der aktuellen Cursorposition einfügen&lt;br /&gt;
|-&lt;br /&gt;
|I&lt;br /&gt;
|Text am Zeilenanfang einfügen&lt;br /&gt;
|-&lt;br /&gt;
|a&lt;br /&gt;
|Text hinter der aktuellen Cursorposition einfügen&lt;br /&gt;
|-&lt;br /&gt;
|A&lt;br /&gt;
|Text am Zeilenende einfügen&lt;br /&gt;
|-&lt;br /&gt;
|o&lt;br /&gt;
|Unterhalb der aktuellen Zeile eine neue Zeile einfügen&lt;br /&gt;
|-&lt;br /&gt;
|O&lt;br /&gt;
|Oberhalb der aktuellen Zeile eine neue Zeile einfügen&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Durch das Drücken der ESC - Taste gelangt man in den Kommandomodus zurück.&lt;br /&gt;
&lt;br /&gt;
Im Kommandomodus können Sie durch den Text navigieren und auch den Text&lt;br /&gt;
selbst bearbeiten, z.B ausschneiden, kopieren usw. Dazu sind einige Kommandos&lt;br /&gt;
nötig, von denen die wichtigsten im Folgenden erläutert werden:&lt;br /&gt;
&lt;br /&gt;
 xinux@zero:/$ vi iwas.txt&lt;br /&gt;
&lt;br /&gt;
[[Image:vim.jpg]]&lt;br /&gt;
&lt;br /&gt;
===Benutzen des Kommandomodus===&lt;br /&gt;
====Steuerung des Cursors durch den Text====&lt;br /&gt;
&lt;br /&gt;
Mittels folgender Kommandos bewegt sich der Cursor durch den Text:&lt;br /&gt;
&lt;br /&gt;
{| border=1 cellpadding=2&lt;br /&gt;
|h&lt;br /&gt;
|Cursor ein Zeichen nach links&lt;br /&gt;
|-&lt;br /&gt;
|l&lt;br /&gt;
|Cursor ein Zeichen nach rechts&lt;br /&gt;
|-&lt;br /&gt;
|k&lt;br /&gt;
|Cursor eine Zeile nach oben&lt;br /&gt;
|-&lt;br /&gt;
|j&lt;br /&gt;
|Cursor eine Zeile nach unten&lt;br /&gt;
|-&lt;br /&gt;
|w&lt;br /&gt;
|Cursor ein Wort nach rechts&lt;br /&gt;
|-&lt;br /&gt;
|b&lt;br /&gt;
|Cursor ein Wort nach links&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Alle diese Kommandos können mit einem vorgestellten Wiederholungsfaktor&lt;br /&gt;
arbeiten. Der Befehl 3w verschiebt demnach den Cursor um 3 Wörter nach rechts.&lt;br /&gt;
&lt;br /&gt;
====Angaben zur Positionierung====&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{| border=1 cellpadding=2&lt;br /&gt;
|STRG+U&lt;br /&gt;
|1⁄2 Bildschirmseite nach oben&lt;br /&gt;
|-&lt;br /&gt;
|STRG+D&lt;br /&gt;
|1⁄2 Bildschirmseite nach unten&lt;br /&gt;
|-&lt;br /&gt;
|STRG+B&lt;br /&gt;
|1 Bildschirmseite nach oben&lt;br /&gt;
|-&lt;br /&gt;
|STRG+F&lt;br /&gt;
|1 Bildschirmseite nach unten&lt;br /&gt;
|-&lt;br /&gt;
|/Ausdruck&lt;br /&gt;
|Sucht den Ausdruck (vorwärts) Weitersuchen mit n , N&lt;br /&gt;
|-&lt;br /&gt;
|?Ausdruck&lt;br /&gt;
|Sucht den Ausdurck (rückwärts) Weitersuchen mit n , N&lt;br /&gt;
|-&lt;br /&gt;
|0&lt;br /&gt;
|Zeilenanfang&lt;br /&gt;
|-&lt;br /&gt;
|$&lt;br /&gt;
|Zeilenende&lt;br /&gt;
|-&lt;br /&gt;
|w&lt;br /&gt;
|Nächstes Wort&lt;br /&gt;
|-&lt;br /&gt;
|b&lt;br /&gt;
|Vorheriges Wort&lt;br /&gt;
|-&lt;br /&gt;
|fc&lt;br /&gt;
|Auf das Zeichen c springen. c steht für ein beliebiges Zeichen&lt;br /&gt;
|-&lt;br /&gt;
|G&lt;br /&gt;
|Letzte Zeile der Datei&lt;br /&gt;
|-&lt;br /&gt;
|ng&lt;br /&gt;
|n-te Zeile der Datei&lt;br /&gt;
|-&lt;br /&gt;
|H&lt;br /&gt;
|Anfang der Bildschirmseite&lt;br /&gt;
|-&lt;br /&gt;
|L&lt;br /&gt;
|Ende der Bildschirmseite&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
====Befehle zur Textbearbeitung -&amp;gt; Was soll geschehen====&lt;br /&gt;
&lt;br /&gt;
{| Border=1 Cellpadding=2&lt;br /&gt;
|x&lt;br /&gt;
|Löscht Zeichen&lt;br /&gt;
|-&lt;br /&gt;
|d&lt;br /&gt;
|Löschen und in den Puffer laden&lt;br /&gt;
|-&lt;br /&gt;
|c&lt;br /&gt;
|Ändern&lt;br /&gt;
|-&lt;br /&gt;
|y&lt;br /&gt;
|In den Puffer laden&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
====Weitere wichtige Befehle:====&lt;br /&gt;
&lt;br /&gt;
{| Border=1 Cellpadding=2&lt;br /&gt;
|p&lt;br /&gt;
|Aus dem Puffer einfügen&lt;br /&gt;
|-&lt;br /&gt;
|u&lt;br /&gt;
|Undo, macht den letzten Befehl rückgängig&lt;br /&gt;
|-&lt;br /&gt;
|STRG+R&lt;br /&gt;
|Redo, macht den letzten Undo rückgängig&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
===Zeilen- oder Exmodus===&lt;br /&gt;
&lt;br /&gt;
Wie schon erwähnt wird der Zeilen oder Exmodus durch einen : eingeleitet.&lt;br /&gt;
Es folgen einige Beispiele.&lt;br /&gt;
&lt;br /&gt;
Befehle zum Speichern und Beenden:&lt;br /&gt;
&lt;br /&gt;
 :w          Schreibt Datei&lt;br /&gt;
 :w Datei2   Schreibt eine Kopie in Datei2&lt;br /&gt;
 :w !        Schreibt Datei (übergehe Schreibschutz)&lt;br /&gt;
 :w ! Datei2 Schreibt eine Kopie in Datei2 (übergehe Schreibschutz)&lt;br /&gt;
 :q          Schließe Datei&lt;br /&gt;
 :q!         Schließe Datei (verwerfe Änderungen)&lt;br /&gt;
 :wq         Schreibe Datei und beende Editor&lt;br /&gt;
 :wq!        Schreibe Datei und beende Editor (übergehe Schreibschutz)&lt;br /&gt;
 :q!         Schließe Datei (verwerfe Änderungen)&lt;br /&gt;
 :h          Hilfe anzeigen, durch drücken von :q Beenden der Hilfe&lt;br /&gt;
 :e Datei3   Editiere Datei3&lt;br /&gt;
 :e #        Editere vorhergehende Datei&lt;br /&gt;
 :1,3co9     Kopiere von der ersten bis zu dritten Zeile &lt;br /&gt;
             und füge den Inhalt unterhalb der neunte Zeile ein.&lt;br /&gt;
&lt;br /&gt;
Interaktionen mit Unix:&lt;br /&gt;
&lt;br /&gt;
 :r Datei4   Fügt Inhalt der Datei4 nach dem Cursor ein&lt;br /&gt;
 :r ! Befehl Fügt Ausgabe des Befehls nach dem Cursor ein&lt;br /&gt;
 :! Befehl   Führt den Befehl aus&lt;br /&gt;
 :sh         Starte Subshell -&amp;gt; mit exit kehrt man wieder zurück&lt;br /&gt;
             Eingabemodus zurück&lt;br /&gt;
&lt;br /&gt;
====Ersetzen von Textteilen====&lt;br /&gt;
&lt;br /&gt;
Die grundsätzliche Syntax lautet:&lt;br /&gt;
&lt;br /&gt;
 :[Zeilennummer,Zeilennummer]s/Muster/Ersetzung/[gc]&lt;br /&gt;
&lt;br /&gt;
 :s/worf/kirn/              der erste worf wird in der aktuellen Zeile durch kirn ersetzt&lt;br /&gt;
 :1,9s/worf/kirn/g          von der 1. bis zur 9. Zeile werden alle worf durch kirn ersetzt&lt;br /&gt;
 :1,$s/worf/kirn/           von der ersten bis zur letzten Zeile ersetze ersten worf durch&lt;br /&gt;
                            kirn&lt;br /&gt;
 :.,$s/worf/kirn/g          von der aktuellen bis zur letzten Zeile ersetze alle worf durch&lt;br /&gt;
                            kirn&lt;br /&gt;
 :1,.s/worf/kirn/c          von der 1. bis zur aktuellen Zeile ersetze worf durch kirn, frage&lt;br /&gt;
                            aber nach&lt;br /&gt;
 :1,$s/^worf/kirn/          von der ersten bis zur letzten Zeile ersetze worf am&lt;br /&gt;
                            Zeilenanfang durch kirn&lt;br /&gt;
 :4,$s/worf$/kirn/          von der 4. bis zur letzten Zeile ersetze worf am Zeilenende&lt;br /&gt;
                            durch kirn&lt;br /&gt;
 :1,$s/^#//                 lösche alle Kommentarzeichen&lt;br /&gt;
 :1,$s/^.orf/kirn/           ersetze alles was am Zeilenanfang ein beliebiges Zeichen hat&lt;br /&gt;
                            gefolgt von einem orf durch kirn&lt;br /&gt;
 :1,$s/^[A-Z]orf/kirn/g     suche nach einem Großbuchstaben am Anfang der Zeile&lt;br /&gt;
                            gefolgt von einem orf und ersetze durch kirn&lt;br /&gt;
 :1,$s/^M[ae][iy]e*r/kirn/  suche alles, was am Anfang der Zeile ein großes M enthält,&lt;br /&gt;
                            gefolgt von einem a oder e , gefolgt von einem i oder y ,&lt;br /&gt;
                            gefolgt von einem e , welches 0 oder N mal vorkommen kann,&lt;br /&gt;
                            gefolgt von einem r und ersetze es durch kirn&lt;br /&gt;
&lt;br /&gt;
==Reguläre Ausdrücke==&lt;br /&gt;
&lt;br /&gt;
{| Border=1 Cellpadding=2&lt;br /&gt;
|c&lt;br /&gt;
|Ein einzelner Buchstabe passt auf sich selbst&lt;br /&gt;
|-&lt;br /&gt;
|.&lt;br /&gt;
|Ein Punkt passt auf jedes Zeichen außer auf das Zeilenende&lt;br /&gt;
|-&lt;br /&gt;
|*&lt;br /&gt;
|Das dem Operator * vorangehende Muster kann 0 oder öfter vorkommen&lt;br /&gt;
|-&lt;br /&gt;
|^&lt;br /&gt;
|(Caret) passt auf den Zeilenanfang&lt;br /&gt;
|-&lt;br /&gt;
|$&lt;br /&gt;
|Passt auf das Zeilenende&lt;br /&gt;
|-&lt;br /&gt;
|\&lt;br /&gt;
|Das folgende Sonderzeichen wird entwertet&lt;br /&gt;
|-&lt;br /&gt;
|[...]&lt;br /&gt;
|Passt auf &amp;quot;genau&amp;quot; eins in [...] angebenen Zeichen&lt;br /&gt;
|-&lt;br /&gt;
|[^...]&lt;br /&gt;
|Passt auf &amp;quot;genau&amp;quot; ein Zeichen welches nicht in [...] angebenen ist&lt;br /&gt;
|-&lt;br /&gt;
|\&amp;lt;&lt;br /&gt;
|Passt auf den Wortanfang&lt;br /&gt;
|-&lt;br /&gt;
|\&amp;gt;&lt;br /&gt;
|Passt auf das Wortende&lt;br /&gt;
|-&lt;br /&gt;
|\+&lt;br /&gt;
|Das dem Operator \+ vorangehende Muster kann 1 oder öfter vorkommen&lt;br /&gt;
|-&lt;br /&gt;
|&amp;amp;&lt;br /&gt;
|Setzt das gefunden Suchmuster ein&lt;br /&gt;
|-&lt;br /&gt;
|\(...\)&lt;br /&gt;
|Speichert den Text auf den das Suchmuster passt zur späteren Verwendung&lt;br /&gt;
|-&lt;br /&gt;
|\n&lt;br /&gt;
|Setzt das vorangehende, mit \(...\) Gefundene wieder ein&lt;br /&gt;
|-&lt;br /&gt;
|(...)&lt;br /&gt;
|Gruppiert Auswahlmöglichkeiten&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;nowiki&amp;gt;|&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
|Trennt Auswahlmöglichkeiten&lt;br /&gt;
|-&lt;br /&gt;
|\b&lt;br /&gt;
|Passt auf den Anfang oder das Ende eines Wortes&lt;br /&gt;
|-&lt;br /&gt;
|\B&lt;br /&gt;
|Symbolisiert den Raum innerhalb eines Wortes&lt;br /&gt;
|-&lt;br /&gt;
|\w&lt;br /&gt;
|Passt auf alle alphanumerischen Zeichen [A-Za-z0-9]&lt;br /&gt;
|-&lt;br /&gt;
|\W&lt;br /&gt;
|Passt auf alle nichtalphanumerischen Zeichen [^A-Za-z0-9]&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Die Rangfolge der Operatoren(von der höchsten zur niedrigsten)&lt;br /&gt;
:(, ), ?, *, + | .&lt;br /&gt;
&lt;br /&gt;
Die anderen Operatoren sind mit den anderen Buchstaben gleichrangig.&lt;br /&gt;
&lt;br /&gt;
===Beispiel zum Suchen===&lt;br /&gt;
&lt;br /&gt;
 Suchmuster               Passt auf&lt;br /&gt;
 ^Tuxer                   Tuxer am Zeilenanfang&lt;br /&gt;
 [tT]uxer                 Tuxer oder tuxer&lt;br /&gt;
 80[23]?86                8086, 80286 oder 80386&lt;br /&gt;
&lt;br /&gt;
===grep===&lt;br /&gt;
&lt;br /&gt;
Mit grep ist es möglich, in Dateien nach regulären Ausdrücken zu suchen. Wenn&lt;br /&gt;
eine Übereinstimmung gefunden wird, wird die komplette Zeile auf die&lt;br /&gt;
Standardausgabe geschrieben. grep kann auch von STDIN lesen.Es ist&lt;br /&gt;
empfehlenswert, sich anzugwöhnen ,das Suchmuster in Anführungszeichen zu&lt;br /&gt;
schreiben. Es gibt 3 Arten fgrep = fastgrep , grep und egrep egrep&lt;br /&gt;
&lt;br /&gt;
Beispiel:&lt;br /&gt;
&lt;br /&gt;
 root@zero:~# cat text&lt;br /&gt;
 quatsch&lt;br /&gt;
 quatsch&lt;br /&gt;
 quatsch&lt;br /&gt;
 wichtig&lt;br /&gt;
 quatsch&lt;br /&gt;
 root@zero:~# grep wichtig text&lt;br /&gt;
 wichtig&lt;br /&gt;
 root@zero:~# &lt;br /&gt;
&lt;br /&gt;
 -c                   meldet nur die Gesamtzahl der Fundstellen&lt;br /&gt;
 -v                   zeigt nur Zeilen, die »Ausdruck« nicht enthalten&lt;br /&gt;
 -i                   ignoriert Groß- und Kleinschreibung&lt;br /&gt;
 -l                    meldet nur Dateinamen mit Fundstellen&lt;br /&gt;
 -n                   listet Zeilennummern zu jeder Fundstelle&lt;br /&gt;
 -f                   Dateiname »Dateiname« enthält die Such-Ausdrücke&lt;br /&gt;
 -E                   ist ein erweiterter regulärer Ausdruck (egrep)&lt;br /&gt;
 -F                   (Muster, Ausdruck) ist ein Muster (String) (fgrep)&lt;br /&gt;
 -b                   listet auch die Position der Fundstellen&lt;br /&gt;
 -C    Anzahl         Anzahl von Zeilen werden nach der Fundstelle ausgegeben&lt;br /&gt;
 -B    Anzahl         Anzahl von Zeilen werden vor der Fundstelle ausgegeben&lt;br /&gt;
 -r                   Durchsucht Verzeichnisse rekursiv&lt;br /&gt;
&lt;br /&gt;
==Useridendifikation==&lt;br /&gt;
===/etc/passwd===&lt;br /&gt;
====Beschreibung====&lt;br /&gt;
passwd ist eine ASCII-Datei, die eine Liste der Benutzer des Systems und deren&lt;br /&gt;
Passwörter enthält. Die Passwortdatei sollte für alle Benutzer lesbar sein, was für&lt;br /&gt;
dieVerschlüsselung notwendig ist; aber nur vom Superuser beschreibbar. Wenn&lt;br /&gt;
Sie eine neue Kennung einrichten, lassen Sie das Passwort-Feld in der Datei frei&lt;br /&gt;
und benutzen Sie passwd(1), um dem System ein Passwort für die neue Kennung&lt;br /&gt;
mitzuteilen.&lt;br /&gt;
&lt;br /&gt;
Die Datei /etc/passwd enthält einen Eintrag pro Zeile mit dem Format:&lt;br /&gt;
login_name:passwd:UID:GID:user_name:directory:shell&lt;br /&gt;
====Die Bedeutung der Felder:====&lt;br /&gt;
# login_name Kennung des Benutzers auf dem System.&lt;br /&gt;
# password   Hier steht bei Shadowsystemen ein x. Die Passwörter sind in der Datei /etc/shadow&lt;br /&gt;
# UID        Die numerische Benutzernummer.&lt;br /&gt;
#  GID        Die numerische Gruppennummer des Benutzers.&lt;br /&gt;
# user_name Ein optionales Kommentarfeld, oft benutzt für den vollen Namen des Benutzers und weitere Informationen (Telefon, Raum-Nummer etc.).&lt;br /&gt;
# directory  Das Heimatverzeichnis $HOME des Benutzers.&lt;br /&gt;
# shell      Das Programm, das beim Einloggen gestartet werden soll (falls nicht nötig, benutzen Sie /bin/bash).&lt;br /&gt;
&lt;br /&gt;
===/etc/group===&lt;br /&gt;
====Beschreibung====&lt;br /&gt;
etc/group ist eine ASCII Datei, die Gruppen definiert, zu denen Benutzer&lt;br /&gt;
gehören. Es gibt nur einen Eintrag pro Zeile; jede Zeile hat folgendes Format:&lt;br /&gt;
         GruppenName:Passwort:GruppenKennung:BenutzerListe&lt;br /&gt;
Beschreibung der Felder:&lt;br /&gt;
#     GruppenName      Die Bezeichnung der Gruppe.&lt;br /&gt;
#     Passwort         Das (verschlüsselte) Gruppen-Passwort. Wenn dieses Feld leer ist, wird kein Passwort benötigt.&lt;br /&gt;
#     GruppenKennung Die numerische Identifikation der Gruppe.&lt;br /&gt;
#     BenutzerListe    Alle Namen der Mitglieder, getrennt durch Kommas.&lt;br /&gt;
&lt;br /&gt;
===/etc/shadow===&lt;br /&gt;
====Beschreibung====&lt;br /&gt;
shadow beinhaltet Informationen zu den verschlüsselten Passwörten, zu den&lt;br /&gt;
Benutzerzugängen und weitere Informationen zur Laufzeit der Passwörter.&lt;br /&gt;
 Name:Passwort:Letzte Änderung:Mintage:Maxtage:Warntage:Inaktiv:Ablauf&lt;br /&gt;
#    Der Loginname&lt;br /&gt;
#    verschlüsseltes Passwort &lt;br /&gt;
&amp;lt;nowiki&amp;gt;*&amp;lt;/nowiki&amp;gt; bedeutet Benutzer kann sich nicht einlogen&lt;br /&gt;
! bedeutet Benutzer hat kein Passwort gesetzt&lt;br /&gt;
#    Tage seit dem 1 Januar 1970 an dem das Passwort letztmals geändert wurde&lt;br /&gt;
#    Tage, die das Passwort behalten werden muss, bevor es wieder geändert werden kann&lt;br /&gt;
#     Die Anzahl der Tage, nach denen der Benutzer das Passwort wieder ändern muss&lt;br /&gt;
#    Anzahl der Tage bevor das Passwort abläuft und der Benutzer gewarnt wird&lt;br /&gt;
#    Wenn der Zugang diese Anzahl von Tagen nicht benutzt wird, wird der Zugang gesperrt&lt;br /&gt;
#    Tag seit dem 1 Januar 1970, an dem der Zugang gesperrt wird&lt;br /&gt;
#    Reserviertes Feld&lt;br /&gt;
&lt;br /&gt;
Die Datei sollte aus Sicherheitgründen nicht für einen normalen Benutzer lesbar&lt;br /&gt;
sein.&lt;br /&gt;
&lt;br /&gt;
==Programme zur Userverwaltung==&lt;br /&gt;
===useradd===&lt;br /&gt;
User anlegen&lt;br /&gt;
 root@zero:~# useradd -m -u 1011 -g users -G admin -d /home/erwin -s /bin/bash -c &amp;quot;Erwin Lehman&amp;quot;  erwin&lt;br /&gt;
{| border=1 cellpadding=2&lt;br /&gt;
|&amp;quot;-m&amp;quot;&lt;br /&gt;
|Lege Homedirectory an&lt;br /&gt;
|-&lt;br /&gt;
|&amp;quot;-u 1011&amp;quot;&lt;br /&gt;
|Userid wird zugeordnet&lt;br /&gt;
|-&lt;br /&gt;
|&amp;quot;-g users&amp;quot;&lt;br /&gt;
|Primäre Gruppe wird zugeordnet&lt;br /&gt;
|-&lt;br /&gt;
|&amp;quot;-G admin&amp;quot;&lt;br /&gt;
|Sekunbdäre Gruppe wird zugeordnet&lt;br /&gt;
|-&lt;br /&gt;
|&amp;quot;-d /home/erwin/&amp;quot;&lt;br /&gt;
|Name des Homedirectory&lt;br /&gt;
|-&lt;br /&gt;
|&amp;quot;-s /bin/bash&amp;quot;&lt;br /&gt;
|Bash wird zugeordnet&lt;br /&gt;
|- &lt;br /&gt;
|&amp;quot;-c Erwin Lehman&amp;quot;&lt;br /&gt;
|Kommentarfeld&lt;br /&gt;
|-&lt;br /&gt;
|&amp;quot;erwin&amp;quot; &lt;br /&gt;
|Name des Users&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Defaulteinstellungen anzeigen&lt;br /&gt;
 root@zero:~# useradd -D&lt;br /&gt;
 GROUP=100&lt;br /&gt;
 HOME=/home&lt;br /&gt;
 INACTIVE=-1&lt;br /&gt;
 EXPIRE=&lt;br /&gt;
 SHELL=/bin/sh&lt;br /&gt;
 SKEL=/etc/skel&lt;br /&gt;
 CREATE_MAIL_SPOOL=no&lt;br /&gt;
&lt;br /&gt;
Defaulteinstellungen ändern&lt;br /&gt;
 useradd -D -s /bin/bash&lt;br /&gt;
&lt;br /&gt;
Konfigurationsdatei&lt;br /&gt;
 root@zero:~# cat /etc/default/useradd &lt;br /&gt;
 SHELL=/bin/bash&lt;br /&gt;
 GROUP=100&lt;br /&gt;
 HOME=/home&lt;br /&gt;
 INACTIVE=-1&lt;br /&gt;
 EXPIRE=&lt;br /&gt;
 SKEL=/etc/skel&lt;br /&gt;
 CREATE_MAIL_SPOOL=no&lt;br /&gt;
&lt;br /&gt;
===usermod===&lt;br /&gt;
User modifizieren&lt;br /&gt;
 root@zero:~# usermod -l fritz -s /bin/sh -G admin,video erwin&lt;br /&gt;
{| border=1 cellpadding=2&lt;br /&gt;
|&amp;quot;-l fritz&amp;quot;&lt;br /&gt;
|Neuer Username&lt;br /&gt;
|-&lt;br /&gt;
|&amp;quot;-s /bin/sh&amp;quot;&lt;br /&gt;
|Neue Shell&lt;br /&gt;
|-&lt;br /&gt;
|&amp;quot;-G admin, video&amp;quot;&lt;br /&gt;
|Sekunbdäre Gruppen werden zugeordnet&lt;br /&gt;
|-&lt;br /&gt;
|&amp;quot;erwin&amp;quot; &lt;br /&gt;
|Name des Users&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
===userdel===&lt;br /&gt;
User inklusive Homedirectory löschen&lt;br /&gt;
 root@zero:~# userdel -r fritz&lt;br /&gt;
&lt;br /&gt;
===passwd===&lt;br /&gt;
Rootpasswort ändern&lt;br /&gt;
 root@zero:~# passwd &lt;br /&gt;
 Geben Sie ein neues UNIX Passwort ein:'''sysadm''' &lt;br /&gt;
 Geben Sie das neue UNIX Passwort erneut ein:'''sysadm''' &lt;br /&gt;
 passwd: Passwort erfolgreich geändert&lt;br /&gt;
&lt;br /&gt;
Passwort von tux ändern&lt;br /&gt;
 root@zero:~# passwd tux&lt;br /&gt;
 Geben Sie ein neues UNIX Passwort ein:'''suxer''' &lt;br /&gt;
 Geben Sie das neue UNIX Passwort erneut ein:'''suxer'''&lt;br /&gt;
 passwd: Passwort erfolgreich geändert&lt;br /&gt;
&lt;br /&gt;
Minimale und Maximale Gültigkeit des Passwortes von tux festlegen&lt;br /&gt;
 root@zero:~# passwd -n 5 -x 120 tux&lt;br /&gt;
&lt;br /&gt;
===groupadd===&lt;br /&gt;
 root@zero:~# groupadd -f -g 2001 xinuxer&lt;br /&gt;
{| border=1 cellpadding=2&lt;br /&gt;
|&amp;quot;-f&amp;quot;&lt;br /&gt;
|Überschreibe bestehende Gruppe&lt;br /&gt;
|-&lt;br /&gt;
|&amp;quot;-g 2001&amp;quot;&lt;br /&gt;
|GID der Gruppe&lt;br /&gt;
|-&lt;br /&gt;
|&amp;quot;xinuxer&amp;quot; &lt;br /&gt;
|Name des Gruppe&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==chmod==&lt;br /&gt;
Die Syntax des Befehls chmod lautet:&lt;br /&gt;
&lt;br /&gt;
'''chmod''' WerWieWas [,WerWieWas,.....] Dateiliste&lt;br /&gt;
&lt;br /&gt;
oder&lt;br /&gt;
&lt;br /&gt;
'''chmod''' Oktalzahl Dateiliste&lt;br /&gt;
&lt;br /&gt;
Durch WerWieWas bzw. Oktalzahl wird die Rechtetabelle definiert. Innerhalb von&lt;br /&gt;
WerWieWas darf es kein Leerzeichen geben. Wer bezeichnet den Benutzerkreis,&lt;br /&gt;
dem man Rechte gibt, Wie die Art, in der die Rechte gegeben werden und Was die&lt;br /&gt;
Rechte als solche. Im einzelnen können folgende Kürzel benutzt werden:&lt;br /&gt;
&lt;br /&gt;
Für Wer kann eines der folgenden Kürzel oder eine Kombination davon stehen:&lt;br /&gt;
 u                   (user) Rechte für den Dateibesitzer&lt;br /&gt;
 g                   (group) Rechte für die Gruppe&lt;br /&gt;
 o                   (others) Rechte für alle anderen Benutzer&lt;br /&gt;
 a                   (all) Rechte für alle Benutzer&lt;br /&gt;
Für Wie steht eines der folgenden Kürzel:&lt;br /&gt;
 +                   Die Rechte werden zu den vorhandenen zusätzlich vergeben&lt;br /&gt;
 -                   Die im Folgenden genannten Rechte werden entzogen&lt;br /&gt;
 =                   Die im Folgenden genannten Rechte ersetzen die bisherigen&lt;br /&gt;
Für Was steht eines der folgenden Kürzel:&lt;br /&gt;
 r                   (read) lesen&lt;br /&gt;
 w                   (write) schreiben&lt;br /&gt;
 x                   (execute) ausführen&lt;br /&gt;
oder diese Sonderformen&lt;br /&gt;
 s                   (usersbit) Programm läuft unter der UID des Besitzers&lt;br /&gt;
 s                   (groupsbit)Programm läuft unter der GID des GRUPPE&lt;br /&gt;
 t                   (stickybit) Dateien im Verzeichnis darf nur Besitzer löschen&lt;br /&gt;
&lt;br /&gt;
===Beispiel===&lt;br /&gt;
Setze für alle Schreib- und Leserecht&lt;br /&gt;
 xinux@zero:~$ chmod a=rw test &lt;br /&gt;
 xinux@zero:~$ ls -l test &lt;br /&gt;
 -rw-rw-rw- 1 xinux xinux 0 2009-06-16 12:01 test&lt;br /&gt;
 xinux@zero:~$ &lt;br /&gt;
&lt;br /&gt;
Erteile Besitzer Ausführungsrecht&lt;br /&gt;
 xinux@zero:~$ chmod u+x test ; ls -l test &lt;br /&gt;
 -rwxrw-rw- 1 xinux xinux 0 2009-06-16 12:01 test&lt;br /&gt;
 xinux@zero:~$ &lt;br /&gt;
&lt;br /&gt;
===chmod oktale Schreibweise===&lt;br /&gt;
 Specialrights        User           Group         Other&lt;br /&gt;
 usbit gsbit sticky    r    w   x     r   w   x     r   w   x&lt;br /&gt;
   1     1      1      1    1   1     1   1   1     1   1   1&lt;br /&gt;
   0     0      0      0    0   0     0   0   0     0   0   0&lt;br /&gt;
 Oktale Wertigkeit pro Recht&lt;br /&gt;
   4     2       1     4    2   1     4   2   1     4   2   1&lt;br /&gt;
&lt;br /&gt;
===Beispiele===&lt;br /&gt;
 xinux@zero:~$ chmod 751 test ; ls -l test&lt;br /&gt;
 -rwxr-x--x 1 xinux xinux 0 2009-06-16 12:01 test&lt;br /&gt;
 xinux@zero:~$ &lt;br /&gt;
&lt;br /&gt;
 xinux@zero:~$ chmod 4770 test ; ls -l test&lt;br /&gt;
 -rwsrwx--- 1 xinux xinux 0 2009-06-16 12:01 test&lt;br /&gt;
 xinux@zero:~$ &lt;br /&gt;
&lt;br /&gt;
 xinux@zero:~$ chmod 0 test ; ls -l test &lt;br /&gt;
 ---------- 1 xinux xinux 0 2009-06-16 12:01 test&lt;br /&gt;
&lt;br /&gt;
===chmod Optionen===&lt;br /&gt;
 -c   (changes) es werden nur die Dateien angezeigt, deren Zugriffsrechte tatsächlich verändert werden&lt;br /&gt;
 -f   (silent, quiet) Fehlermeldungen wegen fehlgeschlagener Änderungsversuche werden unterdrückt&lt;br /&gt;
 -v   (verbose) alle Aktionen werden angezeigt&lt;br /&gt;
 -R   (recursive) die Zugriffsrechte aller Dateien in den Unterverzeichnissen werden ebenfalls geändert&lt;br /&gt;
&lt;br /&gt;
Theoretisch sind alle Kombinationen der Zugriffsrechte denkbar, aber der&lt;br /&gt;
Eigentümer einer Datei darf diese immer lesen, selbst wenn das Lesebit nicht&lt;br /&gt;
gesetzt ist. Genauso macht es wenig Sinn, eine gewöhnliche Textdatei als&lt;br /&gt;
ausführbar zu setzen; die Shell wird damit nichts anfangen können. Ein x für ein&lt;br /&gt;
Verzeichnis gibt an, dass in dieses gewechselt werden kann.&lt;br /&gt;
&lt;br /&gt;
Rechte sind verbindlich&lt;br /&gt;
&lt;br /&gt;
Interessant ist auch ein Konstrukt folgender Art&lt;br /&gt;
 -rwx---rwx&lt;br /&gt;
&lt;br /&gt;
das angibt, dass mit der Datei alles angestellt werden kann, außer durch Nutzer der&lt;br /&gt;
Gruppe. Versucht irgend jemand, der nicht der Gruppe des Eigentümers angehört,&lt;br /&gt;
die Datei zu modifizieren, wird ihm dies gelingen, einem Gruppenmitglied bleibt&lt;br /&gt;
dies versagt, obwohl er ja gleichzeitig ein &amp;quot;Anderer&amp;quot; ist. D.h. die Rechte der&lt;br /&gt;
Gruppe sind verbindlicher, als die Rechte der anderen!&lt;br /&gt;
&lt;br /&gt;
===Bedeutungen der Zugriffsarten===&lt;br /&gt;
====Dateien====&lt;br /&gt;
* r: Der Inhalt der Datei kann gelesen und damit auch kopiert werden. &lt;br /&gt;
 root@zero:~# cat test&lt;br /&gt;
 Dies ist eine Testdatei&lt;br /&gt;
  &lt;br /&gt;
 root@zero:~# cp test backup&lt;br /&gt;
&lt;br /&gt;
* w: Der Inhalt der Datei darf verändert werden. Ob die Datei gelöscht werden kann ist&lt;br /&gt;
keine Eigenschaft der Datei, sondern des Verzeichnisses, indem sich die Datei befindet.&lt;br /&gt;
 root@zero:~# cat &amp;gt; test&lt;br /&gt;
 Hier steht jetzt was anderes&lt;br /&gt;
 ^C&lt;br /&gt;
 root@zero:~# cat test&lt;br /&gt;
 Hier steht jetzt was anderes&lt;br /&gt;
  &lt;br /&gt;
 xinux@zero:~$ ls -ld verzeichnis/&lt;br /&gt;
 dr-xr-xr-x 2 xinux xinux 4096 2009-06-18 11:16 verzeichnis/&lt;br /&gt;
 xinux@zero:~/verzeichnis$ rm text&lt;br /&gt;
 rm: Entfernen von „text“ nicht möglich: Permission denied&lt;br /&gt;
&lt;br /&gt;
* x: Ausführrecht für Programme und Skripte&lt;br /&gt;
 xinux@zero:~$ ./programm&lt;br /&gt;
 -bash: ./programm: Permission denied&lt;br /&gt;
 xinux@zero:~$ chmod +x programm&lt;br /&gt;
 xinux@zero:~$ ./programm&lt;br /&gt;
 Test&lt;br /&gt;
  test&lt;br /&gt;
&lt;br /&gt;
====Verzeichnisse====&lt;br /&gt;
* r: Die Einträge in dem Verzeichnis sind lesbar.&lt;br /&gt;
Leserecht von verzeichnis/ entziehen&lt;br /&gt;
 xinux@zero:~$ chmod a-r verzeichnis/&lt;br /&gt;
 xinux@zero:~$ ls verzeichnis/&lt;br /&gt;
 ls: Öffnen von Verzeichnis verzeichnis/ nicht möglich: Permission denied&lt;br /&gt;
Leserecht für Benutzer und Gruppe vergeben&lt;br /&gt;
 xinux@zero:~$ chmod a+r verzeichnis/&lt;br /&gt;
 xinux@zero:~$ ls verzeichnis/&lt;br /&gt;
 text&lt;br /&gt;
&lt;br /&gt;
* w: Die Einträge in dem Verzeichnis können geändert werden. &lt;br /&gt;
Neue Datei erstellen&lt;br /&gt;
 xinux@zero:~$ touch neu&lt;br /&gt;
 xinux@zero:~$ ls neu&lt;br /&gt;
 neu&lt;br /&gt;
&lt;br /&gt;
Datei löschen&lt;br /&gt;
 xinux@zero:~$ rm neu&lt;br /&gt;
 xinux@zero:~$ ls neu&lt;br /&gt;
 ls: Zugriff auf neu nicht möglich: No such file or directory&lt;br /&gt;
&lt;br /&gt;
* x: Der Name des Verzeichnisses kann in einem Pfadnamen erscheinen.&lt;br /&gt;
Verzeichnis ohne x Recht&lt;br /&gt;
 xinux@zero:~$ chmod a-x verzeichnis/&lt;br /&gt;
Wechseln in Verzeichnis mangels x-Recht nicht möglich&lt;br /&gt;
 xinux@zero:~$ cd verzeichnis/&lt;br /&gt;
 -bash: cd: verzeichnis/: Permission denied&lt;br /&gt;
x-Recht vergeben&lt;br /&gt;
 xinux@zero:~$ chmod a+x verzeichnis/&lt;br /&gt;
damit Wechsel in Verzeichnis möglich&lt;br /&gt;
 xinux@zero:~$ cd verzeichnis/&lt;br /&gt;
 xinux@zero:~/verzeichnis$ pwd&lt;br /&gt;
 /home/xinux/verzeichnis&lt;br /&gt;
&lt;br /&gt;
====umask====&lt;br /&gt;
Neue Dateien und Verzeichnisse werden mit ein und denselben Zufriffsrechten erzeugt.&lt;br /&gt;
 xinux@zero:~$ mkdir text&lt;br /&gt;
 xinux@zero:~$ touch textdat&lt;br /&gt;
 xinux@zero:~$ ls -ld text*&lt;br /&gt;
 drwxr-xr-x 2 xinux xinux 4096 2009-06-18 11:37 text&lt;br /&gt;
 -rw-r--r-- 1 xinux xinux    0 2009-06-18 11:37 textdat&lt;br /&gt;
&lt;br /&gt;
Zuständig für dieses Verhalten ist die sogenannte umask, die oft in der Datei&lt;br /&gt;
/etc/profile auf den Wert 022 voreingestellt ist. Zusätzlich wird noch eine&lt;br /&gt;
Maximalmaske benötigt, die sich für Verzeichnisse und andere Dateien&lt;br /&gt;
unterscheidet. Die bei der Erzeugung gesetzten Rechte entstehen nun, indem von&lt;br /&gt;
der Maximalmaske der durch die umask vorgegebene Wert subtrahiert wird:&lt;br /&gt;
&lt;br /&gt;
{| border=1 cellpadding=2&lt;br /&gt;
!&lt;br /&gt;
! Dateien&lt;br /&gt;
! Verzeichnisse&lt;br /&gt;
|-&lt;br /&gt;
| Systemvorgabe&lt;br /&gt;
| 666&lt;br /&gt;
| 777&lt;br /&gt;
|-&lt;br /&gt;
| -umask&lt;br /&gt;
| 022&lt;br /&gt;
| 022&lt;br /&gt;
|-&lt;br /&gt;
| Ergebnis&lt;br /&gt;
| 644&lt;br /&gt;
| 755&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
 xinux@zero:~$ grep umask /etc/profile&lt;br /&gt;
 umask 022&lt;br /&gt;
&lt;br /&gt;
==Gruppenzugehörigkeit==&lt;br /&gt;
===newgrp===&lt;br /&gt;
Ändert die Gruppenzugehörigkeit eines Benutzers auf die angegebene Gruppe. Wenn keine Gruppe angegeben wird, wird die &lt;br /&gt;
Anmeldegruppe des Benutzers verwendet. Die neue Gruppe wird anschließend fü Zugriffskontrollen verwendet.&lt;br /&gt;
&lt;br /&gt;
 newgrp Gruppenname&lt;br /&gt;
&lt;br /&gt;
 root@zero:~# newgrp hacker&lt;br /&gt;
 root@zero:~# id&lt;br /&gt;
 uid=0(root) gid=1006(hacker) Gruppen=0(root),1006(hacker)&lt;br /&gt;
&lt;br /&gt;
===chgrp===&lt;br /&gt;
Verändert die Besitzugehörigkeit zu der angegebenen Gruppe&lt;br /&gt;
&lt;br /&gt;
 chgrp [Optionen] Gruppe Datei(en)&lt;br /&gt;
&lt;br /&gt;
Optionen:&lt;br /&gt;
 -c Zeigt Veränderungen an&lt;br /&gt;
 -f Unterdrückt die meisten Fehlermeldungen&lt;br /&gt;
 -R Verändert Dateien und Verzeichnisse rekursiv&lt;br /&gt;
 -v Gibt geschwätzige Ausgabe aus.&lt;br /&gt;
&lt;br /&gt;
 root@zero:~# ls -l&lt;br /&gt;
 ...&lt;br /&gt;
 d-wx--x--x  3 root root 4096 2009-06-18 13:34 verzeichnis&lt;br /&gt;
 &lt;br /&gt;
 root@zero:~# chgrp -R xinux verzeichnis/&lt;br /&gt;
 root@zero:~# ls -l&lt;br /&gt;
 ...&lt;br /&gt;
 d-wx--x--x  3 root xinux 4096 2009-06-18 13:34 verzeichnis&lt;br /&gt;
&lt;br /&gt;
 xinux@zero:~$ cd /root/verzeichnis/&lt;br /&gt;
 xinux@zero:/root/verzeichnis$ pwd&lt;br /&gt;
 /root/verzeichnis&lt;br /&gt;
&lt;br /&gt;
===chown===&lt;br /&gt;
Ändert den Eigentümer von einer oder mehreren Dateien in den angegebenen Benutzer. &lt;br /&gt;
chown erlaubt ebenfalls das Ändern der Gruppeneigentümreschaft. Nur der aktuelle Eigentümer einer&lt;br /&gt;
Datei oder der Superuser (root) darf die Eigentumsverhältnisse ändern.&lt;br /&gt;
&lt;br /&gt;
 chown [Optionen] Benutzer(:Gruppe) Dateien&lt;br /&gt;
&lt;br /&gt;
Optionen:&lt;br /&gt;
 -c Gibt Informationen über die veränderten Dateien aus&lt;br /&gt;
 --dereference Symbolischen Links folgen&lt;br /&gt;
 -v Gibt Informationen über alle Dateien aus, die chown zu ändern versucht, egal, ob die Änderung erfolgt ist oder nicht&lt;br /&gt;
 -R Geht rekursiv durch alle Unterverzeichnisse und führt die Änderungen durch. &lt;br /&gt;
&lt;br /&gt;
 root@zero:~# chown -R xinux.xinux verzeichnis/&lt;br /&gt;
 root@zero:~# ls -l&lt;br /&gt;
 insgesamt 12&lt;br /&gt;
 drwx------ 13 root  root  4096 2009-04-21 15:11 profile&lt;br /&gt;
 --w-------  1 root  root     0 2009-06-18 11:13 test&lt;br /&gt;
 -rw-r--r--  1 root  root    40 2009-06-18 12:04 text&lt;br /&gt;
 drwxrwx--x  3 xinux xinux 4096 2009-06-18 13:39 verzeichnis&lt;br /&gt;
 &lt;br /&gt;
 root@zero:~# chown -R -c xinux.xinux verzeichnis/&lt;br /&gt;
 &lt;br /&gt;
 root@zero:~# chown -R -v xinux.xinux verzeichnis/&lt;br /&gt;
 Eigentümer von „verzeichnis/01“ als xinux:xinux erhalten&lt;br /&gt;
 Eigentümer von „verzeichnis/test“ als xinux:xinux erhalten&lt;br /&gt;
 Eigentümer von „verzeichnis/“ als xinux:xinux erhalten&lt;br /&gt;
&lt;br /&gt;
==Eingabe/Ausgabe==&lt;br /&gt;
Standardeingabe (0): Laufende Programme erwarten von hier ihre Eingaben (normalerweise handelt es sich um die Tastatur).&lt;br /&gt;
&lt;br /&gt;
Standardausgabe (1): Programme schreiben auf diese ihre Ausgaben (Bildschirm).&lt;br /&gt;
&lt;br /&gt;
Standardfehlerausgabe (2) : Fehlerausgaben landen hier (Bildschirm, aber nur die aktive Konsole).&lt;br /&gt;
&lt;br /&gt;
[[Bild:std.jpg]]&lt;br /&gt;
&lt;br /&gt;
===cat===&lt;br /&gt;
Das Programm cat liest von STDIN und gibt es STDOUT wieder aus&lt;br /&gt;
&lt;br /&gt;
Einlesen der Datei text&lt;br /&gt;
 root@zero:~# cat &amp;lt; text&lt;br /&gt;
 wichtig&lt;br /&gt;
&lt;br /&gt;
Schreiben in die Datei text, dies überschreibt den bisherigen Inhalt der Datei&lt;br /&gt;
 root@zero:~# cat &amp;gt; text&lt;br /&gt;
 sogar noch wichtiger &lt;br /&gt;
 &lt;br /&gt;
Ausgeben der Datei text&lt;br /&gt;
 root@zero:~# cat text &lt;br /&gt;
 sogar noch wichtiger&lt;br /&gt;
&lt;br /&gt;
Lesen aus der Datei text und schreiben in die Datei neuertext&lt;br /&gt;
 root@zero:~# cat &amp;lt; text &amp;gt; neuertext&lt;br /&gt;
 root@zero:~# cat neuertext&lt;br /&gt;
 sogar noch wichtiger&lt;br /&gt;
&lt;br /&gt;
Anhängen der Ausgabe von date an die Datei neuertext&lt;br /&gt;
 root@zero:~# date &amp;gt;&amp;gt; neuertext&lt;br /&gt;
 root@zero:~# cat neuertext&lt;br /&gt;
 sogar noch wichtiger&lt;br /&gt;
 Do 18. Jun 14:08:58 CEST 2009&lt;br /&gt;
&lt;br /&gt;
Umleiten des Standardfehlerkanals nach error&lt;br /&gt;
 root@zero:~# rm sux 2&amp;gt; error&lt;br /&gt;
 root@zero:~# more error&lt;br /&gt;
 rm: Entfernen von „sux“ nicht möglich: No such file or directory&lt;br /&gt;
&lt;br /&gt;
===Umleitungen===&lt;br /&gt;
Nacheinander auszuführende Kommandos&lt;br /&gt;
 root@zero:~# pwd; date&lt;br /&gt;
 /root&lt;br /&gt;
 Do 18. Jun 14:13:05 CEST 2009&lt;br /&gt;
 &lt;br /&gt;
Übergeben der Ausgabe von tail als Eingabe von grep mit Hilfe der Pipe &amp;quot;|&amp;quot;&lt;br /&gt;
 root@zero:~# tail /var/log/auth.log | grep xinux&lt;br /&gt;
 Jun 18 13:52:33 zero nss_wins[11433]: pam_unix(login:session): session closed for user xinux&lt;br /&gt;
&lt;br /&gt;
Übergeben der letzten 100 Zeilen von syslog als Eingabe von grep&lt;br /&gt;
 root@zero:~# tail /var/log/syslog -n 100 | grep error&lt;br /&gt;
 Jun 18 09:30:54 zero kernel: [154384.692135] end_request: I/O error, dev fd0, sector 0&lt;br /&gt;
 Jun 18 09:30:54 zero kernel: [154384.712137] end_request: I/O error, dev fd0, sector 0&lt;br /&gt;
&lt;br /&gt;
==tr==&lt;br /&gt;
tr ist ein Programm um Zeichen zu übersetzen. Dies betrifft nur die Ausgabe, die Datei selbst bleibt unverändert.&lt;br /&gt;
&lt;br /&gt;
Ersetzt Kleinbuchstaben durch Großbuchstaben aus der Datei text&lt;br /&gt;
 root@zero:~# tr &amp;quot;a-z&amp;quot; &amp;quot;A-Z&amp;quot; &amp;lt; text&lt;br /&gt;
 SOGAR NOCH WICHTIGER&lt;br /&gt;
 123&lt;br /&gt;
 34&lt;br /&gt;
 4711&lt;br /&gt;
 TEST&lt;br /&gt;
&lt;br /&gt;
Ersetzt alle Zahlen durch X&lt;br /&gt;
 root@zero:~# tr &amp;quot;0-9&amp;quot; &amp;quot;X&amp;quot; &amp;lt; text&lt;br /&gt;
 sogar noch wichtiger&lt;br /&gt;
 XXX&lt;br /&gt;
 XX&lt;br /&gt;
 XXXX&lt;br /&gt;
 test&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
 root@zero:~# cat &amp;gt; test&lt;br /&gt;
 +++++&lt;br /&gt;
 ###&lt;br /&gt;
 1111&lt;br /&gt;
&lt;br /&gt;
-s löscht mehrfach kommende Zeichen&lt;br /&gt;
 root@zero:~# tr '''-s''' &amp;quot;+&amp;quot; &amp;lt; test&lt;br /&gt;
 +&lt;br /&gt;
 ###&lt;br /&gt;
 1111&lt;br /&gt;
&lt;br /&gt;
-d löscht vorkommende Zeichen &lt;br /&gt;
 root@zero:~# tr '''-d''' &amp;quot;#&amp;quot; &amp;lt; test&lt;br /&gt;
 +++++ &lt;br /&gt;
 &lt;br /&gt;
 1111&lt;br /&gt;
&lt;br /&gt;
==cut==&lt;br /&gt;
Spalten aus einer Datei schneiden. Dies betrifft nur die Ausgabe, die Datei selbst bleibt unverändert.&lt;br /&gt;
 &lt;br /&gt;
Schneidet die erste Spalte aus, der Delimiter ist : &lt;br /&gt;
 root@zero:~# cut -f 1 -d : /etc/passwd&lt;br /&gt;
 root&lt;br /&gt;
 daemon&lt;br /&gt;
 bin&lt;br /&gt;
 ...&lt;br /&gt;
 xinux&lt;br /&gt;
&lt;br /&gt;
 root@zero:~# more test&lt;br /&gt;
 1234#5678#9999&lt;br /&gt;
 &lt;br /&gt;
Schneidet die zweite Spalte aus, der Delimiter ist #&lt;br /&gt;
 root@zero:~# cut -f 2 -d &amp;quot;#&amp;quot; &amp;lt; test&lt;br /&gt;
 5678&lt;br /&gt;
&lt;br /&gt;
Schneidet bis zum 3 Zeichen ab&lt;br /&gt;
 root@zero:~$ echo S01policykit | cut -c 4-&lt;br /&gt;
 policykit&lt;br /&gt;
&lt;br /&gt;
==expand==&lt;br /&gt;
Ersetzt Tabulatorzeichen durch Folgen von Leerzeichen und schreibt das Ergebnis auf die Standardausgabe&lt;br /&gt;
 root@zero:~# expand /etc/samba/smb.conf&lt;br /&gt;
 ...&lt;br /&gt;
&lt;br /&gt;
==fmt==&lt;br /&gt;
#Setzt den Text der Dateien im Blocksatz der angegebenen Breite durch Auffüllen von Zeilen und Entfernen von Zeilenwechseln.&lt;br /&gt;
Standardgemäß werden Leerzeilen, die Position von Leerzeichen und der Einzug am Zeilenanfang erhalten. fmt versucht, &lt;br /&gt;
Zeilenumbrüche an Satzenden durchzuführen sowie sie nach dem ersten oder vor dem letzten Wort eines Satzes zu vermeiden. &lt;br /&gt;
 &lt;br /&gt;
 fmt [Optionen] [Dateien]&lt;br /&gt;
&lt;br /&gt;
Optionen&lt;br /&gt;
&lt;br /&gt;
* -p ''Präfix'': Formatiert nur Zeilen, die mit ''Präfix'' anfangen&lt;br /&gt;
 root@zero:/tmp# fmt -p '#' text&lt;br /&gt;
 #Setzt den Text der Dateien im Blocksatz der angegebenen Breite durch&lt;br /&gt;
 #Auffüllen von Zeilen und Entfernen von Zeilenwechseln.  Standardgemäß&lt;br /&gt;
 #werden Leerzeilen, die Position von Leerzeichen und der Einzug am&lt;br /&gt;
 #Zeilenanfang erhalten. fmt versucht,&lt;br /&gt;
 Zeilenumbrüche an Satzenden durchzuführen sowie sie nach dem ersten oder vor dem letzten Wort eines Satzes zu vermeiden.&lt;br /&gt;
&lt;br /&gt;
* -u : Erzwingt genau ein Leerzeichen zwischen Wörtern und zwei Leerzeichen zwischen Sätzen&lt;br /&gt;
&lt;br /&gt;
* -w ''Breite'': Setzt die Ausgabebreite auf ''Breite''&lt;br /&gt;
 root@zero:/tmp# fmt -w 30 text&lt;br /&gt;
 #Setzt den Text der Dateien&lt;br /&gt;
 im Blocksatz der angegebenen&lt;br /&gt;
 Breite durch Auffüllen&lt;br /&gt;
 von Zeilen und Entfernen&lt;br /&gt;
 von Zeilenwechseln.&lt;br /&gt;
 #Standardgemäß werden&lt;br /&gt;
 Leerzeilen, die Position von&lt;br /&gt;
 Leerzeichen und der Einzug am&lt;br /&gt;
 Zeilenanfang erhalten. fmt&lt;br /&gt;
 versucht, Zeilenumbrüche&lt;br /&gt;
 an Satzenden durchzuführen&lt;br /&gt;
 sowie sie nach dem ersten&lt;br /&gt;
 oder vor dem letzten Wort&lt;br /&gt;
 eines Satzes zu vermeiden.&lt;br /&gt;
&lt;br /&gt;
==join==&lt;br /&gt;
Führt die Zeilen zweier sortierter Dateien anhand von '''Übereinstimmungen''' in einem gemeinsamen Feld zusammen.&lt;br /&gt;
&lt;br /&gt;
 root@zero:~# more name&lt;br /&gt;
 1. karl&lt;br /&gt;
 2. heinz&lt;br /&gt;
 3. hans&lt;br /&gt;
 4. otto&lt;br /&gt;
 root@zero:~# more tel&lt;br /&gt;
 1. 1234&lt;br /&gt;
 2. 4321&lt;br /&gt;
 3. 222&lt;br /&gt;
 4. 121212&lt;br /&gt;
 root@zero:~# join name tel &amp;gt; telefonbuch&lt;br /&gt;
 root@zero:~# more telefonbuch&lt;br /&gt;
 1. karl 1234&lt;br /&gt;
 2. heinz 4321&lt;br /&gt;
 3. hans 222&lt;br /&gt;
 4. otto 121212&lt;br /&gt;
&lt;br /&gt;
 root@zero:~# join -t : /etc/passwd /etc/shadow&lt;br /&gt;
 ....&lt;br /&gt;
 daemon:x:1:1:daemon:/usr/sbin:/bin/sh:*:14181:0:99999:7:::&lt;br /&gt;
 bin:x:2:2:bin:/bin:/bin/sh:*:14181:0:99999:7:::&lt;br /&gt;
 sys:x:3:3:sys:/dev:/bin/sh:*:14181:0:99999:7:::&lt;br /&gt;
 sync:x:4:65534:sync:/bin:/bin/sync:*:14181:0:99999:7:::&lt;br /&gt;
 ...&lt;br /&gt;
&lt;br /&gt;
join in dat1 nach Feld 3 und in dat2 nach Feld 2&lt;br /&gt;
 thomas@lydia:~$ cat dat1 &lt;br /&gt;
 hugo:ps:1111&lt;br /&gt;
 erwin:zw:2222&lt;br /&gt;
 karl:sb:3333&lt;br /&gt;
 rudi:kl:4444&lt;br /&gt;
 thomas@lydia:~$ cat dat2&lt;br /&gt;
 blau:1111:svn&lt;br /&gt;
 grün:2222:fcs&lt;br /&gt;
 gelb:3333:fch&lt;br /&gt;
 rot:4444:fck&lt;br /&gt;
 thomas@lydia:~$ join -t : -1 3 -2 2 dat1 dat2 &lt;br /&gt;
 1111:hugo:ps:blau:svn&lt;br /&gt;
 2222:erwin:zw:grün:fcs&lt;br /&gt;
 3333:karl:sb:gelb:fch&lt;br /&gt;
 4444:rudi:kl:rot:fck&lt;br /&gt;
&lt;br /&gt;
==nl==&lt;br /&gt;
Nummeriert die Zeilen in einer Datei.&lt;br /&gt;
&lt;br /&gt;
 root@zero:~# nl /etc/passwd                                                   &lt;br /&gt;
     1  root:x:0:0:root:/root:/bin/bash                                       &lt;br /&gt;
     2  daemon:x:1:1:daemon:/usr/sbin:/bin/sh                                 &lt;br /&gt;
     3  bin:x:2:2:bin:/bin:/bin/sh                                            &lt;br /&gt;
     4  sys:x:3:3:sys:/dev:/bin/sh                                            &lt;br /&gt;
     5  sync:x:4:65534:sync:/bin:/bin/sync&lt;br /&gt;
     ...&lt;br /&gt;
Nummereriet mit führenden Nullen der Separatir ist ein :&lt;br /&gt;
 root@zero:~# nl -s : -n rz dat1&lt;br /&gt;
&lt;br /&gt;
==od==&lt;br /&gt;
Gibt Dateien im Oktal und anderen Formaten aus.&lt;br /&gt;
&lt;br /&gt;
 od [Optionen] Datei&lt;br /&gt;
&lt;br /&gt;
* -j ''Bytes'': Überspringt die Anzahl ''Bytes'' einer Datei&lt;br /&gt;
* -N ''Bytes'': Gibt nur die Anzahl ''Bytes'' aus&lt;br /&gt;
* -c : Gebe ASCII Zeichen aus&lt;br /&gt;
* -f : Gebe Fließkommazahlen aus&lt;br /&gt;
* -i : Gebe Dezimal Integer aus&lt;br /&gt;
* -l : Gebe Dezimal Long aus&lt;br /&gt;
* -o : Gebe Oktal 2 Byte Einheiten aus&lt;br /&gt;
* -s : Gebe Dezimal 2 Byte Einheiten aus&lt;br /&gt;
* -x : Gebe Hexadezimale 2 Byte einheiten aus&lt;br /&gt;
&lt;br /&gt;
Beispiele&lt;br /&gt;
&lt;br /&gt;
Gebe Master Boot Record (die ersten 512 Byte der Festplatte /dev/sda) als Hexadezimal aus&lt;br /&gt;
 root@zero:~# od '''-x -N''' 512 /dev/sda&lt;br /&gt;
 0000000 48eb 1090 d08e 00bc b8b0 0000 d88e c08e&lt;br /&gt;
 0000020 befb 7c00 00bf b906 0200 a4f3 21ea 0006&lt;br /&gt;
 0000040 be00 07be 0438 0b75 c683 8110 fefe 7507&lt;br /&gt;
 0000060 ebf3 b416 b002 bb01 7c00 80b2 748a 0203&lt;br /&gt;
 0000100 00ff 2000 0001 0000 0200 90fa f690 80c2&lt;br /&gt;
 ...&lt;br /&gt;
&lt;br /&gt;
Schreibe &amp;quot;suxer&amp;quot; in die Datei test&lt;br /&gt;
 root@zero:~# echo &amp;quot;suxer&amp;quot; &amp;gt; test&lt;br /&gt;
Ausgabe Hexadezimal&lt;br /&gt;
 root@zero:~# od -x test&lt;br /&gt;
 0000000 7573 6578 0a72&lt;br /&gt;
 0000006&lt;br /&gt;
&lt;br /&gt;
Ausgabe ASCII Zeichen&lt;br /&gt;
 root@zero:~# od -c test&lt;br /&gt;
 0000000   s   u   x   e   r  \n&lt;br /&gt;
 0000006&lt;br /&gt;
&lt;br /&gt;
==paste==&lt;br /&gt;
Fügt die Zeilen von zwei oder mehr Dateien horizontal zusammen&lt;br /&gt;
 root@zero:~# paste name tel&lt;br /&gt;
 1. karl 1. 1234&lt;br /&gt;
 2. heinz        2. 4321&lt;br /&gt;
 3. hans 3. 222&lt;br /&gt;
 4. otto 4. 121212&lt;br /&gt;
&lt;br /&gt;
==pr==&lt;br /&gt;
Bereitet Textdateien zum Drucken vor.&lt;br /&gt;
&lt;br /&gt;
 root@zero:~# echo &amp;quot;Plan für heute&amp;quot; &amp;gt; dokument&lt;br /&gt;
 root@zero:~# more dokument&lt;br /&gt;
 Plan für heute&lt;br /&gt;
 root@zero:~# pr dokument   &lt;br /&gt;
  &lt;br /&gt;
 &lt;br /&gt;
 2009-06-19 12:44                    dokument                     Seite 1&lt;br /&gt;
 &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
 Plan für heute&lt;br /&gt;
&lt;br /&gt;
Anmerkung Ausmaße der Bildschirmausgabe wie eine Druckseite.&lt;br /&gt;
&lt;br /&gt;
==sed==&lt;br /&gt;
streaming editor. Mit sed ist es möglich, den Inhalt einer Datei automatisch (nicht interaktiv) zu&lt;br /&gt;
bearbeiten. Wie unter Linux üblich, wird auch hier der Text nicht wirklich verändert sondern die &lt;br /&gt;
Änderung erfolgt über die Standardausgabe, die wieder umgeleitet werden kann. Die Syntax ist ähnlich &lt;br /&gt;
des ex modus von vi. Reguläre Ausdrücke können nach Belieben benutzt werden. &lt;br /&gt;
&lt;br /&gt;
Optionen:&lt;br /&gt;
 -e Zeichenkette  wendet die Editorbefehle aus Zeichenkette auf den Text an.&lt;br /&gt;
 -n gibt nur die Zeilen aus, die explizit (durch &amp;quot;p&amp;quot; ausgedruckt werden sollen&lt;br /&gt;
&lt;br /&gt;
Gibt die dritte Zeile der Datei text aus&lt;br /&gt;
 root@zero:~# sed -n &amp;quot;3p&amp;quot; text&lt;br /&gt;
 34&lt;br /&gt;
&lt;br /&gt;
Gibt die erste bis dritte Zeile von text aus&lt;br /&gt;
 root@zero:~# sed -n &amp;quot;1,3p&amp;quot; text&lt;br /&gt;
 sogar noch wichtiger&lt;br /&gt;
 123&lt;br /&gt;
 34&lt;br /&gt;
&lt;br /&gt;
Löschen der Zeile mit &amp;quot;sogar&amp;quot;&lt;br /&gt;
 root@zero:~# sed -e '/sogar/d' &amp;lt; text&lt;br /&gt;
 123&lt;br /&gt;
 34&lt;br /&gt;
 4711&lt;br /&gt;
 test&lt;br /&gt;
&lt;br /&gt;
und schreiben in text2&lt;br /&gt;
 root@zero:~# sed -e '/sogar/d' &amp;lt; text &amp;gt; text2&lt;br /&gt;
 root@zero:~# more text2&lt;br /&gt;
 123&lt;br /&gt;
 34&lt;br /&gt;
 4711&lt;br /&gt;
 test&lt;br /&gt;
&lt;br /&gt;
Alle 3en durch DREI ersetzen&lt;br /&gt;
 root@zero:~# sed -e 's/3/DREI/g' &amp;lt; text&lt;br /&gt;
 sogar noch wichtiger&lt;br /&gt;
 12DREI&lt;br /&gt;
 DREI4&lt;br /&gt;
 4711&lt;br /&gt;
 test&lt;br /&gt;
&lt;br /&gt;
==wc==&lt;br /&gt;
Zählt die Anzahl von Zeichen, Wörter oder Zeilen&lt;br /&gt;
&lt;br /&gt;
Optionen&lt;br /&gt;
* -m : Zählt die Anzahl der Zeichen&lt;br /&gt;
 root@zero:~# more name&lt;br /&gt;
 1. karl&lt;br /&gt;
 2. heinz&lt;br /&gt;
 3. hans&lt;br /&gt;
 4. otto&lt;br /&gt;
 root@zero:~# wc '''-m''' tel&lt;br /&gt;
 33 tel&lt;br /&gt;
&lt;br /&gt;
* -w : Zählt die Anzahl der Wörter (einschließlich Zahlen und andere Zeichen)&lt;br /&gt;
 root@zero:~# wc '''-w''' name&lt;br /&gt;
 8 name&lt;br /&gt;
&lt;br /&gt;
* -l : Zählt die Anzahl der Zeilen&lt;br /&gt;
 root@zero:~# wc '''-l''' name&lt;br /&gt;
 4 name&lt;br /&gt;
&lt;br /&gt;
==Sort==&lt;br /&gt;
&lt;br /&gt;
Zum sortieren von Dateien nach Feldern benutzt man sort. sort liest von STDIN man kann die Datei aber auch als Argument übergeben. &lt;br /&gt;
&lt;br /&gt;
Sortiert nach dem ersten Feld&lt;br /&gt;
  root@zero:~# sort /etc/passwd 	 &lt;br /&gt;
&lt;br /&gt;
Es wird geprüft ob die Datei schon sortiert ist &lt;br /&gt;
 root@zero:~# sort -c /etc/passwd 	&lt;br /&gt;
&lt;br /&gt;
Sortiert nach dem ersten Feld (Richtungsumkehr)  &lt;br /&gt;
 root@zero:~#  sort -r /etc/passwd&lt;br /&gt;
&lt;br /&gt;
Führende Leersortzeichen werden ignoriert &lt;br /&gt;
 root@zero:~# sort -b /etc/passwd&lt;br /&gt;
&lt;br /&gt;
Ausgabe  in die Datei pass&lt;br /&gt;
 root@zero:~# sort  /etc/passwd   -o pass	 &lt;br /&gt;
&lt;br /&gt;
nimmt : als Trenner -Voreinstellung ist TAB&lt;br /&gt;
  root@zero:~# sort -t : /etc/passwd&lt;br /&gt;
&lt;br /&gt;
sortiert nach dem  3 Feld,  der Trenner ist : und es wird nummerisch sortiert&lt;br /&gt;
&lt;br /&gt;
 root@zero:~# sort -t: +2 -n /etc/passwd		&lt;br /&gt;
&lt;br /&gt;
sortiert nach dem  3 Feld,  der Trenner ist : und es wird nummerisch sortiert&lt;br /&gt;
					&lt;br /&gt;
 root@zero:~# sort -t: -k 3 -n /etc/passwd&lt;br /&gt;
&lt;br /&gt;
Sortiert nach dem  3  bis zum 5 Feld, der Trenner ist : und es wird nummerisch sortiert&lt;br /&gt;
	&lt;br /&gt;
 root@zero:~# sort -t: -k 3,5 -n /etc/passwd	&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==INodes==&lt;br /&gt;
Inode (oder I-Node) wird im Deutschen am besten als Informationsknoten oder&lt;br /&gt;
Indexeintrag bezeichnet. Er fasst alle Attribute einer Datei zusammen außer dem Inhalt&lt;br /&gt;
und dem Namen der Datei.&lt;br /&gt;
&lt;br /&gt;
===Daten===&lt;br /&gt;
{| border=1 cellpadding=2&lt;br /&gt;
|type&lt;br /&gt;
|Der Typ der Datei wird als einzelner Buchstabe angezeigt. Der Typ einer Datei wird beim Anlegen der Datei festgelegt&lt;br /&gt;
|-&lt;br /&gt;
|Permissions &lt;br /&gt;
|Die Zugriffsrechte der Datei werden in den 12 Bit sstrwxrwxrwx abgespeichert.Wenn sie gesetzt sind, werden sie bei &lt;br /&gt;
der Ausgabe an Stelle der x-Rechte ausgegeben. Die Zugriffsrechte können mit dem Kommando chmod verändert werden.&lt;br /&gt;
|-&lt;br /&gt;
|link count&lt;br /&gt;
|In UNIX kann eine Datei mehr als einen Namen haben. Der Link Count gibt die Anzahl der Namen einer Datei an. Er kann&lt;br /&gt;
mit dem Kommando ln erhöht und dem Kommando rm erniedrigt werden.&lt;br /&gt;
|-&lt;br /&gt;
|owner&lt;br /&gt;
|Für den Dateieigentümer gelten die in der ersten rwx-Gruppe festgelegten Zugriffsrechte. Standardmäßig ist der &lt;br /&gt;
Eigentümer einer Datei derjenige Benutzer, der die Datei angelegt hat.&lt;br /&gt;
|-&lt;br /&gt;
|group&lt;br /&gt;
|Für Benutzer, die in der gleichen Gruppe sind, der die Datei angehört, gelten die in der zweiten rwx-Gruppe festgelegten&lt;br /&gt;
Zugriffsrechte. In System V gehört eine Datei standardmäßig der Gruppe an, in der der anlegende Benutzer gerade ist.&lt;br /&gt;
|-&lt;br /&gt;
|size&lt;br /&gt;
|Bei normalen Dateien und Verzeichnissen gibt diese Information die Länge der Datei in Byte an.&lt;br /&gt;
|-&lt;br /&gt;
|access time&lt;br /&gt;
|Die Zugriffszeit gibt den Zeitpunkt des letzten Lesezugriffes auf eine Datei an. Aus Effizienzgründen wird die &lt;br /&gt;
Zugriffszeit an Verzeichnissen nicht gesetzt, wenn ein Verzeichnis durchsucht wird, obwohl man dies erwarten könnte. ''(ls -l --time=atime)''&lt;br /&gt;
|-&lt;br /&gt;
|modification time&lt;br /&gt;
|Die Modifikationszeit gibt die Zeit des letzten Schreibzugriffes auf die Daten der Datei an. Intern speichert UNIX &lt;br /&gt;
die Zeit als Sekunden seit Beginn des Jahres 1970 und in GMT ab. Für die Ausgabe wird dies in ein besser lesbares &lt;br /&gt;
Format in der lokalen Zeitzone umgewandelt. ''(ls -l)''&lt;br /&gt;
|-&lt;br /&gt;
|change time &lt;br /&gt;
|Die Veränderungszeit gibt das Datum der letzten Statusänderung der Datei an. Sie wird immer dann gesetzt, wenn die &lt;br /&gt;
Informationen über die Datei sich ändern (Datum der Erzeugung wird nicht gespeichert) ''(ls -lc)''&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
===Dateiarten===&lt;br /&gt;
{| border=1 cellpadding=2&lt;br /&gt;
!Zeichen&lt;br /&gt;
!Typ&lt;br /&gt;
!Zweck&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;nowiki&amp;gt;-&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
|file&lt;br /&gt;
|normale Datei&lt;br /&gt;
|-&lt;br /&gt;
|d&lt;br /&gt;
|directory&lt;br /&gt;
|Verzeichnis&lt;br /&gt;
|-&lt;br /&gt;
|b&lt;br /&gt;
|block device&lt;br /&gt;
|Gerätedatei&lt;br /&gt;
|-&lt;br /&gt;
|c&lt;br /&gt;
|character device&lt;br /&gt;
|Gerätedatei&lt;br /&gt;
|-&lt;br /&gt;
|l&lt;br /&gt;
|link&lt;br /&gt;
|Querverweis&lt;br /&gt;
|-&lt;br /&gt;
|p&lt;br /&gt;
|named pipe&lt;br /&gt;
|Benannte Pipeline&lt;br /&gt;
|-&lt;br /&gt;
|s&lt;br /&gt;
|socket&lt;br /&gt;
|Netzwerkverbindung&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
====Normale Dateien====&lt;br /&gt;
Unter einer normalen Datei versteht man die Ansammlung von Daten. Dies kann ein Text, Programm, Bild oder sonstiges sein. &lt;br /&gt;
Beispiel&lt;br /&gt;
 root@zero:~# ls -l text | cut -c 1&lt;br /&gt;
 -&lt;br /&gt;
&lt;br /&gt;
====Verzeichnisse====&lt;br /&gt;
Dateien werden in Verzeichnissen gespeichert, nur so ist eine Ordnung möglich. &lt;br /&gt;
 root@zero:~# mkdir -v Ordner&lt;br /&gt;
 mkdir: Verzeichnis „Ordner“ angelegt&lt;br /&gt;
 &lt;br /&gt;
 root@zero:~# ls -ld Ordner | cut -c 1&lt;br /&gt;
 d&lt;br /&gt;
&lt;br /&gt;
====Gerätedateien (Block und Char)====&lt;br /&gt;
Gerätedateien ermöglichen Anwendungsprogrammen unter Benutzung des  Kernels den Zugriff auf die Hardwarekomponenten des Systems. Ansprechbar über Major und Minor Nummern &lt;br /&gt;
&lt;br /&gt;
Beispiele&lt;br /&gt;
&lt;br /&gt;
Sicherung des Master Boot Records der ersten Festplatte&lt;br /&gt;
 root@zero:~# dd if=/dev/sda of=/tmp/mbr.img bs=512 count=1&lt;br /&gt;
&lt;br /&gt;
Block Device &lt;br /&gt;
 root@zero:~# ls -l /dev/sda | cut -c 1 &lt;br /&gt;
 b&lt;br /&gt;
&lt;br /&gt;
Character Device &lt;br /&gt;
 root@zero:~# ls -l /dev/ttyS0  | cut -c 1 &lt;br /&gt;
 c&lt;br /&gt;
&lt;br /&gt;
====Named Pipes====&lt;br /&gt;
Benannte Pipes (Named Pipes) können dagegen auch zur Kommunikation zwischen Prozessen eingesetzt werden, die nicht miteinander&lt;br /&gt;
verwandt sind und sich darüber hinaus auf unterschiedlichen Rechnern innerhalb eines Netzwerkes befinden dürfen. Sie sind &lt;br /&gt;
flexibler als anonyme Pipes und eignen sich für sogenannte Client-Server-Anwendungen (es lassen sich auch RPCs realisieren).&lt;br /&gt;
Benannte Pipes ermöglichen die gleichzeitige Kommunikation in beide Richtungen, das heißt, Daten können im Vollduplexbetrieb &lt;br /&gt;
zwischen den Prozessen ausgetauscht werden.&lt;br /&gt;
 &lt;br /&gt;
Erstelle Named Pipe mit Namen sux. Schreibe &amp;quot;Hallo Welt&amp;quot; in die Pipe sux und bleibe im Hintergrund. Gebe Inhalt der Pipe mit cat aus&lt;br /&gt;
 root@zero:~# mkfifo sux ; echo 'Hallo Welt' &amp;gt; sux &amp;amp; cat &amp;lt; sux&lt;br /&gt;
 [1] 12947&lt;br /&gt;
 Hallo Welt&lt;br /&gt;
 [1]+  Done                    echo 'Hallo Welt' &amp;gt; sux&lt;br /&gt;
&lt;br /&gt;
====Sockets====&lt;br /&gt;
Schnittstelle um es vernetzten Rechnern zu ermöglichen, miteinander zu kommunizieren.&lt;br /&gt;
&lt;br /&gt;
Sie ist in der Regel definiert durch IP-Adresse sowie Port. &lt;br /&gt;
&lt;br /&gt;
====Links====&lt;br /&gt;
Bei Links handelt es sich um symbolische Verweise auf andere Dateien&lt;br /&gt;
&lt;br /&gt;
'''Softlink'''&lt;br /&gt;
Ein Softlink ist eine Datei die nur auf den Namen einer anderen Datei verweist. Wenn die Originaldatei gelöscht wird, zeigt &lt;br /&gt;
der Link ins Leere. &lt;br /&gt;
&lt;br /&gt;
 ln -s datei softlink&lt;br /&gt;
&lt;br /&gt;
{| border=1 cellpadding=2&lt;br /&gt;
| Vorteile&lt;br /&gt;
| Symbolische Links können auch auf Verzeichnisse angelegt werden&amp;lt;br&amp;gt;Sie sind partitionsübergreifend&amp;lt;br&amp;gt;Man kann sie auf Dateien anlegen, die noch nicht existieren&lt;br /&gt;
|-&lt;br /&gt;
| Nachteile&lt;br /&gt;
| Wenn das Original gelöscht ist, ist kein Zugriff mehr möglich&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Beispiel&lt;br /&gt;
 root@zero:~# ln -s text verweis&lt;br /&gt;
 root@zero:~# ls -l verweis&lt;br /&gt;
 lrwxrwxrwx 1 root root 4 2009-06-18 15:48 verweis -&amp;gt; text&lt;br /&gt;
&lt;br /&gt;
'''Hardlinks'''&lt;br /&gt;
 ln datei hardlink&lt;br /&gt;
Eigentlich ist jede Datei ein Hardlink. Ein Hardlink ist ein Verzeichniseintrag,&lt;br /&gt;
der auf eine Inode verweist. Beim Erzeugen einer Datei verweist ein Eintrag auf&lt;br /&gt;
eine Inode. Man kann dann weitere Verweise erzeugen. Der Linkcounter wird&lt;br /&gt;
jeweils um 1 erhöht. Beim Löschen einer Datei wird er jeweils um 1 reduziert.&lt;br /&gt;
Wird der Wert 0 erreicht, ist die Datei gelöscht.&lt;br /&gt;
{| border=1 cellpadding=2&lt;br /&gt;
| Vorteile&lt;br /&gt;
|Zugriff auf die Daten, selbst wenn das Orginal gelöscht ist.&lt;br /&gt;
|-&lt;br /&gt;
|Nachteile&lt;br /&gt;
|Man kann keine Hardlinks auf Verzeichnisse anlegen.&lt;br /&gt;
Ist nur innerhalb einer Partion möglich.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Beispiel&lt;br /&gt;
 root@zero:~# touch 1&lt;br /&gt;
 root@zero:~# echo &amp;quot;text&amp;quot; &amp;gt; 1&lt;br /&gt;
 root@zero:~# ln 1 2&lt;br /&gt;
 root@zero:~# more 2&lt;br /&gt;
 text&lt;br /&gt;
 root@zero:~# echo &amp;quot;doch kein text&amp;quot; &amp;gt; 1&lt;br /&gt;
 root@zero:~# more 1&lt;br /&gt;
 doch kein text&lt;br /&gt;
 root@zero:~# more 2&lt;br /&gt;
 doch kein text&lt;br /&gt;
&lt;br /&gt;
Weitere Optionen:&lt;br /&gt;
 -b sichert Dateien, statt sie zu überschreiben &lt;br /&gt;
 -f Überschreibt bestehende, gleichnamige Dateien&lt;br /&gt;
 -i fragt vor dem Überschreiben nach Bestätigung&lt;br /&gt;
 -v ausführliche Meldungen&lt;br /&gt;
&lt;br /&gt;
==Prozesse==&lt;br /&gt;
===Was ist ein Prozess?===&lt;br /&gt;
Ein Prozess setzt sich aus zwei Teilen zusammen:&lt;br /&gt;
&lt;br /&gt;
1.Programm, das in den Hauptspeicher geladen wurde&lt;br /&gt;
&lt;br /&gt;
2.Prozessumgebung&lt;br /&gt;
&lt;br /&gt;
Unter einem Prozess versteht man ein Programm (binär), das in den Hauptspeicher&lt;br /&gt;
geladen wurde. Also nicht das Program selbst, das auf der Festplatte liegt ist der&lt;br /&gt;
Prozess, sondern es wird erst durch das Laden in den Hauptspeicher dazu.&lt;br /&gt;
Normalerweise liegt ein Programm als ausführbare Datei irgendwo auf der&lt;br /&gt;
Festplatte oder auf Diskette. Ob es sich bei dem Programm um eine binäre Datei&lt;br /&gt;
handelt, kann man mit dem Befehl '' file '' feststellen.&lt;br /&gt;
 &lt;br /&gt;
 root@zero:~# file /bin/mkdir&lt;br /&gt;
 /bin/mkdir: ELF 32-bit LSB executable, Intel 80386, version 1 (SYSV), dynamically linked (uses shared libs), for GNU/Linux 2.6.8, stripped&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Die Datei liegt im Maschinencode vor und kann in den Hauptspeicher geladen&lt;br /&gt;
werden. Sobald dies geschehen ist, kann der Rechner diesen Maschinencode&lt;br /&gt;
abarbeiten (ausführen).&lt;br /&gt;
&lt;br /&gt;
Da aber ein Programm nicht direkt auf die Hardware zugreifen soll, muss es vom&lt;br /&gt;
Betriebsystem kontrolliert werden. Das Betriebssystem liegt logisch gesehen&lt;br /&gt;
zwischen Hardware und Anwendung. Das Betriebssystem ordnet jedem Prozess&lt;br /&gt;
verschiedene Kenndaten zu, um die Prozesse verwalten zu können. Alle&lt;br /&gt;
Kenndaten, die einem Prozess zugeordnet sind, nennt man die&lt;br /&gt;
Prozessumgebung.Wenn man in der Shell ein Kommando eingibt, wird ein Prozess&lt;br /&gt;
kreiert. Natürlich ist die Shell selbst auch ein Prozess. Ein Prozess kann aber&lt;br /&gt;
genauso gut ein Serverprozess (Dienst) sein, z.B. Apache.&lt;br /&gt;
Ein wesentliches Merkmal eines Prozesses ist die Prozesskommunikation. Über im&lt;br /&gt;
Betriebssystem implementierte Methoden ist es möglich, dass verschiedene&lt;br /&gt;
Prozesse Signale und Daten untereinander austauschen können.&lt;br /&gt;
Dadurch wird auch dem Benutzer ermöglicht, einem Prozeß bestimmte Signale zu&lt;br /&gt;
senden bzw. auf den Status eines Prozesses Einfluss zu nehmen.&lt;br /&gt;
&lt;br /&gt;
===Prozesstabelle (Anzeige mit ps)===&lt;br /&gt;
Da zu jedem Prozess Kenndaten geführt werden, müssen diese auch irgendwo&lt;br /&gt;
festgehalten werden. Das geschieht in der sogenannten Prozesstabelle.&lt;br /&gt;
&lt;br /&gt;
Kenndaten der Prozesse (Auswahl):&lt;br /&gt;
* F Flags (z.B. ausgelagert; Systemprozess; Trace,...)&lt;br /&gt;
* UID Nutzer, mit dessen Rechten der Prozess ausgeführt wird&lt;br /&gt;
* PID Prozess - ID. Diese Nummer gibt eine eindeutige Prozess - Nummer&lt;br /&gt;
an. Sie wird vom System automatisch beim Starten des Prozesses&lt;br /&gt;
vergeben und ist für die Laufzeit eindeutig.&lt;br /&gt;
* PPID Prozessnumer der Eltern-Prozesses&lt;br /&gt;
* PRI Priorität eines Prozesses; je niedriger der Wert ist, desto besser&lt;br /&gt;
* NI ist der Nicewert des Prozesses; Nice erniedrigt den Grundwert&lt;br /&gt;
der Priorität des Prozesses und gibt damit Prozessorzeit für andere&lt;br /&gt;
Prozesse frei.&lt;br /&gt;
* SIZE Speichergröße des Prozesses inklusive Stack (eine Art Zwischenspeicher)&lt;br /&gt;
* RSS Verbrauch an physischen Speicher&lt;br /&gt;
* WCHAN ist der Name der Kernerlfunktion, in der der Prozess schläft&lt;br /&gt;
* STAT Status des Prozesses&lt;br /&gt;
R läuft       S schlafend     D nicht störbarer Schlaf&lt;br /&gt;
T angehalten  Z Zombie        W der Prozess belegt keine Seiten&lt;br /&gt;
* TIME Bisland benötigte Prozessorzeit&lt;br /&gt;
* SIZE ist die Größe von Text, Daten und Stack&lt;br /&gt;
* TTY die Nummer des kontrollierenden Teminal; wenn hier ein ? steht,&lt;br /&gt;
handelt es sich um einen Dämon oder Serverprozess.&lt;br /&gt;
* COMMAND Angabe des Prozesses selbst. Dies ist meist der Programmname.&lt;br /&gt;
&lt;br /&gt;
Weiteres&lt;br /&gt;
* GID Gruppe, unter der der Prozess läuft&lt;br /&gt;
* Verweis auf das aktuellen Arbeitsverzeichnis&lt;br /&gt;
* Um mit relativen Pfadangaben arbeiten zu können braucht man diesen Eintrag&lt;br /&gt;
* Tabelle mit Verweisen auf aktuell geöffnete Dateien&lt;br /&gt;
* 3 sind automatisch geöffnet Standardeingabe, Standardausgabe und&lt;br /&gt;
Standardfehlerkanal&lt;br /&gt;
&lt;br /&gt;
Beispiel&lt;br /&gt;
 root@zero:~# ps -l&lt;br /&gt;
 F S   UID   PID  PPID  C PRI  NI ADDR SZ WCHAN  TTY          TIME CMD&lt;br /&gt;
 4 R     0 18639 18631  0  80   0 -  1080 -      pts/0    00:00:00 bash&lt;br /&gt;
 0 R     0 25904 18639  0  80   0 -   635 -      pts/0    00:00:00 ps&lt;br /&gt;
&lt;br /&gt;
===Eltern und Kinder===&lt;br /&gt;
Jeder Prozess kann weitere Prozesse erzeugen. Die erzeugten Prozesse bezeichnet&lt;br /&gt;
man als Kindprozesse. Jeder Kindprozess weiß anhand der PID, woher er stammt.&lt;br /&gt;
&lt;br /&gt;
Alle Prozesse sind von einem anderen Prozess gestartet worden, mit Ausnahme&lt;br /&gt;
des Pseudoprozesses (noch im Kernel beim Starten erzeugter Prozess). Dieser hat&lt;br /&gt;
die Prozessnummer 0. Er hat die Aufgabe, den Init Prozess ( /sbin/init die Nummer&lt;br /&gt;
1) zu starten, der in System V alle anderen Prozesse direkt oder über seine Kind-&lt;br /&gt;
prozesse startet. (init wird konfiguriert durch die /etc/inittab)&lt;br /&gt;
&lt;br /&gt;
Es gibt zwei Arten wie ein Prozess gestartet werden kann:&lt;br /&gt;
&lt;br /&gt;
# Fork und Exec: Prozessumgebung wird dupliziert, der neue Prozess bekommt eine eigene neue PID&lt;br /&gt;
# Exec: Alter Prozess wird durch neuen Prozess überladen (geht mit dem shell-buildin exec)&lt;br /&gt;
&lt;br /&gt;
'''Rechte auf Objekte UID GID'''&lt;br /&gt;
Ob ein Prozess auf eine Datei zugreifen kann, entscheidet der Kernel anhand der&lt;br /&gt;
Zugriffssrechte, die auf der Datei gesetzt sind. Er checkt anhand der UID und GID&lt;br /&gt;
des Prozesses, ob es erlaubt ist. Mit dieser Technik wird letztendlich geprüft, was&lt;br /&gt;
ein User darf, und was nicht.&lt;br /&gt;
&lt;br /&gt;
===Rechenzeit und Priorität===&lt;br /&gt;
Da auch bei Prozessen eine Gerechtigkeit herschen muss, muss eine Instanz&lt;br /&gt;
darüber entscheiden wie lange ein Prozess Rechenzeit verbrauchen darf.&lt;br /&gt;
Folgende Kenndaten werden dazu benötigt&lt;br /&gt;
* clocktick = Zeiteinheit&lt;br /&gt;
* n = Faktor über den Kernel einstellbar&lt;br /&gt;
* slice = n &amp;lt;nowiki&amp;gt;*&amp;lt;/nowiki&amp;gt; clocktick&lt;br /&gt;
* agingtime = weitere Zeiteinheit über den Kernel einstellbar&lt;br /&gt;
&lt;br /&gt;
Es wird davon ausgegangen das der Prozess mit der niedrigsten Priorität gerade&lt;br /&gt;
rechnet. Pro clocktick erhöht sich die Priorität dieses Prozesses um eins.&lt;br /&gt;
&lt;br /&gt;
Jetzt können 3 Situationen eintreten die alle dazu führen das der Scheduler&lt;br /&gt;
aufgerufen wird.&lt;br /&gt;
&lt;br /&gt;
# Prozess blockiert wegen einer Ausgabe oder Eingabe.&lt;br /&gt;
# Gibt Rechenzeit freiwillig ab.&lt;br /&gt;
# Der Slice endet.&lt;br /&gt;
&lt;br /&gt;
Der Aufruf des Schedulers bewirkt das der Prozess mit der niedrigsten Priorität&lt;br /&gt;
gescheduled wird, er also nun rechnen darf. Nach Ablauf der agingtime werden&lt;br /&gt;
nun die Prozesse &amp;quot;gealtert&amp;quot;. Das geschieht nach folgender Formel&lt;br /&gt;
&lt;br /&gt;
Neue Priorität = Alte Priorität / 2 + Nicewert&lt;br /&gt;
&lt;br /&gt;
Der User hat die Möglichkeit, über den sogenannten Nicefaktor den Grundwert für&lt;br /&gt;
einen Prozess zu senken. Der Prozess braucht dann länger für seine Abarbeitung.&lt;br /&gt;
Er verhält sich somit netter zu den anderen Prozessen. Normale User können nur&lt;br /&gt;
netter werden, der Systemverwalter kann auch nicht netter (gemeiner) werden. Der&lt;br /&gt;
Bereich liegt zwischen 19 (sehr nett) bis 0 (weniger nett) für die User, und 19 bis&lt;br /&gt;
-20 für root.&lt;br /&gt;
&lt;br /&gt;
[[Image:pri.png]]&lt;br /&gt;
&lt;br /&gt;
'''Signale'''&lt;br /&gt;
&lt;br /&gt;
Mit den Kommando kill und killall kann man Prozessen Signale schicken&lt;br /&gt;
&lt;br /&gt;
 kill -Signalnummer PID &lt;br /&gt;
&lt;br /&gt;
Signalnummer&lt;br /&gt;
{| border=1 cellpadding=2&lt;br /&gt;
!Signalname&lt;br /&gt;
!Wert&lt;br /&gt;
!Aktion&lt;br /&gt;
|-&lt;br /&gt;
|SIGHUP&lt;br /&gt;
|1&lt;br /&gt;
|Neuinitialisierung eines Prozesses&lt;br /&gt;
|-&lt;br /&gt;
|SIGINT&lt;br /&gt;
|2&lt;br /&gt;
|Interrupt-Signal von der Tastatur (STRG+c)&lt;br /&gt;
|-&lt;br /&gt;
|SIGQUIT&lt;br /&gt;
|3&lt;br /&gt;
|Interrupt-Signal von der Tastatur (STRG+c) mit Dump&lt;br /&gt;
|-&lt;br /&gt;
|SIGKILL&lt;br /&gt;
|9&lt;br /&gt;
|unwiderrufliches Beendigungssignal (Töten)&lt;br /&gt;
|-&lt;br /&gt;
|SIGSEGV&lt;br /&gt;
|11&lt;br /&gt;
|Ungültige Speicherreferenz (bedeutet oft auf defekten Speicher)&lt;br /&gt;
|-&lt;br /&gt;
|SIGTERM &lt;br /&gt;
|15&lt;br /&gt;
|Beendigungssignal (geöffnete Dateien werden geschlossen)&lt;br /&gt;
|-&lt;br /&gt;
|SIGCONT &lt;br /&gt;
|18&lt;br /&gt;
|Weiterfahren, wenn gestoppt&lt;br /&gt;
|-&lt;br /&gt;
|SIGSTOP&lt;br /&gt;
|19&lt;br /&gt;
|Prozessstop&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Beispiel&lt;br /&gt;
 root@zero:~# kill -1 7562&lt;br /&gt;
&lt;br /&gt;
===Programme im Zusammenhang mit Prozessen===&lt;br /&gt;
* ps: Zeigt die Prozesse mit ihrem Status an&lt;br /&gt;
 root@zero:~# ps&lt;br /&gt;
  PID TTY          TIME CMD&lt;br /&gt;
 14134 pts/0    00:00:00 bash&lt;br /&gt;
 14149 pts/0    00:00:00 ps&lt;br /&gt;
&lt;br /&gt;
 root@zero:~# ps -elf | grep apache&lt;br /&gt;
 1 S root      5738     1  0  80   0 -  5461 select Jun16 ?        00:00:00 /usr/sbin/apache2 -k start&lt;br /&gt;
 5 S www-data  5739  5738  0  80   0 -  5581 inet_c Jun16 ?        00:00:00 /usr/sbin/apache2 -k start&lt;br /&gt;
 5 S www-data  5742  5738  0  80   0 -  5461 inet_c Jun16 ?        00:00:00 /usr/sbin/apache2 -k start&lt;br /&gt;
 5 S www-data  5743  5738  0  80   0 -  5461 inet_c Jun16 ?        00:00:00 /usr/sbin/apache2 -k start&lt;br /&gt;
 5 S www-data  5745  5738  0  80   0 -  5461 inet_c Jun16 ?        00:00:00 /usr/sbin/apache2 -k start&lt;br /&gt;
 5 S www-data  5746  5738  0  80   0 -  5461 inet_c Jun16 ?        00:00:00 /usr/sbin/apache2 -k start&lt;br /&gt;
 0 S root     14153 14134  0  80   0 -   837 pipe_w 16:59 pts/0    00:00:00 grep apache&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* nice: Lässt ein Programm mit verändertem Grundwert der Priorität laufen&lt;br /&gt;
 root@zero:~# nice&lt;br /&gt;
 0&lt;br /&gt;
 root@zero:~# nice -n 9 bash&lt;br /&gt;
 root@zero:~# nice&lt;br /&gt;
 9&lt;br /&gt;
 root@zero:~#&lt;br /&gt;
&lt;br /&gt;
* renice: Ändert den Grundwert der Priorität eines laufenden Prozesses&lt;br /&gt;
 root@zero:~# renice 10 5742&lt;br /&gt;
 5742: Alte Priorität: 0, neue Priorität: 10&lt;br /&gt;
&lt;br /&gt;
* top: Zeigt die Prozesse mit ihrem Status an (Abbrechen mit q)&lt;br /&gt;
 root@zero:~# top&lt;br /&gt;
&lt;br /&gt;
* pstree: Zeigt die Prozesse als Baumstruktur&lt;br /&gt;
 root@zero:~# pstree&lt;br /&gt;
 init─┬─NetworkManager&lt;br /&gt;
      ├─acpid&lt;br /&gt;
      ├─apache2───5*[apache2]&lt;br /&gt;
      ├─atd&lt;br /&gt;
      ├─bluetoothd&lt;br /&gt;
      ├─console-kit-dae───63*[{console-kit-dae}]&lt;br /&gt;
      ├─cron&lt;br /&gt;
      ├─cupsd&lt;br /&gt;
      ├─dbus-daemon&lt;br /&gt;
      ├─dd&lt;br /&gt;
      ├─gdm───gdm─┬─Xorg&lt;br /&gt;
      │           └─gdmgreeter&lt;br /&gt;
      ├─6*[getty]&lt;br /&gt;
      ├─hald───hald-runner─┬─hald-addon-acpi&lt;br /&gt;
      │                    ├─hald-addon-inpu&lt;br /&gt;
      │                    └─2*[hald-addon-stor]&lt;br /&gt;
      ├─klogd&lt;br /&gt;
      ├─nm-system-setti&lt;br /&gt;
      ├─nmbd&lt;br /&gt;
      ├─nscd───11*[{nscd}]&lt;br /&gt;
      ├─portmap&lt;br /&gt;
      ├─rpc.statd&lt;br /&gt;
      ├─slapd───2*[{slapd}]&lt;br /&gt;
      ├─smbd───smbd&lt;br /&gt;
      ├─sshd───sshd───bash───bash───pstree&lt;br /&gt;
      ├─syslogd&lt;br /&gt;
      ├─system-tools-ba&lt;br /&gt;
      ├─udevd&lt;br /&gt;
      ├─winbindd─┬─winbindd───winbindd&lt;br /&gt;
      │          └─3*[winbindd]&lt;br /&gt;
      └─wpa_supplicant&lt;br /&gt;
&lt;br /&gt;
===Jobs===&lt;br /&gt;
Unter einem Job versteht man ein Programm, welches man von der Shell gelöst&lt;br /&gt;
hat. D. h. man kann ganz normal weiter arbeiten und der Job verrichtet seinen&lt;br /&gt;
Dienst im Hintergrund. Man kann jederzeit zu diesem Job wieder Kontakt&lt;br /&gt;
aufnehmen.&lt;br /&gt;
&lt;br /&gt;
Ein Job kann auf 2 Arten gestarten werden:&lt;br /&gt;
&lt;br /&gt;
# Durch Anhängen des &amp;amp; Zeichens beim Programmstart&lt;br /&gt;
 root@zero:~# tail -f /var/log/messages &amp;amp;&lt;br /&gt;
 Jun 19 06:59:31 zero -- MARK --&lt;br /&gt;
 Jun 19 07:19:31 zero -- MARK --&lt;br /&gt;
 Jun 19 07:39:32 zero -- MARK --&lt;br /&gt;
 Jun 19 07:44:57 zero syslogd 1.5.0#5ubuntu3: restart.&lt;br /&gt;
 Jun 19 07:59:32 zero -- MARK --&lt;br /&gt;
 Jun 19 08:19:32 zero -- MARK --&lt;br /&gt;
 Jun 19 08:39:32 zero -- MARK --&lt;br /&gt;
 Jun 19 08:59:32 zero -- MARK --&lt;br /&gt;
 Jun 19 09:19:33 zero -- MARK --&lt;br /&gt;
 Jun 19 09:39:33 zero -- MARK --&lt;br /&gt;
 [3] 27421&lt;br /&gt;
&lt;br /&gt;
# Durch Stoppen des Prozesses durch Drücken von Strg-Z und in den Hintergrund schicken mit %n (n ist die Jobnummer)&lt;br /&gt;
 root@zero:~# watch cat /proc/cpuinfo&lt;br /&gt;
 Strg-Z&lt;br /&gt;
 [4]+  Stopped                 watch cat /proc/cpuinfo&lt;br /&gt;
 root@zero:~# bg %4&lt;br /&gt;
 [4]+ watch cat /proc/cpuinfo &amp;amp;&lt;br /&gt;
&lt;br /&gt;
Anweisungen im Zusammenhang mit Jobs (n ist die Jobnummer)&lt;br /&gt;
* bg %n : Einen Job in den Hintergrund stellen (wie oben)&lt;br /&gt;
* fg %n : Einen Job in den Vordergrund holen&lt;br /&gt;
 root@zero:~# fg %4&lt;br /&gt;
 watch cat /proc/cpuinfo&lt;br /&gt;
&lt;br /&gt;
* jobs : Aktive Jobs ausgeben&lt;br /&gt;
&lt;br /&gt;
 root@zero:~# jobs&lt;br /&gt;
 [1]   Running                 tail -f /var/log/syslog &amp;amp;&lt;br /&gt;
 [2]   Running                 tail -f /var/log/syslog &amp;amp;&lt;br /&gt;
 [3]-  Running                 tail -f /var/log/messages &amp;amp;&lt;br /&gt;
 [4]+  Stopped                 watch cat /proc/cpuinfo&lt;br /&gt;
&lt;br /&gt;
* Strg-Z : Einen Vordergrund-Job vorübergehend anhalten&lt;br /&gt;
* kill -STOP %n : Unterbricht Job im Hintergrund&lt;br /&gt;
 root@zero:~# kill -STOP %1&lt;br /&gt;
 root@zero:~# jobs&lt;br /&gt;
 [1]+  '''Stopped'''                 tail -f /var/log/syslog&lt;br /&gt;
 [2]   Running                 tail -f /var/log/syslog &amp;amp;&lt;br /&gt;
 [3]   Running                 tail -f /var/log/messages &amp;amp;&lt;br /&gt;
 [4]-  Stopped                 watch cat /proc/cpuinfo&lt;br /&gt;
* kill -CONT %n : Setzt den unterbrochenen Job im Hintergrund fort&lt;br /&gt;
root@zero:~# kill -CONT %1&lt;br /&gt;
root@zero:~# jobs&lt;br /&gt;
 [1]+  '''Running'''                 tail -f /var/log/syslog &amp;amp;&lt;br /&gt;
 [2]   Running                 tail -f /var/log/syslog &amp;amp;&lt;br /&gt;
 [3]   Running                 tail -f /var/log/messages &amp;amp;&lt;br /&gt;
 [4]-  Stopped                 watch cat /proc/cpuinfo&lt;br /&gt;
* kill -KILL %n : Tötet Job im Hintergrund&lt;br /&gt;
 root@zero:~# kill -KILL %1&lt;br /&gt;
 root@zero:~# jobs&lt;br /&gt;
 [1]+  '''Killed'''                  tail -f /var/log/syslog&lt;br /&gt;
 [2]   Running                 tail -f /var/log/syslog &amp;amp;&lt;br /&gt;
 [3]   Running                 tail -f /var/log/messages &amp;amp;&lt;br /&gt;
 [4]-  Stopped                 watch cat /proc/cpuinfo&lt;br /&gt;
 root@zero:~# jobs&lt;br /&gt;
 [2]   Running                 tail -f /var/log/syslog &amp;amp;&lt;br /&gt;
 [3]-  Running                 tail -f /var/log/messages &amp;amp;&lt;br /&gt;
 [4]+  Stopped                 watch cat /proc/cpuinfo&lt;br /&gt;
&lt;br /&gt;
Bedingungen, die zu Jobausführung eingehalten werden sollen:&lt;br /&gt;
* Der Job soll nicht auf den Bildschirm schreiben (Standardausgabe +Standardfehlerkanal).&lt;br /&gt;
* Er soll keine Eingaben vom Benutzer erwarten.&lt;br /&gt;
&lt;br /&gt;
==Suchen von Dateien==&lt;br /&gt;
===find===&lt;br /&gt;
 find ab_wo_wird_gesucht was_wird_gesucht aktion&lt;br /&gt;
 find [Pfad] [Bedingung] [Aktion]&lt;br /&gt;
&lt;br /&gt;
====Nach Namen====&lt;br /&gt;
 find [Pfad] '''-name''' [Name]&lt;br /&gt;
 &lt;br /&gt;
Finde alle Dateien mit Namen test ab dem Verzeichnis /home und gebe diese Zeilenweise aus&lt;br /&gt;
 root@zero:~# find /home -name test -print&lt;br /&gt;
 /home/xinux/test&lt;br /&gt;
 /home/test&lt;br /&gt;
&lt;br /&gt;
Wie oben, jedoch mit Namensanfang test&lt;br /&gt;
 root@zero:/home/xinux# find /home -name 'test*'&lt;br /&gt;
 /home/xinux/testdatei&lt;br /&gt;
 /home/xinux/test&lt;br /&gt;
 /home/test&lt;br /&gt;
&lt;br /&gt;
====Nach Benutzer(Eigentümer)====&lt;br /&gt;
 root@zero:/tmp# find /tmp/ '''-user''' xinux&lt;br /&gt;
 /tmp/datei&lt;br /&gt;
&lt;br /&gt;
====Nach Gruppe====&lt;br /&gt;
 root@zero:/tmp# find /tmp/ '''-group''' hacker&lt;br /&gt;
 /tmp/datei3&lt;br /&gt;
 /tmp/datei2&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
====Nach Typ====&lt;br /&gt;
Es wird nach Dateien anhand Ihrer Art gesucht:&lt;br /&gt;
 find [Pfad] '''-type''' [Typ] &lt;br /&gt;
Typ:&lt;br /&gt;
* f: Normale Dateien&lt;br /&gt;
 root@zero:~# find /tmp/ -type f&lt;br /&gt;
 /tmp/mbr.img&lt;br /&gt;
 /tmp/datei&lt;br /&gt;
 /tmp/zeugs&lt;br /&gt;
 /tmp/.X0-lock&lt;br /&gt;
* d: Verzeichnisse&lt;br /&gt;
 root@zero:~# find /var/log -type d&lt;br /&gt;
 /var/log&lt;br /&gt;
 /var/log/apache2&lt;br /&gt;
 /var/log/unattended-upgrades&lt;br /&gt;
 /var/log/apparmor&lt;br /&gt;
 /var/log/ConsoleKit&lt;br /&gt;
 /var/log/dist-upgrade&lt;br /&gt;
 /var/log/dist-upgrade/20090526-1052&lt;br /&gt;
 /var/log/cups&lt;br /&gt;
 /var/log/apt&lt;br /&gt;
 /var/log/fsck&lt;br /&gt;
 /var/log/samba&lt;br /&gt;
 /var/log/samba/cores&lt;br /&gt;
 /var/log/samba/cores/smbd&lt;br /&gt;
 /var/log/samba/cores/nmbd&lt;br /&gt;
 /var/log/samba/cores/winbindd&lt;br /&gt;
 /var/log/installer&lt;br /&gt;
 /var/log/gdm&lt;br /&gt;
 /var/log/news&lt;br /&gt;
* c: Char Devices (Zeichenorientierte Gerätedatei)&lt;br /&gt;
 root@zero:~# find / -type c&lt;br /&gt;
 /lib/udev/devices/kmem&lt;br /&gt;
 /lib/udev/devices/null&lt;br /&gt;
 /lib/udev/devices/console&lt;br /&gt;
 /lib/udev/devices/ppp&lt;br /&gt;
 /lib/udev/devices/net/tun&lt;br /&gt;
* b: Block Devices (Blockorientierte Gerätedatei)&lt;br /&gt;
* p: Benannte Pipe&lt;br /&gt;
* l: Links&lt;br /&gt;
* s: Sockets&lt;br /&gt;
&lt;br /&gt;
====Nach Modifikation====&lt;br /&gt;
Listet alle Dateien in /etc auf, die innerhalb von zwei Tagen modifiziert wurden&lt;br /&gt;
 root@zero:/var/log# find /etc/ -mtime 2 -print&lt;br /&gt;
 /etc/apache2&lt;br /&gt;
 /etc/apache2/mods-available&lt;br /&gt;
 /etc/apache2/conf.d&lt;br /&gt;
 /etc/apache2/sites-available&lt;br /&gt;
 /etc/bash_completion.d&lt;br /&gt;
 /etc/blkid.tab.old&lt;br /&gt;
 /etc/firefox-3.0/profile&lt;br /&gt;
 /etc/firefox-3.0/profile/chrome&lt;br /&gt;
 /etc/firefox-3.0/pref&lt;br /&gt;
 /etc/profile.d&lt;br /&gt;
 /etc/ufw/applications.d&lt;br /&gt;
 /etc/logrotate.d&lt;br /&gt;
 /etc/xulrunner-1.9&lt;br /&gt;
 /etc/blkid.tab&lt;br /&gt;
 /etc/cron.daily&lt;br /&gt;
 /etc/alternatives&lt;br /&gt;
 /etc/alternatives/x-www-browser&lt;br /&gt;
 /etc/alternatives/xulrunner&lt;br /&gt;
 /etc/gre.d&lt;br /&gt;
 /etc/hal/fdi/policy&lt;br /&gt;
 /etc/dbus-1/system.d&lt;br /&gt;
 /etc/udev/rules.d&lt;br /&gt;
&lt;br /&gt;
====Nach Größe====&lt;br /&gt;
Finde Dateien in /tmp, die größer als 100 MByte sind&lt;br /&gt;
 root@zero:/tmp# find /tmp/ -size +100M&lt;br /&gt;
 /tmp/datei&lt;br /&gt;
&lt;br /&gt;
Finde Dateien in /tmp, die kleiner als 100 KByte sind&lt;br /&gt;
 root@zero:/tmp# find /tmp/ -size -100k&lt;br /&gt;
 /tmp/&lt;br /&gt;
 /tmp/datei3&lt;br /&gt;
 /tmp/backup &lt;br /&gt;
 /tmp/datei2&lt;br /&gt;
 /tmp/.winbindd &lt;br /&gt;
 /tmp/.winbindd/pipe&lt;br /&gt;
 /tmp/mbr.img&lt;br /&gt;
 /tmp/zeugs&lt;br /&gt;
 /tmp/.ICE-unix&lt;br /&gt;
 /tmp/.X0-lock&lt;br /&gt;
 /tmp/datei1&lt;br /&gt;
 /tmp/.X11-unix&lt;br /&gt;
 /tmp/.X11-unix/X0&lt;br /&gt;
 /tmp/pulse-PKdhtXMmr18n&lt;br /&gt;
&lt;br /&gt;
====Nach Berechtigungen====&lt;br /&gt;
Finde Dateien in Home mit der Berechtigung 777 (-rwxrwxrwx)&lt;br /&gt;
 root@zero:/var# find /home/ -perm 777&lt;br /&gt;
 /home/samba&lt;br /&gt;
 /home/xinux/Examples&lt;br /&gt;
 /home/xinux/.pulse/1f0763ee4cf4c7e1d3c07fd149dda37b:runtime&lt;br /&gt;
 /home/test/Examples&lt;br /&gt;
&lt;br /&gt;
===locate===&lt;br /&gt;
Locate arbeitet über einen Index, der erstellt und aktualisiert werden muss. Aus diesem Grund kann locate teilweise nicht &lt;br /&gt;
akutell sein. Es ist immer schneller als find und es durchsucht immer das ganze Dateisystem. &lt;br /&gt;
 locate [Dateiname]&lt;br /&gt;
 &lt;br /&gt;
Lokalisiere die Datei wvdial.conf. Anmerkung: Der Stern wird beim Suchen automatisch hinzugefügt. Entspricht also&lt;br /&gt;
wvidal.conf*&lt;br /&gt;
 root@zero:~# locate wvdial.conf&lt;br /&gt;
 /etc/wvdial.conf&lt;br /&gt;
 /usr/share/man/man5/wvdial.conf.5.gz&lt;br /&gt;
 /var/lib/dpkg/info/wvdial.conffiles&lt;br /&gt;
 /var/lib/dpkg/info/wvdial.config&lt;br /&gt;
&lt;br /&gt;
Lokalisiere die Datei wvdial.conf und nur diese&lt;br /&gt;
 root@zero:~# locate -b '\wvdial.conf'&lt;br /&gt;
 /etc/wvdial.conf&lt;br /&gt;
&lt;br /&gt;
Aktualisieren des Indexes&lt;br /&gt;
 root@zero:~# updatedb&lt;br /&gt;
&lt;br /&gt;
==Wie wird ein Kommando lokalisiert==&lt;br /&gt;
Wenn die Shell alle Ersetzungen in der Kommandozeile vorgenommen und alle Umleitungen vorbereitet hat, ist der Zeitpunkt &lt;br /&gt;
gekommen, auf den der Anwender die ganze Zeit gewartet hat. Die Shell versucht das Kommando auszuführen. Dazu muss sie &lt;br /&gt;
es aber erst lokalisieren. Das erste passende Kommando wird ausgeführt.&lt;br /&gt;
&lt;br /&gt;
Als Kommandoname wird immer das erste Wort eines einfachen Kommandos erkannt. Ein Kommandoname kann mit Pfadnamen in &lt;br /&gt;
einem Verzeichnis (absolut oder relativ) angegeben werden. Die Shell erkennt dies an (mindestens) einem Slash `/' &lt;br /&gt;
im Kommandonamen. Wenn kein Verzeichnis angegeben ist, versucht die Shell selbst, das Kommando zu finden. Dazu wird &lt;br /&gt;
der Kommandoname zuerst in der Hashtabelle gesucht, dann wird er mit den Synonymen, mit den Scriptfunktionen und &lt;br /&gt;
schließlich mit den Shellfunktionen verglichen. &lt;br /&gt;
&lt;br /&gt;
Wird auf diese Weise kein Programm dieses Namens gefunden, werden alle in der PATH-Umgebungsvariablen aufgeführten &lt;br /&gt;
Verzeichnisse nach einer ausführbaren Datei dieses Namens durchsucht. Wird auch hier kein passendes Kommando gefunden, &lt;br /&gt;
gibt die Shell eine Fehlermeldung aus.&lt;br /&gt;
&lt;br /&gt;
===which und type===&lt;br /&gt;
====which====&lt;br /&gt;
which gibt die vollen Pfadnamen der Dateien aus, die bei Benutzung des angegebenen Befehls ausgeführt werden würden.&lt;br /&gt;
&lt;br /&gt;
 which [-a] Dateiname &lt;br /&gt;
&lt;br /&gt;
Optionen:&lt;br /&gt;
&lt;br /&gt;
* -a : Alle Treffer ausgeben, nicht nur den ersten&lt;br /&gt;
* --skip-dot : Verzeichnisse, die mit einem Punkt beginnen, auslassen&lt;br /&gt;
&lt;br /&gt;
Beispiel&lt;br /&gt;
 root@zero:~# which startx&lt;br /&gt;
 /usr/bin/startx&lt;br /&gt;
&lt;br /&gt;
====type====&lt;br /&gt;
Anzeigen der absoluten Pfadnamen von Befehlen, und ob sich diese Befehle in der Hash-Tabelle der aktuellen&lt;br /&gt;
Shell befinden.&lt;br /&gt;
&lt;br /&gt;
 type [Optionen] Befehle&lt;br /&gt;
&lt;br /&gt;
Beispiel&lt;br /&gt;
 root@zero:~# type ls&lt;br /&gt;
 ls is aliased to `ls --color=auto'&lt;br /&gt;
&lt;br /&gt;
Optionen:&lt;br /&gt;
&lt;br /&gt;
* -a : Alle vorkommenden Befehle werden ausgegeben, nicht nur das, welches aufgerufen werden würde&lt;br /&gt;
 root@zero:~# type '''-a''' ls&lt;br /&gt;
 ls is aliased to `ls --color=auto'&lt;br /&gt;
 ls is /bin/ls&lt;br /&gt;
&lt;br /&gt;
* -p : Anzeigen des Eintrags von Befehl in der Hash-Tabelle. Dieser Wert kann sich vom ersten Auftreten des Befehls in PATH&lt;br /&gt;
unterscheiden&lt;br /&gt;
 root@zero:~# type '''-p''' apache2&lt;br /&gt;
 /usr/sbin/apache2&lt;br /&gt;
&lt;br /&gt;
* -t : Anzeigen, ob Befehl ein Aliasname, ein Schlüsselwort, eine Funktion, ein eingebauter Befehl oder eine Datei ist&lt;br /&gt;
 root@zero:~# type '''-t''' apache2&lt;br /&gt;
 file&lt;/div&gt;</summary>
		<author><name>192.168.178.46</name></author>
	</entry>
	<entry>
		<id>https://www.xinux.net/index.php?title=Linux_Grundlagen&amp;diff=78</id>
		<title>Linux Grundlagen</title>
		<link rel="alternate" type="text/html" href="https://www.xinux.net/index.php?title=Linux_Grundlagen&amp;diff=78"/>
		<updated>2009-07-07T10:48:31Z</updated>

		<summary type="html">&lt;p&gt;192.168.178.46: /* Verzeichnisse */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Einführung==&lt;br /&gt;
===Geschichte Unix===&lt;br /&gt;
====1969====&lt;br /&gt;
Am Anfang von Linux steht Multics, ein von Bell Laboratories geschaffenes &amp;quot;Betriebssystem&amp;quot;, &lt;br /&gt;
das noch mit Lochkarten arbeitete. Multics wird mit Unterstützung von AT&amp;amp;T und Western &lt;br /&gt;
Electric unter Mitarbeit von Ken Thompson und Dennis Ritchie weiterentwickelt. Obwohl sich &lt;br /&gt;
Bell Laboratories bald zurückzieht, gibt Thompson das Projekt nicht auf.  Zum Entwicklerteam &lt;br /&gt;
gehören auch Rudd Canaday und Brian Kernighan. Letzterer gibt 1970 dem Betriebssystem den Namen UNIX. &lt;br /&gt;
Thompson definiert 7 Richtlinien für UNIX:&lt;br /&gt;
 &lt;br /&gt;
# Hierarchische Anordnung der Dateisysteme&lt;br /&gt;
# Die Ausgabe von Daten an die Peripherie(-geräte) und Dateien soll gleich sein.&lt;br /&gt;
# Prozesse und Programme sollen miteinander kommunizieren.&lt;br /&gt;
# Multitasking (voneinander getrennte Prozesse)&lt;br /&gt;
# Persönliche Shell's&lt;br /&gt;
# Der Compiler soll für viele Programmiersprachen tauglich sein.&lt;br /&gt;
# Portabilität&lt;br /&gt;
&lt;br /&gt;
====1971====&lt;br /&gt;
Bis 1971 ist das für eine DEC PDP-7 geschriebene Unix als Version 1 auf eine PDP-11 portiert. Bis&lt;br /&gt;
zur Version 4 entwickelt Ritchie die Programmier- (Hoch-) Sprache C. Das in Assembler geschriebene&lt;br /&gt;
Unix wird fast völlig nach C übersetzt, wodurch zum erstenmal die geforderte Hardware-Unabhängigkeit&lt;br /&gt;
des Betriebssystems realisiert werden kann.&lt;br /&gt;
&lt;br /&gt;
====1975====&lt;br /&gt;
Da AT&amp;amp;T aufgrund vertraglicher Bindungen mit der US-Bundesregierung Unix nicht kommerziell vermarkten darf, stellt sie den Source Code für ein paar hundert Dollar den Universitäten, Lehr- und Forschungsanstalten zur Verfügung. Dies führt zu einer sehr dynamischen Entwicklung von Unix. 1975 wird die Version 6 als erstes UNIX-System veröffentlicht, die darauffolgende Version 7 wird sehr erfolgreich. Da es keine Standardisierung gibt, entwickeln bald verschiedenste Firmen ihr eigenes UNIX. Ab 1984 wird AT&amp;amp;T per Gerichtsbeschluss erlaubt, Unix zu vermarkten. AT&amp;amp;T verkauft sein Unix V und beginnt, sich um einen internationalen Standard von UNIX zu bemühen. &lt;br /&gt;
&lt;br /&gt;
====1984====&lt;br /&gt;
Durch Richard Stallman wird die Free Software Foundation (FSF) gegründet. Diese initiiert ein Projekt namens GNU (GNU ist Not Unix), welches das Ziel verfolgt, ein freies UNIX System zu schaffen. &lt;br /&gt;
&lt;br /&gt;
====1987====&lt;br /&gt;
AT&amp;amp;T verbietet die Verwendung des Unix Quellcodes an den Universitäten. Während dieser Zeit ist Andrew (Andy) Tannenbaum Professor an der Freien Universität von Amsterdam und entwickelt Minix. Minix ist ein kostengünstiges Lehrbetriebssystem und kommt ohne jeglichen AT&amp;amp;T Code aus, obwohl es die gleiche Funktionalität wie Unix 7 bietet. Im Usenet unter comp.os.minix entsteht eine Minix-Gemeinde, die den Minix Kernel und die Anwendungen rundherum programmiert und verbessert.&lt;br /&gt;
&lt;br /&gt;
====1991====&lt;br /&gt;
Linus Torvalds hat als Student für Computerwissenschaften an der Universität in Helsinki Minix installiert und das Buch von Andy Tannenbaum gelesen. Er beginnt im Sinne der FSF einen Unix ähnlichen Kernel zu programmieren mit der Idee, &amp;quot;ein besseres Minix als Minix&amp;quot; zu bauen. 1992 stellt er die Version 0.02 mit dem Namen Linux der Internetgemeinde zur Verfügung. &lt;br /&gt;
&lt;br /&gt;
====1994====&lt;br /&gt;
Die Linux Version 1.0 wird freigegeben. Das Linux Fieber beginnt... &lt;br /&gt;
&lt;br /&gt;
====1998====&lt;br /&gt;
Der Kreis der Linux Entwickler und Anwender ist kräftig angeschwollen. KDE 1.0 wird veröffentlicht. Die Zuwachsraten von Linux übertreffen die von Windows NT deutlich. &lt;br /&gt;
&lt;br /&gt;
====1999====&lt;br /&gt;
Der lange erwartete stabile Linux Kernel Version 2.2 wird freigegeben. Namhafte Firmen wie IBM kündigen ihre Unterstützung für Linux an. &lt;br /&gt;
&lt;br /&gt;
====2001====&lt;br /&gt;
Der lange erwartete stabile Linux Kernel Version 2.4 wird freigegeben. USB Unterstützung und eine neue Firewallimplementierung zeichnen ihn aus.&lt;br /&gt;
&lt;br /&gt;
====2003====&lt;br /&gt;
Linux Kernel Version 2.6 wird freigegeben. Am auffälligsten sind Änderungen bei der Modulverwaltung.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Distributionen===&lt;br /&gt;
{| Border=1 Cellpadding=2&lt;br /&gt;
| &lt;br /&gt;
|Url&lt;br /&gt;
|Paketformat&lt;br /&gt;
|-&lt;br /&gt;
|Red Hat&lt;br /&gt;
|www.redhat.com&lt;br /&gt;
|rpm&lt;br /&gt;
|-&lt;br /&gt;
|fedora&lt;br /&gt;
|fedora.redhat.com&lt;br /&gt;
|rpm&lt;br /&gt;
|-&lt;br /&gt;
|CentOS&lt;br /&gt;
|www.centos.org&lt;br /&gt;
|rpm&lt;br /&gt;
|-&lt;br /&gt;
|Suse/openSUSE&lt;br /&gt;
|www.opensuse.org&lt;br /&gt;
|rpm&lt;br /&gt;
|-&lt;br /&gt;
|Debian&lt;br /&gt;
|www.debian.org&lt;br /&gt;
|deb&lt;br /&gt;
|-&lt;br /&gt;
|Ubuntu&lt;br /&gt;
|www.ubuntu.com&lt;br /&gt;
|deb&lt;br /&gt;
|-&lt;br /&gt;
|Mandrake&lt;br /&gt;
|www.linux-mandrake.com&lt;br /&gt;
|rpm&lt;br /&gt;
|-&lt;br /&gt;
|Easy Linux&lt;br /&gt;
|www.easy-linux.de&lt;br /&gt;
|rpm&lt;br /&gt;
|-&lt;br /&gt;
|Turbo&lt;br /&gt;
|www.turbolinux.com&lt;br /&gt;
|rpm&lt;br /&gt;
|-&lt;br /&gt;
|minis&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|toms&lt;br /&gt;
|www.toms.net/rb&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|damn small linux&lt;br /&gt;
|www.damnsmalllinux.org&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|pocket-linux&lt;br /&gt;
|www.pocket-linux.org&lt;br /&gt;
|&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
====Bücher====&lt;br /&gt;
 Titel : Das Linux Anwenderhandbuch und Leitfaden für die Systemverwaltung&lt;br /&gt;
 Autor : Sebastian Hetze, Dirk Hohndel, Olaf Kirch und Martin Müller&lt;br /&gt;
 Verlag: Lunetix&lt;br /&gt;
 ISBN : 3-929764-06-7&lt;br /&gt;
&lt;br /&gt;
 Titel : Linux in a Nutshell&lt;br /&gt;
 Autor : Jessica Perry Hekman und die Mitarbeiter von O'Reilly &amp;amp; Associates&lt;br /&gt;
 Verlag: O'Reilly&lt;br /&gt;
 ISBN : 3-930673-57-6&lt;br /&gt;
&lt;br /&gt;
 Titel : Linux - Wegweiser zur Installation und Konfiguration&lt;br /&gt;
 Autor : Matt Welsh, Lar Kaufman, Matthias Kalle Dallheimer&lt;br /&gt;
 Verlag: O'Reilly&lt;br /&gt;
 ISBN : 3-930673-58-4 (deutsch), 1-56592-469-X (englisch)&lt;br /&gt;
&lt;br /&gt;
 Titel : Linux - Installation, Konfiguration, Anwendung&lt;br /&gt;
 Autor : Michael KoflerMultitasking&lt;br /&gt;
 Verlag: Addison-Wesley&lt;br /&gt;
 ISBN : 3-8273-1475-5&lt;br /&gt;
&lt;br /&gt;
 Titel : Linux - Wegweiser für Netzwerker&lt;br /&gt;
 Autor : Olaf Kirch&lt;br /&gt;
 Verlag: O'Reilly&lt;br /&gt;
 ISBN : 3-930673-18-5&lt;br /&gt;
&lt;br /&gt;
 Titel : TCP/IP-Netzwerk-Administration&lt;br /&gt;
 Autor : Craig Hunt&lt;br /&gt;
 Verlag: O'Reilly&lt;br /&gt;
 ISBN : 3-89721-110-6&lt;br /&gt;
&lt;br /&gt;
 Titel : Essential System Administration&lt;br /&gt;
 Autor : Eleen Frisch&lt;br /&gt;
 Verlag: O'Reilly&lt;br /&gt;
 ISBN : 1-56592-127-5&lt;br /&gt;
&lt;br /&gt;
==Betriebssystem==&lt;br /&gt;
===Was ist ein Betriebssystem?===&lt;br /&gt;
&lt;br /&gt;
Ein Betriebssystem liegt logisch gesehen zwischenAnwendungsprogramm und Hardware.&lt;br /&gt;
&lt;br /&gt;
Es nimmt die Anforderungen der Anwendungsprogramme entgegen und leitet&lt;br /&gt;
diese kontrolliert an die Hardware weiter. Kein Anwendungsprogramm sollte&lt;br /&gt;
direkt auf die Hardware zugreifen können. Den zentralen Zugang schafft einzig&lt;br /&gt;
das Betriebssystem. Somit kann das Betriebssystem unsinnige Anforderungen&lt;br /&gt;
oder Bedienungsfehler abblocken.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Image:Linux.jpg]]&lt;br /&gt;
&lt;br /&gt;
===Aufgaben eines Betriebssystems===&lt;br /&gt;
&lt;br /&gt;
# Verbergen der Komplexität der Maschine vor dem Anwender (Abstraktion)&lt;br /&gt;
# Bereitstellen einer Benutzerschnittstelle (&amp;quot;Kommandointerpreter&amp;quot;, &amp;quot;Shell&amp;quot;)&lt;br /&gt;
# Bereitstellen einer normierten Programmierschnittstelle (API)&lt;br /&gt;
# Verwaltung der Ressourcen der Maschine::&lt;br /&gt;
Hauptspeicher&lt;br /&gt;
Prozessor(en)&lt;br /&gt;
Hintergrundspeicher (Platte, Band, etc.)&lt;br /&gt;
Geräte (Terminal, Drucker, Plotter, etc.)&lt;br /&gt;
Rechenzeit&lt;br /&gt;
Koordination von Prozessen&lt;br /&gt;
&lt;br /&gt;
===Aufbau eines Betriebssystems===&lt;br /&gt;
&lt;br /&gt;
Ein Rechensystem besteht aus Hardware, Systemprogrammen und Anwendungs-&lt;br /&gt;
programmen. Unter einem Betriebssystem wird meist die Summe aus Betriebs-&lt;br /&gt;
systemkern (Kernel) und den wichtigsten Systemprogrammen verstanden. Ein&lt;br /&gt;
minimaler LINUX-Kernel besitzt ungefähr eine Größe von 400 - 800 kByte.&lt;br /&gt;
Weitere wichtige Systemkomponenten benötigen zusätzlich 10 - 100 Mbyte&lt;br /&gt;
Plattenplatz.&lt;br /&gt;
&lt;br /&gt;
Ein Betriebssystem stellt den Rechner als erweiterte Maschine (virtuelle&lt;br /&gt;
Maschine) über definierte Software-Schnittstellen zur Verfügung.&lt;br /&gt;
Das Betriebssystem dient als Betriebsmittelverwalter, der Anforderungen&lt;br /&gt;
befriedigt, protokolliert, abrechnet und vermittelt.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Aufgaben des Betriebssystemkerns:&lt;br /&gt;
&lt;br /&gt;
{| Border=1 Cellpadding=2&lt;br /&gt;
|Prozessverwaltung  (dispatching and scheduling)&lt;br /&gt;
| Mehrere Benutzer können mit mehreren Aktionen gleichzeitig im System arbeiten, ohne sich gegenseitig zu beeinflussen. Damit dies möglich ist,  müssen die Aktionen organisiert, koordiniert und verwaltet werden. Die zu verwaltende Einheit nennt man Prozess.&lt;br /&gt;
|-&lt;br /&gt;
|Speicherverwaltung   (memory management)&lt;br /&gt;
|Zuteilen von Speicherbereichen an laufende Prozesse, Schutz der Speicherbereiche vor unbefugten Zugriffen, bei Speicherengpässen: Auslagern von ganzen (swapping) oder von Teilen (paging) von Prozessen auf die Platte (swap file).&lt;br /&gt;
|-&lt;br /&gt;
|Dateiverwaltung  (file handling)&lt;br /&gt;
|Zuteilung von Plattenplatz für Programme, Benutzer und Systemdienste, Schreiben, Lesen und Strukturieren der Daten auf den Massenspeichern; Durch Bereitstellung einer entsprechenden Schnittstelle (VFS, virtual file system) kann der Kern Dateisysteme unterschiedlichster Art (EXT2, FAT, NFS, HPFS, NTFS, ...) ansprechen.&lt;br /&gt;
|-&lt;br /&gt;
|Geräteverwaltung  (resource management)&lt;br /&gt;
|Der Kern ermöglicht und kontrolliert den Zugriff auf die Hardware. Er steuert die Ein- und Ausgabetätigkeiten der Anwender. An den Kern&lt;br /&gt;
gebunden sind die entsprechenden Gerätetreiber (device driver), die damit eine Kommunikation zwischen Kern und Hardware ermöglichen.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
===Multitasking===&lt;br /&gt;
&lt;br /&gt;
Multitasking bedeutet, dass ein Rechner aus Anwendersicht mehrere Aufgaben&lt;br /&gt;
(Tasks) gleichzeitg übernehmen kann. Das Betriebssystem (OS) unterteilt die&lt;br /&gt;
gleichzeitig anstehenden Aufgaben in Einzelarbeitsschritte (Prozesse) und&lt;br /&gt;
managed durch ein Zeitscheibenverfahren (scheduling) die gleichmäßige&lt;br /&gt;
Abarbeitung der Prozesse.&lt;br /&gt;
&lt;br /&gt;
Es wird unterschieden zwischen:&lt;br /&gt;
&lt;br /&gt;
*non-präamptiven (kooperativen=die Ressourcen werden vom aktiven Prozess freigegeben, bei einem Hänger steht das ganze System)&lt;br /&gt;
&lt;br /&gt;
und&lt;br /&gt;
&lt;br /&gt;
*präamptiven (reinem=der Betriebssystemkern steuert Taskwechsel, indem nach einer festgelegten Zeit vom gerade aktiven Prozess zum nächsten weitergeschaltet wird)&lt;br /&gt;
&lt;br /&gt;
===Mehrprozessorbetrieb===&lt;br /&gt;
&lt;br /&gt;
Bei mehreren Prozessoren und Unterstützung durch das OS&lt;br /&gt;
(NT,Linux,Unix,Novell) können mehrere Tasks auf diese verteilt werden und&lt;br /&gt;
gleichzeitig bearbeitet werden. Nachteilig ist, dass dies nicht oder kaum von&lt;br /&gt;
Anwendungsprogrammen unterstützt wird und es zu Kommunikationsproblemen&lt;br /&gt;
zwischen den einzelnen Tasks kommen kann.&lt;br /&gt;
&lt;br /&gt;
===Arten von von Betriebssystemen===&lt;br /&gt;
&lt;br /&gt;
{|Border=1 Cellpadding=2&lt;br /&gt;
|&lt;br /&gt;
|SingleUser  &lt;br /&gt;
|Multiuser&lt;br /&gt;
|-&lt;br /&gt;
|Single Tasking&lt;br /&gt;
|MS - DOS&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|Multi Tasking&lt;br /&gt;
|Windows 3.x&lt;br /&gt;
|UNIX&lt;br /&gt;
|-&lt;br /&gt;
|&lt;br /&gt;
|Windows 95/98&lt;br /&gt;
|Linux&lt;br /&gt;
|-&lt;br /&gt;
|&lt;br /&gt;
|Windows NT4 ohne Erweiterungen&lt;br /&gt;
|VMS&lt;br /&gt;
|-&lt;br /&gt;
|&lt;br /&gt;
|OS/2 &lt;br /&gt;
|Windows NT mit  Erweiterungen&lt;br /&gt;
|-&lt;br /&gt;
|&lt;br /&gt;
|Apple&lt;br /&gt;
|Windows 2000, XP, 2003&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
===SHELL===&lt;br /&gt;
&lt;br /&gt;
Wenn man mit Linux arbeiten will, kann man nicht direkt mit dem Betriebssystem&lt;br /&gt;
kommunizieren. Man braucht dazu ein Hilfsprogramm, welches die&lt;br /&gt;
Kommandoeingaben ordnungsgemäß an das Betriebssystem weiterleitet. Dieses&lt;br /&gt;
Hilfsprogramm hat den Namen Shell.&lt;br /&gt;
&lt;br /&gt;
Die Shell schirmt den Betriebssystemkern von den Anwendungsprogrammen ab.&lt;br /&gt;
Die unterschiedlichen Shells erfüllen alle dieselbe Aufgabe, sie unterscheiden sich&lt;br /&gt;
allerdings in ihrer Syntax.&lt;br /&gt;
&lt;br /&gt;
==Die Installation im Überblick==&lt;br /&gt;
&lt;br /&gt;
Die Installation von Linux geschieht in folgenden Schritten:&lt;br /&gt;
&lt;br /&gt;
# Analyse (Welche Hardware habe ich? ,Hab ich weitere Betriebsysteme?)&lt;br /&gt;
# Booten des Linux-Kernels. (von CD oder Diskette)&lt;br /&gt;
# Laden einer RAM-Disk (das macht das Installationsprogramm automatisch).&lt;br /&gt;
# Partitionieren der Festplatte (fdisk).&lt;br /&gt;
# Einrichten der Swappartition (mkswap), Formatieren der Festplatte (mkfs).&lt;br /&gt;
# Montieren der Dateisysteme (mount), Aktivieren der Swapbereiche (swapon).&lt;br /&gt;
# Kopieren und Auspacken der Daten vom Installationsmedium auf die Festplatte (die eigentliche Installation). (rpm, dpkg oder tar).&lt;br /&gt;
# Geeignete Wahl der Bootmethode unter Berücksichtigung von Punkt 1 (grub, lilo).&lt;br /&gt;
# Konfiguration des Systems (Netz, Modem etc...).&lt;br /&gt;
&lt;br /&gt;
==Erste Schritte==&lt;br /&gt;
===Anmelden===&lt;br /&gt;
Sie können sich nun mit dem Usernamen und dem Passwort, das sie bei der Installation angelegt haben anmelden!&lt;br /&gt;
[[Image:benutzer.jpg]]&lt;br /&gt;
&lt;br /&gt;
[[Image:passwd.jpg]]&lt;br /&gt;
&lt;br /&gt;
===Terminal öffnen===&lt;br /&gt;
&lt;br /&gt;
Ein Terminal öffnen Sie über das Startmenü:&lt;br /&gt;
&lt;br /&gt;
[[Image:Terminalde.jpg]]&lt;br /&gt;
&lt;br /&gt;
Das geöffnete Terminal sieht dann folgendermaßen aus:&lt;br /&gt;
&lt;br /&gt;
[[Image:Terminalde2.jpg]]&lt;br /&gt;
&lt;br /&gt;
===Sudo===&lt;br /&gt;
Rootrechte erlangen sie über den &amp;quot;Sudo&amp;quot;-Befehl&lt;br /&gt;
 &lt;br /&gt;
''Den nächsten Befehl als root ausführen''&lt;br /&gt;
 xinux@zero:~$ sudo cat /etc/shadow&lt;br /&gt;
 [sudo] password for xinux:&lt;br /&gt;
&lt;br /&gt;
''Eine komplette Sitzung als root starten''&lt;br /&gt;
 xinux@zero:~$ sudo -i&lt;br /&gt;
 [sudo] password for xinux:&lt;br /&gt;
 root@zero:~#&lt;br /&gt;
&lt;br /&gt;
===Virtuelle Konsolen===&lt;br /&gt;
&lt;br /&gt;
In die Virtuelle Konsole gelangen sie über &amp;quot;STRG+ALT+(F1-F6)&amp;quot;.&lt;br /&gt;
Sie funktioniert wie ein ganz normales Terminal, und mit &amp;quot;ALT+F7&amp;quot;&lt;br /&gt;
gelangen sie wieder zurück auf die grafische Benutzeroberfläche&lt;br /&gt;
&lt;br /&gt;
===Abmelden===&lt;br /&gt;
&lt;br /&gt;
Abmelden können Sie sich wieder über das Startmenu unter:&lt;br /&gt;
&lt;br /&gt;
[[Image:Logout.jpg]]&lt;br /&gt;
&lt;br /&gt;
Fals sie nur einzelne Sitzungen in einem der Terminals oder &lt;br /&gt;
den Virtuellen Konsolen Abmelden wollen benutzen sie dazu den Befehl: &amp;quot;exit&amp;quot;&lt;br /&gt;
&lt;br /&gt;
===Herunterfahren===&lt;br /&gt;
&lt;br /&gt;
Das Herunterfahren funktioniert auf dem selben Weg.&lt;br /&gt;
&lt;br /&gt;
Entweder sie Benutzen wieder das Startmenü und benutzen diesmal den &amp;quot;Ausschalten ...&amp;quot; Knopf,&lt;br /&gt;
&lt;br /&gt;
Oder sie geben den äquivalenten &amp;quot;shutdown&amp;quot;-Befehl in einem Terminal bzw. der virtuellen Konsole ein.&lt;br /&gt;
&lt;br /&gt;
Allerdings müssen sie dazu als Administrator angemeldet sein s. &amp;quot;Sudo&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Wenn Sie den &amp;quot;shutdown&amp;quot;-Befehl benutzen wollen muss hinter den Befehl&lt;br /&gt;
&lt;br /&gt;
eine Zeitangabe in Minuten oder das wort &amp;quot;now&amp;quot; für sofortiges Ausschalten hinzugefügt werden:&lt;br /&gt;
&lt;br /&gt;
 xinux@zero:~$ sudo -i&lt;br /&gt;
 root@zero:~# shutdown 60&lt;br /&gt;
 &lt;br /&gt;
 Broadcast message from xinux@zero &lt;br /&gt;
         (/dev/pts/3) at 14:29 ...&lt;br /&gt;
 &lt;br /&gt;
 The system is going down for maintenance in 60 minutes!&lt;br /&gt;
&lt;br /&gt;
Sollten sie den Befehl widerrufen wollen dann drücken sie &amp;quot;STRG+C&amp;quot;,&lt;br /&gt;
&lt;br /&gt;
in dem Terminal in dem der shutdown Befehl gestartet wurde,&lt;br /&gt;
&lt;br /&gt;
oder geben sie den &amp;quot;shutdown&amp;quot;-Befehl zusammen mit der Abbruchoption &amp;quot;-c&amp;quot; in einem anderen Terminal ein:&lt;br /&gt;
&lt;br /&gt;
 root@zero:~# shutdown -c&lt;br /&gt;
&lt;br /&gt;
 shutdown: Shutdown cancelled&lt;br /&gt;
 root@zero:~# &lt;br /&gt;
&lt;br /&gt;
Wenn Sie den Rechner Neustarten möchten gibt es dazu die Option &amp;quot;-r&amp;quot; für den &amp;quot;shutdown&amp;quot;-Befehl&lt;br /&gt;
&lt;br /&gt;
oder den &amp;quot;reboot&amp;quot;-Befehl die beide auch als root ausgeführt werden müssen:&lt;br /&gt;
&lt;br /&gt;
 xinux@zero:~$ sudo -i&lt;br /&gt;
 [sudo] password for xinux: &lt;br /&gt;
 root@zero:~# shutdown -r now&lt;br /&gt;
&lt;br /&gt;
 root@zero:~# reboot&lt;br /&gt;
&lt;br /&gt;
===&amp;quot;man&amp;quot;===&lt;br /&gt;
&lt;br /&gt;
Programm zum Einsehen der Online-Manuals&lt;br /&gt;
&lt;br /&gt;
Die Manuals sind in folgende Sektionen unterteilt:&lt;br /&gt;
# Ausführbare Programme oder Shellbefehle&lt;br /&gt;
# Systemaufrufe (Kernelfunktionen)&lt;br /&gt;
# Bibliotheksaufrufe (Funktionen in System-Bibliotheken)&lt;br /&gt;
# Spezielle Dateien (gewöhnlich in /dev)&lt;br /&gt;
# Dateiformate und Konventionen, z. B. /etc/passwd&lt;br /&gt;
# Spiele&lt;br /&gt;
# Makropakete und Konventionen, z. B. man(7), groff(7)&lt;br /&gt;
# Systemadministrationsbefehle (in der Regel nur für root)&lt;br /&gt;
# Kernelroutinen [Nicht Standard]&lt;br /&gt;
&lt;br /&gt;
Aufruf eines Manuals erfolgt durch ''man kommando''&lt;br /&gt;
Beendet wird durch Drücken des Buchstabens q&lt;br /&gt;
Gesucht wird vorwärts durch Eingabe eines /suchausdruck&lt;br /&gt;
Gesucht wird rückwärts durch Eingabe eines ?suchausdruck&lt;br /&gt;
&lt;br /&gt;
Beispiele:&lt;br /&gt;
&lt;br /&gt;
      man passwd        Anschauen der Manualseite zum Programm passwd&lt;br /&gt;
      man 5 passwd      Anschauen der Manualseite zur Datei /etc/passwd&lt;br /&gt;
      man -a passwd     Anschauen aller Manualseiten zu passwd&lt;br /&gt;
      man -k passwd     Durchsucht die Kurzbeschreibungen der Manualseite&lt;br /&gt;
                        nach passwd und gibt alle Treffer aus&lt;br /&gt;
      man -f passwd      Gibt alle gefunden Kurzbescheibungen zu passwd aus&lt;br /&gt;
      man -L en passwd Gibt englische Manualseiten aus&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Was geht vor auf meinem System? (date,who)===&lt;br /&gt;
&lt;br /&gt;
Das Kommando date dient zur Abfrage von Datum und Uhrzeit.&lt;br /&gt;
&lt;br /&gt;
 xinux@zero:~ &amp;gt; date&lt;br /&gt;
 Fre Mär 16 16:35:03 CET 2001&lt;br /&gt;
&lt;br /&gt;
oder auch Anzeige der Grennwich Zeit:&lt;br /&gt;
&lt;br /&gt;
 xinux@zero:~ &amp;gt; date -u&lt;br /&gt;
 Fre Mär 16 15:35:34 UTC 2001&lt;br /&gt;
&lt;br /&gt;
 xinux@zero:~ &amp;gt; date -u &amp;quot;+%X&amp;quot;&lt;br /&gt;
 15:37:19&lt;br /&gt;
&lt;br /&gt;
 xinux@zero:~ &amp;gt; date -u &amp;quot;+%x&amp;quot;&lt;br /&gt;
 01/15/02&lt;br /&gt;
&lt;br /&gt;
who zeigt alle angemeldeten Benutzer an&lt;br /&gt;
&lt;br /&gt;
 thomas@cardassia:~ &amp;gt; who&lt;br /&gt;
 thomas             tty1 Feb 27 16:39&lt;br /&gt;
 thomas             tty2 Mar 2 17:08&lt;br /&gt;
 tina               tty6 Mar 16 16:38&lt;br /&gt;
&lt;br /&gt;
Mit `who --help' bekommen Sie mehr Informationen.&lt;br /&gt;
&lt;br /&gt;
 thomas@cardassia:~ &amp;gt; who --help&lt;br /&gt;
&lt;br /&gt;
Benutzung: who [OPTION]... [ DATEI | ARG1 ARG2 ]&lt;br /&gt;
&lt;br /&gt;
 -H, --heading             print line of column headings&lt;br /&gt;
 -i, -u, --idle            add user idle time as HOURS:MINUTES, . or old&lt;br /&gt;
 -l, --lookup              attempt to canonicalize hostnames via DNS&lt;br /&gt;
 -m                        only hostname and user associated with stdin&lt;br /&gt;
 -q, --count               all login names and number of users logged on&lt;br /&gt;
 -s                        (ignored)&lt;br /&gt;
 -T, -w, --mesg            add user's message status as +, - or ?&lt;br /&gt;
     --message             same as -T&lt;br /&gt;
     --writable            same as -T&lt;br /&gt;
     --help                display this help and exit&lt;br /&gt;
     --version             output version information and exit&lt;br /&gt;
&lt;br /&gt;
==Das UNIX-Dateisystem==&lt;br /&gt;
===Verzeichnisbaum===&lt;br /&gt;
&lt;br /&gt;
[[Image:vztree.jpg]]&lt;br /&gt;
&lt;br /&gt;
Das Betriebssystem UNIX besitzt ein hierarchisches Dateisystem. Es besteht aus:&lt;br /&gt;
* Dateien (Files)&lt;br /&gt;
Dateien speichern Informationen (Text, Bilder, Sound, Videos, Programme) und&lt;br /&gt;
werden über den Dateinamen angesprochen.&lt;br /&gt;
&lt;br /&gt;
* Verzeichnissen (Directories, Kataloge)&lt;br /&gt;
Verzeichnisse besitzen ebenfalls einen Namen und dienen zur Ordnung des&lt;br /&gt;
Dateisystems. Ein Verzeichnis kann Dateien und Unterverzeichnisse&lt;br /&gt;
(Subdirectories) enthalten. Das oberste Verzeichnis im Dateisystem heisst&lt;br /&gt;
Rootverzeichnis oder kurz Root und wird durch / (sprich: slash)&lt;br /&gt;
gekennzeichnet.&lt;br /&gt;
&lt;br /&gt;
Im Gegensatz zu Windows kennt UNIX keine Laufwerke.&lt;br /&gt;
Das obige Bild zeigt ein typisches UNIX-Dateisystem.&lt;br /&gt;
Unterhalb des Rootverzeichnisses befinden sich eine Vielzahl vonVerzeichnissen.&lt;br /&gt;
&lt;br /&gt;
===Wichtige Verzeichnisse===&lt;br /&gt;
&lt;br /&gt;
• '''Homeverzeichnis'''&lt;br /&gt;
&lt;br /&gt;
das Verzeichnis, in dem man sich unmittelbar nach dem Anmelden befindet. Das&lt;br /&gt;
Homeverzeichnis wird vom Systemverwalter eingerichtet; jeder Anwender&lt;br /&gt;
besitzt ein festes Homeverzeichnis. z.B. /home/hans&lt;br /&gt;
&lt;br /&gt;
~ (Tilde) bzw. $HOME (Shellvariable) kennzeichnen das Homeverzeichnis.&lt;br /&gt;
&lt;br /&gt;
• '''Aktuelles Verzeichnis'''&lt;br /&gt;
&lt;br /&gt;
Verzeichnis, in dem man sich aktuell befindet.&lt;br /&gt;
Das aktuelle Verzeichnis wird mit dem Befehl cd (change directory) oder per&lt;br /&gt;
Mausklick verändert.&lt;br /&gt;
Ein einfacher Punkt . kennzeichnet das aktuelle Verzeichnis.&lt;br /&gt;
&lt;br /&gt;
• '''Elternverzeichnis'''&lt;br /&gt;
&lt;br /&gt;
Verzeichnis unmittelbar oberhalb des aktuellen Verzeichnisses.&lt;br /&gt;
Jedes Verzeichnis ausser / besitzt genau ein Elternverzeichnis.&lt;br /&gt;
Zwei Punkte .. kennzeichnen das Elternverzeichnis (abhängig vom aktuellen&lt;br /&gt;
VZ).&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Absoluter Pfadname:===&lt;br /&gt;
&lt;br /&gt;
Beschreibt ausgehend vom Rootverzeichnis den Weg zum Zielverzeichnis oder zur&lt;br /&gt;
Zieldatei. (Welche Verzeichnisse müssen ausgehend von / durchlaufen werden, um&lt;br /&gt;
zum Ziel zu kommen?) Ein absoluter Pfadname beginnt immer mit / .&lt;br /&gt;
&lt;br /&gt;
===Relativer Pfadname:===&lt;br /&gt;
&lt;br /&gt;
Beschreibt ausgehend vom aktuellen Verzeichnis den Weg zum Zielverzeichnis&lt;br /&gt;
oder zur Zieldatei; ein relativer Pfadname beginnt nicht mit / .&lt;br /&gt;
/home/suxer&lt;br /&gt;
absoluter Pfadname für das Verzeichnis sub1 im Homeverzeichnis von suxer&lt;br /&gt;
&lt;br /&gt;
===Verzeichnisstruktur===&lt;br /&gt;
&lt;br /&gt;
 /bin         Kommandos die beim starten benötigt werden (Zugriff hat jeder)&lt;br /&gt;
 /sbin        Wichtige System-Programme (In der Regel root vorberhalten)&lt;br /&gt;
 /boot        Hier findet man die Dateien des Bootmanagers und des Kernel.&lt;br /&gt;
 /dev         In diesem Verzeichnis stehen die Gerätedateien (Devices),&lt;br /&gt;
 /home        Alle Heimatverzeichnisse der Nutzer findet man hier.&lt;br /&gt;
 /lib         Beim Systemstart benötigten Bibliotheken und Modules stehen hier.&lt;br /&gt;
 /mnt         Mountpunkt für temporäre Partitionen&lt;br /&gt;
 /opt         Software, die nicht Installationsumfang von Linux gehören.&lt;br /&gt;
 /root        Heimatverzeichnis des Administrators.&lt;br /&gt;
 /tmp         Temporäre Dateien können hier abgelegt werden&lt;br /&gt;
 /usr         statische Dateien (kann read-only gemountet sein)&lt;br /&gt;
 /var         variable Dateien (muss beschreibar sein )&lt;br /&gt;
 /etc         Konfiguartionsdateien und Startscripte&lt;br /&gt;
 /proc        Virtuelles Dateisystem -&amp;gt; repräsentiert den Kernel&lt;br /&gt;
&lt;br /&gt;
===Unterverzeichnisse von /usr===&lt;br /&gt;
&lt;br /&gt;
 sbin         Programme für root die beim Start nicht benötigt werden&lt;br /&gt;
 bin          Programme für alle die beim Start nicht benötigt werden&lt;br /&gt;
 X11R6        Dateien des X-Window-Sytems&lt;br /&gt;
 bin          Ausführbare Programme&lt;br /&gt;
 doc          Dokumentationen&lt;br /&gt;
 etc          Konfigurationsdateien&lt;br /&gt;
 games        Spiele&lt;br /&gt;
 include      Headerdateien für C-Programme&lt;br /&gt;
 local        Pakete die nicht zur Distribution gehören ähnlich /opt&lt;br /&gt;
 share        Pakete die von mehreren Paketen genutzt werden&lt;br /&gt;
 share/man    Die Manualpages&lt;br /&gt;
 share/info   Seiten des Infosystems&lt;br /&gt;
 share/doc    Dokumentationen&lt;br /&gt;
 src          Sources von Programmen (Kernel und andere)&lt;br /&gt;
&lt;br /&gt;
===Unterverzeichnisse von /var===&lt;br /&gt;
&lt;br /&gt;
 cache        Zwischenspreicher für Progammes&lt;br /&gt;
 games        Variable Daten der Games (Scores etc...)&lt;br /&gt;
 lock         Sperrdateien&lt;br /&gt;
 log          Die Logdateien (wichtiges Verzeichnis für Admins)&lt;br /&gt;
 mail         Das Mailsystem&lt;br /&gt;
 run          Dateien zu laufemdem Prozessen&lt;br /&gt;
 spool        Spooldateien (z.B. für das Drucksystem&lt;br /&gt;
 state        Statusinfos&lt;br /&gt;
 tmp          Wie /tmp eventuell nicht auf root Partion&lt;br /&gt;
&lt;br /&gt;
==Einfache Komandos==&lt;br /&gt;
===cd: Wechseln des Arbeitsverzeichnis===&lt;br /&gt;
&lt;br /&gt;
Um festzustellen in welchem Verzeichnis man sich befindet, sollte man den&lt;br /&gt;
Befehl &amp;quot;pwd&amp;quot; benutzen,&lt;br /&gt;
&lt;br /&gt;
und mit dem Befehl &amp;quot;cd&amp;quot; kann man zwischen den Verzeichnissen wechseln:&lt;br /&gt;
&lt;br /&gt;
Wechsele ins homeverzeichnis von Xinux&lt;br /&gt;
&lt;br /&gt;
 xinux@zero:~$ cd /home/xinux/&lt;br /&gt;
 xinux@zero:~$ pwd&lt;br /&gt;
 /home/xinux&lt;br /&gt;
&lt;br /&gt;
cd ~ -&amp;gt; wechsele ins jeweilige Homeverzeichnis&lt;br /&gt;
&lt;br /&gt;
cd .. -&amp;gt; wechsele ein Verzeichnis höher&lt;br /&gt;
&lt;br /&gt;
cd ../verzeichnis -&amp;gt; wechsele in eine paralleles Verzeichnis &amp;lt;- (ist eine relative Pfadangabe !)&lt;br /&gt;
&lt;br /&gt;
cd - -&amp;gt; wechsele in das Verzeichnis, in dem vorher gearbeitet wurde.&lt;br /&gt;
&lt;br /&gt;
Mit cd / wechselt man in das Wurzelverzeichnis.&lt;br /&gt;
&lt;br /&gt;
 xinux@zero:/var/log$ cd /&lt;br /&gt;
 xinux@zero:/$ pwd&lt;br /&gt;
 /&lt;br /&gt;
&lt;br /&gt;
===ls: Listing===&lt;br /&gt;
&lt;br /&gt;
Den Inhalt von Verzeichnissen kann man sich mit dem Befehl &amp;quot;ls&amp;quot; anzeigen lassen&lt;br /&gt;
wobei &amp;quot;ls&amp;quot; eine Vielzahl von Optionen besitzt:&lt;br /&gt;
&lt;br /&gt;
 ls                                  standard&lt;br /&gt;
 ls -l                               langes listing&lt;br /&gt;
 ls -a                               alle Dateien&lt;br /&gt;
 ls -i                               mit Inode&lt;br /&gt;
 ls -h                               gut lesbare Dateigröße&lt;br /&gt;
 ls -d                               Verzechnis wird angezeigt, nicht der Inhalt&lt;br /&gt;
 ls -L                               sortiert nach Größe&lt;br /&gt;
 ls -t                               sortiert nach Datum&lt;br /&gt;
 ls -F                               mit nützlichem Anhang&lt;br /&gt;
&lt;br /&gt;
 xinux@zero:/$ ls -l /var/log/messages&lt;br /&gt;
 -rw-r----- 1 syslog adm 2296 2009-06-16 10:05 /var/log/messages&lt;br /&gt;
&lt;br /&gt;
===more: Seitenweises Anzeigen von Seiten===&lt;br /&gt;
 root@zero:~# more /var/log/messages&lt;br /&gt;
 ...&lt;br /&gt;
&lt;br /&gt;
===head: erste Zeilen anzeigen===&lt;br /&gt;
Erste 10 Zeilen anzeigen&lt;br /&gt;
 root@zero:~# head /var/log/messages&lt;br /&gt;
 Jun 15 12:37:08 zero syslogd 1.5.0#5ubuntu3: restart.&lt;br /&gt;
 Jun 15 12:38:43 zero kernel: [  830.065036] mtrr: your processor doesn't support write-combining&lt;br /&gt;
 Jun 15 12:46:05 zero pulseaudio[4817]: pid.c: Stale PID file, overwriting.&lt;br /&gt;
 Jun 15 13:05:24 zero -- MARK --&lt;br /&gt;
 ...&lt;br /&gt;
&lt;br /&gt;
Erste zwei Zeilen anzeigen&lt;br /&gt;
 root@zero:~# head -n 2 /var/log/messages&lt;br /&gt;
 Jun 15 12:37:08 zero syslogd 1.5.0#5ubuntu3: restart.&lt;br /&gt;
 Jun 15 12:38:43 zero kernel: [  830.065036] mtrr: your processor doesn't support write-combining&lt;br /&gt;
&lt;br /&gt;
===tail: letzte Zeilen anzeigen===&lt;br /&gt;
 &lt;br /&gt;
 root@zero:~# tail /var/log/syslog&lt;br /&gt;
 ...&lt;br /&gt;
 Jun 19 11:19:35 zero -- MARK --&lt;br /&gt;
 Jun 19 11:39:35 zero -- MARK --&lt;br /&gt;
 Jun 19 11:59:36 zero -- MARK --&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Letze 5 Zeilen anzeigen&lt;br /&gt;
 root@zero:~# tail -n 5 /var/log/auth.log&lt;br /&gt;
 Jun 18 14:30:01 zero CRON[12040]: pam_unix(cron:session): session closed for user root&lt;br /&gt;
 Jun 18 14:39:01 zero CRON[12191]: pam_unix(cron:session): session opened for user root by (uid=0)&lt;br /&gt;
 Jun 18 14:39:01 zero CRON[12191]: pam_unix(cron:session): session closed for user root&lt;br /&gt;
 Jun 18 14:40:01 zero CRON[12237]: pam_unix(cron:session): session opened for user root by (uid=0)&lt;br /&gt;
 Jun 18 14:40:01 zero CRON[12237]: pam_unix(cron:session): session closed for user root&lt;br /&gt;
&lt;br /&gt;
Letze Zeilen anzeigen und fortlaufend aktualisieren&lt;br /&gt;
 root@zero:~# tail -f /var/log/syslog&lt;br /&gt;
 ...&lt;br /&gt;
&lt;br /&gt;
===mkdir: Ein neues Verzeichnis erstellen===&lt;br /&gt;
&lt;br /&gt;
 mkdir        verzeichnis&lt;br /&gt;
Erstellt ein Verzeichnis im working directory (wd)&lt;br /&gt;
&lt;br /&gt;
 mkdir  -p    ver1/ver2&lt;br /&gt;
Erstellt ein Verzeichnis ver2 unterhalb von ver1&lt;br /&gt;
wenn ver1 nicht existiert wird es erstellt&lt;br /&gt;
&lt;br /&gt;
 mkdir -m 753 ver1&lt;br /&gt;
Es wird das Verzeichnis ver1 erstellt mit der mask 753&lt;br /&gt;
&lt;br /&gt;
 mkdir -v     ver1&lt;br /&gt;
Geschwätzige Ausgabe :)&lt;br /&gt;
&lt;br /&gt;
===Zum Löschen von leeren Verzeichnissen wird rmdir benutzt===&lt;br /&gt;
&lt;br /&gt;
 rmdir           ver1&lt;br /&gt;
Löscht das leere Verzeichnis ver1&lt;br /&gt;
&lt;br /&gt;
 rmdir -v        ver1&lt;br /&gt;
Löscht das leere Verzeichnis ver1 und ist geschwätzig&lt;br /&gt;
&lt;br /&gt;
 rmdir -p        /ver1/ver2/ver3&lt;br /&gt;
Löscht das Verzeichnis ver3; wenn dadurch ver2 ein leeres&lt;br /&gt;
Verzeichnis wird, wird dieses auch gelöscht , wenn ver1&lt;br /&gt;
dadurch ein leeres Verzeichnis wird, wird auch dieses gelöscht.&lt;br /&gt;
&lt;br /&gt;
===touch Verändern des Zeitstempels===&lt;br /&gt;
&lt;br /&gt;
Mit touch können wir eine neue leere Datei erzeugen (das ist nicht der eigentliche&lt;br /&gt;
Zweck von touch, eigentlich wird der Zeitstempel geändert)&lt;br /&gt;
&lt;br /&gt;
 touch            dateiname&lt;br /&gt;
&lt;br /&gt;
===Kopieren=== &lt;br /&gt;
cp ist das Kommando um Dateien zu kopieren &lt;br /&gt;
&lt;br /&gt;
Eine Kopie von dat1 mit dem Namen dat2 erstellen:&lt;br /&gt;
&lt;br /&gt;
 xinux@zero:~$ cp dat1 dat2&lt;br /&gt;
&lt;br /&gt;
Eine Kopie von dat1 ins Verzeichnis ver2 erstellen:&lt;br /&gt;
&lt;br /&gt;
 xinux@zero:~$ cp dat1 ver2/&lt;br /&gt;
 &lt;br /&gt;
Eine Kopie erstellen mit ausführlicher Anzeige:&lt;br /&gt;
&lt;br /&gt;
 xinux@zero:~$ cp -v dat1 dat2&lt;br /&gt;
 `dat1' -&amp;gt; `dat2'&lt;br /&gt;
&lt;br /&gt;
Eine Kopie erstellen mit Rückfrage fals etwas überschrieben wird:&lt;br /&gt;
&lt;br /&gt;
 xinux@zero:~$ cp -i dat1 dat2&lt;br /&gt;
 cp: overwrite `dat2'?&lt;br /&gt;
&lt;br /&gt;
Eine Kopie erstellen und die Rückfrage überbrücken:&lt;br /&gt;
&lt;br /&gt;
 xinux@zero:~$ cp -f dat1 dat2&lt;br /&gt;
&lt;br /&gt;
Eine Kopie von dat1 ins Verzeichnis ver2 erstellen fals keine neuere Version von dat1 vorliegt:&lt;br /&gt;
&lt;br /&gt;
 xinux@zero:~$ cp -u dat1 ver2/&lt;br /&gt;
&lt;br /&gt;
Eine Kopie erstellen fals ver2 auf dem selben Dateisystem wie dat1 liegt:&lt;br /&gt;
&lt;br /&gt;
 xinux@zero:~$ cp -x dat1 ver2/&lt;br /&gt;
&lt;br /&gt;
Eine Kopie von ver1, die als ver2 oder unter ver2 als ver1 gespeichert wird erstellen:&lt;br /&gt;
&lt;br /&gt;
 xinux@zero:~$ cp -r ver1/ ver2/&lt;br /&gt;
&lt;br /&gt;
Eine Kopie von einer Datei erstellen und ihre Attribute beibehalten:&lt;br /&gt;
&lt;br /&gt;
 xinux@zero:~$ cp -p sux1 sux2&lt;br /&gt;
&lt;br /&gt;
Eine Kopie erstellen bei der die Links erhalten bleiben:&lt;br /&gt;
&lt;br /&gt;
 xinux@zero:~$ cp -r ver1/ ver2/&lt;br /&gt;
&lt;br /&gt;
Eine Kopie erstellen zum Archivieren (-dpr):&lt;br /&gt;
&lt;br /&gt;
 xinux@zero:~$ cp -a ver1/ ver2/&lt;br /&gt;
&lt;br /&gt;
===rm: Löschen einer Datei===&lt;br /&gt;
&lt;br /&gt;
Um Dateien zu löschen, brauchen wir das Kommando &amp;quot;rm&amp;quot;:&lt;br /&gt;
&lt;br /&gt;
 rm               dat1        dat1 wird gelöscht&lt;br /&gt;
 rm         -i    dat1        dat1 wird nach Bestätigung gelöscht&lt;br /&gt;
 rm         -f    dat1        dat1 wird ohne Rückfragen gelöscht&lt;br /&gt;
 rm         -v    dat1        dat1 wird glöscht (geschwätzige Ausgabe)&lt;br /&gt;
 rm         -r    ver1        Löschen von nicht leeren Verzeichnissen&lt;br /&gt;
                              Achtung !!! Als root kann man sich damit Teile&lt;br /&gt;
                              oder sogar den gesamten Verzeichnisbaum&lt;br /&gt;
                              absägen !!!&lt;br /&gt;
&lt;br /&gt;
===mv: Verschieben===&lt;br /&gt;
&lt;br /&gt;
Mit dem Befehl &amp;quot;mv&amp;quot; werden Daten verschoben, folgendes gilt:&lt;br /&gt;
&lt;br /&gt;
 mv          dat1 dat2         &lt;br /&gt;
Die Datei dat1 wird in dat2 umbenannt&lt;br /&gt;
 mv          dat1 /ver1        &lt;br /&gt;
Die Datei dat1 wird nach /ver1 verschoben&lt;br /&gt;
&lt;br /&gt;
Die Parameter und ihre Bedeutung:&lt;br /&gt;
&lt;br /&gt;
      -i                      wenn eine Datei exisitiert wird vor dem&lt;br /&gt;
                              Überschreiben nachgefragt&lt;br /&gt;
      -v                      verbose (geschwätzig)&lt;br /&gt;
      -u                      nur neuere Daten werden bei Bedarf überschrieben&lt;br /&gt;
      -b                      wenn überschrieben werden soll, wird ein Backup&lt;br /&gt;
                              erstellt&lt;br /&gt;
      -S ENDUNG               das Backup bekommt die Endung ENDUNG&lt;br /&gt;
&lt;br /&gt;
===su Benutzer wechseln===&lt;br /&gt;
&lt;br /&gt;
 su -             &lt;br /&gt;
Wechsel zum Rootaccount, wie wenn dieser sich neu anmelden würde. (Bsp: su -)&lt;br /&gt;
&lt;br /&gt;
 su Benutzernamen &lt;br /&gt;
Wechsel der Identität zu Benutzer (gegebenenfalls Passwortabfrage)&lt;br /&gt;
&lt;br /&gt;
 su -c Kommando   &lt;br /&gt;
Kommando wird als rootaccount ausgeführt&lt;br /&gt;
&lt;br /&gt;
==Der Standard Editor vi==&lt;br /&gt;
Der vi ist der Standardeditor in der Unixwelt. Er ist in jedem Unix-Derivat&lt;br /&gt;
enthalten.&lt;br /&gt;
Der Editor hat zwar den schlechten Ruf umständlich zu bedienen zu sein, ist&lt;br /&gt;
jedoch sehr leistungsfähig und systemübergreifend verfügbar. Beim vi handelt es&lt;br /&gt;
sich um einen rein textorientierten Editor, der mittels eigener Kommandos&lt;br /&gt;
gesteuert wird.&lt;br /&gt;
&lt;br /&gt;
Der Editor VIM ist eine weitere Verbesserung von VI und leichter zu bedienen.&lt;br /&gt;
Und unter Ubuntu/Debian mit &amp;quot;apt-get install vim&amp;quot; zu installieren.&lt;br /&gt;
&lt;br /&gt;
===Starten des Editors:===&lt;br /&gt;
&lt;br /&gt;
Der Editorstart erfolgt einfach durch die Eingabe des Kommandos vi mit dem&lt;br /&gt;
Dateinamen der zu editierenden Datei als Parameter.&lt;br /&gt;
Beispiel:        &lt;br /&gt;
 vi sux.txt&lt;br /&gt;
&lt;br /&gt;
===Die Betriebsmodi des vi:===&lt;br /&gt;
&lt;br /&gt;
Ein Umstand, der dem vi den Ruf der komplizierten Bedienbarkeit zugetragen hat,&lt;br /&gt;
sind die unterschiedlichen Betriebsmodi des Editors. Genauer gesagt verfügt der&lt;br /&gt;
vi über drei Betriebsmodi:&lt;br /&gt;
&lt;br /&gt;
====Kommandomodus:====&lt;br /&gt;
&lt;br /&gt;
Innerhalb dieses Modus werden die eingegebenen Zeichen direkt als Befehle des&lt;br /&gt;
Editors interpretiert und ausgeführt. Dabei gibt es weder ein Bereitschaftszeichen&lt;br /&gt;
(Prompt) noch ein Echo (Ausgabe). Der Kommandomodus ist der Modus, in dem&lt;br /&gt;
sich der vi direkt nach seinem Start befindet.&lt;br /&gt;
&lt;br /&gt;
====Zeilenmodus oder Exmodus:====&lt;br /&gt;
&lt;br /&gt;
Dieser Modus ist der einzige Modus mit einem eigenen Bereitschaftszeichen,&lt;br /&gt;
nämlich dem Doppelpunkt (:). Das Prompt wird ebenso wie die Befehlsausgaben&lt;br /&gt;
in der Statuszeile angezeigt.&lt;br /&gt;
&lt;br /&gt;
====Eingabemodus:====&lt;br /&gt;
&lt;br /&gt;
Der Eingabemodus ist derjenige, in welchem der zu bearbeitende Text bearbeitet&lt;br /&gt;
werden kann. Alle hier eingegebenen Zeichen werden als Text für die aktuelle&lt;br /&gt;
Datei interpretiert. Zwischen den unterschiedlichen Modi kann jederzeit&lt;br /&gt;
gewechselt werden. Von Kommandomodus gelangen Sie durch mehere Wege in&lt;br /&gt;
den Eingabemodus. Man kann durch folgende Aktionen wechslen&lt;br /&gt;
&lt;br /&gt;
{| border=1 cellpadding=2&lt;br /&gt;
|i&lt;br /&gt;
|Text vor der aktuellen Cursorposition einfügen&lt;br /&gt;
|-&lt;br /&gt;
|I&lt;br /&gt;
|Text am Zeilenanfang einfügen&lt;br /&gt;
|-&lt;br /&gt;
|a&lt;br /&gt;
|Text hinter der aktuellen Cursorposition einfügen&lt;br /&gt;
|-&lt;br /&gt;
|A&lt;br /&gt;
|Text am Zeilenende einfügen&lt;br /&gt;
|-&lt;br /&gt;
|o&lt;br /&gt;
|Unterhalb der aktuellen Zeile eine neue Zeile einfügen&lt;br /&gt;
|-&lt;br /&gt;
|O&lt;br /&gt;
|Oberhalb der aktuellen Zeile eine neue Zeile einfügen&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Durch das Drücken der ESC - Taste gelangt man in den Kommandomodus zurück.&lt;br /&gt;
&lt;br /&gt;
Im Kommandomodus können Sie durch den Text navigieren und auch den Text&lt;br /&gt;
selbst bearbeiten, z.B ausschneiden, kopieren usw. Dazu sind einige Kommandos&lt;br /&gt;
nötig, von denen die wichtigsten im Folgenden erläutert werden:&lt;br /&gt;
&lt;br /&gt;
 xinux@zero:/$ vi iwas.txt&lt;br /&gt;
&lt;br /&gt;
[[Image:vim.jpg]]&lt;br /&gt;
&lt;br /&gt;
===Benutzen des Kommandomodus===&lt;br /&gt;
====Steuerung des Cursors durch den Text====&lt;br /&gt;
&lt;br /&gt;
Mittels folgender Kommandos bewegt sich der Cursor durch den Text:&lt;br /&gt;
&lt;br /&gt;
{| border=1 cellpadding=2&lt;br /&gt;
|h&lt;br /&gt;
|Cursor ein Zeichen nach links&lt;br /&gt;
|-&lt;br /&gt;
|l&lt;br /&gt;
|Cursor ein Zeichen nach rechts&lt;br /&gt;
|-&lt;br /&gt;
|k&lt;br /&gt;
|Cursor eine Zeile nach oben&lt;br /&gt;
|-&lt;br /&gt;
|j&lt;br /&gt;
|Cursor eine Zeile nach unten&lt;br /&gt;
|-&lt;br /&gt;
|w&lt;br /&gt;
|Cursor ein Wort nach rechts&lt;br /&gt;
|-&lt;br /&gt;
|b&lt;br /&gt;
|Cursor ein Wort nach links&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Alle diese Kommandos können mit einem vorgestellten Wiederholungsfaktor&lt;br /&gt;
arbeiten. Der Befehl 3w verschiebt demnach den Cursor um 3 Wörter nach rechts.&lt;br /&gt;
&lt;br /&gt;
====Angaben zur Positionierung====&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{| border=1 cellpadding=2&lt;br /&gt;
|STRG+U&lt;br /&gt;
|1⁄2 Bildschirmseite nach oben&lt;br /&gt;
|-&lt;br /&gt;
|STRG+D&lt;br /&gt;
|1⁄2 Bildschirmseite nach unten&lt;br /&gt;
|-&lt;br /&gt;
|STRG+B&lt;br /&gt;
|1 Bildschirmseite nach oben&lt;br /&gt;
|-&lt;br /&gt;
|STRG+F&lt;br /&gt;
|1 Bildschirmseite nach unten&lt;br /&gt;
|-&lt;br /&gt;
|/Ausdruck&lt;br /&gt;
|Sucht den Ausdruck (vorwärts) Weitersuchen mit n , N&lt;br /&gt;
|-&lt;br /&gt;
|?Ausdruck&lt;br /&gt;
|Sucht den Ausdurck (rückwärts) Weitersuchen mit n , N&lt;br /&gt;
|-&lt;br /&gt;
|0&lt;br /&gt;
|Zeilenanfang&lt;br /&gt;
|-&lt;br /&gt;
|$&lt;br /&gt;
|Zeilenende&lt;br /&gt;
|-&lt;br /&gt;
|w&lt;br /&gt;
|Nächstes Wort&lt;br /&gt;
|-&lt;br /&gt;
|b&lt;br /&gt;
|Vorheriges Wort&lt;br /&gt;
|-&lt;br /&gt;
|fc&lt;br /&gt;
|Auf das Zeichen c springen. c steht für ein beliebiges Zeichen&lt;br /&gt;
|-&lt;br /&gt;
|G&lt;br /&gt;
|Letzte Zeile der Datei&lt;br /&gt;
|-&lt;br /&gt;
|ng&lt;br /&gt;
|n-te Zeile der Datei&lt;br /&gt;
|-&lt;br /&gt;
|H&lt;br /&gt;
|Anfang der Bildschirmseite&lt;br /&gt;
|-&lt;br /&gt;
|L&lt;br /&gt;
|Ende der Bildschirmseite&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
====Befehle zur Textbearbeitung -&amp;gt; Was soll geschehen====&lt;br /&gt;
&lt;br /&gt;
{| Border=1 Cellpadding=2&lt;br /&gt;
|x&lt;br /&gt;
|Löscht Zeichen&lt;br /&gt;
|-&lt;br /&gt;
|d&lt;br /&gt;
|Löschen und in den Puffer laden&lt;br /&gt;
|-&lt;br /&gt;
|c&lt;br /&gt;
|Ändern&lt;br /&gt;
|-&lt;br /&gt;
|y&lt;br /&gt;
|In den Puffer laden&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
====Weitere wichtige Befehle:====&lt;br /&gt;
&lt;br /&gt;
{| Border=1 Cellpadding=2&lt;br /&gt;
|p&lt;br /&gt;
|Aus dem Puffer einfügen&lt;br /&gt;
|-&lt;br /&gt;
|u&lt;br /&gt;
|Undo, macht den letzten Befehl rückgängig&lt;br /&gt;
|-&lt;br /&gt;
|STRG+R&lt;br /&gt;
|Redo, macht den letzten Undo rückgängig&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
===Zeilen- oder Exmodus===&lt;br /&gt;
&lt;br /&gt;
Wie schon erwähnt wird der Zeilen oder Exmodus durch einen : eingeleitet.&lt;br /&gt;
Es folgen einige Beispiele.&lt;br /&gt;
&lt;br /&gt;
Befehle zum Speichern und Beenden:&lt;br /&gt;
&lt;br /&gt;
 :w          Schreibt Datei&lt;br /&gt;
 :w Datei2   Schreibt eine Kopie in Datei2&lt;br /&gt;
 :w !        Schreibt Datei (übergehe Schreibschutz)&lt;br /&gt;
 :w ! Datei2 Schreibt eine Kopie in Datei2 (übergehe Schreibschutz)&lt;br /&gt;
 :q          Schließe Datei&lt;br /&gt;
 :q!         Schließe Datei (verwerfe Änderungen)&lt;br /&gt;
 :wq         Schreibe Datei und beende Editor&lt;br /&gt;
 :wq!        Schreibe Datei und beende Editor (übergehe Schreibschutz)&lt;br /&gt;
 :q!         Schließe Datei (verwerfe Änderungen)&lt;br /&gt;
 :h          Hilfe anzeigen, durch drücken von :q Beenden der Hilfe&lt;br /&gt;
 :e Datei3   Editiere Datei3&lt;br /&gt;
 :e #        Editere vorhergehende Datei&lt;br /&gt;
 :1,3co9     Kopiere von der ersten bis zu dritten Zeile &lt;br /&gt;
             und füge den Inhalt unterhalb der neunte Zeile ein.&lt;br /&gt;
&lt;br /&gt;
Interaktionen mit Unix:&lt;br /&gt;
&lt;br /&gt;
 :r Datei4   Fügt Inhalt der Datei4 nach dem Cursor ein&lt;br /&gt;
 :r ! Befehl Fügt Ausgabe des Befehls nach dem Cursor ein&lt;br /&gt;
 :! Befehl   Führt den Befehl aus&lt;br /&gt;
 :sh         Starte Subshell -&amp;gt; mit exit kehrt man wieder zurück&lt;br /&gt;
             Eingabemodus zurück&lt;br /&gt;
&lt;br /&gt;
====Ersetzen von Textteilen====&lt;br /&gt;
&lt;br /&gt;
Die grundsätzliche Syntax lautet:&lt;br /&gt;
&lt;br /&gt;
 :[Zeilennummer,Zeilennummer]s/Muster/Ersetzung/[gc]&lt;br /&gt;
&lt;br /&gt;
 :s/worf/kirn/              der erste worf wird in der aktuellen Zeile durch kirn ersetzt&lt;br /&gt;
 :1,9s/worf/kirn/g          von der 1. bis zur 9. Zeile werden alle worf durch kirn ersetzt&lt;br /&gt;
 :1,$s/worf/kirn/           von der ersten bis zur letzten Zeile ersetze ersten worf durch&lt;br /&gt;
                            kirn&lt;br /&gt;
 :.,$s/worf/kirn/g          von der aktuellen bis zur letzten Zeile ersetze alle worf durch&lt;br /&gt;
                            kirn&lt;br /&gt;
 :1,.s/worf/kirn/c          von der 1. bis zur aktuellen Zeile ersetze worf durch kirn, frage&lt;br /&gt;
                            aber nach&lt;br /&gt;
 :1,$s/^worf/kirn/          von der ersten bis zur letzten Zeile ersetze worf am&lt;br /&gt;
                            Zeilenanfang durch kirn&lt;br /&gt;
 :4,$s/worf$/kirn/          von der 4. bis zur letzten Zeile ersetze worf am Zeilenende&lt;br /&gt;
                            durch kirn&lt;br /&gt;
 :1,$s/^#//                 lösche alle Kommentarzeichen&lt;br /&gt;
 :1,$s/^.orf/kirn/           ersetze alles was am Zeilenanfang ein beliebiges Zeichen hat&lt;br /&gt;
                            gefolgt von einem orf durch kirn&lt;br /&gt;
 :1,$s/^[A-Z]orf/kirn/g     suche nach einem Großbuchstaben am Anfang der Zeile&lt;br /&gt;
                            gefolgt von einem orf und ersetze durch kirn&lt;br /&gt;
 :1,$s/^M[ae][iy]e*r/kirn/  suche alles, was am Anfang der Zeile ein großes M enthält,&lt;br /&gt;
                            gefolgt von einem a oder e , gefolgt von einem i oder y ,&lt;br /&gt;
                            gefolgt von einem e , welches 0 oder N mal vorkommen kann,&lt;br /&gt;
                            gefolgt von einem r und ersetze es durch kirn&lt;br /&gt;
&lt;br /&gt;
==Reguläre Ausdrücke==&lt;br /&gt;
&lt;br /&gt;
{| Border=1 Cellpadding=2&lt;br /&gt;
|c&lt;br /&gt;
|Ein einzelner Buchstabe passt auf sich selbst&lt;br /&gt;
|-&lt;br /&gt;
|.&lt;br /&gt;
|Ein Punkt passt auf jedes Zeichen außer auf das Zeilenende&lt;br /&gt;
|-&lt;br /&gt;
|*&lt;br /&gt;
|Das dem Operator * vorangehende Muster kann 0 oder öfter vorkommen&lt;br /&gt;
|-&lt;br /&gt;
|^&lt;br /&gt;
|(Caret) passt auf den Zeilenanfang&lt;br /&gt;
|-&lt;br /&gt;
|$&lt;br /&gt;
|Passt auf das Zeilenende&lt;br /&gt;
|-&lt;br /&gt;
|\&lt;br /&gt;
|Das folgende Sonderzeichen wird entwertet&lt;br /&gt;
|-&lt;br /&gt;
|[...]&lt;br /&gt;
|Passt auf &amp;quot;genau&amp;quot; eins in [...] angebenen Zeichen&lt;br /&gt;
|-&lt;br /&gt;
|[^...]&lt;br /&gt;
|Passt auf &amp;quot;genau&amp;quot; ein Zeichen welches nicht in [...] angebenen ist&lt;br /&gt;
|-&lt;br /&gt;
|\&amp;lt;&lt;br /&gt;
|Passt auf den Wortanfang&lt;br /&gt;
|-&lt;br /&gt;
|\&amp;gt;&lt;br /&gt;
|Passt auf das Wortende&lt;br /&gt;
|-&lt;br /&gt;
|\+&lt;br /&gt;
|Das dem Operator \+ vorangehende Muster kann 1 oder öfter vorkommen&lt;br /&gt;
|-&lt;br /&gt;
|&amp;amp;&lt;br /&gt;
|Setzt das gefunden Suchmuster ein&lt;br /&gt;
|-&lt;br /&gt;
|\(...\)&lt;br /&gt;
|Speichert den Text auf den das Suchmuster passt zur späteren Verwendung&lt;br /&gt;
|-&lt;br /&gt;
|\n&lt;br /&gt;
|Setzt das vorangehende, mit \(...\) Gefundene wieder ein&lt;br /&gt;
|-&lt;br /&gt;
|(...)&lt;br /&gt;
|Gruppiert Auswahlmöglichkeiten&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;nowiki&amp;gt;|&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
|Trennt Auswahlmöglichkeiten&lt;br /&gt;
|-&lt;br /&gt;
|\b&lt;br /&gt;
|Passt auf den Anfang oder das Ende eines Wortes&lt;br /&gt;
|-&lt;br /&gt;
|\B&lt;br /&gt;
|Symbolisiert den Raum innerhalb eines Wortes&lt;br /&gt;
|-&lt;br /&gt;
|\w&lt;br /&gt;
|Passt auf alle alphanumerischen Zeichen [A-Za-z0-9]&lt;br /&gt;
|-&lt;br /&gt;
|\W&lt;br /&gt;
|Passt auf alle nichtalphanumerischen Zeichen [^A-Za-z0-9]&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Die Rangfolge der Operatoren(von der höchsten zur niedrigsten)&lt;br /&gt;
:(, ), ?, *, + | .&lt;br /&gt;
&lt;br /&gt;
Die anderen Operatoren sind mit den anderen Buchstaben gleichrangig.&lt;br /&gt;
&lt;br /&gt;
===Beispiel zum Suchen===&lt;br /&gt;
&lt;br /&gt;
 Suchmuster               Passt auf&lt;br /&gt;
 ^Tuxer                   Tuxer am Zeilenanfang&lt;br /&gt;
 [tT]uxer                 Tuxer oder tuxer&lt;br /&gt;
 80[23]?86                8086, 80286 oder 80386&lt;br /&gt;
&lt;br /&gt;
===grep===&lt;br /&gt;
&lt;br /&gt;
Mit grep ist es möglich, in Dateien nach regulären Ausdrücken zu suchen. Wenn&lt;br /&gt;
eine Übereinstimmung gefunden wird, wird die komplette Zeile auf die&lt;br /&gt;
Standardausgabe geschrieben. grep kann auch von STDIN lesen.Es ist&lt;br /&gt;
empfehlenswert, sich anzugwöhnen ,das Suchmuster in Anführungszeichen zu&lt;br /&gt;
schreiben. Es gibt 3 Arten fgrep = fastgrep , grep und egrep egrep&lt;br /&gt;
&lt;br /&gt;
Beispiel:&lt;br /&gt;
&lt;br /&gt;
 root@zero:~# cat text&lt;br /&gt;
 quatsch&lt;br /&gt;
 quatsch&lt;br /&gt;
 quatsch&lt;br /&gt;
 wichtig&lt;br /&gt;
 quatsch&lt;br /&gt;
 root@zero:~# grep wichtig text&lt;br /&gt;
 wichtig&lt;br /&gt;
 root@zero:~# &lt;br /&gt;
&lt;br /&gt;
 -c                   meldet nur die Gesamtzahl der Fundstellen&lt;br /&gt;
 -v                   zeigt nur Zeilen, die »Ausdruck« nicht enthalten&lt;br /&gt;
 -i                   ignoriert Groß- und Kleinschreibung&lt;br /&gt;
 -l                    meldet nur Dateinamen mit Fundstellen&lt;br /&gt;
 -n                   listet Zeilennummern zu jeder Fundstelle&lt;br /&gt;
 -f                   Dateiname »Dateiname« enthält die Such-Ausdrücke&lt;br /&gt;
 -E                   ist ein erweiterter regulärer Ausdruck (egrep)&lt;br /&gt;
 -F                   (Muster, Ausdruck) ist ein Muster (String) (fgrep)&lt;br /&gt;
 -b                   listet auch die Position der Fundstellen&lt;br /&gt;
 -C    Anzahl         Anzahl von Zeilen werden nach der Fundstelle ausgegeben&lt;br /&gt;
 -B    Anzahl         Anzahl von Zeilen werden vor der Fundstelle ausgegeben&lt;br /&gt;
 -r                   Durchsucht Verzeichnisse rekursiv&lt;br /&gt;
&lt;br /&gt;
==Useridendifikation==&lt;br /&gt;
===/etc/passwd===&lt;br /&gt;
====Beschreibung====&lt;br /&gt;
passwd ist eine ASCII-Datei, die eine Liste der Benutzer des Systems und deren&lt;br /&gt;
Passwörter enthält. Die Passwortdatei sollte für alle Benutzer lesbar sein, was für&lt;br /&gt;
dieVerschlüsselung notwendig ist; aber nur vom Superuser beschreibbar. Wenn&lt;br /&gt;
Sie eine neue Kennung einrichten, lassen Sie das Passwort-Feld in der Datei frei&lt;br /&gt;
und benutzen Sie passwd(1), um dem System ein Passwort für die neue Kennung&lt;br /&gt;
mitzuteilen.&lt;br /&gt;
&lt;br /&gt;
Die Datei /etc/passwd enthält einen Eintrag pro Zeile mit dem Format:&lt;br /&gt;
login_name:passwd:UID:GID:user_name:directory:shell&lt;br /&gt;
====Die Bedeutung der Felder:====&lt;br /&gt;
# login_name Kennung des Benutzers auf dem System.&lt;br /&gt;
# password   Hier steht bei Shadowsystemen ein x. Die Passwörter sind in der Datei /etc/shadow&lt;br /&gt;
# UID        Die numerische Benutzernummer.&lt;br /&gt;
#  GID        Die numerische Gruppennummer des Benutzers.&lt;br /&gt;
# user_name Ein optionales Kommentarfeld, oft benutzt für den vollen Namen des Benutzers und weitere Informationen (Telefon, Raum-Nummer etc.).&lt;br /&gt;
# directory  Das Heimatverzeichnis $HOME des Benutzers.&lt;br /&gt;
# shell      Das Programm, das beim Einloggen gestartet werden soll (falls nicht nötig, benutzen Sie /bin/bash).&lt;br /&gt;
&lt;br /&gt;
===/etc/group===&lt;br /&gt;
====Beschreibung====&lt;br /&gt;
etc/group ist eine ASCII Datei, die Gruppen definiert, zu denen Benutzer&lt;br /&gt;
gehören. Es gibt nur einen Eintrag pro Zeile; jede Zeile hat folgendes Format:&lt;br /&gt;
         GruppenName:Passwort:GruppenKennung:BenutzerListe&lt;br /&gt;
Beschreibung der Felder:&lt;br /&gt;
#     GruppenName      Die Bezeichnung der Gruppe.&lt;br /&gt;
#     Passwort         Das (verschlüsselte) Gruppen-Passwort. Wenn dieses Feld leer ist, wird kein Passwort benötigt.&lt;br /&gt;
#     GruppenKennung Die numerische Identifikation der Gruppe.&lt;br /&gt;
#     BenutzerListe    Alle Namen der Mitglieder, getrennt durch Kommas.&lt;br /&gt;
&lt;br /&gt;
===/etc/shadow===&lt;br /&gt;
====Beschreibung====&lt;br /&gt;
shadow beinhaltet Informationen zu den verschlüsselten Passwörten, zu den&lt;br /&gt;
Benutzerzugängen und weitere Informationen zur Laufzeit der Passwörter.&lt;br /&gt;
 Name:Passwort:Letzte Änderung:Mintage:Maxtage:Warntage:Inaktiv:Ablauf&lt;br /&gt;
#    Der Loginname&lt;br /&gt;
#    verschlüsseltes Passwort &lt;br /&gt;
&amp;lt;nowiki&amp;gt;*&amp;lt;/nowiki&amp;gt; bedeutet Benutzer kann sich nicht einlogen&lt;br /&gt;
! bedeutet Benutzer hat kein Passwort gesetzt&lt;br /&gt;
#    Tage seit dem 1 Januar 1970 an dem das Passwort letztmals geändert wurde&lt;br /&gt;
#    Tage, die das Passwort behalten werden muss, bevor es wieder geändert werden kann&lt;br /&gt;
#     Die Anzahl der Tage, nach denen der Benutzer das Passwort wieder ändern muss&lt;br /&gt;
#    Anzahl der Tage bevor das Passwort abläuft und der Benutzer gewarnt wird&lt;br /&gt;
#    Wenn der Zugang diese Anzahl von Tagen nicht benutzt wird, wird der Zugang gesperrt&lt;br /&gt;
#    Tag seit dem 1 Januar 1970, an dem der Zugang gesperrt wird&lt;br /&gt;
#    Reserviertes Feld&lt;br /&gt;
&lt;br /&gt;
Die Datei sollte aus Sicherheitgründen nicht für einen normalen Benutzer lesbar&lt;br /&gt;
sein.&lt;br /&gt;
&lt;br /&gt;
==Programme zur Userverwaltung==&lt;br /&gt;
===useradd===&lt;br /&gt;
User anlegen&lt;br /&gt;
 root@zero:~# useradd -m -u 1011 -g users -G admin -d /home/erwin -s /bin/bash -c &amp;quot;Erwin Lehman&amp;quot;  erwin&lt;br /&gt;
{| border=1 cellpadding=2&lt;br /&gt;
|&amp;quot;-m&amp;quot;&lt;br /&gt;
|Lege Homedirectory an&lt;br /&gt;
|-&lt;br /&gt;
|&amp;quot;-u 1011&amp;quot;&lt;br /&gt;
|Userid wird zugeordnet&lt;br /&gt;
|-&lt;br /&gt;
|&amp;quot;-g users&amp;quot;&lt;br /&gt;
|Primäre Gruppe wird zugeordnet&lt;br /&gt;
|-&lt;br /&gt;
|&amp;quot;-G admin&amp;quot;&lt;br /&gt;
|Sekunbdäre Gruppe wird zugeordnet&lt;br /&gt;
|-&lt;br /&gt;
|&amp;quot;-d /home/erwin/&amp;quot;&lt;br /&gt;
|Name des Homedirectory&lt;br /&gt;
|-&lt;br /&gt;
|&amp;quot;-s /bin/bash&amp;quot;&lt;br /&gt;
|Bash wird zugeordnet&lt;br /&gt;
|- &lt;br /&gt;
|&amp;quot;-c Erwin Lehman&amp;quot;&lt;br /&gt;
|Kommentarfeld&lt;br /&gt;
|-&lt;br /&gt;
|&amp;quot;erwin&amp;quot; &lt;br /&gt;
|Name des Users&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Defaulteinstellungen anzeigen&lt;br /&gt;
 root@zero:~# useradd -D&lt;br /&gt;
 GROUP=100&lt;br /&gt;
 HOME=/home&lt;br /&gt;
 INACTIVE=-1&lt;br /&gt;
 EXPIRE=&lt;br /&gt;
 SHELL=/bin/sh&lt;br /&gt;
 SKEL=/etc/skel&lt;br /&gt;
 CREATE_MAIL_SPOOL=no&lt;br /&gt;
&lt;br /&gt;
Defaulteinstellungen ändern&lt;br /&gt;
 useradd -D -s /bin/bash&lt;br /&gt;
&lt;br /&gt;
Konfigurationsdatei&lt;br /&gt;
 root@zero:~# cat /etc/default/useradd &lt;br /&gt;
 SHELL=/bin/bash&lt;br /&gt;
 GROUP=100&lt;br /&gt;
 HOME=/home&lt;br /&gt;
 INACTIVE=-1&lt;br /&gt;
 EXPIRE=&lt;br /&gt;
 SKEL=/etc/skel&lt;br /&gt;
 CREATE_MAIL_SPOOL=no&lt;br /&gt;
&lt;br /&gt;
===usermod===&lt;br /&gt;
User modifizieren&lt;br /&gt;
 root@zero:~# usermod -l fritz -s /bin/sh -G admin,video erwin&lt;br /&gt;
{| border=1 cellpadding=2&lt;br /&gt;
|&amp;quot;-l fritz&amp;quot;&lt;br /&gt;
|Neuer Username&lt;br /&gt;
|-&lt;br /&gt;
|&amp;quot;-s /bin/sh&amp;quot;&lt;br /&gt;
|Neue Shell&lt;br /&gt;
|-&lt;br /&gt;
|&amp;quot;-G admin, video&amp;quot;&lt;br /&gt;
|Sekunbdäre Gruppen werden zugeordnet&lt;br /&gt;
|-&lt;br /&gt;
|&amp;quot;erwin&amp;quot; &lt;br /&gt;
|Name des Users&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
===userdel===&lt;br /&gt;
User inklusive Homedirectory löschen&lt;br /&gt;
 root@zero:~# userdel -r fritz&lt;br /&gt;
&lt;br /&gt;
===passwd===&lt;br /&gt;
Rootpasswort ändern&lt;br /&gt;
 root@zero:~# passwd &lt;br /&gt;
 Geben Sie ein neues UNIX Passwort ein:'''sysadm''' &lt;br /&gt;
 Geben Sie das neue UNIX Passwort erneut ein:'''sysadm''' &lt;br /&gt;
 passwd: Passwort erfolgreich geändert&lt;br /&gt;
&lt;br /&gt;
Passwort von tux ändern&lt;br /&gt;
 root@zero:~# passwd tux&lt;br /&gt;
 Geben Sie ein neues UNIX Passwort ein:'''suxer''' &lt;br /&gt;
 Geben Sie das neue UNIX Passwort erneut ein:'''suxer'''&lt;br /&gt;
 passwd: Passwort erfolgreich geändert&lt;br /&gt;
&lt;br /&gt;
Minimale und Maximale Gültigkeit des Passwortes von tux festlegen&lt;br /&gt;
 root@zero:~# passwd -n 5 -x 120 tux&lt;br /&gt;
&lt;br /&gt;
===groupadd===&lt;br /&gt;
 root@zero:~# groupadd -f -g 2001 xinuxer&lt;br /&gt;
{| border=1 cellpadding=2&lt;br /&gt;
|&amp;quot;-f&amp;quot;&lt;br /&gt;
|Überschreibe bestehende Gruppe&lt;br /&gt;
|-&lt;br /&gt;
|&amp;quot;-g 2001&amp;quot;&lt;br /&gt;
|GID der Gruppe&lt;br /&gt;
|-&lt;br /&gt;
|&amp;quot;xinuxer&amp;quot; &lt;br /&gt;
|Name des Gruppe&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==chmod==&lt;br /&gt;
Die Syntax des Befehls chmod lautet:&lt;br /&gt;
&lt;br /&gt;
'''chmod''' WerWieWas [,WerWieWas,.....] Dateiliste&lt;br /&gt;
&lt;br /&gt;
oder&lt;br /&gt;
&lt;br /&gt;
'''chmod''' Oktalzahl Dateiliste&lt;br /&gt;
&lt;br /&gt;
Durch WerWieWas bzw. Oktalzahl wird die Rechtetabelle definiert. Innerhalb von&lt;br /&gt;
WerWieWas darf es kein Leerzeichen geben. Wer bezeichnet den Benutzerkreis,&lt;br /&gt;
dem man Rechte gibt, Wie die Art, in der die Rechte gegeben werden und Was die&lt;br /&gt;
Rechte als solche. Im einzelnen können folgende Kürzel benutzt werden:&lt;br /&gt;
&lt;br /&gt;
Für Wer kann eines der folgenden Kürzel oder eine Kombination davon stehen:&lt;br /&gt;
 u                   (user) Rechte für den Dateibesitzer&lt;br /&gt;
 g                   (group) Rechte für die Gruppe&lt;br /&gt;
 o                   (others) Rechte für alle anderen Benutzer&lt;br /&gt;
 a                   (all) Rechte für alle Benutzer&lt;br /&gt;
Für Wie steht eines der folgenden Kürzel:&lt;br /&gt;
 +                   Die Rechte werden zu den vorhandenen zusätzlich vergeben&lt;br /&gt;
 -                   Die im Folgenden genannten Rechte werden entzogen&lt;br /&gt;
 =                   Die im Folgenden genannten Rechte ersetzen die bisherigen&lt;br /&gt;
Für Was steht eines der folgenden Kürzel:&lt;br /&gt;
 r                   (read) lesen&lt;br /&gt;
 w                   (write) schreiben&lt;br /&gt;
 x                   (execute) ausführen&lt;br /&gt;
oder diese Sonderformen&lt;br /&gt;
 s                   (usersbit) Programm läuft unter der UID des Besitzers&lt;br /&gt;
 s                   (groupsbit)Programm läuft unter der GID des GRUPPE&lt;br /&gt;
 t                   (stickybit) Dateien im Verzeichnis darf nur Besitzer löschen&lt;br /&gt;
&lt;br /&gt;
===Beispiel===&lt;br /&gt;
Setze für alle Schreib- und Leserecht&lt;br /&gt;
 xinux@zero:~$ chmod a=rw test &lt;br /&gt;
 xinux@zero:~$ ls -l test &lt;br /&gt;
 -rw-rw-rw- 1 xinux xinux 0 2009-06-16 12:01 test&lt;br /&gt;
 xinux@zero:~$ &lt;br /&gt;
&lt;br /&gt;
Erteile Besitzer Ausführungsrecht&lt;br /&gt;
 xinux@zero:~$ chmod u+x test ; ls -l test &lt;br /&gt;
 -rwxrw-rw- 1 xinux xinux 0 2009-06-16 12:01 test&lt;br /&gt;
 xinux@zero:~$ &lt;br /&gt;
&lt;br /&gt;
===chmod oktale Schreibweise===&lt;br /&gt;
 Specialrights        User           Group         Other&lt;br /&gt;
 usbit gsbit sticky    r    w   x     r   w   x     r   w   x&lt;br /&gt;
   1     1      1      1    1   1     1   1   1     1   1   1&lt;br /&gt;
   0     0      0      0    0   0     0   0   0     0   0   0&lt;br /&gt;
 Oktale Wertigkeit pro Recht&lt;br /&gt;
   4     2       1     4    2   1     4   2   1     4   2   1&lt;br /&gt;
&lt;br /&gt;
===Beispiele===&lt;br /&gt;
 xinux@zero:~$ chmod 751 test ; ls -l test&lt;br /&gt;
 -rwxr-x--x 1 xinux xinux 0 2009-06-16 12:01 test&lt;br /&gt;
 xinux@zero:~$ &lt;br /&gt;
&lt;br /&gt;
 xinux@zero:~$ chmod 4770 test ; ls -l test&lt;br /&gt;
 -rwsrwx--- 1 xinux xinux 0 2009-06-16 12:01 test&lt;br /&gt;
 xinux@zero:~$ &lt;br /&gt;
&lt;br /&gt;
 xinux@zero:~$ chmod 0 test ; ls -l test &lt;br /&gt;
 ---------- 1 xinux xinux 0 2009-06-16 12:01 test&lt;br /&gt;
&lt;br /&gt;
===chmod Optionen===&lt;br /&gt;
 -c   (changes) es werden nur die Dateien angezeigt, deren Zugriffsrechte tatsächlich verändert werden&lt;br /&gt;
 -f   (silent, quiet) Fehlermeldungen wegen fehlgeschlagener Änderungsversuche werden unterdrückt&lt;br /&gt;
 -v   (verbose) alle Aktionen werden angezeigt&lt;br /&gt;
 -R   (recursive) die Zugriffsrechte aller Dateien in den Unterverzeichnissen werden ebenfalls geändert&lt;br /&gt;
&lt;br /&gt;
Theoretisch sind alle Kombinationen der Zugriffsrechte denkbar, aber der&lt;br /&gt;
Eigentümer einer Datei darf diese immer lesen, selbst wenn das Lesebit nicht&lt;br /&gt;
gesetzt ist. Genauso macht es wenig Sinn, eine gewöhnliche Textdatei als&lt;br /&gt;
ausführbar zu setzen; die Shell wird damit nichts anfangen können. Ein x für ein&lt;br /&gt;
Verzeichnis gibt an, dass in dieses gewechselt werden kann.&lt;br /&gt;
&lt;br /&gt;
Rechte sind verbindlich&lt;br /&gt;
&lt;br /&gt;
Interessant ist auch ein Konstrukt folgender Art&lt;br /&gt;
 -rwx---rwx&lt;br /&gt;
&lt;br /&gt;
das angibt, dass mit der Datei alles angestellt werden kann, außer durch Nutzer der&lt;br /&gt;
Gruppe. Versucht irgend jemand, der nicht der Gruppe des Eigentümers angehört,&lt;br /&gt;
die Datei zu modifizieren, wird ihm dies gelingen, einem Gruppenmitglied bleibt&lt;br /&gt;
dies versagt, obwohl er ja gleichzeitig ein &amp;quot;Anderer&amp;quot; ist. D.h. die Rechte der&lt;br /&gt;
Gruppe sind verbindlicher, als die Rechte der anderen!&lt;br /&gt;
&lt;br /&gt;
===Bedeutungen der Zugriffsarten===&lt;br /&gt;
====Dateien====&lt;br /&gt;
* r: Der Inhalt der Datei kann gelesen und damit auch kopiert werden. &lt;br /&gt;
 root@zero:~# cat test&lt;br /&gt;
 Dies ist eine Testdatei&lt;br /&gt;
  &lt;br /&gt;
 root@zero:~# cp test backup&lt;br /&gt;
&lt;br /&gt;
* w: Der Inhalt der Datei darf verändert werden. Ob die Datei gelöscht werden kann ist&lt;br /&gt;
keine Eigenschaft der Datei, sondern des Verzeichnisses, indem sich die Datei befindet.&lt;br /&gt;
 root@zero:~# cat &amp;gt; test&lt;br /&gt;
 Hier steht jetzt was anderes&lt;br /&gt;
 ^C&lt;br /&gt;
 root@zero:~# cat test&lt;br /&gt;
 Hier steht jetzt was anderes&lt;br /&gt;
  &lt;br /&gt;
 xinux@zero:~$ ls -ld verzeichnis/&lt;br /&gt;
 dr-xr-xr-x 2 xinux xinux 4096 2009-06-18 11:16 verzeichnis/&lt;br /&gt;
 xinux@zero:~/verzeichnis$ rm text&lt;br /&gt;
 rm: Entfernen von „text“ nicht möglich: Permission denied&lt;br /&gt;
&lt;br /&gt;
* x: Ausführrecht für Programme und Skripte&lt;br /&gt;
 xinux@zero:~$ ./programm&lt;br /&gt;
 -bash: ./programm: Permission denied&lt;br /&gt;
 xinux@zero:~$ chmod +x programm&lt;br /&gt;
 xinux@zero:~$ ./programm&lt;br /&gt;
 Test&lt;br /&gt;
  test&lt;br /&gt;
&lt;br /&gt;
====Verzeichnisse====&lt;br /&gt;
* r: Die Einträge in dem Verzeichnis sind lesbar.&lt;br /&gt;
Leserecht von verzeichnis/ entziehen&lt;br /&gt;
 xinux@zero:~$ chmod a-r verzeichnis/&lt;br /&gt;
 xinux@zero:~$ ls verzeichnis/&lt;br /&gt;
 ls: Öffnen von Verzeichnis verzeichnis/ nicht möglich: Permission denied&lt;br /&gt;
Leserecht für Benutzer und Gruppe vergeben&lt;br /&gt;
 xinux@zero:~$ chmod a+r verzeichnis/&lt;br /&gt;
 xinux@zero:~$ ls verzeichnis/&lt;br /&gt;
 text&lt;br /&gt;
&lt;br /&gt;
* w: Die Einträge in dem Verzeichnis können geändert werden. &lt;br /&gt;
Neue Datei erstellen&lt;br /&gt;
 xinux@zero:~$ touch neu&lt;br /&gt;
 xinux@zero:~$ ls neu&lt;br /&gt;
 neu&lt;br /&gt;
&lt;br /&gt;
Datei löschen&lt;br /&gt;
 xinux@zero:~$ rm neu&lt;br /&gt;
 xinux@zero:~$ ls neu&lt;br /&gt;
 ls: Zugriff auf neu nicht möglich: No such file or directory&lt;br /&gt;
&lt;br /&gt;
* x: Der Name des Verzeichnisses kann in einem Pfadnamen erscheinen.&lt;br /&gt;
Verzeichnis ohne x Recht&lt;br /&gt;
 xinux@zero:~$ chmod a-x verzeichnis/&lt;br /&gt;
Wechseln in Verzeichnis mangels x-Recht nicht möglich&lt;br /&gt;
 xinux@zero:~$ cd verzeichnis/&lt;br /&gt;
 -bash: cd: verzeichnis/: Permission denied&lt;br /&gt;
x-Recht vergeben&lt;br /&gt;
 xinux@zero:~$ chmod a+x verzeichnis/&lt;br /&gt;
damit Wechsel in Verzeichnis möglich&lt;br /&gt;
 xinux@zero:~$ cd verzeichnis/&lt;br /&gt;
 xinux@zero:~/verzeichnis$ pwd&lt;br /&gt;
 /home/xinux/verzeichnis&lt;br /&gt;
&lt;br /&gt;
====umask====&lt;br /&gt;
Neue Dateien und Verzeichnisse werden mit ein und denselben Zufriffsrechten erzeugt.&lt;br /&gt;
 xinux@zero:~$ mkdir text&lt;br /&gt;
 xinux@zero:~$ touch textdat&lt;br /&gt;
 xinux@zero:~$ ls -ld text*&lt;br /&gt;
 drwxr-xr-x 2 xinux xinux 4096 2009-06-18 11:37 text&lt;br /&gt;
 -rw-r--r-- 1 xinux xinux    0 2009-06-18 11:37 textdat&lt;br /&gt;
&lt;br /&gt;
Zuständig für dieses Verhalten ist die sogenannte umask, die oft in der Datei&lt;br /&gt;
/etc/profile auf den Wert 022 voreingestellt ist. Zusätzlich wird noch eine&lt;br /&gt;
Maximalmaske benötigt, die sich für Verzeichnisse und andere Dateien&lt;br /&gt;
unterscheidet. Die bei der Erzeugung gesetzten Rechte entstehen nun, indem von&lt;br /&gt;
der Maximalmaske der durch die umask vorgegebene Wert subtrahiert wird:&lt;br /&gt;
&lt;br /&gt;
{| border=1 cellpadding=2&lt;br /&gt;
!&lt;br /&gt;
! Dateien&lt;br /&gt;
! Verzeichnisse&lt;br /&gt;
|-&lt;br /&gt;
| Systemvorgabe&lt;br /&gt;
| 666&lt;br /&gt;
| 777&lt;br /&gt;
|-&lt;br /&gt;
| -umask&lt;br /&gt;
| 022&lt;br /&gt;
| 022&lt;br /&gt;
|-&lt;br /&gt;
| Ergebnis&lt;br /&gt;
| 644&lt;br /&gt;
| 755&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
 xinux@zero:~$ grep umask /etc/profile&lt;br /&gt;
 umask 022&lt;br /&gt;
&lt;br /&gt;
==Gruppenzugehörigkeit==&lt;br /&gt;
===newgrp===&lt;br /&gt;
Ändert die Gruppenzugehörigkeit eines Benutzers auf die angegebene Gruppe. Wenn keine Gruppe angegeben wird, wird die &lt;br /&gt;
Anmeldegruppe des Benutzers verwendet. Die neue Gruppe wird anschließend fü Zugriffskontrollen verwendet.&lt;br /&gt;
&lt;br /&gt;
 newgrp Gruppenname&lt;br /&gt;
&lt;br /&gt;
 root@zero:~# newgrp hacker&lt;br /&gt;
 root@zero:~# id&lt;br /&gt;
 uid=0(root) gid=1006(hacker) Gruppen=0(root),1006(hacker)&lt;br /&gt;
&lt;br /&gt;
===chgrp===&lt;br /&gt;
Verändert die Besitzugehörigkeit zu der angegebenen Gruppe&lt;br /&gt;
&lt;br /&gt;
 chgrp [Optionen] Gruppe Datei(en)&lt;br /&gt;
&lt;br /&gt;
Optionen:&lt;br /&gt;
 -c Zeigt Veränderungen an&lt;br /&gt;
 -f Unterdrückt die meisten Fehlermeldungen&lt;br /&gt;
 -R Verändert Dateien und Verzeichnisse rekursiv&lt;br /&gt;
 -v Gibt geschwätzige Ausgabe aus.&lt;br /&gt;
&lt;br /&gt;
 root@zero:~# ls -l&lt;br /&gt;
 ...&lt;br /&gt;
 d-wx--x--x  3 root root 4096 2009-06-18 13:34 verzeichnis&lt;br /&gt;
 &lt;br /&gt;
 root@zero:~# chgrp -R xinux verzeichnis/&lt;br /&gt;
 root@zero:~# ls -l&lt;br /&gt;
 ...&lt;br /&gt;
 d-wx--x--x  3 root xinux 4096 2009-06-18 13:34 verzeichnis&lt;br /&gt;
&lt;br /&gt;
 xinux@zero:~$ cd /root/verzeichnis/&lt;br /&gt;
 xinux@zero:/root/verzeichnis$ pwd&lt;br /&gt;
 /root/verzeichnis&lt;br /&gt;
&lt;br /&gt;
===chown===&lt;br /&gt;
Ändert den Eigentümer von einer oder mehreren Dateien in den angegebenen Benutzer. &lt;br /&gt;
chown erlaubt ebenfalls das Ändern der Gruppeneigentümreschaft. Nur der aktuelle Eigentümer einer&lt;br /&gt;
Datei oder der Superuser (root) darf die Eigentumsverhältnisse ändern.&lt;br /&gt;
&lt;br /&gt;
 chown [Optionen] Benutzer(:Gruppe) Dateien&lt;br /&gt;
&lt;br /&gt;
Optionen:&lt;br /&gt;
 -c Gibt Informationen über die veränderten Dateien aus&lt;br /&gt;
 --dereference Symbolischen Links folgen&lt;br /&gt;
 -v Gibt Informationen über alle Dateien aus, die chown zu ändern versucht, egal, ob die Änderung erfolgt ist oder nicht&lt;br /&gt;
 -R Geht rekursiv durch alle Unterverzeichnisse und führt die Änderungen durch. &lt;br /&gt;
&lt;br /&gt;
 root@zero:~# chown -R xinux.xinux verzeichnis/&lt;br /&gt;
 root@zero:~# ls -l&lt;br /&gt;
 insgesamt 12&lt;br /&gt;
 drwx------ 13 root  root  4096 2009-04-21 15:11 profile&lt;br /&gt;
 --w-------  1 root  root     0 2009-06-18 11:13 test&lt;br /&gt;
 -rw-r--r--  1 root  root    40 2009-06-18 12:04 text&lt;br /&gt;
 drwxrwx--x  3 xinux xinux 4096 2009-06-18 13:39 verzeichnis&lt;br /&gt;
 &lt;br /&gt;
 root@zero:~# chown -R -c xinux.xinux verzeichnis/&lt;br /&gt;
 &lt;br /&gt;
 root@zero:~# chown -R -v xinux.xinux verzeichnis/&lt;br /&gt;
 Eigentümer von „verzeichnis/01“ als xinux:xinux erhalten&lt;br /&gt;
 Eigentümer von „verzeichnis/test“ als xinux:xinux erhalten&lt;br /&gt;
 Eigentümer von „verzeichnis/“ als xinux:xinux erhalten&lt;br /&gt;
&lt;br /&gt;
==Eingabe/Ausgabe==&lt;br /&gt;
Standardeingabe (0): Laufende Programme erwarten von hier ihre Eingaben (normalerweise handelt es sich um die Tastatur).&lt;br /&gt;
&lt;br /&gt;
Standardausgabe (1): Programme schreiben auf diese ihre Ausgaben (Bildschirm).&lt;br /&gt;
&lt;br /&gt;
Standardfehlerausgabe (2) : Fehlerausgaben landen hier (Bildschirm, aber nur die aktive Konsole).&lt;br /&gt;
&lt;br /&gt;
[[Bild:std.jpg]]&lt;br /&gt;
&lt;br /&gt;
===cat===&lt;br /&gt;
Das Programm cat liest von STDIN und gibt es STDOUT wieder aus&lt;br /&gt;
&lt;br /&gt;
Einlesen der Datei text&lt;br /&gt;
 root@zero:~# cat &amp;lt; text&lt;br /&gt;
 wichtig&lt;br /&gt;
&lt;br /&gt;
Schreiben in die Datei text, dies überschreibt den bisherigen Inhalt der Datei&lt;br /&gt;
 root@zero:~# cat &amp;gt; text&lt;br /&gt;
 sogar noch wichtiger &lt;br /&gt;
 &lt;br /&gt;
Ausgeben der Datei text&lt;br /&gt;
 root@zero:~# cat text &lt;br /&gt;
 sogar noch wichtiger&lt;br /&gt;
&lt;br /&gt;
Lesen aus der Datei text und schreiben in die Datei neuertext&lt;br /&gt;
 root@zero:~# cat &amp;lt; text &amp;gt; neuertext&lt;br /&gt;
 root@zero:~# cat neuertext&lt;br /&gt;
 sogar noch wichtiger&lt;br /&gt;
&lt;br /&gt;
Anhängen der Ausgabe von date an die Datei neuertext&lt;br /&gt;
 root@zero:~# date &amp;gt;&amp;gt; neuertext&lt;br /&gt;
 root@zero:~# cat neuertext&lt;br /&gt;
 sogar noch wichtiger&lt;br /&gt;
 Do 18. Jun 14:08:58 CEST 2009&lt;br /&gt;
&lt;br /&gt;
Umleiten des Standardfehlerkanals nach error&lt;br /&gt;
 root@zero:~# rm sux 2&amp;gt; error&lt;br /&gt;
 root@zero:~# more error&lt;br /&gt;
 rm: Entfernen von „sux“ nicht möglich: No such file or directory&lt;br /&gt;
&lt;br /&gt;
===Umleitungen===&lt;br /&gt;
Nacheinander auszuführende Kommandos&lt;br /&gt;
 root@zero:~# pwd; date&lt;br /&gt;
 /root&lt;br /&gt;
 Do 18. Jun 14:13:05 CEST 2009&lt;br /&gt;
 &lt;br /&gt;
Übergeben der Ausgabe von tail als Eingabe von grep mit Hilfe der Pipe &amp;quot;|&amp;quot;&lt;br /&gt;
 root@zero:~# tail /var/log/auth.log | grep xinux&lt;br /&gt;
 Jun 18 13:52:33 zero nss_wins[11433]: pam_unix(login:session): session closed for user xinux&lt;br /&gt;
&lt;br /&gt;
Übergeben der letzten 100 Zeilen von syslog als Eingabe von grep&lt;br /&gt;
 root@zero:~# tail /var/log/syslog -n 100 | grep error&lt;br /&gt;
 Jun 18 09:30:54 zero kernel: [154384.692135] end_request: I/O error, dev fd0, sector 0&lt;br /&gt;
 Jun 18 09:30:54 zero kernel: [154384.712137] end_request: I/O error, dev fd0, sector 0&lt;br /&gt;
&lt;br /&gt;
==tr==&lt;br /&gt;
tr ist ein Programm um Zeichen zu übersetzen. Dies betrifft nur die Ausgabe, die Datei selbst bleibt unverändert.&lt;br /&gt;
&lt;br /&gt;
Ersetzt Kleinbuchstaben durch Großbuchstaben aus der Datei text&lt;br /&gt;
 root@zero:~# tr &amp;quot;a-z&amp;quot; &amp;quot;A-Z&amp;quot; &amp;lt; text&lt;br /&gt;
 SOGAR NOCH WICHTIGER&lt;br /&gt;
 123&lt;br /&gt;
 34&lt;br /&gt;
 4711&lt;br /&gt;
 TEST&lt;br /&gt;
&lt;br /&gt;
Ersetzt alle Zahlen durch X&lt;br /&gt;
 root@zero:~# tr &amp;quot;0-9&amp;quot; &amp;quot;X&amp;quot; &amp;lt; text&lt;br /&gt;
 sogar noch wichtiger&lt;br /&gt;
 XXX&lt;br /&gt;
 XX&lt;br /&gt;
 XXXX&lt;br /&gt;
 test&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
 root@zero:~# cat &amp;gt; test&lt;br /&gt;
 +++++&lt;br /&gt;
 ###&lt;br /&gt;
 1111&lt;br /&gt;
&lt;br /&gt;
-s löscht mehrfach kommende Zeichen&lt;br /&gt;
 root@zero:~# tr '''-s''' &amp;quot;+&amp;quot; &amp;lt; test&lt;br /&gt;
 +&lt;br /&gt;
 ###&lt;br /&gt;
 1111&lt;br /&gt;
&lt;br /&gt;
-d löscht vorkommende Zeichen &lt;br /&gt;
 root@zero:~# tr '''-d''' &amp;quot;#&amp;quot; &amp;lt; test&lt;br /&gt;
 +++++ &lt;br /&gt;
 &lt;br /&gt;
 1111&lt;br /&gt;
&lt;br /&gt;
==cut==&lt;br /&gt;
Spalten aus einer Datei schneiden. Dies betrifft nur die Ausgabe, die Datei selbst bleibt unverändert.&lt;br /&gt;
 &lt;br /&gt;
Schneidet die erste Spalte aus, der Delimiter ist : &lt;br /&gt;
 root@zero:~# cut -f 1 -d : /etc/passwd&lt;br /&gt;
 root&lt;br /&gt;
 daemon&lt;br /&gt;
 bin&lt;br /&gt;
 ...&lt;br /&gt;
 xinux&lt;br /&gt;
&lt;br /&gt;
 root@zero:~# more test&lt;br /&gt;
 1234#5678#9999&lt;br /&gt;
 &lt;br /&gt;
Schneidet die zweite Spalte aus, der Delimiter ist #&lt;br /&gt;
 root@zero:~# cut -f 2 -d &amp;quot;#&amp;quot; &amp;lt; test&lt;br /&gt;
 5678&lt;br /&gt;
&lt;br /&gt;
Schneidet bis zum 3 Zeichen ab&lt;br /&gt;
 root@zero:~$ echo S01policykit | cut -c 4-&lt;br /&gt;
 policykit&lt;br /&gt;
&lt;br /&gt;
==expand==&lt;br /&gt;
Ersetzt Tabulatorzeichen durch Folgen von Leerzeichen und schreibt das Ergebnis auf die Standardausgabe&lt;br /&gt;
 root@zero:~# expand /etc/samba/smb.conf&lt;br /&gt;
 ...&lt;br /&gt;
&lt;br /&gt;
==fmt==&lt;br /&gt;
#Setzt den Text der Dateien im Blocksatz der angegebenen Breite durch Auffüllen von Zeilen und Entfernen von Zeilenwechseln.&lt;br /&gt;
Standardgemäß werden Leerzeilen, die Position von Leerzeichen und der Einzug am Zeilenanfang erhalten. fmt versucht, &lt;br /&gt;
Zeilenumbrüche an Satzenden durchzuführen sowie sie nach dem ersten oder vor dem letzten Wort eines Satzes zu vermeiden. &lt;br /&gt;
 &lt;br /&gt;
 fmt [Optionen] [Dateien]&lt;br /&gt;
&lt;br /&gt;
Optionen&lt;br /&gt;
&lt;br /&gt;
* -p ''Präfix'': Formatiert nur Zeilen, die mit ''Präfix'' anfangen&lt;br /&gt;
 root@zero:/tmp# fmt -p '#' text&lt;br /&gt;
 #Setzt den Text der Dateien im Blocksatz der angegebenen Breite durch&lt;br /&gt;
 #Auffüllen von Zeilen und Entfernen von Zeilenwechseln.  Standardgemäß&lt;br /&gt;
 #werden Leerzeilen, die Position von Leerzeichen und der Einzug am&lt;br /&gt;
 #Zeilenanfang erhalten. fmt versucht,&lt;br /&gt;
 Zeilenumbrüche an Satzenden durchzuführen sowie sie nach dem ersten oder vor dem letzten Wort eines Satzes zu vermeiden.&lt;br /&gt;
&lt;br /&gt;
* -u : Erzwingt genau ein Leerzeichen zwischen Wörtern und zwei Leerzeichen zwischen Sätzen&lt;br /&gt;
&lt;br /&gt;
* -w ''Breite'': Setzt die Ausgabebreite auf ''Breite''&lt;br /&gt;
 root@zero:/tmp# fmt -w 30 text&lt;br /&gt;
 #Setzt den Text der Dateien&lt;br /&gt;
 im Blocksatz der angegebenen&lt;br /&gt;
 Breite durch Auffüllen&lt;br /&gt;
 von Zeilen und Entfernen&lt;br /&gt;
 von Zeilenwechseln.&lt;br /&gt;
 #Standardgemäß werden&lt;br /&gt;
 Leerzeilen, die Position von&lt;br /&gt;
 Leerzeichen und der Einzug am&lt;br /&gt;
 Zeilenanfang erhalten. fmt&lt;br /&gt;
 versucht, Zeilenumbrüche&lt;br /&gt;
 an Satzenden durchzuführen&lt;br /&gt;
 sowie sie nach dem ersten&lt;br /&gt;
 oder vor dem letzten Wort&lt;br /&gt;
 eines Satzes zu vermeiden.&lt;br /&gt;
&lt;br /&gt;
==join==&lt;br /&gt;
Führt die Zeilen zweier sortierter Dateien anhand von '''Übereinstimmungen''' in einem gemeinsamen Feld zusammen.&lt;br /&gt;
&lt;br /&gt;
 root@zero:~# more name&lt;br /&gt;
 1. karl&lt;br /&gt;
 2. heinz&lt;br /&gt;
 3. hans&lt;br /&gt;
 4. otto&lt;br /&gt;
 root@zero:~# more tel&lt;br /&gt;
 1. 1234&lt;br /&gt;
 2. 4321&lt;br /&gt;
 3. 222&lt;br /&gt;
 4. 121212&lt;br /&gt;
 root@zero:~# join name tel &amp;gt; telefonbuch&lt;br /&gt;
 root@zero:~# more telefonbuch&lt;br /&gt;
 1. karl 1234&lt;br /&gt;
 2. heinz 4321&lt;br /&gt;
 3. hans 222&lt;br /&gt;
 4. otto 121212&lt;br /&gt;
&lt;br /&gt;
 root@zero:~# join -t : /etc/passwd /etc/shadow&lt;br /&gt;
 ....&lt;br /&gt;
 daemon:x:1:1:daemon:/usr/sbin:/bin/sh:*:14181:0:99999:7:::&lt;br /&gt;
 bin:x:2:2:bin:/bin:/bin/sh:*:14181:0:99999:7:::&lt;br /&gt;
 sys:x:3:3:sys:/dev:/bin/sh:*:14181:0:99999:7:::&lt;br /&gt;
 sync:x:4:65534:sync:/bin:/bin/sync:*:14181:0:99999:7:::&lt;br /&gt;
 ...&lt;br /&gt;
&lt;br /&gt;
join in dat1 nach Feld 3 und in dat2 nach Feld 2&lt;br /&gt;
 thomas@lydia:~$ cat dat1 &lt;br /&gt;
 hugo:ps:1111&lt;br /&gt;
 erwin:zw:2222&lt;br /&gt;
 karl:sb:3333&lt;br /&gt;
 rudi:kl:4444&lt;br /&gt;
 thomas@lydia:~$ cat dat2&lt;br /&gt;
 blau:1111:svn&lt;br /&gt;
 grün:2222:fcs&lt;br /&gt;
 gelb:3333:fch&lt;br /&gt;
 rot:4444:fck&lt;br /&gt;
 thomas@lydia:~$ join -t : -1 3 -2 2 dat1 dat2 &lt;br /&gt;
 1111:hugo:ps:blau:svn&lt;br /&gt;
 2222:erwin:zw:grün:fcs&lt;br /&gt;
 3333:karl:sb:gelb:fch&lt;br /&gt;
 4444:rudi:kl:rot:fck&lt;br /&gt;
&lt;br /&gt;
==nl==&lt;br /&gt;
Nummeriert die Zeilen in einer Datei.&lt;br /&gt;
&lt;br /&gt;
 root@zero:~# nl /etc/passwd                                                   &lt;br /&gt;
     1  root:x:0:0:root:/root:/bin/bash                                       &lt;br /&gt;
     2  daemon:x:1:1:daemon:/usr/sbin:/bin/sh                                 &lt;br /&gt;
     3  bin:x:2:2:bin:/bin:/bin/sh                                            &lt;br /&gt;
     4  sys:x:3:3:sys:/dev:/bin/sh                                            &lt;br /&gt;
     5  sync:x:4:65534:sync:/bin:/bin/sync&lt;br /&gt;
     ...&lt;br /&gt;
Nummereriet mit führenden Nullen der Separatir ist ein :&lt;br /&gt;
 root@zero:~# nl -s : -n rz dat1&lt;br /&gt;
&lt;br /&gt;
==od==&lt;br /&gt;
Gibt Dateien im Oktal und anderen Formaten aus.&lt;br /&gt;
&lt;br /&gt;
 od [Optionen] Datei&lt;br /&gt;
&lt;br /&gt;
* -j ''Bytes'': Überspringt die Anzahl ''Bytes'' einer Datei&lt;br /&gt;
* -N ''Bytes'': Gibt nur die Anzahl ''Bytes'' aus&lt;br /&gt;
* -c : Gebe ASCII Zeichen aus&lt;br /&gt;
* -f : Gebe Fließkommazahlen aus&lt;br /&gt;
* -i : Gebe Dezimal Integer aus&lt;br /&gt;
* -l : Gebe Dezimal Long aus&lt;br /&gt;
* -o : Gebe Oktal 2 Byte Einheiten aus&lt;br /&gt;
* -s : Gebe Dezimal 2 Byte Einheiten aus&lt;br /&gt;
* -x : Gebe Hexadezimale 2 Byte einheiten aus&lt;br /&gt;
&lt;br /&gt;
Beispiele&lt;br /&gt;
&lt;br /&gt;
Gebe Master Boot Record (die ersten 512 Byte der Festplatte /dev/sda) als Hexadezimal aus&lt;br /&gt;
 root@zero:~# od '''-x -N''' 512 /dev/sda&lt;br /&gt;
 0000000 48eb 1090 d08e 00bc b8b0 0000 d88e c08e&lt;br /&gt;
 0000020 befb 7c00 00bf b906 0200 a4f3 21ea 0006&lt;br /&gt;
 0000040 be00 07be 0438 0b75 c683 8110 fefe 7507&lt;br /&gt;
 0000060 ebf3 b416 b002 bb01 7c00 80b2 748a 0203&lt;br /&gt;
 0000100 00ff 2000 0001 0000 0200 90fa f690 80c2&lt;br /&gt;
 ...&lt;br /&gt;
&lt;br /&gt;
Schreibe &amp;quot;suxer&amp;quot; in die Datei test&lt;br /&gt;
 root@zero:~# echo &amp;quot;suxer&amp;quot; &amp;gt; test&lt;br /&gt;
Ausgabe Hexadezimal&lt;br /&gt;
 root@zero:~# od -x test&lt;br /&gt;
 0000000 7573 6578 0a72&lt;br /&gt;
 0000006&lt;br /&gt;
&lt;br /&gt;
Ausgabe ASCII Zeichen&lt;br /&gt;
 root@zero:~# od -c test&lt;br /&gt;
 0000000   s   u   x   e   r  \n&lt;br /&gt;
 0000006&lt;br /&gt;
&lt;br /&gt;
==paste==&lt;br /&gt;
Fügt die Zeilen von zwei oder mehr Dateien horizontal zusammen&lt;br /&gt;
 root@zero:~# paste name tel&lt;br /&gt;
 1. karl 1. 1234&lt;br /&gt;
 2. heinz        2. 4321&lt;br /&gt;
 3. hans 3. 222&lt;br /&gt;
 4. otto 4. 121212&lt;br /&gt;
&lt;br /&gt;
==pr==&lt;br /&gt;
Bereitet Textdateien zum Drucken vor.&lt;br /&gt;
&lt;br /&gt;
 root@zero:~# echo &amp;quot;Plan für heute&amp;quot; &amp;gt; dokument&lt;br /&gt;
 root@zero:~# more dokument&lt;br /&gt;
 Plan für heute&lt;br /&gt;
 root@zero:~# pr dokument   &lt;br /&gt;
  &lt;br /&gt;
 &lt;br /&gt;
 2009-06-19 12:44                    dokument                     Seite 1&lt;br /&gt;
 &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
 Plan für heute&lt;br /&gt;
&lt;br /&gt;
Anmerkung Ausmaße der Bildschirmausgabe wie eine Druckseite.&lt;br /&gt;
&lt;br /&gt;
==sed==&lt;br /&gt;
streaming editor. Mit sed ist es möglich, den Inhalt einer Datei automatisch (nicht interaktiv) zu&lt;br /&gt;
bearbeiten. Wie unter Linux üblich, wird auch hier der Text nicht wirklich verändert sondern die &lt;br /&gt;
Änderung erfolgt über die Standardausgabe, die wieder umgeleitet werden kann. Die Syntax ist ähnlich &lt;br /&gt;
des ex modus von vi. Reguläre Ausdrücke können nach Belieben benutzt werden. &lt;br /&gt;
&lt;br /&gt;
Optionen:&lt;br /&gt;
 -e Zeichenkette  wendet die Editorbefehle aus Zeichenkette auf den Text an.&lt;br /&gt;
 -n gibt nur die Zeilen aus, die explizit (durch &amp;quot;p&amp;quot; ausgedruckt werden sollen&lt;br /&gt;
&lt;br /&gt;
Gibt die dritte Zeile der Datei text aus&lt;br /&gt;
 root@zero:~# sed -n &amp;quot;3p&amp;quot; text&lt;br /&gt;
 34&lt;br /&gt;
&lt;br /&gt;
Gibt die erste bis dritte Zeile von text aus&lt;br /&gt;
 root@zero:~# sed -n &amp;quot;1,3p&amp;quot; text&lt;br /&gt;
 sogar noch wichtiger&lt;br /&gt;
 123&lt;br /&gt;
 34&lt;br /&gt;
&lt;br /&gt;
Löschen der Zeile mit &amp;quot;sogar&amp;quot;&lt;br /&gt;
 root@zero:~# sed -e '/sogar/d' &amp;lt; text&lt;br /&gt;
 123&lt;br /&gt;
 34&lt;br /&gt;
 4711&lt;br /&gt;
 test&lt;br /&gt;
&lt;br /&gt;
und schreiben in text2&lt;br /&gt;
 root@zero:~# sed -e '/sogar/d' &amp;lt; text &amp;gt; text2&lt;br /&gt;
 root@zero:~# more text2&lt;br /&gt;
 123&lt;br /&gt;
 34&lt;br /&gt;
 4711&lt;br /&gt;
 test&lt;br /&gt;
&lt;br /&gt;
Alle 3en durch DREI ersetzen&lt;br /&gt;
 root@zero:~# sed -e 's/3/DREI/g' &amp;lt; text&lt;br /&gt;
 sogar noch wichtiger&lt;br /&gt;
 12DREI&lt;br /&gt;
 DREI4&lt;br /&gt;
 4711&lt;br /&gt;
 test&lt;br /&gt;
&lt;br /&gt;
==wc==&lt;br /&gt;
Zählt die Anzahl von Zeichen, Wörter oder Zeilen&lt;br /&gt;
&lt;br /&gt;
Optionen&lt;br /&gt;
* -m : Zählt die Anzahl der Zeichen&lt;br /&gt;
 root@zero:~# more name&lt;br /&gt;
 1. karl&lt;br /&gt;
 2. heinz&lt;br /&gt;
 3. hans&lt;br /&gt;
 4. otto&lt;br /&gt;
 root@zero:~# wc '''-m''' tel&lt;br /&gt;
 33 tel&lt;br /&gt;
&lt;br /&gt;
* -w : Zählt die Anzahl der Wörter (einschließlich Zahlen und andere Zeichen)&lt;br /&gt;
 root@zero:~# wc '''-w''' name&lt;br /&gt;
 8 name&lt;br /&gt;
&lt;br /&gt;
* -l : Zählt die Anzahl der Zeilen&lt;br /&gt;
 root@zero:~# wc '''-l''' name&lt;br /&gt;
 4 name&lt;br /&gt;
&lt;br /&gt;
==Sort==&lt;br /&gt;
&lt;br /&gt;
Zum sortieren von Dateien nach Feldern benutzt man sort. sort liest von STDIN man kann die Datei aber auch als Argument übergeben. &lt;br /&gt;
&lt;br /&gt;
Sortiert nach dem ersten Feld&lt;br /&gt;
  root@zero:~# sort /etc/passwd 	 &lt;br /&gt;
&lt;br /&gt;
Es wird geprüft ob die Datei schon sortiert ist &lt;br /&gt;
 root@zero:~# sort -c /etc/passwd 	&lt;br /&gt;
&lt;br /&gt;
Sortiert nach dem ersten Feld (Richtungsumkehr)  &lt;br /&gt;
 root@zero:~#  sort -r /etc/passwd&lt;br /&gt;
&lt;br /&gt;
Führende Leersortzeichen werden ignoriert &lt;br /&gt;
 root@zero:~# sort -b /etc/passwd&lt;br /&gt;
&lt;br /&gt;
Ausgabe  in die Datei pass&lt;br /&gt;
 root@zero:~# sort  /etc/passwd   -o pass	 &lt;br /&gt;
&lt;br /&gt;
nimmt : als Trenner -Voreinstellung ist TAB&lt;br /&gt;
  root@zero:~# sort -t : /etc/passwd&lt;br /&gt;
&lt;br /&gt;
sortiert nach dem  3 Feld,  der Trenner ist : und es wird nummerisch sortiert&lt;br /&gt;
&lt;br /&gt;
 root@zero:~# sort -t: +2 -n /etc/passwd		&lt;br /&gt;
&lt;br /&gt;
sortiert nach dem  3 Feld,  der Trenner ist : und es wird nummerisch sortiert&lt;br /&gt;
					&lt;br /&gt;
 root@zero:~# sort -t: -k 3 -n /etc/passwd&lt;br /&gt;
&lt;br /&gt;
Sortiert nach dem  3  bis zum 5 Feld, der Trenner ist : und es wird nummerisch sortiert&lt;br /&gt;
	&lt;br /&gt;
 root@zero:~# sort -t: -k 3,5 -n /etc/passwd	&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==INodes==&lt;br /&gt;
Inode (oder I-Node) wird im Deutschen am besten als Informationsknoten oder&lt;br /&gt;
Indexeintrag bezeichnet. Er fasst alle Attribute einer Datei zusammen außer dem Inhalt&lt;br /&gt;
und dem Namen der Datei.&lt;br /&gt;
&lt;br /&gt;
===Daten===&lt;br /&gt;
{| border=1 cellpadding=2&lt;br /&gt;
|type&lt;br /&gt;
|Der Typ der Datei wird als einzelner Buchstabe angezeigt. Der Typ einer Datei wird beim Anlegen der Datei festgelegt&lt;br /&gt;
|-&lt;br /&gt;
|Permissions &lt;br /&gt;
|Die Zugriffsrechte der Datei werden in den 12 Bit sstrwxrwxrwx abgespeichert.Wenn sie gesetzt sind, werden sie bei &lt;br /&gt;
der Ausgabe an Stelle der x-Rechte ausgegeben. Die Zugriffsrechte können mit dem Kommando chmod verändert werden.&lt;br /&gt;
|-&lt;br /&gt;
|link count&lt;br /&gt;
|In UNIX kann eine Datei mehr als einen Namen haben. Der Link Count gibt die Anzahl der Namen einer Datei an. Er kann&lt;br /&gt;
mit dem Kommando ln erhöht und dem Kommando rm erniedrigt werden.&lt;br /&gt;
|-&lt;br /&gt;
|owner&lt;br /&gt;
|Für den Dateieigentümer gelten die in der ersten rwx-Gruppe festgelegten Zugriffsrechte. Standardmäßig ist der &lt;br /&gt;
Eigentümer einer Datei derjenige Benutzer, der die Datei angelegt hat.&lt;br /&gt;
|-&lt;br /&gt;
|group&lt;br /&gt;
|Für Benutzer, die in der gleichen Gruppe sind, der die Datei angehört, gelten die in der zweiten rwx-Gruppe festgelegten&lt;br /&gt;
Zugriffsrechte. In System V gehört eine Datei standardmäßig der Gruppe an, in der der anlegende Benutzer gerade ist.&lt;br /&gt;
|-&lt;br /&gt;
|size&lt;br /&gt;
|Bei normalen Dateien und Verzeichnissen gibt diese Information die Länge der Datei in Byte an.&lt;br /&gt;
|-&lt;br /&gt;
|access time&lt;br /&gt;
|Die Zugriffszeit gibt den Zeitpunkt des letzten Lesezugriffes auf eine Datei an. Aus Effizienzgründen wird die &lt;br /&gt;
Zugriffszeit an Verzeichnissen nicht gesetzt, wenn ein Verzeichnis durchsucht wird, obwohl man dies erwarten könnte. ''(ls -l --time=atime)''&lt;br /&gt;
|-&lt;br /&gt;
|modification time&lt;br /&gt;
|Die Modifikationszeit gibt die Zeit des letzten Schreibzugriffes auf die Daten der Datei an. Intern speichert UNIX &lt;br /&gt;
die Zeit als Sekunden seit Beginn des Jahres 1970 und in GMT ab. Für die Ausgabe wird dies in ein besser lesbares &lt;br /&gt;
Format in der lokalen Zeitzone umgewandelt. ''(ls -l)''&lt;br /&gt;
|-&lt;br /&gt;
|change time &lt;br /&gt;
|Die Veränderungszeit gibt das Datum der letzten Statusänderung der Datei an. Sie wird immer dann gesetzt, wenn die &lt;br /&gt;
Informationen über die Datei sich ändern (Datum der Erzeugung wird nicht gespeichert) ''(ls -lc)''&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
===Dateiarten===&lt;br /&gt;
{| border=1 cellpadding=2&lt;br /&gt;
!Zeichen&lt;br /&gt;
!Typ&lt;br /&gt;
!Zweck&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;nowiki&amp;gt;-&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
|file&lt;br /&gt;
|normale Datei&lt;br /&gt;
|-&lt;br /&gt;
|d&lt;br /&gt;
|directory&lt;br /&gt;
|Verzeichnis&lt;br /&gt;
|-&lt;br /&gt;
|b&lt;br /&gt;
|block device&lt;br /&gt;
|Gerätedatei&lt;br /&gt;
|-&lt;br /&gt;
|c&lt;br /&gt;
|character device&lt;br /&gt;
|Gerätedatei&lt;br /&gt;
|-&lt;br /&gt;
|l&lt;br /&gt;
|link&lt;br /&gt;
|Querverweis&lt;br /&gt;
|-&lt;br /&gt;
|p&lt;br /&gt;
|named pipe&lt;br /&gt;
|Benannte Pipeline&lt;br /&gt;
|-&lt;br /&gt;
|s&lt;br /&gt;
|socket&lt;br /&gt;
|Netzwerkverbindung&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
====Normale Dateien====&lt;br /&gt;
Unter einer normalen Datei versteht man die Ansammlung von Daten. Dies kann ein Text, Programm, Bild oder sonstiges sein. &lt;br /&gt;
Beispiel&lt;br /&gt;
 root@zero:~# ls -l text | cut -c 1&lt;br /&gt;
 -&lt;br /&gt;
&lt;br /&gt;
====Verzeichnisse====&lt;br /&gt;
Dateien werden in Verzeichnissen gespeichert, nur so ist eine Ordnung möglich. &lt;br /&gt;
 root@zero:~# mkdir -v Ordner&lt;br /&gt;
 mkdir: Verzeichnis „Ordner“ angelegt&lt;br /&gt;
 &lt;br /&gt;
 root@zero:~# ls -ld Ordner | cut -c 1&lt;br /&gt;
 d&lt;br /&gt;
&lt;br /&gt;
====Gerätedateien (Block und Char)====&lt;br /&gt;
Gerätedateien ermöglichen Anwendungsprogrammen unter Benutzung des  Kernels den Zugriff auf die Hardwarekomponenten des &lt;br /&gt;
Systems. &lt;br /&gt;
&lt;br /&gt;
Beispiele&lt;br /&gt;
&lt;br /&gt;
Sicherung des Master Boot Records der ersten Festplatte&lt;br /&gt;
 root@zero:~# dd if=/dev/sda1 of=/tmp/mbr.img bs=512 count=1&lt;br /&gt;
&lt;br /&gt;
Einhängen des CD-ROM Laufwerks&lt;br /&gt;
 root@zero:~# mount /dev/cdrom /media/cdrom -t iso9660&lt;br /&gt;
&lt;br /&gt;
====Named Pipes====&lt;br /&gt;
Benannte Pipes (Named Pipes) können dagegen auch zur Kommunikation zwischen Prozessen eingesetzt werden, die nicht miteinander&lt;br /&gt;
verwandt sind und sich darüber hinaus auf unterschiedlichen Rechnern innerhalb eines Netzwerkes befinden dürfen. Sie sind &lt;br /&gt;
flexibler als anonyme Pipes und eignen sich für sogenannte Client-Server-Anwendungen (es lassen sich auch RPCs realisieren).&lt;br /&gt;
Benannte Pipes ermöglichen die gleichzeitige Kommunikation in beide Richtungen, das heißt, Daten können im Vollduplexbetrieb &lt;br /&gt;
zwischen den Prozessen ausgetauscht werden.&lt;br /&gt;
 &lt;br /&gt;
Erstelle Named Pipe mit Namen sux. Schreibe &amp;quot;Hallo Welt&amp;quot; in die Pipe sux und bleibe im Hintergrund. Gebe Inhalt der Pipe mit cat aus&lt;br /&gt;
 root@zero:~# mkfifo sux ; echo 'Hallo Welt' &amp;gt; sux &amp;amp; cat &amp;lt; sux&lt;br /&gt;
 [1] 12947&lt;br /&gt;
 Hallo Welt&lt;br /&gt;
 [1]+  Done                    echo 'Hallo Welt' &amp;gt; sux&lt;br /&gt;
&lt;br /&gt;
====Sockets====&lt;br /&gt;
Schnittstelle um es vernetzten Rechnern zu ermöglichen, miteinander zu kommunizieren.&lt;br /&gt;
&lt;br /&gt;
Sie ist in der Regel definiert durch IP-Adresse sowie Port. &lt;br /&gt;
&lt;br /&gt;
====Links====&lt;br /&gt;
Bei Links handelt es sich um symbolische Verweise auf andere Dateien&lt;br /&gt;
&lt;br /&gt;
'''Softlink'''&lt;br /&gt;
Ein Softlink ist eine Datei die nur auf den Namen einer anderen Datei verweist. Wenn die Originaldatei gelöscht wird, zeigt &lt;br /&gt;
der Link ins Leere. &lt;br /&gt;
&lt;br /&gt;
 ln -s datei softlink&lt;br /&gt;
&lt;br /&gt;
{| border=1 cellpadding=2&lt;br /&gt;
| Vorteile&lt;br /&gt;
| Symbolische Links können auch auf Verzeichnisse angelegt werden&amp;lt;br&amp;gt;Sie sind partitionsübergreifend&amp;lt;br&amp;gt;Man kann sie auf Dateien anlegen, die noch nicht existieren&lt;br /&gt;
|-&lt;br /&gt;
| Nachteile&lt;br /&gt;
| Wenn das Original gelöscht ist, ist kein Zugriff mehr möglich&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Beispiel&lt;br /&gt;
 root@zero:~# ln -s text verweis&lt;br /&gt;
 root@zero:~# ls -l verweis&lt;br /&gt;
 lrwxrwxrwx 1 root root 4 2009-06-18 15:48 verweis -&amp;gt; text&lt;br /&gt;
&lt;br /&gt;
'''Hardlinks'''&lt;br /&gt;
 ln datei hardlink&lt;br /&gt;
Eigentlich ist jede Datei ein Hardlink. Ein Hardlink ist ein Verzeichniseintrag,&lt;br /&gt;
der auf eine Inode verweist. Beim Erzeugen einer Datei verweist ein Eintrag auf&lt;br /&gt;
eine Inode. Man kann dann weitere Verweise erzeugen. Der Linkcounter wird&lt;br /&gt;
jeweils um 1 erhöht. Beim Löschen einer Datei wird er jeweils um 1 reduziert.&lt;br /&gt;
Wird der Wert 0 erreicht, ist die Datei gelöscht.&lt;br /&gt;
{| border=1 cellpadding=2&lt;br /&gt;
| Vorteile&lt;br /&gt;
|Zugriff auf die Daten, selbst wenn das Orginal gelöscht ist.&lt;br /&gt;
|-&lt;br /&gt;
|Nachteile&lt;br /&gt;
|Man kann keine Hardlinks auf Verzeichnisse anlegen.&lt;br /&gt;
Ist nur innerhalb einer Partion möglich.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Beispiel&lt;br /&gt;
 root@zero:~# touch 1&lt;br /&gt;
 root@zero:~# echo &amp;quot;text&amp;quot; &amp;gt; 1&lt;br /&gt;
 root@zero:~# ln 1 2&lt;br /&gt;
 root@zero:~# more 2&lt;br /&gt;
 text&lt;br /&gt;
 root@zero:~# echo &amp;quot;doch kein text&amp;quot; &amp;gt; 1&lt;br /&gt;
 root@zero:~# more 1&lt;br /&gt;
 doch kein text&lt;br /&gt;
 root@zero:~# more 2&lt;br /&gt;
 doch kein text&lt;br /&gt;
&lt;br /&gt;
Weitere Optionen:&lt;br /&gt;
 -b sichert Dateien, statt sie zu überschreiben &lt;br /&gt;
 -f Überschreibt bestehende, gleichnamige Dateien&lt;br /&gt;
 -i fragt vor dem Überschreiben nach Bestätigung&lt;br /&gt;
 -v ausführliche Meldungen&lt;br /&gt;
&lt;br /&gt;
==Prozesse==&lt;br /&gt;
===Was ist ein Prozess?===&lt;br /&gt;
Ein Prozess setzt sich aus zwei Teilen zusammen:&lt;br /&gt;
&lt;br /&gt;
1.Programm, das in den Hauptspeicher geladen wurde&lt;br /&gt;
&lt;br /&gt;
2.Prozessumgebung&lt;br /&gt;
&lt;br /&gt;
Unter einem Prozess versteht man ein Programm (binär), das in den Hauptspeicher&lt;br /&gt;
geladen wurde. Also nicht das Program selbst, das auf der Festplatte liegt ist der&lt;br /&gt;
Prozess, sondern es wird erst durch das Laden in den Hauptspeicher dazu.&lt;br /&gt;
Normalerweise liegt ein Programm als ausführbare Datei irgendwo auf der&lt;br /&gt;
Festplatte oder auf Diskette. Ob es sich bei dem Programm um eine binäre Datei&lt;br /&gt;
handelt, kann man mit dem Befehl '' file '' feststellen.&lt;br /&gt;
 &lt;br /&gt;
 root@zero:~# file /bin/mkdir&lt;br /&gt;
 /bin/mkdir: ELF 32-bit LSB executable, Intel 80386, version 1 (SYSV), dynamically linked (uses shared libs), for GNU/Linux 2.6.8, stripped&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Die Datei liegt im Maschinencode vor und kann in den Hauptspeicher geladen&lt;br /&gt;
werden. Sobald dies geschehen ist, kann der Rechner diesen Maschinencode&lt;br /&gt;
abarbeiten (ausführen).&lt;br /&gt;
&lt;br /&gt;
Da aber ein Programm nicht direkt auf die Hardware zugreifen soll, muss es vom&lt;br /&gt;
Betriebsystem kontrolliert werden. Das Betriebssystem liegt logisch gesehen&lt;br /&gt;
zwischen Hardware und Anwendung. Das Betriebssystem ordnet jedem Prozess&lt;br /&gt;
verschiedene Kenndaten zu, um die Prozesse verwalten zu können. Alle&lt;br /&gt;
Kenndaten, die einem Prozess zugeordnet sind, nennt man die&lt;br /&gt;
Prozessumgebung.Wenn man in der Shell ein Kommando eingibt, wird ein Prozess&lt;br /&gt;
kreiert. Natürlich ist die Shell selbst auch ein Prozess. Ein Prozess kann aber&lt;br /&gt;
genauso gut ein Serverprozess (Dienst) sein, z.B. Apache.&lt;br /&gt;
Ein wesentliches Merkmal eines Prozesses ist die Prozesskommunikation. Über im&lt;br /&gt;
Betriebssystem implementierte Methoden ist es möglich, dass verschiedene&lt;br /&gt;
Prozesse Signale und Daten untereinander austauschen können.&lt;br /&gt;
Dadurch wird auch dem Benutzer ermöglicht, einem Prozeß bestimmte Signale zu&lt;br /&gt;
senden bzw. auf den Status eines Prozesses Einfluss zu nehmen.&lt;br /&gt;
&lt;br /&gt;
===Prozesstabelle (Anzeige mit ps)===&lt;br /&gt;
Da zu jedem Prozess Kenndaten geführt werden, müssen diese auch irgendwo&lt;br /&gt;
festgehalten werden. Das geschieht in der sogenannten Prozesstabelle.&lt;br /&gt;
&lt;br /&gt;
Kenndaten der Prozesse (Auswahl):&lt;br /&gt;
* F Flags (z.B. ausgelagert; Systemprozess; Trace,...)&lt;br /&gt;
* UID Nutzer, mit dessen Rechten der Prozess ausgeführt wird&lt;br /&gt;
* PID Prozess - ID. Diese Nummer gibt eine eindeutige Prozess - Nummer&lt;br /&gt;
an. Sie wird vom System automatisch beim Starten des Prozesses&lt;br /&gt;
vergeben und ist für die Laufzeit eindeutig.&lt;br /&gt;
* PPID Prozessnumer der Eltern-Prozesses&lt;br /&gt;
* PRI Priorität eines Prozesses; je niedriger der Wert ist, desto besser&lt;br /&gt;
* NI ist der Nicewert des Prozesses; Nice erniedrigt den Grundwert&lt;br /&gt;
der Priorität des Prozesses und gibt damit Prozessorzeit für andere&lt;br /&gt;
Prozesse frei.&lt;br /&gt;
* SIZE Speichergröße des Prozesses inklusive Stack (eine Art Zwischenspeicher)&lt;br /&gt;
* RSS Verbrauch an physischen Speicher&lt;br /&gt;
* WCHAN ist der Name der Kernerlfunktion, in der der Prozess schläft&lt;br /&gt;
* STAT Status des Prozesses&lt;br /&gt;
R läuft       S schlafend     D nicht störbarer Schlaf&lt;br /&gt;
T angehalten  Z Zombie        W der Prozess belegt keine Seiten&lt;br /&gt;
* TIME Bisland benötigte Prozessorzeit&lt;br /&gt;
* SIZE ist die Größe von Text, Daten und Stack&lt;br /&gt;
* TTY die Nummer des kontrollierenden Teminal; wenn hier ein ? steht,&lt;br /&gt;
handelt es sich um einen Dämon oder Serverprozess.&lt;br /&gt;
* COMMAND Angabe des Prozesses selbst. Dies ist meist der Programmname.&lt;br /&gt;
&lt;br /&gt;
Weiteres&lt;br /&gt;
* GID Gruppe, unter der der Prozess läuft&lt;br /&gt;
* Verweis auf das aktuellen Arbeitsverzeichnis&lt;br /&gt;
* Um mit relativen Pfadangaben arbeiten zu können braucht man diesen Eintrag&lt;br /&gt;
* Tabelle mit Verweisen auf aktuell geöffnete Dateien&lt;br /&gt;
* 3 sind automatisch geöffnet Standardeingabe, Standardausgabe und&lt;br /&gt;
Standardfehlerkanal&lt;br /&gt;
&lt;br /&gt;
Beispiel&lt;br /&gt;
 root@zero:~# ps -l&lt;br /&gt;
 F S   UID   PID  PPID  C PRI  NI ADDR SZ WCHAN  TTY          TIME CMD&lt;br /&gt;
 4 R     0 18639 18631  0  80   0 -  1080 -      pts/0    00:00:00 bash&lt;br /&gt;
 0 R     0 25904 18639  0  80   0 -   635 -      pts/0    00:00:00 ps&lt;br /&gt;
&lt;br /&gt;
===Eltern und Kinder===&lt;br /&gt;
Jeder Prozess kann weitere Prozesse erzeugen. Die erzeugten Prozesse bezeichnet&lt;br /&gt;
man als Kindprozesse. Jeder Kindprozess weiß anhand der PID, woher er stammt.&lt;br /&gt;
&lt;br /&gt;
Alle Prozesse sind von einem anderen Prozess gestartet worden, mit Ausnahme&lt;br /&gt;
des Pseudoprozesses (noch im Kernel beim Starten erzeugter Prozess). Dieser hat&lt;br /&gt;
die Prozessnummer 0. Er hat die Aufgabe, den Init Prozess ( /sbin/init die Nummer&lt;br /&gt;
1) zu starten, der in System V alle anderen Prozesse direkt oder über seine Kind-&lt;br /&gt;
prozesse startet. (init wird konfiguriert durch die /etc/inittab)&lt;br /&gt;
&lt;br /&gt;
Es gibt zwei Arten wie ein Prozess gestartet werden kann:&lt;br /&gt;
&lt;br /&gt;
# Fork und Exec: Prozessumgebung wird dupliziert, der neue Prozess bekommt eine eigene neue PID&lt;br /&gt;
# Exec: Alter Prozess wird durch neuen Prozess überladen (geht mit dem shell-buildin exec)&lt;br /&gt;
&lt;br /&gt;
'''Rechte auf Objekte UID GID'''&lt;br /&gt;
Ob ein Prozess auf eine Datei zugreifen kann, entscheidet der Kernel anhand der&lt;br /&gt;
Zugriffssrechte, die auf der Datei gesetzt sind. Er checkt anhand der UID und GID&lt;br /&gt;
des Prozesses, ob es erlaubt ist. Mit dieser Technik wird letztendlich geprüft, was&lt;br /&gt;
ein User darf, und was nicht.&lt;br /&gt;
&lt;br /&gt;
===Rechenzeit und Priorität===&lt;br /&gt;
Da auch bei Prozessen eine Gerechtigkeit herschen muss, muss eine Instanz&lt;br /&gt;
darüber entscheiden wie lange ein Prozess Rechenzeit verbrauchen darf.&lt;br /&gt;
Folgende Kenndaten werden dazu benötigt&lt;br /&gt;
* clocktick = Zeiteinheit&lt;br /&gt;
* n = Faktor über den Kernel einstellbar&lt;br /&gt;
* slice = n &amp;lt;nowiki&amp;gt;*&amp;lt;/nowiki&amp;gt; clocktick&lt;br /&gt;
* agingtime = weitere Zeiteinheit über den Kernel einstellbar&lt;br /&gt;
&lt;br /&gt;
Es wird davon ausgegangen das der Prozess mit der niedrigsten Priorität gerade&lt;br /&gt;
rechnet. Pro clocktick erhöht sich die Priorität dieses Prozesses um eins.&lt;br /&gt;
&lt;br /&gt;
Jetzt können 3 Situationen eintreten die alle dazu führen das der Scheduler&lt;br /&gt;
aufgerufen wird.&lt;br /&gt;
&lt;br /&gt;
# Prozess blockiert wegen einer Ausgabe oder Eingabe.&lt;br /&gt;
# Gibt Rechenzeit freiwillig ab.&lt;br /&gt;
# Der Slice endet.&lt;br /&gt;
&lt;br /&gt;
Der Aufruf des Schedulers bewirkt das der Prozess mit der niedrigsten Priorität&lt;br /&gt;
gescheduled wird, er also nun rechnen darf. Nach Ablauf der agingtime werden&lt;br /&gt;
nun die Prozesse &amp;quot;gealtert&amp;quot;. Das geschieht nach folgender Formel&lt;br /&gt;
&lt;br /&gt;
Neue Priorität = Alte Priorität / 2 + Nicewert&lt;br /&gt;
&lt;br /&gt;
Der User hat die Möglichkeit, über den sogenannten Nicefaktor den Grundwert für&lt;br /&gt;
einen Prozess zu senken. Der Prozess braucht dann länger für seine Abarbeitung.&lt;br /&gt;
Er verhält sich somit netter zu den anderen Prozessen. Normale User können nur&lt;br /&gt;
netter werden, der Systemverwalter kann auch nicht netter (gemeiner) werden. Der&lt;br /&gt;
Bereich liegt zwischen 19 (sehr nett) bis 0 (weniger nett) für die User, und 19 bis&lt;br /&gt;
-20 für root.&lt;br /&gt;
&lt;br /&gt;
[[Image:pri.png]]&lt;br /&gt;
&lt;br /&gt;
'''Signale'''&lt;br /&gt;
&lt;br /&gt;
Mit den Kommando kill und killall kann man Prozessen Signale schicken&lt;br /&gt;
&lt;br /&gt;
 kill -Signalnummer PID &lt;br /&gt;
&lt;br /&gt;
Signalnummer&lt;br /&gt;
{| border=1 cellpadding=2&lt;br /&gt;
!Signalname&lt;br /&gt;
!Wert&lt;br /&gt;
!Aktion&lt;br /&gt;
|-&lt;br /&gt;
|SIGHUP&lt;br /&gt;
|1&lt;br /&gt;
|Neuinitialisierung eines Prozesses&lt;br /&gt;
|-&lt;br /&gt;
|SIGINT&lt;br /&gt;
|2&lt;br /&gt;
|Interrupt-Signal von der Tastatur (STRG+c)&lt;br /&gt;
|-&lt;br /&gt;
|SIGQUIT&lt;br /&gt;
|3&lt;br /&gt;
|Interrupt-Signal von der Tastatur (STRG+c) mit Dump&lt;br /&gt;
|-&lt;br /&gt;
|SIGKILL&lt;br /&gt;
|9&lt;br /&gt;
|unwiderrufliches Beendigungssignal (Töten)&lt;br /&gt;
|-&lt;br /&gt;
|SIGSEGV&lt;br /&gt;
|11&lt;br /&gt;
|Ungültige Speicherreferenz (bedeutet oft auf defekten Speicher)&lt;br /&gt;
|-&lt;br /&gt;
|SIGTERM &lt;br /&gt;
|15&lt;br /&gt;
|Beendigungssignal (geöffnete Dateien werden geschlossen)&lt;br /&gt;
|-&lt;br /&gt;
|SIGCONT &lt;br /&gt;
|18&lt;br /&gt;
|Weiterfahren, wenn gestoppt&lt;br /&gt;
|-&lt;br /&gt;
|SIGSTOP&lt;br /&gt;
|19&lt;br /&gt;
|Prozessstop&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Beispiel&lt;br /&gt;
 root@zero:~# kill -1 7562&lt;br /&gt;
&lt;br /&gt;
===Programme im Zusammenhang mit Prozessen===&lt;br /&gt;
* ps: Zeigt die Prozesse mit ihrem Status an&lt;br /&gt;
 root@zero:~# ps&lt;br /&gt;
  PID TTY          TIME CMD&lt;br /&gt;
 14134 pts/0    00:00:00 bash&lt;br /&gt;
 14149 pts/0    00:00:00 ps&lt;br /&gt;
&lt;br /&gt;
 root@zero:~# ps -elf | grep apache&lt;br /&gt;
 1 S root      5738     1  0  80   0 -  5461 select Jun16 ?        00:00:00 /usr/sbin/apache2 -k start&lt;br /&gt;
 5 S www-data  5739  5738  0  80   0 -  5581 inet_c Jun16 ?        00:00:00 /usr/sbin/apache2 -k start&lt;br /&gt;
 5 S www-data  5742  5738  0  80   0 -  5461 inet_c Jun16 ?        00:00:00 /usr/sbin/apache2 -k start&lt;br /&gt;
 5 S www-data  5743  5738  0  80   0 -  5461 inet_c Jun16 ?        00:00:00 /usr/sbin/apache2 -k start&lt;br /&gt;
 5 S www-data  5745  5738  0  80   0 -  5461 inet_c Jun16 ?        00:00:00 /usr/sbin/apache2 -k start&lt;br /&gt;
 5 S www-data  5746  5738  0  80   0 -  5461 inet_c Jun16 ?        00:00:00 /usr/sbin/apache2 -k start&lt;br /&gt;
 0 S root     14153 14134  0  80   0 -   837 pipe_w 16:59 pts/0    00:00:00 grep apache&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* nice: Lässt ein Programm mit verändertem Grundwert der Priorität laufen&lt;br /&gt;
 root@zero:~# nice&lt;br /&gt;
 0&lt;br /&gt;
 root@zero:~# nice -n 9 bash&lt;br /&gt;
 root@zero:~# nice&lt;br /&gt;
 9&lt;br /&gt;
 root@zero:~#&lt;br /&gt;
&lt;br /&gt;
* renice: Ändert den Grundwert der Priorität eines laufenden Prozesses&lt;br /&gt;
 root@zero:~# renice 10 5742&lt;br /&gt;
 5742: Alte Priorität: 0, neue Priorität: 10&lt;br /&gt;
&lt;br /&gt;
* top: Zeigt die Prozesse mit ihrem Status an (Abbrechen mit q)&lt;br /&gt;
 root@zero:~# top&lt;br /&gt;
&lt;br /&gt;
* pstree: Zeigt die Prozesse als Baumstruktur&lt;br /&gt;
 root@zero:~# pstree&lt;br /&gt;
 init─┬─NetworkManager&lt;br /&gt;
      ├─acpid&lt;br /&gt;
      ├─apache2───5*[apache2]&lt;br /&gt;
      ├─atd&lt;br /&gt;
      ├─bluetoothd&lt;br /&gt;
      ├─console-kit-dae───63*[{console-kit-dae}]&lt;br /&gt;
      ├─cron&lt;br /&gt;
      ├─cupsd&lt;br /&gt;
      ├─dbus-daemon&lt;br /&gt;
      ├─dd&lt;br /&gt;
      ├─gdm───gdm─┬─Xorg&lt;br /&gt;
      │           └─gdmgreeter&lt;br /&gt;
      ├─6*[getty]&lt;br /&gt;
      ├─hald───hald-runner─┬─hald-addon-acpi&lt;br /&gt;
      │                    ├─hald-addon-inpu&lt;br /&gt;
      │                    └─2*[hald-addon-stor]&lt;br /&gt;
      ├─klogd&lt;br /&gt;
      ├─nm-system-setti&lt;br /&gt;
      ├─nmbd&lt;br /&gt;
      ├─nscd───11*[{nscd}]&lt;br /&gt;
      ├─portmap&lt;br /&gt;
      ├─rpc.statd&lt;br /&gt;
      ├─slapd───2*[{slapd}]&lt;br /&gt;
      ├─smbd───smbd&lt;br /&gt;
      ├─sshd───sshd───bash───bash───pstree&lt;br /&gt;
      ├─syslogd&lt;br /&gt;
      ├─system-tools-ba&lt;br /&gt;
      ├─udevd&lt;br /&gt;
      ├─winbindd─┬─winbindd───winbindd&lt;br /&gt;
      │          └─3*[winbindd]&lt;br /&gt;
      └─wpa_supplicant&lt;br /&gt;
&lt;br /&gt;
===Jobs===&lt;br /&gt;
Unter einem Job versteht man ein Programm, welches man von der Shell gelöst&lt;br /&gt;
hat. D. h. man kann ganz normal weiter arbeiten und der Job verrichtet seinen&lt;br /&gt;
Dienst im Hintergrund. Man kann jederzeit zu diesem Job wieder Kontakt&lt;br /&gt;
aufnehmen.&lt;br /&gt;
&lt;br /&gt;
Ein Job kann auf 2 Arten gestarten werden:&lt;br /&gt;
&lt;br /&gt;
# Durch Anhängen des &amp;amp; Zeichens beim Programmstart&lt;br /&gt;
 root@zero:~# tail -f /var/log/messages &amp;amp;&lt;br /&gt;
 Jun 19 06:59:31 zero -- MARK --&lt;br /&gt;
 Jun 19 07:19:31 zero -- MARK --&lt;br /&gt;
 Jun 19 07:39:32 zero -- MARK --&lt;br /&gt;
 Jun 19 07:44:57 zero syslogd 1.5.0#5ubuntu3: restart.&lt;br /&gt;
 Jun 19 07:59:32 zero -- MARK --&lt;br /&gt;
 Jun 19 08:19:32 zero -- MARK --&lt;br /&gt;
 Jun 19 08:39:32 zero -- MARK --&lt;br /&gt;
 Jun 19 08:59:32 zero -- MARK --&lt;br /&gt;
 Jun 19 09:19:33 zero -- MARK --&lt;br /&gt;
 Jun 19 09:39:33 zero -- MARK --&lt;br /&gt;
 [3] 27421&lt;br /&gt;
&lt;br /&gt;
# Durch Stoppen des Prozesses durch Drücken von Strg-Z und in den Hintergrund schicken mit %n (n ist die Jobnummer)&lt;br /&gt;
 root@zero:~# watch cat /proc/cpuinfo&lt;br /&gt;
 Strg-Z&lt;br /&gt;
 [4]+  Stopped                 watch cat /proc/cpuinfo&lt;br /&gt;
 root@zero:~# bg %4&lt;br /&gt;
 [4]+ watch cat /proc/cpuinfo &amp;amp;&lt;br /&gt;
&lt;br /&gt;
Anweisungen im Zusammenhang mit Jobs (n ist die Jobnummer)&lt;br /&gt;
* bg %n : Einen Job in den Hintergrund stellen (wie oben)&lt;br /&gt;
* fg %n : Einen Job in den Vordergrund holen&lt;br /&gt;
 root@zero:~# fg %4&lt;br /&gt;
 watch cat /proc/cpuinfo&lt;br /&gt;
&lt;br /&gt;
* jobs : Aktive Jobs ausgeben&lt;br /&gt;
&lt;br /&gt;
 root@zero:~# jobs&lt;br /&gt;
 [1]   Running                 tail -f /var/log/syslog &amp;amp;&lt;br /&gt;
 [2]   Running                 tail -f /var/log/syslog &amp;amp;&lt;br /&gt;
 [3]-  Running                 tail -f /var/log/messages &amp;amp;&lt;br /&gt;
 [4]+  Stopped                 watch cat /proc/cpuinfo&lt;br /&gt;
&lt;br /&gt;
* Strg-Z : Einen Vordergrund-Job vorübergehend anhalten&lt;br /&gt;
* kill -STOP %n : Unterbricht Job im Hintergrund&lt;br /&gt;
 root@zero:~# kill -STOP %1&lt;br /&gt;
 root@zero:~# jobs&lt;br /&gt;
 [1]+  '''Stopped'''                 tail -f /var/log/syslog&lt;br /&gt;
 [2]   Running                 tail -f /var/log/syslog &amp;amp;&lt;br /&gt;
 [3]   Running                 tail -f /var/log/messages &amp;amp;&lt;br /&gt;
 [4]-  Stopped                 watch cat /proc/cpuinfo&lt;br /&gt;
* kill -CONT %n : Setzt den unterbrochenen Job im Hintergrund fort&lt;br /&gt;
root@zero:~# kill -CONT %1&lt;br /&gt;
root@zero:~# jobs&lt;br /&gt;
 [1]+  '''Running'''                 tail -f /var/log/syslog &amp;amp;&lt;br /&gt;
 [2]   Running                 tail -f /var/log/syslog &amp;amp;&lt;br /&gt;
 [3]   Running                 tail -f /var/log/messages &amp;amp;&lt;br /&gt;
 [4]-  Stopped                 watch cat /proc/cpuinfo&lt;br /&gt;
* kill -KILL %n : Tötet Job im Hintergrund&lt;br /&gt;
 root@zero:~# kill -KILL %1&lt;br /&gt;
 root@zero:~# jobs&lt;br /&gt;
 [1]+  '''Killed'''                  tail -f /var/log/syslog&lt;br /&gt;
 [2]   Running                 tail -f /var/log/syslog &amp;amp;&lt;br /&gt;
 [3]   Running                 tail -f /var/log/messages &amp;amp;&lt;br /&gt;
 [4]-  Stopped                 watch cat /proc/cpuinfo&lt;br /&gt;
 root@zero:~# jobs&lt;br /&gt;
 [2]   Running                 tail -f /var/log/syslog &amp;amp;&lt;br /&gt;
 [3]-  Running                 tail -f /var/log/messages &amp;amp;&lt;br /&gt;
 [4]+  Stopped                 watch cat /proc/cpuinfo&lt;br /&gt;
&lt;br /&gt;
Bedingungen, die zu Jobausführung eingehalten werden sollen:&lt;br /&gt;
* Der Job soll nicht auf den Bildschirm schreiben (Standardausgabe +Standardfehlerkanal).&lt;br /&gt;
* Er soll keine Eingaben vom Benutzer erwarten.&lt;br /&gt;
&lt;br /&gt;
==Suchen von Dateien==&lt;br /&gt;
===find===&lt;br /&gt;
 find ab_wo_wird_gesucht was_wird_gesucht aktion&lt;br /&gt;
 find [Pfad] [Bedingung] [Aktion]&lt;br /&gt;
&lt;br /&gt;
====Nach Namen====&lt;br /&gt;
 find [Pfad] '''-name''' [Name]&lt;br /&gt;
 &lt;br /&gt;
Finde alle Dateien mit Namen test ab dem Verzeichnis /home und gebe diese Zeilenweise aus&lt;br /&gt;
 root@zero:~# find /home -name test -print&lt;br /&gt;
 /home/xinux/test&lt;br /&gt;
 /home/test&lt;br /&gt;
&lt;br /&gt;
Wie oben, jedoch mit Namensanfang test&lt;br /&gt;
 root@zero:/home/xinux# find /home -name 'test*'&lt;br /&gt;
 /home/xinux/testdatei&lt;br /&gt;
 /home/xinux/test&lt;br /&gt;
 /home/test&lt;br /&gt;
&lt;br /&gt;
====Nach Benutzer(Eigentümer)====&lt;br /&gt;
 root@zero:/tmp# find /tmp/ '''-user''' xinux&lt;br /&gt;
 /tmp/datei&lt;br /&gt;
&lt;br /&gt;
====Nach Gruppe====&lt;br /&gt;
 root@zero:/tmp# find /tmp/ '''-group''' hacker&lt;br /&gt;
 /tmp/datei3&lt;br /&gt;
 /tmp/datei2&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
====Nach Typ====&lt;br /&gt;
Es wird nach Dateien anhand Ihrer Art gesucht:&lt;br /&gt;
 find [Pfad] '''-type''' [Typ] &lt;br /&gt;
Typ:&lt;br /&gt;
* f: Normale Dateien&lt;br /&gt;
 root@zero:~# find /tmp/ -type f&lt;br /&gt;
 /tmp/mbr.img&lt;br /&gt;
 /tmp/datei&lt;br /&gt;
 /tmp/zeugs&lt;br /&gt;
 /tmp/.X0-lock&lt;br /&gt;
* d: Verzeichnisse&lt;br /&gt;
 root@zero:~# find /var/log -type d&lt;br /&gt;
 /var/log&lt;br /&gt;
 /var/log/apache2&lt;br /&gt;
 /var/log/unattended-upgrades&lt;br /&gt;
 /var/log/apparmor&lt;br /&gt;
 /var/log/ConsoleKit&lt;br /&gt;
 /var/log/dist-upgrade&lt;br /&gt;
 /var/log/dist-upgrade/20090526-1052&lt;br /&gt;
 /var/log/cups&lt;br /&gt;
 /var/log/apt&lt;br /&gt;
 /var/log/fsck&lt;br /&gt;
 /var/log/samba&lt;br /&gt;
 /var/log/samba/cores&lt;br /&gt;
 /var/log/samba/cores/smbd&lt;br /&gt;
 /var/log/samba/cores/nmbd&lt;br /&gt;
 /var/log/samba/cores/winbindd&lt;br /&gt;
 /var/log/installer&lt;br /&gt;
 /var/log/gdm&lt;br /&gt;
 /var/log/news&lt;br /&gt;
* c: Char Devices (Zeichenorientierte Gerätedatei)&lt;br /&gt;
 root@zero:~# find / -type c&lt;br /&gt;
 /lib/udev/devices/kmem&lt;br /&gt;
 /lib/udev/devices/null&lt;br /&gt;
 /lib/udev/devices/console&lt;br /&gt;
 /lib/udev/devices/ppp&lt;br /&gt;
 /lib/udev/devices/net/tun&lt;br /&gt;
* b: Block Devices (Blockorientierte Gerätedatei)&lt;br /&gt;
* p: Benannte Pipe&lt;br /&gt;
* l: Links&lt;br /&gt;
* s: Sockets&lt;br /&gt;
&lt;br /&gt;
====Nach Modifikation====&lt;br /&gt;
Listet alle Dateien in /etc auf, die innerhalb von zwei Tagen modifiziert wurden&lt;br /&gt;
 root@zero:/var/log# find /etc/ -mtime 2 -print&lt;br /&gt;
 /etc/apache2&lt;br /&gt;
 /etc/apache2/mods-available&lt;br /&gt;
 /etc/apache2/conf.d&lt;br /&gt;
 /etc/apache2/sites-available&lt;br /&gt;
 /etc/bash_completion.d&lt;br /&gt;
 /etc/blkid.tab.old&lt;br /&gt;
 /etc/firefox-3.0/profile&lt;br /&gt;
 /etc/firefox-3.0/profile/chrome&lt;br /&gt;
 /etc/firefox-3.0/pref&lt;br /&gt;
 /etc/profile.d&lt;br /&gt;
 /etc/ufw/applications.d&lt;br /&gt;
 /etc/logrotate.d&lt;br /&gt;
 /etc/xulrunner-1.9&lt;br /&gt;
 /etc/blkid.tab&lt;br /&gt;
 /etc/cron.daily&lt;br /&gt;
 /etc/alternatives&lt;br /&gt;
 /etc/alternatives/x-www-browser&lt;br /&gt;
 /etc/alternatives/xulrunner&lt;br /&gt;
 /etc/gre.d&lt;br /&gt;
 /etc/hal/fdi/policy&lt;br /&gt;
 /etc/dbus-1/system.d&lt;br /&gt;
 /etc/udev/rules.d&lt;br /&gt;
&lt;br /&gt;
====Nach Größe====&lt;br /&gt;
Finde Dateien in /tmp, die größer als 100 MByte sind&lt;br /&gt;
 root@zero:/tmp# find /tmp/ -size +100M&lt;br /&gt;
 /tmp/datei&lt;br /&gt;
&lt;br /&gt;
Finde Dateien in /tmp, die kleiner als 100 KByte sind&lt;br /&gt;
 root@zero:/tmp# find /tmp/ -size -100k&lt;br /&gt;
 /tmp/&lt;br /&gt;
 /tmp/datei3&lt;br /&gt;
 /tmp/backup &lt;br /&gt;
 /tmp/datei2&lt;br /&gt;
 /tmp/.winbindd &lt;br /&gt;
 /tmp/.winbindd/pipe&lt;br /&gt;
 /tmp/mbr.img&lt;br /&gt;
 /tmp/zeugs&lt;br /&gt;
 /tmp/.ICE-unix&lt;br /&gt;
 /tmp/.X0-lock&lt;br /&gt;
 /tmp/datei1&lt;br /&gt;
 /tmp/.X11-unix&lt;br /&gt;
 /tmp/.X11-unix/X0&lt;br /&gt;
 /tmp/pulse-PKdhtXMmr18n&lt;br /&gt;
&lt;br /&gt;
====Nach Berechtigungen====&lt;br /&gt;
Finde Dateien in Home mit der Berechtigung 777 (-rwxrwxrwx)&lt;br /&gt;
 root@zero:/var# find /home/ -perm 777&lt;br /&gt;
 /home/samba&lt;br /&gt;
 /home/xinux/Examples&lt;br /&gt;
 /home/xinux/.pulse/1f0763ee4cf4c7e1d3c07fd149dda37b:runtime&lt;br /&gt;
 /home/test/Examples&lt;br /&gt;
&lt;br /&gt;
===locate===&lt;br /&gt;
Locate arbeitet über einen Index, der erstellt und aktualisiert werden muss. Aus diesem Grund kann locate teilweise nicht &lt;br /&gt;
akutell sein. Es ist immer schneller als find und es durchsucht immer das ganze Dateisystem. &lt;br /&gt;
 locate [Dateiname]&lt;br /&gt;
 &lt;br /&gt;
Lokalisiere die Datei wvdial.conf. Anmerkung: Der Stern wird beim Suchen automatisch hinzugefügt. Entspricht also&lt;br /&gt;
wvidal.conf*&lt;br /&gt;
 root@zero:~# locate wvdial.conf&lt;br /&gt;
 /etc/wvdial.conf&lt;br /&gt;
 /usr/share/man/man5/wvdial.conf.5.gz&lt;br /&gt;
 /var/lib/dpkg/info/wvdial.conffiles&lt;br /&gt;
 /var/lib/dpkg/info/wvdial.config&lt;br /&gt;
&lt;br /&gt;
Lokalisiere die Datei wvdial.conf und nur diese&lt;br /&gt;
 root@zero:~# locate -b '\wvdial.conf'&lt;br /&gt;
 /etc/wvdial.conf&lt;br /&gt;
&lt;br /&gt;
Aktualisieren des Indexes&lt;br /&gt;
 root@zero:~# updatedb&lt;br /&gt;
&lt;br /&gt;
==Wie wird ein Kommando lokalisiert==&lt;br /&gt;
Wenn die Shell alle Ersetzungen in der Kommandozeile vorgenommen und alle Umleitungen vorbereitet hat, ist der Zeitpunkt &lt;br /&gt;
gekommen, auf den der Anwender die ganze Zeit gewartet hat. Die Shell versucht das Kommando auszuführen. Dazu muss sie &lt;br /&gt;
es aber erst lokalisieren. Das erste passende Kommando wird ausgeführt.&lt;br /&gt;
&lt;br /&gt;
Als Kommandoname wird immer das erste Wort eines einfachen Kommandos erkannt. Ein Kommandoname kann mit Pfadnamen in &lt;br /&gt;
einem Verzeichnis (absolut oder relativ) angegeben werden. Die Shell erkennt dies an (mindestens) einem Slash `/' &lt;br /&gt;
im Kommandonamen. Wenn kein Verzeichnis angegeben ist, versucht die Shell selbst, das Kommando zu finden. Dazu wird &lt;br /&gt;
der Kommandoname zuerst in der Hashtabelle gesucht, dann wird er mit den Synonymen, mit den Scriptfunktionen und &lt;br /&gt;
schließlich mit den Shellfunktionen verglichen. &lt;br /&gt;
&lt;br /&gt;
Wird auf diese Weise kein Programm dieses Namens gefunden, werden alle in der PATH-Umgebungsvariablen aufgeführten &lt;br /&gt;
Verzeichnisse nach einer ausführbaren Datei dieses Namens durchsucht. Wird auch hier kein passendes Kommando gefunden, &lt;br /&gt;
gibt die Shell eine Fehlermeldung aus.&lt;br /&gt;
&lt;br /&gt;
===which und type===&lt;br /&gt;
====which====&lt;br /&gt;
which gibt die vollen Pfadnamen der Dateien aus, die bei Benutzung des angegebenen Befehls ausgeführt werden würden.&lt;br /&gt;
&lt;br /&gt;
 which [-a] Dateiname &lt;br /&gt;
&lt;br /&gt;
Optionen:&lt;br /&gt;
&lt;br /&gt;
* -a : Alle Treffer ausgeben, nicht nur den ersten&lt;br /&gt;
* --skip-dot : Verzeichnisse, die mit einem Punkt beginnen, auslassen&lt;br /&gt;
&lt;br /&gt;
Beispiel&lt;br /&gt;
 root@zero:~# which startx&lt;br /&gt;
 /usr/bin/startx&lt;br /&gt;
&lt;br /&gt;
====type====&lt;br /&gt;
Anzeigen der absoluten Pfadnamen von Befehlen, und ob sich diese Befehle in der Hash-Tabelle der aktuellen&lt;br /&gt;
Shell befinden.&lt;br /&gt;
&lt;br /&gt;
 type [Optionen] Befehle&lt;br /&gt;
&lt;br /&gt;
Beispiel&lt;br /&gt;
 root@zero:~# type ls&lt;br /&gt;
 ls is aliased to `ls --color=auto'&lt;br /&gt;
&lt;br /&gt;
Optionen:&lt;br /&gt;
&lt;br /&gt;
* -a : Alle vorkommenden Befehle werden ausgegeben, nicht nur das, welches aufgerufen werden würde&lt;br /&gt;
 root@zero:~# type '''-a''' ls&lt;br /&gt;
 ls is aliased to `ls --color=auto'&lt;br /&gt;
 ls is /bin/ls&lt;br /&gt;
&lt;br /&gt;
* -p : Anzeigen des Eintrags von Befehl in der Hash-Tabelle. Dieser Wert kann sich vom ersten Auftreten des Befehls in PATH&lt;br /&gt;
unterscheiden&lt;br /&gt;
 root@zero:~# type '''-p''' apache2&lt;br /&gt;
 /usr/sbin/apache2&lt;br /&gt;
&lt;br /&gt;
* -t : Anzeigen, ob Befehl ein Aliasname, ein Schlüsselwort, eine Funktion, ein eingebauter Befehl oder eine Datei ist&lt;br /&gt;
 root@zero:~# type '''-t''' apache2&lt;br /&gt;
 file&lt;/div&gt;</summary>
		<author><name>192.168.178.46</name></author>
	</entry>
	<entry>
		<id>https://www.xinux.net/index.php?title=Linux_Grundlagen&amp;diff=77</id>
		<title>Linux Grundlagen</title>
		<link rel="alternate" type="text/html" href="https://www.xinux.net/index.php?title=Linux_Grundlagen&amp;diff=77"/>
		<updated>2009-07-07T10:48:06Z</updated>

		<summary type="html">&lt;p&gt;192.168.178.46: /* Normale Dateien */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Einführung==&lt;br /&gt;
===Geschichte Unix===&lt;br /&gt;
====1969====&lt;br /&gt;
Am Anfang von Linux steht Multics, ein von Bell Laboratories geschaffenes &amp;quot;Betriebssystem&amp;quot;, &lt;br /&gt;
das noch mit Lochkarten arbeitete. Multics wird mit Unterstützung von AT&amp;amp;T und Western &lt;br /&gt;
Electric unter Mitarbeit von Ken Thompson und Dennis Ritchie weiterentwickelt. Obwohl sich &lt;br /&gt;
Bell Laboratories bald zurückzieht, gibt Thompson das Projekt nicht auf.  Zum Entwicklerteam &lt;br /&gt;
gehören auch Rudd Canaday und Brian Kernighan. Letzterer gibt 1970 dem Betriebssystem den Namen UNIX. &lt;br /&gt;
Thompson definiert 7 Richtlinien für UNIX:&lt;br /&gt;
 &lt;br /&gt;
# Hierarchische Anordnung der Dateisysteme&lt;br /&gt;
# Die Ausgabe von Daten an die Peripherie(-geräte) und Dateien soll gleich sein.&lt;br /&gt;
# Prozesse und Programme sollen miteinander kommunizieren.&lt;br /&gt;
# Multitasking (voneinander getrennte Prozesse)&lt;br /&gt;
# Persönliche Shell's&lt;br /&gt;
# Der Compiler soll für viele Programmiersprachen tauglich sein.&lt;br /&gt;
# Portabilität&lt;br /&gt;
&lt;br /&gt;
====1971====&lt;br /&gt;
Bis 1971 ist das für eine DEC PDP-7 geschriebene Unix als Version 1 auf eine PDP-11 portiert. Bis&lt;br /&gt;
zur Version 4 entwickelt Ritchie die Programmier- (Hoch-) Sprache C. Das in Assembler geschriebene&lt;br /&gt;
Unix wird fast völlig nach C übersetzt, wodurch zum erstenmal die geforderte Hardware-Unabhängigkeit&lt;br /&gt;
des Betriebssystems realisiert werden kann.&lt;br /&gt;
&lt;br /&gt;
====1975====&lt;br /&gt;
Da AT&amp;amp;T aufgrund vertraglicher Bindungen mit der US-Bundesregierung Unix nicht kommerziell vermarkten darf, stellt sie den Source Code für ein paar hundert Dollar den Universitäten, Lehr- und Forschungsanstalten zur Verfügung. Dies führt zu einer sehr dynamischen Entwicklung von Unix. 1975 wird die Version 6 als erstes UNIX-System veröffentlicht, die darauffolgende Version 7 wird sehr erfolgreich. Da es keine Standardisierung gibt, entwickeln bald verschiedenste Firmen ihr eigenes UNIX. Ab 1984 wird AT&amp;amp;T per Gerichtsbeschluss erlaubt, Unix zu vermarkten. AT&amp;amp;T verkauft sein Unix V und beginnt, sich um einen internationalen Standard von UNIX zu bemühen. &lt;br /&gt;
&lt;br /&gt;
====1984====&lt;br /&gt;
Durch Richard Stallman wird die Free Software Foundation (FSF) gegründet. Diese initiiert ein Projekt namens GNU (GNU ist Not Unix), welches das Ziel verfolgt, ein freies UNIX System zu schaffen. &lt;br /&gt;
&lt;br /&gt;
====1987====&lt;br /&gt;
AT&amp;amp;T verbietet die Verwendung des Unix Quellcodes an den Universitäten. Während dieser Zeit ist Andrew (Andy) Tannenbaum Professor an der Freien Universität von Amsterdam und entwickelt Minix. Minix ist ein kostengünstiges Lehrbetriebssystem und kommt ohne jeglichen AT&amp;amp;T Code aus, obwohl es die gleiche Funktionalität wie Unix 7 bietet. Im Usenet unter comp.os.minix entsteht eine Minix-Gemeinde, die den Minix Kernel und die Anwendungen rundherum programmiert und verbessert.&lt;br /&gt;
&lt;br /&gt;
====1991====&lt;br /&gt;
Linus Torvalds hat als Student für Computerwissenschaften an der Universität in Helsinki Minix installiert und das Buch von Andy Tannenbaum gelesen. Er beginnt im Sinne der FSF einen Unix ähnlichen Kernel zu programmieren mit der Idee, &amp;quot;ein besseres Minix als Minix&amp;quot; zu bauen. 1992 stellt er die Version 0.02 mit dem Namen Linux der Internetgemeinde zur Verfügung. &lt;br /&gt;
&lt;br /&gt;
====1994====&lt;br /&gt;
Die Linux Version 1.0 wird freigegeben. Das Linux Fieber beginnt... &lt;br /&gt;
&lt;br /&gt;
====1998====&lt;br /&gt;
Der Kreis der Linux Entwickler und Anwender ist kräftig angeschwollen. KDE 1.0 wird veröffentlicht. Die Zuwachsraten von Linux übertreffen die von Windows NT deutlich. &lt;br /&gt;
&lt;br /&gt;
====1999====&lt;br /&gt;
Der lange erwartete stabile Linux Kernel Version 2.2 wird freigegeben. Namhafte Firmen wie IBM kündigen ihre Unterstützung für Linux an. &lt;br /&gt;
&lt;br /&gt;
====2001====&lt;br /&gt;
Der lange erwartete stabile Linux Kernel Version 2.4 wird freigegeben. USB Unterstützung und eine neue Firewallimplementierung zeichnen ihn aus.&lt;br /&gt;
&lt;br /&gt;
====2003====&lt;br /&gt;
Linux Kernel Version 2.6 wird freigegeben. Am auffälligsten sind Änderungen bei der Modulverwaltung.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Distributionen===&lt;br /&gt;
{| Border=1 Cellpadding=2&lt;br /&gt;
| &lt;br /&gt;
|Url&lt;br /&gt;
|Paketformat&lt;br /&gt;
|-&lt;br /&gt;
|Red Hat&lt;br /&gt;
|www.redhat.com&lt;br /&gt;
|rpm&lt;br /&gt;
|-&lt;br /&gt;
|fedora&lt;br /&gt;
|fedora.redhat.com&lt;br /&gt;
|rpm&lt;br /&gt;
|-&lt;br /&gt;
|CentOS&lt;br /&gt;
|www.centos.org&lt;br /&gt;
|rpm&lt;br /&gt;
|-&lt;br /&gt;
|Suse/openSUSE&lt;br /&gt;
|www.opensuse.org&lt;br /&gt;
|rpm&lt;br /&gt;
|-&lt;br /&gt;
|Debian&lt;br /&gt;
|www.debian.org&lt;br /&gt;
|deb&lt;br /&gt;
|-&lt;br /&gt;
|Ubuntu&lt;br /&gt;
|www.ubuntu.com&lt;br /&gt;
|deb&lt;br /&gt;
|-&lt;br /&gt;
|Mandrake&lt;br /&gt;
|www.linux-mandrake.com&lt;br /&gt;
|rpm&lt;br /&gt;
|-&lt;br /&gt;
|Easy Linux&lt;br /&gt;
|www.easy-linux.de&lt;br /&gt;
|rpm&lt;br /&gt;
|-&lt;br /&gt;
|Turbo&lt;br /&gt;
|www.turbolinux.com&lt;br /&gt;
|rpm&lt;br /&gt;
|-&lt;br /&gt;
|minis&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|toms&lt;br /&gt;
|www.toms.net/rb&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|damn small linux&lt;br /&gt;
|www.damnsmalllinux.org&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|pocket-linux&lt;br /&gt;
|www.pocket-linux.org&lt;br /&gt;
|&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
====Bücher====&lt;br /&gt;
 Titel : Das Linux Anwenderhandbuch und Leitfaden für die Systemverwaltung&lt;br /&gt;
 Autor : Sebastian Hetze, Dirk Hohndel, Olaf Kirch und Martin Müller&lt;br /&gt;
 Verlag: Lunetix&lt;br /&gt;
 ISBN : 3-929764-06-7&lt;br /&gt;
&lt;br /&gt;
 Titel : Linux in a Nutshell&lt;br /&gt;
 Autor : Jessica Perry Hekman und die Mitarbeiter von O'Reilly &amp;amp; Associates&lt;br /&gt;
 Verlag: O'Reilly&lt;br /&gt;
 ISBN : 3-930673-57-6&lt;br /&gt;
&lt;br /&gt;
 Titel : Linux - Wegweiser zur Installation und Konfiguration&lt;br /&gt;
 Autor : Matt Welsh, Lar Kaufman, Matthias Kalle Dallheimer&lt;br /&gt;
 Verlag: O'Reilly&lt;br /&gt;
 ISBN : 3-930673-58-4 (deutsch), 1-56592-469-X (englisch)&lt;br /&gt;
&lt;br /&gt;
 Titel : Linux - Installation, Konfiguration, Anwendung&lt;br /&gt;
 Autor : Michael KoflerMultitasking&lt;br /&gt;
 Verlag: Addison-Wesley&lt;br /&gt;
 ISBN : 3-8273-1475-5&lt;br /&gt;
&lt;br /&gt;
 Titel : Linux - Wegweiser für Netzwerker&lt;br /&gt;
 Autor : Olaf Kirch&lt;br /&gt;
 Verlag: O'Reilly&lt;br /&gt;
 ISBN : 3-930673-18-5&lt;br /&gt;
&lt;br /&gt;
 Titel : TCP/IP-Netzwerk-Administration&lt;br /&gt;
 Autor : Craig Hunt&lt;br /&gt;
 Verlag: O'Reilly&lt;br /&gt;
 ISBN : 3-89721-110-6&lt;br /&gt;
&lt;br /&gt;
 Titel : Essential System Administration&lt;br /&gt;
 Autor : Eleen Frisch&lt;br /&gt;
 Verlag: O'Reilly&lt;br /&gt;
 ISBN : 1-56592-127-5&lt;br /&gt;
&lt;br /&gt;
==Betriebssystem==&lt;br /&gt;
===Was ist ein Betriebssystem?===&lt;br /&gt;
&lt;br /&gt;
Ein Betriebssystem liegt logisch gesehen zwischenAnwendungsprogramm und Hardware.&lt;br /&gt;
&lt;br /&gt;
Es nimmt die Anforderungen der Anwendungsprogramme entgegen und leitet&lt;br /&gt;
diese kontrolliert an die Hardware weiter. Kein Anwendungsprogramm sollte&lt;br /&gt;
direkt auf die Hardware zugreifen können. Den zentralen Zugang schafft einzig&lt;br /&gt;
das Betriebssystem. Somit kann das Betriebssystem unsinnige Anforderungen&lt;br /&gt;
oder Bedienungsfehler abblocken.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Image:Linux.jpg]]&lt;br /&gt;
&lt;br /&gt;
===Aufgaben eines Betriebssystems===&lt;br /&gt;
&lt;br /&gt;
# Verbergen der Komplexität der Maschine vor dem Anwender (Abstraktion)&lt;br /&gt;
# Bereitstellen einer Benutzerschnittstelle (&amp;quot;Kommandointerpreter&amp;quot;, &amp;quot;Shell&amp;quot;)&lt;br /&gt;
# Bereitstellen einer normierten Programmierschnittstelle (API)&lt;br /&gt;
# Verwaltung der Ressourcen der Maschine::&lt;br /&gt;
Hauptspeicher&lt;br /&gt;
Prozessor(en)&lt;br /&gt;
Hintergrundspeicher (Platte, Band, etc.)&lt;br /&gt;
Geräte (Terminal, Drucker, Plotter, etc.)&lt;br /&gt;
Rechenzeit&lt;br /&gt;
Koordination von Prozessen&lt;br /&gt;
&lt;br /&gt;
===Aufbau eines Betriebssystems===&lt;br /&gt;
&lt;br /&gt;
Ein Rechensystem besteht aus Hardware, Systemprogrammen und Anwendungs-&lt;br /&gt;
programmen. Unter einem Betriebssystem wird meist die Summe aus Betriebs-&lt;br /&gt;
systemkern (Kernel) und den wichtigsten Systemprogrammen verstanden. Ein&lt;br /&gt;
minimaler LINUX-Kernel besitzt ungefähr eine Größe von 400 - 800 kByte.&lt;br /&gt;
Weitere wichtige Systemkomponenten benötigen zusätzlich 10 - 100 Mbyte&lt;br /&gt;
Plattenplatz.&lt;br /&gt;
&lt;br /&gt;
Ein Betriebssystem stellt den Rechner als erweiterte Maschine (virtuelle&lt;br /&gt;
Maschine) über definierte Software-Schnittstellen zur Verfügung.&lt;br /&gt;
Das Betriebssystem dient als Betriebsmittelverwalter, der Anforderungen&lt;br /&gt;
befriedigt, protokolliert, abrechnet und vermittelt.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Aufgaben des Betriebssystemkerns:&lt;br /&gt;
&lt;br /&gt;
{| Border=1 Cellpadding=2&lt;br /&gt;
|Prozessverwaltung  (dispatching and scheduling)&lt;br /&gt;
| Mehrere Benutzer können mit mehreren Aktionen gleichzeitig im System arbeiten, ohne sich gegenseitig zu beeinflussen. Damit dies möglich ist,  müssen die Aktionen organisiert, koordiniert und verwaltet werden. Die zu verwaltende Einheit nennt man Prozess.&lt;br /&gt;
|-&lt;br /&gt;
|Speicherverwaltung   (memory management)&lt;br /&gt;
|Zuteilen von Speicherbereichen an laufende Prozesse, Schutz der Speicherbereiche vor unbefugten Zugriffen, bei Speicherengpässen: Auslagern von ganzen (swapping) oder von Teilen (paging) von Prozessen auf die Platte (swap file).&lt;br /&gt;
|-&lt;br /&gt;
|Dateiverwaltung  (file handling)&lt;br /&gt;
|Zuteilung von Plattenplatz für Programme, Benutzer und Systemdienste, Schreiben, Lesen und Strukturieren der Daten auf den Massenspeichern; Durch Bereitstellung einer entsprechenden Schnittstelle (VFS, virtual file system) kann der Kern Dateisysteme unterschiedlichster Art (EXT2, FAT, NFS, HPFS, NTFS, ...) ansprechen.&lt;br /&gt;
|-&lt;br /&gt;
|Geräteverwaltung  (resource management)&lt;br /&gt;
|Der Kern ermöglicht und kontrolliert den Zugriff auf die Hardware. Er steuert die Ein- und Ausgabetätigkeiten der Anwender. An den Kern&lt;br /&gt;
gebunden sind die entsprechenden Gerätetreiber (device driver), die damit eine Kommunikation zwischen Kern und Hardware ermöglichen.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
===Multitasking===&lt;br /&gt;
&lt;br /&gt;
Multitasking bedeutet, dass ein Rechner aus Anwendersicht mehrere Aufgaben&lt;br /&gt;
(Tasks) gleichzeitg übernehmen kann. Das Betriebssystem (OS) unterteilt die&lt;br /&gt;
gleichzeitig anstehenden Aufgaben in Einzelarbeitsschritte (Prozesse) und&lt;br /&gt;
managed durch ein Zeitscheibenverfahren (scheduling) die gleichmäßige&lt;br /&gt;
Abarbeitung der Prozesse.&lt;br /&gt;
&lt;br /&gt;
Es wird unterschieden zwischen:&lt;br /&gt;
&lt;br /&gt;
*non-präamptiven (kooperativen=die Ressourcen werden vom aktiven Prozess freigegeben, bei einem Hänger steht das ganze System)&lt;br /&gt;
&lt;br /&gt;
und&lt;br /&gt;
&lt;br /&gt;
*präamptiven (reinem=der Betriebssystemkern steuert Taskwechsel, indem nach einer festgelegten Zeit vom gerade aktiven Prozess zum nächsten weitergeschaltet wird)&lt;br /&gt;
&lt;br /&gt;
===Mehrprozessorbetrieb===&lt;br /&gt;
&lt;br /&gt;
Bei mehreren Prozessoren und Unterstützung durch das OS&lt;br /&gt;
(NT,Linux,Unix,Novell) können mehrere Tasks auf diese verteilt werden und&lt;br /&gt;
gleichzeitig bearbeitet werden. Nachteilig ist, dass dies nicht oder kaum von&lt;br /&gt;
Anwendungsprogrammen unterstützt wird und es zu Kommunikationsproblemen&lt;br /&gt;
zwischen den einzelnen Tasks kommen kann.&lt;br /&gt;
&lt;br /&gt;
===Arten von von Betriebssystemen===&lt;br /&gt;
&lt;br /&gt;
{|Border=1 Cellpadding=2&lt;br /&gt;
|&lt;br /&gt;
|SingleUser  &lt;br /&gt;
|Multiuser&lt;br /&gt;
|-&lt;br /&gt;
|Single Tasking&lt;br /&gt;
|MS - DOS&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|Multi Tasking&lt;br /&gt;
|Windows 3.x&lt;br /&gt;
|UNIX&lt;br /&gt;
|-&lt;br /&gt;
|&lt;br /&gt;
|Windows 95/98&lt;br /&gt;
|Linux&lt;br /&gt;
|-&lt;br /&gt;
|&lt;br /&gt;
|Windows NT4 ohne Erweiterungen&lt;br /&gt;
|VMS&lt;br /&gt;
|-&lt;br /&gt;
|&lt;br /&gt;
|OS/2 &lt;br /&gt;
|Windows NT mit  Erweiterungen&lt;br /&gt;
|-&lt;br /&gt;
|&lt;br /&gt;
|Apple&lt;br /&gt;
|Windows 2000, XP, 2003&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
===SHELL===&lt;br /&gt;
&lt;br /&gt;
Wenn man mit Linux arbeiten will, kann man nicht direkt mit dem Betriebssystem&lt;br /&gt;
kommunizieren. Man braucht dazu ein Hilfsprogramm, welches die&lt;br /&gt;
Kommandoeingaben ordnungsgemäß an das Betriebssystem weiterleitet. Dieses&lt;br /&gt;
Hilfsprogramm hat den Namen Shell.&lt;br /&gt;
&lt;br /&gt;
Die Shell schirmt den Betriebssystemkern von den Anwendungsprogrammen ab.&lt;br /&gt;
Die unterschiedlichen Shells erfüllen alle dieselbe Aufgabe, sie unterscheiden sich&lt;br /&gt;
allerdings in ihrer Syntax.&lt;br /&gt;
&lt;br /&gt;
==Die Installation im Überblick==&lt;br /&gt;
&lt;br /&gt;
Die Installation von Linux geschieht in folgenden Schritten:&lt;br /&gt;
&lt;br /&gt;
# Analyse (Welche Hardware habe ich? ,Hab ich weitere Betriebsysteme?)&lt;br /&gt;
# Booten des Linux-Kernels. (von CD oder Diskette)&lt;br /&gt;
# Laden einer RAM-Disk (das macht das Installationsprogramm automatisch).&lt;br /&gt;
# Partitionieren der Festplatte (fdisk).&lt;br /&gt;
# Einrichten der Swappartition (mkswap), Formatieren der Festplatte (mkfs).&lt;br /&gt;
# Montieren der Dateisysteme (mount), Aktivieren der Swapbereiche (swapon).&lt;br /&gt;
# Kopieren und Auspacken der Daten vom Installationsmedium auf die Festplatte (die eigentliche Installation). (rpm, dpkg oder tar).&lt;br /&gt;
# Geeignete Wahl der Bootmethode unter Berücksichtigung von Punkt 1 (grub, lilo).&lt;br /&gt;
# Konfiguration des Systems (Netz, Modem etc...).&lt;br /&gt;
&lt;br /&gt;
==Erste Schritte==&lt;br /&gt;
===Anmelden===&lt;br /&gt;
Sie können sich nun mit dem Usernamen und dem Passwort, das sie bei der Installation angelegt haben anmelden!&lt;br /&gt;
[[Image:benutzer.jpg]]&lt;br /&gt;
&lt;br /&gt;
[[Image:passwd.jpg]]&lt;br /&gt;
&lt;br /&gt;
===Terminal öffnen===&lt;br /&gt;
&lt;br /&gt;
Ein Terminal öffnen Sie über das Startmenü:&lt;br /&gt;
&lt;br /&gt;
[[Image:Terminalde.jpg]]&lt;br /&gt;
&lt;br /&gt;
Das geöffnete Terminal sieht dann folgendermaßen aus:&lt;br /&gt;
&lt;br /&gt;
[[Image:Terminalde2.jpg]]&lt;br /&gt;
&lt;br /&gt;
===Sudo===&lt;br /&gt;
Rootrechte erlangen sie über den &amp;quot;Sudo&amp;quot;-Befehl&lt;br /&gt;
 &lt;br /&gt;
''Den nächsten Befehl als root ausführen''&lt;br /&gt;
 xinux@zero:~$ sudo cat /etc/shadow&lt;br /&gt;
 [sudo] password for xinux:&lt;br /&gt;
&lt;br /&gt;
''Eine komplette Sitzung als root starten''&lt;br /&gt;
 xinux@zero:~$ sudo -i&lt;br /&gt;
 [sudo] password for xinux:&lt;br /&gt;
 root@zero:~#&lt;br /&gt;
&lt;br /&gt;
===Virtuelle Konsolen===&lt;br /&gt;
&lt;br /&gt;
In die Virtuelle Konsole gelangen sie über &amp;quot;STRG+ALT+(F1-F6)&amp;quot;.&lt;br /&gt;
Sie funktioniert wie ein ganz normales Terminal, und mit &amp;quot;ALT+F7&amp;quot;&lt;br /&gt;
gelangen sie wieder zurück auf die grafische Benutzeroberfläche&lt;br /&gt;
&lt;br /&gt;
===Abmelden===&lt;br /&gt;
&lt;br /&gt;
Abmelden können Sie sich wieder über das Startmenu unter:&lt;br /&gt;
&lt;br /&gt;
[[Image:Logout.jpg]]&lt;br /&gt;
&lt;br /&gt;
Fals sie nur einzelne Sitzungen in einem der Terminals oder &lt;br /&gt;
den Virtuellen Konsolen Abmelden wollen benutzen sie dazu den Befehl: &amp;quot;exit&amp;quot;&lt;br /&gt;
&lt;br /&gt;
===Herunterfahren===&lt;br /&gt;
&lt;br /&gt;
Das Herunterfahren funktioniert auf dem selben Weg.&lt;br /&gt;
&lt;br /&gt;
Entweder sie Benutzen wieder das Startmenü und benutzen diesmal den &amp;quot;Ausschalten ...&amp;quot; Knopf,&lt;br /&gt;
&lt;br /&gt;
Oder sie geben den äquivalenten &amp;quot;shutdown&amp;quot;-Befehl in einem Terminal bzw. der virtuellen Konsole ein.&lt;br /&gt;
&lt;br /&gt;
Allerdings müssen sie dazu als Administrator angemeldet sein s. &amp;quot;Sudo&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Wenn Sie den &amp;quot;shutdown&amp;quot;-Befehl benutzen wollen muss hinter den Befehl&lt;br /&gt;
&lt;br /&gt;
eine Zeitangabe in Minuten oder das wort &amp;quot;now&amp;quot; für sofortiges Ausschalten hinzugefügt werden:&lt;br /&gt;
&lt;br /&gt;
 xinux@zero:~$ sudo -i&lt;br /&gt;
 root@zero:~# shutdown 60&lt;br /&gt;
 &lt;br /&gt;
 Broadcast message from xinux@zero &lt;br /&gt;
         (/dev/pts/3) at 14:29 ...&lt;br /&gt;
 &lt;br /&gt;
 The system is going down for maintenance in 60 minutes!&lt;br /&gt;
&lt;br /&gt;
Sollten sie den Befehl widerrufen wollen dann drücken sie &amp;quot;STRG+C&amp;quot;,&lt;br /&gt;
&lt;br /&gt;
in dem Terminal in dem der shutdown Befehl gestartet wurde,&lt;br /&gt;
&lt;br /&gt;
oder geben sie den &amp;quot;shutdown&amp;quot;-Befehl zusammen mit der Abbruchoption &amp;quot;-c&amp;quot; in einem anderen Terminal ein:&lt;br /&gt;
&lt;br /&gt;
 root@zero:~# shutdown -c&lt;br /&gt;
&lt;br /&gt;
 shutdown: Shutdown cancelled&lt;br /&gt;
 root@zero:~# &lt;br /&gt;
&lt;br /&gt;
Wenn Sie den Rechner Neustarten möchten gibt es dazu die Option &amp;quot;-r&amp;quot; für den &amp;quot;shutdown&amp;quot;-Befehl&lt;br /&gt;
&lt;br /&gt;
oder den &amp;quot;reboot&amp;quot;-Befehl die beide auch als root ausgeführt werden müssen:&lt;br /&gt;
&lt;br /&gt;
 xinux@zero:~$ sudo -i&lt;br /&gt;
 [sudo] password for xinux: &lt;br /&gt;
 root@zero:~# shutdown -r now&lt;br /&gt;
&lt;br /&gt;
 root@zero:~# reboot&lt;br /&gt;
&lt;br /&gt;
===&amp;quot;man&amp;quot;===&lt;br /&gt;
&lt;br /&gt;
Programm zum Einsehen der Online-Manuals&lt;br /&gt;
&lt;br /&gt;
Die Manuals sind in folgende Sektionen unterteilt:&lt;br /&gt;
# Ausführbare Programme oder Shellbefehle&lt;br /&gt;
# Systemaufrufe (Kernelfunktionen)&lt;br /&gt;
# Bibliotheksaufrufe (Funktionen in System-Bibliotheken)&lt;br /&gt;
# Spezielle Dateien (gewöhnlich in /dev)&lt;br /&gt;
# Dateiformate und Konventionen, z. B. /etc/passwd&lt;br /&gt;
# Spiele&lt;br /&gt;
# Makropakete und Konventionen, z. B. man(7), groff(7)&lt;br /&gt;
# Systemadministrationsbefehle (in der Regel nur für root)&lt;br /&gt;
# Kernelroutinen [Nicht Standard]&lt;br /&gt;
&lt;br /&gt;
Aufruf eines Manuals erfolgt durch ''man kommando''&lt;br /&gt;
Beendet wird durch Drücken des Buchstabens q&lt;br /&gt;
Gesucht wird vorwärts durch Eingabe eines /suchausdruck&lt;br /&gt;
Gesucht wird rückwärts durch Eingabe eines ?suchausdruck&lt;br /&gt;
&lt;br /&gt;
Beispiele:&lt;br /&gt;
&lt;br /&gt;
      man passwd        Anschauen der Manualseite zum Programm passwd&lt;br /&gt;
      man 5 passwd      Anschauen der Manualseite zur Datei /etc/passwd&lt;br /&gt;
      man -a passwd     Anschauen aller Manualseiten zu passwd&lt;br /&gt;
      man -k passwd     Durchsucht die Kurzbeschreibungen der Manualseite&lt;br /&gt;
                        nach passwd und gibt alle Treffer aus&lt;br /&gt;
      man -f passwd      Gibt alle gefunden Kurzbescheibungen zu passwd aus&lt;br /&gt;
      man -L en passwd Gibt englische Manualseiten aus&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Was geht vor auf meinem System? (date,who)===&lt;br /&gt;
&lt;br /&gt;
Das Kommando date dient zur Abfrage von Datum und Uhrzeit.&lt;br /&gt;
&lt;br /&gt;
 xinux@zero:~ &amp;gt; date&lt;br /&gt;
 Fre Mär 16 16:35:03 CET 2001&lt;br /&gt;
&lt;br /&gt;
oder auch Anzeige der Grennwich Zeit:&lt;br /&gt;
&lt;br /&gt;
 xinux@zero:~ &amp;gt; date -u&lt;br /&gt;
 Fre Mär 16 15:35:34 UTC 2001&lt;br /&gt;
&lt;br /&gt;
 xinux@zero:~ &amp;gt; date -u &amp;quot;+%X&amp;quot;&lt;br /&gt;
 15:37:19&lt;br /&gt;
&lt;br /&gt;
 xinux@zero:~ &amp;gt; date -u &amp;quot;+%x&amp;quot;&lt;br /&gt;
 01/15/02&lt;br /&gt;
&lt;br /&gt;
who zeigt alle angemeldeten Benutzer an&lt;br /&gt;
&lt;br /&gt;
 thomas@cardassia:~ &amp;gt; who&lt;br /&gt;
 thomas             tty1 Feb 27 16:39&lt;br /&gt;
 thomas             tty2 Mar 2 17:08&lt;br /&gt;
 tina               tty6 Mar 16 16:38&lt;br /&gt;
&lt;br /&gt;
Mit `who --help' bekommen Sie mehr Informationen.&lt;br /&gt;
&lt;br /&gt;
 thomas@cardassia:~ &amp;gt; who --help&lt;br /&gt;
&lt;br /&gt;
Benutzung: who [OPTION]... [ DATEI | ARG1 ARG2 ]&lt;br /&gt;
&lt;br /&gt;
 -H, --heading             print line of column headings&lt;br /&gt;
 -i, -u, --idle            add user idle time as HOURS:MINUTES, . or old&lt;br /&gt;
 -l, --lookup              attempt to canonicalize hostnames via DNS&lt;br /&gt;
 -m                        only hostname and user associated with stdin&lt;br /&gt;
 -q, --count               all login names and number of users logged on&lt;br /&gt;
 -s                        (ignored)&lt;br /&gt;
 -T, -w, --mesg            add user's message status as +, - or ?&lt;br /&gt;
     --message             same as -T&lt;br /&gt;
     --writable            same as -T&lt;br /&gt;
     --help                display this help and exit&lt;br /&gt;
     --version             output version information and exit&lt;br /&gt;
&lt;br /&gt;
==Das UNIX-Dateisystem==&lt;br /&gt;
===Verzeichnisbaum===&lt;br /&gt;
&lt;br /&gt;
[[Image:vztree.jpg]]&lt;br /&gt;
&lt;br /&gt;
Das Betriebssystem UNIX besitzt ein hierarchisches Dateisystem. Es besteht aus:&lt;br /&gt;
* Dateien (Files)&lt;br /&gt;
Dateien speichern Informationen (Text, Bilder, Sound, Videos, Programme) und&lt;br /&gt;
werden über den Dateinamen angesprochen.&lt;br /&gt;
&lt;br /&gt;
* Verzeichnissen (Directories, Kataloge)&lt;br /&gt;
Verzeichnisse besitzen ebenfalls einen Namen und dienen zur Ordnung des&lt;br /&gt;
Dateisystems. Ein Verzeichnis kann Dateien und Unterverzeichnisse&lt;br /&gt;
(Subdirectories) enthalten. Das oberste Verzeichnis im Dateisystem heisst&lt;br /&gt;
Rootverzeichnis oder kurz Root und wird durch / (sprich: slash)&lt;br /&gt;
gekennzeichnet.&lt;br /&gt;
&lt;br /&gt;
Im Gegensatz zu Windows kennt UNIX keine Laufwerke.&lt;br /&gt;
Das obige Bild zeigt ein typisches UNIX-Dateisystem.&lt;br /&gt;
Unterhalb des Rootverzeichnisses befinden sich eine Vielzahl vonVerzeichnissen.&lt;br /&gt;
&lt;br /&gt;
===Wichtige Verzeichnisse===&lt;br /&gt;
&lt;br /&gt;
• '''Homeverzeichnis'''&lt;br /&gt;
&lt;br /&gt;
das Verzeichnis, in dem man sich unmittelbar nach dem Anmelden befindet. Das&lt;br /&gt;
Homeverzeichnis wird vom Systemverwalter eingerichtet; jeder Anwender&lt;br /&gt;
besitzt ein festes Homeverzeichnis. z.B. /home/hans&lt;br /&gt;
&lt;br /&gt;
~ (Tilde) bzw. $HOME (Shellvariable) kennzeichnen das Homeverzeichnis.&lt;br /&gt;
&lt;br /&gt;
• '''Aktuelles Verzeichnis'''&lt;br /&gt;
&lt;br /&gt;
Verzeichnis, in dem man sich aktuell befindet.&lt;br /&gt;
Das aktuelle Verzeichnis wird mit dem Befehl cd (change directory) oder per&lt;br /&gt;
Mausklick verändert.&lt;br /&gt;
Ein einfacher Punkt . kennzeichnet das aktuelle Verzeichnis.&lt;br /&gt;
&lt;br /&gt;
• '''Elternverzeichnis'''&lt;br /&gt;
&lt;br /&gt;
Verzeichnis unmittelbar oberhalb des aktuellen Verzeichnisses.&lt;br /&gt;
Jedes Verzeichnis ausser / besitzt genau ein Elternverzeichnis.&lt;br /&gt;
Zwei Punkte .. kennzeichnen das Elternverzeichnis (abhängig vom aktuellen&lt;br /&gt;
VZ).&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Absoluter Pfadname:===&lt;br /&gt;
&lt;br /&gt;
Beschreibt ausgehend vom Rootverzeichnis den Weg zum Zielverzeichnis oder zur&lt;br /&gt;
Zieldatei. (Welche Verzeichnisse müssen ausgehend von / durchlaufen werden, um&lt;br /&gt;
zum Ziel zu kommen?) Ein absoluter Pfadname beginnt immer mit / .&lt;br /&gt;
&lt;br /&gt;
===Relativer Pfadname:===&lt;br /&gt;
&lt;br /&gt;
Beschreibt ausgehend vom aktuellen Verzeichnis den Weg zum Zielverzeichnis&lt;br /&gt;
oder zur Zieldatei; ein relativer Pfadname beginnt nicht mit / .&lt;br /&gt;
/home/suxer&lt;br /&gt;
absoluter Pfadname für das Verzeichnis sub1 im Homeverzeichnis von suxer&lt;br /&gt;
&lt;br /&gt;
===Verzeichnisstruktur===&lt;br /&gt;
&lt;br /&gt;
 /bin         Kommandos die beim starten benötigt werden (Zugriff hat jeder)&lt;br /&gt;
 /sbin        Wichtige System-Programme (In der Regel root vorberhalten)&lt;br /&gt;
 /boot        Hier findet man die Dateien des Bootmanagers und des Kernel.&lt;br /&gt;
 /dev         In diesem Verzeichnis stehen die Gerätedateien (Devices),&lt;br /&gt;
 /home        Alle Heimatverzeichnisse der Nutzer findet man hier.&lt;br /&gt;
 /lib         Beim Systemstart benötigten Bibliotheken und Modules stehen hier.&lt;br /&gt;
 /mnt         Mountpunkt für temporäre Partitionen&lt;br /&gt;
 /opt         Software, die nicht Installationsumfang von Linux gehören.&lt;br /&gt;
 /root        Heimatverzeichnis des Administrators.&lt;br /&gt;
 /tmp         Temporäre Dateien können hier abgelegt werden&lt;br /&gt;
 /usr         statische Dateien (kann read-only gemountet sein)&lt;br /&gt;
 /var         variable Dateien (muss beschreibar sein )&lt;br /&gt;
 /etc         Konfiguartionsdateien und Startscripte&lt;br /&gt;
 /proc        Virtuelles Dateisystem -&amp;gt; repräsentiert den Kernel&lt;br /&gt;
&lt;br /&gt;
===Unterverzeichnisse von /usr===&lt;br /&gt;
&lt;br /&gt;
 sbin         Programme für root die beim Start nicht benötigt werden&lt;br /&gt;
 bin          Programme für alle die beim Start nicht benötigt werden&lt;br /&gt;
 X11R6        Dateien des X-Window-Sytems&lt;br /&gt;
 bin          Ausführbare Programme&lt;br /&gt;
 doc          Dokumentationen&lt;br /&gt;
 etc          Konfigurationsdateien&lt;br /&gt;
 games        Spiele&lt;br /&gt;
 include      Headerdateien für C-Programme&lt;br /&gt;
 local        Pakete die nicht zur Distribution gehören ähnlich /opt&lt;br /&gt;
 share        Pakete die von mehreren Paketen genutzt werden&lt;br /&gt;
 share/man    Die Manualpages&lt;br /&gt;
 share/info   Seiten des Infosystems&lt;br /&gt;
 share/doc    Dokumentationen&lt;br /&gt;
 src          Sources von Programmen (Kernel und andere)&lt;br /&gt;
&lt;br /&gt;
===Unterverzeichnisse von /var===&lt;br /&gt;
&lt;br /&gt;
 cache        Zwischenspreicher für Progammes&lt;br /&gt;
 games        Variable Daten der Games (Scores etc...)&lt;br /&gt;
 lock         Sperrdateien&lt;br /&gt;
 log          Die Logdateien (wichtiges Verzeichnis für Admins)&lt;br /&gt;
 mail         Das Mailsystem&lt;br /&gt;
 run          Dateien zu laufemdem Prozessen&lt;br /&gt;
 spool        Spooldateien (z.B. für das Drucksystem&lt;br /&gt;
 state        Statusinfos&lt;br /&gt;
 tmp          Wie /tmp eventuell nicht auf root Partion&lt;br /&gt;
&lt;br /&gt;
==Einfache Komandos==&lt;br /&gt;
===cd: Wechseln des Arbeitsverzeichnis===&lt;br /&gt;
&lt;br /&gt;
Um festzustellen in welchem Verzeichnis man sich befindet, sollte man den&lt;br /&gt;
Befehl &amp;quot;pwd&amp;quot; benutzen,&lt;br /&gt;
&lt;br /&gt;
und mit dem Befehl &amp;quot;cd&amp;quot; kann man zwischen den Verzeichnissen wechseln:&lt;br /&gt;
&lt;br /&gt;
Wechsele ins homeverzeichnis von Xinux&lt;br /&gt;
&lt;br /&gt;
 xinux@zero:~$ cd /home/xinux/&lt;br /&gt;
 xinux@zero:~$ pwd&lt;br /&gt;
 /home/xinux&lt;br /&gt;
&lt;br /&gt;
cd ~ -&amp;gt; wechsele ins jeweilige Homeverzeichnis&lt;br /&gt;
&lt;br /&gt;
cd .. -&amp;gt; wechsele ein Verzeichnis höher&lt;br /&gt;
&lt;br /&gt;
cd ../verzeichnis -&amp;gt; wechsele in eine paralleles Verzeichnis &amp;lt;- (ist eine relative Pfadangabe !)&lt;br /&gt;
&lt;br /&gt;
cd - -&amp;gt; wechsele in das Verzeichnis, in dem vorher gearbeitet wurde.&lt;br /&gt;
&lt;br /&gt;
Mit cd / wechselt man in das Wurzelverzeichnis.&lt;br /&gt;
&lt;br /&gt;
 xinux@zero:/var/log$ cd /&lt;br /&gt;
 xinux@zero:/$ pwd&lt;br /&gt;
 /&lt;br /&gt;
&lt;br /&gt;
===ls: Listing===&lt;br /&gt;
&lt;br /&gt;
Den Inhalt von Verzeichnissen kann man sich mit dem Befehl &amp;quot;ls&amp;quot; anzeigen lassen&lt;br /&gt;
wobei &amp;quot;ls&amp;quot; eine Vielzahl von Optionen besitzt:&lt;br /&gt;
&lt;br /&gt;
 ls                                  standard&lt;br /&gt;
 ls -l                               langes listing&lt;br /&gt;
 ls -a                               alle Dateien&lt;br /&gt;
 ls -i                               mit Inode&lt;br /&gt;
 ls -h                               gut lesbare Dateigröße&lt;br /&gt;
 ls -d                               Verzechnis wird angezeigt, nicht der Inhalt&lt;br /&gt;
 ls -L                               sortiert nach Größe&lt;br /&gt;
 ls -t                               sortiert nach Datum&lt;br /&gt;
 ls -F                               mit nützlichem Anhang&lt;br /&gt;
&lt;br /&gt;
 xinux@zero:/$ ls -l /var/log/messages&lt;br /&gt;
 -rw-r----- 1 syslog adm 2296 2009-06-16 10:05 /var/log/messages&lt;br /&gt;
&lt;br /&gt;
===more: Seitenweises Anzeigen von Seiten===&lt;br /&gt;
 root@zero:~# more /var/log/messages&lt;br /&gt;
 ...&lt;br /&gt;
&lt;br /&gt;
===head: erste Zeilen anzeigen===&lt;br /&gt;
Erste 10 Zeilen anzeigen&lt;br /&gt;
 root@zero:~# head /var/log/messages&lt;br /&gt;
 Jun 15 12:37:08 zero syslogd 1.5.0#5ubuntu3: restart.&lt;br /&gt;
 Jun 15 12:38:43 zero kernel: [  830.065036] mtrr: your processor doesn't support write-combining&lt;br /&gt;
 Jun 15 12:46:05 zero pulseaudio[4817]: pid.c: Stale PID file, overwriting.&lt;br /&gt;
 Jun 15 13:05:24 zero -- MARK --&lt;br /&gt;
 ...&lt;br /&gt;
&lt;br /&gt;
Erste zwei Zeilen anzeigen&lt;br /&gt;
 root@zero:~# head -n 2 /var/log/messages&lt;br /&gt;
 Jun 15 12:37:08 zero syslogd 1.5.0#5ubuntu3: restart.&lt;br /&gt;
 Jun 15 12:38:43 zero kernel: [  830.065036] mtrr: your processor doesn't support write-combining&lt;br /&gt;
&lt;br /&gt;
===tail: letzte Zeilen anzeigen===&lt;br /&gt;
 &lt;br /&gt;
 root@zero:~# tail /var/log/syslog&lt;br /&gt;
 ...&lt;br /&gt;
 Jun 19 11:19:35 zero -- MARK --&lt;br /&gt;
 Jun 19 11:39:35 zero -- MARK --&lt;br /&gt;
 Jun 19 11:59:36 zero -- MARK --&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Letze 5 Zeilen anzeigen&lt;br /&gt;
 root@zero:~# tail -n 5 /var/log/auth.log&lt;br /&gt;
 Jun 18 14:30:01 zero CRON[12040]: pam_unix(cron:session): session closed for user root&lt;br /&gt;
 Jun 18 14:39:01 zero CRON[12191]: pam_unix(cron:session): session opened for user root by (uid=0)&lt;br /&gt;
 Jun 18 14:39:01 zero CRON[12191]: pam_unix(cron:session): session closed for user root&lt;br /&gt;
 Jun 18 14:40:01 zero CRON[12237]: pam_unix(cron:session): session opened for user root by (uid=0)&lt;br /&gt;
 Jun 18 14:40:01 zero CRON[12237]: pam_unix(cron:session): session closed for user root&lt;br /&gt;
&lt;br /&gt;
Letze Zeilen anzeigen und fortlaufend aktualisieren&lt;br /&gt;
 root@zero:~# tail -f /var/log/syslog&lt;br /&gt;
 ...&lt;br /&gt;
&lt;br /&gt;
===mkdir: Ein neues Verzeichnis erstellen===&lt;br /&gt;
&lt;br /&gt;
 mkdir        verzeichnis&lt;br /&gt;
Erstellt ein Verzeichnis im working directory (wd)&lt;br /&gt;
&lt;br /&gt;
 mkdir  -p    ver1/ver2&lt;br /&gt;
Erstellt ein Verzeichnis ver2 unterhalb von ver1&lt;br /&gt;
wenn ver1 nicht existiert wird es erstellt&lt;br /&gt;
&lt;br /&gt;
 mkdir -m 753 ver1&lt;br /&gt;
Es wird das Verzeichnis ver1 erstellt mit der mask 753&lt;br /&gt;
&lt;br /&gt;
 mkdir -v     ver1&lt;br /&gt;
Geschwätzige Ausgabe :)&lt;br /&gt;
&lt;br /&gt;
===Zum Löschen von leeren Verzeichnissen wird rmdir benutzt===&lt;br /&gt;
&lt;br /&gt;
 rmdir           ver1&lt;br /&gt;
Löscht das leere Verzeichnis ver1&lt;br /&gt;
&lt;br /&gt;
 rmdir -v        ver1&lt;br /&gt;
Löscht das leere Verzeichnis ver1 und ist geschwätzig&lt;br /&gt;
&lt;br /&gt;
 rmdir -p        /ver1/ver2/ver3&lt;br /&gt;
Löscht das Verzeichnis ver3; wenn dadurch ver2 ein leeres&lt;br /&gt;
Verzeichnis wird, wird dieses auch gelöscht , wenn ver1&lt;br /&gt;
dadurch ein leeres Verzeichnis wird, wird auch dieses gelöscht.&lt;br /&gt;
&lt;br /&gt;
===touch Verändern des Zeitstempels===&lt;br /&gt;
&lt;br /&gt;
Mit touch können wir eine neue leere Datei erzeugen (das ist nicht der eigentliche&lt;br /&gt;
Zweck von touch, eigentlich wird der Zeitstempel geändert)&lt;br /&gt;
&lt;br /&gt;
 touch            dateiname&lt;br /&gt;
&lt;br /&gt;
===Kopieren=== &lt;br /&gt;
cp ist das Kommando um Dateien zu kopieren &lt;br /&gt;
&lt;br /&gt;
Eine Kopie von dat1 mit dem Namen dat2 erstellen:&lt;br /&gt;
&lt;br /&gt;
 xinux@zero:~$ cp dat1 dat2&lt;br /&gt;
&lt;br /&gt;
Eine Kopie von dat1 ins Verzeichnis ver2 erstellen:&lt;br /&gt;
&lt;br /&gt;
 xinux@zero:~$ cp dat1 ver2/&lt;br /&gt;
 &lt;br /&gt;
Eine Kopie erstellen mit ausführlicher Anzeige:&lt;br /&gt;
&lt;br /&gt;
 xinux@zero:~$ cp -v dat1 dat2&lt;br /&gt;
 `dat1' -&amp;gt; `dat2'&lt;br /&gt;
&lt;br /&gt;
Eine Kopie erstellen mit Rückfrage fals etwas überschrieben wird:&lt;br /&gt;
&lt;br /&gt;
 xinux@zero:~$ cp -i dat1 dat2&lt;br /&gt;
 cp: overwrite `dat2'?&lt;br /&gt;
&lt;br /&gt;
Eine Kopie erstellen und die Rückfrage überbrücken:&lt;br /&gt;
&lt;br /&gt;
 xinux@zero:~$ cp -f dat1 dat2&lt;br /&gt;
&lt;br /&gt;
Eine Kopie von dat1 ins Verzeichnis ver2 erstellen fals keine neuere Version von dat1 vorliegt:&lt;br /&gt;
&lt;br /&gt;
 xinux@zero:~$ cp -u dat1 ver2/&lt;br /&gt;
&lt;br /&gt;
Eine Kopie erstellen fals ver2 auf dem selben Dateisystem wie dat1 liegt:&lt;br /&gt;
&lt;br /&gt;
 xinux@zero:~$ cp -x dat1 ver2/&lt;br /&gt;
&lt;br /&gt;
Eine Kopie von ver1, die als ver2 oder unter ver2 als ver1 gespeichert wird erstellen:&lt;br /&gt;
&lt;br /&gt;
 xinux@zero:~$ cp -r ver1/ ver2/&lt;br /&gt;
&lt;br /&gt;
Eine Kopie von einer Datei erstellen und ihre Attribute beibehalten:&lt;br /&gt;
&lt;br /&gt;
 xinux@zero:~$ cp -p sux1 sux2&lt;br /&gt;
&lt;br /&gt;
Eine Kopie erstellen bei der die Links erhalten bleiben:&lt;br /&gt;
&lt;br /&gt;
 xinux@zero:~$ cp -r ver1/ ver2/&lt;br /&gt;
&lt;br /&gt;
Eine Kopie erstellen zum Archivieren (-dpr):&lt;br /&gt;
&lt;br /&gt;
 xinux@zero:~$ cp -a ver1/ ver2/&lt;br /&gt;
&lt;br /&gt;
===rm: Löschen einer Datei===&lt;br /&gt;
&lt;br /&gt;
Um Dateien zu löschen, brauchen wir das Kommando &amp;quot;rm&amp;quot;:&lt;br /&gt;
&lt;br /&gt;
 rm               dat1        dat1 wird gelöscht&lt;br /&gt;
 rm         -i    dat1        dat1 wird nach Bestätigung gelöscht&lt;br /&gt;
 rm         -f    dat1        dat1 wird ohne Rückfragen gelöscht&lt;br /&gt;
 rm         -v    dat1        dat1 wird glöscht (geschwätzige Ausgabe)&lt;br /&gt;
 rm         -r    ver1        Löschen von nicht leeren Verzeichnissen&lt;br /&gt;
                              Achtung !!! Als root kann man sich damit Teile&lt;br /&gt;
                              oder sogar den gesamten Verzeichnisbaum&lt;br /&gt;
                              absägen !!!&lt;br /&gt;
&lt;br /&gt;
===mv: Verschieben===&lt;br /&gt;
&lt;br /&gt;
Mit dem Befehl &amp;quot;mv&amp;quot; werden Daten verschoben, folgendes gilt:&lt;br /&gt;
&lt;br /&gt;
 mv          dat1 dat2         &lt;br /&gt;
Die Datei dat1 wird in dat2 umbenannt&lt;br /&gt;
 mv          dat1 /ver1        &lt;br /&gt;
Die Datei dat1 wird nach /ver1 verschoben&lt;br /&gt;
&lt;br /&gt;
Die Parameter und ihre Bedeutung:&lt;br /&gt;
&lt;br /&gt;
      -i                      wenn eine Datei exisitiert wird vor dem&lt;br /&gt;
                              Überschreiben nachgefragt&lt;br /&gt;
      -v                      verbose (geschwätzig)&lt;br /&gt;
      -u                      nur neuere Daten werden bei Bedarf überschrieben&lt;br /&gt;
      -b                      wenn überschrieben werden soll, wird ein Backup&lt;br /&gt;
                              erstellt&lt;br /&gt;
      -S ENDUNG               das Backup bekommt die Endung ENDUNG&lt;br /&gt;
&lt;br /&gt;
===su Benutzer wechseln===&lt;br /&gt;
&lt;br /&gt;
 su -             &lt;br /&gt;
Wechsel zum Rootaccount, wie wenn dieser sich neu anmelden würde. (Bsp: su -)&lt;br /&gt;
&lt;br /&gt;
 su Benutzernamen &lt;br /&gt;
Wechsel der Identität zu Benutzer (gegebenenfalls Passwortabfrage)&lt;br /&gt;
&lt;br /&gt;
 su -c Kommando   &lt;br /&gt;
Kommando wird als rootaccount ausgeführt&lt;br /&gt;
&lt;br /&gt;
==Der Standard Editor vi==&lt;br /&gt;
Der vi ist der Standardeditor in der Unixwelt. Er ist in jedem Unix-Derivat&lt;br /&gt;
enthalten.&lt;br /&gt;
Der Editor hat zwar den schlechten Ruf umständlich zu bedienen zu sein, ist&lt;br /&gt;
jedoch sehr leistungsfähig und systemübergreifend verfügbar. Beim vi handelt es&lt;br /&gt;
sich um einen rein textorientierten Editor, der mittels eigener Kommandos&lt;br /&gt;
gesteuert wird.&lt;br /&gt;
&lt;br /&gt;
Der Editor VIM ist eine weitere Verbesserung von VI und leichter zu bedienen.&lt;br /&gt;
Und unter Ubuntu/Debian mit &amp;quot;apt-get install vim&amp;quot; zu installieren.&lt;br /&gt;
&lt;br /&gt;
===Starten des Editors:===&lt;br /&gt;
&lt;br /&gt;
Der Editorstart erfolgt einfach durch die Eingabe des Kommandos vi mit dem&lt;br /&gt;
Dateinamen der zu editierenden Datei als Parameter.&lt;br /&gt;
Beispiel:        &lt;br /&gt;
 vi sux.txt&lt;br /&gt;
&lt;br /&gt;
===Die Betriebsmodi des vi:===&lt;br /&gt;
&lt;br /&gt;
Ein Umstand, der dem vi den Ruf der komplizierten Bedienbarkeit zugetragen hat,&lt;br /&gt;
sind die unterschiedlichen Betriebsmodi des Editors. Genauer gesagt verfügt der&lt;br /&gt;
vi über drei Betriebsmodi:&lt;br /&gt;
&lt;br /&gt;
====Kommandomodus:====&lt;br /&gt;
&lt;br /&gt;
Innerhalb dieses Modus werden die eingegebenen Zeichen direkt als Befehle des&lt;br /&gt;
Editors interpretiert und ausgeführt. Dabei gibt es weder ein Bereitschaftszeichen&lt;br /&gt;
(Prompt) noch ein Echo (Ausgabe). Der Kommandomodus ist der Modus, in dem&lt;br /&gt;
sich der vi direkt nach seinem Start befindet.&lt;br /&gt;
&lt;br /&gt;
====Zeilenmodus oder Exmodus:====&lt;br /&gt;
&lt;br /&gt;
Dieser Modus ist der einzige Modus mit einem eigenen Bereitschaftszeichen,&lt;br /&gt;
nämlich dem Doppelpunkt (:). Das Prompt wird ebenso wie die Befehlsausgaben&lt;br /&gt;
in der Statuszeile angezeigt.&lt;br /&gt;
&lt;br /&gt;
====Eingabemodus:====&lt;br /&gt;
&lt;br /&gt;
Der Eingabemodus ist derjenige, in welchem der zu bearbeitende Text bearbeitet&lt;br /&gt;
werden kann. Alle hier eingegebenen Zeichen werden als Text für die aktuelle&lt;br /&gt;
Datei interpretiert. Zwischen den unterschiedlichen Modi kann jederzeit&lt;br /&gt;
gewechselt werden. Von Kommandomodus gelangen Sie durch mehere Wege in&lt;br /&gt;
den Eingabemodus. Man kann durch folgende Aktionen wechslen&lt;br /&gt;
&lt;br /&gt;
{| border=1 cellpadding=2&lt;br /&gt;
|i&lt;br /&gt;
|Text vor der aktuellen Cursorposition einfügen&lt;br /&gt;
|-&lt;br /&gt;
|I&lt;br /&gt;
|Text am Zeilenanfang einfügen&lt;br /&gt;
|-&lt;br /&gt;
|a&lt;br /&gt;
|Text hinter der aktuellen Cursorposition einfügen&lt;br /&gt;
|-&lt;br /&gt;
|A&lt;br /&gt;
|Text am Zeilenende einfügen&lt;br /&gt;
|-&lt;br /&gt;
|o&lt;br /&gt;
|Unterhalb der aktuellen Zeile eine neue Zeile einfügen&lt;br /&gt;
|-&lt;br /&gt;
|O&lt;br /&gt;
|Oberhalb der aktuellen Zeile eine neue Zeile einfügen&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Durch das Drücken der ESC - Taste gelangt man in den Kommandomodus zurück.&lt;br /&gt;
&lt;br /&gt;
Im Kommandomodus können Sie durch den Text navigieren und auch den Text&lt;br /&gt;
selbst bearbeiten, z.B ausschneiden, kopieren usw. Dazu sind einige Kommandos&lt;br /&gt;
nötig, von denen die wichtigsten im Folgenden erläutert werden:&lt;br /&gt;
&lt;br /&gt;
 xinux@zero:/$ vi iwas.txt&lt;br /&gt;
&lt;br /&gt;
[[Image:vim.jpg]]&lt;br /&gt;
&lt;br /&gt;
===Benutzen des Kommandomodus===&lt;br /&gt;
====Steuerung des Cursors durch den Text====&lt;br /&gt;
&lt;br /&gt;
Mittels folgender Kommandos bewegt sich der Cursor durch den Text:&lt;br /&gt;
&lt;br /&gt;
{| border=1 cellpadding=2&lt;br /&gt;
|h&lt;br /&gt;
|Cursor ein Zeichen nach links&lt;br /&gt;
|-&lt;br /&gt;
|l&lt;br /&gt;
|Cursor ein Zeichen nach rechts&lt;br /&gt;
|-&lt;br /&gt;
|k&lt;br /&gt;
|Cursor eine Zeile nach oben&lt;br /&gt;
|-&lt;br /&gt;
|j&lt;br /&gt;
|Cursor eine Zeile nach unten&lt;br /&gt;
|-&lt;br /&gt;
|w&lt;br /&gt;
|Cursor ein Wort nach rechts&lt;br /&gt;
|-&lt;br /&gt;
|b&lt;br /&gt;
|Cursor ein Wort nach links&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Alle diese Kommandos können mit einem vorgestellten Wiederholungsfaktor&lt;br /&gt;
arbeiten. Der Befehl 3w verschiebt demnach den Cursor um 3 Wörter nach rechts.&lt;br /&gt;
&lt;br /&gt;
====Angaben zur Positionierung====&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{| border=1 cellpadding=2&lt;br /&gt;
|STRG+U&lt;br /&gt;
|1⁄2 Bildschirmseite nach oben&lt;br /&gt;
|-&lt;br /&gt;
|STRG+D&lt;br /&gt;
|1⁄2 Bildschirmseite nach unten&lt;br /&gt;
|-&lt;br /&gt;
|STRG+B&lt;br /&gt;
|1 Bildschirmseite nach oben&lt;br /&gt;
|-&lt;br /&gt;
|STRG+F&lt;br /&gt;
|1 Bildschirmseite nach unten&lt;br /&gt;
|-&lt;br /&gt;
|/Ausdruck&lt;br /&gt;
|Sucht den Ausdruck (vorwärts) Weitersuchen mit n , N&lt;br /&gt;
|-&lt;br /&gt;
|?Ausdruck&lt;br /&gt;
|Sucht den Ausdurck (rückwärts) Weitersuchen mit n , N&lt;br /&gt;
|-&lt;br /&gt;
|0&lt;br /&gt;
|Zeilenanfang&lt;br /&gt;
|-&lt;br /&gt;
|$&lt;br /&gt;
|Zeilenende&lt;br /&gt;
|-&lt;br /&gt;
|w&lt;br /&gt;
|Nächstes Wort&lt;br /&gt;
|-&lt;br /&gt;
|b&lt;br /&gt;
|Vorheriges Wort&lt;br /&gt;
|-&lt;br /&gt;
|fc&lt;br /&gt;
|Auf das Zeichen c springen. c steht für ein beliebiges Zeichen&lt;br /&gt;
|-&lt;br /&gt;
|G&lt;br /&gt;
|Letzte Zeile der Datei&lt;br /&gt;
|-&lt;br /&gt;
|ng&lt;br /&gt;
|n-te Zeile der Datei&lt;br /&gt;
|-&lt;br /&gt;
|H&lt;br /&gt;
|Anfang der Bildschirmseite&lt;br /&gt;
|-&lt;br /&gt;
|L&lt;br /&gt;
|Ende der Bildschirmseite&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
====Befehle zur Textbearbeitung -&amp;gt; Was soll geschehen====&lt;br /&gt;
&lt;br /&gt;
{| Border=1 Cellpadding=2&lt;br /&gt;
|x&lt;br /&gt;
|Löscht Zeichen&lt;br /&gt;
|-&lt;br /&gt;
|d&lt;br /&gt;
|Löschen und in den Puffer laden&lt;br /&gt;
|-&lt;br /&gt;
|c&lt;br /&gt;
|Ändern&lt;br /&gt;
|-&lt;br /&gt;
|y&lt;br /&gt;
|In den Puffer laden&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
====Weitere wichtige Befehle:====&lt;br /&gt;
&lt;br /&gt;
{| Border=1 Cellpadding=2&lt;br /&gt;
|p&lt;br /&gt;
|Aus dem Puffer einfügen&lt;br /&gt;
|-&lt;br /&gt;
|u&lt;br /&gt;
|Undo, macht den letzten Befehl rückgängig&lt;br /&gt;
|-&lt;br /&gt;
|STRG+R&lt;br /&gt;
|Redo, macht den letzten Undo rückgängig&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
===Zeilen- oder Exmodus===&lt;br /&gt;
&lt;br /&gt;
Wie schon erwähnt wird der Zeilen oder Exmodus durch einen : eingeleitet.&lt;br /&gt;
Es folgen einige Beispiele.&lt;br /&gt;
&lt;br /&gt;
Befehle zum Speichern und Beenden:&lt;br /&gt;
&lt;br /&gt;
 :w          Schreibt Datei&lt;br /&gt;
 :w Datei2   Schreibt eine Kopie in Datei2&lt;br /&gt;
 :w !        Schreibt Datei (übergehe Schreibschutz)&lt;br /&gt;
 :w ! Datei2 Schreibt eine Kopie in Datei2 (übergehe Schreibschutz)&lt;br /&gt;
 :q          Schließe Datei&lt;br /&gt;
 :q!         Schließe Datei (verwerfe Änderungen)&lt;br /&gt;
 :wq         Schreibe Datei und beende Editor&lt;br /&gt;
 :wq!        Schreibe Datei und beende Editor (übergehe Schreibschutz)&lt;br /&gt;
 :q!         Schließe Datei (verwerfe Änderungen)&lt;br /&gt;
 :h          Hilfe anzeigen, durch drücken von :q Beenden der Hilfe&lt;br /&gt;
 :e Datei3   Editiere Datei3&lt;br /&gt;
 :e #        Editere vorhergehende Datei&lt;br /&gt;
 :1,3co9     Kopiere von der ersten bis zu dritten Zeile &lt;br /&gt;
             und füge den Inhalt unterhalb der neunte Zeile ein.&lt;br /&gt;
&lt;br /&gt;
Interaktionen mit Unix:&lt;br /&gt;
&lt;br /&gt;
 :r Datei4   Fügt Inhalt der Datei4 nach dem Cursor ein&lt;br /&gt;
 :r ! Befehl Fügt Ausgabe des Befehls nach dem Cursor ein&lt;br /&gt;
 :! Befehl   Führt den Befehl aus&lt;br /&gt;
 :sh         Starte Subshell -&amp;gt; mit exit kehrt man wieder zurück&lt;br /&gt;
             Eingabemodus zurück&lt;br /&gt;
&lt;br /&gt;
====Ersetzen von Textteilen====&lt;br /&gt;
&lt;br /&gt;
Die grundsätzliche Syntax lautet:&lt;br /&gt;
&lt;br /&gt;
 :[Zeilennummer,Zeilennummer]s/Muster/Ersetzung/[gc]&lt;br /&gt;
&lt;br /&gt;
 :s/worf/kirn/              der erste worf wird in der aktuellen Zeile durch kirn ersetzt&lt;br /&gt;
 :1,9s/worf/kirn/g          von der 1. bis zur 9. Zeile werden alle worf durch kirn ersetzt&lt;br /&gt;
 :1,$s/worf/kirn/           von der ersten bis zur letzten Zeile ersetze ersten worf durch&lt;br /&gt;
                            kirn&lt;br /&gt;
 :.,$s/worf/kirn/g          von der aktuellen bis zur letzten Zeile ersetze alle worf durch&lt;br /&gt;
                            kirn&lt;br /&gt;
 :1,.s/worf/kirn/c          von der 1. bis zur aktuellen Zeile ersetze worf durch kirn, frage&lt;br /&gt;
                            aber nach&lt;br /&gt;
 :1,$s/^worf/kirn/          von der ersten bis zur letzten Zeile ersetze worf am&lt;br /&gt;
                            Zeilenanfang durch kirn&lt;br /&gt;
 :4,$s/worf$/kirn/          von der 4. bis zur letzten Zeile ersetze worf am Zeilenende&lt;br /&gt;
                            durch kirn&lt;br /&gt;
 :1,$s/^#//                 lösche alle Kommentarzeichen&lt;br /&gt;
 :1,$s/^.orf/kirn/           ersetze alles was am Zeilenanfang ein beliebiges Zeichen hat&lt;br /&gt;
                            gefolgt von einem orf durch kirn&lt;br /&gt;
 :1,$s/^[A-Z]orf/kirn/g     suche nach einem Großbuchstaben am Anfang der Zeile&lt;br /&gt;
                            gefolgt von einem orf und ersetze durch kirn&lt;br /&gt;
 :1,$s/^M[ae][iy]e*r/kirn/  suche alles, was am Anfang der Zeile ein großes M enthält,&lt;br /&gt;
                            gefolgt von einem a oder e , gefolgt von einem i oder y ,&lt;br /&gt;
                            gefolgt von einem e , welches 0 oder N mal vorkommen kann,&lt;br /&gt;
                            gefolgt von einem r und ersetze es durch kirn&lt;br /&gt;
&lt;br /&gt;
==Reguläre Ausdrücke==&lt;br /&gt;
&lt;br /&gt;
{| Border=1 Cellpadding=2&lt;br /&gt;
|c&lt;br /&gt;
|Ein einzelner Buchstabe passt auf sich selbst&lt;br /&gt;
|-&lt;br /&gt;
|.&lt;br /&gt;
|Ein Punkt passt auf jedes Zeichen außer auf das Zeilenende&lt;br /&gt;
|-&lt;br /&gt;
|*&lt;br /&gt;
|Das dem Operator * vorangehende Muster kann 0 oder öfter vorkommen&lt;br /&gt;
|-&lt;br /&gt;
|^&lt;br /&gt;
|(Caret) passt auf den Zeilenanfang&lt;br /&gt;
|-&lt;br /&gt;
|$&lt;br /&gt;
|Passt auf das Zeilenende&lt;br /&gt;
|-&lt;br /&gt;
|\&lt;br /&gt;
|Das folgende Sonderzeichen wird entwertet&lt;br /&gt;
|-&lt;br /&gt;
|[...]&lt;br /&gt;
|Passt auf &amp;quot;genau&amp;quot; eins in [...] angebenen Zeichen&lt;br /&gt;
|-&lt;br /&gt;
|[^...]&lt;br /&gt;
|Passt auf &amp;quot;genau&amp;quot; ein Zeichen welches nicht in [...] angebenen ist&lt;br /&gt;
|-&lt;br /&gt;
|\&amp;lt;&lt;br /&gt;
|Passt auf den Wortanfang&lt;br /&gt;
|-&lt;br /&gt;
|\&amp;gt;&lt;br /&gt;
|Passt auf das Wortende&lt;br /&gt;
|-&lt;br /&gt;
|\+&lt;br /&gt;
|Das dem Operator \+ vorangehende Muster kann 1 oder öfter vorkommen&lt;br /&gt;
|-&lt;br /&gt;
|&amp;amp;&lt;br /&gt;
|Setzt das gefunden Suchmuster ein&lt;br /&gt;
|-&lt;br /&gt;
|\(...\)&lt;br /&gt;
|Speichert den Text auf den das Suchmuster passt zur späteren Verwendung&lt;br /&gt;
|-&lt;br /&gt;
|\n&lt;br /&gt;
|Setzt das vorangehende, mit \(...\) Gefundene wieder ein&lt;br /&gt;
|-&lt;br /&gt;
|(...)&lt;br /&gt;
|Gruppiert Auswahlmöglichkeiten&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;nowiki&amp;gt;|&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
|Trennt Auswahlmöglichkeiten&lt;br /&gt;
|-&lt;br /&gt;
|\b&lt;br /&gt;
|Passt auf den Anfang oder das Ende eines Wortes&lt;br /&gt;
|-&lt;br /&gt;
|\B&lt;br /&gt;
|Symbolisiert den Raum innerhalb eines Wortes&lt;br /&gt;
|-&lt;br /&gt;
|\w&lt;br /&gt;
|Passt auf alle alphanumerischen Zeichen [A-Za-z0-9]&lt;br /&gt;
|-&lt;br /&gt;
|\W&lt;br /&gt;
|Passt auf alle nichtalphanumerischen Zeichen [^A-Za-z0-9]&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Die Rangfolge der Operatoren(von der höchsten zur niedrigsten)&lt;br /&gt;
:(, ), ?, *, + | .&lt;br /&gt;
&lt;br /&gt;
Die anderen Operatoren sind mit den anderen Buchstaben gleichrangig.&lt;br /&gt;
&lt;br /&gt;
===Beispiel zum Suchen===&lt;br /&gt;
&lt;br /&gt;
 Suchmuster               Passt auf&lt;br /&gt;
 ^Tuxer                   Tuxer am Zeilenanfang&lt;br /&gt;
 [tT]uxer                 Tuxer oder tuxer&lt;br /&gt;
 80[23]?86                8086, 80286 oder 80386&lt;br /&gt;
&lt;br /&gt;
===grep===&lt;br /&gt;
&lt;br /&gt;
Mit grep ist es möglich, in Dateien nach regulären Ausdrücken zu suchen. Wenn&lt;br /&gt;
eine Übereinstimmung gefunden wird, wird die komplette Zeile auf die&lt;br /&gt;
Standardausgabe geschrieben. grep kann auch von STDIN lesen.Es ist&lt;br /&gt;
empfehlenswert, sich anzugwöhnen ,das Suchmuster in Anführungszeichen zu&lt;br /&gt;
schreiben. Es gibt 3 Arten fgrep = fastgrep , grep und egrep egrep&lt;br /&gt;
&lt;br /&gt;
Beispiel:&lt;br /&gt;
&lt;br /&gt;
 root@zero:~# cat text&lt;br /&gt;
 quatsch&lt;br /&gt;
 quatsch&lt;br /&gt;
 quatsch&lt;br /&gt;
 wichtig&lt;br /&gt;
 quatsch&lt;br /&gt;
 root@zero:~# grep wichtig text&lt;br /&gt;
 wichtig&lt;br /&gt;
 root@zero:~# &lt;br /&gt;
&lt;br /&gt;
 -c                   meldet nur die Gesamtzahl der Fundstellen&lt;br /&gt;
 -v                   zeigt nur Zeilen, die »Ausdruck« nicht enthalten&lt;br /&gt;
 -i                   ignoriert Groß- und Kleinschreibung&lt;br /&gt;
 -l                    meldet nur Dateinamen mit Fundstellen&lt;br /&gt;
 -n                   listet Zeilennummern zu jeder Fundstelle&lt;br /&gt;
 -f                   Dateiname »Dateiname« enthält die Such-Ausdrücke&lt;br /&gt;
 -E                   ist ein erweiterter regulärer Ausdruck (egrep)&lt;br /&gt;
 -F                   (Muster, Ausdruck) ist ein Muster (String) (fgrep)&lt;br /&gt;
 -b                   listet auch die Position der Fundstellen&lt;br /&gt;
 -C    Anzahl         Anzahl von Zeilen werden nach der Fundstelle ausgegeben&lt;br /&gt;
 -B    Anzahl         Anzahl von Zeilen werden vor der Fundstelle ausgegeben&lt;br /&gt;
 -r                   Durchsucht Verzeichnisse rekursiv&lt;br /&gt;
&lt;br /&gt;
==Useridendifikation==&lt;br /&gt;
===/etc/passwd===&lt;br /&gt;
====Beschreibung====&lt;br /&gt;
passwd ist eine ASCII-Datei, die eine Liste der Benutzer des Systems und deren&lt;br /&gt;
Passwörter enthält. Die Passwortdatei sollte für alle Benutzer lesbar sein, was für&lt;br /&gt;
dieVerschlüsselung notwendig ist; aber nur vom Superuser beschreibbar. Wenn&lt;br /&gt;
Sie eine neue Kennung einrichten, lassen Sie das Passwort-Feld in der Datei frei&lt;br /&gt;
und benutzen Sie passwd(1), um dem System ein Passwort für die neue Kennung&lt;br /&gt;
mitzuteilen.&lt;br /&gt;
&lt;br /&gt;
Die Datei /etc/passwd enthält einen Eintrag pro Zeile mit dem Format:&lt;br /&gt;
login_name:passwd:UID:GID:user_name:directory:shell&lt;br /&gt;
====Die Bedeutung der Felder:====&lt;br /&gt;
# login_name Kennung des Benutzers auf dem System.&lt;br /&gt;
# password   Hier steht bei Shadowsystemen ein x. Die Passwörter sind in der Datei /etc/shadow&lt;br /&gt;
# UID        Die numerische Benutzernummer.&lt;br /&gt;
#  GID        Die numerische Gruppennummer des Benutzers.&lt;br /&gt;
# user_name Ein optionales Kommentarfeld, oft benutzt für den vollen Namen des Benutzers und weitere Informationen (Telefon, Raum-Nummer etc.).&lt;br /&gt;
# directory  Das Heimatverzeichnis $HOME des Benutzers.&lt;br /&gt;
# shell      Das Programm, das beim Einloggen gestartet werden soll (falls nicht nötig, benutzen Sie /bin/bash).&lt;br /&gt;
&lt;br /&gt;
===/etc/group===&lt;br /&gt;
====Beschreibung====&lt;br /&gt;
etc/group ist eine ASCII Datei, die Gruppen definiert, zu denen Benutzer&lt;br /&gt;
gehören. Es gibt nur einen Eintrag pro Zeile; jede Zeile hat folgendes Format:&lt;br /&gt;
         GruppenName:Passwort:GruppenKennung:BenutzerListe&lt;br /&gt;
Beschreibung der Felder:&lt;br /&gt;
#     GruppenName      Die Bezeichnung der Gruppe.&lt;br /&gt;
#     Passwort         Das (verschlüsselte) Gruppen-Passwort. Wenn dieses Feld leer ist, wird kein Passwort benötigt.&lt;br /&gt;
#     GruppenKennung Die numerische Identifikation der Gruppe.&lt;br /&gt;
#     BenutzerListe    Alle Namen der Mitglieder, getrennt durch Kommas.&lt;br /&gt;
&lt;br /&gt;
===/etc/shadow===&lt;br /&gt;
====Beschreibung====&lt;br /&gt;
shadow beinhaltet Informationen zu den verschlüsselten Passwörten, zu den&lt;br /&gt;
Benutzerzugängen und weitere Informationen zur Laufzeit der Passwörter.&lt;br /&gt;
 Name:Passwort:Letzte Änderung:Mintage:Maxtage:Warntage:Inaktiv:Ablauf&lt;br /&gt;
#    Der Loginname&lt;br /&gt;
#    verschlüsseltes Passwort &lt;br /&gt;
&amp;lt;nowiki&amp;gt;*&amp;lt;/nowiki&amp;gt; bedeutet Benutzer kann sich nicht einlogen&lt;br /&gt;
! bedeutet Benutzer hat kein Passwort gesetzt&lt;br /&gt;
#    Tage seit dem 1 Januar 1970 an dem das Passwort letztmals geändert wurde&lt;br /&gt;
#    Tage, die das Passwort behalten werden muss, bevor es wieder geändert werden kann&lt;br /&gt;
#     Die Anzahl der Tage, nach denen der Benutzer das Passwort wieder ändern muss&lt;br /&gt;
#    Anzahl der Tage bevor das Passwort abläuft und der Benutzer gewarnt wird&lt;br /&gt;
#    Wenn der Zugang diese Anzahl von Tagen nicht benutzt wird, wird der Zugang gesperrt&lt;br /&gt;
#    Tag seit dem 1 Januar 1970, an dem der Zugang gesperrt wird&lt;br /&gt;
#    Reserviertes Feld&lt;br /&gt;
&lt;br /&gt;
Die Datei sollte aus Sicherheitgründen nicht für einen normalen Benutzer lesbar&lt;br /&gt;
sein.&lt;br /&gt;
&lt;br /&gt;
==Programme zur Userverwaltung==&lt;br /&gt;
===useradd===&lt;br /&gt;
User anlegen&lt;br /&gt;
 root@zero:~# useradd -m -u 1011 -g users -G admin -d /home/erwin -s /bin/bash -c &amp;quot;Erwin Lehman&amp;quot;  erwin&lt;br /&gt;
{| border=1 cellpadding=2&lt;br /&gt;
|&amp;quot;-m&amp;quot;&lt;br /&gt;
|Lege Homedirectory an&lt;br /&gt;
|-&lt;br /&gt;
|&amp;quot;-u 1011&amp;quot;&lt;br /&gt;
|Userid wird zugeordnet&lt;br /&gt;
|-&lt;br /&gt;
|&amp;quot;-g users&amp;quot;&lt;br /&gt;
|Primäre Gruppe wird zugeordnet&lt;br /&gt;
|-&lt;br /&gt;
|&amp;quot;-G admin&amp;quot;&lt;br /&gt;
|Sekunbdäre Gruppe wird zugeordnet&lt;br /&gt;
|-&lt;br /&gt;
|&amp;quot;-d /home/erwin/&amp;quot;&lt;br /&gt;
|Name des Homedirectory&lt;br /&gt;
|-&lt;br /&gt;
|&amp;quot;-s /bin/bash&amp;quot;&lt;br /&gt;
|Bash wird zugeordnet&lt;br /&gt;
|- &lt;br /&gt;
|&amp;quot;-c Erwin Lehman&amp;quot;&lt;br /&gt;
|Kommentarfeld&lt;br /&gt;
|-&lt;br /&gt;
|&amp;quot;erwin&amp;quot; &lt;br /&gt;
|Name des Users&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Defaulteinstellungen anzeigen&lt;br /&gt;
 root@zero:~# useradd -D&lt;br /&gt;
 GROUP=100&lt;br /&gt;
 HOME=/home&lt;br /&gt;
 INACTIVE=-1&lt;br /&gt;
 EXPIRE=&lt;br /&gt;
 SHELL=/bin/sh&lt;br /&gt;
 SKEL=/etc/skel&lt;br /&gt;
 CREATE_MAIL_SPOOL=no&lt;br /&gt;
&lt;br /&gt;
Defaulteinstellungen ändern&lt;br /&gt;
 useradd -D -s /bin/bash&lt;br /&gt;
&lt;br /&gt;
Konfigurationsdatei&lt;br /&gt;
 root@zero:~# cat /etc/default/useradd &lt;br /&gt;
 SHELL=/bin/bash&lt;br /&gt;
 GROUP=100&lt;br /&gt;
 HOME=/home&lt;br /&gt;
 INACTIVE=-1&lt;br /&gt;
 EXPIRE=&lt;br /&gt;
 SKEL=/etc/skel&lt;br /&gt;
 CREATE_MAIL_SPOOL=no&lt;br /&gt;
&lt;br /&gt;
===usermod===&lt;br /&gt;
User modifizieren&lt;br /&gt;
 root@zero:~# usermod -l fritz -s /bin/sh -G admin,video erwin&lt;br /&gt;
{| border=1 cellpadding=2&lt;br /&gt;
|&amp;quot;-l fritz&amp;quot;&lt;br /&gt;
|Neuer Username&lt;br /&gt;
|-&lt;br /&gt;
|&amp;quot;-s /bin/sh&amp;quot;&lt;br /&gt;
|Neue Shell&lt;br /&gt;
|-&lt;br /&gt;
|&amp;quot;-G admin, video&amp;quot;&lt;br /&gt;
|Sekunbdäre Gruppen werden zugeordnet&lt;br /&gt;
|-&lt;br /&gt;
|&amp;quot;erwin&amp;quot; &lt;br /&gt;
|Name des Users&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
===userdel===&lt;br /&gt;
User inklusive Homedirectory löschen&lt;br /&gt;
 root@zero:~# userdel -r fritz&lt;br /&gt;
&lt;br /&gt;
===passwd===&lt;br /&gt;
Rootpasswort ändern&lt;br /&gt;
 root@zero:~# passwd &lt;br /&gt;
 Geben Sie ein neues UNIX Passwort ein:'''sysadm''' &lt;br /&gt;
 Geben Sie das neue UNIX Passwort erneut ein:'''sysadm''' &lt;br /&gt;
 passwd: Passwort erfolgreich geändert&lt;br /&gt;
&lt;br /&gt;
Passwort von tux ändern&lt;br /&gt;
 root@zero:~# passwd tux&lt;br /&gt;
 Geben Sie ein neues UNIX Passwort ein:'''suxer''' &lt;br /&gt;
 Geben Sie das neue UNIX Passwort erneut ein:'''suxer'''&lt;br /&gt;
 passwd: Passwort erfolgreich geändert&lt;br /&gt;
&lt;br /&gt;
Minimale und Maximale Gültigkeit des Passwortes von tux festlegen&lt;br /&gt;
 root@zero:~# passwd -n 5 -x 120 tux&lt;br /&gt;
&lt;br /&gt;
===groupadd===&lt;br /&gt;
 root@zero:~# groupadd -f -g 2001 xinuxer&lt;br /&gt;
{| border=1 cellpadding=2&lt;br /&gt;
|&amp;quot;-f&amp;quot;&lt;br /&gt;
|Überschreibe bestehende Gruppe&lt;br /&gt;
|-&lt;br /&gt;
|&amp;quot;-g 2001&amp;quot;&lt;br /&gt;
|GID der Gruppe&lt;br /&gt;
|-&lt;br /&gt;
|&amp;quot;xinuxer&amp;quot; &lt;br /&gt;
|Name des Gruppe&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==chmod==&lt;br /&gt;
Die Syntax des Befehls chmod lautet:&lt;br /&gt;
&lt;br /&gt;
'''chmod''' WerWieWas [,WerWieWas,.....] Dateiliste&lt;br /&gt;
&lt;br /&gt;
oder&lt;br /&gt;
&lt;br /&gt;
'''chmod''' Oktalzahl Dateiliste&lt;br /&gt;
&lt;br /&gt;
Durch WerWieWas bzw. Oktalzahl wird die Rechtetabelle definiert. Innerhalb von&lt;br /&gt;
WerWieWas darf es kein Leerzeichen geben. Wer bezeichnet den Benutzerkreis,&lt;br /&gt;
dem man Rechte gibt, Wie die Art, in der die Rechte gegeben werden und Was die&lt;br /&gt;
Rechte als solche. Im einzelnen können folgende Kürzel benutzt werden:&lt;br /&gt;
&lt;br /&gt;
Für Wer kann eines der folgenden Kürzel oder eine Kombination davon stehen:&lt;br /&gt;
 u                   (user) Rechte für den Dateibesitzer&lt;br /&gt;
 g                   (group) Rechte für die Gruppe&lt;br /&gt;
 o                   (others) Rechte für alle anderen Benutzer&lt;br /&gt;
 a                   (all) Rechte für alle Benutzer&lt;br /&gt;
Für Wie steht eines der folgenden Kürzel:&lt;br /&gt;
 +                   Die Rechte werden zu den vorhandenen zusätzlich vergeben&lt;br /&gt;
 -                   Die im Folgenden genannten Rechte werden entzogen&lt;br /&gt;
 =                   Die im Folgenden genannten Rechte ersetzen die bisherigen&lt;br /&gt;
Für Was steht eines der folgenden Kürzel:&lt;br /&gt;
 r                   (read) lesen&lt;br /&gt;
 w                   (write) schreiben&lt;br /&gt;
 x                   (execute) ausführen&lt;br /&gt;
oder diese Sonderformen&lt;br /&gt;
 s                   (usersbit) Programm läuft unter der UID des Besitzers&lt;br /&gt;
 s                   (groupsbit)Programm läuft unter der GID des GRUPPE&lt;br /&gt;
 t                   (stickybit) Dateien im Verzeichnis darf nur Besitzer löschen&lt;br /&gt;
&lt;br /&gt;
===Beispiel===&lt;br /&gt;
Setze für alle Schreib- und Leserecht&lt;br /&gt;
 xinux@zero:~$ chmod a=rw test &lt;br /&gt;
 xinux@zero:~$ ls -l test &lt;br /&gt;
 -rw-rw-rw- 1 xinux xinux 0 2009-06-16 12:01 test&lt;br /&gt;
 xinux@zero:~$ &lt;br /&gt;
&lt;br /&gt;
Erteile Besitzer Ausführungsrecht&lt;br /&gt;
 xinux@zero:~$ chmod u+x test ; ls -l test &lt;br /&gt;
 -rwxrw-rw- 1 xinux xinux 0 2009-06-16 12:01 test&lt;br /&gt;
 xinux@zero:~$ &lt;br /&gt;
&lt;br /&gt;
===chmod oktale Schreibweise===&lt;br /&gt;
 Specialrights        User           Group         Other&lt;br /&gt;
 usbit gsbit sticky    r    w   x     r   w   x     r   w   x&lt;br /&gt;
   1     1      1      1    1   1     1   1   1     1   1   1&lt;br /&gt;
   0     0      0      0    0   0     0   0   0     0   0   0&lt;br /&gt;
 Oktale Wertigkeit pro Recht&lt;br /&gt;
   4     2       1     4    2   1     4   2   1     4   2   1&lt;br /&gt;
&lt;br /&gt;
===Beispiele===&lt;br /&gt;
 xinux@zero:~$ chmod 751 test ; ls -l test&lt;br /&gt;
 -rwxr-x--x 1 xinux xinux 0 2009-06-16 12:01 test&lt;br /&gt;
 xinux@zero:~$ &lt;br /&gt;
&lt;br /&gt;
 xinux@zero:~$ chmod 4770 test ; ls -l test&lt;br /&gt;
 -rwsrwx--- 1 xinux xinux 0 2009-06-16 12:01 test&lt;br /&gt;
 xinux@zero:~$ &lt;br /&gt;
&lt;br /&gt;
 xinux@zero:~$ chmod 0 test ; ls -l test &lt;br /&gt;
 ---------- 1 xinux xinux 0 2009-06-16 12:01 test&lt;br /&gt;
&lt;br /&gt;
===chmod Optionen===&lt;br /&gt;
 -c   (changes) es werden nur die Dateien angezeigt, deren Zugriffsrechte tatsächlich verändert werden&lt;br /&gt;
 -f   (silent, quiet) Fehlermeldungen wegen fehlgeschlagener Änderungsversuche werden unterdrückt&lt;br /&gt;
 -v   (verbose) alle Aktionen werden angezeigt&lt;br /&gt;
 -R   (recursive) die Zugriffsrechte aller Dateien in den Unterverzeichnissen werden ebenfalls geändert&lt;br /&gt;
&lt;br /&gt;
Theoretisch sind alle Kombinationen der Zugriffsrechte denkbar, aber der&lt;br /&gt;
Eigentümer einer Datei darf diese immer lesen, selbst wenn das Lesebit nicht&lt;br /&gt;
gesetzt ist. Genauso macht es wenig Sinn, eine gewöhnliche Textdatei als&lt;br /&gt;
ausführbar zu setzen; die Shell wird damit nichts anfangen können. Ein x für ein&lt;br /&gt;
Verzeichnis gibt an, dass in dieses gewechselt werden kann.&lt;br /&gt;
&lt;br /&gt;
Rechte sind verbindlich&lt;br /&gt;
&lt;br /&gt;
Interessant ist auch ein Konstrukt folgender Art&lt;br /&gt;
 -rwx---rwx&lt;br /&gt;
&lt;br /&gt;
das angibt, dass mit der Datei alles angestellt werden kann, außer durch Nutzer der&lt;br /&gt;
Gruppe. Versucht irgend jemand, der nicht der Gruppe des Eigentümers angehört,&lt;br /&gt;
die Datei zu modifizieren, wird ihm dies gelingen, einem Gruppenmitglied bleibt&lt;br /&gt;
dies versagt, obwohl er ja gleichzeitig ein &amp;quot;Anderer&amp;quot; ist. D.h. die Rechte der&lt;br /&gt;
Gruppe sind verbindlicher, als die Rechte der anderen!&lt;br /&gt;
&lt;br /&gt;
===Bedeutungen der Zugriffsarten===&lt;br /&gt;
====Dateien====&lt;br /&gt;
* r: Der Inhalt der Datei kann gelesen und damit auch kopiert werden. &lt;br /&gt;
 root@zero:~# cat test&lt;br /&gt;
 Dies ist eine Testdatei&lt;br /&gt;
  &lt;br /&gt;
 root@zero:~# cp test backup&lt;br /&gt;
&lt;br /&gt;
* w: Der Inhalt der Datei darf verändert werden. Ob die Datei gelöscht werden kann ist&lt;br /&gt;
keine Eigenschaft der Datei, sondern des Verzeichnisses, indem sich die Datei befindet.&lt;br /&gt;
 root@zero:~# cat &amp;gt; test&lt;br /&gt;
 Hier steht jetzt was anderes&lt;br /&gt;
 ^C&lt;br /&gt;
 root@zero:~# cat test&lt;br /&gt;
 Hier steht jetzt was anderes&lt;br /&gt;
  &lt;br /&gt;
 xinux@zero:~$ ls -ld verzeichnis/&lt;br /&gt;
 dr-xr-xr-x 2 xinux xinux 4096 2009-06-18 11:16 verzeichnis/&lt;br /&gt;
 xinux@zero:~/verzeichnis$ rm text&lt;br /&gt;
 rm: Entfernen von „text“ nicht möglich: Permission denied&lt;br /&gt;
&lt;br /&gt;
* x: Ausführrecht für Programme und Skripte&lt;br /&gt;
 xinux@zero:~$ ./programm&lt;br /&gt;
 -bash: ./programm: Permission denied&lt;br /&gt;
 xinux@zero:~$ chmod +x programm&lt;br /&gt;
 xinux@zero:~$ ./programm&lt;br /&gt;
 Test&lt;br /&gt;
  test&lt;br /&gt;
&lt;br /&gt;
====Verzeichnisse====&lt;br /&gt;
* r: Die Einträge in dem Verzeichnis sind lesbar.&lt;br /&gt;
Leserecht von verzeichnis/ entziehen&lt;br /&gt;
 xinux@zero:~$ chmod a-r verzeichnis/&lt;br /&gt;
 xinux@zero:~$ ls verzeichnis/&lt;br /&gt;
 ls: Öffnen von Verzeichnis verzeichnis/ nicht möglich: Permission denied&lt;br /&gt;
Leserecht für Benutzer und Gruppe vergeben&lt;br /&gt;
 xinux@zero:~$ chmod a+r verzeichnis/&lt;br /&gt;
 xinux@zero:~$ ls verzeichnis/&lt;br /&gt;
 text&lt;br /&gt;
&lt;br /&gt;
* w: Die Einträge in dem Verzeichnis können geändert werden. &lt;br /&gt;
Neue Datei erstellen&lt;br /&gt;
 xinux@zero:~$ touch neu&lt;br /&gt;
 xinux@zero:~$ ls neu&lt;br /&gt;
 neu&lt;br /&gt;
&lt;br /&gt;
Datei löschen&lt;br /&gt;
 xinux@zero:~$ rm neu&lt;br /&gt;
 xinux@zero:~$ ls neu&lt;br /&gt;
 ls: Zugriff auf neu nicht möglich: No such file or directory&lt;br /&gt;
&lt;br /&gt;
* x: Der Name des Verzeichnisses kann in einem Pfadnamen erscheinen.&lt;br /&gt;
Verzeichnis ohne x Recht&lt;br /&gt;
 xinux@zero:~$ chmod a-x verzeichnis/&lt;br /&gt;
Wechseln in Verzeichnis mangels x-Recht nicht möglich&lt;br /&gt;
 xinux@zero:~$ cd verzeichnis/&lt;br /&gt;
 -bash: cd: verzeichnis/: Permission denied&lt;br /&gt;
x-Recht vergeben&lt;br /&gt;
 xinux@zero:~$ chmod a+x verzeichnis/&lt;br /&gt;
damit Wechsel in Verzeichnis möglich&lt;br /&gt;
 xinux@zero:~$ cd verzeichnis/&lt;br /&gt;
 xinux@zero:~/verzeichnis$ pwd&lt;br /&gt;
 /home/xinux/verzeichnis&lt;br /&gt;
&lt;br /&gt;
====umask====&lt;br /&gt;
Neue Dateien und Verzeichnisse werden mit ein und denselben Zufriffsrechten erzeugt.&lt;br /&gt;
 xinux@zero:~$ mkdir text&lt;br /&gt;
 xinux@zero:~$ touch textdat&lt;br /&gt;
 xinux@zero:~$ ls -ld text*&lt;br /&gt;
 drwxr-xr-x 2 xinux xinux 4096 2009-06-18 11:37 text&lt;br /&gt;
 -rw-r--r-- 1 xinux xinux    0 2009-06-18 11:37 textdat&lt;br /&gt;
&lt;br /&gt;
Zuständig für dieses Verhalten ist die sogenannte umask, die oft in der Datei&lt;br /&gt;
/etc/profile auf den Wert 022 voreingestellt ist. Zusätzlich wird noch eine&lt;br /&gt;
Maximalmaske benötigt, die sich für Verzeichnisse und andere Dateien&lt;br /&gt;
unterscheidet. Die bei der Erzeugung gesetzten Rechte entstehen nun, indem von&lt;br /&gt;
der Maximalmaske der durch die umask vorgegebene Wert subtrahiert wird:&lt;br /&gt;
&lt;br /&gt;
{| border=1 cellpadding=2&lt;br /&gt;
!&lt;br /&gt;
! Dateien&lt;br /&gt;
! Verzeichnisse&lt;br /&gt;
|-&lt;br /&gt;
| Systemvorgabe&lt;br /&gt;
| 666&lt;br /&gt;
| 777&lt;br /&gt;
|-&lt;br /&gt;
| -umask&lt;br /&gt;
| 022&lt;br /&gt;
| 022&lt;br /&gt;
|-&lt;br /&gt;
| Ergebnis&lt;br /&gt;
| 644&lt;br /&gt;
| 755&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
 xinux@zero:~$ grep umask /etc/profile&lt;br /&gt;
 umask 022&lt;br /&gt;
&lt;br /&gt;
==Gruppenzugehörigkeit==&lt;br /&gt;
===newgrp===&lt;br /&gt;
Ändert die Gruppenzugehörigkeit eines Benutzers auf die angegebene Gruppe. Wenn keine Gruppe angegeben wird, wird die &lt;br /&gt;
Anmeldegruppe des Benutzers verwendet. Die neue Gruppe wird anschließend fü Zugriffskontrollen verwendet.&lt;br /&gt;
&lt;br /&gt;
 newgrp Gruppenname&lt;br /&gt;
&lt;br /&gt;
 root@zero:~# newgrp hacker&lt;br /&gt;
 root@zero:~# id&lt;br /&gt;
 uid=0(root) gid=1006(hacker) Gruppen=0(root),1006(hacker)&lt;br /&gt;
&lt;br /&gt;
===chgrp===&lt;br /&gt;
Verändert die Besitzugehörigkeit zu der angegebenen Gruppe&lt;br /&gt;
&lt;br /&gt;
 chgrp [Optionen] Gruppe Datei(en)&lt;br /&gt;
&lt;br /&gt;
Optionen:&lt;br /&gt;
 -c Zeigt Veränderungen an&lt;br /&gt;
 -f Unterdrückt die meisten Fehlermeldungen&lt;br /&gt;
 -R Verändert Dateien und Verzeichnisse rekursiv&lt;br /&gt;
 -v Gibt geschwätzige Ausgabe aus.&lt;br /&gt;
&lt;br /&gt;
 root@zero:~# ls -l&lt;br /&gt;
 ...&lt;br /&gt;
 d-wx--x--x  3 root root 4096 2009-06-18 13:34 verzeichnis&lt;br /&gt;
 &lt;br /&gt;
 root@zero:~# chgrp -R xinux verzeichnis/&lt;br /&gt;
 root@zero:~# ls -l&lt;br /&gt;
 ...&lt;br /&gt;
 d-wx--x--x  3 root xinux 4096 2009-06-18 13:34 verzeichnis&lt;br /&gt;
&lt;br /&gt;
 xinux@zero:~$ cd /root/verzeichnis/&lt;br /&gt;
 xinux@zero:/root/verzeichnis$ pwd&lt;br /&gt;
 /root/verzeichnis&lt;br /&gt;
&lt;br /&gt;
===chown===&lt;br /&gt;
Ändert den Eigentümer von einer oder mehreren Dateien in den angegebenen Benutzer. &lt;br /&gt;
chown erlaubt ebenfalls das Ändern der Gruppeneigentümreschaft. Nur der aktuelle Eigentümer einer&lt;br /&gt;
Datei oder der Superuser (root) darf die Eigentumsverhältnisse ändern.&lt;br /&gt;
&lt;br /&gt;
 chown [Optionen] Benutzer(:Gruppe) Dateien&lt;br /&gt;
&lt;br /&gt;
Optionen:&lt;br /&gt;
 -c Gibt Informationen über die veränderten Dateien aus&lt;br /&gt;
 --dereference Symbolischen Links folgen&lt;br /&gt;
 -v Gibt Informationen über alle Dateien aus, die chown zu ändern versucht, egal, ob die Änderung erfolgt ist oder nicht&lt;br /&gt;
 -R Geht rekursiv durch alle Unterverzeichnisse und führt die Änderungen durch. &lt;br /&gt;
&lt;br /&gt;
 root@zero:~# chown -R xinux.xinux verzeichnis/&lt;br /&gt;
 root@zero:~# ls -l&lt;br /&gt;
 insgesamt 12&lt;br /&gt;
 drwx------ 13 root  root  4096 2009-04-21 15:11 profile&lt;br /&gt;
 --w-------  1 root  root     0 2009-06-18 11:13 test&lt;br /&gt;
 -rw-r--r--  1 root  root    40 2009-06-18 12:04 text&lt;br /&gt;
 drwxrwx--x  3 xinux xinux 4096 2009-06-18 13:39 verzeichnis&lt;br /&gt;
 &lt;br /&gt;
 root@zero:~# chown -R -c xinux.xinux verzeichnis/&lt;br /&gt;
 &lt;br /&gt;
 root@zero:~# chown -R -v xinux.xinux verzeichnis/&lt;br /&gt;
 Eigentümer von „verzeichnis/01“ als xinux:xinux erhalten&lt;br /&gt;
 Eigentümer von „verzeichnis/test“ als xinux:xinux erhalten&lt;br /&gt;
 Eigentümer von „verzeichnis/“ als xinux:xinux erhalten&lt;br /&gt;
&lt;br /&gt;
==Eingabe/Ausgabe==&lt;br /&gt;
Standardeingabe (0): Laufende Programme erwarten von hier ihre Eingaben (normalerweise handelt es sich um die Tastatur).&lt;br /&gt;
&lt;br /&gt;
Standardausgabe (1): Programme schreiben auf diese ihre Ausgaben (Bildschirm).&lt;br /&gt;
&lt;br /&gt;
Standardfehlerausgabe (2) : Fehlerausgaben landen hier (Bildschirm, aber nur die aktive Konsole).&lt;br /&gt;
&lt;br /&gt;
[[Bild:std.jpg]]&lt;br /&gt;
&lt;br /&gt;
===cat===&lt;br /&gt;
Das Programm cat liest von STDIN und gibt es STDOUT wieder aus&lt;br /&gt;
&lt;br /&gt;
Einlesen der Datei text&lt;br /&gt;
 root@zero:~# cat &amp;lt; text&lt;br /&gt;
 wichtig&lt;br /&gt;
&lt;br /&gt;
Schreiben in die Datei text, dies überschreibt den bisherigen Inhalt der Datei&lt;br /&gt;
 root@zero:~# cat &amp;gt; text&lt;br /&gt;
 sogar noch wichtiger &lt;br /&gt;
 &lt;br /&gt;
Ausgeben der Datei text&lt;br /&gt;
 root@zero:~# cat text &lt;br /&gt;
 sogar noch wichtiger&lt;br /&gt;
&lt;br /&gt;
Lesen aus der Datei text und schreiben in die Datei neuertext&lt;br /&gt;
 root@zero:~# cat &amp;lt; text &amp;gt; neuertext&lt;br /&gt;
 root@zero:~# cat neuertext&lt;br /&gt;
 sogar noch wichtiger&lt;br /&gt;
&lt;br /&gt;
Anhängen der Ausgabe von date an die Datei neuertext&lt;br /&gt;
 root@zero:~# date &amp;gt;&amp;gt; neuertext&lt;br /&gt;
 root@zero:~# cat neuertext&lt;br /&gt;
 sogar noch wichtiger&lt;br /&gt;
 Do 18. Jun 14:08:58 CEST 2009&lt;br /&gt;
&lt;br /&gt;
Umleiten des Standardfehlerkanals nach error&lt;br /&gt;
 root@zero:~# rm sux 2&amp;gt; error&lt;br /&gt;
 root@zero:~# more error&lt;br /&gt;
 rm: Entfernen von „sux“ nicht möglich: No such file or directory&lt;br /&gt;
&lt;br /&gt;
===Umleitungen===&lt;br /&gt;
Nacheinander auszuführende Kommandos&lt;br /&gt;
 root@zero:~# pwd; date&lt;br /&gt;
 /root&lt;br /&gt;
 Do 18. Jun 14:13:05 CEST 2009&lt;br /&gt;
 &lt;br /&gt;
Übergeben der Ausgabe von tail als Eingabe von grep mit Hilfe der Pipe &amp;quot;|&amp;quot;&lt;br /&gt;
 root@zero:~# tail /var/log/auth.log | grep xinux&lt;br /&gt;
 Jun 18 13:52:33 zero nss_wins[11433]: pam_unix(login:session): session closed for user xinux&lt;br /&gt;
&lt;br /&gt;
Übergeben der letzten 100 Zeilen von syslog als Eingabe von grep&lt;br /&gt;
 root@zero:~# tail /var/log/syslog -n 100 | grep error&lt;br /&gt;
 Jun 18 09:30:54 zero kernel: [154384.692135] end_request: I/O error, dev fd0, sector 0&lt;br /&gt;
 Jun 18 09:30:54 zero kernel: [154384.712137] end_request: I/O error, dev fd0, sector 0&lt;br /&gt;
&lt;br /&gt;
==tr==&lt;br /&gt;
tr ist ein Programm um Zeichen zu übersetzen. Dies betrifft nur die Ausgabe, die Datei selbst bleibt unverändert.&lt;br /&gt;
&lt;br /&gt;
Ersetzt Kleinbuchstaben durch Großbuchstaben aus der Datei text&lt;br /&gt;
 root@zero:~# tr &amp;quot;a-z&amp;quot; &amp;quot;A-Z&amp;quot; &amp;lt; text&lt;br /&gt;
 SOGAR NOCH WICHTIGER&lt;br /&gt;
 123&lt;br /&gt;
 34&lt;br /&gt;
 4711&lt;br /&gt;
 TEST&lt;br /&gt;
&lt;br /&gt;
Ersetzt alle Zahlen durch X&lt;br /&gt;
 root@zero:~# tr &amp;quot;0-9&amp;quot; &amp;quot;X&amp;quot; &amp;lt; text&lt;br /&gt;
 sogar noch wichtiger&lt;br /&gt;
 XXX&lt;br /&gt;
 XX&lt;br /&gt;
 XXXX&lt;br /&gt;
 test&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
 root@zero:~# cat &amp;gt; test&lt;br /&gt;
 +++++&lt;br /&gt;
 ###&lt;br /&gt;
 1111&lt;br /&gt;
&lt;br /&gt;
-s löscht mehrfach kommende Zeichen&lt;br /&gt;
 root@zero:~# tr '''-s''' &amp;quot;+&amp;quot; &amp;lt; test&lt;br /&gt;
 +&lt;br /&gt;
 ###&lt;br /&gt;
 1111&lt;br /&gt;
&lt;br /&gt;
-d löscht vorkommende Zeichen &lt;br /&gt;
 root@zero:~# tr '''-d''' &amp;quot;#&amp;quot; &amp;lt; test&lt;br /&gt;
 +++++ &lt;br /&gt;
 &lt;br /&gt;
 1111&lt;br /&gt;
&lt;br /&gt;
==cut==&lt;br /&gt;
Spalten aus einer Datei schneiden. Dies betrifft nur die Ausgabe, die Datei selbst bleibt unverändert.&lt;br /&gt;
 &lt;br /&gt;
Schneidet die erste Spalte aus, der Delimiter ist : &lt;br /&gt;
 root@zero:~# cut -f 1 -d : /etc/passwd&lt;br /&gt;
 root&lt;br /&gt;
 daemon&lt;br /&gt;
 bin&lt;br /&gt;
 ...&lt;br /&gt;
 xinux&lt;br /&gt;
&lt;br /&gt;
 root@zero:~# more test&lt;br /&gt;
 1234#5678#9999&lt;br /&gt;
 &lt;br /&gt;
Schneidet die zweite Spalte aus, der Delimiter ist #&lt;br /&gt;
 root@zero:~# cut -f 2 -d &amp;quot;#&amp;quot; &amp;lt; test&lt;br /&gt;
 5678&lt;br /&gt;
&lt;br /&gt;
Schneidet bis zum 3 Zeichen ab&lt;br /&gt;
 root@zero:~$ echo S01policykit | cut -c 4-&lt;br /&gt;
 policykit&lt;br /&gt;
&lt;br /&gt;
==expand==&lt;br /&gt;
Ersetzt Tabulatorzeichen durch Folgen von Leerzeichen und schreibt das Ergebnis auf die Standardausgabe&lt;br /&gt;
 root@zero:~# expand /etc/samba/smb.conf&lt;br /&gt;
 ...&lt;br /&gt;
&lt;br /&gt;
==fmt==&lt;br /&gt;
#Setzt den Text der Dateien im Blocksatz der angegebenen Breite durch Auffüllen von Zeilen und Entfernen von Zeilenwechseln.&lt;br /&gt;
Standardgemäß werden Leerzeilen, die Position von Leerzeichen und der Einzug am Zeilenanfang erhalten. fmt versucht, &lt;br /&gt;
Zeilenumbrüche an Satzenden durchzuführen sowie sie nach dem ersten oder vor dem letzten Wort eines Satzes zu vermeiden. &lt;br /&gt;
 &lt;br /&gt;
 fmt [Optionen] [Dateien]&lt;br /&gt;
&lt;br /&gt;
Optionen&lt;br /&gt;
&lt;br /&gt;
* -p ''Präfix'': Formatiert nur Zeilen, die mit ''Präfix'' anfangen&lt;br /&gt;
 root@zero:/tmp# fmt -p '#' text&lt;br /&gt;
 #Setzt den Text der Dateien im Blocksatz der angegebenen Breite durch&lt;br /&gt;
 #Auffüllen von Zeilen und Entfernen von Zeilenwechseln.  Standardgemäß&lt;br /&gt;
 #werden Leerzeilen, die Position von Leerzeichen und der Einzug am&lt;br /&gt;
 #Zeilenanfang erhalten. fmt versucht,&lt;br /&gt;
 Zeilenumbrüche an Satzenden durchzuführen sowie sie nach dem ersten oder vor dem letzten Wort eines Satzes zu vermeiden.&lt;br /&gt;
&lt;br /&gt;
* -u : Erzwingt genau ein Leerzeichen zwischen Wörtern und zwei Leerzeichen zwischen Sätzen&lt;br /&gt;
&lt;br /&gt;
* -w ''Breite'': Setzt die Ausgabebreite auf ''Breite''&lt;br /&gt;
 root@zero:/tmp# fmt -w 30 text&lt;br /&gt;
 #Setzt den Text der Dateien&lt;br /&gt;
 im Blocksatz der angegebenen&lt;br /&gt;
 Breite durch Auffüllen&lt;br /&gt;
 von Zeilen und Entfernen&lt;br /&gt;
 von Zeilenwechseln.&lt;br /&gt;
 #Standardgemäß werden&lt;br /&gt;
 Leerzeilen, die Position von&lt;br /&gt;
 Leerzeichen und der Einzug am&lt;br /&gt;
 Zeilenanfang erhalten. fmt&lt;br /&gt;
 versucht, Zeilenumbrüche&lt;br /&gt;
 an Satzenden durchzuführen&lt;br /&gt;
 sowie sie nach dem ersten&lt;br /&gt;
 oder vor dem letzten Wort&lt;br /&gt;
 eines Satzes zu vermeiden.&lt;br /&gt;
&lt;br /&gt;
==join==&lt;br /&gt;
Führt die Zeilen zweier sortierter Dateien anhand von '''Übereinstimmungen''' in einem gemeinsamen Feld zusammen.&lt;br /&gt;
&lt;br /&gt;
 root@zero:~# more name&lt;br /&gt;
 1. karl&lt;br /&gt;
 2. heinz&lt;br /&gt;
 3. hans&lt;br /&gt;
 4. otto&lt;br /&gt;
 root@zero:~# more tel&lt;br /&gt;
 1. 1234&lt;br /&gt;
 2. 4321&lt;br /&gt;
 3. 222&lt;br /&gt;
 4. 121212&lt;br /&gt;
 root@zero:~# join name tel &amp;gt; telefonbuch&lt;br /&gt;
 root@zero:~# more telefonbuch&lt;br /&gt;
 1. karl 1234&lt;br /&gt;
 2. heinz 4321&lt;br /&gt;
 3. hans 222&lt;br /&gt;
 4. otto 121212&lt;br /&gt;
&lt;br /&gt;
 root@zero:~# join -t : /etc/passwd /etc/shadow&lt;br /&gt;
 ....&lt;br /&gt;
 daemon:x:1:1:daemon:/usr/sbin:/bin/sh:*:14181:0:99999:7:::&lt;br /&gt;
 bin:x:2:2:bin:/bin:/bin/sh:*:14181:0:99999:7:::&lt;br /&gt;
 sys:x:3:3:sys:/dev:/bin/sh:*:14181:0:99999:7:::&lt;br /&gt;
 sync:x:4:65534:sync:/bin:/bin/sync:*:14181:0:99999:7:::&lt;br /&gt;
 ...&lt;br /&gt;
&lt;br /&gt;
join in dat1 nach Feld 3 und in dat2 nach Feld 2&lt;br /&gt;
 thomas@lydia:~$ cat dat1 &lt;br /&gt;
 hugo:ps:1111&lt;br /&gt;
 erwin:zw:2222&lt;br /&gt;
 karl:sb:3333&lt;br /&gt;
 rudi:kl:4444&lt;br /&gt;
 thomas@lydia:~$ cat dat2&lt;br /&gt;
 blau:1111:svn&lt;br /&gt;
 grün:2222:fcs&lt;br /&gt;
 gelb:3333:fch&lt;br /&gt;
 rot:4444:fck&lt;br /&gt;
 thomas@lydia:~$ join -t : -1 3 -2 2 dat1 dat2 &lt;br /&gt;
 1111:hugo:ps:blau:svn&lt;br /&gt;
 2222:erwin:zw:grün:fcs&lt;br /&gt;
 3333:karl:sb:gelb:fch&lt;br /&gt;
 4444:rudi:kl:rot:fck&lt;br /&gt;
&lt;br /&gt;
==nl==&lt;br /&gt;
Nummeriert die Zeilen in einer Datei.&lt;br /&gt;
&lt;br /&gt;
 root@zero:~# nl /etc/passwd                                                   &lt;br /&gt;
     1  root:x:0:0:root:/root:/bin/bash                                       &lt;br /&gt;
     2  daemon:x:1:1:daemon:/usr/sbin:/bin/sh                                 &lt;br /&gt;
     3  bin:x:2:2:bin:/bin:/bin/sh                                            &lt;br /&gt;
     4  sys:x:3:3:sys:/dev:/bin/sh                                            &lt;br /&gt;
     5  sync:x:4:65534:sync:/bin:/bin/sync&lt;br /&gt;
     ...&lt;br /&gt;
Nummereriet mit führenden Nullen der Separatir ist ein :&lt;br /&gt;
 root@zero:~# nl -s : -n rz dat1&lt;br /&gt;
&lt;br /&gt;
==od==&lt;br /&gt;
Gibt Dateien im Oktal und anderen Formaten aus.&lt;br /&gt;
&lt;br /&gt;
 od [Optionen] Datei&lt;br /&gt;
&lt;br /&gt;
* -j ''Bytes'': Überspringt die Anzahl ''Bytes'' einer Datei&lt;br /&gt;
* -N ''Bytes'': Gibt nur die Anzahl ''Bytes'' aus&lt;br /&gt;
* -c : Gebe ASCII Zeichen aus&lt;br /&gt;
* -f : Gebe Fließkommazahlen aus&lt;br /&gt;
* -i : Gebe Dezimal Integer aus&lt;br /&gt;
* -l : Gebe Dezimal Long aus&lt;br /&gt;
* -o : Gebe Oktal 2 Byte Einheiten aus&lt;br /&gt;
* -s : Gebe Dezimal 2 Byte Einheiten aus&lt;br /&gt;
* -x : Gebe Hexadezimale 2 Byte einheiten aus&lt;br /&gt;
&lt;br /&gt;
Beispiele&lt;br /&gt;
&lt;br /&gt;
Gebe Master Boot Record (die ersten 512 Byte der Festplatte /dev/sda) als Hexadezimal aus&lt;br /&gt;
 root@zero:~# od '''-x -N''' 512 /dev/sda&lt;br /&gt;
 0000000 48eb 1090 d08e 00bc b8b0 0000 d88e c08e&lt;br /&gt;
 0000020 befb 7c00 00bf b906 0200 a4f3 21ea 0006&lt;br /&gt;
 0000040 be00 07be 0438 0b75 c683 8110 fefe 7507&lt;br /&gt;
 0000060 ebf3 b416 b002 bb01 7c00 80b2 748a 0203&lt;br /&gt;
 0000100 00ff 2000 0001 0000 0200 90fa f690 80c2&lt;br /&gt;
 ...&lt;br /&gt;
&lt;br /&gt;
Schreibe &amp;quot;suxer&amp;quot; in die Datei test&lt;br /&gt;
 root@zero:~# echo &amp;quot;suxer&amp;quot; &amp;gt; test&lt;br /&gt;
Ausgabe Hexadezimal&lt;br /&gt;
 root@zero:~# od -x test&lt;br /&gt;
 0000000 7573 6578 0a72&lt;br /&gt;
 0000006&lt;br /&gt;
&lt;br /&gt;
Ausgabe ASCII Zeichen&lt;br /&gt;
 root@zero:~# od -c test&lt;br /&gt;
 0000000   s   u   x   e   r  \n&lt;br /&gt;
 0000006&lt;br /&gt;
&lt;br /&gt;
==paste==&lt;br /&gt;
Fügt die Zeilen von zwei oder mehr Dateien horizontal zusammen&lt;br /&gt;
 root@zero:~# paste name tel&lt;br /&gt;
 1. karl 1. 1234&lt;br /&gt;
 2. heinz        2. 4321&lt;br /&gt;
 3. hans 3. 222&lt;br /&gt;
 4. otto 4. 121212&lt;br /&gt;
&lt;br /&gt;
==pr==&lt;br /&gt;
Bereitet Textdateien zum Drucken vor.&lt;br /&gt;
&lt;br /&gt;
 root@zero:~# echo &amp;quot;Plan für heute&amp;quot; &amp;gt; dokument&lt;br /&gt;
 root@zero:~# more dokument&lt;br /&gt;
 Plan für heute&lt;br /&gt;
 root@zero:~# pr dokument   &lt;br /&gt;
  &lt;br /&gt;
 &lt;br /&gt;
 2009-06-19 12:44                    dokument                     Seite 1&lt;br /&gt;
 &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
 Plan für heute&lt;br /&gt;
&lt;br /&gt;
Anmerkung Ausmaße der Bildschirmausgabe wie eine Druckseite.&lt;br /&gt;
&lt;br /&gt;
==sed==&lt;br /&gt;
streaming editor. Mit sed ist es möglich, den Inhalt einer Datei automatisch (nicht interaktiv) zu&lt;br /&gt;
bearbeiten. Wie unter Linux üblich, wird auch hier der Text nicht wirklich verändert sondern die &lt;br /&gt;
Änderung erfolgt über die Standardausgabe, die wieder umgeleitet werden kann. Die Syntax ist ähnlich &lt;br /&gt;
des ex modus von vi. Reguläre Ausdrücke können nach Belieben benutzt werden. &lt;br /&gt;
&lt;br /&gt;
Optionen:&lt;br /&gt;
 -e Zeichenkette  wendet die Editorbefehle aus Zeichenkette auf den Text an.&lt;br /&gt;
 -n gibt nur die Zeilen aus, die explizit (durch &amp;quot;p&amp;quot; ausgedruckt werden sollen&lt;br /&gt;
&lt;br /&gt;
Gibt die dritte Zeile der Datei text aus&lt;br /&gt;
 root@zero:~# sed -n &amp;quot;3p&amp;quot; text&lt;br /&gt;
 34&lt;br /&gt;
&lt;br /&gt;
Gibt die erste bis dritte Zeile von text aus&lt;br /&gt;
 root@zero:~# sed -n &amp;quot;1,3p&amp;quot; text&lt;br /&gt;
 sogar noch wichtiger&lt;br /&gt;
 123&lt;br /&gt;
 34&lt;br /&gt;
&lt;br /&gt;
Löschen der Zeile mit &amp;quot;sogar&amp;quot;&lt;br /&gt;
 root@zero:~# sed -e '/sogar/d' &amp;lt; text&lt;br /&gt;
 123&lt;br /&gt;
 34&lt;br /&gt;
 4711&lt;br /&gt;
 test&lt;br /&gt;
&lt;br /&gt;
und schreiben in text2&lt;br /&gt;
 root@zero:~# sed -e '/sogar/d' &amp;lt; text &amp;gt; text2&lt;br /&gt;
 root@zero:~# more text2&lt;br /&gt;
 123&lt;br /&gt;
 34&lt;br /&gt;
 4711&lt;br /&gt;
 test&lt;br /&gt;
&lt;br /&gt;
Alle 3en durch DREI ersetzen&lt;br /&gt;
 root@zero:~# sed -e 's/3/DREI/g' &amp;lt; text&lt;br /&gt;
 sogar noch wichtiger&lt;br /&gt;
 12DREI&lt;br /&gt;
 DREI4&lt;br /&gt;
 4711&lt;br /&gt;
 test&lt;br /&gt;
&lt;br /&gt;
==wc==&lt;br /&gt;
Zählt die Anzahl von Zeichen, Wörter oder Zeilen&lt;br /&gt;
&lt;br /&gt;
Optionen&lt;br /&gt;
* -m : Zählt die Anzahl der Zeichen&lt;br /&gt;
 root@zero:~# more name&lt;br /&gt;
 1. karl&lt;br /&gt;
 2. heinz&lt;br /&gt;
 3. hans&lt;br /&gt;
 4. otto&lt;br /&gt;
 root@zero:~# wc '''-m''' tel&lt;br /&gt;
 33 tel&lt;br /&gt;
&lt;br /&gt;
* -w : Zählt die Anzahl der Wörter (einschließlich Zahlen und andere Zeichen)&lt;br /&gt;
 root@zero:~# wc '''-w''' name&lt;br /&gt;
 8 name&lt;br /&gt;
&lt;br /&gt;
* -l : Zählt die Anzahl der Zeilen&lt;br /&gt;
 root@zero:~# wc '''-l''' name&lt;br /&gt;
 4 name&lt;br /&gt;
&lt;br /&gt;
==Sort==&lt;br /&gt;
&lt;br /&gt;
Zum sortieren von Dateien nach Feldern benutzt man sort. sort liest von STDIN man kann die Datei aber auch als Argument übergeben. &lt;br /&gt;
&lt;br /&gt;
Sortiert nach dem ersten Feld&lt;br /&gt;
  root@zero:~# sort /etc/passwd 	 &lt;br /&gt;
&lt;br /&gt;
Es wird geprüft ob die Datei schon sortiert ist &lt;br /&gt;
 root@zero:~# sort -c /etc/passwd 	&lt;br /&gt;
&lt;br /&gt;
Sortiert nach dem ersten Feld (Richtungsumkehr)  &lt;br /&gt;
 root@zero:~#  sort -r /etc/passwd&lt;br /&gt;
&lt;br /&gt;
Führende Leersortzeichen werden ignoriert &lt;br /&gt;
 root@zero:~# sort -b /etc/passwd&lt;br /&gt;
&lt;br /&gt;
Ausgabe  in die Datei pass&lt;br /&gt;
 root@zero:~# sort  /etc/passwd   -o pass	 &lt;br /&gt;
&lt;br /&gt;
nimmt : als Trenner -Voreinstellung ist TAB&lt;br /&gt;
  root@zero:~# sort -t : /etc/passwd&lt;br /&gt;
&lt;br /&gt;
sortiert nach dem  3 Feld,  der Trenner ist : und es wird nummerisch sortiert&lt;br /&gt;
&lt;br /&gt;
 root@zero:~# sort -t: +2 -n /etc/passwd		&lt;br /&gt;
&lt;br /&gt;
sortiert nach dem  3 Feld,  der Trenner ist : und es wird nummerisch sortiert&lt;br /&gt;
					&lt;br /&gt;
 root@zero:~# sort -t: -k 3 -n /etc/passwd&lt;br /&gt;
&lt;br /&gt;
Sortiert nach dem  3  bis zum 5 Feld, der Trenner ist : und es wird nummerisch sortiert&lt;br /&gt;
	&lt;br /&gt;
 root@zero:~# sort -t: -k 3,5 -n /etc/passwd	&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==INodes==&lt;br /&gt;
Inode (oder I-Node) wird im Deutschen am besten als Informationsknoten oder&lt;br /&gt;
Indexeintrag bezeichnet. Er fasst alle Attribute einer Datei zusammen außer dem Inhalt&lt;br /&gt;
und dem Namen der Datei.&lt;br /&gt;
&lt;br /&gt;
===Daten===&lt;br /&gt;
{| border=1 cellpadding=2&lt;br /&gt;
|type&lt;br /&gt;
|Der Typ der Datei wird als einzelner Buchstabe angezeigt. Der Typ einer Datei wird beim Anlegen der Datei festgelegt&lt;br /&gt;
|-&lt;br /&gt;
|Permissions &lt;br /&gt;
|Die Zugriffsrechte der Datei werden in den 12 Bit sstrwxrwxrwx abgespeichert.Wenn sie gesetzt sind, werden sie bei &lt;br /&gt;
der Ausgabe an Stelle der x-Rechte ausgegeben. Die Zugriffsrechte können mit dem Kommando chmod verändert werden.&lt;br /&gt;
|-&lt;br /&gt;
|link count&lt;br /&gt;
|In UNIX kann eine Datei mehr als einen Namen haben. Der Link Count gibt die Anzahl der Namen einer Datei an. Er kann&lt;br /&gt;
mit dem Kommando ln erhöht und dem Kommando rm erniedrigt werden.&lt;br /&gt;
|-&lt;br /&gt;
|owner&lt;br /&gt;
|Für den Dateieigentümer gelten die in der ersten rwx-Gruppe festgelegten Zugriffsrechte. Standardmäßig ist der &lt;br /&gt;
Eigentümer einer Datei derjenige Benutzer, der die Datei angelegt hat.&lt;br /&gt;
|-&lt;br /&gt;
|group&lt;br /&gt;
|Für Benutzer, die in der gleichen Gruppe sind, der die Datei angehört, gelten die in der zweiten rwx-Gruppe festgelegten&lt;br /&gt;
Zugriffsrechte. In System V gehört eine Datei standardmäßig der Gruppe an, in der der anlegende Benutzer gerade ist.&lt;br /&gt;
|-&lt;br /&gt;
|size&lt;br /&gt;
|Bei normalen Dateien und Verzeichnissen gibt diese Information die Länge der Datei in Byte an.&lt;br /&gt;
|-&lt;br /&gt;
|access time&lt;br /&gt;
|Die Zugriffszeit gibt den Zeitpunkt des letzten Lesezugriffes auf eine Datei an. Aus Effizienzgründen wird die &lt;br /&gt;
Zugriffszeit an Verzeichnissen nicht gesetzt, wenn ein Verzeichnis durchsucht wird, obwohl man dies erwarten könnte. ''(ls -l --time=atime)''&lt;br /&gt;
|-&lt;br /&gt;
|modification time&lt;br /&gt;
|Die Modifikationszeit gibt die Zeit des letzten Schreibzugriffes auf die Daten der Datei an. Intern speichert UNIX &lt;br /&gt;
die Zeit als Sekunden seit Beginn des Jahres 1970 und in GMT ab. Für die Ausgabe wird dies in ein besser lesbares &lt;br /&gt;
Format in der lokalen Zeitzone umgewandelt. ''(ls -l)''&lt;br /&gt;
|-&lt;br /&gt;
|change time &lt;br /&gt;
|Die Veränderungszeit gibt das Datum der letzten Statusänderung der Datei an. Sie wird immer dann gesetzt, wenn die &lt;br /&gt;
Informationen über die Datei sich ändern (Datum der Erzeugung wird nicht gespeichert) ''(ls -lc)''&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
===Dateiarten===&lt;br /&gt;
{| border=1 cellpadding=2&lt;br /&gt;
!Zeichen&lt;br /&gt;
!Typ&lt;br /&gt;
!Zweck&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;nowiki&amp;gt;-&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
|file&lt;br /&gt;
|normale Datei&lt;br /&gt;
|-&lt;br /&gt;
|d&lt;br /&gt;
|directory&lt;br /&gt;
|Verzeichnis&lt;br /&gt;
|-&lt;br /&gt;
|b&lt;br /&gt;
|block device&lt;br /&gt;
|Gerätedatei&lt;br /&gt;
|-&lt;br /&gt;
|c&lt;br /&gt;
|character device&lt;br /&gt;
|Gerätedatei&lt;br /&gt;
|-&lt;br /&gt;
|l&lt;br /&gt;
|link&lt;br /&gt;
|Querverweis&lt;br /&gt;
|-&lt;br /&gt;
|p&lt;br /&gt;
|named pipe&lt;br /&gt;
|Benannte Pipeline&lt;br /&gt;
|-&lt;br /&gt;
|s&lt;br /&gt;
|socket&lt;br /&gt;
|Netzwerkverbindung&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
====Normale Dateien====&lt;br /&gt;
Unter einer normalen Datei versteht man die Ansammlung von Daten. Dies kann ein Text, Programm, Bild oder sonstiges sein. &lt;br /&gt;
Beispiel&lt;br /&gt;
 root@zero:~# ls -l text | cut -c 1&lt;br /&gt;
 -&lt;br /&gt;
&lt;br /&gt;
====Verzeichnisse====&lt;br /&gt;
Dateien werden in Verzeichnissen gespeichert, nur so ist eine Ordnung möglich. &lt;br /&gt;
 root@zero:~# mkdir -v Ordner&lt;br /&gt;
 mkdir: Verzeichnis „Ordner“ angelegt&lt;br /&gt;
 &lt;br /&gt;
 root@zero:~# ls -d ~/*&lt;br /&gt;
 /root/error  /root/neuertext  /root/Ordner  /root/profile  /root/test  /root/text  /root/verzeichnis&lt;br /&gt;
&lt;br /&gt;
====Gerätedateien (Block und Char)====&lt;br /&gt;
Gerätedateien ermöglichen Anwendungsprogrammen unter Benutzung des  Kernels den Zugriff auf die Hardwarekomponenten des &lt;br /&gt;
Systems. &lt;br /&gt;
&lt;br /&gt;
Beispiele&lt;br /&gt;
&lt;br /&gt;
Sicherung des Master Boot Records der ersten Festplatte&lt;br /&gt;
 root@zero:~# dd if=/dev/sda1 of=/tmp/mbr.img bs=512 count=1&lt;br /&gt;
&lt;br /&gt;
Einhängen des CD-ROM Laufwerks&lt;br /&gt;
 root@zero:~# mount /dev/cdrom /media/cdrom -t iso9660&lt;br /&gt;
&lt;br /&gt;
====Named Pipes====&lt;br /&gt;
Benannte Pipes (Named Pipes) können dagegen auch zur Kommunikation zwischen Prozessen eingesetzt werden, die nicht miteinander&lt;br /&gt;
verwandt sind und sich darüber hinaus auf unterschiedlichen Rechnern innerhalb eines Netzwerkes befinden dürfen. Sie sind &lt;br /&gt;
flexibler als anonyme Pipes und eignen sich für sogenannte Client-Server-Anwendungen (es lassen sich auch RPCs realisieren).&lt;br /&gt;
Benannte Pipes ermöglichen die gleichzeitige Kommunikation in beide Richtungen, das heißt, Daten können im Vollduplexbetrieb &lt;br /&gt;
zwischen den Prozessen ausgetauscht werden.&lt;br /&gt;
 &lt;br /&gt;
Erstelle Named Pipe mit Namen sux. Schreibe &amp;quot;Hallo Welt&amp;quot; in die Pipe sux und bleibe im Hintergrund. Gebe Inhalt der Pipe mit cat aus&lt;br /&gt;
 root@zero:~# mkfifo sux ; echo 'Hallo Welt' &amp;gt; sux &amp;amp; cat &amp;lt; sux&lt;br /&gt;
 [1] 12947&lt;br /&gt;
 Hallo Welt&lt;br /&gt;
 [1]+  Done                    echo 'Hallo Welt' &amp;gt; sux&lt;br /&gt;
&lt;br /&gt;
====Sockets====&lt;br /&gt;
Schnittstelle um es vernetzten Rechnern zu ermöglichen, miteinander zu kommunizieren.&lt;br /&gt;
&lt;br /&gt;
Sie ist in der Regel definiert durch IP-Adresse sowie Port. &lt;br /&gt;
&lt;br /&gt;
====Links====&lt;br /&gt;
Bei Links handelt es sich um symbolische Verweise auf andere Dateien&lt;br /&gt;
&lt;br /&gt;
'''Softlink'''&lt;br /&gt;
Ein Softlink ist eine Datei die nur auf den Namen einer anderen Datei verweist. Wenn die Originaldatei gelöscht wird, zeigt &lt;br /&gt;
der Link ins Leere. &lt;br /&gt;
&lt;br /&gt;
 ln -s datei softlink&lt;br /&gt;
&lt;br /&gt;
{| border=1 cellpadding=2&lt;br /&gt;
| Vorteile&lt;br /&gt;
| Symbolische Links können auch auf Verzeichnisse angelegt werden&amp;lt;br&amp;gt;Sie sind partitionsübergreifend&amp;lt;br&amp;gt;Man kann sie auf Dateien anlegen, die noch nicht existieren&lt;br /&gt;
|-&lt;br /&gt;
| Nachteile&lt;br /&gt;
| Wenn das Original gelöscht ist, ist kein Zugriff mehr möglich&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Beispiel&lt;br /&gt;
 root@zero:~# ln -s text verweis&lt;br /&gt;
 root@zero:~# ls -l verweis&lt;br /&gt;
 lrwxrwxrwx 1 root root 4 2009-06-18 15:48 verweis -&amp;gt; text&lt;br /&gt;
&lt;br /&gt;
'''Hardlinks'''&lt;br /&gt;
 ln datei hardlink&lt;br /&gt;
Eigentlich ist jede Datei ein Hardlink. Ein Hardlink ist ein Verzeichniseintrag,&lt;br /&gt;
der auf eine Inode verweist. Beim Erzeugen einer Datei verweist ein Eintrag auf&lt;br /&gt;
eine Inode. Man kann dann weitere Verweise erzeugen. Der Linkcounter wird&lt;br /&gt;
jeweils um 1 erhöht. Beim Löschen einer Datei wird er jeweils um 1 reduziert.&lt;br /&gt;
Wird der Wert 0 erreicht, ist die Datei gelöscht.&lt;br /&gt;
{| border=1 cellpadding=2&lt;br /&gt;
| Vorteile&lt;br /&gt;
|Zugriff auf die Daten, selbst wenn das Orginal gelöscht ist.&lt;br /&gt;
|-&lt;br /&gt;
|Nachteile&lt;br /&gt;
|Man kann keine Hardlinks auf Verzeichnisse anlegen.&lt;br /&gt;
Ist nur innerhalb einer Partion möglich.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Beispiel&lt;br /&gt;
 root@zero:~# touch 1&lt;br /&gt;
 root@zero:~# echo &amp;quot;text&amp;quot; &amp;gt; 1&lt;br /&gt;
 root@zero:~# ln 1 2&lt;br /&gt;
 root@zero:~# more 2&lt;br /&gt;
 text&lt;br /&gt;
 root@zero:~# echo &amp;quot;doch kein text&amp;quot; &amp;gt; 1&lt;br /&gt;
 root@zero:~# more 1&lt;br /&gt;
 doch kein text&lt;br /&gt;
 root@zero:~# more 2&lt;br /&gt;
 doch kein text&lt;br /&gt;
&lt;br /&gt;
Weitere Optionen:&lt;br /&gt;
 -b sichert Dateien, statt sie zu überschreiben &lt;br /&gt;
 -f Überschreibt bestehende, gleichnamige Dateien&lt;br /&gt;
 -i fragt vor dem Überschreiben nach Bestätigung&lt;br /&gt;
 -v ausführliche Meldungen&lt;br /&gt;
&lt;br /&gt;
==Prozesse==&lt;br /&gt;
===Was ist ein Prozess?===&lt;br /&gt;
Ein Prozess setzt sich aus zwei Teilen zusammen:&lt;br /&gt;
&lt;br /&gt;
1.Programm, das in den Hauptspeicher geladen wurde&lt;br /&gt;
&lt;br /&gt;
2.Prozessumgebung&lt;br /&gt;
&lt;br /&gt;
Unter einem Prozess versteht man ein Programm (binär), das in den Hauptspeicher&lt;br /&gt;
geladen wurde. Also nicht das Program selbst, das auf der Festplatte liegt ist der&lt;br /&gt;
Prozess, sondern es wird erst durch das Laden in den Hauptspeicher dazu.&lt;br /&gt;
Normalerweise liegt ein Programm als ausführbare Datei irgendwo auf der&lt;br /&gt;
Festplatte oder auf Diskette. Ob es sich bei dem Programm um eine binäre Datei&lt;br /&gt;
handelt, kann man mit dem Befehl '' file '' feststellen.&lt;br /&gt;
 &lt;br /&gt;
 root@zero:~# file /bin/mkdir&lt;br /&gt;
 /bin/mkdir: ELF 32-bit LSB executable, Intel 80386, version 1 (SYSV), dynamically linked (uses shared libs), for GNU/Linux 2.6.8, stripped&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Die Datei liegt im Maschinencode vor und kann in den Hauptspeicher geladen&lt;br /&gt;
werden. Sobald dies geschehen ist, kann der Rechner diesen Maschinencode&lt;br /&gt;
abarbeiten (ausführen).&lt;br /&gt;
&lt;br /&gt;
Da aber ein Programm nicht direkt auf die Hardware zugreifen soll, muss es vom&lt;br /&gt;
Betriebsystem kontrolliert werden. Das Betriebssystem liegt logisch gesehen&lt;br /&gt;
zwischen Hardware und Anwendung. Das Betriebssystem ordnet jedem Prozess&lt;br /&gt;
verschiedene Kenndaten zu, um die Prozesse verwalten zu können. Alle&lt;br /&gt;
Kenndaten, die einem Prozess zugeordnet sind, nennt man die&lt;br /&gt;
Prozessumgebung.Wenn man in der Shell ein Kommando eingibt, wird ein Prozess&lt;br /&gt;
kreiert. Natürlich ist die Shell selbst auch ein Prozess. Ein Prozess kann aber&lt;br /&gt;
genauso gut ein Serverprozess (Dienst) sein, z.B. Apache.&lt;br /&gt;
Ein wesentliches Merkmal eines Prozesses ist die Prozesskommunikation. Über im&lt;br /&gt;
Betriebssystem implementierte Methoden ist es möglich, dass verschiedene&lt;br /&gt;
Prozesse Signale und Daten untereinander austauschen können.&lt;br /&gt;
Dadurch wird auch dem Benutzer ermöglicht, einem Prozeß bestimmte Signale zu&lt;br /&gt;
senden bzw. auf den Status eines Prozesses Einfluss zu nehmen.&lt;br /&gt;
&lt;br /&gt;
===Prozesstabelle (Anzeige mit ps)===&lt;br /&gt;
Da zu jedem Prozess Kenndaten geführt werden, müssen diese auch irgendwo&lt;br /&gt;
festgehalten werden. Das geschieht in der sogenannten Prozesstabelle.&lt;br /&gt;
&lt;br /&gt;
Kenndaten der Prozesse (Auswahl):&lt;br /&gt;
* F Flags (z.B. ausgelagert; Systemprozess; Trace,...)&lt;br /&gt;
* UID Nutzer, mit dessen Rechten der Prozess ausgeführt wird&lt;br /&gt;
* PID Prozess - ID. Diese Nummer gibt eine eindeutige Prozess - Nummer&lt;br /&gt;
an. Sie wird vom System automatisch beim Starten des Prozesses&lt;br /&gt;
vergeben und ist für die Laufzeit eindeutig.&lt;br /&gt;
* PPID Prozessnumer der Eltern-Prozesses&lt;br /&gt;
* PRI Priorität eines Prozesses; je niedriger der Wert ist, desto besser&lt;br /&gt;
* NI ist der Nicewert des Prozesses; Nice erniedrigt den Grundwert&lt;br /&gt;
der Priorität des Prozesses und gibt damit Prozessorzeit für andere&lt;br /&gt;
Prozesse frei.&lt;br /&gt;
* SIZE Speichergröße des Prozesses inklusive Stack (eine Art Zwischenspeicher)&lt;br /&gt;
* RSS Verbrauch an physischen Speicher&lt;br /&gt;
* WCHAN ist der Name der Kernerlfunktion, in der der Prozess schläft&lt;br /&gt;
* STAT Status des Prozesses&lt;br /&gt;
R läuft       S schlafend     D nicht störbarer Schlaf&lt;br /&gt;
T angehalten  Z Zombie        W der Prozess belegt keine Seiten&lt;br /&gt;
* TIME Bisland benötigte Prozessorzeit&lt;br /&gt;
* SIZE ist die Größe von Text, Daten und Stack&lt;br /&gt;
* TTY die Nummer des kontrollierenden Teminal; wenn hier ein ? steht,&lt;br /&gt;
handelt es sich um einen Dämon oder Serverprozess.&lt;br /&gt;
* COMMAND Angabe des Prozesses selbst. Dies ist meist der Programmname.&lt;br /&gt;
&lt;br /&gt;
Weiteres&lt;br /&gt;
* GID Gruppe, unter der der Prozess läuft&lt;br /&gt;
* Verweis auf das aktuellen Arbeitsverzeichnis&lt;br /&gt;
* Um mit relativen Pfadangaben arbeiten zu können braucht man diesen Eintrag&lt;br /&gt;
* Tabelle mit Verweisen auf aktuell geöffnete Dateien&lt;br /&gt;
* 3 sind automatisch geöffnet Standardeingabe, Standardausgabe und&lt;br /&gt;
Standardfehlerkanal&lt;br /&gt;
&lt;br /&gt;
Beispiel&lt;br /&gt;
 root@zero:~# ps -l&lt;br /&gt;
 F S   UID   PID  PPID  C PRI  NI ADDR SZ WCHAN  TTY          TIME CMD&lt;br /&gt;
 4 R     0 18639 18631  0  80   0 -  1080 -      pts/0    00:00:00 bash&lt;br /&gt;
 0 R     0 25904 18639  0  80   0 -   635 -      pts/0    00:00:00 ps&lt;br /&gt;
&lt;br /&gt;
===Eltern und Kinder===&lt;br /&gt;
Jeder Prozess kann weitere Prozesse erzeugen. Die erzeugten Prozesse bezeichnet&lt;br /&gt;
man als Kindprozesse. Jeder Kindprozess weiß anhand der PID, woher er stammt.&lt;br /&gt;
&lt;br /&gt;
Alle Prozesse sind von einem anderen Prozess gestartet worden, mit Ausnahme&lt;br /&gt;
des Pseudoprozesses (noch im Kernel beim Starten erzeugter Prozess). Dieser hat&lt;br /&gt;
die Prozessnummer 0. Er hat die Aufgabe, den Init Prozess ( /sbin/init die Nummer&lt;br /&gt;
1) zu starten, der in System V alle anderen Prozesse direkt oder über seine Kind-&lt;br /&gt;
prozesse startet. (init wird konfiguriert durch die /etc/inittab)&lt;br /&gt;
&lt;br /&gt;
Es gibt zwei Arten wie ein Prozess gestartet werden kann:&lt;br /&gt;
&lt;br /&gt;
# Fork und Exec: Prozessumgebung wird dupliziert, der neue Prozess bekommt eine eigene neue PID&lt;br /&gt;
# Exec: Alter Prozess wird durch neuen Prozess überladen (geht mit dem shell-buildin exec)&lt;br /&gt;
&lt;br /&gt;
'''Rechte auf Objekte UID GID'''&lt;br /&gt;
Ob ein Prozess auf eine Datei zugreifen kann, entscheidet der Kernel anhand der&lt;br /&gt;
Zugriffssrechte, die auf der Datei gesetzt sind. Er checkt anhand der UID und GID&lt;br /&gt;
des Prozesses, ob es erlaubt ist. Mit dieser Technik wird letztendlich geprüft, was&lt;br /&gt;
ein User darf, und was nicht.&lt;br /&gt;
&lt;br /&gt;
===Rechenzeit und Priorität===&lt;br /&gt;
Da auch bei Prozessen eine Gerechtigkeit herschen muss, muss eine Instanz&lt;br /&gt;
darüber entscheiden wie lange ein Prozess Rechenzeit verbrauchen darf.&lt;br /&gt;
Folgende Kenndaten werden dazu benötigt&lt;br /&gt;
* clocktick = Zeiteinheit&lt;br /&gt;
* n = Faktor über den Kernel einstellbar&lt;br /&gt;
* slice = n &amp;lt;nowiki&amp;gt;*&amp;lt;/nowiki&amp;gt; clocktick&lt;br /&gt;
* agingtime = weitere Zeiteinheit über den Kernel einstellbar&lt;br /&gt;
&lt;br /&gt;
Es wird davon ausgegangen das der Prozess mit der niedrigsten Priorität gerade&lt;br /&gt;
rechnet. Pro clocktick erhöht sich die Priorität dieses Prozesses um eins.&lt;br /&gt;
&lt;br /&gt;
Jetzt können 3 Situationen eintreten die alle dazu führen das der Scheduler&lt;br /&gt;
aufgerufen wird.&lt;br /&gt;
&lt;br /&gt;
# Prozess blockiert wegen einer Ausgabe oder Eingabe.&lt;br /&gt;
# Gibt Rechenzeit freiwillig ab.&lt;br /&gt;
# Der Slice endet.&lt;br /&gt;
&lt;br /&gt;
Der Aufruf des Schedulers bewirkt das der Prozess mit der niedrigsten Priorität&lt;br /&gt;
gescheduled wird, er also nun rechnen darf. Nach Ablauf der agingtime werden&lt;br /&gt;
nun die Prozesse &amp;quot;gealtert&amp;quot;. Das geschieht nach folgender Formel&lt;br /&gt;
&lt;br /&gt;
Neue Priorität = Alte Priorität / 2 + Nicewert&lt;br /&gt;
&lt;br /&gt;
Der User hat die Möglichkeit, über den sogenannten Nicefaktor den Grundwert für&lt;br /&gt;
einen Prozess zu senken. Der Prozess braucht dann länger für seine Abarbeitung.&lt;br /&gt;
Er verhält sich somit netter zu den anderen Prozessen. Normale User können nur&lt;br /&gt;
netter werden, der Systemverwalter kann auch nicht netter (gemeiner) werden. Der&lt;br /&gt;
Bereich liegt zwischen 19 (sehr nett) bis 0 (weniger nett) für die User, und 19 bis&lt;br /&gt;
-20 für root.&lt;br /&gt;
&lt;br /&gt;
[[Image:pri.png]]&lt;br /&gt;
&lt;br /&gt;
'''Signale'''&lt;br /&gt;
&lt;br /&gt;
Mit den Kommando kill und killall kann man Prozessen Signale schicken&lt;br /&gt;
&lt;br /&gt;
 kill -Signalnummer PID &lt;br /&gt;
&lt;br /&gt;
Signalnummer&lt;br /&gt;
{| border=1 cellpadding=2&lt;br /&gt;
!Signalname&lt;br /&gt;
!Wert&lt;br /&gt;
!Aktion&lt;br /&gt;
|-&lt;br /&gt;
|SIGHUP&lt;br /&gt;
|1&lt;br /&gt;
|Neuinitialisierung eines Prozesses&lt;br /&gt;
|-&lt;br /&gt;
|SIGINT&lt;br /&gt;
|2&lt;br /&gt;
|Interrupt-Signal von der Tastatur (STRG+c)&lt;br /&gt;
|-&lt;br /&gt;
|SIGQUIT&lt;br /&gt;
|3&lt;br /&gt;
|Interrupt-Signal von der Tastatur (STRG+c) mit Dump&lt;br /&gt;
|-&lt;br /&gt;
|SIGKILL&lt;br /&gt;
|9&lt;br /&gt;
|unwiderrufliches Beendigungssignal (Töten)&lt;br /&gt;
|-&lt;br /&gt;
|SIGSEGV&lt;br /&gt;
|11&lt;br /&gt;
|Ungültige Speicherreferenz (bedeutet oft auf defekten Speicher)&lt;br /&gt;
|-&lt;br /&gt;
|SIGTERM &lt;br /&gt;
|15&lt;br /&gt;
|Beendigungssignal (geöffnete Dateien werden geschlossen)&lt;br /&gt;
|-&lt;br /&gt;
|SIGCONT &lt;br /&gt;
|18&lt;br /&gt;
|Weiterfahren, wenn gestoppt&lt;br /&gt;
|-&lt;br /&gt;
|SIGSTOP&lt;br /&gt;
|19&lt;br /&gt;
|Prozessstop&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Beispiel&lt;br /&gt;
 root@zero:~# kill -1 7562&lt;br /&gt;
&lt;br /&gt;
===Programme im Zusammenhang mit Prozessen===&lt;br /&gt;
* ps: Zeigt die Prozesse mit ihrem Status an&lt;br /&gt;
 root@zero:~# ps&lt;br /&gt;
  PID TTY          TIME CMD&lt;br /&gt;
 14134 pts/0    00:00:00 bash&lt;br /&gt;
 14149 pts/0    00:00:00 ps&lt;br /&gt;
&lt;br /&gt;
 root@zero:~# ps -elf | grep apache&lt;br /&gt;
 1 S root      5738     1  0  80   0 -  5461 select Jun16 ?        00:00:00 /usr/sbin/apache2 -k start&lt;br /&gt;
 5 S www-data  5739  5738  0  80   0 -  5581 inet_c Jun16 ?        00:00:00 /usr/sbin/apache2 -k start&lt;br /&gt;
 5 S www-data  5742  5738  0  80   0 -  5461 inet_c Jun16 ?        00:00:00 /usr/sbin/apache2 -k start&lt;br /&gt;
 5 S www-data  5743  5738  0  80   0 -  5461 inet_c Jun16 ?        00:00:00 /usr/sbin/apache2 -k start&lt;br /&gt;
 5 S www-data  5745  5738  0  80   0 -  5461 inet_c Jun16 ?        00:00:00 /usr/sbin/apache2 -k start&lt;br /&gt;
 5 S www-data  5746  5738  0  80   0 -  5461 inet_c Jun16 ?        00:00:00 /usr/sbin/apache2 -k start&lt;br /&gt;
 0 S root     14153 14134  0  80   0 -   837 pipe_w 16:59 pts/0    00:00:00 grep apache&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* nice: Lässt ein Programm mit verändertem Grundwert der Priorität laufen&lt;br /&gt;
 root@zero:~# nice&lt;br /&gt;
 0&lt;br /&gt;
 root@zero:~# nice -n 9 bash&lt;br /&gt;
 root@zero:~# nice&lt;br /&gt;
 9&lt;br /&gt;
 root@zero:~#&lt;br /&gt;
&lt;br /&gt;
* renice: Ändert den Grundwert der Priorität eines laufenden Prozesses&lt;br /&gt;
 root@zero:~# renice 10 5742&lt;br /&gt;
 5742: Alte Priorität: 0, neue Priorität: 10&lt;br /&gt;
&lt;br /&gt;
* top: Zeigt die Prozesse mit ihrem Status an (Abbrechen mit q)&lt;br /&gt;
 root@zero:~# top&lt;br /&gt;
&lt;br /&gt;
* pstree: Zeigt die Prozesse als Baumstruktur&lt;br /&gt;
 root@zero:~# pstree&lt;br /&gt;
 init─┬─NetworkManager&lt;br /&gt;
      ├─acpid&lt;br /&gt;
      ├─apache2───5*[apache2]&lt;br /&gt;
      ├─atd&lt;br /&gt;
      ├─bluetoothd&lt;br /&gt;
      ├─console-kit-dae───63*[{console-kit-dae}]&lt;br /&gt;
      ├─cron&lt;br /&gt;
      ├─cupsd&lt;br /&gt;
      ├─dbus-daemon&lt;br /&gt;
      ├─dd&lt;br /&gt;
      ├─gdm───gdm─┬─Xorg&lt;br /&gt;
      │           └─gdmgreeter&lt;br /&gt;
      ├─6*[getty]&lt;br /&gt;
      ├─hald───hald-runner─┬─hald-addon-acpi&lt;br /&gt;
      │                    ├─hald-addon-inpu&lt;br /&gt;
      │                    └─2*[hald-addon-stor]&lt;br /&gt;
      ├─klogd&lt;br /&gt;
      ├─nm-system-setti&lt;br /&gt;
      ├─nmbd&lt;br /&gt;
      ├─nscd───11*[{nscd}]&lt;br /&gt;
      ├─portmap&lt;br /&gt;
      ├─rpc.statd&lt;br /&gt;
      ├─slapd───2*[{slapd}]&lt;br /&gt;
      ├─smbd───smbd&lt;br /&gt;
      ├─sshd───sshd───bash───bash───pstree&lt;br /&gt;
      ├─syslogd&lt;br /&gt;
      ├─system-tools-ba&lt;br /&gt;
      ├─udevd&lt;br /&gt;
      ├─winbindd─┬─winbindd───winbindd&lt;br /&gt;
      │          └─3*[winbindd]&lt;br /&gt;
      └─wpa_supplicant&lt;br /&gt;
&lt;br /&gt;
===Jobs===&lt;br /&gt;
Unter einem Job versteht man ein Programm, welches man von der Shell gelöst&lt;br /&gt;
hat. D. h. man kann ganz normal weiter arbeiten und der Job verrichtet seinen&lt;br /&gt;
Dienst im Hintergrund. Man kann jederzeit zu diesem Job wieder Kontakt&lt;br /&gt;
aufnehmen.&lt;br /&gt;
&lt;br /&gt;
Ein Job kann auf 2 Arten gestarten werden:&lt;br /&gt;
&lt;br /&gt;
# Durch Anhängen des &amp;amp; Zeichens beim Programmstart&lt;br /&gt;
 root@zero:~# tail -f /var/log/messages &amp;amp;&lt;br /&gt;
 Jun 19 06:59:31 zero -- MARK --&lt;br /&gt;
 Jun 19 07:19:31 zero -- MARK --&lt;br /&gt;
 Jun 19 07:39:32 zero -- MARK --&lt;br /&gt;
 Jun 19 07:44:57 zero syslogd 1.5.0#5ubuntu3: restart.&lt;br /&gt;
 Jun 19 07:59:32 zero -- MARK --&lt;br /&gt;
 Jun 19 08:19:32 zero -- MARK --&lt;br /&gt;
 Jun 19 08:39:32 zero -- MARK --&lt;br /&gt;
 Jun 19 08:59:32 zero -- MARK --&lt;br /&gt;
 Jun 19 09:19:33 zero -- MARK --&lt;br /&gt;
 Jun 19 09:39:33 zero -- MARK --&lt;br /&gt;
 [3] 27421&lt;br /&gt;
&lt;br /&gt;
# Durch Stoppen des Prozesses durch Drücken von Strg-Z und in den Hintergrund schicken mit %n (n ist die Jobnummer)&lt;br /&gt;
 root@zero:~# watch cat /proc/cpuinfo&lt;br /&gt;
 Strg-Z&lt;br /&gt;
 [4]+  Stopped                 watch cat /proc/cpuinfo&lt;br /&gt;
 root@zero:~# bg %4&lt;br /&gt;
 [4]+ watch cat /proc/cpuinfo &amp;amp;&lt;br /&gt;
&lt;br /&gt;
Anweisungen im Zusammenhang mit Jobs (n ist die Jobnummer)&lt;br /&gt;
* bg %n : Einen Job in den Hintergrund stellen (wie oben)&lt;br /&gt;
* fg %n : Einen Job in den Vordergrund holen&lt;br /&gt;
 root@zero:~# fg %4&lt;br /&gt;
 watch cat /proc/cpuinfo&lt;br /&gt;
&lt;br /&gt;
* jobs : Aktive Jobs ausgeben&lt;br /&gt;
&lt;br /&gt;
 root@zero:~# jobs&lt;br /&gt;
 [1]   Running                 tail -f /var/log/syslog &amp;amp;&lt;br /&gt;
 [2]   Running                 tail -f /var/log/syslog &amp;amp;&lt;br /&gt;
 [3]-  Running                 tail -f /var/log/messages &amp;amp;&lt;br /&gt;
 [4]+  Stopped                 watch cat /proc/cpuinfo&lt;br /&gt;
&lt;br /&gt;
* Strg-Z : Einen Vordergrund-Job vorübergehend anhalten&lt;br /&gt;
* kill -STOP %n : Unterbricht Job im Hintergrund&lt;br /&gt;
 root@zero:~# kill -STOP %1&lt;br /&gt;
 root@zero:~# jobs&lt;br /&gt;
 [1]+  '''Stopped'''                 tail -f /var/log/syslog&lt;br /&gt;
 [2]   Running                 tail -f /var/log/syslog &amp;amp;&lt;br /&gt;
 [3]   Running                 tail -f /var/log/messages &amp;amp;&lt;br /&gt;
 [4]-  Stopped                 watch cat /proc/cpuinfo&lt;br /&gt;
* kill -CONT %n : Setzt den unterbrochenen Job im Hintergrund fort&lt;br /&gt;
root@zero:~# kill -CONT %1&lt;br /&gt;
root@zero:~# jobs&lt;br /&gt;
 [1]+  '''Running'''                 tail -f /var/log/syslog &amp;amp;&lt;br /&gt;
 [2]   Running                 tail -f /var/log/syslog &amp;amp;&lt;br /&gt;
 [3]   Running                 tail -f /var/log/messages &amp;amp;&lt;br /&gt;
 [4]-  Stopped                 watch cat /proc/cpuinfo&lt;br /&gt;
* kill -KILL %n : Tötet Job im Hintergrund&lt;br /&gt;
 root@zero:~# kill -KILL %1&lt;br /&gt;
 root@zero:~# jobs&lt;br /&gt;
 [1]+  '''Killed'''                  tail -f /var/log/syslog&lt;br /&gt;
 [2]   Running                 tail -f /var/log/syslog &amp;amp;&lt;br /&gt;
 [3]   Running                 tail -f /var/log/messages &amp;amp;&lt;br /&gt;
 [4]-  Stopped                 watch cat /proc/cpuinfo&lt;br /&gt;
 root@zero:~# jobs&lt;br /&gt;
 [2]   Running                 tail -f /var/log/syslog &amp;amp;&lt;br /&gt;
 [3]-  Running                 tail -f /var/log/messages &amp;amp;&lt;br /&gt;
 [4]+  Stopped                 watch cat /proc/cpuinfo&lt;br /&gt;
&lt;br /&gt;
Bedingungen, die zu Jobausführung eingehalten werden sollen:&lt;br /&gt;
* Der Job soll nicht auf den Bildschirm schreiben (Standardausgabe +Standardfehlerkanal).&lt;br /&gt;
* Er soll keine Eingaben vom Benutzer erwarten.&lt;br /&gt;
&lt;br /&gt;
==Suchen von Dateien==&lt;br /&gt;
===find===&lt;br /&gt;
 find ab_wo_wird_gesucht was_wird_gesucht aktion&lt;br /&gt;
 find [Pfad] [Bedingung] [Aktion]&lt;br /&gt;
&lt;br /&gt;
====Nach Namen====&lt;br /&gt;
 find [Pfad] '''-name''' [Name]&lt;br /&gt;
 &lt;br /&gt;
Finde alle Dateien mit Namen test ab dem Verzeichnis /home und gebe diese Zeilenweise aus&lt;br /&gt;
 root@zero:~# find /home -name test -print&lt;br /&gt;
 /home/xinux/test&lt;br /&gt;
 /home/test&lt;br /&gt;
&lt;br /&gt;
Wie oben, jedoch mit Namensanfang test&lt;br /&gt;
 root@zero:/home/xinux# find /home -name 'test*'&lt;br /&gt;
 /home/xinux/testdatei&lt;br /&gt;
 /home/xinux/test&lt;br /&gt;
 /home/test&lt;br /&gt;
&lt;br /&gt;
====Nach Benutzer(Eigentümer)====&lt;br /&gt;
 root@zero:/tmp# find /tmp/ '''-user''' xinux&lt;br /&gt;
 /tmp/datei&lt;br /&gt;
&lt;br /&gt;
====Nach Gruppe====&lt;br /&gt;
 root@zero:/tmp# find /tmp/ '''-group''' hacker&lt;br /&gt;
 /tmp/datei3&lt;br /&gt;
 /tmp/datei2&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
====Nach Typ====&lt;br /&gt;
Es wird nach Dateien anhand Ihrer Art gesucht:&lt;br /&gt;
 find [Pfad] '''-type''' [Typ] &lt;br /&gt;
Typ:&lt;br /&gt;
* f: Normale Dateien&lt;br /&gt;
 root@zero:~# find /tmp/ -type f&lt;br /&gt;
 /tmp/mbr.img&lt;br /&gt;
 /tmp/datei&lt;br /&gt;
 /tmp/zeugs&lt;br /&gt;
 /tmp/.X0-lock&lt;br /&gt;
* d: Verzeichnisse&lt;br /&gt;
 root@zero:~# find /var/log -type d&lt;br /&gt;
 /var/log&lt;br /&gt;
 /var/log/apache2&lt;br /&gt;
 /var/log/unattended-upgrades&lt;br /&gt;
 /var/log/apparmor&lt;br /&gt;
 /var/log/ConsoleKit&lt;br /&gt;
 /var/log/dist-upgrade&lt;br /&gt;
 /var/log/dist-upgrade/20090526-1052&lt;br /&gt;
 /var/log/cups&lt;br /&gt;
 /var/log/apt&lt;br /&gt;
 /var/log/fsck&lt;br /&gt;
 /var/log/samba&lt;br /&gt;
 /var/log/samba/cores&lt;br /&gt;
 /var/log/samba/cores/smbd&lt;br /&gt;
 /var/log/samba/cores/nmbd&lt;br /&gt;
 /var/log/samba/cores/winbindd&lt;br /&gt;
 /var/log/installer&lt;br /&gt;
 /var/log/gdm&lt;br /&gt;
 /var/log/news&lt;br /&gt;
* c: Char Devices (Zeichenorientierte Gerätedatei)&lt;br /&gt;
 root@zero:~# find / -type c&lt;br /&gt;
 /lib/udev/devices/kmem&lt;br /&gt;
 /lib/udev/devices/null&lt;br /&gt;
 /lib/udev/devices/console&lt;br /&gt;
 /lib/udev/devices/ppp&lt;br /&gt;
 /lib/udev/devices/net/tun&lt;br /&gt;
* b: Block Devices (Blockorientierte Gerätedatei)&lt;br /&gt;
* p: Benannte Pipe&lt;br /&gt;
* l: Links&lt;br /&gt;
* s: Sockets&lt;br /&gt;
&lt;br /&gt;
====Nach Modifikation====&lt;br /&gt;
Listet alle Dateien in /etc auf, die innerhalb von zwei Tagen modifiziert wurden&lt;br /&gt;
 root@zero:/var/log# find /etc/ -mtime 2 -print&lt;br /&gt;
 /etc/apache2&lt;br /&gt;
 /etc/apache2/mods-available&lt;br /&gt;
 /etc/apache2/conf.d&lt;br /&gt;
 /etc/apache2/sites-available&lt;br /&gt;
 /etc/bash_completion.d&lt;br /&gt;
 /etc/blkid.tab.old&lt;br /&gt;
 /etc/firefox-3.0/profile&lt;br /&gt;
 /etc/firefox-3.0/profile/chrome&lt;br /&gt;
 /etc/firefox-3.0/pref&lt;br /&gt;
 /etc/profile.d&lt;br /&gt;
 /etc/ufw/applications.d&lt;br /&gt;
 /etc/logrotate.d&lt;br /&gt;
 /etc/xulrunner-1.9&lt;br /&gt;
 /etc/blkid.tab&lt;br /&gt;
 /etc/cron.daily&lt;br /&gt;
 /etc/alternatives&lt;br /&gt;
 /etc/alternatives/x-www-browser&lt;br /&gt;
 /etc/alternatives/xulrunner&lt;br /&gt;
 /etc/gre.d&lt;br /&gt;
 /etc/hal/fdi/policy&lt;br /&gt;
 /etc/dbus-1/system.d&lt;br /&gt;
 /etc/udev/rules.d&lt;br /&gt;
&lt;br /&gt;
====Nach Größe====&lt;br /&gt;
Finde Dateien in /tmp, die größer als 100 MByte sind&lt;br /&gt;
 root@zero:/tmp# find /tmp/ -size +100M&lt;br /&gt;
 /tmp/datei&lt;br /&gt;
&lt;br /&gt;
Finde Dateien in /tmp, die kleiner als 100 KByte sind&lt;br /&gt;
 root@zero:/tmp# find /tmp/ -size -100k&lt;br /&gt;
 /tmp/&lt;br /&gt;
 /tmp/datei3&lt;br /&gt;
 /tmp/backup &lt;br /&gt;
 /tmp/datei2&lt;br /&gt;
 /tmp/.winbindd &lt;br /&gt;
 /tmp/.winbindd/pipe&lt;br /&gt;
 /tmp/mbr.img&lt;br /&gt;
 /tmp/zeugs&lt;br /&gt;
 /tmp/.ICE-unix&lt;br /&gt;
 /tmp/.X0-lock&lt;br /&gt;
 /tmp/datei1&lt;br /&gt;
 /tmp/.X11-unix&lt;br /&gt;
 /tmp/.X11-unix/X0&lt;br /&gt;
 /tmp/pulse-PKdhtXMmr18n&lt;br /&gt;
&lt;br /&gt;
====Nach Berechtigungen====&lt;br /&gt;
Finde Dateien in Home mit der Berechtigung 777 (-rwxrwxrwx)&lt;br /&gt;
 root@zero:/var# find /home/ -perm 777&lt;br /&gt;
 /home/samba&lt;br /&gt;
 /home/xinux/Examples&lt;br /&gt;
 /home/xinux/.pulse/1f0763ee4cf4c7e1d3c07fd149dda37b:runtime&lt;br /&gt;
 /home/test/Examples&lt;br /&gt;
&lt;br /&gt;
===locate===&lt;br /&gt;
Locate arbeitet über einen Index, der erstellt und aktualisiert werden muss. Aus diesem Grund kann locate teilweise nicht &lt;br /&gt;
akutell sein. Es ist immer schneller als find und es durchsucht immer das ganze Dateisystem. &lt;br /&gt;
 locate [Dateiname]&lt;br /&gt;
 &lt;br /&gt;
Lokalisiere die Datei wvdial.conf. Anmerkung: Der Stern wird beim Suchen automatisch hinzugefügt. Entspricht also&lt;br /&gt;
wvidal.conf*&lt;br /&gt;
 root@zero:~# locate wvdial.conf&lt;br /&gt;
 /etc/wvdial.conf&lt;br /&gt;
 /usr/share/man/man5/wvdial.conf.5.gz&lt;br /&gt;
 /var/lib/dpkg/info/wvdial.conffiles&lt;br /&gt;
 /var/lib/dpkg/info/wvdial.config&lt;br /&gt;
&lt;br /&gt;
Lokalisiere die Datei wvdial.conf und nur diese&lt;br /&gt;
 root@zero:~# locate -b '\wvdial.conf'&lt;br /&gt;
 /etc/wvdial.conf&lt;br /&gt;
&lt;br /&gt;
Aktualisieren des Indexes&lt;br /&gt;
 root@zero:~# updatedb&lt;br /&gt;
&lt;br /&gt;
==Wie wird ein Kommando lokalisiert==&lt;br /&gt;
Wenn die Shell alle Ersetzungen in der Kommandozeile vorgenommen und alle Umleitungen vorbereitet hat, ist der Zeitpunkt &lt;br /&gt;
gekommen, auf den der Anwender die ganze Zeit gewartet hat. Die Shell versucht das Kommando auszuführen. Dazu muss sie &lt;br /&gt;
es aber erst lokalisieren. Das erste passende Kommando wird ausgeführt.&lt;br /&gt;
&lt;br /&gt;
Als Kommandoname wird immer das erste Wort eines einfachen Kommandos erkannt. Ein Kommandoname kann mit Pfadnamen in &lt;br /&gt;
einem Verzeichnis (absolut oder relativ) angegeben werden. Die Shell erkennt dies an (mindestens) einem Slash `/' &lt;br /&gt;
im Kommandonamen. Wenn kein Verzeichnis angegeben ist, versucht die Shell selbst, das Kommando zu finden. Dazu wird &lt;br /&gt;
der Kommandoname zuerst in der Hashtabelle gesucht, dann wird er mit den Synonymen, mit den Scriptfunktionen und &lt;br /&gt;
schließlich mit den Shellfunktionen verglichen. &lt;br /&gt;
&lt;br /&gt;
Wird auf diese Weise kein Programm dieses Namens gefunden, werden alle in der PATH-Umgebungsvariablen aufgeführten &lt;br /&gt;
Verzeichnisse nach einer ausführbaren Datei dieses Namens durchsucht. Wird auch hier kein passendes Kommando gefunden, &lt;br /&gt;
gibt die Shell eine Fehlermeldung aus.&lt;br /&gt;
&lt;br /&gt;
===which und type===&lt;br /&gt;
====which====&lt;br /&gt;
which gibt die vollen Pfadnamen der Dateien aus, die bei Benutzung des angegebenen Befehls ausgeführt werden würden.&lt;br /&gt;
&lt;br /&gt;
 which [-a] Dateiname &lt;br /&gt;
&lt;br /&gt;
Optionen:&lt;br /&gt;
&lt;br /&gt;
* -a : Alle Treffer ausgeben, nicht nur den ersten&lt;br /&gt;
* --skip-dot : Verzeichnisse, die mit einem Punkt beginnen, auslassen&lt;br /&gt;
&lt;br /&gt;
Beispiel&lt;br /&gt;
 root@zero:~# which startx&lt;br /&gt;
 /usr/bin/startx&lt;br /&gt;
&lt;br /&gt;
====type====&lt;br /&gt;
Anzeigen der absoluten Pfadnamen von Befehlen, und ob sich diese Befehle in der Hash-Tabelle der aktuellen&lt;br /&gt;
Shell befinden.&lt;br /&gt;
&lt;br /&gt;
 type [Optionen] Befehle&lt;br /&gt;
&lt;br /&gt;
Beispiel&lt;br /&gt;
 root@zero:~# type ls&lt;br /&gt;
 ls is aliased to `ls --color=auto'&lt;br /&gt;
&lt;br /&gt;
Optionen:&lt;br /&gt;
&lt;br /&gt;
* -a : Alle vorkommenden Befehle werden ausgegeben, nicht nur das, welches aufgerufen werden würde&lt;br /&gt;
 root@zero:~# type '''-a''' ls&lt;br /&gt;
 ls is aliased to `ls --color=auto'&lt;br /&gt;
 ls is /bin/ls&lt;br /&gt;
&lt;br /&gt;
* -p : Anzeigen des Eintrags von Befehl in der Hash-Tabelle. Dieser Wert kann sich vom ersten Auftreten des Befehls in PATH&lt;br /&gt;
unterscheiden&lt;br /&gt;
 root@zero:~# type '''-p''' apache2&lt;br /&gt;
 /usr/sbin/apache2&lt;br /&gt;
&lt;br /&gt;
* -t : Anzeigen, ob Befehl ein Aliasname, ein Schlüsselwort, eine Funktion, ein eingebauter Befehl oder eine Datei ist&lt;br /&gt;
 root@zero:~# type '''-t''' apache2&lt;br /&gt;
 file&lt;/div&gt;</summary>
		<author><name>192.168.178.46</name></author>
	</entry>
	<entry>
		<id>https://www.xinux.net/index.php?title=Linux_Grundlagen&amp;diff=76</id>
		<title>Linux Grundlagen</title>
		<link rel="alternate" type="text/html" href="https://www.xinux.net/index.php?title=Linux_Grundlagen&amp;diff=76"/>
		<updated>2009-07-07T10:46:28Z</updated>

		<summary type="html">&lt;p&gt;192.168.178.46: /* Daten */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Einführung==&lt;br /&gt;
===Geschichte Unix===&lt;br /&gt;
====1969====&lt;br /&gt;
Am Anfang von Linux steht Multics, ein von Bell Laboratories geschaffenes &amp;quot;Betriebssystem&amp;quot;, &lt;br /&gt;
das noch mit Lochkarten arbeitete. Multics wird mit Unterstützung von AT&amp;amp;T und Western &lt;br /&gt;
Electric unter Mitarbeit von Ken Thompson und Dennis Ritchie weiterentwickelt. Obwohl sich &lt;br /&gt;
Bell Laboratories bald zurückzieht, gibt Thompson das Projekt nicht auf.  Zum Entwicklerteam &lt;br /&gt;
gehören auch Rudd Canaday und Brian Kernighan. Letzterer gibt 1970 dem Betriebssystem den Namen UNIX. &lt;br /&gt;
Thompson definiert 7 Richtlinien für UNIX:&lt;br /&gt;
 &lt;br /&gt;
# Hierarchische Anordnung der Dateisysteme&lt;br /&gt;
# Die Ausgabe von Daten an die Peripherie(-geräte) und Dateien soll gleich sein.&lt;br /&gt;
# Prozesse und Programme sollen miteinander kommunizieren.&lt;br /&gt;
# Multitasking (voneinander getrennte Prozesse)&lt;br /&gt;
# Persönliche Shell's&lt;br /&gt;
# Der Compiler soll für viele Programmiersprachen tauglich sein.&lt;br /&gt;
# Portabilität&lt;br /&gt;
&lt;br /&gt;
====1971====&lt;br /&gt;
Bis 1971 ist das für eine DEC PDP-7 geschriebene Unix als Version 1 auf eine PDP-11 portiert. Bis&lt;br /&gt;
zur Version 4 entwickelt Ritchie die Programmier- (Hoch-) Sprache C. Das in Assembler geschriebene&lt;br /&gt;
Unix wird fast völlig nach C übersetzt, wodurch zum erstenmal die geforderte Hardware-Unabhängigkeit&lt;br /&gt;
des Betriebssystems realisiert werden kann.&lt;br /&gt;
&lt;br /&gt;
====1975====&lt;br /&gt;
Da AT&amp;amp;T aufgrund vertraglicher Bindungen mit der US-Bundesregierung Unix nicht kommerziell vermarkten darf, stellt sie den Source Code für ein paar hundert Dollar den Universitäten, Lehr- und Forschungsanstalten zur Verfügung. Dies führt zu einer sehr dynamischen Entwicklung von Unix. 1975 wird die Version 6 als erstes UNIX-System veröffentlicht, die darauffolgende Version 7 wird sehr erfolgreich. Da es keine Standardisierung gibt, entwickeln bald verschiedenste Firmen ihr eigenes UNIX. Ab 1984 wird AT&amp;amp;T per Gerichtsbeschluss erlaubt, Unix zu vermarkten. AT&amp;amp;T verkauft sein Unix V und beginnt, sich um einen internationalen Standard von UNIX zu bemühen. &lt;br /&gt;
&lt;br /&gt;
====1984====&lt;br /&gt;
Durch Richard Stallman wird die Free Software Foundation (FSF) gegründet. Diese initiiert ein Projekt namens GNU (GNU ist Not Unix), welches das Ziel verfolgt, ein freies UNIX System zu schaffen. &lt;br /&gt;
&lt;br /&gt;
====1987====&lt;br /&gt;
AT&amp;amp;T verbietet die Verwendung des Unix Quellcodes an den Universitäten. Während dieser Zeit ist Andrew (Andy) Tannenbaum Professor an der Freien Universität von Amsterdam und entwickelt Minix. Minix ist ein kostengünstiges Lehrbetriebssystem und kommt ohne jeglichen AT&amp;amp;T Code aus, obwohl es die gleiche Funktionalität wie Unix 7 bietet. Im Usenet unter comp.os.minix entsteht eine Minix-Gemeinde, die den Minix Kernel und die Anwendungen rundherum programmiert und verbessert.&lt;br /&gt;
&lt;br /&gt;
====1991====&lt;br /&gt;
Linus Torvalds hat als Student für Computerwissenschaften an der Universität in Helsinki Minix installiert und das Buch von Andy Tannenbaum gelesen. Er beginnt im Sinne der FSF einen Unix ähnlichen Kernel zu programmieren mit der Idee, &amp;quot;ein besseres Minix als Minix&amp;quot; zu bauen. 1992 stellt er die Version 0.02 mit dem Namen Linux der Internetgemeinde zur Verfügung. &lt;br /&gt;
&lt;br /&gt;
====1994====&lt;br /&gt;
Die Linux Version 1.0 wird freigegeben. Das Linux Fieber beginnt... &lt;br /&gt;
&lt;br /&gt;
====1998====&lt;br /&gt;
Der Kreis der Linux Entwickler und Anwender ist kräftig angeschwollen. KDE 1.0 wird veröffentlicht. Die Zuwachsraten von Linux übertreffen die von Windows NT deutlich. &lt;br /&gt;
&lt;br /&gt;
====1999====&lt;br /&gt;
Der lange erwartete stabile Linux Kernel Version 2.2 wird freigegeben. Namhafte Firmen wie IBM kündigen ihre Unterstützung für Linux an. &lt;br /&gt;
&lt;br /&gt;
====2001====&lt;br /&gt;
Der lange erwartete stabile Linux Kernel Version 2.4 wird freigegeben. USB Unterstützung und eine neue Firewallimplementierung zeichnen ihn aus.&lt;br /&gt;
&lt;br /&gt;
====2003====&lt;br /&gt;
Linux Kernel Version 2.6 wird freigegeben. Am auffälligsten sind Änderungen bei der Modulverwaltung.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Distributionen===&lt;br /&gt;
{| Border=1 Cellpadding=2&lt;br /&gt;
| &lt;br /&gt;
|Url&lt;br /&gt;
|Paketformat&lt;br /&gt;
|-&lt;br /&gt;
|Red Hat&lt;br /&gt;
|www.redhat.com&lt;br /&gt;
|rpm&lt;br /&gt;
|-&lt;br /&gt;
|fedora&lt;br /&gt;
|fedora.redhat.com&lt;br /&gt;
|rpm&lt;br /&gt;
|-&lt;br /&gt;
|CentOS&lt;br /&gt;
|www.centos.org&lt;br /&gt;
|rpm&lt;br /&gt;
|-&lt;br /&gt;
|Suse/openSUSE&lt;br /&gt;
|www.opensuse.org&lt;br /&gt;
|rpm&lt;br /&gt;
|-&lt;br /&gt;
|Debian&lt;br /&gt;
|www.debian.org&lt;br /&gt;
|deb&lt;br /&gt;
|-&lt;br /&gt;
|Ubuntu&lt;br /&gt;
|www.ubuntu.com&lt;br /&gt;
|deb&lt;br /&gt;
|-&lt;br /&gt;
|Mandrake&lt;br /&gt;
|www.linux-mandrake.com&lt;br /&gt;
|rpm&lt;br /&gt;
|-&lt;br /&gt;
|Easy Linux&lt;br /&gt;
|www.easy-linux.de&lt;br /&gt;
|rpm&lt;br /&gt;
|-&lt;br /&gt;
|Turbo&lt;br /&gt;
|www.turbolinux.com&lt;br /&gt;
|rpm&lt;br /&gt;
|-&lt;br /&gt;
|minis&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|toms&lt;br /&gt;
|www.toms.net/rb&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|damn small linux&lt;br /&gt;
|www.damnsmalllinux.org&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|pocket-linux&lt;br /&gt;
|www.pocket-linux.org&lt;br /&gt;
|&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
====Bücher====&lt;br /&gt;
 Titel : Das Linux Anwenderhandbuch und Leitfaden für die Systemverwaltung&lt;br /&gt;
 Autor : Sebastian Hetze, Dirk Hohndel, Olaf Kirch und Martin Müller&lt;br /&gt;
 Verlag: Lunetix&lt;br /&gt;
 ISBN : 3-929764-06-7&lt;br /&gt;
&lt;br /&gt;
 Titel : Linux in a Nutshell&lt;br /&gt;
 Autor : Jessica Perry Hekman und die Mitarbeiter von O'Reilly &amp;amp; Associates&lt;br /&gt;
 Verlag: O'Reilly&lt;br /&gt;
 ISBN : 3-930673-57-6&lt;br /&gt;
&lt;br /&gt;
 Titel : Linux - Wegweiser zur Installation und Konfiguration&lt;br /&gt;
 Autor : Matt Welsh, Lar Kaufman, Matthias Kalle Dallheimer&lt;br /&gt;
 Verlag: O'Reilly&lt;br /&gt;
 ISBN : 3-930673-58-4 (deutsch), 1-56592-469-X (englisch)&lt;br /&gt;
&lt;br /&gt;
 Titel : Linux - Installation, Konfiguration, Anwendung&lt;br /&gt;
 Autor : Michael KoflerMultitasking&lt;br /&gt;
 Verlag: Addison-Wesley&lt;br /&gt;
 ISBN : 3-8273-1475-5&lt;br /&gt;
&lt;br /&gt;
 Titel : Linux - Wegweiser für Netzwerker&lt;br /&gt;
 Autor : Olaf Kirch&lt;br /&gt;
 Verlag: O'Reilly&lt;br /&gt;
 ISBN : 3-930673-18-5&lt;br /&gt;
&lt;br /&gt;
 Titel : TCP/IP-Netzwerk-Administration&lt;br /&gt;
 Autor : Craig Hunt&lt;br /&gt;
 Verlag: O'Reilly&lt;br /&gt;
 ISBN : 3-89721-110-6&lt;br /&gt;
&lt;br /&gt;
 Titel : Essential System Administration&lt;br /&gt;
 Autor : Eleen Frisch&lt;br /&gt;
 Verlag: O'Reilly&lt;br /&gt;
 ISBN : 1-56592-127-5&lt;br /&gt;
&lt;br /&gt;
==Betriebssystem==&lt;br /&gt;
===Was ist ein Betriebssystem?===&lt;br /&gt;
&lt;br /&gt;
Ein Betriebssystem liegt logisch gesehen zwischenAnwendungsprogramm und Hardware.&lt;br /&gt;
&lt;br /&gt;
Es nimmt die Anforderungen der Anwendungsprogramme entgegen und leitet&lt;br /&gt;
diese kontrolliert an die Hardware weiter. Kein Anwendungsprogramm sollte&lt;br /&gt;
direkt auf die Hardware zugreifen können. Den zentralen Zugang schafft einzig&lt;br /&gt;
das Betriebssystem. Somit kann das Betriebssystem unsinnige Anforderungen&lt;br /&gt;
oder Bedienungsfehler abblocken.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Image:Linux.jpg]]&lt;br /&gt;
&lt;br /&gt;
===Aufgaben eines Betriebssystems===&lt;br /&gt;
&lt;br /&gt;
# Verbergen der Komplexität der Maschine vor dem Anwender (Abstraktion)&lt;br /&gt;
# Bereitstellen einer Benutzerschnittstelle (&amp;quot;Kommandointerpreter&amp;quot;, &amp;quot;Shell&amp;quot;)&lt;br /&gt;
# Bereitstellen einer normierten Programmierschnittstelle (API)&lt;br /&gt;
# Verwaltung der Ressourcen der Maschine::&lt;br /&gt;
Hauptspeicher&lt;br /&gt;
Prozessor(en)&lt;br /&gt;
Hintergrundspeicher (Platte, Band, etc.)&lt;br /&gt;
Geräte (Terminal, Drucker, Plotter, etc.)&lt;br /&gt;
Rechenzeit&lt;br /&gt;
Koordination von Prozessen&lt;br /&gt;
&lt;br /&gt;
===Aufbau eines Betriebssystems===&lt;br /&gt;
&lt;br /&gt;
Ein Rechensystem besteht aus Hardware, Systemprogrammen und Anwendungs-&lt;br /&gt;
programmen. Unter einem Betriebssystem wird meist die Summe aus Betriebs-&lt;br /&gt;
systemkern (Kernel) und den wichtigsten Systemprogrammen verstanden. Ein&lt;br /&gt;
minimaler LINUX-Kernel besitzt ungefähr eine Größe von 400 - 800 kByte.&lt;br /&gt;
Weitere wichtige Systemkomponenten benötigen zusätzlich 10 - 100 Mbyte&lt;br /&gt;
Plattenplatz.&lt;br /&gt;
&lt;br /&gt;
Ein Betriebssystem stellt den Rechner als erweiterte Maschine (virtuelle&lt;br /&gt;
Maschine) über definierte Software-Schnittstellen zur Verfügung.&lt;br /&gt;
Das Betriebssystem dient als Betriebsmittelverwalter, der Anforderungen&lt;br /&gt;
befriedigt, protokolliert, abrechnet und vermittelt.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Aufgaben des Betriebssystemkerns:&lt;br /&gt;
&lt;br /&gt;
{| Border=1 Cellpadding=2&lt;br /&gt;
|Prozessverwaltung  (dispatching and scheduling)&lt;br /&gt;
| Mehrere Benutzer können mit mehreren Aktionen gleichzeitig im System arbeiten, ohne sich gegenseitig zu beeinflussen. Damit dies möglich ist,  müssen die Aktionen organisiert, koordiniert und verwaltet werden. Die zu verwaltende Einheit nennt man Prozess.&lt;br /&gt;
|-&lt;br /&gt;
|Speicherverwaltung   (memory management)&lt;br /&gt;
|Zuteilen von Speicherbereichen an laufende Prozesse, Schutz der Speicherbereiche vor unbefugten Zugriffen, bei Speicherengpässen: Auslagern von ganzen (swapping) oder von Teilen (paging) von Prozessen auf die Platte (swap file).&lt;br /&gt;
|-&lt;br /&gt;
|Dateiverwaltung  (file handling)&lt;br /&gt;
|Zuteilung von Plattenplatz für Programme, Benutzer und Systemdienste, Schreiben, Lesen und Strukturieren der Daten auf den Massenspeichern; Durch Bereitstellung einer entsprechenden Schnittstelle (VFS, virtual file system) kann der Kern Dateisysteme unterschiedlichster Art (EXT2, FAT, NFS, HPFS, NTFS, ...) ansprechen.&lt;br /&gt;
|-&lt;br /&gt;
|Geräteverwaltung  (resource management)&lt;br /&gt;
|Der Kern ermöglicht und kontrolliert den Zugriff auf die Hardware. Er steuert die Ein- und Ausgabetätigkeiten der Anwender. An den Kern&lt;br /&gt;
gebunden sind die entsprechenden Gerätetreiber (device driver), die damit eine Kommunikation zwischen Kern und Hardware ermöglichen.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
===Multitasking===&lt;br /&gt;
&lt;br /&gt;
Multitasking bedeutet, dass ein Rechner aus Anwendersicht mehrere Aufgaben&lt;br /&gt;
(Tasks) gleichzeitg übernehmen kann. Das Betriebssystem (OS) unterteilt die&lt;br /&gt;
gleichzeitig anstehenden Aufgaben in Einzelarbeitsschritte (Prozesse) und&lt;br /&gt;
managed durch ein Zeitscheibenverfahren (scheduling) die gleichmäßige&lt;br /&gt;
Abarbeitung der Prozesse.&lt;br /&gt;
&lt;br /&gt;
Es wird unterschieden zwischen:&lt;br /&gt;
&lt;br /&gt;
*non-präamptiven (kooperativen=die Ressourcen werden vom aktiven Prozess freigegeben, bei einem Hänger steht das ganze System)&lt;br /&gt;
&lt;br /&gt;
und&lt;br /&gt;
&lt;br /&gt;
*präamptiven (reinem=der Betriebssystemkern steuert Taskwechsel, indem nach einer festgelegten Zeit vom gerade aktiven Prozess zum nächsten weitergeschaltet wird)&lt;br /&gt;
&lt;br /&gt;
===Mehrprozessorbetrieb===&lt;br /&gt;
&lt;br /&gt;
Bei mehreren Prozessoren und Unterstützung durch das OS&lt;br /&gt;
(NT,Linux,Unix,Novell) können mehrere Tasks auf diese verteilt werden und&lt;br /&gt;
gleichzeitig bearbeitet werden. Nachteilig ist, dass dies nicht oder kaum von&lt;br /&gt;
Anwendungsprogrammen unterstützt wird und es zu Kommunikationsproblemen&lt;br /&gt;
zwischen den einzelnen Tasks kommen kann.&lt;br /&gt;
&lt;br /&gt;
===Arten von von Betriebssystemen===&lt;br /&gt;
&lt;br /&gt;
{|Border=1 Cellpadding=2&lt;br /&gt;
|&lt;br /&gt;
|SingleUser  &lt;br /&gt;
|Multiuser&lt;br /&gt;
|-&lt;br /&gt;
|Single Tasking&lt;br /&gt;
|MS - DOS&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|Multi Tasking&lt;br /&gt;
|Windows 3.x&lt;br /&gt;
|UNIX&lt;br /&gt;
|-&lt;br /&gt;
|&lt;br /&gt;
|Windows 95/98&lt;br /&gt;
|Linux&lt;br /&gt;
|-&lt;br /&gt;
|&lt;br /&gt;
|Windows NT4 ohne Erweiterungen&lt;br /&gt;
|VMS&lt;br /&gt;
|-&lt;br /&gt;
|&lt;br /&gt;
|OS/2 &lt;br /&gt;
|Windows NT mit  Erweiterungen&lt;br /&gt;
|-&lt;br /&gt;
|&lt;br /&gt;
|Apple&lt;br /&gt;
|Windows 2000, XP, 2003&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
===SHELL===&lt;br /&gt;
&lt;br /&gt;
Wenn man mit Linux arbeiten will, kann man nicht direkt mit dem Betriebssystem&lt;br /&gt;
kommunizieren. Man braucht dazu ein Hilfsprogramm, welches die&lt;br /&gt;
Kommandoeingaben ordnungsgemäß an das Betriebssystem weiterleitet. Dieses&lt;br /&gt;
Hilfsprogramm hat den Namen Shell.&lt;br /&gt;
&lt;br /&gt;
Die Shell schirmt den Betriebssystemkern von den Anwendungsprogrammen ab.&lt;br /&gt;
Die unterschiedlichen Shells erfüllen alle dieselbe Aufgabe, sie unterscheiden sich&lt;br /&gt;
allerdings in ihrer Syntax.&lt;br /&gt;
&lt;br /&gt;
==Die Installation im Überblick==&lt;br /&gt;
&lt;br /&gt;
Die Installation von Linux geschieht in folgenden Schritten:&lt;br /&gt;
&lt;br /&gt;
# Analyse (Welche Hardware habe ich? ,Hab ich weitere Betriebsysteme?)&lt;br /&gt;
# Booten des Linux-Kernels. (von CD oder Diskette)&lt;br /&gt;
# Laden einer RAM-Disk (das macht das Installationsprogramm automatisch).&lt;br /&gt;
# Partitionieren der Festplatte (fdisk).&lt;br /&gt;
# Einrichten der Swappartition (mkswap), Formatieren der Festplatte (mkfs).&lt;br /&gt;
# Montieren der Dateisysteme (mount), Aktivieren der Swapbereiche (swapon).&lt;br /&gt;
# Kopieren und Auspacken der Daten vom Installationsmedium auf die Festplatte (die eigentliche Installation). (rpm, dpkg oder tar).&lt;br /&gt;
# Geeignete Wahl der Bootmethode unter Berücksichtigung von Punkt 1 (grub, lilo).&lt;br /&gt;
# Konfiguration des Systems (Netz, Modem etc...).&lt;br /&gt;
&lt;br /&gt;
==Erste Schritte==&lt;br /&gt;
===Anmelden===&lt;br /&gt;
Sie können sich nun mit dem Usernamen und dem Passwort, das sie bei der Installation angelegt haben anmelden!&lt;br /&gt;
[[Image:benutzer.jpg]]&lt;br /&gt;
&lt;br /&gt;
[[Image:passwd.jpg]]&lt;br /&gt;
&lt;br /&gt;
===Terminal öffnen===&lt;br /&gt;
&lt;br /&gt;
Ein Terminal öffnen Sie über das Startmenü:&lt;br /&gt;
&lt;br /&gt;
[[Image:Terminalde.jpg]]&lt;br /&gt;
&lt;br /&gt;
Das geöffnete Terminal sieht dann folgendermaßen aus:&lt;br /&gt;
&lt;br /&gt;
[[Image:Terminalde2.jpg]]&lt;br /&gt;
&lt;br /&gt;
===Sudo===&lt;br /&gt;
Rootrechte erlangen sie über den &amp;quot;Sudo&amp;quot;-Befehl&lt;br /&gt;
 &lt;br /&gt;
''Den nächsten Befehl als root ausführen''&lt;br /&gt;
 xinux@zero:~$ sudo cat /etc/shadow&lt;br /&gt;
 [sudo] password for xinux:&lt;br /&gt;
&lt;br /&gt;
''Eine komplette Sitzung als root starten''&lt;br /&gt;
 xinux@zero:~$ sudo -i&lt;br /&gt;
 [sudo] password for xinux:&lt;br /&gt;
 root@zero:~#&lt;br /&gt;
&lt;br /&gt;
===Virtuelle Konsolen===&lt;br /&gt;
&lt;br /&gt;
In die Virtuelle Konsole gelangen sie über &amp;quot;STRG+ALT+(F1-F6)&amp;quot;.&lt;br /&gt;
Sie funktioniert wie ein ganz normales Terminal, und mit &amp;quot;ALT+F7&amp;quot;&lt;br /&gt;
gelangen sie wieder zurück auf die grafische Benutzeroberfläche&lt;br /&gt;
&lt;br /&gt;
===Abmelden===&lt;br /&gt;
&lt;br /&gt;
Abmelden können Sie sich wieder über das Startmenu unter:&lt;br /&gt;
&lt;br /&gt;
[[Image:Logout.jpg]]&lt;br /&gt;
&lt;br /&gt;
Fals sie nur einzelne Sitzungen in einem der Terminals oder &lt;br /&gt;
den Virtuellen Konsolen Abmelden wollen benutzen sie dazu den Befehl: &amp;quot;exit&amp;quot;&lt;br /&gt;
&lt;br /&gt;
===Herunterfahren===&lt;br /&gt;
&lt;br /&gt;
Das Herunterfahren funktioniert auf dem selben Weg.&lt;br /&gt;
&lt;br /&gt;
Entweder sie Benutzen wieder das Startmenü und benutzen diesmal den &amp;quot;Ausschalten ...&amp;quot; Knopf,&lt;br /&gt;
&lt;br /&gt;
Oder sie geben den äquivalenten &amp;quot;shutdown&amp;quot;-Befehl in einem Terminal bzw. der virtuellen Konsole ein.&lt;br /&gt;
&lt;br /&gt;
Allerdings müssen sie dazu als Administrator angemeldet sein s. &amp;quot;Sudo&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Wenn Sie den &amp;quot;shutdown&amp;quot;-Befehl benutzen wollen muss hinter den Befehl&lt;br /&gt;
&lt;br /&gt;
eine Zeitangabe in Minuten oder das wort &amp;quot;now&amp;quot; für sofortiges Ausschalten hinzugefügt werden:&lt;br /&gt;
&lt;br /&gt;
 xinux@zero:~$ sudo -i&lt;br /&gt;
 root@zero:~# shutdown 60&lt;br /&gt;
 &lt;br /&gt;
 Broadcast message from xinux@zero &lt;br /&gt;
         (/dev/pts/3) at 14:29 ...&lt;br /&gt;
 &lt;br /&gt;
 The system is going down for maintenance in 60 minutes!&lt;br /&gt;
&lt;br /&gt;
Sollten sie den Befehl widerrufen wollen dann drücken sie &amp;quot;STRG+C&amp;quot;,&lt;br /&gt;
&lt;br /&gt;
in dem Terminal in dem der shutdown Befehl gestartet wurde,&lt;br /&gt;
&lt;br /&gt;
oder geben sie den &amp;quot;shutdown&amp;quot;-Befehl zusammen mit der Abbruchoption &amp;quot;-c&amp;quot; in einem anderen Terminal ein:&lt;br /&gt;
&lt;br /&gt;
 root@zero:~# shutdown -c&lt;br /&gt;
&lt;br /&gt;
 shutdown: Shutdown cancelled&lt;br /&gt;
 root@zero:~# &lt;br /&gt;
&lt;br /&gt;
Wenn Sie den Rechner Neustarten möchten gibt es dazu die Option &amp;quot;-r&amp;quot; für den &amp;quot;shutdown&amp;quot;-Befehl&lt;br /&gt;
&lt;br /&gt;
oder den &amp;quot;reboot&amp;quot;-Befehl die beide auch als root ausgeführt werden müssen:&lt;br /&gt;
&lt;br /&gt;
 xinux@zero:~$ sudo -i&lt;br /&gt;
 [sudo] password for xinux: &lt;br /&gt;
 root@zero:~# shutdown -r now&lt;br /&gt;
&lt;br /&gt;
 root@zero:~# reboot&lt;br /&gt;
&lt;br /&gt;
===&amp;quot;man&amp;quot;===&lt;br /&gt;
&lt;br /&gt;
Programm zum Einsehen der Online-Manuals&lt;br /&gt;
&lt;br /&gt;
Die Manuals sind in folgende Sektionen unterteilt:&lt;br /&gt;
# Ausführbare Programme oder Shellbefehle&lt;br /&gt;
# Systemaufrufe (Kernelfunktionen)&lt;br /&gt;
# Bibliotheksaufrufe (Funktionen in System-Bibliotheken)&lt;br /&gt;
# Spezielle Dateien (gewöhnlich in /dev)&lt;br /&gt;
# Dateiformate und Konventionen, z. B. /etc/passwd&lt;br /&gt;
# Spiele&lt;br /&gt;
# Makropakete und Konventionen, z. B. man(7), groff(7)&lt;br /&gt;
# Systemadministrationsbefehle (in der Regel nur für root)&lt;br /&gt;
# Kernelroutinen [Nicht Standard]&lt;br /&gt;
&lt;br /&gt;
Aufruf eines Manuals erfolgt durch ''man kommando''&lt;br /&gt;
Beendet wird durch Drücken des Buchstabens q&lt;br /&gt;
Gesucht wird vorwärts durch Eingabe eines /suchausdruck&lt;br /&gt;
Gesucht wird rückwärts durch Eingabe eines ?suchausdruck&lt;br /&gt;
&lt;br /&gt;
Beispiele:&lt;br /&gt;
&lt;br /&gt;
      man passwd        Anschauen der Manualseite zum Programm passwd&lt;br /&gt;
      man 5 passwd      Anschauen der Manualseite zur Datei /etc/passwd&lt;br /&gt;
      man -a passwd     Anschauen aller Manualseiten zu passwd&lt;br /&gt;
      man -k passwd     Durchsucht die Kurzbeschreibungen der Manualseite&lt;br /&gt;
                        nach passwd und gibt alle Treffer aus&lt;br /&gt;
      man -f passwd      Gibt alle gefunden Kurzbescheibungen zu passwd aus&lt;br /&gt;
      man -L en passwd Gibt englische Manualseiten aus&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Was geht vor auf meinem System? (date,who)===&lt;br /&gt;
&lt;br /&gt;
Das Kommando date dient zur Abfrage von Datum und Uhrzeit.&lt;br /&gt;
&lt;br /&gt;
 xinux@zero:~ &amp;gt; date&lt;br /&gt;
 Fre Mär 16 16:35:03 CET 2001&lt;br /&gt;
&lt;br /&gt;
oder auch Anzeige der Grennwich Zeit:&lt;br /&gt;
&lt;br /&gt;
 xinux@zero:~ &amp;gt; date -u&lt;br /&gt;
 Fre Mär 16 15:35:34 UTC 2001&lt;br /&gt;
&lt;br /&gt;
 xinux@zero:~ &amp;gt; date -u &amp;quot;+%X&amp;quot;&lt;br /&gt;
 15:37:19&lt;br /&gt;
&lt;br /&gt;
 xinux@zero:~ &amp;gt; date -u &amp;quot;+%x&amp;quot;&lt;br /&gt;
 01/15/02&lt;br /&gt;
&lt;br /&gt;
who zeigt alle angemeldeten Benutzer an&lt;br /&gt;
&lt;br /&gt;
 thomas@cardassia:~ &amp;gt; who&lt;br /&gt;
 thomas             tty1 Feb 27 16:39&lt;br /&gt;
 thomas             tty2 Mar 2 17:08&lt;br /&gt;
 tina               tty6 Mar 16 16:38&lt;br /&gt;
&lt;br /&gt;
Mit `who --help' bekommen Sie mehr Informationen.&lt;br /&gt;
&lt;br /&gt;
 thomas@cardassia:~ &amp;gt; who --help&lt;br /&gt;
&lt;br /&gt;
Benutzung: who [OPTION]... [ DATEI | ARG1 ARG2 ]&lt;br /&gt;
&lt;br /&gt;
 -H, --heading             print line of column headings&lt;br /&gt;
 -i, -u, --idle            add user idle time as HOURS:MINUTES, . or old&lt;br /&gt;
 -l, --lookup              attempt to canonicalize hostnames via DNS&lt;br /&gt;
 -m                        only hostname and user associated with stdin&lt;br /&gt;
 -q, --count               all login names and number of users logged on&lt;br /&gt;
 -s                        (ignored)&lt;br /&gt;
 -T, -w, --mesg            add user's message status as +, - or ?&lt;br /&gt;
     --message             same as -T&lt;br /&gt;
     --writable            same as -T&lt;br /&gt;
     --help                display this help and exit&lt;br /&gt;
     --version             output version information and exit&lt;br /&gt;
&lt;br /&gt;
==Das UNIX-Dateisystem==&lt;br /&gt;
===Verzeichnisbaum===&lt;br /&gt;
&lt;br /&gt;
[[Image:vztree.jpg]]&lt;br /&gt;
&lt;br /&gt;
Das Betriebssystem UNIX besitzt ein hierarchisches Dateisystem. Es besteht aus:&lt;br /&gt;
* Dateien (Files)&lt;br /&gt;
Dateien speichern Informationen (Text, Bilder, Sound, Videos, Programme) und&lt;br /&gt;
werden über den Dateinamen angesprochen.&lt;br /&gt;
&lt;br /&gt;
* Verzeichnissen (Directories, Kataloge)&lt;br /&gt;
Verzeichnisse besitzen ebenfalls einen Namen und dienen zur Ordnung des&lt;br /&gt;
Dateisystems. Ein Verzeichnis kann Dateien und Unterverzeichnisse&lt;br /&gt;
(Subdirectories) enthalten. Das oberste Verzeichnis im Dateisystem heisst&lt;br /&gt;
Rootverzeichnis oder kurz Root und wird durch / (sprich: slash)&lt;br /&gt;
gekennzeichnet.&lt;br /&gt;
&lt;br /&gt;
Im Gegensatz zu Windows kennt UNIX keine Laufwerke.&lt;br /&gt;
Das obige Bild zeigt ein typisches UNIX-Dateisystem.&lt;br /&gt;
Unterhalb des Rootverzeichnisses befinden sich eine Vielzahl vonVerzeichnissen.&lt;br /&gt;
&lt;br /&gt;
===Wichtige Verzeichnisse===&lt;br /&gt;
&lt;br /&gt;
• '''Homeverzeichnis'''&lt;br /&gt;
&lt;br /&gt;
das Verzeichnis, in dem man sich unmittelbar nach dem Anmelden befindet. Das&lt;br /&gt;
Homeverzeichnis wird vom Systemverwalter eingerichtet; jeder Anwender&lt;br /&gt;
besitzt ein festes Homeverzeichnis. z.B. /home/hans&lt;br /&gt;
&lt;br /&gt;
~ (Tilde) bzw. $HOME (Shellvariable) kennzeichnen das Homeverzeichnis.&lt;br /&gt;
&lt;br /&gt;
• '''Aktuelles Verzeichnis'''&lt;br /&gt;
&lt;br /&gt;
Verzeichnis, in dem man sich aktuell befindet.&lt;br /&gt;
Das aktuelle Verzeichnis wird mit dem Befehl cd (change directory) oder per&lt;br /&gt;
Mausklick verändert.&lt;br /&gt;
Ein einfacher Punkt . kennzeichnet das aktuelle Verzeichnis.&lt;br /&gt;
&lt;br /&gt;
• '''Elternverzeichnis'''&lt;br /&gt;
&lt;br /&gt;
Verzeichnis unmittelbar oberhalb des aktuellen Verzeichnisses.&lt;br /&gt;
Jedes Verzeichnis ausser / besitzt genau ein Elternverzeichnis.&lt;br /&gt;
Zwei Punkte .. kennzeichnen das Elternverzeichnis (abhängig vom aktuellen&lt;br /&gt;
VZ).&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Absoluter Pfadname:===&lt;br /&gt;
&lt;br /&gt;
Beschreibt ausgehend vom Rootverzeichnis den Weg zum Zielverzeichnis oder zur&lt;br /&gt;
Zieldatei. (Welche Verzeichnisse müssen ausgehend von / durchlaufen werden, um&lt;br /&gt;
zum Ziel zu kommen?) Ein absoluter Pfadname beginnt immer mit / .&lt;br /&gt;
&lt;br /&gt;
===Relativer Pfadname:===&lt;br /&gt;
&lt;br /&gt;
Beschreibt ausgehend vom aktuellen Verzeichnis den Weg zum Zielverzeichnis&lt;br /&gt;
oder zur Zieldatei; ein relativer Pfadname beginnt nicht mit / .&lt;br /&gt;
/home/suxer&lt;br /&gt;
absoluter Pfadname für das Verzeichnis sub1 im Homeverzeichnis von suxer&lt;br /&gt;
&lt;br /&gt;
===Verzeichnisstruktur===&lt;br /&gt;
&lt;br /&gt;
 /bin         Kommandos die beim starten benötigt werden (Zugriff hat jeder)&lt;br /&gt;
 /sbin        Wichtige System-Programme (In der Regel root vorberhalten)&lt;br /&gt;
 /boot        Hier findet man die Dateien des Bootmanagers und des Kernel.&lt;br /&gt;
 /dev         In diesem Verzeichnis stehen die Gerätedateien (Devices),&lt;br /&gt;
 /home        Alle Heimatverzeichnisse der Nutzer findet man hier.&lt;br /&gt;
 /lib         Beim Systemstart benötigten Bibliotheken und Modules stehen hier.&lt;br /&gt;
 /mnt         Mountpunkt für temporäre Partitionen&lt;br /&gt;
 /opt         Software, die nicht Installationsumfang von Linux gehören.&lt;br /&gt;
 /root        Heimatverzeichnis des Administrators.&lt;br /&gt;
 /tmp         Temporäre Dateien können hier abgelegt werden&lt;br /&gt;
 /usr         statische Dateien (kann read-only gemountet sein)&lt;br /&gt;
 /var         variable Dateien (muss beschreibar sein )&lt;br /&gt;
 /etc         Konfiguartionsdateien und Startscripte&lt;br /&gt;
 /proc        Virtuelles Dateisystem -&amp;gt; repräsentiert den Kernel&lt;br /&gt;
&lt;br /&gt;
===Unterverzeichnisse von /usr===&lt;br /&gt;
&lt;br /&gt;
 sbin         Programme für root die beim Start nicht benötigt werden&lt;br /&gt;
 bin          Programme für alle die beim Start nicht benötigt werden&lt;br /&gt;
 X11R6        Dateien des X-Window-Sytems&lt;br /&gt;
 bin          Ausführbare Programme&lt;br /&gt;
 doc          Dokumentationen&lt;br /&gt;
 etc          Konfigurationsdateien&lt;br /&gt;
 games        Spiele&lt;br /&gt;
 include      Headerdateien für C-Programme&lt;br /&gt;
 local        Pakete die nicht zur Distribution gehören ähnlich /opt&lt;br /&gt;
 share        Pakete die von mehreren Paketen genutzt werden&lt;br /&gt;
 share/man    Die Manualpages&lt;br /&gt;
 share/info   Seiten des Infosystems&lt;br /&gt;
 share/doc    Dokumentationen&lt;br /&gt;
 src          Sources von Programmen (Kernel und andere)&lt;br /&gt;
&lt;br /&gt;
===Unterverzeichnisse von /var===&lt;br /&gt;
&lt;br /&gt;
 cache        Zwischenspreicher für Progammes&lt;br /&gt;
 games        Variable Daten der Games (Scores etc...)&lt;br /&gt;
 lock         Sperrdateien&lt;br /&gt;
 log          Die Logdateien (wichtiges Verzeichnis für Admins)&lt;br /&gt;
 mail         Das Mailsystem&lt;br /&gt;
 run          Dateien zu laufemdem Prozessen&lt;br /&gt;
 spool        Spooldateien (z.B. für das Drucksystem&lt;br /&gt;
 state        Statusinfos&lt;br /&gt;
 tmp          Wie /tmp eventuell nicht auf root Partion&lt;br /&gt;
&lt;br /&gt;
==Einfache Komandos==&lt;br /&gt;
===cd: Wechseln des Arbeitsverzeichnis===&lt;br /&gt;
&lt;br /&gt;
Um festzustellen in welchem Verzeichnis man sich befindet, sollte man den&lt;br /&gt;
Befehl &amp;quot;pwd&amp;quot; benutzen,&lt;br /&gt;
&lt;br /&gt;
und mit dem Befehl &amp;quot;cd&amp;quot; kann man zwischen den Verzeichnissen wechseln:&lt;br /&gt;
&lt;br /&gt;
Wechsele ins homeverzeichnis von Xinux&lt;br /&gt;
&lt;br /&gt;
 xinux@zero:~$ cd /home/xinux/&lt;br /&gt;
 xinux@zero:~$ pwd&lt;br /&gt;
 /home/xinux&lt;br /&gt;
&lt;br /&gt;
cd ~ -&amp;gt; wechsele ins jeweilige Homeverzeichnis&lt;br /&gt;
&lt;br /&gt;
cd .. -&amp;gt; wechsele ein Verzeichnis höher&lt;br /&gt;
&lt;br /&gt;
cd ../verzeichnis -&amp;gt; wechsele in eine paralleles Verzeichnis &amp;lt;- (ist eine relative Pfadangabe !)&lt;br /&gt;
&lt;br /&gt;
cd - -&amp;gt; wechsele in das Verzeichnis, in dem vorher gearbeitet wurde.&lt;br /&gt;
&lt;br /&gt;
Mit cd / wechselt man in das Wurzelverzeichnis.&lt;br /&gt;
&lt;br /&gt;
 xinux@zero:/var/log$ cd /&lt;br /&gt;
 xinux@zero:/$ pwd&lt;br /&gt;
 /&lt;br /&gt;
&lt;br /&gt;
===ls: Listing===&lt;br /&gt;
&lt;br /&gt;
Den Inhalt von Verzeichnissen kann man sich mit dem Befehl &amp;quot;ls&amp;quot; anzeigen lassen&lt;br /&gt;
wobei &amp;quot;ls&amp;quot; eine Vielzahl von Optionen besitzt:&lt;br /&gt;
&lt;br /&gt;
 ls                                  standard&lt;br /&gt;
 ls -l                               langes listing&lt;br /&gt;
 ls -a                               alle Dateien&lt;br /&gt;
 ls -i                               mit Inode&lt;br /&gt;
 ls -h                               gut lesbare Dateigröße&lt;br /&gt;
 ls -d                               Verzechnis wird angezeigt, nicht der Inhalt&lt;br /&gt;
 ls -L                               sortiert nach Größe&lt;br /&gt;
 ls -t                               sortiert nach Datum&lt;br /&gt;
 ls -F                               mit nützlichem Anhang&lt;br /&gt;
&lt;br /&gt;
 xinux@zero:/$ ls -l /var/log/messages&lt;br /&gt;
 -rw-r----- 1 syslog adm 2296 2009-06-16 10:05 /var/log/messages&lt;br /&gt;
&lt;br /&gt;
===more: Seitenweises Anzeigen von Seiten===&lt;br /&gt;
 root@zero:~# more /var/log/messages&lt;br /&gt;
 ...&lt;br /&gt;
&lt;br /&gt;
===head: erste Zeilen anzeigen===&lt;br /&gt;
Erste 10 Zeilen anzeigen&lt;br /&gt;
 root@zero:~# head /var/log/messages&lt;br /&gt;
 Jun 15 12:37:08 zero syslogd 1.5.0#5ubuntu3: restart.&lt;br /&gt;
 Jun 15 12:38:43 zero kernel: [  830.065036] mtrr: your processor doesn't support write-combining&lt;br /&gt;
 Jun 15 12:46:05 zero pulseaudio[4817]: pid.c: Stale PID file, overwriting.&lt;br /&gt;
 Jun 15 13:05:24 zero -- MARK --&lt;br /&gt;
 ...&lt;br /&gt;
&lt;br /&gt;
Erste zwei Zeilen anzeigen&lt;br /&gt;
 root@zero:~# head -n 2 /var/log/messages&lt;br /&gt;
 Jun 15 12:37:08 zero syslogd 1.5.0#5ubuntu3: restart.&lt;br /&gt;
 Jun 15 12:38:43 zero kernel: [  830.065036] mtrr: your processor doesn't support write-combining&lt;br /&gt;
&lt;br /&gt;
===tail: letzte Zeilen anzeigen===&lt;br /&gt;
 &lt;br /&gt;
 root@zero:~# tail /var/log/syslog&lt;br /&gt;
 ...&lt;br /&gt;
 Jun 19 11:19:35 zero -- MARK --&lt;br /&gt;
 Jun 19 11:39:35 zero -- MARK --&lt;br /&gt;
 Jun 19 11:59:36 zero -- MARK --&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Letze 5 Zeilen anzeigen&lt;br /&gt;
 root@zero:~# tail -n 5 /var/log/auth.log&lt;br /&gt;
 Jun 18 14:30:01 zero CRON[12040]: pam_unix(cron:session): session closed for user root&lt;br /&gt;
 Jun 18 14:39:01 zero CRON[12191]: pam_unix(cron:session): session opened for user root by (uid=0)&lt;br /&gt;
 Jun 18 14:39:01 zero CRON[12191]: pam_unix(cron:session): session closed for user root&lt;br /&gt;
 Jun 18 14:40:01 zero CRON[12237]: pam_unix(cron:session): session opened for user root by (uid=0)&lt;br /&gt;
 Jun 18 14:40:01 zero CRON[12237]: pam_unix(cron:session): session closed for user root&lt;br /&gt;
&lt;br /&gt;
Letze Zeilen anzeigen und fortlaufend aktualisieren&lt;br /&gt;
 root@zero:~# tail -f /var/log/syslog&lt;br /&gt;
 ...&lt;br /&gt;
&lt;br /&gt;
===mkdir: Ein neues Verzeichnis erstellen===&lt;br /&gt;
&lt;br /&gt;
 mkdir        verzeichnis&lt;br /&gt;
Erstellt ein Verzeichnis im working directory (wd)&lt;br /&gt;
&lt;br /&gt;
 mkdir  -p    ver1/ver2&lt;br /&gt;
Erstellt ein Verzeichnis ver2 unterhalb von ver1&lt;br /&gt;
wenn ver1 nicht existiert wird es erstellt&lt;br /&gt;
&lt;br /&gt;
 mkdir -m 753 ver1&lt;br /&gt;
Es wird das Verzeichnis ver1 erstellt mit der mask 753&lt;br /&gt;
&lt;br /&gt;
 mkdir -v     ver1&lt;br /&gt;
Geschwätzige Ausgabe :)&lt;br /&gt;
&lt;br /&gt;
===Zum Löschen von leeren Verzeichnissen wird rmdir benutzt===&lt;br /&gt;
&lt;br /&gt;
 rmdir           ver1&lt;br /&gt;
Löscht das leere Verzeichnis ver1&lt;br /&gt;
&lt;br /&gt;
 rmdir -v        ver1&lt;br /&gt;
Löscht das leere Verzeichnis ver1 und ist geschwätzig&lt;br /&gt;
&lt;br /&gt;
 rmdir -p        /ver1/ver2/ver3&lt;br /&gt;
Löscht das Verzeichnis ver3; wenn dadurch ver2 ein leeres&lt;br /&gt;
Verzeichnis wird, wird dieses auch gelöscht , wenn ver1&lt;br /&gt;
dadurch ein leeres Verzeichnis wird, wird auch dieses gelöscht.&lt;br /&gt;
&lt;br /&gt;
===touch Verändern des Zeitstempels===&lt;br /&gt;
&lt;br /&gt;
Mit touch können wir eine neue leere Datei erzeugen (das ist nicht der eigentliche&lt;br /&gt;
Zweck von touch, eigentlich wird der Zeitstempel geändert)&lt;br /&gt;
&lt;br /&gt;
 touch            dateiname&lt;br /&gt;
&lt;br /&gt;
===Kopieren=== &lt;br /&gt;
cp ist das Kommando um Dateien zu kopieren &lt;br /&gt;
&lt;br /&gt;
Eine Kopie von dat1 mit dem Namen dat2 erstellen:&lt;br /&gt;
&lt;br /&gt;
 xinux@zero:~$ cp dat1 dat2&lt;br /&gt;
&lt;br /&gt;
Eine Kopie von dat1 ins Verzeichnis ver2 erstellen:&lt;br /&gt;
&lt;br /&gt;
 xinux@zero:~$ cp dat1 ver2/&lt;br /&gt;
 &lt;br /&gt;
Eine Kopie erstellen mit ausführlicher Anzeige:&lt;br /&gt;
&lt;br /&gt;
 xinux@zero:~$ cp -v dat1 dat2&lt;br /&gt;
 `dat1' -&amp;gt; `dat2'&lt;br /&gt;
&lt;br /&gt;
Eine Kopie erstellen mit Rückfrage fals etwas überschrieben wird:&lt;br /&gt;
&lt;br /&gt;
 xinux@zero:~$ cp -i dat1 dat2&lt;br /&gt;
 cp: overwrite `dat2'?&lt;br /&gt;
&lt;br /&gt;
Eine Kopie erstellen und die Rückfrage überbrücken:&lt;br /&gt;
&lt;br /&gt;
 xinux@zero:~$ cp -f dat1 dat2&lt;br /&gt;
&lt;br /&gt;
Eine Kopie von dat1 ins Verzeichnis ver2 erstellen fals keine neuere Version von dat1 vorliegt:&lt;br /&gt;
&lt;br /&gt;
 xinux@zero:~$ cp -u dat1 ver2/&lt;br /&gt;
&lt;br /&gt;
Eine Kopie erstellen fals ver2 auf dem selben Dateisystem wie dat1 liegt:&lt;br /&gt;
&lt;br /&gt;
 xinux@zero:~$ cp -x dat1 ver2/&lt;br /&gt;
&lt;br /&gt;
Eine Kopie von ver1, die als ver2 oder unter ver2 als ver1 gespeichert wird erstellen:&lt;br /&gt;
&lt;br /&gt;
 xinux@zero:~$ cp -r ver1/ ver2/&lt;br /&gt;
&lt;br /&gt;
Eine Kopie von einer Datei erstellen und ihre Attribute beibehalten:&lt;br /&gt;
&lt;br /&gt;
 xinux@zero:~$ cp -p sux1 sux2&lt;br /&gt;
&lt;br /&gt;
Eine Kopie erstellen bei der die Links erhalten bleiben:&lt;br /&gt;
&lt;br /&gt;
 xinux@zero:~$ cp -r ver1/ ver2/&lt;br /&gt;
&lt;br /&gt;
Eine Kopie erstellen zum Archivieren (-dpr):&lt;br /&gt;
&lt;br /&gt;
 xinux@zero:~$ cp -a ver1/ ver2/&lt;br /&gt;
&lt;br /&gt;
===rm: Löschen einer Datei===&lt;br /&gt;
&lt;br /&gt;
Um Dateien zu löschen, brauchen wir das Kommando &amp;quot;rm&amp;quot;:&lt;br /&gt;
&lt;br /&gt;
 rm               dat1        dat1 wird gelöscht&lt;br /&gt;
 rm         -i    dat1        dat1 wird nach Bestätigung gelöscht&lt;br /&gt;
 rm         -f    dat1        dat1 wird ohne Rückfragen gelöscht&lt;br /&gt;
 rm         -v    dat1        dat1 wird glöscht (geschwätzige Ausgabe)&lt;br /&gt;
 rm         -r    ver1        Löschen von nicht leeren Verzeichnissen&lt;br /&gt;
                              Achtung !!! Als root kann man sich damit Teile&lt;br /&gt;
                              oder sogar den gesamten Verzeichnisbaum&lt;br /&gt;
                              absägen !!!&lt;br /&gt;
&lt;br /&gt;
===mv: Verschieben===&lt;br /&gt;
&lt;br /&gt;
Mit dem Befehl &amp;quot;mv&amp;quot; werden Daten verschoben, folgendes gilt:&lt;br /&gt;
&lt;br /&gt;
 mv          dat1 dat2         &lt;br /&gt;
Die Datei dat1 wird in dat2 umbenannt&lt;br /&gt;
 mv          dat1 /ver1        &lt;br /&gt;
Die Datei dat1 wird nach /ver1 verschoben&lt;br /&gt;
&lt;br /&gt;
Die Parameter und ihre Bedeutung:&lt;br /&gt;
&lt;br /&gt;
      -i                      wenn eine Datei exisitiert wird vor dem&lt;br /&gt;
                              Überschreiben nachgefragt&lt;br /&gt;
      -v                      verbose (geschwätzig)&lt;br /&gt;
      -u                      nur neuere Daten werden bei Bedarf überschrieben&lt;br /&gt;
      -b                      wenn überschrieben werden soll, wird ein Backup&lt;br /&gt;
                              erstellt&lt;br /&gt;
      -S ENDUNG               das Backup bekommt die Endung ENDUNG&lt;br /&gt;
&lt;br /&gt;
===su Benutzer wechseln===&lt;br /&gt;
&lt;br /&gt;
 su -             &lt;br /&gt;
Wechsel zum Rootaccount, wie wenn dieser sich neu anmelden würde. (Bsp: su -)&lt;br /&gt;
&lt;br /&gt;
 su Benutzernamen &lt;br /&gt;
Wechsel der Identität zu Benutzer (gegebenenfalls Passwortabfrage)&lt;br /&gt;
&lt;br /&gt;
 su -c Kommando   &lt;br /&gt;
Kommando wird als rootaccount ausgeführt&lt;br /&gt;
&lt;br /&gt;
==Der Standard Editor vi==&lt;br /&gt;
Der vi ist der Standardeditor in der Unixwelt. Er ist in jedem Unix-Derivat&lt;br /&gt;
enthalten.&lt;br /&gt;
Der Editor hat zwar den schlechten Ruf umständlich zu bedienen zu sein, ist&lt;br /&gt;
jedoch sehr leistungsfähig und systemübergreifend verfügbar. Beim vi handelt es&lt;br /&gt;
sich um einen rein textorientierten Editor, der mittels eigener Kommandos&lt;br /&gt;
gesteuert wird.&lt;br /&gt;
&lt;br /&gt;
Der Editor VIM ist eine weitere Verbesserung von VI und leichter zu bedienen.&lt;br /&gt;
Und unter Ubuntu/Debian mit &amp;quot;apt-get install vim&amp;quot; zu installieren.&lt;br /&gt;
&lt;br /&gt;
===Starten des Editors:===&lt;br /&gt;
&lt;br /&gt;
Der Editorstart erfolgt einfach durch die Eingabe des Kommandos vi mit dem&lt;br /&gt;
Dateinamen der zu editierenden Datei als Parameter.&lt;br /&gt;
Beispiel:        &lt;br /&gt;
 vi sux.txt&lt;br /&gt;
&lt;br /&gt;
===Die Betriebsmodi des vi:===&lt;br /&gt;
&lt;br /&gt;
Ein Umstand, der dem vi den Ruf der komplizierten Bedienbarkeit zugetragen hat,&lt;br /&gt;
sind die unterschiedlichen Betriebsmodi des Editors. Genauer gesagt verfügt der&lt;br /&gt;
vi über drei Betriebsmodi:&lt;br /&gt;
&lt;br /&gt;
====Kommandomodus:====&lt;br /&gt;
&lt;br /&gt;
Innerhalb dieses Modus werden die eingegebenen Zeichen direkt als Befehle des&lt;br /&gt;
Editors interpretiert und ausgeführt. Dabei gibt es weder ein Bereitschaftszeichen&lt;br /&gt;
(Prompt) noch ein Echo (Ausgabe). Der Kommandomodus ist der Modus, in dem&lt;br /&gt;
sich der vi direkt nach seinem Start befindet.&lt;br /&gt;
&lt;br /&gt;
====Zeilenmodus oder Exmodus:====&lt;br /&gt;
&lt;br /&gt;
Dieser Modus ist der einzige Modus mit einem eigenen Bereitschaftszeichen,&lt;br /&gt;
nämlich dem Doppelpunkt (:). Das Prompt wird ebenso wie die Befehlsausgaben&lt;br /&gt;
in der Statuszeile angezeigt.&lt;br /&gt;
&lt;br /&gt;
====Eingabemodus:====&lt;br /&gt;
&lt;br /&gt;
Der Eingabemodus ist derjenige, in welchem der zu bearbeitende Text bearbeitet&lt;br /&gt;
werden kann. Alle hier eingegebenen Zeichen werden als Text für die aktuelle&lt;br /&gt;
Datei interpretiert. Zwischen den unterschiedlichen Modi kann jederzeit&lt;br /&gt;
gewechselt werden. Von Kommandomodus gelangen Sie durch mehere Wege in&lt;br /&gt;
den Eingabemodus. Man kann durch folgende Aktionen wechslen&lt;br /&gt;
&lt;br /&gt;
{| border=1 cellpadding=2&lt;br /&gt;
|i&lt;br /&gt;
|Text vor der aktuellen Cursorposition einfügen&lt;br /&gt;
|-&lt;br /&gt;
|I&lt;br /&gt;
|Text am Zeilenanfang einfügen&lt;br /&gt;
|-&lt;br /&gt;
|a&lt;br /&gt;
|Text hinter der aktuellen Cursorposition einfügen&lt;br /&gt;
|-&lt;br /&gt;
|A&lt;br /&gt;
|Text am Zeilenende einfügen&lt;br /&gt;
|-&lt;br /&gt;
|o&lt;br /&gt;
|Unterhalb der aktuellen Zeile eine neue Zeile einfügen&lt;br /&gt;
|-&lt;br /&gt;
|O&lt;br /&gt;
|Oberhalb der aktuellen Zeile eine neue Zeile einfügen&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Durch das Drücken der ESC - Taste gelangt man in den Kommandomodus zurück.&lt;br /&gt;
&lt;br /&gt;
Im Kommandomodus können Sie durch den Text navigieren und auch den Text&lt;br /&gt;
selbst bearbeiten, z.B ausschneiden, kopieren usw. Dazu sind einige Kommandos&lt;br /&gt;
nötig, von denen die wichtigsten im Folgenden erläutert werden:&lt;br /&gt;
&lt;br /&gt;
 xinux@zero:/$ vi iwas.txt&lt;br /&gt;
&lt;br /&gt;
[[Image:vim.jpg]]&lt;br /&gt;
&lt;br /&gt;
===Benutzen des Kommandomodus===&lt;br /&gt;
====Steuerung des Cursors durch den Text====&lt;br /&gt;
&lt;br /&gt;
Mittels folgender Kommandos bewegt sich der Cursor durch den Text:&lt;br /&gt;
&lt;br /&gt;
{| border=1 cellpadding=2&lt;br /&gt;
|h&lt;br /&gt;
|Cursor ein Zeichen nach links&lt;br /&gt;
|-&lt;br /&gt;
|l&lt;br /&gt;
|Cursor ein Zeichen nach rechts&lt;br /&gt;
|-&lt;br /&gt;
|k&lt;br /&gt;
|Cursor eine Zeile nach oben&lt;br /&gt;
|-&lt;br /&gt;
|j&lt;br /&gt;
|Cursor eine Zeile nach unten&lt;br /&gt;
|-&lt;br /&gt;
|w&lt;br /&gt;
|Cursor ein Wort nach rechts&lt;br /&gt;
|-&lt;br /&gt;
|b&lt;br /&gt;
|Cursor ein Wort nach links&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Alle diese Kommandos können mit einem vorgestellten Wiederholungsfaktor&lt;br /&gt;
arbeiten. Der Befehl 3w verschiebt demnach den Cursor um 3 Wörter nach rechts.&lt;br /&gt;
&lt;br /&gt;
====Angaben zur Positionierung====&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{| border=1 cellpadding=2&lt;br /&gt;
|STRG+U&lt;br /&gt;
|1⁄2 Bildschirmseite nach oben&lt;br /&gt;
|-&lt;br /&gt;
|STRG+D&lt;br /&gt;
|1⁄2 Bildschirmseite nach unten&lt;br /&gt;
|-&lt;br /&gt;
|STRG+B&lt;br /&gt;
|1 Bildschirmseite nach oben&lt;br /&gt;
|-&lt;br /&gt;
|STRG+F&lt;br /&gt;
|1 Bildschirmseite nach unten&lt;br /&gt;
|-&lt;br /&gt;
|/Ausdruck&lt;br /&gt;
|Sucht den Ausdruck (vorwärts) Weitersuchen mit n , N&lt;br /&gt;
|-&lt;br /&gt;
|?Ausdruck&lt;br /&gt;
|Sucht den Ausdurck (rückwärts) Weitersuchen mit n , N&lt;br /&gt;
|-&lt;br /&gt;
|0&lt;br /&gt;
|Zeilenanfang&lt;br /&gt;
|-&lt;br /&gt;
|$&lt;br /&gt;
|Zeilenende&lt;br /&gt;
|-&lt;br /&gt;
|w&lt;br /&gt;
|Nächstes Wort&lt;br /&gt;
|-&lt;br /&gt;
|b&lt;br /&gt;
|Vorheriges Wort&lt;br /&gt;
|-&lt;br /&gt;
|fc&lt;br /&gt;
|Auf das Zeichen c springen. c steht für ein beliebiges Zeichen&lt;br /&gt;
|-&lt;br /&gt;
|G&lt;br /&gt;
|Letzte Zeile der Datei&lt;br /&gt;
|-&lt;br /&gt;
|ng&lt;br /&gt;
|n-te Zeile der Datei&lt;br /&gt;
|-&lt;br /&gt;
|H&lt;br /&gt;
|Anfang der Bildschirmseite&lt;br /&gt;
|-&lt;br /&gt;
|L&lt;br /&gt;
|Ende der Bildschirmseite&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
====Befehle zur Textbearbeitung -&amp;gt; Was soll geschehen====&lt;br /&gt;
&lt;br /&gt;
{| Border=1 Cellpadding=2&lt;br /&gt;
|x&lt;br /&gt;
|Löscht Zeichen&lt;br /&gt;
|-&lt;br /&gt;
|d&lt;br /&gt;
|Löschen und in den Puffer laden&lt;br /&gt;
|-&lt;br /&gt;
|c&lt;br /&gt;
|Ändern&lt;br /&gt;
|-&lt;br /&gt;
|y&lt;br /&gt;
|In den Puffer laden&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
====Weitere wichtige Befehle:====&lt;br /&gt;
&lt;br /&gt;
{| Border=1 Cellpadding=2&lt;br /&gt;
|p&lt;br /&gt;
|Aus dem Puffer einfügen&lt;br /&gt;
|-&lt;br /&gt;
|u&lt;br /&gt;
|Undo, macht den letzten Befehl rückgängig&lt;br /&gt;
|-&lt;br /&gt;
|STRG+R&lt;br /&gt;
|Redo, macht den letzten Undo rückgängig&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
===Zeilen- oder Exmodus===&lt;br /&gt;
&lt;br /&gt;
Wie schon erwähnt wird der Zeilen oder Exmodus durch einen : eingeleitet.&lt;br /&gt;
Es folgen einige Beispiele.&lt;br /&gt;
&lt;br /&gt;
Befehle zum Speichern und Beenden:&lt;br /&gt;
&lt;br /&gt;
 :w          Schreibt Datei&lt;br /&gt;
 :w Datei2   Schreibt eine Kopie in Datei2&lt;br /&gt;
 :w !        Schreibt Datei (übergehe Schreibschutz)&lt;br /&gt;
 :w ! Datei2 Schreibt eine Kopie in Datei2 (übergehe Schreibschutz)&lt;br /&gt;
 :q          Schließe Datei&lt;br /&gt;
 :q!         Schließe Datei (verwerfe Änderungen)&lt;br /&gt;
 :wq         Schreibe Datei und beende Editor&lt;br /&gt;
 :wq!        Schreibe Datei und beende Editor (übergehe Schreibschutz)&lt;br /&gt;
 :q!         Schließe Datei (verwerfe Änderungen)&lt;br /&gt;
 :h          Hilfe anzeigen, durch drücken von :q Beenden der Hilfe&lt;br /&gt;
 :e Datei3   Editiere Datei3&lt;br /&gt;
 :e #        Editere vorhergehende Datei&lt;br /&gt;
 :1,3co9     Kopiere von der ersten bis zu dritten Zeile &lt;br /&gt;
             und füge den Inhalt unterhalb der neunte Zeile ein.&lt;br /&gt;
&lt;br /&gt;
Interaktionen mit Unix:&lt;br /&gt;
&lt;br /&gt;
 :r Datei4   Fügt Inhalt der Datei4 nach dem Cursor ein&lt;br /&gt;
 :r ! Befehl Fügt Ausgabe des Befehls nach dem Cursor ein&lt;br /&gt;
 :! Befehl   Führt den Befehl aus&lt;br /&gt;
 :sh         Starte Subshell -&amp;gt; mit exit kehrt man wieder zurück&lt;br /&gt;
             Eingabemodus zurück&lt;br /&gt;
&lt;br /&gt;
====Ersetzen von Textteilen====&lt;br /&gt;
&lt;br /&gt;
Die grundsätzliche Syntax lautet:&lt;br /&gt;
&lt;br /&gt;
 :[Zeilennummer,Zeilennummer]s/Muster/Ersetzung/[gc]&lt;br /&gt;
&lt;br /&gt;
 :s/worf/kirn/              der erste worf wird in der aktuellen Zeile durch kirn ersetzt&lt;br /&gt;
 :1,9s/worf/kirn/g          von der 1. bis zur 9. Zeile werden alle worf durch kirn ersetzt&lt;br /&gt;
 :1,$s/worf/kirn/           von der ersten bis zur letzten Zeile ersetze ersten worf durch&lt;br /&gt;
                            kirn&lt;br /&gt;
 :.,$s/worf/kirn/g          von der aktuellen bis zur letzten Zeile ersetze alle worf durch&lt;br /&gt;
                            kirn&lt;br /&gt;
 :1,.s/worf/kirn/c          von der 1. bis zur aktuellen Zeile ersetze worf durch kirn, frage&lt;br /&gt;
                            aber nach&lt;br /&gt;
 :1,$s/^worf/kirn/          von der ersten bis zur letzten Zeile ersetze worf am&lt;br /&gt;
                            Zeilenanfang durch kirn&lt;br /&gt;
 :4,$s/worf$/kirn/          von der 4. bis zur letzten Zeile ersetze worf am Zeilenende&lt;br /&gt;
                            durch kirn&lt;br /&gt;
 :1,$s/^#//                 lösche alle Kommentarzeichen&lt;br /&gt;
 :1,$s/^.orf/kirn/           ersetze alles was am Zeilenanfang ein beliebiges Zeichen hat&lt;br /&gt;
                            gefolgt von einem orf durch kirn&lt;br /&gt;
 :1,$s/^[A-Z]orf/kirn/g     suche nach einem Großbuchstaben am Anfang der Zeile&lt;br /&gt;
                            gefolgt von einem orf und ersetze durch kirn&lt;br /&gt;
 :1,$s/^M[ae][iy]e*r/kirn/  suche alles, was am Anfang der Zeile ein großes M enthält,&lt;br /&gt;
                            gefolgt von einem a oder e , gefolgt von einem i oder y ,&lt;br /&gt;
                            gefolgt von einem e , welches 0 oder N mal vorkommen kann,&lt;br /&gt;
                            gefolgt von einem r und ersetze es durch kirn&lt;br /&gt;
&lt;br /&gt;
==Reguläre Ausdrücke==&lt;br /&gt;
&lt;br /&gt;
{| Border=1 Cellpadding=2&lt;br /&gt;
|c&lt;br /&gt;
|Ein einzelner Buchstabe passt auf sich selbst&lt;br /&gt;
|-&lt;br /&gt;
|.&lt;br /&gt;
|Ein Punkt passt auf jedes Zeichen außer auf das Zeilenende&lt;br /&gt;
|-&lt;br /&gt;
|*&lt;br /&gt;
|Das dem Operator * vorangehende Muster kann 0 oder öfter vorkommen&lt;br /&gt;
|-&lt;br /&gt;
|^&lt;br /&gt;
|(Caret) passt auf den Zeilenanfang&lt;br /&gt;
|-&lt;br /&gt;
|$&lt;br /&gt;
|Passt auf das Zeilenende&lt;br /&gt;
|-&lt;br /&gt;
|\&lt;br /&gt;
|Das folgende Sonderzeichen wird entwertet&lt;br /&gt;
|-&lt;br /&gt;
|[...]&lt;br /&gt;
|Passt auf &amp;quot;genau&amp;quot; eins in [...] angebenen Zeichen&lt;br /&gt;
|-&lt;br /&gt;
|[^...]&lt;br /&gt;
|Passt auf &amp;quot;genau&amp;quot; ein Zeichen welches nicht in [...] angebenen ist&lt;br /&gt;
|-&lt;br /&gt;
|\&amp;lt;&lt;br /&gt;
|Passt auf den Wortanfang&lt;br /&gt;
|-&lt;br /&gt;
|\&amp;gt;&lt;br /&gt;
|Passt auf das Wortende&lt;br /&gt;
|-&lt;br /&gt;
|\+&lt;br /&gt;
|Das dem Operator \+ vorangehende Muster kann 1 oder öfter vorkommen&lt;br /&gt;
|-&lt;br /&gt;
|&amp;amp;&lt;br /&gt;
|Setzt das gefunden Suchmuster ein&lt;br /&gt;
|-&lt;br /&gt;
|\(...\)&lt;br /&gt;
|Speichert den Text auf den das Suchmuster passt zur späteren Verwendung&lt;br /&gt;
|-&lt;br /&gt;
|\n&lt;br /&gt;
|Setzt das vorangehende, mit \(...\) Gefundene wieder ein&lt;br /&gt;
|-&lt;br /&gt;
|(...)&lt;br /&gt;
|Gruppiert Auswahlmöglichkeiten&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;nowiki&amp;gt;|&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
|Trennt Auswahlmöglichkeiten&lt;br /&gt;
|-&lt;br /&gt;
|\b&lt;br /&gt;
|Passt auf den Anfang oder das Ende eines Wortes&lt;br /&gt;
|-&lt;br /&gt;
|\B&lt;br /&gt;
|Symbolisiert den Raum innerhalb eines Wortes&lt;br /&gt;
|-&lt;br /&gt;
|\w&lt;br /&gt;
|Passt auf alle alphanumerischen Zeichen [A-Za-z0-9]&lt;br /&gt;
|-&lt;br /&gt;
|\W&lt;br /&gt;
|Passt auf alle nichtalphanumerischen Zeichen [^A-Za-z0-9]&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Die Rangfolge der Operatoren(von der höchsten zur niedrigsten)&lt;br /&gt;
:(, ), ?, *, + | .&lt;br /&gt;
&lt;br /&gt;
Die anderen Operatoren sind mit den anderen Buchstaben gleichrangig.&lt;br /&gt;
&lt;br /&gt;
===Beispiel zum Suchen===&lt;br /&gt;
&lt;br /&gt;
 Suchmuster               Passt auf&lt;br /&gt;
 ^Tuxer                   Tuxer am Zeilenanfang&lt;br /&gt;
 [tT]uxer                 Tuxer oder tuxer&lt;br /&gt;
 80[23]?86                8086, 80286 oder 80386&lt;br /&gt;
&lt;br /&gt;
===grep===&lt;br /&gt;
&lt;br /&gt;
Mit grep ist es möglich, in Dateien nach regulären Ausdrücken zu suchen. Wenn&lt;br /&gt;
eine Übereinstimmung gefunden wird, wird die komplette Zeile auf die&lt;br /&gt;
Standardausgabe geschrieben. grep kann auch von STDIN lesen.Es ist&lt;br /&gt;
empfehlenswert, sich anzugwöhnen ,das Suchmuster in Anführungszeichen zu&lt;br /&gt;
schreiben. Es gibt 3 Arten fgrep = fastgrep , grep und egrep egrep&lt;br /&gt;
&lt;br /&gt;
Beispiel:&lt;br /&gt;
&lt;br /&gt;
 root@zero:~# cat text&lt;br /&gt;
 quatsch&lt;br /&gt;
 quatsch&lt;br /&gt;
 quatsch&lt;br /&gt;
 wichtig&lt;br /&gt;
 quatsch&lt;br /&gt;
 root@zero:~# grep wichtig text&lt;br /&gt;
 wichtig&lt;br /&gt;
 root@zero:~# &lt;br /&gt;
&lt;br /&gt;
 -c                   meldet nur die Gesamtzahl der Fundstellen&lt;br /&gt;
 -v                   zeigt nur Zeilen, die »Ausdruck« nicht enthalten&lt;br /&gt;
 -i                   ignoriert Groß- und Kleinschreibung&lt;br /&gt;
 -l                    meldet nur Dateinamen mit Fundstellen&lt;br /&gt;
 -n                   listet Zeilennummern zu jeder Fundstelle&lt;br /&gt;
 -f                   Dateiname »Dateiname« enthält die Such-Ausdrücke&lt;br /&gt;
 -E                   ist ein erweiterter regulärer Ausdruck (egrep)&lt;br /&gt;
 -F                   (Muster, Ausdruck) ist ein Muster (String) (fgrep)&lt;br /&gt;
 -b                   listet auch die Position der Fundstellen&lt;br /&gt;
 -C    Anzahl         Anzahl von Zeilen werden nach der Fundstelle ausgegeben&lt;br /&gt;
 -B    Anzahl         Anzahl von Zeilen werden vor der Fundstelle ausgegeben&lt;br /&gt;
 -r                   Durchsucht Verzeichnisse rekursiv&lt;br /&gt;
&lt;br /&gt;
==Useridendifikation==&lt;br /&gt;
===/etc/passwd===&lt;br /&gt;
====Beschreibung====&lt;br /&gt;
passwd ist eine ASCII-Datei, die eine Liste der Benutzer des Systems und deren&lt;br /&gt;
Passwörter enthält. Die Passwortdatei sollte für alle Benutzer lesbar sein, was für&lt;br /&gt;
dieVerschlüsselung notwendig ist; aber nur vom Superuser beschreibbar. Wenn&lt;br /&gt;
Sie eine neue Kennung einrichten, lassen Sie das Passwort-Feld in der Datei frei&lt;br /&gt;
und benutzen Sie passwd(1), um dem System ein Passwort für die neue Kennung&lt;br /&gt;
mitzuteilen.&lt;br /&gt;
&lt;br /&gt;
Die Datei /etc/passwd enthält einen Eintrag pro Zeile mit dem Format:&lt;br /&gt;
login_name:passwd:UID:GID:user_name:directory:shell&lt;br /&gt;
====Die Bedeutung der Felder:====&lt;br /&gt;
# login_name Kennung des Benutzers auf dem System.&lt;br /&gt;
# password   Hier steht bei Shadowsystemen ein x. Die Passwörter sind in der Datei /etc/shadow&lt;br /&gt;
# UID        Die numerische Benutzernummer.&lt;br /&gt;
#  GID        Die numerische Gruppennummer des Benutzers.&lt;br /&gt;
# user_name Ein optionales Kommentarfeld, oft benutzt für den vollen Namen des Benutzers und weitere Informationen (Telefon, Raum-Nummer etc.).&lt;br /&gt;
# directory  Das Heimatverzeichnis $HOME des Benutzers.&lt;br /&gt;
# shell      Das Programm, das beim Einloggen gestartet werden soll (falls nicht nötig, benutzen Sie /bin/bash).&lt;br /&gt;
&lt;br /&gt;
===/etc/group===&lt;br /&gt;
====Beschreibung====&lt;br /&gt;
etc/group ist eine ASCII Datei, die Gruppen definiert, zu denen Benutzer&lt;br /&gt;
gehören. Es gibt nur einen Eintrag pro Zeile; jede Zeile hat folgendes Format:&lt;br /&gt;
         GruppenName:Passwort:GruppenKennung:BenutzerListe&lt;br /&gt;
Beschreibung der Felder:&lt;br /&gt;
#     GruppenName      Die Bezeichnung der Gruppe.&lt;br /&gt;
#     Passwort         Das (verschlüsselte) Gruppen-Passwort. Wenn dieses Feld leer ist, wird kein Passwort benötigt.&lt;br /&gt;
#     GruppenKennung Die numerische Identifikation der Gruppe.&lt;br /&gt;
#     BenutzerListe    Alle Namen der Mitglieder, getrennt durch Kommas.&lt;br /&gt;
&lt;br /&gt;
===/etc/shadow===&lt;br /&gt;
====Beschreibung====&lt;br /&gt;
shadow beinhaltet Informationen zu den verschlüsselten Passwörten, zu den&lt;br /&gt;
Benutzerzugängen und weitere Informationen zur Laufzeit der Passwörter.&lt;br /&gt;
 Name:Passwort:Letzte Änderung:Mintage:Maxtage:Warntage:Inaktiv:Ablauf&lt;br /&gt;
#    Der Loginname&lt;br /&gt;
#    verschlüsseltes Passwort &lt;br /&gt;
&amp;lt;nowiki&amp;gt;*&amp;lt;/nowiki&amp;gt; bedeutet Benutzer kann sich nicht einlogen&lt;br /&gt;
! bedeutet Benutzer hat kein Passwort gesetzt&lt;br /&gt;
#    Tage seit dem 1 Januar 1970 an dem das Passwort letztmals geändert wurde&lt;br /&gt;
#    Tage, die das Passwort behalten werden muss, bevor es wieder geändert werden kann&lt;br /&gt;
#     Die Anzahl der Tage, nach denen der Benutzer das Passwort wieder ändern muss&lt;br /&gt;
#    Anzahl der Tage bevor das Passwort abläuft und der Benutzer gewarnt wird&lt;br /&gt;
#    Wenn der Zugang diese Anzahl von Tagen nicht benutzt wird, wird der Zugang gesperrt&lt;br /&gt;
#    Tag seit dem 1 Januar 1970, an dem der Zugang gesperrt wird&lt;br /&gt;
#    Reserviertes Feld&lt;br /&gt;
&lt;br /&gt;
Die Datei sollte aus Sicherheitgründen nicht für einen normalen Benutzer lesbar&lt;br /&gt;
sein.&lt;br /&gt;
&lt;br /&gt;
==Programme zur Userverwaltung==&lt;br /&gt;
===useradd===&lt;br /&gt;
User anlegen&lt;br /&gt;
 root@zero:~# useradd -m -u 1011 -g users -G admin -d /home/erwin -s /bin/bash -c &amp;quot;Erwin Lehman&amp;quot;  erwin&lt;br /&gt;
{| border=1 cellpadding=2&lt;br /&gt;
|&amp;quot;-m&amp;quot;&lt;br /&gt;
|Lege Homedirectory an&lt;br /&gt;
|-&lt;br /&gt;
|&amp;quot;-u 1011&amp;quot;&lt;br /&gt;
|Userid wird zugeordnet&lt;br /&gt;
|-&lt;br /&gt;
|&amp;quot;-g users&amp;quot;&lt;br /&gt;
|Primäre Gruppe wird zugeordnet&lt;br /&gt;
|-&lt;br /&gt;
|&amp;quot;-G admin&amp;quot;&lt;br /&gt;
|Sekunbdäre Gruppe wird zugeordnet&lt;br /&gt;
|-&lt;br /&gt;
|&amp;quot;-d /home/erwin/&amp;quot;&lt;br /&gt;
|Name des Homedirectory&lt;br /&gt;
|-&lt;br /&gt;
|&amp;quot;-s /bin/bash&amp;quot;&lt;br /&gt;
|Bash wird zugeordnet&lt;br /&gt;
|- &lt;br /&gt;
|&amp;quot;-c Erwin Lehman&amp;quot;&lt;br /&gt;
|Kommentarfeld&lt;br /&gt;
|-&lt;br /&gt;
|&amp;quot;erwin&amp;quot; &lt;br /&gt;
|Name des Users&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Defaulteinstellungen anzeigen&lt;br /&gt;
 root@zero:~# useradd -D&lt;br /&gt;
 GROUP=100&lt;br /&gt;
 HOME=/home&lt;br /&gt;
 INACTIVE=-1&lt;br /&gt;
 EXPIRE=&lt;br /&gt;
 SHELL=/bin/sh&lt;br /&gt;
 SKEL=/etc/skel&lt;br /&gt;
 CREATE_MAIL_SPOOL=no&lt;br /&gt;
&lt;br /&gt;
Defaulteinstellungen ändern&lt;br /&gt;
 useradd -D -s /bin/bash&lt;br /&gt;
&lt;br /&gt;
Konfigurationsdatei&lt;br /&gt;
 root@zero:~# cat /etc/default/useradd &lt;br /&gt;
 SHELL=/bin/bash&lt;br /&gt;
 GROUP=100&lt;br /&gt;
 HOME=/home&lt;br /&gt;
 INACTIVE=-1&lt;br /&gt;
 EXPIRE=&lt;br /&gt;
 SKEL=/etc/skel&lt;br /&gt;
 CREATE_MAIL_SPOOL=no&lt;br /&gt;
&lt;br /&gt;
===usermod===&lt;br /&gt;
User modifizieren&lt;br /&gt;
 root@zero:~# usermod -l fritz -s /bin/sh -G admin,video erwin&lt;br /&gt;
{| border=1 cellpadding=2&lt;br /&gt;
|&amp;quot;-l fritz&amp;quot;&lt;br /&gt;
|Neuer Username&lt;br /&gt;
|-&lt;br /&gt;
|&amp;quot;-s /bin/sh&amp;quot;&lt;br /&gt;
|Neue Shell&lt;br /&gt;
|-&lt;br /&gt;
|&amp;quot;-G admin, video&amp;quot;&lt;br /&gt;
|Sekunbdäre Gruppen werden zugeordnet&lt;br /&gt;
|-&lt;br /&gt;
|&amp;quot;erwin&amp;quot; &lt;br /&gt;
|Name des Users&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
===userdel===&lt;br /&gt;
User inklusive Homedirectory löschen&lt;br /&gt;
 root@zero:~# userdel -r fritz&lt;br /&gt;
&lt;br /&gt;
===passwd===&lt;br /&gt;
Rootpasswort ändern&lt;br /&gt;
 root@zero:~# passwd &lt;br /&gt;
 Geben Sie ein neues UNIX Passwort ein:'''sysadm''' &lt;br /&gt;
 Geben Sie das neue UNIX Passwort erneut ein:'''sysadm''' &lt;br /&gt;
 passwd: Passwort erfolgreich geändert&lt;br /&gt;
&lt;br /&gt;
Passwort von tux ändern&lt;br /&gt;
 root@zero:~# passwd tux&lt;br /&gt;
 Geben Sie ein neues UNIX Passwort ein:'''suxer''' &lt;br /&gt;
 Geben Sie das neue UNIX Passwort erneut ein:'''suxer'''&lt;br /&gt;
 passwd: Passwort erfolgreich geändert&lt;br /&gt;
&lt;br /&gt;
Minimale und Maximale Gültigkeit des Passwortes von tux festlegen&lt;br /&gt;
 root@zero:~# passwd -n 5 -x 120 tux&lt;br /&gt;
&lt;br /&gt;
===groupadd===&lt;br /&gt;
 root@zero:~# groupadd -f -g 2001 xinuxer&lt;br /&gt;
{| border=1 cellpadding=2&lt;br /&gt;
|&amp;quot;-f&amp;quot;&lt;br /&gt;
|Überschreibe bestehende Gruppe&lt;br /&gt;
|-&lt;br /&gt;
|&amp;quot;-g 2001&amp;quot;&lt;br /&gt;
|GID der Gruppe&lt;br /&gt;
|-&lt;br /&gt;
|&amp;quot;xinuxer&amp;quot; &lt;br /&gt;
|Name des Gruppe&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==chmod==&lt;br /&gt;
Die Syntax des Befehls chmod lautet:&lt;br /&gt;
&lt;br /&gt;
'''chmod''' WerWieWas [,WerWieWas,.....] Dateiliste&lt;br /&gt;
&lt;br /&gt;
oder&lt;br /&gt;
&lt;br /&gt;
'''chmod''' Oktalzahl Dateiliste&lt;br /&gt;
&lt;br /&gt;
Durch WerWieWas bzw. Oktalzahl wird die Rechtetabelle definiert. Innerhalb von&lt;br /&gt;
WerWieWas darf es kein Leerzeichen geben. Wer bezeichnet den Benutzerkreis,&lt;br /&gt;
dem man Rechte gibt, Wie die Art, in der die Rechte gegeben werden und Was die&lt;br /&gt;
Rechte als solche. Im einzelnen können folgende Kürzel benutzt werden:&lt;br /&gt;
&lt;br /&gt;
Für Wer kann eines der folgenden Kürzel oder eine Kombination davon stehen:&lt;br /&gt;
 u                   (user) Rechte für den Dateibesitzer&lt;br /&gt;
 g                   (group) Rechte für die Gruppe&lt;br /&gt;
 o                   (others) Rechte für alle anderen Benutzer&lt;br /&gt;
 a                   (all) Rechte für alle Benutzer&lt;br /&gt;
Für Wie steht eines der folgenden Kürzel:&lt;br /&gt;
 +                   Die Rechte werden zu den vorhandenen zusätzlich vergeben&lt;br /&gt;
 -                   Die im Folgenden genannten Rechte werden entzogen&lt;br /&gt;
 =                   Die im Folgenden genannten Rechte ersetzen die bisherigen&lt;br /&gt;
Für Was steht eines der folgenden Kürzel:&lt;br /&gt;
 r                   (read) lesen&lt;br /&gt;
 w                   (write) schreiben&lt;br /&gt;
 x                   (execute) ausführen&lt;br /&gt;
oder diese Sonderformen&lt;br /&gt;
 s                   (usersbit) Programm läuft unter der UID des Besitzers&lt;br /&gt;
 s                   (groupsbit)Programm läuft unter der GID des GRUPPE&lt;br /&gt;
 t                   (stickybit) Dateien im Verzeichnis darf nur Besitzer löschen&lt;br /&gt;
&lt;br /&gt;
===Beispiel===&lt;br /&gt;
Setze für alle Schreib- und Leserecht&lt;br /&gt;
 xinux@zero:~$ chmod a=rw test &lt;br /&gt;
 xinux@zero:~$ ls -l test &lt;br /&gt;
 -rw-rw-rw- 1 xinux xinux 0 2009-06-16 12:01 test&lt;br /&gt;
 xinux@zero:~$ &lt;br /&gt;
&lt;br /&gt;
Erteile Besitzer Ausführungsrecht&lt;br /&gt;
 xinux@zero:~$ chmod u+x test ; ls -l test &lt;br /&gt;
 -rwxrw-rw- 1 xinux xinux 0 2009-06-16 12:01 test&lt;br /&gt;
 xinux@zero:~$ &lt;br /&gt;
&lt;br /&gt;
===chmod oktale Schreibweise===&lt;br /&gt;
 Specialrights        User           Group         Other&lt;br /&gt;
 usbit gsbit sticky    r    w   x     r   w   x     r   w   x&lt;br /&gt;
   1     1      1      1    1   1     1   1   1     1   1   1&lt;br /&gt;
   0     0      0      0    0   0     0   0   0     0   0   0&lt;br /&gt;
 Oktale Wertigkeit pro Recht&lt;br /&gt;
   4     2       1     4    2   1     4   2   1     4   2   1&lt;br /&gt;
&lt;br /&gt;
===Beispiele===&lt;br /&gt;
 xinux@zero:~$ chmod 751 test ; ls -l test&lt;br /&gt;
 -rwxr-x--x 1 xinux xinux 0 2009-06-16 12:01 test&lt;br /&gt;
 xinux@zero:~$ &lt;br /&gt;
&lt;br /&gt;
 xinux@zero:~$ chmod 4770 test ; ls -l test&lt;br /&gt;
 -rwsrwx--- 1 xinux xinux 0 2009-06-16 12:01 test&lt;br /&gt;
 xinux@zero:~$ &lt;br /&gt;
&lt;br /&gt;
 xinux@zero:~$ chmod 0 test ; ls -l test &lt;br /&gt;
 ---------- 1 xinux xinux 0 2009-06-16 12:01 test&lt;br /&gt;
&lt;br /&gt;
===chmod Optionen===&lt;br /&gt;
 -c   (changes) es werden nur die Dateien angezeigt, deren Zugriffsrechte tatsächlich verändert werden&lt;br /&gt;
 -f   (silent, quiet) Fehlermeldungen wegen fehlgeschlagener Änderungsversuche werden unterdrückt&lt;br /&gt;
 -v   (verbose) alle Aktionen werden angezeigt&lt;br /&gt;
 -R   (recursive) die Zugriffsrechte aller Dateien in den Unterverzeichnissen werden ebenfalls geändert&lt;br /&gt;
&lt;br /&gt;
Theoretisch sind alle Kombinationen der Zugriffsrechte denkbar, aber der&lt;br /&gt;
Eigentümer einer Datei darf diese immer lesen, selbst wenn das Lesebit nicht&lt;br /&gt;
gesetzt ist. Genauso macht es wenig Sinn, eine gewöhnliche Textdatei als&lt;br /&gt;
ausführbar zu setzen; die Shell wird damit nichts anfangen können. Ein x für ein&lt;br /&gt;
Verzeichnis gibt an, dass in dieses gewechselt werden kann.&lt;br /&gt;
&lt;br /&gt;
Rechte sind verbindlich&lt;br /&gt;
&lt;br /&gt;
Interessant ist auch ein Konstrukt folgender Art&lt;br /&gt;
 -rwx---rwx&lt;br /&gt;
&lt;br /&gt;
das angibt, dass mit der Datei alles angestellt werden kann, außer durch Nutzer der&lt;br /&gt;
Gruppe. Versucht irgend jemand, der nicht der Gruppe des Eigentümers angehört,&lt;br /&gt;
die Datei zu modifizieren, wird ihm dies gelingen, einem Gruppenmitglied bleibt&lt;br /&gt;
dies versagt, obwohl er ja gleichzeitig ein &amp;quot;Anderer&amp;quot; ist. D.h. die Rechte der&lt;br /&gt;
Gruppe sind verbindlicher, als die Rechte der anderen!&lt;br /&gt;
&lt;br /&gt;
===Bedeutungen der Zugriffsarten===&lt;br /&gt;
====Dateien====&lt;br /&gt;
* r: Der Inhalt der Datei kann gelesen und damit auch kopiert werden. &lt;br /&gt;
 root@zero:~# cat test&lt;br /&gt;
 Dies ist eine Testdatei&lt;br /&gt;
  &lt;br /&gt;
 root@zero:~# cp test backup&lt;br /&gt;
&lt;br /&gt;
* w: Der Inhalt der Datei darf verändert werden. Ob die Datei gelöscht werden kann ist&lt;br /&gt;
keine Eigenschaft der Datei, sondern des Verzeichnisses, indem sich die Datei befindet.&lt;br /&gt;
 root@zero:~# cat &amp;gt; test&lt;br /&gt;
 Hier steht jetzt was anderes&lt;br /&gt;
 ^C&lt;br /&gt;
 root@zero:~# cat test&lt;br /&gt;
 Hier steht jetzt was anderes&lt;br /&gt;
  &lt;br /&gt;
 xinux@zero:~$ ls -ld verzeichnis/&lt;br /&gt;
 dr-xr-xr-x 2 xinux xinux 4096 2009-06-18 11:16 verzeichnis/&lt;br /&gt;
 xinux@zero:~/verzeichnis$ rm text&lt;br /&gt;
 rm: Entfernen von „text“ nicht möglich: Permission denied&lt;br /&gt;
&lt;br /&gt;
* x: Ausführrecht für Programme und Skripte&lt;br /&gt;
 xinux@zero:~$ ./programm&lt;br /&gt;
 -bash: ./programm: Permission denied&lt;br /&gt;
 xinux@zero:~$ chmod +x programm&lt;br /&gt;
 xinux@zero:~$ ./programm&lt;br /&gt;
 Test&lt;br /&gt;
  test&lt;br /&gt;
&lt;br /&gt;
====Verzeichnisse====&lt;br /&gt;
* r: Die Einträge in dem Verzeichnis sind lesbar.&lt;br /&gt;
Leserecht von verzeichnis/ entziehen&lt;br /&gt;
 xinux@zero:~$ chmod a-r verzeichnis/&lt;br /&gt;
 xinux@zero:~$ ls verzeichnis/&lt;br /&gt;
 ls: Öffnen von Verzeichnis verzeichnis/ nicht möglich: Permission denied&lt;br /&gt;
Leserecht für Benutzer und Gruppe vergeben&lt;br /&gt;
 xinux@zero:~$ chmod a+r verzeichnis/&lt;br /&gt;
 xinux@zero:~$ ls verzeichnis/&lt;br /&gt;
 text&lt;br /&gt;
&lt;br /&gt;
* w: Die Einträge in dem Verzeichnis können geändert werden. &lt;br /&gt;
Neue Datei erstellen&lt;br /&gt;
 xinux@zero:~$ touch neu&lt;br /&gt;
 xinux@zero:~$ ls neu&lt;br /&gt;
 neu&lt;br /&gt;
&lt;br /&gt;
Datei löschen&lt;br /&gt;
 xinux@zero:~$ rm neu&lt;br /&gt;
 xinux@zero:~$ ls neu&lt;br /&gt;
 ls: Zugriff auf neu nicht möglich: No such file or directory&lt;br /&gt;
&lt;br /&gt;
* x: Der Name des Verzeichnisses kann in einem Pfadnamen erscheinen.&lt;br /&gt;
Verzeichnis ohne x Recht&lt;br /&gt;
 xinux@zero:~$ chmod a-x verzeichnis/&lt;br /&gt;
Wechseln in Verzeichnis mangels x-Recht nicht möglich&lt;br /&gt;
 xinux@zero:~$ cd verzeichnis/&lt;br /&gt;
 -bash: cd: verzeichnis/: Permission denied&lt;br /&gt;
x-Recht vergeben&lt;br /&gt;
 xinux@zero:~$ chmod a+x verzeichnis/&lt;br /&gt;
damit Wechsel in Verzeichnis möglich&lt;br /&gt;
 xinux@zero:~$ cd verzeichnis/&lt;br /&gt;
 xinux@zero:~/verzeichnis$ pwd&lt;br /&gt;
 /home/xinux/verzeichnis&lt;br /&gt;
&lt;br /&gt;
====umask====&lt;br /&gt;
Neue Dateien und Verzeichnisse werden mit ein und denselben Zufriffsrechten erzeugt.&lt;br /&gt;
 xinux@zero:~$ mkdir text&lt;br /&gt;
 xinux@zero:~$ touch textdat&lt;br /&gt;
 xinux@zero:~$ ls -ld text*&lt;br /&gt;
 drwxr-xr-x 2 xinux xinux 4096 2009-06-18 11:37 text&lt;br /&gt;
 -rw-r--r-- 1 xinux xinux    0 2009-06-18 11:37 textdat&lt;br /&gt;
&lt;br /&gt;
Zuständig für dieses Verhalten ist die sogenannte umask, die oft in der Datei&lt;br /&gt;
/etc/profile auf den Wert 022 voreingestellt ist. Zusätzlich wird noch eine&lt;br /&gt;
Maximalmaske benötigt, die sich für Verzeichnisse und andere Dateien&lt;br /&gt;
unterscheidet. Die bei der Erzeugung gesetzten Rechte entstehen nun, indem von&lt;br /&gt;
der Maximalmaske der durch die umask vorgegebene Wert subtrahiert wird:&lt;br /&gt;
&lt;br /&gt;
{| border=1 cellpadding=2&lt;br /&gt;
!&lt;br /&gt;
! Dateien&lt;br /&gt;
! Verzeichnisse&lt;br /&gt;
|-&lt;br /&gt;
| Systemvorgabe&lt;br /&gt;
| 666&lt;br /&gt;
| 777&lt;br /&gt;
|-&lt;br /&gt;
| -umask&lt;br /&gt;
| 022&lt;br /&gt;
| 022&lt;br /&gt;
|-&lt;br /&gt;
| Ergebnis&lt;br /&gt;
| 644&lt;br /&gt;
| 755&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
 xinux@zero:~$ grep umask /etc/profile&lt;br /&gt;
 umask 022&lt;br /&gt;
&lt;br /&gt;
==Gruppenzugehörigkeit==&lt;br /&gt;
===newgrp===&lt;br /&gt;
Ändert die Gruppenzugehörigkeit eines Benutzers auf die angegebene Gruppe. Wenn keine Gruppe angegeben wird, wird die &lt;br /&gt;
Anmeldegruppe des Benutzers verwendet. Die neue Gruppe wird anschließend fü Zugriffskontrollen verwendet.&lt;br /&gt;
&lt;br /&gt;
 newgrp Gruppenname&lt;br /&gt;
&lt;br /&gt;
 root@zero:~# newgrp hacker&lt;br /&gt;
 root@zero:~# id&lt;br /&gt;
 uid=0(root) gid=1006(hacker) Gruppen=0(root),1006(hacker)&lt;br /&gt;
&lt;br /&gt;
===chgrp===&lt;br /&gt;
Verändert die Besitzugehörigkeit zu der angegebenen Gruppe&lt;br /&gt;
&lt;br /&gt;
 chgrp [Optionen] Gruppe Datei(en)&lt;br /&gt;
&lt;br /&gt;
Optionen:&lt;br /&gt;
 -c Zeigt Veränderungen an&lt;br /&gt;
 -f Unterdrückt die meisten Fehlermeldungen&lt;br /&gt;
 -R Verändert Dateien und Verzeichnisse rekursiv&lt;br /&gt;
 -v Gibt geschwätzige Ausgabe aus.&lt;br /&gt;
&lt;br /&gt;
 root@zero:~# ls -l&lt;br /&gt;
 ...&lt;br /&gt;
 d-wx--x--x  3 root root 4096 2009-06-18 13:34 verzeichnis&lt;br /&gt;
 &lt;br /&gt;
 root@zero:~# chgrp -R xinux verzeichnis/&lt;br /&gt;
 root@zero:~# ls -l&lt;br /&gt;
 ...&lt;br /&gt;
 d-wx--x--x  3 root xinux 4096 2009-06-18 13:34 verzeichnis&lt;br /&gt;
&lt;br /&gt;
 xinux@zero:~$ cd /root/verzeichnis/&lt;br /&gt;
 xinux@zero:/root/verzeichnis$ pwd&lt;br /&gt;
 /root/verzeichnis&lt;br /&gt;
&lt;br /&gt;
===chown===&lt;br /&gt;
Ändert den Eigentümer von einer oder mehreren Dateien in den angegebenen Benutzer. &lt;br /&gt;
chown erlaubt ebenfalls das Ändern der Gruppeneigentümreschaft. Nur der aktuelle Eigentümer einer&lt;br /&gt;
Datei oder der Superuser (root) darf die Eigentumsverhältnisse ändern.&lt;br /&gt;
&lt;br /&gt;
 chown [Optionen] Benutzer(:Gruppe) Dateien&lt;br /&gt;
&lt;br /&gt;
Optionen:&lt;br /&gt;
 -c Gibt Informationen über die veränderten Dateien aus&lt;br /&gt;
 --dereference Symbolischen Links folgen&lt;br /&gt;
 -v Gibt Informationen über alle Dateien aus, die chown zu ändern versucht, egal, ob die Änderung erfolgt ist oder nicht&lt;br /&gt;
 -R Geht rekursiv durch alle Unterverzeichnisse und führt die Änderungen durch. &lt;br /&gt;
&lt;br /&gt;
 root@zero:~# chown -R xinux.xinux verzeichnis/&lt;br /&gt;
 root@zero:~# ls -l&lt;br /&gt;
 insgesamt 12&lt;br /&gt;
 drwx------ 13 root  root  4096 2009-04-21 15:11 profile&lt;br /&gt;
 --w-------  1 root  root     0 2009-06-18 11:13 test&lt;br /&gt;
 -rw-r--r--  1 root  root    40 2009-06-18 12:04 text&lt;br /&gt;
 drwxrwx--x  3 xinux xinux 4096 2009-06-18 13:39 verzeichnis&lt;br /&gt;
 &lt;br /&gt;
 root@zero:~# chown -R -c xinux.xinux verzeichnis/&lt;br /&gt;
 &lt;br /&gt;
 root@zero:~# chown -R -v xinux.xinux verzeichnis/&lt;br /&gt;
 Eigentümer von „verzeichnis/01“ als xinux:xinux erhalten&lt;br /&gt;
 Eigentümer von „verzeichnis/test“ als xinux:xinux erhalten&lt;br /&gt;
 Eigentümer von „verzeichnis/“ als xinux:xinux erhalten&lt;br /&gt;
&lt;br /&gt;
==Eingabe/Ausgabe==&lt;br /&gt;
Standardeingabe (0): Laufende Programme erwarten von hier ihre Eingaben (normalerweise handelt es sich um die Tastatur).&lt;br /&gt;
&lt;br /&gt;
Standardausgabe (1): Programme schreiben auf diese ihre Ausgaben (Bildschirm).&lt;br /&gt;
&lt;br /&gt;
Standardfehlerausgabe (2) : Fehlerausgaben landen hier (Bildschirm, aber nur die aktive Konsole).&lt;br /&gt;
&lt;br /&gt;
[[Bild:std.jpg]]&lt;br /&gt;
&lt;br /&gt;
===cat===&lt;br /&gt;
Das Programm cat liest von STDIN und gibt es STDOUT wieder aus&lt;br /&gt;
&lt;br /&gt;
Einlesen der Datei text&lt;br /&gt;
 root@zero:~# cat &amp;lt; text&lt;br /&gt;
 wichtig&lt;br /&gt;
&lt;br /&gt;
Schreiben in die Datei text, dies überschreibt den bisherigen Inhalt der Datei&lt;br /&gt;
 root@zero:~# cat &amp;gt; text&lt;br /&gt;
 sogar noch wichtiger &lt;br /&gt;
 &lt;br /&gt;
Ausgeben der Datei text&lt;br /&gt;
 root@zero:~# cat text &lt;br /&gt;
 sogar noch wichtiger&lt;br /&gt;
&lt;br /&gt;
Lesen aus der Datei text und schreiben in die Datei neuertext&lt;br /&gt;
 root@zero:~# cat &amp;lt; text &amp;gt; neuertext&lt;br /&gt;
 root@zero:~# cat neuertext&lt;br /&gt;
 sogar noch wichtiger&lt;br /&gt;
&lt;br /&gt;
Anhängen der Ausgabe von date an die Datei neuertext&lt;br /&gt;
 root@zero:~# date &amp;gt;&amp;gt; neuertext&lt;br /&gt;
 root@zero:~# cat neuertext&lt;br /&gt;
 sogar noch wichtiger&lt;br /&gt;
 Do 18. Jun 14:08:58 CEST 2009&lt;br /&gt;
&lt;br /&gt;
Umleiten des Standardfehlerkanals nach error&lt;br /&gt;
 root@zero:~# rm sux 2&amp;gt; error&lt;br /&gt;
 root@zero:~# more error&lt;br /&gt;
 rm: Entfernen von „sux“ nicht möglich: No such file or directory&lt;br /&gt;
&lt;br /&gt;
===Umleitungen===&lt;br /&gt;
Nacheinander auszuführende Kommandos&lt;br /&gt;
 root@zero:~# pwd; date&lt;br /&gt;
 /root&lt;br /&gt;
 Do 18. Jun 14:13:05 CEST 2009&lt;br /&gt;
 &lt;br /&gt;
Übergeben der Ausgabe von tail als Eingabe von grep mit Hilfe der Pipe &amp;quot;|&amp;quot;&lt;br /&gt;
 root@zero:~# tail /var/log/auth.log | grep xinux&lt;br /&gt;
 Jun 18 13:52:33 zero nss_wins[11433]: pam_unix(login:session): session closed for user xinux&lt;br /&gt;
&lt;br /&gt;
Übergeben der letzten 100 Zeilen von syslog als Eingabe von grep&lt;br /&gt;
 root@zero:~# tail /var/log/syslog -n 100 | grep error&lt;br /&gt;
 Jun 18 09:30:54 zero kernel: [154384.692135] end_request: I/O error, dev fd0, sector 0&lt;br /&gt;
 Jun 18 09:30:54 zero kernel: [154384.712137] end_request: I/O error, dev fd0, sector 0&lt;br /&gt;
&lt;br /&gt;
==tr==&lt;br /&gt;
tr ist ein Programm um Zeichen zu übersetzen. Dies betrifft nur die Ausgabe, die Datei selbst bleibt unverändert.&lt;br /&gt;
&lt;br /&gt;
Ersetzt Kleinbuchstaben durch Großbuchstaben aus der Datei text&lt;br /&gt;
 root@zero:~# tr &amp;quot;a-z&amp;quot; &amp;quot;A-Z&amp;quot; &amp;lt; text&lt;br /&gt;
 SOGAR NOCH WICHTIGER&lt;br /&gt;
 123&lt;br /&gt;
 34&lt;br /&gt;
 4711&lt;br /&gt;
 TEST&lt;br /&gt;
&lt;br /&gt;
Ersetzt alle Zahlen durch X&lt;br /&gt;
 root@zero:~# tr &amp;quot;0-9&amp;quot; &amp;quot;X&amp;quot; &amp;lt; text&lt;br /&gt;
 sogar noch wichtiger&lt;br /&gt;
 XXX&lt;br /&gt;
 XX&lt;br /&gt;
 XXXX&lt;br /&gt;
 test&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
 root@zero:~# cat &amp;gt; test&lt;br /&gt;
 +++++&lt;br /&gt;
 ###&lt;br /&gt;
 1111&lt;br /&gt;
&lt;br /&gt;
-s löscht mehrfach kommende Zeichen&lt;br /&gt;
 root@zero:~# tr '''-s''' &amp;quot;+&amp;quot; &amp;lt; test&lt;br /&gt;
 +&lt;br /&gt;
 ###&lt;br /&gt;
 1111&lt;br /&gt;
&lt;br /&gt;
-d löscht vorkommende Zeichen &lt;br /&gt;
 root@zero:~# tr '''-d''' &amp;quot;#&amp;quot; &amp;lt; test&lt;br /&gt;
 +++++ &lt;br /&gt;
 &lt;br /&gt;
 1111&lt;br /&gt;
&lt;br /&gt;
==cut==&lt;br /&gt;
Spalten aus einer Datei schneiden. Dies betrifft nur die Ausgabe, die Datei selbst bleibt unverändert.&lt;br /&gt;
 &lt;br /&gt;
Schneidet die erste Spalte aus, der Delimiter ist : &lt;br /&gt;
 root@zero:~# cut -f 1 -d : /etc/passwd&lt;br /&gt;
 root&lt;br /&gt;
 daemon&lt;br /&gt;
 bin&lt;br /&gt;
 ...&lt;br /&gt;
 xinux&lt;br /&gt;
&lt;br /&gt;
 root@zero:~# more test&lt;br /&gt;
 1234#5678#9999&lt;br /&gt;
 &lt;br /&gt;
Schneidet die zweite Spalte aus, der Delimiter ist #&lt;br /&gt;
 root@zero:~# cut -f 2 -d &amp;quot;#&amp;quot; &amp;lt; test&lt;br /&gt;
 5678&lt;br /&gt;
&lt;br /&gt;
Schneidet bis zum 3 Zeichen ab&lt;br /&gt;
 root@zero:~$ echo S01policykit | cut -c 4-&lt;br /&gt;
 policykit&lt;br /&gt;
&lt;br /&gt;
==expand==&lt;br /&gt;
Ersetzt Tabulatorzeichen durch Folgen von Leerzeichen und schreibt das Ergebnis auf die Standardausgabe&lt;br /&gt;
 root@zero:~# expand /etc/samba/smb.conf&lt;br /&gt;
 ...&lt;br /&gt;
&lt;br /&gt;
==fmt==&lt;br /&gt;
#Setzt den Text der Dateien im Blocksatz der angegebenen Breite durch Auffüllen von Zeilen und Entfernen von Zeilenwechseln.&lt;br /&gt;
Standardgemäß werden Leerzeilen, die Position von Leerzeichen und der Einzug am Zeilenanfang erhalten. fmt versucht, &lt;br /&gt;
Zeilenumbrüche an Satzenden durchzuführen sowie sie nach dem ersten oder vor dem letzten Wort eines Satzes zu vermeiden. &lt;br /&gt;
 &lt;br /&gt;
 fmt [Optionen] [Dateien]&lt;br /&gt;
&lt;br /&gt;
Optionen&lt;br /&gt;
&lt;br /&gt;
* -p ''Präfix'': Formatiert nur Zeilen, die mit ''Präfix'' anfangen&lt;br /&gt;
 root@zero:/tmp# fmt -p '#' text&lt;br /&gt;
 #Setzt den Text der Dateien im Blocksatz der angegebenen Breite durch&lt;br /&gt;
 #Auffüllen von Zeilen und Entfernen von Zeilenwechseln.  Standardgemäß&lt;br /&gt;
 #werden Leerzeilen, die Position von Leerzeichen und der Einzug am&lt;br /&gt;
 #Zeilenanfang erhalten. fmt versucht,&lt;br /&gt;
 Zeilenumbrüche an Satzenden durchzuführen sowie sie nach dem ersten oder vor dem letzten Wort eines Satzes zu vermeiden.&lt;br /&gt;
&lt;br /&gt;
* -u : Erzwingt genau ein Leerzeichen zwischen Wörtern und zwei Leerzeichen zwischen Sätzen&lt;br /&gt;
&lt;br /&gt;
* -w ''Breite'': Setzt die Ausgabebreite auf ''Breite''&lt;br /&gt;
 root@zero:/tmp# fmt -w 30 text&lt;br /&gt;
 #Setzt den Text der Dateien&lt;br /&gt;
 im Blocksatz der angegebenen&lt;br /&gt;
 Breite durch Auffüllen&lt;br /&gt;
 von Zeilen und Entfernen&lt;br /&gt;
 von Zeilenwechseln.&lt;br /&gt;
 #Standardgemäß werden&lt;br /&gt;
 Leerzeilen, die Position von&lt;br /&gt;
 Leerzeichen und der Einzug am&lt;br /&gt;
 Zeilenanfang erhalten. fmt&lt;br /&gt;
 versucht, Zeilenumbrüche&lt;br /&gt;
 an Satzenden durchzuführen&lt;br /&gt;
 sowie sie nach dem ersten&lt;br /&gt;
 oder vor dem letzten Wort&lt;br /&gt;
 eines Satzes zu vermeiden.&lt;br /&gt;
&lt;br /&gt;
==join==&lt;br /&gt;
Führt die Zeilen zweier sortierter Dateien anhand von '''Übereinstimmungen''' in einem gemeinsamen Feld zusammen.&lt;br /&gt;
&lt;br /&gt;
 root@zero:~# more name&lt;br /&gt;
 1. karl&lt;br /&gt;
 2. heinz&lt;br /&gt;
 3. hans&lt;br /&gt;
 4. otto&lt;br /&gt;
 root@zero:~# more tel&lt;br /&gt;
 1. 1234&lt;br /&gt;
 2. 4321&lt;br /&gt;
 3. 222&lt;br /&gt;
 4. 121212&lt;br /&gt;
 root@zero:~# join name tel &amp;gt; telefonbuch&lt;br /&gt;
 root@zero:~# more telefonbuch&lt;br /&gt;
 1. karl 1234&lt;br /&gt;
 2. heinz 4321&lt;br /&gt;
 3. hans 222&lt;br /&gt;
 4. otto 121212&lt;br /&gt;
&lt;br /&gt;
 root@zero:~# join -t : /etc/passwd /etc/shadow&lt;br /&gt;
 ....&lt;br /&gt;
 daemon:x:1:1:daemon:/usr/sbin:/bin/sh:*:14181:0:99999:7:::&lt;br /&gt;
 bin:x:2:2:bin:/bin:/bin/sh:*:14181:0:99999:7:::&lt;br /&gt;
 sys:x:3:3:sys:/dev:/bin/sh:*:14181:0:99999:7:::&lt;br /&gt;
 sync:x:4:65534:sync:/bin:/bin/sync:*:14181:0:99999:7:::&lt;br /&gt;
 ...&lt;br /&gt;
&lt;br /&gt;
join in dat1 nach Feld 3 und in dat2 nach Feld 2&lt;br /&gt;
 thomas@lydia:~$ cat dat1 &lt;br /&gt;
 hugo:ps:1111&lt;br /&gt;
 erwin:zw:2222&lt;br /&gt;
 karl:sb:3333&lt;br /&gt;
 rudi:kl:4444&lt;br /&gt;
 thomas@lydia:~$ cat dat2&lt;br /&gt;
 blau:1111:svn&lt;br /&gt;
 grün:2222:fcs&lt;br /&gt;
 gelb:3333:fch&lt;br /&gt;
 rot:4444:fck&lt;br /&gt;
 thomas@lydia:~$ join -t : -1 3 -2 2 dat1 dat2 &lt;br /&gt;
 1111:hugo:ps:blau:svn&lt;br /&gt;
 2222:erwin:zw:grün:fcs&lt;br /&gt;
 3333:karl:sb:gelb:fch&lt;br /&gt;
 4444:rudi:kl:rot:fck&lt;br /&gt;
&lt;br /&gt;
==nl==&lt;br /&gt;
Nummeriert die Zeilen in einer Datei.&lt;br /&gt;
&lt;br /&gt;
 root@zero:~# nl /etc/passwd                                                   &lt;br /&gt;
     1  root:x:0:0:root:/root:/bin/bash                                       &lt;br /&gt;
     2  daemon:x:1:1:daemon:/usr/sbin:/bin/sh                                 &lt;br /&gt;
     3  bin:x:2:2:bin:/bin:/bin/sh                                            &lt;br /&gt;
     4  sys:x:3:3:sys:/dev:/bin/sh                                            &lt;br /&gt;
     5  sync:x:4:65534:sync:/bin:/bin/sync&lt;br /&gt;
     ...&lt;br /&gt;
Nummereriet mit führenden Nullen der Separatir ist ein :&lt;br /&gt;
 root@zero:~# nl -s : -n rz dat1&lt;br /&gt;
&lt;br /&gt;
==od==&lt;br /&gt;
Gibt Dateien im Oktal und anderen Formaten aus.&lt;br /&gt;
&lt;br /&gt;
 od [Optionen] Datei&lt;br /&gt;
&lt;br /&gt;
* -j ''Bytes'': Überspringt die Anzahl ''Bytes'' einer Datei&lt;br /&gt;
* -N ''Bytes'': Gibt nur die Anzahl ''Bytes'' aus&lt;br /&gt;
* -c : Gebe ASCII Zeichen aus&lt;br /&gt;
* -f : Gebe Fließkommazahlen aus&lt;br /&gt;
* -i : Gebe Dezimal Integer aus&lt;br /&gt;
* -l : Gebe Dezimal Long aus&lt;br /&gt;
* -o : Gebe Oktal 2 Byte Einheiten aus&lt;br /&gt;
* -s : Gebe Dezimal 2 Byte Einheiten aus&lt;br /&gt;
* -x : Gebe Hexadezimale 2 Byte einheiten aus&lt;br /&gt;
&lt;br /&gt;
Beispiele&lt;br /&gt;
&lt;br /&gt;
Gebe Master Boot Record (die ersten 512 Byte der Festplatte /dev/sda) als Hexadezimal aus&lt;br /&gt;
 root@zero:~# od '''-x -N''' 512 /dev/sda&lt;br /&gt;
 0000000 48eb 1090 d08e 00bc b8b0 0000 d88e c08e&lt;br /&gt;
 0000020 befb 7c00 00bf b906 0200 a4f3 21ea 0006&lt;br /&gt;
 0000040 be00 07be 0438 0b75 c683 8110 fefe 7507&lt;br /&gt;
 0000060 ebf3 b416 b002 bb01 7c00 80b2 748a 0203&lt;br /&gt;
 0000100 00ff 2000 0001 0000 0200 90fa f690 80c2&lt;br /&gt;
 ...&lt;br /&gt;
&lt;br /&gt;
Schreibe &amp;quot;suxer&amp;quot; in die Datei test&lt;br /&gt;
 root@zero:~# echo &amp;quot;suxer&amp;quot; &amp;gt; test&lt;br /&gt;
Ausgabe Hexadezimal&lt;br /&gt;
 root@zero:~# od -x test&lt;br /&gt;
 0000000 7573 6578 0a72&lt;br /&gt;
 0000006&lt;br /&gt;
&lt;br /&gt;
Ausgabe ASCII Zeichen&lt;br /&gt;
 root@zero:~# od -c test&lt;br /&gt;
 0000000   s   u   x   e   r  \n&lt;br /&gt;
 0000006&lt;br /&gt;
&lt;br /&gt;
==paste==&lt;br /&gt;
Fügt die Zeilen von zwei oder mehr Dateien horizontal zusammen&lt;br /&gt;
 root@zero:~# paste name tel&lt;br /&gt;
 1. karl 1. 1234&lt;br /&gt;
 2. heinz        2. 4321&lt;br /&gt;
 3. hans 3. 222&lt;br /&gt;
 4. otto 4. 121212&lt;br /&gt;
&lt;br /&gt;
==pr==&lt;br /&gt;
Bereitet Textdateien zum Drucken vor.&lt;br /&gt;
&lt;br /&gt;
 root@zero:~# echo &amp;quot;Plan für heute&amp;quot; &amp;gt; dokument&lt;br /&gt;
 root@zero:~# more dokument&lt;br /&gt;
 Plan für heute&lt;br /&gt;
 root@zero:~# pr dokument   &lt;br /&gt;
  &lt;br /&gt;
 &lt;br /&gt;
 2009-06-19 12:44                    dokument                     Seite 1&lt;br /&gt;
 &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
 Plan für heute&lt;br /&gt;
&lt;br /&gt;
Anmerkung Ausmaße der Bildschirmausgabe wie eine Druckseite.&lt;br /&gt;
&lt;br /&gt;
==sed==&lt;br /&gt;
streaming editor. Mit sed ist es möglich, den Inhalt einer Datei automatisch (nicht interaktiv) zu&lt;br /&gt;
bearbeiten. Wie unter Linux üblich, wird auch hier der Text nicht wirklich verändert sondern die &lt;br /&gt;
Änderung erfolgt über die Standardausgabe, die wieder umgeleitet werden kann. Die Syntax ist ähnlich &lt;br /&gt;
des ex modus von vi. Reguläre Ausdrücke können nach Belieben benutzt werden. &lt;br /&gt;
&lt;br /&gt;
Optionen:&lt;br /&gt;
 -e Zeichenkette  wendet die Editorbefehle aus Zeichenkette auf den Text an.&lt;br /&gt;
 -n gibt nur die Zeilen aus, die explizit (durch &amp;quot;p&amp;quot; ausgedruckt werden sollen&lt;br /&gt;
&lt;br /&gt;
Gibt die dritte Zeile der Datei text aus&lt;br /&gt;
 root@zero:~# sed -n &amp;quot;3p&amp;quot; text&lt;br /&gt;
 34&lt;br /&gt;
&lt;br /&gt;
Gibt die erste bis dritte Zeile von text aus&lt;br /&gt;
 root@zero:~# sed -n &amp;quot;1,3p&amp;quot; text&lt;br /&gt;
 sogar noch wichtiger&lt;br /&gt;
 123&lt;br /&gt;
 34&lt;br /&gt;
&lt;br /&gt;
Löschen der Zeile mit &amp;quot;sogar&amp;quot;&lt;br /&gt;
 root@zero:~# sed -e '/sogar/d' &amp;lt; text&lt;br /&gt;
 123&lt;br /&gt;
 34&lt;br /&gt;
 4711&lt;br /&gt;
 test&lt;br /&gt;
&lt;br /&gt;
und schreiben in text2&lt;br /&gt;
 root@zero:~# sed -e '/sogar/d' &amp;lt; text &amp;gt; text2&lt;br /&gt;
 root@zero:~# more text2&lt;br /&gt;
 123&lt;br /&gt;
 34&lt;br /&gt;
 4711&lt;br /&gt;
 test&lt;br /&gt;
&lt;br /&gt;
Alle 3en durch DREI ersetzen&lt;br /&gt;
 root@zero:~# sed -e 's/3/DREI/g' &amp;lt; text&lt;br /&gt;
 sogar noch wichtiger&lt;br /&gt;
 12DREI&lt;br /&gt;
 DREI4&lt;br /&gt;
 4711&lt;br /&gt;
 test&lt;br /&gt;
&lt;br /&gt;
==wc==&lt;br /&gt;
Zählt die Anzahl von Zeichen, Wörter oder Zeilen&lt;br /&gt;
&lt;br /&gt;
Optionen&lt;br /&gt;
* -m : Zählt die Anzahl der Zeichen&lt;br /&gt;
 root@zero:~# more name&lt;br /&gt;
 1. karl&lt;br /&gt;
 2. heinz&lt;br /&gt;
 3. hans&lt;br /&gt;
 4. otto&lt;br /&gt;
 root@zero:~# wc '''-m''' tel&lt;br /&gt;
 33 tel&lt;br /&gt;
&lt;br /&gt;
* -w : Zählt die Anzahl der Wörter (einschließlich Zahlen und andere Zeichen)&lt;br /&gt;
 root@zero:~# wc '''-w''' name&lt;br /&gt;
 8 name&lt;br /&gt;
&lt;br /&gt;
* -l : Zählt die Anzahl der Zeilen&lt;br /&gt;
 root@zero:~# wc '''-l''' name&lt;br /&gt;
 4 name&lt;br /&gt;
&lt;br /&gt;
==Sort==&lt;br /&gt;
&lt;br /&gt;
Zum sortieren von Dateien nach Feldern benutzt man sort. sort liest von STDIN man kann die Datei aber auch als Argument übergeben. &lt;br /&gt;
&lt;br /&gt;
Sortiert nach dem ersten Feld&lt;br /&gt;
  root@zero:~# sort /etc/passwd 	 &lt;br /&gt;
&lt;br /&gt;
Es wird geprüft ob die Datei schon sortiert ist &lt;br /&gt;
 root@zero:~# sort -c /etc/passwd 	&lt;br /&gt;
&lt;br /&gt;
Sortiert nach dem ersten Feld (Richtungsumkehr)  &lt;br /&gt;
 root@zero:~#  sort -r /etc/passwd&lt;br /&gt;
&lt;br /&gt;
Führende Leersortzeichen werden ignoriert &lt;br /&gt;
 root@zero:~# sort -b /etc/passwd&lt;br /&gt;
&lt;br /&gt;
Ausgabe  in die Datei pass&lt;br /&gt;
 root@zero:~# sort  /etc/passwd   -o pass	 &lt;br /&gt;
&lt;br /&gt;
nimmt : als Trenner -Voreinstellung ist TAB&lt;br /&gt;
  root@zero:~# sort -t : /etc/passwd&lt;br /&gt;
&lt;br /&gt;
sortiert nach dem  3 Feld,  der Trenner ist : und es wird nummerisch sortiert&lt;br /&gt;
&lt;br /&gt;
 root@zero:~# sort -t: +2 -n /etc/passwd		&lt;br /&gt;
&lt;br /&gt;
sortiert nach dem  3 Feld,  der Trenner ist : und es wird nummerisch sortiert&lt;br /&gt;
					&lt;br /&gt;
 root@zero:~# sort -t: -k 3 -n /etc/passwd&lt;br /&gt;
&lt;br /&gt;
Sortiert nach dem  3  bis zum 5 Feld, der Trenner ist : und es wird nummerisch sortiert&lt;br /&gt;
	&lt;br /&gt;
 root@zero:~# sort -t: -k 3,5 -n /etc/passwd	&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==INodes==&lt;br /&gt;
Inode (oder I-Node) wird im Deutschen am besten als Informationsknoten oder&lt;br /&gt;
Indexeintrag bezeichnet. Er fasst alle Attribute einer Datei zusammen außer dem Inhalt&lt;br /&gt;
und dem Namen der Datei.&lt;br /&gt;
&lt;br /&gt;
===Daten===&lt;br /&gt;
{| border=1 cellpadding=2&lt;br /&gt;
|type&lt;br /&gt;
|Der Typ der Datei wird als einzelner Buchstabe angezeigt. Der Typ einer Datei wird beim Anlegen der Datei festgelegt&lt;br /&gt;
|-&lt;br /&gt;
|Permissions &lt;br /&gt;
|Die Zugriffsrechte der Datei werden in den 12 Bit sstrwxrwxrwx abgespeichert.Wenn sie gesetzt sind, werden sie bei &lt;br /&gt;
der Ausgabe an Stelle der x-Rechte ausgegeben. Die Zugriffsrechte können mit dem Kommando chmod verändert werden.&lt;br /&gt;
|-&lt;br /&gt;
|link count&lt;br /&gt;
|In UNIX kann eine Datei mehr als einen Namen haben. Der Link Count gibt die Anzahl der Namen einer Datei an. Er kann&lt;br /&gt;
mit dem Kommando ln erhöht und dem Kommando rm erniedrigt werden.&lt;br /&gt;
|-&lt;br /&gt;
|owner&lt;br /&gt;
|Für den Dateieigentümer gelten die in der ersten rwx-Gruppe festgelegten Zugriffsrechte. Standardmäßig ist der &lt;br /&gt;
Eigentümer einer Datei derjenige Benutzer, der die Datei angelegt hat.&lt;br /&gt;
|-&lt;br /&gt;
|group&lt;br /&gt;
|Für Benutzer, die in der gleichen Gruppe sind, der die Datei angehört, gelten die in der zweiten rwx-Gruppe festgelegten&lt;br /&gt;
Zugriffsrechte. In System V gehört eine Datei standardmäßig der Gruppe an, in der der anlegende Benutzer gerade ist.&lt;br /&gt;
|-&lt;br /&gt;
|size&lt;br /&gt;
|Bei normalen Dateien und Verzeichnissen gibt diese Information die Länge der Datei in Byte an.&lt;br /&gt;
|-&lt;br /&gt;
|access time&lt;br /&gt;
|Die Zugriffszeit gibt den Zeitpunkt des letzten Lesezugriffes auf eine Datei an. Aus Effizienzgründen wird die &lt;br /&gt;
Zugriffszeit an Verzeichnissen nicht gesetzt, wenn ein Verzeichnis durchsucht wird, obwohl man dies erwarten könnte. ''(ls -l --time=atime)''&lt;br /&gt;
|-&lt;br /&gt;
|modification time&lt;br /&gt;
|Die Modifikationszeit gibt die Zeit des letzten Schreibzugriffes auf die Daten der Datei an. Intern speichert UNIX &lt;br /&gt;
die Zeit als Sekunden seit Beginn des Jahres 1970 und in GMT ab. Für die Ausgabe wird dies in ein besser lesbares &lt;br /&gt;
Format in der lokalen Zeitzone umgewandelt. ''(ls -l)''&lt;br /&gt;
|-&lt;br /&gt;
|change time &lt;br /&gt;
|Die Veränderungszeit gibt das Datum der letzten Statusänderung der Datei an. Sie wird immer dann gesetzt, wenn die &lt;br /&gt;
Informationen über die Datei sich ändern (Datum der Erzeugung wird nicht gespeichert) ''(ls -lc)''&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
===Dateiarten===&lt;br /&gt;
{| border=1 cellpadding=2&lt;br /&gt;
!Zeichen&lt;br /&gt;
!Typ&lt;br /&gt;
!Zweck&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;nowiki&amp;gt;-&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
|file&lt;br /&gt;
|normale Datei&lt;br /&gt;
|-&lt;br /&gt;
|d&lt;br /&gt;
|directory&lt;br /&gt;
|Verzeichnis&lt;br /&gt;
|-&lt;br /&gt;
|b&lt;br /&gt;
|block device&lt;br /&gt;
|Gerätedatei&lt;br /&gt;
|-&lt;br /&gt;
|c&lt;br /&gt;
|character device&lt;br /&gt;
|Gerätedatei&lt;br /&gt;
|-&lt;br /&gt;
|l&lt;br /&gt;
|link&lt;br /&gt;
|Querverweis&lt;br /&gt;
|-&lt;br /&gt;
|p&lt;br /&gt;
|named pipe&lt;br /&gt;
|Benannte Pipeline&lt;br /&gt;
|-&lt;br /&gt;
|s&lt;br /&gt;
|socket&lt;br /&gt;
|Netzwerkverbindung&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
====Normale Dateien====&lt;br /&gt;
Unter einer normalen Datei versteht man die Ansammlung von Daten. Dies kann ein Text, Programm, Bild oder sonstiges sein. &lt;br /&gt;
Beispiel&lt;br /&gt;
 root@zero:~# ls text&lt;br /&gt;
 text&lt;br /&gt;
&lt;br /&gt;
====Verzeichnisse====&lt;br /&gt;
Dateien werden in Verzeichnissen gespeichert, nur so ist eine Ordnung möglich. &lt;br /&gt;
 root@zero:~# mkdir -v Ordner&lt;br /&gt;
 mkdir: Verzeichnis „Ordner“ angelegt&lt;br /&gt;
 &lt;br /&gt;
 root@zero:~# ls -d ~/*&lt;br /&gt;
 /root/error  /root/neuertext  /root/Ordner  /root/profile  /root/test  /root/text  /root/verzeichnis&lt;br /&gt;
&lt;br /&gt;
====Gerätedateien (Block und Char)====&lt;br /&gt;
Gerätedateien ermöglichen Anwendungsprogrammen unter Benutzung des  Kernels den Zugriff auf die Hardwarekomponenten des &lt;br /&gt;
Systems. &lt;br /&gt;
&lt;br /&gt;
Beispiele&lt;br /&gt;
&lt;br /&gt;
Sicherung des Master Boot Records der ersten Festplatte&lt;br /&gt;
 root@zero:~# dd if=/dev/sda1 of=/tmp/mbr.img bs=512 count=1&lt;br /&gt;
&lt;br /&gt;
Einhängen des CD-ROM Laufwerks&lt;br /&gt;
 root@zero:~# mount /dev/cdrom /media/cdrom -t iso9660&lt;br /&gt;
&lt;br /&gt;
====Named Pipes====&lt;br /&gt;
Benannte Pipes (Named Pipes) können dagegen auch zur Kommunikation zwischen Prozessen eingesetzt werden, die nicht miteinander&lt;br /&gt;
verwandt sind und sich darüber hinaus auf unterschiedlichen Rechnern innerhalb eines Netzwerkes befinden dürfen. Sie sind &lt;br /&gt;
flexibler als anonyme Pipes und eignen sich für sogenannte Client-Server-Anwendungen (es lassen sich auch RPCs realisieren).&lt;br /&gt;
Benannte Pipes ermöglichen die gleichzeitige Kommunikation in beide Richtungen, das heißt, Daten können im Vollduplexbetrieb &lt;br /&gt;
zwischen den Prozessen ausgetauscht werden.&lt;br /&gt;
 &lt;br /&gt;
Erstelle Named Pipe mit Namen sux. Schreibe &amp;quot;Hallo Welt&amp;quot; in die Pipe sux und bleibe im Hintergrund. Gebe Inhalt der Pipe mit cat aus&lt;br /&gt;
 root@zero:~# mkfifo sux ; echo 'Hallo Welt' &amp;gt; sux &amp;amp; cat &amp;lt; sux&lt;br /&gt;
 [1] 12947&lt;br /&gt;
 Hallo Welt&lt;br /&gt;
 [1]+  Done                    echo 'Hallo Welt' &amp;gt; sux&lt;br /&gt;
&lt;br /&gt;
====Sockets====&lt;br /&gt;
Schnittstelle um es vernetzten Rechnern zu ermöglichen, miteinander zu kommunizieren.&lt;br /&gt;
&lt;br /&gt;
Sie ist in der Regel definiert durch IP-Adresse sowie Port. &lt;br /&gt;
&lt;br /&gt;
====Links====&lt;br /&gt;
Bei Links handelt es sich um symbolische Verweise auf andere Dateien&lt;br /&gt;
&lt;br /&gt;
'''Softlink'''&lt;br /&gt;
Ein Softlink ist eine Datei die nur auf den Namen einer anderen Datei verweist. Wenn die Originaldatei gelöscht wird, zeigt &lt;br /&gt;
der Link ins Leere. &lt;br /&gt;
&lt;br /&gt;
 ln -s datei softlink&lt;br /&gt;
&lt;br /&gt;
{| border=1 cellpadding=2&lt;br /&gt;
| Vorteile&lt;br /&gt;
| Symbolische Links können auch auf Verzeichnisse angelegt werden&amp;lt;br&amp;gt;Sie sind partitionsübergreifend&amp;lt;br&amp;gt;Man kann sie auf Dateien anlegen, die noch nicht existieren&lt;br /&gt;
|-&lt;br /&gt;
| Nachteile&lt;br /&gt;
| Wenn das Original gelöscht ist, ist kein Zugriff mehr möglich&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Beispiel&lt;br /&gt;
 root@zero:~# ln -s text verweis&lt;br /&gt;
 root@zero:~# ls -l verweis&lt;br /&gt;
 lrwxrwxrwx 1 root root 4 2009-06-18 15:48 verweis -&amp;gt; text&lt;br /&gt;
&lt;br /&gt;
'''Hardlinks'''&lt;br /&gt;
 ln datei hardlink&lt;br /&gt;
Eigentlich ist jede Datei ein Hardlink. Ein Hardlink ist ein Verzeichniseintrag,&lt;br /&gt;
der auf eine Inode verweist. Beim Erzeugen einer Datei verweist ein Eintrag auf&lt;br /&gt;
eine Inode. Man kann dann weitere Verweise erzeugen. Der Linkcounter wird&lt;br /&gt;
jeweils um 1 erhöht. Beim Löschen einer Datei wird er jeweils um 1 reduziert.&lt;br /&gt;
Wird der Wert 0 erreicht, ist die Datei gelöscht.&lt;br /&gt;
{| border=1 cellpadding=2&lt;br /&gt;
| Vorteile&lt;br /&gt;
|Zugriff auf die Daten, selbst wenn das Orginal gelöscht ist.&lt;br /&gt;
|-&lt;br /&gt;
|Nachteile&lt;br /&gt;
|Man kann keine Hardlinks auf Verzeichnisse anlegen.&lt;br /&gt;
Ist nur innerhalb einer Partion möglich.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Beispiel&lt;br /&gt;
 root@zero:~# touch 1&lt;br /&gt;
 root@zero:~# echo &amp;quot;text&amp;quot; &amp;gt; 1&lt;br /&gt;
 root@zero:~# ln 1 2&lt;br /&gt;
 root@zero:~# more 2&lt;br /&gt;
 text&lt;br /&gt;
 root@zero:~# echo &amp;quot;doch kein text&amp;quot; &amp;gt; 1&lt;br /&gt;
 root@zero:~# more 1&lt;br /&gt;
 doch kein text&lt;br /&gt;
 root@zero:~# more 2&lt;br /&gt;
 doch kein text&lt;br /&gt;
&lt;br /&gt;
Weitere Optionen:&lt;br /&gt;
 -b sichert Dateien, statt sie zu überschreiben &lt;br /&gt;
 -f Überschreibt bestehende, gleichnamige Dateien&lt;br /&gt;
 -i fragt vor dem Überschreiben nach Bestätigung&lt;br /&gt;
 -v ausführliche Meldungen&lt;br /&gt;
&lt;br /&gt;
==Prozesse==&lt;br /&gt;
===Was ist ein Prozess?===&lt;br /&gt;
Ein Prozess setzt sich aus zwei Teilen zusammen:&lt;br /&gt;
&lt;br /&gt;
1.Programm, das in den Hauptspeicher geladen wurde&lt;br /&gt;
&lt;br /&gt;
2.Prozessumgebung&lt;br /&gt;
&lt;br /&gt;
Unter einem Prozess versteht man ein Programm (binär), das in den Hauptspeicher&lt;br /&gt;
geladen wurde. Also nicht das Program selbst, das auf der Festplatte liegt ist der&lt;br /&gt;
Prozess, sondern es wird erst durch das Laden in den Hauptspeicher dazu.&lt;br /&gt;
Normalerweise liegt ein Programm als ausführbare Datei irgendwo auf der&lt;br /&gt;
Festplatte oder auf Diskette. Ob es sich bei dem Programm um eine binäre Datei&lt;br /&gt;
handelt, kann man mit dem Befehl '' file '' feststellen.&lt;br /&gt;
 &lt;br /&gt;
 root@zero:~# file /bin/mkdir&lt;br /&gt;
 /bin/mkdir: ELF 32-bit LSB executable, Intel 80386, version 1 (SYSV), dynamically linked (uses shared libs), for GNU/Linux 2.6.8, stripped&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Die Datei liegt im Maschinencode vor und kann in den Hauptspeicher geladen&lt;br /&gt;
werden. Sobald dies geschehen ist, kann der Rechner diesen Maschinencode&lt;br /&gt;
abarbeiten (ausführen).&lt;br /&gt;
&lt;br /&gt;
Da aber ein Programm nicht direkt auf die Hardware zugreifen soll, muss es vom&lt;br /&gt;
Betriebsystem kontrolliert werden. Das Betriebssystem liegt logisch gesehen&lt;br /&gt;
zwischen Hardware und Anwendung. Das Betriebssystem ordnet jedem Prozess&lt;br /&gt;
verschiedene Kenndaten zu, um die Prozesse verwalten zu können. Alle&lt;br /&gt;
Kenndaten, die einem Prozess zugeordnet sind, nennt man die&lt;br /&gt;
Prozessumgebung.Wenn man in der Shell ein Kommando eingibt, wird ein Prozess&lt;br /&gt;
kreiert. Natürlich ist die Shell selbst auch ein Prozess. Ein Prozess kann aber&lt;br /&gt;
genauso gut ein Serverprozess (Dienst) sein, z.B. Apache.&lt;br /&gt;
Ein wesentliches Merkmal eines Prozesses ist die Prozesskommunikation. Über im&lt;br /&gt;
Betriebssystem implementierte Methoden ist es möglich, dass verschiedene&lt;br /&gt;
Prozesse Signale und Daten untereinander austauschen können.&lt;br /&gt;
Dadurch wird auch dem Benutzer ermöglicht, einem Prozeß bestimmte Signale zu&lt;br /&gt;
senden bzw. auf den Status eines Prozesses Einfluss zu nehmen.&lt;br /&gt;
&lt;br /&gt;
===Prozesstabelle (Anzeige mit ps)===&lt;br /&gt;
Da zu jedem Prozess Kenndaten geführt werden, müssen diese auch irgendwo&lt;br /&gt;
festgehalten werden. Das geschieht in der sogenannten Prozesstabelle.&lt;br /&gt;
&lt;br /&gt;
Kenndaten der Prozesse (Auswahl):&lt;br /&gt;
* F Flags (z.B. ausgelagert; Systemprozess; Trace,...)&lt;br /&gt;
* UID Nutzer, mit dessen Rechten der Prozess ausgeführt wird&lt;br /&gt;
* PID Prozess - ID. Diese Nummer gibt eine eindeutige Prozess - Nummer&lt;br /&gt;
an. Sie wird vom System automatisch beim Starten des Prozesses&lt;br /&gt;
vergeben und ist für die Laufzeit eindeutig.&lt;br /&gt;
* PPID Prozessnumer der Eltern-Prozesses&lt;br /&gt;
* PRI Priorität eines Prozesses; je niedriger der Wert ist, desto besser&lt;br /&gt;
* NI ist der Nicewert des Prozesses; Nice erniedrigt den Grundwert&lt;br /&gt;
der Priorität des Prozesses und gibt damit Prozessorzeit für andere&lt;br /&gt;
Prozesse frei.&lt;br /&gt;
* SIZE Speichergröße des Prozesses inklusive Stack (eine Art Zwischenspeicher)&lt;br /&gt;
* RSS Verbrauch an physischen Speicher&lt;br /&gt;
* WCHAN ist der Name der Kernerlfunktion, in der der Prozess schläft&lt;br /&gt;
* STAT Status des Prozesses&lt;br /&gt;
R läuft       S schlafend     D nicht störbarer Schlaf&lt;br /&gt;
T angehalten  Z Zombie        W der Prozess belegt keine Seiten&lt;br /&gt;
* TIME Bisland benötigte Prozessorzeit&lt;br /&gt;
* SIZE ist die Größe von Text, Daten und Stack&lt;br /&gt;
* TTY die Nummer des kontrollierenden Teminal; wenn hier ein ? steht,&lt;br /&gt;
handelt es sich um einen Dämon oder Serverprozess.&lt;br /&gt;
* COMMAND Angabe des Prozesses selbst. Dies ist meist der Programmname.&lt;br /&gt;
&lt;br /&gt;
Weiteres&lt;br /&gt;
* GID Gruppe, unter der der Prozess läuft&lt;br /&gt;
* Verweis auf das aktuellen Arbeitsverzeichnis&lt;br /&gt;
* Um mit relativen Pfadangaben arbeiten zu können braucht man diesen Eintrag&lt;br /&gt;
* Tabelle mit Verweisen auf aktuell geöffnete Dateien&lt;br /&gt;
* 3 sind automatisch geöffnet Standardeingabe, Standardausgabe und&lt;br /&gt;
Standardfehlerkanal&lt;br /&gt;
&lt;br /&gt;
Beispiel&lt;br /&gt;
 root@zero:~# ps -l&lt;br /&gt;
 F S   UID   PID  PPID  C PRI  NI ADDR SZ WCHAN  TTY          TIME CMD&lt;br /&gt;
 4 R     0 18639 18631  0  80   0 -  1080 -      pts/0    00:00:00 bash&lt;br /&gt;
 0 R     0 25904 18639  0  80   0 -   635 -      pts/0    00:00:00 ps&lt;br /&gt;
&lt;br /&gt;
===Eltern und Kinder===&lt;br /&gt;
Jeder Prozess kann weitere Prozesse erzeugen. Die erzeugten Prozesse bezeichnet&lt;br /&gt;
man als Kindprozesse. Jeder Kindprozess weiß anhand der PID, woher er stammt.&lt;br /&gt;
&lt;br /&gt;
Alle Prozesse sind von einem anderen Prozess gestartet worden, mit Ausnahme&lt;br /&gt;
des Pseudoprozesses (noch im Kernel beim Starten erzeugter Prozess). Dieser hat&lt;br /&gt;
die Prozessnummer 0. Er hat die Aufgabe, den Init Prozess ( /sbin/init die Nummer&lt;br /&gt;
1) zu starten, der in System V alle anderen Prozesse direkt oder über seine Kind-&lt;br /&gt;
prozesse startet. (init wird konfiguriert durch die /etc/inittab)&lt;br /&gt;
&lt;br /&gt;
Es gibt zwei Arten wie ein Prozess gestartet werden kann:&lt;br /&gt;
&lt;br /&gt;
# Fork und Exec: Prozessumgebung wird dupliziert, der neue Prozess bekommt eine eigene neue PID&lt;br /&gt;
# Exec: Alter Prozess wird durch neuen Prozess überladen (geht mit dem shell-buildin exec)&lt;br /&gt;
&lt;br /&gt;
'''Rechte auf Objekte UID GID'''&lt;br /&gt;
Ob ein Prozess auf eine Datei zugreifen kann, entscheidet der Kernel anhand der&lt;br /&gt;
Zugriffssrechte, die auf der Datei gesetzt sind. Er checkt anhand der UID und GID&lt;br /&gt;
des Prozesses, ob es erlaubt ist. Mit dieser Technik wird letztendlich geprüft, was&lt;br /&gt;
ein User darf, und was nicht.&lt;br /&gt;
&lt;br /&gt;
===Rechenzeit und Priorität===&lt;br /&gt;
Da auch bei Prozessen eine Gerechtigkeit herschen muss, muss eine Instanz&lt;br /&gt;
darüber entscheiden wie lange ein Prozess Rechenzeit verbrauchen darf.&lt;br /&gt;
Folgende Kenndaten werden dazu benötigt&lt;br /&gt;
* clocktick = Zeiteinheit&lt;br /&gt;
* n = Faktor über den Kernel einstellbar&lt;br /&gt;
* slice = n &amp;lt;nowiki&amp;gt;*&amp;lt;/nowiki&amp;gt; clocktick&lt;br /&gt;
* agingtime = weitere Zeiteinheit über den Kernel einstellbar&lt;br /&gt;
&lt;br /&gt;
Es wird davon ausgegangen das der Prozess mit der niedrigsten Priorität gerade&lt;br /&gt;
rechnet. Pro clocktick erhöht sich die Priorität dieses Prozesses um eins.&lt;br /&gt;
&lt;br /&gt;
Jetzt können 3 Situationen eintreten die alle dazu führen das der Scheduler&lt;br /&gt;
aufgerufen wird.&lt;br /&gt;
&lt;br /&gt;
# Prozess blockiert wegen einer Ausgabe oder Eingabe.&lt;br /&gt;
# Gibt Rechenzeit freiwillig ab.&lt;br /&gt;
# Der Slice endet.&lt;br /&gt;
&lt;br /&gt;
Der Aufruf des Schedulers bewirkt das der Prozess mit der niedrigsten Priorität&lt;br /&gt;
gescheduled wird, er also nun rechnen darf. Nach Ablauf der agingtime werden&lt;br /&gt;
nun die Prozesse &amp;quot;gealtert&amp;quot;. Das geschieht nach folgender Formel&lt;br /&gt;
&lt;br /&gt;
Neue Priorität = Alte Priorität / 2 + Nicewert&lt;br /&gt;
&lt;br /&gt;
Der User hat die Möglichkeit, über den sogenannten Nicefaktor den Grundwert für&lt;br /&gt;
einen Prozess zu senken. Der Prozess braucht dann länger für seine Abarbeitung.&lt;br /&gt;
Er verhält sich somit netter zu den anderen Prozessen. Normale User können nur&lt;br /&gt;
netter werden, der Systemverwalter kann auch nicht netter (gemeiner) werden. Der&lt;br /&gt;
Bereich liegt zwischen 19 (sehr nett) bis 0 (weniger nett) für die User, und 19 bis&lt;br /&gt;
-20 für root.&lt;br /&gt;
&lt;br /&gt;
[[Image:pri.png]]&lt;br /&gt;
&lt;br /&gt;
'''Signale'''&lt;br /&gt;
&lt;br /&gt;
Mit den Kommando kill und killall kann man Prozessen Signale schicken&lt;br /&gt;
&lt;br /&gt;
 kill -Signalnummer PID &lt;br /&gt;
&lt;br /&gt;
Signalnummer&lt;br /&gt;
{| border=1 cellpadding=2&lt;br /&gt;
!Signalname&lt;br /&gt;
!Wert&lt;br /&gt;
!Aktion&lt;br /&gt;
|-&lt;br /&gt;
|SIGHUP&lt;br /&gt;
|1&lt;br /&gt;
|Neuinitialisierung eines Prozesses&lt;br /&gt;
|-&lt;br /&gt;
|SIGINT&lt;br /&gt;
|2&lt;br /&gt;
|Interrupt-Signal von der Tastatur (STRG+c)&lt;br /&gt;
|-&lt;br /&gt;
|SIGQUIT&lt;br /&gt;
|3&lt;br /&gt;
|Interrupt-Signal von der Tastatur (STRG+c) mit Dump&lt;br /&gt;
|-&lt;br /&gt;
|SIGKILL&lt;br /&gt;
|9&lt;br /&gt;
|unwiderrufliches Beendigungssignal (Töten)&lt;br /&gt;
|-&lt;br /&gt;
|SIGSEGV&lt;br /&gt;
|11&lt;br /&gt;
|Ungültige Speicherreferenz (bedeutet oft auf defekten Speicher)&lt;br /&gt;
|-&lt;br /&gt;
|SIGTERM &lt;br /&gt;
|15&lt;br /&gt;
|Beendigungssignal (geöffnete Dateien werden geschlossen)&lt;br /&gt;
|-&lt;br /&gt;
|SIGCONT &lt;br /&gt;
|18&lt;br /&gt;
|Weiterfahren, wenn gestoppt&lt;br /&gt;
|-&lt;br /&gt;
|SIGSTOP&lt;br /&gt;
|19&lt;br /&gt;
|Prozessstop&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Beispiel&lt;br /&gt;
 root@zero:~# kill -1 7562&lt;br /&gt;
&lt;br /&gt;
===Programme im Zusammenhang mit Prozessen===&lt;br /&gt;
* ps: Zeigt die Prozesse mit ihrem Status an&lt;br /&gt;
 root@zero:~# ps&lt;br /&gt;
  PID TTY          TIME CMD&lt;br /&gt;
 14134 pts/0    00:00:00 bash&lt;br /&gt;
 14149 pts/0    00:00:00 ps&lt;br /&gt;
&lt;br /&gt;
 root@zero:~# ps -elf | grep apache&lt;br /&gt;
 1 S root      5738     1  0  80   0 -  5461 select Jun16 ?        00:00:00 /usr/sbin/apache2 -k start&lt;br /&gt;
 5 S www-data  5739  5738  0  80   0 -  5581 inet_c Jun16 ?        00:00:00 /usr/sbin/apache2 -k start&lt;br /&gt;
 5 S www-data  5742  5738  0  80   0 -  5461 inet_c Jun16 ?        00:00:00 /usr/sbin/apache2 -k start&lt;br /&gt;
 5 S www-data  5743  5738  0  80   0 -  5461 inet_c Jun16 ?        00:00:00 /usr/sbin/apache2 -k start&lt;br /&gt;
 5 S www-data  5745  5738  0  80   0 -  5461 inet_c Jun16 ?        00:00:00 /usr/sbin/apache2 -k start&lt;br /&gt;
 5 S www-data  5746  5738  0  80   0 -  5461 inet_c Jun16 ?        00:00:00 /usr/sbin/apache2 -k start&lt;br /&gt;
 0 S root     14153 14134  0  80   0 -   837 pipe_w 16:59 pts/0    00:00:00 grep apache&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* nice: Lässt ein Programm mit verändertem Grundwert der Priorität laufen&lt;br /&gt;
 root@zero:~# nice&lt;br /&gt;
 0&lt;br /&gt;
 root@zero:~# nice -n 9 bash&lt;br /&gt;
 root@zero:~# nice&lt;br /&gt;
 9&lt;br /&gt;
 root@zero:~#&lt;br /&gt;
&lt;br /&gt;
* renice: Ändert den Grundwert der Priorität eines laufenden Prozesses&lt;br /&gt;
 root@zero:~# renice 10 5742&lt;br /&gt;
 5742: Alte Priorität: 0, neue Priorität: 10&lt;br /&gt;
&lt;br /&gt;
* top: Zeigt die Prozesse mit ihrem Status an (Abbrechen mit q)&lt;br /&gt;
 root@zero:~# top&lt;br /&gt;
&lt;br /&gt;
* pstree: Zeigt die Prozesse als Baumstruktur&lt;br /&gt;
 root@zero:~# pstree&lt;br /&gt;
 init─┬─NetworkManager&lt;br /&gt;
      ├─acpid&lt;br /&gt;
      ├─apache2───5*[apache2]&lt;br /&gt;
      ├─atd&lt;br /&gt;
      ├─bluetoothd&lt;br /&gt;
      ├─console-kit-dae───63*[{console-kit-dae}]&lt;br /&gt;
      ├─cron&lt;br /&gt;
      ├─cupsd&lt;br /&gt;
      ├─dbus-daemon&lt;br /&gt;
      ├─dd&lt;br /&gt;
      ├─gdm───gdm─┬─Xorg&lt;br /&gt;
      │           └─gdmgreeter&lt;br /&gt;
      ├─6*[getty]&lt;br /&gt;
      ├─hald───hald-runner─┬─hald-addon-acpi&lt;br /&gt;
      │                    ├─hald-addon-inpu&lt;br /&gt;
      │                    └─2*[hald-addon-stor]&lt;br /&gt;
      ├─klogd&lt;br /&gt;
      ├─nm-system-setti&lt;br /&gt;
      ├─nmbd&lt;br /&gt;
      ├─nscd───11*[{nscd}]&lt;br /&gt;
      ├─portmap&lt;br /&gt;
      ├─rpc.statd&lt;br /&gt;
      ├─slapd───2*[{slapd}]&lt;br /&gt;
      ├─smbd───smbd&lt;br /&gt;
      ├─sshd───sshd───bash───bash───pstree&lt;br /&gt;
      ├─syslogd&lt;br /&gt;
      ├─system-tools-ba&lt;br /&gt;
      ├─udevd&lt;br /&gt;
      ├─winbindd─┬─winbindd───winbindd&lt;br /&gt;
      │          └─3*[winbindd]&lt;br /&gt;
      └─wpa_supplicant&lt;br /&gt;
&lt;br /&gt;
===Jobs===&lt;br /&gt;
Unter einem Job versteht man ein Programm, welches man von der Shell gelöst&lt;br /&gt;
hat. D. h. man kann ganz normal weiter arbeiten und der Job verrichtet seinen&lt;br /&gt;
Dienst im Hintergrund. Man kann jederzeit zu diesem Job wieder Kontakt&lt;br /&gt;
aufnehmen.&lt;br /&gt;
&lt;br /&gt;
Ein Job kann auf 2 Arten gestarten werden:&lt;br /&gt;
&lt;br /&gt;
# Durch Anhängen des &amp;amp; Zeichens beim Programmstart&lt;br /&gt;
 root@zero:~# tail -f /var/log/messages &amp;amp;&lt;br /&gt;
 Jun 19 06:59:31 zero -- MARK --&lt;br /&gt;
 Jun 19 07:19:31 zero -- MARK --&lt;br /&gt;
 Jun 19 07:39:32 zero -- MARK --&lt;br /&gt;
 Jun 19 07:44:57 zero syslogd 1.5.0#5ubuntu3: restart.&lt;br /&gt;
 Jun 19 07:59:32 zero -- MARK --&lt;br /&gt;
 Jun 19 08:19:32 zero -- MARK --&lt;br /&gt;
 Jun 19 08:39:32 zero -- MARK --&lt;br /&gt;
 Jun 19 08:59:32 zero -- MARK --&lt;br /&gt;
 Jun 19 09:19:33 zero -- MARK --&lt;br /&gt;
 Jun 19 09:39:33 zero -- MARK --&lt;br /&gt;
 [3] 27421&lt;br /&gt;
&lt;br /&gt;
# Durch Stoppen des Prozesses durch Drücken von Strg-Z und in den Hintergrund schicken mit %n (n ist die Jobnummer)&lt;br /&gt;
 root@zero:~# watch cat /proc/cpuinfo&lt;br /&gt;
 Strg-Z&lt;br /&gt;
 [4]+  Stopped                 watch cat /proc/cpuinfo&lt;br /&gt;
 root@zero:~# bg %4&lt;br /&gt;
 [4]+ watch cat /proc/cpuinfo &amp;amp;&lt;br /&gt;
&lt;br /&gt;
Anweisungen im Zusammenhang mit Jobs (n ist die Jobnummer)&lt;br /&gt;
* bg %n : Einen Job in den Hintergrund stellen (wie oben)&lt;br /&gt;
* fg %n : Einen Job in den Vordergrund holen&lt;br /&gt;
 root@zero:~# fg %4&lt;br /&gt;
 watch cat /proc/cpuinfo&lt;br /&gt;
&lt;br /&gt;
* jobs : Aktive Jobs ausgeben&lt;br /&gt;
&lt;br /&gt;
 root@zero:~# jobs&lt;br /&gt;
 [1]   Running                 tail -f /var/log/syslog &amp;amp;&lt;br /&gt;
 [2]   Running                 tail -f /var/log/syslog &amp;amp;&lt;br /&gt;
 [3]-  Running                 tail -f /var/log/messages &amp;amp;&lt;br /&gt;
 [4]+  Stopped                 watch cat /proc/cpuinfo&lt;br /&gt;
&lt;br /&gt;
* Strg-Z : Einen Vordergrund-Job vorübergehend anhalten&lt;br /&gt;
* kill -STOP %n : Unterbricht Job im Hintergrund&lt;br /&gt;
 root@zero:~# kill -STOP %1&lt;br /&gt;
 root@zero:~# jobs&lt;br /&gt;
 [1]+  '''Stopped'''                 tail -f /var/log/syslog&lt;br /&gt;
 [2]   Running                 tail -f /var/log/syslog &amp;amp;&lt;br /&gt;
 [3]   Running                 tail -f /var/log/messages &amp;amp;&lt;br /&gt;
 [4]-  Stopped                 watch cat /proc/cpuinfo&lt;br /&gt;
* kill -CONT %n : Setzt den unterbrochenen Job im Hintergrund fort&lt;br /&gt;
root@zero:~# kill -CONT %1&lt;br /&gt;
root@zero:~# jobs&lt;br /&gt;
 [1]+  '''Running'''                 tail -f /var/log/syslog &amp;amp;&lt;br /&gt;
 [2]   Running                 tail -f /var/log/syslog &amp;amp;&lt;br /&gt;
 [3]   Running                 tail -f /var/log/messages &amp;amp;&lt;br /&gt;
 [4]-  Stopped                 watch cat /proc/cpuinfo&lt;br /&gt;
* kill -KILL %n : Tötet Job im Hintergrund&lt;br /&gt;
 root@zero:~# kill -KILL %1&lt;br /&gt;
 root@zero:~# jobs&lt;br /&gt;
 [1]+  '''Killed'''                  tail -f /var/log/syslog&lt;br /&gt;
 [2]   Running                 tail -f /var/log/syslog &amp;amp;&lt;br /&gt;
 [3]   Running                 tail -f /var/log/messages &amp;amp;&lt;br /&gt;
 [4]-  Stopped                 watch cat /proc/cpuinfo&lt;br /&gt;
 root@zero:~# jobs&lt;br /&gt;
 [2]   Running                 tail -f /var/log/syslog &amp;amp;&lt;br /&gt;
 [3]-  Running                 tail -f /var/log/messages &amp;amp;&lt;br /&gt;
 [4]+  Stopped                 watch cat /proc/cpuinfo&lt;br /&gt;
&lt;br /&gt;
Bedingungen, die zu Jobausführung eingehalten werden sollen:&lt;br /&gt;
* Der Job soll nicht auf den Bildschirm schreiben (Standardausgabe +Standardfehlerkanal).&lt;br /&gt;
* Er soll keine Eingaben vom Benutzer erwarten.&lt;br /&gt;
&lt;br /&gt;
==Suchen von Dateien==&lt;br /&gt;
===find===&lt;br /&gt;
 find ab_wo_wird_gesucht was_wird_gesucht aktion&lt;br /&gt;
 find [Pfad] [Bedingung] [Aktion]&lt;br /&gt;
&lt;br /&gt;
====Nach Namen====&lt;br /&gt;
 find [Pfad] '''-name''' [Name]&lt;br /&gt;
 &lt;br /&gt;
Finde alle Dateien mit Namen test ab dem Verzeichnis /home und gebe diese Zeilenweise aus&lt;br /&gt;
 root@zero:~# find /home -name test -print&lt;br /&gt;
 /home/xinux/test&lt;br /&gt;
 /home/test&lt;br /&gt;
&lt;br /&gt;
Wie oben, jedoch mit Namensanfang test&lt;br /&gt;
 root@zero:/home/xinux# find /home -name 'test*'&lt;br /&gt;
 /home/xinux/testdatei&lt;br /&gt;
 /home/xinux/test&lt;br /&gt;
 /home/test&lt;br /&gt;
&lt;br /&gt;
====Nach Benutzer(Eigentümer)====&lt;br /&gt;
 root@zero:/tmp# find /tmp/ '''-user''' xinux&lt;br /&gt;
 /tmp/datei&lt;br /&gt;
&lt;br /&gt;
====Nach Gruppe====&lt;br /&gt;
 root@zero:/tmp# find /tmp/ '''-group''' hacker&lt;br /&gt;
 /tmp/datei3&lt;br /&gt;
 /tmp/datei2&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
====Nach Typ====&lt;br /&gt;
Es wird nach Dateien anhand Ihrer Art gesucht:&lt;br /&gt;
 find [Pfad] '''-type''' [Typ] &lt;br /&gt;
Typ:&lt;br /&gt;
* f: Normale Dateien&lt;br /&gt;
 root@zero:~# find /tmp/ -type f&lt;br /&gt;
 /tmp/mbr.img&lt;br /&gt;
 /tmp/datei&lt;br /&gt;
 /tmp/zeugs&lt;br /&gt;
 /tmp/.X0-lock&lt;br /&gt;
* d: Verzeichnisse&lt;br /&gt;
 root@zero:~# find /var/log -type d&lt;br /&gt;
 /var/log&lt;br /&gt;
 /var/log/apache2&lt;br /&gt;
 /var/log/unattended-upgrades&lt;br /&gt;
 /var/log/apparmor&lt;br /&gt;
 /var/log/ConsoleKit&lt;br /&gt;
 /var/log/dist-upgrade&lt;br /&gt;
 /var/log/dist-upgrade/20090526-1052&lt;br /&gt;
 /var/log/cups&lt;br /&gt;
 /var/log/apt&lt;br /&gt;
 /var/log/fsck&lt;br /&gt;
 /var/log/samba&lt;br /&gt;
 /var/log/samba/cores&lt;br /&gt;
 /var/log/samba/cores/smbd&lt;br /&gt;
 /var/log/samba/cores/nmbd&lt;br /&gt;
 /var/log/samba/cores/winbindd&lt;br /&gt;
 /var/log/installer&lt;br /&gt;
 /var/log/gdm&lt;br /&gt;
 /var/log/news&lt;br /&gt;
* c: Char Devices (Zeichenorientierte Gerätedatei)&lt;br /&gt;
 root@zero:~# find / -type c&lt;br /&gt;
 /lib/udev/devices/kmem&lt;br /&gt;
 /lib/udev/devices/null&lt;br /&gt;
 /lib/udev/devices/console&lt;br /&gt;
 /lib/udev/devices/ppp&lt;br /&gt;
 /lib/udev/devices/net/tun&lt;br /&gt;
* b: Block Devices (Blockorientierte Gerätedatei)&lt;br /&gt;
* p: Benannte Pipe&lt;br /&gt;
* l: Links&lt;br /&gt;
* s: Sockets&lt;br /&gt;
&lt;br /&gt;
====Nach Modifikation====&lt;br /&gt;
Listet alle Dateien in /etc auf, die innerhalb von zwei Tagen modifiziert wurden&lt;br /&gt;
 root@zero:/var/log# find /etc/ -mtime 2 -print&lt;br /&gt;
 /etc/apache2&lt;br /&gt;
 /etc/apache2/mods-available&lt;br /&gt;
 /etc/apache2/conf.d&lt;br /&gt;
 /etc/apache2/sites-available&lt;br /&gt;
 /etc/bash_completion.d&lt;br /&gt;
 /etc/blkid.tab.old&lt;br /&gt;
 /etc/firefox-3.0/profile&lt;br /&gt;
 /etc/firefox-3.0/profile/chrome&lt;br /&gt;
 /etc/firefox-3.0/pref&lt;br /&gt;
 /etc/profile.d&lt;br /&gt;
 /etc/ufw/applications.d&lt;br /&gt;
 /etc/logrotate.d&lt;br /&gt;
 /etc/xulrunner-1.9&lt;br /&gt;
 /etc/blkid.tab&lt;br /&gt;
 /etc/cron.daily&lt;br /&gt;
 /etc/alternatives&lt;br /&gt;
 /etc/alternatives/x-www-browser&lt;br /&gt;
 /etc/alternatives/xulrunner&lt;br /&gt;
 /etc/gre.d&lt;br /&gt;
 /etc/hal/fdi/policy&lt;br /&gt;
 /etc/dbus-1/system.d&lt;br /&gt;
 /etc/udev/rules.d&lt;br /&gt;
&lt;br /&gt;
====Nach Größe====&lt;br /&gt;
Finde Dateien in /tmp, die größer als 100 MByte sind&lt;br /&gt;
 root@zero:/tmp# find /tmp/ -size +100M&lt;br /&gt;
 /tmp/datei&lt;br /&gt;
&lt;br /&gt;
Finde Dateien in /tmp, die kleiner als 100 KByte sind&lt;br /&gt;
 root@zero:/tmp# find /tmp/ -size -100k&lt;br /&gt;
 /tmp/&lt;br /&gt;
 /tmp/datei3&lt;br /&gt;
 /tmp/backup &lt;br /&gt;
 /tmp/datei2&lt;br /&gt;
 /tmp/.winbindd &lt;br /&gt;
 /tmp/.winbindd/pipe&lt;br /&gt;
 /tmp/mbr.img&lt;br /&gt;
 /tmp/zeugs&lt;br /&gt;
 /tmp/.ICE-unix&lt;br /&gt;
 /tmp/.X0-lock&lt;br /&gt;
 /tmp/datei1&lt;br /&gt;
 /tmp/.X11-unix&lt;br /&gt;
 /tmp/.X11-unix/X0&lt;br /&gt;
 /tmp/pulse-PKdhtXMmr18n&lt;br /&gt;
&lt;br /&gt;
====Nach Berechtigungen====&lt;br /&gt;
Finde Dateien in Home mit der Berechtigung 777 (-rwxrwxrwx)&lt;br /&gt;
 root@zero:/var# find /home/ -perm 777&lt;br /&gt;
 /home/samba&lt;br /&gt;
 /home/xinux/Examples&lt;br /&gt;
 /home/xinux/.pulse/1f0763ee4cf4c7e1d3c07fd149dda37b:runtime&lt;br /&gt;
 /home/test/Examples&lt;br /&gt;
&lt;br /&gt;
===locate===&lt;br /&gt;
Locate arbeitet über einen Index, der erstellt und aktualisiert werden muss. Aus diesem Grund kann locate teilweise nicht &lt;br /&gt;
akutell sein. Es ist immer schneller als find und es durchsucht immer das ganze Dateisystem. &lt;br /&gt;
 locate [Dateiname]&lt;br /&gt;
 &lt;br /&gt;
Lokalisiere die Datei wvdial.conf. Anmerkung: Der Stern wird beim Suchen automatisch hinzugefügt. Entspricht also&lt;br /&gt;
wvidal.conf*&lt;br /&gt;
 root@zero:~# locate wvdial.conf&lt;br /&gt;
 /etc/wvdial.conf&lt;br /&gt;
 /usr/share/man/man5/wvdial.conf.5.gz&lt;br /&gt;
 /var/lib/dpkg/info/wvdial.conffiles&lt;br /&gt;
 /var/lib/dpkg/info/wvdial.config&lt;br /&gt;
&lt;br /&gt;
Lokalisiere die Datei wvdial.conf und nur diese&lt;br /&gt;
 root@zero:~# locate -b '\wvdial.conf'&lt;br /&gt;
 /etc/wvdial.conf&lt;br /&gt;
&lt;br /&gt;
Aktualisieren des Indexes&lt;br /&gt;
 root@zero:~# updatedb&lt;br /&gt;
&lt;br /&gt;
==Wie wird ein Kommando lokalisiert==&lt;br /&gt;
Wenn die Shell alle Ersetzungen in der Kommandozeile vorgenommen und alle Umleitungen vorbereitet hat, ist der Zeitpunkt &lt;br /&gt;
gekommen, auf den der Anwender die ganze Zeit gewartet hat. Die Shell versucht das Kommando auszuführen. Dazu muss sie &lt;br /&gt;
es aber erst lokalisieren. Das erste passende Kommando wird ausgeführt.&lt;br /&gt;
&lt;br /&gt;
Als Kommandoname wird immer das erste Wort eines einfachen Kommandos erkannt. Ein Kommandoname kann mit Pfadnamen in &lt;br /&gt;
einem Verzeichnis (absolut oder relativ) angegeben werden. Die Shell erkennt dies an (mindestens) einem Slash `/' &lt;br /&gt;
im Kommandonamen. Wenn kein Verzeichnis angegeben ist, versucht die Shell selbst, das Kommando zu finden. Dazu wird &lt;br /&gt;
der Kommandoname zuerst in der Hashtabelle gesucht, dann wird er mit den Synonymen, mit den Scriptfunktionen und &lt;br /&gt;
schließlich mit den Shellfunktionen verglichen. &lt;br /&gt;
&lt;br /&gt;
Wird auf diese Weise kein Programm dieses Namens gefunden, werden alle in der PATH-Umgebungsvariablen aufgeführten &lt;br /&gt;
Verzeichnisse nach einer ausführbaren Datei dieses Namens durchsucht. Wird auch hier kein passendes Kommando gefunden, &lt;br /&gt;
gibt die Shell eine Fehlermeldung aus.&lt;br /&gt;
&lt;br /&gt;
===which und type===&lt;br /&gt;
====which====&lt;br /&gt;
which gibt die vollen Pfadnamen der Dateien aus, die bei Benutzung des angegebenen Befehls ausgeführt werden würden.&lt;br /&gt;
&lt;br /&gt;
 which [-a] Dateiname &lt;br /&gt;
&lt;br /&gt;
Optionen:&lt;br /&gt;
&lt;br /&gt;
* -a : Alle Treffer ausgeben, nicht nur den ersten&lt;br /&gt;
* --skip-dot : Verzeichnisse, die mit einem Punkt beginnen, auslassen&lt;br /&gt;
&lt;br /&gt;
Beispiel&lt;br /&gt;
 root@zero:~# which startx&lt;br /&gt;
 /usr/bin/startx&lt;br /&gt;
&lt;br /&gt;
====type====&lt;br /&gt;
Anzeigen der absoluten Pfadnamen von Befehlen, und ob sich diese Befehle in der Hash-Tabelle der aktuellen&lt;br /&gt;
Shell befinden.&lt;br /&gt;
&lt;br /&gt;
 type [Optionen] Befehle&lt;br /&gt;
&lt;br /&gt;
Beispiel&lt;br /&gt;
 root@zero:~# type ls&lt;br /&gt;
 ls is aliased to `ls --color=auto'&lt;br /&gt;
&lt;br /&gt;
Optionen:&lt;br /&gt;
&lt;br /&gt;
* -a : Alle vorkommenden Befehle werden ausgegeben, nicht nur das, welches aufgerufen werden würde&lt;br /&gt;
 root@zero:~# type '''-a''' ls&lt;br /&gt;
 ls is aliased to `ls --color=auto'&lt;br /&gt;
 ls is /bin/ls&lt;br /&gt;
&lt;br /&gt;
* -p : Anzeigen des Eintrags von Befehl in der Hash-Tabelle. Dieser Wert kann sich vom ersten Auftreten des Befehls in PATH&lt;br /&gt;
unterscheiden&lt;br /&gt;
 root@zero:~# type '''-p''' apache2&lt;br /&gt;
 /usr/sbin/apache2&lt;br /&gt;
&lt;br /&gt;
* -t : Anzeigen, ob Befehl ein Aliasname, ein Schlüsselwort, eine Funktion, ein eingebauter Befehl oder eine Datei ist&lt;br /&gt;
 root@zero:~# type '''-t''' apache2&lt;br /&gt;
 file&lt;/div&gt;</summary>
		<author><name>192.168.178.46</name></author>
	</entry>
	<entry>
		<id>https://www.xinux.net/index.php?title=Linux_Grundlagen&amp;diff=75</id>
		<title>Linux Grundlagen</title>
		<link rel="alternate" type="text/html" href="https://www.xinux.net/index.php?title=Linux_Grundlagen&amp;diff=75"/>
		<updated>2009-07-07T10:43:53Z</updated>

		<summary type="html">&lt;p&gt;192.168.178.46: /* Daten */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Einführung==&lt;br /&gt;
===Geschichte Unix===&lt;br /&gt;
====1969====&lt;br /&gt;
Am Anfang von Linux steht Multics, ein von Bell Laboratories geschaffenes &amp;quot;Betriebssystem&amp;quot;, &lt;br /&gt;
das noch mit Lochkarten arbeitete. Multics wird mit Unterstützung von AT&amp;amp;T und Western &lt;br /&gt;
Electric unter Mitarbeit von Ken Thompson und Dennis Ritchie weiterentwickelt. Obwohl sich &lt;br /&gt;
Bell Laboratories bald zurückzieht, gibt Thompson das Projekt nicht auf.  Zum Entwicklerteam &lt;br /&gt;
gehören auch Rudd Canaday und Brian Kernighan. Letzterer gibt 1970 dem Betriebssystem den Namen UNIX. &lt;br /&gt;
Thompson definiert 7 Richtlinien für UNIX:&lt;br /&gt;
 &lt;br /&gt;
# Hierarchische Anordnung der Dateisysteme&lt;br /&gt;
# Die Ausgabe von Daten an die Peripherie(-geräte) und Dateien soll gleich sein.&lt;br /&gt;
# Prozesse und Programme sollen miteinander kommunizieren.&lt;br /&gt;
# Multitasking (voneinander getrennte Prozesse)&lt;br /&gt;
# Persönliche Shell's&lt;br /&gt;
# Der Compiler soll für viele Programmiersprachen tauglich sein.&lt;br /&gt;
# Portabilität&lt;br /&gt;
&lt;br /&gt;
====1971====&lt;br /&gt;
Bis 1971 ist das für eine DEC PDP-7 geschriebene Unix als Version 1 auf eine PDP-11 portiert. Bis&lt;br /&gt;
zur Version 4 entwickelt Ritchie die Programmier- (Hoch-) Sprache C. Das in Assembler geschriebene&lt;br /&gt;
Unix wird fast völlig nach C übersetzt, wodurch zum erstenmal die geforderte Hardware-Unabhängigkeit&lt;br /&gt;
des Betriebssystems realisiert werden kann.&lt;br /&gt;
&lt;br /&gt;
====1975====&lt;br /&gt;
Da AT&amp;amp;T aufgrund vertraglicher Bindungen mit der US-Bundesregierung Unix nicht kommerziell vermarkten darf, stellt sie den Source Code für ein paar hundert Dollar den Universitäten, Lehr- und Forschungsanstalten zur Verfügung. Dies führt zu einer sehr dynamischen Entwicklung von Unix. 1975 wird die Version 6 als erstes UNIX-System veröffentlicht, die darauffolgende Version 7 wird sehr erfolgreich. Da es keine Standardisierung gibt, entwickeln bald verschiedenste Firmen ihr eigenes UNIX. Ab 1984 wird AT&amp;amp;T per Gerichtsbeschluss erlaubt, Unix zu vermarkten. AT&amp;amp;T verkauft sein Unix V und beginnt, sich um einen internationalen Standard von UNIX zu bemühen. &lt;br /&gt;
&lt;br /&gt;
====1984====&lt;br /&gt;
Durch Richard Stallman wird die Free Software Foundation (FSF) gegründet. Diese initiiert ein Projekt namens GNU (GNU ist Not Unix), welches das Ziel verfolgt, ein freies UNIX System zu schaffen. &lt;br /&gt;
&lt;br /&gt;
====1987====&lt;br /&gt;
AT&amp;amp;T verbietet die Verwendung des Unix Quellcodes an den Universitäten. Während dieser Zeit ist Andrew (Andy) Tannenbaum Professor an der Freien Universität von Amsterdam und entwickelt Minix. Minix ist ein kostengünstiges Lehrbetriebssystem und kommt ohne jeglichen AT&amp;amp;T Code aus, obwohl es die gleiche Funktionalität wie Unix 7 bietet. Im Usenet unter comp.os.minix entsteht eine Minix-Gemeinde, die den Minix Kernel und die Anwendungen rundherum programmiert und verbessert.&lt;br /&gt;
&lt;br /&gt;
====1991====&lt;br /&gt;
Linus Torvalds hat als Student für Computerwissenschaften an der Universität in Helsinki Minix installiert und das Buch von Andy Tannenbaum gelesen. Er beginnt im Sinne der FSF einen Unix ähnlichen Kernel zu programmieren mit der Idee, &amp;quot;ein besseres Minix als Minix&amp;quot; zu bauen. 1992 stellt er die Version 0.02 mit dem Namen Linux der Internetgemeinde zur Verfügung. &lt;br /&gt;
&lt;br /&gt;
====1994====&lt;br /&gt;
Die Linux Version 1.0 wird freigegeben. Das Linux Fieber beginnt... &lt;br /&gt;
&lt;br /&gt;
====1998====&lt;br /&gt;
Der Kreis der Linux Entwickler und Anwender ist kräftig angeschwollen. KDE 1.0 wird veröffentlicht. Die Zuwachsraten von Linux übertreffen die von Windows NT deutlich. &lt;br /&gt;
&lt;br /&gt;
====1999====&lt;br /&gt;
Der lange erwartete stabile Linux Kernel Version 2.2 wird freigegeben. Namhafte Firmen wie IBM kündigen ihre Unterstützung für Linux an. &lt;br /&gt;
&lt;br /&gt;
====2001====&lt;br /&gt;
Der lange erwartete stabile Linux Kernel Version 2.4 wird freigegeben. USB Unterstützung und eine neue Firewallimplementierung zeichnen ihn aus.&lt;br /&gt;
&lt;br /&gt;
====2003====&lt;br /&gt;
Linux Kernel Version 2.6 wird freigegeben. Am auffälligsten sind Änderungen bei der Modulverwaltung.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Distributionen===&lt;br /&gt;
{| Border=1 Cellpadding=2&lt;br /&gt;
| &lt;br /&gt;
|Url&lt;br /&gt;
|Paketformat&lt;br /&gt;
|-&lt;br /&gt;
|Red Hat&lt;br /&gt;
|www.redhat.com&lt;br /&gt;
|rpm&lt;br /&gt;
|-&lt;br /&gt;
|fedora&lt;br /&gt;
|fedora.redhat.com&lt;br /&gt;
|rpm&lt;br /&gt;
|-&lt;br /&gt;
|CentOS&lt;br /&gt;
|www.centos.org&lt;br /&gt;
|rpm&lt;br /&gt;
|-&lt;br /&gt;
|Suse/openSUSE&lt;br /&gt;
|www.opensuse.org&lt;br /&gt;
|rpm&lt;br /&gt;
|-&lt;br /&gt;
|Debian&lt;br /&gt;
|www.debian.org&lt;br /&gt;
|deb&lt;br /&gt;
|-&lt;br /&gt;
|Ubuntu&lt;br /&gt;
|www.ubuntu.com&lt;br /&gt;
|deb&lt;br /&gt;
|-&lt;br /&gt;
|Mandrake&lt;br /&gt;
|www.linux-mandrake.com&lt;br /&gt;
|rpm&lt;br /&gt;
|-&lt;br /&gt;
|Easy Linux&lt;br /&gt;
|www.easy-linux.de&lt;br /&gt;
|rpm&lt;br /&gt;
|-&lt;br /&gt;
|Turbo&lt;br /&gt;
|www.turbolinux.com&lt;br /&gt;
|rpm&lt;br /&gt;
|-&lt;br /&gt;
|minis&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|toms&lt;br /&gt;
|www.toms.net/rb&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|damn small linux&lt;br /&gt;
|www.damnsmalllinux.org&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|pocket-linux&lt;br /&gt;
|www.pocket-linux.org&lt;br /&gt;
|&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
====Bücher====&lt;br /&gt;
 Titel : Das Linux Anwenderhandbuch und Leitfaden für die Systemverwaltung&lt;br /&gt;
 Autor : Sebastian Hetze, Dirk Hohndel, Olaf Kirch und Martin Müller&lt;br /&gt;
 Verlag: Lunetix&lt;br /&gt;
 ISBN : 3-929764-06-7&lt;br /&gt;
&lt;br /&gt;
 Titel : Linux in a Nutshell&lt;br /&gt;
 Autor : Jessica Perry Hekman und die Mitarbeiter von O'Reilly &amp;amp; Associates&lt;br /&gt;
 Verlag: O'Reilly&lt;br /&gt;
 ISBN : 3-930673-57-6&lt;br /&gt;
&lt;br /&gt;
 Titel : Linux - Wegweiser zur Installation und Konfiguration&lt;br /&gt;
 Autor : Matt Welsh, Lar Kaufman, Matthias Kalle Dallheimer&lt;br /&gt;
 Verlag: O'Reilly&lt;br /&gt;
 ISBN : 3-930673-58-4 (deutsch), 1-56592-469-X (englisch)&lt;br /&gt;
&lt;br /&gt;
 Titel : Linux - Installation, Konfiguration, Anwendung&lt;br /&gt;
 Autor : Michael KoflerMultitasking&lt;br /&gt;
 Verlag: Addison-Wesley&lt;br /&gt;
 ISBN : 3-8273-1475-5&lt;br /&gt;
&lt;br /&gt;
 Titel : Linux - Wegweiser für Netzwerker&lt;br /&gt;
 Autor : Olaf Kirch&lt;br /&gt;
 Verlag: O'Reilly&lt;br /&gt;
 ISBN : 3-930673-18-5&lt;br /&gt;
&lt;br /&gt;
 Titel : TCP/IP-Netzwerk-Administration&lt;br /&gt;
 Autor : Craig Hunt&lt;br /&gt;
 Verlag: O'Reilly&lt;br /&gt;
 ISBN : 3-89721-110-6&lt;br /&gt;
&lt;br /&gt;
 Titel : Essential System Administration&lt;br /&gt;
 Autor : Eleen Frisch&lt;br /&gt;
 Verlag: O'Reilly&lt;br /&gt;
 ISBN : 1-56592-127-5&lt;br /&gt;
&lt;br /&gt;
==Betriebssystem==&lt;br /&gt;
===Was ist ein Betriebssystem?===&lt;br /&gt;
&lt;br /&gt;
Ein Betriebssystem liegt logisch gesehen zwischenAnwendungsprogramm und Hardware.&lt;br /&gt;
&lt;br /&gt;
Es nimmt die Anforderungen der Anwendungsprogramme entgegen und leitet&lt;br /&gt;
diese kontrolliert an die Hardware weiter. Kein Anwendungsprogramm sollte&lt;br /&gt;
direkt auf die Hardware zugreifen können. Den zentralen Zugang schafft einzig&lt;br /&gt;
das Betriebssystem. Somit kann das Betriebssystem unsinnige Anforderungen&lt;br /&gt;
oder Bedienungsfehler abblocken.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Image:Linux.jpg]]&lt;br /&gt;
&lt;br /&gt;
===Aufgaben eines Betriebssystems===&lt;br /&gt;
&lt;br /&gt;
# Verbergen der Komplexität der Maschine vor dem Anwender (Abstraktion)&lt;br /&gt;
# Bereitstellen einer Benutzerschnittstelle (&amp;quot;Kommandointerpreter&amp;quot;, &amp;quot;Shell&amp;quot;)&lt;br /&gt;
# Bereitstellen einer normierten Programmierschnittstelle (API)&lt;br /&gt;
# Verwaltung der Ressourcen der Maschine::&lt;br /&gt;
Hauptspeicher&lt;br /&gt;
Prozessor(en)&lt;br /&gt;
Hintergrundspeicher (Platte, Band, etc.)&lt;br /&gt;
Geräte (Terminal, Drucker, Plotter, etc.)&lt;br /&gt;
Rechenzeit&lt;br /&gt;
Koordination von Prozessen&lt;br /&gt;
&lt;br /&gt;
===Aufbau eines Betriebssystems===&lt;br /&gt;
&lt;br /&gt;
Ein Rechensystem besteht aus Hardware, Systemprogrammen und Anwendungs-&lt;br /&gt;
programmen. Unter einem Betriebssystem wird meist die Summe aus Betriebs-&lt;br /&gt;
systemkern (Kernel) und den wichtigsten Systemprogrammen verstanden. Ein&lt;br /&gt;
minimaler LINUX-Kernel besitzt ungefähr eine Größe von 400 - 800 kByte.&lt;br /&gt;
Weitere wichtige Systemkomponenten benötigen zusätzlich 10 - 100 Mbyte&lt;br /&gt;
Plattenplatz.&lt;br /&gt;
&lt;br /&gt;
Ein Betriebssystem stellt den Rechner als erweiterte Maschine (virtuelle&lt;br /&gt;
Maschine) über definierte Software-Schnittstellen zur Verfügung.&lt;br /&gt;
Das Betriebssystem dient als Betriebsmittelverwalter, der Anforderungen&lt;br /&gt;
befriedigt, protokolliert, abrechnet und vermittelt.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Aufgaben des Betriebssystemkerns:&lt;br /&gt;
&lt;br /&gt;
{| Border=1 Cellpadding=2&lt;br /&gt;
|Prozessverwaltung  (dispatching and scheduling)&lt;br /&gt;
| Mehrere Benutzer können mit mehreren Aktionen gleichzeitig im System arbeiten, ohne sich gegenseitig zu beeinflussen. Damit dies möglich ist,  müssen die Aktionen organisiert, koordiniert und verwaltet werden. Die zu verwaltende Einheit nennt man Prozess.&lt;br /&gt;
|-&lt;br /&gt;
|Speicherverwaltung   (memory management)&lt;br /&gt;
|Zuteilen von Speicherbereichen an laufende Prozesse, Schutz der Speicherbereiche vor unbefugten Zugriffen, bei Speicherengpässen: Auslagern von ganzen (swapping) oder von Teilen (paging) von Prozessen auf die Platte (swap file).&lt;br /&gt;
|-&lt;br /&gt;
|Dateiverwaltung  (file handling)&lt;br /&gt;
|Zuteilung von Plattenplatz für Programme, Benutzer und Systemdienste, Schreiben, Lesen und Strukturieren der Daten auf den Massenspeichern; Durch Bereitstellung einer entsprechenden Schnittstelle (VFS, virtual file system) kann der Kern Dateisysteme unterschiedlichster Art (EXT2, FAT, NFS, HPFS, NTFS, ...) ansprechen.&lt;br /&gt;
|-&lt;br /&gt;
|Geräteverwaltung  (resource management)&lt;br /&gt;
|Der Kern ermöglicht und kontrolliert den Zugriff auf die Hardware. Er steuert die Ein- und Ausgabetätigkeiten der Anwender. An den Kern&lt;br /&gt;
gebunden sind die entsprechenden Gerätetreiber (device driver), die damit eine Kommunikation zwischen Kern und Hardware ermöglichen.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
===Multitasking===&lt;br /&gt;
&lt;br /&gt;
Multitasking bedeutet, dass ein Rechner aus Anwendersicht mehrere Aufgaben&lt;br /&gt;
(Tasks) gleichzeitg übernehmen kann. Das Betriebssystem (OS) unterteilt die&lt;br /&gt;
gleichzeitig anstehenden Aufgaben in Einzelarbeitsschritte (Prozesse) und&lt;br /&gt;
managed durch ein Zeitscheibenverfahren (scheduling) die gleichmäßige&lt;br /&gt;
Abarbeitung der Prozesse.&lt;br /&gt;
&lt;br /&gt;
Es wird unterschieden zwischen:&lt;br /&gt;
&lt;br /&gt;
*non-präamptiven (kooperativen=die Ressourcen werden vom aktiven Prozess freigegeben, bei einem Hänger steht das ganze System)&lt;br /&gt;
&lt;br /&gt;
und&lt;br /&gt;
&lt;br /&gt;
*präamptiven (reinem=der Betriebssystemkern steuert Taskwechsel, indem nach einer festgelegten Zeit vom gerade aktiven Prozess zum nächsten weitergeschaltet wird)&lt;br /&gt;
&lt;br /&gt;
===Mehrprozessorbetrieb===&lt;br /&gt;
&lt;br /&gt;
Bei mehreren Prozessoren und Unterstützung durch das OS&lt;br /&gt;
(NT,Linux,Unix,Novell) können mehrere Tasks auf diese verteilt werden und&lt;br /&gt;
gleichzeitig bearbeitet werden. Nachteilig ist, dass dies nicht oder kaum von&lt;br /&gt;
Anwendungsprogrammen unterstützt wird und es zu Kommunikationsproblemen&lt;br /&gt;
zwischen den einzelnen Tasks kommen kann.&lt;br /&gt;
&lt;br /&gt;
===Arten von von Betriebssystemen===&lt;br /&gt;
&lt;br /&gt;
{|Border=1 Cellpadding=2&lt;br /&gt;
|&lt;br /&gt;
|SingleUser  &lt;br /&gt;
|Multiuser&lt;br /&gt;
|-&lt;br /&gt;
|Single Tasking&lt;br /&gt;
|MS - DOS&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|Multi Tasking&lt;br /&gt;
|Windows 3.x&lt;br /&gt;
|UNIX&lt;br /&gt;
|-&lt;br /&gt;
|&lt;br /&gt;
|Windows 95/98&lt;br /&gt;
|Linux&lt;br /&gt;
|-&lt;br /&gt;
|&lt;br /&gt;
|Windows NT4 ohne Erweiterungen&lt;br /&gt;
|VMS&lt;br /&gt;
|-&lt;br /&gt;
|&lt;br /&gt;
|OS/2 &lt;br /&gt;
|Windows NT mit  Erweiterungen&lt;br /&gt;
|-&lt;br /&gt;
|&lt;br /&gt;
|Apple&lt;br /&gt;
|Windows 2000, XP, 2003&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
===SHELL===&lt;br /&gt;
&lt;br /&gt;
Wenn man mit Linux arbeiten will, kann man nicht direkt mit dem Betriebssystem&lt;br /&gt;
kommunizieren. Man braucht dazu ein Hilfsprogramm, welches die&lt;br /&gt;
Kommandoeingaben ordnungsgemäß an das Betriebssystem weiterleitet. Dieses&lt;br /&gt;
Hilfsprogramm hat den Namen Shell.&lt;br /&gt;
&lt;br /&gt;
Die Shell schirmt den Betriebssystemkern von den Anwendungsprogrammen ab.&lt;br /&gt;
Die unterschiedlichen Shells erfüllen alle dieselbe Aufgabe, sie unterscheiden sich&lt;br /&gt;
allerdings in ihrer Syntax.&lt;br /&gt;
&lt;br /&gt;
==Die Installation im Überblick==&lt;br /&gt;
&lt;br /&gt;
Die Installation von Linux geschieht in folgenden Schritten:&lt;br /&gt;
&lt;br /&gt;
# Analyse (Welche Hardware habe ich? ,Hab ich weitere Betriebsysteme?)&lt;br /&gt;
# Booten des Linux-Kernels. (von CD oder Diskette)&lt;br /&gt;
# Laden einer RAM-Disk (das macht das Installationsprogramm automatisch).&lt;br /&gt;
# Partitionieren der Festplatte (fdisk).&lt;br /&gt;
# Einrichten der Swappartition (mkswap), Formatieren der Festplatte (mkfs).&lt;br /&gt;
# Montieren der Dateisysteme (mount), Aktivieren der Swapbereiche (swapon).&lt;br /&gt;
# Kopieren und Auspacken der Daten vom Installationsmedium auf die Festplatte (die eigentliche Installation). (rpm, dpkg oder tar).&lt;br /&gt;
# Geeignete Wahl der Bootmethode unter Berücksichtigung von Punkt 1 (grub, lilo).&lt;br /&gt;
# Konfiguration des Systems (Netz, Modem etc...).&lt;br /&gt;
&lt;br /&gt;
==Erste Schritte==&lt;br /&gt;
===Anmelden===&lt;br /&gt;
Sie können sich nun mit dem Usernamen und dem Passwort, das sie bei der Installation angelegt haben anmelden!&lt;br /&gt;
[[Image:benutzer.jpg]]&lt;br /&gt;
&lt;br /&gt;
[[Image:passwd.jpg]]&lt;br /&gt;
&lt;br /&gt;
===Terminal öffnen===&lt;br /&gt;
&lt;br /&gt;
Ein Terminal öffnen Sie über das Startmenü:&lt;br /&gt;
&lt;br /&gt;
[[Image:Terminalde.jpg]]&lt;br /&gt;
&lt;br /&gt;
Das geöffnete Terminal sieht dann folgendermaßen aus:&lt;br /&gt;
&lt;br /&gt;
[[Image:Terminalde2.jpg]]&lt;br /&gt;
&lt;br /&gt;
===Sudo===&lt;br /&gt;
Rootrechte erlangen sie über den &amp;quot;Sudo&amp;quot;-Befehl&lt;br /&gt;
 &lt;br /&gt;
''Den nächsten Befehl als root ausführen''&lt;br /&gt;
 xinux@zero:~$ sudo cat /etc/shadow&lt;br /&gt;
 [sudo] password for xinux:&lt;br /&gt;
&lt;br /&gt;
''Eine komplette Sitzung als root starten''&lt;br /&gt;
 xinux@zero:~$ sudo -i&lt;br /&gt;
 [sudo] password for xinux:&lt;br /&gt;
 root@zero:~#&lt;br /&gt;
&lt;br /&gt;
===Virtuelle Konsolen===&lt;br /&gt;
&lt;br /&gt;
In die Virtuelle Konsole gelangen sie über &amp;quot;STRG+ALT+(F1-F6)&amp;quot;.&lt;br /&gt;
Sie funktioniert wie ein ganz normales Terminal, und mit &amp;quot;ALT+F7&amp;quot;&lt;br /&gt;
gelangen sie wieder zurück auf die grafische Benutzeroberfläche&lt;br /&gt;
&lt;br /&gt;
===Abmelden===&lt;br /&gt;
&lt;br /&gt;
Abmelden können Sie sich wieder über das Startmenu unter:&lt;br /&gt;
&lt;br /&gt;
[[Image:Logout.jpg]]&lt;br /&gt;
&lt;br /&gt;
Fals sie nur einzelne Sitzungen in einem der Terminals oder &lt;br /&gt;
den Virtuellen Konsolen Abmelden wollen benutzen sie dazu den Befehl: &amp;quot;exit&amp;quot;&lt;br /&gt;
&lt;br /&gt;
===Herunterfahren===&lt;br /&gt;
&lt;br /&gt;
Das Herunterfahren funktioniert auf dem selben Weg.&lt;br /&gt;
&lt;br /&gt;
Entweder sie Benutzen wieder das Startmenü und benutzen diesmal den &amp;quot;Ausschalten ...&amp;quot; Knopf,&lt;br /&gt;
&lt;br /&gt;
Oder sie geben den äquivalenten &amp;quot;shutdown&amp;quot;-Befehl in einem Terminal bzw. der virtuellen Konsole ein.&lt;br /&gt;
&lt;br /&gt;
Allerdings müssen sie dazu als Administrator angemeldet sein s. &amp;quot;Sudo&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Wenn Sie den &amp;quot;shutdown&amp;quot;-Befehl benutzen wollen muss hinter den Befehl&lt;br /&gt;
&lt;br /&gt;
eine Zeitangabe in Minuten oder das wort &amp;quot;now&amp;quot; für sofortiges Ausschalten hinzugefügt werden:&lt;br /&gt;
&lt;br /&gt;
 xinux@zero:~$ sudo -i&lt;br /&gt;
 root@zero:~# shutdown 60&lt;br /&gt;
 &lt;br /&gt;
 Broadcast message from xinux@zero &lt;br /&gt;
         (/dev/pts/3) at 14:29 ...&lt;br /&gt;
 &lt;br /&gt;
 The system is going down for maintenance in 60 minutes!&lt;br /&gt;
&lt;br /&gt;
Sollten sie den Befehl widerrufen wollen dann drücken sie &amp;quot;STRG+C&amp;quot;,&lt;br /&gt;
&lt;br /&gt;
in dem Terminal in dem der shutdown Befehl gestartet wurde,&lt;br /&gt;
&lt;br /&gt;
oder geben sie den &amp;quot;shutdown&amp;quot;-Befehl zusammen mit der Abbruchoption &amp;quot;-c&amp;quot; in einem anderen Terminal ein:&lt;br /&gt;
&lt;br /&gt;
 root@zero:~# shutdown -c&lt;br /&gt;
&lt;br /&gt;
 shutdown: Shutdown cancelled&lt;br /&gt;
 root@zero:~# &lt;br /&gt;
&lt;br /&gt;
Wenn Sie den Rechner Neustarten möchten gibt es dazu die Option &amp;quot;-r&amp;quot; für den &amp;quot;shutdown&amp;quot;-Befehl&lt;br /&gt;
&lt;br /&gt;
oder den &amp;quot;reboot&amp;quot;-Befehl die beide auch als root ausgeführt werden müssen:&lt;br /&gt;
&lt;br /&gt;
 xinux@zero:~$ sudo -i&lt;br /&gt;
 [sudo] password for xinux: &lt;br /&gt;
 root@zero:~# shutdown -r now&lt;br /&gt;
&lt;br /&gt;
 root@zero:~# reboot&lt;br /&gt;
&lt;br /&gt;
===&amp;quot;man&amp;quot;===&lt;br /&gt;
&lt;br /&gt;
Programm zum Einsehen der Online-Manuals&lt;br /&gt;
&lt;br /&gt;
Die Manuals sind in folgende Sektionen unterteilt:&lt;br /&gt;
# Ausführbare Programme oder Shellbefehle&lt;br /&gt;
# Systemaufrufe (Kernelfunktionen)&lt;br /&gt;
# Bibliotheksaufrufe (Funktionen in System-Bibliotheken)&lt;br /&gt;
# Spezielle Dateien (gewöhnlich in /dev)&lt;br /&gt;
# Dateiformate und Konventionen, z. B. /etc/passwd&lt;br /&gt;
# Spiele&lt;br /&gt;
# Makropakete und Konventionen, z. B. man(7), groff(7)&lt;br /&gt;
# Systemadministrationsbefehle (in der Regel nur für root)&lt;br /&gt;
# Kernelroutinen [Nicht Standard]&lt;br /&gt;
&lt;br /&gt;
Aufruf eines Manuals erfolgt durch ''man kommando''&lt;br /&gt;
Beendet wird durch Drücken des Buchstabens q&lt;br /&gt;
Gesucht wird vorwärts durch Eingabe eines /suchausdruck&lt;br /&gt;
Gesucht wird rückwärts durch Eingabe eines ?suchausdruck&lt;br /&gt;
&lt;br /&gt;
Beispiele:&lt;br /&gt;
&lt;br /&gt;
      man passwd        Anschauen der Manualseite zum Programm passwd&lt;br /&gt;
      man 5 passwd      Anschauen der Manualseite zur Datei /etc/passwd&lt;br /&gt;
      man -a passwd     Anschauen aller Manualseiten zu passwd&lt;br /&gt;
      man -k passwd     Durchsucht die Kurzbeschreibungen der Manualseite&lt;br /&gt;
                        nach passwd und gibt alle Treffer aus&lt;br /&gt;
      man -f passwd      Gibt alle gefunden Kurzbescheibungen zu passwd aus&lt;br /&gt;
      man -L en passwd Gibt englische Manualseiten aus&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Was geht vor auf meinem System? (date,who)===&lt;br /&gt;
&lt;br /&gt;
Das Kommando date dient zur Abfrage von Datum und Uhrzeit.&lt;br /&gt;
&lt;br /&gt;
 xinux@zero:~ &amp;gt; date&lt;br /&gt;
 Fre Mär 16 16:35:03 CET 2001&lt;br /&gt;
&lt;br /&gt;
oder auch Anzeige der Grennwich Zeit:&lt;br /&gt;
&lt;br /&gt;
 xinux@zero:~ &amp;gt; date -u&lt;br /&gt;
 Fre Mär 16 15:35:34 UTC 2001&lt;br /&gt;
&lt;br /&gt;
 xinux@zero:~ &amp;gt; date -u &amp;quot;+%X&amp;quot;&lt;br /&gt;
 15:37:19&lt;br /&gt;
&lt;br /&gt;
 xinux@zero:~ &amp;gt; date -u &amp;quot;+%x&amp;quot;&lt;br /&gt;
 01/15/02&lt;br /&gt;
&lt;br /&gt;
who zeigt alle angemeldeten Benutzer an&lt;br /&gt;
&lt;br /&gt;
 thomas@cardassia:~ &amp;gt; who&lt;br /&gt;
 thomas             tty1 Feb 27 16:39&lt;br /&gt;
 thomas             tty2 Mar 2 17:08&lt;br /&gt;
 tina               tty6 Mar 16 16:38&lt;br /&gt;
&lt;br /&gt;
Mit `who --help' bekommen Sie mehr Informationen.&lt;br /&gt;
&lt;br /&gt;
 thomas@cardassia:~ &amp;gt; who --help&lt;br /&gt;
&lt;br /&gt;
Benutzung: who [OPTION]... [ DATEI | ARG1 ARG2 ]&lt;br /&gt;
&lt;br /&gt;
 -H, --heading             print line of column headings&lt;br /&gt;
 -i, -u, --idle            add user idle time as HOURS:MINUTES, . or old&lt;br /&gt;
 -l, --lookup              attempt to canonicalize hostnames via DNS&lt;br /&gt;
 -m                        only hostname and user associated with stdin&lt;br /&gt;
 -q, --count               all login names and number of users logged on&lt;br /&gt;
 -s                        (ignored)&lt;br /&gt;
 -T, -w, --mesg            add user's message status as +, - or ?&lt;br /&gt;
     --message             same as -T&lt;br /&gt;
     --writable            same as -T&lt;br /&gt;
     --help                display this help and exit&lt;br /&gt;
     --version             output version information and exit&lt;br /&gt;
&lt;br /&gt;
==Das UNIX-Dateisystem==&lt;br /&gt;
===Verzeichnisbaum===&lt;br /&gt;
&lt;br /&gt;
[[Image:vztree.jpg]]&lt;br /&gt;
&lt;br /&gt;
Das Betriebssystem UNIX besitzt ein hierarchisches Dateisystem. Es besteht aus:&lt;br /&gt;
* Dateien (Files)&lt;br /&gt;
Dateien speichern Informationen (Text, Bilder, Sound, Videos, Programme) und&lt;br /&gt;
werden über den Dateinamen angesprochen.&lt;br /&gt;
&lt;br /&gt;
* Verzeichnissen (Directories, Kataloge)&lt;br /&gt;
Verzeichnisse besitzen ebenfalls einen Namen und dienen zur Ordnung des&lt;br /&gt;
Dateisystems. Ein Verzeichnis kann Dateien und Unterverzeichnisse&lt;br /&gt;
(Subdirectories) enthalten. Das oberste Verzeichnis im Dateisystem heisst&lt;br /&gt;
Rootverzeichnis oder kurz Root und wird durch / (sprich: slash)&lt;br /&gt;
gekennzeichnet.&lt;br /&gt;
&lt;br /&gt;
Im Gegensatz zu Windows kennt UNIX keine Laufwerke.&lt;br /&gt;
Das obige Bild zeigt ein typisches UNIX-Dateisystem.&lt;br /&gt;
Unterhalb des Rootverzeichnisses befinden sich eine Vielzahl vonVerzeichnissen.&lt;br /&gt;
&lt;br /&gt;
===Wichtige Verzeichnisse===&lt;br /&gt;
&lt;br /&gt;
• '''Homeverzeichnis'''&lt;br /&gt;
&lt;br /&gt;
das Verzeichnis, in dem man sich unmittelbar nach dem Anmelden befindet. Das&lt;br /&gt;
Homeverzeichnis wird vom Systemverwalter eingerichtet; jeder Anwender&lt;br /&gt;
besitzt ein festes Homeverzeichnis. z.B. /home/hans&lt;br /&gt;
&lt;br /&gt;
~ (Tilde) bzw. $HOME (Shellvariable) kennzeichnen das Homeverzeichnis.&lt;br /&gt;
&lt;br /&gt;
• '''Aktuelles Verzeichnis'''&lt;br /&gt;
&lt;br /&gt;
Verzeichnis, in dem man sich aktuell befindet.&lt;br /&gt;
Das aktuelle Verzeichnis wird mit dem Befehl cd (change directory) oder per&lt;br /&gt;
Mausklick verändert.&lt;br /&gt;
Ein einfacher Punkt . kennzeichnet das aktuelle Verzeichnis.&lt;br /&gt;
&lt;br /&gt;
• '''Elternverzeichnis'''&lt;br /&gt;
&lt;br /&gt;
Verzeichnis unmittelbar oberhalb des aktuellen Verzeichnisses.&lt;br /&gt;
Jedes Verzeichnis ausser / besitzt genau ein Elternverzeichnis.&lt;br /&gt;
Zwei Punkte .. kennzeichnen das Elternverzeichnis (abhängig vom aktuellen&lt;br /&gt;
VZ).&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Absoluter Pfadname:===&lt;br /&gt;
&lt;br /&gt;
Beschreibt ausgehend vom Rootverzeichnis den Weg zum Zielverzeichnis oder zur&lt;br /&gt;
Zieldatei. (Welche Verzeichnisse müssen ausgehend von / durchlaufen werden, um&lt;br /&gt;
zum Ziel zu kommen?) Ein absoluter Pfadname beginnt immer mit / .&lt;br /&gt;
&lt;br /&gt;
===Relativer Pfadname:===&lt;br /&gt;
&lt;br /&gt;
Beschreibt ausgehend vom aktuellen Verzeichnis den Weg zum Zielverzeichnis&lt;br /&gt;
oder zur Zieldatei; ein relativer Pfadname beginnt nicht mit / .&lt;br /&gt;
/home/suxer&lt;br /&gt;
absoluter Pfadname für das Verzeichnis sub1 im Homeverzeichnis von suxer&lt;br /&gt;
&lt;br /&gt;
===Verzeichnisstruktur===&lt;br /&gt;
&lt;br /&gt;
 /bin         Kommandos die beim starten benötigt werden (Zugriff hat jeder)&lt;br /&gt;
 /sbin        Wichtige System-Programme (In der Regel root vorberhalten)&lt;br /&gt;
 /boot        Hier findet man die Dateien des Bootmanagers und des Kernel.&lt;br /&gt;
 /dev         In diesem Verzeichnis stehen die Gerätedateien (Devices),&lt;br /&gt;
 /home        Alle Heimatverzeichnisse der Nutzer findet man hier.&lt;br /&gt;
 /lib         Beim Systemstart benötigten Bibliotheken und Modules stehen hier.&lt;br /&gt;
 /mnt         Mountpunkt für temporäre Partitionen&lt;br /&gt;
 /opt         Software, die nicht Installationsumfang von Linux gehören.&lt;br /&gt;
 /root        Heimatverzeichnis des Administrators.&lt;br /&gt;
 /tmp         Temporäre Dateien können hier abgelegt werden&lt;br /&gt;
 /usr         statische Dateien (kann read-only gemountet sein)&lt;br /&gt;
 /var         variable Dateien (muss beschreibar sein )&lt;br /&gt;
 /etc         Konfiguartionsdateien und Startscripte&lt;br /&gt;
 /proc        Virtuelles Dateisystem -&amp;gt; repräsentiert den Kernel&lt;br /&gt;
&lt;br /&gt;
===Unterverzeichnisse von /usr===&lt;br /&gt;
&lt;br /&gt;
 sbin         Programme für root die beim Start nicht benötigt werden&lt;br /&gt;
 bin          Programme für alle die beim Start nicht benötigt werden&lt;br /&gt;
 X11R6        Dateien des X-Window-Sytems&lt;br /&gt;
 bin          Ausführbare Programme&lt;br /&gt;
 doc          Dokumentationen&lt;br /&gt;
 etc          Konfigurationsdateien&lt;br /&gt;
 games        Spiele&lt;br /&gt;
 include      Headerdateien für C-Programme&lt;br /&gt;
 local        Pakete die nicht zur Distribution gehören ähnlich /opt&lt;br /&gt;
 share        Pakete die von mehreren Paketen genutzt werden&lt;br /&gt;
 share/man    Die Manualpages&lt;br /&gt;
 share/info   Seiten des Infosystems&lt;br /&gt;
 share/doc    Dokumentationen&lt;br /&gt;
 src          Sources von Programmen (Kernel und andere)&lt;br /&gt;
&lt;br /&gt;
===Unterverzeichnisse von /var===&lt;br /&gt;
&lt;br /&gt;
 cache        Zwischenspreicher für Progammes&lt;br /&gt;
 games        Variable Daten der Games (Scores etc...)&lt;br /&gt;
 lock         Sperrdateien&lt;br /&gt;
 log          Die Logdateien (wichtiges Verzeichnis für Admins)&lt;br /&gt;
 mail         Das Mailsystem&lt;br /&gt;
 run          Dateien zu laufemdem Prozessen&lt;br /&gt;
 spool        Spooldateien (z.B. für das Drucksystem&lt;br /&gt;
 state        Statusinfos&lt;br /&gt;
 tmp          Wie /tmp eventuell nicht auf root Partion&lt;br /&gt;
&lt;br /&gt;
==Einfache Komandos==&lt;br /&gt;
===cd: Wechseln des Arbeitsverzeichnis===&lt;br /&gt;
&lt;br /&gt;
Um festzustellen in welchem Verzeichnis man sich befindet, sollte man den&lt;br /&gt;
Befehl &amp;quot;pwd&amp;quot; benutzen,&lt;br /&gt;
&lt;br /&gt;
und mit dem Befehl &amp;quot;cd&amp;quot; kann man zwischen den Verzeichnissen wechseln:&lt;br /&gt;
&lt;br /&gt;
Wechsele ins homeverzeichnis von Xinux&lt;br /&gt;
&lt;br /&gt;
 xinux@zero:~$ cd /home/xinux/&lt;br /&gt;
 xinux@zero:~$ pwd&lt;br /&gt;
 /home/xinux&lt;br /&gt;
&lt;br /&gt;
cd ~ -&amp;gt; wechsele ins jeweilige Homeverzeichnis&lt;br /&gt;
&lt;br /&gt;
cd .. -&amp;gt; wechsele ein Verzeichnis höher&lt;br /&gt;
&lt;br /&gt;
cd ../verzeichnis -&amp;gt; wechsele in eine paralleles Verzeichnis &amp;lt;- (ist eine relative Pfadangabe !)&lt;br /&gt;
&lt;br /&gt;
cd - -&amp;gt; wechsele in das Verzeichnis, in dem vorher gearbeitet wurde.&lt;br /&gt;
&lt;br /&gt;
Mit cd / wechselt man in das Wurzelverzeichnis.&lt;br /&gt;
&lt;br /&gt;
 xinux@zero:/var/log$ cd /&lt;br /&gt;
 xinux@zero:/$ pwd&lt;br /&gt;
 /&lt;br /&gt;
&lt;br /&gt;
===ls: Listing===&lt;br /&gt;
&lt;br /&gt;
Den Inhalt von Verzeichnissen kann man sich mit dem Befehl &amp;quot;ls&amp;quot; anzeigen lassen&lt;br /&gt;
wobei &amp;quot;ls&amp;quot; eine Vielzahl von Optionen besitzt:&lt;br /&gt;
&lt;br /&gt;
 ls                                  standard&lt;br /&gt;
 ls -l                               langes listing&lt;br /&gt;
 ls -a                               alle Dateien&lt;br /&gt;
 ls -i                               mit Inode&lt;br /&gt;
 ls -h                               gut lesbare Dateigröße&lt;br /&gt;
 ls -d                               Verzechnis wird angezeigt, nicht der Inhalt&lt;br /&gt;
 ls -L                               sortiert nach Größe&lt;br /&gt;
 ls -t                               sortiert nach Datum&lt;br /&gt;
 ls -F                               mit nützlichem Anhang&lt;br /&gt;
&lt;br /&gt;
 xinux@zero:/$ ls -l /var/log/messages&lt;br /&gt;
 -rw-r----- 1 syslog adm 2296 2009-06-16 10:05 /var/log/messages&lt;br /&gt;
&lt;br /&gt;
===more: Seitenweises Anzeigen von Seiten===&lt;br /&gt;
 root@zero:~# more /var/log/messages&lt;br /&gt;
 ...&lt;br /&gt;
&lt;br /&gt;
===head: erste Zeilen anzeigen===&lt;br /&gt;
Erste 10 Zeilen anzeigen&lt;br /&gt;
 root@zero:~# head /var/log/messages&lt;br /&gt;
 Jun 15 12:37:08 zero syslogd 1.5.0#5ubuntu3: restart.&lt;br /&gt;
 Jun 15 12:38:43 zero kernel: [  830.065036] mtrr: your processor doesn't support write-combining&lt;br /&gt;
 Jun 15 12:46:05 zero pulseaudio[4817]: pid.c: Stale PID file, overwriting.&lt;br /&gt;
 Jun 15 13:05:24 zero -- MARK --&lt;br /&gt;
 ...&lt;br /&gt;
&lt;br /&gt;
Erste zwei Zeilen anzeigen&lt;br /&gt;
 root@zero:~# head -n 2 /var/log/messages&lt;br /&gt;
 Jun 15 12:37:08 zero syslogd 1.5.0#5ubuntu3: restart.&lt;br /&gt;
 Jun 15 12:38:43 zero kernel: [  830.065036] mtrr: your processor doesn't support write-combining&lt;br /&gt;
&lt;br /&gt;
===tail: letzte Zeilen anzeigen===&lt;br /&gt;
 &lt;br /&gt;
 root@zero:~# tail /var/log/syslog&lt;br /&gt;
 ...&lt;br /&gt;
 Jun 19 11:19:35 zero -- MARK --&lt;br /&gt;
 Jun 19 11:39:35 zero -- MARK --&lt;br /&gt;
 Jun 19 11:59:36 zero -- MARK --&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Letze 5 Zeilen anzeigen&lt;br /&gt;
 root@zero:~# tail -n 5 /var/log/auth.log&lt;br /&gt;
 Jun 18 14:30:01 zero CRON[12040]: pam_unix(cron:session): session closed for user root&lt;br /&gt;
 Jun 18 14:39:01 zero CRON[12191]: pam_unix(cron:session): session opened for user root by (uid=0)&lt;br /&gt;
 Jun 18 14:39:01 zero CRON[12191]: pam_unix(cron:session): session closed for user root&lt;br /&gt;
 Jun 18 14:40:01 zero CRON[12237]: pam_unix(cron:session): session opened for user root by (uid=0)&lt;br /&gt;
 Jun 18 14:40:01 zero CRON[12237]: pam_unix(cron:session): session closed for user root&lt;br /&gt;
&lt;br /&gt;
Letze Zeilen anzeigen und fortlaufend aktualisieren&lt;br /&gt;
 root@zero:~# tail -f /var/log/syslog&lt;br /&gt;
 ...&lt;br /&gt;
&lt;br /&gt;
===mkdir: Ein neues Verzeichnis erstellen===&lt;br /&gt;
&lt;br /&gt;
 mkdir        verzeichnis&lt;br /&gt;
Erstellt ein Verzeichnis im working directory (wd)&lt;br /&gt;
&lt;br /&gt;
 mkdir  -p    ver1/ver2&lt;br /&gt;
Erstellt ein Verzeichnis ver2 unterhalb von ver1&lt;br /&gt;
wenn ver1 nicht existiert wird es erstellt&lt;br /&gt;
&lt;br /&gt;
 mkdir -m 753 ver1&lt;br /&gt;
Es wird das Verzeichnis ver1 erstellt mit der mask 753&lt;br /&gt;
&lt;br /&gt;
 mkdir -v     ver1&lt;br /&gt;
Geschwätzige Ausgabe :)&lt;br /&gt;
&lt;br /&gt;
===Zum Löschen von leeren Verzeichnissen wird rmdir benutzt===&lt;br /&gt;
&lt;br /&gt;
 rmdir           ver1&lt;br /&gt;
Löscht das leere Verzeichnis ver1&lt;br /&gt;
&lt;br /&gt;
 rmdir -v        ver1&lt;br /&gt;
Löscht das leere Verzeichnis ver1 und ist geschwätzig&lt;br /&gt;
&lt;br /&gt;
 rmdir -p        /ver1/ver2/ver3&lt;br /&gt;
Löscht das Verzeichnis ver3; wenn dadurch ver2 ein leeres&lt;br /&gt;
Verzeichnis wird, wird dieses auch gelöscht , wenn ver1&lt;br /&gt;
dadurch ein leeres Verzeichnis wird, wird auch dieses gelöscht.&lt;br /&gt;
&lt;br /&gt;
===touch Verändern des Zeitstempels===&lt;br /&gt;
&lt;br /&gt;
Mit touch können wir eine neue leere Datei erzeugen (das ist nicht der eigentliche&lt;br /&gt;
Zweck von touch, eigentlich wird der Zeitstempel geändert)&lt;br /&gt;
&lt;br /&gt;
 touch            dateiname&lt;br /&gt;
&lt;br /&gt;
===Kopieren=== &lt;br /&gt;
cp ist das Kommando um Dateien zu kopieren &lt;br /&gt;
&lt;br /&gt;
Eine Kopie von dat1 mit dem Namen dat2 erstellen:&lt;br /&gt;
&lt;br /&gt;
 xinux@zero:~$ cp dat1 dat2&lt;br /&gt;
&lt;br /&gt;
Eine Kopie von dat1 ins Verzeichnis ver2 erstellen:&lt;br /&gt;
&lt;br /&gt;
 xinux@zero:~$ cp dat1 ver2/&lt;br /&gt;
 &lt;br /&gt;
Eine Kopie erstellen mit ausführlicher Anzeige:&lt;br /&gt;
&lt;br /&gt;
 xinux@zero:~$ cp -v dat1 dat2&lt;br /&gt;
 `dat1' -&amp;gt; `dat2'&lt;br /&gt;
&lt;br /&gt;
Eine Kopie erstellen mit Rückfrage fals etwas überschrieben wird:&lt;br /&gt;
&lt;br /&gt;
 xinux@zero:~$ cp -i dat1 dat2&lt;br /&gt;
 cp: overwrite `dat2'?&lt;br /&gt;
&lt;br /&gt;
Eine Kopie erstellen und die Rückfrage überbrücken:&lt;br /&gt;
&lt;br /&gt;
 xinux@zero:~$ cp -f dat1 dat2&lt;br /&gt;
&lt;br /&gt;
Eine Kopie von dat1 ins Verzeichnis ver2 erstellen fals keine neuere Version von dat1 vorliegt:&lt;br /&gt;
&lt;br /&gt;
 xinux@zero:~$ cp -u dat1 ver2/&lt;br /&gt;
&lt;br /&gt;
Eine Kopie erstellen fals ver2 auf dem selben Dateisystem wie dat1 liegt:&lt;br /&gt;
&lt;br /&gt;
 xinux@zero:~$ cp -x dat1 ver2/&lt;br /&gt;
&lt;br /&gt;
Eine Kopie von ver1, die als ver2 oder unter ver2 als ver1 gespeichert wird erstellen:&lt;br /&gt;
&lt;br /&gt;
 xinux@zero:~$ cp -r ver1/ ver2/&lt;br /&gt;
&lt;br /&gt;
Eine Kopie von einer Datei erstellen und ihre Attribute beibehalten:&lt;br /&gt;
&lt;br /&gt;
 xinux@zero:~$ cp -p sux1 sux2&lt;br /&gt;
&lt;br /&gt;
Eine Kopie erstellen bei der die Links erhalten bleiben:&lt;br /&gt;
&lt;br /&gt;
 xinux@zero:~$ cp -r ver1/ ver2/&lt;br /&gt;
&lt;br /&gt;
Eine Kopie erstellen zum Archivieren (-dpr):&lt;br /&gt;
&lt;br /&gt;
 xinux@zero:~$ cp -a ver1/ ver2/&lt;br /&gt;
&lt;br /&gt;
===rm: Löschen einer Datei===&lt;br /&gt;
&lt;br /&gt;
Um Dateien zu löschen, brauchen wir das Kommando &amp;quot;rm&amp;quot;:&lt;br /&gt;
&lt;br /&gt;
 rm               dat1        dat1 wird gelöscht&lt;br /&gt;
 rm         -i    dat1        dat1 wird nach Bestätigung gelöscht&lt;br /&gt;
 rm         -f    dat1        dat1 wird ohne Rückfragen gelöscht&lt;br /&gt;
 rm         -v    dat1        dat1 wird glöscht (geschwätzige Ausgabe)&lt;br /&gt;
 rm         -r    ver1        Löschen von nicht leeren Verzeichnissen&lt;br /&gt;
                              Achtung !!! Als root kann man sich damit Teile&lt;br /&gt;
                              oder sogar den gesamten Verzeichnisbaum&lt;br /&gt;
                              absägen !!!&lt;br /&gt;
&lt;br /&gt;
===mv: Verschieben===&lt;br /&gt;
&lt;br /&gt;
Mit dem Befehl &amp;quot;mv&amp;quot; werden Daten verschoben, folgendes gilt:&lt;br /&gt;
&lt;br /&gt;
 mv          dat1 dat2         &lt;br /&gt;
Die Datei dat1 wird in dat2 umbenannt&lt;br /&gt;
 mv          dat1 /ver1        &lt;br /&gt;
Die Datei dat1 wird nach /ver1 verschoben&lt;br /&gt;
&lt;br /&gt;
Die Parameter und ihre Bedeutung:&lt;br /&gt;
&lt;br /&gt;
      -i                      wenn eine Datei exisitiert wird vor dem&lt;br /&gt;
                              Überschreiben nachgefragt&lt;br /&gt;
      -v                      verbose (geschwätzig)&lt;br /&gt;
      -u                      nur neuere Daten werden bei Bedarf überschrieben&lt;br /&gt;
      -b                      wenn überschrieben werden soll, wird ein Backup&lt;br /&gt;
                              erstellt&lt;br /&gt;
      -S ENDUNG               das Backup bekommt die Endung ENDUNG&lt;br /&gt;
&lt;br /&gt;
===su Benutzer wechseln===&lt;br /&gt;
&lt;br /&gt;
 su -             &lt;br /&gt;
Wechsel zum Rootaccount, wie wenn dieser sich neu anmelden würde. (Bsp: su -)&lt;br /&gt;
&lt;br /&gt;
 su Benutzernamen &lt;br /&gt;
Wechsel der Identität zu Benutzer (gegebenenfalls Passwortabfrage)&lt;br /&gt;
&lt;br /&gt;
 su -c Kommando   &lt;br /&gt;
Kommando wird als rootaccount ausgeführt&lt;br /&gt;
&lt;br /&gt;
==Der Standard Editor vi==&lt;br /&gt;
Der vi ist der Standardeditor in der Unixwelt. Er ist in jedem Unix-Derivat&lt;br /&gt;
enthalten.&lt;br /&gt;
Der Editor hat zwar den schlechten Ruf umständlich zu bedienen zu sein, ist&lt;br /&gt;
jedoch sehr leistungsfähig und systemübergreifend verfügbar. Beim vi handelt es&lt;br /&gt;
sich um einen rein textorientierten Editor, der mittels eigener Kommandos&lt;br /&gt;
gesteuert wird.&lt;br /&gt;
&lt;br /&gt;
Der Editor VIM ist eine weitere Verbesserung von VI und leichter zu bedienen.&lt;br /&gt;
Und unter Ubuntu/Debian mit &amp;quot;apt-get install vim&amp;quot; zu installieren.&lt;br /&gt;
&lt;br /&gt;
===Starten des Editors:===&lt;br /&gt;
&lt;br /&gt;
Der Editorstart erfolgt einfach durch die Eingabe des Kommandos vi mit dem&lt;br /&gt;
Dateinamen der zu editierenden Datei als Parameter.&lt;br /&gt;
Beispiel:        &lt;br /&gt;
 vi sux.txt&lt;br /&gt;
&lt;br /&gt;
===Die Betriebsmodi des vi:===&lt;br /&gt;
&lt;br /&gt;
Ein Umstand, der dem vi den Ruf der komplizierten Bedienbarkeit zugetragen hat,&lt;br /&gt;
sind die unterschiedlichen Betriebsmodi des Editors. Genauer gesagt verfügt der&lt;br /&gt;
vi über drei Betriebsmodi:&lt;br /&gt;
&lt;br /&gt;
====Kommandomodus:====&lt;br /&gt;
&lt;br /&gt;
Innerhalb dieses Modus werden die eingegebenen Zeichen direkt als Befehle des&lt;br /&gt;
Editors interpretiert und ausgeführt. Dabei gibt es weder ein Bereitschaftszeichen&lt;br /&gt;
(Prompt) noch ein Echo (Ausgabe). Der Kommandomodus ist der Modus, in dem&lt;br /&gt;
sich der vi direkt nach seinem Start befindet.&lt;br /&gt;
&lt;br /&gt;
====Zeilenmodus oder Exmodus:====&lt;br /&gt;
&lt;br /&gt;
Dieser Modus ist der einzige Modus mit einem eigenen Bereitschaftszeichen,&lt;br /&gt;
nämlich dem Doppelpunkt (:). Das Prompt wird ebenso wie die Befehlsausgaben&lt;br /&gt;
in der Statuszeile angezeigt.&lt;br /&gt;
&lt;br /&gt;
====Eingabemodus:====&lt;br /&gt;
&lt;br /&gt;
Der Eingabemodus ist derjenige, in welchem der zu bearbeitende Text bearbeitet&lt;br /&gt;
werden kann. Alle hier eingegebenen Zeichen werden als Text für die aktuelle&lt;br /&gt;
Datei interpretiert. Zwischen den unterschiedlichen Modi kann jederzeit&lt;br /&gt;
gewechselt werden. Von Kommandomodus gelangen Sie durch mehere Wege in&lt;br /&gt;
den Eingabemodus. Man kann durch folgende Aktionen wechslen&lt;br /&gt;
&lt;br /&gt;
{| border=1 cellpadding=2&lt;br /&gt;
|i&lt;br /&gt;
|Text vor der aktuellen Cursorposition einfügen&lt;br /&gt;
|-&lt;br /&gt;
|I&lt;br /&gt;
|Text am Zeilenanfang einfügen&lt;br /&gt;
|-&lt;br /&gt;
|a&lt;br /&gt;
|Text hinter der aktuellen Cursorposition einfügen&lt;br /&gt;
|-&lt;br /&gt;
|A&lt;br /&gt;
|Text am Zeilenende einfügen&lt;br /&gt;
|-&lt;br /&gt;
|o&lt;br /&gt;
|Unterhalb der aktuellen Zeile eine neue Zeile einfügen&lt;br /&gt;
|-&lt;br /&gt;
|O&lt;br /&gt;
|Oberhalb der aktuellen Zeile eine neue Zeile einfügen&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Durch das Drücken der ESC - Taste gelangt man in den Kommandomodus zurück.&lt;br /&gt;
&lt;br /&gt;
Im Kommandomodus können Sie durch den Text navigieren und auch den Text&lt;br /&gt;
selbst bearbeiten, z.B ausschneiden, kopieren usw. Dazu sind einige Kommandos&lt;br /&gt;
nötig, von denen die wichtigsten im Folgenden erläutert werden:&lt;br /&gt;
&lt;br /&gt;
 xinux@zero:/$ vi iwas.txt&lt;br /&gt;
&lt;br /&gt;
[[Image:vim.jpg]]&lt;br /&gt;
&lt;br /&gt;
===Benutzen des Kommandomodus===&lt;br /&gt;
====Steuerung des Cursors durch den Text====&lt;br /&gt;
&lt;br /&gt;
Mittels folgender Kommandos bewegt sich der Cursor durch den Text:&lt;br /&gt;
&lt;br /&gt;
{| border=1 cellpadding=2&lt;br /&gt;
|h&lt;br /&gt;
|Cursor ein Zeichen nach links&lt;br /&gt;
|-&lt;br /&gt;
|l&lt;br /&gt;
|Cursor ein Zeichen nach rechts&lt;br /&gt;
|-&lt;br /&gt;
|k&lt;br /&gt;
|Cursor eine Zeile nach oben&lt;br /&gt;
|-&lt;br /&gt;
|j&lt;br /&gt;
|Cursor eine Zeile nach unten&lt;br /&gt;
|-&lt;br /&gt;
|w&lt;br /&gt;
|Cursor ein Wort nach rechts&lt;br /&gt;
|-&lt;br /&gt;
|b&lt;br /&gt;
|Cursor ein Wort nach links&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Alle diese Kommandos können mit einem vorgestellten Wiederholungsfaktor&lt;br /&gt;
arbeiten. Der Befehl 3w verschiebt demnach den Cursor um 3 Wörter nach rechts.&lt;br /&gt;
&lt;br /&gt;
====Angaben zur Positionierung====&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{| border=1 cellpadding=2&lt;br /&gt;
|STRG+U&lt;br /&gt;
|1⁄2 Bildschirmseite nach oben&lt;br /&gt;
|-&lt;br /&gt;
|STRG+D&lt;br /&gt;
|1⁄2 Bildschirmseite nach unten&lt;br /&gt;
|-&lt;br /&gt;
|STRG+B&lt;br /&gt;
|1 Bildschirmseite nach oben&lt;br /&gt;
|-&lt;br /&gt;
|STRG+F&lt;br /&gt;
|1 Bildschirmseite nach unten&lt;br /&gt;
|-&lt;br /&gt;
|/Ausdruck&lt;br /&gt;
|Sucht den Ausdruck (vorwärts) Weitersuchen mit n , N&lt;br /&gt;
|-&lt;br /&gt;
|?Ausdruck&lt;br /&gt;
|Sucht den Ausdurck (rückwärts) Weitersuchen mit n , N&lt;br /&gt;
|-&lt;br /&gt;
|0&lt;br /&gt;
|Zeilenanfang&lt;br /&gt;
|-&lt;br /&gt;
|$&lt;br /&gt;
|Zeilenende&lt;br /&gt;
|-&lt;br /&gt;
|w&lt;br /&gt;
|Nächstes Wort&lt;br /&gt;
|-&lt;br /&gt;
|b&lt;br /&gt;
|Vorheriges Wort&lt;br /&gt;
|-&lt;br /&gt;
|fc&lt;br /&gt;
|Auf das Zeichen c springen. c steht für ein beliebiges Zeichen&lt;br /&gt;
|-&lt;br /&gt;
|G&lt;br /&gt;
|Letzte Zeile der Datei&lt;br /&gt;
|-&lt;br /&gt;
|ng&lt;br /&gt;
|n-te Zeile der Datei&lt;br /&gt;
|-&lt;br /&gt;
|H&lt;br /&gt;
|Anfang der Bildschirmseite&lt;br /&gt;
|-&lt;br /&gt;
|L&lt;br /&gt;
|Ende der Bildschirmseite&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
====Befehle zur Textbearbeitung -&amp;gt; Was soll geschehen====&lt;br /&gt;
&lt;br /&gt;
{| Border=1 Cellpadding=2&lt;br /&gt;
|x&lt;br /&gt;
|Löscht Zeichen&lt;br /&gt;
|-&lt;br /&gt;
|d&lt;br /&gt;
|Löschen und in den Puffer laden&lt;br /&gt;
|-&lt;br /&gt;
|c&lt;br /&gt;
|Ändern&lt;br /&gt;
|-&lt;br /&gt;
|y&lt;br /&gt;
|In den Puffer laden&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
====Weitere wichtige Befehle:====&lt;br /&gt;
&lt;br /&gt;
{| Border=1 Cellpadding=2&lt;br /&gt;
|p&lt;br /&gt;
|Aus dem Puffer einfügen&lt;br /&gt;
|-&lt;br /&gt;
|u&lt;br /&gt;
|Undo, macht den letzten Befehl rückgängig&lt;br /&gt;
|-&lt;br /&gt;
|STRG+R&lt;br /&gt;
|Redo, macht den letzten Undo rückgängig&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
===Zeilen- oder Exmodus===&lt;br /&gt;
&lt;br /&gt;
Wie schon erwähnt wird der Zeilen oder Exmodus durch einen : eingeleitet.&lt;br /&gt;
Es folgen einige Beispiele.&lt;br /&gt;
&lt;br /&gt;
Befehle zum Speichern und Beenden:&lt;br /&gt;
&lt;br /&gt;
 :w          Schreibt Datei&lt;br /&gt;
 :w Datei2   Schreibt eine Kopie in Datei2&lt;br /&gt;
 :w !        Schreibt Datei (übergehe Schreibschutz)&lt;br /&gt;
 :w ! Datei2 Schreibt eine Kopie in Datei2 (übergehe Schreibschutz)&lt;br /&gt;
 :q          Schließe Datei&lt;br /&gt;
 :q!         Schließe Datei (verwerfe Änderungen)&lt;br /&gt;
 :wq         Schreibe Datei und beende Editor&lt;br /&gt;
 :wq!        Schreibe Datei und beende Editor (übergehe Schreibschutz)&lt;br /&gt;
 :q!         Schließe Datei (verwerfe Änderungen)&lt;br /&gt;
 :h          Hilfe anzeigen, durch drücken von :q Beenden der Hilfe&lt;br /&gt;
 :e Datei3   Editiere Datei3&lt;br /&gt;
 :e #        Editere vorhergehende Datei&lt;br /&gt;
 :1,3co9     Kopiere von der ersten bis zu dritten Zeile &lt;br /&gt;
             und füge den Inhalt unterhalb der neunte Zeile ein.&lt;br /&gt;
&lt;br /&gt;
Interaktionen mit Unix:&lt;br /&gt;
&lt;br /&gt;
 :r Datei4   Fügt Inhalt der Datei4 nach dem Cursor ein&lt;br /&gt;
 :r ! Befehl Fügt Ausgabe des Befehls nach dem Cursor ein&lt;br /&gt;
 :! Befehl   Führt den Befehl aus&lt;br /&gt;
 :sh         Starte Subshell -&amp;gt; mit exit kehrt man wieder zurück&lt;br /&gt;
             Eingabemodus zurück&lt;br /&gt;
&lt;br /&gt;
====Ersetzen von Textteilen====&lt;br /&gt;
&lt;br /&gt;
Die grundsätzliche Syntax lautet:&lt;br /&gt;
&lt;br /&gt;
 :[Zeilennummer,Zeilennummer]s/Muster/Ersetzung/[gc]&lt;br /&gt;
&lt;br /&gt;
 :s/worf/kirn/              der erste worf wird in der aktuellen Zeile durch kirn ersetzt&lt;br /&gt;
 :1,9s/worf/kirn/g          von der 1. bis zur 9. Zeile werden alle worf durch kirn ersetzt&lt;br /&gt;
 :1,$s/worf/kirn/           von der ersten bis zur letzten Zeile ersetze ersten worf durch&lt;br /&gt;
                            kirn&lt;br /&gt;
 :.,$s/worf/kirn/g          von der aktuellen bis zur letzten Zeile ersetze alle worf durch&lt;br /&gt;
                            kirn&lt;br /&gt;
 :1,.s/worf/kirn/c          von der 1. bis zur aktuellen Zeile ersetze worf durch kirn, frage&lt;br /&gt;
                            aber nach&lt;br /&gt;
 :1,$s/^worf/kirn/          von der ersten bis zur letzten Zeile ersetze worf am&lt;br /&gt;
                            Zeilenanfang durch kirn&lt;br /&gt;
 :4,$s/worf$/kirn/          von der 4. bis zur letzten Zeile ersetze worf am Zeilenende&lt;br /&gt;
                            durch kirn&lt;br /&gt;
 :1,$s/^#//                 lösche alle Kommentarzeichen&lt;br /&gt;
 :1,$s/^.orf/kirn/           ersetze alles was am Zeilenanfang ein beliebiges Zeichen hat&lt;br /&gt;
                            gefolgt von einem orf durch kirn&lt;br /&gt;
 :1,$s/^[A-Z]orf/kirn/g     suche nach einem Großbuchstaben am Anfang der Zeile&lt;br /&gt;
                            gefolgt von einem orf und ersetze durch kirn&lt;br /&gt;
 :1,$s/^M[ae][iy]e*r/kirn/  suche alles, was am Anfang der Zeile ein großes M enthält,&lt;br /&gt;
                            gefolgt von einem a oder e , gefolgt von einem i oder y ,&lt;br /&gt;
                            gefolgt von einem e , welches 0 oder N mal vorkommen kann,&lt;br /&gt;
                            gefolgt von einem r und ersetze es durch kirn&lt;br /&gt;
&lt;br /&gt;
==Reguläre Ausdrücke==&lt;br /&gt;
&lt;br /&gt;
{| Border=1 Cellpadding=2&lt;br /&gt;
|c&lt;br /&gt;
|Ein einzelner Buchstabe passt auf sich selbst&lt;br /&gt;
|-&lt;br /&gt;
|.&lt;br /&gt;
|Ein Punkt passt auf jedes Zeichen außer auf das Zeilenende&lt;br /&gt;
|-&lt;br /&gt;
|*&lt;br /&gt;
|Das dem Operator * vorangehende Muster kann 0 oder öfter vorkommen&lt;br /&gt;
|-&lt;br /&gt;
|^&lt;br /&gt;
|(Caret) passt auf den Zeilenanfang&lt;br /&gt;
|-&lt;br /&gt;
|$&lt;br /&gt;
|Passt auf das Zeilenende&lt;br /&gt;
|-&lt;br /&gt;
|\&lt;br /&gt;
|Das folgende Sonderzeichen wird entwertet&lt;br /&gt;
|-&lt;br /&gt;
|[...]&lt;br /&gt;
|Passt auf &amp;quot;genau&amp;quot; eins in [...] angebenen Zeichen&lt;br /&gt;
|-&lt;br /&gt;
|[^...]&lt;br /&gt;
|Passt auf &amp;quot;genau&amp;quot; ein Zeichen welches nicht in [...] angebenen ist&lt;br /&gt;
|-&lt;br /&gt;
|\&amp;lt;&lt;br /&gt;
|Passt auf den Wortanfang&lt;br /&gt;
|-&lt;br /&gt;
|\&amp;gt;&lt;br /&gt;
|Passt auf das Wortende&lt;br /&gt;
|-&lt;br /&gt;
|\+&lt;br /&gt;
|Das dem Operator \+ vorangehende Muster kann 1 oder öfter vorkommen&lt;br /&gt;
|-&lt;br /&gt;
|&amp;amp;&lt;br /&gt;
|Setzt das gefunden Suchmuster ein&lt;br /&gt;
|-&lt;br /&gt;
|\(...\)&lt;br /&gt;
|Speichert den Text auf den das Suchmuster passt zur späteren Verwendung&lt;br /&gt;
|-&lt;br /&gt;
|\n&lt;br /&gt;
|Setzt das vorangehende, mit \(...\) Gefundene wieder ein&lt;br /&gt;
|-&lt;br /&gt;
|(...)&lt;br /&gt;
|Gruppiert Auswahlmöglichkeiten&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;nowiki&amp;gt;|&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
|Trennt Auswahlmöglichkeiten&lt;br /&gt;
|-&lt;br /&gt;
|\b&lt;br /&gt;
|Passt auf den Anfang oder das Ende eines Wortes&lt;br /&gt;
|-&lt;br /&gt;
|\B&lt;br /&gt;
|Symbolisiert den Raum innerhalb eines Wortes&lt;br /&gt;
|-&lt;br /&gt;
|\w&lt;br /&gt;
|Passt auf alle alphanumerischen Zeichen [A-Za-z0-9]&lt;br /&gt;
|-&lt;br /&gt;
|\W&lt;br /&gt;
|Passt auf alle nichtalphanumerischen Zeichen [^A-Za-z0-9]&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Die Rangfolge der Operatoren(von der höchsten zur niedrigsten)&lt;br /&gt;
:(, ), ?, *, + | .&lt;br /&gt;
&lt;br /&gt;
Die anderen Operatoren sind mit den anderen Buchstaben gleichrangig.&lt;br /&gt;
&lt;br /&gt;
===Beispiel zum Suchen===&lt;br /&gt;
&lt;br /&gt;
 Suchmuster               Passt auf&lt;br /&gt;
 ^Tuxer                   Tuxer am Zeilenanfang&lt;br /&gt;
 [tT]uxer                 Tuxer oder tuxer&lt;br /&gt;
 80[23]?86                8086, 80286 oder 80386&lt;br /&gt;
&lt;br /&gt;
===grep===&lt;br /&gt;
&lt;br /&gt;
Mit grep ist es möglich, in Dateien nach regulären Ausdrücken zu suchen. Wenn&lt;br /&gt;
eine Übereinstimmung gefunden wird, wird die komplette Zeile auf die&lt;br /&gt;
Standardausgabe geschrieben. grep kann auch von STDIN lesen.Es ist&lt;br /&gt;
empfehlenswert, sich anzugwöhnen ,das Suchmuster in Anführungszeichen zu&lt;br /&gt;
schreiben. Es gibt 3 Arten fgrep = fastgrep , grep und egrep egrep&lt;br /&gt;
&lt;br /&gt;
Beispiel:&lt;br /&gt;
&lt;br /&gt;
 root@zero:~# cat text&lt;br /&gt;
 quatsch&lt;br /&gt;
 quatsch&lt;br /&gt;
 quatsch&lt;br /&gt;
 wichtig&lt;br /&gt;
 quatsch&lt;br /&gt;
 root@zero:~# grep wichtig text&lt;br /&gt;
 wichtig&lt;br /&gt;
 root@zero:~# &lt;br /&gt;
&lt;br /&gt;
 -c                   meldet nur die Gesamtzahl der Fundstellen&lt;br /&gt;
 -v                   zeigt nur Zeilen, die »Ausdruck« nicht enthalten&lt;br /&gt;
 -i                   ignoriert Groß- und Kleinschreibung&lt;br /&gt;
 -l                    meldet nur Dateinamen mit Fundstellen&lt;br /&gt;
 -n                   listet Zeilennummern zu jeder Fundstelle&lt;br /&gt;
 -f                   Dateiname »Dateiname« enthält die Such-Ausdrücke&lt;br /&gt;
 -E                   ist ein erweiterter regulärer Ausdruck (egrep)&lt;br /&gt;
 -F                   (Muster, Ausdruck) ist ein Muster (String) (fgrep)&lt;br /&gt;
 -b                   listet auch die Position der Fundstellen&lt;br /&gt;
 -C    Anzahl         Anzahl von Zeilen werden nach der Fundstelle ausgegeben&lt;br /&gt;
 -B    Anzahl         Anzahl von Zeilen werden vor der Fundstelle ausgegeben&lt;br /&gt;
 -r                   Durchsucht Verzeichnisse rekursiv&lt;br /&gt;
&lt;br /&gt;
==Useridendifikation==&lt;br /&gt;
===/etc/passwd===&lt;br /&gt;
====Beschreibung====&lt;br /&gt;
passwd ist eine ASCII-Datei, die eine Liste der Benutzer des Systems und deren&lt;br /&gt;
Passwörter enthält. Die Passwortdatei sollte für alle Benutzer lesbar sein, was für&lt;br /&gt;
dieVerschlüsselung notwendig ist; aber nur vom Superuser beschreibbar. Wenn&lt;br /&gt;
Sie eine neue Kennung einrichten, lassen Sie das Passwort-Feld in der Datei frei&lt;br /&gt;
und benutzen Sie passwd(1), um dem System ein Passwort für die neue Kennung&lt;br /&gt;
mitzuteilen.&lt;br /&gt;
&lt;br /&gt;
Die Datei /etc/passwd enthält einen Eintrag pro Zeile mit dem Format:&lt;br /&gt;
login_name:passwd:UID:GID:user_name:directory:shell&lt;br /&gt;
====Die Bedeutung der Felder:====&lt;br /&gt;
# login_name Kennung des Benutzers auf dem System.&lt;br /&gt;
# password   Hier steht bei Shadowsystemen ein x. Die Passwörter sind in der Datei /etc/shadow&lt;br /&gt;
# UID        Die numerische Benutzernummer.&lt;br /&gt;
#  GID        Die numerische Gruppennummer des Benutzers.&lt;br /&gt;
# user_name Ein optionales Kommentarfeld, oft benutzt für den vollen Namen des Benutzers und weitere Informationen (Telefon, Raum-Nummer etc.).&lt;br /&gt;
# directory  Das Heimatverzeichnis $HOME des Benutzers.&lt;br /&gt;
# shell      Das Programm, das beim Einloggen gestartet werden soll (falls nicht nötig, benutzen Sie /bin/bash).&lt;br /&gt;
&lt;br /&gt;
===/etc/group===&lt;br /&gt;
====Beschreibung====&lt;br /&gt;
etc/group ist eine ASCII Datei, die Gruppen definiert, zu denen Benutzer&lt;br /&gt;
gehören. Es gibt nur einen Eintrag pro Zeile; jede Zeile hat folgendes Format:&lt;br /&gt;
         GruppenName:Passwort:GruppenKennung:BenutzerListe&lt;br /&gt;
Beschreibung der Felder:&lt;br /&gt;
#     GruppenName      Die Bezeichnung der Gruppe.&lt;br /&gt;
#     Passwort         Das (verschlüsselte) Gruppen-Passwort. Wenn dieses Feld leer ist, wird kein Passwort benötigt.&lt;br /&gt;
#     GruppenKennung Die numerische Identifikation der Gruppe.&lt;br /&gt;
#     BenutzerListe    Alle Namen der Mitglieder, getrennt durch Kommas.&lt;br /&gt;
&lt;br /&gt;
===/etc/shadow===&lt;br /&gt;
====Beschreibung====&lt;br /&gt;
shadow beinhaltet Informationen zu den verschlüsselten Passwörten, zu den&lt;br /&gt;
Benutzerzugängen und weitere Informationen zur Laufzeit der Passwörter.&lt;br /&gt;
 Name:Passwort:Letzte Änderung:Mintage:Maxtage:Warntage:Inaktiv:Ablauf&lt;br /&gt;
#    Der Loginname&lt;br /&gt;
#    verschlüsseltes Passwort &lt;br /&gt;
&amp;lt;nowiki&amp;gt;*&amp;lt;/nowiki&amp;gt; bedeutet Benutzer kann sich nicht einlogen&lt;br /&gt;
! bedeutet Benutzer hat kein Passwort gesetzt&lt;br /&gt;
#    Tage seit dem 1 Januar 1970 an dem das Passwort letztmals geändert wurde&lt;br /&gt;
#    Tage, die das Passwort behalten werden muss, bevor es wieder geändert werden kann&lt;br /&gt;
#     Die Anzahl der Tage, nach denen der Benutzer das Passwort wieder ändern muss&lt;br /&gt;
#    Anzahl der Tage bevor das Passwort abläuft und der Benutzer gewarnt wird&lt;br /&gt;
#    Wenn der Zugang diese Anzahl von Tagen nicht benutzt wird, wird der Zugang gesperrt&lt;br /&gt;
#    Tag seit dem 1 Januar 1970, an dem der Zugang gesperrt wird&lt;br /&gt;
#    Reserviertes Feld&lt;br /&gt;
&lt;br /&gt;
Die Datei sollte aus Sicherheitgründen nicht für einen normalen Benutzer lesbar&lt;br /&gt;
sein.&lt;br /&gt;
&lt;br /&gt;
==Programme zur Userverwaltung==&lt;br /&gt;
===useradd===&lt;br /&gt;
User anlegen&lt;br /&gt;
 root@zero:~# useradd -m -u 1011 -g users -G admin -d /home/erwin -s /bin/bash -c &amp;quot;Erwin Lehman&amp;quot;  erwin&lt;br /&gt;
{| border=1 cellpadding=2&lt;br /&gt;
|&amp;quot;-m&amp;quot;&lt;br /&gt;
|Lege Homedirectory an&lt;br /&gt;
|-&lt;br /&gt;
|&amp;quot;-u 1011&amp;quot;&lt;br /&gt;
|Userid wird zugeordnet&lt;br /&gt;
|-&lt;br /&gt;
|&amp;quot;-g users&amp;quot;&lt;br /&gt;
|Primäre Gruppe wird zugeordnet&lt;br /&gt;
|-&lt;br /&gt;
|&amp;quot;-G admin&amp;quot;&lt;br /&gt;
|Sekunbdäre Gruppe wird zugeordnet&lt;br /&gt;
|-&lt;br /&gt;
|&amp;quot;-d /home/erwin/&amp;quot;&lt;br /&gt;
|Name des Homedirectory&lt;br /&gt;
|-&lt;br /&gt;
|&amp;quot;-s /bin/bash&amp;quot;&lt;br /&gt;
|Bash wird zugeordnet&lt;br /&gt;
|- &lt;br /&gt;
|&amp;quot;-c Erwin Lehman&amp;quot;&lt;br /&gt;
|Kommentarfeld&lt;br /&gt;
|-&lt;br /&gt;
|&amp;quot;erwin&amp;quot; &lt;br /&gt;
|Name des Users&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Defaulteinstellungen anzeigen&lt;br /&gt;
 root@zero:~# useradd -D&lt;br /&gt;
 GROUP=100&lt;br /&gt;
 HOME=/home&lt;br /&gt;
 INACTIVE=-1&lt;br /&gt;
 EXPIRE=&lt;br /&gt;
 SHELL=/bin/sh&lt;br /&gt;
 SKEL=/etc/skel&lt;br /&gt;
 CREATE_MAIL_SPOOL=no&lt;br /&gt;
&lt;br /&gt;
Defaulteinstellungen ändern&lt;br /&gt;
 useradd -D -s /bin/bash&lt;br /&gt;
&lt;br /&gt;
Konfigurationsdatei&lt;br /&gt;
 root@zero:~# cat /etc/default/useradd &lt;br /&gt;
 SHELL=/bin/bash&lt;br /&gt;
 GROUP=100&lt;br /&gt;
 HOME=/home&lt;br /&gt;
 INACTIVE=-1&lt;br /&gt;
 EXPIRE=&lt;br /&gt;
 SKEL=/etc/skel&lt;br /&gt;
 CREATE_MAIL_SPOOL=no&lt;br /&gt;
&lt;br /&gt;
===usermod===&lt;br /&gt;
User modifizieren&lt;br /&gt;
 root@zero:~# usermod -l fritz -s /bin/sh -G admin,video erwin&lt;br /&gt;
{| border=1 cellpadding=2&lt;br /&gt;
|&amp;quot;-l fritz&amp;quot;&lt;br /&gt;
|Neuer Username&lt;br /&gt;
|-&lt;br /&gt;
|&amp;quot;-s /bin/sh&amp;quot;&lt;br /&gt;
|Neue Shell&lt;br /&gt;
|-&lt;br /&gt;
|&amp;quot;-G admin, video&amp;quot;&lt;br /&gt;
|Sekunbdäre Gruppen werden zugeordnet&lt;br /&gt;
|-&lt;br /&gt;
|&amp;quot;erwin&amp;quot; &lt;br /&gt;
|Name des Users&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
===userdel===&lt;br /&gt;
User inklusive Homedirectory löschen&lt;br /&gt;
 root@zero:~# userdel -r fritz&lt;br /&gt;
&lt;br /&gt;
===passwd===&lt;br /&gt;
Rootpasswort ändern&lt;br /&gt;
 root@zero:~# passwd &lt;br /&gt;
 Geben Sie ein neues UNIX Passwort ein:'''sysadm''' &lt;br /&gt;
 Geben Sie das neue UNIX Passwort erneut ein:'''sysadm''' &lt;br /&gt;
 passwd: Passwort erfolgreich geändert&lt;br /&gt;
&lt;br /&gt;
Passwort von tux ändern&lt;br /&gt;
 root@zero:~# passwd tux&lt;br /&gt;
 Geben Sie ein neues UNIX Passwort ein:'''suxer''' &lt;br /&gt;
 Geben Sie das neue UNIX Passwort erneut ein:'''suxer'''&lt;br /&gt;
 passwd: Passwort erfolgreich geändert&lt;br /&gt;
&lt;br /&gt;
Minimale und Maximale Gültigkeit des Passwortes von tux festlegen&lt;br /&gt;
 root@zero:~# passwd -n 5 -x 120 tux&lt;br /&gt;
&lt;br /&gt;
===groupadd===&lt;br /&gt;
 root@zero:~# groupadd -f -g 2001 xinuxer&lt;br /&gt;
{| border=1 cellpadding=2&lt;br /&gt;
|&amp;quot;-f&amp;quot;&lt;br /&gt;
|Überschreibe bestehende Gruppe&lt;br /&gt;
|-&lt;br /&gt;
|&amp;quot;-g 2001&amp;quot;&lt;br /&gt;
|GID der Gruppe&lt;br /&gt;
|-&lt;br /&gt;
|&amp;quot;xinuxer&amp;quot; &lt;br /&gt;
|Name des Gruppe&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==chmod==&lt;br /&gt;
Die Syntax des Befehls chmod lautet:&lt;br /&gt;
&lt;br /&gt;
'''chmod''' WerWieWas [,WerWieWas,.....] Dateiliste&lt;br /&gt;
&lt;br /&gt;
oder&lt;br /&gt;
&lt;br /&gt;
'''chmod''' Oktalzahl Dateiliste&lt;br /&gt;
&lt;br /&gt;
Durch WerWieWas bzw. Oktalzahl wird die Rechtetabelle definiert. Innerhalb von&lt;br /&gt;
WerWieWas darf es kein Leerzeichen geben. Wer bezeichnet den Benutzerkreis,&lt;br /&gt;
dem man Rechte gibt, Wie die Art, in der die Rechte gegeben werden und Was die&lt;br /&gt;
Rechte als solche. Im einzelnen können folgende Kürzel benutzt werden:&lt;br /&gt;
&lt;br /&gt;
Für Wer kann eines der folgenden Kürzel oder eine Kombination davon stehen:&lt;br /&gt;
 u                   (user) Rechte für den Dateibesitzer&lt;br /&gt;
 g                   (group) Rechte für die Gruppe&lt;br /&gt;
 o                   (others) Rechte für alle anderen Benutzer&lt;br /&gt;
 a                   (all) Rechte für alle Benutzer&lt;br /&gt;
Für Wie steht eines der folgenden Kürzel:&lt;br /&gt;
 +                   Die Rechte werden zu den vorhandenen zusätzlich vergeben&lt;br /&gt;
 -                   Die im Folgenden genannten Rechte werden entzogen&lt;br /&gt;
 =                   Die im Folgenden genannten Rechte ersetzen die bisherigen&lt;br /&gt;
Für Was steht eines der folgenden Kürzel:&lt;br /&gt;
 r                   (read) lesen&lt;br /&gt;
 w                   (write) schreiben&lt;br /&gt;
 x                   (execute) ausführen&lt;br /&gt;
oder diese Sonderformen&lt;br /&gt;
 s                   (usersbit) Programm läuft unter der UID des Besitzers&lt;br /&gt;
 s                   (groupsbit)Programm läuft unter der GID des GRUPPE&lt;br /&gt;
 t                   (stickybit) Dateien im Verzeichnis darf nur Besitzer löschen&lt;br /&gt;
&lt;br /&gt;
===Beispiel===&lt;br /&gt;
Setze für alle Schreib- und Leserecht&lt;br /&gt;
 xinux@zero:~$ chmod a=rw test &lt;br /&gt;
 xinux@zero:~$ ls -l test &lt;br /&gt;
 -rw-rw-rw- 1 xinux xinux 0 2009-06-16 12:01 test&lt;br /&gt;
 xinux@zero:~$ &lt;br /&gt;
&lt;br /&gt;
Erteile Besitzer Ausführungsrecht&lt;br /&gt;
 xinux@zero:~$ chmod u+x test ; ls -l test &lt;br /&gt;
 -rwxrw-rw- 1 xinux xinux 0 2009-06-16 12:01 test&lt;br /&gt;
 xinux@zero:~$ &lt;br /&gt;
&lt;br /&gt;
===chmod oktale Schreibweise===&lt;br /&gt;
 Specialrights        User           Group         Other&lt;br /&gt;
 usbit gsbit sticky    r    w   x     r   w   x     r   w   x&lt;br /&gt;
   1     1      1      1    1   1     1   1   1     1   1   1&lt;br /&gt;
   0     0      0      0    0   0     0   0   0     0   0   0&lt;br /&gt;
 Oktale Wertigkeit pro Recht&lt;br /&gt;
   4     2       1     4    2   1     4   2   1     4   2   1&lt;br /&gt;
&lt;br /&gt;
===Beispiele===&lt;br /&gt;
 xinux@zero:~$ chmod 751 test ; ls -l test&lt;br /&gt;
 -rwxr-x--x 1 xinux xinux 0 2009-06-16 12:01 test&lt;br /&gt;
 xinux@zero:~$ &lt;br /&gt;
&lt;br /&gt;
 xinux@zero:~$ chmod 4770 test ; ls -l test&lt;br /&gt;
 -rwsrwx--- 1 xinux xinux 0 2009-06-16 12:01 test&lt;br /&gt;
 xinux@zero:~$ &lt;br /&gt;
&lt;br /&gt;
 xinux@zero:~$ chmod 0 test ; ls -l test &lt;br /&gt;
 ---------- 1 xinux xinux 0 2009-06-16 12:01 test&lt;br /&gt;
&lt;br /&gt;
===chmod Optionen===&lt;br /&gt;
 -c   (changes) es werden nur die Dateien angezeigt, deren Zugriffsrechte tatsächlich verändert werden&lt;br /&gt;
 -f   (silent, quiet) Fehlermeldungen wegen fehlgeschlagener Änderungsversuche werden unterdrückt&lt;br /&gt;
 -v   (verbose) alle Aktionen werden angezeigt&lt;br /&gt;
 -R   (recursive) die Zugriffsrechte aller Dateien in den Unterverzeichnissen werden ebenfalls geändert&lt;br /&gt;
&lt;br /&gt;
Theoretisch sind alle Kombinationen der Zugriffsrechte denkbar, aber der&lt;br /&gt;
Eigentümer einer Datei darf diese immer lesen, selbst wenn das Lesebit nicht&lt;br /&gt;
gesetzt ist. Genauso macht es wenig Sinn, eine gewöhnliche Textdatei als&lt;br /&gt;
ausführbar zu setzen; die Shell wird damit nichts anfangen können. Ein x für ein&lt;br /&gt;
Verzeichnis gibt an, dass in dieses gewechselt werden kann.&lt;br /&gt;
&lt;br /&gt;
Rechte sind verbindlich&lt;br /&gt;
&lt;br /&gt;
Interessant ist auch ein Konstrukt folgender Art&lt;br /&gt;
 -rwx---rwx&lt;br /&gt;
&lt;br /&gt;
das angibt, dass mit der Datei alles angestellt werden kann, außer durch Nutzer der&lt;br /&gt;
Gruppe. Versucht irgend jemand, der nicht der Gruppe des Eigentümers angehört,&lt;br /&gt;
die Datei zu modifizieren, wird ihm dies gelingen, einem Gruppenmitglied bleibt&lt;br /&gt;
dies versagt, obwohl er ja gleichzeitig ein &amp;quot;Anderer&amp;quot; ist. D.h. die Rechte der&lt;br /&gt;
Gruppe sind verbindlicher, als die Rechte der anderen!&lt;br /&gt;
&lt;br /&gt;
===Bedeutungen der Zugriffsarten===&lt;br /&gt;
====Dateien====&lt;br /&gt;
* r: Der Inhalt der Datei kann gelesen und damit auch kopiert werden. &lt;br /&gt;
 root@zero:~# cat test&lt;br /&gt;
 Dies ist eine Testdatei&lt;br /&gt;
  &lt;br /&gt;
 root@zero:~# cp test backup&lt;br /&gt;
&lt;br /&gt;
* w: Der Inhalt der Datei darf verändert werden. Ob die Datei gelöscht werden kann ist&lt;br /&gt;
keine Eigenschaft der Datei, sondern des Verzeichnisses, indem sich die Datei befindet.&lt;br /&gt;
 root@zero:~# cat &amp;gt; test&lt;br /&gt;
 Hier steht jetzt was anderes&lt;br /&gt;
 ^C&lt;br /&gt;
 root@zero:~# cat test&lt;br /&gt;
 Hier steht jetzt was anderes&lt;br /&gt;
  &lt;br /&gt;
 xinux@zero:~$ ls -ld verzeichnis/&lt;br /&gt;
 dr-xr-xr-x 2 xinux xinux 4096 2009-06-18 11:16 verzeichnis/&lt;br /&gt;
 xinux@zero:~/verzeichnis$ rm text&lt;br /&gt;
 rm: Entfernen von „text“ nicht möglich: Permission denied&lt;br /&gt;
&lt;br /&gt;
* x: Ausführrecht für Programme und Skripte&lt;br /&gt;
 xinux@zero:~$ ./programm&lt;br /&gt;
 -bash: ./programm: Permission denied&lt;br /&gt;
 xinux@zero:~$ chmod +x programm&lt;br /&gt;
 xinux@zero:~$ ./programm&lt;br /&gt;
 Test&lt;br /&gt;
  test&lt;br /&gt;
&lt;br /&gt;
====Verzeichnisse====&lt;br /&gt;
* r: Die Einträge in dem Verzeichnis sind lesbar.&lt;br /&gt;
Leserecht von verzeichnis/ entziehen&lt;br /&gt;
 xinux@zero:~$ chmod a-r verzeichnis/&lt;br /&gt;
 xinux@zero:~$ ls verzeichnis/&lt;br /&gt;
 ls: Öffnen von Verzeichnis verzeichnis/ nicht möglich: Permission denied&lt;br /&gt;
Leserecht für Benutzer und Gruppe vergeben&lt;br /&gt;
 xinux@zero:~$ chmod a+r verzeichnis/&lt;br /&gt;
 xinux@zero:~$ ls verzeichnis/&lt;br /&gt;
 text&lt;br /&gt;
&lt;br /&gt;
* w: Die Einträge in dem Verzeichnis können geändert werden. &lt;br /&gt;
Neue Datei erstellen&lt;br /&gt;
 xinux@zero:~$ touch neu&lt;br /&gt;
 xinux@zero:~$ ls neu&lt;br /&gt;
 neu&lt;br /&gt;
&lt;br /&gt;
Datei löschen&lt;br /&gt;
 xinux@zero:~$ rm neu&lt;br /&gt;
 xinux@zero:~$ ls neu&lt;br /&gt;
 ls: Zugriff auf neu nicht möglich: No such file or directory&lt;br /&gt;
&lt;br /&gt;
* x: Der Name des Verzeichnisses kann in einem Pfadnamen erscheinen.&lt;br /&gt;
Verzeichnis ohne x Recht&lt;br /&gt;
 xinux@zero:~$ chmod a-x verzeichnis/&lt;br /&gt;
Wechseln in Verzeichnis mangels x-Recht nicht möglich&lt;br /&gt;
 xinux@zero:~$ cd verzeichnis/&lt;br /&gt;
 -bash: cd: verzeichnis/: Permission denied&lt;br /&gt;
x-Recht vergeben&lt;br /&gt;
 xinux@zero:~$ chmod a+x verzeichnis/&lt;br /&gt;
damit Wechsel in Verzeichnis möglich&lt;br /&gt;
 xinux@zero:~$ cd verzeichnis/&lt;br /&gt;
 xinux@zero:~/verzeichnis$ pwd&lt;br /&gt;
 /home/xinux/verzeichnis&lt;br /&gt;
&lt;br /&gt;
====umask====&lt;br /&gt;
Neue Dateien und Verzeichnisse werden mit ein und denselben Zufriffsrechten erzeugt.&lt;br /&gt;
 xinux@zero:~$ mkdir text&lt;br /&gt;
 xinux@zero:~$ touch textdat&lt;br /&gt;
 xinux@zero:~$ ls -ld text*&lt;br /&gt;
 drwxr-xr-x 2 xinux xinux 4096 2009-06-18 11:37 text&lt;br /&gt;
 -rw-r--r-- 1 xinux xinux    0 2009-06-18 11:37 textdat&lt;br /&gt;
&lt;br /&gt;
Zuständig für dieses Verhalten ist die sogenannte umask, die oft in der Datei&lt;br /&gt;
/etc/profile auf den Wert 022 voreingestellt ist. Zusätzlich wird noch eine&lt;br /&gt;
Maximalmaske benötigt, die sich für Verzeichnisse und andere Dateien&lt;br /&gt;
unterscheidet. Die bei der Erzeugung gesetzten Rechte entstehen nun, indem von&lt;br /&gt;
der Maximalmaske der durch die umask vorgegebene Wert subtrahiert wird:&lt;br /&gt;
&lt;br /&gt;
{| border=1 cellpadding=2&lt;br /&gt;
!&lt;br /&gt;
! Dateien&lt;br /&gt;
! Verzeichnisse&lt;br /&gt;
|-&lt;br /&gt;
| Systemvorgabe&lt;br /&gt;
| 666&lt;br /&gt;
| 777&lt;br /&gt;
|-&lt;br /&gt;
| -umask&lt;br /&gt;
| 022&lt;br /&gt;
| 022&lt;br /&gt;
|-&lt;br /&gt;
| Ergebnis&lt;br /&gt;
| 644&lt;br /&gt;
| 755&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
 xinux@zero:~$ grep umask /etc/profile&lt;br /&gt;
 umask 022&lt;br /&gt;
&lt;br /&gt;
==Gruppenzugehörigkeit==&lt;br /&gt;
===newgrp===&lt;br /&gt;
Ändert die Gruppenzugehörigkeit eines Benutzers auf die angegebene Gruppe. Wenn keine Gruppe angegeben wird, wird die &lt;br /&gt;
Anmeldegruppe des Benutzers verwendet. Die neue Gruppe wird anschließend fü Zugriffskontrollen verwendet.&lt;br /&gt;
&lt;br /&gt;
 newgrp Gruppenname&lt;br /&gt;
&lt;br /&gt;
 root@zero:~# newgrp hacker&lt;br /&gt;
 root@zero:~# id&lt;br /&gt;
 uid=0(root) gid=1006(hacker) Gruppen=0(root),1006(hacker)&lt;br /&gt;
&lt;br /&gt;
===chgrp===&lt;br /&gt;
Verändert die Besitzugehörigkeit zu der angegebenen Gruppe&lt;br /&gt;
&lt;br /&gt;
 chgrp [Optionen] Gruppe Datei(en)&lt;br /&gt;
&lt;br /&gt;
Optionen:&lt;br /&gt;
 -c Zeigt Veränderungen an&lt;br /&gt;
 -f Unterdrückt die meisten Fehlermeldungen&lt;br /&gt;
 -R Verändert Dateien und Verzeichnisse rekursiv&lt;br /&gt;
 -v Gibt geschwätzige Ausgabe aus.&lt;br /&gt;
&lt;br /&gt;
 root@zero:~# ls -l&lt;br /&gt;
 ...&lt;br /&gt;
 d-wx--x--x  3 root root 4096 2009-06-18 13:34 verzeichnis&lt;br /&gt;
 &lt;br /&gt;
 root@zero:~# chgrp -R xinux verzeichnis/&lt;br /&gt;
 root@zero:~# ls -l&lt;br /&gt;
 ...&lt;br /&gt;
 d-wx--x--x  3 root xinux 4096 2009-06-18 13:34 verzeichnis&lt;br /&gt;
&lt;br /&gt;
 xinux@zero:~$ cd /root/verzeichnis/&lt;br /&gt;
 xinux@zero:/root/verzeichnis$ pwd&lt;br /&gt;
 /root/verzeichnis&lt;br /&gt;
&lt;br /&gt;
===chown===&lt;br /&gt;
Ändert den Eigentümer von einer oder mehreren Dateien in den angegebenen Benutzer. &lt;br /&gt;
chown erlaubt ebenfalls das Ändern der Gruppeneigentümreschaft. Nur der aktuelle Eigentümer einer&lt;br /&gt;
Datei oder der Superuser (root) darf die Eigentumsverhältnisse ändern.&lt;br /&gt;
&lt;br /&gt;
 chown [Optionen] Benutzer(:Gruppe) Dateien&lt;br /&gt;
&lt;br /&gt;
Optionen:&lt;br /&gt;
 -c Gibt Informationen über die veränderten Dateien aus&lt;br /&gt;
 --dereference Symbolischen Links folgen&lt;br /&gt;
 -v Gibt Informationen über alle Dateien aus, die chown zu ändern versucht, egal, ob die Änderung erfolgt ist oder nicht&lt;br /&gt;
 -R Geht rekursiv durch alle Unterverzeichnisse und führt die Änderungen durch. &lt;br /&gt;
&lt;br /&gt;
 root@zero:~# chown -R xinux.xinux verzeichnis/&lt;br /&gt;
 root@zero:~# ls -l&lt;br /&gt;
 insgesamt 12&lt;br /&gt;
 drwx------ 13 root  root  4096 2009-04-21 15:11 profile&lt;br /&gt;
 --w-------  1 root  root     0 2009-06-18 11:13 test&lt;br /&gt;
 -rw-r--r--  1 root  root    40 2009-06-18 12:04 text&lt;br /&gt;
 drwxrwx--x  3 xinux xinux 4096 2009-06-18 13:39 verzeichnis&lt;br /&gt;
 &lt;br /&gt;
 root@zero:~# chown -R -c xinux.xinux verzeichnis/&lt;br /&gt;
 &lt;br /&gt;
 root@zero:~# chown -R -v xinux.xinux verzeichnis/&lt;br /&gt;
 Eigentümer von „verzeichnis/01“ als xinux:xinux erhalten&lt;br /&gt;
 Eigentümer von „verzeichnis/test“ als xinux:xinux erhalten&lt;br /&gt;
 Eigentümer von „verzeichnis/“ als xinux:xinux erhalten&lt;br /&gt;
&lt;br /&gt;
==Eingabe/Ausgabe==&lt;br /&gt;
Standardeingabe (0): Laufende Programme erwarten von hier ihre Eingaben (normalerweise handelt es sich um die Tastatur).&lt;br /&gt;
&lt;br /&gt;
Standardausgabe (1): Programme schreiben auf diese ihre Ausgaben (Bildschirm).&lt;br /&gt;
&lt;br /&gt;
Standardfehlerausgabe (2) : Fehlerausgaben landen hier (Bildschirm, aber nur die aktive Konsole).&lt;br /&gt;
&lt;br /&gt;
[[Bild:std.jpg]]&lt;br /&gt;
&lt;br /&gt;
===cat===&lt;br /&gt;
Das Programm cat liest von STDIN und gibt es STDOUT wieder aus&lt;br /&gt;
&lt;br /&gt;
Einlesen der Datei text&lt;br /&gt;
 root@zero:~# cat &amp;lt; text&lt;br /&gt;
 wichtig&lt;br /&gt;
&lt;br /&gt;
Schreiben in die Datei text, dies überschreibt den bisherigen Inhalt der Datei&lt;br /&gt;
 root@zero:~# cat &amp;gt; text&lt;br /&gt;
 sogar noch wichtiger &lt;br /&gt;
 &lt;br /&gt;
Ausgeben der Datei text&lt;br /&gt;
 root@zero:~# cat text &lt;br /&gt;
 sogar noch wichtiger&lt;br /&gt;
&lt;br /&gt;
Lesen aus der Datei text und schreiben in die Datei neuertext&lt;br /&gt;
 root@zero:~# cat &amp;lt; text &amp;gt; neuertext&lt;br /&gt;
 root@zero:~# cat neuertext&lt;br /&gt;
 sogar noch wichtiger&lt;br /&gt;
&lt;br /&gt;
Anhängen der Ausgabe von date an die Datei neuertext&lt;br /&gt;
 root@zero:~# date &amp;gt;&amp;gt; neuertext&lt;br /&gt;
 root@zero:~# cat neuertext&lt;br /&gt;
 sogar noch wichtiger&lt;br /&gt;
 Do 18. Jun 14:08:58 CEST 2009&lt;br /&gt;
&lt;br /&gt;
Umleiten des Standardfehlerkanals nach error&lt;br /&gt;
 root@zero:~# rm sux 2&amp;gt; error&lt;br /&gt;
 root@zero:~# more error&lt;br /&gt;
 rm: Entfernen von „sux“ nicht möglich: No such file or directory&lt;br /&gt;
&lt;br /&gt;
===Umleitungen===&lt;br /&gt;
Nacheinander auszuführende Kommandos&lt;br /&gt;
 root@zero:~# pwd; date&lt;br /&gt;
 /root&lt;br /&gt;
 Do 18. Jun 14:13:05 CEST 2009&lt;br /&gt;
 &lt;br /&gt;
Übergeben der Ausgabe von tail als Eingabe von grep mit Hilfe der Pipe &amp;quot;|&amp;quot;&lt;br /&gt;
 root@zero:~# tail /var/log/auth.log | grep xinux&lt;br /&gt;
 Jun 18 13:52:33 zero nss_wins[11433]: pam_unix(login:session): session closed for user xinux&lt;br /&gt;
&lt;br /&gt;
Übergeben der letzten 100 Zeilen von syslog als Eingabe von grep&lt;br /&gt;
 root@zero:~# tail /var/log/syslog -n 100 | grep error&lt;br /&gt;
 Jun 18 09:30:54 zero kernel: [154384.692135] end_request: I/O error, dev fd0, sector 0&lt;br /&gt;
 Jun 18 09:30:54 zero kernel: [154384.712137] end_request: I/O error, dev fd0, sector 0&lt;br /&gt;
&lt;br /&gt;
==tr==&lt;br /&gt;
tr ist ein Programm um Zeichen zu übersetzen. Dies betrifft nur die Ausgabe, die Datei selbst bleibt unverändert.&lt;br /&gt;
&lt;br /&gt;
Ersetzt Kleinbuchstaben durch Großbuchstaben aus der Datei text&lt;br /&gt;
 root@zero:~# tr &amp;quot;a-z&amp;quot; &amp;quot;A-Z&amp;quot; &amp;lt; text&lt;br /&gt;
 SOGAR NOCH WICHTIGER&lt;br /&gt;
 123&lt;br /&gt;
 34&lt;br /&gt;
 4711&lt;br /&gt;
 TEST&lt;br /&gt;
&lt;br /&gt;
Ersetzt alle Zahlen durch X&lt;br /&gt;
 root@zero:~# tr &amp;quot;0-9&amp;quot; &amp;quot;X&amp;quot; &amp;lt; text&lt;br /&gt;
 sogar noch wichtiger&lt;br /&gt;
 XXX&lt;br /&gt;
 XX&lt;br /&gt;
 XXXX&lt;br /&gt;
 test&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
 root@zero:~# cat &amp;gt; test&lt;br /&gt;
 +++++&lt;br /&gt;
 ###&lt;br /&gt;
 1111&lt;br /&gt;
&lt;br /&gt;
-s löscht mehrfach kommende Zeichen&lt;br /&gt;
 root@zero:~# tr '''-s''' &amp;quot;+&amp;quot; &amp;lt; test&lt;br /&gt;
 +&lt;br /&gt;
 ###&lt;br /&gt;
 1111&lt;br /&gt;
&lt;br /&gt;
-d löscht vorkommende Zeichen &lt;br /&gt;
 root@zero:~# tr '''-d''' &amp;quot;#&amp;quot; &amp;lt; test&lt;br /&gt;
 +++++ &lt;br /&gt;
 &lt;br /&gt;
 1111&lt;br /&gt;
&lt;br /&gt;
==cut==&lt;br /&gt;
Spalten aus einer Datei schneiden. Dies betrifft nur die Ausgabe, die Datei selbst bleibt unverändert.&lt;br /&gt;
 &lt;br /&gt;
Schneidet die erste Spalte aus, der Delimiter ist : &lt;br /&gt;
 root@zero:~# cut -f 1 -d : /etc/passwd&lt;br /&gt;
 root&lt;br /&gt;
 daemon&lt;br /&gt;
 bin&lt;br /&gt;
 ...&lt;br /&gt;
 xinux&lt;br /&gt;
&lt;br /&gt;
 root@zero:~# more test&lt;br /&gt;
 1234#5678#9999&lt;br /&gt;
 &lt;br /&gt;
Schneidet die zweite Spalte aus, der Delimiter ist #&lt;br /&gt;
 root@zero:~# cut -f 2 -d &amp;quot;#&amp;quot; &amp;lt; test&lt;br /&gt;
 5678&lt;br /&gt;
&lt;br /&gt;
Schneidet bis zum 3 Zeichen ab&lt;br /&gt;
 root@zero:~$ echo S01policykit | cut -c 4-&lt;br /&gt;
 policykit&lt;br /&gt;
&lt;br /&gt;
==expand==&lt;br /&gt;
Ersetzt Tabulatorzeichen durch Folgen von Leerzeichen und schreibt das Ergebnis auf die Standardausgabe&lt;br /&gt;
 root@zero:~# expand /etc/samba/smb.conf&lt;br /&gt;
 ...&lt;br /&gt;
&lt;br /&gt;
==fmt==&lt;br /&gt;
#Setzt den Text der Dateien im Blocksatz der angegebenen Breite durch Auffüllen von Zeilen und Entfernen von Zeilenwechseln.&lt;br /&gt;
Standardgemäß werden Leerzeilen, die Position von Leerzeichen und der Einzug am Zeilenanfang erhalten. fmt versucht, &lt;br /&gt;
Zeilenumbrüche an Satzenden durchzuführen sowie sie nach dem ersten oder vor dem letzten Wort eines Satzes zu vermeiden. &lt;br /&gt;
 &lt;br /&gt;
 fmt [Optionen] [Dateien]&lt;br /&gt;
&lt;br /&gt;
Optionen&lt;br /&gt;
&lt;br /&gt;
* -p ''Präfix'': Formatiert nur Zeilen, die mit ''Präfix'' anfangen&lt;br /&gt;
 root@zero:/tmp# fmt -p '#' text&lt;br /&gt;
 #Setzt den Text der Dateien im Blocksatz der angegebenen Breite durch&lt;br /&gt;
 #Auffüllen von Zeilen und Entfernen von Zeilenwechseln.  Standardgemäß&lt;br /&gt;
 #werden Leerzeilen, die Position von Leerzeichen und der Einzug am&lt;br /&gt;
 #Zeilenanfang erhalten. fmt versucht,&lt;br /&gt;
 Zeilenumbrüche an Satzenden durchzuführen sowie sie nach dem ersten oder vor dem letzten Wort eines Satzes zu vermeiden.&lt;br /&gt;
&lt;br /&gt;
* -u : Erzwingt genau ein Leerzeichen zwischen Wörtern und zwei Leerzeichen zwischen Sätzen&lt;br /&gt;
&lt;br /&gt;
* -w ''Breite'': Setzt die Ausgabebreite auf ''Breite''&lt;br /&gt;
 root@zero:/tmp# fmt -w 30 text&lt;br /&gt;
 #Setzt den Text der Dateien&lt;br /&gt;
 im Blocksatz der angegebenen&lt;br /&gt;
 Breite durch Auffüllen&lt;br /&gt;
 von Zeilen und Entfernen&lt;br /&gt;
 von Zeilenwechseln.&lt;br /&gt;
 #Standardgemäß werden&lt;br /&gt;
 Leerzeilen, die Position von&lt;br /&gt;
 Leerzeichen und der Einzug am&lt;br /&gt;
 Zeilenanfang erhalten. fmt&lt;br /&gt;
 versucht, Zeilenumbrüche&lt;br /&gt;
 an Satzenden durchzuführen&lt;br /&gt;
 sowie sie nach dem ersten&lt;br /&gt;
 oder vor dem letzten Wort&lt;br /&gt;
 eines Satzes zu vermeiden.&lt;br /&gt;
&lt;br /&gt;
==join==&lt;br /&gt;
Führt die Zeilen zweier sortierter Dateien anhand von '''Übereinstimmungen''' in einem gemeinsamen Feld zusammen.&lt;br /&gt;
&lt;br /&gt;
 root@zero:~# more name&lt;br /&gt;
 1. karl&lt;br /&gt;
 2. heinz&lt;br /&gt;
 3. hans&lt;br /&gt;
 4. otto&lt;br /&gt;
 root@zero:~# more tel&lt;br /&gt;
 1. 1234&lt;br /&gt;
 2. 4321&lt;br /&gt;
 3. 222&lt;br /&gt;
 4. 121212&lt;br /&gt;
 root@zero:~# join name tel &amp;gt; telefonbuch&lt;br /&gt;
 root@zero:~# more telefonbuch&lt;br /&gt;
 1. karl 1234&lt;br /&gt;
 2. heinz 4321&lt;br /&gt;
 3. hans 222&lt;br /&gt;
 4. otto 121212&lt;br /&gt;
&lt;br /&gt;
 root@zero:~# join -t : /etc/passwd /etc/shadow&lt;br /&gt;
 ....&lt;br /&gt;
 daemon:x:1:1:daemon:/usr/sbin:/bin/sh:*:14181:0:99999:7:::&lt;br /&gt;
 bin:x:2:2:bin:/bin:/bin/sh:*:14181:0:99999:7:::&lt;br /&gt;
 sys:x:3:3:sys:/dev:/bin/sh:*:14181:0:99999:7:::&lt;br /&gt;
 sync:x:4:65534:sync:/bin:/bin/sync:*:14181:0:99999:7:::&lt;br /&gt;
 ...&lt;br /&gt;
&lt;br /&gt;
join in dat1 nach Feld 3 und in dat2 nach Feld 2&lt;br /&gt;
 thomas@lydia:~$ cat dat1 &lt;br /&gt;
 hugo:ps:1111&lt;br /&gt;
 erwin:zw:2222&lt;br /&gt;
 karl:sb:3333&lt;br /&gt;
 rudi:kl:4444&lt;br /&gt;
 thomas@lydia:~$ cat dat2&lt;br /&gt;
 blau:1111:svn&lt;br /&gt;
 grün:2222:fcs&lt;br /&gt;
 gelb:3333:fch&lt;br /&gt;
 rot:4444:fck&lt;br /&gt;
 thomas@lydia:~$ join -t : -1 3 -2 2 dat1 dat2 &lt;br /&gt;
 1111:hugo:ps:blau:svn&lt;br /&gt;
 2222:erwin:zw:grün:fcs&lt;br /&gt;
 3333:karl:sb:gelb:fch&lt;br /&gt;
 4444:rudi:kl:rot:fck&lt;br /&gt;
&lt;br /&gt;
==nl==&lt;br /&gt;
Nummeriert die Zeilen in einer Datei.&lt;br /&gt;
&lt;br /&gt;
 root@zero:~# nl /etc/passwd                                                   &lt;br /&gt;
     1  root:x:0:0:root:/root:/bin/bash                                       &lt;br /&gt;
     2  daemon:x:1:1:daemon:/usr/sbin:/bin/sh                                 &lt;br /&gt;
     3  bin:x:2:2:bin:/bin:/bin/sh                                            &lt;br /&gt;
     4  sys:x:3:3:sys:/dev:/bin/sh                                            &lt;br /&gt;
     5  sync:x:4:65534:sync:/bin:/bin/sync&lt;br /&gt;
     ...&lt;br /&gt;
Nummereriet mit führenden Nullen der Separatir ist ein :&lt;br /&gt;
 root@zero:~# nl -s : -n rz dat1&lt;br /&gt;
&lt;br /&gt;
==od==&lt;br /&gt;
Gibt Dateien im Oktal und anderen Formaten aus.&lt;br /&gt;
&lt;br /&gt;
 od [Optionen] Datei&lt;br /&gt;
&lt;br /&gt;
* -j ''Bytes'': Überspringt die Anzahl ''Bytes'' einer Datei&lt;br /&gt;
* -N ''Bytes'': Gibt nur die Anzahl ''Bytes'' aus&lt;br /&gt;
* -c : Gebe ASCII Zeichen aus&lt;br /&gt;
* -f : Gebe Fließkommazahlen aus&lt;br /&gt;
* -i : Gebe Dezimal Integer aus&lt;br /&gt;
* -l : Gebe Dezimal Long aus&lt;br /&gt;
* -o : Gebe Oktal 2 Byte Einheiten aus&lt;br /&gt;
* -s : Gebe Dezimal 2 Byte Einheiten aus&lt;br /&gt;
* -x : Gebe Hexadezimale 2 Byte einheiten aus&lt;br /&gt;
&lt;br /&gt;
Beispiele&lt;br /&gt;
&lt;br /&gt;
Gebe Master Boot Record (die ersten 512 Byte der Festplatte /dev/sda) als Hexadezimal aus&lt;br /&gt;
 root@zero:~# od '''-x -N''' 512 /dev/sda&lt;br /&gt;
 0000000 48eb 1090 d08e 00bc b8b0 0000 d88e c08e&lt;br /&gt;
 0000020 befb 7c00 00bf b906 0200 a4f3 21ea 0006&lt;br /&gt;
 0000040 be00 07be 0438 0b75 c683 8110 fefe 7507&lt;br /&gt;
 0000060 ebf3 b416 b002 bb01 7c00 80b2 748a 0203&lt;br /&gt;
 0000100 00ff 2000 0001 0000 0200 90fa f690 80c2&lt;br /&gt;
 ...&lt;br /&gt;
&lt;br /&gt;
Schreibe &amp;quot;suxer&amp;quot; in die Datei test&lt;br /&gt;
 root@zero:~# echo &amp;quot;suxer&amp;quot; &amp;gt; test&lt;br /&gt;
Ausgabe Hexadezimal&lt;br /&gt;
 root@zero:~# od -x test&lt;br /&gt;
 0000000 7573 6578 0a72&lt;br /&gt;
 0000006&lt;br /&gt;
&lt;br /&gt;
Ausgabe ASCII Zeichen&lt;br /&gt;
 root@zero:~# od -c test&lt;br /&gt;
 0000000   s   u   x   e   r  \n&lt;br /&gt;
 0000006&lt;br /&gt;
&lt;br /&gt;
==paste==&lt;br /&gt;
Fügt die Zeilen von zwei oder mehr Dateien horizontal zusammen&lt;br /&gt;
 root@zero:~# paste name tel&lt;br /&gt;
 1. karl 1. 1234&lt;br /&gt;
 2. heinz        2. 4321&lt;br /&gt;
 3. hans 3. 222&lt;br /&gt;
 4. otto 4. 121212&lt;br /&gt;
&lt;br /&gt;
==pr==&lt;br /&gt;
Bereitet Textdateien zum Drucken vor.&lt;br /&gt;
&lt;br /&gt;
 root@zero:~# echo &amp;quot;Plan für heute&amp;quot; &amp;gt; dokument&lt;br /&gt;
 root@zero:~# more dokument&lt;br /&gt;
 Plan für heute&lt;br /&gt;
 root@zero:~# pr dokument   &lt;br /&gt;
  &lt;br /&gt;
 &lt;br /&gt;
 2009-06-19 12:44                    dokument                     Seite 1&lt;br /&gt;
 &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
 Plan für heute&lt;br /&gt;
&lt;br /&gt;
Anmerkung Ausmaße der Bildschirmausgabe wie eine Druckseite.&lt;br /&gt;
&lt;br /&gt;
==sed==&lt;br /&gt;
streaming editor. Mit sed ist es möglich, den Inhalt einer Datei automatisch (nicht interaktiv) zu&lt;br /&gt;
bearbeiten. Wie unter Linux üblich, wird auch hier der Text nicht wirklich verändert sondern die &lt;br /&gt;
Änderung erfolgt über die Standardausgabe, die wieder umgeleitet werden kann. Die Syntax ist ähnlich &lt;br /&gt;
des ex modus von vi. Reguläre Ausdrücke können nach Belieben benutzt werden. &lt;br /&gt;
&lt;br /&gt;
Optionen:&lt;br /&gt;
 -e Zeichenkette  wendet die Editorbefehle aus Zeichenkette auf den Text an.&lt;br /&gt;
 -n gibt nur die Zeilen aus, die explizit (durch &amp;quot;p&amp;quot; ausgedruckt werden sollen&lt;br /&gt;
&lt;br /&gt;
Gibt die dritte Zeile der Datei text aus&lt;br /&gt;
 root@zero:~# sed -n &amp;quot;3p&amp;quot; text&lt;br /&gt;
 34&lt;br /&gt;
&lt;br /&gt;
Gibt die erste bis dritte Zeile von text aus&lt;br /&gt;
 root@zero:~# sed -n &amp;quot;1,3p&amp;quot; text&lt;br /&gt;
 sogar noch wichtiger&lt;br /&gt;
 123&lt;br /&gt;
 34&lt;br /&gt;
&lt;br /&gt;
Löschen der Zeile mit &amp;quot;sogar&amp;quot;&lt;br /&gt;
 root@zero:~# sed -e '/sogar/d' &amp;lt; text&lt;br /&gt;
 123&lt;br /&gt;
 34&lt;br /&gt;
 4711&lt;br /&gt;
 test&lt;br /&gt;
&lt;br /&gt;
und schreiben in text2&lt;br /&gt;
 root@zero:~# sed -e '/sogar/d' &amp;lt; text &amp;gt; text2&lt;br /&gt;
 root@zero:~# more text2&lt;br /&gt;
 123&lt;br /&gt;
 34&lt;br /&gt;
 4711&lt;br /&gt;
 test&lt;br /&gt;
&lt;br /&gt;
Alle 3en durch DREI ersetzen&lt;br /&gt;
 root@zero:~# sed -e 's/3/DREI/g' &amp;lt; text&lt;br /&gt;
 sogar noch wichtiger&lt;br /&gt;
 12DREI&lt;br /&gt;
 DREI4&lt;br /&gt;
 4711&lt;br /&gt;
 test&lt;br /&gt;
&lt;br /&gt;
==wc==&lt;br /&gt;
Zählt die Anzahl von Zeichen, Wörter oder Zeilen&lt;br /&gt;
&lt;br /&gt;
Optionen&lt;br /&gt;
* -m : Zählt die Anzahl der Zeichen&lt;br /&gt;
 root@zero:~# more name&lt;br /&gt;
 1. karl&lt;br /&gt;
 2. heinz&lt;br /&gt;
 3. hans&lt;br /&gt;
 4. otto&lt;br /&gt;
 root@zero:~# wc '''-m''' tel&lt;br /&gt;
 33 tel&lt;br /&gt;
&lt;br /&gt;
* -w : Zählt die Anzahl der Wörter (einschließlich Zahlen und andere Zeichen)&lt;br /&gt;
 root@zero:~# wc '''-w''' name&lt;br /&gt;
 8 name&lt;br /&gt;
&lt;br /&gt;
* -l : Zählt die Anzahl der Zeilen&lt;br /&gt;
 root@zero:~# wc '''-l''' name&lt;br /&gt;
 4 name&lt;br /&gt;
&lt;br /&gt;
==Sort==&lt;br /&gt;
&lt;br /&gt;
Zum sortieren von Dateien nach Feldern benutzt man sort. sort liest von STDIN man kann die Datei aber auch als Argument übergeben. &lt;br /&gt;
&lt;br /&gt;
Sortiert nach dem ersten Feld&lt;br /&gt;
  root@zero:~# sort /etc/passwd 	 &lt;br /&gt;
&lt;br /&gt;
Es wird geprüft ob die Datei schon sortiert ist &lt;br /&gt;
 root@zero:~# sort -c /etc/passwd 	&lt;br /&gt;
&lt;br /&gt;
Sortiert nach dem ersten Feld (Richtungsumkehr)  &lt;br /&gt;
 root@zero:~#  sort -r /etc/passwd&lt;br /&gt;
&lt;br /&gt;
Führende Leersortzeichen werden ignoriert &lt;br /&gt;
 root@zero:~# sort -b /etc/passwd&lt;br /&gt;
&lt;br /&gt;
Ausgabe  in die Datei pass&lt;br /&gt;
 root@zero:~# sort  /etc/passwd   -o pass	 &lt;br /&gt;
&lt;br /&gt;
nimmt : als Trenner -Voreinstellung ist TAB&lt;br /&gt;
  root@zero:~# sort -t : /etc/passwd&lt;br /&gt;
&lt;br /&gt;
sortiert nach dem  3 Feld,  der Trenner ist : und es wird nummerisch sortiert&lt;br /&gt;
&lt;br /&gt;
 root@zero:~# sort -t: +2 -n /etc/passwd		&lt;br /&gt;
&lt;br /&gt;
sortiert nach dem  3 Feld,  der Trenner ist : und es wird nummerisch sortiert&lt;br /&gt;
					&lt;br /&gt;
 root@zero:~# sort -t: -k 3 -n /etc/passwd&lt;br /&gt;
&lt;br /&gt;
Sortiert nach dem  3  bis zum 5 Feld, der Trenner ist : und es wird nummerisch sortiert&lt;br /&gt;
	&lt;br /&gt;
 root@zero:~# sort -t: -k 3,5 -n /etc/passwd	&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==INodes==&lt;br /&gt;
Inode (oder I-Node) wird im Deutschen am besten als Informationsknoten oder&lt;br /&gt;
Indexeintrag bezeichnet. Er fasst alle Attribute einer Datei zusammen außer dem Inhalt&lt;br /&gt;
und dem Namen der Datei.&lt;br /&gt;
&lt;br /&gt;
===Daten===&lt;br /&gt;
{| border=1 cellpadding=2&lt;br /&gt;
|type&lt;br /&gt;
|Der Typ der Datei wird als einzelner Buchstabe angezeigt. Der Typ einer Datei wird beim Anlegen der Datei festgelegt&lt;br /&gt;
|-&lt;br /&gt;
|Permissions &lt;br /&gt;
|Die Zugriffsrechte der Datei werden in den 12 Bit sstrwxrwxrwx abgespeichert.Wenn sie gesetzt sind, werden sie bei &lt;br /&gt;
der Ausgabe an Stelle der x-Rechte ausgegeben. Die Zugriffsrechte können mit dem Kommando chmod verändert werden.&lt;br /&gt;
|-&lt;br /&gt;
|link count&lt;br /&gt;
|In UNIX kann eine Datei mehr als einen Namen haben. Der Link Count gibt die Anzahl der Namen einer Datei an. Er kann&lt;br /&gt;
mit dem Kommando ln erhöht und dem Kommando rm erniedrigt werden.&lt;br /&gt;
|-&lt;br /&gt;
|owner&lt;br /&gt;
|Für den Dateieigentümer gelten die in der ersten rwx-Gruppe festgelegten Zugriffsrechte. Standardmäßig ist der &lt;br /&gt;
Eigentümer einer Datei derjenige Benutzer, der die Datei angelegt hat.&lt;br /&gt;
|-&lt;br /&gt;
|group&lt;br /&gt;
|Für Benutzer, die in der gleichen Gruppe sind, der die Datei angehört, gelten die in der zweiten rwx-Gruppe festgelegten&lt;br /&gt;
Zugriffsrechte. In System V gehört eine Datei standardmäßig der Gruppe an, in der der anlegende Benutzer gerade ist.&lt;br /&gt;
|-&lt;br /&gt;
|size&lt;br /&gt;
|Bei normalen Dateien und Verzeichnissen gibt diese Information die Länge der Datei in Byte an.&lt;br /&gt;
|-&lt;br /&gt;
|access time&lt;br /&gt;
|Die Zugriffszeit gibt den Zeitpunkt des letzten Lesezugriffes auf eine Datei an. Aus Effizienzgründen wird die &lt;br /&gt;
Zugriffszeit an Verzeichnissen nicht gesetzt, wenn ein Verzeichnis durchsucht wird, obwohl man dies erwarten könnte. (ls -l --time=atime)&lt;br /&gt;
|-&lt;br /&gt;
|modification time&lt;br /&gt;
|Die Modifikationszeit gibt die Zeit des letzten Schreibzugriffes auf die Daten der Datei an. Intern speichert UNIX &lt;br /&gt;
die Zeit als Sekunden seit Beginn des Jahres 1970 und in GMT ab. Für die Ausgabe wird dies in ein besser lesbares &lt;br /&gt;
Format in der lokalen Zeitzone umgewandelt. (ls -l)&lt;br /&gt;
|-&lt;br /&gt;
|change time &lt;br /&gt;
|Die Veränderungszeit gibt das Datum der letzten Statusänderung der Datei an. Sie wird immer dann gesetzt, wenn die &lt;br /&gt;
Informationen über die Datei sich ändern (Datum der Erzeugung wird nicht gespeichert) (ls -lc)&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
===Dateiarten===&lt;br /&gt;
{| border=1 cellpadding=2&lt;br /&gt;
!Zeichen&lt;br /&gt;
!Typ&lt;br /&gt;
!Zweck&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;nowiki&amp;gt;-&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
|file&lt;br /&gt;
|normale Datei&lt;br /&gt;
|-&lt;br /&gt;
|d&lt;br /&gt;
|directory&lt;br /&gt;
|Verzeichnis&lt;br /&gt;
|-&lt;br /&gt;
|b&lt;br /&gt;
|block device&lt;br /&gt;
|Gerätedatei&lt;br /&gt;
|-&lt;br /&gt;
|c&lt;br /&gt;
|character device&lt;br /&gt;
|Gerätedatei&lt;br /&gt;
|-&lt;br /&gt;
|l&lt;br /&gt;
|link&lt;br /&gt;
|Querverweis&lt;br /&gt;
|-&lt;br /&gt;
|p&lt;br /&gt;
|named pipe&lt;br /&gt;
|Benannte Pipeline&lt;br /&gt;
|-&lt;br /&gt;
|s&lt;br /&gt;
|socket&lt;br /&gt;
|Netzwerkverbindung&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
====Normale Dateien====&lt;br /&gt;
Unter einer normalen Datei versteht man die Ansammlung von Daten. Dies kann ein Text, Programm, Bild oder sonstiges sein. &lt;br /&gt;
Beispiel&lt;br /&gt;
 root@zero:~# ls text&lt;br /&gt;
 text&lt;br /&gt;
&lt;br /&gt;
====Verzeichnisse====&lt;br /&gt;
Dateien werden in Verzeichnissen gespeichert, nur so ist eine Ordnung möglich. &lt;br /&gt;
 root@zero:~# mkdir -v Ordner&lt;br /&gt;
 mkdir: Verzeichnis „Ordner“ angelegt&lt;br /&gt;
 &lt;br /&gt;
 root@zero:~# ls -d ~/*&lt;br /&gt;
 /root/error  /root/neuertext  /root/Ordner  /root/profile  /root/test  /root/text  /root/verzeichnis&lt;br /&gt;
&lt;br /&gt;
====Gerätedateien (Block und Char)====&lt;br /&gt;
Gerätedateien ermöglichen Anwendungsprogrammen unter Benutzung des  Kernels den Zugriff auf die Hardwarekomponenten des &lt;br /&gt;
Systems. &lt;br /&gt;
&lt;br /&gt;
Beispiele&lt;br /&gt;
&lt;br /&gt;
Sicherung des Master Boot Records der ersten Festplatte&lt;br /&gt;
 root@zero:~# dd if=/dev/sda1 of=/tmp/mbr.img bs=512 count=1&lt;br /&gt;
&lt;br /&gt;
Einhängen des CD-ROM Laufwerks&lt;br /&gt;
 root@zero:~# mount /dev/cdrom /media/cdrom -t iso9660&lt;br /&gt;
&lt;br /&gt;
====Named Pipes====&lt;br /&gt;
Benannte Pipes (Named Pipes) können dagegen auch zur Kommunikation zwischen Prozessen eingesetzt werden, die nicht miteinander&lt;br /&gt;
verwandt sind und sich darüber hinaus auf unterschiedlichen Rechnern innerhalb eines Netzwerkes befinden dürfen. Sie sind &lt;br /&gt;
flexibler als anonyme Pipes und eignen sich für sogenannte Client-Server-Anwendungen (es lassen sich auch RPCs realisieren).&lt;br /&gt;
Benannte Pipes ermöglichen die gleichzeitige Kommunikation in beide Richtungen, das heißt, Daten können im Vollduplexbetrieb &lt;br /&gt;
zwischen den Prozessen ausgetauscht werden.&lt;br /&gt;
 &lt;br /&gt;
Erstelle Named Pipe mit Namen sux. Schreibe &amp;quot;Hallo Welt&amp;quot; in die Pipe sux und bleibe im Hintergrund. Gebe Inhalt der Pipe mit cat aus&lt;br /&gt;
 root@zero:~# mkfifo sux ; echo 'Hallo Welt' &amp;gt; sux &amp;amp; cat &amp;lt; sux&lt;br /&gt;
 [1] 12947&lt;br /&gt;
 Hallo Welt&lt;br /&gt;
 [1]+  Done                    echo 'Hallo Welt' &amp;gt; sux&lt;br /&gt;
&lt;br /&gt;
====Sockets====&lt;br /&gt;
Schnittstelle um es vernetzten Rechnern zu ermöglichen, miteinander zu kommunizieren.&lt;br /&gt;
&lt;br /&gt;
Sie ist in der Regel definiert durch IP-Adresse sowie Port. &lt;br /&gt;
&lt;br /&gt;
====Links====&lt;br /&gt;
Bei Links handelt es sich um symbolische Verweise auf andere Dateien&lt;br /&gt;
&lt;br /&gt;
'''Softlink'''&lt;br /&gt;
Ein Softlink ist eine Datei die nur auf den Namen einer anderen Datei verweist. Wenn die Originaldatei gelöscht wird, zeigt &lt;br /&gt;
der Link ins Leere. &lt;br /&gt;
&lt;br /&gt;
 ln -s datei softlink&lt;br /&gt;
&lt;br /&gt;
{| border=1 cellpadding=2&lt;br /&gt;
| Vorteile&lt;br /&gt;
| Symbolische Links können auch auf Verzeichnisse angelegt werden&amp;lt;br&amp;gt;Sie sind partitionsübergreifend&amp;lt;br&amp;gt;Man kann sie auf Dateien anlegen, die noch nicht existieren&lt;br /&gt;
|-&lt;br /&gt;
| Nachteile&lt;br /&gt;
| Wenn das Original gelöscht ist, ist kein Zugriff mehr möglich&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Beispiel&lt;br /&gt;
 root@zero:~# ln -s text verweis&lt;br /&gt;
 root@zero:~# ls -l verweis&lt;br /&gt;
 lrwxrwxrwx 1 root root 4 2009-06-18 15:48 verweis -&amp;gt; text&lt;br /&gt;
&lt;br /&gt;
'''Hardlinks'''&lt;br /&gt;
 ln datei hardlink&lt;br /&gt;
Eigentlich ist jede Datei ein Hardlink. Ein Hardlink ist ein Verzeichniseintrag,&lt;br /&gt;
der auf eine Inode verweist. Beim Erzeugen einer Datei verweist ein Eintrag auf&lt;br /&gt;
eine Inode. Man kann dann weitere Verweise erzeugen. Der Linkcounter wird&lt;br /&gt;
jeweils um 1 erhöht. Beim Löschen einer Datei wird er jeweils um 1 reduziert.&lt;br /&gt;
Wird der Wert 0 erreicht, ist die Datei gelöscht.&lt;br /&gt;
{| border=1 cellpadding=2&lt;br /&gt;
| Vorteile&lt;br /&gt;
|Zugriff auf die Daten, selbst wenn das Orginal gelöscht ist.&lt;br /&gt;
|-&lt;br /&gt;
|Nachteile&lt;br /&gt;
|Man kann keine Hardlinks auf Verzeichnisse anlegen.&lt;br /&gt;
Ist nur innerhalb einer Partion möglich.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Beispiel&lt;br /&gt;
 root@zero:~# touch 1&lt;br /&gt;
 root@zero:~# echo &amp;quot;text&amp;quot; &amp;gt; 1&lt;br /&gt;
 root@zero:~# ln 1 2&lt;br /&gt;
 root@zero:~# more 2&lt;br /&gt;
 text&lt;br /&gt;
 root@zero:~# echo &amp;quot;doch kein text&amp;quot; &amp;gt; 1&lt;br /&gt;
 root@zero:~# more 1&lt;br /&gt;
 doch kein text&lt;br /&gt;
 root@zero:~# more 2&lt;br /&gt;
 doch kein text&lt;br /&gt;
&lt;br /&gt;
Weitere Optionen:&lt;br /&gt;
 -b sichert Dateien, statt sie zu überschreiben &lt;br /&gt;
 -f Überschreibt bestehende, gleichnamige Dateien&lt;br /&gt;
 -i fragt vor dem Überschreiben nach Bestätigung&lt;br /&gt;
 -v ausführliche Meldungen&lt;br /&gt;
&lt;br /&gt;
==Prozesse==&lt;br /&gt;
===Was ist ein Prozess?===&lt;br /&gt;
Ein Prozess setzt sich aus zwei Teilen zusammen:&lt;br /&gt;
&lt;br /&gt;
1.Programm, das in den Hauptspeicher geladen wurde&lt;br /&gt;
&lt;br /&gt;
2.Prozessumgebung&lt;br /&gt;
&lt;br /&gt;
Unter einem Prozess versteht man ein Programm (binär), das in den Hauptspeicher&lt;br /&gt;
geladen wurde. Also nicht das Program selbst, das auf der Festplatte liegt ist der&lt;br /&gt;
Prozess, sondern es wird erst durch das Laden in den Hauptspeicher dazu.&lt;br /&gt;
Normalerweise liegt ein Programm als ausführbare Datei irgendwo auf der&lt;br /&gt;
Festplatte oder auf Diskette. Ob es sich bei dem Programm um eine binäre Datei&lt;br /&gt;
handelt, kann man mit dem Befehl '' file '' feststellen.&lt;br /&gt;
 &lt;br /&gt;
 root@zero:~# file /bin/mkdir&lt;br /&gt;
 /bin/mkdir: ELF 32-bit LSB executable, Intel 80386, version 1 (SYSV), dynamically linked (uses shared libs), for GNU/Linux 2.6.8, stripped&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Die Datei liegt im Maschinencode vor und kann in den Hauptspeicher geladen&lt;br /&gt;
werden. Sobald dies geschehen ist, kann der Rechner diesen Maschinencode&lt;br /&gt;
abarbeiten (ausführen).&lt;br /&gt;
&lt;br /&gt;
Da aber ein Programm nicht direkt auf die Hardware zugreifen soll, muss es vom&lt;br /&gt;
Betriebsystem kontrolliert werden. Das Betriebssystem liegt logisch gesehen&lt;br /&gt;
zwischen Hardware und Anwendung. Das Betriebssystem ordnet jedem Prozess&lt;br /&gt;
verschiedene Kenndaten zu, um die Prozesse verwalten zu können. Alle&lt;br /&gt;
Kenndaten, die einem Prozess zugeordnet sind, nennt man die&lt;br /&gt;
Prozessumgebung.Wenn man in der Shell ein Kommando eingibt, wird ein Prozess&lt;br /&gt;
kreiert. Natürlich ist die Shell selbst auch ein Prozess. Ein Prozess kann aber&lt;br /&gt;
genauso gut ein Serverprozess (Dienst) sein, z.B. Apache.&lt;br /&gt;
Ein wesentliches Merkmal eines Prozesses ist die Prozesskommunikation. Über im&lt;br /&gt;
Betriebssystem implementierte Methoden ist es möglich, dass verschiedene&lt;br /&gt;
Prozesse Signale und Daten untereinander austauschen können.&lt;br /&gt;
Dadurch wird auch dem Benutzer ermöglicht, einem Prozeß bestimmte Signale zu&lt;br /&gt;
senden bzw. auf den Status eines Prozesses Einfluss zu nehmen.&lt;br /&gt;
&lt;br /&gt;
===Prozesstabelle (Anzeige mit ps)===&lt;br /&gt;
Da zu jedem Prozess Kenndaten geführt werden, müssen diese auch irgendwo&lt;br /&gt;
festgehalten werden. Das geschieht in der sogenannten Prozesstabelle.&lt;br /&gt;
&lt;br /&gt;
Kenndaten der Prozesse (Auswahl):&lt;br /&gt;
* F Flags (z.B. ausgelagert; Systemprozess; Trace,...)&lt;br /&gt;
* UID Nutzer, mit dessen Rechten der Prozess ausgeführt wird&lt;br /&gt;
* PID Prozess - ID. Diese Nummer gibt eine eindeutige Prozess - Nummer&lt;br /&gt;
an. Sie wird vom System automatisch beim Starten des Prozesses&lt;br /&gt;
vergeben und ist für die Laufzeit eindeutig.&lt;br /&gt;
* PPID Prozessnumer der Eltern-Prozesses&lt;br /&gt;
* PRI Priorität eines Prozesses; je niedriger der Wert ist, desto besser&lt;br /&gt;
* NI ist der Nicewert des Prozesses; Nice erniedrigt den Grundwert&lt;br /&gt;
der Priorität des Prozesses und gibt damit Prozessorzeit für andere&lt;br /&gt;
Prozesse frei.&lt;br /&gt;
* SIZE Speichergröße des Prozesses inklusive Stack (eine Art Zwischenspeicher)&lt;br /&gt;
* RSS Verbrauch an physischen Speicher&lt;br /&gt;
* WCHAN ist der Name der Kernerlfunktion, in der der Prozess schläft&lt;br /&gt;
* STAT Status des Prozesses&lt;br /&gt;
R läuft       S schlafend     D nicht störbarer Schlaf&lt;br /&gt;
T angehalten  Z Zombie        W der Prozess belegt keine Seiten&lt;br /&gt;
* TIME Bisland benötigte Prozessorzeit&lt;br /&gt;
* SIZE ist die Größe von Text, Daten und Stack&lt;br /&gt;
* TTY die Nummer des kontrollierenden Teminal; wenn hier ein ? steht,&lt;br /&gt;
handelt es sich um einen Dämon oder Serverprozess.&lt;br /&gt;
* COMMAND Angabe des Prozesses selbst. Dies ist meist der Programmname.&lt;br /&gt;
&lt;br /&gt;
Weiteres&lt;br /&gt;
* GID Gruppe, unter der der Prozess läuft&lt;br /&gt;
* Verweis auf das aktuellen Arbeitsverzeichnis&lt;br /&gt;
* Um mit relativen Pfadangaben arbeiten zu können braucht man diesen Eintrag&lt;br /&gt;
* Tabelle mit Verweisen auf aktuell geöffnete Dateien&lt;br /&gt;
* 3 sind automatisch geöffnet Standardeingabe, Standardausgabe und&lt;br /&gt;
Standardfehlerkanal&lt;br /&gt;
&lt;br /&gt;
Beispiel&lt;br /&gt;
 root@zero:~# ps -l&lt;br /&gt;
 F S   UID   PID  PPID  C PRI  NI ADDR SZ WCHAN  TTY          TIME CMD&lt;br /&gt;
 4 R     0 18639 18631  0  80   0 -  1080 -      pts/0    00:00:00 bash&lt;br /&gt;
 0 R     0 25904 18639  0  80   0 -   635 -      pts/0    00:00:00 ps&lt;br /&gt;
&lt;br /&gt;
===Eltern und Kinder===&lt;br /&gt;
Jeder Prozess kann weitere Prozesse erzeugen. Die erzeugten Prozesse bezeichnet&lt;br /&gt;
man als Kindprozesse. Jeder Kindprozess weiß anhand der PID, woher er stammt.&lt;br /&gt;
&lt;br /&gt;
Alle Prozesse sind von einem anderen Prozess gestartet worden, mit Ausnahme&lt;br /&gt;
des Pseudoprozesses (noch im Kernel beim Starten erzeugter Prozess). Dieser hat&lt;br /&gt;
die Prozessnummer 0. Er hat die Aufgabe, den Init Prozess ( /sbin/init die Nummer&lt;br /&gt;
1) zu starten, der in System V alle anderen Prozesse direkt oder über seine Kind-&lt;br /&gt;
prozesse startet. (init wird konfiguriert durch die /etc/inittab)&lt;br /&gt;
&lt;br /&gt;
Es gibt zwei Arten wie ein Prozess gestartet werden kann:&lt;br /&gt;
&lt;br /&gt;
# Fork und Exec: Prozessumgebung wird dupliziert, der neue Prozess bekommt eine eigene neue PID&lt;br /&gt;
# Exec: Alter Prozess wird durch neuen Prozess überladen (geht mit dem shell-buildin exec)&lt;br /&gt;
&lt;br /&gt;
'''Rechte auf Objekte UID GID'''&lt;br /&gt;
Ob ein Prozess auf eine Datei zugreifen kann, entscheidet der Kernel anhand der&lt;br /&gt;
Zugriffssrechte, die auf der Datei gesetzt sind. Er checkt anhand der UID und GID&lt;br /&gt;
des Prozesses, ob es erlaubt ist. Mit dieser Technik wird letztendlich geprüft, was&lt;br /&gt;
ein User darf, und was nicht.&lt;br /&gt;
&lt;br /&gt;
===Rechenzeit und Priorität===&lt;br /&gt;
Da auch bei Prozessen eine Gerechtigkeit herschen muss, muss eine Instanz&lt;br /&gt;
darüber entscheiden wie lange ein Prozess Rechenzeit verbrauchen darf.&lt;br /&gt;
Folgende Kenndaten werden dazu benötigt&lt;br /&gt;
* clocktick = Zeiteinheit&lt;br /&gt;
* n = Faktor über den Kernel einstellbar&lt;br /&gt;
* slice = n &amp;lt;nowiki&amp;gt;*&amp;lt;/nowiki&amp;gt; clocktick&lt;br /&gt;
* agingtime = weitere Zeiteinheit über den Kernel einstellbar&lt;br /&gt;
&lt;br /&gt;
Es wird davon ausgegangen das der Prozess mit der niedrigsten Priorität gerade&lt;br /&gt;
rechnet. Pro clocktick erhöht sich die Priorität dieses Prozesses um eins.&lt;br /&gt;
&lt;br /&gt;
Jetzt können 3 Situationen eintreten die alle dazu führen das der Scheduler&lt;br /&gt;
aufgerufen wird.&lt;br /&gt;
&lt;br /&gt;
# Prozess blockiert wegen einer Ausgabe oder Eingabe.&lt;br /&gt;
# Gibt Rechenzeit freiwillig ab.&lt;br /&gt;
# Der Slice endet.&lt;br /&gt;
&lt;br /&gt;
Der Aufruf des Schedulers bewirkt das der Prozess mit der niedrigsten Priorität&lt;br /&gt;
gescheduled wird, er also nun rechnen darf. Nach Ablauf der agingtime werden&lt;br /&gt;
nun die Prozesse &amp;quot;gealtert&amp;quot;. Das geschieht nach folgender Formel&lt;br /&gt;
&lt;br /&gt;
Neue Priorität = Alte Priorität / 2 + Nicewert&lt;br /&gt;
&lt;br /&gt;
Der User hat die Möglichkeit, über den sogenannten Nicefaktor den Grundwert für&lt;br /&gt;
einen Prozess zu senken. Der Prozess braucht dann länger für seine Abarbeitung.&lt;br /&gt;
Er verhält sich somit netter zu den anderen Prozessen. Normale User können nur&lt;br /&gt;
netter werden, der Systemverwalter kann auch nicht netter (gemeiner) werden. Der&lt;br /&gt;
Bereich liegt zwischen 19 (sehr nett) bis 0 (weniger nett) für die User, und 19 bis&lt;br /&gt;
-20 für root.&lt;br /&gt;
&lt;br /&gt;
[[Image:pri.png]]&lt;br /&gt;
&lt;br /&gt;
'''Signale'''&lt;br /&gt;
&lt;br /&gt;
Mit den Kommando kill und killall kann man Prozessen Signale schicken&lt;br /&gt;
&lt;br /&gt;
 kill -Signalnummer PID &lt;br /&gt;
&lt;br /&gt;
Signalnummer&lt;br /&gt;
{| border=1 cellpadding=2&lt;br /&gt;
!Signalname&lt;br /&gt;
!Wert&lt;br /&gt;
!Aktion&lt;br /&gt;
|-&lt;br /&gt;
|SIGHUP&lt;br /&gt;
|1&lt;br /&gt;
|Neuinitialisierung eines Prozesses&lt;br /&gt;
|-&lt;br /&gt;
|SIGINT&lt;br /&gt;
|2&lt;br /&gt;
|Interrupt-Signal von der Tastatur (STRG+c)&lt;br /&gt;
|-&lt;br /&gt;
|SIGQUIT&lt;br /&gt;
|3&lt;br /&gt;
|Interrupt-Signal von der Tastatur (STRG+c) mit Dump&lt;br /&gt;
|-&lt;br /&gt;
|SIGKILL&lt;br /&gt;
|9&lt;br /&gt;
|unwiderrufliches Beendigungssignal (Töten)&lt;br /&gt;
|-&lt;br /&gt;
|SIGSEGV&lt;br /&gt;
|11&lt;br /&gt;
|Ungültige Speicherreferenz (bedeutet oft auf defekten Speicher)&lt;br /&gt;
|-&lt;br /&gt;
|SIGTERM &lt;br /&gt;
|15&lt;br /&gt;
|Beendigungssignal (geöffnete Dateien werden geschlossen)&lt;br /&gt;
|-&lt;br /&gt;
|SIGCONT &lt;br /&gt;
|18&lt;br /&gt;
|Weiterfahren, wenn gestoppt&lt;br /&gt;
|-&lt;br /&gt;
|SIGSTOP&lt;br /&gt;
|19&lt;br /&gt;
|Prozessstop&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Beispiel&lt;br /&gt;
 root@zero:~# kill -1 7562&lt;br /&gt;
&lt;br /&gt;
===Programme im Zusammenhang mit Prozessen===&lt;br /&gt;
* ps: Zeigt die Prozesse mit ihrem Status an&lt;br /&gt;
 root@zero:~# ps&lt;br /&gt;
  PID TTY          TIME CMD&lt;br /&gt;
 14134 pts/0    00:00:00 bash&lt;br /&gt;
 14149 pts/0    00:00:00 ps&lt;br /&gt;
&lt;br /&gt;
 root@zero:~# ps -elf | grep apache&lt;br /&gt;
 1 S root      5738     1  0  80   0 -  5461 select Jun16 ?        00:00:00 /usr/sbin/apache2 -k start&lt;br /&gt;
 5 S www-data  5739  5738  0  80   0 -  5581 inet_c Jun16 ?        00:00:00 /usr/sbin/apache2 -k start&lt;br /&gt;
 5 S www-data  5742  5738  0  80   0 -  5461 inet_c Jun16 ?        00:00:00 /usr/sbin/apache2 -k start&lt;br /&gt;
 5 S www-data  5743  5738  0  80   0 -  5461 inet_c Jun16 ?        00:00:00 /usr/sbin/apache2 -k start&lt;br /&gt;
 5 S www-data  5745  5738  0  80   0 -  5461 inet_c Jun16 ?        00:00:00 /usr/sbin/apache2 -k start&lt;br /&gt;
 5 S www-data  5746  5738  0  80   0 -  5461 inet_c Jun16 ?        00:00:00 /usr/sbin/apache2 -k start&lt;br /&gt;
 0 S root     14153 14134  0  80   0 -   837 pipe_w 16:59 pts/0    00:00:00 grep apache&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* nice: Lässt ein Programm mit verändertem Grundwert der Priorität laufen&lt;br /&gt;
 root@zero:~# nice&lt;br /&gt;
 0&lt;br /&gt;
 root@zero:~# nice -n 9 bash&lt;br /&gt;
 root@zero:~# nice&lt;br /&gt;
 9&lt;br /&gt;
 root@zero:~#&lt;br /&gt;
&lt;br /&gt;
* renice: Ändert den Grundwert der Priorität eines laufenden Prozesses&lt;br /&gt;
 root@zero:~# renice 10 5742&lt;br /&gt;
 5742: Alte Priorität: 0, neue Priorität: 10&lt;br /&gt;
&lt;br /&gt;
* top: Zeigt die Prozesse mit ihrem Status an (Abbrechen mit q)&lt;br /&gt;
 root@zero:~# top&lt;br /&gt;
&lt;br /&gt;
* pstree: Zeigt die Prozesse als Baumstruktur&lt;br /&gt;
 root@zero:~# pstree&lt;br /&gt;
 init─┬─NetworkManager&lt;br /&gt;
      ├─acpid&lt;br /&gt;
      ├─apache2───5*[apache2]&lt;br /&gt;
      ├─atd&lt;br /&gt;
      ├─bluetoothd&lt;br /&gt;
      ├─console-kit-dae───63*[{console-kit-dae}]&lt;br /&gt;
      ├─cron&lt;br /&gt;
      ├─cupsd&lt;br /&gt;
      ├─dbus-daemon&lt;br /&gt;
      ├─dd&lt;br /&gt;
      ├─gdm───gdm─┬─Xorg&lt;br /&gt;
      │           └─gdmgreeter&lt;br /&gt;
      ├─6*[getty]&lt;br /&gt;
      ├─hald───hald-runner─┬─hald-addon-acpi&lt;br /&gt;
      │                    ├─hald-addon-inpu&lt;br /&gt;
      │                    └─2*[hald-addon-stor]&lt;br /&gt;
      ├─klogd&lt;br /&gt;
      ├─nm-system-setti&lt;br /&gt;
      ├─nmbd&lt;br /&gt;
      ├─nscd───11*[{nscd}]&lt;br /&gt;
      ├─portmap&lt;br /&gt;
      ├─rpc.statd&lt;br /&gt;
      ├─slapd───2*[{slapd}]&lt;br /&gt;
      ├─smbd───smbd&lt;br /&gt;
      ├─sshd───sshd───bash───bash───pstree&lt;br /&gt;
      ├─syslogd&lt;br /&gt;
      ├─system-tools-ba&lt;br /&gt;
      ├─udevd&lt;br /&gt;
      ├─winbindd─┬─winbindd───winbindd&lt;br /&gt;
      │          └─3*[winbindd]&lt;br /&gt;
      └─wpa_supplicant&lt;br /&gt;
&lt;br /&gt;
===Jobs===&lt;br /&gt;
Unter einem Job versteht man ein Programm, welches man von der Shell gelöst&lt;br /&gt;
hat. D. h. man kann ganz normal weiter arbeiten und der Job verrichtet seinen&lt;br /&gt;
Dienst im Hintergrund. Man kann jederzeit zu diesem Job wieder Kontakt&lt;br /&gt;
aufnehmen.&lt;br /&gt;
&lt;br /&gt;
Ein Job kann auf 2 Arten gestarten werden:&lt;br /&gt;
&lt;br /&gt;
# Durch Anhängen des &amp;amp; Zeichens beim Programmstart&lt;br /&gt;
 root@zero:~# tail -f /var/log/messages &amp;amp;&lt;br /&gt;
 Jun 19 06:59:31 zero -- MARK --&lt;br /&gt;
 Jun 19 07:19:31 zero -- MARK --&lt;br /&gt;
 Jun 19 07:39:32 zero -- MARK --&lt;br /&gt;
 Jun 19 07:44:57 zero syslogd 1.5.0#5ubuntu3: restart.&lt;br /&gt;
 Jun 19 07:59:32 zero -- MARK --&lt;br /&gt;
 Jun 19 08:19:32 zero -- MARK --&lt;br /&gt;
 Jun 19 08:39:32 zero -- MARK --&lt;br /&gt;
 Jun 19 08:59:32 zero -- MARK --&lt;br /&gt;
 Jun 19 09:19:33 zero -- MARK --&lt;br /&gt;
 Jun 19 09:39:33 zero -- MARK --&lt;br /&gt;
 [3] 27421&lt;br /&gt;
&lt;br /&gt;
# Durch Stoppen des Prozesses durch Drücken von Strg-Z und in den Hintergrund schicken mit %n (n ist die Jobnummer)&lt;br /&gt;
 root@zero:~# watch cat /proc/cpuinfo&lt;br /&gt;
 Strg-Z&lt;br /&gt;
 [4]+  Stopped                 watch cat /proc/cpuinfo&lt;br /&gt;
 root@zero:~# bg %4&lt;br /&gt;
 [4]+ watch cat /proc/cpuinfo &amp;amp;&lt;br /&gt;
&lt;br /&gt;
Anweisungen im Zusammenhang mit Jobs (n ist die Jobnummer)&lt;br /&gt;
* bg %n : Einen Job in den Hintergrund stellen (wie oben)&lt;br /&gt;
* fg %n : Einen Job in den Vordergrund holen&lt;br /&gt;
 root@zero:~# fg %4&lt;br /&gt;
 watch cat /proc/cpuinfo&lt;br /&gt;
&lt;br /&gt;
* jobs : Aktive Jobs ausgeben&lt;br /&gt;
&lt;br /&gt;
 root@zero:~# jobs&lt;br /&gt;
 [1]   Running                 tail -f /var/log/syslog &amp;amp;&lt;br /&gt;
 [2]   Running                 tail -f /var/log/syslog &amp;amp;&lt;br /&gt;
 [3]-  Running                 tail -f /var/log/messages &amp;amp;&lt;br /&gt;
 [4]+  Stopped                 watch cat /proc/cpuinfo&lt;br /&gt;
&lt;br /&gt;
* Strg-Z : Einen Vordergrund-Job vorübergehend anhalten&lt;br /&gt;
* kill -STOP %n : Unterbricht Job im Hintergrund&lt;br /&gt;
 root@zero:~# kill -STOP %1&lt;br /&gt;
 root@zero:~# jobs&lt;br /&gt;
 [1]+  '''Stopped'''                 tail -f /var/log/syslog&lt;br /&gt;
 [2]   Running                 tail -f /var/log/syslog &amp;amp;&lt;br /&gt;
 [3]   Running                 tail -f /var/log/messages &amp;amp;&lt;br /&gt;
 [4]-  Stopped                 watch cat /proc/cpuinfo&lt;br /&gt;
* kill -CONT %n : Setzt den unterbrochenen Job im Hintergrund fort&lt;br /&gt;
root@zero:~# kill -CONT %1&lt;br /&gt;
root@zero:~# jobs&lt;br /&gt;
 [1]+  '''Running'''                 tail -f /var/log/syslog &amp;amp;&lt;br /&gt;
 [2]   Running                 tail -f /var/log/syslog &amp;amp;&lt;br /&gt;
 [3]   Running                 tail -f /var/log/messages &amp;amp;&lt;br /&gt;
 [4]-  Stopped                 watch cat /proc/cpuinfo&lt;br /&gt;
* kill -KILL %n : Tötet Job im Hintergrund&lt;br /&gt;
 root@zero:~# kill -KILL %1&lt;br /&gt;
 root@zero:~# jobs&lt;br /&gt;
 [1]+  '''Killed'''                  tail -f /var/log/syslog&lt;br /&gt;
 [2]   Running                 tail -f /var/log/syslog &amp;amp;&lt;br /&gt;
 [3]   Running                 tail -f /var/log/messages &amp;amp;&lt;br /&gt;
 [4]-  Stopped                 watch cat /proc/cpuinfo&lt;br /&gt;
 root@zero:~# jobs&lt;br /&gt;
 [2]   Running                 tail -f /var/log/syslog &amp;amp;&lt;br /&gt;
 [3]-  Running                 tail -f /var/log/messages &amp;amp;&lt;br /&gt;
 [4]+  Stopped                 watch cat /proc/cpuinfo&lt;br /&gt;
&lt;br /&gt;
Bedingungen, die zu Jobausführung eingehalten werden sollen:&lt;br /&gt;
* Der Job soll nicht auf den Bildschirm schreiben (Standardausgabe +Standardfehlerkanal).&lt;br /&gt;
* Er soll keine Eingaben vom Benutzer erwarten.&lt;br /&gt;
&lt;br /&gt;
==Suchen von Dateien==&lt;br /&gt;
===find===&lt;br /&gt;
 find ab_wo_wird_gesucht was_wird_gesucht aktion&lt;br /&gt;
 find [Pfad] [Bedingung] [Aktion]&lt;br /&gt;
&lt;br /&gt;
====Nach Namen====&lt;br /&gt;
 find [Pfad] '''-name''' [Name]&lt;br /&gt;
 &lt;br /&gt;
Finde alle Dateien mit Namen test ab dem Verzeichnis /home und gebe diese Zeilenweise aus&lt;br /&gt;
 root@zero:~# find /home -name test -print&lt;br /&gt;
 /home/xinux/test&lt;br /&gt;
 /home/test&lt;br /&gt;
&lt;br /&gt;
Wie oben, jedoch mit Namensanfang test&lt;br /&gt;
 root@zero:/home/xinux# find /home -name 'test*'&lt;br /&gt;
 /home/xinux/testdatei&lt;br /&gt;
 /home/xinux/test&lt;br /&gt;
 /home/test&lt;br /&gt;
&lt;br /&gt;
====Nach Benutzer(Eigentümer)====&lt;br /&gt;
 root@zero:/tmp# find /tmp/ '''-user''' xinux&lt;br /&gt;
 /tmp/datei&lt;br /&gt;
&lt;br /&gt;
====Nach Gruppe====&lt;br /&gt;
 root@zero:/tmp# find /tmp/ '''-group''' hacker&lt;br /&gt;
 /tmp/datei3&lt;br /&gt;
 /tmp/datei2&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
====Nach Typ====&lt;br /&gt;
Es wird nach Dateien anhand Ihrer Art gesucht:&lt;br /&gt;
 find [Pfad] '''-type''' [Typ] &lt;br /&gt;
Typ:&lt;br /&gt;
* f: Normale Dateien&lt;br /&gt;
 root@zero:~# find /tmp/ -type f&lt;br /&gt;
 /tmp/mbr.img&lt;br /&gt;
 /tmp/datei&lt;br /&gt;
 /tmp/zeugs&lt;br /&gt;
 /tmp/.X0-lock&lt;br /&gt;
* d: Verzeichnisse&lt;br /&gt;
 root@zero:~# find /var/log -type d&lt;br /&gt;
 /var/log&lt;br /&gt;
 /var/log/apache2&lt;br /&gt;
 /var/log/unattended-upgrades&lt;br /&gt;
 /var/log/apparmor&lt;br /&gt;
 /var/log/ConsoleKit&lt;br /&gt;
 /var/log/dist-upgrade&lt;br /&gt;
 /var/log/dist-upgrade/20090526-1052&lt;br /&gt;
 /var/log/cups&lt;br /&gt;
 /var/log/apt&lt;br /&gt;
 /var/log/fsck&lt;br /&gt;
 /var/log/samba&lt;br /&gt;
 /var/log/samba/cores&lt;br /&gt;
 /var/log/samba/cores/smbd&lt;br /&gt;
 /var/log/samba/cores/nmbd&lt;br /&gt;
 /var/log/samba/cores/winbindd&lt;br /&gt;
 /var/log/installer&lt;br /&gt;
 /var/log/gdm&lt;br /&gt;
 /var/log/news&lt;br /&gt;
* c: Char Devices (Zeichenorientierte Gerätedatei)&lt;br /&gt;
 root@zero:~# find / -type c&lt;br /&gt;
 /lib/udev/devices/kmem&lt;br /&gt;
 /lib/udev/devices/null&lt;br /&gt;
 /lib/udev/devices/console&lt;br /&gt;
 /lib/udev/devices/ppp&lt;br /&gt;
 /lib/udev/devices/net/tun&lt;br /&gt;
* b: Block Devices (Blockorientierte Gerätedatei)&lt;br /&gt;
* p: Benannte Pipe&lt;br /&gt;
* l: Links&lt;br /&gt;
* s: Sockets&lt;br /&gt;
&lt;br /&gt;
====Nach Modifikation====&lt;br /&gt;
Listet alle Dateien in /etc auf, die innerhalb von zwei Tagen modifiziert wurden&lt;br /&gt;
 root@zero:/var/log# find /etc/ -mtime 2 -print&lt;br /&gt;
 /etc/apache2&lt;br /&gt;
 /etc/apache2/mods-available&lt;br /&gt;
 /etc/apache2/conf.d&lt;br /&gt;
 /etc/apache2/sites-available&lt;br /&gt;
 /etc/bash_completion.d&lt;br /&gt;
 /etc/blkid.tab.old&lt;br /&gt;
 /etc/firefox-3.0/profile&lt;br /&gt;
 /etc/firefox-3.0/profile/chrome&lt;br /&gt;
 /etc/firefox-3.0/pref&lt;br /&gt;
 /etc/profile.d&lt;br /&gt;
 /etc/ufw/applications.d&lt;br /&gt;
 /etc/logrotate.d&lt;br /&gt;
 /etc/xulrunner-1.9&lt;br /&gt;
 /etc/blkid.tab&lt;br /&gt;
 /etc/cron.daily&lt;br /&gt;
 /etc/alternatives&lt;br /&gt;
 /etc/alternatives/x-www-browser&lt;br /&gt;
 /etc/alternatives/xulrunner&lt;br /&gt;
 /etc/gre.d&lt;br /&gt;
 /etc/hal/fdi/policy&lt;br /&gt;
 /etc/dbus-1/system.d&lt;br /&gt;
 /etc/udev/rules.d&lt;br /&gt;
&lt;br /&gt;
====Nach Größe====&lt;br /&gt;
Finde Dateien in /tmp, die größer als 100 MByte sind&lt;br /&gt;
 root@zero:/tmp# find /tmp/ -size +100M&lt;br /&gt;
 /tmp/datei&lt;br /&gt;
&lt;br /&gt;
Finde Dateien in /tmp, die kleiner als 100 KByte sind&lt;br /&gt;
 root@zero:/tmp# find /tmp/ -size -100k&lt;br /&gt;
 /tmp/&lt;br /&gt;
 /tmp/datei3&lt;br /&gt;
 /tmp/backup &lt;br /&gt;
 /tmp/datei2&lt;br /&gt;
 /tmp/.winbindd &lt;br /&gt;
 /tmp/.winbindd/pipe&lt;br /&gt;
 /tmp/mbr.img&lt;br /&gt;
 /tmp/zeugs&lt;br /&gt;
 /tmp/.ICE-unix&lt;br /&gt;
 /tmp/.X0-lock&lt;br /&gt;
 /tmp/datei1&lt;br /&gt;
 /tmp/.X11-unix&lt;br /&gt;
 /tmp/.X11-unix/X0&lt;br /&gt;
 /tmp/pulse-PKdhtXMmr18n&lt;br /&gt;
&lt;br /&gt;
====Nach Berechtigungen====&lt;br /&gt;
Finde Dateien in Home mit der Berechtigung 777 (-rwxrwxrwx)&lt;br /&gt;
 root@zero:/var# find /home/ -perm 777&lt;br /&gt;
 /home/samba&lt;br /&gt;
 /home/xinux/Examples&lt;br /&gt;
 /home/xinux/.pulse/1f0763ee4cf4c7e1d3c07fd149dda37b:runtime&lt;br /&gt;
 /home/test/Examples&lt;br /&gt;
&lt;br /&gt;
===locate===&lt;br /&gt;
Locate arbeitet über einen Index, der erstellt und aktualisiert werden muss. Aus diesem Grund kann locate teilweise nicht &lt;br /&gt;
akutell sein. Es ist immer schneller als find und es durchsucht immer das ganze Dateisystem. &lt;br /&gt;
 locate [Dateiname]&lt;br /&gt;
 &lt;br /&gt;
Lokalisiere die Datei wvdial.conf. Anmerkung: Der Stern wird beim Suchen automatisch hinzugefügt. Entspricht also&lt;br /&gt;
wvidal.conf*&lt;br /&gt;
 root@zero:~# locate wvdial.conf&lt;br /&gt;
 /etc/wvdial.conf&lt;br /&gt;
 /usr/share/man/man5/wvdial.conf.5.gz&lt;br /&gt;
 /var/lib/dpkg/info/wvdial.conffiles&lt;br /&gt;
 /var/lib/dpkg/info/wvdial.config&lt;br /&gt;
&lt;br /&gt;
Lokalisiere die Datei wvdial.conf und nur diese&lt;br /&gt;
 root@zero:~# locate -b '\wvdial.conf'&lt;br /&gt;
 /etc/wvdial.conf&lt;br /&gt;
&lt;br /&gt;
Aktualisieren des Indexes&lt;br /&gt;
 root@zero:~# updatedb&lt;br /&gt;
&lt;br /&gt;
==Wie wird ein Kommando lokalisiert==&lt;br /&gt;
Wenn die Shell alle Ersetzungen in der Kommandozeile vorgenommen und alle Umleitungen vorbereitet hat, ist der Zeitpunkt &lt;br /&gt;
gekommen, auf den der Anwender die ganze Zeit gewartet hat. Die Shell versucht das Kommando auszuführen. Dazu muss sie &lt;br /&gt;
es aber erst lokalisieren. Das erste passende Kommando wird ausgeführt.&lt;br /&gt;
&lt;br /&gt;
Als Kommandoname wird immer das erste Wort eines einfachen Kommandos erkannt. Ein Kommandoname kann mit Pfadnamen in &lt;br /&gt;
einem Verzeichnis (absolut oder relativ) angegeben werden. Die Shell erkennt dies an (mindestens) einem Slash `/' &lt;br /&gt;
im Kommandonamen. Wenn kein Verzeichnis angegeben ist, versucht die Shell selbst, das Kommando zu finden. Dazu wird &lt;br /&gt;
der Kommandoname zuerst in der Hashtabelle gesucht, dann wird er mit den Synonymen, mit den Scriptfunktionen und &lt;br /&gt;
schließlich mit den Shellfunktionen verglichen. &lt;br /&gt;
&lt;br /&gt;
Wird auf diese Weise kein Programm dieses Namens gefunden, werden alle in der PATH-Umgebungsvariablen aufgeführten &lt;br /&gt;
Verzeichnisse nach einer ausführbaren Datei dieses Namens durchsucht. Wird auch hier kein passendes Kommando gefunden, &lt;br /&gt;
gibt die Shell eine Fehlermeldung aus.&lt;br /&gt;
&lt;br /&gt;
===which und type===&lt;br /&gt;
====which====&lt;br /&gt;
which gibt die vollen Pfadnamen der Dateien aus, die bei Benutzung des angegebenen Befehls ausgeführt werden würden.&lt;br /&gt;
&lt;br /&gt;
 which [-a] Dateiname &lt;br /&gt;
&lt;br /&gt;
Optionen:&lt;br /&gt;
&lt;br /&gt;
* -a : Alle Treffer ausgeben, nicht nur den ersten&lt;br /&gt;
* --skip-dot : Verzeichnisse, die mit einem Punkt beginnen, auslassen&lt;br /&gt;
&lt;br /&gt;
Beispiel&lt;br /&gt;
 root@zero:~# which startx&lt;br /&gt;
 /usr/bin/startx&lt;br /&gt;
&lt;br /&gt;
====type====&lt;br /&gt;
Anzeigen der absoluten Pfadnamen von Befehlen, und ob sich diese Befehle in der Hash-Tabelle der aktuellen&lt;br /&gt;
Shell befinden.&lt;br /&gt;
&lt;br /&gt;
 type [Optionen] Befehle&lt;br /&gt;
&lt;br /&gt;
Beispiel&lt;br /&gt;
 root@zero:~# type ls&lt;br /&gt;
 ls is aliased to `ls --color=auto'&lt;br /&gt;
&lt;br /&gt;
Optionen:&lt;br /&gt;
&lt;br /&gt;
* -a : Alle vorkommenden Befehle werden ausgegeben, nicht nur das, welches aufgerufen werden würde&lt;br /&gt;
 root@zero:~# type '''-a''' ls&lt;br /&gt;
 ls is aliased to `ls --color=auto'&lt;br /&gt;
 ls is /bin/ls&lt;br /&gt;
&lt;br /&gt;
* -p : Anzeigen des Eintrags von Befehl in der Hash-Tabelle. Dieser Wert kann sich vom ersten Auftreten des Befehls in PATH&lt;br /&gt;
unterscheiden&lt;br /&gt;
 root@zero:~# type '''-p''' apache2&lt;br /&gt;
 /usr/sbin/apache2&lt;br /&gt;
&lt;br /&gt;
* -t : Anzeigen, ob Befehl ein Aliasname, ein Schlüsselwort, eine Funktion, ein eingebauter Befehl oder eine Datei ist&lt;br /&gt;
 root@zero:~# type '''-t''' apache2&lt;br /&gt;
 file&lt;/div&gt;</summary>
		<author><name>192.168.178.46</name></author>
	</entry>
	<entry>
		<id>https://www.xinux.net/index.php?title=Linux_Grundlagen&amp;diff=74</id>
		<title>Linux Grundlagen</title>
		<link rel="alternate" type="text/html" href="https://www.xinux.net/index.php?title=Linux_Grundlagen&amp;diff=74"/>
		<updated>2009-07-07T10:40:27Z</updated>

		<summary type="html">&lt;p&gt;192.168.178.46: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Einführung==&lt;br /&gt;
===Geschichte Unix===&lt;br /&gt;
====1969====&lt;br /&gt;
Am Anfang von Linux steht Multics, ein von Bell Laboratories geschaffenes &amp;quot;Betriebssystem&amp;quot;, &lt;br /&gt;
das noch mit Lochkarten arbeitete. Multics wird mit Unterstützung von AT&amp;amp;T und Western &lt;br /&gt;
Electric unter Mitarbeit von Ken Thompson und Dennis Ritchie weiterentwickelt. Obwohl sich &lt;br /&gt;
Bell Laboratories bald zurückzieht, gibt Thompson das Projekt nicht auf.  Zum Entwicklerteam &lt;br /&gt;
gehören auch Rudd Canaday und Brian Kernighan. Letzterer gibt 1970 dem Betriebssystem den Namen UNIX. &lt;br /&gt;
Thompson definiert 7 Richtlinien für UNIX:&lt;br /&gt;
 &lt;br /&gt;
# Hierarchische Anordnung der Dateisysteme&lt;br /&gt;
# Die Ausgabe von Daten an die Peripherie(-geräte) und Dateien soll gleich sein.&lt;br /&gt;
# Prozesse und Programme sollen miteinander kommunizieren.&lt;br /&gt;
# Multitasking (voneinander getrennte Prozesse)&lt;br /&gt;
# Persönliche Shell's&lt;br /&gt;
# Der Compiler soll für viele Programmiersprachen tauglich sein.&lt;br /&gt;
# Portabilität&lt;br /&gt;
&lt;br /&gt;
====1971====&lt;br /&gt;
Bis 1971 ist das für eine DEC PDP-7 geschriebene Unix als Version 1 auf eine PDP-11 portiert. Bis&lt;br /&gt;
zur Version 4 entwickelt Ritchie die Programmier- (Hoch-) Sprache C. Das in Assembler geschriebene&lt;br /&gt;
Unix wird fast völlig nach C übersetzt, wodurch zum erstenmal die geforderte Hardware-Unabhängigkeit&lt;br /&gt;
des Betriebssystems realisiert werden kann.&lt;br /&gt;
&lt;br /&gt;
====1975====&lt;br /&gt;
Da AT&amp;amp;T aufgrund vertraglicher Bindungen mit der US-Bundesregierung Unix nicht kommerziell vermarkten darf, stellt sie den Source Code für ein paar hundert Dollar den Universitäten, Lehr- und Forschungsanstalten zur Verfügung. Dies führt zu einer sehr dynamischen Entwicklung von Unix. 1975 wird die Version 6 als erstes UNIX-System veröffentlicht, die darauffolgende Version 7 wird sehr erfolgreich. Da es keine Standardisierung gibt, entwickeln bald verschiedenste Firmen ihr eigenes UNIX. Ab 1984 wird AT&amp;amp;T per Gerichtsbeschluss erlaubt, Unix zu vermarkten. AT&amp;amp;T verkauft sein Unix V und beginnt, sich um einen internationalen Standard von UNIX zu bemühen. &lt;br /&gt;
&lt;br /&gt;
====1984====&lt;br /&gt;
Durch Richard Stallman wird die Free Software Foundation (FSF) gegründet. Diese initiiert ein Projekt namens GNU (GNU ist Not Unix), welches das Ziel verfolgt, ein freies UNIX System zu schaffen. &lt;br /&gt;
&lt;br /&gt;
====1987====&lt;br /&gt;
AT&amp;amp;T verbietet die Verwendung des Unix Quellcodes an den Universitäten. Während dieser Zeit ist Andrew (Andy) Tannenbaum Professor an der Freien Universität von Amsterdam und entwickelt Minix. Minix ist ein kostengünstiges Lehrbetriebssystem und kommt ohne jeglichen AT&amp;amp;T Code aus, obwohl es die gleiche Funktionalität wie Unix 7 bietet. Im Usenet unter comp.os.minix entsteht eine Minix-Gemeinde, die den Minix Kernel und die Anwendungen rundherum programmiert und verbessert.&lt;br /&gt;
&lt;br /&gt;
====1991====&lt;br /&gt;
Linus Torvalds hat als Student für Computerwissenschaften an der Universität in Helsinki Minix installiert und das Buch von Andy Tannenbaum gelesen. Er beginnt im Sinne der FSF einen Unix ähnlichen Kernel zu programmieren mit der Idee, &amp;quot;ein besseres Minix als Minix&amp;quot; zu bauen. 1992 stellt er die Version 0.02 mit dem Namen Linux der Internetgemeinde zur Verfügung. &lt;br /&gt;
&lt;br /&gt;
====1994====&lt;br /&gt;
Die Linux Version 1.0 wird freigegeben. Das Linux Fieber beginnt... &lt;br /&gt;
&lt;br /&gt;
====1998====&lt;br /&gt;
Der Kreis der Linux Entwickler und Anwender ist kräftig angeschwollen. KDE 1.0 wird veröffentlicht. Die Zuwachsraten von Linux übertreffen die von Windows NT deutlich. &lt;br /&gt;
&lt;br /&gt;
====1999====&lt;br /&gt;
Der lange erwartete stabile Linux Kernel Version 2.2 wird freigegeben. Namhafte Firmen wie IBM kündigen ihre Unterstützung für Linux an. &lt;br /&gt;
&lt;br /&gt;
====2001====&lt;br /&gt;
Der lange erwartete stabile Linux Kernel Version 2.4 wird freigegeben. USB Unterstützung und eine neue Firewallimplementierung zeichnen ihn aus.&lt;br /&gt;
&lt;br /&gt;
====2003====&lt;br /&gt;
Linux Kernel Version 2.6 wird freigegeben. Am auffälligsten sind Änderungen bei der Modulverwaltung.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Distributionen===&lt;br /&gt;
{| Border=1 Cellpadding=2&lt;br /&gt;
| &lt;br /&gt;
|Url&lt;br /&gt;
|Paketformat&lt;br /&gt;
|-&lt;br /&gt;
|Red Hat&lt;br /&gt;
|www.redhat.com&lt;br /&gt;
|rpm&lt;br /&gt;
|-&lt;br /&gt;
|fedora&lt;br /&gt;
|fedora.redhat.com&lt;br /&gt;
|rpm&lt;br /&gt;
|-&lt;br /&gt;
|CentOS&lt;br /&gt;
|www.centos.org&lt;br /&gt;
|rpm&lt;br /&gt;
|-&lt;br /&gt;
|Suse/openSUSE&lt;br /&gt;
|www.opensuse.org&lt;br /&gt;
|rpm&lt;br /&gt;
|-&lt;br /&gt;
|Debian&lt;br /&gt;
|www.debian.org&lt;br /&gt;
|deb&lt;br /&gt;
|-&lt;br /&gt;
|Ubuntu&lt;br /&gt;
|www.ubuntu.com&lt;br /&gt;
|deb&lt;br /&gt;
|-&lt;br /&gt;
|Mandrake&lt;br /&gt;
|www.linux-mandrake.com&lt;br /&gt;
|rpm&lt;br /&gt;
|-&lt;br /&gt;
|Easy Linux&lt;br /&gt;
|www.easy-linux.de&lt;br /&gt;
|rpm&lt;br /&gt;
|-&lt;br /&gt;
|Turbo&lt;br /&gt;
|www.turbolinux.com&lt;br /&gt;
|rpm&lt;br /&gt;
|-&lt;br /&gt;
|minis&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|toms&lt;br /&gt;
|www.toms.net/rb&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|damn small linux&lt;br /&gt;
|www.damnsmalllinux.org&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|pocket-linux&lt;br /&gt;
|www.pocket-linux.org&lt;br /&gt;
|&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
====Bücher====&lt;br /&gt;
 Titel : Das Linux Anwenderhandbuch und Leitfaden für die Systemverwaltung&lt;br /&gt;
 Autor : Sebastian Hetze, Dirk Hohndel, Olaf Kirch und Martin Müller&lt;br /&gt;
 Verlag: Lunetix&lt;br /&gt;
 ISBN : 3-929764-06-7&lt;br /&gt;
&lt;br /&gt;
 Titel : Linux in a Nutshell&lt;br /&gt;
 Autor : Jessica Perry Hekman und die Mitarbeiter von O'Reilly &amp;amp; Associates&lt;br /&gt;
 Verlag: O'Reilly&lt;br /&gt;
 ISBN : 3-930673-57-6&lt;br /&gt;
&lt;br /&gt;
 Titel : Linux - Wegweiser zur Installation und Konfiguration&lt;br /&gt;
 Autor : Matt Welsh, Lar Kaufman, Matthias Kalle Dallheimer&lt;br /&gt;
 Verlag: O'Reilly&lt;br /&gt;
 ISBN : 3-930673-58-4 (deutsch), 1-56592-469-X (englisch)&lt;br /&gt;
&lt;br /&gt;
 Titel : Linux - Installation, Konfiguration, Anwendung&lt;br /&gt;
 Autor : Michael KoflerMultitasking&lt;br /&gt;
 Verlag: Addison-Wesley&lt;br /&gt;
 ISBN : 3-8273-1475-5&lt;br /&gt;
&lt;br /&gt;
 Titel : Linux - Wegweiser für Netzwerker&lt;br /&gt;
 Autor : Olaf Kirch&lt;br /&gt;
 Verlag: O'Reilly&lt;br /&gt;
 ISBN : 3-930673-18-5&lt;br /&gt;
&lt;br /&gt;
 Titel : TCP/IP-Netzwerk-Administration&lt;br /&gt;
 Autor : Craig Hunt&lt;br /&gt;
 Verlag: O'Reilly&lt;br /&gt;
 ISBN : 3-89721-110-6&lt;br /&gt;
&lt;br /&gt;
 Titel : Essential System Administration&lt;br /&gt;
 Autor : Eleen Frisch&lt;br /&gt;
 Verlag: O'Reilly&lt;br /&gt;
 ISBN : 1-56592-127-5&lt;br /&gt;
&lt;br /&gt;
==Betriebssystem==&lt;br /&gt;
===Was ist ein Betriebssystem?===&lt;br /&gt;
&lt;br /&gt;
Ein Betriebssystem liegt logisch gesehen zwischenAnwendungsprogramm und Hardware.&lt;br /&gt;
&lt;br /&gt;
Es nimmt die Anforderungen der Anwendungsprogramme entgegen und leitet&lt;br /&gt;
diese kontrolliert an die Hardware weiter. Kein Anwendungsprogramm sollte&lt;br /&gt;
direkt auf die Hardware zugreifen können. Den zentralen Zugang schafft einzig&lt;br /&gt;
das Betriebssystem. Somit kann das Betriebssystem unsinnige Anforderungen&lt;br /&gt;
oder Bedienungsfehler abblocken.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Image:Linux.jpg]]&lt;br /&gt;
&lt;br /&gt;
===Aufgaben eines Betriebssystems===&lt;br /&gt;
&lt;br /&gt;
# Verbergen der Komplexität der Maschine vor dem Anwender (Abstraktion)&lt;br /&gt;
# Bereitstellen einer Benutzerschnittstelle (&amp;quot;Kommandointerpreter&amp;quot;, &amp;quot;Shell&amp;quot;)&lt;br /&gt;
# Bereitstellen einer normierten Programmierschnittstelle (API)&lt;br /&gt;
# Verwaltung der Ressourcen der Maschine::&lt;br /&gt;
Hauptspeicher&lt;br /&gt;
Prozessor(en)&lt;br /&gt;
Hintergrundspeicher (Platte, Band, etc.)&lt;br /&gt;
Geräte (Terminal, Drucker, Plotter, etc.)&lt;br /&gt;
Rechenzeit&lt;br /&gt;
Koordination von Prozessen&lt;br /&gt;
&lt;br /&gt;
===Aufbau eines Betriebssystems===&lt;br /&gt;
&lt;br /&gt;
Ein Rechensystem besteht aus Hardware, Systemprogrammen und Anwendungs-&lt;br /&gt;
programmen. Unter einem Betriebssystem wird meist die Summe aus Betriebs-&lt;br /&gt;
systemkern (Kernel) und den wichtigsten Systemprogrammen verstanden. Ein&lt;br /&gt;
minimaler LINUX-Kernel besitzt ungefähr eine Größe von 400 - 800 kByte.&lt;br /&gt;
Weitere wichtige Systemkomponenten benötigen zusätzlich 10 - 100 Mbyte&lt;br /&gt;
Plattenplatz.&lt;br /&gt;
&lt;br /&gt;
Ein Betriebssystem stellt den Rechner als erweiterte Maschine (virtuelle&lt;br /&gt;
Maschine) über definierte Software-Schnittstellen zur Verfügung.&lt;br /&gt;
Das Betriebssystem dient als Betriebsmittelverwalter, der Anforderungen&lt;br /&gt;
befriedigt, protokolliert, abrechnet und vermittelt.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Aufgaben des Betriebssystemkerns:&lt;br /&gt;
&lt;br /&gt;
{| Border=1 Cellpadding=2&lt;br /&gt;
|Prozessverwaltung  (dispatching and scheduling)&lt;br /&gt;
| Mehrere Benutzer können mit mehreren Aktionen gleichzeitig im System arbeiten, ohne sich gegenseitig zu beeinflussen. Damit dies möglich ist,  müssen die Aktionen organisiert, koordiniert und verwaltet werden. Die zu verwaltende Einheit nennt man Prozess.&lt;br /&gt;
|-&lt;br /&gt;
|Speicherverwaltung   (memory management)&lt;br /&gt;
|Zuteilen von Speicherbereichen an laufende Prozesse, Schutz der Speicherbereiche vor unbefugten Zugriffen, bei Speicherengpässen: Auslagern von ganzen (swapping) oder von Teilen (paging) von Prozessen auf die Platte (swap file).&lt;br /&gt;
|-&lt;br /&gt;
|Dateiverwaltung  (file handling)&lt;br /&gt;
|Zuteilung von Plattenplatz für Programme, Benutzer und Systemdienste, Schreiben, Lesen und Strukturieren der Daten auf den Massenspeichern; Durch Bereitstellung einer entsprechenden Schnittstelle (VFS, virtual file system) kann der Kern Dateisysteme unterschiedlichster Art (EXT2, FAT, NFS, HPFS, NTFS, ...) ansprechen.&lt;br /&gt;
|-&lt;br /&gt;
|Geräteverwaltung  (resource management)&lt;br /&gt;
|Der Kern ermöglicht und kontrolliert den Zugriff auf die Hardware. Er steuert die Ein- und Ausgabetätigkeiten der Anwender. An den Kern&lt;br /&gt;
gebunden sind die entsprechenden Gerätetreiber (device driver), die damit eine Kommunikation zwischen Kern und Hardware ermöglichen.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
===Multitasking===&lt;br /&gt;
&lt;br /&gt;
Multitasking bedeutet, dass ein Rechner aus Anwendersicht mehrere Aufgaben&lt;br /&gt;
(Tasks) gleichzeitg übernehmen kann. Das Betriebssystem (OS) unterteilt die&lt;br /&gt;
gleichzeitig anstehenden Aufgaben in Einzelarbeitsschritte (Prozesse) und&lt;br /&gt;
managed durch ein Zeitscheibenverfahren (scheduling) die gleichmäßige&lt;br /&gt;
Abarbeitung der Prozesse.&lt;br /&gt;
&lt;br /&gt;
Es wird unterschieden zwischen:&lt;br /&gt;
&lt;br /&gt;
*non-präamptiven (kooperativen=die Ressourcen werden vom aktiven Prozess freigegeben, bei einem Hänger steht das ganze System)&lt;br /&gt;
&lt;br /&gt;
und&lt;br /&gt;
&lt;br /&gt;
*präamptiven (reinem=der Betriebssystemkern steuert Taskwechsel, indem nach einer festgelegten Zeit vom gerade aktiven Prozess zum nächsten weitergeschaltet wird)&lt;br /&gt;
&lt;br /&gt;
===Mehrprozessorbetrieb===&lt;br /&gt;
&lt;br /&gt;
Bei mehreren Prozessoren und Unterstützung durch das OS&lt;br /&gt;
(NT,Linux,Unix,Novell) können mehrere Tasks auf diese verteilt werden und&lt;br /&gt;
gleichzeitig bearbeitet werden. Nachteilig ist, dass dies nicht oder kaum von&lt;br /&gt;
Anwendungsprogrammen unterstützt wird und es zu Kommunikationsproblemen&lt;br /&gt;
zwischen den einzelnen Tasks kommen kann.&lt;br /&gt;
&lt;br /&gt;
===Arten von von Betriebssystemen===&lt;br /&gt;
&lt;br /&gt;
{|Border=1 Cellpadding=2&lt;br /&gt;
|&lt;br /&gt;
|SingleUser  &lt;br /&gt;
|Multiuser&lt;br /&gt;
|-&lt;br /&gt;
|Single Tasking&lt;br /&gt;
|MS - DOS&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|Multi Tasking&lt;br /&gt;
|Windows 3.x&lt;br /&gt;
|UNIX&lt;br /&gt;
|-&lt;br /&gt;
|&lt;br /&gt;
|Windows 95/98&lt;br /&gt;
|Linux&lt;br /&gt;
|-&lt;br /&gt;
|&lt;br /&gt;
|Windows NT4 ohne Erweiterungen&lt;br /&gt;
|VMS&lt;br /&gt;
|-&lt;br /&gt;
|&lt;br /&gt;
|OS/2 &lt;br /&gt;
|Windows NT mit  Erweiterungen&lt;br /&gt;
|-&lt;br /&gt;
|&lt;br /&gt;
|Apple&lt;br /&gt;
|Windows 2000, XP, 2003&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
===SHELL===&lt;br /&gt;
&lt;br /&gt;
Wenn man mit Linux arbeiten will, kann man nicht direkt mit dem Betriebssystem&lt;br /&gt;
kommunizieren. Man braucht dazu ein Hilfsprogramm, welches die&lt;br /&gt;
Kommandoeingaben ordnungsgemäß an das Betriebssystem weiterleitet. Dieses&lt;br /&gt;
Hilfsprogramm hat den Namen Shell.&lt;br /&gt;
&lt;br /&gt;
Die Shell schirmt den Betriebssystemkern von den Anwendungsprogrammen ab.&lt;br /&gt;
Die unterschiedlichen Shells erfüllen alle dieselbe Aufgabe, sie unterscheiden sich&lt;br /&gt;
allerdings in ihrer Syntax.&lt;br /&gt;
&lt;br /&gt;
==Die Installation im Überblick==&lt;br /&gt;
&lt;br /&gt;
Die Installation von Linux geschieht in folgenden Schritten:&lt;br /&gt;
&lt;br /&gt;
# Analyse (Welche Hardware habe ich? ,Hab ich weitere Betriebsysteme?)&lt;br /&gt;
# Booten des Linux-Kernels. (von CD oder Diskette)&lt;br /&gt;
# Laden einer RAM-Disk (das macht das Installationsprogramm automatisch).&lt;br /&gt;
# Partitionieren der Festplatte (fdisk).&lt;br /&gt;
# Einrichten der Swappartition (mkswap), Formatieren der Festplatte (mkfs).&lt;br /&gt;
# Montieren der Dateisysteme (mount), Aktivieren der Swapbereiche (swapon).&lt;br /&gt;
# Kopieren und Auspacken der Daten vom Installationsmedium auf die Festplatte (die eigentliche Installation). (rpm, dpkg oder tar).&lt;br /&gt;
# Geeignete Wahl der Bootmethode unter Berücksichtigung von Punkt 1 (grub, lilo).&lt;br /&gt;
# Konfiguration des Systems (Netz, Modem etc...).&lt;br /&gt;
&lt;br /&gt;
==Erste Schritte==&lt;br /&gt;
===Anmelden===&lt;br /&gt;
Sie können sich nun mit dem Usernamen und dem Passwort, das sie bei der Installation angelegt haben anmelden!&lt;br /&gt;
[[Image:benutzer.jpg]]&lt;br /&gt;
&lt;br /&gt;
[[Image:passwd.jpg]]&lt;br /&gt;
&lt;br /&gt;
===Terminal öffnen===&lt;br /&gt;
&lt;br /&gt;
Ein Terminal öffnen Sie über das Startmenü:&lt;br /&gt;
&lt;br /&gt;
[[Image:Terminalde.jpg]]&lt;br /&gt;
&lt;br /&gt;
Das geöffnete Terminal sieht dann folgendermaßen aus:&lt;br /&gt;
&lt;br /&gt;
[[Image:Terminalde2.jpg]]&lt;br /&gt;
&lt;br /&gt;
===Sudo===&lt;br /&gt;
Rootrechte erlangen sie über den &amp;quot;Sudo&amp;quot;-Befehl&lt;br /&gt;
 &lt;br /&gt;
''Den nächsten Befehl als root ausführen''&lt;br /&gt;
 xinux@zero:~$ sudo cat /etc/shadow&lt;br /&gt;
 [sudo] password for xinux:&lt;br /&gt;
&lt;br /&gt;
''Eine komplette Sitzung als root starten''&lt;br /&gt;
 xinux@zero:~$ sudo -i&lt;br /&gt;
 [sudo] password for xinux:&lt;br /&gt;
 root@zero:~#&lt;br /&gt;
&lt;br /&gt;
===Virtuelle Konsolen===&lt;br /&gt;
&lt;br /&gt;
In die Virtuelle Konsole gelangen sie über &amp;quot;STRG+ALT+(F1-F6)&amp;quot;.&lt;br /&gt;
Sie funktioniert wie ein ganz normales Terminal, und mit &amp;quot;ALT+F7&amp;quot;&lt;br /&gt;
gelangen sie wieder zurück auf die grafische Benutzeroberfläche&lt;br /&gt;
&lt;br /&gt;
===Abmelden===&lt;br /&gt;
&lt;br /&gt;
Abmelden können Sie sich wieder über das Startmenu unter:&lt;br /&gt;
&lt;br /&gt;
[[Image:Logout.jpg]]&lt;br /&gt;
&lt;br /&gt;
Fals sie nur einzelne Sitzungen in einem der Terminals oder &lt;br /&gt;
den Virtuellen Konsolen Abmelden wollen benutzen sie dazu den Befehl: &amp;quot;exit&amp;quot;&lt;br /&gt;
&lt;br /&gt;
===Herunterfahren===&lt;br /&gt;
&lt;br /&gt;
Das Herunterfahren funktioniert auf dem selben Weg.&lt;br /&gt;
&lt;br /&gt;
Entweder sie Benutzen wieder das Startmenü und benutzen diesmal den &amp;quot;Ausschalten ...&amp;quot; Knopf,&lt;br /&gt;
&lt;br /&gt;
Oder sie geben den äquivalenten &amp;quot;shutdown&amp;quot;-Befehl in einem Terminal bzw. der virtuellen Konsole ein.&lt;br /&gt;
&lt;br /&gt;
Allerdings müssen sie dazu als Administrator angemeldet sein s. &amp;quot;Sudo&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Wenn Sie den &amp;quot;shutdown&amp;quot;-Befehl benutzen wollen muss hinter den Befehl&lt;br /&gt;
&lt;br /&gt;
eine Zeitangabe in Minuten oder das wort &amp;quot;now&amp;quot; für sofortiges Ausschalten hinzugefügt werden:&lt;br /&gt;
&lt;br /&gt;
 xinux@zero:~$ sudo -i&lt;br /&gt;
 root@zero:~# shutdown 60&lt;br /&gt;
 &lt;br /&gt;
 Broadcast message from xinux@zero &lt;br /&gt;
         (/dev/pts/3) at 14:29 ...&lt;br /&gt;
 &lt;br /&gt;
 The system is going down for maintenance in 60 minutes!&lt;br /&gt;
&lt;br /&gt;
Sollten sie den Befehl widerrufen wollen dann drücken sie &amp;quot;STRG+C&amp;quot;,&lt;br /&gt;
&lt;br /&gt;
in dem Terminal in dem der shutdown Befehl gestartet wurde,&lt;br /&gt;
&lt;br /&gt;
oder geben sie den &amp;quot;shutdown&amp;quot;-Befehl zusammen mit der Abbruchoption &amp;quot;-c&amp;quot; in einem anderen Terminal ein:&lt;br /&gt;
&lt;br /&gt;
 root@zero:~# shutdown -c&lt;br /&gt;
&lt;br /&gt;
 shutdown: Shutdown cancelled&lt;br /&gt;
 root@zero:~# &lt;br /&gt;
&lt;br /&gt;
Wenn Sie den Rechner Neustarten möchten gibt es dazu die Option &amp;quot;-r&amp;quot; für den &amp;quot;shutdown&amp;quot;-Befehl&lt;br /&gt;
&lt;br /&gt;
oder den &amp;quot;reboot&amp;quot;-Befehl die beide auch als root ausgeführt werden müssen:&lt;br /&gt;
&lt;br /&gt;
 xinux@zero:~$ sudo -i&lt;br /&gt;
 [sudo] password for xinux: &lt;br /&gt;
 root@zero:~# shutdown -r now&lt;br /&gt;
&lt;br /&gt;
 root@zero:~# reboot&lt;br /&gt;
&lt;br /&gt;
===&amp;quot;man&amp;quot;===&lt;br /&gt;
&lt;br /&gt;
Programm zum Einsehen der Online-Manuals&lt;br /&gt;
&lt;br /&gt;
Die Manuals sind in folgende Sektionen unterteilt:&lt;br /&gt;
# Ausführbare Programme oder Shellbefehle&lt;br /&gt;
# Systemaufrufe (Kernelfunktionen)&lt;br /&gt;
# Bibliotheksaufrufe (Funktionen in System-Bibliotheken)&lt;br /&gt;
# Spezielle Dateien (gewöhnlich in /dev)&lt;br /&gt;
# Dateiformate und Konventionen, z. B. /etc/passwd&lt;br /&gt;
# Spiele&lt;br /&gt;
# Makropakete und Konventionen, z. B. man(7), groff(7)&lt;br /&gt;
# Systemadministrationsbefehle (in der Regel nur für root)&lt;br /&gt;
# Kernelroutinen [Nicht Standard]&lt;br /&gt;
&lt;br /&gt;
Aufruf eines Manuals erfolgt durch ''man kommando''&lt;br /&gt;
Beendet wird durch Drücken des Buchstabens q&lt;br /&gt;
Gesucht wird vorwärts durch Eingabe eines /suchausdruck&lt;br /&gt;
Gesucht wird rückwärts durch Eingabe eines ?suchausdruck&lt;br /&gt;
&lt;br /&gt;
Beispiele:&lt;br /&gt;
&lt;br /&gt;
      man passwd        Anschauen der Manualseite zum Programm passwd&lt;br /&gt;
      man 5 passwd      Anschauen der Manualseite zur Datei /etc/passwd&lt;br /&gt;
      man -a passwd     Anschauen aller Manualseiten zu passwd&lt;br /&gt;
      man -k passwd     Durchsucht die Kurzbeschreibungen der Manualseite&lt;br /&gt;
                        nach passwd und gibt alle Treffer aus&lt;br /&gt;
      man -f passwd      Gibt alle gefunden Kurzbescheibungen zu passwd aus&lt;br /&gt;
      man -L en passwd Gibt englische Manualseiten aus&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Was geht vor auf meinem System? (date,who)===&lt;br /&gt;
&lt;br /&gt;
Das Kommando date dient zur Abfrage von Datum und Uhrzeit.&lt;br /&gt;
&lt;br /&gt;
 xinux@zero:~ &amp;gt; date&lt;br /&gt;
 Fre Mär 16 16:35:03 CET 2001&lt;br /&gt;
&lt;br /&gt;
oder auch Anzeige der Grennwich Zeit:&lt;br /&gt;
&lt;br /&gt;
 xinux@zero:~ &amp;gt; date -u&lt;br /&gt;
 Fre Mär 16 15:35:34 UTC 2001&lt;br /&gt;
&lt;br /&gt;
 xinux@zero:~ &amp;gt; date -u &amp;quot;+%X&amp;quot;&lt;br /&gt;
 15:37:19&lt;br /&gt;
&lt;br /&gt;
 xinux@zero:~ &amp;gt; date -u &amp;quot;+%x&amp;quot;&lt;br /&gt;
 01/15/02&lt;br /&gt;
&lt;br /&gt;
who zeigt alle angemeldeten Benutzer an&lt;br /&gt;
&lt;br /&gt;
 thomas@cardassia:~ &amp;gt; who&lt;br /&gt;
 thomas             tty1 Feb 27 16:39&lt;br /&gt;
 thomas             tty2 Mar 2 17:08&lt;br /&gt;
 tina               tty6 Mar 16 16:38&lt;br /&gt;
&lt;br /&gt;
Mit `who --help' bekommen Sie mehr Informationen.&lt;br /&gt;
&lt;br /&gt;
 thomas@cardassia:~ &amp;gt; who --help&lt;br /&gt;
&lt;br /&gt;
Benutzung: who [OPTION]... [ DATEI | ARG1 ARG2 ]&lt;br /&gt;
&lt;br /&gt;
 -H, --heading             print line of column headings&lt;br /&gt;
 -i, -u, --idle            add user idle time as HOURS:MINUTES, . or old&lt;br /&gt;
 -l, --lookup              attempt to canonicalize hostnames via DNS&lt;br /&gt;
 -m                        only hostname and user associated with stdin&lt;br /&gt;
 -q, --count               all login names and number of users logged on&lt;br /&gt;
 -s                        (ignored)&lt;br /&gt;
 -T, -w, --mesg            add user's message status as +, - or ?&lt;br /&gt;
     --message             same as -T&lt;br /&gt;
     --writable            same as -T&lt;br /&gt;
     --help                display this help and exit&lt;br /&gt;
     --version             output version information and exit&lt;br /&gt;
&lt;br /&gt;
==Das UNIX-Dateisystem==&lt;br /&gt;
===Verzeichnisbaum===&lt;br /&gt;
&lt;br /&gt;
[[Image:vztree.jpg]]&lt;br /&gt;
&lt;br /&gt;
Das Betriebssystem UNIX besitzt ein hierarchisches Dateisystem. Es besteht aus:&lt;br /&gt;
* Dateien (Files)&lt;br /&gt;
Dateien speichern Informationen (Text, Bilder, Sound, Videos, Programme) und&lt;br /&gt;
werden über den Dateinamen angesprochen.&lt;br /&gt;
&lt;br /&gt;
* Verzeichnissen (Directories, Kataloge)&lt;br /&gt;
Verzeichnisse besitzen ebenfalls einen Namen und dienen zur Ordnung des&lt;br /&gt;
Dateisystems. Ein Verzeichnis kann Dateien und Unterverzeichnisse&lt;br /&gt;
(Subdirectories) enthalten. Das oberste Verzeichnis im Dateisystem heisst&lt;br /&gt;
Rootverzeichnis oder kurz Root und wird durch / (sprich: slash)&lt;br /&gt;
gekennzeichnet.&lt;br /&gt;
&lt;br /&gt;
Im Gegensatz zu Windows kennt UNIX keine Laufwerke.&lt;br /&gt;
Das obige Bild zeigt ein typisches UNIX-Dateisystem.&lt;br /&gt;
Unterhalb des Rootverzeichnisses befinden sich eine Vielzahl vonVerzeichnissen.&lt;br /&gt;
&lt;br /&gt;
===Wichtige Verzeichnisse===&lt;br /&gt;
&lt;br /&gt;
• '''Homeverzeichnis'''&lt;br /&gt;
&lt;br /&gt;
das Verzeichnis, in dem man sich unmittelbar nach dem Anmelden befindet. Das&lt;br /&gt;
Homeverzeichnis wird vom Systemverwalter eingerichtet; jeder Anwender&lt;br /&gt;
besitzt ein festes Homeverzeichnis. z.B. /home/hans&lt;br /&gt;
&lt;br /&gt;
~ (Tilde) bzw. $HOME (Shellvariable) kennzeichnen das Homeverzeichnis.&lt;br /&gt;
&lt;br /&gt;
• '''Aktuelles Verzeichnis'''&lt;br /&gt;
&lt;br /&gt;
Verzeichnis, in dem man sich aktuell befindet.&lt;br /&gt;
Das aktuelle Verzeichnis wird mit dem Befehl cd (change directory) oder per&lt;br /&gt;
Mausklick verändert.&lt;br /&gt;
Ein einfacher Punkt . kennzeichnet das aktuelle Verzeichnis.&lt;br /&gt;
&lt;br /&gt;
• '''Elternverzeichnis'''&lt;br /&gt;
&lt;br /&gt;
Verzeichnis unmittelbar oberhalb des aktuellen Verzeichnisses.&lt;br /&gt;
Jedes Verzeichnis ausser / besitzt genau ein Elternverzeichnis.&lt;br /&gt;
Zwei Punkte .. kennzeichnen das Elternverzeichnis (abhängig vom aktuellen&lt;br /&gt;
VZ).&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Absoluter Pfadname:===&lt;br /&gt;
&lt;br /&gt;
Beschreibt ausgehend vom Rootverzeichnis den Weg zum Zielverzeichnis oder zur&lt;br /&gt;
Zieldatei. (Welche Verzeichnisse müssen ausgehend von / durchlaufen werden, um&lt;br /&gt;
zum Ziel zu kommen?) Ein absoluter Pfadname beginnt immer mit / .&lt;br /&gt;
&lt;br /&gt;
===Relativer Pfadname:===&lt;br /&gt;
&lt;br /&gt;
Beschreibt ausgehend vom aktuellen Verzeichnis den Weg zum Zielverzeichnis&lt;br /&gt;
oder zur Zieldatei; ein relativer Pfadname beginnt nicht mit / .&lt;br /&gt;
/home/suxer&lt;br /&gt;
absoluter Pfadname für das Verzeichnis sub1 im Homeverzeichnis von suxer&lt;br /&gt;
&lt;br /&gt;
===Verzeichnisstruktur===&lt;br /&gt;
&lt;br /&gt;
 /bin         Kommandos die beim starten benötigt werden (Zugriff hat jeder)&lt;br /&gt;
 /sbin        Wichtige System-Programme (In der Regel root vorberhalten)&lt;br /&gt;
 /boot        Hier findet man die Dateien des Bootmanagers und des Kernel.&lt;br /&gt;
 /dev         In diesem Verzeichnis stehen die Gerätedateien (Devices),&lt;br /&gt;
 /home        Alle Heimatverzeichnisse der Nutzer findet man hier.&lt;br /&gt;
 /lib         Beim Systemstart benötigten Bibliotheken und Modules stehen hier.&lt;br /&gt;
 /mnt         Mountpunkt für temporäre Partitionen&lt;br /&gt;
 /opt         Software, die nicht Installationsumfang von Linux gehören.&lt;br /&gt;
 /root        Heimatverzeichnis des Administrators.&lt;br /&gt;
 /tmp         Temporäre Dateien können hier abgelegt werden&lt;br /&gt;
 /usr         statische Dateien (kann read-only gemountet sein)&lt;br /&gt;
 /var         variable Dateien (muss beschreibar sein )&lt;br /&gt;
 /etc         Konfiguartionsdateien und Startscripte&lt;br /&gt;
 /proc        Virtuelles Dateisystem -&amp;gt; repräsentiert den Kernel&lt;br /&gt;
&lt;br /&gt;
===Unterverzeichnisse von /usr===&lt;br /&gt;
&lt;br /&gt;
 sbin         Programme für root die beim Start nicht benötigt werden&lt;br /&gt;
 bin          Programme für alle die beim Start nicht benötigt werden&lt;br /&gt;
 X11R6        Dateien des X-Window-Sytems&lt;br /&gt;
 bin          Ausführbare Programme&lt;br /&gt;
 doc          Dokumentationen&lt;br /&gt;
 etc          Konfigurationsdateien&lt;br /&gt;
 games        Spiele&lt;br /&gt;
 include      Headerdateien für C-Programme&lt;br /&gt;
 local        Pakete die nicht zur Distribution gehören ähnlich /opt&lt;br /&gt;
 share        Pakete die von mehreren Paketen genutzt werden&lt;br /&gt;
 share/man    Die Manualpages&lt;br /&gt;
 share/info   Seiten des Infosystems&lt;br /&gt;
 share/doc    Dokumentationen&lt;br /&gt;
 src          Sources von Programmen (Kernel und andere)&lt;br /&gt;
&lt;br /&gt;
===Unterverzeichnisse von /var===&lt;br /&gt;
&lt;br /&gt;
 cache        Zwischenspreicher für Progammes&lt;br /&gt;
 games        Variable Daten der Games (Scores etc...)&lt;br /&gt;
 lock         Sperrdateien&lt;br /&gt;
 log          Die Logdateien (wichtiges Verzeichnis für Admins)&lt;br /&gt;
 mail         Das Mailsystem&lt;br /&gt;
 run          Dateien zu laufemdem Prozessen&lt;br /&gt;
 spool        Spooldateien (z.B. für das Drucksystem&lt;br /&gt;
 state        Statusinfos&lt;br /&gt;
 tmp          Wie /tmp eventuell nicht auf root Partion&lt;br /&gt;
&lt;br /&gt;
==Einfache Komandos==&lt;br /&gt;
===cd: Wechseln des Arbeitsverzeichnis===&lt;br /&gt;
&lt;br /&gt;
Um festzustellen in welchem Verzeichnis man sich befindet, sollte man den&lt;br /&gt;
Befehl &amp;quot;pwd&amp;quot; benutzen,&lt;br /&gt;
&lt;br /&gt;
und mit dem Befehl &amp;quot;cd&amp;quot; kann man zwischen den Verzeichnissen wechseln:&lt;br /&gt;
&lt;br /&gt;
Wechsele ins homeverzeichnis von Xinux&lt;br /&gt;
&lt;br /&gt;
 xinux@zero:~$ cd /home/xinux/&lt;br /&gt;
 xinux@zero:~$ pwd&lt;br /&gt;
 /home/xinux&lt;br /&gt;
&lt;br /&gt;
cd ~ -&amp;gt; wechsele ins jeweilige Homeverzeichnis&lt;br /&gt;
&lt;br /&gt;
cd .. -&amp;gt; wechsele ein Verzeichnis höher&lt;br /&gt;
&lt;br /&gt;
cd ../verzeichnis -&amp;gt; wechsele in eine paralleles Verzeichnis &amp;lt;- (ist eine relative Pfadangabe !)&lt;br /&gt;
&lt;br /&gt;
cd - -&amp;gt; wechsele in das Verzeichnis, in dem vorher gearbeitet wurde.&lt;br /&gt;
&lt;br /&gt;
Mit cd / wechselt man in das Wurzelverzeichnis.&lt;br /&gt;
&lt;br /&gt;
 xinux@zero:/var/log$ cd /&lt;br /&gt;
 xinux@zero:/$ pwd&lt;br /&gt;
 /&lt;br /&gt;
&lt;br /&gt;
===ls: Listing===&lt;br /&gt;
&lt;br /&gt;
Den Inhalt von Verzeichnissen kann man sich mit dem Befehl &amp;quot;ls&amp;quot; anzeigen lassen&lt;br /&gt;
wobei &amp;quot;ls&amp;quot; eine Vielzahl von Optionen besitzt:&lt;br /&gt;
&lt;br /&gt;
 ls                                  standard&lt;br /&gt;
 ls -l                               langes listing&lt;br /&gt;
 ls -a                               alle Dateien&lt;br /&gt;
 ls -i                               mit Inode&lt;br /&gt;
 ls -h                               gut lesbare Dateigröße&lt;br /&gt;
 ls -d                               Verzechnis wird angezeigt, nicht der Inhalt&lt;br /&gt;
 ls -L                               sortiert nach Größe&lt;br /&gt;
 ls -t                               sortiert nach Datum&lt;br /&gt;
 ls -F                               mit nützlichem Anhang&lt;br /&gt;
&lt;br /&gt;
 xinux@zero:/$ ls -l /var/log/messages&lt;br /&gt;
 -rw-r----- 1 syslog adm 2296 2009-06-16 10:05 /var/log/messages&lt;br /&gt;
&lt;br /&gt;
===more: Seitenweises Anzeigen von Seiten===&lt;br /&gt;
 root@zero:~# more /var/log/messages&lt;br /&gt;
 ...&lt;br /&gt;
&lt;br /&gt;
===head: erste Zeilen anzeigen===&lt;br /&gt;
Erste 10 Zeilen anzeigen&lt;br /&gt;
 root@zero:~# head /var/log/messages&lt;br /&gt;
 Jun 15 12:37:08 zero syslogd 1.5.0#5ubuntu3: restart.&lt;br /&gt;
 Jun 15 12:38:43 zero kernel: [  830.065036] mtrr: your processor doesn't support write-combining&lt;br /&gt;
 Jun 15 12:46:05 zero pulseaudio[4817]: pid.c: Stale PID file, overwriting.&lt;br /&gt;
 Jun 15 13:05:24 zero -- MARK --&lt;br /&gt;
 ...&lt;br /&gt;
&lt;br /&gt;
Erste zwei Zeilen anzeigen&lt;br /&gt;
 root@zero:~# head -n 2 /var/log/messages&lt;br /&gt;
 Jun 15 12:37:08 zero syslogd 1.5.0#5ubuntu3: restart.&lt;br /&gt;
 Jun 15 12:38:43 zero kernel: [  830.065036] mtrr: your processor doesn't support write-combining&lt;br /&gt;
&lt;br /&gt;
===tail: letzte Zeilen anzeigen===&lt;br /&gt;
 &lt;br /&gt;
 root@zero:~# tail /var/log/syslog&lt;br /&gt;
 ...&lt;br /&gt;
 Jun 19 11:19:35 zero -- MARK --&lt;br /&gt;
 Jun 19 11:39:35 zero -- MARK --&lt;br /&gt;
 Jun 19 11:59:36 zero -- MARK --&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Letze 5 Zeilen anzeigen&lt;br /&gt;
 root@zero:~# tail -n 5 /var/log/auth.log&lt;br /&gt;
 Jun 18 14:30:01 zero CRON[12040]: pam_unix(cron:session): session closed for user root&lt;br /&gt;
 Jun 18 14:39:01 zero CRON[12191]: pam_unix(cron:session): session opened for user root by (uid=0)&lt;br /&gt;
 Jun 18 14:39:01 zero CRON[12191]: pam_unix(cron:session): session closed for user root&lt;br /&gt;
 Jun 18 14:40:01 zero CRON[12237]: pam_unix(cron:session): session opened for user root by (uid=0)&lt;br /&gt;
 Jun 18 14:40:01 zero CRON[12237]: pam_unix(cron:session): session closed for user root&lt;br /&gt;
&lt;br /&gt;
Letze Zeilen anzeigen und fortlaufend aktualisieren&lt;br /&gt;
 root@zero:~# tail -f /var/log/syslog&lt;br /&gt;
 ...&lt;br /&gt;
&lt;br /&gt;
===mkdir: Ein neues Verzeichnis erstellen===&lt;br /&gt;
&lt;br /&gt;
 mkdir        verzeichnis&lt;br /&gt;
Erstellt ein Verzeichnis im working directory (wd)&lt;br /&gt;
&lt;br /&gt;
 mkdir  -p    ver1/ver2&lt;br /&gt;
Erstellt ein Verzeichnis ver2 unterhalb von ver1&lt;br /&gt;
wenn ver1 nicht existiert wird es erstellt&lt;br /&gt;
&lt;br /&gt;
 mkdir -m 753 ver1&lt;br /&gt;
Es wird das Verzeichnis ver1 erstellt mit der mask 753&lt;br /&gt;
&lt;br /&gt;
 mkdir -v     ver1&lt;br /&gt;
Geschwätzige Ausgabe :)&lt;br /&gt;
&lt;br /&gt;
===Zum Löschen von leeren Verzeichnissen wird rmdir benutzt===&lt;br /&gt;
&lt;br /&gt;
 rmdir           ver1&lt;br /&gt;
Löscht das leere Verzeichnis ver1&lt;br /&gt;
&lt;br /&gt;
 rmdir -v        ver1&lt;br /&gt;
Löscht das leere Verzeichnis ver1 und ist geschwätzig&lt;br /&gt;
&lt;br /&gt;
 rmdir -p        /ver1/ver2/ver3&lt;br /&gt;
Löscht das Verzeichnis ver3; wenn dadurch ver2 ein leeres&lt;br /&gt;
Verzeichnis wird, wird dieses auch gelöscht , wenn ver1&lt;br /&gt;
dadurch ein leeres Verzeichnis wird, wird auch dieses gelöscht.&lt;br /&gt;
&lt;br /&gt;
===touch Verändern des Zeitstempels===&lt;br /&gt;
&lt;br /&gt;
Mit touch können wir eine neue leere Datei erzeugen (das ist nicht der eigentliche&lt;br /&gt;
Zweck von touch, eigentlich wird der Zeitstempel geändert)&lt;br /&gt;
&lt;br /&gt;
 touch            dateiname&lt;br /&gt;
&lt;br /&gt;
===Kopieren=== &lt;br /&gt;
cp ist das Kommando um Dateien zu kopieren &lt;br /&gt;
&lt;br /&gt;
Eine Kopie von dat1 mit dem Namen dat2 erstellen:&lt;br /&gt;
&lt;br /&gt;
 xinux@zero:~$ cp dat1 dat2&lt;br /&gt;
&lt;br /&gt;
Eine Kopie von dat1 ins Verzeichnis ver2 erstellen:&lt;br /&gt;
&lt;br /&gt;
 xinux@zero:~$ cp dat1 ver2/&lt;br /&gt;
 &lt;br /&gt;
Eine Kopie erstellen mit ausführlicher Anzeige:&lt;br /&gt;
&lt;br /&gt;
 xinux@zero:~$ cp -v dat1 dat2&lt;br /&gt;
 `dat1' -&amp;gt; `dat2'&lt;br /&gt;
&lt;br /&gt;
Eine Kopie erstellen mit Rückfrage fals etwas überschrieben wird:&lt;br /&gt;
&lt;br /&gt;
 xinux@zero:~$ cp -i dat1 dat2&lt;br /&gt;
 cp: overwrite `dat2'?&lt;br /&gt;
&lt;br /&gt;
Eine Kopie erstellen und die Rückfrage überbrücken:&lt;br /&gt;
&lt;br /&gt;
 xinux@zero:~$ cp -f dat1 dat2&lt;br /&gt;
&lt;br /&gt;
Eine Kopie von dat1 ins Verzeichnis ver2 erstellen fals keine neuere Version von dat1 vorliegt:&lt;br /&gt;
&lt;br /&gt;
 xinux@zero:~$ cp -u dat1 ver2/&lt;br /&gt;
&lt;br /&gt;
Eine Kopie erstellen fals ver2 auf dem selben Dateisystem wie dat1 liegt:&lt;br /&gt;
&lt;br /&gt;
 xinux@zero:~$ cp -x dat1 ver2/&lt;br /&gt;
&lt;br /&gt;
Eine Kopie von ver1, die als ver2 oder unter ver2 als ver1 gespeichert wird erstellen:&lt;br /&gt;
&lt;br /&gt;
 xinux@zero:~$ cp -r ver1/ ver2/&lt;br /&gt;
&lt;br /&gt;
Eine Kopie von einer Datei erstellen und ihre Attribute beibehalten:&lt;br /&gt;
&lt;br /&gt;
 xinux@zero:~$ cp -p sux1 sux2&lt;br /&gt;
&lt;br /&gt;
Eine Kopie erstellen bei der die Links erhalten bleiben:&lt;br /&gt;
&lt;br /&gt;
 xinux@zero:~$ cp -r ver1/ ver2/&lt;br /&gt;
&lt;br /&gt;
Eine Kopie erstellen zum Archivieren (-dpr):&lt;br /&gt;
&lt;br /&gt;
 xinux@zero:~$ cp -a ver1/ ver2/&lt;br /&gt;
&lt;br /&gt;
===rm: Löschen einer Datei===&lt;br /&gt;
&lt;br /&gt;
Um Dateien zu löschen, brauchen wir das Kommando &amp;quot;rm&amp;quot;:&lt;br /&gt;
&lt;br /&gt;
 rm               dat1        dat1 wird gelöscht&lt;br /&gt;
 rm         -i    dat1        dat1 wird nach Bestätigung gelöscht&lt;br /&gt;
 rm         -f    dat1        dat1 wird ohne Rückfragen gelöscht&lt;br /&gt;
 rm         -v    dat1        dat1 wird glöscht (geschwätzige Ausgabe)&lt;br /&gt;
 rm         -r    ver1        Löschen von nicht leeren Verzeichnissen&lt;br /&gt;
                              Achtung !!! Als root kann man sich damit Teile&lt;br /&gt;
                              oder sogar den gesamten Verzeichnisbaum&lt;br /&gt;
                              absägen !!!&lt;br /&gt;
&lt;br /&gt;
===mv: Verschieben===&lt;br /&gt;
&lt;br /&gt;
Mit dem Befehl &amp;quot;mv&amp;quot; werden Daten verschoben, folgendes gilt:&lt;br /&gt;
&lt;br /&gt;
 mv          dat1 dat2         &lt;br /&gt;
Die Datei dat1 wird in dat2 umbenannt&lt;br /&gt;
 mv          dat1 /ver1        &lt;br /&gt;
Die Datei dat1 wird nach /ver1 verschoben&lt;br /&gt;
&lt;br /&gt;
Die Parameter und ihre Bedeutung:&lt;br /&gt;
&lt;br /&gt;
      -i                      wenn eine Datei exisitiert wird vor dem&lt;br /&gt;
                              Überschreiben nachgefragt&lt;br /&gt;
      -v                      verbose (geschwätzig)&lt;br /&gt;
      -u                      nur neuere Daten werden bei Bedarf überschrieben&lt;br /&gt;
      -b                      wenn überschrieben werden soll, wird ein Backup&lt;br /&gt;
                              erstellt&lt;br /&gt;
      -S ENDUNG               das Backup bekommt die Endung ENDUNG&lt;br /&gt;
&lt;br /&gt;
===su Benutzer wechseln===&lt;br /&gt;
&lt;br /&gt;
 su -             &lt;br /&gt;
Wechsel zum Rootaccount, wie wenn dieser sich neu anmelden würde. (Bsp: su -)&lt;br /&gt;
&lt;br /&gt;
 su Benutzernamen &lt;br /&gt;
Wechsel der Identität zu Benutzer (gegebenenfalls Passwortabfrage)&lt;br /&gt;
&lt;br /&gt;
 su -c Kommando   &lt;br /&gt;
Kommando wird als rootaccount ausgeführt&lt;br /&gt;
&lt;br /&gt;
==Der Standard Editor vi==&lt;br /&gt;
Der vi ist der Standardeditor in der Unixwelt. Er ist in jedem Unix-Derivat&lt;br /&gt;
enthalten.&lt;br /&gt;
Der Editor hat zwar den schlechten Ruf umständlich zu bedienen zu sein, ist&lt;br /&gt;
jedoch sehr leistungsfähig und systemübergreifend verfügbar. Beim vi handelt es&lt;br /&gt;
sich um einen rein textorientierten Editor, der mittels eigener Kommandos&lt;br /&gt;
gesteuert wird.&lt;br /&gt;
&lt;br /&gt;
Der Editor VIM ist eine weitere Verbesserung von VI und leichter zu bedienen.&lt;br /&gt;
Und unter Ubuntu/Debian mit &amp;quot;apt-get install vim&amp;quot; zu installieren.&lt;br /&gt;
&lt;br /&gt;
===Starten des Editors:===&lt;br /&gt;
&lt;br /&gt;
Der Editorstart erfolgt einfach durch die Eingabe des Kommandos vi mit dem&lt;br /&gt;
Dateinamen der zu editierenden Datei als Parameter.&lt;br /&gt;
Beispiel:        &lt;br /&gt;
 vi sux.txt&lt;br /&gt;
&lt;br /&gt;
===Die Betriebsmodi des vi:===&lt;br /&gt;
&lt;br /&gt;
Ein Umstand, der dem vi den Ruf der komplizierten Bedienbarkeit zugetragen hat,&lt;br /&gt;
sind die unterschiedlichen Betriebsmodi des Editors. Genauer gesagt verfügt der&lt;br /&gt;
vi über drei Betriebsmodi:&lt;br /&gt;
&lt;br /&gt;
====Kommandomodus:====&lt;br /&gt;
&lt;br /&gt;
Innerhalb dieses Modus werden die eingegebenen Zeichen direkt als Befehle des&lt;br /&gt;
Editors interpretiert und ausgeführt. Dabei gibt es weder ein Bereitschaftszeichen&lt;br /&gt;
(Prompt) noch ein Echo (Ausgabe). Der Kommandomodus ist der Modus, in dem&lt;br /&gt;
sich der vi direkt nach seinem Start befindet.&lt;br /&gt;
&lt;br /&gt;
====Zeilenmodus oder Exmodus:====&lt;br /&gt;
&lt;br /&gt;
Dieser Modus ist der einzige Modus mit einem eigenen Bereitschaftszeichen,&lt;br /&gt;
nämlich dem Doppelpunkt (:). Das Prompt wird ebenso wie die Befehlsausgaben&lt;br /&gt;
in der Statuszeile angezeigt.&lt;br /&gt;
&lt;br /&gt;
====Eingabemodus:====&lt;br /&gt;
&lt;br /&gt;
Der Eingabemodus ist derjenige, in welchem der zu bearbeitende Text bearbeitet&lt;br /&gt;
werden kann. Alle hier eingegebenen Zeichen werden als Text für die aktuelle&lt;br /&gt;
Datei interpretiert. Zwischen den unterschiedlichen Modi kann jederzeit&lt;br /&gt;
gewechselt werden. Von Kommandomodus gelangen Sie durch mehere Wege in&lt;br /&gt;
den Eingabemodus. Man kann durch folgende Aktionen wechslen&lt;br /&gt;
&lt;br /&gt;
{| border=1 cellpadding=2&lt;br /&gt;
|i&lt;br /&gt;
|Text vor der aktuellen Cursorposition einfügen&lt;br /&gt;
|-&lt;br /&gt;
|I&lt;br /&gt;
|Text am Zeilenanfang einfügen&lt;br /&gt;
|-&lt;br /&gt;
|a&lt;br /&gt;
|Text hinter der aktuellen Cursorposition einfügen&lt;br /&gt;
|-&lt;br /&gt;
|A&lt;br /&gt;
|Text am Zeilenende einfügen&lt;br /&gt;
|-&lt;br /&gt;
|o&lt;br /&gt;
|Unterhalb der aktuellen Zeile eine neue Zeile einfügen&lt;br /&gt;
|-&lt;br /&gt;
|O&lt;br /&gt;
|Oberhalb der aktuellen Zeile eine neue Zeile einfügen&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Durch das Drücken der ESC - Taste gelangt man in den Kommandomodus zurück.&lt;br /&gt;
&lt;br /&gt;
Im Kommandomodus können Sie durch den Text navigieren und auch den Text&lt;br /&gt;
selbst bearbeiten, z.B ausschneiden, kopieren usw. Dazu sind einige Kommandos&lt;br /&gt;
nötig, von denen die wichtigsten im Folgenden erläutert werden:&lt;br /&gt;
&lt;br /&gt;
 xinux@zero:/$ vi iwas.txt&lt;br /&gt;
&lt;br /&gt;
[[Image:vim.jpg]]&lt;br /&gt;
&lt;br /&gt;
===Benutzen des Kommandomodus===&lt;br /&gt;
====Steuerung des Cursors durch den Text====&lt;br /&gt;
&lt;br /&gt;
Mittels folgender Kommandos bewegt sich der Cursor durch den Text:&lt;br /&gt;
&lt;br /&gt;
{| border=1 cellpadding=2&lt;br /&gt;
|h&lt;br /&gt;
|Cursor ein Zeichen nach links&lt;br /&gt;
|-&lt;br /&gt;
|l&lt;br /&gt;
|Cursor ein Zeichen nach rechts&lt;br /&gt;
|-&lt;br /&gt;
|k&lt;br /&gt;
|Cursor eine Zeile nach oben&lt;br /&gt;
|-&lt;br /&gt;
|j&lt;br /&gt;
|Cursor eine Zeile nach unten&lt;br /&gt;
|-&lt;br /&gt;
|w&lt;br /&gt;
|Cursor ein Wort nach rechts&lt;br /&gt;
|-&lt;br /&gt;
|b&lt;br /&gt;
|Cursor ein Wort nach links&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Alle diese Kommandos können mit einem vorgestellten Wiederholungsfaktor&lt;br /&gt;
arbeiten. Der Befehl 3w verschiebt demnach den Cursor um 3 Wörter nach rechts.&lt;br /&gt;
&lt;br /&gt;
====Angaben zur Positionierung====&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{| border=1 cellpadding=2&lt;br /&gt;
|STRG+U&lt;br /&gt;
|1⁄2 Bildschirmseite nach oben&lt;br /&gt;
|-&lt;br /&gt;
|STRG+D&lt;br /&gt;
|1⁄2 Bildschirmseite nach unten&lt;br /&gt;
|-&lt;br /&gt;
|STRG+B&lt;br /&gt;
|1 Bildschirmseite nach oben&lt;br /&gt;
|-&lt;br /&gt;
|STRG+F&lt;br /&gt;
|1 Bildschirmseite nach unten&lt;br /&gt;
|-&lt;br /&gt;
|/Ausdruck&lt;br /&gt;
|Sucht den Ausdruck (vorwärts) Weitersuchen mit n , N&lt;br /&gt;
|-&lt;br /&gt;
|?Ausdruck&lt;br /&gt;
|Sucht den Ausdurck (rückwärts) Weitersuchen mit n , N&lt;br /&gt;
|-&lt;br /&gt;
|0&lt;br /&gt;
|Zeilenanfang&lt;br /&gt;
|-&lt;br /&gt;
|$&lt;br /&gt;
|Zeilenende&lt;br /&gt;
|-&lt;br /&gt;
|w&lt;br /&gt;
|Nächstes Wort&lt;br /&gt;
|-&lt;br /&gt;
|b&lt;br /&gt;
|Vorheriges Wort&lt;br /&gt;
|-&lt;br /&gt;
|fc&lt;br /&gt;
|Auf das Zeichen c springen. c steht für ein beliebiges Zeichen&lt;br /&gt;
|-&lt;br /&gt;
|G&lt;br /&gt;
|Letzte Zeile der Datei&lt;br /&gt;
|-&lt;br /&gt;
|ng&lt;br /&gt;
|n-te Zeile der Datei&lt;br /&gt;
|-&lt;br /&gt;
|H&lt;br /&gt;
|Anfang der Bildschirmseite&lt;br /&gt;
|-&lt;br /&gt;
|L&lt;br /&gt;
|Ende der Bildschirmseite&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
====Befehle zur Textbearbeitung -&amp;gt; Was soll geschehen====&lt;br /&gt;
&lt;br /&gt;
{| Border=1 Cellpadding=2&lt;br /&gt;
|x&lt;br /&gt;
|Löscht Zeichen&lt;br /&gt;
|-&lt;br /&gt;
|d&lt;br /&gt;
|Löschen und in den Puffer laden&lt;br /&gt;
|-&lt;br /&gt;
|c&lt;br /&gt;
|Ändern&lt;br /&gt;
|-&lt;br /&gt;
|y&lt;br /&gt;
|In den Puffer laden&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
====Weitere wichtige Befehle:====&lt;br /&gt;
&lt;br /&gt;
{| Border=1 Cellpadding=2&lt;br /&gt;
|p&lt;br /&gt;
|Aus dem Puffer einfügen&lt;br /&gt;
|-&lt;br /&gt;
|u&lt;br /&gt;
|Undo, macht den letzten Befehl rückgängig&lt;br /&gt;
|-&lt;br /&gt;
|STRG+R&lt;br /&gt;
|Redo, macht den letzten Undo rückgängig&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
===Zeilen- oder Exmodus===&lt;br /&gt;
&lt;br /&gt;
Wie schon erwähnt wird der Zeilen oder Exmodus durch einen : eingeleitet.&lt;br /&gt;
Es folgen einige Beispiele.&lt;br /&gt;
&lt;br /&gt;
Befehle zum Speichern und Beenden:&lt;br /&gt;
&lt;br /&gt;
 :w          Schreibt Datei&lt;br /&gt;
 :w Datei2   Schreibt eine Kopie in Datei2&lt;br /&gt;
 :w !        Schreibt Datei (übergehe Schreibschutz)&lt;br /&gt;
 :w ! Datei2 Schreibt eine Kopie in Datei2 (übergehe Schreibschutz)&lt;br /&gt;
 :q          Schließe Datei&lt;br /&gt;
 :q!         Schließe Datei (verwerfe Änderungen)&lt;br /&gt;
 :wq         Schreibe Datei und beende Editor&lt;br /&gt;
 :wq!        Schreibe Datei und beende Editor (übergehe Schreibschutz)&lt;br /&gt;
 :q!         Schließe Datei (verwerfe Änderungen)&lt;br /&gt;
 :h          Hilfe anzeigen, durch drücken von :q Beenden der Hilfe&lt;br /&gt;
 :e Datei3   Editiere Datei3&lt;br /&gt;
 :e #        Editere vorhergehende Datei&lt;br /&gt;
 :1,3co9     Kopiere von der ersten bis zu dritten Zeile &lt;br /&gt;
             und füge den Inhalt unterhalb der neunte Zeile ein.&lt;br /&gt;
&lt;br /&gt;
Interaktionen mit Unix:&lt;br /&gt;
&lt;br /&gt;
 :r Datei4   Fügt Inhalt der Datei4 nach dem Cursor ein&lt;br /&gt;
 :r ! Befehl Fügt Ausgabe des Befehls nach dem Cursor ein&lt;br /&gt;
 :! Befehl   Führt den Befehl aus&lt;br /&gt;
 :sh         Starte Subshell -&amp;gt; mit exit kehrt man wieder zurück&lt;br /&gt;
             Eingabemodus zurück&lt;br /&gt;
&lt;br /&gt;
====Ersetzen von Textteilen====&lt;br /&gt;
&lt;br /&gt;
Die grundsätzliche Syntax lautet:&lt;br /&gt;
&lt;br /&gt;
 :[Zeilennummer,Zeilennummer]s/Muster/Ersetzung/[gc]&lt;br /&gt;
&lt;br /&gt;
 :s/worf/kirn/              der erste worf wird in der aktuellen Zeile durch kirn ersetzt&lt;br /&gt;
 :1,9s/worf/kirn/g          von der 1. bis zur 9. Zeile werden alle worf durch kirn ersetzt&lt;br /&gt;
 :1,$s/worf/kirn/           von der ersten bis zur letzten Zeile ersetze ersten worf durch&lt;br /&gt;
                            kirn&lt;br /&gt;
 :.,$s/worf/kirn/g          von der aktuellen bis zur letzten Zeile ersetze alle worf durch&lt;br /&gt;
                            kirn&lt;br /&gt;
 :1,.s/worf/kirn/c          von der 1. bis zur aktuellen Zeile ersetze worf durch kirn, frage&lt;br /&gt;
                            aber nach&lt;br /&gt;
 :1,$s/^worf/kirn/          von der ersten bis zur letzten Zeile ersetze worf am&lt;br /&gt;
                            Zeilenanfang durch kirn&lt;br /&gt;
 :4,$s/worf$/kirn/          von der 4. bis zur letzten Zeile ersetze worf am Zeilenende&lt;br /&gt;
                            durch kirn&lt;br /&gt;
 :1,$s/^#//                 lösche alle Kommentarzeichen&lt;br /&gt;
 :1,$s/^.orf/kirn/           ersetze alles was am Zeilenanfang ein beliebiges Zeichen hat&lt;br /&gt;
                            gefolgt von einem orf durch kirn&lt;br /&gt;
 :1,$s/^[A-Z]orf/kirn/g     suche nach einem Großbuchstaben am Anfang der Zeile&lt;br /&gt;
                            gefolgt von einem orf und ersetze durch kirn&lt;br /&gt;
 :1,$s/^M[ae][iy]e*r/kirn/  suche alles, was am Anfang der Zeile ein großes M enthält,&lt;br /&gt;
                            gefolgt von einem a oder e , gefolgt von einem i oder y ,&lt;br /&gt;
                            gefolgt von einem e , welches 0 oder N mal vorkommen kann,&lt;br /&gt;
                            gefolgt von einem r und ersetze es durch kirn&lt;br /&gt;
&lt;br /&gt;
==Reguläre Ausdrücke==&lt;br /&gt;
&lt;br /&gt;
{| Border=1 Cellpadding=2&lt;br /&gt;
|c&lt;br /&gt;
|Ein einzelner Buchstabe passt auf sich selbst&lt;br /&gt;
|-&lt;br /&gt;
|.&lt;br /&gt;
|Ein Punkt passt auf jedes Zeichen außer auf das Zeilenende&lt;br /&gt;
|-&lt;br /&gt;
|*&lt;br /&gt;
|Das dem Operator * vorangehende Muster kann 0 oder öfter vorkommen&lt;br /&gt;
|-&lt;br /&gt;
|^&lt;br /&gt;
|(Caret) passt auf den Zeilenanfang&lt;br /&gt;
|-&lt;br /&gt;
|$&lt;br /&gt;
|Passt auf das Zeilenende&lt;br /&gt;
|-&lt;br /&gt;
|\&lt;br /&gt;
|Das folgende Sonderzeichen wird entwertet&lt;br /&gt;
|-&lt;br /&gt;
|[...]&lt;br /&gt;
|Passt auf &amp;quot;genau&amp;quot; eins in [...] angebenen Zeichen&lt;br /&gt;
|-&lt;br /&gt;
|[^...]&lt;br /&gt;
|Passt auf &amp;quot;genau&amp;quot; ein Zeichen welches nicht in [...] angebenen ist&lt;br /&gt;
|-&lt;br /&gt;
|\&amp;lt;&lt;br /&gt;
|Passt auf den Wortanfang&lt;br /&gt;
|-&lt;br /&gt;
|\&amp;gt;&lt;br /&gt;
|Passt auf das Wortende&lt;br /&gt;
|-&lt;br /&gt;
|\+&lt;br /&gt;
|Das dem Operator \+ vorangehende Muster kann 1 oder öfter vorkommen&lt;br /&gt;
|-&lt;br /&gt;
|&amp;amp;&lt;br /&gt;
|Setzt das gefunden Suchmuster ein&lt;br /&gt;
|-&lt;br /&gt;
|\(...\)&lt;br /&gt;
|Speichert den Text auf den das Suchmuster passt zur späteren Verwendung&lt;br /&gt;
|-&lt;br /&gt;
|\n&lt;br /&gt;
|Setzt das vorangehende, mit \(...\) Gefundene wieder ein&lt;br /&gt;
|-&lt;br /&gt;
|(...)&lt;br /&gt;
|Gruppiert Auswahlmöglichkeiten&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;nowiki&amp;gt;|&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
|Trennt Auswahlmöglichkeiten&lt;br /&gt;
|-&lt;br /&gt;
|\b&lt;br /&gt;
|Passt auf den Anfang oder das Ende eines Wortes&lt;br /&gt;
|-&lt;br /&gt;
|\B&lt;br /&gt;
|Symbolisiert den Raum innerhalb eines Wortes&lt;br /&gt;
|-&lt;br /&gt;
|\w&lt;br /&gt;
|Passt auf alle alphanumerischen Zeichen [A-Za-z0-9]&lt;br /&gt;
|-&lt;br /&gt;
|\W&lt;br /&gt;
|Passt auf alle nichtalphanumerischen Zeichen [^A-Za-z0-9]&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Die Rangfolge der Operatoren(von der höchsten zur niedrigsten)&lt;br /&gt;
:(, ), ?, *, + | .&lt;br /&gt;
&lt;br /&gt;
Die anderen Operatoren sind mit den anderen Buchstaben gleichrangig.&lt;br /&gt;
&lt;br /&gt;
===Beispiel zum Suchen===&lt;br /&gt;
&lt;br /&gt;
 Suchmuster               Passt auf&lt;br /&gt;
 ^Tuxer                   Tuxer am Zeilenanfang&lt;br /&gt;
 [tT]uxer                 Tuxer oder tuxer&lt;br /&gt;
 80[23]?86                8086, 80286 oder 80386&lt;br /&gt;
&lt;br /&gt;
===grep===&lt;br /&gt;
&lt;br /&gt;
Mit grep ist es möglich, in Dateien nach regulären Ausdrücken zu suchen. Wenn&lt;br /&gt;
eine Übereinstimmung gefunden wird, wird die komplette Zeile auf die&lt;br /&gt;
Standardausgabe geschrieben. grep kann auch von STDIN lesen.Es ist&lt;br /&gt;
empfehlenswert, sich anzugwöhnen ,das Suchmuster in Anführungszeichen zu&lt;br /&gt;
schreiben. Es gibt 3 Arten fgrep = fastgrep , grep und egrep egrep&lt;br /&gt;
&lt;br /&gt;
Beispiel:&lt;br /&gt;
&lt;br /&gt;
 root@zero:~# cat text&lt;br /&gt;
 quatsch&lt;br /&gt;
 quatsch&lt;br /&gt;
 quatsch&lt;br /&gt;
 wichtig&lt;br /&gt;
 quatsch&lt;br /&gt;
 root@zero:~# grep wichtig text&lt;br /&gt;
 wichtig&lt;br /&gt;
 root@zero:~# &lt;br /&gt;
&lt;br /&gt;
 -c                   meldet nur die Gesamtzahl der Fundstellen&lt;br /&gt;
 -v                   zeigt nur Zeilen, die »Ausdruck« nicht enthalten&lt;br /&gt;
 -i                   ignoriert Groß- und Kleinschreibung&lt;br /&gt;
 -l                    meldet nur Dateinamen mit Fundstellen&lt;br /&gt;
 -n                   listet Zeilennummern zu jeder Fundstelle&lt;br /&gt;
 -f                   Dateiname »Dateiname« enthält die Such-Ausdrücke&lt;br /&gt;
 -E                   ist ein erweiterter regulärer Ausdruck (egrep)&lt;br /&gt;
 -F                   (Muster, Ausdruck) ist ein Muster (String) (fgrep)&lt;br /&gt;
 -b                   listet auch die Position der Fundstellen&lt;br /&gt;
 -C    Anzahl         Anzahl von Zeilen werden nach der Fundstelle ausgegeben&lt;br /&gt;
 -B    Anzahl         Anzahl von Zeilen werden vor der Fundstelle ausgegeben&lt;br /&gt;
 -r                   Durchsucht Verzeichnisse rekursiv&lt;br /&gt;
&lt;br /&gt;
==Useridendifikation==&lt;br /&gt;
===/etc/passwd===&lt;br /&gt;
====Beschreibung====&lt;br /&gt;
passwd ist eine ASCII-Datei, die eine Liste der Benutzer des Systems und deren&lt;br /&gt;
Passwörter enthält. Die Passwortdatei sollte für alle Benutzer lesbar sein, was für&lt;br /&gt;
dieVerschlüsselung notwendig ist; aber nur vom Superuser beschreibbar. Wenn&lt;br /&gt;
Sie eine neue Kennung einrichten, lassen Sie das Passwort-Feld in der Datei frei&lt;br /&gt;
und benutzen Sie passwd(1), um dem System ein Passwort für die neue Kennung&lt;br /&gt;
mitzuteilen.&lt;br /&gt;
&lt;br /&gt;
Die Datei /etc/passwd enthält einen Eintrag pro Zeile mit dem Format:&lt;br /&gt;
login_name:passwd:UID:GID:user_name:directory:shell&lt;br /&gt;
====Die Bedeutung der Felder:====&lt;br /&gt;
# login_name Kennung des Benutzers auf dem System.&lt;br /&gt;
# password   Hier steht bei Shadowsystemen ein x. Die Passwörter sind in der Datei /etc/shadow&lt;br /&gt;
# UID        Die numerische Benutzernummer.&lt;br /&gt;
#  GID        Die numerische Gruppennummer des Benutzers.&lt;br /&gt;
# user_name Ein optionales Kommentarfeld, oft benutzt für den vollen Namen des Benutzers und weitere Informationen (Telefon, Raum-Nummer etc.).&lt;br /&gt;
# directory  Das Heimatverzeichnis $HOME des Benutzers.&lt;br /&gt;
# shell      Das Programm, das beim Einloggen gestartet werden soll (falls nicht nötig, benutzen Sie /bin/bash).&lt;br /&gt;
&lt;br /&gt;
===/etc/group===&lt;br /&gt;
====Beschreibung====&lt;br /&gt;
etc/group ist eine ASCII Datei, die Gruppen definiert, zu denen Benutzer&lt;br /&gt;
gehören. Es gibt nur einen Eintrag pro Zeile; jede Zeile hat folgendes Format:&lt;br /&gt;
         GruppenName:Passwort:GruppenKennung:BenutzerListe&lt;br /&gt;
Beschreibung der Felder:&lt;br /&gt;
#     GruppenName      Die Bezeichnung der Gruppe.&lt;br /&gt;
#     Passwort         Das (verschlüsselte) Gruppen-Passwort. Wenn dieses Feld leer ist, wird kein Passwort benötigt.&lt;br /&gt;
#     GruppenKennung Die numerische Identifikation der Gruppe.&lt;br /&gt;
#     BenutzerListe    Alle Namen der Mitglieder, getrennt durch Kommas.&lt;br /&gt;
&lt;br /&gt;
===/etc/shadow===&lt;br /&gt;
====Beschreibung====&lt;br /&gt;
shadow beinhaltet Informationen zu den verschlüsselten Passwörten, zu den&lt;br /&gt;
Benutzerzugängen und weitere Informationen zur Laufzeit der Passwörter.&lt;br /&gt;
 Name:Passwort:Letzte Änderung:Mintage:Maxtage:Warntage:Inaktiv:Ablauf&lt;br /&gt;
#    Der Loginname&lt;br /&gt;
#    verschlüsseltes Passwort &lt;br /&gt;
&amp;lt;nowiki&amp;gt;*&amp;lt;/nowiki&amp;gt; bedeutet Benutzer kann sich nicht einlogen&lt;br /&gt;
! bedeutet Benutzer hat kein Passwort gesetzt&lt;br /&gt;
#    Tage seit dem 1 Januar 1970 an dem das Passwort letztmals geändert wurde&lt;br /&gt;
#    Tage, die das Passwort behalten werden muss, bevor es wieder geändert werden kann&lt;br /&gt;
#     Die Anzahl der Tage, nach denen der Benutzer das Passwort wieder ändern muss&lt;br /&gt;
#    Anzahl der Tage bevor das Passwort abläuft und der Benutzer gewarnt wird&lt;br /&gt;
#    Wenn der Zugang diese Anzahl von Tagen nicht benutzt wird, wird der Zugang gesperrt&lt;br /&gt;
#    Tag seit dem 1 Januar 1970, an dem der Zugang gesperrt wird&lt;br /&gt;
#    Reserviertes Feld&lt;br /&gt;
&lt;br /&gt;
Die Datei sollte aus Sicherheitgründen nicht für einen normalen Benutzer lesbar&lt;br /&gt;
sein.&lt;br /&gt;
&lt;br /&gt;
==Programme zur Userverwaltung==&lt;br /&gt;
===useradd===&lt;br /&gt;
User anlegen&lt;br /&gt;
 root@zero:~# useradd -m -u 1011 -g users -G admin -d /home/erwin -s /bin/bash -c &amp;quot;Erwin Lehman&amp;quot;  erwin&lt;br /&gt;
{| border=1 cellpadding=2&lt;br /&gt;
|&amp;quot;-m&amp;quot;&lt;br /&gt;
|Lege Homedirectory an&lt;br /&gt;
|-&lt;br /&gt;
|&amp;quot;-u 1011&amp;quot;&lt;br /&gt;
|Userid wird zugeordnet&lt;br /&gt;
|-&lt;br /&gt;
|&amp;quot;-g users&amp;quot;&lt;br /&gt;
|Primäre Gruppe wird zugeordnet&lt;br /&gt;
|-&lt;br /&gt;
|&amp;quot;-G admin&amp;quot;&lt;br /&gt;
|Sekunbdäre Gruppe wird zugeordnet&lt;br /&gt;
|-&lt;br /&gt;
|&amp;quot;-d /home/erwin/&amp;quot;&lt;br /&gt;
|Name des Homedirectory&lt;br /&gt;
|-&lt;br /&gt;
|&amp;quot;-s /bin/bash&amp;quot;&lt;br /&gt;
|Bash wird zugeordnet&lt;br /&gt;
|- &lt;br /&gt;
|&amp;quot;-c Erwin Lehman&amp;quot;&lt;br /&gt;
|Kommentarfeld&lt;br /&gt;
|-&lt;br /&gt;
|&amp;quot;erwin&amp;quot; &lt;br /&gt;
|Name des Users&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Defaulteinstellungen anzeigen&lt;br /&gt;
 root@zero:~# useradd -D&lt;br /&gt;
 GROUP=100&lt;br /&gt;
 HOME=/home&lt;br /&gt;
 INACTIVE=-1&lt;br /&gt;
 EXPIRE=&lt;br /&gt;
 SHELL=/bin/sh&lt;br /&gt;
 SKEL=/etc/skel&lt;br /&gt;
 CREATE_MAIL_SPOOL=no&lt;br /&gt;
&lt;br /&gt;
Defaulteinstellungen ändern&lt;br /&gt;
 useradd -D -s /bin/bash&lt;br /&gt;
&lt;br /&gt;
Konfigurationsdatei&lt;br /&gt;
 root@zero:~# cat /etc/default/useradd &lt;br /&gt;
 SHELL=/bin/bash&lt;br /&gt;
 GROUP=100&lt;br /&gt;
 HOME=/home&lt;br /&gt;
 INACTIVE=-1&lt;br /&gt;
 EXPIRE=&lt;br /&gt;
 SKEL=/etc/skel&lt;br /&gt;
 CREATE_MAIL_SPOOL=no&lt;br /&gt;
&lt;br /&gt;
===usermod===&lt;br /&gt;
User modifizieren&lt;br /&gt;
 root@zero:~# usermod -l fritz -s /bin/sh -G admin,video erwin&lt;br /&gt;
{| border=1 cellpadding=2&lt;br /&gt;
|&amp;quot;-l fritz&amp;quot;&lt;br /&gt;
|Neuer Username&lt;br /&gt;
|-&lt;br /&gt;
|&amp;quot;-s /bin/sh&amp;quot;&lt;br /&gt;
|Neue Shell&lt;br /&gt;
|-&lt;br /&gt;
|&amp;quot;-G admin, video&amp;quot;&lt;br /&gt;
|Sekunbdäre Gruppen werden zugeordnet&lt;br /&gt;
|-&lt;br /&gt;
|&amp;quot;erwin&amp;quot; &lt;br /&gt;
|Name des Users&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
===userdel===&lt;br /&gt;
User inklusive Homedirectory löschen&lt;br /&gt;
 root@zero:~# userdel -r fritz&lt;br /&gt;
&lt;br /&gt;
===passwd===&lt;br /&gt;
Rootpasswort ändern&lt;br /&gt;
 root@zero:~# passwd &lt;br /&gt;
 Geben Sie ein neues UNIX Passwort ein:'''sysadm''' &lt;br /&gt;
 Geben Sie das neue UNIX Passwort erneut ein:'''sysadm''' &lt;br /&gt;
 passwd: Passwort erfolgreich geändert&lt;br /&gt;
&lt;br /&gt;
Passwort von tux ändern&lt;br /&gt;
 root@zero:~# passwd tux&lt;br /&gt;
 Geben Sie ein neues UNIX Passwort ein:'''suxer''' &lt;br /&gt;
 Geben Sie das neue UNIX Passwort erneut ein:'''suxer'''&lt;br /&gt;
 passwd: Passwort erfolgreich geändert&lt;br /&gt;
&lt;br /&gt;
Minimale und Maximale Gültigkeit des Passwortes von tux festlegen&lt;br /&gt;
 root@zero:~# passwd -n 5 -x 120 tux&lt;br /&gt;
&lt;br /&gt;
===groupadd===&lt;br /&gt;
 root@zero:~# groupadd -f -g 2001 xinuxer&lt;br /&gt;
{| border=1 cellpadding=2&lt;br /&gt;
|&amp;quot;-f&amp;quot;&lt;br /&gt;
|Überschreibe bestehende Gruppe&lt;br /&gt;
|-&lt;br /&gt;
|&amp;quot;-g 2001&amp;quot;&lt;br /&gt;
|GID der Gruppe&lt;br /&gt;
|-&lt;br /&gt;
|&amp;quot;xinuxer&amp;quot; &lt;br /&gt;
|Name des Gruppe&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==chmod==&lt;br /&gt;
Die Syntax des Befehls chmod lautet:&lt;br /&gt;
&lt;br /&gt;
'''chmod''' WerWieWas [,WerWieWas,.....] Dateiliste&lt;br /&gt;
&lt;br /&gt;
oder&lt;br /&gt;
&lt;br /&gt;
'''chmod''' Oktalzahl Dateiliste&lt;br /&gt;
&lt;br /&gt;
Durch WerWieWas bzw. Oktalzahl wird die Rechtetabelle definiert. Innerhalb von&lt;br /&gt;
WerWieWas darf es kein Leerzeichen geben. Wer bezeichnet den Benutzerkreis,&lt;br /&gt;
dem man Rechte gibt, Wie die Art, in der die Rechte gegeben werden und Was die&lt;br /&gt;
Rechte als solche. Im einzelnen können folgende Kürzel benutzt werden:&lt;br /&gt;
&lt;br /&gt;
Für Wer kann eines der folgenden Kürzel oder eine Kombination davon stehen:&lt;br /&gt;
 u                   (user) Rechte für den Dateibesitzer&lt;br /&gt;
 g                   (group) Rechte für die Gruppe&lt;br /&gt;
 o                   (others) Rechte für alle anderen Benutzer&lt;br /&gt;
 a                   (all) Rechte für alle Benutzer&lt;br /&gt;
Für Wie steht eines der folgenden Kürzel:&lt;br /&gt;
 +                   Die Rechte werden zu den vorhandenen zusätzlich vergeben&lt;br /&gt;
 -                   Die im Folgenden genannten Rechte werden entzogen&lt;br /&gt;
 =                   Die im Folgenden genannten Rechte ersetzen die bisherigen&lt;br /&gt;
Für Was steht eines der folgenden Kürzel:&lt;br /&gt;
 r                   (read) lesen&lt;br /&gt;
 w                   (write) schreiben&lt;br /&gt;
 x                   (execute) ausführen&lt;br /&gt;
oder diese Sonderformen&lt;br /&gt;
 s                   (usersbit) Programm läuft unter der UID des Besitzers&lt;br /&gt;
 s                   (groupsbit)Programm läuft unter der GID des GRUPPE&lt;br /&gt;
 t                   (stickybit) Dateien im Verzeichnis darf nur Besitzer löschen&lt;br /&gt;
&lt;br /&gt;
===Beispiel===&lt;br /&gt;
Setze für alle Schreib- und Leserecht&lt;br /&gt;
 xinux@zero:~$ chmod a=rw test &lt;br /&gt;
 xinux@zero:~$ ls -l test &lt;br /&gt;
 -rw-rw-rw- 1 xinux xinux 0 2009-06-16 12:01 test&lt;br /&gt;
 xinux@zero:~$ &lt;br /&gt;
&lt;br /&gt;
Erteile Besitzer Ausführungsrecht&lt;br /&gt;
 xinux@zero:~$ chmod u+x test ; ls -l test &lt;br /&gt;
 -rwxrw-rw- 1 xinux xinux 0 2009-06-16 12:01 test&lt;br /&gt;
 xinux@zero:~$ &lt;br /&gt;
&lt;br /&gt;
===chmod oktale Schreibweise===&lt;br /&gt;
 Specialrights        User           Group         Other&lt;br /&gt;
 usbit gsbit sticky    r    w   x     r   w   x     r   w   x&lt;br /&gt;
   1     1      1      1    1   1     1   1   1     1   1   1&lt;br /&gt;
   0     0      0      0    0   0     0   0   0     0   0   0&lt;br /&gt;
 Oktale Wertigkeit pro Recht&lt;br /&gt;
   4     2       1     4    2   1     4   2   1     4   2   1&lt;br /&gt;
&lt;br /&gt;
===Beispiele===&lt;br /&gt;
 xinux@zero:~$ chmod 751 test ; ls -l test&lt;br /&gt;
 -rwxr-x--x 1 xinux xinux 0 2009-06-16 12:01 test&lt;br /&gt;
 xinux@zero:~$ &lt;br /&gt;
&lt;br /&gt;
 xinux@zero:~$ chmod 4770 test ; ls -l test&lt;br /&gt;
 -rwsrwx--- 1 xinux xinux 0 2009-06-16 12:01 test&lt;br /&gt;
 xinux@zero:~$ &lt;br /&gt;
&lt;br /&gt;
 xinux@zero:~$ chmod 0 test ; ls -l test &lt;br /&gt;
 ---------- 1 xinux xinux 0 2009-06-16 12:01 test&lt;br /&gt;
&lt;br /&gt;
===chmod Optionen===&lt;br /&gt;
 -c   (changes) es werden nur die Dateien angezeigt, deren Zugriffsrechte tatsächlich verändert werden&lt;br /&gt;
 -f   (silent, quiet) Fehlermeldungen wegen fehlgeschlagener Änderungsversuche werden unterdrückt&lt;br /&gt;
 -v   (verbose) alle Aktionen werden angezeigt&lt;br /&gt;
 -R   (recursive) die Zugriffsrechte aller Dateien in den Unterverzeichnissen werden ebenfalls geändert&lt;br /&gt;
&lt;br /&gt;
Theoretisch sind alle Kombinationen der Zugriffsrechte denkbar, aber der&lt;br /&gt;
Eigentümer einer Datei darf diese immer lesen, selbst wenn das Lesebit nicht&lt;br /&gt;
gesetzt ist. Genauso macht es wenig Sinn, eine gewöhnliche Textdatei als&lt;br /&gt;
ausführbar zu setzen; die Shell wird damit nichts anfangen können. Ein x für ein&lt;br /&gt;
Verzeichnis gibt an, dass in dieses gewechselt werden kann.&lt;br /&gt;
&lt;br /&gt;
Rechte sind verbindlich&lt;br /&gt;
&lt;br /&gt;
Interessant ist auch ein Konstrukt folgender Art&lt;br /&gt;
 -rwx---rwx&lt;br /&gt;
&lt;br /&gt;
das angibt, dass mit der Datei alles angestellt werden kann, außer durch Nutzer der&lt;br /&gt;
Gruppe. Versucht irgend jemand, der nicht der Gruppe des Eigentümers angehört,&lt;br /&gt;
die Datei zu modifizieren, wird ihm dies gelingen, einem Gruppenmitglied bleibt&lt;br /&gt;
dies versagt, obwohl er ja gleichzeitig ein &amp;quot;Anderer&amp;quot; ist. D.h. die Rechte der&lt;br /&gt;
Gruppe sind verbindlicher, als die Rechte der anderen!&lt;br /&gt;
&lt;br /&gt;
===Bedeutungen der Zugriffsarten===&lt;br /&gt;
====Dateien====&lt;br /&gt;
* r: Der Inhalt der Datei kann gelesen und damit auch kopiert werden. &lt;br /&gt;
 root@zero:~# cat test&lt;br /&gt;
 Dies ist eine Testdatei&lt;br /&gt;
  &lt;br /&gt;
 root@zero:~# cp test backup&lt;br /&gt;
&lt;br /&gt;
* w: Der Inhalt der Datei darf verändert werden. Ob die Datei gelöscht werden kann ist&lt;br /&gt;
keine Eigenschaft der Datei, sondern des Verzeichnisses, indem sich die Datei befindet.&lt;br /&gt;
 root@zero:~# cat &amp;gt; test&lt;br /&gt;
 Hier steht jetzt was anderes&lt;br /&gt;
 ^C&lt;br /&gt;
 root@zero:~# cat test&lt;br /&gt;
 Hier steht jetzt was anderes&lt;br /&gt;
  &lt;br /&gt;
 xinux@zero:~$ ls -ld verzeichnis/&lt;br /&gt;
 dr-xr-xr-x 2 xinux xinux 4096 2009-06-18 11:16 verzeichnis/&lt;br /&gt;
 xinux@zero:~/verzeichnis$ rm text&lt;br /&gt;
 rm: Entfernen von „text“ nicht möglich: Permission denied&lt;br /&gt;
&lt;br /&gt;
* x: Ausführrecht für Programme und Skripte&lt;br /&gt;
 xinux@zero:~$ ./programm&lt;br /&gt;
 -bash: ./programm: Permission denied&lt;br /&gt;
 xinux@zero:~$ chmod +x programm&lt;br /&gt;
 xinux@zero:~$ ./programm&lt;br /&gt;
 Test&lt;br /&gt;
  test&lt;br /&gt;
&lt;br /&gt;
====Verzeichnisse====&lt;br /&gt;
* r: Die Einträge in dem Verzeichnis sind lesbar.&lt;br /&gt;
Leserecht von verzeichnis/ entziehen&lt;br /&gt;
 xinux@zero:~$ chmod a-r verzeichnis/&lt;br /&gt;
 xinux@zero:~$ ls verzeichnis/&lt;br /&gt;
 ls: Öffnen von Verzeichnis verzeichnis/ nicht möglich: Permission denied&lt;br /&gt;
Leserecht für Benutzer und Gruppe vergeben&lt;br /&gt;
 xinux@zero:~$ chmod a+r verzeichnis/&lt;br /&gt;
 xinux@zero:~$ ls verzeichnis/&lt;br /&gt;
 text&lt;br /&gt;
&lt;br /&gt;
* w: Die Einträge in dem Verzeichnis können geändert werden. &lt;br /&gt;
Neue Datei erstellen&lt;br /&gt;
 xinux@zero:~$ touch neu&lt;br /&gt;
 xinux@zero:~$ ls neu&lt;br /&gt;
 neu&lt;br /&gt;
&lt;br /&gt;
Datei löschen&lt;br /&gt;
 xinux@zero:~$ rm neu&lt;br /&gt;
 xinux@zero:~$ ls neu&lt;br /&gt;
 ls: Zugriff auf neu nicht möglich: No such file or directory&lt;br /&gt;
&lt;br /&gt;
* x: Der Name des Verzeichnisses kann in einem Pfadnamen erscheinen.&lt;br /&gt;
Verzeichnis ohne x Recht&lt;br /&gt;
 xinux@zero:~$ chmod a-x verzeichnis/&lt;br /&gt;
Wechseln in Verzeichnis mangels x-Recht nicht möglich&lt;br /&gt;
 xinux@zero:~$ cd verzeichnis/&lt;br /&gt;
 -bash: cd: verzeichnis/: Permission denied&lt;br /&gt;
x-Recht vergeben&lt;br /&gt;
 xinux@zero:~$ chmod a+x verzeichnis/&lt;br /&gt;
damit Wechsel in Verzeichnis möglich&lt;br /&gt;
 xinux@zero:~$ cd verzeichnis/&lt;br /&gt;
 xinux@zero:~/verzeichnis$ pwd&lt;br /&gt;
 /home/xinux/verzeichnis&lt;br /&gt;
&lt;br /&gt;
====umask====&lt;br /&gt;
Neue Dateien und Verzeichnisse werden mit ein und denselben Zufriffsrechten erzeugt.&lt;br /&gt;
 xinux@zero:~$ mkdir text&lt;br /&gt;
 xinux@zero:~$ touch textdat&lt;br /&gt;
 xinux@zero:~$ ls -ld text*&lt;br /&gt;
 drwxr-xr-x 2 xinux xinux 4096 2009-06-18 11:37 text&lt;br /&gt;
 -rw-r--r-- 1 xinux xinux    0 2009-06-18 11:37 textdat&lt;br /&gt;
&lt;br /&gt;
Zuständig für dieses Verhalten ist die sogenannte umask, die oft in der Datei&lt;br /&gt;
/etc/profile auf den Wert 022 voreingestellt ist. Zusätzlich wird noch eine&lt;br /&gt;
Maximalmaske benötigt, die sich für Verzeichnisse und andere Dateien&lt;br /&gt;
unterscheidet. Die bei der Erzeugung gesetzten Rechte entstehen nun, indem von&lt;br /&gt;
der Maximalmaske der durch die umask vorgegebene Wert subtrahiert wird:&lt;br /&gt;
&lt;br /&gt;
{| border=1 cellpadding=2&lt;br /&gt;
!&lt;br /&gt;
! Dateien&lt;br /&gt;
! Verzeichnisse&lt;br /&gt;
|-&lt;br /&gt;
| Systemvorgabe&lt;br /&gt;
| 666&lt;br /&gt;
| 777&lt;br /&gt;
|-&lt;br /&gt;
| -umask&lt;br /&gt;
| 022&lt;br /&gt;
| 022&lt;br /&gt;
|-&lt;br /&gt;
| Ergebnis&lt;br /&gt;
| 644&lt;br /&gt;
| 755&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
 xinux@zero:~$ grep umask /etc/profile&lt;br /&gt;
 umask 022&lt;br /&gt;
&lt;br /&gt;
==Gruppenzugehörigkeit==&lt;br /&gt;
===newgrp===&lt;br /&gt;
Ändert die Gruppenzugehörigkeit eines Benutzers auf die angegebene Gruppe. Wenn keine Gruppe angegeben wird, wird die &lt;br /&gt;
Anmeldegruppe des Benutzers verwendet. Die neue Gruppe wird anschließend fü Zugriffskontrollen verwendet.&lt;br /&gt;
&lt;br /&gt;
 newgrp Gruppenname&lt;br /&gt;
&lt;br /&gt;
 root@zero:~# newgrp hacker&lt;br /&gt;
 root@zero:~# id&lt;br /&gt;
 uid=0(root) gid=1006(hacker) Gruppen=0(root),1006(hacker)&lt;br /&gt;
&lt;br /&gt;
===chgrp===&lt;br /&gt;
Verändert die Besitzugehörigkeit zu der angegebenen Gruppe&lt;br /&gt;
&lt;br /&gt;
 chgrp [Optionen] Gruppe Datei(en)&lt;br /&gt;
&lt;br /&gt;
Optionen:&lt;br /&gt;
 -c Zeigt Veränderungen an&lt;br /&gt;
 -f Unterdrückt die meisten Fehlermeldungen&lt;br /&gt;
 -R Verändert Dateien und Verzeichnisse rekursiv&lt;br /&gt;
 -v Gibt geschwätzige Ausgabe aus.&lt;br /&gt;
&lt;br /&gt;
 root@zero:~# ls -l&lt;br /&gt;
 ...&lt;br /&gt;
 d-wx--x--x  3 root root 4096 2009-06-18 13:34 verzeichnis&lt;br /&gt;
 &lt;br /&gt;
 root@zero:~# chgrp -R xinux verzeichnis/&lt;br /&gt;
 root@zero:~# ls -l&lt;br /&gt;
 ...&lt;br /&gt;
 d-wx--x--x  3 root xinux 4096 2009-06-18 13:34 verzeichnis&lt;br /&gt;
&lt;br /&gt;
 xinux@zero:~$ cd /root/verzeichnis/&lt;br /&gt;
 xinux@zero:/root/verzeichnis$ pwd&lt;br /&gt;
 /root/verzeichnis&lt;br /&gt;
&lt;br /&gt;
===chown===&lt;br /&gt;
Ändert den Eigentümer von einer oder mehreren Dateien in den angegebenen Benutzer. &lt;br /&gt;
chown erlaubt ebenfalls das Ändern der Gruppeneigentümreschaft. Nur der aktuelle Eigentümer einer&lt;br /&gt;
Datei oder der Superuser (root) darf die Eigentumsverhältnisse ändern.&lt;br /&gt;
&lt;br /&gt;
 chown [Optionen] Benutzer(:Gruppe) Dateien&lt;br /&gt;
&lt;br /&gt;
Optionen:&lt;br /&gt;
 -c Gibt Informationen über die veränderten Dateien aus&lt;br /&gt;
 --dereference Symbolischen Links folgen&lt;br /&gt;
 -v Gibt Informationen über alle Dateien aus, die chown zu ändern versucht, egal, ob die Änderung erfolgt ist oder nicht&lt;br /&gt;
 -R Geht rekursiv durch alle Unterverzeichnisse und führt die Änderungen durch. &lt;br /&gt;
&lt;br /&gt;
 root@zero:~# chown -R xinux.xinux verzeichnis/&lt;br /&gt;
 root@zero:~# ls -l&lt;br /&gt;
 insgesamt 12&lt;br /&gt;
 drwx------ 13 root  root  4096 2009-04-21 15:11 profile&lt;br /&gt;
 --w-------  1 root  root     0 2009-06-18 11:13 test&lt;br /&gt;
 -rw-r--r--  1 root  root    40 2009-06-18 12:04 text&lt;br /&gt;
 drwxrwx--x  3 xinux xinux 4096 2009-06-18 13:39 verzeichnis&lt;br /&gt;
 &lt;br /&gt;
 root@zero:~# chown -R -c xinux.xinux verzeichnis/&lt;br /&gt;
 &lt;br /&gt;
 root@zero:~# chown -R -v xinux.xinux verzeichnis/&lt;br /&gt;
 Eigentümer von „verzeichnis/01“ als xinux:xinux erhalten&lt;br /&gt;
 Eigentümer von „verzeichnis/test“ als xinux:xinux erhalten&lt;br /&gt;
 Eigentümer von „verzeichnis/“ als xinux:xinux erhalten&lt;br /&gt;
&lt;br /&gt;
==Eingabe/Ausgabe==&lt;br /&gt;
Standardeingabe (0): Laufende Programme erwarten von hier ihre Eingaben (normalerweise handelt es sich um die Tastatur).&lt;br /&gt;
&lt;br /&gt;
Standardausgabe (1): Programme schreiben auf diese ihre Ausgaben (Bildschirm).&lt;br /&gt;
&lt;br /&gt;
Standardfehlerausgabe (2) : Fehlerausgaben landen hier (Bildschirm, aber nur die aktive Konsole).&lt;br /&gt;
&lt;br /&gt;
[[Bild:std.jpg]]&lt;br /&gt;
&lt;br /&gt;
===cat===&lt;br /&gt;
Das Programm cat liest von STDIN und gibt es STDOUT wieder aus&lt;br /&gt;
&lt;br /&gt;
Einlesen der Datei text&lt;br /&gt;
 root@zero:~# cat &amp;lt; text&lt;br /&gt;
 wichtig&lt;br /&gt;
&lt;br /&gt;
Schreiben in die Datei text, dies überschreibt den bisherigen Inhalt der Datei&lt;br /&gt;
 root@zero:~# cat &amp;gt; text&lt;br /&gt;
 sogar noch wichtiger &lt;br /&gt;
 &lt;br /&gt;
Ausgeben der Datei text&lt;br /&gt;
 root@zero:~# cat text &lt;br /&gt;
 sogar noch wichtiger&lt;br /&gt;
&lt;br /&gt;
Lesen aus der Datei text und schreiben in die Datei neuertext&lt;br /&gt;
 root@zero:~# cat &amp;lt; text &amp;gt; neuertext&lt;br /&gt;
 root@zero:~# cat neuertext&lt;br /&gt;
 sogar noch wichtiger&lt;br /&gt;
&lt;br /&gt;
Anhängen der Ausgabe von date an die Datei neuertext&lt;br /&gt;
 root@zero:~# date &amp;gt;&amp;gt; neuertext&lt;br /&gt;
 root@zero:~# cat neuertext&lt;br /&gt;
 sogar noch wichtiger&lt;br /&gt;
 Do 18. Jun 14:08:58 CEST 2009&lt;br /&gt;
&lt;br /&gt;
Umleiten des Standardfehlerkanals nach error&lt;br /&gt;
 root@zero:~# rm sux 2&amp;gt; error&lt;br /&gt;
 root@zero:~# more error&lt;br /&gt;
 rm: Entfernen von „sux“ nicht möglich: No such file or directory&lt;br /&gt;
&lt;br /&gt;
===Umleitungen===&lt;br /&gt;
Nacheinander auszuführende Kommandos&lt;br /&gt;
 root@zero:~# pwd; date&lt;br /&gt;
 /root&lt;br /&gt;
 Do 18. Jun 14:13:05 CEST 2009&lt;br /&gt;
 &lt;br /&gt;
Übergeben der Ausgabe von tail als Eingabe von grep mit Hilfe der Pipe &amp;quot;|&amp;quot;&lt;br /&gt;
 root@zero:~# tail /var/log/auth.log | grep xinux&lt;br /&gt;
 Jun 18 13:52:33 zero nss_wins[11433]: pam_unix(login:session): session closed for user xinux&lt;br /&gt;
&lt;br /&gt;
Übergeben der letzten 100 Zeilen von syslog als Eingabe von grep&lt;br /&gt;
 root@zero:~# tail /var/log/syslog -n 100 | grep error&lt;br /&gt;
 Jun 18 09:30:54 zero kernel: [154384.692135] end_request: I/O error, dev fd0, sector 0&lt;br /&gt;
 Jun 18 09:30:54 zero kernel: [154384.712137] end_request: I/O error, dev fd0, sector 0&lt;br /&gt;
&lt;br /&gt;
==tr==&lt;br /&gt;
tr ist ein Programm um Zeichen zu übersetzen. Dies betrifft nur die Ausgabe, die Datei selbst bleibt unverändert.&lt;br /&gt;
&lt;br /&gt;
Ersetzt Kleinbuchstaben durch Großbuchstaben aus der Datei text&lt;br /&gt;
 root@zero:~# tr &amp;quot;a-z&amp;quot; &amp;quot;A-Z&amp;quot; &amp;lt; text&lt;br /&gt;
 SOGAR NOCH WICHTIGER&lt;br /&gt;
 123&lt;br /&gt;
 34&lt;br /&gt;
 4711&lt;br /&gt;
 TEST&lt;br /&gt;
&lt;br /&gt;
Ersetzt alle Zahlen durch X&lt;br /&gt;
 root@zero:~# tr &amp;quot;0-9&amp;quot; &amp;quot;X&amp;quot; &amp;lt; text&lt;br /&gt;
 sogar noch wichtiger&lt;br /&gt;
 XXX&lt;br /&gt;
 XX&lt;br /&gt;
 XXXX&lt;br /&gt;
 test&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
 root@zero:~# cat &amp;gt; test&lt;br /&gt;
 +++++&lt;br /&gt;
 ###&lt;br /&gt;
 1111&lt;br /&gt;
&lt;br /&gt;
-s löscht mehrfach kommende Zeichen&lt;br /&gt;
 root@zero:~# tr '''-s''' &amp;quot;+&amp;quot; &amp;lt; test&lt;br /&gt;
 +&lt;br /&gt;
 ###&lt;br /&gt;
 1111&lt;br /&gt;
&lt;br /&gt;
-d löscht vorkommende Zeichen &lt;br /&gt;
 root@zero:~# tr '''-d''' &amp;quot;#&amp;quot; &amp;lt; test&lt;br /&gt;
 +++++ &lt;br /&gt;
 &lt;br /&gt;
 1111&lt;br /&gt;
&lt;br /&gt;
==cut==&lt;br /&gt;
Spalten aus einer Datei schneiden. Dies betrifft nur die Ausgabe, die Datei selbst bleibt unverändert.&lt;br /&gt;
 &lt;br /&gt;
Schneidet die erste Spalte aus, der Delimiter ist : &lt;br /&gt;
 root@zero:~# cut -f 1 -d : /etc/passwd&lt;br /&gt;
 root&lt;br /&gt;
 daemon&lt;br /&gt;
 bin&lt;br /&gt;
 ...&lt;br /&gt;
 xinux&lt;br /&gt;
&lt;br /&gt;
 root@zero:~# more test&lt;br /&gt;
 1234#5678#9999&lt;br /&gt;
 &lt;br /&gt;
Schneidet die zweite Spalte aus, der Delimiter ist #&lt;br /&gt;
 root@zero:~# cut -f 2 -d &amp;quot;#&amp;quot; &amp;lt; test&lt;br /&gt;
 5678&lt;br /&gt;
&lt;br /&gt;
Schneidet bis zum 3 Zeichen ab&lt;br /&gt;
 root@zero:~$ echo S01policykit | cut -c 4-&lt;br /&gt;
 policykit&lt;br /&gt;
&lt;br /&gt;
==expand==&lt;br /&gt;
Ersetzt Tabulatorzeichen durch Folgen von Leerzeichen und schreibt das Ergebnis auf die Standardausgabe&lt;br /&gt;
 root@zero:~# expand /etc/samba/smb.conf&lt;br /&gt;
 ...&lt;br /&gt;
&lt;br /&gt;
==fmt==&lt;br /&gt;
#Setzt den Text der Dateien im Blocksatz der angegebenen Breite durch Auffüllen von Zeilen und Entfernen von Zeilenwechseln.&lt;br /&gt;
Standardgemäß werden Leerzeilen, die Position von Leerzeichen und der Einzug am Zeilenanfang erhalten. fmt versucht, &lt;br /&gt;
Zeilenumbrüche an Satzenden durchzuführen sowie sie nach dem ersten oder vor dem letzten Wort eines Satzes zu vermeiden. &lt;br /&gt;
 &lt;br /&gt;
 fmt [Optionen] [Dateien]&lt;br /&gt;
&lt;br /&gt;
Optionen&lt;br /&gt;
&lt;br /&gt;
* -p ''Präfix'': Formatiert nur Zeilen, die mit ''Präfix'' anfangen&lt;br /&gt;
 root@zero:/tmp# fmt -p '#' text&lt;br /&gt;
 #Setzt den Text der Dateien im Blocksatz der angegebenen Breite durch&lt;br /&gt;
 #Auffüllen von Zeilen und Entfernen von Zeilenwechseln.  Standardgemäß&lt;br /&gt;
 #werden Leerzeilen, die Position von Leerzeichen und der Einzug am&lt;br /&gt;
 #Zeilenanfang erhalten. fmt versucht,&lt;br /&gt;
 Zeilenumbrüche an Satzenden durchzuführen sowie sie nach dem ersten oder vor dem letzten Wort eines Satzes zu vermeiden.&lt;br /&gt;
&lt;br /&gt;
* -u : Erzwingt genau ein Leerzeichen zwischen Wörtern und zwei Leerzeichen zwischen Sätzen&lt;br /&gt;
&lt;br /&gt;
* -w ''Breite'': Setzt die Ausgabebreite auf ''Breite''&lt;br /&gt;
 root@zero:/tmp# fmt -w 30 text&lt;br /&gt;
 #Setzt den Text der Dateien&lt;br /&gt;
 im Blocksatz der angegebenen&lt;br /&gt;
 Breite durch Auffüllen&lt;br /&gt;
 von Zeilen und Entfernen&lt;br /&gt;
 von Zeilenwechseln.&lt;br /&gt;
 #Standardgemäß werden&lt;br /&gt;
 Leerzeilen, die Position von&lt;br /&gt;
 Leerzeichen und der Einzug am&lt;br /&gt;
 Zeilenanfang erhalten. fmt&lt;br /&gt;
 versucht, Zeilenumbrüche&lt;br /&gt;
 an Satzenden durchzuführen&lt;br /&gt;
 sowie sie nach dem ersten&lt;br /&gt;
 oder vor dem letzten Wort&lt;br /&gt;
 eines Satzes zu vermeiden.&lt;br /&gt;
&lt;br /&gt;
==join==&lt;br /&gt;
Führt die Zeilen zweier sortierter Dateien anhand von '''Übereinstimmungen''' in einem gemeinsamen Feld zusammen.&lt;br /&gt;
&lt;br /&gt;
 root@zero:~# more name&lt;br /&gt;
 1. karl&lt;br /&gt;
 2. heinz&lt;br /&gt;
 3. hans&lt;br /&gt;
 4. otto&lt;br /&gt;
 root@zero:~# more tel&lt;br /&gt;
 1. 1234&lt;br /&gt;
 2. 4321&lt;br /&gt;
 3. 222&lt;br /&gt;
 4. 121212&lt;br /&gt;
 root@zero:~# join name tel &amp;gt; telefonbuch&lt;br /&gt;
 root@zero:~# more telefonbuch&lt;br /&gt;
 1. karl 1234&lt;br /&gt;
 2. heinz 4321&lt;br /&gt;
 3. hans 222&lt;br /&gt;
 4. otto 121212&lt;br /&gt;
&lt;br /&gt;
 root@zero:~# join -t : /etc/passwd /etc/shadow&lt;br /&gt;
 ....&lt;br /&gt;
 daemon:x:1:1:daemon:/usr/sbin:/bin/sh:*:14181:0:99999:7:::&lt;br /&gt;
 bin:x:2:2:bin:/bin:/bin/sh:*:14181:0:99999:7:::&lt;br /&gt;
 sys:x:3:3:sys:/dev:/bin/sh:*:14181:0:99999:7:::&lt;br /&gt;
 sync:x:4:65534:sync:/bin:/bin/sync:*:14181:0:99999:7:::&lt;br /&gt;
 ...&lt;br /&gt;
&lt;br /&gt;
join in dat1 nach Feld 3 und in dat2 nach Feld 2&lt;br /&gt;
 thomas@lydia:~$ cat dat1 &lt;br /&gt;
 hugo:ps:1111&lt;br /&gt;
 erwin:zw:2222&lt;br /&gt;
 karl:sb:3333&lt;br /&gt;
 rudi:kl:4444&lt;br /&gt;
 thomas@lydia:~$ cat dat2&lt;br /&gt;
 blau:1111:svn&lt;br /&gt;
 grün:2222:fcs&lt;br /&gt;
 gelb:3333:fch&lt;br /&gt;
 rot:4444:fck&lt;br /&gt;
 thomas@lydia:~$ join -t : -1 3 -2 2 dat1 dat2 &lt;br /&gt;
 1111:hugo:ps:blau:svn&lt;br /&gt;
 2222:erwin:zw:grün:fcs&lt;br /&gt;
 3333:karl:sb:gelb:fch&lt;br /&gt;
 4444:rudi:kl:rot:fck&lt;br /&gt;
&lt;br /&gt;
==nl==&lt;br /&gt;
Nummeriert die Zeilen in einer Datei.&lt;br /&gt;
&lt;br /&gt;
 root@zero:~# nl /etc/passwd                                                   &lt;br /&gt;
     1  root:x:0:0:root:/root:/bin/bash                                       &lt;br /&gt;
     2  daemon:x:1:1:daemon:/usr/sbin:/bin/sh                                 &lt;br /&gt;
     3  bin:x:2:2:bin:/bin:/bin/sh                                            &lt;br /&gt;
     4  sys:x:3:3:sys:/dev:/bin/sh                                            &lt;br /&gt;
     5  sync:x:4:65534:sync:/bin:/bin/sync&lt;br /&gt;
     ...&lt;br /&gt;
Nummereriet mit führenden Nullen der Separatir ist ein :&lt;br /&gt;
 root@zero:~# nl -s : -n rz dat1&lt;br /&gt;
&lt;br /&gt;
==od==&lt;br /&gt;
Gibt Dateien im Oktal und anderen Formaten aus.&lt;br /&gt;
&lt;br /&gt;
 od [Optionen] Datei&lt;br /&gt;
&lt;br /&gt;
* -j ''Bytes'': Überspringt die Anzahl ''Bytes'' einer Datei&lt;br /&gt;
* -N ''Bytes'': Gibt nur die Anzahl ''Bytes'' aus&lt;br /&gt;
* -c : Gebe ASCII Zeichen aus&lt;br /&gt;
* -f : Gebe Fließkommazahlen aus&lt;br /&gt;
* -i : Gebe Dezimal Integer aus&lt;br /&gt;
* -l : Gebe Dezimal Long aus&lt;br /&gt;
* -o : Gebe Oktal 2 Byte Einheiten aus&lt;br /&gt;
* -s : Gebe Dezimal 2 Byte Einheiten aus&lt;br /&gt;
* -x : Gebe Hexadezimale 2 Byte einheiten aus&lt;br /&gt;
&lt;br /&gt;
Beispiele&lt;br /&gt;
&lt;br /&gt;
Gebe Master Boot Record (die ersten 512 Byte der Festplatte /dev/sda) als Hexadezimal aus&lt;br /&gt;
 root@zero:~# od '''-x -N''' 512 /dev/sda&lt;br /&gt;
 0000000 48eb 1090 d08e 00bc b8b0 0000 d88e c08e&lt;br /&gt;
 0000020 befb 7c00 00bf b906 0200 a4f3 21ea 0006&lt;br /&gt;
 0000040 be00 07be 0438 0b75 c683 8110 fefe 7507&lt;br /&gt;
 0000060 ebf3 b416 b002 bb01 7c00 80b2 748a 0203&lt;br /&gt;
 0000100 00ff 2000 0001 0000 0200 90fa f690 80c2&lt;br /&gt;
 ...&lt;br /&gt;
&lt;br /&gt;
Schreibe &amp;quot;suxer&amp;quot; in die Datei test&lt;br /&gt;
 root@zero:~# echo &amp;quot;suxer&amp;quot; &amp;gt; test&lt;br /&gt;
Ausgabe Hexadezimal&lt;br /&gt;
 root@zero:~# od -x test&lt;br /&gt;
 0000000 7573 6578 0a72&lt;br /&gt;
 0000006&lt;br /&gt;
&lt;br /&gt;
Ausgabe ASCII Zeichen&lt;br /&gt;
 root@zero:~# od -c test&lt;br /&gt;
 0000000   s   u   x   e   r  \n&lt;br /&gt;
 0000006&lt;br /&gt;
&lt;br /&gt;
==paste==&lt;br /&gt;
Fügt die Zeilen von zwei oder mehr Dateien horizontal zusammen&lt;br /&gt;
 root@zero:~# paste name tel&lt;br /&gt;
 1. karl 1. 1234&lt;br /&gt;
 2. heinz        2. 4321&lt;br /&gt;
 3. hans 3. 222&lt;br /&gt;
 4. otto 4. 121212&lt;br /&gt;
&lt;br /&gt;
==pr==&lt;br /&gt;
Bereitet Textdateien zum Drucken vor.&lt;br /&gt;
&lt;br /&gt;
 root@zero:~# echo &amp;quot;Plan für heute&amp;quot; &amp;gt; dokument&lt;br /&gt;
 root@zero:~# more dokument&lt;br /&gt;
 Plan für heute&lt;br /&gt;
 root@zero:~# pr dokument   &lt;br /&gt;
  &lt;br /&gt;
 &lt;br /&gt;
 2009-06-19 12:44                    dokument                     Seite 1&lt;br /&gt;
 &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
 Plan für heute&lt;br /&gt;
&lt;br /&gt;
Anmerkung Ausmaße der Bildschirmausgabe wie eine Druckseite.&lt;br /&gt;
&lt;br /&gt;
==sed==&lt;br /&gt;
streaming editor. Mit sed ist es möglich, den Inhalt einer Datei automatisch (nicht interaktiv) zu&lt;br /&gt;
bearbeiten. Wie unter Linux üblich, wird auch hier der Text nicht wirklich verändert sondern die &lt;br /&gt;
Änderung erfolgt über die Standardausgabe, die wieder umgeleitet werden kann. Die Syntax ist ähnlich &lt;br /&gt;
des ex modus von vi. Reguläre Ausdrücke können nach Belieben benutzt werden. &lt;br /&gt;
&lt;br /&gt;
Optionen:&lt;br /&gt;
 -e Zeichenkette  wendet die Editorbefehle aus Zeichenkette auf den Text an.&lt;br /&gt;
 -n gibt nur die Zeilen aus, die explizit (durch &amp;quot;p&amp;quot; ausgedruckt werden sollen&lt;br /&gt;
&lt;br /&gt;
Gibt die dritte Zeile der Datei text aus&lt;br /&gt;
 root@zero:~# sed -n &amp;quot;3p&amp;quot; text&lt;br /&gt;
 34&lt;br /&gt;
&lt;br /&gt;
Gibt die erste bis dritte Zeile von text aus&lt;br /&gt;
 root@zero:~# sed -n &amp;quot;1,3p&amp;quot; text&lt;br /&gt;
 sogar noch wichtiger&lt;br /&gt;
 123&lt;br /&gt;
 34&lt;br /&gt;
&lt;br /&gt;
Löschen der Zeile mit &amp;quot;sogar&amp;quot;&lt;br /&gt;
 root@zero:~# sed -e '/sogar/d' &amp;lt; text&lt;br /&gt;
 123&lt;br /&gt;
 34&lt;br /&gt;
 4711&lt;br /&gt;
 test&lt;br /&gt;
&lt;br /&gt;
und schreiben in text2&lt;br /&gt;
 root@zero:~# sed -e '/sogar/d' &amp;lt; text &amp;gt; text2&lt;br /&gt;
 root@zero:~# more text2&lt;br /&gt;
 123&lt;br /&gt;
 34&lt;br /&gt;
 4711&lt;br /&gt;
 test&lt;br /&gt;
&lt;br /&gt;
Alle 3en durch DREI ersetzen&lt;br /&gt;
 root@zero:~# sed -e 's/3/DREI/g' &amp;lt; text&lt;br /&gt;
 sogar noch wichtiger&lt;br /&gt;
 12DREI&lt;br /&gt;
 DREI4&lt;br /&gt;
 4711&lt;br /&gt;
 test&lt;br /&gt;
&lt;br /&gt;
==wc==&lt;br /&gt;
Zählt die Anzahl von Zeichen, Wörter oder Zeilen&lt;br /&gt;
&lt;br /&gt;
Optionen&lt;br /&gt;
* -m : Zählt die Anzahl der Zeichen&lt;br /&gt;
 root@zero:~# more name&lt;br /&gt;
 1. karl&lt;br /&gt;
 2. heinz&lt;br /&gt;
 3. hans&lt;br /&gt;
 4. otto&lt;br /&gt;
 root@zero:~# wc '''-m''' tel&lt;br /&gt;
 33 tel&lt;br /&gt;
&lt;br /&gt;
* -w : Zählt die Anzahl der Wörter (einschließlich Zahlen und andere Zeichen)&lt;br /&gt;
 root@zero:~# wc '''-w''' name&lt;br /&gt;
 8 name&lt;br /&gt;
&lt;br /&gt;
* -l : Zählt die Anzahl der Zeilen&lt;br /&gt;
 root@zero:~# wc '''-l''' name&lt;br /&gt;
 4 name&lt;br /&gt;
&lt;br /&gt;
==Sort==&lt;br /&gt;
&lt;br /&gt;
Zum sortieren von Dateien nach Feldern benutzt man sort. sort liest von STDIN man kann die Datei aber auch als Argument übergeben. &lt;br /&gt;
&lt;br /&gt;
Sortiert nach dem ersten Feld&lt;br /&gt;
  root@zero:~# sort /etc/passwd 	 &lt;br /&gt;
&lt;br /&gt;
Es wird geprüft ob die Datei schon sortiert ist &lt;br /&gt;
 root@zero:~# sort -c /etc/passwd 	&lt;br /&gt;
&lt;br /&gt;
Sortiert nach dem ersten Feld (Richtungsumkehr)  &lt;br /&gt;
 root@zero:~#  sort -r /etc/passwd&lt;br /&gt;
&lt;br /&gt;
Führende Leersortzeichen werden ignoriert &lt;br /&gt;
 root@zero:~# sort -b /etc/passwd&lt;br /&gt;
&lt;br /&gt;
Ausgabe  in die Datei pass&lt;br /&gt;
 root@zero:~# sort  /etc/passwd   -o pass	 &lt;br /&gt;
&lt;br /&gt;
nimmt : als Trenner -Voreinstellung ist TAB&lt;br /&gt;
  root@zero:~# sort -t : /etc/passwd&lt;br /&gt;
&lt;br /&gt;
sortiert nach dem  3 Feld,  der Trenner ist : und es wird nummerisch sortiert&lt;br /&gt;
&lt;br /&gt;
 root@zero:~# sort -t: +2 -n /etc/passwd		&lt;br /&gt;
&lt;br /&gt;
sortiert nach dem  3 Feld,  der Trenner ist : und es wird nummerisch sortiert&lt;br /&gt;
					&lt;br /&gt;
 root@zero:~# sort -t: -k 3 -n /etc/passwd&lt;br /&gt;
&lt;br /&gt;
Sortiert nach dem  3  bis zum 5 Feld, der Trenner ist : und es wird nummerisch sortiert&lt;br /&gt;
	&lt;br /&gt;
 root@zero:~# sort -t: -k 3,5 -n /etc/passwd	&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==INodes==&lt;br /&gt;
Inode (oder I-Node) wird im Deutschen am besten als Informationsknoten oder&lt;br /&gt;
Indexeintrag bezeichnet. Er fasst alle Attribute einer Datei zusammen außer dem Inhalt&lt;br /&gt;
und dem Namen der Datei.&lt;br /&gt;
&lt;br /&gt;
===Daten===&lt;br /&gt;
{| border=1 cellpadding=2&lt;br /&gt;
|type&lt;br /&gt;
|Der Typ der Datei wird als einzelner Buchstabe angezeigt. Der Typ einer Datei wird beim Anlegen der Datei festgelegt&lt;br /&gt;
|-&lt;br /&gt;
|Permissions &lt;br /&gt;
|Die Zugriffsrechte der Datei werden in den 12 Bit sstrwxrwxrwx abgespeichert.Wenn sie gesetzt sind, werden sie bei &lt;br /&gt;
der Ausgabe an Stelle der x-Rechte ausgegeben. Die Zugriffsrechte können mit dem Kommando chmod verändert werden.&lt;br /&gt;
|-&lt;br /&gt;
|link count&lt;br /&gt;
|In UNIX kann eine Datei mehr als einen Namen haben. Der Link Count gibt die Anzahl der Namen einer Datei an. Er kann&lt;br /&gt;
mit dem Kommando ln erhöht und dem Kommando rm erniedrigt werden.&lt;br /&gt;
|-&lt;br /&gt;
|owner&lt;br /&gt;
|Für den Dateieigentümer gelten die in der ersten rwx-Gruppe festgelegten Zugriffsrechte. Standardmäßig ist der &lt;br /&gt;
Eigentümer einer Datei derjenige Benutzer, der die Datei angelegt hat.&lt;br /&gt;
|-&lt;br /&gt;
|group&lt;br /&gt;
|Für Benutzer, die in der gleichen Gruppe sind, der die Datei angehört, gelten die in der zweiten rwx-Gruppe festgelegten&lt;br /&gt;
Zugriffsrechte. In System V gehört eine Datei standardmäßig der Gruppe an, in der der anlegende Benutzer gerade ist.&lt;br /&gt;
|-&lt;br /&gt;
|size&lt;br /&gt;
|Bei normalen Dateien und Verzeichnissen gibt diese Information die Länge der Datei in Byte an.&lt;br /&gt;
|-&lt;br /&gt;
|access time&lt;br /&gt;
|Die Zugriffszeit gibt den Zeitpunkt des letzten Lesezugriffes auf eine Datei an. Aus Effizienzgründen wird die &lt;br /&gt;
Zugriffszeit an Verzeichnissen nicht gesetzt, wenn ein Verzeichnis durchsucht wird, obwohl man dies erwarten könnte.&lt;br /&gt;
|-&lt;br /&gt;
|modification time&lt;br /&gt;
|Die Modifikationszeit gibt die Zeit des letzten Schreibzugriffes auf die Daten der Datei an. Intern speichert UNIX &lt;br /&gt;
die Zeit als Sekunden seit Beginn des Jahres 1970 und in GMT ab. Für die Ausgabe wird dies in ein besser lesbares &lt;br /&gt;
Format in der lokalen Zeitzone umgewandelt.&lt;br /&gt;
|-&lt;br /&gt;
|change time &lt;br /&gt;
|Die Veränderungszeit gibt das Datum der letzten Statusänderung der Datei an. Sie wird immer dann gesetzt, wenn die &lt;br /&gt;
Informationen über die Datei sich ändern (Datum der Erzeugung wird nicht gespeichert)&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
===Dateiarten===&lt;br /&gt;
{| border=1 cellpadding=2&lt;br /&gt;
!Zeichen&lt;br /&gt;
!Typ&lt;br /&gt;
!Zweck&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;nowiki&amp;gt;-&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
|file&lt;br /&gt;
|normale Datei&lt;br /&gt;
|-&lt;br /&gt;
|d&lt;br /&gt;
|directory&lt;br /&gt;
|Verzeichnis&lt;br /&gt;
|-&lt;br /&gt;
|b&lt;br /&gt;
|block device&lt;br /&gt;
|Gerätedatei&lt;br /&gt;
|-&lt;br /&gt;
|c&lt;br /&gt;
|character device&lt;br /&gt;
|Gerätedatei&lt;br /&gt;
|-&lt;br /&gt;
|l&lt;br /&gt;
|link&lt;br /&gt;
|Querverweis&lt;br /&gt;
|-&lt;br /&gt;
|p&lt;br /&gt;
|named pipe&lt;br /&gt;
|Benannte Pipeline&lt;br /&gt;
|-&lt;br /&gt;
|s&lt;br /&gt;
|socket&lt;br /&gt;
|Netzwerkverbindung&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
====Normale Dateien====&lt;br /&gt;
Unter einer normalen Datei versteht man die Ansammlung von Daten. Dies kann ein Text, Programm, Bild oder sonstiges sein. &lt;br /&gt;
Beispiel&lt;br /&gt;
 root@zero:~# ls text&lt;br /&gt;
 text&lt;br /&gt;
&lt;br /&gt;
====Verzeichnisse====&lt;br /&gt;
Dateien werden in Verzeichnissen gespeichert, nur so ist eine Ordnung möglich. &lt;br /&gt;
 root@zero:~# mkdir -v Ordner&lt;br /&gt;
 mkdir: Verzeichnis „Ordner“ angelegt&lt;br /&gt;
 &lt;br /&gt;
 root@zero:~# ls -d ~/*&lt;br /&gt;
 /root/error  /root/neuertext  /root/Ordner  /root/profile  /root/test  /root/text  /root/verzeichnis&lt;br /&gt;
&lt;br /&gt;
====Gerätedateien (Block und Char)====&lt;br /&gt;
Gerätedateien ermöglichen Anwendungsprogrammen unter Benutzung des  Kernels den Zugriff auf die Hardwarekomponenten des &lt;br /&gt;
Systems. &lt;br /&gt;
&lt;br /&gt;
Beispiele&lt;br /&gt;
&lt;br /&gt;
Sicherung des Master Boot Records der ersten Festplatte&lt;br /&gt;
 root@zero:~# dd if=/dev/sda1 of=/tmp/mbr.img bs=512 count=1&lt;br /&gt;
&lt;br /&gt;
Einhängen des CD-ROM Laufwerks&lt;br /&gt;
 root@zero:~# mount /dev/cdrom /media/cdrom -t iso9660&lt;br /&gt;
&lt;br /&gt;
====Named Pipes====&lt;br /&gt;
Benannte Pipes (Named Pipes) können dagegen auch zur Kommunikation zwischen Prozessen eingesetzt werden, die nicht miteinander&lt;br /&gt;
verwandt sind und sich darüber hinaus auf unterschiedlichen Rechnern innerhalb eines Netzwerkes befinden dürfen. Sie sind &lt;br /&gt;
flexibler als anonyme Pipes und eignen sich für sogenannte Client-Server-Anwendungen (es lassen sich auch RPCs realisieren).&lt;br /&gt;
Benannte Pipes ermöglichen die gleichzeitige Kommunikation in beide Richtungen, das heißt, Daten können im Vollduplexbetrieb &lt;br /&gt;
zwischen den Prozessen ausgetauscht werden.&lt;br /&gt;
 &lt;br /&gt;
Erstelle Named Pipe mit Namen sux. Schreibe &amp;quot;Hallo Welt&amp;quot; in die Pipe sux und bleibe im Hintergrund. Gebe Inhalt der Pipe mit cat aus&lt;br /&gt;
 root@zero:~# mkfifo sux ; echo 'Hallo Welt' &amp;gt; sux &amp;amp; cat &amp;lt; sux&lt;br /&gt;
 [1] 12947&lt;br /&gt;
 Hallo Welt&lt;br /&gt;
 [1]+  Done                    echo 'Hallo Welt' &amp;gt; sux&lt;br /&gt;
&lt;br /&gt;
====Sockets====&lt;br /&gt;
Schnittstelle um es vernetzten Rechnern zu ermöglichen, miteinander zu kommunizieren.&lt;br /&gt;
&lt;br /&gt;
Sie ist in der Regel definiert durch IP-Adresse sowie Port. &lt;br /&gt;
&lt;br /&gt;
====Links====&lt;br /&gt;
Bei Links handelt es sich um symbolische Verweise auf andere Dateien&lt;br /&gt;
&lt;br /&gt;
'''Softlink'''&lt;br /&gt;
Ein Softlink ist eine Datei die nur auf den Namen einer anderen Datei verweist. Wenn die Originaldatei gelöscht wird, zeigt &lt;br /&gt;
der Link ins Leere. &lt;br /&gt;
&lt;br /&gt;
 ln -s datei softlink&lt;br /&gt;
&lt;br /&gt;
{| border=1 cellpadding=2&lt;br /&gt;
| Vorteile&lt;br /&gt;
| Symbolische Links können auch auf Verzeichnisse angelegt werden&amp;lt;br&amp;gt;Sie sind partitionsübergreifend&amp;lt;br&amp;gt;Man kann sie auf Dateien anlegen, die noch nicht existieren&lt;br /&gt;
|-&lt;br /&gt;
| Nachteile&lt;br /&gt;
| Wenn das Original gelöscht ist, ist kein Zugriff mehr möglich&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Beispiel&lt;br /&gt;
 root@zero:~# ln -s text verweis&lt;br /&gt;
 root@zero:~# ls -l verweis&lt;br /&gt;
 lrwxrwxrwx 1 root root 4 2009-06-18 15:48 verweis -&amp;gt; text&lt;br /&gt;
&lt;br /&gt;
'''Hardlinks'''&lt;br /&gt;
 ln datei hardlink&lt;br /&gt;
Eigentlich ist jede Datei ein Hardlink. Ein Hardlink ist ein Verzeichniseintrag,&lt;br /&gt;
der auf eine Inode verweist. Beim Erzeugen einer Datei verweist ein Eintrag auf&lt;br /&gt;
eine Inode. Man kann dann weitere Verweise erzeugen. Der Linkcounter wird&lt;br /&gt;
jeweils um 1 erhöht. Beim Löschen einer Datei wird er jeweils um 1 reduziert.&lt;br /&gt;
Wird der Wert 0 erreicht, ist die Datei gelöscht.&lt;br /&gt;
{| border=1 cellpadding=2&lt;br /&gt;
| Vorteile&lt;br /&gt;
|Zugriff auf die Daten, selbst wenn das Orginal gelöscht ist.&lt;br /&gt;
|-&lt;br /&gt;
|Nachteile&lt;br /&gt;
|Man kann keine Hardlinks auf Verzeichnisse anlegen.&lt;br /&gt;
Ist nur innerhalb einer Partion möglich.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Beispiel&lt;br /&gt;
 root@zero:~# touch 1&lt;br /&gt;
 root@zero:~# echo &amp;quot;text&amp;quot; &amp;gt; 1&lt;br /&gt;
 root@zero:~# ln 1 2&lt;br /&gt;
 root@zero:~# more 2&lt;br /&gt;
 text&lt;br /&gt;
 root@zero:~# echo &amp;quot;doch kein text&amp;quot; &amp;gt; 1&lt;br /&gt;
 root@zero:~# more 1&lt;br /&gt;
 doch kein text&lt;br /&gt;
 root@zero:~# more 2&lt;br /&gt;
 doch kein text&lt;br /&gt;
&lt;br /&gt;
Weitere Optionen:&lt;br /&gt;
 -b sichert Dateien, statt sie zu überschreiben &lt;br /&gt;
 -f Überschreibt bestehende, gleichnamige Dateien&lt;br /&gt;
 -i fragt vor dem Überschreiben nach Bestätigung&lt;br /&gt;
 -v ausführliche Meldungen&lt;br /&gt;
&lt;br /&gt;
==Prozesse==&lt;br /&gt;
===Was ist ein Prozess?===&lt;br /&gt;
Ein Prozess setzt sich aus zwei Teilen zusammen:&lt;br /&gt;
&lt;br /&gt;
1.Programm, das in den Hauptspeicher geladen wurde&lt;br /&gt;
&lt;br /&gt;
2.Prozessumgebung&lt;br /&gt;
&lt;br /&gt;
Unter einem Prozess versteht man ein Programm (binär), das in den Hauptspeicher&lt;br /&gt;
geladen wurde. Also nicht das Program selbst, das auf der Festplatte liegt ist der&lt;br /&gt;
Prozess, sondern es wird erst durch das Laden in den Hauptspeicher dazu.&lt;br /&gt;
Normalerweise liegt ein Programm als ausführbare Datei irgendwo auf der&lt;br /&gt;
Festplatte oder auf Diskette. Ob es sich bei dem Programm um eine binäre Datei&lt;br /&gt;
handelt, kann man mit dem Befehl '' file '' feststellen.&lt;br /&gt;
 &lt;br /&gt;
 root@zero:~# file /bin/mkdir&lt;br /&gt;
 /bin/mkdir: ELF 32-bit LSB executable, Intel 80386, version 1 (SYSV), dynamically linked (uses shared libs), for GNU/Linux 2.6.8, stripped&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Die Datei liegt im Maschinencode vor und kann in den Hauptspeicher geladen&lt;br /&gt;
werden. Sobald dies geschehen ist, kann der Rechner diesen Maschinencode&lt;br /&gt;
abarbeiten (ausführen).&lt;br /&gt;
&lt;br /&gt;
Da aber ein Programm nicht direkt auf die Hardware zugreifen soll, muss es vom&lt;br /&gt;
Betriebsystem kontrolliert werden. Das Betriebssystem liegt logisch gesehen&lt;br /&gt;
zwischen Hardware und Anwendung. Das Betriebssystem ordnet jedem Prozess&lt;br /&gt;
verschiedene Kenndaten zu, um die Prozesse verwalten zu können. Alle&lt;br /&gt;
Kenndaten, die einem Prozess zugeordnet sind, nennt man die&lt;br /&gt;
Prozessumgebung.Wenn man in der Shell ein Kommando eingibt, wird ein Prozess&lt;br /&gt;
kreiert. Natürlich ist die Shell selbst auch ein Prozess. Ein Prozess kann aber&lt;br /&gt;
genauso gut ein Serverprozess (Dienst) sein, z.B. Apache.&lt;br /&gt;
Ein wesentliches Merkmal eines Prozesses ist die Prozesskommunikation. Über im&lt;br /&gt;
Betriebssystem implementierte Methoden ist es möglich, dass verschiedene&lt;br /&gt;
Prozesse Signale und Daten untereinander austauschen können.&lt;br /&gt;
Dadurch wird auch dem Benutzer ermöglicht, einem Prozeß bestimmte Signale zu&lt;br /&gt;
senden bzw. auf den Status eines Prozesses Einfluss zu nehmen.&lt;br /&gt;
&lt;br /&gt;
===Prozesstabelle (Anzeige mit ps)===&lt;br /&gt;
Da zu jedem Prozess Kenndaten geführt werden, müssen diese auch irgendwo&lt;br /&gt;
festgehalten werden. Das geschieht in der sogenannten Prozesstabelle.&lt;br /&gt;
&lt;br /&gt;
Kenndaten der Prozesse (Auswahl):&lt;br /&gt;
* F Flags (z.B. ausgelagert; Systemprozess; Trace,...)&lt;br /&gt;
* UID Nutzer, mit dessen Rechten der Prozess ausgeführt wird&lt;br /&gt;
* PID Prozess - ID. Diese Nummer gibt eine eindeutige Prozess - Nummer&lt;br /&gt;
an. Sie wird vom System automatisch beim Starten des Prozesses&lt;br /&gt;
vergeben und ist für die Laufzeit eindeutig.&lt;br /&gt;
* PPID Prozessnumer der Eltern-Prozesses&lt;br /&gt;
* PRI Priorität eines Prozesses; je niedriger der Wert ist, desto besser&lt;br /&gt;
* NI ist der Nicewert des Prozesses; Nice erniedrigt den Grundwert&lt;br /&gt;
der Priorität des Prozesses und gibt damit Prozessorzeit für andere&lt;br /&gt;
Prozesse frei.&lt;br /&gt;
* SIZE Speichergröße des Prozesses inklusive Stack (eine Art Zwischenspeicher)&lt;br /&gt;
* RSS Verbrauch an physischen Speicher&lt;br /&gt;
* WCHAN ist der Name der Kernerlfunktion, in der der Prozess schläft&lt;br /&gt;
* STAT Status des Prozesses&lt;br /&gt;
R läuft       S schlafend     D nicht störbarer Schlaf&lt;br /&gt;
T angehalten  Z Zombie        W der Prozess belegt keine Seiten&lt;br /&gt;
* TIME Bisland benötigte Prozessorzeit&lt;br /&gt;
* SIZE ist die Größe von Text, Daten und Stack&lt;br /&gt;
* TTY die Nummer des kontrollierenden Teminal; wenn hier ein ? steht,&lt;br /&gt;
handelt es sich um einen Dämon oder Serverprozess.&lt;br /&gt;
* COMMAND Angabe des Prozesses selbst. Dies ist meist der Programmname.&lt;br /&gt;
&lt;br /&gt;
Weiteres&lt;br /&gt;
* GID Gruppe, unter der der Prozess läuft&lt;br /&gt;
* Verweis auf das aktuellen Arbeitsverzeichnis&lt;br /&gt;
* Um mit relativen Pfadangaben arbeiten zu können braucht man diesen Eintrag&lt;br /&gt;
* Tabelle mit Verweisen auf aktuell geöffnete Dateien&lt;br /&gt;
* 3 sind automatisch geöffnet Standardeingabe, Standardausgabe und&lt;br /&gt;
Standardfehlerkanal&lt;br /&gt;
&lt;br /&gt;
Beispiel&lt;br /&gt;
 root@zero:~# ps -l&lt;br /&gt;
 F S   UID   PID  PPID  C PRI  NI ADDR SZ WCHAN  TTY          TIME CMD&lt;br /&gt;
 4 R     0 18639 18631  0  80   0 -  1080 -      pts/0    00:00:00 bash&lt;br /&gt;
 0 R     0 25904 18639  0  80   0 -   635 -      pts/0    00:00:00 ps&lt;br /&gt;
&lt;br /&gt;
===Eltern und Kinder===&lt;br /&gt;
Jeder Prozess kann weitere Prozesse erzeugen. Die erzeugten Prozesse bezeichnet&lt;br /&gt;
man als Kindprozesse. Jeder Kindprozess weiß anhand der PID, woher er stammt.&lt;br /&gt;
&lt;br /&gt;
Alle Prozesse sind von einem anderen Prozess gestartet worden, mit Ausnahme&lt;br /&gt;
des Pseudoprozesses (noch im Kernel beim Starten erzeugter Prozess). Dieser hat&lt;br /&gt;
die Prozessnummer 0. Er hat die Aufgabe, den Init Prozess ( /sbin/init die Nummer&lt;br /&gt;
1) zu starten, der in System V alle anderen Prozesse direkt oder über seine Kind-&lt;br /&gt;
prozesse startet. (init wird konfiguriert durch die /etc/inittab)&lt;br /&gt;
&lt;br /&gt;
Es gibt zwei Arten wie ein Prozess gestartet werden kann:&lt;br /&gt;
&lt;br /&gt;
# Fork und Exec: Prozessumgebung wird dupliziert, der neue Prozess bekommt eine eigene neue PID&lt;br /&gt;
# Exec: Alter Prozess wird durch neuen Prozess überladen (geht mit dem shell-buildin exec)&lt;br /&gt;
&lt;br /&gt;
'''Rechte auf Objekte UID GID'''&lt;br /&gt;
Ob ein Prozess auf eine Datei zugreifen kann, entscheidet der Kernel anhand der&lt;br /&gt;
Zugriffssrechte, die auf der Datei gesetzt sind. Er checkt anhand der UID und GID&lt;br /&gt;
des Prozesses, ob es erlaubt ist. Mit dieser Technik wird letztendlich geprüft, was&lt;br /&gt;
ein User darf, und was nicht.&lt;br /&gt;
&lt;br /&gt;
===Rechenzeit und Priorität===&lt;br /&gt;
Da auch bei Prozessen eine Gerechtigkeit herschen muss, muss eine Instanz&lt;br /&gt;
darüber entscheiden wie lange ein Prozess Rechenzeit verbrauchen darf.&lt;br /&gt;
Folgende Kenndaten werden dazu benötigt&lt;br /&gt;
* clocktick = Zeiteinheit&lt;br /&gt;
* n = Faktor über den Kernel einstellbar&lt;br /&gt;
* slice = n &amp;lt;nowiki&amp;gt;*&amp;lt;/nowiki&amp;gt; clocktick&lt;br /&gt;
* agingtime = weitere Zeiteinheit über den Kernel einstellbar&lt;br /&gt;
&lt;br /&gt;
Es wird davon ausgegangen das der Prozess mit der niedrigsten Priorität gerade&lt;br /&gt;
rechnet. Pro clocktick erhöht sich die Priorität dieses Prozesses um eins.&lt;br /&gt;
&lt;br /&gt;
Jetzt können 3 Situationen eintreten die alle dazu führen das der Scheduler&lt;br /&gt;
aufgerufen wird.&lt;br /&gt;
&lt;br /&gt;
# Prozess blockiert wegen einer Ausgabe oder Eingabe.&lt;br /&gt;
# Gibt Rechenzeit freiwillig ab.&lt;br /&gt;
# Der Slice endet.&lt;br /&gt;
&lt;br /&gt;
Der Aufruf des Schedulers bewirkt das der Prozess mit der niedrigsten Priorität&lt;br /&gt;
gescheduled wird, er also nun rechnen darf. Nach Ablauf der agingtime werden&lt;br /&gt;
nun die Prozesse &amp;quot;gealtert&amp;quot;. Das geschieht nach folgender Formel&lt;br /&gt;
&lt;br /&gt;
Neue Priorität = Alte Priorität / 2 + Nicewert&lt;br /&gt;
&lt;br /&gt;
Der User hat die Möglichkeit, über den sogenannten Nicefaktor den Grundwert für&lt;br /&gt;
einen Prozess zu senken. Der Prozess braucht dann länger für seine Abarbeitung.&lt;br /&gt;
Er verhält sich somit netter zu den anderen Prozessen. Normale User können nur&lt;br /&gt;
netter werden, der Systemverwalter kann auch nicht netter (gemeiner) werden. Der&lt;br /&gt;
Bereich liegt zwischen 19 (sehr nett) bis 0 (weniger nett) für die User, und 19 bis&lt;br /&gt;
-20 für root.&lt;br /&gt;
&lt;br /&gt;
[[Image:pri.png]]&lt;br /&gt;
&lt;br /&gt;
'''Signale'''&lt;br /&gt;
&lt;br /&gt;
Mit den Kommando kill und killall kann man Prozessen Signale schicken&lt;br /&gt;
&lt;br /&gt;
 kill -Signalnummer PID &lt;br /&gt;
&lt;br /&gt;
Signalnummer&lt;br /&gt;
{| border=1 cellpadding=2&lt;br /&gt;
!Signalname&lt;br /&gt;
!Wert&lt;br /&gt;
!Aktion&lt;br /&gt;
|-&lt;br /&gt;
|SIGHUP&lt;br /&gt;
|1&lt;br /&gt;
|Neuinitialisierung eines Prozesses&lt;br /&gt;
|-&lt;br /&gt;
|SIGINT&lt;br /&gt;
|2&lt;br /&gt;
|Interrupt-Signal von der Tastatur (STRG+c)&lt;br /&gt;
|-&lt;br /&gt;
|SIGQUIT&lt;br /&gt;
|3&lt;br /&gt;
|Interrupt-Signal von der Tastatur (STRG+c) mit Dump&lt;br /&gt;
|-&lt;br /&gt;
|SIGKILL&lt;br /&gt;
|9&lt;br /&gt;
|unwiderrufliches Beendigungssignal (Töten)&lt;br /&gt;
|-&lt;br /&gt;
|SIGSEGV&lt;br /&gt;
|11&lt;br /&gt;
|Ungültige Speicherreferenz (bedeutet oft auf defekten Speicher)&lt;br /&gt;
|-&lt;br /&gt;
|SIGTERM &lt;br /&gt;
|15&lt;br /&gt;
|Beendigungssignal (geöffnete Dateien werden geschlossen)&lt;br /&gt;
|-&lt;br /&gt;
|SIGCONT &lt;br /&gt;
|18&lt;br /&gt;
|Weiterfahren, wenn gestoppt&lt;br /&gt;
|-&lt;br /&gt;
|SIGSTOP&lt;br /&gt;
|19&lt;br /&gt;
|Prozessstop&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Beispiel&lt;br /&gt;
 root@zero:~# kill -1 7562&lt;br /&gt;
&lt;br /&gt;
===Programme im Zusammenhang mit Prozessen===&lt;br /&gt;
* ps: Zeigt die Prozesse mit ihrem Status an&lt;br /&gt;
 root@zero:~# ps&lt;br /&gt;
  PID TTY          TIME CMD&lt;br /&gt;
 14134 pts/0    00:00:00 bash&lt;br /&gt;
 14149 pts/0    00:00:00 ps&lt;br /&gt;
&lt;br /&gt;
 root@zero:~# ps -elf | grep apache&lt;br /&gt;
 1 S root      5738     1  0  80   0 -  5461 select Jun16 ?        00:00:00 /usr/sbin/apache2 -k start&lt;br /&gt;
 5 S www-data  5739  5738  0  80   0 -  5581 inet_c Jun16 ?        00:00:00 /usr/sbin/apache2 -k start&lt;br /&gt;
 5 S www-data  5742  5738  0  80   0 -  5461 inet_c Jun16 ?        00:00:00 /usr/sbin/apache2 -k start&lt;br /&gt;
 5 S www-data  5743  5738  0  80   0 -  5461 inet_c Jun16 ?        00:00:00 /usr/sbin/apache2 -k start&lt;br /&gt;
 5 S www-data  5745  5738  0  80   0 -  5461 inet_c Jun16 ?        00:00:00 /usr/sbin/apache2 -k start&lt;br /&gt;
 5 S www-data  5746  5738  0  80   0 -  5461 inet_c Jun16 ?        00:00:00 /usr/sbin/apache2 -k start&lt;br /&gt;
 0 S root     14153 14134  0  80   0 -   837 pipe_w 16:59 pts/0    00:00:00 grep apache&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* nice: Lässt ein Programm mit verändertem Grundwert der Priorität laufen&lt;br /&gt;
 root@zero:~# nice&lt;br /&gt;
 0&lt;br /&gt;
 root@zero:~# nice -n 9 bash&lt;br /&gt;
 root@zero:~# nice&lt;br /&gt;
 9&lt;br /&gt;
 root@zero:~#&lt;br /&gt;
&lt;br /&gt;
* renice: Ändert den Grundwert der Priorität eines laufenden Prozesses&lt;br /&gt;
 root@zero:~# renice 10 5742&lt;br /&gt;
 5742: Alte Priorität: 0, neue Priorität: 10&lt;br /&gt;
&lt;br /&gt;
* top: Zeigt die Prozesse mit ihrem Status an (Abbrechen mit q)&lt;br /&gt;
 root@zero:~# top&lt;br /&gt;
&lt;br /&gt;
* pstree: Zeigt die Prozesse als Baumstruktur&lt;br /&gt;
 root@zero:~# pstree&lt;br /&gt;
 init─┬─NetworkManager&lt;br /&gt;
      ├─acpid&lt;br /&gt;
      ├─apache2───5*[apache2]&lt;br /&gt;
      ├─atd&lt;br /&gt;
      ├─bluetoothd&lt;br /&gt;
      ├─console-kit-dae───63*[{console-kit-dae}]&lt;br /&gt;
      ├─cron&lt;br /&gt;
      ├─cupsd&lt;br /&gt;
      ├─dbus-daemon&lt;br /&gt;
      ├─dd&lt;br /&gt;
      ├─gdm───gdm─┬─Xorg&lt;br /&gt;
      │           └─gdmgreeter&lt;br /&gt;
      ├─6*[getty]&lt;br /&gt;
      ├─hald───hald-runner─┬─hald-addon-acpi&lt;br /&gt;
      │                    ├─hald-addon-inpu&lt;br /&gt;
      │                    └─2*[hald-addon-stor]&lt;br /&gt;
      ├─klogd&lt;br /&gt;
      ├─nm-system-setti&lt;br /&gt;
      ├─nmbd&lt;br /&gt;
      ├─nscd───11*[{nscd}]&lt;br /&gt;
      ├─portmap&lt;br /&gt;
      ├─rpc.statd&lt;br /&gt;
      ├─slapd───2*[{slapd}]&lt;br /&gt;
      ├─smbd───smbd&lt;br /&gt;
      ├─sshd───sshd───bash───bash───pstree&lt;br /&gt;
      ├─syslogd&lt;br /&gt;
      ├─system-tools-ba&lt;br /&gt;
      ├─udevd&lt;br /&gt;
      ├─winbindd─┬─winbindd───winbindd&lt;br /&gt;
      │          └─3*[winbindd]&lt;br /&gt;
      └─wpa_supplicant&lt;br /&gt;
&lt;br /&gt;
===Jobs===&lt;br /&gt;
Unter einem Job versteht man ein Programm, welches man von der Shell gelöst&lt;br /&gt;
hat. D. h. man kann ganz normal weiter arbeiten und der Job verrichtet seinen&lt;br /&gt;
Dienst im Hintergrund. Man kann jederzeit zu diesem Job wieder Kontakt&lt;br /&gt;
aufnehmen.&lt;br /&gt;
&lt;br /&gt;
Ein Job kann auf 2 Arten gestarten werden:&lt;br /&gt;
&lt;br /&gt;
# Durch Anhängen des &amp;amp; Zeichens beim Programmstart&lt;br /&gt;
 root@zero:~# tail -f /var/log/messages &amp;amp;&lt;br /&gt;
 Jun 19 06:59:31 zero -- MARK --&lt;br /&gt;
 Jun 19 07:19:31 zero -- MARK --&lt;br /&gt;
 Jun 19 07:39:32 zero -- MARK --&lt;br /&gt;
 Jun 19 07:44:57 zero syslogd 1.5.0#5ubuntu3: restart.&lt;br /&gt;
 Jun 19 07:59:32 zero -- MARK --&lt;br /&gt;
 Jun 19 08:19:32 zero -- MARK --&lt;br /&gt;
 Jun 19 08:39:32 zero -- MARK --&lt;br /&gt;
 Jun 19 08:59:32 zero -- MARK --&lt;br /&gt;
 Jun 19 09:19:33 zero -- MARK --&lt;br /&gt;
 Jun 19 09:39:33 zero -- MARK --&lt;br /&gt;
 [3] 27421&lt;br /&gt;
&lt;br /&gt;
# Durch Stoppen des Prozesses durch Drücken von Strg-Z und in den Hintergrund schicken mit %n (n ist die Jobnummer)&lt;br /&gt;
 root@zero:~# watch cat /proc/cpuinfo&lt;br /&gt;
 Strg-Z&lt;br /&gt;
 [4]+  Stopped                 watch cat /proc/cpuinfo&lt;br /&gt;
 root@zero:~# bg %4&lt;br /&gt;
 [4]+ watch cat /proc/cpuinfo &amp;amp;&lt;br /&gt;
&lt;br /&gt;
Anweisungen im Zusammenhang mit Jobs (n ist die Jobnummer)&lt;br /&gt;
* bg %n : Einen Job in den Hintergrund stellen (wie oben)&lt;br /&gt;
* fg %n : Einen Job in den Vordergrund holen&lt;br /&gt;
 root@zero:~# fg %4&lt;br /&gt;
 watch cat /proc/cpuinfo&lt;br /&gt;
&lt;br /&gt;
* jobs : Aktive Jobs ausgeben&lt;br /&gt;
&lt;br /&gt;
 root@zero:~# jobs&lt;br /&gt;
 [1]   Running                 tail -f /var/log/syslog &amp;amp;&lt;br /&gt;
 [2]   Running                 tail -f /var/log/syslog &amp;amp;&lt;br /&gt;
 [3]-  Running                 tail -f /var/log/messages &amp;amp;&lt;br /&gt;
 [4]+  Stopped                 watch cat /proc/cpuinfo&lt;br /&gt;
&lt;br /&gt;
* Strg-Z : Einen Vordergrund-Job vorübergehend anhalten&lt;br /&gt;
* kill -STOP %n : Unterbricht Job im Hintergrund&lt;br /&gt;
 root@zero:~# kill -STOP %1&lt;br /&gt;
 root@zero:~# jobs&lt;br /&gt;
 [1]+  '''Stopped'''                 tail -f /var/log/syslog&lt;br /&gt;
 [2]   Running                 tail -f /var/log/syslog &amp;amp;&lt;br /&gt;
 [3]   Running                 tail -f /var/log/messages &amp;amp;&lt;br /&gt;
 [4]-  Stopped                 watch cat /proc/cpuinfo&lt;br /&gt;
* kill -CONT %n : Setzt den unterbrochenen Job im Hintergrund fort&lt;br /&gt;
root@zero:~# kill -CONT %1&lt;br /&gt;
root@zero:~# jobs&lt;br /&gt;
 [1]+  '''Running'''                 tail -f /var/log/syslog &amp;amp;&lt;br /&gt;
 [2]   Running                 tail -f /var/log/syslog &amp;amp;&lt;br /&gt;
 [3]   Running                 tail -f /var/log/messages &amp;amp;&lt;br /&gt;
 [4]-  Stopped                 watch cat /proc/cpuinfo&lt;br /&gt;
* kill -KILL %n : Tötet Job im Hintergrund&lt;br /&gt;
 root@zero:~# kill -KILL %1&lt;br /&gt;
 root@zero:~# jobs&lt;br /&gt;
 [1]+  '''Killed'''                  tail -f /var/log/syslog&lt;br /&gt;
 [2]   Running                 tail -f /var/log/syslog &amp;amp;&lt;br /&gt;
 [3]   Running                 tail -f /var/log/messages &amp;amp;&lt;br /&gt;
 [4]-  Stopped                 watch cat /proc/cpuinfo&lt;br /&gt;
 root@zero:~# jobs&lt;br /&gt;
 [2]   Running                 tail -f /var/log/syslog &amp;amp;&lt;br /&gt;
 [3]-  Running                 tail -f /var/log/messages &amp;amp;&lt;br /&gt;
 [4]+  Stopped                 watch cat /proc/cpuinfo&lt;br /&gt;
&lt;br /&gt;
Bedingungen, die zu Jobausführung eingehalten werden sollen:&lt;br /&gt;
* Der Job soll nicht auf den Bildschirm schreiben (Standardausgabe +Standardfehlerkanal).&lt;br /&gt;
* Er soll keine Eingaben vom Benutzer erwarten.&lt;br /&gt;
&lt;br /&gt;
==Suchen von Dateien==&lt;br /&gt;
===find===&lt;br /&gt;
 find ab_wo_wird_gesucht was_wird_gesucht aktion&lt;br /&gt;
 find [Pfad] [Bedingung] [Aktion]&lt;br /&gt;
&lt;br /&gt;
====Nach Namen====&lt;br /&gt;
 find [Pfad] '''-name''' [Name]&lt;br /&gt;
 &lt;br /&gt;
Finde alle Dateien mit Namen test ab dem Verzeichnis /home und gebe diese Zeilenweise aus&lt;br /&gt;
 root@zero:~# find /home -name test -print&lt;br /&gt;
 /home/xinux/test&lt;br /&gt;
 /home/test&lt;br /&gt;
&lt;br /&gt;
Wie oben, jedoch mit Namensanfang test&lt;br /&gt;
 root@zero:/home/xinux# find /home -name 'test*'&lt;br /&gt;
 /home/xinux/testdatei&lt;br /&gt;
 /home/xinux/test&lt;br /&gt;
 /home/test&lt;br /&gt;
&lt;br /&gt;
====Nach Benutzer(Eigentümer)====&lt;br /&gt;
 root@zero:/tmp# find /tmp/ '''-user''' xinux&lt;br /&gt;
 /tmp/datei&lt;br /&gt;
&lt;br /&gt;
====Nach Gruppe====&lt;br /&gt;
 root@zero:/tmp# find /tmp/ '''-group''' hacker&lt;br /&gt;
 /tmp/datei3&lt;br /&gt;
 /tmp/datei2&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
====Nach Typ====&lt;br /&gt;
Es wird nach Dateien anhand Ihrer Art gesucht:&lt;br /&gt;
 find [Pfad] '''-type''' [Typ] &lt;br /&gt;
Typ:&lt;br /&gt;
* f: Normale Dateien&lt;br /&gt;
 root@zero:~# find /tmp/ -type f&lt;br /&gt;
 /tmp/mbr.img&lt;br /&gt;
 /tmp/datei&lt;br /&gt;
 /tmp/zeugs&lt;br /&gt;
 /tmp/.X0-lock&lt;br /&gt;
* d: Verzeichnisse&lt;br /&gt;
 root@zero:~# find /var/log -type d&lt;br /&gt;
 /var/log&lt;br /&gt;
 /var/log/apache2&lt;br /&gt;
 /var/log/unattended-upgrades&lt;br /&gt;
 /var/log/apparmor&lt;br /&gt;
 /var/log/ConsoleKit&lt;br /&gt;
 /var/log/dist-upgrade&lt;br /&gt;
 /var/log/dist-upgrade/20090526-1052&lt;br /&gt;
 /var/log/cups&lt;br /&gt;
 /var/log/apt&lt;br /&gt;
 /var/log/fsck&lt;br /&gt;
 /var/log/samba&lt;br /&gt;
 /var/log/samba/cores&lt;br /&gt;
 /var/log/samba/cores/smbd&lt;br /&gt;
 /var/log/samba/cores/nmbd&lt;br /&gt;
 /var/log/samba/cores/winbindd&lt;br /&gt;
 /var/log/installer&lt;br /&gt;
 /var/log/gdm&lt;br /&gt;
 /var/log/news&lt;br /&gt;
* c: Char Devices (Zeichenorientierte Gerätedatei)&lt;br /&gt;
 root@zero:~# find / -type c&lt;br /&gt;
 /lib/udev/devices/kmem&lt;br /&gt;
 /lib/udev/devices/null&lt;br /&gt;
 /lib/udev/devices/console&lt;br /&gt;
 /lib/udev/devices/ppp&lt;br /&gt;
 /lib/udev/devices/net/tun&lt;br /&gt;
* b: Block Devices (Blockorientierte Gerätedatei)&lt;br /&gt;
* p: Benannte Pipe&lt;br /&gt;
* l: Links&lt;br /&gt;
* s: Sockets&lt;br /&gt;
&lt;br /&gt;
====Nach Modifikation====&lt;br /&gt;
Listet alle Dateien in /etc auf, die innerhalb von zwei Tagen modifiziert wurden&lt;br /&gt;
 root@zero:/var/log# find /etc/ -mtime 2 -print&lt;br /&gt;
 /etc/apache2&lt;br /&gt;
 /etc/apache2/mods-available&lt;br /&gt;
 /etc/apache2/conf.d&lt;br /&gt;
 /etc/apache2/sites-available&lt;br /&gt;
 /etc/bash_completion.d&lt;br /&gt;
 /etc/blkid.tab.old&lt;br /&gt;
 /etc/firefox-3.0/profile&lt;br /&gt;
 /etc/firefox-3.0/profile/chrome&lt;br /&gt;
 /etc/firefox-3.0/pref&lt;br /&gt;
 /etc/profile.d&lt;br /&gt;
 /etc/ufw/applications.d&lt;br /&gt;
 /etc/logrotate.d&lt;br /&gt;
 /etc/xulrunner-1.9&lt;br /&gt;
 /etc/blkid.tab&lt;br /&gt;
 /etc/cron.daily&lt;br /&gt;
 /etc/alternatives&lt;br /&gt;
 /etc/alternatives/x-www-browser&lt;br /&gt;
 /etc/alternatives/xulrunner&lt;br /&gt;
 /etc/gre.d&lt;br /&gt;
 /etc/hal/fdi/policy&lt;br /&gt;
 /etc/dbus-1/system.d&lt;br /&gt;
 /etc/udev/rules.d&lt;br /&gt;
&lt;br /&gt;
====Nach Größe====&lt;br /&gt;
Finde Dateien in /tmp, die größer als 100 MByte sind&lt;br /&gt;
 root@zero:/tmp# find /tmp/ -size +100M&lt;br /&gt;
 /tmp/datei&lt;br /&gt;
&lt;br /&gt;
Finde Dateien in /tmp, die kleiner als 100 KByte sind&lt;br /&gt;
 root@zero:/tmp# find /tmp/ -size -100k&lt;br /&gt;
 /tmp/&lt;br /&gt;
 /tmp/datei3&lt;br /&gt;
 /tmp/backup &lt;br /&gt;
 /tmp/datei2&lt;br /&gt;
 /tmp/.winbindd &lt;br /&gt;
 /tmp/.winbindd/pipe&lt;br /&gt;
 /tmp/mbr.img&lt;br /&gt;
 /tmp/zeugs&lt;br /&gt;
 /tmp/.ICE-unix&lt;br /&gt;
 /tmp/.X0-lock&lt;br /&gt;
 /tmp/datei1&lt;br /&gt;
 /tmp/.X11-unix&lt;br /&gt;
 /tmp/.X11-unix/X0&lt;br /&gt;
 /tmp/pulse-PKdhtXMmr18n&lt;br /&gt;
&lt;br /&gt;
====Nach Berechtigungen====&lt;br /&gt;
Finde Dateien in Home mit der Berechtigung 777 (-rwxrwxrwx)&lt;br /&gt;
 root@zero:/var# find /home/ -perm 777&lt;br /&gt;
 /home/samba&lt;br /&gt;
 /home/xinux/Examples&lt;br /&gt;
 /home/xinux/.pulse/1f0763ee4cf4c7e1d3c07fd149dda37b:runtime&lt;br /&gt;
 /home/test/Examples&lt;br /&gt;
&lt;br /&gt;
===locate===&lt;br /&gt;
Locate arbeitet über einen Index, der erstellt und aktualisiert werden muss. Aus diesem Grund kann locate teilweise nicht &lt;br /&gt;
akutell sein. Es ist immer schneller als find und es durchsucht immer das ganze Dateisystem. &lt;br /&gt;
 locate [Dateiname]&lt;br /&gt;
 &lt;br /&gt;
Lokalisiere die Datei wvdial.conf. Anmerkung: Der Stern wird beim Suchen automatisch hinzugefügt. Entspricht also&lt;br /&gt;
wvidal.conf*&lt;br /&gt;
 root@zero:~# locate wvdial.conf&lt;br /&gt;
 /etc/wvdial.conf&lt;br /&gt;
 /usr/share/man/man5/wvdial.conf.5.gz&lt;br /&gt;
 /var/lib/dpkg/info/wvdial.conffiles&lt;br /&gt;
 /var/lib/dpkg/info/wvdial.config&lt;br /&gt;
&lt;br /&gt;
Lokalisiere die Datei wvdial.conf und nur diese&lt;br /&gt;
 root@zero:~# locate -b '\wvdial.conf'&lt;br /&gt;
 /etc/wvdial.conf&lt;br /&gt;
&lt;br /&gt;
Aktualisieren des Indexes&lt;br /&gt;
 root@zero:~# updatedb&lt;br /&gt;
&lt;br /&gt;
==Wie wird ein Kommando lokalisiert==&lt;br /&gt;
Wenn die Shell alle Ersetzungen in der Kommandozeile vorgenommen und alle Umleitungen vorbereitet hat, ist der Zeitpunkt &lt;br /&gt;
gekommen, auf den der Anwender die ganze Zeit gewartet hat. Die Shell versucht das Kommando auszuführen. Dazu muss sie &lt;br /&gt;
es aber erst lokalisieren. Das erste passende Kommando wird ausgeführt.&lt;br /&gt;
&lt;br /&gt;
Als Kommandoname wird immer das erste Wort eines einfachen Kommandos erkannt. Ein Kommandoname kann mit Pfadnamen in &lt;br /&gt;
einem Verzeichnis (absolut oder relativ) angegeben werden. Die Shell erkennt dies an (mindestens) einem Slash `/' &lt;br /&gt;
im Kommandonamen. Wenn kein Verzeichnis angegeben ist, versucht die Shell selbst, das Kommando zu finden. Dazu wird &lt;br /&gt;
der Kommandoname zuerst in der Hashtabelle gesucht, dann wird er mit den Synonymen, mit den Scriptfunktionen und &lt;br /&gt;
schließlich mit den Shellfunktionen verglichen. &lt;br /&gt;
&lt;br /&gt;
Wird auf diese Weise kein Programm dieses Namens gefunden, werden alle in der PATH-Umgebungsvariablen aufgeführten &lt;br /&gt;
Verzeichnisse nach einer ausführbaren Datei dieses Namens durchsucht. Wird auch hier kein passendes Kommando gefunden, &lt;br /&gt;
gibt die Shell eine Fehlermeldung aus.&lt;br /&gt;
&lt;br /&gt;
===which und type===&lt;br /&gt;
====which====&lt;br /&gt;
which gibt die vollen Pfadnamen der Dateien aus, die bei Benutzung des angegebenen Befehls ausgeführt werden würden.&lt;br /&gt;
&lt;br /&gt;
 which [-a] Dateiname &lt;br /&gt;
&lt;br /&gt;
Optionen:&lt;br /&gt;
&lt;br /&gt;
* -a : Alle Treffer ausgeben, nicht nur den ersten&lt;br /&gt;
* --skip-dot : Verzeichnisse, die mit einem Punkt beginnen, auslassen&lt;br /&gt;
&lt;br /&gt;
Beispiel&lt;br /&gt;
 root@zero:~# which startx&lt;br /&gt;
 /usr/bin/startx&lt;br /&gt;
&lt;br /&gt;
====type====&lt;br /&gt;
Anzeigen der absoluten Pfadnamen von Befehlen, und ob sich diese Befehle in der Hash-Tabelle der aktuellen&lt;br /&gt;
Shell befinden.&lt;br /&gt;
&lt;br /&gt;
 type [Optionen] Befehle&lt;br /&gt;
&lt;br /&gt;
Beispiel&lt;br /&gt;
 root@zero:~# type ls&lt;br /&gt;
 ls is aliased to `ls --color=auto'&lt;br /&gt;
&lt;br /&gt;
Optionen:&lt;br /&gt;
&lt;br /&gt;
* -a : Alle vorkommenden Befehle werden ausgegeben, nicht nur das, welches aufgerufen werden würde&lt;br /&gt;
 root@zero:~# type '''-a''' ls&lt;br /&gt;
 ls is aliased to `ls --color=auto'&lt;br /&gt;
 ls is /bin/ls&lt;br /&gt;
&lt;br /&gt;
* -p : Anzeigen des Eintrags von Befehl in der Hash-Tabelle. Dieser Wert kann sich vom ersten Auftreten des Befehls in PATH&lt;br /&gt;
unterscheiden&lt;br /&gt;
 root@zero:~# type '''-p''' apache2&lt;br /&gt;
 /usr/sbin/apache2&lt;br /&gt;
&lt;br /&gt;
* -t : Anzeigen, ob Befehl ein Aliasname, ein Schlüsselwort, eine Funktion, ein eingebauter Befehl oder eine Datei ist&lt;br /&gt;
 root@zero:~# type '''-t''' apache2&lt;br /&gt;
 file&lt;/div&gt;</summary>
		<author><name>192.168.178.46</name></author>
	</entry>
	<entry>
		<id>https://www.xinux.net/index.php?title=Linux_Grundlagen&amp;diff=73</id>
		<title>Linux Grundlagen</title>
		<link rel="alternate" type="text/html" href="https://www.xinux.net/index.php?title=Linux_Grundlagen&amp;diff=73"/>
		<updated>2009-07-07T10:27:45Z</updated>

		<summary type="html">&lt;p&gt;192.168.178.46: /* nl */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Einführung==&lt;br /&gt;
===Geschichte Unix===&lt;br /&gt;
====1969====&lt;br /&gt;
Am Anfang von Linux steht Multics, ein von Bell Laboratories geschaffenes &amp;quot;Betriebssystem&amp;quot;, &lt;br /&gt;
das noch mit Lochkarten arbeitete. Multics wird mit Unterstützung von AT&amp;amp;T und Western &lt;br /&gt;
Electric unter Mitarbeit von Ken Thompson und Dennis Ritchie weiterentwickelt. Obwohl sich &lt;br /&gt;
Bell Laboratories bald zurückzieht, gibt Thompson das Projekt nicht auf.  Zum Entwicklerteam &lt;br /&gt;
gehören auch Rudd Canaday und Brian Kernighan. Letzterer gibt 1970 dem Betriebssystem den Namen UNIX. &lt;br /&gt;
Thompson definiert 7 Richtlinien für UNIX:&lt;br /&gt;
 &lt;br /&gt;
# Hierarchische Anordnung der Dateisysteme&lt;br /&gt;
# Die Ausgabe von Daten an die Peripherie(-geräte) und Dateien soll gleich sein.&lt;br /&gt;
# Prozesse und Programme sollen miteinander kommunizieren.&lt;br /&gt;
# Multitasking (voneinander getrennte Prozesse)&lt;br /&gt;
# Persönliche Shell's&lt;br /&gt;
# Der Compiler soll für viele Programmiersprachen tauglich sein.&lt;br /&gt;
# Portabilität&lt;br /&gt;
&lt;br /&gt;
====1971====&lt;br /&gt;
Bis 1971 ist das für eine DEC PDP-7 geschriebene Unix als Version 1 auf eine PDP-11 portiert. Bis&lt;br /&gt;
zur Version 4 entwickelt Ritchie die Programmier- (Hoch-) Sprache C. Das in Assembler geschriebene&lt;br /&gt;
Unix wird fast völlig nach C übersetzt, wodurch zum erstenmal die geforderte Hardware-Unabhängigkeit&lt;br /&gt;
des Betriebssystems realisiert werden kann.&lt;br /&gt;
&lt;br /&gt;
====1975====&lt;br /&gt;
Da AT&amp;amp;T aufgrund vertraglicher Bindungen mit der US-Bundesregierung Unix nicht kommerziell vermarkten darf, stellt sie den Source Code für ein paar hundert Dollar den Universitäten, Lehr- und Forschungsanstalten zur Verfügung. Dies führt zu einer sehr dynamischen Entwicklung von Unix. 1975 wird die Version 6 als erstes UNIX-System veröffentlicht, die darauffolgende Version 7 wird sehr erfolgreich. Da es keine Standardisierung gibt, entwickeln bald verschiedenste Firmen ihr eigenes UNIX. Ab 1984 wird AT&amp;amp;T per Gerichtsbeschluss erlaubt, Unix zu vermarkten. AT&amp;amp;T verkauft sein Unix V und beginnt, sich um einen internationalen Standard von UNIX zu bemühen. &lt;br /&gt;
&lt;br /&gt;
====1984====&lt;br /&gt;
Durch Richard Stallman wird die Free Software Foundation (FSF) gegründet. Diese initiiert ein Projekt namens GNU (GNU ist Not Unix), welches das Ziel verfolgt, ein freies UNIX System zu schaffen. &lt;br /&gt;
&lt;br /&gt;
====1987====&lt;br /&gt;
AT&amp;amp;T verbietet die Verwendung des Unix Quellcodes an den Universitäten. Während dieser Zeit ist Andrew (Andy) Tannenbaum Professor an der Freien Universität von Amsterdam und entwickelt Minix. Minix ist ein kostengünstiges Lehrbetriebssystem und kommt ohne jeglichen AT&amp;amp;T Code aus, obwohl es die gleiche Funktionalität wie Unix 7 bietet. Im Usenet unter comp.os.minix entsteht eine Minix-Gemeinde, die den Minix Kernel und die Anwendungen rundherum programmiert und verbessert.&lt;br /&gt;
&lt;br /&gt;
====1991====&lt;br /&gt;
Linus Torvalds hat als Student für Computerwissenschaften an der Universität in Helsinki Minix installiert und das Buch von Andy Tannenbaum gelesen. Er beginnt im Sinne der FSF einen Unix ähnlichen Kernel zu programmieren mit der Idee, &amp;quot;ein besseres Minix als Minix&amp;quot; zu bauen. 1992 stellt er die Version 0.02 mit dem Namen Linux der Internetgemeinde zur Verfügung. &lt;br /&gt;
&lt;br /&gt;
====1994====&lt;br /&gt;
Die Linux Version 1.0 wird freigegeben. Das Linux Fieber beginnt... &lt;br /&gt;
&lt;br /&gt;
====1998====&lt;br /&gt;
Der Kreis der Linux Entwickler und Anwender ist kräftig angeschwollen. KDE 1.0 wird veröffentlicht. Die Zuwachsraten von Linux übertreffen die von Windows NT deutlich. &lt;br /&gt;
&lt;br /&gt;
====1999====&lt;br /&gt;
Der lange erwartete stabile Linux Kernel Version 2.2 wird freigegeben. Namhafte Firmen wie IBM kündigen ihre Unterstützung für Linux an. &lt;br /&gt;
&lt;br /&gt;
====2001====&lt;br /&gt;
Der lange erwartete stabile Linux Kernel Version 2.4 wird freigegeben. USB Unterstützung und eine neue Firewallimplementierung zeichnen ihn aus.&lt;br /&gt;
&lt;br /&gt;
====2003====&lt;br /&gt;
Linux Kernel Version 2.6 wird freigegeben. Am auffälligsten sind Änderungen bei der Modulverwaltung.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Distributionen===&lt;br /&gt;
{| Border=1 Cellpadding=2&lt;br /&gt;
| &lt;br /&gt;
|Url&lt;br /&gt;
|Paketformat&lt;br /&gt;
|-&lt;br /&gt;
|Red Hat&lt;br /&gt;
|www.redhat.com&lt;br /&gt;
|rpm&lt;br /&gt;
|-&lt;br /&gt;
|fedora&lt;br /&gt;
|fedora.redhat.com&lt;br /&gt;
|rpm&lt;br /&gt;
|-&lt;br /&gt;
|CentOS&lt;br /&gt;
|www.centos.org&lt;br /&gt;
|rpm&lt;br /&gt;
|-&lt;br /&gt;
|Suse/openSUSE&lt;br /&gt;
|www.opensuse.org&lt;br /&gt;
|rpm&lt;br /&gt;
|-&lt;br /&gt;
|Debian&lt;br /&gt;
|www.debian.org&lt;br /&gt;
|deb&lt;br /&gt;
|-&lt;br /&gt;
|Ubuntu&lt;br /&gt;
|www.ubuntu.com&lt;br /&gt;
|deb&lt;br /&gt;
|-&lt;br /&gt;
|Mandrake&lt;br /&gt;
|www.linux-mandrake.com&lt;br /&gt;
|rpm&lt;br /&gt;
|-&lt;br /&gt;
|Easy Linux&lt;br /&gt;
|www.easy-linux.de&lt;br /&gt;
|rpm&lt;br /&gt;
|-&lt;br /&gt;
|Turbo&lt;br /&gt;
|www.turbolinux.com&lt;br /&gt;
|rpm&lt;br /&gt;
|-&lt;br /&gt;
|minis&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|toms&lt;br /&gt;
|www.toms.net/rb&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|damn small linux&lt;br /&gt;
|www.damnsmalllinux.org&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|pocket-linux&lt;br /&gt;
|www.pocket-linux.org&lt;br /&gt;
|&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
====Bücher====&lt;br /&gt;
 Titel : Das Linux Anwenderhandbuch und Leitfaden für die Systemverwaltung&lt;br /&gt;
 Autor : Sebastian Hetze, Dirk Hohndel, Olaf Kirch und Martin Müller&lt;br /&gt;
 Verlag: Lunetix&lt;br /&gt;
 ISBN : 3-929764-06-7&lt;br /&gt;
&lt;br /&gt;
 Titel : Linux in a Nutshell&lt;br /&gt;
 Autor : Jessica Perry Hekman und die Mitarbeiter von O'Reilly &amp;amp; Associates&lt;br /&gt;
 Verlag: O'Reilly&lt;br /&gt;
 ISBN : 3-930673-57-6&lt;br /&gt;
&lt;br /&gt;
 Titel : Linux - Wegweiser zur Installation und Konfiguration&lt;br /&gt;
 Autor : Matt Welsh, Lar Kaufman, Matthias Kalle Dallheimer&lt;br /&gt;
 Verlag: O'Reilly&lt;br /&gt;
 ISBN : 3-930673-58-4 (deutsch), 1-56592-469-X (englisch)&lt;br /&gt;
&lt;br /&gt;
 Titel : Linux - Installation, Konfiguration, Anwendung&lt;br /&gt;
 Autor : Michael KoflerMultitasking&lt;br /&gt;
 Verlag: Addison-Wesley&lt;br /&gt;
 ISBN : 3-8273-1475-5&lt;br /&gt;
&lt;br /&gt;
 Titel : Linux - Wegweiser für Netzwerker&lt;br /&gt;
 Autor : Olaf Kirch&lt;br /&gt;
 Verlag: O'Reilly&lt;br /&gt;
 ISBN : 3-930673-18-5&lt;br /&gt;
&lt;br /&gt;
 Titel : TCP/IP-Netzwerk-Administration&lt;br /&gt;
 Autor : Craig Hunt&lt;br /&gt;
 Verlag: O'Reilly&lt;br /&gt;
 ISBN : 3-89721-110-6&lt;br /&gt;
&lt;br /&gt;
 Titel : Essential System Administration&lt;br /&gt;
 Autor : Eleen Frisch&lt;br /&gt;
 Verlag: O'Reilly&lt;br /&gt;
 ISBN : 1-56592-127-5&lt;br /&gt;
&lt;br /&gt;
==Betriebssystem==&lt;br /&gt;
===Was ist ein Betriebssystem?===&lt;br /&gt;
&lt;br /&gt;
Ein Betriebssystem liegt logisch gesehen zwischenAnwendungsprogramm und Hardware.&lt;br /&gt;
&lt;br /&gt;
Es nimmt die Anforderungen der Anwendungsprogramme entgegen und leitet&lt;br /&gt;
diese kontrolliert an die Hardware weiter. Kein Anwendungsprogramm sollte&lt;br /&gt;
direkt auf die Hardware zugreifen können. Den zentralen Zugang schafft einzig&lt;br /&gt;
das Betriebssystem. Somit kann das Betriebssystem unsinnige Anforderungen&lt;br /&gt;
oder Bedienungsfehler abblocken.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Image:Linux.jpg]]&lt;br /&gt;
&lt;br /&gt;
===Aufgaben eines Betriebssystems===&lt;br /&gt;
&lt;br /&gt;
# Verbergen der Komplexität der Maschine vor dem Anwender (Abstraktion)&lt;br /&gt;
# Bereitstellen einer Benutzerschnittstelle (&amp;quot;Kommandointerpreter&amp;quot;, &amp;quot;Shell&amp;quot;)&lt;br /&gt;
# Bereitstellen einer normierten Programmierschnittstelle (API)&lt;br /&gt;
# Verwaltung der Ressourcen der Maschine::&lt;br /&gt;
Hauptspeicher&lt;br /&gt;
Prozessor(en)&lt;br /&gt;
Hintergrundspeicher (Platte, Band, etc.)&lt;br /&gt;
Geräte (Terminal, Drucker, Plotter, etc.)&lt;br /&gt;
Rechenzeit&lt;br /&gt;
Koordination von Prozessen&lt;br /&gt;
&lt;br /&gt;
===Aufbau eines Betriebssystems===&lt;br /&gt;
&lt;br /&gt;
Ein Rechensystem besteht aus Hardware, Systemprogrammen und Anwendungs-&lt;br /&gt;
programmen. Unter einem Betriebssystem wird meist die Summe aus Betriebs-&lt;br /&gt;
systemkern (Kernel) und den wichtigsten Systemprogrammen verstanden. Ein&lt;br /&gt;
minimaler LINUX-Kernel besitzt ungefähr eine Größe von 400 - 800 kByte.&lt;br /&gt;
Weitere wichtige Systemkomponenten benötigen zusätzlich 10 - 100 Mbyte&lt;br /&gt;
Plattenplatz.&lt;br /&gt;
&lt;br /&gt;
Ein Betriebssystem stellt den Rechner als erweiterte Maschine (virtuelle&lt;br /&gt;
Maschine) über definierte Software-Schnittstellen zur Verfügung.&lt;br /&gt;
Das Betriebssystem dient als Betriebsmittelverwalter, der Anforderungen&lt;br /&gt;
befriedigt, protokolliert, abrechnet und vermittelt.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Aufgaben des Betriebssystemkerns:&lt;br /&gt;
&lt;br /&gt;
{| Border=1 Cellpadding=2&lt;br /&gt;
|Prozessverwaltung  (dispatching and scheduling)&lt;br /&gt;
| Mehrere Benutzer können mit mehreren Aktionen gleichzeitig im System arbeiten, ohne sich gegenseitig zu beeinflussen. Damit dies möglich ist,  müssen die Aktionen organisiert, koordiniert und verwaltet werden. Die zu verwaltende Einheit nennt man Prozess.&lt;br /&gt;
|-&lt;br /&gt;
|Speicherverwaltung   (memory management)&lt;br /&gt;
|Zuteilen von Speicherbereichen an laufende Prozesse, Schutz der Speicherbereiche vor unbefugten Zugriffen, bei Speicherengpässen: Auslagern von ganzen (swapping) oder von Teilen (paging) von Prozessen auf die Platte (swap file).&lt;br /&gt;
|-&lt;br /&gt;
|Dateiverwaltung  (file handling)&lt;br /&gt;
|Zuteilung von Plattenplatz für Programme, Benutzer und Systemdienste, Schreiben, Lesen und Strukturieren der Daten auf den Massenspeichern; Durch Bereitstellung einer entsprechenden Schnittstelle (VFS, virtual file system) kann der Kern Dateisysteme unterschiedlichster Art (EXT2, FAT, NFS, HPFS, NTFS, ...) ansprechen.&lt;br /&gt;
|-&lt;br /&gt;
|Geräteverwaltung  (resource management)&lt;br /&gt;
|Der Kern ermöglicht und kontrolliert den Zugriff auf die Hardware. Er steuert die Ein- und Ausgabetätigkeiten der Anwender. An den Kern&lt;br /&gt;
gebunden sind die entsprechenden Gerätetreiber (device driver), die damit eine Kommunikation zwischen Kern und Hardware ermöglichen.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
===Multitasking===&lt;br /&gt;
&lt;br /&gt;
Multitasking bedeutet, dass ein Rechner aus Anwendersicht mehrere Aufgaben&lt;br /&gt;
(Tasks) gleichzeitg übernehmen kann. Das Betriebssystem (OS) unterteilt die&lt;br /&gt;
gleichzeitig anstehenden Aufgaben in Einzelarbeitsschritte (Prozesse) und&lt;br /&gt;
managed durch ein Zeitscheibenverfahren (scheduling) die gleichmäßige&lt;br /&gt;
Abarbeitung der Prozesse.&lt;br /&gt;
&lt;br /&gt;
Es wird unterschieden zwischen:&lt;br /&gt;
&lt;br /&gt;
*non-präamptiven (kooperativen=die Ressourcen werden vom aktiven Prozess freigegeben, bei einem Hänger steht das ganze System)&lt;br /&gt;
&lt;br /&gt;
und&lt;br /&gt;
&lt;br /&gt;
*präamptiven (reinem=der Betriebssystemkern steuert Taskwechsel, indem nach einer festgelegten Zeit vom gerade aktiven Prozess zum nächsten weitergeschaltet wird)&lt;br /&gt;
&lt;br /&gt;
===Mehrprozessorbetrieb===&lt;br /&gt;
&lt;br /&gt;
Bei mehreren Prozessoren und Unterstützung durch das OS&lt;br /&gt;
(NT,Linux,Unix,Novell) können mehrere Tasks auf diese verteilt werden und&lt;br /&gt;
gleichzeitig bearbeitet werden. Nachteilig ist, dass dies nicht oder kaum von&lt;br /&gt;
Anwendungsprogrammen unterstützt wird und es zu Kommunikationsproblemen&lt;br /&gt;
zwischen den einzelnen Tasks kommen kann.&lt;br /&gt;
&lt;br /&gt;
===Arten von von Betriebssystemen===&lt;br /&gt;
&lt;br /&gt;
{|Border=1 Cellpadding=2&lt;br /&gt;
|&lt;br /&gt;
|SingleUser  &lt;br /&gt;
|Multiuser&lt;br /&gt;
|-&lt;br /&gt;
|Single Tasking&lt;br /&gt;
|MS - DOS&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|Multi Tasking&lt;br /&gt;
|Windows 3.x&lt;br /&gt;
|UNIX&lt;br /&gt;
|-&lt;br /&gt;
|&lt;br /&gt;
|Windows 95/98&lt;br /&gt;
|Linux&lt;br /&gt;
|-&lt;br /&gt;
|&lt;br /&gt;
|Windows NT4 ohne Erweiterungen&lt;br /&gt;
|VMS&lt;br /&gt;
|-&lt;br /&gt;
|&lt;br /&gt;
|OS/2 &lt;br /&gt;
|Windows NT mit  Erweiterungen&lt;br /&gt;
|-&lt;br /&gt;
|&lt;br /&gt;
|Apple&lt;br /&gt;
|Windows 2000, XP, 2003&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
===SHELL===&lt;br /&gt;
&lt;br /&gt;
Wenn man mit Linux arbeiten will, kann man nicht direkt mit dem Betriebssystem&lt;br /&gt;
kommunizieren. Man braucht dazu ein Hilfsprogramm, welches die&lt;br /&gt;
Kommandoeingaben ordnungsgemäß an das Betriebssystem weiterleitet. Dieses&lt;br /&gt;
Hilfsprogramm hat den Namen Shell.&lt;br /&gt;
&lt;br /&gt;
Die Shell schirmt den Betriebssystemkern von den Anwendungsprogrammen ab.&lt;br /&gt;
Die unterschiedlichen Shells erfüllen alle dieselbe Aufgabe, sie unterscheiden sich&lt;br /&gt;
allerdings in ihrer Syntax.&lt;br /&gt;
&lt;br /&gt;
==Die Installation im Überblick==&lt;br /&gt;
&lt;br /&gt;
Die Installation von Linux geschieht in folgenden Schritten:&lt;br /&gt;
&lt;br /&gt;
# Analyse (Welche Hardware habe ich? ,Hab ich weitere Betriebsysteme?)&lt;br /&gt;
# Booten des Linux-Kernels. (von CD oder Diskette)&lt;br /&gt;
# Laden einer RAM-Disk (das macht das Installationsprogramm automatisch).&lt;br /&gt;
# Partitionieren der Festplatte (fdisk).&lt;br /&gt;
# Einrichten der Swappartition (mkswap), Formatieren der Festplatte (mkfs).&lt;br /&gt;
# Montieren der Dateisysteme (mount), Aktivieren der Swapbereiche (swapon).&lt;br /&gt;
# Kopieren und Auspacken der Daten vom Installationsmedium auf die Festplatte (die eigentliche Installation). (rpm, dpkg oder tar).&lt;br /&gt;
# Geeignete Wahl der Bootmethode unter Berücksichtigung von Punkt 1 (grub, lilo).&lt;br /&gt;
# Konfiguration des Systems (Netz, Modem etc...).&lt;br /&gt;
&lt;br /&gt;
==Erste Schritte==&lt;br /&gt;
===Anmelden===&lt;br /&gt;
Sie können sich nun mit dem Usernamen und dem Passwort, das sie bei der Installation angelegt haben anmelden!&lt;br /&gt;
[[Image:benutzer.jpg]]&lt;br /&gt;
&lt;br /&gt;
[[Image:passwd.jpg]]&lt;br /&gt;
&lt;br /&gt;
===Terminal öffnen===&lt;br /&gt;
&lt;br /&gt;
Ein Terminal öffnen Sie über das Startmenü:&lt;br /&gt;
&lt;br /&gt;
[[Image:Terminalde.jpg]]&lt;br /&gt;
&lt;br /&gt;
Das geöffnete Terminal sieht dann folgendermaßen aus:&lt;br /&gt;
&lt;br /&gt;
[[Image:Terminalde2.jpg]]&lt;br /&gt;
&lt;br /&gt;
===Sudo===&lt;br /&gt;
Rootrechte erlangen sie über den &amp;quot;Sudo&amp;quot;-Befehl&lt;br /&gt;
 &lt;br /&gt;
''Den nächsten Befehl als root ausführen''&lt;br /&gt;
 xinux@zero:~$ sudo cat /etc/shadow&lt;br /&gt;
 [sudo] password for xinux:&lt;br /&gt;
&lt;br /&gt;
''Eine komplette Sitzung als root starten''&lt;br /&gt;
 xinux@zero:~$ sudo -i&lt;br /&gt;
 [sudo] password for xinux:&lt;br /&gt;
 root@zero:~#&lt;br /&gt;
&lt;br /&gt;
===Virtuelle Konsolen===&lt;br /&gt;
&lt;br /&gt;
In die Virtuelle Konsole gelangen sie über &amp;quot;STRG+ALT+(F1-F6)&amp;quot;.&lt;br /&gt;
Sie funktioniert wie ein ganz normales Terminal, und mit &amp;quot;ALT+F7&amp;quot;&lt;br /&gt;
gelangen sie wieder zurück auf die grafische Benutzeroberfläche&lt;br /&gt;
&lt;br /&gt;
===Abmelden===&lt;br /&gt;
&lt;br /&gt;
Abmelden können Sie sich wieder über das Startmenu unter:&lt;br /&gt;
&lt;br /&gt;
[[Image:Logout.jpg]]&lt;br /&gt;
&lt;br /&gt;
Fals sie nur einzelne Sitzungen in einem der Terminals oder &lt;br /&gt;
den Virtuellen Konsolen Abmelden wollen benutzen sie dazu den Befehl: &amp;quot;exit&amp;quot;&lt;br /&gt;
&lt;br /&gt;
===Herunterfahren===&lt;br /&gt;
&lt;br /&gt;
Das Herunterfahren funktioniert auf dem selben Weg.&lt;br /&gt;
&lt;br /&gt;
Entweder sie Benutzen wieder das Startmenü und benutzen diesmal den &amp;quot;Ausschalten ...&amp;quot; Knopf,&lt;br /&gt;
&lt;br /&gt;
Oder sie geben den äquivalenten &amp;quot;shutdown&amp;quot;-Befehl in einem Terminal bzw. der virtuellen Konsole ein.&lt;br /&gt;
&lt;br /&gt;
Allerdings müssen sie dazu als Administrator angemeldet sein s. &amp;quot;Sudo&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Wenn Sie den &amp;quot;shutdown&amp;quot;-Befehl benutzen wollen muss hinter den Befehl&lt;br /&gt;
&lt;br /&gt;
eine Zeitangabe in Minuten oder das wort &amp;quot;now&amp;quot; für sofortiges Ausschalten hinzugefügt werden:&lt;br /&gt;
&lt;br /&gt;
 xinux@zero:~$ sudo -i&lt;br /&gt;
 root@zero:~# shutdown 60&lt;br /&gt;
 &lt;br /&gt;
 Broadcast message from xinux@zero &lt;br /&gt;
         (/dev/pts/3) at 14:29 ...&lt;br /&gt;
 &lt;br /&gt;
 The system is going down for maintenance in 60 minutes!&lt;br /&gt;
&lt;br /&gt;
Sollten sie den Befehl widerrufen wollen dann drücken sie &amp;quot;STRG+C&amp;quot;,&lt;br /&gt;
&lt;br /&gt;
in dem Terminal in dem der shutdown Befehl gestartet wurde,&lt;br /&gt;
&lt;br /&gt;
oder geben sie den &amp;quot;shutdown&amp;quot;-Befehl zusammen mit der Abbruchoption &amp;quot;-c&amp;quot; in einem anderen Terminal ein:&lt;br /&gt;
&lt;br /&gt;
 root@zero:~# shutdown -c&lt;br /&gt;
&lt;br /&gt;
 shutdown: Shutdown cancelled&lt;br /&gt;
 root@zero:~# &lt;br /&gt;
&lt;br /&gt;
Wenn Sie den Rechner Neustarten möchten gibt es dazu die Option &amp;quot;-r&amp;quot; für den &amp;quot;shutdown&amp;quot;-Befehl&lt;br /&gt;
&lt;br /&gt;
oder den &amp;quot;reboot&amp;quot;-Befehl die beide auch als root ausgeführt werden müssen:&lt;br /&gt;
&lt;br /&gt;
 xinux@zero:~$ sudo -i&lt;br /&gt;
 [sudo] password for xinux: &lt;br /&gt;
 root@zero:~# shutdown -r now&lt;br /&gt;
&lt;br /&gt;
 root@zero:~# reboot&lt;br /&gt;
&lt;br /&gt;
===&amp;quot;man&amp;quot;===&lt;br /&gt;
&lt;br /&gt;
Programm zum Einsehen der Online-Manuals&lt;br /&gt;
&lt;br /&gt;
Die Manuals sind in folgende Sektionen unterteilt:&lt;br /&gt;
# Ausführbare Programme oder Shellbefehle&lt;br /&gt;
# Systemaufrufe (Kernelfunktionen)&lt;br /&gt;
# Bibliotheksaufrufe (Funktionen in System-Bibliotheken)&lt;br /&gt;
# Spezielle Dateien (gewöhnlich in /dev)&lt;br /&gt;
# Dateiformate und Konventionen, z. B. /etc/passwd&lt;br /&gt;
# Spiele&lt;br /&gt;
# Makropakete und Konventionen, z. B. man(7), groff(7)&lt;br /&gt;
# Systemadministrationsbefehle (in der Regel nur für root)&lt;br /&gt;
# Kernelroutinen [Nicht Standard]&lt;br /&gt;
&lt;br /&gt;
Aufruf eines Manuals erfolgt durch ''man kommando''&lt;br /&gt;
Beendet wird durch Drücken des Buchstabens q&lt;br /&gt;
Gesucht wird vorwärts durch Eingabe eines /suchausdruck&lt;br /&gt;
Gesucht wird rückwärts durch Eingabe eines ?suchausdruck&lt;br /&gt;
&lt;br /&gt;
Beispiele:&lt;br /&gt;
&lt;br /&gt;
      man passwd        Anschauen der Manualseite zum Programm passwd&lt;br /&gt;
      man 5 passwd      Anschauen der Manualseite zur Datei /etc/passwd&lt;br /&gt;
      man -a passwd     Anschauen aller Manualseiten zu passwd&lt;br /&gt;
      man -k passwd     Durchsucht die Kurzbeschreibungen der Manualseite&lt;br /&gt;
                        nach passwd und gibt alle Treffer aus&lt;br /&gt;
      man -f passwd      Gibt alle gefunden Kurzbescheibungen zu passwd aus&lt;br /&gt;
      man -L en passwd Gibt englische Manualseiten aus&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Was geht vor auf meinem System? (date,who)===&lt;br /&gt;
&lt;br /&gt;
Das Kommando date dient zur Abfrage von Datum und Uhrzeit.&lt;br /&gt;
&lt;br /&gt;
 xinux@zero:~ &amp;gt; date&lt;br /&gt;
 Fre Mär 16 16:35:03 CET 2001&lt;br /&gt;
&lt;br /&gt;
oder auch Anzeige der Grennwich Zeit:&lt;br /&gt;
&lt;br /&gt;
 xinux@zero:~ &amp;gt; date -u&lt;br /&gt;
 Fre Mär 16 15:35:34 UTC 2001&lt;br /&gt;
&lt;br /&gt;
 xinux@zero:~ &amp;gt; date -u &amp;quot;+%X&amp;quot;&lt;br /&gt;
 15:37:19&lt;br /&gt;
&lt;br /&gt;
 xinux@zero:~ &amp;gt; date -u &amp;quot;+%x&amp;quot;&lt;br /&gt;
 01/15/02&lt;br /&gt;
&lt;br /&gt;
who zeigt alle angemeldeten Benutzer an&lt;br /&gt;
&lt;br /&gt;
 thomas@cardassia:~ &amp;gt; who&lt;br /&gt;
 thomas             tty1 Feb 27 16:39&lt;br /&gt;
 thomas             tty2 Mar 2 17:08&lt;br /&gt;
 tina               tty6 Mar 16 16:38&lt;br /&gt;
&lt;br /&gt;
Mit `who --help' bekommen Sie mehr Informationen.&lt;br /&gt;
&lt;br /&gt;
 thomas@cardassia:~ &amp;gt; who --help&lt;br /&gt;
&lt;br /&gt;
Benutzung: who [OPTION]... [ DATEI | ARG1 ARG2 ]&lt;br /&gt;
&lt;br /&gt;
 -H, --heading             print line of column headings&lt;br /&gt;
 -i, -u, --idle            add user idle time as HOURS:MINUTES, . or old&lt;br /&gt;
 -l, --lookup              attempt to canonicalize hostnames via DNS&lt;br /&gt;
 -m                        only hostname and user associated with stdin&lt;br /&gt;
 -q, --count               all login names and number of users logged on&lt;br /&gt;
 -s                        (ignored)&lt;br /&gt;
 -T, -w, --mesg            add user's message status as +, - or ?&lt;br /&gt;
     --message             same as -T&lt;br /&gt;
     --writable            same as -T&lt;br /&gt;
     --help                display this help and exit&lt;br /&gt;
     --version             output version information and exit&lt;br /&gt;
&lt;br /&gt;
==Das UNIX-Dateisystem==&lt;br /&gt;
===Verzeichnisbaum===&lt;br /&gt;
&lt;br /&gt;
[[Image:vztree.jpg]]&lt;br /&gt;
&lt;br /&gt;
Das Betriebssystem UNIX besitzt ein hierarchisches Dateisystem. Es besteht aus:&lt;br /&gt;
* Dateien (Files)&lt;br /&gt;
Dateien speichern Informationen (Text, Bilder, Sound, Videos, Programme) und&lt;br /&gt;
werden über den Dateinamen angesprochen.&lt;br /&gt;
&lt;br /&gt;
* Verzeichnissen (Directories, Kataloge)&lt;br /&gt;
Verzeichnisse besitzen ebenfalls einen Namen und dienen zur Ordnung des&lt;br /&gt;
Dateisystems. Ein Verzeichnis kann Dateien und Unterverzeichnisse&lt;br /&gt;
(Subdirectories) enthalten. Das oberste Verzeichnis im Dateisystem heisst&lt;br /&gt;
Rootverzeichnis oder kurz Root und wird durch / (sprich: slash)&lt;br /&gt;
gekennzeichnet.&lt;br /&gt;
&lt;br /&gt;
Im Gegensatz zu Windows kennt UNIX keine Laufwerke.&lt;br /&gt;
Das obige Bild zeigt ein typisches UNIX-Dateisystem.&lt;br /&gt;
Unterhalb des Rootverzeichnisses befinden sich eine Vielzahl vonVerzeichnissen.&lt;br /&gt;
&lt;br /&gt;
===Wichtige Verzeichnisse===&lt;br /&gt;
&lt;br /&gt;
• '''Homeverzeichnis'''&lt;br /&gt;
&lt;br /&gt;
das Verzeichnis, in dem man sich unmittelbar nach dem Anmelden befindet. Das&lt;br /&gt;
Homeverzeichnis wird vom Systemverwalter eingerichtet; jeder Anwender&lt;br /&gt;
besitzt ein festes Homeverzeichnis. z.B. /home/hans&lt;br /&gt;
&lt;br /&gt;
~ (Tilde) bzw. $HOME (Shellvariable) kennzeichnen das Homeverzeichnis.&lt;br /&gt;
&lt;br /&gt;
• '''Aktuelles Verzeichnis'''&lt;br /&gt;
&lt;br /&gt;
Verzeichnis, in dem man sich aktuell befindet.&lt;br /&gt;
Das aktuelle Verzeichnis wird mit dem Befehl cd (change directory) oder per&lt;br /&gt;
Mausklick verändert.&lt;br /&gt;
Ein einfacher Punkt . kennzeichnet das aktuelle Verzeichnis.&lt;br /&gt;
&lt;br /&gt;
• '''Elternverzeichnis'''&lt;br /&gt;
&lt;br /&gt;
Verzeichnis unmittelbar oberhalb des aktuellen Verzeichnisses.&lt;br /&gt;
Jedes Verzeichnis ausser / besitzt genau ein Elternverzeichnis.&lt;br /&gt;
Zwei Punkte .. kennzeichnen das Elternverzeichnis (abhängig vom aktuellen&lt;br /&gt;
VZ).&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Absoluter Pfadname:===&lt;br /&gt;
&lt;br /&gt;
Beschreibt ausgehend vom Rootverzeichnis den Weg zum Zielverzeichnis oder zur&lt;br /&gt;
Zieldatei. (Welche Verzeichnisse müssen ausgehend von / durchlaufen werden, um&lt;br /&gt;
zum Ziel zu kommen?) Ein absoluter Pfadname beginnt immer mit / .&lt;br /&gt;
&lt;br /&gt;
===Relativer Pfadname:===&lt;br /&gt;
&lt;br /&gt;
Beschreibt ausgehend vom aktuellen Verzeichnis den Weg zum Zielverzeichnis&lt;br /&gt;
oder zur Zieldatei; ein relativer Pfadname beginnt nicht mit / .&lt;br /&gt;
/home/suxer&lt;br /&gt;
absoluter Pfadname für das Verzeichnis sub1 im Homeverzeichnis von suxer&lt;br /&gt;
&lt;br /&gt;
===Verzeichnisstruktur===&lt;br /&gt;
&lt;br /&gt;
 /bin         Kommandos die beim starten benötigt werden (Zugriff hat jeder)&lt;br /&gt;
 /sbin        Wichtige System-Programme (In der Regel root vorberhalten)&lt;br /&gt;
 /boot        Hier findet man die Dateien des Bootmanagers und des Kernel.&lt;br /&gt;
 /dev         In diesem Verzeichnis stehen die Gerätedateien (Devices),&lt;br /&gt;
 /home        Alle Heimatverzeichnisse der Nutzer findet man hier.&lt;br /&gt;
 /lib         Beim Systemstart benötigten Bibliotheken und Modules stehen hier.&lt;br /&gt;
 /mnt         Mountpunkt für temporäre Partitionen&lt;br /&gt;
 /opt         Software, die nicht Installationsumfang von Linux gehören.&lt;br /&gt;
 /root        Heimatverzeichnis des Administrators.&lt;br /&gt;
 /tmp         Temporäre Dateien können hier abgelegt werden&lt;br /&gt;
 /usr         statische Dateien (kann read-only gemountet sein)&lt;br /&gt;
 /var         variable Dateien (muss beschreibar sein )&lt;br /&gt;
 /etc         Konfiguartionsdateien und Startscripte&lt;br /&gt;
 /proc        Virtuelles Dateisystem -&amp;gt; repräsentiert den Kernel&lt;br /&gt;
&lt;br /&gt;
===Unterverzeichnisse von /usr===&lt;br /&gt;
&lt;br /&gt;
 sbin         Programme für root die beim Start nicht benötigt werden&lt;br /&gt;
 bin          Programme für alle die beim Start nicht benötigt werden&lt;br /&gt;
 X11R6        Dateien des X-Window-Sytems&lt;br /&gt;
 bin          Ausführbare Programme&lt;br /&gt;
 doc          Dokumentationen&lt;br /&gt;
 etc          Konfigurationsdateien&lt;br /&gt;
 games        Spiele&lt;br /&gt;
 include      Headerdateien für C-Programme&lt;br /&gt;
 local        Pakete die nicht zur Distribution gehören ähnlich /opt&lt;br /&gt;
 share        Pakete die von mehreren Paketen genutzt werden&lt;br /&gt;
 share/man    Die Manualpages&lt;br /&gt;
 share/info   Seiten des Infosystems&lt;br /&gt;
 share/doc    Dokumentationen&lt;br /&gt;
 src          Sources von Programmen (Kernel und andere)&lt;br /&gt;
&lt;br /&gt;
===Unterverzeichnisse von /var===&lt;br /&gt;
&lt;br /&gt;
 cache        Zwischenspreicher für Progammes&lt;br /&gt;
 games        Variable Daten der Games (Scores etc...)&lt;br /&gt;
 lock         Sperrdateien&lt;br /&gt;
 log          Die Logdateien (wichtiges Verzeichnis für Admins)&lt;br /&gt;
 mail         Das Mailsystem&lt;br /&gt;
 run          Dateien zu laufemdem Prozessen&lt;br /&gt;
 spool        Spooldateien (z.B. für das Drucksystem&lt;br /&gt;
 state        Statusinfos&lt;br /&gt;
 tmp          Wie /tmp eventuell nicht auf root Partion&lt;br /&gt;
&lt;br /&gt;
==Einfache Komandos==&lt;br /&gt;
===cd: Wechseln des Arbeitsverzeichnis===&lt;br /&gt;
&lt;br /&gt;
Um festzustellen in welchem Verzeichnis man sich befindet, sollte man den&lt;br /&gt;
Befehl &amp;quot;pwd&amp;quot; benutzen,&lt;br /&gt;
&lt;br /&gt;
und mit dem Befehl &amp;quot;cd&amp;quot; kann man zwischen den Verzeichnissen wechseln:&lt;br /&gt;
&lt;br /&gt;
Wechsele ins homeverzeichnis von Xinux&lt;br /&gt;
&lt;br /&gt;
 xinux@zero:~$ cd /home/xinux/&lt;br /&gt;
 xinux@zero:~$ pwd&lt;br /&gt;
 /home/xinux&lt;br /&gt;
&lt;br /&gt;
cd ~ -&amp;gt; wechsele ins jeweilige Homeverzeichnis&lt;br /&gt;
&lt;br /&gt;
cd .. -&amp;gt; wechsele ein Verzeichnis höher&lt;br /&gt;
&lt;br /&gt;
cd ../verzeichnis -&amp;gt; wechsele in eine paralleles Verzeichnis &amp;lt;- (ist eine relative Pfadangabe !)&lt;br /&gt;
&lt;br /&gt;
cd - -&amp;gt; wechsele in das Verzeichnis, in dem vorher gearbeitet wurde.&lt;br /&gt;
&lt;br /&gt;
Mit cd / wechselt man in das Wurzelverzeichnis.&lt;br /&gt;
&lt;br /&gt;
 xinux@zero:/var/log$ cd /&lt;br /&gt;
 xinux@zero:/$ pwd&lt;br /&gt;
 /&lt;br /&gt;
&lt;br /&gt;
===ls: Listing===&lt;br /&gt;
&lt;br /&gt;
Den Inhalt von Verzeichnissen kann man sich mit dem Befehl &amp;quot;ls&amp;quot; anzeigen lassen&lt;br /&gt;
wobei &amp;quot;ls&amp;quot; eine Vielzahl von Optionen besitzt:&lt;br /&gt;
&lt;br /&gt;
 ls                                  standard&lt;br /&gt;
 ls -l                               langes listing&lt;br /&gt;
 ls -a                               alle Dateien&lt;br /&gt;
 ls -i                               mit Inode&lt;br /&gt;
 ls -h                               gut lesbare Dateigröße&lt;br /&gt;
 ls -d                               Verzechnis wird angezeigt, nicht der Inhalt&lt;br /&gt;
 ls -L                               sortiert nach Größe&lt;br /&gt;
 ls -t                               sortiert nach Datum&lt;br /&gt;
 ls -F                               mit nützlichem Anhang&lt;br /&gt;
&lt;br /&gt;
 xinux@zero:/$ ls -l /var/log/messages&lt;br /&gt;
 -rw-r----- 1 syslog adm 2296 2009-06-16 10:05 /var/log/messages&lt;br /&gt;
&lt;br /&gt;
===more: Seitenweises Anzeigen von Seiten===&lt;br /&gt;
 root@zero:~# more /var/log/messages&lt;br /&gt;
 ...&lt;br /&gt;
&lt;br /&gt;
===head: erste Zeilen anzeigen===&lt;br /&gt;
Erste 10 Zeilen anzeigen&lt;br /&gt;
 root@zero:~# head /var/log/messages&lt;br /&gt;
 Jun 15 12:37:08 zero syslogd 1.5.0#5ubuntu3: restart.&lt;br /&gt;
 Jun 15 12:38:43 zero kernel: [  830.065036] mtrr: your processor doesn't support write-combining&lt;br /&gt;
 Jun 15 12:46:05 zero pulseaudio[4817]: pid.c: Stale PID file, overwriting.&lt;br /&gt;
 Jun 15 13:05:24 zero -- MARK --&lt;br /&gt;
 ...&lt;br /&gt;
&lt;br /&gt;
Erste zwei Zeilen anzeigen&lt;br /&gt;
 root@zero:~# head -n 2 /var/log/messages&lt;br /&gt;
 Jun 15 12:37:08 zero syslogd 1.5.0#5ubuntu3: restart.&lt;br /&gt;
 Jun 15 12:38:43 zero kernel: [  830.065036] mtrr: your processor doesn't support write-combining&lt;br /&gt;
&lt;br /&gt;
===tail: letzte Zeilen anzeigen===&lt;br /&gt;
 &lt;br /&gt;
 root@zero:~# tail /var/log/syslog&lt;br /&gt;
 ...&lt;br /&gt;
 Jun 19 11:19:35 zero -- MARK --&lt;br /&gt;
 Jun 19 11:39:35 zero -- MARK --&lt;br /&gt;
 Jun 19 11:59:36 zero -- MARK --&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Letze 5 Zeilen anzeigen&lt;br /&gt;
 root@zero:~# tail -n 5 /var/log/auth.log&lt;br /&gt;
 Jun 18 14:30:01 zero CRON[12040]: pam_unix(cron:session): session closed for user root&lt;br /&gt;
 Jun 18 14:39:01 zero CRON[12191]: pam_unix(cron:session): session opened for user root by (uid=0)&lt;br /&gt;
 Jun 18 14:39:01 zero CRON[12191]: pam_unix(cron:session): session closed for user root&lt;br /&gt;
 Jun 18 14:40:01 zero CRON[12237]: pam_unix(cron:session): session opened for user root by (uid=0)&lt;br /&gt;
 Jun 18 14:40:01 zero CRON[12237]: pam_unix(cron:session): session closed for user root&lt;br /&gt;
&lt;br /&gt;
Letze Zeilen anzeigen und fortlaufend aktualisieren&lt;br /&gt;
 root@zero:~# tail -f /var/log/syslog&lt;br /&gt;
 ...&lt;br /&gt;
&lt;br /&gt;
===mkdir: Ein neues Verzeichnis erstellen===&lt;br /&gt;
&lt;br /&gt;
 mkdir        verzeichnis&lt;br /&gt;
Erstellt ein Verzeichnis im working directory (wd)&lt;br /&gt;
&lt;br /&gt;
 mkdir  -p    ver1/ver2&lt;br /&gt;
Erstellt ein Verzeichnis ver2 unterhalb von ver1&lt;br /&gt;
wenn ver1 nicht existiert wird es erstellt&lt;br /&gt;
&lt;br /&gt;
 mkdir -m 753 ver1&lt;br /&gt;
Es wird das Verzeichnis ver1 erstellt mit der mask 753&lt;br /&gt;
&lt;br /&gt;
 mkdir -v     ver1&lt;br /&gt;
Geschwätzige Ausgabe :)&lt;br /&gt;
&lt;br /&gt;
===Zum Löschen von leeren Verzeichnissen wird rmdir benutzt===&lt;br /&gt;
&lt;br /&gt;
 rmdir           ver1&lt;br /&gt;
Löscht das leere Verzeichnis ver1&lt;br /&gt;
&lt;br /&gt;
 rmdir -v        ver1&lt;br /&gt;
Löscht das leere Verzeichnis ver1 und ist geschwätzig&lt;br /&gt;
&lt;br /&gt;
 rmdir -p        /ver1/ver2/ver3&lt;br /&gt;
Löscht das Verzeichnis ver3; wenn dadurch ver2 ein leeres&lt;br /&gt;
Verzeichnis wird, wird dieses auch gelöscht , wenn ver1&lt;br /&gt;
dadurch ein leeres Verzeichnis wird, wird auch dieses gelöscht.&lt;br /&gt;
&lt;br /&gt;
===touch Verändern des Zeitstempels===&lt;br /&gt;
&lt;br /&gt;
Mit touch können wir eine neue leere Datei erzeugen (das ist nicht der eigentliche&lt;br /&gt;
Zweck von touch, eigentlich wird der Zeitstempel geändert)&lt;br /&gt;
&lt;br /&gt;
 touch            dateiname&lt;br /&gt;
&lt;br /&gt;
===Kopieren=== &lt;br /&gt;
cp ist das Kommando um Dateien zu kopieren &lt;br /&gt;
&lt;br /&gt;
Eine Kopie von dat1 mit dem Namen dat2 erstellen:&lt;br /&gt;
&lt;br /&gt;
 xinux@zero:~$ cp dat1 dat2&lt;br /&gt;
&lt;br /&gt;
Eine Kopie von dat1 ins Verzeichnis ver2 erstellen:&lt;br /&gt;
&lt;br /&gt;
 xinux@zero:~$ cp dat1 ver2/&lt;br /&gt;
 &lt;br /&gt;
Eine Kopie erstellen mit ausführlicher Anzeige:&lt;br /&gt;
&lt;br /&gt;
 xinux@zero:~$ cp -v dat1 dat2&lt;br /&gt;
 `dat1' -&amp;gt; `dat2'&lt;br /&gt;
&lt;br /&gt;
Eine Kopie erstellen mit Rückfrage fals etwas überschrieben wird:&lt;br /&gt;
&lt;br /&gt;
 xinux@zero:~$ cp -i dat1 dat2&lt;br /&gt;
 cp: overwrite `dat2'?&lt;br /&gt;
&lt;br /&gt;
Eine Kopie erstellen und die Rückfrage überbrücken:&lt;br /&gt;
&lt;br /&gt;
 xinux@zero:~$ cp -f dat1 dat2&lt;br /&gt;
&lt;br /&gt;
Eine Kopie von dat1 ins Verzeichnis ver2 erstellen fals keine neuere Version von dat1 vorliegt:&lt;br /&gt;
&lt;br /&gt;
 xinux@zero:~$ cp -u dat1 ver2/&lt;br /&gt;
&lt;br /&gt;
Eine Kopie erstellen fals ver2 auf dem selben Dateisystem wie dat1 liegt:&lt;br /&gt;
&lt;br /&gt;
 xinux@zero:~$ cp -x dat1 ver2/&lt;br /&gt;
&lt;br /&gt;
Eine Kopie von ver1, die als ver2 oder unter ver2 als ver1 gespeichert wird erstellen:&lt;br /&gt;
&lt;br /&gt;
 xinux@zero:~$ cp -r ver1/ ver2/&lt;br /&gt;
&lt;br /&gt;
Eine Kopie von einer Datei erstellen und ihre Attribute beibehalten:&lt;br /&gt;
&lt;br /&gt;
 xinux@zero:~$ cp -p sux1 sux2&lt;br /&gt;
&lt;br /&gt;
Eine Kopie erstellen bei der die Links erhalten bleiben:&lt;br /&gt;
&lt;br /&gt;
 xinux@zero:~$ cp -r ver1/ ver2/&lt;br /&gt;
&lt;br /&gt;
Eine Kopie erstellen zum Archivieren (-dpr):&lt;br /&gt;
&lt;br /&gt;
 xinux@zero:~$ cp -a ver1/ ver2/&lt;br /&gt;
&lt;br /&gt;
===rm: Löschen einer Datei===&lt;br /&gt;
&lt;br /&gt;
Um Dateien zu löschen, brauchen wir das Kommando &amp;quot;rm&amp;quot;:&lt;br /&gt;
&lt;br /&gt;
 rm               dat1        dat1 wird gelöscht&lt;br /&gt;
 rm         -i    dat1        dat1 wird nach Bestätigung gelöscht&lt;br /&gt;
 rm         -f    dat1        dat1 wird ohne Rückfragen gelöscht&lt;br /&gt;
 rm         -v    dat1        dat1 wird glöscht (geschwätzige Ausgabe)&lt;br /&gt;
 rm         -r    ver1        Löschen von nicht leeren Verzeichnissen&lt;br /&gt;
                              Achtung !!! Als root kann man sich damit Teile&lt;br /&gt;
                              oder sogar den gesamten Verzeichnisbaum&lt;br /&gt;
                              absägen !!!&lt;br /&gt;
&lt;br /&gt;
===mv: Verschieben===&lt;br /&gt;
&lt;br /&gt;
Mit dem Befehl &amp;quot;mv&amp;quot; werden Daten verschoben, folgendes gilt:&lt;br /&gt;
&lt;br /&gt;
 mv          dat1 dat2         &lt;br /&gt;
Die Datei dat1 wird in dat2 umbenannt&lt;br /&gt;
 mv          dat1 /ver1        &lt;br /&gt;
Die Datei dat1 wird nach /ver1 verschoben&lt;br /&gt;
&lt;br /&gt;
Die Parameter und ihre Bedeutung:&lt;br /&gt;
&lt;br /&gt;
      -i                      wenn eine Datei exisitiert wird vor dem&lt;br /&gt;
                              Überschreiben nachgefragt&lt;br /&gt;
      -v                      verbose (geschwätzig)&lt;br /&gt;
      -u                      nur neuere Daten werden bei Bedarf überschrieben&lt;br /&gt;
      -b                      wenn überschrieben werden soll, wird ein Backup&lt;br /&gt;
                              erstellt&lt;br /&gt;
      -S ENDUNG               das Backup bekommt die Endung ENDUNG&lt;br /&gt;
&lt;br /&gt;
===su Benutzer wechseln===&lt;br /&gt;
&lt;br /&gt;
 su -             &lt;br /&gt;
Wechsel zum Rootaccount, wie wenn dieser sich neu anmelden würde. (Bsp: su -)&lt;br /&gt;
&lt;br /&gt;
 su Benutzernamen &lt;br /&gt;
Wechsel der Identität zu Benutzer (gegebenenfalls Passwortabfrage)&lt;br /&gt;
&lt;br /&gt;
 su -c Kommando   &lt;br /&gt;
Kommando wird als rootaccount ausgeführt&lt;br /&gt;
&lt;br /&gt;
==Der Standard Editor vi==&lt;br /&gt;
Der vi ist der Standardeditor in der Unixwelt. Er ist in jedem Unix-Derivat&lt;br /&gt;
enthalten.&lt;br /&gt;
Der Editor hat zwar den schlechten Ruf umständlich zu bedienen zu sein, ist&lt;br /&gt;
jedoch sehr leistungsfähig und systemübergreifend verfügbar. Beim vi handelt es&lt;br /&gt;
sich um einen rein textorientierten Editor, der mittels eigener Kommandos&lt;br /&gt;
gesteuert wird.&lt;br /&gt;
&lt;br /&gt;
Der Editor VIM ist eine weitere Verbesserung von VI und leichter zu bedienen.&lt;br /&gt;
Und unter Ubuntu/Debian mit &amp;quot;apt-get install vim&amp;quot; zu installieren.&lt;br /&gt;
&lt;br /&gt;
===Starten des Editors:===&lt;br /&gt;
&lt;br /&gt;
Der Editorstart erfolgt einfach durch die Eingabe des Kommandos vi mit dem&lt;br /&gt;
Dateinamen der zu editierenden Datei als Parameter.&lt;br /&gt;
Beispiel:        &lt;br /&gt;
 vi sux.txt&lt;br /&gt;
&lt;br /&gt;
===Die Betriebsmodi des vi:===&lt;br /&gt;
&lt;br /&gt;
Ein Umstand, der dem vi den Ruf der komplizierten Bedienbarkeit zugetragen hat,&lt;br /&gt;
sind die unterschiedlichen Betriebsmodi des Editors. Genauer gesagt verfügt der&lt;br /&gt;
vi über drei Betriebsmodi:&lt;br /&gt;
&lt;br /&gt;
====Kommandomodus:====&lt;br /&gt;
&lt;br /&gt;
Innerhalb dieses Modus werden die eingegebenen Zeichen direkt als Befehle des&lt;br /&gt;
Editors interpretiert und ausgeführt. Dabei gibt es weder ein Bereitschaftszeichen&lt;br /&gt;
(Prompt) noch ein Echo (Ausgabe). Der Kommandomodus ist der Modus, in dem&lt;br /&gt;
sich der vi direkt nach seinem Start befindet.&lt;br /&gt;
&lt;br /&gt;
====Zeilenmodus oder Exmodus:====&lt;br /&gt;
&lt;br /&gt;
Dieser Modus ist der einzige Modus mit einem eigenen Bereitschaftszeichen,&lt;br /&gt;
nämlich dem Doppelpunkt (:). Das Prompt wird ebenso wie die Befehlsausgaben&lt;br /&gt;
in der Statuszeile angezeigt.&lt;br /&gt;
&lt;br /&gt;
====Eingabemodus:====&lt;br /&gt;
&lt;br /&gt;
Der Eingabemodus ist derjenige, in welchem der zu bearbeitende Text bearbeitet&lt;br /&gt;
werden kann. Alle hier eingegebenen Zeichen werden als Text für die aktuelle&lt;br /&gt;
Datei interpretiert. Zwischen den unterschiedlichen Modi kann jederzeit&lt;br /&gt;
gewechselt werden. Von Kommandomodus gelangen Sie durch mehere Wege in&lt;br /&gt;
den Eingabemodus. Man kann durch folgende Aktionen wechslen&lt;br /&gt;
&lt;br /&gt;
{| border=1 cellpadding=2&lt;br /&gt;
|i&lt;br /&gt;
|Text vor der aktuellen Cursorposition einfügen&lt;br /&gt;
|-&lt;br /&gt;
|I&lt;br /&gt;
|Text am Zeilenanfang einfügen&lt;br /&gt;
|-&lt;br /&gt;
|a&lt;br /&gt;
|Text hinter der aktuellen Cursorposition einfügen&lt;br /&gt;
|-&lt;br /&gt;
|A&lt;br /&gt;
|Text am Zeilenende einfügen&lt;br /&gt;
|-&lt;br /&gt;
|o&lt;br /&gt;
|Unterhalb der aktuellen Zeile eine neue Zeile einfügen&lt;br /&gt;
|-&lt;br /&gt;
|O&lt;br /&gt;
|Oberhalb der aktuellen Zeile eine neue Zeile einfügen&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Durch das Drücken der ESC - Taste gelangt man in den Kommandomodus zurück.&lt;br /&gt;
&lt;br /&gt;
Im Kommandomodus können Sie durch den Text navigieren und auch den Text&lt;br /&gt;
selbst bearbeiten, z.B ausschneiden, kopieren usw. Dazu sind einige Kommandos&lt;br /&gt;
nötig, von denen die wichtigsten im Folgenden erläutert werden:&lt;br /&gt;
&lt;br /&gt;
 xinux@zero:/$ vi iwas.txt&lt;br /&gt;
&lt;br /&gt;
[[Image:vim.jpg]]&lt;br /&gt;
&lt;br /&gt;
===Benutzen des Kommandomodus===&lt;br /&gt;
====Steuerung des Cursors durch den Text====&lt;br /&gt;
&lt;br /&gt;
Mittels folgender Kommandos bewegt sich der Cursor durch den Text:&lt;br /&gt;
&lt;br /&gt;
{| border=1 cellpadding=2&lt;br /&gt;
|h&lt;br /&gt;
|Cursor ein Zeichen nach links&lt;br /&gt;
|-&lt;br /&gt;
|l&lt;br /&gt;
|Cursor ein Zeichen nach rechts&lt;br /&gt;
|-&lt;br /&gt;
|k&lt;br /&gt;
|Cursor eine Zeile nach oben&lt;br /&gt;
|-&lt;br /&gt;
|j&lt;br /&gt;
|Cursor eine Zeile nach unten&lt;br /&gt;
|-&lt;br /&gt;
|w&lt;br /&gt;
|Cursor ein Wort nach rechts&lt;br /&gt;
|-&lt;br /&gt;
|b&lt;br /&gt;
|Cursor ein Wort nach links&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Alle diese Kommandos können mit einem vorgestellten Wiederholungsfaktor&lt;br /&gt;
arbeiten. Der Befehl 3w verschiebt demnach den Cursor um 3 Wörter nach rechts.&lt;br /&gt;
&lt;br /&gt;
====Angaben zur Positionierung====&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{| border=1 cellpadding=2&lt;br /&gt;
|STRG+U&lt;br /&gt;
|1⁄2 Bildschirmseite nach oben&lt;br /&gt;
|-&lt;br /&gt;
|STRG+D&lt;br /&gt;
|1⁄2 Bildschirmseite nach unten&lt;br /&gt;
|-&lt;br /&gt;
|STRG+B&lt;br /&gt;
|1 Bildschirmseite nach oben&lt;br /&gt;
|-&lt;br /&gt;
|STRG+F&lt;br /&gt;
|1 Bildschirmseite nach unten&lt;br /&gt;
|-&lt;br /&gt;
|/Ausdruck&lt;br /&gt;
|Sucht den Ausdruck (vorwärts) Weitersuchen mit n , N&lt;br /&gt;
|-&lt;br /&gt;
|?Ausdruck&lt;br /&gt;
|Sucht den Ausdurck (rückwärts) Weitersuchen mit n , N&lt;br /&gt;
|-&lt;br /&gt;
|0&lt;br /&gt;
|Zeilenanfang&lt;br /&gt;
|-&lt;br /&gt;
|$&lt;br /&gt;
|Zeilenende&lt;br /&gt;
|-&lt;br /&gt;
|w&lt;br /&gt;
|Nächstes Wort&lt;br /&gt;
|-&lt;br /&gt;
|b&lt;br /&gt;
|Vorheriges Wort&lt;br /&gt;
|-&lt;br /&gt;
|fc&lt;br /&gt;
|Auf das Zeichen c springen. c steht für ein beliebiges Zeichen&lt;br /&gt;
|-&lt;br /&gt;
|G&lt;br /&gt;
|Letzte Zeile der Datei&lt;br /&gt;
|-&lt;br /&gt;
|ng&lt;br /&gt;
|n-te Zeile der Datei&lt;br /&gt;
|-&lt;br /&gt;
|H&lt;br /&gt;
|Anfang der Bildschirmseite&lt;br /&gt;
|-&lt;br /&gt;
|L&lt;br /&gt;
|Ende der Bildschirmseite&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
====Befehle zur Textbearbeitung -&amp;gt; Was soll geschehen====&lt;br /&gt;
&lt;br /&gt;
{| Border=1 Cellpadding=2&lt;br /&gt;
|x&lt;br /&gt;
|Löscht Zeichen&lt;br /&gt;
|-&lt;br /&gt;
|d&lt;br /&gt;
|Löschen und in den Puffer laden&lt;br /&gt;
|-&lt;br /&gt;
|c&lt;br /&gt;
|Ändern&lt;br /&gt;
|-&lt;br /&gt;
|y&lt;br /&gt;
|In den Puffer laden&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
====Weitere wichtige Befehle:====&lt;br /&gt;
&lt;br /&gt;
{| Border=1 Cellpadding=2&lt;br /&gt;
|p&lt;br /&gt;
|Aus dem Puffer einfügen&lt;br /&gt;
|-&lt;br /&gt;
|u&lt;br /&gt;
|Undo, macht den letzten Befehl rückgängig&lt;br /&gt;
|-&lt;br /&gt;
|STRG+R&lt;br /&gt;
|Redo, macht den letzten Undo rückgängig&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
===Zeilen- oder Exmodus===&lt;br /&gt;
&lt;br /&gt;
Wie schon erwähnt wird der Zeilen oder Exmodus durch einen : eingeleitet.&lt;br /&gt;
Es folgen einige Beispiele.&lt;br /&gt;
&lt;br /&gt;
Befehle zum Speichern und Beenden:&lt;br /&gt;
&lt;br /&gt;
 :w          Schreibt Datei&lt;br /&gt;
 :w Datei2   Schreibt eine Kopie in Datei2&lt;br /&gt;
 :w !        Schreibt Datei (übergehe Schreibschutz)&lt;br /&gt;
 :w ! Datei2 Schreibt eine Kopie in Datei2 (übergehe Schreibschutz)&lt;br /&gt;
 :q          Schließe Datei&lt;br /&gt;
 :q!         Schließe Datei (verwerfe Änderungen)&lt;br /&gt;
 :wq         Schreibe Datei und beende Editor&lt;br /&gt;
 :wq!        Schreibe Datei und beende Editor (übergehe Schreibschutz)&lt;br /&gt;
 :q!         Schließe Datei (verwerfe Änderungen)&lt;br /&gt;
 :h          Hilfe anzeigen, durch drücken von :q Beenden der Hilfe&lt;br /&gt;
 :e Datei3   Editiere Datei3&lt;br /&gt;
 :e #        Editere vorhergehende Datei&lt;br /&gt;
 :1,3co9     Kopiere von der ersten bis zu dritten Zeile &lt;br /&gt;
             und füge den Inhalt unterhalb der neunte Zeile ein.&lt;br /&gt;
&lt;br /&gt;
Interaktionen mit Unix:&lt;br /&gt;
&lt;br /&gt;
 :r Datei4   Fügt Inhalt der Datei4 nach dem Cursor ein&lt;br /&gt;
 :r ! Befehl Fügt Ausgabe des Befehls nach dem Cursor ein&lt;br /&gt;
 :! Befehl   Führt den Befehl aus&lt;br /&gt;
 :sh         Starte Subshell -&amp;gt; mit exit kehrt man wieder zurück&lt;br /&gt;
             Eingabemodus zurück&lt;br /&gt;
&lt;br /&gt;
====Ersetzen von Textteilen====&lt;br /&gt;
&lt;br /&gt;
Die grundsätzliche Syntax lautet:&lt;br /&gt;
&lt;br /&gt;
 :[Zeilennummer,Zeilennummer]s/Muster/Ersetzung/[gc]&lt;br /&gt;
&lt;br /&gt;
 :s/worf/kirn/              der erste worf wird in der aktuellen Zeile durch kirn ersetzt&lt;br /&gt;
 :1,9s/worf/kirn/g          von der 1. bis zur 9. Zeile werden alle worf durch kirn ersetzt&lt;br /&gt;
 :1,$s/worf/kirn/           von der ersten bis zur letzten Zeile ersetze ersten worf durch&lt;br /&gt;
                            kirn&lt;br /&gt;
 :.,$s/worf/kirn/g          von der aktuellen bis zur letzten Zeile ersetze alle worf durch&lt;br /&gt;
                            kirn&lt;br /&gt;
 :1,.s/worf/kirn/c          von der 1. bis zur aktuellen Zeile ersetze worf durch kirn, frage&lt;br /&gt;
                            aber nach&lt;br /&gt;
 :1,$s/^worf/kirn/          von der ersten bis zur letzten Zeile ersetze worf am&lt;br /&gt;
                            Zeilenanfang durch kirn&lt;br /&gt;
 :4,$s/worf$/kirn/          von der 4. bis zur letzten Zeile ersetze worf am Zeilenende&lt;br /&gt;
                            durch kirn&lt;br /&gt;
 :1,$s/^#//                 lösche alle Kommentarzeichen&lt;br /&gt;
 :1,$s/^.orf/kirn/           ersetze alles was am Zeilenanfang ein beliebiges Zeichen hat&lt;br /&gt;
                            gefolgt von einem orf durch kirn&lt;br /&gt;
 :1,$s/^[A-Z]orf/kirn/g     suche nach einem Großbuchstaben am Anfang der Zeile&lt;br /&gt;
                            gefolgt von einem orf und ersetze durch kirn&lt;br /&gt;
 :1,$s/^M[ae][iy]e*r/kirn/  suche alles, was am Anfang der Zeile ein großes M enthält,&lt;br /&gt;
                            gefolgt von einem a oder e , gefolgt von einem i oder y ,&lt;br /&gt;
                            gefolgt von einem e , welches 0 oder N mal vorkommen kann,&lt;br /&gt;
                            gefolgt von einem r und ersetze es durch kirn&lt;br /&gt;
&lt;br /&gt;
==Reguläre Ausdrücke==&lt;br /&gt;
&lt;br /&gt;
{| Border=1 Cellpadding=2&lt;br /&gt;
|c&lt;br /&gt;
|Ein einzelner Buchstabe passt auf sich selbst&lt;br /&gt;
|-&lt;br /&gt;
|.&lt;br /&gt;
|Ein Punkt passt auf jedes Zeichen außer auf das Zeilenende&lt;br /&gt;
|-&lt;br /&gt;
|*&lt;br /&gt;
|Das dem Operator * vorangehende Muster kann 0 oder öfter vorkommen&lt;br /&gt;
|-&lt;br /&gt;
|^&lt;br /&gt;
|(Caret) passt auf den Zeilenanfang&lt;br /&gt;
|-&lt;br /&gt;
|$&lt;br /&gt;
|Passt auf das Zeilenende&lt;br /&gt;
|-&lt;br /&gt;
|\&lt;br /&gt;
|Das folgende Sonderzeichen wird entwertet&lt;br /&gt;
|-&lt;br /&gt;
|[...]&lt;br /&gt;
|Passt auf &amp;quot;genau&amp;quot; eins in [...] angebenen Zeichen&lt;br /&gt;
|-&lt;br /&gt;
|[^...]&lt;br /&gt;
|Passt auf &amp;quot;genau&amp;quot; ein Zeichen welches nicht in [...] angebenen ist&lt;br /&gt;
|-&lt;br /&gt;
|\&amp;lt;&lt;br /&gt;
|Passt auf den Wortanfang&lt;br /&gt;
|-&lt;br /&gt;
|\&amp;gt;&lt;br /&gt;
|Passt auf das Wortende&lt;br /&gt;
|-&lt;br /&gt;
|\+&lt;br /&gt;
|Das dem Operator \+ vorangehende Muster kann 1 oder öfter vorkommen&lt;br /&gt;
|-&lt;br /&gt;
|&amp;amp;&lt;br /&gt;
|Setzt das gefunden Suchmuster ein&lt;br /&gt;
|-&lt;br /&gt;
|\(...\)&lt;br /&gt;
|Speichert den Text auf den das Suchmuster passt zur späteren Verwendung&lt;br /&gt;
|-&lt;br /&gt;
|\n&lt;br /&gt;
|Setzt das vorangehende, mit \(...\) Gefundene wieder ein&lt;br /&gt;
|-&lt;br /&gt;
|(...)&lt;br /&gt;
|Gruppiert Auswahlmöglichkeiten&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;nowiki&amp;gt;|&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
|Trennt Auswahlmöglichkeiten&lt;br /&gt;
|-&lt;br /&gt;
|\b&lt;br /&gt;
|Passt auf den Anfang oder das Ende eines Wortes&lt;br /&gt;
|-&lt;br /&gt;
|\B&lt;br /&gt;
|Symbolisiert den Raum innerhalb eines Wortes&lt;br /&gt;
|-&lt;br /&gt;
|\w&lt;br /&gt;
|Passt auf alle alphanumerischen Zeichen [A-Za-z0-9]&lt;br /&gt;
|-&lt;br /&gt;
|\W&lt;br /&gt;
|Passt auf alle nichtalphanumerischen Zeichen [^A-Za-z0-9]&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Die Rangfolge der Operatoren(von der höchsten zur niedrigsten)&lt;br /&gt;
:(, ), ?, *, + | .&lt;br /&gt;
&lt;br /&gt;
Die anderen Operatoren sind mit den anderen Buchstaben gleichrangig.&lt;br /&gt;
&lt;br /&gt;
===Beispiel zum Suchen===&lt;br /&gt;
&lt;br /&gt;
 Suchmuster               Passt auf&lt;br /&gt;
 ^Tuxer                   Tuxer am Zeilenanfang&lt;br /&gt;
 [tT]uxer                 Tuxer oder tuxer&lt;br /&gt;
 80[23]?86                8086, 80286 oder 80386&lt;br /&gt;
&lt;br /&gt;
===grep===&lt;br /&gt;
&lt;br /&gt;
Mit grep ist es möglich, in Dateien nach regulären Ausdrücken zu suchen. Wenn&lt;br /&gt;
eine Übereinstimmung gefunden wird, wird die komplette Zeile auf die&lt;br /&gt;
Standardausgabe geschrieben. grep kann auch von STDIN lesen.Es ist&lt;br /&gt;
empfehlenswert, sich anzugwöhnen ,das Suchmuster in Anführungszeichen zu&lt;br /&gt;
schreiben. Es gibt 3 Arten fgrep = fastgrep , grep und egrep egrep&lt;br /&gt;
&lt;br /&gt;
Beispiel:&lt;br /&gt;
&lt;br /&gt;
 root@zero:~# cat text&lt;br /&gt;
 quatsch&lt;br /&gt;
 quatsch&lt;br /&gt;
 quatsch&lt;br /&gt;
 wichtig&lt;br /&gt;
 quatsch&lt;br /&gt;
 root@zero:~# grep wichtig text&lt;br /&gt;
 wichtig&lt;br /&gt;
 root@zero:~# &lt;br /&gt;
&lt;br /&gt;
 -c                   meldet nur die Gesamtzahl der Fundstellen&lt;br /&gt;
 -v                   zeigt nur Zeilen, die »Ausdruck« nicht enthalten&lt;br /&gt;
 -i                   ignoriert Groß- und Kleinschreibung&lt;br /&gt;
 -l                    meldet nur Dateinamen mit Fundstellen&lt;br /&gt;
 -n                   listet Zeilennummern zu jeder Fundstelle&lt;br /&gt;
 -f                   Dateiname »Dateiname« enthält die Such-Ausdrücke&lt;br /&gt;
 -E                   ist ein erweiterter regulärer Ausdruck (egrep)&lt;br /&gt;
 -F                   (Muster, Ausdruck) ist ein Muster (String) (fgrep)&lt;br /&gt;
 -b                   listet auch die Position der Fundstellen&lt;br /&gt;
 -C    Anzahl         Anzahl von Zeilen werden nach der Fundstelle ausgegeben&lt;br /&gt;
 -B    Anzahl         Anzahl von Zeilen werden vor der Fundstelle ausgegeben&lt;br /&gt;
 -r                   Durchsucht Verzeichnisse rekursiv&lt;br /&gt;
&lt;br /&gt;
==Useridendifikation==&lt;br /&gt;
===/etc/passwd===&lt;br /&gt;
====Beschreibung====&lt;br /&gt;
passwd ist eine ASCII-Datei, die eine Liste der Benutzer des Systems und deren&lt;br /&gt;
Passwörter enthält. Die Passwortdatei sollte für alle Benutzer lesbar sein, was für&lt;br /&gt;
dieVerschlüsselung notwendig ist; aber nur vom Superuser beschreibbar. Wenn&lt;br /&gt;
Sie eine neue Kennung einrichten, lassen Sie das Passwort-Feld in der Datei frei&lt;br /&gt;
und benutzen Sie passwd(1), um dem System ein Passwort für die neue Kennung&lt;br /&gt;
mitzuteilen.&lt;br /&gt;
&lt;br /&gt;
Die Datei /etc/passwd enthält einen Eintrag pro Zeile mit dem Format:&lt;br /&gt;
login_name:passwd:UID:GID:user_name:directory:shell&lt;br /&gt;
====Die Bedeutung der Felder:====&lt;br /&gt;
# login_name Kennung des Benutzers auf dem System.&lt;br /&gt;
# password   Hier steht bei Shadowsystemen ein x. Die Passwörter sind in der Datei /etc/shadow&lt;br /&gt;
# UID        Die numerische Benutzernummer.&lt;br /&gt;
#  GID        Die numerische Gruppennummer des Benutzers.&lt;br /&gt;
# user_name Ein optionales Kommentarfeld, oft benutzt für den vollen Namen des Benutzers und weitere Informationen (Telefon, Raum-Nummer etc.).&lt;br /&gt;
# directory  Das Heimatverzeichnis $HOME des Benutzers.&lt;br /&gt;
# shell      Das Programm, das beim Einloggen gestartet werden soll (falls nicht nötig, benutzen Sie /bin/bash).&lt;br /&gt;
&lt;br /&gt;
===/etc/group===&lt;br /&gt;
====Beschreibung====&lt;br /&gt;
etc/group ist eine ASCII Datei, die Gruppen definiert, zu denen Benutzer&lt;br /&gt;
gehören. Es gibt nur einen Eintrag pro Zeile; jede Zeile hat folgendes Format:&lt;br /&gt;
         GruppenName:Passwort:GruppenKennung:BenutzerListe&lt;br /&gt;
Beschreibung der Felder:&lt;br /&gt;
#     GruppenName      Die Bezeichnung der Gruppe.&lt;br /&gt;
#     Passwort         Das (verschlüsselte) Gruppen-Passwort. Wenn dieses Feld leer ist, wird kein Passwort benötigt.&lt;br /&gt;
#     GruppenKennung Die numerische Identifikation der Gruppe.&lt;br /&gt;
#     BenutzerListe    Alle Namen der Mitglieder, getrennt durch Kommas.&lt;br /&gt;
&lt;br /&gt;
===/etc/shadow===&lt;br /&gt;
====Beschreibung====&lt;br /&gt;
shadow beinhaltet Informationen zu den verschlüsselten Passwörten, zu den&lt;br /&gt;
Benutzerzugängen und weitere Informationen zur Laufzeit der Passwörter.&lt;br /&gt;
 Name:Passwort:Letzte Änderung:Mintage:Maxtage:Warntage:Inaktiv:Ablauf&lt;br /&gt;
#    Der Loginname&lt;br /&gt;
#    verschlüsseltes Passwort &lt;br /&gt;
&amp;lt;nowiki&amp;gt;*&amp;lt;/nowiki&amp;gt; bedeutet Benutzer kann sich nicht einlogen&lt;br /&gt;
! bedeutet Benutzer hat kein Passwort gesetzt&lt;br /&gt;
#    Tage seit dem 1 Januar 1970 an dem das Passwort letztmals geändert wurde&lt;br /&gt;
#    Tage, die das Passwort behalten werden muss, bevor es wieder geändert werden kann&lt;br /&gt;
#     Die Anzahl der Tage, nach denen der Benutzer das Passwort wieder ändern muss&lt;br /&gt;
#    Anzahl der Tage bevor das Passwort abläuft und der Benutzer gewarnt wird&lt;br /&gt;
#    Wenn der Zugang diese Anzahl von Tagen nicht benutzt wird, wird der Zugang gesperrt&lt;br /&gt;
#    Tag seit dem 1 Januar 1970, an dem der Zugang gesperrt wird&lt;br /&gt;
#    Reserviertes Feld&lt;br /&gt;
&lt;br /&gt;
Die Datei sollte aus Sicherheitgründen nicht für einen normalen Benutzer lesbar&lt;br /&gt;
sein.&lt;br /&gt;
&lt;br /&gt;
==Programme zur Userverwaltung==&lt;br /&gt;
===useradd===&lt;br /&gt;
User anlegen&lt;br /&gt;
 root@zero:~# useradd -m -u 1011 -g users -G admin -d /home/erwin -s /bin/bash -c &amp;quot;Erwin Lehman&amp;quot;  erwin&lt;br /&gt;
{| border=1 cellpadding=2&lt;br /&gt;
|&amp;quot;-m&amp;quot;&lt;br /&gt;
|Lege Homedirectory an&lt;br /&gt;
|-&lt;br /&gt;
|&amp;quot;-u 1011&amp;quot;&lt;br /&gt;
|Userid wird zugeordnet&lt;br /&gt;
|-&lt;br /&gt;
|&amp;quot;-g users&amp;quot;&lt;br /&gt;
|Primäre Gruppe wird zugeordnet&lt;br /&gt;
|-&lt;br /&gt;
|&amp;quot;-G admin&amp;quot;&lt;br /&gt;
|Sekunbdäre Gruppe wird zugeordnet&lt;br /&gt;
|-&lt;br /&gt;
|&amp;quot;-d /home/erwin/&amp;quot;&lt;br /&gt;
|Name des Homedirectory&lt;br /&gt;
|-&lt;br /&gt;
|&amp;quot;-s /bin/bash&amp;quot;&lt;br /&gt;
|Bash wird zugeordnet&lt;br /&gt;
|- &lt;br /&gt;
|&amp;quot;-c Erwin Lehman&amp;quot;&lt;br /&gt;
|Kommentarfeld&lt;br /&gt;
|-&lt;br /&gt;
|&amp;quot;erwin&amp;quot; &lt;br /&gt;
|Name des Users&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Defaulteinstellungen anzeigen&lt;br /&gt;
 root@zero:~# useradd -D&lt;br /&gt;
 GROUP=100&lt;br /&gt;
 HOME=/home&lt;br /&gt;
 INACTIVE=-1&lt;br /&gt;
 EXPIRE=&lt;br /&gt;
 SHELL=/bin/sh&lt;br /&gt;
 SKEL=/etc/skel&lt;br /&gt;
 CREATE_MAIL_SPOOL=no&lt;br /&gt;
&lt;br /&gt;
Defaulteinstellungen ändern&lt;br /&gt;
 useradd -D -s /bin/bash&lt;br /&gt;
&lt;br /&gt;
Konfigurationsdatei&lt;br /&gt;
 root@zero:~# cat /etc/default/useradd &lt;br /&gt;
 SHELL=/bin/bash&lt;br /&gt;
 GROUP=100&lt;br /&gt;
 HOME=/home&lt;br /&gt;
 INACTIVE=-1&lt;br /&gt;
 EXPIRE=&lt;br /&gt;
 SKEL=/etc/skel&lt;br /&gt;
 CREATE_MAIL_SPOOL=no&lt;br /&gt;
&lt;br /&gt;
===usermod===&lt;br /&gt;
User modifizieren&lt;br /&gt;
 root@zero:~# usermod -l fritz -s /bin/sh -G admin,video erwin&lt;br /&gt;
{| border=1 cellpadding=2&lt;br /&gt;
|&amp;quot;-l fritz&amp;quot;&lt;br /&gt;
|Neuer Username&lt;br /&gt;
|-&lt;br /&gt;
|&amp;quot;-s /bin/sh&amp;quot;&lt;br /&gt;
|Neue Shell&lt;br /&gt;
|-&lt;br /&gt;
|&amp;quot;-G admin, video&amp;quot;&lt;br /&gt;
|Sekunbdäre Gruppen werden zugeordnet&lt;br /&gt;
|-&lt;br /&gt;
|&amp;quot;erwin&amp;quot; &lt;br /&gt;
|Name des Users&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
===userdel===&lt;br /&gt;
User inklusive Homedirectory löschen&lt;br /&gt;
 root@zero:~# userdel -r fritz&lt;br /&gt;
&lt;br /&gt;
===passwd===&lt;br /&gt;
Rootpasswort ändern&lt;br /&gt;
 root@zero:~# passwd &lt;br /&gt;
 Geben Sie ein neues UNIX Passwort ein:'''sysadm''' &lt;br /&gt;
 Geben Sie das neue UNIX Passwort erneut ein:'''sysadm''' &lt;br /&gt;
 passwd: Passwort erfolgreich geändert&lt;br /&gt;
&lt;br /&gt;
Passwort von tux ändern&lt;br /&gt;
 root@zero:~# passwd tux&lt;br /&gt;
 Geben Sie ein neues UNIX Passwort ein:'''suxer''' &lt;br /&gt;
 Geben Sie das neue UNIX Passwort erneut ein:'''suxer'''&lt;br /&gt;
 passwd: Passwort erfolgreich geändert&lt;br /&gt;
&lt;br /&gt;
Minimale und Maximale Gültigkeit des Passwortes von tux festlegen&lt;br /&gt;
 root@zero:~# passwd -n 5 -x 120 tux&lt;br /&gt;
&lt;br /&gt;
===groupadd===&lt;br /&gt;
 root@zero:~# groupadd -f -g 2001 xinuxer&lt;br /&gt;
{| border=1 cellpadding=2&lt;br /&gt;
|&amp;quot;-f&amp;quot;&lt;br /&gt;
|Überschreibe bestehende Gruppe&lt;br /&gt;
|-&lt;br /&gt;
|&amp;quot;-g 2001&amp;quot;&lt;br /&gt;
|GID der Gruppe&lt;br /&gt;
|-&lt;br /&gt;
|&amp;quot;xinuxer&amp;quot; &lt;br /&gt;
|Name des Gruppe&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==chmod==&lt;br /&gt;
Die Syntax des Befehls chmod lautet:&lt;br /&gt;
&lt;br /&gt;
'''chmod''' WerWieWas [,WerWieWas,.....] Dateiliste&lt;br /&gt;
&lt;br /&gt;
oder&lt;br /&gt;
&lt;br /&gt;
'''chmod''' Oktalzahl Dateiliste&lt;br /&gt;
&lt;br /&gt;
Durch WerWieWas bzw. Oktalzahl wird die Rechtetabelle definiert. Innerhalb von&lt;br /&gt;
WerWieWas darf es kein Leerzeichen geben. Wer bezeichnet den Benutzerkreis,&lt;br /&gt;
dem man Rechte gibt, Wie die Art, in der die Rechte gegeben werden und Was die&lt;br /&gt;
Rechte als solche. Im einzelnen können folgende Kürzel benutzt werden:&lt;br /&gt;
&lt;br /&gt;
Für Wer kann eines der folgenden Kürzel oder eine Kombination davon stehen:&lt;br /&gt;
 u                   (user) Rechte für den Dateibesitzer&lt;br /&gt;
 g                   (group) Rechte für die Gruppe&lt;br /&gt;
 o                   (others) Rechte für alle anderen Benutzer&lt;br /&gt;
 a                   (all) Rechte für alle Benutzer&lt;br /&gt;
Für Wie steht eines der folgenden Kürzel:&lt;br /&gt;
 +                   Die Rechte werden zu den vorhandenen zusätzlich vergeben&lt;br /&gt;
 -                   Die im Folgenden genannten Rechte werden entzogen&lt;br /&gt;
 =                   Die im Folgenden genannten Rechte ersetzen die bisherigen&lt;br /&gt;
Für Was steht eines der folgenden Kürzel:&lt;br /&gt;
 r                   (read) lesen&lt;br /&gt;
 w                   (write) schreiben&lt;br /&gt;
 x                   (execute) ausführen&lt;br /&gt;
oder diese Sonderformen&lt;br /&gt;
 s                   (usersbit) Programm läuft unter der UID des Besitzers&lt;br /&gt;
 s                   (groupsbit)Programm läuft unter der GID des GRUPPE&lt;br /&gt;
 t                   (stickybit) Dateien im Verzeichnis darf nur Besitzer löschen&lt;br /&gt;
&lt;br /&gt;
===Beispiel===&lt;br /&gt;
Setze für alle Schreib- und Leserecht&lt;br /&gt;
 xinux@zero:~$ chmod a=rw test &lt;br /&gt;
 xinux@zero:~$ ls -l test &lt;br /&gt;
 -rw-rw-rw- 1 xinux xinux 0 2009-06-16 12:01 test&lt;br /&gt;
 xinux@zero:~$ &lt;br /&gt;
&lt;br /&gt;
Erteile Besitzer Ausführungsrecht&lt;br /&gt;
 xinux@zero:~$ chmod u+x test ; ls -l test &lt;br /&gt;
 -rwxrw-rw- 1 xinux xinux 0 2009-06-16 12:01 test&lt;br /&gt;
 xinux@zero:~$ &lt;br /&gt;
&lt;br /&gt;
===chmod oktale Schreibweise===&lt;br /&gt;
 Specialrights        User           Group         Other&lt;br /&gt;
 usbit gsbit sticky    r    w   x     r   w   x     r   w   x&lt;br /&gt;
   1     1      1      1    1   1     1   1   1     1   1   1&lt;br /&gt;
   0     0      0      0    0   0     0   0   0     0   0   0&lt;br /&gt;
 Oktale Wertigkeit pro Recht&lt;br /&gt;
   4     2       1     4    2   1     4   2   1     4   2   1&lt;br /&gt;
&lt;br /&gt;
===Beispiele===&lt;br /&gt;
 xinux@zero:~$ chmod 751 test ; ls -l test&lt;br /&gt;
 -rwxr-x--x 1 xinux xinux 0 2009-06-16 12:01 test&lt;br /&gt;
 xinux@zero:~$ &lt;br /&gt;
&lt;br /&gt;
 xinux@zero:~$ chmod 4770 test ; ls -l test&lt;br /&gt;
 -rwsrwx--- 1 xinux xinux 0 2009-06-16 12:01 test&lt;br /&gt;
 xinux@zero:~$ &lt;br /&gt;
&lt;br /&gt;
 xinux@zero:~$ chmod 0 test ; ls -l test &lt;br /&gt;
 ---------- 1 xinux xinux 0 2009-06-16 12:01 test&lt;br /&gt;
&lt;br /&gt;
===chmod Optionen===&lt;br /&gt;
 -c   (changes) es werden nur die Dateien angezeigt, deren Zugriffsrechte tatsächlich verändert werden&lt;br /&gt;
 -f   (silent, quiet) Fehlermeldungen wegen fehlgeschlagener Änderungsversuche werden unterdrückt&lt;br /&gt;
 -v   (verbose) alle Aktionen werden angezeigt&lt;br /&gt;
 -R   (recursive) die Zugriffsrechte aller Dateien in den Unterverzeichnissen werden ebenfalls geändert&lt;br /&gt;
&lt;br /&gt;
Theoretisch sind alle Kombinationen der Zugriffsrechte denkbar, aber der&lt;br /&gt;
Eigentümer einer Datei darf diese immer lesen, selbst wenn das Lesebit nicht&lt;br /&gt;
gesetzt ist. Genauso macht es wenig Sinn, eine gewöhnliche Textdatei als&lt;br /&gt;
ausführbar zu setzen; die Shell wird damit nichts anfangen können. Ein x für ein&lt;br /&gt;
Verzeichnis gibt an, dass in dieses gewechselt werden kann.&lt;br /&gt;
&lt;br /&gt;
Rechte sind verbindlich&lt;br /&gt;
&lt;br /&gt;
Interessant ist auch ein Konstrukt folgender Art&lt;br /&gt;
 -rwx---rwx&lt;br /&gt;
&lt;br /&gt;
das angibt, dass mit der Datei alles angestellt werden kann, außer durch Nutzer der&lt;br /&gt;
Gruppe. Versucht irgend jemand, der nicht der Gruppe des Eigentümers angehört,&lt;br /&gt;
die Datei zu modifizieren, wird ihm dies gelingen, einem Gruppenmitglied bleibt&lt;br /&gt;
dies versagt, obwohl er ja gleichzeitig ein &amp;quot;Anderer&amp;quot; ist. D.h. die Rechte der&lt;br /&gt;
Gruppe sind verbindlicher, als die Rechte der anderen!&lt;br /&gt;
&lt;br /&gt;
===Bedeutungen der Zugriffsarten===&lt;br /&gt;
====Dateien====&lt;br /&gt;
* r: Der Inhalt der Datei kann gelesen und damit auch kopiert werden. &lt;br /&gt;
 root@zero:~# cat test&lt;br /&gt;
 Dies ist eine Testdatei&lt;br /&gt;
  &lt;br /&gt;
 root@zero:~# cp test backup&lt;br /&gt;
&lt;br /&gt;
* w: Der Inhalt der Datei darf verändert werden. Ob die Datei gelöscht werden kann ist&lt;br /&gt;
keine Eigenschaft der Datei, sondern des Verzeichnisses, indem sich die Datei befindet.&lt;br /&gt;
 root@zero:~# cat &amp;gt; test&lt;br /&gt;
 Hier steht jetzt was anderes&lt;br /&gt;
 ^C&lt;br /&gt;
 root@zero:~# cat test&lt;br /&gt;
 Hier steht jetzt was anderes&lt;br /&gt;
  &lt;br /&gt;
 xinux@zero:~$ ls -ld verzeichnis/&lt;br /&gt;
 dr-xr-xr-x 2 xinux xinux 4096 2009-06-18 11:16 verzeichnis/&lt;br /&gt;
 xinux@zero:~/verzeichnis$ rm text&lt;br /&gt;
 rm: Entfernen von „text“ nicht möglich: Permission denied&lt;br /&gt;
&lt;br /&gt;
* x: Ausführrecht für Programme und Skripte&lt;br /&gt;
 xinux@zero:~$ ./programm&lt;br /&gt;
 -bash: ./programm: Permission denied&lt;br /&gt;
 xinux@zero:~$ chmod +x programm&lt;br /&gt;
 xinux@zero:~$ ./programm&lt;br /&gt;
 Test&lt;br /&gt;
  test&lt;br /&gt;
&lt;br /&gt;
====Verzeichnisse====&lt;br /&gt;
* r: Die Einträge in dem Verzeichnis sind lesbar.&lt;br /&gt;
Leserecht von verzeichnis/ entziehen&lt;br /&gt;
 xinux@zero:~$ chmod a-r verzeichnis/&lt;br /&gt;
 xinux@zero:~$ ls verzeichnis/&lt;br /&gt;
 ls: Öffnen von Verzeichnis verzeichnis/ nicht möglich: Permission denied&lt;br /&gt;
Leserecht für Benutzer und Gruppe vergeben&lt;br /&gt;
 xinux@zero:~$ chmod a+r verzeichnis/&lt;br /&gt;
 xinux@zero:~$ ls verzeichnis/&lt;br /&gt;
 text&lt;br /&gt;
&lt;br /&gt;
* w: Die Einträge in dem Verzeichnis können geändert werden. &lt;br /&gt;
Neue Datei erstellen&lt;br /&gt;
 xinux@zero:~$ touch neu&lt;br /&gt;
 xinux@zero:~$ ls neu&lt;br /&gt;
 neu&lt;br /&gt;
&lt;br /&gt;
Datei löschen&lt;br /&gt;
 xinux@zero:~$ rm neu&lt;br /&gt;
 xinux@zero:~$ ls neu&lt;br /&gt;
 ls: Zugriff auf neu nicht möglich: No such file or directory&lt;br /&gt;
&lt;br /&gt;
* x: Der Name des Verzeichnisses kann in einem Pfadnamen erscheinen.&lt;br /&gt;
Verzeichnis ohne x Recht&lt;br /&gt;
 xinux@zero:~$ chmod a-x verzeichnis/&lt;br /&gt;
Wechseln in Verzeichnis mangels x-Recht nicht möglich&lt;br /&gt;
 xinux@zero:~$ cd verzeichnis/&lt;br /&gt;
 -bash: cd: verzeichnis/: Permission denied&lt;br /&gt;
x-Recht vergeben&lt;br /&gt;
 xinux@zero:~$ chmod a+x verzeichnis/&lt;br /&gt;
damit Wechsel in Verzeichnis möglich&lt;br /&gt;
 xinux@zero:~$ cd verzeichnis/&lt;br /&gt;
 xinux@zero:~/verzeichnis$ pwd&lt;br /&gt;
 /home/xinux/verzeichnis&lt;br /&gt;
&lt;br /&gt;
====umask====&lt;br /&gt;
Neue Dateien und Verzeichnisse werden mit ein und denselben Zufriffsrechten erzeugt.&lt;br /&gt;
 xinux@zero:~$ mkdir text&lt;br /&gt;
 xinux@zero:~$ touch textdat&lt;br /&gt;
 xinux@zero:~$ ls -ld text*&lt;br /&gt;
 drwxr-xr-x 2 xinux xinux 4096 2009-06-18 11:37 text&lt;br /&gt;
 -rw-r--r-- 1 xinux xinux    0 2009-06-18 11:37 textdat&lt;br /&gt;
&lt;br /&gt;
Zuständig für dieses Verhalten ist die sogenannte umask, die oft in der Datei&lt;br /&gt;
/etc/profile auf den Wert 022 voreingestellt ist. Zusätzlich wird noch eine&lt;br /&gt;
Maximalmaske benötigt, die sich für Verzeichnisse und andere Dateien&lt;br /&gt;
unterscheidet. Die bei der Erzeugung gesetzten Rechte entstehen nun, indem von&lt;br /&gt;
der Maximalmaske der durch die umask vorgegebene Wert subtrahiert wird:&lt;br /&gt;
&lt;br /&gt;
{| border=1 cellpadding=2&lt;br /&gt;
!&lt;br /&gt;
! Dateien&lt;br /&gt;
! Verzeichnisse&lt;br /&gt;
|-&lt;br /&gt;
| Systemvorgabe&lt;br /&gt;
| 666&lt;br /&gt;
| 777&lt;br /&gt;
|-&lt;br /&gt;
| -umask&lt;br /&gt;
| 022&lt;br /&gt;
| 022&lt;br /&gt;
|-&lt;br /&gt;
| Ergebnis&lt;br /&gt;
| 644&lt;br /&gt;
| 755&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
 xinux@zero:~$ grep umask /etc/profile&lt;br /&gt;
 umask 022&lt;br /&gt;
&lt;br /&gt;
==Gruppenzugehörigkeit==&lt;br /&gt;
===newgrp===&lt;br /&gt;
Ändert die Gruppenzugehörigkeit eines Benutzers auf die angegebene Gruppe. Wenn keine Gruppe angegeben wird, wird die &lt;br /&gt;
Anmeldegruppe des Benutzers verwendet. Die neue Gruppe wird anschließend fü Zugriffskontrollen verwendet.&lt;br /&gt;
&lt;br /&gt;
 newgrp Gruppenname&lt;br /&gt;
&lt;br /&gt;
 root@zero:~# newgrp hacker&lt;br /&gt;
 root@zero:~# id&lt;br /&gt;
 uid=0(root) gid=1006(hacker) Gruppen=0(root),1006(hacker)&lt;br /&gt;
&lt;br /&gt;
===chgrp===&lt;br /&gt;
Verändert die Besitzugehörigkeit zu der angegebenen Gruppe&lt;br /&gt;
&lt;br /&gt;
 chgrp [Optionen] Gruppe Datei(en)&lt;br /&gt;
&lt;br /&gt;
Optionen:&lt;br /&gt;
 -c Zeigt Veränderungen an&lt;br /&gt;
 -f Unterdrückt die meisten Fehlermeldungen&lt;br /&gt;
 -R Verändert Dateien und Verzeichnisse rekursiv&lt;br /&gt;
 -v Gibt geschwätzige Ausgabe aus.&lt;br /&gt;
&lt;br /&gt;
 root@zero:~# ls -l&lt;br /&gt;
 ...&lt;br /&gt;
 d-wx--x--x  3 root root 4096 2009-06-18 13:34 verzeichnis&lt;br /&gt;
 &lt;br /&gt;
 root@zero:~# chgrp -R xinux verzeichnis/&lt;br /&gt;
 root@zero:~# ls -l&lt;br /&gt;
 ...&lt;br /&gt;
 d-wx--x--x  3 root xinux 4096 2009-06-18 13:34 verzeichnis&lt;br /&gt;
&lt;br /&gt;
 xinux@zero:~$ cd /root/verzeichnis/&lt;br /&gt;
 xinux@zero:/root/verzeichnis$ pwd&lt;br /&gt;
 /root/verzeichnis&lt;br /&gt;
&lt;br /&gt;
===chown===&lt;br /&gt;
Ändert den Eigentümer von einer oder mehreren Dateien in den angegebenen Benutzer. &lt;br /&gt;
chown erlaubt ebenfalls das Ändern der Gruppeneigentümreschaft. Nur der aktuelle Eigentümer einer&lt;br /&gt;
Datei oder der Superuser (root) darf die Eigentumsverhältnisse ändern.&lt;br /&gt;
&lt;br /&gt;
 chown [Optionen] Benutzer(:Gruppe) Dateien&lt;br /&gt;
&lt;br /&gt;
Optionen:&lt;br /&gt;
 -c Gibt Informationen über die veränderten Dateien aus&lt;br /&gt;
 --dereference Symbolischen Links folgen&lt;br /&gt;
 -v Gibt Informationen über alle Dateien aus, die chown zu ändern versucht, egal, ob die Änderung erfolgt ist oder nicht&lt;br /&gt;
 -R Geht rekursiv durch alle Unterverzeichnisse und führt die Änderungen durch. &lt;br /&gt;
&lt;br /&gt;
 root@zero:~# chown -R xinux.xinux verzeichnis/&lt;br /&gt;
 root@zero:~# ls -l&lt;br /&gt;
 insgesamt 12&lt;br /&gt;
 drwx------ 13 root  root  4096 2009-04-21 15:11 profile&lt;br /&gt;
 --w-------  1 root  root     0 2009-06-18 11:13 test&lt;br /&gt;
 -rw-r--r--  1 root  root    40 2009-06-18 12:04 text&lt;br /&gt;
 drwxrwx--x  3 xinux xinux 4096 2009-06-18 13:39 verzeichnis&lt;br /&gt;
 &lt;br /&gt;
 root@zero:~# chown -R -c xinux.xinux verzeichnis/&lt;br /&gt;
 &lt;br /&gt;
 root@zero:~# chown -R -v xinux.xinux verzeichnis/&lt;br /&gt;
 Eigentümer von „verzeichnis/01“ als xinux:xinux erhalten&lt;br /&gt;
 Eigentümer von „verzeichnis/test“ als xinux:xinux erhalten&lt;br /&gt;
 Eigentümer von „verzeichnis/“ als xinux:xinux erhalten&lt;br /&gt;
&lt;br /&gt;
==Eingabe/Ausgabe==&lt;br /&gt;
Standardeingabe (0): Laufende Programme erwarten von hier ihre Eingaben (normalerweise handelt es sich um die Tastatur).&lt;br /&gt;
&lt;br /&gt;
Standardausgabe (1): Programme schreiben auf diese ihre Ausgaben (Bildschirm).&lt;br /&gt;
&lt;br /&gt;
Standardfehlerausgabe (2) : Fehlerausgaben landen hier (Bildschirm, aber nur die aktive Konsole).&lt;br /&gt;
&lt;br /&gt;
[[Bild:std.jpg]]&lt;br /&gt;
&lt;br /&gt;
===cat===&lt;br /&gt;
Das Programm cat liest von STDIN und gibt es STDOUT wieder aus&lt;br /&gt;
&lt;br /&gt;
Einlesen der Datei text&lt;br /&gt;
 root@zero:~# cat &amp;lt; text&lt;br /&gt;
 wichtig&lt;br /&gt;
&lt;br /&gt;
Schreiben in die Datei text, dies überschreibt den bisherigen Inhalt der Datei&lt;br /&gt;
 root@zero:~# cat &amp;gt; text&lt;br /&gt;
 sogar noch wichtiger &lt;br /&gt;
 &lt;br /&gt;
Ausgeben der Datei text&lt;br /&gt;
 root@zero:~# cat text &lt;br /&gt;
 sogar noch wichtiger&lt;br /&gt;
&lt;br /&gt;
Lesen aus der Datei text und schreiben in die Datei neuertext&lt;br /&gt;
 root@zero:~# cat &amp;lt; text &amp;gt; neuertext&lt;br /&gt;
 root@zero:~# cat neuertext&lt;br /&gt;
 sogar noch wichtiger&lt;br /&gt;
&lt;br /&gt;
Anhängen der Ausgabe von date an die Datei neuertext&lt;br /&gt;
 root@zero:~# date &amp;gt;&amp;gt; neuertext&lt;br /&gt;
 root@zero:~# cat neuertext&lt;br /&gt;
 sogar noch wichtiger&lt;br /&gt;
 Do 18. Jun 14:08:58 CEST 2009&lt;br /&gt;
&lt;br /&gt;
Umleiten des Standardfehlerkanals nach error&lt;br /&gt;
 root@zero:~# rm sux 2&amp;gt; error&lt;br /&gt;
 root@zero:~# more error&lt;br /&gt;
 rm: Entfernen von „sux“ nicht möglich: No such file or directory&lt;br /&gt;
&lt;br /&gt;
===Umleitungen===&lt;br /&gt;
Nacheinander auszuführende Kommandos&lt;br /&gt;
 root@zero:~# pwd; date&lt;br /&gt;
 /root&lt;br /&gt;
 Do 18. Jun 14:13:05 CEST 2009&lt;br /&gt;
 &lt;br /&gt;
Übergeben der Ausgabe von tail als Eingabe von grep mit Hilfe der Pipe &amp;quot;|&amp;quot;&lt;br /&gt;
 root@zero:~# tail /var/log/auth.log | grep xinux&lt;br /&gt;
 Jun 18 13:52:33 zero nss_wins[11433]: pam_unix(login:session): session closed for user xinux&lt;br /&gt;
&lt;br /&gt;
Übergeben der letzten 100 Zeilen von syslog als Eingabe von grep&lt;br /&gt;
 root@zero:~# tail /var/log/syslog -n 100 | grep error&lt;br /&gt;
 Jun 18 09:30:54 zero kernel: [154384.692135] end_request: I/O error, dev fd0, sector 0&lt;br /&gt;
 Jun 18 09:30:54 zero kernel: [154384.712137] end_request: I/O error, dev fd0, sector 0&lt;br /&gt;
&lt;br /&gt;
==tr==&lt;br /&gt;
tr ist ein Programm um Zeichen zu übersetzen. Dies betrifft nur die Ausgabe, die Datei selbst bleibt unverändert.&lt;br /&gt;
&lt;br /&gt;
Ersetzt Kleinbuchstaben durch Großbuchstaben aus der Datei text&lt;br /&gt;
 root@zero:~# tr &amp;quot;a-z&amp;quot; &amp;quot;A-Z&amp;quot; &amp;lt; text&lt;br /&gt;
 SOGAR NOCH WICHTIGER&lt;br /&gt;
 123&lt;br /&gt;
 34&lt;br /&gt;
 4711&lt;br /&gt;
 TEST&lt;br /&gt;
&lt;br /&gt;
Ersetzt alle Zahlen durch X&lt;br /&gt;
 root@zero:~# tr &amp;quot;0-9&amp;quot; &amp;quot;X&amp;quot; &amp;lt; text&lt;br /&gt;
 sogar noch wichtiger&lt;br /&gt;
 XXX&lt;br /&gt;
 XX&lt;br /&gt;
 XXXX&lt;br /&gt;
 test&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
 root@zero:~# cat &amp;gt; test&lt;br /&gt;
 +++++&lt;br /&gt;
 ###&lt;br /&gt;
 1111&lt;br /&gt;
&lt;br /&gt;
-s löscht mehrfach kommende Zeichen&lt;br /&gt;
 root@zero:~# tr '''-s''' &amp;quot;+&amp;quot; &amp;lt; test&lt;br /&gt;
 +&lt;br /&gt;
 ###&lt;br /&gt;
 1111&lt;br /&gt;
&lt;br /&gt;
-d löscht vorkommende Zeichen &lt;br /&gt;
 root@zero:~# tr '''-d''' &amp;quot;#&amp;quot; &amp;lt; test&lt;br /&gt;
 +++++ &lt;br /&gt;
 &lt;br /&gt;
 1111&lt;br /&gt;
&lt;br /&gt;
==cut==&lt;br /&gt;
Spalten aus einer Datei schneiden. Dies betrifft nur die Ausgabe, die Datei selbst bleibt unverändert.&lt;br /&gt;
 &lt;br /&gt;
Schneidet die erste Spalte aus, der Delimiter ist : &lt;br /&gt;
 root@zero:~# cut -f 1 -d : /etc/passwd&lt;br /&gt;
 root&lt;br /&gt;
 daemon&lt;br /&gt;
 bin&lt;br /&gt;
 ...&lt;br /&gt;
 xinux&lt;br /&gt;
&lt;br /&gt;
 root@zero:~# more test&lt;br /&gt;
 1234#5678#9999&lt;br /&gt;
 &lt;br /&gt;
Schneidet die zweite Spalte aus, der Delimiter ist #&lt;br /&gt;
 root@zero:~# cut -f 2 -d &amp;quot;#&amp;quot; &amp;lt; test&lt;br /&gt;
 5678&lt;br /&gt;
&lt;br /&gt;
Schneidet bis zum 3 Zeichen ab&lt;br /&gt;
 root@zero:~$ echo S01policykit | cut -c 4-&lt;br /&gt;
 policykit&lt;br /&gt;
&lt;br /&gt;
==expand==&lt;br /&gt;
Ersetzt Tabulatorzeichen durch Folgen von Leerzeichen und schreibt das Ergebnis auf die Standardausgabe&lt;br /&gt;
 root@zero:~# expand /etc/samba/smb.conf&lt;br /&gt;
 ...&lt;br /&gt;
&lt;br /&gt;
==fmt==&lt;br /&gt;
#Setzt den Text der Dateien im Blocksatz der angegebenen Breite durch Auffüllen von Zeilen und Entfernen von Zeilenwechseln.&lt;br /&gt;
Standardgemäß werden Leerzeilen, die Position von Leerzeichen und der Einzug am Zeilenanfang erhalten. fmt versucht, &lt;br /&gt;
Zeilenumbrüche an Satzenden durchzuführen sowie sie nach dem ersten oder vor dem letzten Wort eines Satzes zu vermeiden. &lt;br /&gt;
 &lt;br /&gt;
 fmt [Optionen] [Dateien]&lt;br /&gt;
&lt;br /&gt;
Optionen&lt;br /&gt;
&lt;br /&gt;
* -p ''Präfix'': Formatiert nur Zeilen, die mit ''Präfix'' anfangen&lt;br /&gt;
 root@zero:/tmp# fmt -p '#' text&lt;br /&gt;
 #Setzt den Text der Dateien im Blocksatz der angegebenen Breite durch&lt;br /&gt;
 #Auffüllen von Zeilen und Entfernen von Zeilenwechseln.  Standardgemäß&lt;br /&gt;
 #werden Leerzeilen, die Position von Leerzeichen und der Einzug am&lt;br /&gt;
 #Zeilenanfang erhalten. fmt versucht,&lt;br /&gt;
 Zeilenumbrüche an Satzenden durchzuführen sowie sie nach dem ersten oder vor dem letzten Wort eines Satzes zu vermeiden.&lt;br /&gt;
&lt;br /&gt;
* -u : Erzwingt genau ein Leerzeichen zwischen Wörtern und zwei Leerzeichen zwischen Sätzen&lt;br /&gt;
&lt;br /&gt;
* -w ''Breite'': Setzt die Ausgabebreite auf ''Breite''&lt;br /&gt;
 root@zero:/tmp# fmt -w 30 text&lt;br /&gt;
 #Setzt den Text der Dateien&lt;br /&gt;
 im Blocksatz der angegebenen&lt;br /&gt;
 Breite durch Auffüllen&lt;br /&gt;
 von Zeilen und Entfernen&lt;br /&gt;
 von Zeilenwechseln.&lt;br /&gt;
 #Standardgemäß werden&lt;br /&gt;
 Leerzeilen, die Position von&lt;br /&gt;
 Leerzeichen und der Einzug am&lt;br /&gt;
 Zeilenanfang erhalten. fmt&lt;br /&gt;
 versucht, Zeilenumbrüche&lt;br /&gt;
 an Satzenden durchzuführen&lt;br /&gt;
 sowie sie nach dem ersten&lt;br /&gt;
 oder vor dem letzten Wort&lt;br /&gt;
 eines Satzes zu vermeiden.&lt;br /&gt;
&lt;br /&gt;
==join==&lt;br /&gt;
Führt die Zeilen zweier sortierter Dateien anhand von '''Übereinstimmungen''' in einem gemeinsamen Feld zusammen.&lt;br /&gt;
&lt;br /&gt;
 root@zero:~# more name&lt;br /&gt;
 1. karl&lt;br /&gt;
 2. heinz&lt;br /&gt;
 3. hans&lt;br /&gt;
 4. otto&lt;br /&gt;
 root@zero:~# more tel&lt;br /&gt;
 1. 1234&lt;br /&gt;
 2. 4321&lt;br /&gt;
 3. 222&lt;br /&gt;
 4. 121212&lt;br /&gt;
 root@zero:~# join name tel &amp;gt; telefonbuch&lt;br /&gt;
 root@zero:~# more telefonbuch&lt;br /&gt;
 1. karl 1234&lt;br /&gt;
 2. heinz 4321&lt;br /&gt;
 3. hans 222&lt;br /&gt;
 4. otto 121212&lt;br /&gt;
&lt;br /&gt;
 root@zero:~# join -t : /etc/passwd /etc/shadow&lt;br /&gt;
 ....&lt;br /&gt;
 daemon:x:1:1:daemon:/usr/sbin:/bin/sh:*:14181:0:99999:7:::&lt;br /&gt;
 bin:x:2:2:bin:/bin:/bin/sh:*:14181:0:99999:7:::&lt;br /&gt;
 sys:x:3:3:sys:/dev:/bin/sh:*:14181:0:99999:7:::&lt;br /&gt;
 sync:x:4:65534:sync:/bin:/bin/sync:*:14181:0:99999:7:::&lt;br /&gt;
 ...&lt;br /&gt;
&lt;br /&gt;
join in dat1 nach Feld 3 und in dat2 nach Feld 2&lt;br /&gt;
 thomas@lydia:~$ cat dat1 &lt;br /&gt;
 hugo:ps:1111&lt;br /&gt;
 erwin:zw:2222&lt;br /&gt;
 karl:sb:3333&lt;br /&gt;
 rudi:kl:4444&lt;br /&gt;
 thomas@lydia:~$ cat dat2&lt;br /&gt;
 blau:1111:svn&lt;br /&gt;
 grün:2222:fcs&lt;br /&gt;
 gelb:3333:fch&lt;br /&gt;
 rot:4444:fck&lt;br /&gt;
 thomas@lydia:~$ join -t : -1 3 -2 2 dat1 dat2 &lt;br /&gt;
 1111:hugo:ps:blau:svn&lt;br /&gt;
 2222:erwin:zw:grün:fcs&lt;br /&gt;
 3333:karl:sb:gelb:fch&lt;br /&gt;
 4444:rudi:kl:rot:fck&lt;br /&gt;
&lt;br /&gt;
==nl==&lt;br /&gt;
Nummeriert die Zeilen in einer Datei.&lt;br /&gt;
&lt;br /&gt;
 root@zero:~# nl /etc/passwd                                                   &lt;br /&gt;
     1  root:x:0:0:root:/root:/bin/bash                                       &lt;br /&gt;
     2  daemon:x:1:1:daemon:/usr/sbin:/bin/sh                                 &lt;br /&gt;
     3  bin:x:2:2:bin:/bin:/bin/sh                                            &lt;br /&gt;
     4  sys:x:3:3:sys:/dev:/bin/sh                                            &lt;br /&gt;
     5  sync:x:4:65534:sync:/bin:/bin/sync&lt;br /&gt;
     ...&lt;br /&gt;
Nummereriet mit führenden Nullen der Separatir ist ein :&lt;br /&gt;
 root@zero:~# nl -s : -n rz dat1&lt;br /&gt;
&lt;br /&gt;
==od==&lt;br /&gt;
Gibt Dateien im Oktal und anderen Formaten aus.&lt;br /&gt;
&lt;br /&gt;
 od [Optionen] Datei&lt;br /&gt;
&lt;br /&gt;
* -j ''Bytes'': Überspringt die Anzahl ''Bytes'' einer Datei&lt;br /&gt;
* -N ''Bytes'': Gibt nur die Anzahl ''Bytes'' aus&lt;br /&gt;
* -c : Gebe ASCII Zeichen aus&lt;br /&gt;
* -f : Gebe Fließkommazahlen aus&lt;br /&gt;
* -i : Gebe Dezimal Integer aus&lt;br /&gt;
* -l : Gebe Dezimal Long aus&lt;br /&gt;
* -o : Gebe Oktal 2 Byte Einheiten aus&lt;br /&gt;
* -s : Gebe Dezimal 2 Byte Einheiten aus&lt;br /&gt;
* -x : Gebe Hexadezimale 2 Byte einheiten aus&lt;br /&gt;
&lt;br /&gt;
Beispiele&lt;br /&gt;
&lt;br /&gt;
Gebe Master Boot Record (die ersten 512 Byte der Festplatte /dev/sda) als Hexadezimal aus&lt;br /&gt;
 root@zero:~# od '''-x -N''' 512 /dev/sda&lt;br /&gt;
 0000000 48eb 1090 d08e 00bc b8b0 0000 d88e c08e&lt;br /&gt;
 0000020 befb 7c00 00bf b906 0200 a4f3 21ea 0006&lt;br /&gt;
 0000040 be00 07be 0438 0b75 c683 8110 fefe 7507&lt;br /&gt;
 0000060 ebf3 b416 b002 bb01 7c00 80b2 748a 0203&lt;br /&gt;
 0000100 00ff 2000 0001 0000 0200 90fa f690 80c2&lt;br /&gt;
 ...&lt;br /&gt;
&lt;br /&gt;
Schreibe &amp;quot;suxer&amp;quot; in die Datei test&lt;br /&gt;
 root@zero:~# echo &amp;quot;suxer&amp;quot; &amp;gt; test&lt;br /&gt;
Ausgabe Hexadezimal&lt;br /&gt;
 root@zero:~# od -x test&lt;br /&gt;
 0000000 7573 6578 0a72&lt;br /&gt;
 0000006&lt;br /&gt;
&lt;br /&gt;
Ausgabe ASCII Zeichen&lt;br /&gt;
 root@zero:~# od -c test&lt;br /&gt;
 0000000   s   u   x   e   r  \n&lt;br /&gt;
 0000006&lt;br /&gt;
&lt;br /&gt;
==paste==&lt;br /&gt;
Fügt die Zeilen von zwei oder mehr Dateien horizontal zusammen&lt;br /&gt;
 root@zero:~# paste name tel&lt;br /&gt;
 1. karl 1. 1234&lt;br /&gt;
 2. heinz        2. 4321&lt;br /&gt;
 3. hans 3. 222&lt;br /&gt;
 4. otto 4. 121212&lt;br /&gt;
&lt;br /&gt;
==pr==&lt;br /&gt;
Bereitet Textdateien zum Drucken vor.&lt;br /&gt;
&lt;br /&gt;
 root@zero:~# echo &amp;quot;Plan für heute&amp;quot; &amp;gt; dokument&lt;br /&gt;
 root@zero:~# more dokument&lt;br /&gt;
 Plan für heute&lt;br /&gt;
 root@zero:~# pr dokument   &lt;br /&gt;
  &lt;br /&gt;
 &lt;br /&gt;
 2009-06-19 12:44                    dokument                     Seite 1&lt;br /&gt;
 &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
 Plan für heute&lt;br /&gt;
&lt;br /&gt;
Anmerkung Ausmaße der Bildschirmausgabe wie eine Druckseite.&lt;br /&gt;
&lt;br /&gt;
==sed==&lt;br /&gt;
streaming editor. Mit sed ist es möglich, den Inhalt einer Datei automatisch (nicht interaktiv) zu&lt;br /&gt;
bearbeiten. Wie unter Linux üblich, wird auch hier der Text nicht wirklich verändert sondern die &lt;br /&gt;
Änderung erfolgt über die Standardausgabe, die wieder umgeleitet werden kann. Die Syntax ist ähnlich &lt;br /&gt;
des ex modus von vi. Reguläre Ausdrücke können nach Belieben benutzt werden. &lt;br /&gt;
&lt;br /&gt;
Optionen:&lt;br /&gt;
 -e Zeichenkette  wendet die Editorbefehle aus Zeichenkette auf den Text an.&lt;br /&gt;
 -n gibt nur die Zeilen aus, die explizit (durch &amp;quot;p&amp;quot; ausgedruckt werden sollen&lt;br /&gt;
&lt;br /&gt;
Gibt die dritte Zeile der Datei text aus&lt;br /&gt;
 root@zero:~# sed -n &amp;quot;3p&amp;quot; text&lt;br /&gt;
 34&lt;br /&gt;
&lt;br /&gt;
Gibt die erste bis dritte Zeile von text aus&lt;br /&gt;
 root@zero:~# sed -n &amp;quot;1,3p&amp;quot; text&lt;br /&gt;
 sogar noch wichtiger&lt;br /&gt;
 123&lt;br /&gt;
 34&lt;br /&gt;
&lt;br /&gt;
Löschen der Zeile mit &amp;quot;sogar&amp;quot;&lt;br /&gt;
 root@zero:~# sed -e '/sogar/d' &amp;lt; text&lt;br /&gt;
 123&lt;br /&gt;
 34&lt;br /&gt;
 4711&lt;br /&gt;
 test&lt;br /&gt;
&lt;br /&gt;
und schreiben in text2&lt;br /&gt;
 root@zero:~# sed -e '/sogar/d' &amp;lt; text &amp;gt; text2&lt;br /&gt;
 root@zero:~# more text2&lt;br /&gt;
 123&lt;br /&gt;
 34&lt;br /&gt;
 4711&lt;br /&gt;
 test&lt;br /&gt;
&lt;br /&gt;
Alle 3en durch DREI ersetzen&lt;br /&gt;
 root@zero:~# sed -e 's/3/DREI/g' &amp;lt; text&lt;br /&gt;
 sogar noch wichtiger&lt;br /&gt;
 12DREI&lt;br /&gt;
 DREI4&lt;br /&gt;
 4711&lt;br /&gt;
 test&lt;br /&gt;
&lt;br /&gt;
==wc==&lt;br /&gt;
Zählt die Anzahl von Zeichen, Wörter oder Zeilen&lt;br /&gt;
&lt;br /&gt;
Optionen&lt;br /&gt;
* -m : Zählt die Anzahl der Zeichen&lt;br /&gt;
 root@zero:~# more name&lt;br /&gt;
 1. karl&lt;br /&gt;
 2. heinz&lt;br /&gt;
 3. hans&lt;br /&gt;
 4. otto&lt;br /&gt;
 root@zero:~# wc '''-m''' tel&lt;br /&gt;
 33 tel&lt;br /&gt;
&lt;br /&gt;
* -w : Zählt die Anzahl der Wörter (einschließlich Zahlen und andere Zeichen)&lt;br /&gt;
 root@zero:~# wc '''-w''' name&lt;br /&gt;
 8 name&lt;br /&gt;
&lt;br /&gt;
* -l : Zählt die Anzahl der Zeilen&lt;br /&gt;
 root@zero:~# wc '''-l''' name&lt;br /&gt;
 4 name&lt;br /&gt;
&lt;br /&gt;
==INodes==&lt;br /&gt;
Inode (oder I-Node) wird im Deutschen am besten als Informationsknoten oder&lt;br /&gt;
Indexeintrag bezeichnet. Er fasst alle Attribute einer Datei zusammen außer dem Inhalt&lt;br /&gt;
und dem Namen der Datei.&lt;br /&gt;
&lt;br /&gt;
===Daten===&lt;br /&gt;
{| border=1 cellpadding=2&lt;br /&gt;
|type&lt;br /&gt;
|Der Typ der Datei wird als einzelner Buchstabe angezeigt. Der Typ einer Datei wird beim Anlegen der Datei festgelegt&lt;br /&gt;
|-&lt;br /&gt;
|Permissions &lt;br /&gt;
|Die Zugriffsrechte der Datei werden in den 12 Bit sstrwxrwxrwx abgespeichert.Wenn sie gesetzt sind, werden sie bei &lt;br /&gt;
der Ausgabe an Stelle der x-Rechte ausgegeben. Die Zugriffsrechte können mit dem Kommando chmod verändert werden.&lt;br /&gt;
|-&lt;br /&gt;
|link count&lt;br /&gt;
|In UNIX kann eine Datei mehr als einen Namen haben. Der Link Count gibt die Anzahl der Namen einer Datei an. Er kann&lt;br /&gt;
mit dem Kommando ln erhöht und dem Kommando rm erniedrigt werden.&lt;br /&gt;
|-&lt;br /&gt;
|owner&lt;br /&gt;
|Für den Dateieigentümer gelten die in der ersten rwx-Gruppe festgelegten Zugriffsrechte. Standardmäßig ist der &lt;br /&gt;
Eigentümer einer Datei derjenige Benutzer, der die Datei angelegt hat.&lt;br /&gt;
|-&lt;br /&gt;
|group&lt;br /&gt;
|Für Benutzer, die in der gleichen Gruppe sind, der die Datei angehört, gelten die in der zweiten rwx-Gruppe festgelegten&lt;br /&gt;
Zugriffsrechte. In System V gehört eine Datei standardmäßig der Gruppe an, in der der anlegende Benutzer gerade ist.&lt;br /&gt;
|-&lt;br /&gt;
|size&lt;br /&gt;
|Bei normalen Dateien und Verzeichnissen gibt diese Information die Länge der Datei in Byte an.&lt;br /&gt;
|-&lt;br /&gt;
|access time&lt;br /&gt;
|Die Zugriffszeit gibt den Zeitpunkt des letzten Lesezugriffes auf eine Datei an. Aus Effizienzgründen wird die &lt;br /&gt;
Zugriffszeit an Verzeichnissen nicht gesetzt, wenn ein Verzeichnis durchsucht wird, obwohl man dies erwarten könnte.&lt;br /&gt;
|-&lt;br /&gt;
|modification time&lt;br /&gt;
|Die Modifikationszeit gibt die Zeit des letzten Schreibzugriffes auf die Daten der Datei an. Intern speichert UNIX &lt;br /&gt;
die Zeit als Sekunden seit Beginn des Jahres 1970 und in GMT ab. Für die Ausgabe wird dies in ein besser lesbares &lt;br /&gt;
Format in der lokalen Zeitzone umgewandelt.&lt;br /&gt;
|-&lt;br /&gt;
|change time &lt;br /&gt;
|Die Veränderungszeit gibt das Datum der letzten Statusänderung der Datei an. Sie wird immer dann gesetzt, wenn die &lt;br /&gt;
Informationen über die Datei sich ändern (Datum der Erzeugung wird nicht gespeichert)&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
===Dateiarten===&lt;br /&gt;
{| border=1 cellpadding=2&lt;br /&gt;
!Zeichen&lt;br /&gt;
!Typ&lt;br /&gt;
!Zweck&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;nowiki&amp;gt;-&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
|file&lt;br /&gt;
|normale Datei&lt;br /&gt;
|-&lt;br /&gt;
|d&lt;br /&gt;
|directory&lt;br /&gt;
|Verzeichnis&lt;br /&gt;
|-&lt;br /&gt;
|b&lt;br /&gt;
|block device&lt;br /&gt;
|Gerätedatei&lt;br /&gt;
|-&lt;br /&gt;
|c&lt;br /&gt;
|character device&lt;br /&gt;
|Gerätedatei&lt;br /&gt;
|-&lt;br /&gt;
|l&lt;br /&gt;
|link&lt;br /&gt;
|Querverweis&lt;br /&gt;
|-&lt;br /&gt;
|p&lt;br /&gt;
|named pipe&lt;br /&gt;
|Benannte Pipeline&lt;br /&gt;
|-&lt;br /&gt;
|s&lt;br /&gt;
|socket&lt;br /&gt;
|Netzwerkverbindung&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
====Normale Dateien====&lt;br /&gt;
Unter einer normalen Datei versteht man die Ansammlung von Daten. Dies kann ein Text, Programm, Bild oder sonstiges sein. &lt;br /&gt;
Beispiel&lt;br /&gt;
 root@zero:~# ls text&lt;br /&gt;
 text&lt;br /&gt;
&lt;br /&gt;
====Verzeichnisse====&lt;br /&gt;
Dateien werden in Verzeichnissen gespeichert, nur so ist eine Ordnung möglich. &lt;br /&gt;
 root@zero:~# mkdir -v Ordner&lt;br /&gt;
 mkdir: Verzeichnis „Ordner“ angelegt&lt;br /&gt;
 &lt;br /&gt;
 root@zero:~# ls -d ~/*&lt;br /&gt;
 /root/error  /root/neuertext  /root/Ordner  /root/profile  /root/test  /root/text  /root/verzeichnis&lt;br /&gt;
&lt;br /&gt;
====Gerätedateien (Block und Char)====&lt;br /&gt;
Gerätedateien ermöglichen Anwendungsprogrammen unter Benutzung des  Kernels den Zugriff auf die Hardwarekomponenten des &lt;br /&gt;
Systems. &lt;br /&gt;
&lt;br /&gt;
Beispiele&lt;br /&gt;
&lt;br /&gt;
Sicherung des Master Boot Records der ersten Festplatte&lt;br /&gt;
 root@zero:~# dd if=/dev/sda1 of=/tmp/mbr.img bs=512 count=1&lt;br /&gt;
&lt;br /&gt;
Einhängen des CD-ROM Laufwerks&lt;br /&gt;
 root@zero:~# mount /dev/cdrom /media/cdrom -t iso9660&lt;br /&gt;
&lt;br /&gt;
====Named Pipes====&lt;br /&gt;
Benannte Pipes (Named Pipes) können dagegen auch zur Kommunikation zwischen Prozessen eingesetzt werden, die nicht miteinander&lt;br /&gt;
verwandt sind und sich darüber hinaus auf unterschiedlichen Rechnern innerhalb eines Netzwerkes befinden dürfen. Sie sind &lt;br /&gt;
flexibler als anonyme Pipes und eignen sich für sogenannte Client-Server-Anwendungen (es lassen sich auch RPCs realisieren).&lt;br /&gt;
Benannte Pipes ermöglichen die gleichzeitige Kommunikation in beide Richtungen, das heißt, Daten können im Vollduplexbetrieb &lt;br /&gt;
zwischen den Prozessen ausgetauscht werden.&lt;br /&gt;
 &lt;br /&gt;
Erstelle Named Pipe mit Namen sux. Schreibe &amp;quot;Hallo Welt&amp;quot; in die Pipe sux und bleibe im Hintergrund. Gebe Inhalt der Pipe mit cat aus&lt;br /&gt;
 root@zero:~# mkfifo sux ; echo 'Hallo Welt' &amp;gt; sux &amp;amp; cat &amp;lt; sux&lt;br /&gt;
 [1] 12947&lt;br /&gt;
 Hallo Welt&lt;br /&gt;
 [1]+  Done                    echo 'Hallo Welt' &amp;gt; sux&lt;br /&gt;
&lt;br /&gt;
====Sockets====&lt;br /&gt;
Schnittstelle um es vernetzten Rechnern zu ermöglichen, miteinander zu kommunizieren.&lt;br /&gt;
&lt;br /&gt;
Sie ist in der Regel definiert durch IP-Adresse sowie Port. &lt;br /&gt;
&lt;br /&gt;
====Links====&lt;br /&gt;
Bei Links handelt es sich um symbolische Verweise auf andere Dateien&lt;br /&gt;
&lt;br /&gt;
'''Softlink'''&lt;br /&gt;
Ein Softlink ist eine Datei die nur auf den Namen einer anderen Datei verweist. Wenn die Originaldatei gelöscht wird, zeigt &lt;br /&gt;
der Link ins Leere. &lt;br /&gt;
&lt;br /&gt;
 ln -s datei softlink&lt;br /&gt;
&lt;br /&gt;
{| border=1 cellpadding=2&lt;br /&gt;
| Vorteile&lt;br /&gt;
| Symbolische Links können auch auf Verzeichnisse angelegt werden&amp;lt;br&amp;gt;Sie sind partitionsübergreifend&amp;lt;br&amp;gt;Man kann sie auf Dateien anlegen, die noch nicht existieren&lt;br /&gt;
|-&lt;br /&gt;
| Nachteile&lt;br /&gt;
| Wenn das Original gelöscht ist, ist kein Zugriff mehr möglich&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Beispiel&lt;br /&gt;
 root@zero:~# ln -s text verweis&lt;br /&gt;
 root@zero:~# ls -l verweis&lt;br /&gt;
 lrwxrwxrwx 1 root root 4 2009-06-18 15:48 verweis -&amp;gt; text&lt;br /&gt;
&lt;br /&gt;
'''Hardlinks'''&lt;br /&gt;
 ln datei hardlink&lt;br /&gt;
Eigentlich ist jede Datei ein Hardlink. Ein Hardlink ist ein Verzeichniseintrag,&lt;br /&gt;
der auf eine Inode verweist. Beim Erzeugen einer Datei verweist ein Eintrag auf&lt;br /&gt;
eine Inode. Man kann dann weitere Verweise erzeugen. Der Linkcounter wird&lt;br /&gt;
jeweils um 1 erhöht. Beim Löschen einer Datei wird er jeweils um 1 reduziert.&lt;br /&gt;
Wird der Wert 0 erreicht, ist die Datei gelöscht.&lt;br /&gt;
{| border=1 cellpadding=2&lt;br /&gt;
| Vorteile&lt;br /&gt;
|Zugriff auf die Daten, selbst wenn das Orginal gelöscht ist.&lt;br /&gt;
|-&lt;br /&gt;
|Nachteile&lt;br /&gt;
|Man kann keine Hardlinks auf Verzeichnisse anlegen.&lt;br /&gt;
Ist nur innerhalb einer Partion möglich.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Beispiel&lt;br /&gt;
 root@zero:~# touch 1&lt;br /&gt;
 root@zero:~# echo &amp;quot;text&amp;quot; &amp;gt; 1&lt;br /&gt;
 root@zero:~# ln 1 2&lt;br /&gt;
 root@zero:~# more 2&lt;br /&gt;
 text&lt;br /&gt;
 root@zero:~# echo &amp;quot;doch kein text&amp;quot; &amp;gt; 1&lt;br /&gt;
 root@zero:~# more 1&lt;br /&gt;
 doch kein text&lt;br /&gt;
 root@zero:~# more 2&lt;br /&gt;
 doch kein text&lt;br /&gt;
&lt;br /&gt;
Weitere Optionen:&lt;br /&gt;
 -b sichert Dateien, statt sie zu überschreiben &lt;br /&gt;
 -f Überschreibt bestehende, gleichnamige Dateien&lt;br /&gt;
 -i fragt vor dem Überschreiben nach Bestätigung&lt;br /&gt;
 -v ausführliche Meldungen&lt;br /&gt;
&lt;br /&gt;
==Prozesse==&lt;br /&gt;
===Was ist ein Prozess?===&lt;br /&gt;
Ein Prozess setzt sich aus zwei Teilen zusammen:&lt;br /&gt;
&lt;br /&gt;
1.Programm, das in den Hauptspeicher geladen wurde&lt;br /&gt;
&lt;br /&gt;
2.Prozessumgebung&lt;br /&gt;
&lt;br /&gt;
Unter einem Prozess versteht man ein Programm (binär), das in den Hauptspeicher&lt;br /&gt;
geladen wurde. Also nicht das Program selbst, das auf der Festplatte liegt ist der&lt;br /&gt;
Prozess, sondern es wird erst durch das Laden in den Hauptspeicher dazu.&lt;br /&gt;
Normalerweise liegt ein Programm als ausführbare Datei irgendwo auf der&lt;br /&gt;
Festplatte oder auf Diskette. Ob es sich bei dem Programm um eine binäre Datei&lt;br /&gt;
handelt, kann man mit dem Befehl '' file '' feststellen.&lt;br /&gt;
 &lt;br /&gt;
 root@zero:~# file /bin/mkdir&lt;br /&gt;
 /bin/mkdir: ELF 32-bit LSB executable, Intel 80386, version 1 (SYSV), dynamically linked (uses shared libs), for GNU/Linux 2.6.8, stripped&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Die Datei liegt im Maschinencode vor und kann in den Hauptspeicher geladen&lt;br /&gt;
werden. Sobald dies geschehen ist, kann der Rechner diesen Maschinencode&lt;br /&gt;
abarbeiten (ausführen).&lt;br /&gt;
&lt;br /&gt;
Da aber ein Programm nicht direkt auf die Hardware zugreifen soll, muss es vom&lt;br /&gt;
Betriebsystem kontrolliert werden. Das Betriebssystem liegt logisch gesehen&lt;br /&gt;
zwischen Hardware und Anwendung. Das Betriebssystem ordnet jedem Prozess&lt;br /&gt;
verschiedene Kenndaten zu, um die Prozesse verwalten zu können. Alle&lt;br /&gt;
Kenndaten, die einem Prozess zugeordnet sind, nennt man die&lt;br /&gt;
Prozessumgebung.Wenn man in der Shell ein Kommando eingibt, wird ein Prozess&lt;br /&gt;
kreiert. Natürlich ist die Shell selbst auch ein Prozess. Ein Prozess kann aber&lt;br /&gt;
genauso gut ein Serverprozess (Dienst) sein, z.B. Apache.&lt;br /&gt;
Ein wesentliches Merkmal eines Prozesses ist die Prozesskommunikation. Über im&lt;br /&gt;
Betriebssystem implementierte Methoden ist es möglich, dass verschiedene&lt;br /&gt;
Prozesse Signale und Daten untereinander austauschen können.&lt;br /&gt;
Dadurch wird auch dem Benutzer ermöglicht, einem Prozeß bestimmte Signale zu&lt;br /&gt;
senden bzw. auf den Status eines Prozesses Einfluss zu nehmen.&lt;br /&gt;
&lt;br /&gt;
===Prozesstabelle (Anzeige mit ps)===&lt;br /&gt;
Da zu jedem Prozess Kenndaten geführt werden, müssen diese auch irgendwo&lt;br /&gt;
festgehalten werden. Das geschieht in der sogenannten Prozesstabelle.&lt;br /&gt;
&lt;br /&gt;
Kenndaten der Prozesse (Auswahl):&lt;br /&gt;
* F Flags (z.B. ausgelagert; Systemprozess; Trace,...)&lt;br /&gt;
* UID Nutzer, mit dessen Rechten der Prozess ausgeführt wird&lt;br /&gt;
* PID Prozess - ID. Diese Nummer gibt eine eindeutige Prozess - Nummer&lt;br /&gt;
an. Sie wird vom System automatisch beim Starten des Prozesses&lt;br /&gt;
vergeben und ist für die Laufzeit eindeutig.&lt;br /&gt;
* PPID Prozessnumer der Eltern-Prozesses&lt;br /&gt;
* PRI Priorität eines Prozesses; je niedriger der Wert ist, desto besser&lt;br /&gt;
* NI ist der Nicewert des Prozesses; Nice erniedrigt den Grundwert&lt;br /&gt;
der Priorität des Prozesses und gibt damit Prozessorzeit für andere&lt;br /&gt;
Prozesse frei.&lt;br /&gt;
* SIZE Speichergröße des Prozesses inklusive Stack (eine Art Zwischenspeicher)&lt;br /&gt;
* RSS Verbrauch an physischen Speicher&lt;br /&gt;
* WCHAN ist der Name der Kernerlfunktion, in der der Prozess schläft&lt;br /&gt;
* STAT Status des Prozesses&lt;br /&gt;
R läuft       S schlafend     D nicht störbarer Schlaf&lt;br /&gt;
T angehalten  Z Zombie        W der Prozess belegt keine Seiten&lt;br /&gt;
* TIME Bisland benötigte Prozessorzeit&lt;br /&gt;
* SIZE ist die Größe von Text, Daten und Stack&lt;br /&gt;
* TTY die Nummer des kontrollierenden Teminal; wenn hier ein ? steht,&lt;br /&gt;
handelt es sich um einen Dämon oder Serverprozess.&lt;br /&gt;
* COMMAND Angabe des Prozesses selbst. Dies ist meist der Programmname.&lt;br /&gt;
&lt;br /&gt;
Weiteres&lt;br /&gt;
* GID Gruppe, unter der der Prozess läuft&lt;br /&gt;
* Verweis auf das aktuellen Arbeitsverzeichnis&lt;br /&gt;
* Um mit relativen Pfadangaben arbeiten zu können braucht man diesen Eintrag&lt;br /&gt;
* Tabelle mit Verweisen auf aktuell geöffnete Dateien&lt;br /&gt;
* 3 sind automatisch geöffnet Standardeingabe, Standardausgabe und&lt;br /&gt;
Standardfehlerkanal&lt;br /&gt;
&lt;br /&gt;
Beispiel&lt;br /&gt;
 root@zero:~# ps -l&lt;br /&gt;
 F S   UID   PID  PPID  C PRI  NI ADDR SZ WCHAN  TTY          TIME CMD&lt;br /&gt;
 4 R     0 18639 18631  0  80   0 -  1080 -      pts/0    00:00:00 bash&lt;br /&gt;
 0 R     0 25904 18639  0  80   0 -   635 -      pts/0    00:00:00 ps&lt;br /&gt;
&lt;br /&gt;
===Eltern und Kinder===&lt;br /&gt;
Jeder Prozess kann weitere Prozesse erzeugen. Die erzeugten Prozesse bezeichnet&lt;br /&gt;
man als Kindprozesse. Jeder Kindprozess weiß anhand der PID, woher er stammt.&lt;br /&gt;
&lt;br /&gt;
Alle Prozesse sind von einem anderen Prozess gestartet worden, mit Ausnahme&lt;br /&gt;
des Pseudoprozesses (noch im Kernel beim Starten erzeugter Prozess). Dieser hat&lt;br /&gt;
die Prozessnummer 0. Er hat die Aufgabe, den Init Prozess ( /sbin/init die Nummer&lt;br /&gt;
1) zu starten, der in System V alle anderen Prozesse direkt oder über seine Kind-&lt;br /&gt;
prozesse startet. (init wird konfiguriert durch die /etc/inittab)&lt;br /&gt;
&lt;br /&gt;
Es gibt zwei Arten wie ein Prozess gestartet werden kann:&lt;br /&gt;
&lt;br /&gt;
# Fork und Exec: Prozessumgebung wird dupliziert, der neue Prozess bekommt eine eigene neue PID&lt;br /&gt;
# Exec: Alter Prozess wird durch neuen Prozess überladen (geht mit dem shell-buildin exec)&lt;br /&gt;
&lt;br /&gt;
'''Rechte auf Objekte UID GID'''&lt;br /&gt;
Ob ein Prozess auf eine Datei zugreifen kann, entscheidet der Kernel anhand der&lt;br /&gt;
Zugriffssrechte, die auf der Datei gesetzt sind. Er checkt anhand der UID und GID&lt;br /&gt;
des Prozesses, ob es erlaubt ist. Mit dieser Technik wird letztendlich geprüft, was&lt;br /&gt;
ein User darf, und was nicht.&lt;br /&gt;
&lt;br /&gt;
===Rechenzeit und Priorität===&lt;br /&gt;
Da auch bei Prozessen eine Gerechtigkeit herschen muss, muss eine Instanz&lt;br /&gt;
darüber entscheiden wie lange ein Prozess Rechenzeit verbrauchen darf.&lt;br /&gt;
Folgende Kenndaten werden dazu benötigt&lt;br /&gt;
* clocktick = Zeiteinheit&lt;br /&gt;
* n = Faktor über den Kernel einstellbar&lt;br /&gt;
* slice = n &amp;lt;nowiki&amp;gt;*&amp;lt;/nowiki&amp;gt; clocktick&lt;br /&gt;
* agingtime = weitere Zeiteinheit über den Kernel einstellbar&lt;br /&gt;
&lt;br /&gt;
Es wird davon ausgegangen das der Prozess mit der niedrigsten Priorität gerade&lt;br /&gt;
rechnet. Pro clocktick erhöht sich die Priorität dieses Prozesses um eins.&lt;br /&gt;
&lt;br /&gt;
Jetzt können 3 Situationen eintreten die alle dazu führen das der Scheduler&lt;br /&gt;
aufgerufen wird.&lt;br /&gt;
&lt;br /&gt;
# Prozess blockiert wegen einer Ausgabe oder Eingabe.&lt;br /&gt;
# Gibt Rechenzeit freiwillig ab.&lt;br /&gt;
# Der Slice endet.&lt;br /&gt;
&lt;br /&gt;
Der Aufruf des Schedulers bewirkt das der Prozess mit der niedrigsten Priorität&lt;br /&gt;
gescheduled wird, er also nun rechnen darf. Nach Ablauf der agingtime werden&lt;br /&gt;
nun die Prozesse &amp;quot;gealtert&amp;quot;. Das geschieht nach folgender Formel&lt;br /&gt;
&lt;br /&gt;
Neue Priorität = Alte Priorität / 2 + Nicewert&lt;br /&gt;
&lt;br /&gt;
Der User hat die Möglichkeit, über den sogenannten Nicefaktor den Grundwert für&lt;br /&gt;
einen Prozess zu senken. Der Prozess braucht dann länger für seine Abarbeitung.&lt;br /&gt;
Er verhält sich somit netter zu den anderen Prozessen. Normale User können nur&lt;br /&gt;
netter werden, der Systemverwalter kann auch nicht netter (gemeiner) werden. Der&lt;br /&gt;
Bereich liegt zwischen 19 (sehr nett) bis 0 (weniger nett) für die User, und 19 bis&lt;br /&gt;
-20 für root.&lt;br /&gt;
&lt;br /&gt;
[[Image:pri.png]]&lt;br /&gt;
&lt;br /&gt;
'''Signale'''&lt;br /&gt;
&lt;br /&gt;
Mit den Kommando kill und killall kann man Prozessen Signale schicken&lt;br /&gt;
&lt;br /&gt;
 kill -Signalnummer PID &lt;br /&gt;
&lt;br /&gt;
Signalnummer&lt;br /&gt;
{| border=1 cellpadding=2&lt;br /&gt;
!Signalname&lt;br /&gt;
!Wert&lt;br /&gt;
!Aktion&lt;br /&gt;
|-&lt;br /&gt;
|SIGHUP&lt;br /&gt;
|1&lt;br /&gt;
|Neuinitialisierung eines Prozesses&lt;br /&gt;
|-&lt;br /&gt;
|SIGINT&lt;br /&gt;
|2&lt;br /&gt;
|Interrupt-Signal von der Tastatur (STRG+c)&lt;br /&gt;
|-&lt;br /&gt;
|SIGQUIT&lt;br /&gt;
|3&lt;br /&gt;
|Interrupt-Signal von der Tastatur (STRG+c) mit Dump&lt;br /&gt;
|-&lt;br /&gt;
|SIGKILL&lt;br /&gt;
|9&lt;br /&gt;
|unwiderrufliches Beendigungssignal (Töten)&lt;br /&gt;
|-&lt;br /&gt;
|SIGSEGV&lt;br /&gt;
|11&lt;br /&gt;
|Ungültige Speicherreferenz (bedeutet oft auf defekten Speicher)&lt;br /&gt;
|-&lt;br /&gt;
|SIGTERM &lt;br /&gt;
|15&lt;br /&gt;
|Beendigungssignal (geöffnete Dateien werden geschlossen)&lt;br /&gt;
|-&lt;br /&gt;
|SIGCONT &lt;br /&gt;
|18&lt;br /&gt;
|Weiterfahren, wenn gestoppt&lt;br /&gt;
|-&lt;br /&gt;
|SIGSTOP&lt;br /&gt;
|19&lt;br /&gt;
|Prozessstop&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Beispiel&lt;br /&gt;
 root@zero:~# kill -1 7562&lt;br /&gt;
&lt;br /&gt;
===Programme im Zusammenhang mit Prozessen===&lt;br /&gt;
* ps: Zeigt die Prozesse mit ihrem Status an&lt;br /&gt;
 root@zero:~# ps&lt;br /&gt;
  PID TTY          TIME CMD&lt;br /&gt;
 14134 pts/0    00:00:00 bash&lt;br /&gt;
 14149 pts/0    00:00:00 ps&lt;br /&gt;
&lt;br /&gt;
 root@zero:~# ps -elf | grep apache&lt;br /&gt;
 1 S root      5738     1  0  80   0 -  5461 select Jun16 ?        00:00:00 /usr/sbin/apache2 -k start&lt;br /&gt;
 5 S www-data  5739  5738  0  80   0 -  5581 inet_c Jun16 ?        00:00:00 /usr/sbin/apache2 -k start&lt;br /&gt;
 5 S www-data  5742  5738  0  80   0 -  5461 inet_c Jun16 ?        00:00:00 /usr/sbin/apache2 -k start&lt;br /&gt;
 5 S www-data  5743  5738  0  80   0 -  5461 inet_c Jun16 ?        00:00:00 /usr/sbin/apache2 -k start&lt;br /&gt;
 5 S www-data  5745  5738  0  80   0 -  5461 inet_c Jun16 ?        00:00:00 /usr/sbin/apache2 -k start&lt;br /&gt;
 5 S www-data  5746  5738  0  80   0 -  5461 inet_c Jun16 ?        00:00:00 /usr/sbin/apache2 -k start&lt;br /&gt;
 0 S root     14153 14134  0  80   0 -   837 pipe_w 16:59 pts/0    00:00:00 grep apache&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* nice: Lässt ein Programm mit verändertem Grundwert der Priorität laufen&lt;br /&gt;
 root@zero:~# nice&lt;br /&gt;
 0&lt;br /&gt;
 root@zero:~# nice -n 9 bash&lt;br /&gt;
 root@zero:~# nice&lt;br /&gt;
 9&lt;br /&gt;
 root@zero:~#&lt;br /&gt;
&lt;br /&gt;
* renice: Ändert den Grundwert der Priorität eines laufenden Prozesses&lt;br /&gt;
 root@zero:~# renice 10 5742&lt;br /&gt;
 5742: Alte Priorität: 0, neue Priorität: 10&lt;br /&gt;
&lt;br /&gt;
* top: Zeigt die Prozesse mit ihrem Status an (Abbrechen mit q)&lt;br /&gt;
 root@zero:~# top&lt;br /&gt;
&lt;br /&gt;
* pstree: Zeigt die Prozesse als Baumstruktur&lt;br /&gt;
 root@zero:~# pstree&lt;br /&gt;
 init─┬─NetworkManager&lt;br /&gt;
      ├─acpid&lt;br /&gt;
      ├─apache2───5*[apache2]&lt;br /&gt;
      ├─atd&lt;br /&gt;
      ├─bluetoothd&lt;br /&gt;
      ├─console-kit-dae───63*[{console-kit-dae}]&lt;br /&gt;
      ├─cron&lt;br /&gt;
      ├─cupsd&lt;br /&gt;
      ├─dbus-daemon&lt;br /&gt;
      ├─dd&lt;br /&gt;
      ├─gdm───gdm─┬─Xorg&lt;br /&gt;
      │           └─gdmgreeter&lt;br /&gt;
      ├─6*[getty]&lt;br /&gt;
      ├─hald───hald-runner─┬─hald-addon-acpi&lt;br /&gt;
      │                    ├─hald-addon-inpu&lt;br /&gt;
      │                    └─2*[hald-addon-stor]&lt;br /&gt;
      ├─klogd&lt;br /&gt;
      ├─nm-system-setti&lt;br /&gt;
      ├─nmbd&lt;br /&gt;
      ├─nscd───11*[{nscd}]&lt;br /&gt;
      ├─portmap&lt;br /&gt;
      ├─rpc.statd&lt;br /&gt;
      ├─slapd───2*[{slapd}]&lt;br /&gt;
      ├─smbd───smbd&lt;br /&gt;
      ├─sshd───sshd───bash───bash───pstree&lt;br /&gt;
      ├─syslogd&lt;br /&gt;
      ├─system-tools-ba&lt;br /&gt;
      ├─udevd&lt;br /&gt;
      ├─winbindd─┬─winbindd───winbindd&lt;br /&gt;
      │          └─3*[winbindd]&lt;br /&gt;
      └─wpa_supplicant&lt;br /&gt;
&lt;br /&gt;
===Jobs===&lt;br /&gt;
Unter einem Job versteht man ein Programm, welches man von der Shell gelöst&lt;br /&gt;
hat. D. h. man kann ganz normal weiter arbeiten und der Job verrichtet seinen&lt;br /&gt;
Dienst im Hintergrund. Man kann jederzeit zu diesem Job wieder Kontakt&lt;br /&gt;
aufnehmen.&lt;br /&gt;
&lt;br /&gt;
Ein Job kann auf 2 Arten gestarten werden:&lt;br /&gt;
&lt;br /&gt;
# Durch Anhängen des &amp;amp; Zeichens beim Programmstart&lt;br /&gt;
 root@zero:~# tail -f /var/log/messages &amp;amp;&lt;br /&gt;
 Jun 19 06:59:31 zero -- MARK --&lt;br /&gt;
 Jun 19 07:19:31 zero -- MARK --&lt;br /&gt;
 Jun 19 07:39:32 zero -- MARK --&lt;br /&gt;
 Jun 19 07:44:57 zero syslogd 1.5.0#5ubuntu3: restart.&lt;br /&gt;
 Jun 19 07:59:32 zero -- MARK --&lt;br /&gt;
 Jun 19 08:19:32 zero -- MARK --&lt;br /&gt;
 Jun 19 08:39:32 zero -- MARK --&lt;br /&gt;
 Jun 19 08:59:32 zero -- MARK --&lt;br /&gt;
 Jun 19 09:19:33 zero -- MARK --&lt;br /&gt;
 Jun 19 09:39:33 zero -- MARK --&lt;br /&gt;
 [3] 27421&lt;br /&gt;
&lt;br /&gt;
# Durch Stoppen des Prozesses durch Drücken von Strg-Z und in den Hintergrund schicken mit %n (n ist die Jobnummer)&lt;br /&gt;
 root@zero:~# watch cat /proc/cpuinfo&lt;br /&gt;
 Strg-Z&lt;br /&gt;
 [4]+  Stopped                 watch cat /proc/cpuinfo&lt;br /&gt;
 root@zero:~# bg %4&lt;br /&gt;
 [4]+ watch cat /proc/cpuinfo &amp;amp;&lt;br /&gt;
&lt;br /&gt;
Anweisungen im Zusammenhang mit Jobs (n ist die Jobnummer)&lt;br /&gt;
* bg %n : Einen Job in den Hintergrund stellen (wie oben)&lt;br /&gt;
* fg %n : Einen Job in den Vordergrund holen&lt;br /&gt;
 root@zero:~# fg %4&lt;br /&gt;
 watch cat /proc/cpuinfo&lt;br /&gt;
&lt;br /&gt;
* jobs : Aktive Jobs ausgeben&lt;br /&gt;
&lt;br /&gt;
 root@zero:~# jobs&lt;br /&gt;
 [1]   Running                 tail -f /var/log/syslog &amp;amp;&lt;br /&gt;
 [2]   Running                 tail -f /var/log/syslog &amp;amp;&lt;br /&gt;
 [3]-  Running                 tail -f /var/log/messages &amp;amp;&lt;br /&gt;
 [4]+  Stopped                 watch cat /proc/cpuinfo&lt;br /&gt;
&lt;br /&gt;
* Strg-Z : Einen Vordergrund-Job vorübergehend anhalten&lt;br /&gt;
* kill -STOP %n : Unterbricht Job im Hintergrund&lt;br /&gt;
 root@zero:~# kill -STOP %1&lt;br /&gt;
 root@zero:~# jobs&lt;br /&gt;
 [1]+  '''Stopped'''                 tail -f /var/log/syslog&lt;br /&gt;
 [2]   Running                 tail -f /var/log/syslog &amp;amp;&lt;br /&gt;
 [3]   Running                 tail -f /var/log/messages &amp;amp;&lt;br /&gt;
 [4]-  Stopped                 watch cat /proc/cpuinfo&lt;br /&gt;
* kill -CONT %n : Setzt den unterbrochenen Job im Hintergrund fort&lt;br /&gt;
root@zero:~# kill -CONT %1&lt;br /&gt;
root@zero:~# jobs&lt;br /&gt;
 [1]+  '''Running'''                 tail -f /var/log/syslog &amp;amp;&lt;br /&gt;
 [2]   Running                 tail -f /var/log/syslog &amp;amp;&lt;br /&gt;
 [3]   Running                 tail -f /var/log/messages &amp;amp;&lt;br /&gt;
 [4]-  Stopped                 watch cat /proc/cpuinfo&lt;br /&gt;
* kill -KILL %n : Tötet Job im Hintergrund&lt;br /&gt;
 root@zero:~# kill -KILL %1&lt;br /&gt;
 root@zero:~# jobs&lt;br /&gt;
 [1]+  '''Killed'''                  tail -f /var/log/syslog&lt;br /&gt;
 [2]   Running                 tail -f /var/log/syslog &amp;amp;&lt;br /&gt;
 [3]   Running                 tail -f /var/log/messages &amp;amp;&lt;br /&gt;
 [4]-  Stopped                 watch cat /proc/cpuinfo&lt;br /&gt;
 root@zero:~# jobs&lt;br /&gt;
 [2]   Running                 tail -f /var/log/syslog &amp;amp;&lt;br /&gt;
 [3]-  Running                 tail -f /var/log/messages &amp;amp;&lt;br /&gt;
 [4]+  Stopped                 watch cat /proc/cpuinfo&lt;br /&gt;
&lt;br /&gt;
Bedingungen, die zu Jobausführung eingehalten werden sollen:&lt;br /&gt;
* Der Job soll nicht auf den Bildschirm schreiben (Standardausgabe +Standardfehlerkanal).&lt;br /&gt;
* Er soll keine Eingaben vom Benutzer erwarten.&lt;br /&gt;
&lt;br /&gt;
==Suchen von Dateien==&lt;br /&gt;
===find===&lt;br /&gt;
 find ab_wo_wird_gesucht was_wird_gesucht aktion&lt;br /&gt;
 find [Pfad] [Bedingung] [Aktion]&lt;br /&gt;
&lt;br /&gt;
====Nach Namen====&lt;br /&gt;
 find [Pfad] '''-name''' [Name]&lt;br /&gt;
 &lt;br /&gt;
Finde alle Dateien mit Namen test ab dem Verzeichnis /home und gebe diese Zeilenweise aus&lt;br /&gt;
 root@zero:~# find /home -name test -print&lt;br /&gt;
 /home/xinux/test&lt;br /&gt;
 /home/test&lt;br /&gt;
&lt;br /&gt;
Wie oben, jedoch mit Namensanfang test&lt;br /&gt;
 root@zero:/home/xinux# find /home -name 'test*'&lt;br /&gt;
 /home/xinux/testdatei&lt;br /&gt;
 /home/xinux/test&lt;br /&gt;
 /home/test&lt;br /&gt;
&lt;br /&gt;
====Nach Benutzer(Eigentümer)====&lt;br /&gt;
 root@zero:/tmp# find /tmp/ '''-user''' xinux&lt;br /&gt;
 /tmp/datei&lt;br /&gt;
&lt;br /&gt;
====Nach Gruppe====&lt;br /&gt;
 root@zero:/tmp# find /tmp/ '''-group''' hacker&lt;br /&gt;
 /tmp/datei3&lt;br /&gt;
 /tmp/datei2&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
====Nach Typ====&lt;br /&gt;
Es wird nach Dateien anhand Ihrer Art gesucht:&lt;br /&gt;
 find [Pfad] '''-type''' [Typ] &lt;br /&gt;
Typ:&lt;br /&gt;
* f: Normale Dateien&lt;br /&gt;
 root@zero:~# find /tmp/ -type f&lt;br /&gt;
 /tmp/mbr.img&lt;br /&gt;
 /tmp/datei&lt;br /&gt;
 /tmp/zeugs&lt;br /&gt;
 /tmp/.X0-lock&lt;br /&gt;
* d: Verzeichnisse&lt;br /&gt;
 root@zero:~# find /var/log -type d&lt;br /&gt;
 /var/log&lt;br /&gt;
 /var/log/apache2&lt;br /&gt;
 /var/log/unattended-upgrades&lt;br /&gt;
 /var/log/apparmor&lt;br /&gt;
 /var/log/ConsoleKit&lt;br /&gt;
 /var/log/dist-upgrade&lt;br /&gt;
 /var/log/dist-upgrade/20090526-1052&lt;br /&gt;
 /var/log/cups&lt;br /&gt;
 /var/log/apt&lt;br /&gt;
 /var/log/fsck&lt;br /&gt;
 /var/log/samba&lt;br /&gt;
 /var/log/samba/cores&lt;br /&gt;
 /var/log/samba/cores/smbd&lt;br /&gt;
 /var/log/samba/cores/nmbd&lt;br /&gt;
 /var/log/samba/cores/winbindd&lt;br /&gt;
 /var/log/installer&lt;br /&gt;
 /var/log/gdm&lt;br /&gt;
 /var/log/news&lt;br /&gt;
* c: Char Devices (Zeichenorientierte Gerätedatei)&lt;br /&gt;
 root@zero:~# find / -type c&lt;br /&gt;
 /lib/udev/devices/kmem&lt;br /&gt;
 /lib/udev/devices/null&lt;br /&gt;
 /lib/udev/devices/console&lt;br /&gt;
 /lib/udev/devices/ppp&lt;br /&gt;
 /lib/udev/devices/net/tun&lt;br /&gt;
* b: Block Devices (Blockorientierte Gerätedatei)&lt;br /&gt;
* p: Benannte Pipe&lt;br /&gt;
* l: Links&lt;br /&gt;
* s: Sockets&lt;br /&gt;
&lt;br /&gt;
====Nach Modifikation====&lt;br /&gt;
Listet alle Dateien in /etc auf, die innerhalb von zwei Tagen modifiziert wurden&lt;br /&gt;
 root@zero:/var/log# find /etc/ -mtime 2 -print&lt;br /&gt;
 /etc/apache2&lt;br /&gt;
 /etc/apache2/mods-available&lt;br /&gt;
 /etc/apache2/conf.d&lt;br /&gt;
 /etc/apache2/sites-available&lt;br /&gt;
 /etc/bash_completion.d&lt;br /&gt;
 /etc/blkid.tab.old&lt;br /&gt;
 /etc/firefox-3.0/profile&lt;br /&gt;
 /etc/firefox-3.0/profile/chrome&lt;br /&gt;
 /etc/firefox-3.0/pref&lt;br /&gt;
 /etc/profile.d&lt;br /&gt;
 /etc/ufw/applications.d&lt;br /&gt;
 /etc/logrotate.d&lt;br /&gt;
 /etc/xulrunner-1.9&lt;br /&gt;
 /etc/blkid.tab&lt;br /&gt;
 /etc/cron.daily&lt;br /&gt;
 /etc/alternatives&lt;br /&gt;
 /etc/alternatives/x-www-browser&lt;br /&gt;
 /etc/alternatives/xulrunner&lt;br /&gt;
 /etc/gre.d&lt;br /&gt;
 /etc/hal/fdi/policy&lt;br /&gt;
 /etc/dbus-1/system.d&lt;br /&gt;
 /etc/udev/rules.d&lt;br /&gt;
&lt;br /&gt;
====Nach Größe====&lt;br /&gt;
Finde Dateien in /tmp, die größer als 100 MByte sind&lt;br /&gt;
 root@zero:/tmp# find /tmp/ -size +100M&lt;br /&gt;
 /tmp/datei&lt;br /&gt;
&lt;br /&gt;
Finde Dateien in /tmp, die kleiner als 100 KByte sind&lt;br /&gt;
 root@zero:/tmp# find /tmp/ -size -100k&lt;br /&gt;
 /tmp/&lt;br /&gt;
 /tmp/datei3&lt;br /&gt;
 /tmp/backup &lt;br /&gt;
 /tmp/datei2&lt;br /&gt;
 /tmp/.winbindd &lt;br /&gt;
 /tmp/.winbindd/pipe&lt;br /&gt;
 /tmp/mbr.img&lt;br /&gt;
 /tmp/zeugs&lt;br /&gt;
 /tmp/.ICE-unix&lt;br /&gt;
 /tmp/.X0-lock&lt;br /&gt;
 /tmp/datei1&lt;br /&gt;
 /tmp/.X11-unix&lt;br /&gt;
 /tmp/.X11-unix/X0&lt;br /&gt;
 /tmp/pulse-PKdhtXMmr18n&lt;br /&gt;
&lt;br /&gt;
====Nach Berechtigungen====&lt;br /&gt;
Finde Dateien in Home mit der Berechtigung 777 (-rwxrwxrwx)&lt;br /&gt;
 root@zero:/var# find /home/ -perm 777&lt;br /&gt;
 /home/samba&lt;br /&gt;
 /home/xinux/Examples&lt;br /&gt;
 /home/xinux/.pulse/1f0763ee4cf4c7e1d3c07fd149dda37b:runtime&lt;br /&gt;
 /home/test/Examples&lt;br /&gt;
&lt;br /&gt;
===locate===&lt;br /&gt;
Locate arbeitet über einen Index, der erstellt und aktualisiert werden muss. Aus diesem Grund kann locate teilweise nicht &lt;br /&gt;
akutell sein. Es ist immer schneller als find und es durchsucht immer das ganze Dateisystem. &lt;br /&gt;
 locate [Dateiname]&lt;br /&gt;
 &lt;br /&gt;
Lokalisiere die Datei wvdial.conf. Anmerkung: Der Stern wird beim Suchen automatisch hinzugefügt. Entspricht also&lt;br /&gt;
wvidal.conf*&lt;br /&gt;
 root@zero:~# locate wvdial.conf&lt;br /&gt;
 /etc/wvdial.conf&lt;br /&gt;
 /usr/share/man/man5/wvdial.conf.5.gz&lt;br /&gt;
 /var/lib/dpkg/info/wvdial.conffiles&lt;br /&gt;
 /var/lib/dpkg/info/wvdial.config&lt;br /&gt;
&lt;br /&gt;
Lokalisiere die Datei wvdial.conf und nur diese&lt;br /&gt;
 root@zero:~# locate -b '\wvdial.conf'&lt;br /&gt;
 /etc/wvdial.conf&lt;br /&gt;
&lt;br /&gt;
Aktualisieren des Indexes&lt;br /&gt;
 root@zero:~# updatedb&lt;br /&gt;
&lt;br /&gt;
==Wie wird ein Kommando lokalisiert==&lt;br /&gt;
Wenn die Shell alle Ersetzungen in der Kommandozeile vorgenommen und alle Umleitungen vorbereitet hat, ist der Zeitpunkt &lt;br /&gt;
gekommen, auf den der Anwender die ganze Zeit gewartet hat. Die Shell versucht das Kommando auszuführen. Dazu muss sie &lt;br /&gt;
es aber erst lokalisieren. Das erste passende Kommando wird ausgeführt.&lt;br /&gt;
&lt;br /&gt;
Als Kommandoname wird immer das erste Wort eines einfachen Kommandos erkannt. Ein Kommandoname kann mit Pfadnamen in &lt;br /&gt;
einem Verzeichnis (absolut oder relativ) angegeben werden. Die Shell erkennt dies an (mindestens) einem Slash `/' &lt;br /&gt;
im Kommandonamen. Wenn kein Verzeichnis angegeben ist, versucht die Shell selbst, das Kommando zu finden. Dazu wird &lt;br /&gt;
der Kommandoname zuerst in der Hashtabelle gesucht, dann wird er mit den Synonymen, mit den Scriptfunktionen und &lt;br /&gt;
schließlich mit den Shellfunktionen verglichen. &lt;br /&gt;
&lt;br /&gt;
Wird auf diese Weise kein Programm dieses Namens gefunden, werden alle in der PATH-Umgebungsvariablen aufgeführten &lt;br /&gt;
Verzeichnisse nach einer ausführbaren Datei dieses Namens durchsucht. Wird auch hier kein passendes Kommando gefunden, &lt;br /&gt;
gibt die Shell eine Fehlermeldung aus.&lt;br /&gt;
&lt;br /&gt;
===which und type===&lt;br /&gt;
====which====&lt;br /&gt;
which gibt die vollen Pfadnamen der Dateien aus, die bei Benutzung des angegebenen Befehls ausgeführt werden würden.&lt;br /&gt;
&lt;br /&gt;
 which [-a] Dateiname &lt;br /&gt;
&lt;br /&gt;
Optionen:&lt;br /&gt;
&lt;br /&gt;
* -a : Alle Treffer ausgeben, nicht nur den ersten&lt;br /&gt;
* --skip-dot : Verzeichnisse, die mit einem Punkt beginnen, auslassen&lt;br /&gt;
&lt;br /&gt;
Beispiel&lt;br /&gt;
 root@zero:~# which startx&lt;br /&gt;
 /usr/bin/startx&lt;br /&gt;
&lt;br /&gt;
====type====&lt;br /&gt;
Anzeigen der absoluten Pfadnamen von Befehlen, und ob sich diese Befehle in der Hash-Tabelle der aktuellen&lt;br /&gt;
Shell befinden.&lt;br /&gt;
&lt;br /&gt;
 type [Optionen] Befehle&lt;br /&gt;
&lt;br /&gt;
Beispiel&lt;br /&gt;
 root@zero:~# type ls&lt;br /&gt;
 ls is aliased to `ls --color=auto'&lt;br /&gt;
&lt;br /&gt;
Optionen:&lt;br /&gt;
&lt;br /&gt;
* -a : Alle vorkommenden Befehle werden ausgegeben, nicht nur das, welches aufgerufen werden würde&lt;br /&gt;
 root@zero:~# type '''-a''' ls&lt;br /&gt;
 ls is aliased to `ls --color=auto'&lt;br /&gt;
 ls is /bin/ls&lt;br /&gt;
&lt;br /&gt;
* -p : Anzeigen des Eintrags von Befehl in der Hash-Tabelle. Dieser Wert kann sich vom ersten Auftreten des Befehls in PATH&lt;br /&gt;
unterscheiden&lt;br /&gt;
 root@zero:~# type '''-p''' apache2&lt;br /&gt;
 /usr/sbin/apache2&lt;br /&gt;
&lt;br /&gt;
* -t : Anzeigen, ob Befehl ein Aliasname, ein Schlüsselwort, eine Funktion, ein eingebauter Befehl oder eine Datei ist&lt;br /&gt;
 root@zero:~# type '''-t''' apache2&lt;br /&gt;
 file&lt;/div&gt;</summary>
		<author><name>192.168.178.46</name></author>
	</entry>
	<entry>
		<id>https://www.xinux.net/index.php?title=Linux_Grundlagen&amp;diff=72</id>
		<title>Linux Grundlagen</title>
		<link rel="alternate" type="text/html" href="https://www.xinux.net/index.php?title=Linux_Grundlagen&amp;diff=72"/>
		<updated>2009-07-07T10:26:56Z</updated>

		<summary type="html">&lt;p&gt;192.168.178.46: /* join */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Einführung==&lt;br /&gt;
===Geschichte Unix===&lt;br /&gt;
====1969====&lt;br /&gt;
Am Anfang von Linux steht Multics, ein von Bell Laboratories geschaffenes &amp;quot;Betriebssystem&amp;quot;, &lt;br /&gt;
das noch mit Lochkarten arbeitete. Multics wird mit Unterstützung von AT&amp;amp;T und Western &lt;br /&gt;
Electric unter Mitarbeit von Ken Thompson und Dennis Ritchie weiterentwickelt. Obwohl sich &lt;br /&gt;
Bell Laboratories bald zurückzieht, gibt Thompson das Projekt nicht auf.  Zum Entwicklerteam &lt;br /&gt;
gehören auch Rudd Canaday und Brian Kernighan. Letzterer gibt 1970 dem Betriebssystem den Namen UNIX. &lt;br /&gt;
Thompson definiert 7 Richtlinien für UNIX:&lt;br /&gt;
 &lt;br /&gt;
# Hierarchische Anordnung der Dateisysteme&lt;br /&gt;
# Die Ausgabe von Daten an die Peripherie(-geräte) und Dateien soll gleich sein.&lt;br /&gt;
# Prozesse und Programme sollen miteinander kommunizieren.&lt;br /&gt;
# Multitasking (voneinander getrennte Prozesse)&lt;br /&gt;
# Persönliche Shell's&lt;br /&gt;
# Der Compiler soll für viele Programmiersprachen tauglich sein.&lt;br /&gt;
# Portabilität&lt;br /&gt;
&lt;br /&gt;
====1971====&lt;br /&gt;
Bis 1971 ist das für eine DEC PDP-7 geschriebene Unix als Version 1 auf eine PDP-11 portiert. Bis&lt;br /&gt;
zur Version 4 entwickelt Ritchie die Programmier- (Hoch-) Sprache C. Das in Assembler geschriebene&lt;br /&gt;
Unix wird fast völlig nach C übersetzt, wodurch zum erstenmal die geforderte Hardware-Unabhängigkeit&lt;br /&gt;
des Betriebssystems realisiert werden kann.&lt;br /&gt;
&lt;br /&gt;
====1975====&lt;br /&gt;
Da AT&amp;amp;T aufgrund vertraglicher Bindungen mit der US-Bundesregierung Unix nicht kommerziell vermarkten darf, stellt sie den Source Code für ein paar hundert Dollar den Universitäten, Lehr- und Forschungsanstalten zur Verfügung. Dies führt zu einer sehr dynamischen Entwicklung von Unix. 1975 wird die Version 6 als erstes UNIX-System veröffentlicht, die darauffolgende Version 7 wird sehr erfolgreich. Da es keine Standardisierung gibt, entwickeln bald verschiedenste Firmen ihr eigenes UNIX. Ab 1984 wird AT&amp;amp;T per Gerichtsbeschluss erlaubt, Unix zu vermarkten. AT&amp;amp;T verkauft sein Unix V und beginnt, sich um einen internationalen Standard von UNIX zu bemühen. &lt;br /&gt;
&lt;br /&gt;
====1984====&lt;br /&gt;
Durch Richard Stallman wird die Free Software Foundation (FSF) gegründet. Diese initiiert ein Projekt namens GNU (GNU ist Not Unix), welches das Ziel verfolgt, ein freies UNIX System zu schaffen. &lt;br /&gt;
&lt;br /&gt;
====1987====&lt;br /&gt;
AT&amp;amp;T verbietet die Verwendung des Unix Quellcodes an den Universitäten. Während dieser Zeit ist Andrew (Andy) Tannenbaum Professor an der Freien Universität von Amsterdam und entwickelt Minix. Minix ist ein kostengünstiges Lehrbetriebssystem und kommt ohne jeglichen AT&amp;amp;T Code aus, obwohl es die gleiche Funktionalität wie Unix 7 bietet. Im Usenet unter comp.os.minix entsteht eine Minix-Gemeinde, die den Minix Kernel und die Anwendungen rundherum programmiert und verbessert.&lt;br /&gt;
&lt;br /&gt;
====1991====&lt;br /&gt;
Linus Torvalds hat als Student für Computerwissenschaften an der Universität in Helsinki Minix installiert und das Buch von Andy Tannenbaum gelesen. Er beginnt im Sinne der FSF einen Unix ähnlichen Kernel zu programmieren mit der Idee, &amp;quot;ein besseres Minix als Minix&amp;quot; zu bauen. 1992 stellt er die Version 0.02 mit dem Namen Linux der Internetgemeinde zur Verfügung. &lt;br /&gt;
&lt;br /&gt;
====1994====&lt;br /&gt;
Die Linux Version 1.0 wird freigegeben. Das Linux Fieber beginnt... &lt;br /&gt;
&lt;br /&gt;
====1998====&lt;br /&gt;
Der Kreis der Linux Entwickler und Anwender ist kräftig angeschwollen. KDE 1.0 wird veröffentlicht. Die Zuwachsraten von Linux übertreffen die von Windows NT deutlich. &lt;br /&gt;
&lt;br /&gt;
====1999====&lt;br /&gt;
Der lange erwartete stabile Linux Kernel Version 2.2 wird freigegeben. Namhafte Firmen wie IBM kündigen ihre Unterstützung für Linux an. &lt;br /&gt;
&lt;br /&gt;
====2001====&lt;br /&gt;
Der lange erwartete stabile Linux Kernel Version 2.4 wird freigegeben. USB Unterstützung und eine neue Firewallimplementierung zeichnen ihn aus.&lt;br /&gt;
&lt;br /&gt;
====2003====&lt;br /&gt;
Linux Kernel Version 2.6 wird freigegeben. Am auffälligsten sind Änderungen bei der Modulverwaltung.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Distributionen===&lt;br /&gt;
{| Border=1 Cellpadding=2&lt;br /&gt;
| &lt;br /&gt;
|Url&lt;br /&gt;
|Paketformat&lt;br /&gt;
|-&lt;br /&gt;
|Red Hat&lt;br /&gt;
|www.redhat.com&lt;br /&gt;
|rpm&lt;br /&gt;
|-&lt;br /&gt;
|fedora&lt;br /&gt;
|fedora.redhat.com&lt;br /&gt;
|rpm&lt;br /&gt;
|-&lt;br /&gt;
|CentOS&lt;br /&gt;
|www.centos.org&lt;br /&gt;
|rpm&lt;br /&gt;
|-&lt;br /&gt;
|Suse/openSUSE&lt;br /&gt;
|www.opensuse.org&lt;br /&gt;
|rpm&lt;br /&gt;
|-&lt;br /&gt;
|Debian&lt;br /&gt;
|www.debian.org&lt;br /&gt;
|deb&lt;br /&gt;
|-&lt;br /&gt;
|Ubuntu&lt;br /&gt;
|www.ubuntu.com&lt;br /&gt;
|deb&lt;br /&gt;
|-&lt;br /&gt;
|Mandrake&lt;br /&gt;
|www.linux-mandrake.com&lt;br /&gt;
|rpm&lt;br /&gt;
|-&lt;br /&gt;
|Easy Linux&lt;br /&gt;
|www.easy-linux.de&lt;br /&gt;
|rpm&lt;br /&gt;
|-&lt;br /&gt;
|Turbo&lt;br /&gt;
|www.turbolinux.com&lt;br /&gt;
|rpm&lt;br /&gt;
|-&lt;br /&gt;
|minis&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|toms&lt;br /&gt;
|www.toms.net/rb&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|damn small linux&lt;br /&gt;
|www.damnsmalllinux.org&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|pocket-linux&lt;br /&gt;
|www.pocket-linux.org&lt;br /&gt;
|&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
====Bücher====&lt;br /&gt;
 Titel : Das Linux Anwenderhandbuch und Leitfaden für die Systemverwaltung&lt;br /&gt;
 Autor : Sebastian Hetze, Dirk Hohndel, Olaf Kirch und Martin Müller&lt;br /&gt;
 Verlag: Lunetix&lt;br /&gt;
 ISBN : 3-929764-06-7&lt;br /&gt;
&lt;br /&gt;
 Titel : Linux in a Nutshell&lt;br /&gt;
 Autor : Jessica Perry Hekman und die Mitarbeiter von O'Reilly &amp;amp; Associates&lt;br /&gt;
 Verlag: O'Reilly&lt;br /&gt;
 ISBN : 3-930673-57-6&lt;br /&gt;
&lt;br /&gt;
 Titel : Linux - Wegweiser zur Installation und Konfiguration&lt;br /&gt;
 Autor : Matt Welsh, Lar Kaufman, Matthias Kalle Dallheimer&lt;br /&gt;
 Verlag: O'Reilly&lt;br /&gt;
 ISBN : 3-930673-58-4 (deutsch), 1-56592-469-X (englisch)&lt;br /&gt;
&lt;br /&gt;
 Titel : Linux - Installation, Konfiguration, Anwendung&lt;br /&gt;
 Autor : Michael KoflerMultitasking&lt;br /&gt;
 Verlag: Addison-Wesley&lt;br /&gt;
 ISBN : 3-8273-1475-5&lt;br /&gt;
&lt;br /&gt;
 Titel : Linux - Wegweiser für Netzwerker&lt;br /&gt;
 Autor : Olaf Kirch&lt;br /&gt;
 Verlag: O'Reilly&lt;br /&gt;
 ISBN : 3-930673-18-5&lt;br /&gt;
&lt;br /&gt;
 Titel : TCP/IP-Netzwerk-Administration&lt;br /&gt;
 Autor : Craig Hunt&lt;br /&gt;
 Verlag: O'Reilly&lt;br /&gt;
 ISBN : 3-89721-110-6&lt;br /&gt;
&lt;br /&gt;
 Titel : Essential System Administration&lt;br /&gt;
 Autor : Eleen Frisch&lt;br /&gt;
 Verlag: O'Reilly&lt;br /&gt;
 ISBN : 1-56592-127-5&lt;br /&gt;
&lt;br /&gt;
==Betriebssystem==&lt;br /&gt;
===Was ist ein Betriebssystem?===&lt;br /&gt;
&lt;br /&gt;
Ein Betriebssystem liegt logisch gesehen zwischenAnwendungsprogramm und Hardware.&lt;br /&gt;
&lt;br /&gt;
Es nimmt die Anforderungen der Anwendungsprogramme entgegen und leitet&lt;br /&gt;
diese kontrolliert an die Hardware weiter. Kein Anwendungsprogramm sollte&lt;br /&gt;
direkt auf die Hardware zugreifen können. Den zentralen Zugang schafft einzig&lt;br /&gt;
das Betriebssystem. Somit kann das Betriebssystem unsinnige Anforderungen&lt;br /&gt;
oder Bedienungsfehler abblocken.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Image:Linux.jpg]]&lt;br /&gt;
&lt;br /&gt;
===Aufgaben eines Betriebssystems===&lt;br /&gt;
&lt;br /&gt;
# Verbergen der Komplexität der Maschine vor dem Anwender (Abstraktion)&lt;br /&gt;
# Bereitstellen einer Benutzerschnittstelle (&amp;quot;Kommandointerpreter&amp;quot;, &amp;quot;Shell&amp;quot;)&lt;br /&gt;
# Bereitstellen einer normierten Programmierschnittstelle (API)&lt;br /&gt;
# Verwaltung der Ressourcen der Maschine::&lt;br /&gt;
Hauptspeicher&lt;br /&gt;
Prozessor(en)&lt;br /&gt;
Hintergrundspeicher (Platte, Band, etc.)&lt;br /&gt;
Geräte (Terminal, Drucker, Plotter, etc.)&lt;br /&gt;
Rechenzeit&lt;br /&gt;
Koordination von Prozessen&lt;br /&gt;
&lt;br /&gt;
===Aufbau eines Betriebssystems===&lt;br /&gt;
&lt;br /&gt;
Ein Rechensystem besteht aus Hardware, Systemprogrammen und Anwendungs-&lt;br /&gt;
programmen. Unter einem Betriebssystem wird meist die Summe aus Betriebs-&lt;br /&gt;
systemkern (Kernel) und den wichtigsten Systemprogrammen verstanden. Ein&lt;br /&gt;
minimaler LINUX-Kernel besitzt ungefähr eine Größe von 400 - 800 kByte.&lt;br /&gt;
Weitere wichtige Systemkomponenten benötigen zusätzlich 10 - 100 Mbyte&lt;br /&gt;
Plattenplatz.&lt;br /&gt;
&lt;br /&gt;
Ein Betriebssystem stellt den Rechner als erweiterte Maschine (virtuelle&lt;br /&gt;
Maschine) über definierte Software-Schnittstellen zur Verfügung.&lt;br /&gt;
Das Betriebssystem dient als Betriebsmittelverwalter, der Anforderungen&lt;br /&gt;
befriedigt, protokolliert, abrechnet und vermittelt.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Aufgaben des Betriebssystemkerns:&lt;br /&gt;
&lt;br /&gt;
{| Border=1 Cellpadding=2&lt;br /&gt;
|Prozessverwaltung  (dispatching and scheduling)&lt;br /&gt;
| Mehrere Benutzer können mit mehreren Aktionen gleichzeitig im System arbeiten, ohne sich gegenseitig zu beeinflussen. Damit dies möglich ist,  müssen die Aktionen organisiert, koordiniert und verwaltet werden. Die zu verwaltende Einheit nennt man Prozess.&lt;br /&gt;
|-&lt;br /&gt;
|Speicherverwaltung   (memory management)&lt;br /&gt;
|Zuteilen von Speicherbereichen an laufende Prozesse, Schutz der Speicherbereiche vor unbefugten Zugriffen, bei Speicherengpässen: Auslagern von ganzen (swapping) oder von Teilen (paging) von Prozessen auf die Platte (swap file).&lt;br /&gt;
|-&lt;br /&gt;
|Dateiverwaltung  (file handling)&lt;br /&gt;
|Zuteilung von Plattenplatz für Programme, Benutzer und Systemdienste, Schreiben, Lesen und Strukturieren der Daten auf den Massenspeichern; Durch Bereitstellung einer entsprechenden Schnittstelle (VFS, virtual file system) kann der Kern Dateisysteme unterschiedlichster Art (EXT2, FAT, NFS, HPFS, NTFS, ...) ansprechen.&lt;br /&gt;
|-&lt;br /&gt;
|Geräteverwaltung  (resource management)&lt;br /&gt;
|Der Kern ermöglicht und kontrolliert den Zugriff auf die Hardware. Er steuert die Ein- und Ausgabetätigkeiten der Anwender. An den Kern&lt;br /&gt;
gebunden sind die entsprechenden Gerätetreiber (device driver), die damit eine Kommunikation zwischen Kern und Hardware ermöglichen.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
===Multitasking===&lt;br /&gt;
&lt;br /&gt;
Multitasking bedeutet, dass ein Rechner aus Anwendersicht mehrere Aufgaben&lt;br /&gt;
(Tasks) gleichzeitg übernehmen kann. Das Betriebssystem (OS) unterteilt die&lt;br /&gt;
gleichzeitig anstehenden Aufgaben in Einzelarbeitsschritte (Prozesse) und&lt;br /&gt;
managed durch ein Zeitscheibenverfahren (scheduling) die gleichmäßige&lt;br /&gt;
Abarbeitung der Prozesse.&lt;br /&gt;
&lt;br /&gt;
Es wird unterschieden zwischen:&lt;br /&gt;
&lt;br /&gt;
*non-präamptiven (kooperativen=die Ressourcen werden vom aktiven Prozess freigegeben, bei einem Hänger steht das ganze System)&lt;br /&gt;
&lt;br /&gt;
und&lt;br /&gt;
&lt;br /&gt;
*präamptiven (reinem=der Betriebssystemkern steuert Taskwechsel, indem nach einer festgelegten Zeit vom gerade aktiven Prozess zum nächsten weitergeschaltet wird)&lt;br /&gt;
&lt;br /&gt;
===Mehrprozessorbetrieb===&lt;br /&gt;
&lt;br /&gt;
Bei mehreren Prozessoren und Unterstützung durch das OS&lt;br /&gt;
(NT,Linux,Unix,Novell) können mehrere Tasks auf diese verteilt werden und&lt;br /&gt;
gleichzeitig bearbeitet werden. Nachteilig ist, dass dies nicht oder kaum von&lt;br /&gt;
Anwendungsprogrammen unterstützt wird und es zu Kommunikationsproblemen&lt;br /&gt;
zwischen den einzelnen Tasks kommen kann.&lt;br /&gt;
&lt;br /&gt;
===Arten von von Betriebssystemen===&lt;br /&gt;
&lt;br /&gt;
{|Border=1 Cellpadding=2&lt;br /&gt;
|&lt;br /&gt;
|SingleUser  &lt;br /&gt;
|Multiuser&lt;br /&gt;
|-&lt;br /&gt;
|Single Tasking&lt;br /&gt;
|MS - DOS&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|Multi Tasking&lt;br /&gt;
|Windows 3.x&lt;br /&gt;
|UNIX&lt;br /&gt;
|-&lt;br /&gt;
|&lt;br /&gt;
|Windows 95/98&lt;br /&gt;
|Linux&lt;br /&gt;
|-&lt;br /&gt;
|&lt;br /&gt;
|Windows NT4 ohne Erweiterungen&lt;br /&gt;
|VMS&lt;br /&gt;
|-&lt;br /&gt;
|&lt;br /&gt;
|OS/2 &lt;br /&gt;
|Windows NT mit  Erweiterungen&lt;br /&gt;
|-&lt;br /&gt;
|&lt;br /&gt;
|Apple&lt;br /&gt;
|Windows 2000, XP, 2003&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
===SHELL===&lt;br /&gt;
&lt;br /&gt;
Wenn man mit Linux arbeiten will, kann man nicht direkt mit dem Betriebssystem&lt;br /&gt;
kommunizieren. Man braucht dazu ein Hilfsprogramm, welches die&lt;br /&gt;
Kommandoeingaben ordnungsgemäß an das Betriebssystem weiterleitet. Dieses&lt;br /&gt;
Hilfsprogramm hat den Namen Shell.&lt;br /&gt;
&lt;br /&gt;
Die Shell schirmt den Betriebssystemkern von den Anwendungsprogrammen ab.&lt;br /&gt;
Die unterschiedlichen Shells erfüllen alle dieselbe Aufgabe, sie unterscheiden sich&lt;br /&gt;
allerdings in ihrer Syntax.&lt;br /&gt;
&lt;br /&gt;
==Die Installation im Überblick==&lt;br /&gt;
&lt;br /&gt;
Die Installation von Linux geschieht in folgenden Schritten:&lt;br /&gt;
&lt;br /&gt;
# Analyse (Welche Hardware habe ich? ,Hab ich weitere Betriebsysteme?)&lt;br /&gt;
# Booten des Linux-Kernels. (von CD oder Diskette)&lt;br /&gt;
# Laden einer RAM-Disk (das macht das Installationsprogramm automatisch).&lt;br /&gt;
# Partitionieren der Festplatte (fdisk).&lt;br /&gt;
# Einrichten der Swappartition (mkswap), Formatieren der Festplatte (mkfs).&lt;br /&gt;
# Montieren der Dateisysteme (mount), Aktivieren der Swapbereiche (swapon).&lt;br /&gt;
# Kopieren und Auspacken der Daten vom Installationsmedium auf die Festplatte (die eigentliche Installation). (rpm, dpkg oder tar).&lt;br /&gt;
# Geeignete Wahl der Bootmethode unter Berücksichtigung von Punkt 1 (grub, lilo).&lt;br /&gt;
# Konfiguration des Systems (Netz, Modem etc...).&lt;br /&gt;
&lt;br /&gt;
==Erste Schritte==&lt;br /&gt;
===Anmelden===&lt;br /&gt;
Sie können sich nun mit dem Usernamen und dem Passwort, das sie bei der Installation angelegt haben anmelden!&lt;br /&gt;
[[Image:benutzer.jpg]]&lt;br /&gt;
&lt;br /&gt;
[[Image:passwd.jpg]]&lt;br /&gt;
&lt;br /&gt;
===Terminal öffnen===&lt;br /&gt;
&lt;br /&gt;
Ein Terminal öffnen Sie über das Startmenü:&lt;br /&gt;
&lt;br /&gt;
[[Image:Terminalde.jpg]]&lt;br /&gt;
&lt;br /&gt;
Das geöffnete Terminal sieht dann folgendermaßen aus:&lt;br /&gt;
&lt;br /&gt;
[[Image:Terminalde2.jpg]]&lt;br /&gt;
&lt;br /&gt;
===Sudo===&lt;br /&gt;
Rootrechte erlangen sie über den &amp;quot;Sudo&amp;quot;-Befehl&lt;br /&gt;
 &lt;br /&gt;
''Den nächsten Befehl als root ausführen''&lt;br /&gt;
 xinux@zero:~$ sudo cat /etc/shadow&lt;br /&gt;
 [sudo] password for xinux:&lt;br /&gt;
&lt;br /&gt;
''Eine komplette Sitzung als root starten''&lt;br /&gt;
 xinux@zero:~$ sudo -i&lt;br /&gt;
 [sudo] password for xinux:&lt;br /&gt;
 root@zero:~#&lt;br /&gt;
&lt;br /&gt;
===Virtuelle Konsolen===&lt;br /&gt;
&lt;br /&gt;
In die Virtuelle Konsole gelangen sie über &amp;quot;STRG+ALT+(F1-F6)&amp;quot;.&lt;br /&gt;
Sie funktioniert wie ein ganz normales Terminal, und mit &amp;quot;ALT+F7&amp;quot;&lt;br /&gt;
gelangen sie wieder zurück auf die grafische Benutzeroberfläche&lt;br /&gt;
&lt;br /&gt;
===Abmelden===&lt;br /&gt;
&lt;br /&gt;
Abmelden können Sie sich wieder über das Startmenu unter:&lt;br /&gt;
&lt;br /&gt;
[[Image:Logout.jpg]]&lt;br /&gt;
&lt;br /&gt;
Fals sie nur einzelne Sitzungen in einem der Terminals oder &lt;br /&gt;
den Virtuellen Konsolen Abmelden wollen benutzen sie dazu den Befehl: &amp;quot;exit&amp;quot;&lt;br /&gt;
&lt;br /&gt;
===Herunterfahren===&lt;br /&gt;
&lt;br /&gt;
Das Herunterfahren funktioniert auf dem selben Weg.&lt;br /&gt;
&lt;br /&gt;
Entweder sie Benutzen wieder das Startmenü und benutzen diesmal den &amp;quot;Ausschalten ...&amp;quot; Knopf,&lt;br /&gt;
&lt;br /&gt;
Oder sie geben den äquivalenten &amp;quot;shutdown&amp;quot;-Befehl in einem Terminal bzw. der virtuellen Konsole ein.&lt;br /&gt;
&lt;br /&gt;
Allerdings müssen sie dazu als Administrator angemeldet sein s. &amp;quot;Sudo&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Wenn Sie den &amp;quot;shutdown&amp;quot;-Befehl benutzen wollen muss hinter den Befehl&lt;br /&gt;
&lt;br /&gt;
eine Zeitangabe in Minuten oder das wort &amp;quot;now&amp;quot; für sofortiges Ausschalten hinzugefügt werden:&lt;br /&gt;
&lt;br /&gt;
 xinux@zero:~$ sudo -i&lt;br /&gt;
 root@zero:~# shutdown 60&lt;br /&gt;
 &lt;br /&gt;
 Broadcast message from xinux@zero &lt;br /&gt;
         (/dev/pts/3) at 14:29 ...&lt;br /&gt;
 &lt;br /&gt;
 The system is going down for maintenance in 60 minutes!&lt;br /&gt;
&lt;br /&gt;
Sollten sie den Befehl widerrufen wollen dann drücken sie &amp;quot;STRG+C&amp;quot;,&lt;br /&gt;
&lt;br /&gt;
in dem Terminal in dem der shutdown Befehl gestartet wurde,&lt;br /&gt;
&lt;br /&gt;
oder geben sie den &amp;quot;shutdown&amp;quot;-Befehl zusammen mit der Abbruchoption &amp;quot;-c&amp;quot; in einem anderen Terminal ein:&lt;br /&gt;
&lt;br /&gt;
 root@zero:~# shutdown -c&lt;br /&gt;
&lt;br /&gt;
 shutdown: Shutdown cancelled&lt;br /&gt;
 root@zero:~# &lt;br /&gt;
&lt;br /&gt;
Wenn Sie den Rechner Neustarten möchten gibt es dazu die Option &amp;quot;-r&amp;quot; für den &amp;quot;shutdown&amp;quot;-Befehl&lt;br /&gt;
&lt;br /&gt;
oder den &amp;quot;reboot&amp;quot;-Befehl die beide auch als root ausgeführt werden müssen:&lt;br /&gt;
&lt;br /&gt;
 xinux@zero:~$ sudo -i&lt;br /&gt;
 [sudo] password for xinux: &lt;br /&gt;
 root@zero:~# shutdown -r now&lt;br /&gt;
&lt;br /&gt;
 root@zero:~# reboot&lt;br /&gt;
&lt;br /&gt;
===&amp;quot;man&amp;quot;===&lt;br /&gt;
&lt;br /&gt;
Programm zum Einsehen der Online-Manuals&lt;br /&gt;
&lt;br /&gt;
Die Manuals sind in folgende Sektionen unterteilt:&lt;br /&gt;
# Ausführbare Programme oder Shellbefehle&lt;br /&gt;
# Systemaufrufe (Kernelfunktionen)&lt;br /&gt;
# Bibliotheksaufrufe (Funktionen in System-Bibliotheken)&lt;br /&gt;
# Spezielle Dateien (gewöhnlich in /dev)&lt;br /&gt;
# Dateiformate und Konventionen, z. B. /etc/passwd&lt;br /&gt;
# Spiele&lt;br /&gt;
# Makropakete und Konventionen, z. B. man(7), groff(7)&lt;br /&gt;
# Systemadministrationsbefehle (in der Regel nur für root)&lt;br /&gt;
# Kernelroutinen [Nicht Standard]&lt;br /&gt;
&lt;br /&gt;
Aufruf eines Manuals erfolgt durch ''man kommando''&lt;br /&gt;
Beendet wird durch Drücken des Buchstabens q&lt;br /&gt;
Gesucht wird vorwärts durch Eingabe eines /suchausdruck&lt;br /&gt;
Gesucht wird rückwärts durch Eingabe eines ?suchausdruck&lt;br /&gt;
&lt;br /&gt;
Beispiele:&lt;br /&gt;
&lt;br /&gt;
      man passwd        Anschauen der Manualseite zum Programm passwd&lt;br /&gt;
      man 5 passwd      Anschauen der Manualseite zur Datei /etc/passwd&lt;br /&gt;
      man -a passwd     Anschauen aller Manualseiten zu passwd&lt;br /&gt;
      man -k passwd     Durchsucht die Kurzbeschreibungen der Manualseite&lt;br /&gt;
                        nach passwd und gibt alle Treffer aus&lt;br /&gt;
      man -f passwd      Gibt alle gefunden Kurzbescheibungen zu passwd aus&lt;br /&gt;
      man -L en passwd Gibt englische Manualseiten aus&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Was geht vor auf meinem System? (date,who)===&lt;br /&gt;
&lt;br /&gt;
Das Kommando date dient zur Abfrage von Datum und Uhrzeit.&lt;br /&gt;
&lt;br /&gt;
 xinux@zero:~ &amp;gt; date&lt;br /&gt;
 Fre Mär 16 16:35:03 CET 2001&lt;br /&gt;
&lt;br /&gt;
oder auch Anzeige der Grennwich Zeit:&lt;br /&gt;
&lt;br /&gt;
 xinux@zero:~ &amp;gt; date -u&lt;br /&gt;
 Fre Mär 16 15:35:34 UTC 2001&lt;br /&gt;
&lt;br /&gt;
 xinux@zero:~ &amp;gt; date -u &amp;quot;+%X&amp;quot;&lt;br /&gt;
 15:37:19&lt;br /&gt;
&lt;br /&gt;
 xinux@zero:~ &amp;gt; date -u &amp;quot;+%x&amp;quot;&lt;br /&gt;
 01/15/02&lt;br /&gt;
&lt;br /&gt;
who zeigt alle angemeldeten Benutzer an&lt;br /&gt;
&lt;br /&gt;
 thomas@cardassia:~ &amp;gt; who&lt;br /&gt;
 thomas             tty1 Feb 27 16:39&lt;br /&gt;
 thomas             tty2 Mar 2 17:08&lt;br /&gt;
 tina               tty6 Mar 16 16:38&lt;br /&gt;
&lt;br /&gt;
Mit `who --help' bekommen Sie mehr Informationen.&lt;br /&gt;
&lt;br /&gt;
 thomas@cardassia:~ &amp;gt; who --help&lt;br /&gt;
&lt;br /&gt;
Benutzung: who [OPTION]... [ DATEI | ARG1 ARG2 ]&lt;br /&gt;
&lt;br /&gt;
 -H, --heading             print line of column headings&lt;br /&gt;
 -i, -u, --idle            add user idle time as HOURS:MINUTES, . or old&lt;br /&gt;
 -l, --lookup              attempt to canonicalize hostnames via DNS&lt;br /&gt;
 -m                        only hostname and user associated with stdin&lt;br /&gt;
 -q, --count               all login names and number of users logged on&lt;br /&gt;
 -s                        (ignored)&lt;br /&gt;
 -T, -w, --mesg            add user's message status as +, - or ?&lt;br /&gt;
     --message             same as -T&lt;br /&gt;
     --writable            same as -T&lt;br /&gt;
     --help                display this help and exit&lt;br /&gt;
     --version             output version information and exit&lt;br /&gt;
&lt;br /&gt;
==Das UNIX-Dateisystem==&lt;br /&gt;
===Verzeichnisbaum===&lt;br /&gt;
&lt;br /&gt;
[[Image:vztree.jpg]]&lt;br /&gt;
&lt;br /&gt;
Das Betriebssystem UNIX besitzt ein hierarchisches Dateisystem. Es besteht aus:&lt;br /&gt;
* Dateien (Files)&lt;br /&gt;
Dateien speichern Informationen (Text, Bilder, Sound, Videos, Programme) und&lt;br /&gt;
werden über den Dateinamen angesprochen.&lt;br /&gt;
&lt;br /&gt;
* Verzeichnissen (Directories, Kataloge)&lt;br /&gt;
Verzeichnisse besitzen ebenfalls einen Namen und dienen zur Ordnung des&lt;br /&gt;
Dateisystems. Ein Verzeichnis kann Dateien und Unterverzeichnisse&lt;br /&gt;
(Subdirectories) enthalten. Das oberste Verzeichnis im Dateisystem heisst&lt;br /&gt;
Rootverzeichnis oder kurz Root und wird durch / (sprich: slash)&lt;br /&gt;
gekennzeichnet.&lt;br /&gt;
&lt;br /&gt;
Im Gegensatz zu Windows kennt UNIX keine Laufwerke.&lt;br /&gt;
Das obige Bild zeigt ein typisches UNIX-Dateisystem.&lt;br /&gt;
Unterhalb des Rootverzeichnisses befinden sich eine Vielzahl vonVerzeichnissen.&lt;br /&gt;
&lt;br /&gt;
===Wichtige Verzeichnisse===&lt;br /&gt;
&lt;br /&gt;
• '''Homeverzeichnis'''&lt;br /&gt;
&lt;br /&gt;
das Verzeichnis, in dem man sich unmittelbar nach dem Anmelden befindet. Das&lt;br /&gt;
Homeverzeichnis wird vom Systemverwalter eingerichtet; jeder Anwender&lt;br /&gt;
besitzt ein festes Homeverzeichnis. z.B. /home/hans&lt;br /&gt;
&lt;br /&gt;
~ (Tilde) bzw. $HOME (Shellvariable) kennzeichnen das Homeverzeichnis.&lt;br /&gt;
&lt;br /&gt;
• '''Aktuelles Verzeichnis'''&lt;br /&gt;
&lt;br /&gt;
Verzeichnis, in dem man sich aktuell befindet.&lt;br /&gt;
Das aktuelle Verzeichnis wird mit dem Befehl cd (change directory) oder per&lt;br /&gt;
Mausklick verändert.&lt;br /&gt;
Ein einfacher Punkt . kennzeichnet das aktuelle Verzeichnis.&lt;br /&gt;
&lt;br /&gt;
• '''Elternverzeichnis'''&lt;br /&gt;
&lt;br /&gt;
Verzeichnis unmittelbar oberhalb des aktuellen Verzeichnisses.&lt;br /&gt;
Jedes Verzeichnis ausser / besitzt genau ein Elternverzeichnis.&lt;br /&gt;
Zwei Punkte .. kennzeichnen das Elternverzeichnis (abhängig vom aktuellen&lt;br /&gt;
VZ).&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Absoluter Pfadname:===&lt;br /&gt;
&lt;br /&gt;
Beschreibt ausgehend vom Rootverzeichnis den Weg zum Zielverzeichnis oder zur&lt;br /&gt;
Zieldatei. (Welche Verzeichnisse müssen ausgehend von / durchlaufen werden, um&lt;br /&gt;
zum Ziel zu kommen?) Ein absoluter Pfadname beginnt immer mit / .&lt;br /&gt;
&lt;br /&gt;
===Relativer Pfadname:===&lt;br /&gt;
&lt;br /&gt;
Beschreibt ausgehend vom aktuellen Verzeichnis den Weg zum Zielverzeichnis&lt;br /&gt;
oder zur Zieldatei; ein relativer Pfadname beginnt nicht mit / .&lt;br /&gt;
/home/suxer&lt;br /&gt;
absoluter Pfadname für das Verzeichnis sub1 im Homeverzeichnis von suxer&lt;br /&gt;
&lt;br /&gt;
===Verzeichnisstruktur===&lt;br /&gt;
&lt;br /&gt;
 /bin         Kommandos die beim starten benötigt werden (Zugriff hat jeder)&lt;br /&gt;
 /sbin        Wichtige System-Programme (In der Regel root vorberhalten)&lt;br /&gt;
 /boot        Hier findet man die Dateien des Bootmanagers und des Kernel.&lt;br /&gt;
 /dev         In diesem Verzeichnis stehen die Gerätedateien (Devices),&lt;br /&gt;
 /home        Alle Heimatverzeichnisse der Nutzer findet man hier.&lt;br /&gt;
 /lib         Beim Systemstart benötigten Bibliotheken und Modules stehen hier.&lt;br /&gt;
 /mnt         Mountpunkt für temporäre Partitionen&lt;br /&gt;
 /opt         Software, die nicht Installationsumfang von Linux gehören.&lt;br /&gt;
 /root        Heimatverzeichnis des Administrators.&lt;br /&gt;
 /tmp         Temporäre Dateien können hier abgelegt werden&lt;br /&gt;
 /usr         statische Dateien (kann read-only gemountet sein)&lt;br /&gt;
 /var         variable Dateien (muss beschreibar sein )&lt;br /&gt;
 /etc         Konfiguartionsdateien und Startscripte&lt;br /&gt;
 /proc        Virtuelles Dateisystem -&amp;gt; repräsentiert den Kernel&lt;br /&gt;
&lt;br /&gt;
===Unterverzeichnisse von /usr===&lt;br /&gt;
&lt;br /&gt;
 sbin         Programme für root die beim Start nicht benötigt werden&lt;br /&gt;
 bin          Programme für alle die beim Start nicht benötigt werden&lt;br /&gt;
 X11R6        Dateien des X-Window-Sytems&lt;br /&gt;
 bin          Ausführbare Programme&lt;br /&gt;
 doc          Dokumentationen&lt;br /&gt;
 etc          Konfigurationsdateien&lt;br /&gt;
 games        Spiele&lt;br /&gt;
 include      Headerdateien für C-Programme&lt;br /&gt;
 local        Pakete die nicht zur Distribution gehören ähnlich /opt&lt;br /&gt;
 share        Pakete die von mehreren Paketen genutzt werden&lt;br /&gt;
 share/man    Die Manualpages&lt;br /&gt;
 share/info   Seiten des Infosystems&lt;br /&gt;
 share/doc    Dokumentationen&lt;br /&gt;
 src          Sources von Programmen (Kernel und andere)&lt;br /&gt;
&lt;br /&gt;
===Unterverzeichnisse von /var===&lt;br /&gt;
&lt;br /&gt;
 cache        Zwischenspreicher für Progammes&lt;br /&gt;
 games        Variable Daten der Games (Scores etc...)&lt;br /&gt;
 lock         Sperrdateien&lt;br /&gt;
 log          Die Logdateien (wichtiges Verzeichnis für Admins)&lt;br /&gt;
 mail         Das Mailsystem&lt;br /&gt;
 run          Dateien zu laufemdem Prozessen&lt;br /&gt;
 spool        Spooldateien (z.B. für das Drucksystem&lt;br /&gt;
 state        Statusinfos&lt;br /&gt;
 tmp          Wie /tmp eventuell nicht auf root Partion&lt;br /&gt;
&lt;br /&gt;
==Einfache Komandos==&lt;br /&gt;
===cd: Wechseln des Arbeitsverzeichnis===&lt;br /&gt;
&lt;br /&gt;
Um festzustellen in welchem Verzeichnis man sich befindet, sollte man den&lt;br /&gt;
Befehl &amp;quot;pwd&amp;quot; benutzen,&lt;br /&gt;
&lt;br /&gt;
und mit dem Befehl &amp;quot;cd&amp;quot; kann man zwischen den Verzeichnissen wechseln:&lt;br /&gt;
&lt;br /&gt;
Wechsele ins homeverzeichnis von Xinux&lt;br /&gt;
&lt;br /&gt;
 xinux@zero:~$ cd /home/xinux/&lt;br /&gt;
 xinux@zero:~$ pwd&lt;br /&gt;
 /home/xinux&lt;br /&gt;
&lt;br /&gt;
cd ~ -&amp;gt; wechsele ins jeweilige Homeverzeichnis&lt;br /&gt;
&lt;br /&gt;
cd .. -&amp;gt; wechsele ein Verzeichnis höher&lt;br /&gt;
&lt;br /&gt;
cd ../verzeichnis -&amp;gt; wechsele in eine paralleles Verzeichnis &amp;lt;- (ist eine relative Pfadangabe !)&lt;br /&gt;
&lt;br /&gt;
cd - -&amp;gt; wechsele in das Verzeichnis, in dem vorher gearbeitet wurde.&lt;br /&gt;
&lt;br /&gt;
Mit cd / wechselt man in das Wurzelverzeichnis.&lt;br /&gt;
&lt;br /&gt;
 xinux@zero:/var/log$ cd /&lt;br /&gt;
 xinux@zero:/$ pwd&lt;br /&gt;
 /&lt;br /&gt;
&lt;br /&gt;
===ls: Listing===&lt;br /&gt;
&lt;br /&gt;
Den Inhalt von Verzeichnissen kann man sich mit dem Befehl &amp;quot;ls&amp;quot; anzeigen lassen&lt;br /&gt;
wobei &amp;quot;ls&amp;quot; eine Vielzahl von Optionen besitzt:&lt;br /&gt;
&lt;br /&gt;
 ls                                  standard&lt;br /&gt;
 ls -l                               langes listing&lt;br /&gt;
 ls -a                               alle Dateien&lt;br /&gt;
 ls -i                               mit Inode&lt;br /&gt;
 ls -h                               gut lesbare Dateigröße&lt;br /&gt;
 ls -d                               Verzechnis wird angezeigt, nicht der Inhalt&lt;br /&gt;
 ls -L                               sortiert nach Größe&lt;br /&gt;
 ls -t                               sortiert nach Datum&lt;br /&gt;
 ls -F                               mit nützlichem Anhang&lt;br /&gt;
&lt;br /&gt;
 xinux@zero:/$ ls -l /var/log/messages&lt;br /&gt;
 -rw-r----- 1 syslog adm 2296 2009-06-16 10:05 /var/log/messages&lt;br /&gt;
&lt;br /&gt;
===more: Seitenweises Anzeigen von Seiten===&lt;br /&gt;
 root@zero:~# more /var/log/messages&lt;br /&gt;
 ...&lt;br /&gt;
&lt;br /&gt;
===head: erste Zeilen anzeigen===&lt;br /&gt;
Erste 10 Zeilen anzeigen&lt;br /&gt;
 root@zero:~# head /var/log/messages&lt;br /&gt;
 Jun 15 12:37:08 zero syslogd 1.5.0#5ubuntu3: restart.&lt;br /&gt;
 Jun 15 12:38:43 zero kernel: [  830.065036] mtrr: your processor doesn't support write-combining&lt;br /&gt;
 Jun 15 12:46:05 zero pulseaudio[4817]: pid.c: Stale PID file, overwriting.&lt;br /&gt;
 Jun 15 13:05:24 zero -- MARK --&lt;br /&gt;
 ...&lt;br /&gt;
&lt;br /&gt;
Erste zwei Zeilen anzeigen&lt;br /&gt;
 root@zero:~# head -n 2 /var/log/messages&lt;br /&gt;
 Jun 15 12:37:08 zero syslogd 1.5.0#5ubuntu3: restart.&lt;br /&gt;
 Jun 15 12:38:43 zero kernel: [  830.065036] mtrr: your processor doesn't support write-combining&lt;br /&gt;
&lt;br /&gt;
===tail: letzte Zeilen anzeigen===&lt;br /&gt;
 &lt;br /&gt;
 root@zero:~# tail /var/log/syslog&lt;br /&gt;
 ...&lt;br /&gt;
 Jun 19 11:19:35 zero -- MARK --&lt;br /&gt;
 Jun 19 11:39:35 zero -- MARK --&lt;br /&gt;
 Jun 19 11:59:36 zero -- MARK --&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Letze 5 Zeilen anzeigen&lt;br /&gt;
 root@zero:~# tail -n 5 /var/log/auth.log&lt;br /&gt;
 Jun 18 14:30:01 zero CRON[12040]: pam_unix(cron:session): session closed for user root&lt;br /&gt;
 Jun 18 14:39:01 zero CRON[12191]: pam_unix(cron:session): session opened for user root by (uid=0)&lt;br /&gt;
 Jun 18 14:39:01 zero CRON[12191]: pam_unix(cron:session): session closed for user root&lt;br /&gt;
 Jun 18 14:40:01 zero CRON[12237]: pam_unix(cron:session): session opened for user root by (uid=0)&lt;br /&gt;
 Jun 18 14:40:01 zero CRON[12237]: pam_unix(cron:session): session closed for user root&lt;br /&gt;
&lt;br /&gt;
Letze Zeilen anzeigen und fortlaufend aktualisieren&lt;br /&gt;
 root@zero:~# tail -f /var/log/syslog&lt;br /&gt;
 ...&lt;br /&gt;
&lt;br /&gt;
===mkdir: Ein neues Verzeichnis erstellen===&lt;br /&gt;
&lt;br /&gt;
 mkdir        verzeichnis&lt;br /&gt;
Erstellt ein Verzeichnis im working directory (wd)&lt;br /&gt;
&lt;br /&gt;
 mkdir  -p    ver1/ver2&lt;br /&gt;
Erstellt ein Verzeichnis ver2 unterhalb von ver1&lt;br /&gt;
wenn ver1 nicht existiert wird es erstellt&lt;br /&gt;
&lt;br /&gt;
 mkdir -m 753 ver1&lt;br /&gt;
Es wird das Verzeichnis ver1 erstellt mit der mask 753&lt;br /&gt;
&lt;br /&gt;
 mkdir -v     ver1&lt;br /&gt;
Geschwätzige Ausgabe :)&lt;br /&gt;
&lt;br /&gt;
===Zum Löschen von leeren Verzeichnissen wird rmdir benutzt===&lt;br /&gt;
&lt;br /&gt;
 rmdir           ver1&lt;br /&gt;
Löscht das leere Verzeichnis ver1&lt;br /&gt;
&lt;br /&gt;
 rmdir -v        ver1&lt;br /&gt;
Löscht das leere Verzeichnis ver1 und ist geschwätzig&lt;br /&gt;
&lt;br /&gt;
 rmdir -p        /ver1/ver2/ver3&lt;br /&gt;
Löscht das Verzeichnis ver3; wenn dadurch ver2 ein leeres&lt;br /&gt;
Verzeichnis wird, wird dieses auch gelöscht , wenn ver1&lt;br /&gt;
dadurch ein leeres Verzeichnis wird, wird auch dieses gelöscht.&lt;br /&gt;
&lt;br /&gt;
===touch Verändern des Zeitstempels===&lt;br /&gt;
&lt;br /&gt;
Mit touch können wir eine neue leere Datei erzeugen (das ist nicht der eigentliche&lt;br /&gt;
Zweck von touch, eigentlich wird der Zeitstempel geändert)&lt;br /&gt;
&lt;br /&gt;
 touch            dateiname&lt;br /&gt;
&lt;br /&gt;
===Kopieren=== &lt;br /&gt;
cp ist das Kommando um Dateien zu kopieren &lt;br /&gt;
&lt;br /&gt;
Eine Kopie von dat1 mit dem Namen dat2 erstellen:&lt;br /&gt;
&lt;br /&gt;
 xinux@zero:~$ cp dat1 dat2&lt;br /&gt;
&lt;br /&gt;
Eine Kopie von dat1 ins Verzeichnis ver2 erstellen:&lt;br /&gt;
&lt;br /&gt;
 xinux@zero:~$ cp dat1 ver2/&lt;br /&gt;
 &lt;br /&gt;
Eine Kopie erstellen mit ausführlicher Anzeige:&lt;br /&gt;
&lt;br /&gt;
 xinux@zero:~$ cp -v dat1 dat2&lt;br /&gt;
 `dat1' -&amp;gt; `dat2'&lt;br /&gt;
&lt;br /&gt;
Eine Kopie erstellen mit Rückfrage fals etwas überschrieben wird:&lt;br /&gt;
&lt;br /&gt;
 xinux@zero:~$ cp -i dat1 dat2&lt;br /&gt;
 cp: overwrite `dat2'?&lt;br /&gt;
&lt;br /&gt;
Eine Kopie erstellen und die Rückfrage überbrücken:&lt;br /&gt;
&lt;br /&gt;
 xinux@zero:~$ cp -f dat1 dat2&lt;br /&gt;
&lt;br /&gt;
Eine Kopie von dat1 ins Verzeichnis ver2 erstellen fals keine neuere Version von dat1 vorliegt:&lt;br /&gt;
&lt;br /&gt;
 xinux@zero:~$ cp -u dat1 ver2/&lt;br /&gt;
&lt;br /&gt;
Eine Kopie erstellen fals ver2 auf dem selben Dateisystem wie dat1 liegt:&lt;br /&gt;
&lt;br /&gt;
 xinux@zero:~$ cp -x dat1 ver2/&lt;br /&gt;
&lt;br /&gt;
Eine Kopie von ver1, die als ver2 oder unter ver2 als ver1 gespeichert wird erstellen:&lt;br /&gt;
&lt;br /&gt;
 xinux@zero:~$ cp -r ver1/ ver2/&lt;br /&gt;
&lt;br /&gt;
Eine Kopie von einer Datei erstellen und ihre Attribute beibehalten:&lt;br /&gt;
&lt;br /&gt;
 xinux@zero:~$ cp -p sux1 sux2&lt;br /&gt;
&lt;br /&gt;
Eine Kopie erstellen bei der die Links erhalten bleiben:&lt;br /&gt;
&lt;br /&gt;
 xinux@zero:~$ cp -r ver1/ ver2/&lt;br /&gt;
&lt;br /&gt;
Eine Kopie erstellen zum Archivieren (-dpr):&lt;br /&gt;
&lt;br /&gt;
 xinux@zero:~$ cp -a ver1/ ver2/&lt;br /&gt;
&lt;br /&gt;
===rm: Löschen einer Datei===&lt;br /&gt;
&lt;br /&gt;
Um Dateien zu löschen, brauchen wir das Kommando &amp;quot;rm&amp;quot;:&lt;br /&gt;
&lt;br /&gt;
 rm               dat1        dat1 wird gelöscht&lt;br /&gt;
 rm         -i    dat1        dat1 wird nach Bestätigung gelöscht&lt;br /&gt;
 rm         -f    dat1        dat1 wird ohne Rückfragen gelöscht&lt;br /&gt;
 rm         -v    dat1        dat1 wird glöscht (geschwätzige Ausgabe)&lt;br /&gt;
 rm         -r    ver1        Löschen von nicht leeren Verzeichnissen&lt;br /&gt;
                              Achtung !!! Als root kann man sich damit Teile&lt;br /&gt;
                              oder sogar den gesamten Verzeichnisbaum&lt;br /&gt;
                              absägen !!!&lt;br /&gt;
&lt;br /&gt;
===mv: Verschieben===&lt;br /&gt;
&lt;br /&gt;
Mit dem Befehl &amp;quot;mv&amp;quot; werden Daten verschoben, folgendes gilt:&lt;br /&gt;
&lt;br /&gt;
 mv          dat1 dat2         &lt;br /&gt;
Die Datei dat1 wird in dat2 umbenannt&lt;br /&gt;
 mv          dat1 /ver1        &lt;br /&gt;
Die Datei dat1 wird nach /ver1 verschoben&lt;br /&gt;
&lt;br /&gt;
Die Parameter und ihre Bedeutung:&lt;br /&gt;
&lt;br /&gt;
      -i                      wenn eine Datei exisitiert wird vor dem&lt;br /&gt;
                              Überschreiben nachgefragt&lt;br /&gt;
      -v                      verbose (geschwätzig)&lt;br /&gt;
      -u                      nur neuere Daten werden bei Bedarf überschrieben&lt;br /&gt;
      -b                      wenn überschrieben werden soll, wird ein Backup&lt;br /&gt;
                              erstellt&lt;br /&gt;
      -S ENDUNG               das Backup bekommt die Endung ENDUNG&lt;br /&gt;
&lt;br /&gt;
===su Benutzer wechseln===&lt;br /&gt;
&lt;br /&gt;
 su -             &lt;br /&gt;
Wechsel zum Rootaccount, wie wenn dieser sich neu anmelden würde. (Bsp: su -)&lt;br /&gt;
&lt;br /&gt;
 su Benutzernamen &lt;br /&gt;
Wechsel der Identität zu Benutzer (gegebenenfalls Passwortabfrage)&lt;br /&gt;
&lt;br /&gt;
 su -c Kommando   &lt;br /&gt;
Kommando wird als rootaccount ausgeführt&lt;br /&gt;
&lt;br /&gt;
==Der Standard Editor vi==&lt;br /&gt;
Der vi ist der Standardeditor in der Unixwelt. Er ist in jedem Unix-Derivat&lt;br /&gt;
enthalten.&lt;br /&gt;
Der Editor hat zwar den schlechten Ruf umständlich zu bedienen zu sein, ist&lt;br /&gt;
jedoch sehr leistungsfähig und systemübergreifend verfügbar. Beim vi handelt es&lt;br /&gt;
sich um einen rein textorientierten Editor, der mittels eigener Kommandos&lt;br /&gt;
gesteuert wird.&lt;br /&gt;
&lt;br /&gt;
Der Editor VIM ist eine weitere Verbesserung von VI und leichter zu bedienen.&lt;br /&gt;
Und unter Ubuntu/Debian mit &amp;quot;apt-get install vim&amp;quot; zu installieren.&lt;br /&gt;
&lt;br /&gt;
===Starten des Editors:===&lt;br /&gt;
&lt;br /&gt;
Der Editorstart erfolgt einfach durch die Eingabe des Kommandos vi mit dem&lt;br /&gt;
Dateinamen der zu editierenden Datei als Parameter.&lt;br /&gt;
Beispiel:        &lt;br /&gt;
 vi sux.txt&lt;br /&gt;
&lt;br /&gt;
===Die Betriebsmodi des vi:===&lt;br /&gt;
&lt;br /&gt;
Ein Umstand, der dem vi den Ruf der komplizierten Bedienbarkeit zugetragen hat,&lt;br /&gt;
sind die unterschiedlichen Betriebsmodi des Editors. Genauer gesagt verfügt der&lt;br /&gt;
vi über drei Betriebsmodi:&lt;br /&gt;
&lt;br /&gt;
====Kommandomodus:====&lt;br /&gt;
&lt;br /&gt;
Innerhalb dieses Modus werden die eingegebenen Zeichen direkt als Befehle des&lt;br /&gt;
Editors interpretiert und ausgeführt. Dabei gibt es weder ein Bereitschaftszeichen&lt;br /&gt;
(Prompt) noch ein Echo (Ausgabe). Der Kommandomodus ist der Modus, in dem&lt;br /&gt;
sich der vi direkt nach seinem Start befindet.&lt;br /&gt;
&lt;br /&gt;
====Zeilenmodus oder Exmodus:====&lt;br /&gt;
&lt;br /&gt;
Dieser Modus ist der einzige Modus mit einem eigenen Bereitschaftszeichen,&lt;br /&gt;
nämlich dem Doppelpunkt (:). Das Prompt wird ebenso wie die Befehlsausgaben&lt;br /&gt;
in der Statuszeile angezeigt.&lt;br /&gt;
&lt;br /&gt;
====Eingabemodus:====&lt;br /&gt;
&lt;br /&gt;
Der Eingabemodus ist derjenige, in welchem der zu bearbeitende Text bearbeitet&lt;br /&gt;
werden kann. Alle hier eingegebenen Zeichen werden als Text für die aktuelle&lt;br /&gt;
Datei interpretiert. Zwischen den unterschiedlichen Modi kann jederzeit&lt;br /&gt;
gewechselt werden. Von Kommandomodus gelangen Sie durch mehere Wege in&lt;br /&gt;
den Eingabemodus. Man kann durch folgende Aktionen wechslen&lt;br /&gt;
&lt;br /&gt;
{| border=1 cellpadding=2&lt;br /&gt;
|i&lt;br /&gt;
|Text vor der aktuellen Cursorposition einfügen&lt;br /&gt;
|-&lt;br /&gt;
|I&lt;br /&gt;
|Text am Zeilenanfang einfügen&lt;br /&gt;
|-&lt;br /&gt;
|a&lt;br /&gt;
|Text hinter der aktuellen Cursorposition einfügen&lt;br /&gt;
|-&lt;br /&gt;
|A&lt;br /&gt;
|Text am Zeilenende einfügen&lt;br /&gt;
|-&lt;br /&gt;
|o&lt;br /&gt;
|Unterhalb der aktuellen Zeile eine neue Zeile einfügen&lt;br /&gt;
|-&lt;br /&gt;
|O&lt;br /&gt;
|Oberhalb der aktuellen Zeile eine neue Zeile einfügen&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Durch das Drücken der ESC - Taste gelangt man in den Kommandomodus zurück.&lt;br /&gt;
&lt;br /&gt;
Im Kommandomodus können Sie durch den Text navigieren und auch den Text&lt;br /&gt;
selbst bearbeiten, z.B ausschneiden, kopieren usw. Dazu sind einige Kommandos&lt;br /&gt;
nötig, von denen die wichtigsten im Folgenden erläutert werden:&lt;br /&gt;
&lt;br /&gt;
 xinux@zero:/$ vi iwas.txt&lt;br /&gt;
&lt;br /&gt;
[[Image:vim.jpg]]&lt;br /&gt;
&lt;br /&gt;
===Benutzen des Kommandomodus===&lt;br /&gt;
====Steuerung des Cursors durch den Text====&lt;br /&gt;
&lt;br /&gt;
Mittels folgender Kommandos bewegt sich der Cursor durch den Text:&lt;br /&gt;
&lt;br /&gt;
{| border=1 cellpadding=2&lt;br /&gt;
|h&lt;br /&gt;
|Cursor ein Zeichen nach links&lt;br /&gt;
|-&lt;br /&gt;
|l&lt;br /&gt;
|Cursor ein Zeichen nach rechts&lt;br /&gt;
|-&lt;br /&gt;
|k&lt;br /&gt;
|Cursor eine Zeile nach oben&lt;br /&gt;
|-&lt;br /&gt;
|j&lt;br /&gt;
|Cursor eine Zeile nach unten&lt;br /&gt;
|-&lt;br /&gt;
|w&lt;br /&gt;
|Cursor ein Wort nach rechts&lt;br /&gt;
|-&lt;br /&gt;
|b&lt;br /&gt;
|Cursor ein Wort nach links&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Alle diese Kommandos können mit einem vorgestellten Wiederholungsfaktor&lt;br /&gt;
arbeiten. Der Befehl 3w verschiebt demnach den Cursor um 3 Wörter nach rechts.&lt;br /&gt;
&lt;br /&gt;
====Angaben zur Positionierung====&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{| border=1 cellpadding=2&lt;br /&gt;
|STRG+U&lt;br /&gt;
|1⁄2 Bildschirmseite nach oben&lt;br /&gt;
|-&lt;br /&gt;
|STRG+D&lt;br /&gt;
|1⁄2 Bildschirmseite nach unten&lt;br /&gt;
|-&lt;br /&gt;
|STRG+B&lt;br /&gt;
|1 Bildschirmseite nach oben&lt;br /&gt;
|-&lt;br /&gt;
|STRG+F&lt;br /&gt;
|1 Bildschirmseite nach unten&lt;br /&gt;
|-&lt;br /&gt;
|/Ausdruck&lt;br /&gt;
|Sucht den Ausdruck (vorwärts) Weitersuchen mit n , N&lt;br /&gt;
|-&lt;br /&gt;
|?Ausdruck&lt;br /&gt;
|Sucht den Ausdurck (rückwärts) Weitersuchen mit n , N&lt;br /&gt;
|-&lt;br /&gt;
|0&lt;br /&gt;
|Zeilenanfang&lt;br /&gt;
|-&lt;br /&gt;
|$&lt;br /&gt;
|Zeilenende&lt;br /&gt;
|-&lt;br /&gt;
|w&lt;br /&gt;
|Nächstes Wort&lt;br /&gt;
|-&lt;br /&gt;
|b&lt;br /&gt;
|Vorheriges Wort&lt;br /&gt;
|-&lt;br /&gt;
|fc&lt;br /&gt;
|Auf das Zeichen c springen. c steht für ein beliebiges Zeichen&lt;br /&gt;
|-&lt;br /&gt;
|G&lt;br /&gt;
|Letzte Zeile der Datei&lt;br /&gt;
|-&lt;br /&gt;
|ng&lt;br /&gt;
|n-te Zeile der Datei&lt;br /&gt;
|-&lt;br /&gt;
|H&lt;br /&gt;
|Anfang der Bildschirmseite&lt;br /&gt;
|-&lt;br /&gt;
|L&lt;br /&gt;
|Ende der Bildschirmseite&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
====Befehle zur Textbearbeitung -&amp;gt; Was soll geschehen====&lt;br /&gt;
&lt;br /&gt;
{| Border=1 Cellpadding=2&lt;br /&gt;
|x&lt;br /&gt;
|Löscht Zeichen&lt;br /&gt;
|-&lt;br /&gt;
|d&lt;br /&gt;
|Löschen und in den Puffer laden&lt;br /&gt;
|-&lt;br /&gt;
|c&lt;br /&gt;
|Ändern&lt;br /&gt;
|-&lt;br /&gt;
|y&lt;br /&gt;
|In den Puffer laden&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
====Weitere wichtige Befehle:====&lt;br /&gt;
&lt;br /&gt;
{| Border=1 Cellpadding=2&lt;br /&gt;
|p&lt;br /&gt;
|Aus dem Puffer einfügen&lt;br /&gt;
|-&lt;br /&gt;
|u&lt;br /&gt;
|Undo, macht den letzten Befehl rückgängig&lt;br /&gt;
|-&lt;br /&gt;
|STRG+R&lt;br /&gt;
|Redo, macht den letzten Undo rückgängig&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
===Zeilen- oder Exmodus===&lt;br /&gt;
&lt;br /&gt;
Wie schon erwähnt wird der Zeilen oder Exmodus durch einen : eingeleitet.&lt;br /&gt;
Es folgen einige Beispiele.&lt;br /&gt;
&lt;br /&gt;
Befehle zum Speichern und Beenden:&lt;br /&gt;
&lt;br /&gt;
 :w          Schreibt Datei&lt;br /&gt;
 :w Datei2   Schreibt eine Kopie in Datei2&lt;br /&gt;
 :w !        Schreibt Datei (übergehe Schreibschutz)&lt;br /&gt;
 :w ! Datei2 Schreibt eine Kopie in Datei2 (übergehe Schreibschutz)&lt;br /&gt;
 :q          Schließe Datei&lt;br /&gt;
 :q!         Schließe Datei (verwerfe Änderungen)&lt;br /&gt;
 :wq         Schreibe Datei und beende Editor&lt;br /&gt;
 :wq!        Schreibe Datei und beende Editor (übergehe Schreibschutz)&lt;br /&gt;
 :q!         Schließe Datei (verwerfe Änderungen)&lt;br /&gt;
 :h          Hilfe anzeigen, durch drücken von :q Beenden der Hilfe&lt;br /&gt;
 :e Datei3   Editiere Datei3&lt;br /&gt;
 :e #        Editere vorhergehende Datei&lt;br /&gt;
 :1,3co9     Kopiere von der ersten bis zu dritten Zeile &lt;br /&gt;
             und füge den Inhalt unterhalb der neunte Zeile ein.&lt;br /&gt;
&lt;br /&gt;
Interaktionen mit Unix:&lt;br /&gt;
&lt;br /&gt;
 :r Datei4   Fügt Inhalt der Datei4 nach dem Cursor ein&lt;br /&gt;
 :r ! Befehl Fügt Ausgabe des Befehls nach dem Cursor ein&lt;br /&gt;
 :! Befehl   Führt den Befehl aus&lt;br /&gt;
 :sh         Starte Subshell -&amp;gt; mit exit kehrt man wieder zurück&lt;br /&gt;
             Eingabemodus zurück&lt;br /&gt;
&lt;br /&gt;
====Ersetzen von Textteilen====&lt;br /&gt;
&lt;br /&gt;
Die grundsätzliche Syntax lautet:&lt;br /&gt;
&lt;br /&gt;
 :[Zeilennummer,Zeilennummer]s/Muster/Ersetzung/[gc]&lt;br /&gt;
&lt;br /&gt;
 :s/worf/kirn/              der erste worf wird in der aktuellen Zeile durch kirn ersetzt&lt;br /&gt;
 :1,9s/worf/kirn/g          von der 1. bis zur 9. Zeile werden alle worf durch kirn ersetzt&lt;br /&gt;
 :1,$s/worf/kirn/           von der ersten bis zur letzten Zeile ersetze ersten worf durch&lt;br /&gt;
                            kirn&lt;br /&gt;
 :.,$s/worf/kirn/g          von der aktuellen bis zur letzten Zeile ersetze alle worf durch&lt;br /&gt;
                            kirn&lt;br /&gt;
 :1,.s/worf/kirn/c          von der 1. bis zur aktuellen Zeile ersetze worf durch kirn, frage&lt;br /&gt;
                            aber nach&lt;br /&gt;
 :1,$s/^worf/kirn/          von der ersten bis zur letzten Zeile ersetze worf am&lt;br /&gt;
                            Zeilenanfang durch kirn&lt;br /&gt;
 :4,$s/worf$/kirn/          von der 4. bis zur letzten Zeile ersetze worf am Zeilenende&lt;br /&gt;
                            durch kirn&lt;br /&gt;
 :1,$s/^#//                 lösche alle Kommentarzeichen&lt;br /&gt;
 :1,$s/^.orf/kirn/           ersetze alles was am Zeilenanfang ein beliebiges Zeichen hat&lt;br /&gt;
                            gefolgt von einem orf durch kirn&lt;br /&gt;
 :1,$s/^[A-Z]orf/kirn/g     suche nach einem Großbuchstaben am Anfang der Zeile&lt;br /&gt;
                            gefolgt von einem orf und ersetze durch kirn&lt;br /&gt;
 :1,$s/^M[ae][iy]e*r/kirn/  suche alles, was am Anfang der Zeile ein großes M enthält,&lt;br /&gt;
                            gefolgt von einem a oder e , gefolgt von einem i oder y ,&lt;br /&gt;
                            gefolgt von einem e , welches 0 oder N mal vorkommen kann,&lt;br /&gt;
                            gefolgt von einem r und ersetze es durch kirn&lt;br /&gt;
&lt;br /&gt;
==Reguläre Ausdrücke==&lt;br /&gt;
&lt;br /&gt;
{| Border=1 Cellpadding=2&lt;br /&gt;
|c&lt;br /&gt;
|Ein einzelner Buchstabe passt auf sich selbst&lt;br /&gt;
|-&lt;br /&gt;
|.&lt;br /&gt;
|Ein Punkt passt auf jedes Zeichen außer auf das Zeilenende&lt;br /&gt;
|-&lt;br /&gt;
|*&lt;br /&gt;
|Das dem Operator * vorangehende Muster kann 0 oder öfter vorkommen&lt;br /&gt;
|-&lt;br /&gt;
|^&lt;br /&gt;
|(Caret) passt auf den Zeilenanfang&lt;br /&gt;
|-&lt;br /&gt;
|$&lt;br /&gt;
|Passt auf das Zeilenende&lt;br /&gt;
|-&lt;br /&gt;
|\&lt;br /&gt;
|Das folgende Sonderzeichen wird entwertet&lt;br /&gt;
|-&lt;br /&gt;
|[...]&lt;br /&gt;
|Passt auf &amp;quot;genau&amp;quot; eins in [...] angebenen Zeichen&lt;br /&gt;
|-&lt;br /&gt;
|[^...]&lt;br /&gt;
|Passt auf &amp;quot;genau&amp;quot; ein Zeichen welches nicht in [...] angebenen ist&lt;br /&gt;
|-&lt;br /&gt;
|\&amp;lt;&lt;br /&gt;
|Passt auf den Wortanfang&lt;br /&gt;
|-&lt;br /&gt;
|\&amp;gt;&lt;br /&gt;
|Passt auf das Wortende&lt;br /&gt;
|-&lt;br /&gt;
|\+&lt;br /&gt;
|Das dem Operator \+ vorangehende Muster kann 1 oder öfter vorkommen&lt;br /&gt;
|-&lt;br /&gt;
|&amp;amp;&lt;br /&gt;
|Setzt das gefunden Suchmuster ein&lt;br /&gt;
|-&lt;br /&gt;
|\(...\)&lt;br /&gt;
|Speichert den Text auf den das Suchmuster passt zur späteren Verwendung&lt;br /&gt;
|-&lt;br /&gt;
|\n&lt;br /&gt;
|Setzt das vorangehende, mit \(...\) Gefundene wieder ein&lt;br /&gt;
|-&lt;br /&gt;
|(...)&lt;br /&gt;
|Gruppiert Auswahlmöglichkeiten&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;nowiki&amp;gt;|&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
|Trennt Auswahlmöglichkeiten&lt;br /&gt;
|-&lt;br /&gt;
|\b&lt;br /&gt;
|Passt auf den Anfang oder das Ende eines Wortes&lt;br /&gt;
|-&lt;br /&gt;
|\B&lt;br /&gt;
|Symbolisiert den Raum innerhalb eines Wortes&lt;br /&gt;
|-&lt;br /&gt;
|\w&lt;br /&gt;
|Passt auf alle alphanumerischen Zeichen [A-Za-z0-9]&lt;br /&gt;
|-&lt;br /&gt;
|\W&lt;br /&gt;
|Passt auf alle nichtalphanumerischen Zeichen [^A-Za-z0-9]&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Die Rangfolge der Operatoren(von der höchsten zur niedrigsten)&lt;br /&gt;
:(, ), ?, *, + | .&lt;br /&gt;
&lt;br /&gt;
Die anderen Operatoren sind mit den anderen Buchstaben gleichrangig.&lt;br /&gt;
&lt;br /&gt;
===Beispiel zum Suchen===&lt;br /&gt;
&lt;br /&gt;
 Suchmuster               Passt auf&lt;br /&gt;
 ^Tuxer                   Tuxer am Zeilenanfang&lt;br /&gt;
 [tT]uxer                 Tuxer oder tuxer&lt;br /&gt;
 80[23]?86                8086, 80286 oder 80386&lt;br /&gt;
&lt;br /&gt;
===grep===&lt;br /&gt;
&lt;br /&gt;
Mit grep ist es möglich, in Dateien nach regulären Ausdrücken zu suchen. Wenn&lt;br /&gt;
eine Übereinstimmung gefunden wird, wird die komplette Zeile auf die&lt;br /&gt;
Standardausgabe geschrieben. grep kann auch von STDIN lesen.Es ist&lt;br /&gt;
empfehlenswert, sich anzugwöhnen ,das Suchmuster in Anführungszeichen zu&lt;br /&gt;
schreiben. Es gibt 3 Arten fgrep = fastgrep , grep und egrep egrep&lt;br /&gt;
&lt;br /&gt;
Beispiel:&lt;br /&gt;
&lt;br /&gt;
 root@zero:~# cat text&lt;br /&gt;
 quatsch&lt;br /&gt;
 quatsch&lt;br /&gt;
 quatsch&lt;br /&gt;
 wichtig&lt;br /&gt;
 quatsch&lt;br /&gt;
 root@zero:~# grep wichtig text&lt;br /&gt;
 wichtig&lt;br /&gt;
 root@zero:~# &lt;br /&gt;
&lt;br /&gt;
 -c                   meldet nur die Gesamtzahl der Fundstellen&lt;br /&gt;
 -v                   zeigt nur Zeilen, die »Ausdruck« nicht enthalten&lt;br /&gt;
 -i                   ignoriert Groß- und Kleinschreibung&lt;br /&gt;
 -l                    meldet nur Dateinamen mit Fundstellen&lt;br /&gt;
 -n                   listet Zeilennummern zu jeder Fundstelle&lt;br /&gt;
 -f                   Dateiname »Dateiname« enthält die Such-Ausdrücke&lt;br /&gt;
 -E                   ist ein erweiterter regulärer Ausdruck (egrep)&lt;br /&gt;
 -F                   (Muster, Ausdruck) ist ein Muster (String) (fgrep)&lt;br /&gt;
 -b                   listet auch die Position der Fundstellen&lt;br /&gt;
 -C    Anzahl         Anzahl von Zeilen werden nach der Fundstelle ausgegeben&lt;br /&gt;
 -B    Anzahl         Anzahl von Zeilen werden vor der Fundstelle ausgegeben&lt;br /&gt;
 -r                   Durchsucht Verzeichnisse rekursiv&lt;br /&gt;
&lt;br /&gt;
==Useridendifikation==&lt;br /&gt;
===/etc/passwd===&lt;br /&gt;
====Beschreibung====&lt;br /&gt;
passwd ist eine ASCII-Datei, die eine Liste der Benutzer des Systems und deren&lt;br /&gt;
Passwörter enthält. Die Passwortdatei sollte für alle Benutzer lesbar sein, was für&lt;br /&gt;
dieVerschlüsselung notwendig ist; aber nur vom Superuser beschreibbar. Wenn&lt;br /&gt;
Sie eine neue Kennung einrichten, lassen Sie das Passwort-Feld in der Datei frei&lt;br /&gt;
und benutzen Sie passwd(1), um dem System ein Passwort für die neue Kennung&lt;br /&gt;
mitzuteilen.&lt;br /&gt;
&lt;br /&gt;
Die Datei /etc/passwd enthält einen Eintrag pro Zeile mit dem Format:&lt;br /&gt;
login_name:passwd:UID:GID:user_name:directory:shell&lt;br /&gt;
====Die Bedeutung der Felder:====&lt;br /&gt;
# login_name Kennung des Benutzers auf dem System.&lt;br /&gt;
# password   Hier steht bei Shadowsystemen ein x. Die Passwörter sind in der Datei /etc/shadow&lt;br /&gt;
# UID        Die numerische Benutzernummer.&lt;br /&gt;
#  GID        Die numerische Gruppennummer des Benutzers.&lt;br /&gt;
# user_name Ein optionales Kommentarfeld, oft benutzt für den vollen Namen des Benutzers und weitere Informationen (Telefon, Raum-Nummer etc.).&lt;br /&gt;
# directory  Das Heimatverzeichnis $HOME des Benutzers.&lt;br /&gt;
# shell      Das Programm, das beim Einloggen gestartet werden soll (falls nicht nötig, benutzen Sie /bin/bash).&lt;br /&gt;
&lt;br /&gt;
===/etc/group===&lt;br /&gt;
====Beschreibung====&lt;br /&gt;
etc/group ist eine ASCII Datei, die Gruppen definiert, zu denen Benutzer&lt;br /&gt;
gehören. Es gibt nur einen Eintrag pro Zeile; jede Zeile hat folgendes Format:&lt;br /&gt;
         GruppenName:Passwort:GruppenKennung:BenutzerListe&lt;br /&gt;
Beschreibung der Felder:&lt;br /&gt;
#     GruppenName      Die Bezeichnung der Gruppe.&lt;br /&gt;
#     Passwort         Das (verschlüsselte) Gruppen-Passwort. Wenn dieses Feld leer ist, wird kein Passwort benötigt.&lt;br /&gt;
#     GruppenKennung Die numerische Identifikation der Gruppe.&lt;br /&gt;
#     BenutzerListe    Alle Namen der Mitglieder, getrennt durch Kommas.&lt;br /&gt;
&lt;br /&gt;
===/etc/shadow===&lt;br /&gt;
====Beschreibung====&lt;br /&gt;
shadow beinhaltet Informationen zu den verschlüsselten Passwörten, zu den&lt;br /&gt;
Benutzerzugängen und weitere Informationen zur Laufzeit der Passwörter.&lt;br /&gt;
 Name:Passwort:Letzte Änderung:Mintage:Maxtage:Warntage:Inaktiv:Ablauf&lt;br /&gt;
#    Der Loginname&lt;br /&gt;
#    verschlüsseltes Passwort &lt;br /&gt;
&amp;lt;nowiki&amp;gt;*&amp;lt;/nowiki&amp;gt; bedeutet Benutzer kann sich nicht einlogen&lt;br /&gt;
! bedeutet Benutzer hat kein Passwort gesetzt&lt;br /&gt;
#    Tage seit dem 1 Januar 1970 an dem das Passwort letztmals geändert wurde&lt;br /&gt;
#    Tage, die das Passwort behalten werden muss, bevor es wieder geändert werden kann&lt;br /&gt;
#     Die Anzahl der Tage, nach denen der Benutzer das Passwort wieder ändern muss&lt;br /&gt;
#    Anzahl der Tage bevor das Passwort abläuft und der Benutzer gewarnt wird&lt;br /&gt;
#    Wenn der Zugang diese Anzahl von Tagen nicht benutzt wird, wird der Zugang gesperrt&lt;br /&gt;
#    Tag seit dem 1 Januar 1970, an dem der Zugang gesperrt wird&lt;br /&gt;
#    Reserviertes Feld&lt;br /&gt;
&lt;br /&gt;
Die Datei sollte aus Sicherheitgründen nicht für einen normalen Benutzer lesbar&lt;br /&gt;
sein.&lt;br /&gt;
&lt;br /&gt;
==Programme zur Userverwaltung==&lt;br /&gt;
===useradd===&lt;br /&gt;
User anlegen&lt;br /&gt;
 root@zero:~# useradd -m -u 1011 -g users -G admin -d /home/erwin -s /bin/bash -c &amp;quot;Erwin Lehman&amp;quot;  erwin&lt;br /&gt;
{| border=1 cellpadding=2&lt;br /&gt;
|&amp;quot;-m&amp;quot;&lt;br /&gt;
|Lege Homedirectory an&lt;br /&gt;
|-&lt;br /&gt;
|&amp;quot;-u 1011&amp;quot;&lt;br /&gt;
|Userid wird zugeordnet&lt;br /&gt;
|-&lt;br /&gt;
|&amp;quot;-g users&amp;quot;&lt;br /&gt;
|Primäre Gruppe wird zugeordnet&lt;br /&gt;
|-&lt;br /&gt;
|&amp;quot;-G admin&amp;quot;&lt;br /&gt;
|Sekunbdäre Gruppe wird zugeordnet&lt;br /&gt;
|-&lt;br /&gt;
|&amp;quot;-d /home/erwin/&amp;quot;&lt;br /&gt;
|Name des Homedirectory&lt;br /&gt;
|-&lt;br /&gt;
|&amp;quot;-s /bin/bash&amp;quot;&lt;br /&gt;
|Bash wird zugeordnet&lt;br /&gt;
|- &lt;br /&gt;
|&amp;quot;-c Erwin Lehman&amp;quot;&lt;br /&gt;
|Kommentarfeld&lt;br /&gt;
|-&lt;br /&gt;
|&amp;quot;erwin&amp;quot; &lt;br /&gt;
|Name des Users&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Defaulteinstellungen anzeigen&lt;br /&gt;
 root@zero:~# useradd -D&lt;br /&gt;
 GROUP=100&lt;br /&gt;
 HOME=/home&lt;br /&gt;
 INACTIVE=-1&lt;br /&gt;
 EXPIRE=&lt;br /&gt;
 SHELL=/bin/sh&lt;br /&gt;
 SKEL=/etc/skel&lt;br /&gt;
 CREATE_MAIL_SPOOL=no&lt;br /&gt;
&lt;br /&gt;
Defaulteinstellungen ändern&lt;br /&gt;
 useradd -D -s /bin/bash&lt;br /&gt;
&lt;br /&gt;
Konfigurationsdatei&lt;br /&gt;
 root@zero:~# cat /etc/default/useradd &lt;br /&gt;
 SHELL=/bin/bash&lt;br /&gt;
 GROUP=100&lt;br /&gt;
 HOME=/home&lt;br /&gt;
 INACTIVE=-1&lt;br /&gt;
 EXPIRE=&lt;br /&gt;
 SKEL=/etc/skel&lt;br /&gt;
 CREATE_MAIL_SPOOL=no&lt;br /&gt;
&lt;br /&gt;
===usermod===&lt;br /&gt;
User modifizieren&lt;br /&gt;
 root@zero:~# usermod -l fritz -s /bin/sh -G admin,video erwin&lt;br /&gt;
{| border=1 cellpadding=2&lt;br /&gt;
|&amp;quot;-l fritz&amp;quot;&lt;br /&gt;
|Neuer Username&lt;br /&gt;
|-&lt;br /&gt;
|&amp;quot;-s /bin/sh&amp;quot;&lt;br /&gt;
|Neue Shell&lt;br /&gt;
|-&lt;br /&gt;
|&amp;quot;-G admin, video&amp;quot;&lt;br /&gt;
|Sekunbdäre Gruppen werden zugeordnet&lt;br /&gt;
|-&lt;br /&gt;
|&amp;quot;erwin&amp;quot; &lt;br /&gt;
|Name des Users&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
===userdel===&lt;br /&gt;
User inklusive Homedirectory löschen&lt;br /&gt;
 root@zero:~# userdel -r fritz&lt;br /&gt;
&lt;br /&gt;
===passwd===&lt;br /&gt;
Rootpasswort ändern&lt;br /&gt;
 root@zero:~# passwd &lt;br /&gt;
 Geben Sie ein neues UNIX Passwort ein:'''sysadm''' &lt;br /&gt;
 Geben Sie das neue UNIX Passwort erneut ein:'''sysadm''' &lt;br /&gt;
 passwd: Passwort erfolgreich geändert&lt;br /&gt;
&lt;br /&gt;
Passwort von tux ändern&lt;br /&gt;
 root@zero:~# passwd tux&lt;br /&gt;
 Geben Sie ein neues UNIX Passwort ein:'''suxer''' &lt;br /&gt;
 Geben Sie das neue UNIX Passwort erneut ein:'''suxer'''&lt;br /&gt;
 passwd: Passwort erfolgreich geändert&lt;br /&gt;
&lt;br /&gt;
Minimale und Maximale Gültigkeit des Passwortes von tux festlegen&lt;br /&gt;
 root@zero:~# passwd -n 5 -x 120 tux&lt;br /&gt;
&lt;br /&gt;
===groupadd===&lt;br /&gt;
 root@zero:~# groupadd -f -g 2001 xinuxer&lt;br /&gt;
{| border=1 cellpadding=2&lt;br /&gt;
|&amp;quot;-f&amp;quot;&lt;br /&gt;
|Überschreibe bestehende Gruppe&lt;br /&gt;
|-&lt;br /&gt;
|&amp;quot;-g 2001&amp;quot;&lt;br /&gt;
|GID der Gruppe&lt;br /&gt;
|-&lt;br /&gt;
|&amp;quot;xinuxer&amp;quot; &lt;br /&gt;
|Name des Gruppe&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==chmod==&lt;br /&gt;
Die Syntax des Befehls chmod lautet:&lt;br /&gt;
&lt;br /&gt;
'''chmod''' WerWieWas [,WerWieWas,.....] Dateiliste&lt;br /&gt;
&lt;br /&gt;
oder&lt;br /&gt;
&lt;br /&gt;
'''chmod''' Oktalzahl Dateiliste&lt;br /&gt;
&lt;br /&gt;
Durch WerWieWas bzw. Oktalzahl wird die Rechtetabelle definiert. Innerhalb von&lt;br /&gt;
WerWieWas darf es kein Leerzeichen geben. Wer bezeichnet den Benutzerkreis,&lt;br /&gt;
dem man Rechte gibt, Wie die Art, in der die Rechte gegeben werden und Was die&lt;br /&gt;
Rechte als solche. Im einzelnen können folgende Kürzel benutzt werden:&lt;br /&gt;
&lt;br /&gt;
Für Wer kann eines der folgenden Kürzel oder eine Kombination davon stehen:&lt;br /&gt;
 u                   (user) Rechte für den Dateibesitzer&lt;br /&gt;
 g                   (group) Rechte für die Gruppe&lt;br /&gt;
 o                   (others) Rechte für alle anderen Benutzer&lt;br /&gt;
 a                   (all) Rechte für alle Benutzer&lt;br /&gt;
Für Wie steht eines der folgenden Kürzel:&lt;br /&gt;
 +                   Die Rechte werden zu den vorhandenen zusätzlich vergeben&lt;br /&gt;
 -                   Die im Folgenden genannten Rechte werden entzogen&lt;br /&gt;
 =                   Die im Folgenden genannten Rechte ersetzen die bisherigen&lt;br /&gt;
Für Was steht eines der folgenden Kürzel:&lt;br /&gt;
 r                   (read) lesen&lt;br /&gt;
 w                   (write) schreiben&lt;br /&gt;
 x                   (execute) ausführen&lt;br /&gt;
oder diese Sonderformen&lt;br /&gt;
 s                   (usersbit) Programm läuft unter der UID des Besitzers&lt;br /&gt;
 s                   (groupsbit)Programm läuft unter der GID des GRUPPE&lt;br /&gt;
 t                   (stickybit) Dateien im Verzeichnis darf nur Besitzer löschen&lt;br /&gt;
&lt;br /&gt;
===Beispiel===&lt;br /&gt;
Setze für alle Schreib- und Leserecht&lt;br /&gt;
 xinux@zero:~$ chmod a=rw test &lt;br /&gt;
 xinux@zero:~$ ls -l test &lt;br /&gt;
 -rw-rw-rw- 1 xinux xinux 0 2009-06-16 12:01 test&lt;br /&gt;
 xinux@zero:~$ &lt;br /&gt;
&lt;br /&gt;
Erteile Besitzer Ausführungsrecht&lt;br /&gt;
 xinux@zero:~$ chmod u+x test ; ls -l test &lt;br /&gt;
 -rwxrw-rw- 1 xinux xinux 0 2009-06-16 12:01 test&lt;br /&gt;
 xinux@zero:~$ &lt;br /&gt;
&lt;br /&gt;
===chmod oktale Schreibweise===&lt;br /&gt;
 Specialrights        User           Group         Other&lt;br /&gt;
 usbit gsbit sticky    r    w   x     r   w   x     r   w   x&lt;br /&gt;
   1     1      1      1    1   1     1   1   1     1   1   1&lt;br /&gt;
   0     0      0      0    0   0     0   0   0     0   0   0&lt;br /&gt;
 Oktale Wertigkeit pro Recht&lt;br /&gt;
   4     2       1     4    2   1     4   2   1     4   2   1&lt;br /&gt;
&lt;br /&gt;
===Beispiele===&lt;br /&gt;
 xinux@zero:~$ chmod 751 test ; ls -l test&lt;br /&gt;
 -rwxr-x--x 1 xinux xinux 0 2009-06-16 12:01 test&lt;br /&gt;
 xinux@zero:~$ &lt;br /&gt;
&lt;br /&gt;
 xinux@zero:~$ chmod 4770 test ; ls -l test&lt;br /&gt;
 -rwsrwx--- 1 xinux xinux 0 2009-06-16 12:01 test&lt;br /&gt;
 xinux@zero:~$ &lt;br /&gt;
&lt;br /&gt;
 xinux@zero:~$ chmod 0 test ; ls -l test &lt;br /&gt;
 ---------- 1 xinux xinux 0 2009-06-16 12:01 test&lt;br /&gt;
&lt;br /&gt;
===chmod Optionen===&lt;br /&gt;
 -c   (changes) es werden nur die Dateien angezeigt, deren Zugriffsrechte tatsächlich verändert werden&lt;br /&gt;
 -f   (silent, quiet) Fehlermeldungen wegen fehlgeschlagener Änderungsversuche werden unterdrückt&lt;br /&gt;
 -v   (verbose) alle Aktionen werden angezeigt&lt;br /&gt;
 -R   (recursive) die Zugriffsrechte aller Dateien in den Unterverzeichnissen werden ebenfalls geändert&lt;br /&gt;
&lt;br /&gt;
Theoretisch sind alle Kombinationen der Zugriffsrechte denkbar, aber der&lt;br /&gt;
Eigentümer einer Datei darf diese immer lesen, selbst wenn das Lesebit nicht&lt;br /&gt;
gesetzt ist. Genauso macht es wenig Sinn, eine gewöhnliche Textdatei als&lt;br /&gt;
ausführbar zu setzen; die Shell wird damit nichts anfangen können. Ein x für ein&lt;br /&gt;
Verzeichnis gibt an, dass in dieses gewechselt werden kann.&lt;br /&gt;
&lt;br /&gt;
Rechte sind verbindlich&lt;br /&gt;
&lt;br /&gt;
Interessant ist auch ein Konstrukt folgender Art&lt;br /&gt;
 -rwx---rwx&lt;br /&gt;
&lt;br /&gt;
das angibt, dass mit der Datei alles angestellt werden kann, außer durch Nutzer der&lt;br /&gt;
Gruppe. Versucht irgend jemand, der nicht der Gruppe des Eigentümers angehört,&lt;br /&gt;
die Datei zu modifizieren, wird ihm dies gelingen, einem Gruppenmitglied bleibt&lt;br /&gt;
dies versagt, obwohl er ja gleichzeitig ein &amp;quot;Anderer&amp;quot; ist. D.h. die Rechte der&lt;br /&gt;
Gruppe sind verbindlicher, als die Rechte der anderen!&lt;br /&gt;
&lt;br /&gt;
===Bedeutungen der Zugriffsarten===&lt;br /&gt;
====Dateien====&lt;br /&gt;
* r: Der Inhalt der Datei kann gelesen und damit auch kopiert werden. &lt;br /&gt;
 root@zero:~# cat test&lt;br /&gt;
 Dies ist eine Testdatei&lt;br /&gt;
  &lt;br /&gt;
 root@zero:~# cp test backup&lt;br /&gt;
&lt;br /&gt;
* w: Der Inhalt der Datei darf verändert werden. Ob die Datei gelöscht werden kann ist&lt;br /&gt;
keine Eigenschaft der Datei, sondern des Verzeichnisses, indem sich die Datei befindet.&lt;br /&gt;
 root@zero:~# cat &amp;gt; test&lt;br /&gt;
 Hier steht jetzt was anderes&lt;br /&gt;
 ^C&lt;br /&gt;
 root@zero:~# cat test&lt;br /&gt;
 Hier steht jetzt was anderes&lt;br /&gt;
  &lt;br /&gt;
 xinux@zero:~$ ls -ld verzeichnis/&lt;br /&gt;
 dr-xr-xr-x 2 xinux xinux 4096 2009-06-18 11:16 verzeichnis/&lt;br /&gt;
 xinux@zero:~/verzeichnis$ rm text&lt;br /&gt;
 rm: Entfernen von „text“ nicht möglich: Permission denied&lt;br /&gt;
&lt;br /&gt;
* x: Ausführrecht für Programme und Skripte&lt;br /&gt;
 xinux@zero:~$ ./programm&lt;br /&gt;
 -bash: ./programm: Permission denied&lt;br /&gt;
 xinux@zero:~$ chmod +x programm&lt;br /&gt;
 xinux@zero:~$ ./programm&lt;br /&gt;
 Test&lt;br /&gt;
  test&lt;br /&gt;
&lt;br /&gt;
====Verzeichnisse====&lt;br /&gt;
* r: Die Einträge in dem Verzeichnis sind lesbar.&lt;br /&gt;
Leserecht von verzeichnis/ entziehen&lt;br /&gt;
 xinux@zero:~$ chmod a-r verzeichnis/&lt;br /&gt;
 xinux@zero:~$ ls verzeichnis/&lt;br /&gt;
 ls: Öffnen von Verzeichnis verzeichnis/ nicht möglich: Permission denied&lt;br /&gt;
Leserecht für Benutzer und Gruppe vergeben&lt;br /&gt;
 xinux@zero:~$ chmod a+r verzeichnis/&lt;br /&gt;
 xinux@zero:~$ ls verzeichnis/&lt;br /&gt;
 text&lt;br /&gt;
&lt;br /&gt;
* w: Die Einträge in dem Verzeichnis können geändert werden. &lt;br /&gt;
Neue Datei erstellen&lt;br /&gt;
 xinux@zero:~$ touch neu&lt;br /&gt;
 xinux@zero:~$ ls neu&lt;br /&gt;
 neu&lt;br /&gt;
&lt;br /&gt;
Datei löschen&lt;br /&gt;
 xinux@zero:~$ rm neu&lt;br /&gt;
 xinux@zero:~$ ls neu&lt;br /&gt;
 ls: Zugriff auf neu nicht möglich: No such file or directory&lt;br /&gt;
&lt;br /&gt;
* x: Der Name des Verzeichnisses kann in einem Pfadnamen erscheinen.&lt;br /&gt;
Verzeichnis ohne x Recht&lt;br /&gt;
 xinux@zero:~$ chmod a-x verzeichnis/&lt;br /&gt;
Wechseln in Verzeichnis mangels x-Recht nicht möglich&lt;br /&gt;
 xinux@zero:~$ cd verzeichnis/&lt;br /&gt;
 -bash: cd: verzeichnis/: Permission denied&lt;br /&gt;
x-Recht vergeben&lt;br /&gt;
 xinux@zero:~$ chmod a+x verzeichnis/&lt;br /&gt;
damit Wechsel in Verzeichnis möglich&lt;br /&gt;
 xinux@zero:~$ cd verzeichnis/&lt;br /&gt;
 xinux@zero:~/verzeichnis$ pwd&lt;br /&gt;
 /home/xinux/verzeichnis&lt;br /&gt;
&lt;br /&gt;
====umask====&lt;br /&gt;
Neue Dateien und Verzeichnisse werden mit ein und denselben Zufriffsrechten erzeugt.&lt;br /&gt;
 xinux@zero:~$ mkdir text&lt;br /&gt;
 xinux@zero:~$ touch textdat&lt;br /&gt;
 xinux@zero:~$ ls -ld text*&lt;br /&gt;
 drwxr-xr-x 2 xinux xinux 4096 2009-06-18 11:37 text&lt;br /&gt;
 -rw-r--r-- 1 xinux xinux    0 2009-06-18 11:37 textdat&lt;br /&gt;
&lt;br /&gt;
Zuständig für dieses Verhalten ist die sogenannte umask, die oft in der Datei&lt;br /&gt;
/etc/profile auf den Wert 022 voreingestellt ist. Zusätzlich wird noch eine&lt;br /&gt;
Maximalmaske benötigt, die sich für Verzeichnisse und andere Dateien&lt;br /&gt;
unterscheidet. Die bei der Erzeugung gesetzten Rechte entstehen nun, indem von&lt;br /&gt;
der Maximalmaske der durch die umask vorgegebene Wert subtrahiert wird:&lt;br /&gt;
&lt;br /&gt;
{| border=1 cellpadding=2&lt;br /&gt;
!&lt;br /&gt;
! Dateien&lt;br /&gt;
! Verzeichnisse&lt;br /&gt;
|-&lt;br /&gt;
| Systemvorgabe&lt;br /&gt;
| 666&lt;br /&gt;
| 777&lt;br /&gt;
|-&lt;br /&gt;
| -umask&lt;br /&gt;
| 022&lt;br /&gt;
| 022&lt;br /&gt;
|-&lt;br /&gt;
| Ergebnis&lt;br /&gt;
| 644&lt;br /&gt;
| 755&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
 xinux@zero:~$ grep umask /etc/profile&lt;br /&gt;
 umask 022&lt;br /&gt;
&lt;br /&gt;
==Gruppenzugehörigkeit==&lt;br /&gt;
===newgrp===&lt;br /&gt;
Ändert die Gruppenzugehörigkeit eines Benutzers auf die angegebene Gruppe. Wenn keine Gruppe angegeben wird, wird die &lt;br /&gt;
Anmeldegruppe des Benutzers verwendet. Die neue Gruppe wird anschließend fü Zugriffskontrollen verwendet.&lt;br /&gt;
&lt;br /&gt;
 newgrp Gruppenname&lt;br /&gt;
&lt;br /&gt;
 root@zero:~# newgrp hacker&lt;br /&gt;
 root@zero:~# id&lt;br /&gt;
 uid=0(root) gid=1006(hacker) Gruppen=0(root),1006(hacker)&lt;br /&gt;
&lt;br /&gt;
===chgrp===&lt;br /&gt;
Verändert die Besitzugehörigkeit zu der angegebenen Gruppe&lt;br /&gt;
&lt;br /&gt;
 chgrp [Optionen] Gruppe Datei(en)&lt;br /&gt;
&lt;br /&gt;
Optionen:&lt;br /&gt;
 -c Zeigt Veränderungen an&lt;br /&gt;
 -f Unterdrückt die meisten Fehlermeldungen&lt;br /&gt;
 -R Verändert Dateien und Verzeichnisse rekursiv&lt;br /&gt;
 -v Gibt geschwätzige Ausgabe aus.&lt;br /&gt;
&lt;br /&gt;
 root@zero:~# ls -l&lt;br /&gt;
 ...&lt;br /&gt;
 d-wx--x--x  3 root root 4096 2009-06-18 13:34 verzeichnis&lt;br /&gt;
 &lt;br /&gt;
 root@zero:~# chgrp -R xinux verzeichnis/&lt;br /&gt;
 root@zero:~# ls -l&lt;br /&gt;
 ...&lt;br /&gt;
 d-wx--x--x  3 root xinux 4096 2009-06-18 13:34 verzeichnis&lt;br /&gt;
&lt;br /&gt;
 xinux@zero:~$ cd /root/verzeichnis/&lt;br /&gt;
 xinux@zero:/root/verzeichnis$ pwd&lt;br /&gt;
 /root/verzeichnis&lt;br /&gt;
&lt;br /&gt;
===chown===&lt;br /&gt;
Ändert den Eigentümer von einer oder mehreren Dateien in den angegebenen Benutzer. &lt;br /&gt;
chown erlaubt ebenfalls das Ändern der Gruppeneigentümreschaft. Nur der aktuelle Eigentümer einer&lt;br /&gt;
Datei oder der Superuser (root) darf die Eigentumsverhältnisse ändern.&lt;br /&gt;
&lt;br /&gt;
 chown [Optionen] Benutzer(:Gruppe) Dateien&lt;br /&gt;
&lt;br /&gt;
Optionen:&lt;br /&gt;
 -c Gibt Informationen über die veränderten Dateien aus&lt;br /&gt;
 --dereference Symbolischen Links folgen&lt;br /&gt;
 -v Gibt Informationen über alle Dateien aus, die chown zu ändern versucht, egal, ob die Änderung erfolgt ist oder nicht&lt;br /&gt;
 -R Geht rekursiv durch alle Unterverzeichnisse und führt die Änderungen durch. &lt;br /&gt;
&lt;br /&gt;
 root@zero:~# chown -R xinux.xinux verzeichnis/&lt;br /&gt;
 root@zero:~# ls -l&lt;br /&gt;
 insgesamt 12&lt;br /&gt;
 drwx------ 13 root  root  4096 2009-04-21 15:11 profile&lt;br /&gt;
 --w-------  1 root  root     0 2009-06-18 11:13 test&lt;br /&gt;
 -rw-r--r--  1 root  root    40 2009-06-18 12:04 text&lt;br /&gt;
 drwxrwx--x  3 xinux xinux 4096 2009-06-18 13:39 verzeichnis&lt;br /&gt;
 &lt;br /&gt;
 root@zero:~# chown -R -c xinux.xinux verzeichnis/&lt;br /&gt;
 &lt;br /&gt;
 root@zero:~# chown -R -v xinux.xinux verzeichnis/&lt;br /&gt;
 Eigentümer von „verzeichnis/01“ als xinux:xinux erhalten&lt;br /&gt;
 Eigentümer von „verzeichnis/test“ als xinux:xinux erhalten&lt;br /&gt;
 Eigentümer von „verzeichnis/“ als xinux:xinux erhalten&lt;br /&gt;
&lt;br /&gt;
==Eingabe/Ausgabe==&lt;br /&gt;
Standardeingabe (0): Laufende Programme erwarten von hier ihre Eingaben (normalerweise handelt es sich um die Tastatur).&lt;br /&gt;
&lt;br /&gt;
Standardausgabe (1): Programme schreiben auf diese ihre Ausgaben (Bildschirm).&lt;br /&gt;
&lt;br /&gt;
Standardfehlerausgabe (2) : Fehlerausgaben landen hier (Bildschirm, aber nur die aktive Konsole).&lt;br /&gt;
&lt;br /&gt;
[[Bild:std.jpg]]&lt;br /&gt;
&lt;br /&gt;
===cat===&lt;br /&gt;
Das Programm cat liest von STDIN und gibt es STDOUT wieder aus&lt;br /&gt;
&lt;br /&gt;
Einlesen der Datei text&lt;br /&gt;
 root@zero:~# cat &amp;lt; text&lt;br /&gt;
 wichtig&lt;br /&gt;
&lt;br /&gt;
Schreiben in die Datei text, dies überschreibt den bisherigen Inhalt der Datei&lt;br /&gt;
 root@zero:~# cat &amp;gt; text&lt;br /&gt;
 sogar noch wichtiger &lt;br /&gt;
 &lt;br /&gt;
Ausgeben der Datei text&lt;br /&gt;
 root@zero:~# cat text &lt;br /&gt;
 sogar noch wichtiger&lt;br /&gt;
&lt;br /&gt;
Lesen aus der Datei text und schreiben in die Datei neuertext&lt;br /&gt;
 root@zero:~# cat &amp;lt; text &amp;gt; neuertext&lt;br /&gt;
 root@zero:~# cat neuertext&lt;br /&gt;
 sogar noch wichtiger&lt;br /&gt;
&lt;br /&gt;
Anhängen der Ausgabe von date an die Datei neuertext&lt;br /&gt;
 root@zero:~# date &amp;gt;&amp;gt; neuertext&lt;br /&gt;
 root@zero:~# cat neuertext&lt;br /&gt;
 sogar noch wichtiger&lt;br /&gt;
 Do 18. Jun 14:08:58 CEST 2009&lt;br /&gt;
&lt;br /&gt;
Umleiten des Standardfehlerkanals nach error&lt;br /&gt;
 root@zero:~# rm sux 2&amp;gt; error&lt;br /&gt;
 root@zero:~# more error&lt;br /&gt;
 rm: Entfernen von „sux“ nicht möglich: No such file or directory&lt;br /&gt;
&lt;br /&gt;
===Umleitungen===&lt;br /&gt;
Nacheinander auszuführende Kommandos&lt;br /&gt;
 root@zero:~# pwd; date&lt;br /&gt;
 /root&lt;br /&gt;
 Do 18. Jun 14:13:05 CEST 2009&lt;br /&gt;
 &lt;br /&gt;
Übergeben der Ausgabe von tail als Eingabe von grep mit Hilfe der Pipe &amp;quot;|&amp;quot;&lt;br /&gt;
 root@zero:~# tail /var/log/auth.log | grep xinux&lt;br /&gt;
 Jun 18 13:52:33 zero nss_wins[11433]: pam_unix(login:session): session closed for user xinux&lt;br /&gt;
&lt;br /&gt;
Übergeben der letzten 100 Zeilen von syslog als Eingabe von grep&lt;br /&gt;
 root@zero:~# tail /var/log/syslog -n 100 | grep error&lt;br /&gt;
 Jun 18 09:30:54 zero kernel: [154384.692135] end_request: I/O error, dev fd0, sector 0&lt;br /&gt;
 Jun 18 09:30:54 zero kernel: [154384.712137] end_request: I/O error, dev fd0, sector 0&lt;br /&gt;
&lt;br /&gt;
==tr==&lt;br /&gt;
tr ist ein Programm um Zeichen zu übersetzen. Dies betrifft nur die Ausgabe, die Datei selbst bleibt unverändert.&lt;br /&gt;
&lt;br /&gt;
Ersetzt Kleinbuchstaben durch Großbuchstaben aus der Datei text&lt;br /&gt;
 root@zero:~# tr &amp;quot;a-z&amp;quot; &amp;quot;A-Z&amp;quot; &amp;lt; text&lt;br /&gt;
 SOGAR NOCH WICHTIGER&lt;br /&gt;
 123&lt;br /&gt;
 34&lt;br /&gt;
 4711&lt;br /&gt;
 TEST&lt;br /&gt;
&lt;br /&gt;
Ersetzt alle Zahlen durch X&lt;br /&gt;
 root@zero:~# tr &amp;quot;0-9&amp;quot; &amp;quot;X&amp;quot; &amp;lt; text&lt;br /&gt;
 sogar noch wichtiger&lt;br /&gt;
 XXX&lt;br /&gt;
 XX&lt;br /&gt;
 XXXX&lt;br /&gt;
 test&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
 root@zero:~# cat &amp;gt; test&lt;br /&gt;
 +++++&lt;br /&gt;
 ###&lt;br /&gt;
 1111&lt;br /&gt;
&lt;br /&gt;
-s löscht mehrfach kommende Zeichen&lt;br /&gt;
 root@zero:~# tr '''-s''' &amp;quot;+&amp;quot; &amp;lt; test&lt;br /&gt;
 +&lt;br /&gt;
 ###&lt;br /&gt;
 1111&lt;br /&gt;
&lt;br /&gt;
-d löscht vorkommende Zeichen &lt;br /&gt;
 root@zero:~# tr '''-d''' &amp;quot;#&amp;quot; &amp;lt; test&lt;br /&gt;
 +++++ &lt;br /&gt;
 &lt;br /&gt;
 1111&lt;br /&gt;
&lt;br /&gt;
==cut==&lt;br /&gt;
Spalten aus einer Datei schneiden. Dies betrifft nur die Ausgabe, die Datei selbst bleibt unverändert.&lt;br /&gt;
 &lt;br /&gt;
Schneidet die erste Spalte aus, der Delimiter ist : &lt;br /&gt;
 root@zero:~# cut -f 1 -d : /etc/passwd&lt;br /&gt;
 root&lt;br /&gt;
 daemon&lt;br /&gt;
 bin&lt;br /&gt;
 ...&lt;br /&gt;
 xinux&lt;br /&gt;
&lt;br /&gt;
 root@zero:~# more test&lt;br /&gt;
 1234#5678#9999&lt;br /&gt;
 &lt;br /&gt;
Schneidet die zweite Spalte aus, der Delimiter ist #&lt;br /&gt;
 root@zero:~# cut -f 2 -d &amp;quot;#&amp;quot; &amp;lt; test&lt;br /&gt;
 5678&lt;br /&gt;
&lt;br /&gt;
Schneidet bis zum 3 Zeichen ab&lt;br /&gt;
 root@zero:~$ echo S01policykit | cut -c 4-&lt;br /&gt;
 policykit&lt;br /&gt;
&lt;br /&gt;
==expand==&lt;br /&gt;
Ersetzt Tabulatorzeichen durch Folgen von Leerzeichen und schreibt das Ergebnis auf die Standardausgabe&lt;br /&gt;
 root@zero:~# expand /etc/samba/smb.conf&lt;br /&gt;
 ...&lt;br /&gt;
&lt;br /&gt;
==fmt==&lt;br /&gt;
#Setzt den Text der Dateien im Blocksatz der angegebenen Breite durch Auffüllen von Zeilen und Entfernen von Zeilenwechseln.&lt;br /&gt;
Standardgemäß werden Leerzeilen, die Position von Leerzeichen und der Einzug am Zeilenanfang erhalten. fmt versucht, &lt;br /&gt;
Zeilenumbrüche an Satzenden durchzuführen sowie sie nach dem ersten oder vor dem letzten Wort eines Satzes zu vermeiden. &lt;br /&gt;
 &lt;br /&gt;
 fmt [Optionen] [Dateien]&lt;br /&gt;
&lt;br /&gt;
Optionen&lt;br /&gt;
&lt;br /&gt;
* -p ''Präfix'': Formatiert nur Zeilen, die mit ''Präfix'' anfangen&lt;br /&gt;
 root@zero:/tmp# fmt -p '#' text&lt;br /&gt;
 #Setzt den Text der Dateien im Blocksatz der angegebenen Breite durch&lt;br /&gt;
 #Auffüllen von Zeilen und Entfernen von Zeilenwechseln.  Standardgemäß&lt;br /&gt;
 #werden Leerzeilen, die Position von Leerzeichen und der Einzug am&lt;br /&gt;
 #Zeilenanfang erhalten. fmt versucht,&lt;br /&gt;
 Zeilenumbrüche an Satzenden durchzuführen sowie sie nach dem ersten oder vor dem letzten Wort eines Satzes zu vermeiden.&lt;br /&gt;
&lt;br /&gt;
* -u : Erzwingt genau ein Leerzeichen zwischen Wörtern und zwei Leerzeichen zwischen Sätzen&lt;br /&gt;
&lt;br /&gt;
* -w ''Breite'': Setzt die Ausgabebreite auf ''Breite''&lt;br /&gt;
 root@zero:/tmp# fmt -w 30 text&lt;br /&gt;
 #Setzt den Text der Dateien&lt;br /&gt;
 im Blocksatz der angegebenen&lt;br /&gt;
 Breite durch Auffüllen&lt;br /&gt;
 von Zeilen und Entfernen&lt;br /&gt;
 von Zeilenwechseln.&lt;br /&gt;
 #Standardgemäß werden&lt;br /&gt;
 Leerzeilen, die Position von&lt;br /&gt;
 Leerzeichen und der Einzug am&lt;br /&gt;
 Zeilenanfang erhalten. fmt&lt;br /&gt;
 versucht, Zeilenumbrüche&lt;br /&gt;
 an Satzenden durchzuführen&lt;br /&gt;
 sowie sie nach dem ersten&lt;br /&gt;
 oder vor dem letzten Wort&lt;br /&gt;
 eines Satzes zu vermeiden.&lt;br /&gt;
&lt;br /&gt;
==join==&lt;br /&gt;
Führt die Zeilen zweier sortierter Dateien anhand von '''Übereinstimmungen''' in einem gemeinsamen Feld zusammen.&lt;br /&gt;
&lt;br /&gt;
 root@zero:~# more name&lt;br /&gt;
 1. karl&lt;br /&gt;
 2. heinz&lt;br /&gt;
 3. hans&lt;br /&gt;
 4. otto&lt;br /&gt;
 root@zero:~# more tel&lt;br /&gt;
 1. 1234&lt;br /&gt;
 2. 4321&lt;br /&gt;
 3. 222&lt;br /&gt;
 4. 121212&lt;br /&gt;
 root@zero:~# join name tel &amp;gt; telefonbuch&lt;br /&gt;
 root@zero:~# more telefonbuch&lt;br /&gt;
 1. karl 1234&lt;br /&gt;
 2. heinz 4321&lt;br /&gt;
 3. hans 222&lt;br /&gt;
 4. otto 121212&lt;br /&gt;
&lt;br /&gt;
 root@zero:~# join -t : /etc/passwd /etc/shadow&lt;br /&gt;
 ....&lt;br /&gt;
 daemon:x:1:1:daemon:/usr/sbin:/bin/sh:*:14181:0:99999:7:::&lt;br /&gt;
 bin:x:2:2:bin:/bin:/bin/sh:*:14181:0:99999:7:::&lt;br /&gt;
 sys:x:3:3:sys:/dev:/bin/sh:*:14181:0:99999:7:::&lt;br /&gt;
 sync:x:4:65534:sync:/bin:/bin/sync:*:14181:0:99999:7:::&lt;br /&gt;
 ...&lt;br /&gt;
&lt;br /&gt;
join in dat1 nach Feld 3 und in dat2 nach Feld 2&lt;br /&gt;
 thomas@lydia:~$ cat dat1 &lt;br /&gt;
 hugo:ps:1111&lt;br /&gt;
 erwin:zw:2222&lt;br /&gt;
 karl:sb:3333&lt;br /&gt;
 rudi:kl:4444&lt;br /&gt;
 thomas@lydia:~$ cat dat2&lt;br /&gt;
 blau:1111:svn&lt;br /&gt;
 grün:2222:fcs&lt;br /&gt;
 gelb:3333:fch&lt;br /&gt;
 rot:4444:fck&lt;br /&gt;
 thomas@lydia:~$ join -t : -1 3 -2 2 dat1 dat2 &lt;br /&gt;
 1111:hugo:ps:blau:svn&lt;br /&gt;
 2222:erwin:zw:grün:fcs&lt;br /&gt;
 3333:karl:sb:gelb:fch&lt;br /&gt;
 4444:rudi:kl:rot:fck&lt;br /&gt;
&lt;br /&gt;
==nl==&lt;br /&gt;
Nummeriert die Zeilen in einer Datei.&lt;br /&gt;
&lt;br /&gt;
 root@zero:~# nl /etc/passwd                                                   &lt;br /&gt;
     1  root:x:0:0:root:/root:/bin/bash                                       &lt;br /&gt;
     2  daemon:x:1:1:daemon:/usr/sbin:/bin/sh                                 &lt;br /&gt;
     3  bin:x:2:2:bin:/bin:/bin/sh                                            &lt;br /&gt;
     4  sys:x:3:3:sys:/dev:/bin/sh                                            &lt;br /&gt;
     5  sync:x:4:65534:sync:/bin:/bin/sync&lt;br /&gt;
     ...&lt;br /&gt;
&lt;br /&gt;
==od==&lt;br /&gt;
Gibt Dateien im Oktal und anderen Formaten aus.&lt;br /&gt;
&lt;br /&gt;
 od [Optionen] Datei&lt;br /&gt;
&lt;br /&gt;
* -j ''Bytes'': Überspringt die Anzahl ''Bytes'' einer Datei&lt;br /&gt;
* -N ''Bytes'': Gibt nur die Anzahl ''Bytes'' aus&lt;br /&gt;
* -c : Gebe ASCII Zeichen aus&lt;br /&gt;
* -f : Gebe Fließkommazahlen aus&lt;br /&gt;
* -i : Gebe Dezimal Integer aus&lt;br /&gt;
* -l : Gebe Dezimal Long aus&lt;br /&gt;
* -o : Gebe Oktal 2 Byte Einheiten aus&lt;br /&gt;
* -s : Gebe Dezimal 2 Byte Einheiten aus&lt;br /&gt;
* -x : Gebe Hexadezimale 2 Byte einheiten aus&lt;br /&gt;
&lt;br /&gt;
Beispiele&lt;br /&gt;
&lt;br /&gt;
Gebe Master Boot Record (die ersten 512 Byte der Festplatte /dev/sda) als Hexadezimal aus&lt;br /&gt;
 root@zero:~# od '''-x -N''' 512 /dev/sda&lt;br /&gt;
 0000000 48eb 1090 d08e 00bc b8b0 0000 d88e c08e&lt;br /&gt;
 0000020 befb 7c00 00bf b906 0200 a4f3 21ea 0006&lt;br /&gt;
 0000040 be00 07be 0438 0b75 c683 8110 fefe 7507&lt;br /&gt;
 0000060 ebf3 b416 b002 bb01 7c00 80b2 748a 0203&lt;br /&gt;
 0000100 00ff 2000 0001 0000 0200 90fa f690 80c2&lt;br /&gt;
 ...&lt;br /&gt;
&lt;br /&gt;
Schreibe &amp;quot;suxer&amp;quot; in die Datei test&lt;br /&gt;
 root@zero:~# echo &amp;quot;suxer&amp;quot; &amp;gt; test&lt;br /&gt;
Ausgabe Hexadezimal&lt;br /&gt;
 root@zero:~# od -x test&lt;br /&gt;
 0000000 7573 6578 0a72&lt;br /&gt;
 0000006&lt;br /&gt;
&lt;br /&gt;
Ausgabe ASCII Zeichen&lt;br /&gt;
 root@zero:~# od -c test&lt;br /&gt;
 0000000   s   u   x   e   r  \n&lt;br /&gt;
 0000006&lt;br /&gt;
&lt;br /&gt;
==paste==&lt;br /&gt;
Fügt die Zeilen von zwei oder mehr Dateien horizontal zusammen&lt;br /&gt;
 root@zero:~# paste name tel&lt;br /&gt;
 1. karl 1. 1234&lt;br /&gt;
 2. heinz        2. 4321&lt;br /&gt;
 3. hans 3. 222&lt;br /&gt;
 4. otto 4. 121212&lt;br /&gt;
&lt;br /&gt;
==pr==&lt;br /&gt;
Bereitet Textdateien zum Drucken vor.&lt;br /&gt;
&lt;br /&gt;
 root@zero:~# echo &amp;quot;Plan für heute&amp;quot; &amp;gt; dokument&lt;br /&gt;
 root@zero:~# more dokument&lt;br /&gt;
 Plan für heute&lt;br /&gt;
 root@zero:~# pr dokument   &lt;br /&gt;
  &lt;br /&gt;
 &lt;br /&gt;
 2009-06-19 12:44                    dokument                     Seite 1&lt;br /&gt;
 &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
 Plan für heute&lt;br /&gt;
&lt;br /&gt;
Anmerkung Ausmaße der Bildschirmausgabe wie eine Druckseite.&lt;br /&gt;
&lt;br /&gt;
==sed==&lt;br /&gt;
streaming editor. Mit sed ist es möglich, den Inhalt einer Datei automatisch (nicht interaktiv) zu&lt;br /&gt;
bearbeiten. Wie unter Linux üblich, wird auch hier der Text nicht wirklich verändert sondern die &lt;br /&gt;
Änderung erfolgt über die Standardausgabe, die wieder umgeleitet werden kann. Die Syntax ist ähnlich &lt;br /&gt;
des ex modus von vi. Reguläre Ausdrücke können nach Belieben benutzt werden. &lt;br /&gt;
&lt;br /&gt;
Optionen:&lt;br /&gt;
 -e Zeichenkette  wendet die Editorbefehle aus Zeichenkette auf den Text an.&lt;br /&gt;
 -n gibt nur die Zeilen aus, die explizit (durch &amp;quot;p&amp;quot; ausgedruckt werden sollen&lt;br /&gt;
&lt;br /&gt;
Gibt die dritte Zeile der Datei text aus&lt;br /&gt;
 root@zero:~# sed -n &amp;quot;3p&amp;quot; text&lt;br /&gt;
 34&lt;br /&gt;
&lt;br /&gt;
Gibt die erste bis dritte Zeile von text aus&lt;br /&gt;
 root@zero:~# sed -n &amp;quot;1,3p&amp;quot; text&lt;br /&gt;
 sogar noch wichtiger&lt;br /&gt;
 123&lt;br /&gt;
 34&lt;br /&gt;
&lt;br /&gt;
Löschen der Zeile mit &amp;quot;sogar&amp;quot;&lt;br /&gt;
 root@zero:~# sed -e '/sogar/d' &amp;lt; text&lt;br /&gt;
 123&lt;br /&gt;
 34&lt;br /&gt;
 4711&lt;br /&gt;
 test&lt;br /&gt;
&lt;br /&gt;
und schreiben in text2&lt;br /&gt;
 root@zero:~# sed -e '/sogar/d' &amp;lt; text &amp;gt; text2&lt;br /&gt;
 root@zero:~# more text2&lt;br /&gt;
 123&lt;br /&gt;
 34&lt;br /&gt;
 4711&lt;br /&gt;
 test&lt;br /&gt;
&lt;br /&gt;
Alle 3en durch DREI ersetzen&lt;br /&gt;
 root@zero:~# sed -e 's/3/DREI/g' &amp;lt; text&lt;br /&gt;
 sogar noch wichtiger&lt;br /&gt;
 12DREI&lt;br /&gt;
 DREI4&lt;br /&gt;
 4711&lt;br /&gt;
 test&lt;br /&gt;
&lt;br /&gt;
==wc==&lt;br /&gt;
Zählt die Anzahl von Zeichen, Wörter oder Zeilen&lt;br /&gt;
&lt;br /&gt;
Optionen&lt;br /&gt;
* -m : Zählt die Anzahl der Zeichen&lt;br /&gt;
 root@zero:~# more name&lt;br /&gt;
 1. karl&lt;br /&gt;
 2. heinz&lt;br /&gt;
 3. hans&lt;br /&gt;
 4. otto&lt;br /&gt;
 root@zero:~# wc '''-m''' tel&lt;br /&gt;
 33 tel&lt;br /&gt;
&lt;br /&gt;
* -w : Zählt die Anzahl der Wörter (einschließlich Zahlen und andere Zeichen)&lt;br /&gt;
 root@zero:~# wc '''-w''' name&lt;br /&gt;
 8 name&lt;br /&gt;
&lt;br /&gt;
* -l : Zählt die Anzahl der Zeilen&lt;br /&gt;
 root@zero:~# wc '''-l''' name&lt;br /&gt;
 4 name&lt;br /&gt;
&lt;br /&gt;
==INodes==&lt;br /&gt;
Inode (oder I-Node) wird im Deutschen am besten als Informationsknoten oder&lt;br /&gt;
Indexeintrag bezeichnet. Er fasst alle Attribute einer Datei zusammen außer dem Inhalt&lt;br /&gt;
und dem Namen der Datei.&lt;br /&gt;
&lt;br /&gt;
===Daten===&lt;br /&gt;
{| border=1 cellpadding=2&lt;br /&gt;
|type&lt;br /&gt;
|Der Typ der Datei wird als einzelner Buchstabe angezeigt. Der Typ einer Datei wird beim Anlegen der Datei festgelegt&lt;br /&gt;
|-&lt;br /&gt;
|Permissions &lt;br /&gt;
|Die Zugriffsrechte der Datei werden in den 12 Bit sstrwxrwxrwx abgespeichert.Wenn sie gesetzt sind, werden sie bei &lt;br /&gt;
der Ausgabe an Stelle der x-Rechte ausgegeben. Die Zugriffsrechte können mit dem Kommando chmod verändert werden.&lt;br /&gt;
|-&lt;br /&gt;
|link count&lt;br /&gt;
|In UNIX kann eine Datei mehr als einen Namen haben. Der Link Count gibt die Anzahl der Namen einer Datei an. Er kann&lt;br /&gt;
mit dem Kommando ln erhöht und dem Kommando rm erniedrigt werden.&lt;br /&gt;
|-&lt;br /&gt;
|owner&lt;br /&gt;
|Für den Dateieigentümer gelten die in der ersten rwx-Gruppe festgelegten Zugriffsrechte. Standardmäßig ist der &lt;br /&gt;
Eigentümer einer Datei derjenige Benutzer, der die Datei angelegt hat.&lt;br /&gt;
|-&lt;br /&gt;
|group&lt;br /&gt;
|Für Benutzer, die in der gleichen Gruppe sind, der die Datei angehört, gelten die in der zweiten rwx-Gruppe festgelegten&lt;br /&gt;
Zugriffsrechte. In System V gehört eine Datei standardmäßig der Gruppe an, in der der anlegende Benutzer gerade ist.&lt;br /&gt;
|-&lt;br /&gt;
|size&lt;br /&gt;
|Bei normalen Dateien und Verzeichnissen gibt diese Information die Länge der Datei in Byte an.&lt;br /&gt;
|-&lt;br /&gt;
|access time&lt;br /&gt;
|Die Zugriffszeit gibt den Zeitpunkt des letzten Lesezugriffes auf eine Datei an. Aus Effizienzgründen wird die &lt;br /&gt;
Zugriffszeit an Verzeichnissen nicht gesetzt, wenn ein Verzeichnis durchsucht wird, obwohl man dies erwarten könnte.&lt;br /&gt;
|-&lt;br /&gt;
|modification time&lt;br /&gt;
|Die Modifikationszeit gibt die Zeit des letzten Schreibzugriffes auf die Daten der Datei an. Intern speichert UNIX &lt;br /&gt;
die Zeit als Sekunden seit Beginn des Jahres 1970 und in GMT ab. Für die Ausgabe wird dies in ein besser lesbares &lt;br /&gt;
Format in der lokalen Zeitzone umgewandelt.&lt;br /&gt;
|-&lt;br /&gt;
|change time &lt;br /&gt;
|Die Veränderungszeit gibt das Datum der letzten Statusänderung der Datei an. Sie wird immer dann gesetzt, wenn die &lt;br /&gt;
Informationen über die Datei sich ändern (Datum der Erzeugung wird nicht gespeichert)&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
===Dateiarten===&lt;br /&gt;
{| border=1 cellpadding=2&lt;br /&gt;
!Zeichen&lt;br /&gt;
!Typ&lt;br /&gt;
!Zweck&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;nowiki&amp;gt;-&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
|file&lt;br /&gt;
|normale Datei&lt;br /&gt;
|-&lt;br /&gt;
|d&lt;br /&gt;
|directory&lt;br /&gt;
|Verzeichnis&lt;br /&gt;
|-&lt;br /&gt;
|b&lt;br /&gt;
|block device&lt;br /&gt;
|Gerätedatei&lt;br /&gt;
|-&lt;br /&gt;
|c&lt;br /&gt;
|character device&lt;br /&gt;
|Gerätedatei&lt;br /&gt;
|-&lt;br /&gt;
|l&lt;br /&gt;
|link&lt;br /&gt;
|Querverweis&lt;br /&gt;
|-&lt;br /&gt;
|p&lt;br /&gt;
|named pipe&lt;br /&gt;
|Benannte Pipeline&lt;br /&gt;
|-&lt;br /&gt;
|s&lt;br /&gt;
|socket&lt;br /&gt;
|Netzwerkverbindung&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
====Normale Dateien====&lt;br /&gt;
Unter einer normalen Datei versteht man die Ansammlung von Daten. Dies kann ein Text, Programm, Bild oder sonstiges sein. &lt;br /&gt;
Beispiel&lt;br /&gt;
 root@zero:~# ls text&lt;br /&gt;
 text&lt;br /&gt;
&lt;br /&gt;
====Verzeichnisse====&lt;br /&gt;
Dateien werden in Verzeichnissen gespeichert, nur so ist eine Ordnung möglich. &lt;br /&gt;
 root@zero:~# mkdir -v Ordner&lt;br /&gt;
 mkdir: Verzeichnis „Ordner“ angelegt&lt;br /&gt;
 &lt;br /&gt;
 root@zero:~# ls -d ~/*&lt;br /&gt;
 /root/error  /root/neuertext  /root/Ordner  /root/profile  /root/test  /root/text  /root/verzeichnis&lt;br /&gt;
&lt;br /&gt;
====Gerätedateien (Block und Char)====&lt;br /&gt;
Gerätedateien ermöglichen Anwendungsprogrammen unter Benutzung des  Kernels den Zugriff auf die Hardwarekomponenten des &lt;br /&gt;
Systems. &lt;br /&gt;
&lt;br /&gt;
Beispiele&lt;br /&gt;
&lt;br /&gt;
Sicherung des Master Boot Records der ersten Festplatte&lt;br /&gt;
 root@zero:~# dd if=/dev/sda1 of=/tmp/mbr.img bs=512 count=1&lt;br /&gt;
&lt;br /&gt;
Einhängen des CD-ROM Laufwerks&lt;br /&gt;
 root@zero:~# mount /dev/cdrom /media/cdrom -t iso9660&lt;br /&gt;
&lt;br /&gt;
====Named Pipes====&lt;br /&gt;
Benannte Pipes (Named Pipes) können dagegen auch zur Kommunikation zwischen Prozessen eingesetzt werden, die nicht miteinander&lt;br /&gt;
verwandt sind und sich darüber hinaus auf unterschiedlichen Rechnern innerhalb eines Netzwerkes befinden dürfen. Sie sind &lt;br /&gt;
flexibler als anonyme Pipes und eignen sich für sogenannte Client-Server-Anwendungen (es lassen sich auch RPCs realisieren).&lt;br /&gt;
Benannte Pipes ermöglichen die gleichzeitige Kommunikation in beide Richtungen, das heißt, Daten können im Vollduplexbetrieb &lt;br /&gt;
zwischen den Prozessen ausgetauscht werden.&lt;br /&gt;
 &lt;br /&gt;
Erstelle Named Pipe mit Namen sux. Schreibe &amp;quot;Hallo Welt&amp;quot; in die Pipe sux und bleibe im Hintergrund. Gebe Inhalt der Pipe mit cat aus&lt;br /&gt;
 root@zero:~# mkfifo sux ; echo 'Hallo Welt' &amp;gt; sux &amp;amp; cat &amp;lt; sux&lt;br /&gt;
 [1] 12947&lt;br /&gt;
 Hallo Welt&lt;br /&gt;
 [1]+  Done                    echo 'Hallo Welt' &amp;gt; sux&lt;br /&gt;
&lt;br /&gt;
====Sockets====&lt;br /&gt;
Schnittstelle um es vernetzten Rechnern zu ermöglichen, miteinander zu kommunizieren.&lt;br /&gt;
&lt;br /&gt;
Sie ist in der Regel definiert durch IP-Adresse sowie Port. &lt;br /&gt;
&lt;br /&gt;
====Links====&lt;br /&gt;
Bei Links handelt es sich um symbolische Verweise auf andere Dateien&lt;br /&gt;
&lt;br /&gt;
'''Softlink'''&lt;br /&gt;
Ein Softlink ist eine Datei die nur auf den Namen einer anderen Datei verweist. Wenn die Originaldatei gelöscht wird, zeigt &lt;br /&gt;
der Link ins Leere. &lt;br /&gt;
&lt;br /&gt;
 ln -s datei softlink&lt;br /&gt;
&lt;br /&gt;
{| border=1 cellpadding=2&lt;br /&gt;
| Vorteile&lt;br /&gt;
| Symbolische Links können auch auf Verzeichnisse angelegt werden&amp;lt;br&amp;gt;Sie sind partitionsübergreifend&amp;lt;br&amp;gt;Man kann sie auf Dateien anlegen, die noch nicht existieren&lt;br /&gt;
|-&lt;br /&gt;
| Nachteile&lt;br /&gt;
| Wenn das Original gelöscht ist, ist kein Zugriff mehr möglich&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Beispiel&lt;br /&gt;
 root@zero:~# ln -s text verweis&lt;br /&gt;
 root@zero:~# ls -l verweis&lt;br /&gt;
 lrwxrwxrwx 1 root root 4 2009-06-18 15:48 verweis -&amp;gt; text&lt;br /&gt;
&lt;br /&gt;
'''Hardlinks'''&lt;br /&gt;
 ln datei hardlink&lt;br /&gt;
Eigentlich ist jede Datei ein Hardlink. Ein Hardlink ist ein Verzeichniseintrag,&lt;br /&gt;
der auf eine Inode verweist. Beim Erzeugen einer Datei verweist ein Eintrag auf&lt;br /&gt;
eine Inode. Man kann dann weitere Verweise erzeugen. Der Linkcounter wird&lt;br /&gt;
jeweils um 1 erhöht. Beim Löschen einer Datei wird er jeweils um 1 reduziert.&lt;br /&gt;
Wird der Wert 0 erreicht, ist die Datei gelöscht.&lt;br /&gt;
{| border=1 cellpadding=2&lt;br /&gt;
| Vorteile&lt;br /&gt;
|Zugriff auf die Daten, selbst wenn das Orginal gelöscht ist.&lt;br /&gt;
|-&lt;br /&gt;
|Nachteile&lt;br /&gt;
|Man kann keine Hardlinks auf Verzeichnisse anlegen.&lt;br /&gt;
Ist nur innerhalb einer Partion möglich.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Beispiel&lt;br /&gt;
 root@zero:~# touch 1&lt;br /&gt;
 root@zero:~# echo &amp;quot;text&amp;quot; &amp;gt; 1&lt;br /&gt;
 root@zero:~# ln 1 2&lt;br /&gt;
 root@zero:~# more 2&lt;br /&gt;
 text&lt;br /&gt;
 root@zero:~# echo &amp;quot;doch kein text&amp;quot; &amp;gt; 1&lt;br /&gt;
 root@zero:~# more 1&lt;br /&gt;
 doch kein text&lt;br /&gt;
 root@zero:~# more 2&lt;br /&gt;
 doch kein text&lt;br /&gt;
&lt;br /&gt;
Weitere Optionen:&lt;br /&gt;
 -b sichert Dateien, statt sie zu überschreiben &lt;br /&gt;
 -f Überschreibt bestehende, gleichnamige Dateien&lt;br /&gt;
 -i fragt vor dem Überschreiben nach Bestätigung&lt;br /&gt;
 -v ausführliche Meldungen&lt;br /&gt;
&lt;br /&gt;
==Prozesse==&lt;br /&gt;
===Was ist ein Prozess?===&lt;br /&gt;
Ein Prozess setzt sich aus zwei Teilen zusammen:&lt;br /&gt;
&lt;br /&gt;
1.Programm, das in den Hauptspeicher geladen wurde&lt;br /&gt;
&lt;br /&gt;
2.Prozessumgebung&lt;br /&gt;
&lt;br /&gt;
Unter einem Prozess versteht man ein Programm (binär), das in den Hauptspeicher&lt;br /&gt;
geladen wurde. Also nicht das Program selbst, das auf der Festplatte liegt ist der&lt;br /&gt;
Prozess, sondern es wird erst durch das Laden in den Hauptspeicher dazu.&lt;br /&gt;
Normalerweise liegt ein Programm als ausführbare Datei irgendwo auf der&lt;br /&gt;
Festplatte oder auf Diskette. Ob es sich bei dem Programm um eine binäre Datei&lt;br /&gt;
handelt, kann man mit dem Befehl '' file '' feststellen.&lt;br /&gt;
 &lt;br /&gt;
 root@zero:~# file /bin/mkdir&lt;br /&gt;
 /bin/mkdir: ELF 32-bit LSB executable, Intel 80386, version 1 (SYSV), dynamically linked (uses shared libs), for GNU/Linux 2.6.8, stripped&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Die Datei liegt im Maschinencode vor und kann in den Hauptspeicher geladen&lt;br /&gt;
werden. Sobald dies geschehen ist, kann der Rechner diesen Maschinencode&lt;br /&gt;
abarbeiten (ausführen).&lt;br /&gt;
&lt;br /&gt;
Da aber ein Programm nicht direkt auf die Hardware zugreifen soll, muss es vom&lt;br /&gt;
Betriebsystem kontrolliert werden. Das Betriebssystem liegt logisch gesehen&lt;br /&gt;
zwischen Hardware und Anwendung. Das Betriebssystem ordnet jedem Prozess&lt;br /&gt;
verschiedene Kenndaten zu, um die Prozesse verwalten zu können. Alle&lt;br /&gt;
Kenndaten, die einem Prozess zugeordnet sind, nennt man die&lt;br /&gt;
Prozessumgebung.Wenn man in der Shell ein Kommando eingibt, wird ein Prozess&lt;br /&gt;
kreiert. Natürlich ist die Shell selbst auch ein Prozess. Ein Prozess kann aber&lt;br /&gt;
genauso gut ein Serverprozess (Dienst) sein, z.B. Apache.&lt;br /&gt;
Ein wesentliches Merkmal eines Prozesses ist die Prozesskommunikation. Über im&lt;br /&gt;
Betriebssystem implementierte Methoden ist es möglich, dass verschiedene&lt;br /&gt;
Prozesse Signale und Daten untereinander austauschen können.&lt;br /&gt;
Dadurch wird auch dem Benutzer ermöglicht, einem Prozeß bestimmte Signale zu&lt;br /&gt;
senden bzw. auf den Status eines Prozesses Einfluss zu nehmen.&lt;br /&gt;
&lt;br /&gt;
===Prozesstabelle (Anzeige mit ps)===&lt;br /&gt;
Da zu jedem Prozess Kenndaten geführt werden, müssen diese auch irgendwo&lt;br /&gt;
festgehalten werden. Das geschieht in der sogenannten Prozesstabelle.&lt;br /&gt;
&lt;br /&gt;
Kenndaten der Prozesse (Auswahl):&lt;br /&gt;
* F Flags (z.B. ausgelagert; Systemprozess; Trace,...)&lt;br /&gt;
* UID Nutzer, mit dessen Rechten der Prozess ausgeführt wird&lt;br /&gt;
* PID Prozess - ID. Diese Nummer gibt eine eindeutige Prozess - Nummer&lt;br /&gt;
an. Sie wird vom System automatisch beim Starten des Prozesses&lt;br /&gt;
vergeben und ist für die Laufzeit eindeutig.&lt;br /&gt;
* PPID Prozessnumer der Eltern-Prozesses&lt;br /&gt;
* PRI Priorität eines Prozesses; je niedriger der Wert ist, desto besser&lt;br /&gt;
* NI ist der Nicewert des Prozesses; Nice erniedrigt den Grundwert&lt;br /&gt;
der Priorität des Prozesses und gibt damit Prozessorzeit für andere&lt;br /&gt;
Prozesse frei.&lt;br /&gt;
* SIZE Speichergröße des Prozesses inklusive Stack (eine Art Zwischenspeicher)&lt;br /&gt;
* RSS Verbrauch an physischen Speicher&lt;br /&gt;
* WCHAN ist der Name der Kernerlfunktion, in der der Prozess schläft&lt;br /&gt;
* STAT Status des Prozesses&lt;br /&gt;
R läuft       S schlafend     D nicht störbarer Schlaf&lt;br /&gt;
T angehalten  Z Zombie        W der Prozess belegt keine Seiten&lt;br /&gt;
* TIME Bisland benötigte Prozessorzeit&lt;br /&gt;
* SIZE ist die Größe von Text, Daten und Stack&lt;br /&gt;
* TTY die Nummer des kontrollierenden Teminal; wenn hier ein ? steht,&lt;br /&gt;
handelt es sich um einen Dämon oder Serverprozess.&lt;br /&gt;
* COMMAND Angabe des Prozesses selbst. Dies ist meist der Programmname.&lt;br /&gt;
&lt;br /&gt;
Weiteres&lt;br /&gt;
* GID Gruppe, unter der der Prozess läuft&lt;br /&gt;
* Verweis auf das aktuellen Arbeitsverzeichnis&lt;br /&gt;
* Um mit relativen Pfadangaben arbeiten zu können braucht man diesen Eintrag&lt;br /&gt;
* Tabelle mit Verweisen auf aktuell geöffnete Dateien&lt;br /&gt;
* 3 sind automatisch geöffnet Standardeingabe, Standardausgabe und&lt;br /&gt;
Standardfehlerkanal&lt;br /&gt;
&lt;br /&gt;
Beispiel&lt;br /&gt;
 root@zero:~# ps -l&lt;br /&gt;
 F S   UID   PID  PPID  C PRI  NI ADDR SZ WCHAN  TTY          TIME CMD&lt;br /&gt;
 4 R     0 18639 18631  0  80   0 -  1080 -      pts/0    00:00:00 bash&lt;br /&gt;
 0 R     0 25904 18639  0  80   0 -   635 -      pts/0    00:00:00 ps&lt;br /&gt;
&lt;br /&gt;
===Eltern und Kinder===&lt;br /&gt;
Jeder Prozess kann weitere Prozesse erzeugen. Die erzeugten Prozesse bezeichnet&lt;br /&gt;
man als Kindprozesse. Jeder Kindprozess weiß anhand der PID, woher er stammt.&lt;br /&gt;
&lt;br /&gt;
Alle Prozesse sind von einem anderen Prozess gestartet worden, mit Ausnahme&lt;br /&gt;
des Pseudoprozesses (noch im Kernel beim Starten erzeugter Prozess). Dieser hat&lt;br /&gt;
die Prozessnummer 0. Er hat die Aufgabe, den Init Prozess ( /sbin/init die Nummer&lt;br /&gt;
1) zu starten, der in System V alle anderen Prozesse direkt oder über seine Kind-&lt;br /&gt;
prozesse startet. (init wird konfiguriert durch die /etc/inittab)&lt;br /&gt;
&lt;br /&gt;
Es gibt zwei Arten wie ein Prozess gestartet werden kann:&lt;br /&gt;
&lt;br /&gt;
# Fork und Exec: Prozessumgebung wird dupliziert, der neue Prozess bekommt eine eigene neue PID&lt;br /&gt;
# Exec: Alter Prozess wird durch neuen Prozess überladen (geht mit dem shell-buildin exec)&lt;br /&gt;
&lt;br /&gt;
'''Rechte auf Objekte UID GID'''&lt;br /&gt;
Ob ein Prozess auf eine Datei zugreifen kann, entscheidet der Kernel anhand der&lt;br /&gt;
Zugriffssrechte, die auf der Datei gesetzt sind. Er checkt anhand der UID und GID&lt;br /&gt;
des Prozesses, ob es erlaubt ist. Mit dieser Technik wird letztendlich geprüft, was&lt;br /&gt;
ein User darf, und was nicht.&lt;br /&gt;
&lt;br /&gt;
===Rechenzeit und Priorität===&lt;br /&gt;
Da auch bei Prozessen eine Gerechtigkeit herschen muss, muss eine Instanz&lt;br /&gt;
darüber entscheiden wie lange ein Prozess Rechenzeit verbrauchen darf.&lt;br /&gt;
Folgende Kenndaten werden dazu benötigt&lt;br /&gt;
* clocktick = Zeiteinheit&lt;br /&gt;
* n = Faktor über den Kernel einstellbar&lt;br /&gt;
* slice = n &amp;lt;nowiki&amp;gt;*&amp;lt;/nowiki&amp;gt; clocktick&lt;br /&gt;
* agingtime = weitere Zeiteinheit über den Kernel einstellbar&lt;br /&gt;
&lt;br /&gt;
Es wird davon ausgegangen das der Prozess mit der niedrigsten Priorität gerade&lt;br /&gt;
rechnet. Pro clocktick erhöht sich die Priorität dieses Prozesses um eins.&lt;br /&gt;
&lt;br /&gt;
Jetzt können 3 Situationen eintreten die alle dazu führen das der Scheduler&lt;br /&gt;
aufgerufen wird.&lt;br /&gt;
&lt;br /&gt;
# Prozess blockiert wegen einer Ausgabe oder Eingabe.&lt;br /&gt;
# Gibt Rechenzeit freiwillig ab.&lt;br /&gt;
# Der Slice endet.&lt;br /&gt;
&lt;br /&gt;
Der Aufruf des Schedulers bewirkt das der Prozess mit der niedrigsten Priorität&lt;br /&gt;
gescheduled wird, er also nun rechnen darf. Nach Ablauf der agingtime werden&lt;br /&gt;
nun die Prozesse &amp;quot;gealtert&amp;quot;. Das geschieht nach folgender Formel&lt;br /&gt;
&lt;br /&gt;
Neue Priorität = Alte Priorität / 2 + Nicewert&lt;br /&gt;
&lt;br /&gt;
Der User hat die Möglichkeit, über den sogenannten Nicefaktor den Grundwert für&lt;br /&gt;
einen Prozess zu senken. Der Prozess braucht dann länger für seine Abarbeitung.&lt;br /&gt;
Er verhält sich somit netter zu den anderen Prozessen. Normale User können nur&lt;br /&gt;
netter werden, der Systemverwalter kann auch nicht netter (gemeiner) werden. Der&lt;br /&gt;
Bereich liegt zwischen 19 (sehr nett) bis 0 (weniger nett) für die User, und 19 bis&lt;br /&gt;
-20 für root.&lt;br /&gt;
&lt;br /&gt;
[[Image:pri.png]]&lt;br /&gt;
&lt;br /&gt;
'''Signale'''&lt;br /&gt;
&lt;br /&gt;
Mit den Kommando kill und killall kann man Prozessen Signale schicken&lt;br /&gt;
&lt;br /&gt;
 kill -Signalnummer PID &lt;br /&gt;
&lt;br /&gt;
Signalnummer&lt;br /&gt;
{| border=1 cellpadding=2&lt;br /&gt;
!Signalname&lt;br /&gt;
!Wert&lt;br /&gt;
!Aktion&lt;br /&gt;
|-&lt;br /&gt;
|SIGHUP&lt;br /&gt;
|1&lt;br /&gt;
|Neuinitialisierung eines Prozesses&lt;br /&gt;
|-&lt;br /&gt;
|SIGINT&lt;br /&gt;
|2&lt;br /&gt;
|Interrupt-Signal von der Tastatur (STRG+c)&lt;br /&gt;
|-&lt;br /&gt;
|SIGQUIT&lt;br /&gt;
|3&lt;br /&gt;
|Interrupt-Signal von der Tastatur (STRG+c) mit Dump&lt;br /&gt;
|-&lt;br /&gt;
|SIGKILL&lt;br /&gt;
|9&lt;br /&gt;
|unwiderrufliches Beendigungssignal (Töten)&lt;br /&gt;
|-&lt;br /&gt;
|SIGSEGV&lt;br /&gt;
|11&lt;br /&gt;
|Ungültige Speicherreferenz (bedeutet oft auf defekten Speicher)&lt;br /&gt;
|-&lt;br /&gt;
|SIGTERM &lt;br /&gt;
|15&lt;br /&gt;
|Beendigungssignal (geöffnete Dateien werden geschlossen)&lt;br /&gt;
|-&lt;br /&gt;
|SIGCONT &lt;br /&gt;
|18&lt;br /&gt;
|Weiterfahren, wenn gestoppt&lt;br /&gt;
|-&lt;br /&gt;
|SIGSTOP&lt;br /&gt;
|19&lt;br /&gt;
|Prozessstop&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Beispiel&lt;br /&gt;
 root@zero:~# kill -1 7562&lt;br /&gt;
&lt;br /&gt;
===Programme im Zusammenhang mit Prozessen===&lt;br /&gt;
* ps: Zeigt die Prozesse mit ihrem Status an&lt;br /&gt;
 root@zero:~# ps&lt;br /&gt;
  PID TTY          TIME CMD&lt;br /&gt;
 14134 pts/0    00:00:00 bash&lt;br /&gt;
 14149 pts/0    00:00:00 ps&lt;br /&gt;
&lt;br /&gt;
 root@zero:~# ps -elf | grep apache&lt;br /&gt;
 1 S root      5738     1  0  80   0 -  5461 select Jun16 ?        00:00:00 /usr/sbin/apache2 -k start&lt;br /&gt;
 5 S www-data  5739  5738  0  80   0 -  5581 inet_c Jun16 ?        00:00:00 /usr/sbin/apache2 -k start&lt;br /&gt;
 5 S www-data  5742  5738  0  80   0 -  5461 inet_c Jun16 ?        00:00:00 /usr/sbin/apache2 -k start&lt;br /&gt;
 5 S www-data  5743  5738  0  80   0 -  5461 inet_c Jun16 ?        00:00:00 /usr/sbin/apache2 -k start&lt;br /&gt;
 5 S www-data  5745  5738  0  80   0 -  5461 inet_c Jun16 ?        00:00:00 /usr/sbin/apache2 -k start&lt;br /&gt;
 5 S www-data  5746  5738  0  80   0 -  5461 inet_c Jun16 ?        00:00:00 /usr/sbin/apache2 -k start&lt;br /&gt;
 0 S root     14153 14134  0  80   0 -   837 pipe_w 16:59 pts/0    00:00:00 grep apache&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* nice: Lässt ein Programm mit verändertem Grundwert der Priorität laufen&lt;br /&gt;
 root@zero:~# nice&lt;br /&gt;
 0&lt;br /&gt;
 root@zero:~# nice -n 9 bash&lt;br /&gt;
 root@zero:~# nice&lt;br /&gt;
 9&lt;br /&gt;
 root@zero:~#&lt;br /&gt;
&lt;br /&gt;
* renice: Ändert den Grundwert der Priorität eines laufenden Prozesses&lt;br /&gt;
 root@zero:~# renice 10 5742&lt;br /&gt;
 5742: Alte Priorität: 0, neue Priorität: 10&lt;br /&gt;
&lt;br /&gt;
* top: Zeigt die Prozesse mit ihrem Status an (Abbrechen mit q)&lt;br /&gt;
 root@zero:~# top&lt;br /&gt;
&lt;br /&gt;
* pstree: Zeigt die Prozesse als Baumstruktur&lt;br /&gt;
 root@zero:~# pstree&lt;br /&gt;
 init─┬─NetworkManager&lt;br /&gt;
      ├─acpid&lt;br /&gt;
      ├─apache2───5*[apache2]&lt;br /&gt;
      ├─atd&lt;br /&gt;
      ├─bluetoothd&lt;br /&gt;
      ├─console-kit-dae───63*[{console-kit-dae}]&lt;br /&gt;
      ├─cron&lt;br /&gt;
      ├─cupsd&lt;br /&gt;
      ├─dbus-daemon&lt;br /&gt;
      ├─dd&lt;br /&gt;
      ├─gdm───gdm─┬─Xorg&lt;br /&gt;
      │           └─gdmgreeter&lt;br /&gt;
      ├─6*[getty]&lt;br /&gt;
      ├─hald───hald-runner─┬─hald-addon-acpi&lt;br /&gt;
      │                    ├─hald-addon-inpu&lt;br /&gt;
      │                    └─2*[hald-addon-stor]&lt;br /&gt;
      ├─klogd&lt;br /&gt;
      ├─nm-system-setti&lt;br /&gt;
      ├─nmbd&lt;br /&gt;
      ├─nscd───11*[{nscd}]&lt;br /&gt;
      ├─portmap&lt;br /&gt;
      ├─rpc.statd&lt;br /&gt;
      ├─slapd───2*[{slapd}]&lt;br /&gt;
      ├─smbd───smbd&lt;br /&gt;
      ├─sshd───sshd───bash───bash───pstree&lt;br /&gt;
      ├─syslogd&lt;br /&gt;
      ├─system-tools-ba&lt;br /&gt;
      ├─udevd&lt;br /&gt;
      ├─winbindd─┬─winbindd───winbindd&lt;br /&gt;
      │          └─3*[winbindd]&lt;br /&gt;
      └─wpa_supplicant&lt;br /&gt;
&lt;br /&gt;
===Jobs===&lt;br /&gt;
Unter einem Job versteht man ein Programm, welches man von der Shell gelöst&lt;br /&gt;
hat. D. h. man kann ganz normal weiter arbeiten und der Job verrichtet seinen&lt;br /&gt;
Dienst im Hintergrund. Man kann jederzeit zu diesem Job wieder Kontakt&lt;br /&gt;
aufnehmen.&lt;br /&gt;
&lt;br /&gt;
Ein Job kann auf 2 Arten gestarten werden:&lt;br /&gt;
&lt;br /&gt;
# Durch Anhängen des &amp;amp; Zeichens beim Programmstart&lt;br /&gt;
 root@zero:~# tail -f /var/log/messages &amp;amp;&lt;br /&gt;
 Jun 19 06:59:31 zero -- MARK --&lt;br /&gt;
 Jun 19 07:19:31 zero -- MARK --&lt;br /&gt;
 Jun 19 07:39:32 zero -- MARK --&lt;br /&gt;
 Jun 19 07:44:57 zero syslogd 1.5.0#5ubuntu3: restart.&lt;br /&gt;
 Jun 19 07:59:32 zero -- MARK --&lt;br /&gt;
 Jun 19 08:19:32 zero -- MARK --&lt;br /&gt;
 Jun 19 08:39:32 zero -- MARK --&lt;br /&gt;
 Jun 19 08:59:32 zero -- MARK --&lt;br /&gt;
 Jun 19 09:19:33 zero -- MARK --&lt;br /&gt;
 Jun 19 09:39:33 zero -- MARK --&lt;br /&gt;
 [3] 27421&lt;br /&gt;
&lt;br /&gt;
# Durch Stoppen des Prozesses durch Drücken von Strg-Z und in den Hintergrund schicken mit %n (n ist die Jobnummer)&lt;br /&gt;
 root@zero:~# watch cat /proc/cpuinfo&lt;br /&gt;
 Strg-Z&lt;br /&gt;
 [4]+  Stopped                 watch cat /proc/cpuinfo&lt;br /&gt;
 root@zero:~# bg %4&lt;br /&gt;
 [4]+ watch cat /proc/cpuinfo &amp;amp;&lt;br /&gt;
&lt;br /&gt;
Anweisungen im Zusammenhang mit Jobs (n ist die Jobnummer)&lt;br /&gt;
* bg %n : Einen Job in den Hintergrund stellen (wie oben)&lt;br /&gt;
* fg %n : Einen Job in den Vordergrund holen&lt;br /&gt;
 root@zero:~# fg %4&lt;br /&gt;
 watch cat /proc/cpuinfo&lt;br /&gt;
&lt;br /&gt;
* jobs : Aktive Jobs ausgeben&lt;br /&gt;
&lt;br /&gt;
 root@zero:~# jobs&lt;br /&gt;
 [1]   Running                 tail -f /var/log/syslog &amp;amp;&lt;br /&gt;
 [2]   Running                 tail -f /var/log/syslog &amp;amp;&lt;br /&gt;
 [3]-  Running                 tail -f /var/log/messages &amp;amp;&lt;br /&gt;
 [4]+  Stopped                 watch cat /proc/cpuinfo&lt;br /&gt;
&lt;br /&gt;
* Strg-Z : Einen Vordergrund-Job vorübergehend anhalten&lt;br /&gt;
* kill -STOP %n : Unterbricht Job im Hintergrund&lt;br /&gt;
 root@zero:~# kill -STOP %1&lt;br /&gt;
 root@zero:~# jobs&lt;br /&gt;
 [1]+  '''Stopped'''                 tail -f /var/log/syslog&lt;br /&gt;
 [2]   Running                 tail -f /var/log/syslog &amp;amp;&lt;br /&gt;
 [3]   Running                 tail -f /var/log/messages &amp;amp;&lt;br /&gt;
 [4]-  Stopped                 watch cat /proc/cpuinfo&lt;br /&gt;
* kill -CONT %n : Setzt den unterbrochenen Job im Hintergrund fort&lt;br /&gt;
root@zero:~# kill -CONT %1&lt;br /&gt;
root@zero:~# jobs&lt;br /&gt;
 [1]+  '''Running'''                 tail -f /var/log/syslog &amp;amp;&lt;br /&gt;
 [2]   Running                 tail -f /var/log/syslog &amp;amp;&lt;br /&gt;
 [3]   Running                 tail -f /var/log/messages &amp;amp;&lt;br /&gt;
 [4]-  Stopped                 watch cat /proc/cpuinfo&lt;br /&gt;
* kill -KILL %n : Tötet Job im Hintergrund&lt;br /&gt;
 root@zero:~# kill -KILL %1&lt;br /&gt;
 root@zero:~# jobs&lt;br /&gt;
 [1]+  '''Killed'''                  tail -f /var/log/syslog&lt;br /&gt;
 [2]   Running                 tail -f /var/log/syslog &amp;amp;&lt;br /&gt;
 [3]   Running                 tail -f /var/log/messages &amp;amp;&lt;br /&gt;
 [4]-  Stopped                 watch cat /proc/cpuinfo&lt;br /&gt;
 root@zero:~# jobs&lt;br /&gt;
 [2]   Running                 tail -f /var/log/syslog &amp;amp;&lt;br /&gt;
 [3]-  Running                 tail -f /var/log/messages &amp;amp;&lt;br /&gt;
 [4]+  Stopped                 watch cat /proc/cpuinfo&lt;br /&gt;
&lt;br /&gt;
Bedingungen, die zu Jobausführung eingehalten werden sollen:&lt;br /&gt;
* Der Job soll nicht auf den Bildschirm schreiben (Standardausgabe +Standardfehlerkanal).&lt;br /&gt;
* Er soll keine Eingaben vom Benutzer erwarten.&lt;br /&gt;
&lt;br /&gt;
==Suchen von Dateien==&lt;br /&gt;
===find===&lt;br /&gt;
 find ab_wo_wird_gesucht was_wird_gesucht aktion&lt;br /&gt;
 find [Pfad] [Bedingung] [Aktion]&lt;br /&gt;
&lt;br /&gt;
====Nach Namen====&lt;br /&gt;
 find [Pfad] '''-name''' [Name]&lt;br /&gt;
 &lt;br /&gt;
Finde alle Dateien mit Namen test ab dem Verzeichnis /home und gebe diese Zeilenweise aus&lt;br /&gt;
 root@zero:~# find /home -name test -print&lt;br /&gt;
 /home/xinux/test&lt;br /&gt;
 /home/test&lt;br /&gt;
&lt;br /&gt;
Wie oben, jedoch mit Namensanfang test&lt;br /&gt;
 root@zero:/home/xinux# find /home -name 'test*'&lt;br /&gt;
 /home/xinux/testdatei&lt;br /&gt;
 /home/xinux/test&lt;br /&gt;
 /home/test&lt;br /&gt;
&lt;br /&gt;
====Nach Benutzer(Eigentümer)====&lt;br /&gt;
 root@zero:/tmp# find /tmp/ '''-user''' xinux&lt;br /&gt;
 /tmp/datei&lt;br /&gt;
&lt;br /&gt;
====Nach Gruppe====&lt;br /&gt;
 root@zero:/tmp# find /tmp/ '''-group''' hacker&lt;br /&gt;
 /tmp/datei3&lt;br /&gt;
 /tmp/datei2&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
====Nach Typ====&lt;br /&gt;
Es wird nach Dateien anhand Ihrer Art gesucht:&lt;br /&gt;
 find [Pfad] '''-type''' [Typ] &lt;br /&gt;
Typ:&lt;br /&gt;
* f: Normale Dateien&lt;br /&gt;
 root@zero:~# find /tmp/ -type f&lt;br /&gt;
 /tmp/mbr.img&lt;br /&gt;
 /tmp/datei&lt;br /&gt;
 /tmp/zeugs&lt;br /&gt;
 /tmp/.X0-lock&lt;br /&gt;
* d: Verzeichnisse&lt;br /&gt;
 root@zero:~# find /var/log -type d&lt;br /&gt;
 /var/log&lt;br /&gt;
 /var/log/apache2&lt;br /&gt;
 /var/log/unattended-upgrades&lt;br /&gt;
 /var/log/apparmor&lt;br /&gt;
 /var/log/ConsoleKit&lt;br /&gt;
 /var/log/dist-upgrade&lt;br /&gt;
 /var/log/dist-upgrade/20090526-1052&lt;br /&gt;
 /var/log/cups&lt;br /&gt;
 /var/log/apt&lt;br /&gt;
 /var/log/fsck&lt;br /&gt;
 /var/log/samba&lt;br /&gt;
 /var/log/samba/cores&lt;br /&gt;
 /var/log/samba/cores/smbd&lt;br /&gt;
 /var/log/samba/cores/nmbd&lt;br /&gt;
 /var/log/samba/cores/winbindd&lt;br /&gt;
 /var/log/installer&lt;br /&gt;
 /var/log/gdm&lt;br /&gt;
 /var/log/news&lt;br /&gt;
* c: Char Devices (Zeichenorientierte Gerätedatei)&lt;br /&gt;
 root@zero:~# find / -type c&lt;br /&gt;
 /lib/udev/devices/kmem&lt;br /&gt;
 /lib/udev/devices/null&lt;br /&gt;
 /lib/udev/devices/console&lt;br /&gt;
 /lib/udev/devices/ppp&lt;br /&gt;
 /lib/udev/devices/net/tun&lt;br /&gt;
* b: Block Devices (Blockorientierte Gerätedatei)&lt;br /&gt;
* p: Benannte Pipe&lt;br /&gt;
* l: Links&lt;br /&gt;
* s: Sockets&lt;br /&gt;
&lt;br /&gt;
====Nach Modifikation====&lt;br /&gt;
Listet alle Dateien in /etc auf, die innerhalb von zwei Tagen modifiziert wurden&lt;br /&gt;
 root@zero:/var/log# find /etc/ -mtime 2 -print&lt;br /&gt;
 /etc/apache2&lt;br /&gt;
 /etc/apache2/mods-available&lt;br /&gt;
 /etc/apache2/conf.d&lt;br /&gt;
 /etc/apache2/sites-available&lt;br /&gt;
 /etc/bash_completion.d&lt;br /&gt;
 /etc/blkid.tab.old&lt;br /&gt;
 /etc/firefox-3.0/profile&lt;br /&gt;
 /etc/firefox-3.0/profile/chrome&lt;br /&gt;
 /etc/firefox-3.0/pref&lt;br /&gt;
 /etc/profile.d&lt;br /&gt;
 /etc/ufw/applications.d&lt;br /&gt;
 /etc/logrotate.d&lt;br /&gt;
 /etc/xulrunner-1.9&lt;br /&gt;
 /etc/blkid.tab&lt;br /&gt;
 /etc/cron.daily&lt;br /&gt;
 /etc/alternatives&lt;br /&gt;
 /etc/alternatives/x-www-browser&lt;br /&gt;
 /etc/alternatives/xulrunner&lt;br /&gt;
 /etc/gre.d&lt;br /&gt;
 /etc/hal/fdi/policy&lt;br /&gt;
 /etc/dbus-1/system.d&lt;br /&gt;
 /etc/udev/rules.d&lt;br /&gt;
&lt;br /&gt;
====Nach Größe====&lt;br /&gt;
Finde Dateien in /tmp, die größer als 100 MByte sind&lt;br /&gt;
 root@zero:/tmp# find /tmp/ -size +100M&lt;br /&gt;
 /tmp/datei&lt;br /&gt;
&lt;br /&gt;
Finde Dateien in /tmp, die kleiner als 100 KByte sind&lt;br /&gt;
 root@zero:/tmp# find /tmp/ -size -100k&lt;br /&gt;
 /tmp/&lt;br /&gt;
 /tmp/datei3&lt;br /&gt;
 /tmp/backup &lt;br /&gt;
 /tmp/datei2&lt;br /&gt;
 /tmp/.winbindd &lt;br /&gt;
 /tmp/.winbindd/pipe&lt;br /&gt;
 /tmp/mbr.img&lt;br /&gt;
 /tmp/zeugs&lt;br /&gt;
 /tmp/.ICE-unix&lt;br /&gt;
 /tmp/.X0-lock&lt;br /&gt;
 /tmp/datei1&lt;br /&gt;
 /tmp/.X11-unix&lt;br /&gt;
 /tmp/.X11-unix/X0&lt;br /&gt;
 /tmp/pulse-PKdhtXMmr18n&lt;br /&gt;
&lt;br /&gt;
====Nach Berechtigungen====&lt;br /&gt;
Finde Dateien in Home mit der Berechtigung 777 (-rwxrwxrwx)&lt;br /&gt;
 root@zero:/var# find /home/ -perm 777&lt;br /&gt;
 /home/samba&lt;br /&gt;
 /home/xinux/Examples&lt;br /&gt;
 /home/xinux/.pulse/1f0763ee4cf4c7e1d3c07fd149dda37b:runtime&lt;br /&gt;
 /home/test/Examples&lt;br /&gt;
&lt;br /&gt;
===locate===&lt;br /&gt;
Locate arbeitet über einen Index, der erstellt und aktualisiert werden muss. Aus diesem Grund kann locate teilweise nicht &lt;br /&gt;
akutell sein. Es ist immer schneller als find und es durchsucht immer das ganze Dateisystem. &lt;br /&gt;
 locate [Dateiname]&lt;br /&gt;
 &lt;br /&gt;
Lokalisiere die Datei wvdial.conf. Anmerkung: Der Stern wird beim Suchen automatisch hinzugefügt. Entspricht also&lt;br /&gt;
wvidal.conf*&lt;br /&gt;
 root@zero:~# locate wvdial.conf&lt;br /&gt;
 /etc/wvdial.conf&lt;br /&gt;
 /usr/share/man/man5/wvdial.conf.5.gz&lt;br /&gt;
 /var/lib/dpkg/info/wvdial.conffiles&lt;br /&gt;
 /var/lib/dpkg/info/wvdial.config&lt;br /&gt;
&lt;br /&gt;
Lokalisiere die Datei wvdial.conf und nur diese&lt;br /&gt;
 root@zero:~# locate -b '\wvdial.conf'&lt;br /&gt;
 /etc/wvdial.conf&lt;br /&gt;
&lt;br /&gt;
Aktualisieren des Indexes&lt;br /&gt;
 root@zero:~# updatedb&lt;br /&gt;
&lt;br /&gt;
==Wie wird ein Kommando lokalisiert==&lt;br /&gt;
Wenn die Shell alle Ersetzungen in der Kommandozeile vorgenommen und alle Umleitungen vorbereitet hat, ist der Zeitpunkt &lt;br /&gt;
gekommen, auf den der Anwender die ganze Zeit gewartet hat. Die Shell versucht das Kommando auszuführen. Dazu muss sie &lt;br /&gt;
es aber erst lokalisieren. Das erste passende Kommando wird ausgeführt.&lt;br /&gt;
&lt;br /&gt;
Als Kommandoname wird immer das erste Wort eines einfachen Kommandos erkannt. Ein Kommandoname kann mit Pfadnamen in &lt;br /&gt;
einem Verzeichnis (absolut oder relativ) angegeben werden. Die Shell erkennt dies an (mindestens) einem Slash `/' &lt;br /&gt;
im Kommandonamen. Wenn kein Verzeichnis angegeben ist, versucht die Shell selbst, das Kommando zu finden. Dazu wird &lt;br /&gt;
der Kommandoname zuerst in der Hashtabelle gesucht, dann wird er mit den Synonymen, mit den Scriptfunktionen und &lt;br /&gt;
schließlich mit den Shellfunktionen verglichen. &lt;br /&gt;
&lt;br /&gt;
Wird auf diese Weise kein Programm dieses Namens gefunden, werden alle in der PATH-Umgebungsvariablen aufgeführten &lt;br /&gt;
Verzeichnisse nach einer ausführbaren Datei dieses Namens durchsucht. Wird auch hier kein passendes Kommando gefunden, &lt;br /&gt;
gibt die Shell eine Fehlermeldung aus.&lt;br /&gt;
&lt;br /&gt;
===which und type===&lt;br /&gt;
====which====&lt;br /&gt;
which gibt die vollen Pfadnamen der Dateien aus, die bei Benutzung des angegebenen Befehls ausgeführt werden würden.&lt;br /&gt;
&lt;br /&gt;
 which [-a] Dateiname &lt;br /&gt;
&lt;br /&gt;
Optionen:&lt;br /&gt;
&lt;br /&gt;
* -a : Alle Treffer ausgeben, nicht nur den ersten&lt;br /&gt;
* --skip-dot : Verzeichnisse, die mit einem Punkt beginnen, auslassen&lt;br /&gt;
&lt;br /&gt;
Beispiel&lt;br /&gt;
 root@zero:~# which startx&lt;br /&gt;
 /usr/bin/startx&lt;br /&gt;
&lt;br /&gt;
====type====&lt;br /&gt;
Anzeigen der absoluten Pfadnamen von Befehlen, und ob sich diese Befehle in der Hash-Tabelle der aktuellen&lt;br /&gt;
Shell befinden.&lt;br /&gt;
&lt;br /&gt;
 type [Optionen] Befehle&lt;br /&gt;
&lt;br /&gt;
Beispiel&lt;br /&gt;
 root@zero:~# type ls&lt;br /&gt;
 ls is aliased to `ls --color=auto'&lt;br /&gt;
&lt;br /&gt;
Optionen:&lt;br /&gt;
&lt;br /&gt;
* -a : Alle vorkommenden Befehle werden ausgegeben, nicht nur das, welches aufgerufen werden würde&lt;br /&gt;
 root@zero:~# type '''-a''' ls&lt;br /&gt;
 ls is aliased to `ls --color=auto'&lt;br /&gt;
 ls is /bin/ls&lt;br /&gt;
&lt;br /&gt;
* -p : Anzeigen des Eintrags von Befehl in der Hash-Tabelle. Dieser Wert kann sich vom ersten Auftreten des Befehls in PATH&lt;br /&gt;
unterscheiden&lt;br /&gt;
 root@zero:~# type '''-p''' apache2&lt;br /&gt;
 /usr/sbin/apache2&lt;br /&gt;
&lt;br /&gt;
* -t : Anzeigen, ob Befehl ein Aliasname, ein Schlüsselwort, eine Funktion, ein eingebauter Befehl oder eine Datei ist&lt;br /&gt;
 root@zero:~# type '''-t''' apache2&lt;br /&gt;
 file&lt;/div&gt;</summary>
		<author><name>192.168.178.46</name></author>
	</entry>
	<entry>
		<id>https://www.xinux.net/index.php?title=Linux_Grundlagen&amp;diff=71</id>
		<title>Linux Grundlagen</title>
		<link rel="alternate" type="text/html" href="https://www.xinux.net/index.php?title=Linux_Grundlagen&amp;diff=71"/>
		<updated>2009-07-07T10:25:01Z</updated>

		<summary type="html">&lt;p&gt;192.168.178.46: /* join */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Einführung==&lt;br /&gt;
===Geschichte Unix===&lt;br /&gt;
====1969====&lt;br /&gt;
Am Anfang von Linux steht Multics, ein von Bell Laboratories geschaffenes &amp;quot;Betriebssystem&amp;quot;, &lt;br /&gt;
das noch mit Lochkarten arbeitete. Multics wird mit Unterstützung von AT&amp;amp;T und Western &lt;br /&gt;
Electric unter Mitarbeit von Ken Thompson und Dennis Ritchie weiterentwickelt. Obwohl sich &lt;br /&gt;
Bell Laboratories bald zurückzieht, gibt Thompson das Projekt nicht auf.  Zum Entwicklerteam &lt;br /&gt;
gehören auch Rudd Canaday und Brian Kernighan. Letzterer gibt 1970 dem Betriebssystem den Namen UNIX. &lt;br /&gt;
Thompson definiert 7 Richtlinien für UNIX:&lt;br /&gt;
 &lt;br /&gt;
# Hierarchische Anordnung der Dateisysteme&lt;br /&gt;
# Die Ausgabe von Daten an die Peripherie(-geräte) und Dateien soll gleich sein.&lt;br /&gt;
# Prozesse und Programme sollen miteinander kommunizieren.&lt;br /&gt;
# Multitasking (voneinander getrennte Prozesse)&lt;br /&gt;
# Persönliche Shell's&lt;br /&gt;
# Der Compiler soll für viele Programmiersprachen tauglich sein.&lt;br /&gt;
# Portabilität&lt;br /&gt;
&lt;br /&gt;
====1971====&lt;br /&gt;
Bis 1971 ist das für eine DEC PDP-7 geschriebene Unix als Version 1 auf eine PDP-11 portiert. Bis&lt;br /&gt;
zur Version 4 entwickelt Ritchie die Programmier- (Hoch-) Sprache C. Das in Assembler geschriebene&lt;br /&gt;
Unix wird fast völlig nach C übersetzt, wodurch zum erstenmal die geforderte Hardware-Unabhängigkeit&lt;br /&gt;
des Betriebssystems realisiert werden kann.&lt;br /&gt;
&lt;br /&gt;
====1975====&lt;br /&gt;
Da AT&amp;amp;T aufgrund vertraglicher Bindungen mit der US-Bundesregierung Unix nicht kommerziell vermarkten darf, stellt sie den Source Code für ein paar hundert Dollar den Universitäten, Lehr- und Forschungsanstalten zur Verfügung. Dies führt zu einer sehr dynamischen Entwicklung von Unix. 1975 wird die Version 6 als erstes UNIX-System veröffentlicht, die darauffolgende Version 7 wird sehr erfolgreich. Da es keine Standardisierung gibt, entwickeln bald verschiedenste Firmen ihr eigenes UNIX. Ab 1984 wird AT&amp;amp;T per Gerichtsbeschluss erlaubt, Unix zu vermarkten. AT&amp;amp;T verkauft sein Unix V und beginnt, sich um einen internationalen Standard von UNIX zu bemühen. &lt;br /&gt;
&lt;br /&gt;
====1984====&lt;br /&gt;
Durch Richard Stallman wird die Free Software Foundation (FSF) gegründet. Diese initiiert ein Projekt namens GNU (GNU ist Not Unix), welches das Ziel verfolgt, ein freies UNIX System zu schaffen. &lt;br /&gt;
&lt;br /&gt;
====1987====&lt;br /&gt;
AT&amp;amp;T verbietet die Verwendung des Unix Quellcodes an den Universitäten. Während dieser Zeit ist Andrew (Andy) Tannenbaum Professor an der Freien Universität von Amsterdam und entwickelt Minix. Minix ist ein kostengünstiges Lehrbetriebssystem und kommt ohne jeglichen AT&amp;amp;T Code aus, obwohl es die gleiche Funktionalität wie Unix 7 bietet. Im Usenet unter comp.os.minix entsteht eine Minix-Gemeinde, die den Minix Kernel und die Anwendungen rundherum programmiert und verbessert.&lt;br /&gt;
&lt;br /&gt;
====1991====&lt;br /&gt;
Linus Torvalds hat als Student für Computerwissenschaften an der Universität in Helsinki Minix installiert und das Buch von Andy Tannenbaum gelesen. Er beginnt im Sinne der FSF einen Unix ähnlichen Kernel zu programmieren mit der Idee, &amp;quot;ein besseres Minix als Minix&amp;quot; zu bauen. 1992 stellt er die Version 0.02 mit dem Namen Linux der Internetgemeinde zur Verfügung. &lt;br /&gt;
&lt;br /&gt;
====1994====&lt;br /&gt;
Die Linux Version 1.0 wird freigegeben. Das Linux Fieber beginnt... &lt;br /&gt;
&lt;br /&gt;
====1998====&lt;br /&gt;
Der Kreis der Linux Entwickler und Anwender ist kräftig angeschwollen. KDE 1.0 wird veröffentlicht. Die Zuwachsraten von Linux übertreffen die von Windows NT deutlich. &lt;br /&gt;
&lt;br /&gt;
====1999====&lt;br /&gt;
Der lange erwartete stabile Linux Kernel Version 2.2 wird freigegeben. Namhafte Firmen wie IBM kündigen ihre Unterstützung für Linux an. &lt;br /&gt;
&lt;br /&gt;
====2001====&lt;br /&gt;
Der lange erwartete stabile Linux Kernel Version 2.4 wird freigegeben. USB Unterstützung und eine neue Firewallimplementierung zeichnen ihn aus.&lt;br /&gt;
&lt;br /&gt;
====2003====&lt;br /&gt;
Linux Kernel Version 2.6 wird freigegeben. Am auffälligsten sind Änderungen bei der Modulverwaltung.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Distributionen===&lt;br /&gt;
{| Border=1 Cellpadding=2&lt;br /&gt;
| &lt;br /&gt;
|Url&lt;br /&gt;
|Paketformat&lt;br /&gt;
|-&lt;br /&gt;
|Red Hat&lt;br /&gt;
|www.redhat.com&lt;br /&gt;
|rpm&lt;br /&gt;
|-&lt;br /&gt;
|fedora&lt;br /&gt;
|fedora.redhat.com&lt;br /&gt;
|rpm&lt;br /&gt;
|-&lt;br /&gt;
|CentOS&lt;br /&gt;
|www.centos.org&lt;br /&gt;
|rpm&lt;br /&gt;
|-&lt;br /&gt;
|Suse/openSUSE&lt;br /&gt;
|www.opensuse.org&lt;br /&gt;
|rpm&lt;br /&gt;
|-&lt;br /&gt;
|Debian&lt;br /&gt;
|www.debian.org&lt;br /&gt;
|deb&lt;br /&gt;
|-&lt;br /&gt;
|Ubuntu&lt;br /&gt;
|www.ubuntu.com&lt;br /&gt;
|deb&lt;br /&gt;
|-&lt;br /&gt;
|Mandrake&lt;br /&gt;
|www.linux-mandrake.com&lt;br /&gt;
|rpm&lt;br /&gt;
|-&lt;br /&gt;
|Easy Linux&lt;br /&gt;
|www.easy-linux.de&lt;br /&gt;
|rpm&lt;br /&gt;
|-&lt;br /&gt;
|Turbo&lt;br /&gt;
|www.turbolinux.com&lt;br /&gt;
|rpm&lt;br /&gt;
|-&lt;br /&gt;
|minis&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|toms&lt;br /&gt;
|www.toms.net/rb&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|damn small linux&lt;br /&gt;
|www.damnsmalllinux.org&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|pocket-linux&lt;br /&gt;
|www.pocket-linux.org&lt;br /&gt;
|&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
====Bücher====&lt;br /&gt;
 Titel : Das Linux Anwenderhandbuch und Leitfaden für die Systemverwaltung&lt;br /&gt;
 Autor : Sebastian Hetze, Dirk Hohndel, Olaf Kirch und Martin Müller&lt;br /&gt;
 Verlag: Lunetix&lt;br /&gt;
 ISBN : 3-929764-06-7&lt;br /&gt;
&lt;br /&gt;
 Titel : Linux in a Nutshell&lt;br /&gt;
 Autor : Jessica Perry Hekman und die Mitarbeiter von O'Reilly &amp;amp; Associates&lt;br /&gt;
 Verlag: O'Reilly&lt;br /&gt;
 ISBN : 3-930673-57-6&lt;br /&gt;
&lt;br /&gt;
 Titel : Linux - Wegweiser zur Installation und Konfiguration&lt;br /&gt;
 Autor : Matt Welsh, Lar Kaufman, Matthias Kalle Dallheimer&lt;br /&gt;
 Verlag: O'Reilly&lt;br /&gt;
 ISBN : 3-930673-58-4 (deutsch), 1-56592-469-X (englisch)&lt;br /&gt;
&lt;br /&gt;
 Titel : Linux - Installation, Konfiguration, Anwendung&lt;br /&gt;
 Autor : Michael KoflerMultitasking&lt;br /&gt;
 Verlag: Addison-Wesley&lt;br /&gt;
 ISBN : 3-8273-1475-5&lt;br /&gt;
&lt;br /&gt;
 Titel : Linux - Wegweiser für Netzwerker&lt;br /&gt;
 Autor : Olaf Kirch&lt;br /&gt;
 Verlag: O'Reilly&lt;br /&gt;
 ISBN : 3-930673-18-5&lt;br /&gt;
&lt;br /&gt;
 Titel : TCP/IP-Netzwerk-Administration&lt;br /&gt;
 Autor : Craig Hunt&lt;br /&gt;
 Verlag: O'Reilly&lt;br /&gt;
 ISBN : 3-89721-110-6&lt;br /&gt;
&lt;br /&gt;
 Titel : Essential System Administration&lt;br /&gt;
 Autor : Eleen Frisch&lt;br /&gt;
 Verlag: O'Reilly&lt;br /&gt;
 ISBN : 1-56592-127-5&lt;br /&gt;
&lt;br /&gt;
==Betriebssystem==&lt;br /&gt;
===Was ist ein Betriebssystem?===&lt;br /&gt;
&lt;br /&gt;
Ein Betriebssystem liegt logisch gesehen zwischenAnwendungsprogramm und Hardware.&lt;br /&gt;
&lt;br /&gt;
Es nimmt die Anforderungen der Anwendungsprogramme entgegen und leitet&lt;br /&gt;
diese kontrolliert an die Hardware weiter. Kein Anwendungsprogramm sollte&lt;br /&gt;
direkt auf die Hardware zugreifen können. Den zentralen Zugang schafft einzig&lt;br /&gt;
das Betriebssystem. Somit kann das Betriebssystem unsinnige Anforderungen&lt;br /&gt;
oder Bedienungsfehler abblocken.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Image:Linux.jpg]]&lt;br /&gt;
&lt;br /&gt;
===Aufgaben eines Betriebssystems===&lt;br /&gt;
&lt;br /&gt;
# Verbergen der Komplexität der Maschine vor dem Anwender (Abstraktion)&lt;br /&gt;
# Bereitstellen einer Benutzerschnittstelle (&amp;quot;Kommandointerpreter&amp;quot;, &amp;quot;Shell&amp;quot;)&lt;br /&gt;
# Bereitstellen einer normierten Programmierschnittstelle (API)&lt;br /&gt;
# Verwaltung der Ressourcen der Maschine::&lt;br /&gt;
Hauptspeicher&lt;br /&gt;
Prozessor(en)&lt;br /&gt;
Hintergrundspeicher (Platte, Band, etc.)&lt;br /&gt;
Geräte (Terminal, Drucker, Plotter, etc.)&lt;br /&gt;
Rechenzeit&lt;br /&gt;
Koordination von Prozessen&lt;br /&gt;
&lt;br /&gt;
===Aufbau eines Betriebssystems===&lt;br /&gt;
&lt;br /&gt;
Ein Rechensystem besteht aus Hardware, Systemprogrammen und Anwendungs-&lt;br /&gt;
programmen. Unter einem Betriebssystem wird meist die Summe aus Betriebs-&lt;br /&gt;
systemkern (Kernel) und den wichtigsten Systemprogrammen verstanden. Ein&lt;br /&gt;
minimaler LINUX-Kernel besitzt ungefähr eine Größe von 400 - 800 kByte.&lt;br /&gt;
Weitere wichtige Systemkomponenten benötigen zusätzlich 10 - 100 Mbyte&lt;br /&gt;
Plattenplatz.&lt;br /&gt;
&lt;br /&gt;
Ein Betriebssystem stellt den Rechner als erweiterte Maschine (virtuelle&lt;br /&gt;
Maschine) über definierte Software-Schnittstellen zur Verfügung.&lt;br /&gt;
Das Betriebssystem dient als Betriebsmittelverwalter, der Anforderungen&lt;br /&gt;
befriedigt, protokolliert, abrechnet und vermittelt.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Aufgaben des Betriebssystemkerns:&lt;br /&gt;
&lt;br /&gt;
{| Border=1 Cellpadding=2&lt;br /&gt;
|Prozessverwaltung  (dispatching and scheduling)&lt;br /&gt;
| Mehrere Benutzer können mit mehreren Aktionen gleichzeitig im System arbeiten, ohne sich gegenseitig zu beeinflussen. Damit dies möglich ist,  müssen die Aktionen organisiert, koordiniert und verwaltet werden. Die zu verwaltende Einheit nennt man Prozess.&lt;br /&gt;
|-&lt;br /&gt;
|Speicherverwaltung   (memory management)&lt;br /&gt;
|Zuteilen von Speicherbereichen an laufende Prozesse, Schutz der Speicherbereiche vor unbefugten Zugriffen, bei Speicherengpässen: Auslagern von ganzen (swapping) oder von Teilen (paging) von Prozessen auf die Platte (swap file).&lt;br /&gt;
|-&lt;br /&gt;
|Dateiverwaltung  (file handling)&lt;br /&gt;
|Zuteilung von Plattenplatz für Programme, Benutzer und Systemdienste, Schreiben, Lesen und Strukturieren der Daten auf den Massenspeichern; Durch Bereitstellung einer entsprechenden Schnittstelle (VFS, virtual file system) kann der Kern Dateisysteme unterschiedlichster Art (EXT2, FAT, NFS, HPFS, NTFS, ...) ansprechen.&lt;br /&gt;
|-&lt;br /&gt;
|Geräteverwaltung  (resource management)&lt;br /&gt;
|Der Kern ermöglicht und kontrolliert den Zugriff auf die Hardware. Er steuert die Ein- und Ausgabetätigkeiten der Anwender. An den Kern&lt;br /&gt;
gebunden sind die entsprechenden Gerätetreiber (device driver), die damit eine Kommunikation zwischen Kern und Hardware ermöglichen.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
===Multitasking===&lt;br /&gt;
&lt;br /&gt;
Multitasking bedeutet, dass ein Rechner aus Anwendersicht mehrere Aufgaben&lt;br /&gt;
(Tasks) gleichzeitg übernehmen kann. Das Betriebssystem (OS) unterteilt die&lt;br /&gt;
gleichzeitig anstehenden Aufgaben in Einzelarbeitsschritte (Prozesse) und&lt;br /&gt;
managed durch ein Zeitscheibenverfahren (scheduling) die gleichmäßige&lt;br /&gt;
Abarbeitung der Prozesse.&lt;br /&gt;
&lt;br /&gt;
Es wird unterschieden zwischen:&lt;br /&gt;
&lt;br /&gt;
*non-präamptiven (kooperativen=die Ressourcen werden vom aktiven Prozess freigegeben, bei einem Hänger steht das ganze System)&lt;br /&gt;
&lt;br /&gt;
und&lt;br /&gt;
&lt;br /&gt;
*präamptiven (reinem=der Betriebssystemkern steuert Taskwechsel, indem nach einer festgelegten Zeit vom gerade aktiven Prozess zum nächsten weitergeschaltet wird)&lt;br /&gt;
&lt;br /&gt;
===Mehrprozessorbetrieb===&lt;br /&gt;
&lt;br /&gt;
Bei mehreren Prozessoren und Unterstützung durch das OS&lt;br /&gt;
(NT,Linux,Unix,Novell) können mehrere Tasks auf diese verteilt werden und&lt;br /&gt;
gleichzeitig bearbeitet werden. Nachteilig ist, dass dies nicht oder kaum von&lt;br /&gt;
Anwendungsprogrammen unterstützt wird und es zu Kommunikationsproblemen&lt;br /&gt;
zwischen den einzelnen Tasks kommen kann.&lt;br /&gt;
&lt;br /&gt;
===Arten von von Betriebssystemen===&lt;br /&gt;
&lt;br /&gt;
{|Border=1 Cellpadding=2&lt;br /&gt;
|&lt;br /&gt;
|SingleUser  &lt;br /&gt;
|Multiuser&lt;br /&gt;
|-&lt;br /&gt;
|Single Tasking&lt;br /&gt;
|MS - DOS&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|Multi Tasking&lt;br /&gt;
|Windows 3.x&lt;br /&gt;
|UNIX&lt;br /&gt;
|-&lt;br /&gt;
|&lt;br /&gt;
|Windows 95/98&lt;br /&gt;
|Linux&lt;br /&gt;
|-&lt;br /&gt;
|&lt;br /&gt;
|Windows NT4 ohne Erweiterungen&lt;br /&gt;
|VMS&lt;br /&gt;
|-&lt;br /&gt;
|&lt;br /&gt;
|OS/2 &lt;br /&gt;
|Windows NT mit  Erweiterungen&lt;br /&gt;
|-&lt;br /&gt;
|&lt;br /&gt;
|Apple&lt;br /&gt;
|Windows 2000, XP, 2003&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
===SHELL===&lt;br /&gt;
&lt;br /&gt;
Wenn man mit Linux arbeiten will, kann man nicht direkt mit dem Betriebssystem&lt;br /&gt;
kommunizieren. Man braucht dazu ein Hilfsprogramm, welches die&lt;br /&gt;
Kommandoeingaben ordnungsgemäß an das Betriebssystem weiterleitet. Dieses&lt;br /&gt;
Hilfsprogramm hat den Namen Shell.&lt;br /&gt;
&lt;br /&gt;
Die Shell schirmt den Betriebssystemkern von den Anwendungsprogrammen ab.&lt;br /&gt;
Die unterschiedlichen Shells erfüllen alle dieselbe Aufgabe, sie unterscheiden sich&lt;br /&gt;
allerdings in ihrer Syntax.&lt;br /&gt;
&lt;br /&gt;
==Die Installation im Überblick==&lt;br /&gt;
&lt;br /&gt;
Die Installation von Linux geschieht in folgenden Schritten:&lt;br /&gt;
&lt;br /&gt;
# Analyse (Welche Hardware habe ich? ,Hab ich weitere Betriebsysteme?)&lt;br /&gt;
# Booten des Linux-Kernels. (von CD oder Diskette)&lt;br /&gt;
# Laden einer RAM-Disk (das macht das Installationsprogramm automatisch).&lt;br /&gt;
# Partitionieren der Festplatte (fdisk).&lt;br /&gt;
# Einrichten der Swappartition (mkswap), Formatieren der Festplatte (mkfs).&lt;br /&gt;
# Montieren der Dateisysteme (mount), Aktivieren der Swapbereiche (swapon).&lt;br /&gt;
# Kopieren und Auspacken der Daten vom Installationsmedium auf die Festplatte (die eigentliche Installation). (rpm, dpkg oder tar).&lt;br /&gt;
# Geeignete Wahl der Bootmethode unter Berücksichtigung von Punkt 1 (grub, lilo).&lt;br /&gt;
# Konfiguration des Systems (Netz, Modem etc...).&lt;br /&gt;
&lt;br /&gt;
==Erste Schritte==&lt;br /&gt;
===Anmelden===&lt;br /&gt;
Sie können sich nun mit dem Usernamen und dem Passwort, das sie bei der Installation angelegt haben anmelden!&lt;br /&gt;
[[Image:benutzer.jpg]]&lt;br /&gt;
&lt;br /&gt;
[[Image:passwd.jpg]]&lt;br /&gt;
&lt;br /&gt;
===Terminal öffnen===&lt;br /&gt;
&lt;br /&gt;
Ein Terminal öffnen Sie über das Startmenü:&lt;br /&gt;
&lt;br /&gt;
[[Image:Terminalde.jpg]]&lt;br /&gt;
&lt;br /&gt;
Das geöffnete Terminal sieht dann folgendermaßen aus:&lt;br /&gt;
&lt;br /&gt;
[[Image:Terminalde2.jpg]]&lt;br /&gt;
&lt;br /&gt;
===Sudo===&lt;br /&gt;
Rootrechte erlangen sie über den &amp;quot;Sudo&amp;quot;-Befehl&lt;br /&gt;
 &lt;br /&gt;
''Den nächsten Befehl als root ausführen''&lt;br /&gt;
 xinux@zero:~$ sudo cat /etc/shadow&lt;br /&gt;
 [sudo] password for xinux:&lt;br /&gt;
&lt;br /&gt;
''Eine komplette Sitzung als root starten''&lt;br /&gt;
 xinux@zero:~$ sudo -i&lt;br /&gt;
 [sudo] password for xinux:&lt;br /&gt;
 root@zero:~#&lt;br /&gt;
&lt;br /&gt;
===Virtuelle Konsolen===&lt;br /&gt;
&lt;br /&gt;
In die Virtuelle Konsole gelangen sie über &amp;quot;STRG+ALT+(F1-F6)&amp;quot;.&lt;br /&gt;
Sie funktioniert wie ein ganz normales Terminal, und mit &amp;quot;ALT+F7&amp;quot;&lt;br /&gt;
gelangen sie wieder zurück auf die grafische Benutzeroberfläche&lt;br /&gt;
&lt;br /&gt;
===Abmelden===&lt;br /&gt;
&lt;br /&gt;
Abmelden können Sie sich wieder über das Startmenu unter:&lt;br /&gt;
&lt;br /&gt;
[[Image:Logout.jpg]]&lt;br /&gt;
&lt;br /&gt;
Fals sie nur einzelne Sitzungen in einem der Terminals oder &lt;br /&gt;
den Virtuellen Konsolen Abmelden wollen benutzen sie dazu den Befehl: &amp;quot;exit&amp;quot;&lt;br /&gt;
&lt;br /&gt;
===Herunterfahren===&lt;br /&gt;
&lt;br /&gt;
Das Herunterfahren funktioniert auf dem selben Weg.&lt;br /&gt;
&lt;br /&gt;
Entweder sie Benutzen wieder das Startmenü und benutzen diesmal den &amp;quot;Ausschalten ...&amp;quot; Knopf,&lt;br /&gt;
&lt;br /&gt;
Oder sie geben den äquivalenten &amp;quot;shutdown&amp;quot;-Befehl in einem Terminal bzw. der virtuellen Konsole ein.&lt;br /&gt;
&lt;br /&gt;
Allerdings müssen sie dazu als Administrator angemeldet sein s. &amp;quot;Sudo&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Wenn Sie den &amp;quot;shutdown&amp;quot;-Befehl benutzen wollen muss hinter den Befehl&lt;br /&gt;
&lt;br /&gt;
eine Zeitangabe in Minuten oder das wort &amp;quot;now&amp;quot; für sofortiges Ausschalten hinzugefügt werden:&lt;br /&gt;
&lt;br /&gt;
 xinux@zero:~$ sudo -i&lt;br /&gt;
 root@zero:~# shutdown 60&lt;br /&gt;
 &lt;br /&gt;
 Broadcast message from xinux@zero &lt;br /&gt;
         (/dev/pts/3) at 14:29 ...&lt;br /&gt;
 &lt;br /&gt;
 The system is going down for maintenance in 60 minutes!&lt;br /&gt;
&lt;br /&gt;
Sollten sie den Befehl widerrufen wollen dann drücken sie &amp;quot;STRG+C&amp;quot;,&lt;br /&gt;
&lt;br /&gt;
in dem Terminal in dem der shutdown Befehl gestartet wurde,&lt;br /&gt;
&lt;br /&gt;
oder geben sie den &amp;quot;shutdown&amp;quot;-Befehl zusammen mit der Abbruchoption &amp;quot;-c&amp;quot; in einem anderen Terminal ein:&lt;br /&gt;
&lt;br /&gt;
 root@zero:~# shutdown -c&lt;br /&gt;
&lt;br /&gt;
 shutdown: Shutdown cancelled&lt;br /&gt;
 root@zero:~# &lt;br /&gt;
&lt;br /&gt;
Wenn Sie den Rechner Neustarten möchten gibt es dazu die Option &amp;quot;-r&amp;quot; für den &amp;quot;shutdown&amp;quot;-Befehl&lt;br /&gt;
&lt;br /&gt;
oder den &amp;quot;reboot&amp;quot;-Befehl die beide auch als root ausgeführt werden müssen:&lt;br /&gt;
&lt;br /&gt;
 xinux@zero:~$ sudo -i&lt;br /&gt;
 [sudo] password for xinux: &lt;br /&gt;
 root@zero:~# shutdown -r now&lt;br /&gt;
&lt;br /&gt;
 root@zero:~# reboot&lt;br /&gt;
&lt;br /&gt;
===&amp;quot;man&amp;quot;===&lt;br /&gt;
&lt;br /&gt;
Programm zum Einsehen der Online-Manuals&lt;br /&gt;
&lt;br /&gt;
Die Manuals sind in folgende Sektionen unterteilt:&lt;br /&gt;
# Ausführbare Programme oder Shellbefehle&lt;br /&gt;
# Systemaufrufe (Kernelfunktionen)&lt;br /&gt;
# Bibliotheksaufrufe (Funktionen in System-Bibliotheken)&lt;br /&gt;
# Spezielle Dateien (gewöhnlich in /dev)&lt;br /&gt;
# Dateiformate und Konventionen, z. B. /etc/passwd&lt;br /&gt;
# Spiele&lt;br /&gt;
# Makropakete und Konventionen, z. B. man(7), groff(7)&lt;br /&gt;
# Systemadministrationsbefehle (in der Regel nur für root)&lt;br /&gt;
# Kernelroutinen [Nicht Standard]&lt;br /&gt;
&lt;br /&gt;
Aufruf eines Manuals erfolgt durch ''man kommando''&lt;br /&gt;
Beendet wird durch Drücken des Buchstabens q&lt;br /&gt;
Gesucht wird vorwärts durch Eingabe eines /suchausdruck&lt;br /&gt;
Gesucht wird rückwärts durch Eingabe eines ?suchausdruck&lt;br /&gt;
&lt;br /&gt;
Beispiele:&lt;br /&gt;
&lt;br /&gt;
      man passwd        Anschauen der Manualseite zum Programm passwd&lt;br /&gt;
      man 5 passwd      Anschauen der Manualseite zur Datei /etc/passwd&lt;br /&gt;
      man -a passwd     Anschauen aller Manualseiten zu passwd&lt;br /&gt;
      man -k passwd     Durchsucht die Kurzbeschreibungen der Manualseite&lt;br /&gt;
                        nach passwd und gibt alle Treffer aus&lt;br /&gt;
      man -f passwd      Gibt alle gefunden Kurzbescheibungen zu passwd aus&lt;br /&gt;
      man -L en passwd Gibt englische Manualseiten aus&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Was geht vor auf meinem System? (date,who)===&lt;br /&gt;
&lt;br /&gt;
Das Kommando date dient zur Abfrage von Datum und Uhrzeit.&lt;br /&gt;
&lt;br /&gt;
 xinux@zero:~ &amp;gt; date&lt;br /&gt;
 Fre Mär 16 16:35:03 CET 2001&lt;br /&gt;
&lt;br /&gt;
oder auch Anzeige der Grennwich Zeit:&lt;br /&gt;
&lt;br /&gt;
 xinux@zero:~ &amp;gt; date -u&lt;br /&gt;
 Fre Mär 16 15:35:34 UTC 2001&lt;br /&gt;
&lt;br /&gt;
 xinux@zero:~ &amp;gt; date -u &amp;quot;+%X&amp;quot;&lt;br /&gt;
 15:37:19&lt;br /&gt;
&lt;br /&gt;
 xinux@zero:~ &amp;gt; date -u &amp;quot;+%x&amp;quot;&lt;br /&gt;
 01/15/02&lt;br /&gt;
&lt;br /&gt;
who zeigt alle angemeldeten Benutzer an&lt;br /&gt;
&lt;br /&gt;
 thomas@cardassia:~ &amp;gt; who&lt;br /&gt;
 thomas             tty1 Feb 27 16:39&lt;br /&gt;
 thomas             tty2 Mar 2 17:08&lt;br /&gt;
 tina               tty6 Mar 16 16:38&lt;br /&gt;
&lt;br /&gt;
Mit `who --help' bekommen Sie mehr Informationen.&lt;br /&gt;
&lt;br /&gt;
 thomas@cardassia:~ &amp;gt; who --help&lt;br /&gt;
&lt;br /&gt;
Benutzung: who [OPTION]... [ DATEI | ARG1 ARG2 ]&lt;br /&gt;
&lt;br /&gt;
 -H, --heading             print line of column headings&lt;br /&gt;
 -i, -u, --idle            add user idle time as HOURS:MINUTES, . or old&lt;br /&gt;
 -l, --lookup              attempt to canonicalize hostnames via DNS&lt;br /&gt;
 -m                        only hostname and user associated with stdin&lt;br /&gt;
 -q, --count               all login names and number of users logged on&lt;br /&gt;
 -s                        (ignored)&lt;br /&gt;
 -T, -w, --mesg            add user's message status as +, - or ?&lt;br /&gt;
     --message             same as -T&lt;br /&gt;
     --writable            same as -T&lt;br /&gt;
     --help                display this help and exit&lt;br /&gt;
     --version             output version information and exit&lt;br /&gt;
&lt;br /&gt;
==Das UNIX-Dateisystem==&lt;br /&gt;
===Verzeichnisbaum===&lt;br /&gt;
&lt;br /&gt;
[[Image:vztree.jpg]]&lt;br /&gt;
&lt;br /&gt;
Das Betriebssystem UNIX besitzt ein hierarchisches Dateisystem. Es besteht aus:&lt;br /&gt;
* Dateien (Files)&lt;br /&gt;
Dateien speichern Informationen (Text, Bilder, Sound, Videos, Programme) und&lt;br /&gt;
werden über den Dateinamen angesprochen.&lt;br /&gt;
&lt;br /&gt;
* Verzeichnissen (Directories, Kataloge)&lt;br /&gt;
Verzeichnisse besitzen ebenfalls einen Namen und dienen zur Ordnung des&lt;br /&gt;
Dateisystems. Ein Verzeichnis kann Dateien und Unterverzeichnisse&lt;br /&gt;
(Subdirectories) enthalten. Das oberste Verzeichnis im Dateisystem heisst&lt;br /&gt;
Rootverzeichnis oder kurz Root und wird durch / (sprich: slash)&lt;br /&gt;
gekennzeichnet.&lt;br /&gt;
&lt;br /&gt;
Im Gegensatz zu Windows kennt UNIX keine Laufwerke.&lt;br /&gt;
Das obige Bild zeigt ein typisches UNIX-Dateisystem.&lt;br /&gt;
Unterhalb des Rootverzeichnisses befinden sich eine Vielzahl vonVerzeichnissen.&lt;br /&gt;
&lt;br /&gt;
===Wichtige Verzeichnisse===&lt;br /&gt;
&lt;br /&gt;
• '''Homeverzeichnis'''&lt;br /&gt;
&lt;br /&gt;
das Verzeichnis, in dem man sich unmittelbar nach dem Anmelden befindet. Das&lt;br /&gt;
Homeverzeichnis wird vom Systemverwalter eingerichtet; jeder Anwender&lt;br /&gt;
besitzt ein festes Homeverzeichnis. z.B. /home/hans&lt;br /&gt;
&lt;br /&gt;
~ (Tilde) bzw. $HOME (Shellvariable) kennzeichnen das Homeverzeichnis.&lt;br /&gt;
&lt;br /&gt;
• '''Aktuelles Verzeichnis'''&lt;br /&gt;
&lt;br /&gt;
Verzeichnis, in dem man sich aktuell befindet.&lt;br /&gt;
Das aktuelle Verzeichnis wird mit dem Befehl cd (change directory) oder per&lt;br /&gt;
Mausklick verändert.&lt;br /&gt;
Ein einfacher Punkt . kennzeichnet das aktuelle Verzeichnis.&lt;br /&gt;
&lt;br /&gt;
• '''Elternverzeichnis'''&lt;br /&gt;
&lt;br /&gt;
Verzeichnis unmittelbar oberhalb des aktuellen Verzeichnisses.&lt;br /&gt;
Jedes Verzeichnis ausser / besitzt genau ein Elternverzeichnis.&lt;br /&gt;
Zwei Punkte .. kennzeichnen das Elternverzeichnis (abhängig vom aktuellen&lt;br /&gt;
VZ).&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Absoluter Pfadname:===&lt;br /&gt;
&lt;br /&gt;
Beschreibt ausgehend vom Rootverzeichnis den Weg zum Zielverzeichnis oder zur&lt;br /&gt;
Zieldatei. (Welche Verzeichnisse müssen ausgehend von / durchlaufen werden, um&lt;br /&gt;
zum Ziel zu kommen?) Ein absoluter Pfadname beginnt immer mit / .&lt;br /&gt;
&lt;br /&gt;
===Relativer Pfadname:===&lt;br /&gt;
&lt;br /&gt;
Beschreibt ausgehend vom aktuellen Verzeichnis den Weg zum Zielverzeichnis&lt;br /&gt;
oder zur Zieldatei; ein relativer Pfadname beginnt nicht mit / .&lt;br /&gt;
/home/suxer&lt;br /&gt;
absoluter Pfadname für das Verzeichnis sub1 im Homeverzeichnis von suxer&lt;br /&gt;
&lt;br /&gt;
===Verzeichnisstruktur===&lt;br /&gt;
&lt;br /&gt;
 /bin         Kommandos die beim starten benötigt werden (Zugriff hat jeder)&lt;br /&gt;
 /sbin        Wichtige System-Programme (In der Regel root vorberhalten)&lt;br /&gt;
 /boot        Hier findet man die Dateien des Bootmanagers und des Kernel.&lt;br /&gt;
 /dev         In diesem Verzeichnis stehen die Gerätedateien (Devices),&lt;br /&gt;
 /home        Alle Heimatverzeichnisse der Nutzer findet man hier.&lt;br /&gt;
 /lib         Beim Systemstart benötigten Bibliotheken und Modules stehen hier.&lt;br /&gt;
 /mnt         Mountpunkt für temporäre Partitionen&lt;br /&gt;
 /opt         Software, die nicht Installationsumfang von Linux gehören.&lt;br /&gt;
 /root        Heimatverzeichnis des Administrators.&lt;br /&gt;
 /tmp         Temporäre Dateien können hier abgelegt werden&lt;br /&gt;
 /usr         statische Dateien (kann read-only gemountet sein)&lt;br /&gt;
 /var         variable Dateien (muss beschreibar sein )&lt;br /&gt;
 /etc         Konfiguartionsdateien und Startscripte&lt;br /&gt;
 /proc        Virtuelles Dateisystem -&amp;gt; repräsentiert den Kernel&lt;br /&gt;
&lt;br /&gt;
===Unterverzeichnisse von /usr===&lt;br /&gt;
&lt;br /&gt;
 sbin         Programme für root die beim Start nicht benötigt werden&lt;br /&gt;
 bin          Programme für alle die beim Start nicht benötigt werden&lt;br /&gt;
 X11R6        Dateien des X-Window-Sytems&lt;br /&gt;
 bin          Ausführbare Programme&lt;br /&gt;
 doc          Dokumentationen&lt;br /&gt;
 etc          Konfigurationsdateien&lt;br /&gt;
 games        Spiele&lt;br /&gt;
 include      Headerdateien für C-Programme&lt;br /&gt;
 local        Pakete die nicht zur Distribution gehören ähnlich /opt&lt;br /&gt;
 share        Pakete die von mehreren Paketen genutzt werden&lt;br /&gt;
 share/man    Die Manualpages&lt;br /&gt;
 share/info   Seiten des Infosystems&lt;br /&gt;
 share/doc    Dokumentationen&lt;br /&gt;
 src          Sources von Programmen (Kernel und andere)&lt;br /&gt;
&lt;br /&gt;
===Unterverzeichnisse von /var===&lt;br /&gt;
&lt;br /&gt;
 cache        Zwischenspreicher für Progammes&lt;br /&gt;
 games        Variable Daten der Games (Scores etc...)&lt;br /&gt;
 lock         Sperrdateien&lt;br /&gt;
 log          Die Logdateien (wichtiges Verzeichnis für Admins)&lt;br /&gt;
 mail         Das Mailsystem&lt;br /&gt;
 run          Dateien zu laufemdem Prozessen&lt;br /&gt;
 spool        Spooldateien (z.B. für das Drucksystem&lt;br /&gt;
 state        Statusinfos&lt;br /&gt;
 tmp          Wie /tmp eventuell nicht auf root Partion&lt;br /&gt;
&lt;br /&gt;
==Einfache Komandos==&lt;br /&gt;
===cd: Wechseln des Arbeitsverzeichnis===&lt;br /&gt;
&lt;br /&gt;
Um festzustellen in welchem Verzeichnis man sich befindet, sollte man den&lt;br /&gt;
Befehl &amp;quot;pwd&amp;quot; benutzen,&lt;br /&gt;
&lt;br /&gt;
und mit dem Befehl &amp;quot;cd&amp;quot; kann man zwischen den Verzeichnissen wechseln:&lt;br /&gt;
&lt;br /&gt;
Wechsele ins homeverzeichnis von Xinux&lt;br /&gt;
&lt;br /&gt;
 xinux@zero:~$ cd /home/xinux/&lt;br /&gt;
 xinux@zero:~$ pwd&lt;br /&gt;
 /home/xinux&lt;br /&gt;
&lt;br /&gt;
cd ~ -&amp;gt; wechsele ins jeweilige Homeverzeichnis&lt;br /&gt;
&lt;br /&gt;
cd .. -&amp;gt; wechsele ein Verzeichnis höher&lt;br /&gt;
&lt;br /&gt;
cd ../verzeichnis -&amp;gt; wechsele in eine paralleles Verzeichnis &amp;lt;- (ist eine relative Pfadangabe !)&lt;br /&gt;
&lt;br /&gt;
cd - -&amp;gt; wechsele in das Verzeichnis, in dem vorher gearbeitet wurde.&lt;br /&gt;
&lt;br /&gt;
Mit cd / wechselt man in das Wurzelverzeichnis.&lt;br /&gt;
&lt;br /&gt;
 xinux@zero:/var/log$ cd /&lt;br /&gt;
 xinux@zero:/$ pwd&lt;br /&gt;
 /&lt;br /&gt;
&lt;br /&gt;
===ls: Listing===&lt;br /&gt;
&lt;br /&gt;
Den Inhalt von Verzeichnissen kann man sich mit dem Befehl &amp;quot;ls&amp;quot; anzeigen lassen&lt;br /&gt;
wobei &amp;quot;ls&amp;quot; eine Vielzahl von Optionen besitzt:&lt;br /&gt;
&lt;br /&gt;
 ls                                  standard&lt;br /&gt;
 ls -l                               langes listing&lt;br /&gt;
 ls -a                               alle Dateien&lt;br /&gt;
 ls -i                               mit Inode&lt;br /&gt;
 ls -h                               gut lesbare Dateigröße&lt;br /&gt;
 ls -d                               Verzechnis wird angezeigt, nicht der Inhalt&lt;br /&gt;
 ls -L                               sortiert nach Größe&lt;br /&gt;
 ls -t                               sortiert nach Datum&lt;br /&gt;
 ls -F                               mit nützlichem Anhang&lt;br /&gt;
&lt;br /&gt;
 xinux@zero:/$ ls -l /var/log/messages&lt;br /&gt;
 -rw-r----- 1 syslog adm 2296 2009-06-16 10:05 /var/log/messages&lt;br /&gt;
&lt;br /&gt;
===more: Seitenweises Anzeigen von Seiten===&lt;br /&gt;
 root@zero:~# more /var/log/messages&lt;br /&gt;
 ...&lt;br /&gt;
&lt;br /&gt;
===head: erste Zeilen anzeigen===&lt;br /&gt;
Erste 10 Zeilen anzeigen&lt;br /&gt;
 root@zero:~# head /var/log/messages&lt;br /&gt;
 Jun 15 12:37:08 zero syslogd 1.5.0#5ubuntu3: restart.&lt;br /&gt;
 Jun 15 12:38:43 zero kernel: [  830.065036] mtrr: your processor doesn't support write-combining&lt;br /&gt;
 Jun 15 12:46:05 zero pulseaudio[4817]: pid.c: Stale PID file, overwriting.&lt;br /&gt;
 Jun 15 13:05:24 zero -- MARK --&lt;br /&gt;
 ...&lt;br /&gt;
&lt;br /&gt;
Erste zwei Zeilen anzeigen&lt;br /&gt;
 root@zero:~# head -n 2 /var/log/messages&lt;br /&gt;
 Jun 15 12:37:08 zero syslogd 1.5.0#5ubuntu3: restart.&lt;br /&gt;
 Jun 15 12:38:43 zero kernel: [  830.065036] mtrr: your processor doesn't support write-combining&lt;br /&gt;
&lt;br /&gt;
===tail: letzte Zeilen anzeigen===&lt;br /&gt;
 &lt;br /&gt;
 root@zero:~# tail /var/log/syslog&lt;br /&gt;
 ...&lt;br /&gt;
 Jun 19 11:19:35 zero -- MARK --&lt;br /&gt;
 Jun 19 11:39:35 zero -- MARK --&lt;br /&gt;
 Jun 19 11:59:36 zero -- MARK --&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Letze 5 Zeilen anzeigen&lt;br /&gt;
 root@zero:~# tail -n 5 /var/log/auth.log&lt;br /&gt;
 Jun 18 14:30:01 zero CRON[12040]: pam_unix(cron:session): session closed for user root&lt;br /&gt;
 Jun 18 14:39:01 zero CRON[12191]: pam_unix(cron:session): session opened for user root by (uid=0)&lt;br /&gt;
 Jun 18 14:39:01 zero CRON[12191]: pam_unix(cron:session): session closed for user root&lt;br /&gt;
 Jun 18 14:40:01 zero CRON[12237]: pam_unix(cron:session): session opened for user root by (uid=0)&lt;br /&gt;
 Jun 18 14:40:01 zero CRON[12237]: pam_unix(cron:session): session closed for user root&lt;br /&gt;
&lt;br /&gt;
Letze Zeilen anzeigen und fortlaufend aktualisieren&lt;br /&gt;
 root@zero:~# tail -f /var/log/syslog&lt;br /&gt;
 ...&lt;br /&gt;
&lt;br /&gt;
===mkdir: Ein neues Verzeichnis erstellen===&lt;br /&gt;
&lt;br /&gt;
 mkdir        verzeichnis&lt;br /&gt;
Erstellt ein Verzeichnis im working directory (wd)&lt;br /&gt;
&lt;br /&gt;
 mkdir  -p    ver1/ver2&lt;br /&gt;
Erstellt ein Verzeichnis ver2 unterhalb von ver1&lt;br /&gt;
wenn ver1 nicht existiert wird es erstellt&lt;br /&gt;
&lt;br /&gt;
 mkdir -m 753 ver1&lt;br /&gt;
Es wird das Verzeichnis ver1 erstellt mit der mask 753&lt;br /&gt;
&lt;br /&gt;
 mkdir -v     ver1&lt;br /&gt;
Geschwätzige Ausgabe :)&lt;br /&gt;
&lt;br /&gt;
===Zum Löschen von leeren Verzeichnissen wird rmdir benutzt===&lt;br /&gt;
&lt;br /&gt;
 rmdir           ver1&lt;br /&gt;
Löscht das leere Verzeichnis ver1&lt;br /&gt;
&lt;br /&gt;
 rmdir -v        ver1&lt;br /&gt;
Löscht das leere Verzeichnis ver1 und ist geschwätzig&lt;br /&gt;
&lt;br /&gt;
 rmdir -p        /ver1/ver2/ver3&lt;br /&gt;
Löscht das Verzeichnis ver3; wenn dadurch ver2 ein leeres&lt;br /&gt;
Verzeichnis wird, wird dieses auch gelöscht , wenn ver1&lt;br /&gt;
dadurch ein leeres Verzeichnis wird, wird auch dieses gelöscht.&lt;br /&gt;
&lt;br /&gt;
===touch Verändern des Zeitstempels===&lt;br /&gt;
&lt;br /&gt;
Mit touch können wir eine neue leere Datei erzeugen (das ist nicht der eigentliche&lt;br /&gt;
Zweck von touch, eigentlich wird der Zeitstempel geändert)&lt;br /&gt;
&lt;br /&gt;
 touch            dateiname&lt;br /&gt;
&lt;br /&gt;
===Kopieren=== &lt;br /&gt;
cp ist das Kommando um Dateien zu kopieren &lt;br /&gt;
&lt;br /&gt;
Eine Kopie von dat1 mit dem Namen dat2 erstellen:&lt;br /&gt;
&lt;br /&gt;
 xinux@zero:~$ cp dat1 dat2&lt;br /&gt;
&lt;br /&gt;
Eine Kopie von dat1 ins Verzeichnis ver2 erstellen:&lt;br /&gt;
&lt;br /&gt;
 xinux@zero:~$ cp dat1 ver2/&lt;br /&gt;
 &lt;br /&gt;
Eine Kopie erstellen mit ausführlicher Anzeige:&lt;br /&gt;
&lt;br /&gt;
 xinux@zero:~$ cp -v dat1 dat2&lt;br /&gt;
 `dat1' -&amp;gt; `dat2'&lt;br /&gt;
&lt;br /&gt;
Eine Kopie erstellen mit Rückfrage fals etwas überschrieben wird:&lt;br /&gt;
&lt;br /&gt;
 xinux@zero:~$ cp -i dat1 dat2&lt;br /&gt;
 cp: overwrite `dat2'?&lt;br /&gt;
&lt;br /&gt;
Eine Kopie erstellen und die Rückfrage überbrücken:&lt;br /&gt;
&lt;br /&gt;
 xinux@zero:~$ cp -f dat1 dat2&lt;br /&gt;
&lt;br /&gt;
Eine Kopie von dat1 ins Verzeichnis ver2 erstellen fals keine neuere Version von dat1 vorliegt:&lt;br /&gt;
&lt;br /&gt;
 xinux@zero:~$ cp -u dat1 ver2/&lt;br /&gt;
&lt;br /&gt;
Eine Kopie erstellen fals ver2 auf dem selben Dateisystem wie dat1 liegt:&lt;br /&gt;
&lt;br /&gt;
 xinux@zero:~$ cp -x dat1 ver2/&lt;br /&gt;
&lt;br /&gt;
Eine Kopie von ver1, die als ver2 oder unter ver2 als ver1 gespeichert wird erstellen:&lt;br /&gt;
&lt;br /&gt;
 xinux@zero:~$ cp -r ver1/ ver2/&lt;br /&gt;
&lt;br /&gt;
Eine Kopie von einer Datei erstellen und ihre Attribute beibehalten:&lt;br /&gt;
&lt;br /&gt;
 xinux@zero:~$ cp -p sux1 sux2&lt;br /&gt;
&lt;br /&gt;
Eine Kopie erstellen bei der die Links erhalten bleiben:&lt;br /&gt;
&lt;br /&gt;
 xinux@zero:~$ cp -r ver1/ ver2/&lt;br /&gt;
&lt;br /&gt;
Eine Kopie erstellen zum Archivieren (-dpr):&lt;br /&gt;
&lt;br /&gt;
 xinux@zero:~$ cp -a ver1/ ver2/&lt;br /&gt;
&lt;br /&gt;
===rm: Löschen einer Datei===&lt;br /&gt;
&lt;br /&gt;
Um Dateien zu löschen, brauchen wir das Kommando &amp;quot;rm&amp;quot;:&lt;br /&gt;
&lt;br /&gt;
 rm               dat1        dat1 wird gelöscht&lt;br /&gt;
 rm         -i    dat1        dat1 wird nach Bestätigung gelöscht&lt;br /&gt;
 rm         -f    dat1        dat1 wird ohne Rückfragen gelöscht&lt;br /&gt;
 rm         -v    dat1        dat1 wird glöscht (geschwätzige Ausgabe)&lt;br /&gt;
 rm         -r    ver1        Löschen von nicht leeren Verzeichnissen&lt;br /&gt;
                              Achtung !!! Als root kann man sich damit Teile&lt;br /&gt;
                              oder sogar den gesamten Verzeichnisbaum&lt;br /&gt;
                              absägen !!!&lt;br /&gt;
&lt;br /&gt;
===mv: Verschieben===&lt;br /&gt;
&lt;br /&gt;
Mit dem Befehl &amp;quot;mv&amp;quot; werden Daten verschoben, folgendes gilt:&lt;br /&gt;
&lt;br /&gt;
 mv          dat1 dat2         &lt;br /&gt;
Die Datei dat1 wird in dat2 umbenannt&lt;br /&gt;
 mv          dat1 /ver1        &lt;br /&gt;
Die Datei dat1 wird nach /ver1 verschoben&lt;br /&gt;
&lt;br /&gt;
Die Parameter und ihre Bedeutung:&lt;br /&gt;
&lt;br /&gt;
      -i                      wenn eine Datei exisitiert wird vor dem&lt;br /&gt;
                              Überschreiben nachgefragt&lt;br /&gt;
      -v                      verbose (geschwätzig)&lt;br /&gt;
      -u                      nur neuere Daten werden bei Bedarf überschrieben&lt;br /&gt;
      -b                      wenn überschrieben werden soll, wird ein Backup&lt;br /&gt;
                              erstellt&lt;br /&gt;
      -S ENDUNG               das Backup bekommt die Endung ENDUNG&lt;br /&gt;
&lt;br /&gt;
===su Benutzer wechseln===&lt;br /&gt;
&lt;br /&gt;
 su -             &lt;br /&gt;
Wechsel zum Rootaccount, wie wenn dieser sich neu anmelden würde. (Bsp: su -)&lt;br /&gt;
&lt;br /&gt;
 su Benutzernamen &lt;br /&gt;
Wechsel der Identität zu Benutzer (gegebenenfalls Passwortabfrage)&lt;br /&gt;
&lt;br /&gt;
 su -c Kommando   &lt;br /&gt;
Kommando wird als rootaccount ausgeführt&lt;br /&gt;
&lt;br /&gt;
==Der Standard Editor vi==&lt;br /&gt;
Der vi ist der Standardeditor in der Unixwelt. Er ist in jedem Unix-Derivat&lt;br /&gt;
enthalten.&lt;br /&gt;
Der Editor hat zwar den schlechten Ruf umständlich zu bedienen zu sein, ist&lt;br /&gt;
jedoch sehr leistungsfähig und systemübergreifend verfügbar. Beim vi handelt es&lt;br /&gt;
sich um einen rein textorientierten Editor, der mittels eigener Kommandos&lt;br /&gt;
gesteuert wird.&lt;br /&gt;
&lt;br /&gt;
Der Editor VIM ist eine weitere Verbesserung von VI und leichter zu bedienen.&lt;br /&gt;
Und unter Ubuntu/Debian mit &amp;quot;apt-get install vim&amp;quot; zu installieren.&lt;br /&gt;
&lt;br /&gt;
===Starten des Editors:===&lt;br /&gt;
&lt;br /&gt;
Der Editorstart erfolgt einfach durch die Eingabe des Kommandos vi mit dem&lt;br /&gt;
Dateinamen der zu editierenden Datei als Parameter.&lt;br /&gt;
Beispiel:        &lt;br /&gt;
 vi sux.txt&lt;br /&gt;
&lt;br /&gt;
===Die Betriebsmodi des vi:===&lt;br /&gt;
&lt;br /&gt;
Ein Umstand, der dem vi den Ruf der komplizierten Bedienbarkeit zugetragen hat,&lt;br /&gt;
sind die unterschiedlichen Betriebsmodi des Editors. Genauer gesagt verfügt der&lt;br /&gt;
vi über drei Betriebsmodi:&lt;br /&gt;
&lt;br /&gt;
====Kommandomodus:====&lt;br /&gt;
&lt;br /&gt;
Innerhalb dieses Modus werden die eingegebenen Zeichen direkt als Befehle des&lt;br /&gt;
Editors interpretiert und ausgeführt. Dabei gibt es weder ein Bereitschaftszeichen&lt;br /&gt;
(Prompt) noch ein Echo (Ausgabe). Der Kommandomodus ist der Modus, in dem&lt;br /&gt;
sich der vi direkt nach seinem Start befindet.&lt;br /&gt;
&lt;br /&gt;
====Zeilenmodus oder Exmodus:====&lt;br /&gt;
&lt;br /&gt;
Dieser Modus ist der einzige Modus mit einem eigenen Bereitschaftszeichen,&lt;br /&gt;
nämlich dem Doppelpunkt (:). Das Prompt wird ebenso wie die Befehlsausgaben&lt;br /&gt;
in der Statuszeile angezeigt.&lt;br /&gt;
&lt;br /&gt;
====Eingabemodus:====&lt;br /&gt;
&lt;br /&gt;
Der Eingabemodus ist derjenige, in welchem der zu bearbeitende Text bearbeitet&lt;br /&gt;
werden kann. Alle hier eingegebenen Zeichen werden als Text für die aktuelle&lt;br /&gt;
Datei interpretiert. Zwischen den unterschiedlichen Modi kann jederzeit&lt;br /&gt;
gewechselt werden. Von Kommandomodus gelangen Sie durch mehere Wege in&lt;br /&gt;
den Eingabemodus. Man kann durch folgende Aktionen wechslen&lt;br /&gt;
&lt;br /&gt;
{| border=1 cellpadding=2&lt;br /&gt;
|i&lt;br /&gt;
|Text vor der aktuellen Cursorposition einfügen&lt;br /&gt;
|-&lt;br /&gt;
|I&lt;br /&gt;
|Text am Zeilenanfang einfügen&lt;br /&gt;
|-&lt;br /&gt;
|a&lt;br /&gt;
|Text hinter der aktuellen Cursorposition einfügen&lt;br /&gt;
|-&lt;br /&gt;
|A&lt;br /&gt;
|Text am Zeilenende einfügen&lt;br /&gt;
|-&lt;br /&gt;
|o&lt;br /&gt;
|Unterhalb der aktuellen Zeile eine neue Zeile einfügen&lt;br /&gt;
|-&lt;br /&gt;
|O&lt;br /&gt;
|Oberhalb der aktuellen Zeile eine neue Zeile einfügen&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Durch das Drücken der ESC - Taste gelangt man in den Kommandomodus zurück.&lt;br /&gt;
&lt;br /&gt;
Im Kommandomodus können Sie durch den Text navigieren und auch den Text&lt;br /&gt;
selbst bearbeiten, z.B ausschneiden, kopieren usw. Dazu sind einige Kommandos&lt;br /&gt;
nötig, von denen die wichtigsten im Folgenden erläutert werden:&lt;br /&gt;
&lt;br /&gt;
 xinux@zero:/$ vi iwas.txt&lt;br /&gt;
&lt;br /&gt;
[[Image:vim.jpg]]&lt;br /&gt;
&lt;br /&gt;
===Benutzen des Kommandomodus===&lt;br /&gt;
====Steuerung des Cursors durch den Text====&lt;br /&gt;
&lt;br /&gt;
Mittels folgender Kommandos bewegt sich der Cursor durch den Text:&lt;br /&gt;
&lt;br /&gt;
{| border=1 cellpadding=2&lt;br /&gt;
|h&lt;br /&gt;
|Cursor ein Zeichen nach links&lt;br /&gt;
|-&lt;br /&gt;
|l&lt;br /&gt;
|Cursor ein Zeichen nach rechts&lt;br /&gt;
|-&lt;br /&gt;
|k&lt;br /&gt;
|Cursor eine Zeile nach oben&lt;br /&gt;
|-&lt;br /&gt;
|j&lt;br /&gt;
|Cursor eine Zeile nach unten&lt;br /&gt;
|-&lt;br /&gt;
|w&lt;br /&gt;
|Cursor ein Wort nach rechts&lt;br /&gt;
|-&lt;br /&gt;
|b&lt;br /&gt;
|Cursor ein Wort nach links&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Alle diese Kommandos können mit einem vorgestellten Wiederholungsfaktor&lt;br /&gt;
arbeiten. Der Befehl 3w verschiebt demnach den Cursor um 3 Wörter nach rechts.&lt;br /&gt;
&lt;br /&gt;
====Angaben zur Positionierung====&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{| border=1 cellpadding=2&lt;br /&gt;
|STRG+U&lt;br /&gt;
|1⁄2 Bildschirmseite nach oben&lt;br /&gt;
|-&lt;br /&gt;
|STRG+D&lt;br /&gt;
|1⁄2 Bildschirmseite nach unten&lt;br /&gt;
|-&lt;br /&gt;
|STRG+B&lt;br /&gt;
|1 Bildschirmseite nach oben&lt;br /&gt;
|-&lt;br /&gt;
|STRG+F&lt;br /&gt;
|1 Bildschirmseite nach unten&lt;br /&gt;
|-&lt;br /&gt;
|/Ausdruck&lt;br /&gt;
|Sucht den Ausdruck (vorwärts) Weitersuchen mit n , N&lt;br /&gt;
|-&lt;br /&gt;
|?Ausdruck&lt;br /&gt;
|Sucht den Ausdurck (rückwärts) Weitersuchen mit n , N&lt;br /&gt;
|-&lt;br /&gt;
|0&lt;br /&gt;
|Zeilenanfang&lt;br /&gt;
|-&lt;br /&gt;
|$&lt;br /&gt;
|Zeilenende&lt;br /&gt;
|-&lt;br /&gt;
|w&lt;br /&gt;
|Nächstes Wort&lt;br /&gt;
|-&lt;br /&gt;
|b&lt;br /&gt;
|Vorheriges Wort&lt;br /&gt;
|-&lt;br /&gt;
|fc&lt;br /&gt;
|Auf das Zeichen c springen. c steht für ein beliebiges Zeichen&lt;br /&gt;
|-&lt;br /&gt;
|G&lt;br /&gt;
|Letzte Zeile der Datei&lt;br /&gt;
|-&lt;br /&gt;
|ng&lt;br /&gt;
|n-te Zeile der Datei&lt;br /&gt;
|-&lt;br /&gt;
|H&lt;br /&gt;
|Anfang der Bildschirmseite&lt;br /&gt;
|-&lt;br /&gt;
|L&lt;br /&gt;
|Ende der Bildschirmseite&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
====Befehle zur Textbearbeitung -&amp;gt; Was soll geschehen====&lt;br /&gt;
&lt;br /&gt;
{| Border=1 Cellpadding=2&lt;br /&gt;
|x&lt;br /&gt;
|Löscht Zeichen&lt;br /&gt;
|-&lt;br /&gt;
|d&lt;br /&gt;
|Löschen und in den Puffer laden&lt;br /&gt;
|-&lt;br /&gt;
|c&lt;br /&gt;
|Ändern&lt;br /&gt;
|-&lt;br /&gt;
|y&lt;br /&gt;
|In den Puffer laden&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
====Weitere wichtige Befehle:====&lt;br /&gt;
&lt;br /&gt;
{| Border=1 Cellpadding=2&lt;br /&gt;
|p&lt;br /&gt;
|Aus dem Puffer einfügen&lt;br /&gt;
|-&lt;br /&gt;
|u&lt;br /&gt;
|Undo, macht den letzten Befehl rückgängig&lt;br /&gt;
|-&lt;br /&gt;
|STRG+R&lt;br /&gt;
|Redo, macht den letzten Undo rückgängig&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
===Zeilen- oder Exmodus===&lt;br /&gt;
&lt;br /&gt;
Wie schon erwähnt wird der Zeilen oder Exmodus durch einen : eingeleitet.&lt;br /&gt;
Es folgen einige Beispiele.&lt;br /&gt;
&lt;br /&gt;
Befehle zum Speichern und Beenden:&lt;br /&gt;
&lt;br /&gt;
 :w          Schreibt Datei&lt;br /&gt;
 :w Datei2   Schreibt eine Kopie in Datei2&lt;br /&gt;
 :w !        Schreibt Datei (übergehe Schreibschutz)&lt;br /&gt;
 :w ! Datei2 Schreibt eine Kopie in Datei2 (übergehe Schreibschutz)&lt;br /&gt;
 :q          Schließe Datei&lt;br /&gt;
 :q!         Schließe Datei (verwerfe Änderungen)&lt;br /&gt;
 :wq         Schreibe Datei und beende Editor&lt;br /&gt;
 :wq!        Schreibe Datei und beende Editor (übergehe Schreibschutz)&lt;br /&gt;
 :q!         Schließe Datei (verwerfe Änderungen)&lt;br /&gt;
 :h          Hilfe anzeigen, durch drücken von :q Beenden der Hilfe&lt;br /&gt;
 :e Datei3   Editiere Datei3&lt;br /&gt;
 :e #        Editere vorhergehende Datei&lt;br /&gt;
 :1,3co9     Kopiere von der ersten bis zu dritten Zeile &lt;br /&gt;
             und füge den Inhalt unterhalb der neunte Zeile ein.&lt;br /&gt;
&lt;br /&gt;
Interaktionen mit Unix:&lt;br /&gt;
&lt;br /&gt;
 :r Datei4   Fügt Inhalt der Datei4 nach dem Cursor ein&lt;br /&gt;
 :r ! Befehl Fügt Ausgabe des Befehls nach dem Cursor ein&lt;br /&gt;
 :! Befehl   Führt den Befehl aus&lt;br /&gt;
 :sh         Starte Subshell -&amp;gt; mit exit kehrt man wieder zurück&lt;br /&gt;
             Eingabemodus zurück&lt;br /&gt;
&lt;br /&gt;
====Ersetzen von Textteilen====&lt;br /&gt;
&lt;br /&gt;
Die grundsätzliche Syntax lautet:&lt;br /&gt;
&lt;br /&gt;
 :[Zeilennummer,Zeilennummer]s/Muster/Ersetzung/[gc]&lt;br /&gt;
&lt;br /&gt;
 :s/worf/kirn/              der erste worf wird in der aktuellen Zeile durch kirn ersetzt&lt;br /&gt;
 :1,9s/worf/kirn/g          von der 1. bis zur 9. Zeile werden alle worf durch kirn ersetzt&lt;br /&gt;
 :1,$s/worf/kirn/           von der ersten bis zur letzten Zeile ersetze ersten worf durch&lt;br /&gt;
                            kirn&lt;br /&gt;
 :.,$s/worf/kirn/g          von der aktuellen bis zur letzten Zeile ersetze alle worf durch&lt;br /&gt;
                            kirn&lt;br /&gt;
 :1,.s/worf/kirn/c          von der 1. bis zur aktuellen Zeile ersetze worf durch kirn, frage&lt;br /&gt;
                            aber nach&lt;br /&gt;
 :1,$s/^worf/kirn/          von der ersten bis zur letzten Zeile ersetze worf am&lt;br /&gt;
                            Zeilenanfang durch kirn&lt;br /&gt;
 :4,$s/worf$/kirn/          von der 4. bis zur letzten Zeile ersetze worf am Zeilenende&lt;br /&gt;
                            durch kirn&lt;br /&gt;
 :1,$s/^#//                 lösche alle Kommentarzeichen&lt;br /&gt;
 :1,$s/^.orf/kirn/           ersetze alles was am Zeilenanfang ein beliebiges Zeichen hat&lt;br /&gt;
                            gefolgt von einem orf durch kirn&lt;br /&gt;
 :1,$s/^[A-Z]orf/kirn/g     suche nach einem Großbuchstaben am Anfang der Zeile&lt;br /&gt;
                            gefolgt von einem orf und ersetze durch kirn&lt;br /&gt;
 :1,$s/^M[ae][iy]e*r/kirn/  suche alles, was am Anfang der Zeile ein großes M enthält,&lt;br /&gt;
                            gefolgt von einem a oder e , gefolgt von einem i oder y ,&lt;br /&gt;
                            gefolgt von einem e , welches 0 oder N mal vorkommen kann,&lt;br /&gt;
                            gefolgt von einem r und ersetze es durch kirn&lt;br /&gt;
&lt;br /&gt;
==Reguläre Ausdrücke==&lt;br /&gt;
&lt;br /&gt;
{| Border=1 Cellpadding=2&lt;br /&gt;
|c&lt;br /&gt;
|Ein einzelner Buchstabe passt auf sich selbst&lt;br /&gt;
|-&lt;br /&gt;
|.&lt;br /&gt;
|Ein Punkt passt auf jedes Zeichen außer auf das Zeilenende&lt;br /&gt;
|-&lt;br /&gt;
|*&lt;br /&gt;
|Das dem Operator * vorangehende Muster kann 0 oder öfter vorkommen&lt;br /&gt;
|-&lt;br /&gt;
|^&lt;br /&gt;
|(Caret) passt auf den Zeilenanfang&lt;br /&gt;
|-&lt;br /&gt;
|$&lt;br /&gt;
|Passt auf das Zeilenende&lt;br /&gt;
|-&lt;br /&gt;
|\&lt;br /&gt;
|Das folgende Sonderzeichen wird entwertet&lt;br /&gt;
|-&lt;br /&gt;
|[...]&lt;br /&gt;
|Passt auf &amp;quot;genau&amp;quot; eins in [...] angebenen Zeichen&lt;br /&gt;
|-&lt;br /&gt;
|[^...]&lt;br /&gt;
|Passt auf &amp;quot;genau&amp;quot; ein Zeichen welches nicht in [...] angebenen ist&lt;br /&gt;
|-&lt;br /&gt;
|\&amp;lt;&lt;br /&gt;
|Passt auf den Wortanfang&lt;br /&gt;
|-&lt;br /&gt;
|\&amp;gt;&lt;br /&gt;
|Passt auf das Wortende&lt;br /&gt;
|-&lt;br /&gt;
|\+&lt;br /&gt;
|Das dem Operator \+ vorangehende Muster kann 1 oder öfter vorkommen&lt;br /&gt;
|-&lt;br /&gt;
|&amp;amp;&lt;br /&gt;
|Setzt das gefunden Suchmuster ein&lt;br /&gt;
|-&lt;br /&gt;
|\(...\)&lt;br /&gt;
|Speichert den Text auf den das Suchmuster passt zur späteren Verwendung&lt;br /&gt;
|-&lt;br /&gt;
|\n&lt;br /&gt;
|Setzt das vorangehende, mit \(...\) Gefundene wieder ein&lt;br /&gt;
|-&lt;br /&gt;
|(...)&lt;br /&gt;
|Gruppiert Auswahlmöglichkeiten&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;nowiki&amp;gt;|&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
|Trennt Auswahlmöglichkeiten&lt;br /&gt;
|-&lt;br /&gt;
|\b&lt;br /&gt;
|Passt auf den Anfang oder das Ende eines Wortes&lt;br /&gt;
|-&lt;br /&gt;
|\B&lt;br /&gt;
|Symbolisiert den Raum innerhalb eines Wortes&lt;br /&gt;
|-&lt;br /&gt;
|\w&lt;br /&gt;
|Passt auf alle alphanumerischen Zeichen [A-Za-z0-9]&lt;br /&gt;
|-&lt;br /&gt;
|\W&lt;br /&gt;
|Passt auf alle nichtalphanumerischen Zeichen [^A-Za-z0-9]&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Die Rangfolge der Operatoren(von der höchsten zur niedrigsten)&lt;br /&gt;
:(, ), ?, *, + | .&lt;br /&gt;
&lt;br /&gt;
Die anderen Operatoren sind mit den anderen Buchstaben gleichrangig.&lt;br /&gt;
&lt;br /&gt;
===Beispiel zum Suchen===&lt;br /&gt;
&lt;br /&gt;
 Suchmuster               Passt auf&lt;br /&gt;
 ^Tuxer                   Tuxer am Zeilenanfang&lt;br /&gt;
 [tT]uxer                 Tuxer oder tuxer&lt;br /&gt;
 80[23]?86                8086, 80286 oder 80386&lt;br /&gt;
&lt;br /&gt;
===grep===&lt;br /&gt;
&lt;br /&gt;
Mit grep ist es möglich, in Dateien nach regulären Ausdrücken zu suchen. Wenn&lt;br /&gt;
eine Übereinstimmung gefunden wird, wird die komplette Zeile auf die&lt;br /&gt;
Standardausgabe geschrieben. grep kann auch von STDIN lesen.Es ist&lt;br /&gt;
empfehlenswert, sich anzugwöhnen ,das Suchmuster in Anführungszeichen zu&lt;br /&gt;
schreiben. Es gibt 3 Arten fgrep = fastgrep , grep und egrep egrep&lt;br /&gt;
&lt;br /&gt;
Beispiel:&lt;br /&gt;
&lt;br /&gt;
 root@zero:~# cat text&lt;br /&gt;
 quatsch&lt;br /&gt;
 quatsch&lt;br /&gt;
 quatsch&lt;br /&gt;
 wichtig&lt;br /&gt;
 quatsch&lt;br /&gt;
 root@zero:~# grep wichtig text&lt;br /&gt;
 wichtig&lt;br /&gt;
 root@zero:~# &lt;br /&gt;
&lt;br /&gt;
 -c                   meldet nur die Gesamtzahl der Fundstellen&lt;br /&gt;
 -v                   zeigt nur Zeilen, die »Ausdruck« nicht enthalten&lt;br /&gt;
 -i                   ignoriert Groß- und Kleinschreibung&lt;br /&gt;
 -l                    meldet nur Dateinamen mit Fundstellen&lt;br /&gt;
 -n                   listet Zeilennummern zu jeder Fundstelle&lt;br /&gt;
 -f                   Dateiname »Dateiname« enthält die Such-Ausdrücke&lt;br /&gt;
 -E                   ist ein erweiterter regulärer Ausdruck (egrep)&lt;br /&gt;
 -F                   (Muster, Ausdruck) ist ein Muster (String) (fgrep)&lt;br /&gt;
 -b                   listet auch die Position der Fundstellen&lt;br /&gt;
 -C    Anzahl         Anzahl von Zeilen werden nach der Fundstelle ausgegeben&lt;br /&gt;
 -B    Anzahl         Anzahl von Zeilen werden vor der Fundstelle ausgegeben&lt;br /&gt;
 -r                   Durchsucht Verzeichnisse rekursiv&lt;br /&gt;
&lt;br /&gt;
==Useridendifikation==&lt;br /&gt;
===/etc/passwd===&lt;br /&gt;
====Beschreibung====&lt;br /&gt;
passwd ist eine ASCII-Datei, die eine Liste der Benutzer des Systems und deren&lt;br /&gt;
Passwörter enthält. Die Passwortdatei sollte für alle Benutzer lesbar sein, was für&lt;br /&gt;
dieVerschlüsselung notwendig ist; aber nur vom Superuser beschreibbar. Wenn&lt;br /&gt;
Sie eine neue Kennung einrichten, lassen Sie das Passwort-Feld in der Datei frei&lt;br /&gt;
und benutzen Sie passwd(1), um dem System ein Passwort für die neue Kennung&lt;br /&gt;
mitzuteilen.&lt;br /&gt;
&lt;br /&gt;
Die Datei /etc/passwd enthält einen Eintrag pro Zeile mit dem Format:&lt;br /&gt;
login_name:passwd:UID:GID:user_name:directory:shell&lt;br /&gt;
====Die Bedeutung der Felder:====&lt;br /&gt;
# login_name Kennung des Benutzers auf dem System.&lt;br /&gt;
# password   Hier steht bei Shadowsystemen ein x. Die Passwörter sind in der Datei /etc/shadow&lt;br /&gt;
# UID        Die numerische Benutzernummer.&lt;br /&gt;
#  GID        Die numerische Gruppennummer des Benutzers.&lt;br /&gt;
# user_name Ein optionales Kommentarfeld, oft benutzt für den vollen Namen des Benutzers und weitere Informationen (Telefon, Raum-Nummer etc.).&lt;br /&gt;
# directory  Das Heimatverzeichnis $HOME des Benutzers.&lt;br /&gt;
# shell      Das Programm, das beim Einloggen gestartet werden soll (falls nicht nötig, benutzen Sie /bin/bash).&lt;br /&gt;
&lt;br /&gt;
===/etc/group===&lt;br /&gt;
====Beschreibung====&lt;br /&gt;
etc/group ist eine ASCII Datei, die Gruppen definiert, zu denen Benutzer&lt;br /&gt;
gehören. Es gibt nur einen Eintrag pro Zeile; jede Zeile hat folgendes Format:&lt;br /&gt;
         GruppenName:Passwort:GruppenKennung:BenutzerListe&lt;br /&gt;
Beschreibung der Felder:&lt;br /&gt;
#     GruppenName      Die Bezeichnung der Gruppe.&lt;br /&gt;
#     Passwort         Das (verschlüsselte) Gruppen-Passwort. Wenn dieses Feld leer ist, wird kein Passwort benötigt.&lt;br /&gt;
#     GruppenKennung Die numerische Identifikation der Gruppe.&lt;br /&gt;
#     BenutzerListe    Alle Namen der Mitglieder, getrennt durch Kommas.&lt;br /&gt;
&lt;br /&gt;
===/etc/shadow===&lt;br /&gt;
====Beschreibung====&lt;br /&gt;
shadow beinhaltet Informationen zu den verschlüsselten Passwörten, zu den&lt;br /&gt;
Benutzerzugängen und weitere Informationen zur Laufzeit der Passwörter.&lt;br /&gt;
 Name:Passwort:Letzte Änderung:Mintage:Maxtage:Warntage:Inaktiv:Ablauf&lt;br /&gt;
#    Der Loginname&lt;br /&gt;
#    verschlüsseltes Passwort &lt;br /&gt;
&amp;lt;nowiki&amp;gt;*&amp;lt;/nowiki&amp;gt; bedeutet Benutzer kann sich nicht einlogen&lt;br /&gt;
! bedeutet Benutzer hat kein Passwort gesetzt&lt;br /&gt;
#    Tage seit dem 1 Januar 1970 an dem das Passwort letztmals geändert wurde&lt;br /&gt;
#    Tage, die das Passwort behalten werden muss, bevor es wieder geändert werden kann&lt;br /&gt;
#     Die Anzahl der Tage, nach denen der Benutzer das Passwort wieder ändern muss&lt;br /&gt;
#    Anzahl der Tage bevor das Passwort abläuft und der Benutzer gewarnt wird&lt;br /&gt;
#    Wenn der Zugang diese Anzahl von Tagen nicht benutzt wird, wird der Zugang gesperrt&lt;br /&gt;
#    Tag seit dem 1 Januar 1970, an dem der Zugang gesperrt wird&lt;br /&gt;
#    Reserviertes Feld&lt;br /&gt;
&lt;br /&gt;
Die Datei sollte aus Sicherheitgründen nicht für einen normalen Benutzer lesbar&lt;br /&gt;
sein.&lt;br /&gt;
&lt;br /&gt;
==Programme zur Userverwaltung==&lt;br /&gt;
===useradd===&lt;br /&gt;
User anlegen&lt;br /&gt;
 root@zero:~# useradd -m -u 1011 -g users -G admin -d /home/erwin -s /bin/bash -c &amp;quot;Erwin Lehman&amp;quot;  erwin&lt;br /&gt;
{| border=1 cellpadding=2&lt;br /&gt;
|&amp;quot;-m&amp;quot;&lt;br /&gt;
|Lege Homedirectory an&lt;br /&gt;
|-&lt;br /&gt;
|&amp;quot;-u 1011&amp;quot;&lt;br /&gt;
|Userid wird zugeordnet&lt;br /&gt;
|-&lt;br /&gt;
|&amp;quot;-g users&amp;quot;&lt;br /&gt;
|Primäre Gruppe wird zugeordnet&lt;br /&gt;
|-&lt;br /&gt;
|&amp;quot;-G admin&amp;quot;&lt;br /&gt;
|Sekunbdäre Gruppe wird zugeordnet&lt;br /&gt;
|-&lt;br /&gt;
|&amp;quot;-d /home/erwin/&amp;quot;&lt;br /&gt;
|Name des Homedirectory&lt;br /&gt;
|-&lt;br /&gt;
|&amp;quot;-s /bin/bash&amp;quot;&lt;br /&gt;
|Bash wird zugeordnet&lt;br /&gt;
|- &lt;br /&gt;
|&amp;quot;-c Erwin Lehman&amp;quot;&lt;br /&gt;
|Kommentarfeld&lt;br /&gt;
|-&lt;br /&gt;
|&amp;quot;erwin&amp;quot; &lt;br /&gt;
|Name des Users&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Defaulteinstellungen anzeigen&lt;br /&gt;
 root@zero:~# useradd -D&lt;br /&gt;
 GROUP=100&lt;br /&gt;
 HOME=/home&lt;br /&gt;
 INACTIVE=-1&lt;br /&gt;
 EXPIRE=&lt;br /&gt;
 SHELL=/bin/sh&lt;br /&gt;
 SKEL=/etc/skel&lt;br /&gt;
 CREATE_MAIL_SPOOL=no&lt;br /&gt;
&lt;br /&gt;
Defaulteinstellungen ändern&lt;br /&gt;
 useradd -D -s /bin/bash&lt;br /&gt;
&lt;br /&gt;
Konfigurationsdatei&lt;br /&gt;
 root@zero:~# cat /etc/default/useradd &lt;br /&gt;
 SHELL=/bin/bash&lt;br /&gt;
 GROUP=100&lt;br /&gt;
 HOME=/home&lt;br /&gt;
 INACTIVE=-1&lt;br /&gt;
 EXPIRE=&lt;br /&gt;
 SKEL=/etc/skel&lt;br /&gt;
 CREATE_MAIL_SPOOL=no&lt;br /&gt;
&lt;br /&gt;
===usermod===&lt;br /&gt;
User modifizieren&lt;br /&gt;
 root@zero:~# usermod -l fritz -s /bin/sh -G admin,video erwin&lt;br /&gt;
{| border=1 cellpadding=2&lt;br /&gt;
|&amp;quot;-l fritz&amp;quot;&lt;br /&gt;
|Neuer Username&lt;br /&gt;
|-&lt;br /&gt;
|&amp;quot;-s /bin/sh&amp;quot;&lt;br /&gt;
|Neue Shell&lt;br /&gt;
|-&lt;br /&gt;
|&amp;quot;-G admin, video&amp;quot;&lt;br /&gt;
|Sekunbdäre Gruppen werden zugeordnet&lt;br /&gt;
|-&lt;br /&gt;
|&amp;quot;erwin&amp;quot; &lt;br /&gt;
|Name des Users&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
===userdel===&lt;br /&gt;
User inklusive Homedirectory löschen&lt;br /&gt;
 root@zero:~# userdel -r fritz&lt;br /&gt;
&lt;br /&gt;
===passwd===&lt;br /&gt;
Rootpasswort ändern&lt;br /&gt;
 root@zero:~# passwd &lt;br /&gt;
 Geben Sie ein neues UNIX Passwort ein:'''sysadm''' &lt;br /&gt;
 Geben Sie das neue UNIX Passwort erneut ein:'''sysadm''' &lt;br /&gt;
 passwd: Passwort erfolgreich geändert&lt;br /&gt;
&lt;br /&gt;
Passwort von tux ändern&lt;br /&gt;
 root@zero:~# passwd tux&lt;br /&gt;
 Geben Sie ein neues UNIX Passwort ein:'''suxer''' &lt;br /&gt;
 Geben Sie das neue UNIX Passwort erneut ein:'''suxer'''&lt;br /&gt;
 passwd: Passwort erfolgreich geändert&lt;br /&gt;
&lt;br /&gt;
Minimale und Maximale Gültigkeit des Passwortes von tux festlegen&lt;br /&gt;
 root@zero:~# passwd -n 5 -x 120 tux&lt;br /&gt;
&lt;br /&gt;
===groupadd===&lt;br /&gt;
 root@zero:~# groupadd -f -g 2001 xinuxer&lt;br /&gt;
{| border=1 cellpadding=2&lt;br /&gt;
|&amp;quot;-f&amp;quot;&lt;br /&gt;
|Überschreibe bestehende Gruppe&lt;br /&gt;
|-&lt;br /&gt;
|&amp;quot;-g 2001&amp;quot;&lt;br /&gt;
|GID der Gruppe&lt;br /&gt;
|-&lt;br /&gt;
|&amp;quot;xinuxer&amp;quot; &lt;br /&gt;
|Name des Gruppe&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==chmod==&lt;br /&gt;
Die Syntax des Befehls chmod lautet:&lt;br /&gt;
&lt;br /&gt;
'''chmod''' WerWieWas [,WerWieWas,.....] Dateiliste&lt;br /&gt;
&lt;br /&gt;
oder&lt;br /&gt;
&lt;br /&gt;
'''chmod''' Oktalzahl Dateiliste&lt;br /&gt;
&lt;br /&gt;
Durch WerWieWas bzw. Oktalzahl wird die Rechtetabelle definiert. Innerhalb von&lt;br /&gt;
WerWieWas darf es kein Leerzeichen geben. Wer bezeichnet den Benutzerkreis,&lt;br /&gt;
dem man Rechte gibt, Wie die Art, in der die Rechte gegeben werden und Was die&lt;br /&gt;
Rechte als solche. Im einzelnen können folgende Kürzel benutzt werden:&lt;br /&gt;
&lt;br /&gt;
Für Wer kann eines der folgenden Kürzel oder eine Kombination davon stehen:&lt;br /&gt;
 u                   (user) Rechte für den Dateibesitzer&lt;br /&gt;
 g                   (group) Rechte für die Gruppe&lt;br /&gt;
 o                   (others) Rechte für alle anderen Benutzer&lt;br /&gt;
 a                   (all) Rechte für alle Benutzer&lt;br /&gt;
Für Wie steht eines der folgenden Kürzel:&lt;br /&gt;
 +                   Die Rechte werden zu den vorhandenen zusätzlich vergeben&lt;br /&gt;
 -                   Die im Folgenden genannten Rechte werden entzogen&lt;br /&gt;
 =                   Die im Folgenden genannten Rechte ersetzen die bisherigen&lt;br /&gt;
Für Was steht eines der folgenden Kürzel:&lt;br /&gt;
 r                   (read) lesen&lt;br /&gt;
 w                   (write) schreiben&lt;br /&gt;
 x                   (execute) ausführen&lt;br /&gt;
oder diese Sonderformen&lt;br /&gt;
 s                   (usersbit) Programm läuft unter der UID des Besitzers&lt;br /&gt;
 s                   (groupsbit)Programm läuft unter der GID des GRUPPE&lt;br /&gt;
 t                   (stickybit) Dateien im Verzeichnis darf nur Besitzer löschen&lt;br /&gt;
&lt;br /&gt;
===Beispiel===&lt;br /&gt;
Setze für alle Schreib- und Leserecht&lt;br /&gt;
 xinux@zero:~$ chmod a=rw test &lt;br /&gt;
 xinux@zero:~$ ls -l test &lt;br /&gt;
 -rw-rw-rw- 1 xinux xinux 0 2009-06-16 12:01 test&lt;br /&gt;
 xinux@zero:~$ &lt;br /&gt;
&lt;br /&gt;
Erteile Besitzer Ausführungsrecht&lt;br /&gt;
 xinux@zero:~$ chmod u+x test ; ls -l test &lt;br /&gt;
 -rwxrw-rw- 1 xinux xinux 0 2009-06-16 12:01 test&lt;br /&gt;
 xinux@zero:~$ &lt;br /&gt;
&lt;br /&gt;
===chmod oktale Schreibweise===&lt;br /&gt;
 Specialrights        User           Group         Other&lt;br /&gt;
 usbit gsbit sticky    r    w   x     r   w   x     r   w   x&lt;br /&gt;
   1     1      1      1    1   1     1   1   1     1   1   1&lt;br /&gt;
   0     0      0      0    0   0     0   0   0     0   0   0&lt;br /&gt;
 Oktale Wertigkeit pro Recht&lt;br /&gt;
   4     2       1     4    2   1     4   2   1     4   2   1&lt;br /&gt;
&lt;br /&gt;
===Beispiele===&lt;br /&gt;
 xinux@zero:~$ chmod 751 test ; ls -l test&lt;br /&gt;
 -rwxr-x--x 1 xinux xinux 0 2009-06-16 12:01 test&lt;br /&gt;
 xinux@zero:~$ &lt;br /&gt;
&lt;br /&gt;
 xinux@zero:~$ chmod 4770 test ; ls -l test&lt;br /&gt;
 -rwsrwx--- 1 xinux xinux 0 2009-06-16 12:01 test&lt;br /&gt;
 xinux@zero:~$ &lt;br /&gt;
&lt;br /&gt;
 xinux@zero:~$ chmod 0 test ; ls -l test &lt;br /&gt;
 ---------- 1 xinux xinux 0 2009-06-16 12:01 test&lt;br /&gt;
&lt;br /&gt;
===chmod Optionen===&lt;br /&gt;
 -c   (changes) es werden nur die Dateien angezeigt, deren Zugriffsrechte tatsächlich verändert werden&lt;br /&gt;
 -f   (silent, quiet) Fehlermeldungen wegen fehlgeschlagener Änderungsversuche werden unterdrückt&lt;br /&gt;
 -v   (verbose) alle Aktionen werden angezeigt&lt;br /&gt;
 -R   (recursive) die Zugriffsrechte aller Dateien in den Unterverzeichnissen werden ebenfalls geändert&lt;br /&gt;
&lt;br /&gt;
Theoretisch sind alle Kombinationen der Zugriffsrechte denkbar, aber der&lt;br /&gt;
Eigentümer einer Datei darf diese immer lesen, selbst wenn das Lesebit nicht&lt;br /&gt;
gesetzt ist. Genauso macht es wenig Sinn, eine gewöhnliche Textdatei als&lt;br /&gt;
ausführbar zu setzen; die Shell wird damit nichts anfangen können. Ein x für ein&lt;br /&gt;
Verzeichnis gibt an, dass in dieses gewechselt werden kann.&lt;br /&gt;
&lt;br /&gt;
Rechte sind verbindlich&lt;br /&gt;
&lt;br /&gt;
Interessant ist auch ein Konstrukt folgender Art&lt;br /&gt;
 -rwx---rwx&lt;br /&gt;
&lt;br /&gt;
das angibt, dass mit der Datei alles angestellt werden kann, außer durch Nutzer der&lt;br /&gt;
Gruppe. Versucht irgend jemand, der nicht der Gruppe des Eigentümers angehört,&lt;br /&gt;
die Datei zu modifizieren, wird ihm dies gelingen, einem Gruppenmitglied bleibt&lt;br /&gt;
dies versagt, obwohl er ja gleichzeitig ein &amp;quot;Anderer&amp;quot; ist. D.h. die Rechte der&lt;br /&gt;
Gruppe sind verbindlicher, als die Rechte der anderen!&lt;br /&gt;
&lt;br /&gt;
===Bedeutungen der Zugriffsarten===&lt;br /&gt;
====Dateien====&lt;br /&gt;
* r: Der Inhalt der Datei kann gelesen und damit auch kopiert werden. &lt;br /&gt;
 root@zero:~# cat test&lt;br /&gt;
 Dies ist eine Testdatei&lt;br /&gt;
  &lt;br /&gt;
 root@zero:~# cp test backup&lt;br /&gt;
&lt;br /&gt;
* w: Der Inhalt der Datei darf verändert werden. Ob die Datei gelöscht werden kann ist&lt;br /&gt;
keine Eigenschaft der Datei, sondern des Verzeichnisses, indem sich die Datei befindet.&lt;br /&gt;
 root@zero:~# cat &amp;gt; test&lt;br /&gt;
 Hier steht jetzt was anderes&lt;br /&gt;
 ^C&lt;br /&gt;
 root@zero:~# cat test&lt;br /&gt;
 Hier steht jetzt was anderes&lt;br /&gt;
  &lt;br /&gt;
 xinux@zero:~$ ls -ld verzeichnis/&lt;br /&gt;
 dr-xr-xr-x 2 xinux xinux 4096 2009-06-18 11:16 verzeichnis/&lt;br /&gt;
 xinux@zero:~/verzeichnis$ rm text&lt;br /&gt;
 rm: Entfernen von „text“ nicht möglich: Permission denied&lt;br /&gt;
&lt;br /&gt;
* x: Ausführrecht für Programme und Skripte&lt;br /&gt;
 xinux@zero:~$ ./programm&lt;br /&gt;
 -bash: ./programm: Permission denied&lt;br /&gt;
 xinux@zero:~$ chmod +x programm&lt;br /&gt;
 xinux@zero:~$ ./programm&lt;br /&gt;
 Test&lt;br /&gt;
  test&lt;br /&gt;
&lt;br /&gt;
====Verzeichnisse====&lt;br /&gt;
* r: Die Einträge in dem Verzeichnis sind lesbar.&lt;br /&gt;
Leserecht von verzeichnis/ entziehen&lt;br /&gt;
 xinux@zero:~$ chmod a-r verzeichnis/&lt;br /&gt;
 xinux@zero:~$ ls verzeichnis/&lt;br /&gt;
 ls: Öffnen von Verzeichnis verzeichnis/ nicht möglich: Permission denied&lt;br /&gt;
Leserecht für Benutzer und Gruppe vergeben&lt;br /&gt;
 xinux@zero:~$ chmod a+r verzeichnis/&lt;br /&gt;
 xinux@zero:~$ ls verzeichnis/&lt;br /&gt;
 text&lt;br /&gt;
&lt;br /&gt;
* w: Die Einträge in dem Verzeichnis können geändert werden. &lt;br /&gt;
Neue Datei erstellen&lt;br /&gt;
 xinux@zero:~$ touch neu&lt;br /&gt;
 xinux@zero:~$ ls neu&lt;br /&gt;
 neu&lt;br /&gt;
&lt;br /&gt;
Datei löschen&lt;br /&gt;
 xinux@zero:~$ rm neu&lt;br /&gt;
 xinux@zero:~$ ls neu&lt;br /&gt;
 ls: Zugriff auf neu nicht möglich: No such file or directory&lt;br /&gt;
&lt;br /&gt;
* x: Der Name des Verzeichnisses kann in einem Pfadnamen erscheinen.&lt;br /&gt;
Verzeichnis ohne x Recht&lt;br /&gt;
 xinux@zero:~$ chmod a-x verzeichnis/&lt;br /&gt;
Wechseln in Verzeichnis mangels x-Recht nicht möglich&lt;br /&gt;
 xinux@zero:~$ cd verzeichnis/&lt;br /&gt;
 -bash: cd: verzeichnis/: Permission denied&lt;br /&gt;
x-Recht vergeben&lt;br /&gt;
 xinux@zero:~$ chmod a+x verzeichnis/&lt;br /&gt;
damit Wechsel in Verzeichnis möglich&lt;br /&gt;
 xinux@zero:~$ cd verzeichnis/&lt;br /&gt;
 xinux@zero:~/verzeichnis$ pwd&lt;br /&gt;
 /home/xinux/verzeichnis&lt;br /&gt;
&lt;br /&gt;
====umask====&lt;br /&gt;
Neue Dateien und Verzeichnisse werden mit ein und denselben Zufriffsrechten erzeugt.&lt;br /&gt;
 xinux@zero:~$ mkdir text&lt;br /&gt;
 xinux@zero:~$ touch textdat&lt;br /&gt;
 xinux@zero:~$ ls -ld text*&lt;br /&gt;
 drwxr-xr-x 2 xinux xinux 4096 2009-06-18 11:37 text&lt;br /&gt;
 -rw-r--r-- 1 xinux xinux    0 2009-06-18 11:37 textdat&lt;br /&gt;
&lt;br /&gt;
Zuständig für dieses Verhalten ist die sogenannte umask, die oft in der Datei&lt;br /&gt;
/etc/profile auf den Wert 022 voreingestellt ist. Zusätzlich wird noch eine&lt;br /&gt;
Maximalmaske benötigt, die sich für Verzeichnisse und andere Dateien&lt;br /&gt;
unterscheidet. Die bei der Erzeugung gesetzten Rechte entstehen nun, indem von&lt;br /&gt;
der Maximalmaske der durch die umask vorgegebene Wert subtrahiert wird:&lt;br /&gt;
&lt;br /&gt;
{| border=1 cellpadding=2&lt;br /&gt;
!&lt;br /&gt;
! Dateien&lt;br /&gt;
! Verzeichnisse&lt;br /&gt;
|-&lt;br /&gt;
| Systemvorgabe&lt;br /&gt;
| 666&lt;br /&gt;
| 777&lt;br /&gt;
|-&lt;br /&gt;
| -umask&lt;br /&gt;
| 022&lt;br /&gt;
| 022&lt;br /&gt;
|-&lt;br /&gt;
| Ergebnis&lt;br /&gt;
| 644&lt;br /&gt;
| 755&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
 xinux@zero:~$ grep umask /etc/profile&lt;br /&gt;
 umask 022&lt;br /&gt;
&lt;br /&gt;
==Gruppenzugehörigkeit==&lt;br /&gt;
===newgrp===&lt;br /&gt;
Ändert die Gruppenzugehörigkeit eines Benutzers auf die angegebene Gruppe. Wenn keine Gruppe angegeben wird, wird die &lt;br /&gt;
Anmeldegruppe des Benutzers verwendet. Die neue Gruppe wird anschließend fü Zugriffskontrollen verwendet.&lt;br /&gt;
&lt;br /&gt;
 newgrp Gruppenname&lt;br /&gt;
&lt;br /&gt;
 root@zero:~# newgrp hacker&lt;br /&gt;
 root@zero:~# id&lt;br /&gt;
 uid=0(root) gid=1006(hacker) Gruppen=0(root),1006(hacker)&lt;br /&gt;
&lt;br /&gt;
===chgrp===&lt;br /&gt;
Verändert die Besitzugehörigkeit zu der angegebenen Gruppe&lt;br /&gt;
&lt;br /&gt;
 chgrp [Optionen] Gruppe Datei(en)&lt;br /&gt;
&lt;br /&gt;
Optionen:&lt;br /&gt;
 -c Zeigt Veränderungen an&lt;br /&gt;
 -f Unterdrückt die meisten Fehlermeldungen&lt;br /&gt;
 -R Verändert Dateien und Verzeichnisse rekursiv&lt;br /&gt;
 -v Gibt geschwätzige Ausgabe aus.&lt;br /&gt;
&lt;br /&gt;
 root@zero:~# ls -l&lt;br /&gt;
 ...&lt;br /&gt;
 d-wx--x--x  3 root root 4096 2009-06-18 13:34 verzeichnis&lt;br /&gt;
 &lt;br /&gt;
 root@zero:~# chgrp -R xinux verzeichnis/&lt;br /&gt;
 root@zero:~# ls -l&lt;br /&gt;
 ...&lt;br /&gt;
 d-wx--x--x  3 root xinux 4096 2009-06-18 13:34 verzeichnis&lt;br /&gt;
&lt;br /&gt;
 xinux@zero:~$ cd /root/verzeichnis/&lt;br /&gt;
 xinux@zero:/root/verzeichnis$ pwd&lt;br /&gt;
 /root/verzeichnis&lt;br /&gt;
&lt;br /&gt;
===chown===&lt;br /&gt;
Ändert den Eigentümer von einer oder mehreren Dateien in den angegebenen Benutzer. &lt;br /&gt;
chown erlaubt ebenfalls das Ändern der Gruppeneigentümreschaft. Nur der aktuelle Eigentümer einer&lt;br /&gt;
Datei oder der Superuser (root) darf die Eigentumsverhältnisse ändern.&lt;br /&gt;
&lt;br /&gt;
 chown [Optionen] Benutzer(:Gruppe) Dateien&lt;br /&gt;
&lt;br /&gt;
Optionen:&lt;br /&gt;
 -c Gibt Informationen über die veränderten Dateien aus&lt;br /&gt;
 --dereference Symbolischen Links folgen&lt;br /&gt;
 -v Gibt Informationen über alle Dateien aus, die chown zu ändern versucht, egal, ob die Änderung erfolgt ist oder nicht&lt;br /&gt;
 -R Geht rekursiv durch alle Unterverzeichnisse und führt die Änderungen durch. &lt;br /&gt;
&lt;br /&gt;
 root@zero:~# chown -R xinux.xinux verzeichnis/&lt;br /&gt;
 root@zero:~# ls -l&lt;br /&gt;
 insgesamt 12&lt;br /&gt;
 drwx------ 13 root  root  4096 2009-04-21 15:11 profile&lt;br /&gt;
 --w-------  1 root  root     0 2009-06-18 11:13 test&lt;br /&gt;
 -rw-r--r--  1 root  root    40 2009-06-18 12:04 text&lt;br /&gt;
 drwxrwx--x  3 xinux xinux 4096 2009-06-18 13:39 verzeichnis&lt;br /&gt;
 &lt;br /&gt;
 root@zero:~# chown -R -c xinux.xinux verzeichnis/&lt;br /&gt;
 &lt;br /&gt;
 root@zero:~# chown -R -v xinux.xinux verzeichnis/&lt;br /&gt;
 Eigentümer von „verzeichnis/01“ als xinux:xinux erhalten&lt;br /&gt;
 Eigentümer von „verzeichnis/test“ als xinux:xinux erhalten&lt;br /&gt;
 Eigentümer von „verzeichnis/“ als xinux:xinux erhalten&lt;br /&gt;
&lt;br /&gt;
==Eingabe/Ausgabe==&lt;br /&gt;
Standardeingabe (0): Laufende Programme erwarten von hier ihre Eingaben (normalerweise handelt es sich um die Tastatur).&lt;br /&gt;
&lt;br /&gt;
Standardausgabe (1): Programme schreiben auf diese ihre Ausgaben (Bildschirm).&lt;br /&gt;
&lt;br /&gt;
Standardfehlerausgabe (2) : Fehlerausgaben landen hier (Bildschirm, aber nur die aktive Konsole).&lt;br /&gt;
&lt;br /&gt;
[[Bild:std.jpg]]&lt;br /&gt;
&lt;br /&gt;
===cat===&lt;br /&gt;
Das Programm cat liest von STDIN und gibt es STDOUT wieder aus&lt;br /&gt;
&lt;br /&gt;
Einlesen der Datei text&lt;br /&gt;
 root@zero:~# cat &amp;lt; text&lt;br /&gt;
 wichtig&lt;br /&gt;
&lt;br /&gt;
Schreiben in die Datei text, dies überschreibt den bisherigen Inhalt der Datei&lt;br /&gt;
 root@zero:~# cat &amp;gt; text&lt;br /&gt;
 sogar noch wichtiger &lt;br /&gt;
 &lt;br /&gt;
Ausgeben der Datei text&lt;br /&gt;
 root@zero:~# cat text &lt;br /&gt;
 sogar noch wichtiger&lt;br /&gt;
&lt;br /&gt;
Lesen aus der Datei text und schreiben in die Datei neuertext&lt;br /&gt;
 root@zero:~# cat &amp;lt; text &amp;gt; neuertext&lt;br /&gt;
 root@zero:~# cat neuertext&lt;br /&gt;
 sogar noch wichtiger&lt;br /&gt;
&lt;br /&gt;
Anhängen der Ausgabe von date an die Datei neuertext&lt;br /&gt;
 root@zero:~# date &amp;gt;&amp;gt; neuertext&lt;br /&gt;
 root@zero:~# cat neuertext&lt;br /&gt;
 sogar noch wichtiger&lt;br /&gt;
 Do 18. Jun 14:08:58 CEST 2009&lt;br /&gt;
&lt;br /&gt;
Umleiten des Standardfehlerkanals nach error&lt;br /&gt;
 root@zero:~# rm sux 2&amp;gt; error&lt;br /&gt;
 root@zero:~# more error&lt;br /&gt;
 rm: Entfernen von „sux“ nicht möglich: No such file or directory&lt;br /&gt;
&lt;br /&gt;
===Umleitungen===&lt;br /&gt;
Nacheinander auszuführende Kommandos&lt;br /&gt;
 root@zero:~# pwd; date&lt;br /&gt;
 /root&lt;br /&gt;
 Do 18. Jun 14:13:05 CEST 2009&lt;br /&gt;
 &lt;br /&gt;
Übergeben der Ausgabe von tail als Eingabe von grep mit Hilfe der Pipe &amp;quot;|&amp;quot;&lt;br /&gt;
 root@zero:~# tail /var/log/auth.log | grep xinux&lt;br /&gt;
 Jun 18 13:52:33 zero nss_wins[11433]: pam_unix(login:session): session closed for user xinux&lt;br /&gt;
&lt;br /&gt;
Übergeben der letzten 100 Zeilen von syslog als Eingabe von grep&lt;br /&gt;
 root@zero:~# tail /var/log/syslog -n 100 | grep error&lt;br /&gt;
 Jun 18 09:30:54 zero kernel: [154384.692135] end_request: I/O error, dev fd0, sector 0&lt;br /&gt;
 Jun 18 09:30:54 zero kernel: [154384.712137] end_request: I/O error, dev fd0, sector 0&lt;br /&gt;
&lt;br /&gt;
==tr==&lt;br /&gt;
tr ist ein Programm um Zeichen zu übersetzen. Dies betrifft nur die Ausgabe, die Datei selbst bleibt unverändert.&lt;br /&gt;
&lt;br /&gt;
Ersetzt Kleinbuchstaben durch Großbuchstaben aus der Datei text&lt;br /&gt;
 root@zero:~# tr &amp;quot;a-z&amp;quot; &amp;quot;A-Z&amp;quot; &amp;lt; text&lt;br /&gt;
 SOGAR NOCH WICHTIGER&lt;br /&gt;
 123&lt;br /&gt;
 34&lt;br /&gt;
 4711&lt;br /&gt;
 TEST&lt;br /&gt;
&lt;br /&gt;
Ersetzt alle Zahlen durch X&lt;br /&gt;
 root@zero:~# tr &amp;quot;0-9&amp;quot; &amp;quot;X&amp;quot; &amp;lt; text&lt;br /&gt;
 sogar noch wichtiger&lt;br /&gt;
 XXX&lt;br /&gt;
 XX&lt;br /&gt;
 XXXX&lt;br /&gt;
 test&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
 root@zero:~# cat &amp;gt; test&lt;br /&gt;
 +++++&lt;br /&gt;
 ###&lt;br /&gt;
 1111&lt;br /&gt;
&lt;br /&gt;
-s löscht mehrfach kommende Zeichen&lt;br /&gt;
 root@zero:~# tr '''-s''' &amp;quot;+&amp;quot; &amp;lt; test&lt;br /&gt;
 +&lt;br /&gt;
 ###&lt;br /&gt;
 1111&lt;br /&gt;
&lt;br /&gt;
-d löscht vorkommende Zeichen &lt;br /&gt;
 root@zero:~# tr '''-d''' &amp;quot;#&amp;quot; &amp;lt; test&lt;br /&gt;
 +++++ &lt;br /&gt;
 &lt;br /&gt;
 1111&lt;br /&gt;
&lt;br /&gt;
==cut==&lt;br /&gt;
Spalten aus einer Datei schneiden. Dies betrifft nur die Ausgabe, die Datei selbst bleibt unverändert.&lt;br /&gt;
 &lt;br /&gt;
Schneidet die erste Spalte aus, der Delimiter ist : &lt;br /&gt;
 root@zero:~# cut -f 1 -d : /etc/passwd&lt;br /&gt;
 root&lt;br /&gt;
 daemon&lt;br /&gt;
 bin&lt;br /&gt;
 ...&lt;br /&gt;
 xinux&lt;br /&gt;
&lt;br /&gt;
 root@zero:~# more test&lt;br /&gt;
 1234#5678#9999&lt;br /&gt;
 &lt;br /&gt;
Schneidet die zweite Spalte aus, der Delimiter ist #&lt;br /&gt;
 root@zero:~# cut -f 2 -d &amp;quot;#&amp;quot; &amp;lt; test&lt;br /&gt;
 5678&lt;br /&gt;
&lt;br /&gt;
Schneidet bis zum 3 Zeichen ab&lt;br /&gt;
 root@zero:~$ echo S01policykit | cut -c 4-&lt;br /&gt;
 policykit&lt;br /&gt;
&lt;br /&gt;
==expand==&lt;br /&gt;
Ersetzt Tabulatorzeichen durch Folgen von Leerzeichen und schreibt das Ergebnis auf die Standardausgabe&lt;br /&gt;
 root@zero:~# expand /etc/samba/smb.conf&lt;br /&gt;
 ...&lt;br /&gt;
&lt;br /&gt;
==fmt==&lt;br /&gt;
#Setzt den Text der Dateien im Blocksatz der angegebenen Breite durch Auffüllen von Zeilen und Entfernen von Zeilenwechseln.&lt;br /&gt;
Standardgemäß werden Leerzeilen, die Position von Leerzeichen und der Einzug am Zeilenanfang erhalten. fmt versucht, &lt;br /&gt;
Zeilenumbrüche an Satzenden durchzuführen sowie sie nach dem ersten oder vor dem letzten Wort eines Satzes zu vermeiden. &lt;br /&gt;
 &lt;br /&gt;
 fmt [Optionen] [Dateien]&lt;br /&gt;
&lt;br /&gt;
Optionen&lt;br /&gt;
&lt;br /&gt;
* -p ''Präfix'': Formatiert nur Zeilen, die mit ''Präfix'' anfangen&lt;br /&gt;
 root@zero:/tmp# fmt -p '#' text&lt;br /&gt;
 #Setzt den Text der Dateien im Blocksatz der angegebenen Breite durch&lt;br /&gt;
 #Auffüllen von Zeilen und Entfernen von Zeilenwechseln.  Standardgemäß&lt;br /&gt;
 #werden Leerzeilen, die Position von Leerzeichen und der Einzug am&lt;br /&gt;
 #Zeilenanfang erhalten. fmt versucht,&lt;br /&gt;
 Zeilenumbrüche an Satzenden durchzuführen sowie sie nach dem ersten oder vor dem letzten Wort eines Satzes zu vermeiden.&lt;br /&gt;
&lt;br /&gt;
* -u : Erzwingt genau ein Leerzeichen zwischen Wörtern und zwei Leerzeichen zwischen Sätzen&lt;br /&gt;
&lt;br /&gt;
* -w ''Breite'': Setzt die Ausgabebreite auf ''Breite''&lt;br /&gt;
 root@zero:/tmp# fmt -w 30 text&lt;br /&gt;
 #Setzt den Text der Dateien&lt;br /&gt;
 im Blocksatz der angegebenen&lt;br /&gt;
 Breite durch Auffüllen&lt;br /&gt;
 von Zeilen und Entfernen&lt;br /&gt;
 von Zeilenwechseln.&lt;br /&gt;
 #Standardgemäß werden&lt;br /&gt;
 Leerzeilen, die Position von&lt;br /&gt;
 Leerzeichen und der Einzug am&lt;br /&gt;
 Zeilenanfang erhalten. fmt&lt;br /&gt;
 versucht, Zeilenumbrüche&lt;br /&gt;
 an Satzenden durchzuführen&lt;br /&gt;
 sowie sie nach dem ersten&lt;br /&gt;
 oder vor dem letzten Wort&lt;br /&gt;
 eines Satzes zu vermeiden.&lt;br /&gt;
&lt;br /&gt;
==join==&lt;br /&gt;
Führt die Zeilen zweier sortierter Dateien anhand von '''Übereinstimmungen''' in einem gemeinsamen Feld zusammen.&lt;br /&gt;
&lt;br /&gt;
 root@zero:~# more name&lt;br /&gt;
 1. karl&lt;br /&gt;
 2. heinz&lt;br /&gt;
 3. hans&lt;br /&gt;
 4. otto&lt;br /&gt;
 root@zero:~# more tel&lt;br /&gt;
 1. 1234&lt;br /&gt;
 2. 4321&lt;br /&gt;
 3. 222&lt;br /&gt;
 4. 121212&lt;br /&gt;
 root@zero:~# join name tel &amp;gt; telefonbuch&lt;br /&gt;
 root@zero:~# more telefonbuch&lt;br /&gt;
 1. karl 1234&lt;br /&gt;
 2. heinz 4321&lt;br /&gt;
 3. hans 222&lt;br /&gt;
 4. otto 121212&lt;br /&gt;
&lt;br /&gt;
 root@zero:~# join -t : /etc/passwd /etc/shadow&lt;br /&gt;
 ....&lt;br /&gt;
 daemon:x:1:1:daemon:/usr/sbin:/bin/sh:*:14181:0:99999:7:::&lt;br /&gt;
 bin:x:2:2:bin:/bin:/bin/sh:*:14181:0:99999:7:::&lt;br /&gt;
 sys:x:3:3:sys:/dev:/bin/sh:*:14181:0:99999:7:::&lt;br /&gt;
 sync:x:4:65534:sync:/bin:/bin/sync:*:14181:0:99999:7:::&lt;br /&gt;
 ...&lt;br /&gt;
&lt;br /&gt;
==nl==&lt;br /&gt;
Nummeriert die Zeilen in einer Datei.&lt;br /&gt;
&lt;br /&gt;
 root@zero:~# nl /etc/passwd                                                   &lt;br /&gt;
     1  root:x:0:0:root:/root:/bin/bash                                       &lt;br /&gt;
     2  daemon:x:1:1:daemon:/usr/sbin:/bin/sh                                 &lt;br /&gt;
     3  bin:x:2:2:bin:/bin:/bin/sh                                            &lt;br /&gt;
     4  sys:x:3:3:sys:/dev:/bin/sh                                            &lt;br /&gt;
     5  sync:x:4:65534:sync:/bin:/bin/sync&lt;br /&gt;
     ...&lt;br /&gt;
&lt;br /&gt;
==od==&lt;br /&gt;
Gibt Dateien im Oktal und anderen Formaten aus.&lt;br /&gt;
&lt;br /&gt;
 od [Optionen] Datei&lt;br /&gt;
&lt;br /&gt;
* -j ''Bytes'': Überspringt die Anzahl ''Bytes'' einer Datei&lt;br /&gt;
* -N ''Bytes'': Gibt nur die Anzahl ''Bytes'' aus&lt;br /&gt;
* -c : Gebe ASCII Zeichen aus&lt;br /&gt;
* -f : Gebe Fließkommazahlen aus&lt;br /&gt;
* -i : Gebe Dezimal Integer aus&lt;br /&gt;
* -l : Gebe Dezimal Long aus&lt;br /&gt;
* -o : Gebe Oktal 2 Byte Einheiten aus&lt;br /&gt;
* -s : Gebe Dezimal 2 Byte Einheiten aus&lt;br /&gt;
* -x : Gebe Hexadezimale 2 Byte einheiten aus&lt;br /&gt;
&lt;br /&gt;
Beispiele&lt;br /&gt;
&lt;br /&gt;
Gebe Master Boot Record (die ersten 512 Byte der Festplatte /dev/sda) als Hexadezimal aus&lt;br /&gt;
 root@zero:~# od '''-x -N''' 512 /dev/sda&lt;br /&gt;
 0000000 48eb 1090 d08e 00bc b8b0 0000 d88e c08e&lt;br /&gt;
 0000020 befb 7c00 00bf b906 0200 a4f3 21ea 0006&lt;br /&gt;
 0000040 be00 07be 0438 0b75 c683 8110 fefe 7507&lt;br /&gt;
 0000060 ebf3 b416 b002 bb01 7c00 80b2 748a 0203&lt;br /&gt;
 0000100 00ff 2000 0001 0000 0200 90fa f690 80c2&lt;br /&gt;
 ...&lt;br /&gt;
&lt;br /&gt;
Schreibe &amp;quot;suxer&amp;quot; in die Datei test&lt;br /&gt;
 root@zero:~# echo &amp;quot;suxer&amp;quot; &amp;gt; test&lt;br /&gt;
Ausgabe Hexadezimal&lt;br /&gt;
 root@zero:~# od -x test&lt;br /&gt;
 0000000 7573 6578 0a72&lt;br /&gt;
 0000006&lt;br /&gt;
&lt;br /&gt;
Ausgabe ASCII Zeichen&lt;br /&gt;
 root@zero:~# od -c test&lt;br /&gt;
 0000000   s   u   x   e   r  \n&lt;br /&gt;
 0000006&lt;br /&gt;
&lt;br /&gt;
==paste==&lt;br /&gt;
Fügt die Zeilen von zwei oder mehr Dateien horizontal zusammen&lt;br /&gt;
 root@zero:~# paste name tel&lt;br /&gt;
 1. karl 1. 1234&lt;br /&gt;
 2. heinz        2. 4321&lt;br /&gt;
 3. hans 3. 222&lt;br /&gt;
 4. otto 4. 121212&lt;br /&gt;
&lt;br /&gt;
==pr==&lt;br /&gt;
Bereitet Textdateien zum Drucken vor.&lt;br /&gt;
&lt;br /&gt;
 root@zero:~# echo &amp;quot;Plan für heute&amp;quot; &amp;gt; dokument&lt;br /&gt;
 root@zero:~# more dokument&lt;br /&gt;
 Plan für heute&lt;br /&gt;
 root@zero:~# pr dokument   &lt;br /&gt;
  &lt;br /&gt;
 &lt;br /&gt;
 2009-06-19 12:44                    dokument                     Seite 1&lt;br /&gt;
 &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
 Plan für heute&lt;br /&gt;
&lt;br /&gt;
Anmerkung Ausmaße der Bildschirmausgabe wie eine Druckseite.&lt;br /&gt;
&lt;br /&gt;
==sed==&lt;br /&gt;
streaming editor. Mit sed ist es möglich, den Inhalt einer Datei automatisch (nicht interaktiv) zu&lt;br /&gt;
bearbeiten. Wie unter Linux üblich, wird auch hier der Text nicht wirklich verändert sondern die &lt;br /&gt;
Änderung erfolgt über die Standardausgabe, die wieder umgeleitet werden kann. Die Syntax ist ähnlich &lt;br /&gt;
des ex modus von vi. Reguläre Ausdrücke können nach Belieben benutzt werden. &lt;br /&gt;
&lt;br /&gt;
Optionen:&lt;br /&gt;
 -e Zeichenkette  wendet die Editorbefehle aus Zeichenkette auf den Text an.&lt;br /&gt;
 -n gibt nur die Zeilen aus, die explizit (durch &amp;quot;p&amp;quot; ausgedruckt werden sollen&lt;br /&gt;
&lt;br /&gt;
Gibt die dritte Zeile der Datei text aus&lt;br /&gt;
 root@zero:~# sed -n &amp;quot;3p&amp;quot; text&lt;br /&gt;
 34&lt;br /&gt;
&lt;br /&gt;
Gibt die erste bis dritte Zeile von text aus&lt;br /&gt;
 root@zero:~# sed -n &amp;quot;1,3p&amp;quot; text&lt;br /&gt;
 sogar noch wichtiger&lt;br /&gt;
 123&lt;br /&gt;
 34&lt;br /&gt;
&lt;br /&gt;
Löschen der Zeile mit &amp;quot;sogar&amp;quot;&lt;br /&gt;
 root@zero:~# sed -e '/sogar/d' &amp;lt; text&lt;br /&gt;
 123&lt;br /&gt;
 34&lt;br /&gt;
 4711&lt;br /&gt;
 test&lt;br /&gt;
&lt;br /&gt;
und schreiben in text2&lt;br /&gt;
 root@zero:~# sed -e '/sogar/d' &amp;lt; text &amp;gt; text2&lt;br /&gt;
 root@zero:~# more text2&lt;br /&gt;
 123&lt;br /&gt;
 34&lt;br /&gt;
 4711&lt;br /&gt;
 test&lt;br /&gt;
&lt;br /&gt;
Alle 3en durch DREI ersetzen&lt;br /&gt;
 root@zero:~# sed -e 's/3/DREI/g' &amp;lt; text&lt;br /&gt;
 sogar noch wichtiger&lt;br /&gt;
 12DREI&lt;br /&gt;
 DREI4&lt;br /&gt;
 4711&lt;br /&gt;
 test&lt;br /&gt;
&lt;br /&gt;
==wc==&lt;br /&gt;
Zählt die Anzahl von Zeichen, Wörter oder Zeilen&lt;br /&gt;
&lt;br /&gt;
Optionen&lt;br /&gt;
* -m : Zählt die Anzahl der Zeichen&lt;br /&gt;
 root@zero:~# more name&lt;br /&gt;
 1. karl&lt;br /&gt;
 2. heinz&lt;br /&gt;
 3. hans&lt;br /&gt;
 4. otto&lt;br /&gt;
 root@zero:~# wc '''-m''' tel&lt;br /&gt;
 33 tel&lt;br /&gt;
&lt;br /&gt;
* -w : Zählt die Anzahl der Wörter (einschließlich Zahlen und andere Zeichen)&lt;br /&gt;
 root@zero:~# wc '''-w''' name&lt;br /&gt;
 8 name&lt;br /&gt;
&lt;br /&gt;
* -l : Zählt die Anzahl der Zeilen&lt;br /&gt;
 root@zero:~# wc '''-l''' name&lt;br /&gt;
 4 name&lt;br /&gt;
&lt;br /&gt;
==INodes==&lt;br /&gt;
Inode (oder I-Node) wird im Deutschen am besten als Informationsknoten oder&lt;br /&gt;
Indexeintrag bezeichnet. Er fasst alle Attribute einer Datei zusammen außer dem Inhalt&lt;br /&gt;
und dem Namen der Datei.&lt;br /&gt;
&lt;br /&gt;
===Daten===&lt;br /&gt;
{| border=1 cellpadding=2&lt;br /&gt;
|type&lt;br /&gt;
|Der Typ der Datei wird als einzelner Buchstabe angezeigt. Der Typ einer Datei wird beim Anlegen der Datei festgelegt&lt;br /&gt;
|-&lt;br /&gt;
|Permissions &lt;br /&gt;
|Die Zugriffsrechte der Datei werden in den 12 Bit sstrwxrwxrwx abgespeichert.Wenn sie gesetzt sind, werden sie bei &lt;br /&gt;
der Ausgabe an Stelle der x-Rechte ausgegeben. Die Zugriffsrechte können mit dem Kommando chmod verändert werden.&lt;br /&gt;
|-&lt;br /&gt;
|link count&lt;br /&gt;
|In UNIX kann eine Datei mehr als einen Namen haben. Der Link Count gibt die Anzahl der Namen einer Datei an. Er kann&lt;br /&gt;
mit dem Kommando ln erhöht und dem Kommando rm erniedrigt werden.&lt;br /&gt;
|-&lt;br /&gt;
|owner&lt;br /&gt;
|Für den Dateieigentümer gelten die in der ersten rwx-Gruppe festgelegten Zugriffsrechte. Standardmäßig ist der &lt;br /&gt;
Eigentümer einer Datei derjenige Benutzer, der die Datei angelegt hat.&lt;br /&gt;
|-&lt;br /&gt;
|group&lt;br /&gt;
|Für Benutzer, die in der gleichen Gruppe sind, der die Datei angehört, gelten die in der zweiten rwx-Gruppe festgelegten&lt;br /&gt;
Zugriffsrechte. In System V gehört eine Datei standardmäßig der Gruppe an, in der der anlegende Benutzer gerade ist.&lt;br /&gt;
|-&lt;br /&gt;
|size&lt;br /&gt;
|Bei normalen Dateien und Verzeichnissen gibt diese Information die Länge der Datei in Byte an.&lt;br /&gt;
|-&lt;br /&gt;
|access time&lt;br /&gt;
|Die Zugriffszeit gibt den Zeitpunkt des letzten Lesezugriffes auf eine Datei an. Aus Effizienzgründen wird die &lt;br /&gt;
Zugriffszeit an Verzeichnissen nicht gesetzt, wenn ein Verzeichnis durchsucht wird, obwohl man dies erwarten könnte.&lt;br /&gt;
|-&lt;br /&gt;
|modification time&lt;br /&gt;
|Die Modifikationszeit gibt die Zeit des letzten Schreibzugriffes auf die Daten der Datei an. Intern speichert UNIX &lt;br /&gt;
die Zeit als Sekunden seit Beginn des Jahres 1970 und in GMT ab. Für die Ausgabe wird dies in ein besser lesbares &lt;br /&gt;
Format in der lokalen Zeitzone umgewandelt.&lt;br /&gt;
|-&lt;br /&gt;
|change time &lt;br /&gt;
|Die Veränderungszeit gibt das Datum der letzten Statusänderung der Datei an. Sie wird immer dann gesetzt, wenn die &lt;br /&gt;
Informationen über die Datei sich ändern (Datum der Erzeugung wird nicht gespeichert)&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
===Dateiarten===&lt;br /&gt;
{| border=1 cellpadding=2&lt;br /&gt;
!Zeichen&lt;br /&gt;
!Typ&lt;br /&gt;
!Zweck&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;nowiki&amp;gt;-&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
|file&lt;br /&gt;
|normale Datei&lt;br /&gt;
|-&lt;br /&gt;
|d&lt;br /&gt;
|directory&lt;br /&gt;
|Verzeichnis&lt;br /&gt;
|-&lt;br /&gt;
|b&lt;br /&gt;
|block device&lt;br /&gt;
|Gerätedatei&lt;br /&gt;
|-&lt;br /&gt;
|c&lt;br /&gt;
|character device&lt;br /&gt;
|Gerätedatei&lt;br /&gt;
|-&lt;br /&gt;
|l&lt;br /&gt;
|link&lt;br /&gt;
|Querverweis&lt;br /&gt;
|-&lt;br /&gt;
|p&lt;br /&gt;
|named pipe&lt;br /&gt;
|Benannte Pipeline&lt;br /&gt;
|-&lt;br /&gt;
|s&lt;br /&gt;
|socket&lt;br /&gt;
|Netzwerkverbindung&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
====Normale Dateien====&lt;br /&gt;
Unter einer normalen Datei versteht man die Ansammlung von Daten. Dies kann ein Text, Programm, Bild oder sonstiges sein. &lt;br /&gt;
Beispiel&lt;br /&gt;
 root@zero:~# ls text&lt;br /&gt;
 text&lt;br /&gt;
&lt;br /&gt;
====Verzeichnisse====&lt;br /&gt;
Dateien werden in Verzeichnissen gespeichert, nur so ist eine Ordnung möglich. &lt;br /&gt;
 root@zero:~# mkdir -v Ordner&lt;br /&gt;
 mkdir: Verzeichnis „Ordner“ angelegt&lt;br /&gt;
 &lt;br /&gt;
 root@zero:~# ls -d ~/*&lt;br /&gt;
 /root/error  /root/neuertext  /root/Ordner  /root/profile  /root/test  /root/text  /root/verzeichnis&lt;br /&gt;
&lt;br /&gt;
====Gerätedateien (Block und Char)====&lt;br /&gt;
Gerätedateien ermöglichen Anwendungsprogrammen unter Benutzung des  Kernels den Zugriff auf die Hardwarekomponenten des &lt;br /&gt;
Systems. &lt;br /&gt;
&lt;br /&gt;
Beispiele&lt;br /&gt;
&lt;br /&gt;
Sicherung des Master Boot Records der ersten Festplatte&lt;br /&gt;
 root@zero:~# dd if=/dev/sda1 of=/tmp/mbr.img bs=512 count=1&lt;br /&gt;
&lt;br /&gt;
Einhängen des CD-ROM Laufwerks&lt;br /&gt;
 root@zero:~# mount /dev/cdrom /media/cdrom -t iso9660&lt;br /&gt;
&lt;br /&gt;
====Named Pipes====&lt;br /&gt;
Benannte Pipes (Named Pipes) können dagegen auch zur Kommunikation zwischen Prozessen eingesetzt werden, die nicht miteinander&lt;br /&gt;
verwandt sind und sich darüber hinaus auf unterschiedlichen Rechnern innerhalb eines Netzwerkes befinden dürfen. Sie sind &lt;br /&gt;
flexibler als anonyme Pipes und eignen sich für sogenannte Client-Server-Anwendungen (es lassen sich auch RPCs realisieren).&lt;br /&gt;
Benannte Pipes ermöglichen die gleichzeitige Kommunikation in beide Richtungen, das heißt, Daten können im Vollduplexbetrieb &lt;br /&gt;
zwischen den Prozessen ausgetauscht werden.&lt;br /&gt;
 &lt;br /&gt;
Erstelle Named Pipe mit Namen sux. Schreibe &amp;quot;Hallo Welt&amp;quot; in die Pipe sux und bleibe im Hintergrund. Gebe Inhalt der Pipe mit cat aus&lt;br /&gt;
 root@zero:~# mkfifo sux ; echo 'Hallo Welt' &amp;gt; sux &amp;amp; cat &amp;lt; sux&lt;br /&gt;
 [1] 12947&lt;br /&gt;
 Hallo Welt&lt;br /&gt;
 [1]+  Done                    echo 'Hallo Welt' &amp;gt; sux&lt;br /&gt;
&lt;br /&gt;
====Sockets====&lt;br /&gt;
Schnittstelle um es vernetzten Rechnern zu ermöglichen, miteinander zu kommunizieren.&lt;br /&gt;
&lt;br /&gt;
Sie ist in der Regel definiert durch IP-Adresse sowie Port. &lt;br /&gt;
&lt;br /&gt;
====Links====&lt;br /&gt;
Bei Links handelt es sich um symbolische Verweise auf andere Dateien&lt;br /&gt;
&lt;br /&gt;
'''Softlink'''&lt;br /&gt;
Ein Softlink ist eine Datei die nur auf den Namen einer anderen Datei verweist. Wenn die Originaldatei gelöscht wird, zeigt &lt;br /&gt;
der Link ins Leere. &lt;br /&gt;
&lt;br /&gt;
 ln -s datei softlink&lt;br /&gt;
&lt;br /&gt;
{| border=1 cellpadding=2&lt;br /&gt;
| Vorteile&lt;br /&gt;
| Symbolische Links können auch auf Verzeichnisse angelegt werden&amp;lt;br&amp;gt;Sie sind partitionsübergreifend&amp;lt;br&amp;gt;Man kann sie auf Dateien anlegen, die noch nicht existieren&lt;br /&gt;
|-&lt;br /&gt;
| Nachteile&lt;br /&gt;
| Wenn das Original gelöscht ist, ist kein Zugriff mehr möglich&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Beispiel&lt;br /&gt;
 root@zero:~# ln -s text verweis&lt;br /&gt;
 root@zero:~# ls -l verweis&lt;br /&gt;
 lrwxrwxrwx 1 root root 4 2009-06-18 15:48 verweis -&amp;gt; text&lt;br /&gt;
&lt;br /&gt;
'''Hardlinks'''&lt;br /&gt;
 ln datei hardlink&lt;br /&gt;
Eigentlich ist jede Datei ein Hardlink. Ein Hardlink ist ein Verzeichniseintrag,&lt;br /&gt;
der auf eine Inode verweist. Beim Erzeugen einer Datei verweist ein Eintrag auf&lt;br /&gt;
eine Inode. Man kann dann weitere Verweise erzeugen. Der Linkcounter wird&lt;br /&gt;
jeweils um 1 erhöht. Beim Löschen einer Datei wird er jeweils um 1 reduziert.&lt;br /&gt;
Wird der Wert 0 erreicht, ist die Datei gelöscht.&lt;br /&gt;
{| border=1 cellpadding=2&lt;br /&gt;
| Vorteile&lt;br /&gt;
|Zugriff auf die Daten, selbst wenn das Orginal gelöscht ist.&lt;br /&gt;
|-&lt;br /&gt;
|Nachteile&lt;br /&gt;
|Man kann keine Hardlinks auf Verzeichnisse anlegen.&lt;br /&gt;
Ist nur innerhalb einer Partion möglich.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Beispiel&lt;br /&gt;
 root@zero:~# touch 1&lt;br /&gt;
 root@zero:~# echo &amp;quot;text&amp;quot; &amp;gt; 1&lt;br /&gt;
 root@zero:~# ln 1 2&lt;br /&gt;
 root@zero:~# more 2&lt;br /&gt;
 text&lt;br /&gt;
 root@zero:~# echo &amp;quot;doch kein text&amp;quot; &amp;gt; 1&lt;br /&gt;
 root@zero:~# more 1&lt;br /&gt;
 doch kein text&lt;br /&gt;
 root@zero:~# more 2&lt;br /&gt;
 doch kein text&lt;br /&gt;
&lt;br /&gt;
Weitere Optionen:&lt;br /&gt;
 -b sichert Dateien, statt sie zu überschreiben &lt;br /&gt;
 -f Überschreibt bestehende, gleichnamige Dateien&lt;br /&gt;
 -i fragt vor dem Überschreiben nach Bestätigung&lt;br /&gt;
 -v ausführliche Meldungen&lt;br /&gt;
&lt;br /&gt;
==Prozesse==&lt;br /&gt;
===Was ist ein Prozess?===&lt;br /&gt;
Ein Prozess setzt sich aus zwei Teilen zusammen:&lt;br /&gt;
&lt;br /&gt;
1.Programm, das in den Hauptspeicher geladen wurde&lt;br /&gt;
&lt;br /&gt;
2.Prozessumgebung&lt;br /&gt;
&lt;br /&gt;
Unter einem Prozess versteht man ein Programm (binär), das in den Hauptspeicher&lt;br /&gt;
geladen wurde. Also nicht das Program selbst, das auf der Festplatte liegt ist der&lt;br /&gt;
Prozess, sondern es wird erst durch das Laden in den Hauptspeicher dazu.&lt;br /&gt;
Normalerweise liegt ein Programm als ausführbare Datei irgendwo auf der&lt;br /&gt;
Festplatte oder auf Diskette. Ob es sich bei dem Programm um eine binäre Datei&lt;br /&gt;
handelt, kann man mit dem Befehl '' file '' feststellen.&lt;br /&gt;
 &lt;br /&gt;
 root@zero:~# file /bin/mkdir&lt;br /&gt;
 /bin/mkdir: ELF 32-bit LSB executable, Intel 80386, version 1 (SYSV), dynamically linked (uses shared libs), for GNU/Linux 2.6.8, stripped&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Die Datei liegt im Maschinencode vor und kann in den Hauptspeicher geladen&lt;br /&gt;
werden. Sobald dies geschehen ist, kann der Rechner diesen Maschinencode&lt;br /&gt;
abarbeiten (ausführen).&lt;br /&gt;
&lt;br /&gt;
Da aber ein Programm nicht direkt auf die Hardware zugreifen soll, muss es vom&lt;br /&gt;
Betriebsystem kontrolliert werden. Das Betriebssystem liegt logisch gesehen&lt;br /&gt;
zwischen Hardware und Anwendung. Das Betriebssystem ordnet jedem Prozess&lt;br /&gt;
verschiedene Kenndaten zu, um die Prozesse verwalten zu können. Alle&lt;br /&gt;
Kenndaten, die einem Prozess zugeordnet sind, nennt man die&lt;br /&gt;
Prozessumgebung.Wenn man in der Shell ein Kommando eingibt, wird ein Prozess&lt;br /&gt;
kreiert. Natürlich ist die Shell selbst auch ein Prozess. Ein Prozess kann aber&lt;br /&gt;
genauso gut ein Serverprozess (Dienst) sein, z.B. Apache.&lt;br /&gt;
Ein wesentliches Merkmal eines Prozesses ist die Prozesskommunikation. Über im&lt;br /&gt;
Betriebssystem implementierte Methoden ist es möglich, dass verschiedene&lt;br /&gt;
Prozesse Signale und Daten untereinander austauschen können.&lt;br /&gt;
Dadurch wird auch dem Benutzer ermöglicht, einem Prozeß bestimmte Signale zu&lt;br /&gt;
senden bzw. auf den Status eines Prozesses Einfluss zu nehmen.&lt;br /&gt;
&lt;br /&gt;
===Prozesstabelle (Anzeige mit ps)===&lt;br /&gt;
Da zu jedem Prozess Kenndaten geführt werden, müssen diese auch irgendwo&lt;br /&gt;
festgehalten werden. Das geschieht in der sogenannten Prozesstabelle.&lt;br /&gt;
&lt;br /&gt;
Kenndaten der Prozesse (Auswahl):&lt;br /&gt;
* F Flags (z.B. ausgelagert; Systemprozess; Trace,...)&lt;br /&gt;
* UID Nutzer, mit dessen Rechten der Prozess ausgeführt wird&lt;br /&gt;
* PID Prozess - ID. Diese Nummer gibt eine eindeutige Prozess - Nummer&lt;br /&gt;
an. Sie wird vom System automatisch beim Starten des Prozesses&lt;br /&gt;
vergeben und ist für die Laufzeit eindeutig.&lt;br /&gt;
* PPID Prozessnumer der Eltern-Prozesses&lt;br /&gt;
* PRI Priorität eines Prozesses; je niedriger der Wert ist, desto besser&lt;br /&gt;
* NI ist der Nicewert des Prozesses; Nice erniedrigt den Grundwert&lt;br /&gt;
der Priorität des Prozesses und gibt damit Prozessorzeit für andere&lt;br /&gt;
Prozesse frei.&lt;br /&gt;
* SIZE Speichergröße des Prozesses inklusive Stack (eine Art Zwischenspeicher)&lt;br /&gt;
* RSS Verbrauch an physischen Speicher&lt;br /&gt;
* WCHAN ist der Name der Kernerlfunktion, in der der Prozess schläft&lt;br /&gt;
* STAT Status des Prozesses&lt;br /&gt;
R läuft       S schlafend     D nicht störbarer Schlaf&lt;br /&gt;
T angehalten  Z Zombie        W der Prozess belegt keine Seiten&lt;br /&gt;
* TIME Bisland benötigte Prozessorzeit&lt;br /&gt;
* SIZE ist die Größe von Text, Daten und Stack&lt;br /&gt;
* TTY die Nummer des kontrollierenden Teminal; wenn hier ein ? steht,&lt;br /&gt;
handelt es sich um einen Dämon oder Serverprozess.&lt;br /&gt;
* COMMAND Angabe des Prozesses selbst. Dies ist meist der Programmname.&lt;br /&gt;
&lt;br /&gt;
Weiteres&lt;br /&gt;
* GID Gruppe, unter der der Prozess läuft&lt;br /&gt;
* Verweis auf das aktuellen Arbeitsverzeichnis&lt;br /&gt;
* Um mit relativen Pfadangaben arbeiten zu können braucht man diesen Eintrag&lt;br /&gt;
* Tabelle mit Verweisen auf aktuell geöffnete Dateien&lt;br /&gt;
* 3 sind automatisch geöffnet Standardeingabe, Standardausgabe und&lt;br /&gt;
Standardfehlerkanal&lt;br /&gt;
&lt;br /&gt;
Beispiel&lt;br /&gt;
 root@zero:~# ps -l&lt;br /&gt;
 F S   UID   PID  PPID  C PRI  NI ADDR SZ WCHAN  TTY          TIME CMD&lt;br /&gt;
 4 R     0 18639 18631  0  80   0 -  1080 -      pts/0    00:00:00 bash&lt;br /&gt;
 0 R     0 25904 18639  0  80   0 -   635 -      pts/0    00:00:00 ps&lt;br /&gt;
&lt;br /&gt;
===Eltern und Kinder===&lt;br /&gt;
Jeder Prozess kann weitere Prozesse erzeugen. Die erzeugten Prozesse bezeichnet&lt;br /&gt;
man als Kindprozesse. Jeder Kindprozess weiß anhand der PID, woher er stammt.&lt;br /&gt;
&lt;br /&gt;
Alle Prozesse sind von einem anderen Prozess gestartet worden, mit Ausnahme&lt;br /&gt;
des Pseudoprozesses (noch im Kernel beim Starten erzeugter Prozess). Dieser hat&lt;br /&gt;
die Prozessnummer 0. Er hat die Aufgabe, den Init Prozess ( /sbin/init die Nummer&lt;br /&gt;
1) zu starten, der in System V alle anderen Prozesse direkt oder über seine Kind-&lt;br /&gt;
prozesse startet. (init wird konfiguriert durch die /etc/inittab)&lt;br /&gt;
&lt;br /&gt;
Es gibt zwei Arten wie ein Prozess gestartet werden kann:&lt;br /&gt;
&lt;br /&gt;
# Fork und Exec: Prozessumgebung wird dupliziert, der neue Prozess bekommt eine eigene neue PID&lt;br /&gt;
# Exec: Alter Prozess wird durch neuen Prozess überladen (geht mit dem shell-buildin exec)&lt;br /&gt;
&lt;br /&gt;
'''Rechte auf Objekte UID GID'''&lt;br /&gt;
Ob ein Prozess auf eine Datei zugreifen kann, entscheidet der Kernel anhand der&lt;br /&gt;
Zugriffssrechte, die auf der Datei gesetzt sind. Er checkt anhand der UID und GID&lt;br /&gt;
des Prozesses, ob es erlaubt ist. Mit dieser Technik wird letztendlich geprüft, was&lt;br /&gt;
ein User darf, und was nicht.&lt;br /&gt;
&lt;br /&gt;
===Rechenzeit und Priorität===&lt;br /&gt;
Da auch bei Prozessen eine Gerechtigkeit herschen muss, muss eine Instanz&lt;br /&gt;
darüber entscheiden wie lange ein Prozess Rechenzeit verbrauchen darf.&lt;br /&gt;
Folgende Kenndaten werden dazu benötigt&lt;br /&gt;
* clocktick = Zeiteinheit&lt;br /&gt;
* n = Faktor über den Kernel einstellbar&lt;br /&gt;
* slice = n &amp;lt;nowiki&amp;gt;*&amp;lt;/nowiki&amp;gt; clocktick&lt;br /&gt;
* agingtime = weitere Zeiteinheit über den Kernel einstellbar&lt;br /&gt;
&lt;br /&gt;
Es wird davon ausgegangen das der Prozess mit der niedrigsten Priorität gerade&lt;br /&gt;
rechnet. Pro clocktick erhöht sich die Priorität dieses Prozesses um eins.&lt;br /&gt;
&lt;br /&gt;
Jetzt können 3 Situationen eintreten die alle dazu führen das der Scheduler&lt;br /&gt;
aufgerufen wird.&lt;br /&gt;
&lt;br /&gt;
# Prozess blockiert wegen einer Ausgabe oder Eingabe.&lt;br /&gt;
# Gibt Rechenzeit freiwillig ab.&lt;br /&gt;
# Der Slice endet.&lt;br /&gt;
&lt;br /&gt;
Der Aufruf des Schedulers bewirkt das der Prozess mit der niedrigsten Priorität&lt;br /&gt;
gescheduled wird, er also nun rechnen darf. Nach Ablauf der agingtime werden&lt;br /&gt;
nun die Prozesse &amp;quot;gealtert&amp;quot;. Das geschieht nach folgender Formel&lt;br /&gt;
&lt;br /&gt;
Neue Priorität = Alte Priorität / 2 + Nicewert&lt;br /&gt;
&lt;br /&gt;
Der User hat die Möglichkeit, über den sogenannten Nicefaktor den Grundwert für&lt;br /&gt;
einen Prozess zu senken. Der Prozess braucht dann länger für seine Abarbeitung.&lt;br /&gt;
Er verhält sich somit netter zu den anderen Prozessen. Normale User können nur&lt;br /&gt;
netter werden, der Systemverwalter kann auch nicht netter (gemeiner) werden. Der&lt;br /&gt;
Bereich liegt zwischen 19 (sehr nett) bis 0 (weniger nett) für die User, und 19 bis&lt;br /&gt;
-20 für root.&lt;br /&gt;
&lt;br /&gt;
[[Image:pri.png]]&lt;br /&gt;
&lt;br /&gt;
'''Signale'''&lt;br /&gt;
&lt;br /&gt;
Mit den Kommando kill und killall kann man Prozessen Signale schicken&lt;br /&gt;
&lt;br /&gt;
 kill -Signalnummer PID &lt;br /&gt;
&lt;br /&gt;
Signalnummer&lt;br /&gt;
{| border=1 cellpadding=2&lt;br /&gt;
!Signalname&lt;br /&gt;
!Wert&lt;br /&gt;
!Aktion&lt;br /&gt;
|-&lt;br /&gt;
|SIGHUP&lt;br /&gt;
|1&lt;br /&gt;
|Neuinitialisierung eines Prozesses&lt;br /&gt;
|-&lt;br /&gt;
|SIGINT&lt;br /&gt;
|2&lt;br /&gt;
|Interrupt-Signal von der Tastatur (STRG+c)&lt;br /&gt;
|-&lt;br /&gt;
|SIGQUIT&lt;br /&gt;
|3&lt;br /&gt;
|Interrupt-Signal von der Tastatur (STRG+c) mit Dump&lt;br /&gt;
|-&lt;br /&gt;
|SIGKILL&lt;br /&gt;
|9&lt;br /&gt;
|unwiderrufliches Beendigungssignal (Töten)&lt;br /&gt;
|-&lt;br /&gt;
|SIGSEGV&lt;br /&gt;
|11&lt;br /&gt;
|Ungültige Speicherreferenz (bedeutet oft auf defekten Speicher)&lt;br /&gt;
|-&lt;br /&gt;
|SIGTERM &lt;br /&gt;
|15&lt;br /&gt;
|Beendigungssignal (geöffnete Dateien werden geschlossen)&lt;br /&gt;
|-&lt;br /&gt;
|SIGCONT &lt;br /&gt;
|18&lt;br /&gt;
|Weiterfahren, wenn gestoppt&lt;br /&gt;
|-&lt;br /&gt;
|SIGSTOP&lt;br /&gt;
|19&lt;br /&gt;
|Prozessstop&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Beispiel&lt;br /&gt;
 root@zero:~# kill -1 7562&lt;br /&gt;
&lt;br /&gt;
===Programme im Zusammenhang mit Prozessen===&lt;br /&gt;
* ps: Zeigt die Prozesse mit ihrem Status an&lt;br /&gt;
 root@zero:~# ps&lt;br /&gt;
  PID TTY          TIME CMD&lt;br /&gt;
 14134 pts/0    00:00:00 bash&lt;br /&gt;
 14149 pts/0    00:00:00 ps&lt;br /&gt;
&lt;br /&gt;
 root@zero:~# ps -elf | grep apache&lt;br /&gt;
 1 S root      5738     1  0  80   0 -  5461 select Jun16 ?        00:00:00 /usr/sbin/apache2 -k start&lt;br /&gt;
 5 S www-data  5739  5738  0  80   0 -  5581 inet_c Jun16 ?        00:00:00 /usr/sbin/apache2 -k start&lt;br /&gt;
 5 S www-data  5742  5738  0  80   0 -  5461 inet_c Jun16 ?        00:00:00 /usr/sbin/apache2 -k start&lt;br /&gt;
 5 S www-data  5743  5738  0  80   0 -  5461 inet_c Jun16 ?        00:00:00 /usr/sbin/apache2 -k start&lt;br /&gt;
 5 S www-data  5745  5738  0  80   0 -  5461 inet_c Jun16 ?        00:00:00 /usr/sbin/apache2 -k start&lt;br /&gt;
 5 S www-data  5746  5738  0  80   0 -  5461 inet_c Jun16 ?        00:00:00 /usr/sbin/apache2 -k start&lt;br /&gt;
 0 S root     14153 14134  0  80   0 -   837 pipe_w 16:59 pts/0    00:00:00 grep apache&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* nice: Lässt ein Programm mit verändertem Grundwert der Priorität laufen&lt;br /&gt;
 root@zero:~# nice&lt;br /&gt;
 0&lt;br /&gt;
 root@zero:~# nice -n 9 bash&lt;br /&gt;
 root@zero:~# nice&lt;br /&gt;
 9&lt;br /&gt;
 root@zero:~#&lt;br /&gt;
&lt;br /&gt;
* renice: Ändert den Grundwert der Priorität eines laufenden Prozesses&lt;br /&gt;
 root@zero:~# renice 10 5742&lt;br /&gt;
 5742: Alte Priorität: 0, neue Priorität: 10&lt;br /&gt;
&lt;br /&gt;
* top: Zeigt die Prozesse mit ihrem Status an (Abbrechen mit q)&lt;br /&gt;
 root@zero:~# top&lt;br /&gt;
&lt;br /&gt;
* pstree: Zeigt die Prozesse als Baumstruktur&lt;br /&gt;
 root@zero:~# pstree&lt;br /&gt;
 init─┬─NetworkManager&lt;br /&gt;
      ├─acpid&lt;br /&gt;
      ├─apache2───5*[apache2]&lt;br /&gt;
      ├─atd&lt;br /&gt;
      ├─bluetoothd&lt;br /&gt;
      ├─console-kit-dae───63*[{console-kit-dae}]&lt;br /&gt;
      ├─cron&lt;br /&gt;
      ├─cupsd&lt;br /&gt;
      ├─dbus-daemon&lt;br /&gt;
      ├─dd&lt;br /&gt;
      ├─gdm───gdm─┬─Xorg&lt;br /&gt;
      │           └─gdmgreeter&lt;br /&gt;
      ├─6*[getty]&lt;br /&gt;
      ├─hald───hald-runner─┬─hald-addon-acpi&lt;br /&gt;
      │                    ├─hald-addon-inpu&lt;br /&gt;
      │                    └─2*[hald-addon-stor]&lt;br /&gt;
      ├─klogd&lt;br /&gt;
      ├─nm-system-setti&lt;br /&gt;
      ├─nmbd&lt;br /&gt;
      ├─nscd───11*[{nscd}]&lt;br /&gt;
      ├─portmap&lt;br /&gt;
      ├─rpc.statd&lt;br /&gt;
      ├─slapd───2*[{slapd}]&lt;br /&gt;
      ├─smbd───smbd&lt;br /&gt;
      ├─sshd───sshd───bash───bash───pstree&lt;br /&gt;
      ├─syslogd&lt;br /&gt;
      ├─system-tools-ba&lt;br /&gt;
      ├─udevd&lt;br /&gt;
      ├─winbindd─┬─winbindd───winbindd&lt;br /&gt;
      │          └─3*[winbindd]&lt;br /&gt;
      └─wpa_supplicant&lt;br /&gt;
&lt;br /&gt;
===Jobs===&lt;br /&gt;
Unter einem Job versteht man ein Programm, welches man von der Shell gelöst&lt;br /&gt;
hat. D. h. man kann ganz normal weiter arbeiten und der Job verrichtet seinen&lt;br /&gt;
Dienst im Hintergrund. Man kann jederzeit zu diesem Job wieder Kontakt&lt;br /&gt;
aufnehmen.&lt;br /&gt;
&lt;br /&gt;
Ein Job kann auf 2 Arten gestarten werden:&lt;br /&gt;
&lt;br /&gt;
# Durch Anhängen des &amp;amp; Zeichens beim Programmstart&lt;br /&gt;
 root@zero:~# tail -f /var/log/messages &amp;amp;&lt;br /&gt;
 Jun 19 06:59:31 zero -- MARK --&lt;br /&gt;
 Jun 19 07:19:31 zero -- MARK --&lt;br /&gt;
 Jun 19 07:39:32 zero -- MARK --&lt;br /&gt;
 Jun 19 07:44:57 zero syslogd 1.5.0#5ubuntu3: restart.&lt;br /&gt;
 Jun 19 07:59:32 zero -- MARK --&lt;br /&gt;
 Jun 19 08:19:32 zero -- MARK --&lt;br /&gt;
 Jun 19 08:39:32 zero -- MARK --&lt;br /&gt;
 Jun 19 08:59:32 zero -- MARK --&lt;br /&gt;
 Jun 19 09:19:33 zero -- MARK --&lt;br /&gt;
 Jun 19 09:39:33 zero -- MARK --&lt;br /&gt;
 [3] 27421&lt;br /&gt;
&lt;br /&gt;
# Durch Stoppen des Prozesses durch Drücken von Strg-Z und in den Hintergrund schicken mit %n (n ist die Jobnummer)&lt;br /&gt;
 root@zero:~# watch cat /proc/cpuinfo&lt;br /&gt;
 Strg-Z&lt;br /&gt;
 [4]+  Stopped                 watch cat /proc/cpuinfo&lt;br /&gt;
 root@zero:~# bg %4&lt;br /&gt;
 [4]+ watch cat /proc/cpuinfo &amp;amp;&lt;br /&gt;
&lt;br /&gt;
Anweisungen im Zusammenhang mit Jobs (n ist die Jobnummer)&lt;br /&gt;
* bg %n : Einen Job in den Hintergrund stellen (wie oben)&lt;br /&gt;
* fg %n : Einen Job in den Vordergrund holen&lt;br /&gt;
 root@zero:~# fg %4&lt;br /&gt;
 watch cat /proc/cpuinfo&lt;br /&gt;
&lt;br /&gt;
* jobs : Aktive Jobs ausgeben&lt;br /&gt;
&lt;br /&gt;
 root@zero:~# jobs&lt;br /&gt;
 [1]   Running                 tail -f /var/log/syslog &amp;amp;&lt;br /&gt;
 [2]   Running                 tail -f /var/log/syslog &amp;amp;&lt;br /&gt;
 [3]-  Running                 tail -f /var/log/messages &amp;amp;&lt;br /&gt;
 [4]+  Stopped                 watch cat /proc/cpuinfo&lt;br /&gt;
&lt;br /&gt;
* Strg-Z : Einen Vordergrund-Job vorübergehend anhalten&lt;br /&gt;
* kill -STOP %n : Unterbricht Job im Hintergrund&lt;br /&gt;
 root@zero:~# kill -STOP %1&lt;br /&gt;
 root@zero:~# jobs&lt;br /&gt;
 [1]+  '''Stopped'''                 tail -f /var/log/syslog&lt;br /&gt;
 [2]   Running                 tail -f /var/log/syslog &amp;amp;&lt;br /&gt;
 [3]   Running                 tail -f /var/log/messages &amp;amp;&lt;br /&gt;
 [4]-  Stopped                 watch cat /proc/cpuinfo&lt;br /&gt;
* kill -CONT %n : Setzt den unterbrochenen Job im Hintergrund fort&lt;br /&gt;
root@zero:~# kill -CONT %1&lt;br /&gt;
root@zero:~# jobs&lt;br /&gt;
 [1]+  '''Running'''                 tail -f /var/log/syslog &amp;amp;&lt;br /&gt;
 [2]   Running                 tail -f /var/log/syslog &amp;amp;&lt;br /&gt;
 [3]   Running                 tail -f /var/log/messages &amp;amp;&lt;br /&gt;
 [4]-  Stopped                 watch cat /proc/cpuinfo&lt;br /&gt;
* kill -KILL %n : Tötet Job im Hintergrund&lt;br /&gt;
 root@zero:~# kill -KILL %1&lt;br /&gt;
 root@zero:~# jobs&lt;br /&gt;
 [1]+  '''Killed'''                  tail -f /var/log/syslog&lt;br /&gt;
 [2]   Running                 tail -f /var/log/syslog &amp;amp;&lt;br /&gt;
 [3]   Running                 tail -f /var/log/messages &amp;amp;&lt;br /&gt;
 [4]-  Stopped                 watch cat /proc/cpuinfo&lt;br /&gt;
 root@zero:~# jobs&lt;br /&gt;
 [2]   Running                 tail -f /var/log/syslog &amp;amp;&lt;br /&gt;
 [3]-  Running                 tail -f /var/log/messages &amp;amp;&lt;br /&gt;
 [4]+  Stopped                 watch cat /proc/cpuinfo&lt;br /&gt;
&lt;br /&gt;
Bedingungen, die zu Jobausführung eingehalten werden sollen:&lt;br /&gt;
* Der Job soll nicht auf den Bildschirm schreiben (Standardausgabe +Standardfehlerkanal).&lt;br /&gt;
* Er soll keine Eingaben vom Benutzer erwarten.&lt;br /&gt;
&lt;br /&gt;
==Suchen von Dateien==&lt;br /&gt;
===find===&lt;br /&gt;
 find ab_wo_wird_gesucht was_wird_gesucht aktion&lt;br /&gt;
 find [Pfad] [Bedingung] [Aktion]&lt;br /&gt;
&lt;br /&gt;
====Nach Namen====&lt;br /&gt;
 find [Pfad] '''-name''' [Name]&lt;br /&gt;
 &lt;br /&gt;
Finde alle Dateien mit Namen test ab dem Verzeichnis /home und gebe diese Zeilenweise aus&lt;br /&gt;
 root@zero:~# find /home -name test -print&lt;br /&gt;
 /home/xinux/test&lt;br /&gt;
 /home/test&lt;br /&gt;
&lt;br /&gt;
Wie oben, jedoch mit Namensanfang test&lt;br /&gt;
 root@zero:/home/xinux# find /home -name 'test*'&lt;br /&gt;
 /home/xinux/testdatei&lt;br /&gt;
 /home/xinux/test&lt;br /&gt;
 /home/test&lt;br /&gt;
&lt;br /&gt;
====Nach Benutzer(Eigentümer)====&lt;br /&gt;
 root@zero:/tmp# find /tmp/ '''-user''' xinux&lt;br /&gt;
 /tmp/datei&lt;br /&gt;
&lt;br /&gt;
====Nach Gruppe====&lt;br /&gt;
 root@zero:/tmp# find /tmp/ '''-group''' hacker&lt;br /&gt;
 /tmp/datei3&lt;br /&gt;
 /tmp/datei2&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
====Nach Typ====&lt;br /&gt;
Es wird nach Dateien anhand Ihrer Art gesucht:&lt;br /&gt;
 find [Pfad] '''-type''' [Typ] &lt;br /&gt;
Typ:&lt;br /&gt;
* f: Normale Dateien&lt;br /&gt;
 root@zero:~# find /tmp/ -type f&lt;br /&gt;
 /tmp/mbr.img&lt;br /&gt;
 /tmp/datei&lt;br /&gt;
 /tmp/zeugs&lt;br /&gt;
 /tmp/.X0-lock&lt;br /&gt;
* d: Verzeichnisse&lt;br /&gt;
 root@zero:~# find /var/log -type d&lt;br /&gt;
 /var/log&lt;br /&gt;
 /var/log/apache2&lt;br /&gt;
 /var/log/unattended-upgrades&lt;br /&gt;
 /var/log/apparmor&lt;br /&gt;
 /var/log/ConsoleKit&lt;br /&gt;
 /var/log/dist-upgrade&lt;br /&gt;
 /var/log/dist-upgrade/20090526-1052&lt;br /&gt;
 /var/log/cups&lt;br /&gt;
 /var/log/apt&lt;br /&gt;
 /var/log/fsck&lt;br /&gt;
 /var/log/samba&lt;br /&gt;
 /var/log/samba/cores&lt;br /&gt;
 /var/log/samba/cores/smbd&lt;br /&gt;
 /var/log/samba/cores/nmbd&lt;br /&gt;
 /var/log/samba/cores/winbindd&lt;br /&gt;
 /var/log/installer&lt;br /&gt;
 /var/log/gdm&lt;br /&gt;
 /var/log/news&lt;br /&gt;
* c: Char Devices (Zeichenorientierte Gerätedatei)&lt;br /&gt;
 root@zero:~# find / -type c&lt;br /&gt;
 /lib/udev/devices/kmem&lt;br /&gt;
 /lib/udev/devices/null&lt;br /&gt;
 /lib/udev/devices/console&lt;br /&gt;
 /lib/udev/devices/ppp&lt;br /&gt;
 /lib/udev/devices/net/tun&lt;br /&gt;
* b: Block Devices (Blockorientierte Gerätedatei)&lt;br /&gt;
* p: Benannte Pipe&lt;br /&gt;
* l: Links&lt;br /&gt;
* s: Sockets&lt;br /&gt;
&lt;br /&gt;
====Nach Modifikation====&lt;br /&gt;
Listet alle Dateien in /etc auf, die innerhalb von zwei Tagen modifiziert wurden&lt;br /&gt;
 root@zero:/var/log# find /etc/ -mtime 2 -print&lt;br /&gt;
 /etc/apache2&lt;br /&gt;
 /etc/apache2/mods-available&lt;br /&gt;
 /etc/apache2/conf.d&lt;br /&gt;
 /etc/apache2/sites-available&lt;br /&gt;
 /etc/bash_completion.d&lt;br /&gt;
 /etc/blkid.tab.old&lt;br /&gt;
 /etc/firefox-3.0/profile&lt;br /&gt;
 /etc/firefox-3.0/profile/chrome&lt;br /&gt;
 /etc/firefox-3.0/pref&lt;br /&gt;
 /etc/profile.d&lt;br /&gt;
 /etc/ufw/applications.d&lt;br /&gt;
 /etc/logrotate.d&lt;br /&gt;
 /etc/xulrunner-1.9&lt;br /&gt;
 /etc/blkid.tab&lt;br /&gt;
 /etc/cron.daily&lt;br /&gt;
 /etc/alternatives&lt;br /&gt;
 /etc/alternatives/x-www-browser&lt;br /&gt;
 /etc/alternatives/xulrunner&lt;br /&gt;
 /etc/gre.d&lt;br /&gt;
 /etc/hal/fdi/policy&lt;br /&gt;
 /etc/dbus-1/system.d&lt;br /&gt;
 /etc/udev/rules.d&lt;br /&gt;
&lt;br /&gt;
====Nach Größe====&lt;br /&gt;
Finde Dateien in /tmp, die größer als 100 MByte sind&lt;br /&gt;
 root@zero:/tmp# find /tmp/ -size +100M&lt;br /&gt;
 /tmp/datei&lt;br /&gt;
&lt;br /&gt;
Finde Dateien in /tmp, die kleiner als 100 KByte sind&lt;br /&gt;
 root@zero:/tmp# find /tmp/ -size -100k&lt;br /&gt;
 /tmp/&lt;br /&gt;
 /tmp/datei3&lt;br /&gt;
 /tmp/backup &lt;br /&gt;
 /tmp/datei2&lt;br /&gt;
 /tmp/.winbindd &lt;br /&gt;
 /tmp/.winbindd/pipe&lt;br /&gt;
 /tmp/mbr.img&lt;br /&gt;
 /tmp/zeugs&lt;br /&gt;
 /tmp/.ICE-unix&lt;br /&gt;
 /tmp/.X0-lock&lt;br /&gt;
 /tmp/datei1&lt;br /&gt;
 /tmp/.X11-unix&lt;br /&gt;
 /tmp/.X11-unix/X0&lt;br /&gt;
 /tmp/pulse-PKdhtXMmr18n&lt;br /&gt;
&lt;br /&gt;
====Nach Berechtigungen====&lt;br /&gt;
Finde Dateien in Home mit der Berechtigung 777 (-rwxrwxrwx)&lt;br /&gt;
 root@zero:/var# find /home/ -perm 777&lt;br /&gt;
 /home/samba&lt;br /&gt;
 /home/xinux/Examples&lt;br /&gt;
 /home/xinux/.pulse/1f0763ee4cf4c7e1d3c07fd149dda37b:runtime&lt;br /&gt;
 /home/test/Examples&lt;br /&gt;
&lt;br /&gt;
===locate===&lt;br /&gt;
Locate arbeitet über einen Index, der erstellt und aktualisiert werden muss. Aus diesem Grund kann locate teilweise nicht &lt;br /&gt;
akutell sein. Es ist immer schneller als find und es durchsucht immer das ganze Dateisystem. &lt;br /&gt;
 locate [Dateiname]&lt;br /&gt;
 &lt;br /&gt;
Lokalisiere die Datei wvdial.conf. Anmerkung: Der Stern wird beim Suchen automatisch hinzugefügt. Entspricht also&lt;br /&gt;
wvidal.conf*&lt;br /&gt;
 root@zero:~# locate wvdial.conf&lt;br /&gt;
 /etc/wvdial.conf&lt;br /&gt;
 /usr/share/man/man5/wvdial.conf.5.gz&lt;br /&gt;
 /var/lib/dpkg/info/wvdial.conffiles&lt;br /&gt;
 /var/lib/dpkg/info/wvdial.config&lt;br /&gt;
&lt;br /&gt;
Lokalisiere die Datei wvdial.conf und nur diese&lt;br /&gt;
 root@zero:~# locate -b '\wvdial.conf'&lt;br /&gt;
 /etc/wvdial.conf&lt;br /&gt;
&lt;br /&gt;
Aktualisieren des Indexes&lt;br /&gt;
 root@zero:~# updatedb&lt;br /&gt;
&lt;br /&gt;
==Wie wird ein Kommando lokalisiert==&lt;br /&gt;
Wenn die Shell alle Ersetzungen in der Kommandozeile vorgenommen und alle Umleitungen vorbereitet hat, ist der Zeitpunkt &lt;br /&gt;
gekommen, auf den der Anwender die ganze Zeit gewartet hat. Die Shell versucht das Kommando auszuführen. Dazu muss sie &lt;br /&gt;
es aber erst lokalisieren. Das erste passende Kommando wird ausgeführt.&lt;br /&gt;
&lt;br /&gt;
Als Kommandoname wird immer das erste Wort eines einfachen Kommandos erkannt. Ein Kommandoname kann mit Pfadnamen in &lt;br /&gt;
einem Verzeichnis (absolut oder relativ) angegeben werden. Die Shell erkennt dies an (mindestens) einem Slash `/' &lt;br /&gt;
im Kommandonamen. Wenn kein Verzeichnis angegeben ist, versucht die Shell selbst, das Kommando zu finden. Dazu wird &lt;br /&gt;
der Kommandoname zuerst in der Hashtabelle gesucht, dann wird er mit den Synonymen, mit den Scriptfunktionen und &lt;br /&gt;
schließlich mit den Shellfunktionen verglichen. &lt;br /&gt;
&lt;br /&gt;
Wird auf diese Weise kein Programm dieses Namens gefunden, werden alle in der PATH-Umgebungsvariablen aufgeführten &lt;br /&gt;
Verzeichnisse nach einer ausführbaren Datei dieses Namens durchsucht. Wird auch hier kein passendes Kommando gefunden, &lt;br /&gt;
gibt die Shell eine Fehlermeldung aus.&lt;br /&gt;
&lt;br /&gt;
===which und type===&lt;br /&gt;
====which====&lt;br /&gt;
which gibt die vollen Pfadnamen der Dateien aus, die bei Benutzung des angegebenen Befehls ausgeführt werden würden.&lt;br /&gt;
&lt;br /&gt;
 which [-a] Dateiname &lt;br /&gt;
&lt;br /&gt;
Optionen:&lt;br /&gt;
&lt;br /&gt;
* -a : Alle Treffer ausgeben, nicht nur den ersten&lt;br /&gt;
* --skip-dot : Verzeichnisse, die mit einem Punkt beginnen, auslassen&lt;br /&gt;
&lt;br /&gt;
Beispiel&lt;br /&gt;
 root@zero:~# which startx&lt;br /&gt;
 /usr/bin/startx&lt;br /&gt;
&lt;br /&gt;
====type====&lt;br /&gt;
Anzeigen der absoluten Pfadnamen von Befehlen, und ob sich diese Befehle in der Hash-Tabelle der aktuellen&lt;br /&gt;
Shell befinden.&lt;br /&gt;
&lt;br /&gt;
 type [Optionen] Befehle&lt;br /&gt;
&lt;br /&gt;
Beispiel&lt;br /&gt;
 root@zero:~# type ls&lt;br /&gt;
 ls is aliased to `ls --color=auto'&lt;br /&gt;
&lt;br /&gt;
Optionen:&lt;br /&gt;
&lt;br /&gt;
* -a : Alle vorkommenden Befehle werden ausgegeben, nicht nur das, welches aufgerufen werden würde&lt;br /&gt;
 root@zero:~# type '''-a''' ls&lt;br /&gt;
 ls is aliased to `ls --color=auto'&lt;br /&gt;
 ls is /bin/ls&lt;br /&gt;
&lt;br /&gt;
* -p : Anzeigen des Eintrags von Befehl in der Hash-Tabelle. Dieser Wert kann sich vom ersten Auftreten des Befehls in PATH&lt;br /&gt;
unterscheiden&lt;br /&gt;
 root@zero:~# type '''-p''' apache2&lt;br /&gt;
 /usr/sbin/apache2&lt;br /&gt;
&lt;br /&gt;
* -t : Anzeigen, ob Befehl ein Aliasname, ein Schlüsselwort, eine Funktion, ein eingebauter Befehl oder eine Datei ist&lt;br /&gt;
 root@zero:~# type '''-t''' apache2&lt;br /&gt;
 file&lt;/div&gt;</summary>
		<author><name>192.168.178.46</name></author>
	</entry>
	<entry>
		<id>https://www.xinux.net/index.php?title=Linux_Grundlagen&amp;diff=70</id>
		<title>Linux Grundlagen</title>
		<link rel="alternate" type="text/html" href="https://www.xinux.net/index.php?title=Linux_Grundlagen&amp;diff=70"/>
		<updated>2009-07-07T10:23:52Z</updated>

		<summary type="html">&lt;p&gt;192.168.178.46: /* fmt */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Einführung==&lt;br /&gt;
===Geschichte Unix===&lt;br /&gt;
====1969====&lt;br /&gt;
Am Anfang von Linux steht Multics, ein von Bell Laboratories geschaffenes &amp;quot;Betriebssystem&amp;quot;, &lt;br /&gt;
das noch mit Lochkarten arbeitete. Multics wird mit Unterstützung von AT&amp;amp;T und Western &lt;br /&gt;
Electric unter Mitarbeit von Ken Thompson und Dennis Ritchie weiterentwickelt. Obwohl sich &lt;br /&gt;
Bell Laboratories bald zurückzieht, gibt Thompson das Projekt nicht auf.  Zum Entwicklerteam &lt;br /&gt;
gehören auch Rudd Canaday und Brian Kernighan. Letzterer gibt 1970 dem Betriebssystem den Namen UNIX. &lt;br /&gt;
Thompson definiert 7 Richtlinien für UNIX:&lt;br /&gt;
 &lt;br /&gt;
# Hierarchische Anordnung der Dateisysteme&lt;br /&gt;
# Die Ausgabe von Daten an die Peripherie(-geräte) und Dateien soll gleich sein.&lt;br /&gt;
# Prozesse und Programme sollen miteinander kommunizieren.&lt;br /&gt;
# Multitasking (voneinander getrennte Prozesse)&lt;br /&gt;
# Persönliche Shell's&lt;br /&gt;
# Der Compiler soll für viele Programmiersprachen tauglich sein.&lt;br /&gt;
# Portabilität&lt;br /&gt;
&lt;br /&gt;
====1971====&lt;br /&gt;
Bis 1971 ist das für eine DEC PDP-7 geschriebene Unix als Version 1 auf eine PDP-11 portiert. Bis&lt;br /&gt;
zur Version 4 entwickelt Ritchie die Programmier- (Hoch-) Sprache C. Das in Assembler geschriebene&lt;br /&gt;
Unix wird fast völlig nach C übersetzt, wodurch zum erstenmal die geforderte Hardware-Unabhängigkeit&lt;br /&gt;
des Betriebssystems realisiert werden kann.&lt;br /&gt;
&lt;br /&gt;
====1975====&lt;br /&gt;
Da AT&amp;amp;T aufgrund vertraglicher Bindungen mit der US-Bundesregierung Unix nicht kommerziell vermarkten darf, stellt sie den Source Code für ein paar hundert Dollar den Universitäten, Lehr- und Forschungsanstalten zur Verfügung. Dies führt zu einer sehr dynamischen Entwicklung von Unix. 1975 wird die Version 6 als erstes UNIX-System veröffentlicht, die darauffolgende Version 7 wird sehr erfolgreich. Da es keine Standardisierung gibt, entwickeln bald verschiedenste Firmen ihr eigenes UNIX. Ab 1984 wird AT&amp;amp;T per Gerichtsbeschluss erlaubt, Unix zu vermarkten. AT&amp;amp;T verkauft sein Unix V und beginnt, sich um einen internationalen Standard von UNIX zu bemühen. &lt;br /&gt;
&lt;br /&gt;
====1984====&lt;br /&gt;
Durch Richard Stallman wird die Free Software Foundation (FSF) gegründet. Diese initiiert ein Projekt namens GNU (GNU ist Not Unix), welches das Ziel verfolgt, ein freies UNIX System zu schaffen. &lt;br /&gt;
&lt;br /&gt;
====1987====&lt;br /&gt;
AT&amp;amp;T verbietet die Verwendung des Unix Quellcodes an den Universitäten. Während dieser Zeit ist Andrew (Andy) Tannenbaum Professor an der Freien Universität von Amsterdam und entwickelt Minix. Minix ist ein kostengünstiges Lehrbetriebssystem und kommt ohne jeglichen AT&amp;amp;T Code aus, obwohl es die gleiche Funktionalität wie Unix 7 bietet. Im Usenet unter comp.os.minix entsteht eine Minix-Gemeinde, die den Minix Kernel und die Anwendungen rundherum programmiert und verbessert.&lt;br /&gt;
&lt;br /&gt;
====1991====&lt;br /&gt;
Linus Torvalds hat als Student für Computerwissenschaften an der Universität in Helsinki Minix installiert und das Buch von Andy Tannenbaum gelesen. Er beginnt im Sinne der FSF einen Unix ähnlichen Kernel zu programmieren mit der Idee, &amp;quot;ein besseres Minix als Minix&amp;quot; zu bauen. 1992 stellt er die Version 0.02 mit dem Namen Linux der Internetgemeinde zur Verfügung. &lt;br /&gt;
&lt;br /&gt;
====1994====&lt;br /&gt;
Die Linux Version 1.0 wird freigegeben. Das Linux Fieber beginnt... &lt;br /&gt;
&lt;br /&gt;
====1998====&lt;br /&gt;
Der Kreis der Linux Entwickler und Anwender ist kräftig angeschwollen. KDE 1.0 wird veröffentlicht. Die Zuwachsraten von Linux übertreffen die von Windows NT deutlich. &lt;br /&gt;
&lt;br /&gt;
====1999====&lt;br /&gt;
Der lange erwartete stabile Linux Kernel Version 2.2 wird freigegeben. Namhafte Firmen wie IBM kündigen ihre Unterstützung für Linux an. &lt;br /&gt;
&lt;br /&gt;
====2001====&lt;br /&gt;
Der lange erwartete stabile Linux Kernel Version 2.4 wird freigegeben. USB Unterstützung und eine neue Firewallimplementierung zeichnen ihn aus.&lt;br /&gt;
&lt;br /&gt;
====2003====&lt;br /&gt;
Linux Kernel Version 2.6 wird freigegeben. Am auffälligsten sind Änderungen bei der Modulverwaltung.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Distributionen===&lt;br /&gt;
{| Border=1 Cellpadding=2&lt;br /&gt;
| &lt;br /&gt;
|Url&lt;br /&gt;
|Paketformat&lt;br /&gt;
|-&lt;br /&gt;
|Red Hat&lt;br /&gt;
|www.redhat.com&lt;br /&gt;
|rpm&lt;br /&gt;
|-&lt;br /&gt;
|fedora&lt;br /&gt;
|fedora.redhat.com&lt;br /&gt;
|rpm&lt;br /&gt;
|-&lt;br /&gt;
|CentOS&lt;br /&gt;
|www.centos.org&lt;br /&gt;
|rpm&lt;br /&gt;
|-&lt;br /&gt;
|Suse/openSUSE&lt;br /&gt;
|www.opensuse.org&lt;br /&gt;
|rpm&lt;br /&gt;
|-&lt;br /&gt;
|Debian&lt;br /&gt;
|www.debian.org&lt;br /&gt;
|deb&lt;br /&gt;
|-&lt;br /&gt;
|Ubuntu&lt;br /&gt;
|www.ubuntu.com&lt;br /&gt;
|deb&lt;br /&gt;
|-&lt;br /&gt;
|Mandrake&lt;br /&gt;
|www.linux-mandrake.com&lt;br /&gt;
|rpm&lt;br /&gt;
|-&lt;br /&gt;
|Easy Linux&lt;br /&gt;
|www.easy-linux.de&lt;br /&gt;
|rpm&lt;br /&gt;
|-&lt;br /&gt;
|Turbo&lt;br /&gt;
|www.turbolinux.com&lt;br /&gt;
|rpm&lt;br /&gt;
|-&lt;br /&gt;
|minis&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|toms&lt;br /&gt;
|www.toms.net/rb&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|damn small linux&lt;br /&gt;
|www.damnsmalllinux.org&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|pocket-linux&lt;br /&gt;
|www.pocket-linux.org&lt;br /&gt;
|&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
====Bücher====&lt;br /&gt;
 Titel : Das Linux Anwenderhandbuch und Leitfaden für die Systemverwaltung&lt;br /&gt;
 Autor : Sebastian Hetze, Dirk Hohndel, Olaf Kirch und Martin Müller&lt;br /&gt;
 Verlag: Lunetix&lt;br /&gt;
 ISBN : 3-929764-06-7&lt;br /&gt;
&lt;br /&gt;
 Titel : Linux in a Nutshell&lt;br /&gt;
 Autor : Jessica Perry Hekman und die Mitarbeiter von O'Reilly &amp;amp; Associates&lt;br /&gt;
 Verlag: O'Reilly&lt;br /&gt;
 ISBN : 3-930673-57-6&lt;br /&gt;
&lt;br /&gt;
 Titel : Linux - Wegweiser zur Installation und Konfiguration&lt;br /&gt;
 Autor : Matt Welsh, Lar Kaufman, Matthias Kalle Dallheimer&lt;br /&gt;
 Verlag: O'Reilly&lt;br /&gt;
 ISBN : 3-930673-58-4 (deutsch), 1-56592-469-X (englisch)&lt;br /&gt;
&lt;br /&gt;
 Titel : Linux - Installation, Konfiguration, Anwendung&lt;br /&gt;
 Autor : Michael KoflerMultitasking&lt;br /&gt;
 Verlag: Addison-Wesley&lt;br /&gt;
 ISBN : 3-8273-1475-5&lt;br /&gt;
&lt;br /&gt;
 Titel : Linux - Wegweiser für Netzwerker&lt;br /&gt;
 Autor : Olaf Kirch&lt;br /&gt;
 Verlag: O'Reilly&lt;br /&gt;
 ISBN : 3-930673-18-5&lt;br /&gt;
&lt;br /&gt;
 Titel : TCP/IP-Netzwerk-Administration&lt;br /&gt;
 Autor : Craig Hunt&lt;br /&gt;
 Verlag: O'Reilly&lt;br /&gt;
 ISBN : 3-89721-110-6&lt;br /&gt;
&lt;br /&gt;
 Titel : Essential System Administration&lt;br /&gt;
 Autor : Eleen Frisch&lt;br /&gt;
 Verlag: O'Reilly&lt;br /&gt;
 ISBN : 1-56592-127-5&lt;br /&gt;
&lt;br /&gt;
==Betriebssystem==&lt;br /&gt;
===Was ist ein Betriebssystem?===&lt;br /&gt;
&lt;br /&gt;
Ein Betriebssystem liegt logisch gesehen zwischenAnwendungsprogramm und Hardware.&lt;br /&gt;
&lt;br /&gt;
Es nimmt die Anforderungen der Anwendungsprogramme entgegen und leitet&lt;br /&gt;
diese kontrolliert an die Hardware weiter. Kein Anwendungsprogramm sollte&lt;br /&gt;
direkt auf die Hardware zugreifen können. Den zentralen Zugang schafft einzig&lt;br /&gt;
das Betriebssystem. Somit kann das Betriebssystem unsinnige Anforderungen&lt;br /&gt;
oder Bedienungsfehler abblocken.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Image:Linux.jpg]]&lt;br /&gt;
&lt;br /&gt;
===Aufgaben eines Betriebssystems===&lt;br /&gt;
&lt;br /&gt;
# Verbergen der Komplexität der Maschine vor dem Anwender (Abstraktion)&lt;br /&gt;
# Bereitstellen einer Benutzerschnittstelle (&amp;quot;Kommandointerpreter&amp;quot;, &amp;quot;Shell&amp;quot;)&lt;br /&gt;
# Bereitstellen einer normierten Programmierschnittstelle (API)&lt;br /&gt;
# Verwaltung der Ressourcen der Maschine::&lt;br /&gt;
Hauptspeicher&lt;br /&gt;
Prozessor(en)&lt;br /&gt;
Hintergrundspeicher (Platte, Band, etc.)&lt;br /&gt;
Geräte (Terminal, Drucker, Plotter, etc.)&lt;br /&gt;
Rechenzeit&lt;br /&gt;
Koordination von Prozessen&lt;br /&gt;
&lt;br /&gt;
===Aufbau eines Betriebssystems===&lt;br /&gt;
&lt;br /&gt;
Ein Rechensystem besteht aus Hardware, Systemprogrammen und Anwendungs-&lt;br /&gt;
programmen. Unter einem Betriebssystem wird meist die Summe aus Betriebs-&lt;br /&gt;
systemkern (Kernel) und den wichtigsten Systemprogrammen verstanden. Ein&lt;br /&gt;
minimaler LINUX-Kernel besitzt ungefähr eine Größe von 400 - 800 kByte.&lt;br /&gt;
Weitere wichtige Systemkomponenten benötigen zusätzlich 10 - 100 Mbyte&lt;br /&gt;
Plattenplatz.&lt;br /&gt;
&lt;br /&gt;
Ein Betriebssystem stellt den Rechner als erweiterte Maschine (virtuelle&lt;br /&gt;
Maschine) über definierte Software-Schnittstellen zur Verfügung.&lt;br /&gt;
Das Betriebssystem dient als Betriebsmittelverwalter, der Anforderungen&lt;br /&gt;
befriedigt, protokolliert, abrechnet und vermittelt.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Aufgaben des Betriebssystemkerns:&lt;br /&gt;
&lt;br /&gt;
{| Border=1 Cellpadding=2&lt;br /&gt;
|Prozessverwaltung  (dispatching and scheduling)&lt;br /&gt;
| Mehrere Benutzer können mit mehreren Aktionen gleichzeitig im System arbeiten, ohne sich gegenseitig zu beeinflussen. Damit dies möglich ist,  müssen die Aktionen organisiert, koordiniert und verwaltet werden. Die zu verwaltende Einheit nennt man Prozess.&lt;br /&gt;
|-&lt;br /&gt;
|Speicherverwaltung   (memory management)&lt;br /&gt;
|Zuteilen von Speicherbereichen an laufende Prozesse, Schutz der Speicherbereiche vor unbefugten Zugriffen, bei Speicherengpässen: Auslagern von ganzen (swapping) oder von Teilen (paging) von Prozessen auf die Platte (swap file).&lt;br /&gt;
|-&lt;br /&gt;
|Dateiverwaltung  (file handling)&lt;br /&gt;
|Zuteilung von Plattenplatz für Programme, Benutzer und Systemdienste, Schreiben, Lesen und Strukturieren der Daten auf den Massenspeichern; Durch Bereitstellung einer entsprechenden Schnittstelle (VFS, virtual file system) kann der Kern Dateisysteme unterschiedlichster Art (EXT2, FAT, NFS, HPFS, NTFS, ...) ansprechen.&lt;br /&gt;
|-&lt;br /&gt;
|Geräteverwaltung  (resource management)&lt;br /&gt;
|Der Kern ermöglicht und kontrolliert den Zugriff auf die Hardware. Er steuert die Ein- und Ausgabetätigkeiten der Anwender. An den Kern&lt;br /&gt;
gebunden sind die entsprechenden Gerätetreiber (device driver), die damit eine Kommunikation zwischen Kern und Hardware ermöglichen.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
===Multitasking===&lt;br /&gt;
&lt;br /&gt;
Multitasking bedeutet, dass ein Rechner aus Anwendersicht mehrere Aufgaben&lt;br /&gt;
(Tasks) gleichzeitg übernehmen kann. Das Betriebssystem (OS) unterteilt die&lt;br /&gt;
gleichzeitig anstehenden Aufgaben in Einzelarbeitsschritte (Prozesse) und&lt;br /&gt;
managed durch ein Zeitscheibenverfahren (scheduling) die gleichmäßige&lt;br /&gt;
Abarbeitung der Prozesse.&lt;br /&gt;
&lt;br /&gt;
Es wird unterschieden zwischen:&lt;br /&gt;
&lt;br /&gt;
*non-präamptiven (kooperativen=die Ressourcen werden vom aktiven Prozess freigegeben, bei einem Hänger steht das ganze System)&lt;br /&gt;
&lt;br /&gt;
und&lt;br /&gt;
&lt;br /&gt;
*präamptiven (reinem=der Betriebssystemkern steuert Taskwechsel, indem nach einer festgelegten Zeit vom gerade aktiven Prozess zum nächsten weitergeschaltet wird)&lt;br /&gt;
&lt;br /&gt;
===Mehrprozessorbetrieb===&lt;br /&gt;
&lt;br /&gt;
Bei mehreren Prozessoren und Unterstützung durch das OS&lt;br /&gt;
(NT,Linux,Unix,Novell) können mehrere Tasks auf diese verteilt werden und&lt;br /&gt;
gleichzeitig bearbeitet werden. Nachteilig ist, dass dies nicht oder kaum von&lt;br /&gt;
Anwendungsprogrammen unterstützt wird und es zu Kommunikationsproblemen&lt;br /&gt;
zwischen den einzelnen Tasks kommen kann.&lt;br /&gt;
&lt;br /&gt;
===Arten von von Betriebssystemen===&lt;br /&gt;
&lt;br /&gt;
{|Border=1 Cellpadding=2&lt;br /&gt;
|&lt;br /&gt;
|SingleUser  &lt;br /&gt;
|Multiuser&lt;br /&gt;
|-&lt;br /&gt;
|Single Tasking&lt;br /&gt;
|MS - DOS&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|Multi Tasking&lt;br /&gt;
|Windows 3.x&lt;br /&gt;
|UNIX&lt;br /&gt;
|-&lt;br /&gt;
|&lt;br /&gt;
|Windows 95/98&lt;br /&gt;
|Linux&lt;br /&gt;
|-&lt;br /&gt;
|&lt;br /&gt;
|Windows NT4 ohne Erweiterungen&lt;br /&gt;
|VMS&lt;br /&gt;
|-&lt;br /&gt;
|&lt;br /&gt;
|OS/2 &lt;br /&gt;
|Windows NT mit  Erweiterungen&lt;br /&gt;
|-&lt;br /&gt;
|&lt;br /&gt;
|Apple&lt;br /&gt;
|Windows 2000, XP, 2003&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
===SHELL===&lt;br /&gt;
&lt;br /&gt;
Wenn man mit Linux arbeiten will, kann man nicht direkt mit dem Betriebssystem&lt;br /&gt;
kommunizieren. Man braucht dazu ein Hilfsprogramm, welches die&lt;br /&gt;
Kommandoeingaben ordnungsgemäß an das Betriebssystem weiterleitet. Dieses&lt;br /&gt;
Hilfsprogramm hat den Namen Shell.&lt;br /&gt;
&lt;br /&gt;
Die Shell schirmt den Betriebssystemkern von den Anwendungsprogrammen ab.&lt;br /&gt;
Die unterschiedlichen Shells erfüllen alle dieselbe Aufgabe, sie unterscheiden sich&lt;br /&gt;
allerdings in ihrer Syntax.&lt;br /&gt;
&lt;br /&gt;
==Die Installation im Überblick==&lt;br /&gt;
&lt;br /&gt;
Die Installation von Linux geschieht in folgenden Schritten:&lt;br /&gt;
&lt;br /&gt;
# Analyse (Welche Hardware habe ich? ,Hab ich weitere Betriebsysteme?)&lt;br /&gt;
# Booten des Linux-Kernels. (von CD oder Diskette)&lt;br /&gt;
# Laden einer RAM-Disk (das macht das Installationsprogramm automatisch).&lt;br /&gt;
# Partitionieren der Festplatte (fdisk).&lt;br /&gt;
# Einrichten der Swappartition (mkswap), Formatieren der Festplatte (mkfs).&lt;br /&gt;
# Montieren der Dateisysteme (mount), Aktivieren der Swapbereiche (swapon).&lt;br /&gt;
# Kopieren und Auspacken der Daten vom Installationsmedium auf die Festplatte (die eigentliche Installation). (rpm, dpkg oder tar).&lt;br /&gt;
# Geeignete Wahl der Bootmethode unter Berücksichtigung von Punkt 1 (grub, lilo).&lt;br /&gt;
# Konfiguration des Systems (Netz, Modem etc...).&lt;br /&gt;
&lt;br /&gt;
==Erste Schritte==&lt;br /&gt;
===Anmelden===&lt;br /&gt;
Sie können sich nun mit dem Usernamen und dem Passwort, das sie bei der Installation angelegt haben anmelden!&lt;br /&gt;
[[Image:benutzer.jpg]]&lt;br /&gt;
&lt;br /&gt;
[[Image:passwd.jpg]]&lt;br /&gt;
&lt;br /&gt;
===Terminal öffnen===&lt;br /&gt;
&lt;br /&gt;
Ein Terminal öffnen Sie über das Startmenü:&lt;br /&gt;
&lt;br /&gt;
[[Image:Terminalde.jpg]]&lt;br /&gt;
&lt;br /&gt;
Das geöffnete Terminal sieht dann folgendermaßen aus:&lt;br /&gt;
&lt;br /&gt;
[[Image:Terminalde2.jpg]]&lt;br /&gt;
&lt;br /&gt;
===Sudo===&lt;br /&gt;
Rootrechte erlangen sie über den &amp;quot;Sudo&amp;quot;-Befehl&lt;br /&gt;
 &lt;br /&gt;
''Den nächsten Befehl als root ausführen''&lt;br /&gt;
 xinux@zero:~$ sudo cat /etc/shadow&lt;br /&gt;
 [sudo] password for xinux:&lt;br /&gt;
&lt;br /&gt;
''Eine komplette Sitzung als root starten''&lt;br /&gt;
 xinux@zero:~$ sudo -i&lt;br /&gt;
 [sudo] password for xinux:&lt;br /&gt;
 root@zero:~#&lt;br /&gt;
&lt;br /&gt;
===Virtuelle Konsolen===&lt;br /&gt;
&lt;br /&gt;
In die Virtuelle Konsole gelangen sie über &amp;quot;STRG+ALT+(F1-F6)&amp;quot;.&lt;br /&gt;
Sie funktioniert wie ein ganz normales Terminal, und mit &amp;quot;ALT+F7&amp;quot;&lt;br /&gt;
gelangen sie wieder zurück auf die grafische Benutzeroberfläche&lt;br /&gt;
&lt;br /&gt;
===Abmelden===&lt;br /&gt;
&lt;br /&gt;
Abmelden können Sie sich wieder über das Startmenu unter:&lt;br /&gt;
&lt;br /&gt;
[[Image:Logout.jpg]]&lt;br /&gt;
&lt;br /&gt;
Fals sie nur einzelne Sitzungen in einem der Terminals oder &lt;br /&gt;
den Virtuellen Konsolen Abmelden wollen benutzen sie dazu den Befehl: &amp;quot;exit&amp;quot;&lt;br /&gt;
&lt;br /&gt;
===Herunterfahren===&lt;br /&gt;
&lt;br /&gt;
Das Herunterfahren funktioniert auf dem selben Weg.&lt;br /&gt;
&lt;br /&gt;
Entweder sie Benutzen wieder das Startmenü und benutzen diesmal den &amp;quot;Ausschalten ...&amp;quot; Knopf,&lt;br /&gt;
&lt;br /&gt;
Oder sie geben den äquivalenten &amp;quot;shutdown&amp;quot;-Befehl in einem Terminal bzw. der virtuellen Konsole ein.&lt;br /&gt;
&lt;br /&gt;
Allerdings müssen sie dazu als Administrator angemeldet sein s. &amp;quot;Sudo&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Wenn Sie den &amp;quot;shutdown&amp;quot;-Befehl benutzen wollen muss hinter den Befehl&lt;br /&gt;
&lt;br /&gt;
eine Zeitangabe in Minuten oder das wort &amp;quot;now&amp;quot; für sofortiges Ausschalten hinzugefügt werden:&lt;br /&gt;
&lt;br /&gt;
 xinux@zero:~$ sudo -i&lt;br /&gt;
 root@zero:~# shutdown 60&lt;br /&gt;
 &lt;br /&gt;
 Broadcast message from xinux@zero &lt;br /&gt;
         (/dev/pts/3) at 14:29 ...&lt;br /&gt;
 &lt;br /&gt;
 The system is going down for maintenance in 60 minutes!&lt;br /&gt;
&lt;br /&gt;
Sollten sie den Befehl widerrufen wollen dann drücken sie &amp;quot;STRG+C&amp;quot;,&lt;br /&gt;
&lt;br /&gt;
in dem Terminal in dem der shutdown Befehl gestartet wurde,&lt;br /&gt;
&lt;br /&gt;
oder geben sie den &amp;quot;shutdown&amp;quot;-Befehl zusammen mit der Abbruchoption &amp;quot;-c&amp;quot; in einem anderen Terminal ein:&lt;br /&gt;
&lt;br /&gt;
 root@zero:~# shutdown -c&lt;br /&gt;
&lt;br /&gt;
 shutdown: Shutdown cancelled&lt;br /&gt;
 root@zero:~# &lt;br /&gt;
&lt;br /&gt;
Wenn Sie den Rechner Neustarten möchten gibt es dazu die Option &amp;quot;-r&amp;quot; für den &amp;quot;shutdown&amp;quot;-Befehl&lt;br /&gt;
&lt;br /&gt;
oder den &amp;quot;reboot&amp;quot;-Befehl die beide auch als root ausgeführt werden müssen:&lt;br /&gt;
&lt;br /&gt;
 xinux@zero:~$ sudo -i&lt;br /&gt;
 [sudo] password for xinux: &lt;br /&gt;
 root@zero:~# shutdown -r now&lt;br /&gt;
&lt;br /&gt;
 root@zero:~# reboot&lt;br /&gt;
&lt;br /&gt;
===&amp;quot;man&amp;quot;===&lt;br /&gt;
&lt;br /&gt;
Programm zum Einsehen der Online-Manuals&lt;br /&gt;
&lt;br /&gt;
Die Manuals sind in folgende Sektionen unterteilt:&lt;br /&gt;
# Ausführbare Programme oder Shellbefehle&lt;br /&gt;
# Systemaufrufe (Kernelfunktionen)&lt;br /&gt;
# Bibliotheksaufrufe (Funktionen in System-Bibliotheken)&lt;br /&gt;
# Spezielle Dateien (gewöhnlich in /dev)&lt;br /&gt;
# Dateiformate und Konventionen, z. B. /etc/passwd&lt;br /&gt;
# Spiele&lt;br /&gt;
# Makropakete und Konventionen, z. B. man(7), groff(7)&lt;br /&gt;
# Systemadministrationsbefehle (in der Regel nur für root)&lt;br /&gt;
# Kernelroutinen [Nicht Standard]&lt;br /&gt;
&lt;br /&gt;
Aufruf eines Manuals erfolgt durch ''man kommando''&lt;br /&gt;
Beendet wird durch Drücken des Buchstabens q&lt;br /&gt;
Gesucht wird vorwärts durch Eingabe eines /suchausdruck&lt;br /&gt;
Gesucht wird rückwärts durch Eingabe eines ?suchausdruck&lt;br /&gt;
&lt;br /&gt;
Beispiele:&lt;br /&gt;
&lt;br /&gt;
      man passwd        Anschauen der Manualseite zum Programm passwd&lt;br /&gt;
      man 5 passwd      Anschauen der Manualseite zur Datei /etc/passwd&lt;br /&gt;
      man -a passwd     Anschauen aller Manualseiten zu passwd&lt;br /&gt;
      man -k passwd     Durchsucht die Kurzbeschreibungen der Manualseite&lt;br /&gt;
                        nach passwd und gibt alle Treffer aus&lt;br /&gt;
      man -f passwd      Gibt alle gefunden Kurzbescheibungen zu passwd aus&lt;br /&gt;
      man -L en passwd Gibt englische Manualseiten aus&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Was geht vor auf meinem System? (date,who)===&lt;br /&gt;
&lt;br /&gt;
Das Kommando date dient zur Abfrage von Datum und Uhrzeit.&lt;br /&gt;
&lt;br /&gt;
 xinux@zero:~ &amp;gt; date&lt;br /&gt;
 Fre Mär 16 16:35:03 CET 2001&lt;br /&gt;
&lt;br /&gt;
oder auch Anzeige der Grennwich Zeit:&lt;br /&gt;
&lt;br /&gt;
 xinux@zero:~ &amp;gt; date -u&lt;br /&gt;
 Fre Mär 16 15:35:34 UTC 2001&lt;br /&gt;
&lt;br /&gt;
 xinux@zero:~ &amp;gt; date -u &amp;quot;+%X&amp;quot;&lt;br /&gt;
 15:37:19&lt;br /&gt;
&lt;br /&gt;
 xinux@zero:~ &amp;gt; date -u &amp;quot;+%x&amp;quot;&lt;br /&gt;
 01/15/02&lt;br /&gt;
&lt;br /&gt;
who zeigt alle angemeldeten Benutzer an&lt;br /&gt;
&lt;br /&gt;
 thomas@cardassia:~ &amp;gt; who&lt;br /&gt;
 thomas             tty1 Feb 27 16:39&lt;br /&gt;
 thomas             tty2 Mar 2 17:08&lt;br /&gt;
 tina               tty6 Mar 16 16:38&lt;br /&gt;
&lt;br /&gt;
Mit `who --help' bekommen Sie mehr Informationen.&lt;br /&gt;
&lt;br /&gt;
 thomas@cardassia:~ &amp;gt; who --help&lt;br /&gt;
&lt;br /&gt;
Benutzung: who [OPTION]... [ DATEI | ARG1 ARG2 ]&lt;br /&gt;
&lt;br /&gt;
 -H, --heading             print line of column headings&lt;br /&gt;
 -i, -u, --idle            add user idle time as HOURS:MINUTES, . or old&lt;br /&gt;
 -l, --lookup              attempt to canonicalize hostnames via DNS&lt;br /&gt;
 -m                        only hostname and user associated with stdin&lt;br /&gt;
 -q, --count               all login names and number of users logged on&lt;br /&gt;
 -s                        (ignored)&lt;br /&gt;
 -T, -w, --mesg            add user's message status as +, - or ?&lt;br /&gt;
     --message             same as -T&lt;br /&gt;
     --writable            same as -T&lt;br /&gt;
     --help                display this help and exit&lt;br /&gt;
     --version             output version information and exit&lt;br /&gt;
&lt;br /&gt;
==Das UNIX-Dateisystem==&lt;br /&gt;
===Verzeichnisbaum===&lt;br /&gt;
&lt;br /&gt;
[[Image:vztree.jpg]]&lt;br /&gt;
&lt;br /&gt;
Das Betriebssystem UNIX besitzt ein hierarchisches Dateisystem. Es besteht aus:&lt;br /&gt;
* Dateien (Files)&lt;br /&gt;
Dateien speichern Informationen (Text, Bilder, Sound, Videos, Programme) und&lt;br /&gt;
werden über den Dateinamen angesprochen.&lt;br /&gt;
&lt;br /&gt;
* Verzeichnissen (Directories, Kataloge)&lt;br /&gt;
Verzeichnisse besitzen ebenfalls einen Namen und dienen zur Ordnung des&lt;br /&gt;
Dateisystems. Ein Verzeichnis kann Dateien und Unterverzeichnisse&lt;br /&gt;
(Subdirectories) enthalten. Das oberste Verzeichnis im Dateisystem heisst&lt;br /&gt;
Rootverzeichnis oder kurz Root und wird durch / (sprich: slash)&lt;br /&gt;
gekennzeichnet.&lt;br /&gt;
&lt;br /&gt;
Im Gegensatz zu Windows kennt UNIX keine Laufwerke.&lt;br /&gt;
Das obige Bild zeigt ein typisches UNIX-Dateisystem.&lt;br /&gt;
Unterhalb des Rootverzeichnisses befinden sich eine Vielzahl vonVerzeichnissen.&lt;br /&gt;
&lt;br /&gt;
===Wichtige Verzeichnisse===&lt;br /&gt;
&lt;br /&gt;
• '''Homeverzeichnis'''&lt;br /&gt;
&lt;br /&gt;
das Verzeichnis, in dem man sich unmittelbar nach dem Anmelden befindet. Das&lt;br /&gt;
Homeverzeichnis wird vom Systemverwalter eingerichtet; jeder Anwender&lt;br /&gt;
besitzt ein festes Homeverzeichnis. z.B. /home/hans&lt;br /&gt;
&lt;br /&gt;
~ (Tilde) bzw. $HOME (Shellvariable) kennzeichnen das Homeverzeichnis.&lt;br /&gt;
&lt;br /&gt;
• '''Aktuelles Verzeichnis'''&lt;br /&gt;
&lt;br /&gt;
Verzeichnis, in dem man sich aktuell befindet.&lt;br /&gt;
Das aktuelle Verzeichnis wird mit dem Befehl cd (change directory) oder per&lt;br /&gt;
Mausklick verändert.&lt;br /&gt;
Ein einfacher Punkt . kennzeichnet das aktuelle Verzeichnis.&lt;br /&gt;
&lt;br /&gt;
• '''Elternverzeichnis'''&lt;br /&gt;
&lt;br /&gt;
Verzeichnis unmittelbar oberhalb des aktuellen Verzeichnisses.&lt;br /&gt;
Jedes Verzeichnis ausser / besitzt genau ein Elternverzeichnis.&lt;br /&gt;
Zwei Punkte .. kennzeichnen das Elternverzeichnis (abhängig vom aktuellen&lt;br /&gt;
VZ).&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Absoluter Pfadname:===&lt;br /&gt;
&lt;br /&gt;
Beschreibt ausgehend vom Rootverzeichnis den Weg zum Zielverzeichnis oder zur&lt;br /&gt;
Zieldatei. (Welche Verzeichnisse müssen ausgehend von / durchlaufen werden, um&lt;br /&gt;
zum Ziel zu kommen?) Ein absoluter Pfadname beginnt immer mit / .&lt;br /&gt;
&lt;br /&gt;
===Relativer Pfadname:===&lt;br /&gt;
&lt;br /&gt;
Beschreibt ausgehend vom aktuellen Verzeichnis den Weg zum Zielverzeichnis&lt;br /&gt;
oder zur Zieldatei; ein relativer Pfadname beginnt nicht mit / .&lt;br /&gt;
/home/suxer&lt;br /&gt;
absoluter Pfadname für das Verzeichnis sub1 im Homeverzeichnis von suxer&lt;br /&gt;
&lt;br /&gt;
===Verzeichnisstruktur===&lt;br /&gt;
&lt;br /&gt;
 /bin         Kommandos die beim starten benötigt werden (Zugriff hat jeder)&lt;br /&gt;
 /sbin        Wichtige System-Programme (In der Regel root vorberhalten)&lt;br /&gt;
 /boot        Hier findet man die Dateien des Bootmanagers und des Kernel.&lt;br /&gt;
 /dev         In diesem Verzeichnis stehen die Gerätedateien (Devices),&lt;br /&gt;
 /home        Alle Heimatverzeichnisse der Nutzer findet man hier.&lt;br /&gt;
 /lib         Beim Systemstart benötigten Bibliotheken und Modules stehen hier.&lt;br /&gt;
 /mnt         Mountpunkt für temporäre Partitionen&lt;br /&gt;
 /opt         Software, die nicht Installationsumfang von Linux gehören.&lt;br /&gt;
 /root        Heimatverzeichnis des Administrators.&lt;br /&gt;
 /tmp         Temporäre Dateien können hier abgelegt werden&lt;br /&gt;
 /usr         statische Dateien (kann read-only gemountet sein)&lt;br /&gt;
 /var         variable Dateien (muss beschreibar sein )&lt;br /&gt;
 /etc         Konfiguartionsdateien und Startscripte&lt;br /&gt;
 /proc        Virtuelles Dateisystem -&amp;gt; repräsentiert den Kernel&lt;br /&gt;
&lt;br /&gt;
===Unterverzeichnisse von /usr===&lt;br /&gt;
&lt;br /&gt;
 sbin         Programme für root die beim Start nicht benötigt werden&lt;br /&gt;
 bin          Programme für alle die beim Start nicht benötigt werden&lt;br /&gt;
 X11R6        Dateien des X-Window-Sytems&lt;br /&gt;
 bin          Ausführbare Programme&lt;br /&gt;
 doc          Dokumentationen&lt;br /&gt;
 etc          Konfigurationsdateien&lt;br /&gt;
 games        Spiele&lt;br /&gt;
 include      Headerdateien für C-Programme&lt;br /&gt;
 local        Pakete die nicht zur Distribution gehören ähnlich /opt&lt;br /&gt;
 share        Pakete die von mehreren Paketen genutzt werden&lt;br /&gt;
 share/man    Die Manualpages&lt;br /&gt;
 share/info   Seiten des Infosystems&lt;br /&gt;
 share/doc    Dokumentationen&lt;br /&gt;
 src          Sources von Programmen (Kernel und andere)&lt;br /&gt;
&lt;br /&gt;
===Unterverzeichnisse von /var===&lt;br /&gt;
&lt;br /&gt;
 cache        Zwischenspreicher für Progammes&lt;br /&gt;
 games        Variable Daten der Games (Scores etc...)&lt;br /&gt;
 lock         Sperrdateien&lt;br /&gt;
 log          Die Logdateien (wichtiges Verzeichnis für Admins)&lt;br /&gt;
 mail         Das Mailsystem&lt;br /&gt;
 run          Dateien zu laufemdem Prozessen&lt;br /&gt;
 spool        Spooldateien (z.B. für das Drucksystem&lt;br /&gt;
 state        Statusinfos&lt;br /&gt;
 tmp          Wie /tmp eventuell nicht auf root Partion&lt;br /&gt;
&lt;br /&gt;
==Einfache Komandos==&lt;br /&gt;
===cd: Wechseln des Arbeitsverzeichnis===&lt;br /&gt;
&lt;br /&gt;
Um festzustellen in welchem Verzeichnis man sich befindet, sollte man den&lt;br /&gt;
Befehl &amp;quot;pwd&amp;quot; benutzen,&lt;br /&gt;
&lt;br /&gt;
und mit dem Befehl &amp;quot;cd&amp;quot; kann man zwischen den Verzeichnissen wechseln:&lt;br /&gt;
&lt;br /&gt;
Wechsele ins homeverzeichnis von Xinux&lt;br /&gt;
&lt;br /&gt;
 xinux@zero:~$ cd /home/xinux/&lt;br /&gt;
 xinux@zero:~$ pwd&lt;br /&gt;
 /home/xinux&lt;br /&gt;
&lt;br /&gt;
cd ~ -&amp;gt; wechsele ins jeweilige Homeverzeichnis&lt;br /&gt;
&lt;br /&gt;
cd .. -&amp;gt; wechsele ein Verzeichnis höher&lt;br /&gt;
&lt;br /&gt;
cd ../verzeichnis -&amp;gt; wechsele in eine paralleles Verzeichnis &amp;lt;- (ist eine relative Pfadangabe !)&lt;br /&gt;
&lt;br /&gt;
cd - -&amp;gt; wechsele in das Verzeichnis, in dem vorher gearbeitet wurde.&lt;br /&gt;
&lt;br /&gt;
Mit cd / wechselt man in das Wurzelverzeichnis.&lt;br /&gt;
&lt;br /&gt;
 xinux@zero:/var/log$ cd /&lt;br /&gt;
 xinux@zero:/$ pwd&lt;br /&gt;
 /&lt;br /&gt;
&lt;br /&gt;
===ls: Listing===&lt;br /&gt;
&lt;br /&gt;
Den Inhalt von Verzeichnissen kann man sich mit dem Befehl &amp;quot;ls&amp;quot; anzeigen lassen&lt;br /&gt;
wobei &amp;quot;ls&amp;quot; eine Vielzahl von Optionen besitzt:&lt;br /&gt;
&lt;br /&gt;
 ls                                  standard&lt;br /&gt;
 ls -l                               langes listing&lt;br /&gt;
 ls -a                               alle Dateien&lt;br /&gt;
 ls -i                               mit Inode&lt;br /&gt;
 ls -h                               gut lesbare Dateigröße&lt;br /&gt;
 ls -d                               Verzechnis wird angezeigt, nicht der Inhalt&lt;br /&gt;
 ls -L                               sortiert nach Größe&lt;br /&gt;
 ls -t                               sortiert nach Datum&lt;br /&gt;
 ls -F                               mit nützlichem Anhang&lt;br /&gt;
&lt;br /&gt;
 xinux@zero:/$ ls -l /var/log/messages&lt;br /&gt;
 -rw-r----- 1 syslog adm 2296 2009-06-16 10:05 /var/log/messages&lt;br /&gt;
&lt;br /&gt;
===more: Seitenweises Anzeigen von Seiten===&lt;br /&gt;
 root@zero:~# more /var/log/messages&lt;br /&gt;
 ...&lt;br /&gt;
&lt;br /&gt;
===head: erste Zeilen anzeigen===&lt;br /&gt;
Erste 10 Zeilen anzeigen&lt;br /&gt;
 root@zero:~# head /var/log/messages&lt;br /&gt;
 Jun 15 12:37:08 zero syslogd 1.5.0#5ubuntu3: restart.&lt;br /&gt;
 Jun 15 12:38:43 zero kernel: [  830.065036] mtrr: your processor doesn't support write-combining&lt;br /&gt;
 Jun 15 12:46:05 zero pulseaudio[4817]: pid.c: Stale PID file, overwriting.&lt;br /&gt;
 Jun 15 13:05:24 zero -- MARK --&lt;br /&gt;
 ...&lt;br /&gt;
&lt;br /&gt;
Erste zwei Zeilen anzeigen&lt;br /&gt;
 root@zero:~# head -n 2 /var/log/messages&lt;br /&gt;
 Jun 15 12:37:08 zero syslogd 1.5.0#5ubuntu3: restart.&lt;br /&gt;
 Jun 15 12:38:43 zero kernel: [  830.065036] mtrr: your processor doesn't support write-combining&lt;br /&gt;
&lt;br /&gt;
===tail: letzte Zeilen anzeigen===&lt;br /&gt;
 &lt;br /&gt;
 root@zero:~# tail /var/log/syslog&lt;br /&gt;
 ...&lt;br /&gt;
 Jun 19 11:19:35 zero -- MARK --&lt;br /&gt;
 Jun 19 11:39:35 zero -- MARK --&lt;br /&gt;
 Jun 19 11:59:36 zero -- MARK --&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Letze 5 Zeilen anzeigen&lt;br /&gt;
 root@zero:~# tail -n 5 /var/log/auth.log&lt;br /&gt;
 Jun 18 14:30:01 zero CRON[12040]: pam_unix(cron:session): session closed for user root&lt;br /&gt;
 Jun 18 14:39:01 zero CRON[12191]: pam_unix(cron:session): session opened for user root by (uid=0)&lt;br /&gt;
 Jun 18 14:39:01 zero CRON[12191]: pam_unix(cron:session): session closed for user root&lt;br /&gt;
 Jun 18 14:40:01 zero CRON[12237]: pam_unix(cron:session): session opened for user root by (uid=0)&lt;br /&gt;
 Jun 18 14:40:01 zero CRON[12237]: pam_unix(cron:session): session closed for user root&lt;br /&gt;
&lt;br /&gt;
Letze Zeilen anzeigen und fortlaufend aktualisieren&lt;br /&gt;
 root@zero:~# tail -f /var/log/syslog&lt;br /&gt;
 ...&lt;br /&gt;
&lt;br /&gt;
===mkdir: Ein neues Verzeichnis erstellen===&lt;br /&gt;
&lt;br /&gt;
 mkdir        verzeichnis&lt;br /&gt;
Erstellt ein Verzeichnis im working directory (wd)&lt;br /&gt;
&lt;br /&gt;
 mkdir  -p    ver1/ver2&lt;br /&gt;
Erstellt ein Verzeichnis ver2 unterhalb von ver1&lt;br /&gt;
wenn ver1 nicht existiert wird es erstellt&lt;br /&gt;
&lt;br /&gt;
 mkdir -m 753 ver1&lt;br /&gt;
Es wird das Verzeichnis ver1 erstellt mit der mask 753&lt;br /&gt;
&lt;br /&gt;
 mkdir -v     ver1&lt;br /&gt;
Geschwätzige Ausgabe :)&lt;br /&gt;
&lt;br /&gt;
===Zum Löschen von leeren Verzeichnissen wird rmdir benutzt===&lt;br /&gt;
&lt;br /&gt;
 rmdir           ver1&lt;br /&gt;
Löscht das leere Verzeichnis ver1&lt;br /&gt;
&lt;br /&gt;
 rmdir -v        ver1&lt;br /&gt;
Löscht das leere Verzeichnis ver1 und ist geschwätzig&lt;br /&gt;
&lt;br /&gt;
 rmdir -p        /ver1/ver2/ver3&lt;br /&gt;
Löscht das Verzeichnis ver3; wenn dadurch ver2 ein leeres&lt;br /&gt;
Verzeichnis wird, wird dieses auch gelöscht , wenn ver1&lt;br /&gt;
dadurch ein leeres Verzeichnis wird, wird auch dieses gelöscht.&lt;br /&gt;
&lt;br /&gt;
===touch Verändern des Zeitstempels===&lt;br /&gt;
&lt;br /&gt;
Mit touch können wir eine neue leere Datei erzeugen (das ist nicht der eigentliche&lt;br /&gt;
Zweck von touch, eigentlich wird der Zeitstempel geändert)&lt;br /&gt;
&lt;br /&gt;
 touch            dateiname&lt;br /&gt;
&lt;br /&gt;
===Kopieren=== &lt;br /&gt;
cp ist das Kommando um Dateien zu kopieren &lt;br /&gt;
&lt;br /&gt;
Eine Kopie von dat1 mit dem Namen dat2 erstellen:&lt;br /&gt;
&lt;br /&gt;
 xinux@zero:~$ cp dat1 dat2&lt;br /&gt;
&lt;br /&gt;
Eine Kopie von dat1 ins Verzeichnis ver2 erstellen:&lt;br /&gt;
&lt;br /&gt;
 xinux@zero:~$ cp dat1 ver2/&lt;br /&gt;
 &lt;br /&gt;
Eine Kopie erstellen mit ausführlicher Anzeige:&lt;br /&gt;
&lt;br /&gt;
 xinux@zero:~$ cp -v dat1 dat2&lt;br /&gt;
 `dat1' -&amp;gt; `dat2'&lt;br /&gt;
&lt;br /&gt;
Eine Kopie erstellen mit Rückfrage fals etwas überschrieben wird:&lt;br /&gt;
&lt;br /&gt;
 xinux@zero:~$ cp -i dat1 dat2&lt;br /&gt;
 cp: overwrite `dat2'?&lt;br /&gt;
&lt;br /&gt;
Eine Kopie erstellen und die Rückfrage überbrücken:&lt;br /&gt;
&lt;br /&gt;
 xinux@zero:~$ cp -f dat1 dat2&lt;br /&gt;
&lt;br /&gt;
Eine Kopie von dat1 ins Verzeichnis ver2 erstellen fals keine neuere Version von dat1 vorliegt:&lt;br /&gt;
&lt;br /&gt;
 xinux@zero:~$ cp -u dat1 ver2/&lt;br /&gt;
&lt;br /&gt;
Eine Kopie erstellen fals ver2 auf dem selben Dateisystem wie dat1 liegt:&lt;br /&gt;
&lt;br /&gt;
 xinux@zero:~$ cp -x dat1 ver2/&lt;br /&gt;
&lt;br /&gt;
Eine Kopie von ver1, die als ver2 oder unter ver2 als ver1 gespeichert wird erstellen:&lt;br /&gt;
&lt;br /&gt;
 xinux@zero:~$ cp -r ver1/ ver2/&lt;br /&gt;
&lt;br /&gt;
Eine Kopie von einer Datei erstellen und ihre Attribute beibehalten:&lt;br /&gt;
&lt;br /&gt;
 xinux@zero:~$ cp -p sux1 sux2&lt;br /&gt;
&lt;br /&gt;
Eine Kopie erstellen bei der die Links erhalten bleiben:&lt;br /&gt;
&lt;br /&gt;
 xinux@zero:~$ cp -r ver1/ ver2/&lt;br /&gt;
&lt;br /&gt;
Eine Kopie erstellen zum Archivieren (-dpr):&lt;br /&gt;
&lt;br /&gt;
 xinux@zero:~$ cp -a ver1/ ver2/&lt;br /&gt;
&lt;br /&gt;
===rm: Löschen einer Datei===&lt;br /&gt;
&lt;br /&gt;
Um Dateien zu löschen, brauchen wir das Kommando &amp;quot;rm&amp;quot;:&lt;br /&gt;
&lt;br /&gt;
 rm               dat1        dat1 wird gelöscht&lt;br /&gt;
 rm         -i    dat1        dat1 wird nach Bestätigung gelöscht&lt;br /&gt;
 rm         -f    dat1        dat1 wird ohne Rückfragen gelöscht&lt;br /&gt;
 rm         -v    dat1        dat1 wird glöscht (geschwätzige Ausgabe)&lt;br /&gt;
 rm         -r    ver1        Löschen von nicht leeren Verzeichnissen&lt;br /&gt;
                              Achtung !!! Als root kann man sich damit Teile&lt;br /&gt;
                              oder sogar den gesamten Verzeichnisbaum&lt;br /&gt;
                              absägen !!!&lt;br /&gt;
&lt;br /&gt;
===mv: Verschieben===&lt;br /&gt;
&lt;br /&gt;
Mit dem Befehl &amp;quot;mv&amp;quot; werden Daten verschoben, folgendes gilt:&lt;br /&gt;
&lt;br /&gt;
 mv          dat1 dat2         &lt;br /&gt;
Die Datei dat1 wird in dat2 umbenannt&lt;br /&gt;
 mv          dat1 /ver1        &lt;br /&gt;
Die Datei dat1 wird nach /ver1 verschoben&lt;br /&gt;
&lt;br /&gt;
Die Parameter und ihre Bedeutung:&lt;br /&gt;
&lt;br /&gt;
      -i                      wenn eine Datei exisitiert wird vor dem&lt;br /&gt;
                              Überschreiben nachgefragt&lt;br /&gt;
      -v                      verbose (geschwätzig)&lt;br /&gt;
      -u                      nur neuere Daten werden bei Bedarf überschrieben&lt;br /&gt;
      -b                      wenn überschrieben werden soll, wird ein Backup&lt;br /&gt;
                              erstellt&lt;br /&gt;
      -S ENDUNG               das Backup bekommt die Endung ENDUNG&lt;br /&gt;
&lt;br /&gt;
===su Benutzer wechseln===&lt;br /&gt;
&lt;br /&gt;
 su -             &lt;br /&gt;
Wechsel zum Rootaccount, wie wenn dieser sich neu anmelden würde. (Bsp: su -)&lt;br /&gt;
&lt;br /&gt;
 su Benutzernamen &lt;br /&gt;
Wechsel der Identität zu Benutzer (gegebenenfalls Passwortabfrage)&lt;br /&gt;
&lt;br /&gt;
 su -c Kommando   &lt;br /&gt;
Kommando wird als rootaccount ausgeführt&lt;br /&gt;
&lt;br /&gt;
==Der Standard Editor vi==&lt;br /&gt;
Der vi ist der Standardeditor in der Unixwelt. Er ist in jedem Unix-Derivat&lt;br /&gt;
enthalten.&lt;br /&gt;
Der Editor hat zwar den schlechten Ruf umständlich zu bedienen zu sein, ist&lt;br /&gt;
jedoch sehr leistungsfähig und systemübergreifend verfügbar. Beim vi handelt es&lt;br /&gt;
sich um einen rein textorientierten Editor, der mittels eigener Kommandos&lt;br /&gt;
gesteuert wird.&lt;br /&gt;
&lt;br /&gt;
Der Editor VIM ist eine weitere Verbesserung von VI und leichter zu bedienen.&lt;br /&gt;
Und unter Ubuntu/Debian mit &amp;quot;apt-get install vim&amp;quot; zu installieren.&lt;br /&gt;
&lt;br /&gt;
===Starten des Editors:===&lt;br /&gt;
&lt;br /&gt;
Der Editorstart erfolgt einfach durch die Eingabe des Kommandos vi mit dem&lt;br /&gt;
Dateinamen der zu editierenden Datei als Parameter.&lt;br /&gt;
Beispiel:        &lt;br /&gt;
 vi sux.txt&lt;br /&gt;
&lt;br /&gt;
===Die Betriebsmodi des vi:===&lt;br /&gt;
&lt;br /&gt;
Ein Umstand, der dem vi den Ruf der komplizierten Bedienbarkeit zugetragen hat,&lt;br /&gt;
sind die unterschiedlichen Betriebsmodi des Editors. Genauer gesagt verfügt der&lt;br /&gt;
vi über drei Betriebsmodi:&lt;br /&gt;
&lt;br /&gt;
====Kommandomodus:====&lt;br /&gt;
&lt;br /&gt;
Innerhalb dieses Modus werden die eingegebenen Zeichen direkt als Befehle des&lt;br /&gt;
Editors interpretiert und ausgeführt. Dabei gibt es weder ein Bereitschaftszeichen&lt;br /&gt;
(Prompt) noch ein Echo (Ausgabe). Der Kommandomodus ist der Modus, in dem&lt;br /&gt;
sich der vi direkt nach seinem Start befindet.&lt;br /&gt;
&lt;br /&gt;
====Zeilenmodus oder Exmodus:====&lt;br /&gt;
&lt;br /&gt;
Dieser Modus ist der einzige Modus mit einem eigenen Bereitschaftszeichen,&lt;br /&gt;
nämlich dem Doppelpunkt (:). Das Prompt wird ebenso wie die Befehlsausgaben&lt;br /&gt;
in der Statuszeile angezeigt.&lt;br /&gt;
&lt;br /&gt;
====Eingabemodus:====&lt;br /&gt;
&lt;br /&gt;
Der Eingabemodus ist derjenige, in welchem der zu bearbeitende Text bearbeitet&lt;br /&gt;
werden kann. Alle hier eingegebenen Zeichen werden als Text für die aktuelle&lt;br /&gt;
Datei interpretiert. Zwischen den unterschiedlichen Modi kann jederzeit&lt;br /&gt;
gewechselt werden. Von Kommandomodus gelangen Sie durch mehere Wege in&lt;br /&gt;
den Eingabemodus. Man kann durch folgende Aktionen wechslen&lt;br /&gt;
&lt;br /&gt;
{| border=1 cellpadding=2&lt;br /&gt;
|i&lt;br /&gt;
|Text vor der aktuellen Cursorposition einfügen&lt;br /&gt;
|-&lt;br /&gt;
|I&lt;br /&gt;
|Text am Zeilenanfang einfügen&lt;br /&gt;
|-&lt;br /&gt;
|a&lt;br /&gt;
|Text hinter der aktuellen Cursorposition einfügen&lt;br /&gt;
|-&lt;br /&gt;
|A&lt;br /&gt;
|Text am Zeilenende einfügen&lt;br /&gt;
|-&lt;br /&gt;
|o&lt;br /&gt;
|Unterhalb der aktuellen Zeile eine neue Zeile einfügen&lt;br /&gt;
|-&lt;br /&gt;
|O&lt;br /&gt;
|Oberhalb der aktuellen Zeile eine neue Zeile einfügen&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Durch das Drücken der ESC - Taste gelangt man in den Kommandomodus zurück.&lt;br /&gt;
&lt;br /&gt;
Im Kommandomodus können Sie durch den Text navigieren und auch den Text&lt;br /&gt;
selbst bearbeiten, z.B ausschneiden, kopieren usw. Dazu sind einige Kommandos&lt;br /&gt;
nötig, von denen die wichtigsten im Folgenden erläutert werden:&lt;br /&gt;
&lt;br /&gt;
 xinux@zero:/$ vi iwas.txt&lt;br /&gt;
&lt;br /&gt;
[[Image:vim.jpg]]&lt;br /&gt;
&lt;br /&gt;
===Benutzen des Kommandomodus===&lt;br /&gt;
====Steuerung des Cursors durch den Text====&lt;br /&gt;
&lt;br /&gt;
Mittels folgender Kommandos bewegt sich der Cursor durch den Text:&lt;br /&gt;
&lt;br /&gt;
{| border=1 cellpadding=2&lt;br /&gt;
|h&lt;br /&gt;
|Cursor ein Zeichen nach links&lt;br /&gt;
|-&lt;br /&gt;
|l&lt;br /&gt;
|Cursor ein Zeichen nach rechts&lt;br /&gt;
|-&lt;br /&gt;
|k&lt;br /&gt;
|Cursor eine Zeile nach oben&lt;br /&gt;
|-&lt;br /&gt;
|j&lt;br /&gt;
|Cursor eine Zeile nach unten&lt;br /&gt;
|-&lt;br /&gt;
|w&lt;br /&gt;
|Cursor ein Wort nach rechts&lt;br /&gt;
|-&lt;br /&gt;
|b&lt;br /&gt;
|Cursor ein Wort nach links&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Alle diese Kommandos können mit einem vorgestellten Wiederholungsfaktor&lt;br /&gt;
arbeiten. Der Befehl 3w verschiebt demnach den Cursor um 3 Wörter nach rechts.&lt;br /&gt;
&lt;br /&gt;
====Angaben zur Positionierung====&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{| border=1 cellpadding=2&lt;br /&gt;
|STRG+U&lt;br /&gt;
|1⁄2 Bildschirmseite nach oben&lt;br /&gt;
|-&lt;br /&gt;
|STRG+D&lt;br /&gt;
|1⁄2 Bildschirmseite nach unten&lt;br /&gt;
|-&lt;br /&gt;
|STRG+B&lt;br /&gt;
|1 Bildschirmseite nach oben&lt;br /&gt;
|-&lt;br /&gt;
|STRG+F&lt;br /&gt;
|1 Bildschirmseite nach unten&lt;br /&gt;
|-&lt;br /&gt;
|/Ausdruck&lt;br /&gt;
|Sucht den Ausdruck (vorwärts) Weitersuchen mit n , N&lt;br /&gt;
|-&lt;br /&gt;
|?Ausdruck&lt;br /&gt;
|Sucht den Ausdurck (rückwärts) Weitersuchen mit n , N&lt;br /&gt;
|-&lt;br /&gt;
|0&lt;br /&gt;
|Zeilenanfang&lt;br /&gt;
|-&lt;br /&gt;
|$&lt;br /&gt;
|Zeilenende&lt;br /&gt;
|-&lt;br /&gt;
|w&lt;br /&gt;
|Nächstes Wort&lt;br /&gt;
|-&lt;br /&gt;
|b&lt;br /&gt;
|Vorheriges Wort&lt;br /&gt;
|-&lt;br /&gt;
|fc&lt;br /&gt;
|Auf das Zeichen c springen. c steht für ein beliebiges Zeichen&lt;br /&gt;
|-&lt;br /&gt;
|G&lt;br /&gt;
|Letzte Zeile der Datei&lt;br /&gt;
|-&lt;br /&gt;
|ng&lt;br /&gt;
|n-te Zeile der Datei&lt;br /&gt;
|-&lt;br /&gt;
|H&lt;br /&gt;
|Anfang der Bildschirmseite&lt;br /&gt;
|-&lt;br /&gt;
|L&lt;br /&gt;
|Ende der Bildschirmseite&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
====Befehle zur Textbearbeitung -&amp;gt; Was soll geschehen====&lt;br /&gt;
&lt;br /&gt;
{| Border=1 Cellpadding=2&lt;br /&gt;
|x&lt;br /&gt;
|Löscht Zeichen&lt;br /&gt;
|-&lt;br /&gt;
|d&lt;br /&gt;
|Löschen und in den Puffer laden&lt;br /&gt;
|-&lt;br /&gt;
|c&lt;br /&gt;
|Ändern&lt;br /&gt;
|-&lt;br /&gt;
|y&lt;br /&gt;
|In den Puffer laden&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
====Weitere wichtige Befehle:====&lt;br /&gt;
&lt;br /&gt;
{| Border=1 Cellpadding=2&lt;br /&gt;
|p&lt;br /&gt;
|Aus dem Puffer einfügen&lt;br /&gt;
|-&lt;br /&gt;
|u&lt;br /&gt;
|Undo, macht den letzten Befehl rückgängig&lt;br /&gt;
|-&lt;br /&gt;
|STRG+R&lt;br /&gt;
|Redo, macht den letzten Undo rückgängig&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
===Zeilen- oder Exmodus===&lt;br /&gt;
&lt;br /&gt;
Wie schon erwähnt wird der Zeilen oder Exmodus durch einen : eingeleitet.&lt;br /&gt;
Es folgen einige Beispiele.&lt;br /&gt;
&lt;br /&gt;
Befehle zum Speichern und Beenden:&lt;br /&gt;
&lt;br /&gt;
 :w          Schreibt Datei&lt;br /&gt;
 :w Datei2   Schreibt eine Kopie in Datei2&lt;br /&gt;
 :w !        Schreibt Datei (übergehe Schreibschutz)&lt;br /&gt;
 :w ! Datei2 Schreibt eine Kopie in Datei2 (übergehe Schreibschutz)&lt;br /&gt;
 :q          Schließe Datei&lt;br /&gt;
 :q!         Schließe Datei (verwerfe Änderungen)&lt;br /&gt;
 :wq         Schreibe Datei und beende Editor&lt;br /&gt;
 :wq!        Schreibe Datei und beende Editor (übergehe Schreibschutz)&lt;br /&gt;
 :q!         Schließe Datei (verwerfe Änderungen)&lt;br /&gt;
 :h          Hilfe anzeigen, durch drücken von :q Beenden der Hilfe&lt;br /&gt;
 :e Datei3   Editiere Datei3&lt;br /&gt;
 :e #        Editere vorhergehende Datei&lt;br /&gt;
 :1,3co9     Kopiere von der ersten bis zu dritten Zeile &lt;br /&gt;
             und füge den Inhalt unterhalb der neunte Zeile ein.&lt;br /&gt;
&lt;br /&gt;
Interaktionen mit Unix:&lt;br /&gt;
&lt;br /&gt;
 :r Datei4   Fügt Inhalt der Datei4 nach dem Cursor ein&lt;br /&gt;
 :r ! Befehl Fügt Ausgabe des Befehls nach dem Cursor ein&lt;br /&gt;
 :! Befehl   Führt den Befehl aus&lt;br /&gt;
 :sh         Starte Subshell -&amp;gt; mit exit kehrt man wieder zurück&lt;br /&gt;
             Eingabemodus zurück&lt;br /&gt;
&lt;br /&gt;
====Ersetzen von Textteilen====&lt;br /&gt;
&lt;br /&gt;
Die grundsätzliche Syntax lautet:&lt;br /&gt;
&lt;br /&gt;
 :[Zeilennummer,Zeilennummer]s/Muster/Ersetzung/[gc]&lt;br /&gt;
&lt;br /&gt;
 :s/worf/kirn/              der erste worf wird in der aktuellen Zeile durch kirn ersetzt&lt;br /&gt;
 :1,9s/worf/kirn/g          von der 1. bis zur 9. Zeile werden alle worf durch kirn ersetzt&lt;br /&gt;
 :1,$s/worf/kirn/           von der ersten bis zur letzten Zeile ersetze ersten worf durch&lt;br /&gt;
                            kirn&lt;br /&gt;
 :.,$s/worf/kirn/g          von der aktuellen bis zur letzten Zeile ersetze alle worf durch&lt;br /&gt;
                            kirn&lt;br /&gt;
 :1,.s/worf/kirn/c          von der 1. bis zur aktuellen Zeile ersetze worf durch kirn, frage&lt;br /&gt;
                            aber nach&lt;br /&gt;
 :1,$s/^worf/kirn/          von der ersten bis zur letzten Zeile ersetze worf am&lt;br /&gt;
                            Zeilenanfang durch kirn&lt;br /&gt;
 :4,$s/worf$/kirn/          von der 4. bis zur letzten Zeile ersetze worf am Zeilenende&lt;br /&gt;
                            durch kirn&lt;br /&gt;
 :1,$s/^#//                 lösche alle Kommentarzeichen&lt;br /&gt;
 :1,$s/^.orf/kirn/           ersetze alles was am Zeilenanfang ein beliebiges Zeichen hat&lt;br /&gt;
                            gefolgt von einem orf durch kirn&lt;br /&gt;
 :1,$s/^[A-Z]orf/kirn/g     suche nach einem Großbuchstaben am Anfang der Zeile&lt;br /&gt;
                            gefolgt von einem orf und ersetze durch kirn&lt;br /&gt;
 :1,$s/^M[ae][iy]e*r/kirn/  suche alles, was am Anfang der Zeile ein großes M enthält,&lt;br /&gt;
                            gefolgt von einem a oder e , gefolgt von einem i oder y ,&lt;br /&gt;
                            gefolgt von einem e , welches 0 oder N mal vorkommen kann,&lt;br /&gt;
                            gefolgt von einem r und ersetze es durch kirn&lt;br /&gt;
&lt;br /&gt;
==Reguläre Ausdrücke==&lt;br /&gt;
&lt;br /&gt;
{| Border=1 Cellpadding=2&lt;br /&gt;
|c&lt;br /&gt;
|Ein einzelner Buchstabe passt auf sich selbst&lt;br /&gt;
|-&lt;br /&gt;
|.&lt;br /&gt;
|Ein Punkt passt auf jedes Zeichen außer auf das Zeilenende&lt;br /&gt;
|-&lt;br /&gt;
|*&lt;br /&gt;
|Das dem Operator * vorangehende Muster kann 0 oder öfter vorkommen&lt;br /&gt;
|-&lt;br /&gt;
|^&lt;br /&gt;
|(Caret) passt auf den Zeilenanfang&lt;br /&gt;
|-&lt;br /&gt;
|$&lt;br /&gt;
|Passt auf das Zeilenende&lt;br /&gt;
|-&lt;br /&gt;
|\&lt;br /&gt;
|Das folgende Sonderzeichen wird entwertet&lt;br /&gt;
|-&lt;br /&gt;
|[...]&lt;br /&gt;
|Passt auf &amp;quot;genau&amp;quot; eins in [...] angebenen Zeichen&lt;br /&gt;
|-&lt;br /&gt;
|[^...]&lt;br /&gt;
|Passt auf &amp;quot;genau&amp;quot; ein Zeichen welches nicht in [...] angebenen ist&lt;br /&gt;
|-&lt;br /&gt;
|\&amp;lt;&lt;br /&gt;
|Passt auf den Wortanfang&lt;br /&gt;
|-&lt;br /&gt;
|\&amp;gt;&lt;br /&gt;
|Passt auf das Wortende&lt;br /&gt;
|-&lt;br /&gt;
|\+&lt;br /&gt;
|Das dem Operator \+ vorangehende Muster kann 1 oder öfter vorkommen&lt;br /&gt;
|-&lt;br /&gt;
|&amp;amp;&lt;br /&gt;
|Setzt das gefunden Suchmuster ein&lt;br /&gt;
|-&lt;br /&gt;
|\(...\)&lt;br /&gt;
|Speichert den Text auf den das Suchmuster passt zur späteren Verwendung&lt;br /&gt;
|-&lt;br /&gt;
|\n&lt;br /&gt;
|Setzt das vorangehende, mit \(...\) Gefundene wieder ein&lt;br /&gt;
|-&lt;br /&gt;
|(...)&lt;br /&gt;
|Gruppiert Auswahlmöglichkeiten&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;nowiki&amp;gt;|&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
|Trennt Auswahlmöglichkeiten&lt;br /&gt;
|-&lt;br /&gt;
|\b&lt;br /&gt;
|Passt auf den Anfang oder das Ende eines Wortes&lt;br /&gt;
|-&lt;br /&gt;
|\B&lt;br /&gt;
|Symbolisiert den Raum innerhalb eines Wortes&lt;br /&gt;
|-&lt;br /&gt;
|\w&lt;br /&gt;
|Passt auf alle alphanumerischen Zeichen [A-Za-z0-9]&lt;br /&gt;
|-&lt;br /&gt;
|\W&lt;br /&gt;
|Passt auf alle nichtalphanumerischen Zeichen [^A-Za-z0-9]&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Die Rangfolge der Operatoren(von der höchsten zur niedrigsten)&lt;br /&gt;
:(, ), ?, *, + | .&lt;br /&gt;
&lt;br /&gt;
Die anderen Operatoren sind mit den anderen Buchstaben gleichrangig.&lt;br /&gt;
&lt;br /&gt;
===Beispiel zum Suchen===&lt;br /&gt;
&lt;br /&gt;
 Suchmuster               Passt auf&lt;br /&gt;
 ^Tuxer                   Tuxer am Zeilenanfang&lt;br /&gt;
 [tT]uxer                 Tuxer oder tuxer&lt;br /&gt;
 80[23]?86                8086, 80286 oder 80386&lt;br /&gt;
&lt;br /&gt;
===grep===&lt;br /&gt;
&lt;br /&gt;
Mit grep ist es möglich, in Dateien nach regulären Ausdrücken zu suchen. Wenn&lt;br /&gt;
eine Übereinstimmung gefunden wird, wird die komplette Zeile auf die&lt;br /&gt;
Standardausgabe geschrieben. grep kann auch von STDIN lesen.Es ist&lt;br /&gt;
empfehlenswert, sich anzugwöhnen ,das Suchmuster in Anführungszeichen zu&lt;br /&gt;
schreiben. Es gibt 3 Arten fgrep = fastgrep , grep und egrep egrep&lt;br /&gt;
&lt;br /&gt;
Beispiel:&lt;br /&gt;
&lt;br /&gt;
 root@zero:~# cat text&lt;br /&gt;
 quatsch&lt;br /&gt;
 quatsch&lt;br /&gt;
 quatsch&lt;br /&gt;
 wichtig&lt;br /&gt;
 quatsch&lt;br /&gt;
 root@zero:~# grep wichtig text&lt;br /&gt;
 wichtig&lt;br /&gt;
 root@zero:~# &lt;br /&gt;
&lt;br /&gt;
 -c                   meldet nur die Gesamtzahl der Fundstellen&lt;br /&gt;
 -v                   zeigt nur Zeilen, die »Ausdruck« nicht enthalten&lt;br /&gt;
 -i                   ignoriert Groß- und Kleinschreibung&lt;br /&gt;
 -l                    meldet nur Dateinamen mit Fundstellen&lt;br /&gt;
 -n                   listet Zeilennummern zu jeder Fundstelle&lt;br /&gt;
 -f                   Dateiname »Dateiname« enthält die Such-Ausdrücke&lt;br /&gt;
 -E                   ist ein erweiterter regulärer Ausdruck (egrep)&lt;br /&gt;
 -F                   (Muster, Ausdruck) ist ein Muster (String) (fgrep)&lt;br /&gt;
 -b                   listet auch die Position der Fundstellen&lt;br /&gt;
 -C    Anzahl         Anzahl von Zeilen werden nach der Fundstelle ausgegeben&lt;br /&gt;
 -B    Anzahl         Anzahl von Zeilen werden vor der Fundstelle ausgegeben&lt;br /&gt;
 -r                   Durchsucht Verzeichnisse rekursiv&lt;br /&gt;
&lt;br /&gt;
==Useridendifikation==&lt;br /&gt;
===/etc/passwd===&lt;br /&gt;
====Beschreibung====&lt;br /&gt;
passwd ist eine ASCII-Datei, die eine Liste der Benutzer des Systems und deren&lt;br /&gt;
Passwörter enthält. Die Passwortdatei sollte für alle Benutzer lesbar sein, was für&lt;br /&gt;
dieVerschlüsselung notwendig ist; aber nur vom Superuser beschreibbar. Wenn&lt;br /&gt;
Sie eine neue Kennung einrichten, lassen Sie das Passwort-Feld in der Datei frei&lt;br /&gt;
und benutzen Sie passwd(1), um dem System ein Passwort für die neue Kennung&lt;br /&gt;
mitzuteilen.&lt;br /&gt;
&lt;br /&gt;
Die Datei /etc/passwd enthält einen Eintrag pro Zeile mit dem Format:&lt;br /&gt;
login_name:passwd:UID:GID:user_name:directory:shell&lt;br /&gt;
====Die Bedeutung der Felder:====&lt;br /&gt;
# login_name Kennung des Benutzers auf dem System.&lt;br /&gt;
# password   Hier steht bei Shadowsystemen ein x. Die Passwörter sind in der Datei /etc/shadow&lt;br /&gt;
# UID        Die numerische Benutzernummer.&lt;br /&gt;
#  GID        Die numerische Gruppennummer des Benutzers.&lt;br /&gt;
# user_name Ein optionales Kommentarfeld, oft benutzt für den vollen Namen des Benutzers und weitere Informationen (Telefon, Raum-Nummer etc.).&lt;br /&gt;
# directory  Das Heimatverzeichnis $HOME des Benutzers.&lt;br /&gt;
# shell      Das Programm, das beim Einloggen gestartet werden soll (falls nicht nötig, benutzen Sie /bin/bash).&lt;br /&gt;
&lt;br /&gt;
===/etc/group===&lt;br /&gt;
====Beschreibung====&lt;br /&gt;
etc/group ist eine ASCII Datei, die Gruppen definiert, zu denen Benutzer&lt;br /&gt;
gehören. Es gibt nur einen Eintrag pro Zeile; jede Zeile hat folgendes Format:&lt;br /&gt;
         GruppenName:Passwort:GruppenKennung:BenutzerListe&lt;br /&gt;
Beschreibung der Felder:&lt;br /&gt;
#     GruppenName      Die Bezeichnung der Gruppe.&lt;br /&gt;
#     Passwort         Das (verschlüsselte) Gruppen-Passwort. Wenn dieses Feld leer ist, wird kein Passwort benötigt.&lt;br /&gt;
#     GruppenKennung Die numerische Identifikation der Gruppe.&lt;br /&gt;
#     BenutzerListe    Alle Namen der Mitglieder, getrennt durch Kommas.&lt;br /&gt;
&lt;br /&gt;
===/etc/shadow===&lt;br /&gt;
====Beschreibung====&lt;br /&gt;
shadow beinhaltet Informationen zu den verschlüsselten Passwörten, zu den&lt;br /&gt;
Benutzerzugängen und weitere Informationen zur Laufzeit der Passwörter.&lt;br /&gt;
 Name:Passwort:Letzte Änderung:Mintage:Maxtage:Warntage:Inaktiv:Ablauf&lt;br /&gt;
#    Der Loginname&lt;br /&gt;
#    verschlüsseltes Passwort &lt;br /&gt;
&amp;lt;nowiki&amp;gt;*&amp;lt;/nowiki&amp;gt; bedeutet Benutzer kann sich nicht einlogen&lt;br /&gt;
! bedeutet Benutzer hat kein Passwort gesetzt&lt;br /&gt;
#    Tage seit dem 1 Januar 1970 an dem das Passwort letztmals geändert wurde&lt;br /&gt;
#    Tage, die das Passwort behalten werden muss, bevor es wieder geändert werden kann&lt;br /&gt;
#     Die Anzahl der Tage, nach denen der Benutzer das Passwort wieder ändern muss&lt;br /&gt;
#    Anzahl der Tage bevor das Passwort abläuft und der Benutzer gewarnt wird&lt;br /&gt;
#    Wenn der Zugang diese Anzahl von Tagen nicht benutzt wird, wird der Zugang gesperrt&lt;br /&gt;
#    Tag seit dem 1 Januar 1970, an dem der Zugang gesperrt wird&lt;br /&gt;
#    Reserviertes Feld&lt;br /&gt;
&lt;br /&gt;
Die Datei sollte aus Sicherheitgründen nicht für einen normalen Benutzer lesbar&lt;br /&gt;
sein.&lt;br /&gt;
&lt;br /&gt;
==Programme zur Userverwaltung==&lt;br /&gt;
===useradd===&lt;br /&gt;
User anlegen&lt;br /&gt;
 root@zero:~# useradd -m -u 1011 -g users -G admin -d /home/erwin -s /bin/bash -c &amp;quot;Erwin Lehman&amp;quot;  erwin&lt;br /&gt;
{| border=1 cellpadding=2&lt;br /&gt;
|&amp;quot;-m&amp;quot;&lt;br /&gt;
|Lege Homedirectory an&lt;br /&gt;
|-&lt;br /&gt;
|&amp;quot;-u 1011&amp;quot;&lt;br /&gt;
|Userid wird zugeordnet&lt;br /&gt;
|-&lt;br /&gt;
|&amp;quot;-g users&amp;quot;&lt;br /&gt;
|Primäre Gruppe wird zugeordnet&lt;br /&gt;
|-&lt;br /&gt;
|&amp;quot;-G admin&amp;quot;&lt;br /&gt;
|Sekunbdäre Gruppe wird zugeordnet&lt;br /&gt;
|-&lt;br /&gt;
|&amp;quot;-d /home/erwin/&amp;quot;&lt;br /&gt;
|Name des Homedirectory&lt;br /&gt;
|-&lt;br /&gt;
|&amp;quot;-s /bin/bash&amp;quot;&lt;br /&gt;
|Bash wird zugeordnet&lt;br /&gt;
|- &lt;br /&gt;
|&amp;quot;-c Erwin Lehman&amp;quot;&lt;br /&gt;
|Kommentarfeld&lt;br /&gt;
|-&lt;br /&gt;
|&amp;quot;erwin&amp;quot; &lt;br /&gt;
|Name des Users&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Defaulteinstellungen anzeigen&lt;br /&gt;
 root@zero:~# useradd -D&lt;br /&gt;
 GROUP=100&lt;br /&gt;
 HOME=/home&lt;br /&gt;
 INACTIVE=-1&lt;br /&gt;
 EXPIRE=&lt;br /&gt;
 SHELL=/bin/sh&lt;br /&gt;
 SKEL=/etc/skel&lt;br /&gt;
 CREATE_MAIL_SPOOL=no&lt;br /&gt;
&lt;br /&gt;
Defaulteinstellungen ändern&lt;br /&gt;
 useradd -D -s /bin/bash&lt;br /&gt;
&lt;br /&gt;
Konfigurationsdatei&lt;br /&gt;
 root@zero:~# cat /etc/default/useradd &lt;br /&gt;
 SHELL=/bin/bash&lt;br /&gt;
 GROUP=100&lt;br /&gt;
 HOME=/home&lt;br /&gt;
 INACTIVE=-1&lt;br /&gt;
 EXPIRE=&lt;br /&gt;
 SKEL=/etc/skel&lt;br /&gt;
 CREATE_MAIL_SPOOL=no&lt;br /&gt;
&lt;br /&gt;
===usermod===&lt;br /&gt;
User modifizieren&lt;br /&gt;
 root@zero:~# usermod -l fritz -s /bin/sh -G admin,video erwin&lt;br /&gt;
{| border=1 cellpadding=2&lt;br /&gt;
|&amp;quot;-l fritz&amp;quot;&lt;br /&gt;
|Neuer Username&lt;br /&gt;
|-&lt;br /&gt;
|&amp;quot;-s /bin/sh&amp;quot;&lt;br /&gt;
|Neue Shell&lt;br /&gt;
|-&lt;br /&gt;
|&amp;quot;-G admin, video&amp;quot;&lt;br /&gt;
|Sekunbdäre Gruppen werden zugeordnet&lt;br /&gt;
|-&lt;br /&gt;
|&amp;quot;erwin&amp;quot; &lt;br /&gt;
|Name des Users&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
===userdel===&lt;br /&gt;
User inklusive Homedirectory löschen&lt;br /&gt;
 root@zero:~# userdel -r fritz&lt;br /&gt;
&lt;br /&gt;
===passwd===&lt;br /&gt;
Rootpasswort ändern&lt;br /&gt;
 root@zero:~# passwd &lt;br /&gt;
 Geben Sie ein neues UNIX Passwort ein:'''sysadm''' &lt;br /&gt;
 Geben Sie das neue UNIX Passwort erneut ein:'''sysadm''' &lt;br /&gt;
 passwd: Passwort erfolgreich geändert&lt;br /&gt;
&lt;br /&gt;
Passwort von tux ändern&lt;br /&gt;
 root@zero:~# passwd tux&lt;br /&gt;
 Geben Sie ein neues UNIX Passwort ein:'''suxer''' &lt;br /&gt;
 Geben Sie das neue UNIX Passwort erneut ein:'''suxer'''&lt;br /&gt;
 passwd: Passwort erfolgreich geändert&lt;br /&gt;
&lt;br /&gt;
Minimale und Maximale Gültigkeit des Passwortes von tux festlegen&lt;br /&gt;
 root@zero:~# passwd -n 5 -x 120 tux&lt;br /&gt;
&lt;br /&gt;
===groupadd===&lt;br /&gt;
 root@zero:~# groupadd -f -g 2001 xinuxer&lt;br /&gt;
{| border=1 cellpadding=2&lt;br /&gt;
|&amp;quot;-f&amp;quot;&lt;br /&gt;
|Überschreibe bestehende Gruppe&lt;br /&gt;
|-&lt;br /&gt;
|&amp;quot;-g 2001&amp;quot;&lt;br /&gt;
|GID der Gruppe&lt;br /&gt;
|-&lt;br /&gt;
|&amp;quot;xinuxer&amp;quot; &lt;br /&gt;
|Name des Gruppe&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==chmod==&lt;br /&gt;
Die Syntax des Befehls chmod lautet:&lt;br /&gt;
&lt;br /&gt;
'''chmod''' WerWieWas [,WerWieWas,.....] Dateiliste&lt;br /&gt;
&lt;br /&gt;
oder&lt;br /&gt;
&lt;br /&gt;
'''chmod''' Oktalzahl Dateiliste&lt;br /&gt;
&lt;br /&gt;
Durch WerWieWas bzw. Oktalzahl wird die Rechtetabelle definiert. Innerhalb von&lt;br /&gt;
WerWieWas darf es kein Leerzeichen geben. Wer bezeichnet den Benutzerkreis,&lt;br /&gt;
dem man Rechte gibt, Wie die Art, in der die Rechte gegeben werden und Was die&lt;br /&gt;
Rechte als solche. Im einzelnen können folgende Kürzel benutzt werden:&lt;br /&gt;
&lt;br /&gt;
Für Wer kann eines der folgenden Kürzel oder eine Kombination davon stehen:&lt;br /&gt;
 u                   (user) Rechte für den Dateibesitzer&lt;br /&gt;
 g                   (group) Rechte für die Gruppe&lt;br /&gt;
 o                   (others) Rechte für alle anderen Benutzer&lt;br /&gt;
 a                   (all) Rechte für alle Benutzer&lt;br /&gt;
Für Wie steht eines der folgenden Kürzel:&lt;br /&gt;
 +                   Die Rechte werden zu den vorhandenen zusätzlich vergeben&lt;br /&gt;
 -                   Die im Folgenden genannten Rechte werden entzogen&lt;br /&gt;
 =                   Die im Folgenden genannten Rechte ersetzen die bisherigen&lt;br /&gt;
Für Was steht eines der folgenden Kürzel:&lt;br /&gt;
 r                   (read) lesen&lt;br /&gt;
 w                   (write) schreiben&lt;br /&gt;
 x                   (execute) ausführen&lt;br /&gt;
oder diese Sonderformen&lt;br /&gt;
 s                   (usersbit) Programm läuft unter der UID des Besitzers&lt;br /&gt;
 s                   (groupsbit)Programm läuft unter der GID des GRUPPE&lt;br /&gt;
 t                   (stickybit) Dateien im Verzeichnis darf nur Besitzer löschen&lt;br /&gt;
&lt;br /&gt;
===Beispiel===&lt;br /&gt;
Setze für alle Schreib- und Leserecht&lt;br /&gt;
 xinux@zero:~$ chmod a=rw test &lt;br /&gt;
 xinux@zero:~$ ls -l test &lt;br /&gt;
 -rw-rw-rw- 1 xinux xinux 0 2009-06-16 12:01 test&lt;br /&gt;
 xinux@zero:~$ &lt;br /&gt;
&lt;br /&gt;
Erteile Besitzer Ausführungsrecht&lt;br /&gt;
 xinux@zero:~$ chmod u+x test ; ls -l test &lt;br /&gt;
 -rwxrw-rw- 1 xinux xinux 0 2009-06-16 12:01 test&lt;br /&gt;
 xinux@zero:~$ &lt;br /&gt;
&lt;br /&gt;
===chmod oktale Schreibweise===&lt;br /&gt;
 Specialrights        User           Group         Other&lt;br /&gt;
 usbit gsbit sticky    r    w   x     r   w   x     r   w   x&lt;br /&gt;
   1     1      1      1    1   1     1   1   1     1   1   1&lt;br /&gt;
   0     0      0      0    0   0     0   0   0     0   0   0&lt;br /&gt;
 Oktale Wertigkeit pro Recht&lt;br /&gt;
   4     2       1     4    2   1     4   2   1     4   2   1&lt;br /&gt;
&lt;br /&gt;
===Beispiele===&lt;br /&gt;
 xinux@zero:~$ chmod 751 test ; ls -l test&lt;br /&gt;
 -rwxr-x--x 1 xinux xinux 0 2009-06-16 12:01 test&lt;br /&gt;
 xinux@zero:~$ &lt;br /&gt;
&lt;br /&gt;
 xinux@zero:~$ chmod 4770 test ; ls -l test&lt;br /&gt;
 -rwsrwx--- 1 xinux xinux 0 2009-06-16 12:01 test&lt;br /&gt;
 xinux@zero:~$ &lt;br /&gt;
&lt;br /&gt;
 xinux@zero:~$ chmod 0 test ; ls -l test &lt;br /&gt;
 ---------- 1 xinux xinux 0 2009-06-16 12:01 test&lt;br /&gt;
&lt;br /&gt;
===chmod Optionen===&lt;br /&gt;
 -c   (changes) es werden nur die Dateien angezeigt, deren Zugriffsrechte tatsächlich verändert werden&lt;br /&gt;
 -f   (silent, quiet) Fehlermeldungen wegen fehlgeschlagener Änderungsversuche werden unterdrückt&lt;br /&gt;
 -v   (verbose) alle Aktionen werden angezeigt&lt;br /&gt;
 -R   (recursive) die Zugriffsrechte aller Dateien in den Unterverzeichnissen werden ebenfalls geändert&lt;br /&gt;
&lt;br /&gt;
Theoretisch sind alle Kombinationen der Zugriffsrechte denkbar, aber der&lt;br /&gt;
Eigentümer einer Datei darf diese immer lesen, selbst wenn das Lesebit nicht&lt;br /&gt;
gesetzt ist. Genauso macht es wenig Sinn, eine gewöhnliche Textdatei als&lt;br /&gt;
ausführbar zu setzen; die Shell wird damit nichts anfangen können. Ein x für ein&lt;br /&gt;
Verzeichnis gibt an, dass in dieses gewechselt werden kann.&lt;br /&gt;
&lt;br /&gt;
Rechte sind verbindlich&lt;br /&gt;
&lt;br /&gt;
Interessant ist auch ein Konstrukt folgender Art&lt;br /&gt;
 -rwx---rwx&lt;br /&gt;
&lt;br /&gt;
das angibt, dass mit der Datei alles angestellt werden kann, außer durch Nutzer der&lt;br /&gt;
Gruppe. Versucht irgend jemand, der nicht der Gruppe des Eigentümers angehört,&lt;br /&gt;
die Datei zu modifizieren, wird ihm dies gelingen, einem Gruppenmitglied bleibt&lt;br /&gt;
dies versagt, obwohl er ja gleichzeitig ein &amp;quot;Anderer&amp;quot; ist. D.h. die Rechte der&lt;br /&gt;
Gruppe sind verbindlicher, als die Rechte der anderen!&lt;br /&gt;
&lt;br /&gt;
===Bedeutungen der Zugriffsarten===&lt;br /&gt;
====Dateien====&lt;br /&gt;
* r: Der Inhalt der Datei kann gelesen und damit auch kopiert werden. &lt;br /&gt;
 root@zero:~# cat test&lt;br /&gt;
 Dies ist eine Testdatei&lt;br /&gt;
  &lt;br /&gt;
 root@zero:~# cp test backup&lt;br /&gt;
&lt;br /&gt;
* w: Der Inhalt der Datei darf verändert werden. Ob die Datei gelöscht werden kann ist&lt;br /&gt;
keine Eigenschaft der Datei, sondern des Verzeichnisses, indem sich die Datei befindet.&lt;br /&gt;
 root@zero:~# cat &amp;gt; test&lt;br /&gt;
 Hier steht jetzt was anderes&lt;br /&gt;
 ^C&lt;br /&gt;
 root@zero:~# cat test&lt;br /&gt;
 Hier steht jetzt was anderes&lt;br /&gt;
  &lt;br /&gt;
 xinux@zero:~$ ls -ld verzeichnis/&lt;br /&gt;
 dr-xr-xr-x 2 xinux xinux 4096 2009-06-18 11:16 verzeichnis/&lt;br /&gt;
 xinux@zero:~/verzeichnis$ rm text&lt;br /&gt;
 rm: Entfernen von „text“ nicht möglich: Permission denied&lt;br /&gt;
&lt;br /&gt;
* x: Ausführrecht für Programme und Skripte&lt;br /&gt;
 xinux@zero:~$ ./programm&lt;br /&gt;
 -bash: ./programm: Permission denied&lt;br /&gt;
 xinux@zero:~$ chmod +x programm&lt;br /&gt;
 xinux@zero:~$ ./programm&lt;br /&gt;
 Test&lt;br /&gt;
  test&lt;br /&gt;
&lt;br /&gt;
====Verzeichnisse====&lt;br /&gt;
* r: Die Einträge in dem Verzeichnis sind lesbar.&lt;br /&gt;
Leserecht von verzeichnis/ entziehen&lt;br /&gt;
 xinux@zero:~$ chmod a-r verzeichnis/&lt;br /&gt;
 xinux@zero:~$ ls verzeichnis/&lt;br /&gt;
 ls: Öffnen von Verzeichnis verzeichnis/ nicht möglich: Permission denied&lt;br /&gt;
Leserecht für Benutzer und Gruppe vergeben&lt;br /&gt;
 xinux@zero:~$ chmod a+r verzeichnis/&lt;br /&gt;
 xinux@zero:~$ ls verzeichnis/&lt;br /&gt;
 text&lt;br /&gt;
&lt;br /&gt;
* w: Die Einträge in dem Verzeichnis können geändert werden. &lt;br /&gt;
Neue Datei erstellen&lt;br /&gt;
 xinux@zero:~$ touch neu&lt;br /&gt;
 xinux@zero:~$ ls neu&lt;br /&gt;
 neu&lt;br /&gt;
&lt;br /&gt;
Datei löschen&lt;br /&gt;
 xinux@zero:~$ rm neu&lt;br /&gt;
 xinux@zero:~$ ls neu&lt;br /&gt;
 ls: Zugriff auf neu nicht möglich: No such file or directory&lt;br /&gt;
&lt;br /&gt;
* x: Der Name des Verzeichnisses kann in einem Pfadnamen erscheinen.&lt;br /&gt;
Verzeichnis ohne x Recht&lt;br /&gt;
 xinux@zero:~$ chmod a-x verzeichnis/&lt;br /&gt;
Wechseln in Verzeichnis mangels x-Recht nicht möglich&lt;br /&gt;
 xinux@zero:~$ cd verzeichnis/&lt;br /&gt;
 -bash: cd: verzeichnis/: Permission denied&lt;br /&gt;
x-Recht vergeben&lt;br /&gt;
 xinux@zero:~$ chmod a+x verzeichnis/&lt;br /&gt;
damit Wechsel in Verzeichnis möglich&lt;br /&gt;
 xinux@zero:~$ cd verzeichnis/&lt;br /&gt;
 xinux@zero:~/verzeichnis$ pwd&lt;br /&gt;
 /home/xinux/verzeichnis&lt;br /&gt;
&lt;br /&gt;
====umask====&lt;br /&gt;
Neue Dateien und Verzeichnisse werden mit ein und denselben Zufriffsrechten erzeugt.&lt;br /&gt;
 xinux@zero:~$ mkdir text&lt;br /&gt;
 xinux@zero:~$ touch textdat&lt;br /&gt;
 xinux@zero:~$ ls -ld text*&lt;br /&gt;
 drwxr-xr-x 2 xinux xinux 4096 2009-06-18 11:37 text&lt;br /&gt;
 -rw-r--r-- 1 xinux xinux    0 2009-06-18 11:37 textdat&lt;br /&gt;
&lt;br /&gt;
Zuständig für dieses Verhalten ist die sogenannte umask, die oft in der Datei&lt;br /&gt;
/etc/profile auf den Wert 022 voreingestellt ist. Zusätzlich wird noch eine&lt;br /&gt;
Maximalmaske benötigt, die sich für Verzeichnisse und andere Dateien&lt;br /&gt;
unterscheidet. Die bei der Erzeugung gesetzten Rechte entstehen nun, indem von&lt;br /&gt;
der Maximalmaske der durch die umask vorgegebene Wert subtrahiert wird:&lt;br /&gt;
&lt;br /&gt;
{| border=1 cellpadding=2&lt;br /&gt;
!&lt;br /&gt;
! Dateien&lt;br /&gt;
! Verzeichnisse&lt;br /&gt;
|-&lt;br /&gt;
| Systemvorgabe&lt;br /&gt;
| 666&lt;br /&gt;
| 777&lt;br /&gt;
|-&lt;br /&gt;
| -umask&lt;br /&gt;
| 022&lt;br /&gt;
| 022&lt;br /&gt;
|-&lt;br /&gt;
| Ergebnis&lt;br /&gt;
| 644&lt;br /&gt;
| 755&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
 xinux@zero:~$ grep umask /etc/profile&lt;br /&gt;
 umask 022&lt;br /&gt;
&lt;br /&gt;
==Gruppenzugehörigkeit==&lt;br /&gt;
===newgrp===&lt;br /&gt;
Ändert die Gruppenzugehörigkeit eines Benutzers auf die angegebene Gruppe. Wenn keine Gruppe angegeben wird, wird die &lt;br /&gt;
Anmeldegruppe des Benutzers verwendet. Die neue Gruppe wird anschließend fü Zugriffskontrollen verwendet.&lt;br /&gt;
&lt;br /&gt;
 newgrp Gruppenname&lt;br /&gt;
&lt;br /&gt;
 root@zero:~# newgrp hacker&lt;br /&gt;
 root@zero:~# id&lt;br /&gt;
 uid=0(root) gid=1006(hacker) Gruppen=0(root),1006(hacker)&lt;br /&gt;
&lt;br /&gt;
===chgrp===&lt;br /&gt;
Verändert die Besitzugehörigkeit zu der angegebenen Gruppe&lt;br /&gt;
&lt;br /&gt;
 chgrp [Optionen] Gruppe Datei(en)&lt;br /&gt;
&lt;br /&gt;
Optionen:&lt;br /&gt;
 -c Zeigt Veränderungen an&lt;br /&gt;
 -f Unterdrückt die meisten Fehlermeldungen&lt;br /&gt;
 -R Verändert Dateien und Verzeichnisse rekursiv&lt;br /&gt;
 -v Gibt geschwätzige Ausgabe aus.&lt;br /&gt;
&lt;br /&gt;
 root@zero:~# ls -l&lt;br /&gt;
 ...&lt;br /&gt;
 d-wx--x--x  3 root root 4096 2009-06-18 13:34 verzeichnis&lt;br /&gt;
 &lt;br /&gt;
 root@zero:~# chgrp -R xinux verzeichnis/&lt;br /&gt;
 root@zero:~# ls -l&lt;br /&gt;
 ...&lt;br /&gt;
 d-wx--x--x  3 root xinux 4096 2009-06-18 13:34 verzeichnis&lt;br /&gt;
&lt;br /&gt;
 xinux@zero:~$ cd /root/verzeichnis/&lt;br /&gt;
 xinux@zero:/root/verzeichnis$ pwd&lt;br /&gt;
 /root/verzeichnis&lt;br /&gt;
&lt;br /&gt;
===chown===&lt;br /&gt;
Ändert den Eigentümer von einer oder mehreren Dateien in den angegebenen Benutzer. &lt;br /&gt;
chown erlaubt ebenfalls das Ändern der Gruppeneigentümreschaft. Nur der aktuelle Eigentümer einer&lt;br /&gt;
Datei oder der Superuser (root) darf die Eigentumsverhältnisse ändern.&lt;br /&gt;
&lt;br /&gt;
 chown [Optionen] Benutzer(:Gruppe) Dateien&lt;br /&gt;
&lt;br /&gt;
Optionen:&lt;br /&gt;
 -c Gibt Informationen über die veränderten Dateien aus&lt;br /&gt;
 --dereference Symbolischen Links folgen&lt;br /&gt;
 -v Gibt Informationen über alle Dateien aus, die chown zu ändern versucht, egal, ob die Änderung erfolgt ist oder nicht&lt;br /&gt;
 -R Geht rekursiv durch alle Unterverzeichnisse und führt die Änderungen durch. &lt;br /&gt;
&lt;br /&gt;
 root@zero:~# chown -R xinux.xinux verzeichnis/&lt;br /&gt;
 root@zero:~# ls -l&lt;br /&gt;
 insgesamt 12&lt;br /&gt;
 drwx------ 13 root  root  4096 2009-04-21 15:11 profile&lt;br /&gt;
 --w-------  1 root  root     0 2009-06-18 11:13 test&lt;br /&gt;
 -rw-r--r--  1 root  root    40 2009-06-18 12:04 text&lt;br /&gt;
 drwxrwx--x  3 xinux xinux 4096 2009-06-18 13:39 verzeichnis&lt;br /&gt;
 &lt;br /&gt;
 root@zero:~# chown -R -c xinux.xinux verzeichnis/&lt;br /&gt;
 &lt;br /&gt;
 root@zero:~# chown -R -v xinux.xinux verzeichnis/&lt;br /&gt;
 Eigentümer von „verzeichnis/01“ als xinux:xinux erhalten&lt;br /&gt;
 Eigentümer von „verzeichnis/test“ als xinux:xinux erhalten&lt;br /&gt;
 Eigentümer von „verzeichnis/“ als xinux:xinux erhalten&lt;br /&gt;
&lt;br /&gt;
==Eingabe/Ausgabe==&lt;br /&gt;
Standardeingabe (0): Laufende Programme erwarten von hier ihre Eingaben (normalerweise handelt es sich um die Tastatur).&lt;br /&gt;
&lt;br /&gt;
Standardausgabe (1): Programme schreiben auf diese ihre Ausgaben (Bildschirm).&lt;br /&gt;
&lt;br /&gt;
Standardfehlerausgabe (2) : Fehlerausgaben landen hier (Bildschirm, aber nur die aktive Konsole).&lt;br /&gt;
&lt;br /&gt;
[[Bild:std.jpg]]&lt;br /&gt;
&lt;br /&gt;
===cat===&lt;br /&gt;
Das Programm cat liest von STDIN und gibt es STDOUT wieder aus&lt;br /&gt;
&lt;br /&gt;
Einlesen der Datei text&lt;br /&gt;
 root@zero:~# cat &amp;lt; text&lt;br /&gt;
 wichtig&lt;br /&gt;
&lt;br /&gt;
Schreiben in die Datei text, dies überschreibt den bisherigen Inhalt der Datei&lt;br /&gt;
 root@zero:~# cat &amp;gt; text&lt;br /&gt;
 sogar noch wichtiger &lt;br /&gt;
 &lt;br /&gt;
Ausgeben der Datei text&lt;br /&gt;
 root@zero:~# cat text &lt;br /&gt;
 sogar noch wichtiger&lt;br /&gt;
&lt;br /&gt;
Lesen aus der Datei text und schreiben in die Datei neuertext&lt;br /&gt;
 root@zero:~# cat &amp;lt; text &amp;gt; neuertext&lt;br /&gt;
 root@zero:~# cat neuertext&lt;br /&gt;
 sogar noch wichtiger&lt;br /&gt;
&lt;br /&gt;
Anhängen der Ausgabe von date an die Datei neuertext&lt;br /&gt;
 root@zero:~# date &amp;gt;&amp;gt; neuertext&lt;br /&gt;
 root@zero:~# cat neuertext&lt;br /&gt;
 sogar noch wichtiger&lt;br /&gt;
 Do 18. Jun 14:08:58 CEST 2009&lt;br /&gt;
&lt;br /&gt;
Umleiten des Standardfehlerkanals nach error&lt;br /&gt;
 root@zero:~# rm sux 2&amp;gt; error&lt;br /&gt;
 root@zero:~# more error&lt;br /&gt;
 rm: Entfernen von „sux“ nicht möglich: No such file or directory&lt;br /&gt;
&lt;br /&gt;
===Umleitungen===&lt;br /&gt;
Nacheinander auszuführende Kommandos&lt;br /&gt;
 root@zero:~# pwd; date&lt;br /&gt;
 /root&lt;br /&gt;
 Do 18. Jun 14:13:05 CEST 2009&lt;br /&gt;
 &lt;br /&gt;
Übergeben der Ausgabe von tail als Eingabe von grep mit Hilfe der Pipe &amp;quot;|&amp;quot;&lt;br /&gt;
 root@zero:~# tail /var/log/auth.log | grep xinux&lt;br /&gt;
 Jun 18 13:52:33 zero nss_wins[11433]: pam_unix(login:session): session closed for user xinux&lt;br /&gt;
&lt;br /&gt;
Übergeben der letzten 100 Zeilen von syslog als Eingabe von grep&lt;br /&gt;
 root@zero:~# tail /var/log/syslog -n 100 | grep error&lt;br /&gt;
 Jun 18 09:30:54 zero kernel: [154384.692135] end_request: I/O error, dev fd0, sector 0&lt;br /&gt;
 Jun 18 09:30:54 zero kernel: [154384.712137] end_request: I/O error, dev fd0, sector 0&lt;br /&gt;
&lt;br /&gt;
==tr==&lt;br /&gt;
tr ist ein Programm um Zeichen zu übersetzen. Dies betrifft nur die Ausgabe, die Datei selbst bleibt unverändert.&lt;br /&gt;
&lt;br /&gt;
Ersetzt Kleinbuchstaben durch Großbuchstaben aus der Datei text&lt;br /&gt;
 root@zero:~# tr &amp;quot;a-z&amp;quot; &amp;quot;A-Z&amp;quot; &amp;lt; text&lt;br /&gt;
 SOGAR NOCH WICHTIGER&lt;br /&gt;
 123&lt;br /&gt;
 34&lt;br /&gt;
 4711&lt;br /&gt;
 TEST&lt;br /&gt;
&lt;br /&gt;
Ersetzt alle Zahlen durch X&lt;br /&gt;
 root@zero:~# tr &amp;quot;0-9&amp;quot; &amp;quot;X&amp;quot; &amp;lt; text&lt;br /&gt;
 sogar noch wichtiger&lt;br /&gt;
 XXX&lt;br /&gt;
 XX&lt;br /&gt;
 XXXX&lt;br /&gt;
 test&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
 root@zero:~# cat &amp;gt; test&lt;br /&gt;
 +++++&lt;br /&gt;
 ###&lt;br /&gt;
 1111&lt;br /&gt;
&lt;br /&gt;
-s löscht mehrfach kommende Zeichen&lt;br /&gt;
 root@zero:~# tr '''-s''' &amp;quot;+&amp;quot; &amp;lt; test&lt;br /&gt;
 +&lt;br /&gt;
 ###&lt;br /&gt;
 1111&lt;br /&gt;
&lt;br /&gt;
-d löscht vorkommende Zeichen &lt;br /&gt;
 root@zero:~# tr '''-d''' &amp;quot;#&amp;quot; &amp;lt; test&lt;br /&gt;
 +++++ &lt;br /&gt;
 &lt;br /&gt;
 1111&lt;br /&gt;
&lt;br /&gt;
==cut==&lt;br /&gt;
Spalten aus einer Datei schneiden. Dies betrifft nur die Ausgabe, die Datei selbst bleibt unverändert.&lt;br /&gt;
 &lt;br /&gt;
Schneidet die erste Spalte aus, der Delimiter ist : &lt;br /&gt;
 root@zero:~# cut -f 1 -d : /etc/passwd&lt;br /&gt;
 root&lt;br /&gt;
 daemon&lt;br /&gt;
 bin&lt;br /&gt;
 ...&lt;br /&gt;
 xinux&lt;br /&gt;
&lt;br /&gt;
 root@zero:~# more test&lt;br /&gt;
 1234#5678#9999&lt;br /&gt;
 &lt;br /&gt;
Schneidet die zweite Spalte aus, der Delimiter ist #&lt;br /&gt;
 root@zero:~# cut -f 2 -d &amp;quot;#&amp;quot; &amp;lt; test&lt;br /&gt;
 5678&lt;br /&gt;
&lt;br /&gt;
Schneidet bis zum 3 Zeichen ab&lt;br /&gt;
 root@zero:~$ echo S01policykit | cut -c 4-&lt;br /&gt;
 policykit&lt;br /&gt;
&lt;br /&gt;
==expand==&lt;br /&gt;
Ersetzt Tabulatorzeichen durch Folgen von Leerzeichen und schreibt das Ergebnis auf die Standardausgabe&lt;br /&gt;
 root@zero:~# expand /etc/samba/smb.conf&lt;br /&gt;
 ...&lt;br /&gt;
&lt;br /&gt;
==fmt==&lt;br /&gt;
#Setzt den Text der Dateien im Blocksatz der angegebenen Breite durch Auffüllen von Zeilen und Entfernen von Zeilenwechseln.&lt;br /&gt;
Standardgemäß werden Leerzeilen, die Position von Leerzeichen und der Einzug am Zeilenanfang erhalten. fmt versucht, &lt;br /&gt;
Zeilenumbrüche an Satzenden durchzuführen sowie sie nach dem ersten oder vor dem letzten Wort eines Satzes zu vermeiden. &lt;br /&gt;
 &lt;br /&gt;
 fmt [Optionen] [Dateien]&lt;br /&gt;
&lt;br /&gt;
Optionen&lt;br /&gt;
&lt;br /&gt;
* -p ''Präfix'': Formatiert nur Zeilen, die mit ''Präfix'' anfangen&lt;br /&gt;
 root@zero:/tmp# fmt -p '#' text&lt;br /&gt;
 #Setzt den Text der Dateien im Blocksatz der angegebenen Breite durch&lt;br /&gt;
 #Auffüllen von Zeilen und Entfernen von Zeilenwechseln.  Standardgemäß&lt;br /&gt;
 #werden Leerzeilen, die Position von Leerzeichen und der Einzug am&lt;br /&gt;
 #Zeilenanfang erhalten. fmt versucht,&lt;br /&gt;
 Zeilenumbrüche an Satzenden durchzuführen sowie sie nach dem ersten oder vor dem letzten Wort eines Satzes zu vermeiden.&lt;br /&gt;
&lt;br /&gt;
* -u : Erzwingt genau ein Leerzeichen zwischen Wörtern und zwei Leerzeichen zwischen Sätzen&lt;br /&gt;
&lt;br /&gt;
* -w ''Breite'': Setzt die Ausgabebreite auf ''Breite''&lt;br /&gt;
 root@zero:/tmp# fmt -w 30 text&lt;br /&gt;
 #Setzt den Text der Dateien&lt;br /&gt;
 im Blocksatz der angegebenen&lt;br /&gt;
 Breite durch Auffüllen&lt;br /&gt;
 von Zeilen und Entfernen&lt;br /&gt;
 von Zeilenwechseln.&lt;br /&gt;
 #Standardgemäß werden&lt;br /&gt;
 Leerzeilen, die Position von&lt;br /&gt;
 Leerzeichen und der Einzug am&lt;br /&gt;
 Zeilenanfang erhalten. fmt&lt;br /&gt;
 versucht, Zeilenumbrüche&lt;br /&gt;
 an Satzenden durchzuführen&lt;br /&gt;
 sowie sie nach dem ersten&lt;br /&gt;
 oder vor dem letzten Wort&lt;br /&gt;
 eines Satzes zu vermeiden.&lt;br /&gt;
&lt;br /&gt;
==join==&lt;br /&gt;
Führt die Zeilen zweier sortierter Dateien anhand von '''Übereinstimmungen''' in einem gemeinsamen Feld zusammen.&lt;br /&gt;
&lt;br /&gt;
 root@zero:~# more name&lt;br /&gt;
 1. karl&lt;br /&gt;
 2. heinz&lt;br /&gt;
 3. hans&lt;br /&gt;
 4. otto&lt;br /&gt;
 root@zero:~# more tel&lt;br /&gt;
 1. 1234&lt;br /&gt;
 2. 4321&lt;br /&gt;
 3. 222&lt;br /&gt;
 4. 121212&lt;br /&gt;
 root@zero:~# join name tel &amp;gt; telefonbuch&lt;br /&gt;
 root@zero:~# more telefonbuch&lt;br /&gt;
 1. karl 1234&lt;br /&gt;
 2. heinz 4321&lt;br /&gt;
 3. hans 222&lt;br /&gt;
 4. otto 121212&lt;br /&gt;
&lt;br /&gt;
==nl==&lt;br /&gt;
Nummeriert die Zeilen in einer Datei.&lt;br /&gt;
&lt;br /&gt;
 root@zero:~# nl /etc/passwd                                                   &lt;br /&gt;
     1  root:x:0:0:root:/root:/bin/bash                                       &lt;br /&gt;
     2  daemon:x:1:1:daemon:/usr/sbin:/bin/sh                                 &lt;br /&gt;
     3  bin:x:2:2:bin:/bin:/bin/sh                                            &lt;br /&gt;
     4  sys:x:3:3:sys:/dev:/bin/sh                                            &lt;br /&gt;
     5  sync:x:4:65534:sync:/bin:/bin/sync&lt;br /&gt;
     ...&lt;br /&gt;
&lt;br /&gt;
==od==&lt;br /&gt;
Gibt Dateien im Oktal und anderen Formaten aus.&lt;br /&gt;
&lt;br /&gt;
 od [Optionen] Datei&lt;br /&gt;
&lt;br /&gt;
* -j ''Bytes'': Überspringt die Anzahl ''Bytes'' einer Datei&lt;br /&gt;
* -N ''Bytes'': Gibt nur die Anzahl ''Bytes'' aus&lt;br /&gt;
* -c : Gebe ASCII Zeichen aus&lt;br /&gt;
* -f : Gebe Fließkommazahlen aus&lt;br /&gt;
* -i : Gebe Dezimal Integer aus&lt;br /&gt;
* -l : Gebe Dezimal Long aus&lt;br /&gt;
* -o : Gebe Oktal 2 Byte Einheiten aus&lt;br /&gt;
* -s : Gebe Dezimal 2 Byte Einheiten aus&lt;br /&gt;
* -x : Gebe Hexadezimale 2 Byte einheiten aus&lt;br /&gt;
&lt;br /&gt;
Beispiele&lt;br /&gt;
&lt;br /&gt;
Gebe Master Boot Record (die ersten 512 Byte der Festplatte /dev/sda) als Hexadezimal aus&lt;br /&gt;
 root@zero:~# od '''-x -N''' 512 /dev/sda&lt;br /&gt;
 0000000 48eb 1090 d08e 00bc b8b0 0000 d88e c08e&lt;br /&gt;
 0000020 befb 7c00 00bf b906 0200 a4f3 21ea 0006&lt;br /&gt;
 0000040 be00 07be 0438 0b75 c683 8110 fefe 7507&lt;br /&gt;
 0000060 ebf3 b416 b002 bb01 7c00 80b2 748a 0203&lt;br /&gt;
 0000100 00ff 2000 0001 0000 0200 90fa f690 80c2&lt;br /&gt;
 ...&lt;br /&gt;
&lt;br /&gt;
Schreibe &amp;quot;suxer&amp;quot; in die Datei test&lt;br /&gt;
 root@zero:~# echo &amp;quot;suxer&amp;quot; &amp;gt; test&lt;br /&gt;
Ausgabe Hexadezimal&lt;br /&gt;
 root@zero:~# od -x test&lt;br /&gt;
 0000000 7573 6578 0a72&lt;br /&gt;
 0000006&lt;br /&gt;
&lt;br /&gt;
Ausgabe ASCII Zeichen&lt;br /&gt;
 root@zero:~# od -c test&lt;br /&gt;
 0000000   s   u   x   e   r  \n&lt;br /&gt;
 0000006&lt;br /&gt;
&lt;br /&gt;
==paste==&lt;br /&gt;
Fügt die Zeilen von zwei oder mehr Dateien horizontal zusammen&lt;br /&gt;
 root@zero:~# paste name tel&lt;br /&gt;
 1. karl 1. 1234&lt;br /&gt;
 2. heinz        2. 4321&lt;br /&gt;
 3. hans 3. 222&lt;br /&gt;
 4. otto 4. 121212&lt;br /&gt;
&lt;br /&gt;
==pr==&lt;br /&gt;
Bereitet Textdateien zum Drucken vor.&lt;br /&gt;
&lt;br /&gt;
 root@zero:~# echo &amp;quot;Plan für heute&amp;quot; &amp;gt; dokument&lt;br /&gt;
 root@zero:~# more dokument&lt;br /&gt;
 Plan für heute&lt;br /&gt;
 root@zero:~# pr dokument   &lt;br /&gt;
  &lt;br /&gt;
 &lt;br /&gt;
 2009-06-19 12:44                    dokument                     Seite 1&lt;br /&gt;
 &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
 Plan für heute&lt;br /&gt;
&lt;br /&gt;
Anmerkung Ausmaße der Bildschirmausgabe wie eine Druckseite.&lt;br /&gt;
&lt;br /&gt;
==sed==&lt;br /&gt;
streaming editor. Mit sed ist es möglich, den Inhalt einer Datei automatisch (nicht interaktiv) zu&lt;br /&gt;
bearbeiten. Wie unter Linux üblich, wird auch hier der Text nicht wirklich verändert sondern die &lt;br /&gt;
Änderung erfolgt über die Standardausgabe, die wieder umgeleitet werden kann. Die Syntax ist ähnlich &lt;br /&gt;
des ex modus von vi. Reguläre Ausdrücke können nach Belieben benutzt werden. &lt;br /&gt;
&lt;br /&gt;
Optionen:&lt;br /&gt;
 -e Zeichenkette  wendet die Editorbefehle aus Zeichenkette auf den Text an.&lt;br /&gt;
 -n gibt nur die Zeilen aus, die explizit (durch &amp;quot;p&amp;quot; ausgedruckt werden sollen&lt;br /&gt;
&lt;br /&gt;
Gibt die dritte Zeile der Datei text aus&lt;br /&gt;
 root@zero:~# sed -n &amp;quot;3p&amp;quot; text&lt;br /&gt;
 34&lt;br /&gt;
&lt;br /&gt;
Gibt die erste bis dritte Zeile von text aus&lt;br /&gt;
 root@zero:~# sed -n &amp;quot;1,3p&amp;quot; text&lt;br /&gt;
 sogar noch wichtiger&lt;br /&gt;
 123&lt;br /&gt;
 34&lt;br /&gt;
&lt;br /&gt;
Löschen der Zeile mit &amp;quot;sogar&amp;quot;&lt;br /&gt;
 root@zero:~# sed -e '/sogar/d' &amp;lt; text&lt;br /&gt;
 123&lt;br /&gt;
 34&lt;br /&gt;
 4711&lt;br /&gt;
 test&lt;br /&gt;
&lt;br /&gt;
und schreiben in text2&lt;br /&gt;
 root@zero:~# sed -e '/sogar/d' &amp;lt; text &amp;gt; text2&lt;br /&gt;
 root@zero:~# more text2&lt;br /&gt;
 123&lt;br /&gt;
 34&lt;br /&gt;
 4711&lt;br /&gt;
 test&lt;br /&gt;
&lt;br /&gt;
Alle 3en durch DREI ersetzen&lt;br /&gt;
 root@zero:~# sed -e 's/3/DREI/g' &amp;lt; text&lt;br /&gt;
 sogar noch wichtiger&lt;br /&gt;
 12DREI&lt;br /&gt;
 DREI4&lt;br /&gt;
 4711&lt;br /&gt;
 test&lt;br /&gt;
&lt;br /&gt;
==wc==&lt;br /&gt;
Zählt die Anzahl von Zeichen, Wörter oder Zeilen&lt;br /&gt;
&lt;br /&gt;
Optionen&lt;br /&gt;
* -m : Zählt die Anzahl der Zeichen&lt;br /&gt;
 root@zero:~# more name&lt;br /&gt;
 1. karl&lt;br /&gt;
 2. heinz&lt;br /&gt;
 3. hans&lt;br /&gt;
 4. otto&lt;br /&gt;
 root@zero:~# wc '''-m''' tel&lt;br /&gt;
 33 tel&lt;br /&gt;
&lt;br /&gt;
* -w : Zählt die Anzahl der Wörter (einschließlich Zahlen und andere Zeichen)&lt;br /&gt;
 root@zero:~# wc '''-w''' name&lt;br /&gt;
 8 name&lt;br /&gt;
&lt;br /&gt;
* -l : Zählt die Anzahl der Zeilen&lt;br /&gt;
 root@zero:~# wc '''-l''' name&lt;br /&gt;
 4 name&lt;br /&gt;
&lt;br /&gt;
==INodes==&lt;br /&gt;
Inode (oder I-Node) wird im Deutschen am besten als Informationsknoten oder&lt;br /&gt;
Indexeintrag bezeichnet. Er fasst alle Attribute einer Datei zusammen außer dem Inhalt&lt;br /&gt;
und dem Namen der Datei.&lt;br /&gt;
&lt;br /&gt;
===Daten===&lt;br /&gt;
{| border=1 cellpadding=2&lt;br /&gt;
|type&lt;br /&gt;
|Der Typ der Datei wird als einzelner Buchstabe angezeigt. Der Typ einer Datei wird beim Anlegen der Datei festgelegt&lt;br /&gt;
|-&lt;br /&gt;
|Permissions &lt;br /&gt;
|Die Zugriffsrechte der Datei werden in den 12 Bit sstrwxrwxrwx abgespeichert.Wenn sie gesetzt sind, werden sie bei &lt;br /&gt;
der Ausgabe an Stelle der x-Rechte ausgegeben. Die Zugriffsrechte können mit dem Kommando chmod verändert werden.&lt;br /&gt;
|-&lt;br /&gt;
|link count&lt;br /&gt;
|In UNIX kann eine Datei mehr als einen Namen haben. Der Link Count gibt die Anzahl der Namen einer Datei an. Er kann&lt;br /&gt;
mit dem Kommando ln erhöht und dem Kommando rm erniedrigt werden.&lt;br /&gt;
|-&lt;br /&gt;
|owner&lt;br /&gt;
|Für den Dateieigentümer gelten die in der ersten rwx-Gruppe festgelegten Zugriffsrechte. Standardmäßig ist der &lt;br /&gt;
Eigentümer einer Datei derjenige Benutzer, der die Datei angelegt hat.&lt;br /&gt;
|-&lt;br /&gt;
|group&lt;br /&gt;
|Für Benutzer, die in der gleichen Gruppe sind, der die Datei angehört, gelten die in der zweiten rwx-Gruppe festgelegten&lt;br /&gt;
Zugriffsrechte. In System V gehört eine Datei standardmäßig der Gruppe an, in der der anlegende Benutzer gerade ist.&lt;br /&gt;
|-&lt;br /&gt;
|size&lt;br /&gt;
|Bei normalen Dateien und Verzeichnissen gibt diese Information die Länge der Datei in Byte an.&lt;br /&gt;
|-&lt;br /&gt;
|access time&lt;br /&gt;
|Die Zugriffszeit gibt den Zeitpunkt des letzten Lesezugriffes auf eine Datei an. Aus Effizienzgründen wird die &lt;br /&gt;
Zugriffszeit an Verzeichnissen nicht gesetzt, wenn ein Verzeichnis durchsucht wird, obwohl man dies erwarten könnte.&lt;br /&gt;
|-&lt;br /&gt;
|modification time&lt;br /&gt;
|Die Modifikationszeit gibt die Zeit des letzten Schreibzugriffes auf die Daten der Datei an. Intern speichert UNIX &lt;br /&gt;
die Zeit als Sekunden seit Beginn des Jahres 1970 und in GMT ab. Für die Ausgabe wird dies in ein besser lesbares &lt;br /&gt;
Format in der lokalen Zeitzone umgewandelt.&lt;br /&gt;
|-&lt;br /&gt;
|change time &lt;br /&gt;
|Die Veränderungszeit gibt das Datum der letzten Statusänderung der Datei an. Sie wird immer dann gesetzt, wenn die &lt;br /&gt;
Informationen über die Datei sich ändern (Datum der Erzeugung wird nicht gespeichert)&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
===Dateiarten===&lt;br /&gt;
{| border=1 cellpadding=2&lt;br /&gt;
!Zeichen&lt;br /&gt;
!Typ&lt;br /&gt;
!Zweck&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;nowiki&amp;gt;-&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
|file&lt;br /&gt;
|normale Datei&lt;br /&gt;
|-&lt;br /&gt;
|d&lt;br /&gt;
|directory&lt;br /&gt;
|Verzeichnis&lt;br /&gt;
|-&lt;br /&gt;
|b&lt;br /&gt;
|block device&lt;br /&gt;
|Gerätedatei&lt;br /&gt;
|-&lt;br /&gt;
|c&lt;br /&gt;
|character device&lt;br /&gt;
|Gerätedatei&lt;br /&gt;
|-&lt;br /&gt;
|l&lt;br /&gt;
|link&lt;br /&gt;
|Querverweis&lt;br /&gt;
|-&lt;br /&gt;
|p&lt;br /&gt;
|named pipe&lt;br /&gt;
|Benannte Pipeline&lt;br /&gt;
|-&lt;br /&gt;
|s&lt;br /&gt;
|socket&lt;br /&gt;
|Netzwerkverbindung&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
====Normale Dateien====&lt;br /&gt;
Unter einer normalen Datei versteht man die Ansammlung von Daten. Dies kann ein Text, Programm, Bild oder sonstiges sein. &lt;br /&gt;
Beispiel&lt;br /&gt;
 root@zero:~# ls text&lt;br /&gt;
 text&lt;br /&gt;
&lt;br /&gt;
====Verzeichnisse====&lt;br /&gt;
Dateien werden in Verzeichnissen gespeichert, nur so ist eine Ordnung möglich. &lt;br /&gt;
 root@zero:~# mkdir -v Ordner&lt;br /&gt;
 mkdir: Verzeichnis „Ordner“ angelegt&lt;br /&gt;
 &lt;br /&gt;
 root@zero:~# ls -d ~/*&lt;br /&gt;
 /root/error  /root/neuertext  /root/Ordner  /root/profile  /root/test  /root/text  /root/verzeichnis&lt;br /&gt;
&lt;br /&gt;
====Gerätedateien (Block und Char)====&lt;br /&gt;
Gerätedateien ermöglichen Anwendungsprogrammen unter Benutzung des  Kernels den Zugriff auf die Hardwarekomponenten des &lt;br /&gt;
Systems. &lt;br /&gt;
&lt;br /&gt;
Beispiele&lt;br /&gt;
&lt;br /&gt;
Sicherung des Master Boot Records der ersten Festplatte&lt;br /&gt;
 root@zero:~# dd if=/dev/sda1 of=/tmp/mbr.img bs=512 count=1&lt;br /&gt;
&lt;br /&gt;
Einhängen des CD-ROM Laufwerks&lt;br /&gt;
 root@zero:~# mount /dev/cdrom /media/cdrom -t iso9660&lt;br /&gt;
&lt;br /&gt;
====Named Pipes====&lt;br /&gt;
Benannte Pipes (Named Pipes) können dagegen auch zur Kommunikation zwischen Prozessen eingesetzt werden, die nicht miteinander&lt;br /&gt;
verwandt sind und sich darüber hinaus auf unterschiedlichen Rechnern innerhalb eines Netzwerkes befinden dürfen. Sie sind &lt;br /&gt;
flexibler als anonyme Pipes und eignen sich für sogenannte Client-Server-Anwendungen (es lassen sich auch RPCs realisieren).&lt;br /&gt;
Benannte Pipes ermöglichen die gleichzeitige Kommunikation in beide Richtungen, das heißt, Daten können im Vollduplexbetrieb &lt;br /&gt;
zwischen den Prozessen ausgetauscht werden.&lt;br /&gt;
 &lt;br /&gt;
Erstelle Named Pipe mit Namen sux. Schreibe &amp;quot;Hallo Welt&amp;quot; in die Pipe sux und bleibe im Hintergrund. Gebe Inhalt der Pipe mit cat aus&lt;br /&gt;
 root@zero:~# mkfifo sux ; echo 'Hallo Welt' &amp;gt; sux &amp;amp; cat &amp;lt; sux&lt;br /&gt;
 [1] 12947&lt;br /&gt;
 Hallo Welt&lt;br /&gt;
 [1]+  Done                    echo 'Hallo Welt' &amp;gt; sux&lt;br /&gt;
&lt;br /&gt;
====Sockets====&lt;br /&gt;
Schnittstelle um es vernetzten Rechnern zu ermöglichen, miteinander zu kommunizieren.&lt;br /&gt;
&lt;br /&gt;
Sie ist in der Regel definiert durch IP-Adresse sowie Port. &lt;br /&gt;
&lt;br /&gt;
====Links====&lt;br /&gt;
Bei Links handelt es sich um symbolische Verweise auf andere Dateien&lt;br /&gt;
&lt;br /&gt;
'''Softlink'''&lt;br /&gt;
Ein Softlink ist eine Datei die nur auf den Namen einer anderen Datei verweist. Wenn die Originaldatei gelöscht wird, zeigt &lt;br /&gt;
der Link ins Leere. &lt;br /&gt;
&lt;br /&gt;
 ln -s datei softlink&lt;br /&gt;
&lt;br /&gt;
{| border=1 cellpadding=2&lt;br /&gt;
| Vorteile&lt;br /&gt;
| Symbolische Links können auch auf Verzeichnisse angelegt werden&amp;lt;br&amp;gt;Sie sind partitionsübergreifend&amp;lt;br&amp;gt;Man kann sie auf Dateien anlegen, die noch nicht existieren&lt;br /&gt;
|-&lt;br /&gt;
| Nachteile&lt;br /&gt;
| Wenn das Original gelöscht ist, ist kein Zugriff mehr möglich&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Beispiel&lt;br /&gt;
 root@zero:~# ln -s text verweis&lt;br /&gt;
 root@zero:~# ls -l verweis&lt;br /&gt;
 lrwxrwxrwx 1 root root 4 2009-06-18 15:48 verweis -&amp;gt; text&lt;br /&gt;
&lt;br /&gt;
'''Hardlinks'''&lt;br /&gt;
 ln datei hardlink&lt;br /&gt;
Eigentlich ist jede Datei ein Hardlink. Ein Hardlink ist ein Verzeichniseintrag,&lt;br /&gt;
der auf eine Inode verweist. Beim Erzeugen einer Datei verweist ein Eintrag auf&lt;br /&gt;
eine Inode. Man kann dann weitere Verweise erzeugen. Der Linkcounter wird&lt;br /&gt;
jeweils um 1 erhöht. Beim Löschen einer Datei wird er jeweils um 1 reduziert.&lt;br /&gt;
Wird der Wert 0 erreicht, ist die Datei gelöscht.&lt;br /&gt;
{| border=1 cellpadding=2&lt;br /&gt;
| Vorteile&lt;br /&gt;
|Zugriff auf die Daten, selbst wenn das Orginal gelöscht ist.&lt;br /&gt;
|-&lt;br /&gt;
|Nachteile&lt;br /&gt;
|Man kann keine Hardlinks auf Verzeichnisse anlegen.&lt;br /&gt;
Ist nur innerhalb einer Partion möglich.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Beispiel&lt;br /&gt;
 root@zero:~# touch 1&lt;br /&gt;
 root@zero:~# echo &amp;quot;text&amp;quot; &amp;gt; 1&lt;br /&gt;
 root@zero:~# ln 1 2&lt;br /&gt;
 root@zero:~# more 2&lt;br /&gt;
 text&lt;br /&gt;
 root@zero:~# echo &amp;quot;doch kein text&amp;quot; &amp;gt; 1&lt;br /&gt;
 root@zero:~# more 1&lt;br /&gt;
 doch kein text&lt;br /&gt;
 root@zero:~# more 2&lt;br /&gt;
 doch kein text&lt;br /&gt;
&lt;br /&gt;
Weitere Optionen:&lt;br /&gt;
 -b sichert Dateien, statt sie zu überschreiben &lt;br /&gt;
 -f Überschreibt bestehende, gleichnamige Dateien&lt;br /&gt;
 -i fragt vor dem Überschreiben nach Bestätigung&lt;br /&gt;
 -v ausführliche Meldungen&lt;br /&gt;
&lt;br /&gt;
==Prozesse==&lt;br /&gt;
===Was ist ein Prozess?===&lt;br /&gt;
Ein Prozess setzt sich aus zwei Teilen zusammen:&lt;br /&gt;
&lt;br /&gt;
1.Programm, das in den Hauptspeicher geladen wurde&lt;br /&gt;
&lt;br /&gt;
2.Prozessumgebung&lt;br /&gt;
&lt;br /&gt;
Unter einem Prozess versteht man ein Programm (binär), das in den Hauptspeicher&lt;br /&gt;
geladen wurde. Also nicht das Program selbst, das auf der Festplatte liegt ist der&lt;br /&gt;
Prozess, sondern es wird erst durch das Laden in den Hauptspeicher dazu.&lt;br /&gt;
Normalerweise liegt ein Programm als ausführbare Datei irgendwo auf der&lt;br /&gt;
Festplatte oder auf Diskette. Ob es sich bei dem Programm um eine binäre Datei&lt;br /&gt;
handelt, kann man mit dem Befehl '' file '' feststellen.&lt;br /&gt;
 &lt;br /&gt;
 root@zero:~# file /bin/mkdir&lt;br /&gt;
 /bin/mkdir: ELF 32-bit LSB executable, Intel 80386, version 1 (SYSV), dynamically linked (uses shared libs), for GNU/Linux 2.6.8, stripped&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Die Datei liegt im Maschinencode vor und kann in den Hauptspeicher geladen&lt;br /&gt;
werden. Sobald dies geschehen ist, kann der Rechner diesen Maschinencode&lt;br /&gt;
abarbeiten (ausführen).&lt;br /&gt;
&lt;br /&gt;
Da aber ein Programm nicht direkt auf die Hardware zugreifen soll, muss es vom&lt;br /&gt;
Betriebsystem kontrolliert werden. Das Betriebssystem liegt logisch gesehen&lt;br /&gt;
zwischen Hardware und Anwendung. Das Betriebssystem ordnet jedem Prozess&lt;br /&gt;
verschiedene Kenndaten zu, um die Prozesse verwalten zu können. Alle&lt;br /&gt;
Kenndaten, die einem Prozess zugeordnet sind, nennt man die&lt;br /&gt;
Prozessumgebung.Wenn man in der Shell ein Kommando eingibt, wird ein Prozess&lt;br /&gt;
kreiert. Natürlich ist die Shell selbst auch ein Prozess. Ein Prozess kann aber&lt;br /&gt;
genauso gut ein Serverprozess (Dienst) sein, z.B. Apache.&lt;br /&gt;
Ein wesentliches Merkmal eines Prozesses ist die Prozesskommunikation. Über im&lt;br /&gt;
Betriebssystem implementierte Methoden ist es möglich, dass verschiedene&lt;br /&gt;
Prozesse Signale und Daten untereinander austauschen können.&lt;br /&gt;
Dadurch wird auch dem Benutzer ermöglicht, einem Prozeß bestimmte Signale zu&lt;br /&gt;
senden bzw. auf den Status eines Prozesses Einfluss zu nehmen.&lt;br /&gt;
&lt;br /&gt;
===Prozesstabelle (Anzeige mit ps)===&lt;br /&gt;
Da zu jedem Prozess Kenndaten geführt werden, müssen diese auch irgendwo&lt;br /&gt;
festgehalten werden. Das geschieht in der sogenannten Prozesstabelle.&lt;br /&gt;
&lt;br /&gt;
Kenndaten der Prozesse (Auswahl):&lt;br /&gt;
* F Flags (z.B. ausgelagert; Systemprozess; Trace,...)&lt;br /&gt;
* UID Nutzer, mit dessen Rechten der Prozess ausgeführt wird&lt;br /&gt;
* PID Prozess - ID. Diese Nummer gibt eine eindeutige Prozess - Nummer&lt;br /&gt;
an. Sie wird vom System automatisch beim Starten des Prozesses&lt;br /&gt;
vergeben und ist für die Laufzeit eindeutig.&lt;br /&gt;
* PPID Prozessnumer der Eltern-Prozesses&lt;br /&gt;
* PRI Priorität eines Prozesses; je niedriger der Wert ist, desto besser&lt;br /&gt;
* NI ist der Nicewert des Prozesses; Nice erniedrigt den Grundwert&lt;br /&gt;
der Priorität des Prozesses und gibt damit Prozessorzeit für andere&lt;br /&gt;
Prozesse frei.&lt;br /&gt;
* SIZE Speichergröße des Prozesses inklusive Stack (eine Art Zwischenspeicher)&lt;br /&gt;
* RSS Verbrauch an physischen Speicher&lt;br /&gt;
* WCHAN ist der Name der Kernerlfunktion, in der der Prozess schläft&lt;br /&gt;
* STAT Status des Prozesses&lt;br /&gt;
R läuft       S schlafend     D nicht störbarer Schlaf&lt;br /&gt;
T angehalten  Z Zombie        W der Prozess belegt keine Seiten&lt;br /&gt;
* TIME Bisland benötigte Prozessorzeit&lt;br /&gt;
* SIZE ist die Größe von Text, Daten und Stack&lt;br /&gt;
* TTY die Nummer des kontrollierenden Teminal; wenn hier ein ? steht,&lt;br /&gt;
handelt es sich um einen Dämon oder Serverprozess.&lt;br /&gt;
* COMMAND Angabe des Prozesses selbst. Dies ist meist der Programmname.&lt;br /&gt;
&lt;br /&gt;
Weiteres&lt;br /&gt;
* GID Gruppe, unter der der Prozess läuft&lt;br /&gt;
* Verweis auf das aktuellen Arbeitsverzeichnis&lt;br /&gt;
* Um mit relativen Pfadangaben arbeiten zu können braucht man diesen Eintrag&lt;br /&gt;
* Tabelle mit Verweisen auf aktuell geöffnete Dateien&lt;br /&gt;
* 3 sind automatisch geöffnet Standardeingabe, Standardausgabe und&lt;br /&gt;
Standardfehlerkanal&lt;br /&gt;
&lt;br /&gt;
Beispiel&lt;br /&gt;
 root@zero:~# ps -l&lt;br /&gt;
 F S   UID   PID  PPID  C PRI  NI ADDR SZ WCHAN  TTY          TIME CMD&lt;br /&gt;
 4 R     0 18639 18631  0  80   0 -  1080 -      pts/0    00:00:00 bash&lt;br /&gt;
 0 R     0 25904 18639  0  80   0 -   635 -      pts/0    00:00:00 ps&lt;br /&gt;
&lt;br /&gt;
===Eltern und Kinder===&lt;br /&gt;
Jeder Prozess kann weitere Prozesse erzeugen. Die erzeugten Prozesse bezeichnet&lt;br /&gt;
man als Kindprozesse. Jeder Kindprozess weiß anhand der PID, woher er stammt.&lt;br /&gt;
&lt;br /&gt;
Alle Prozesse sind von einem anderen Prozess gestartet worden, mit Ausnahme&lt;br /&gt;
des Pseudoprozesses (noch im Kernel beim Starten erzeugter Prozess). Dieser hat&lt;br /&gt;
die Prozessnummer 0. Er hat die Aufgabe, den Init Prozess ( /sbin/init die Nummer&lt;br /&gt;
1) zu starten, der in System V alle anderen Prozesse direkt oder über seine Kind-&lt;br /&gt;
prozesse startet. (init wird konfiguriert durch die /etc/inittab)&lt;br /&gt;
&lt;br /&gt;
Es gibt zwei Arten wie ein Prozess gestartet werden kann:&lt;br /&gt;
&lt;br /&gt;
# Fork und Exec: Prozessumgebung wird dupliziert, der neue Prozess bekommt eine eigene neue PID&lt;br /&gt;
# Exec: Alter Prozess wird durch neuen Prozess überladen (geht mit dem shell-buildin exec)&lt;br /&gt;
&lt;br /&gt;
'''Rechte auf Objekte UID GID'''&lt;br /&gt;
Ob ein Prozess auf eine Datei zugreifen kann, entscheidet der Kernel anhand der&lt;br /&gt;
Zugriffssrechte, die auf der Datei gesetzt sind. Er checkt anhand der UID und GID&lt;br /&gt;
des Prozesses, ob es erlaubt ist. Mit dieser Technik wird letztendlich geprüft, was&lt;br /&gt;
ein User darf, und was nicht.&lt;br /&gt;
&lt;br /&gt;
===Rechenzeit und Priorität===&lt;br /&gt;
Da auch bei Prozessen eine Gerechtigkeit herschen muss, muss eine Instanz&lt;br /&gt;
darüber entscheiden wie lange ein Prozess Rechenzeit verbrauchen darf.&lt;br /&gt;
Folgende Kenndaten werden dazu benötigt&lt;br /&gt;
* clocktick = Zeiteinheit&lt;br /&gt;
* n = Faktor über den Kernel einstellbar&lt;br /&gt;
* slice = n &amp;lt;nowiki&amp;gt;*&amp;lt;/nowiki&amp;gt; clocktick&lt;br /&gt;
* agingtime = weitere Zeiteinheit über den Kernel einstellbar&lt;br /&gt;
&lt;br /&gt;
Es wird davon ausgegangen das der Prozess mit der niedrigsten Priorität gerade&lt;br /&gt;
rechnet. Pro clocktick erhöht sich die Priorität dieses Prozesses um eins.&lt;br /&gt;
&lt;br /&gt;
Jetzt können 3 Situationen eintreten die alle dazu führen das der Scheduler&lt;br /&gt;
aufgerufen wird.&lt;br /&gt;
&lt;br /&gt;
# Prozess blockiert wegen einer Ausgabe oder Eingabe.&lt;br /&gt;
# Gibt Rechenzeit freiwillig ab.&lt;br /&gt;
# Der Slice endet.&lt;br /&gt;
&lt;br /&gt;
Der Aufruf des Schedulers bewirkt das der Prozess mit der niedrigsten Priorität&lt;br /&gt;
gescheduled wird, er also nun rechnen darf. Nach Ablauf der agingtime werden&lt;br /&gt;
nun die Prozesse &amp;quot;gealtert&amp;quot;. Das geschieht nach folgender Formel&lt;br /&gt;
&lt;br /&gt;
Neue Priorität = Alte Priorität / 2 + Nicewert&lt;br /&gt;
&lt;br /&gt;
Der User hat die Möglichkeit, über den sogenannten Nicefaktor den Grundwert für&lt;br /&gt;
einen Prozess zu senken. Der Prozess braucht dann länger für seine Abarbeitung.&lt;br /&gt;
Er verhält sich somit netter zu den anderen Prozessen. Normale User können nur&lt;br /&gt;
netter werden, der Systemverwalter kann auch nicht netter (gemeiner) werden. Der&lt;br /&gt;
Bereich liegt zwischen 19 (sehr nett) bis 0 (weniger nett) für die User, und 19 bis&lt;br /&gt;
-20 für root.&lt;br /&gt;
&lt;br /&gt;
[[Image:pri.png]]&lt;br /&gt;
&lt;br /&gt;
'''Signale'''&lt;br /&gt;
&lt;br /&gt;
Mit den Kommando kill und killall kann man Prozessen Signale schicken&lt;br /&gt;
&lt;br /&gt;
 kill -Signalnummer PID &lt;br /&gt;
&lt;br /&gt;
Signalnummer&lt;br /&gt;
{| border=1 cellpadding=2&lt;br /&gt;
!Signalname&lt;br /&gt;
!Wert&lt;br /&gt;
!Aktion&lt;br /&gt;
|-&lt;br /&gt;
|SIGHUP&lt;br /&gt;
|1&lt;br /&gt;
|Neuinitialisierung eines Prozesses&lt;br /&gt;
|-&lt;br /&gt;
|SIGINT&lt;br /&gt;
|2&lt;br /&gt;
|Interrupt-Signal von der Tastatur (STRG+c)&lt;br /&gt;
|-&lt;br /&gt;
|SIGQUIT&lt;br /&gt;
|3&lt;br /&gt;
|Interrupt-Signal von der Tastatur (STRG+c) mit Dump&lt;br /&gt;
|-&lt;br /&gt;
|SIGKILL&lt;br /&gt;
|9&lt;br /&gt;
|unwiderrufliches Beendigungssignal (Töten)&lt;br /&gt;
|-&lt;br /&gt;
|SIGSEGV&lt;br /&gt;
|11&lt;br /&gt;
|Ungültige Speicherreferenz (bedeutet oft auf defekten Speicher)&lt;br /&gt;
|-&lt;br /&gt;
|SIGTERM &lt;br /&gt;
|15&lt;br /&gt;
|Beendigungssignal (geöffnete Dateien werden geschlossen)&lt;br /&gt;
|-&lt;br /&gt;
|SIGCONT &lt;br /&gt;
|18&lt;br /&gt;
|Weiterfahren, wenn gestoppt&lt;br /&gt;
|-&lt;br /&gt;
|SIGSTOP&lt;br /&gt;
|19&lt;br /&gt;
|Prozessstop&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Beispiel&lt;br /&gt;
 root@zero:~# kill -1 7562&lt;br /&gt;
&lt;br /&gt;
===Programme im Zusammenhang mit Prozessen===&lt;br /&gt;
* ps: Zeigt die Prozesse mit ihrem Status an&lt;br /&gt;
 root@zero:~# ps&lt;br /&gt;
  PID TTY          TIME CMD&lt;br /&gt;
 14134 pts/0    00:00:00 bash&lt;br /&gt;
 14149 pts/0    00:00:00 ps&lt;br /&gt;
&lt;br /&gt;
 root@zero:~# ps -elf | grep apache&lt;br /&gt;
 1 S root      5738     1  0  80   0 -  5461 select Jun16 ?        00:00:00 /usr/sbin/apache2 -k start&lt;br /&gt;
 5 S www-data  5739  5738  0  80   0 -  5581 inet_c Jun16 ?        00:00:00 /usr/sbin/apache2 -k start&lt;br /&gt;
 5 S www-data  5742  5738  0  80   0 -  5461 inet_c Jun16 ?        00:00:00 /usr/sbin/apache2 -k start&lt;br /&gt;
 5 S www-data  5743  5738  0  80   0 -  5461 inet_c Jun16 ?        00:00:00 /usr/sbin/apache2 -k start&lt;br /&gt;
 5 S www-data  5745  5738  0  80   0 -  5461 inet_c Jun16 ?        00:00:00 /usr/sbin/apache2 -k start&lt;br /&gt;
 5 S www-data  5746  5738  0  80   0 -  5461 inet_c Jun16 ?        00:00:00 /usr/sbin/apache2 -k start&lt;br /&gt;
 0 S root     14153 14134  0  80   0 -   837 pipe_w 16:59 pts/0    00:00:00 grep apache&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* nice: Lässt ein Programm mit verändertem Grundwert der Priorität laufen&lt;br /&gt;
 root@zero:~# nice&lt;br /&gt;
 0&lt;br /&gt;
 root@zero:~# nice -n 9 bash&lt;br /&gt;
 root@zero:~# nice&lt;br /&gt;
 9&lt;br /&gt;
 root@zero:~#&lt;br /&gt;
&lt;br /&gt;
* renice: Ändert den Grundwert der Priorität eines laufenden Prozesses&lt;br /&gt;
 root@zero:~# renice 10 5742&lt;br /&gt;
 5742: Alte Priorität: 0, neue Priorität: 10&lt;br /&gt;
&lt;br /&gt;
* top: Zeigt die Prozesse mit ihrem Status an (Abbrechen mit q)&lt;br /&gt;
 root@zero:~# top&lt;br /&gt;
&lt;br /&gt;
* pstree: Zeigt die Prozesse als Baumstruktur&lt;br /&gt;
 root@zero:~# pstree&lt;br /&gt;
 init─┬─NetworkManager&lt;br /&gt;
      ├─acpid&lt;br /&gt;
      ├─apache2───5*[apache2]&lt;br /&gt;
      ├─atd&lt;br /&gt;
      ├─bluetoothd&lt;br /&gt;
      ├─console-kit-dae───63*[{console-kit-dae}]&lt;br /&gt;
      ├─cron&lt;br /&gt;
      ├─cupsd&lt;br /&gt;
      ├─dbus-daemon&lt;br /&gt;
      ├─dd&lt;br /&gt;
      ├─gdm───gdm─┬─Xorg&lt;br /&gt;
      │           └─gdmgreeter&lt;br /&gt;
      ├─6*[getty]&lt;br /&gt;
      ├─hald───hald-runner─┬─hald-addon-acpi&lt;br /&gt;
      │                    ├─hald-addon-inpu&lt;br /&gt;
      │                    └─2*[hald-addon-stor]&lt;br /&gt;
      ├─klogd&lt;br /&gt;
      ├─nm-system-setti&lt;br /&gt;
      ├─nmbd&lt;br /&gt;
      ├─nscd───11*[{nscd}]&lt;br /&gt;
      ├─portmap&lt;br /&gt;
      ├─rpc.statd&lt;br /&gt;
      ├─slapd───2*[{slapd}]&lt;br /&gt;
      ├─smbd───smbd&lt;br /&gt;
      ├─sshd───sshd───bash───bash───pstree&lt;br /&gt;
      ├─syslogd&lt;br /&gt;
      ├─system-tools-ba&lt;br /&gt;
      ├─udevd&lt;br /&gt;
      ├─winbindd─┬─winbindd───winbindd&lt;br /&gt;
      │          └─3*[winbindd]&lt;br /&gt;
      └─wpa_supplicant&lt;br /&gt;
&lt;br /&gt;
===Jobs===&lt;br /&gt;
Unter einem Job versteht man ein Programm, welches man von der Shell gelöst&lt;br /&gt;
hat. D. h. man kann ganz normal weiter arbeiten und der Job verrichtet seinen&lt;br /&gt;
Dienst im Hintergrund. Man kann jederzeit zu diesem Job wieder Kontakt&lt;br /&gt;
aufnehmen.&lt;br /&gt;
&lt;br /&gt;
Ein Job kann auf 2 Arten gestarten werden:&lt;br /&gt;
&lt;br /&gt;
# Durch Anhängen des &amp;amp; Zeichens beim Programmstart&lt;br /&gt;
 root@zero:~# tail -f /var/log/messages &amp;amp;&lt;br /&gt;
 Jun 19 06:59:31 zero -- MARK --&lt;br /&gt;
 Jun 19 07:19:31 zero -- MARK --&lt;br /&gt;
 Jun 19 07:39:32 zero -- MARK --&lt;br /&gt;
 Jun 19 07:44:57 zero syslogd 1.5.0#5ubuntu3: restart.&lt;br /&gt;
 Jun 19 07:59:32 zero -- MARK --&lt;br /&gt;
 Jun 19 08:19:32 zero -- MARK --&lt;br /&gt;
 Jun 19 08:39:32 zero -- MARK --&lt;br /&gt;
 Jun 19 08:59:32 zero -- MARK --&lt;br /&gt;
 Jun 19 09:19:33 zero -- MARK --&lt;br /&gt;
 Jun 19 09:39:33 zero -- MARK --&lt;br /&gt;
 [3] 27421&lt;br /&gt;
&lt;br /&gt;
# Durch Stoppen des Prozesses durch Drücken von Strg-Z und in den Hintergrund schicken mit %n (n ist die Jobnummer)&lt;br /&gt;
 root@zero:~# watch cat /proc/cpuinfo&lt;br /&gt;
 Strg-Z&lt;br /&gt;
 [4]+  Stopped                 watch cat /proc/cpuinfo&lt;br /&gt;
 root@zero:~# bg %4&lt;br /&gt;
 [4]+ watch cat /proc/cpuinfo &amp;amp;&lt;br /&gt;
&lt;br /&gt;
Anweisungen im Zusammenhang mit Jobs (n ist die Jobnummer)&lt;br /&gt;
* bg %n : Einen Job in den Hintergrund stellen (wie oben)&lt;br /&gt;
* fg %n : Einen Job in den Vordergrund holen&lt;br /&gt;
 root@zero:~# fg %4&lt;br /&gt;
 watch cat /proc/cpuinfo&lt;br /&gt;
&lt;br /&gt;
* jobs : Aktive Jobs ausgeben&lt;br /&gt;
&lt;br /&gt;
 root@zero:~# jobs&lt;br /&gt;
 [1]   Running                 tail -f /var/log/syslog &amp;amp;&lt;br /&gt;
 [2]   Running                 tail -f /var/log/syslog &amp;amp;&lt;br /&gt;
 [3]-  Running                 tail -f /var/log/messages &amp;amp;&lt;br /&gt;
 [4]+  Stopped                 watch cat /proc/cpuinfo&lt;br /&gt;
&lt;br /&gt;
* Strg-Z : Einen Vordergrund-Job vorübergehend anhalten&lt;br /&gt;
* kill -STOP %n : Unterbricht Job im Hintergrund&lt;br /&gt;
 root@zero:~# kill -STOP %1&lt;br /&gt;
 root@zero:~# jobs&lt;br /&gt;
 [1]+  '''Stopped'''                 tail -f /var/log/syslog&lt;br /&gt;
 [2]   Running                 tail -f /var/log/syslog &amp;amp;&lt;br /&gt;
 [3]   Running                 tail -f /var/log/messages &amp;amp;&lt;br /&gt;
 [4]-  Stopped                 watch cat /proc/cpuinfo&lt;br /&gt;
* kill -CONT %n : Setzt den unterbrochenen Job im Hintergrund fort&lt;br /&gt;
root@zero:~# kill -CONT %1&lt;br /&gt;
root@zero:~# jobs&lt;br /&gt;
 [1]+  '''Running'''                 tail -f /var/log/syslog &amp;amp;&lt;br /&gt;
 [2]   Running                 tail -f /var/log/syslog &amp;amp;&lt;br /&gt;
 [3]   Running                 tail -f /var/log/messages &amp;amp;&lt;br /&gt;
 [4]-  Stopped                 watch cat /proc/cpuinfo&lt;br /&gt;
* kill -KILL %n : Tötet Job im Hintergrund&lt;br /&gt;
 root@zero:~# kill -KILL %1&lt;br /&gt;
 root@zero:~# jobs&lt;br /&gt;
 [1]+  '''Killed'''                  tail -f /var/log/syslog&lt;br /&gt;
 [2]   Running                 tail -f /var/log/syslog &amp;amp;&lt;br /&gt;
 [3]   Running                 tail -f /var/log/messages &amp;amp;&lt;br /&gt;
 [4]-  Stopped                 watch cat /proc/cpuinfo&lt;br /&gt;
 root@zero:~# jobs&lt;br /&gt;
 [2]   Running                 tail -f /var/log/syslog &amp;amp;&lt;br /&gt;
 [3]-  Running                 tail -f /var/log/messages &amp;amp;&lt;br /&gt;
 [4]+  Stopped                 watch cat /proc/cpuinfo&lt;br /&gt;
&lt;br /&gt;
Bedingungen, die zu Jobausführung eingehalten werden sollen:&lt;br /&gt;
* Der Job soll nicht auf den Bildschirm schreiben (Standardausgabe +Standardfehlerkanal).&lt;br /&gt;
* Er soll keine Eingaben vom Benutzer erwarten.&lt;br /&gt;
&lt;br /&gt;
==Suchen von Dateien==&lt;br /&gt;
===find===&lt;br /&gt;
 find ab_wo_wird_gesucht was_wird_gesucht aktion&lt;br /&gt;
 find [Pfad] [Bedingung] [Aktion]&lt;br /&gt;
&lt;br /&gt;
====Nach Namen====&lt;br /&gt;
 find [Pfad] '''-name''' [Name]&lt;br /&gt;
 &lt;br /&gt;
Finde alle Dateien mit Namen test ab dem Verzeichnis /home und gebe diese Zeilenweise aus&lt;br /&gt;
 root@zero:~# find /home -name test -print&lt;br /&gt;
 /home/xinux/test&lt;br /&gt;
 /home/test&lt;br /&gt;
&lt;br /&gt;
Wie oben, jedoch mit Namensanfang test&lt;br /&gt;
 root@zero:/home/xinux# find /home -name 'test*'&lt;br /&gt;
 /home/xinux/testdatei&lt;br /&gt;
 /home/xinux/test&lt;br /&gt;
 /home/test&lt;br /&gt;
&lt;br /&gt;
====Nach Benutzer(Eigentümer)====&lt;br /&gt;
 root@zero:/tmp# find /tmp/ '''-user''' xinux&lt;br /&gt;
 /tmp/datei&lt;br /&gt;
&lt;br /&gt;
====Nach Gruppe====&lt;br /&gt;
 root@zero:/tmp# find /tmp/ '''-group''' hacker&lt;br /&gt;
 /tmp/datei3&lt;br /&gt;
 /tmp/datei2&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
====Nach Typ====&lt;br /&gt;
Es wird nach Dateien anhand Ihrer Art gesucht:&lt;br /&gt;
 find [Pfad] '''-type''' [Typ] &lt;br /&gt;
Typ:&lt;br /&gt;
* f: Normale Dateien&lt;br /&gt;
 root@zero:~# find /tmp/ -type f&lt;br /&gt;
 /tmp/mbr.img&lt;br /&gt;
 /tmp/datei&lt;br /&gt;
 /tmp/zeugs&lt;br /&gt;
 /tmp/.X0-lock&lt;br /&gt;
* d: Verzeichnisse&lt;br /&gt;
 root@zero:~# find /var/log -type d&lt;br /&gt;
 /var/log&lt;br /&gt;
 /var/log/apache2&lt;br /&gt;
 /var/log/unattended-upgrades&lt;br /&gt;
 /var/log/apparmor&lt;br /&gt;
 /var/log/ConsoleKit&lt;br /&gt;
 /var/log/dist-upgrade&lt;br /&gt;
 /var/log/dist-upgrade/20090526-1052&lt;br /&gt;
 /var/log/cups&lt;br /&gt;
 /var/log/apt&lt;br /&gt;
 /var/log/fsck&lt;br /&gt;
 /var/log/samba&lt;br /&gt;
 /var/log/samba/cores&lt;br /&gt;
 /var/log/samba/cores/smbd&lt;br /&gt;
 /var/log/samba/cores/nmbd&lt;br /&gt;
 /var/log/samba/cores/winbindd&lt;br /&gt;
 /var/log/installer&lt;br /&gt;
 /var/log/gdm&lt;br /&gt;
 /var/log/news&lt;br /&gt;
* c: Char Devices (Zeichenorientierte Gerätedatei)&lt;br /&gt;
 root@zero:~# find / -type c&lt;br /&gt;
 /lib/udev/devices/kmem&lt;br /&gt;
 /lib/udev/devices/null&lt;br /&gt;
 /lib/udev/devices/console&lt;br /&gt;
 /lib/udev/devices/ppp&lt;br /&gt;
 /lib/udev/devices/net/tun&lt;br /&gt;
* b: Block Devices (Blockorientierte Gerätedatei)&lt;br /&gt;
* p: Benannte Pipe&lt;br /&gt;
* l: Links&lt;br /&gt;
* s: Sockets&lt;br /&gt;
&lt;br /&gt;
====Nach Modifikation====&lt;br /&gt;
Listet alle Dateien in /etc auf, die innerhalb von zwei Tagen modifiziert wurden&lt;br /&gt;
 root@zero:/var/log# find /etc/ -mtime 2 -print&lt;br /&gt;
 /etc/apache2&lt;br /&gt;
 /etc/apache2/mods-available&lt;br /&gt;
 /etc/apache2/conf.d&lt;br /&gt;
 /etc/apache2/sites-available&lt;br /&gt;
 /etc/bash_completion.d&lt;br /&gt;
 /etc/blkid.tab.old&lt;br /&gt;
 /etc/firefox-3.0/profile&lt;br /&gt;
 /etc/firefox-3.0/profile/chrome&lt;br /&gt;
 /etc/firefox-3.0/pref&lt;br /&gt;
 /etc/profile.d&lt;br /&gt;
 /etc/ufw/applications.d&lt;br /&gt;
 /etc/logrotate.d&lt;br /&gt;
 /etc/xulrunner-1.9&lt;br /&gt;
 /etc/blkid.tab&lt;br /&gt;
 /etc/cron.daily&lt;br /&gt;
 /etc/alternatives&lt;br /&gt;
 /etc/alternatives/x-www-browser&lt;br /&gt;
 /etc/alternatives/xulrunner&lt;br /&gt;
 /etc/gre.d&lt;br /&gt;
 /etc/hal/fdi/policy&lt;br /&gt;
 /etc/dbus-1/system.d&lt;br /&gt;
 /etc/udev/rules.d&lt;br /&gt;
&lt;br /&gt;
====Nach Größe====&lt;br /&gt;
Finde Dateien in /tmp, die größer als 100 MByte sind&lt;br /&gt;
 root@zero:/tmp# find /tmp/ -size +100M&lt;br /&gt;
 /tmp/datei&lt;br /&gt;
&lt;br /&gt;
Finde Dateien in /tmp, die kleiner als 100 KByte sind&lt;br /&gt;
 root@zero:/tmp# find /tmp/ -size -100k&lt;br /&gt;
 /tmp/&lt;br /&gt;
 /tmp/datei3&lt;br /&gt;
 /tmp/backup &lt;br /&gt;
 /tmp/datei2&lt;br /&gt;
 /tmp/.winbindd &lt;br /&gt;
 /tmp/.winbindd/pipe&lt;br /&gt;
 /tmp/mbr.img&lt;br /&gt;
 /tmp/zeugs&lt;br /&gt;
 /tmp/.ICE-unix&lt;br /&gt;
 /tmp/.X0-lock&lt;br /&gt;
 /tmp/datei1&lt;br /&gt;
 /tmp/.X11-unix&lt;br /&gt;
 /tmp/.X11-unix/X0&lt;br /&gt;
 /tmp/pulse-PKdhtXMmr18n&lt;br /&gt;
&lt;br /&gt;
====Nach Berechtigungen====&lt;br /&gt;
Finde Dateien in Home mit der Berechtigung 777 (-rwxrwxrwx)&lt;br /&gt;
 root@zero:/var# find /home/ -perm 777&lt;br /&gt;
 /home/samba&lt;br /&gt;
 /home/xinux/Examples&lt;br /&gt;
 /home/xinux/.pulse/1f0763ee4cf4c7e1d3c07fd149dda37b:runtime&lt;br /&gt;
 /home/test/Examples&lt;br /&gt;
&lt;br /&gt;
===locate===&lt;br /&gt;
Locate arbeitet über einen Index, der erstellt und aktualisiert werden muss. Aus diesem Grund kann locate teilweise nicht &lt;br /&gt;
akutell sein. Es ist immer schneller als find und es durchsucht immer das ganze Dateisystem. &lt;br /&gt;
 locate [Dateiname]&lt;br /&gt;
 &lt;br /&gt;
Lokalisiere die Datei wvdial.conf. Anmerkung: Der Stern wird beim Suchen automatisch hinzugefügt. Entspricht also&lt;br /&gt;
wvidal.conf*&lt;br /&gt;
 root@zero:~# locate wvdial.conf&lt;br /&gt;
 /etc/wvdial.conf&lt;br /&gt;
 /usr/share/man/man5/wvdial.conf.5.gz&lt;br /&gt;
 /var/lib/dpkg/info/wvdial.conffiles&lt;br /&gt;
 /var/lib/dpkg/info/wvdial.config&lt;br /&gt;
&lt;br /&gt;
Lokalisiere die Datei wvdial.conf und nur diese&lt;br /&gt;
 root@zero:~# locate -b '\wvdial.conf'&lt;br /&gt;
 /etc/wvdial.conf&lt;br /&gt;
&lt;br /&gt;
Aktualisieren des Indexes&lt;br /&gt;
 root@zero:~# updatedb&lt;br /&gt;
&lt;br /&gt;
==Wie wird ein Kommando lokalisiert==&lt;br /&gt;
Wenn die Shell alle Ersetzungen in der Kommandozeile vorgenommen und alle Umleitungen vorbereitet hat, ist der Zeitpunkt &lt;br /&gt;
gekommen, auf den der Anwender die ganze Zeit gewartet hat. Die Shell versucht das Kommando auszuführen. Dazu muss sie &lt;br /&gt;
es aber erst lokalisieren. Das erste passende Kommando wird ausgeführt.&lt;br /&gt;
&lt;br /&gt;
Als Kommandoname wird immer das erste Wort eines einfachen Kommandos erkannt. Ein Kommandoname kann mit Pfadnamen in &lt;br /&gt;
einem Verzeichnis (absolut oder relativ) angegeben werden. Die Shell erkennt dies an (mindestens) einem Slash `/' &lt;br /&gt;
im Kommandonamen. Wenn kein Verzeichnis angegeben ist, versucht die Shell selbst, das Kommando zu finden. Dazu wird &lt;br /&gt;
der Kommandoname zuerst in der Hashtabelle gesucht, dann wird er mit den Synonymen, mit den Scriptfunktionen und &lt;br /&gt;
schließlich mit den Shellfunktionen verglichen. &lt;br /&gt;
&lt;br /&gt;
Wird auf diese Weise kein Programm dieses Namens gefunden, werden alle in der PATH-Umgebungsvariablen aufgeführten &lt;br /&gt;
Verzeichnisse nach einer ausführbaren Datei dieses Namens durchsucht. Wird auch hier kein passendes Kommando gefunden, &lt;br /&gt;
gibt die Shell eine Fehlermeldung aus.&lt;br /&gt;
&lt;br /&gt;
===which und type===&lt;br /&gt;
====which====&lt;br /&gt;
which gibt die vollen Pfadnamen der Dateien aus, die bei Benutzung des angegebenen Befehls ausgeführt werden würden.&lt;br /&gt;
&lt;br /&gt;
 which [-a] Dateiname &lt;br /&gt;
&lt;br /&gt;
Optionen:&lt;br /&gt;
&lt;br /&gt;
* -a : Alle Treffer ausgeben, nicht nur den ersten&lt;br /&gt;
* --skip-dot : Verzeichnisse, die mit einem Punkt beginnen, auslassen&lt;br /&gt;
&lt;br /&gt;
Beispiel&lt;br /&gt;
 root@zero:~# which startx&lt;br /&gt;
 /usr/bin/startx&lt;br /&gt;
&lt;br /&gt;
====type====&lt;br /&gt;
Anzeigen der absoluten Pfadnamen von Befehlen, und ob sich diese Befehle in der Hash-Tabelle der aktuellen&lt;br /&gt;
Shell befinden.&lt;br /&gt;
&lt;br /&gt;
 type [Optionen] Befehle&lt;br /&gt;
&lt;br /&gt;
Beispiel&lt;br /&gt;
 root@zero:~# type ls&lt;br /&gt;
 ls is aliased to `ls --color=auto'&lt;br /&gt;
&lt;br /&gt;
Optionen:&lt;br /&gt;
&lt;br /&gt;
* -a : Alle vorkommenden Befehle werden ausgegeben, nicht nur das, welches aufgerufen werden würde&lt;br /&gt;
 root@zero:~# type '''-a''' ls&lt;br /&gt;
 ls is aliased to `ls --color=auto'&lt;br /&gt;
 ls is /bin/ls&lt;br /&gt;
&lt;br /&gt;
* -p : Anzeigen des Eintrags von Befehl in der Hash-Tabelle. Dieser Wert kann sich vom ersten Auftreten des Befehls in PATH&lt;br /&gt;
unterscheiden&lt;br /&gt;
 root@zero:~# type '''-p''' apache2&lt;br /&gt;
 /usr/sbin/apache2&lt;br /&gt;
&lt;br /&gt;
* -t : Anzeigen, ob Befehl ein Aliasname, ein Schlüsselwort, eine Funktion, ein eingebauter Befehl oder eine Datei ist&lt;br /&gt;
 root@zero:~# type '''-t''' apache2&lt;br /&gt;
 file&lt;/div&gt;</summary>
		<author><name>192.168.178.46</name></author>
	</entry>
	<entry>
		<id>https://www.xinux.net/index.php?title=Linux_Grundlagen&amp;diff=69</id>
		<title>Linux Grundlagen</title>
		<link rel="alternate" type="text/html" href="https://www.xinux.net/index.php?title=Linux_Grundlagen&amp;diff=69"/>
		<updated>2009-07-07T07:51:04Z</updated>

		<summary type="html">&lt;p&gt;192.168.178.46: /* cut */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Einführung==&lt;br /&gt;
===Geschichte Unix===&lt;br /&gt;
====1969====&lt;br /&gt;
Am Anfang von Linux steht Multics, ein von Bell Laboratories geschaffenes &amp;quot;Betriebssystem&amp;quot;, &lt;br /&gt;
das noch mit Lochkarten arbeitete. Multics wird mit Unterstützung von AT&amp;amp;T und Western &lt;br /&gt;
Electric unter Mitarbeit von Ken Thompson und Dennis Ritchie weiterentwickelt. Obwohl sich &lt;br /&gt;
Bell Laboratories bald zurückzieht, gibt Thompson das Projekt nicht auf.  Zum Entwicklerteam &lt;br /&gt;
gehören auch Rudd Canaday und Brian Kernighan. Letzterer gibt 1970 dem Betriebssystem den Namen UNIX. &lt;br /&gt;
Thompson definiert 7 Richtlinien für UNIX:&lt;br /&gt;
 &lt;br /&gt;
# Hierarchische Anordnung der Dateisysteme&lt;br /&gt;
# Die Ausgabe von Daten an die Peripherie(-geräte) und Dateien soll gleich sein.&lt;br /&gt;
# Prozesse und Programme sollen miteinander kommunizieren.&lt;br /&gt;
# Multitasking (voneinander getrennte Prozesse)&lt;br /&gt;
# Persönliche Shell's&lt;br /&gt;
# Der Compiler soll für viele Programmiersprachen tauglich sein.&lt;br /&gt;
# Portabilität&lt;br /&gt;
&lt;br /&gt;
====1971====&lt;br /&gt;
Bis 1971 ist das für eine DEC PDP-7 geschriebene Unix als Version 1 auf eine PDP-11 portiert. Bis&lt;br /&gt;
zur Version 4 entwickelt Ritchie die Programmier- (Hoch-) Sprache C. Das in Assembler geschriebene&lt;br /&gt;
Unix wird fast völlig nach C übersetzt, wodurch zum erstenmal die geforderte Hardware-Unabhängigkeit&lt;br /&gt;
des Betriebssystems realisiert werden kann.&lt;br /&gt;
&lt;br /&gt;
====1975====&lt;br /&gt;
Da AT&amp;amp;T aufgrund vertraglicher Bindungen mit der US-Bundesregierung Unix nicht kommerziell vermarkten darf, stellt sie den Source Code für ein paar hundert Dollar den Universitäten, Lehr- und Forschungsanstalten zur Verfügung. Dies führt zu einer sehr dynamischen Entwicklung von Unix. 1975 wird die Version 6 als erstes UNIX-System veröffentlicht, die darauffolgende Version 7 wird sehr erfolgreich. Da es keine Standardisierung gibt, entwickeln bald verschiedenste Firmen ihr eigenes UNIX. Ab 1984 wird AT&amp;amp;T per Gerichtsbeschluss erlaubt, Unix zu vermarkten. AT&amp;amp;T verkauft sein Unix V und beginnt, sich um einen internationalen Standard von UNIX zu bemühen. &lt;br /&gt;
&lt;br /&gt;
====1984====&lt;br /&gt;
Durch Richard Stallman wird die Free Software Foundation (FSF) gegründet. Diese initiiert ein Projekt namens GNU (GNU ist Not Unix), welches das Ziel verfolgt, ein freies UNIX System zu schaffen. &lt;br /&gt;
&lt;br /&gt;
====1987====&lt;br /&gt;
AT&amp;amp;T verbietet die Verwendung des Unix Quellcodes an den Universitäten. Während dieser Zeit ist Andrew (Andy) Tannenbaum Professor an der Freien Universität von Amsterdam und entwickelt Minix. Minix ist ein kostengünstiges Lehrbetriebssystem und kommt ohne jeglichen AT&amp;amp;T Code aus, obwohl es die gleiche Funktionalität wie Unix 7 bietet. Im Usenet unter comp.os.minix entsteht eine Minix-Gemeinde, die den Minix Kernel und die Anwendungen rundherum programmiert und verbessert.&lt;br /&gt;
&lt;br /&gt;
====1991====&lt;br /&gt;
Linus Torvalds hat als Student für Computerwissenschaften an der Universität in Helsinki Minix installiert und das Buch von Andy Tannenbaum gelesen. Er beginnt im Sinne der FSF einen Unix ähnlichen Kernel zu programmieren mit der Idee, &amp;quot;ein besseres Minix als Minix&amp;quot; zu bauen. 1992 stellt er die Version 0.02 mit dem Namen Linux der Internetgemeinde zur Verfügung. &lt;br /&gt;
&lt;br /&gt;
====1994====&lt;br /&gt;
Die Linux Version 1.0 wird freigegeben. Das Linux Fieber beginnt... &lt;br /&gt;
&lt;br /&gt;
====1998====&lt;br /&gt;
Der Kreis der Linux Entwickler und Anwender ist kräftig angeschwollen. KDE 1.0 wird veröffentlicht. Die Zuwachsraten von Linux übertreffen die von Windows NT deutlich. &lt;br /&gt;
&lt;br /&gt;
====1999====&lt;br /&gt;
Der lange erwartete stabile Linux Kernel Version 2.2 wird freigegeben. Namhafte Firmen wie IBM kündigen ihre Unterstützung für Linux an. &lt;br /&gt;
&lt;br /&gt;
====2001====&lt;br /&gt;
Der lange erwartete stabile Linux Kernel Version 2.4 wird freigegeben. USB Unterstützung und eine neue Firewallimplementierung zeichnen ihn aus.&lt;br /&gt;
&lt;br /&gt;
====2003====&lt;br /&gt;
Linux Kernel Version 2.6 wird freigegeben. Am auffälligsten sind Änderungen bei der Modulverwaltung.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Distributionen===&lt;br /&gt;
{| Border=1 Cellpadding=2&lt;br /&gt;
| &lt;br /&gt;
|Url&lt;br /&gt;
|Paketformat&lt;br /&gt;
|-&lt;br /&gt;
|Red Hat&lt;br /&gt;
|www.redhat.com&lt;br /&gt;
|rpm&lt;br /&gt;
|-&lt;br /&gt;
|fedora&lt;br /&gt;
|fedora.redhat.com&lt;br /&gt;
|rpm&lt;br /&gt;
|-&lt;br /&gt;
|CentOS&lt;br /&gt;
|www.centos.org&lt;br /&gt;
|rpm&lt;br /&gt;
|-&lt;br /&gt;
|Suse/openSUSE&lt;br /&gt;
|www.opensuse.org&lt;br /&gt;
|rpm&lt;br /&gt;
|-&lt;br /&gt;
|Debian&lt;br /&gt;
|www.debian.org&lt;br /&gt;
|deb&lt;br /&gt;
|-&lt;br /&gt;
|Ubuntu&lt;br /&gt;
|www.ubuntu.com&lt;br /&gt;
|deb&lt;br /&gt;
|-&lt;br /&gt;
|Mandrake&lt;br /&gt;
|www.linux-mandrake.com&lt;br /&gt;
|rpm&lt;br /&gt;
|-&lt;br /&gt;
|Easy Linux&lt;br /&gt;
|www.easy-linux.de&lt;br /&gt;
|rpm&lt;br /&gt;
|-&lt;br /&gt;
|Turbo&lt;br /&gt;
|www.turbolinux.com&lt;br /&gt;
|rpm&lt;br /&gt;
|-&lt;br /&gt;
|minis&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|toms&lt;br /&gt;
|www.toms.net/rb&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|damn small linux&lt;br /&gt;
|www.damnsmalllinux.org&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|pocket-linux&lt;br /&gt;
|www.pocket-linux.org&lt;br /&gt;
|&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
====Bücher====&lt;br /&gt;
 Titel : Das Linux Anwenderhandbuch und Leitfaden für die Systemverwaltung&lt;br /&gt;
 Autor : Sebastian Hetze, Dirk Hohndel, Olaf Kirch und Martin Müller&lt;br /&gt;
 Verlag: Lunetix&lt;br /&gt;
 ISBN : 3-929764-06-7&lt;br /&gt;
&lt;br /&gt;
 Titel : Linux in a Nutshell&lt;br /&gt;
 Autor : Jessica Perry Hekman und die Mitarbeiter von O'Reilly &amp;amp; Associates&lt;br /&gt;
 Verlag: O'Reilly&lt;br /&gt;
 ISBN : 3-930673-57-6&lt;br /&gt;
&lt;br /&gt;
 Titel : Linux - Wegweiser zur Installation und Konfiguration&lt;br /&gt;
 Autor : Matt Welsh, Lar Kaufman, Matthias Kalle Dallheimer&lt;br /&gt;
 Verlag: O'Reilly&lt;br /&gt;
 ISBN : 3-930673-58-4 (deutsch), 1-56592-469-X (englisch)&lt;br /&gt;
&lt;br /&gt;
 Titel : Linux - Installation, Konfiguration, Anwendung&lt;br /&gt;
 Autor : Michael KoflerMultitasking&lt;br /&gt;
 Verlag: Addison-Wesley&lt;br /&gt;
 ISBN : 3-8273-1475-5&lt;br /&gt;
&lt;br /&gt;
 Titel : Linux - Wegweiser für Netzwerker&lt;br /&gt;
 Autor : Olaf Kirch&lt;br /&gt;
 Verlag: O'Reilly&lt;br /&gt;
 ISBN : 3-930673-18-5&lt;br /&gt;
&lt;br /&gt;
 Titel : TCP/IP-Netzwerk-Administration&lt;br /&gt;
 Autor : Craig Hunt&lt;br /&gt;
 Verlag: O'Reilly&lt;br /&gt;
 ISBN : 3-89721-110-6&lt;br /&gt;
&lt;br /&gt;
 Titel : Essential System Administration&lt;br /&gt;
 Autor : Eleen Frisch&lt;br /&gt;
 Verlag: O'Reilly&lt;br /&gt;
 ISBN : 1-56592-127-5&lt;br /&gt;
&lt;br /&gt;
==Betriebssystem==&lt;br /&gt;
===Was ist ein Betriebssystem?===&lt;br /&gt;
&lt;br /&gt;
Ein Betriebssystem liegt logisch gesehen zwischenAnwendungsprogramm und Hardware.&lt;br /&gt;
&lt;br /&gt;
Es nimmt die Anforderungen der Anwendungsprogramme entgegen und leitet&lt;br /&gt;
diese kontrolliert an die Hardware weiter. Kein Anwendungsprogramm sollte&lt;br /&gt;
direkt auf die Hardware zugreifen können. Den zentralen Zugang schafft einzig&lt;br /&gt;
das Betriebssystem. Somit kann das Betriebssystem unsinnige Anforderungen&lt;br /&gt;
oder Bedienungsfehler abblocken.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Image:Linux.jpg]]&lt;br /&gt;
&lt;br /&gt;
===Aufgaben eines Betriebssystems===&lt;br /&gt;
&lt;br /&gt;
# Verbergen der Komplexität der Maschine vor dem Anwender (Abstraktion)&lt;br /&gt;
# Bereitstellen einer Benutzerschnittstelle (&amp;quot;Kommandointerpreter&amp;quot;, &amp;quot;Shell&amp;quot;)&lt;br /&gt;
# Bereitstellen einer normierten Programmierschnittstelle (API)&lt;br /&gt;
# Verwaltung der Ressourcen der Maschine::&lt;br /&gt;
Hauptspeicher&lt;br /&gt;
Prozessor(en)&lt;br /&gt;
Hintergrundspeicher (Platte, Band, etc.)&lt;br /&gt;
Geräte (Terminal, Drucker, Plotter, etc.)&lt;br /&gt;
Rechenzeit&lt;br /&gt;
Koordination von Prozessen&lt;br /&gt;
&lt;br /&gt;
===Aufbau eines Betriebssystems===&lt;br /&gt;
&lt;br /&gt;
Ein Rechensystem besteht aus Hardware, Systemprogrammen und Anwendungs-&lt;br /&gt;
programmen. Unter einem Betriebssystem wird meist die Summe aus Betriebs-&lt;br /&gt;
systemkern (Kernel) und den wichtigsten Systemprogrammen verstanden. Ein&lt;br /&gt;
minimaler LINUX-Kernel besitzt ungefähr eine Größe von 400 - 800 kByte.&lt;br /&gt;
Weitere wichtige Systemkomponenten benötigen zusätzlich 10 - 100 Mbyte&lt;br /&gt;
Plattenplatz.&lt;br /&gt;
&lt;br /&gt;
Ein Betriebssystem stellt den Rechner als erweiterte Maschine (virtuelle&lt;br /&gt;
Maschine) über definierte Software-Schnittstellen zur Verfügung.&lt;br /&gt;
Das Betriebssystem dient als Betriebsmittelverwalter, der Anforderungen&lt;br /&gt;
befriedigt, protokolliert, abrechnet und vermittelt.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Aufgaben des Betriebssystemkerns:&lt;br /&gt;
&lt;br /&gt;
{| Border=1 Cellpadding=2&lt;br /&gt;
|Prozessverwaltung  (dispatching and scheduling)&lt;br /&gt;
| Mehrere Benutzer können mit mehreren Aktionen gleichzeitig im System arbeiten, ohne sich gegenseitig zu beeinflussen. Damit dies möglich ist,  müssen die Aktionen organisiert, koordiniert und verwaltet werden. Die zu verwaltende Einheit nennt man Prozess.&lt;br /&gt;
|-&lt;br /&gt;
|Speicherverwaltung   (memory management)&lt;br /&gt;
|Zuteilen von Speicherbereichen an laufende Prozesse, Schutz der Speicherbereiche vor unbefugten Zugriffen, bei Speicherengpässen: Auslagern von ganzen (swapping) oder von Teilen (paging) von Prozessen auf die Platte (swap file).&lt;br /&gt;
|-&lt;br /&gt;
|Dateiverwaltung  (file handling)&lt;br /&gt;
|Zuteilung von Plattenplatz für Programme, Benutzer und Systemdienste, Schreiben, Lesen und Strukturieren der Daten auf den Massenspeichern; Durch Bereitstellung einer entsprechenden Schnittstelle (VFS, virtual file system) kann der Kern Dateisysteme unterschiedlichster Art (EXT2, FAT, NFS, HPFS, NTFS, ...) ansprechen.&lt;br /&gt;
|-&lt;br /&gt;
|Geräteverwaltung  (resource management)&lt;br /&gt;
|Der Kern ermöglicht und kontrolliert den Zugriff auf die Hardware. Er steuert die Ein- und Ausgabetätigkeiten der Anwender. An den Kern&lt;br /&gt;
gebunden sind die entsprechenden Gerätetreiber (device driver), die damit eine Kommunikation zwischen Kern und Hardware ermöglichen.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
===Multitasking===&lt;br /&gt;
&lt;br /&gt;
Multitasking bedeutet, dass ein Rechner aus Anwendersicht mehrere Aufgaben&lt;br /&gt;
(Tasks) gleichzeitg übernehmen kann. Das Betriebssystem (OS) unterteilt die&lt;br /&gt;
gleichzeitig anstehenden Aufgaben in Einzelarbeitsschritte (Prozesse) und&lt;br /&gt;
managed durch ein Zeitscheibenverfahren (scheduling) die gleichmäßige&lt;br /&gt;
Abarbeitung der Prozesse.&lt;br /&gt;
&lt;br /&gt;
Es wird unterschieden zwischen:&lt;br /&gt;
&lt;br /&gt;
*non-präamptiven (kooperativen=die Ressourcen werden vom aktiven Prozess freigegeben, bei einem Hänger steht das ganze System)&lt;br /&gt;
&lt;br /&gt;
und&lt;br /&gt;
&lt;br /&gt;
*präamptiven (reinem=der Betriebssystemkern steuert Taskwechsel, indem nach einer festgelegten Zeit vom gerade aktiven Prozess zum nächsten weitergeschaltet wird)&lt;br /&gt;
&lt;br /&gt;
===Mehrprozessorbetrieb===&lt;br /&gt;
&lt;br /&gt;
Bei mehreren Prozessoren und Unterstützung durch das OS&lt;br /&gt;
(NT,Linux,Unix,Novell) können mehrere Tasks auf diese verteilt werden und&lt;br /&gt;
gleichzeitig bearbeitet werden. Nachteilig ist, dass dies nicht oder kaum von&lt;br /&gt;
Anwendungsprogrammen unterstützt wird und es zu Kommunikationsproblemen&lt;br /&gt;
zwischen den einzelnen Tasks kommen kann.&lt;br /&gt;
&lt;br /&gt;
===Arten von von Betriebssystemen===&lt;br /&gt;
&lt;br /&gt;
{|Border=1 Cellpadding=2&lt;br /&gt;
|&lt;br /&gt;
|SingleUser  &lt;br /&gt;
|Multiuser&lt;br /&gt;
|-&lt;br /&gt;
|Single Tasking&lt;br /&gt;
|MS - DOS&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|Multi Tasking&lt;br /&gt;
|Windows 3.x&lt;br /&gt;
|UNIX&lt;br /&gt;
|-&lt;br /&gt;
|&lt;br /&gt;
|Windows 95/98&lt;br /&gt;
|Linux&lt;br /&gt;
|-&lt;br /&gt;
|&lt;br /&gt;
|Windows NT4 ohne Erweiterungen&lt;br /&gt;
|VMS&lt;br /&gt;
|-&lt;br /&gt;
|&lt;br /&gt;
|OS/2 &lt;br /&gt;
|Windows NT mit  Erweiterungen&lt;br /&gt;
|-&lt;br /&gt;
|&lt;br /&gt;
|Apple&lt;br /&gt;
|Windows 2000, XP, 2003&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
===SHELL===&lt;br /&gt;
&lt;br /&gt;
Wenn man mit Linux arbeiten will, kann man nicht direkt mit dem Betriebssystem&lt;br /&gt;
kommunizieren. Man braucht dazu ein Hilfsprogramm, welches die&lt;br /&gt;
Kommandoeingaben ordnungsgemäß an das Betriebssystem weiterleitet. Dieses&lt;br /&gt;
Hilfsprogramm hat den Namen Shell.&lt;br /&gt;
&lt;br /&gt;
Die Shell schirmt den Betriebssystemkern von den Anwendungsprogrammen ab.&lt;br /&gt;
Die unterschiedlichen Shells erfüllen alle dieselbe Aufgabe, sie unterscheiden sich&lt;br /&gt;
allerdings in ihrer Syntax.&lt;br /&gt;
&lt;br /&gt;
==Die Installation im Überblick==&lt;br /&gt;
&lt;br /&gt;
Die Installation von Linux geschieht in folgenden Schritten:&lt;br /&gt;
&lt;br /&gt;
# Analyse (Welche Hardware habe ich? ,Hab ich weitere Betriebsysteme?)&lt;br /&gt;
# Booten des Linux-Kernels. (von CD oder Diskette)&lt;br /&gt;
# Laden einer RAM-Disk (das macht das Installationsprogramm automatisch).&lt;br /&gt;
# Partitionieren der Festplatte (fdisk).&lt;br /&gt;
# Einrichten der Swappartition (mkswap), Formatieren der Festplatte (mkfs).&lt;br /&gt;
# Montieren der Dateisysteme (mount), Aktivieren der Swapbereiche (swapon).&lt;br /&gt;
# Kopieren und Auspacken der Daten vom Installationsmedium auf die Festplatte (die eigentliche Installation). (rpm, dpkg oder tar).&lt;br /&gt;
# Geeignete Wahl der Bootmethode unter Berücksichtigung von Punkt 1 (grub, lilo).&lt;br /&gt;
# Konfiguration des Systems (Netz, Modem etc...).&lt;br /&gt;
&lt;br /&gt;
==Erste Schritte==&lt;br /&gt;
===Anmelden===&lt;br /&gt;
Sie können sich nun mit dem Usernamen und dem Passwort, das sie bei der Installation angelegt haben anmelden!&lt;br /&gt;
[[Image:benutzer.jpg]]&lt;br /&gt;
&lt;br /&gt;
[[Image:passwd.jpg]]&lt;br /&gt;
&lt;br /&gt;
===Terminal öffnen===&lt;br /&gt;
&lt;br /&gt;
Ein Terminal öffnen Sie über das Startmenü:&lt;br /&gt;
&lt;br /&gt;
[[Image:Terminalde.jpg]]&lt;br /&gt;
&lt;br /&gt;
Das geöffnete Terminal sieht dann folgendermaßen aus:&lt;br /&gt;
&lt;br /&gt;
[[Image:Terminalde2.jpg]]&lt;br /&gt;
&lt;br /&gt;
===Sudo===&lt;br /&gt;
Rootrechte erlangen sie über den &amp;quot;Sudo&amp;quot;-Befehl&lt;br /&gt;
 &lt;br /&gt;
''Den nächsten Befehl als root ausführen''&lt;br /&gt;
 xinux@zero:~$ sudo cat /etc/shadow&lt;br /&gt;
 [sudo] password for xinux:&lt;br /&gt;
&lt;br /&gt;
''Eine komplette Sitzung als root starten''&lt;br /&gt;
 xinux@zero:~$ sudo -i&lt;br /&gt;
 [sudo] password for xinux:&lt;br /&gt;
 root@zero:~#&lt;br /&gt;
&lt;br /&gt;
===Virtuelle Konsolen===&lt;br /&gt;
&lt;br /&gt;
In die Virtuelle Konsole gelangen sie über &amp;quot;STRG+ALT+(F1-F6)&amp;quot;.&lt;br /&gt;
Sie funktioniert wie ein ganz normales Terminal, und mit &amp;quot;ALT+F7&amp;quot;&lt;br /&gt;
gelangen sie wieder zurück auf die grafische Benutzeroberfläche&lt;br /&gt;
&lt;br /&gt;
===Abmelden===&lt;br /&gt;
&lt;br /&gt;
Abmelden können Sie sich wieder über das Startmenu unter:&lt;br /&gt;
&lt;br /&gt;
[[Image:Logout.jpg]]&lt;br /&gt;
&lt;br /&gt;
Fals sie nur einzelne Sitzungen in einem der Terminals oder &lt;br /&gt;
den Virtuellen Konsolen Abmelden wollen benutzen sie dazu den Befehl: &amp;quot;exit&amp;quot;&lt;br /&gt;
&lt;br /&gt;
===Herunterfahren===&lt;br /&gt;
&lt;br /&gt;
Das Herunterfahren funktioniert auf dem selben Weg.&lt;br /&gt;
&lt;br /&gt;
Entweder sie Benutzen wieder das Startmenü und benutzen diesmal den &amp;quot;Ausschalten ...&amp;quot; Knopf,&lt;br /&gt;
&lt;br /&gt;
Oder sie geben den äquivalenten &amp;quot;shutdown&amp;quot;-Befehl in einem Terminal bzw. der virtuellen Konsole ein.&lt;br /&gt;
&lt;br /&gt;
Allerdings müssen sie dazu als Administrator angemeldet sein s. &amp;quot;Sudo&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Wenn Sie den &amp;quot;shutdown&amp;quot;-Befehl benutzen wollen muss hinter den Befehl&lt;br /&gt;
&lt;br /&gt;
eine Zeitangabe in Minuten oder das wort &amp;quot;now&amp;quot; für sofortiges Ausschalten hinzugefügt werden:&lt;br /&gt;
&lt;br /&gt;
 xinux@zero:~$ sudo -i&lt;br /&gt;
 root@zero:~# shutdown 60&lt;br /&gt;
 &lt;br /&gt;
 Broadcast message from xinux@zero &lt;br /&gt;
         (/dev/pts/3) at 14:29 ...&lt;br /&gt;
 &lt;br /&gt;
 The system is going down for maintenance in 60 minutes!&lt;br /&gt;
&lt;br /&gt;
Sollten sie den Befehl widerrufen wollen dann drücken sie &amp;quot;STRG+C&amp;quot;,&lt;br /&gt;
&lt;br /&gt;
in dem Terminal in dem der shutdown Befehl gestartet wurde,&lt;br /&gt;
&lt;br /&gt;
oder geben sie den &amp;quot;shutdown&amp;quot;-Befehl zusammen mit der Abbruchoption &amp;quot;-c&amp;quot; in einem anderen Terminal ein:&lt;br /&gt;
&lt;br /&gt;
 root@zero:~# shutdown -c&lt;br /&gt;
&lt;br /&gt;
 shutdown: Shutdown cancelled&lt;br /&gt;
 root@zero:~# &lt;br /&gt;
&lt;br /&gt;
Wenn Sie den Rechner Neustarten möchten gibt es dazu die Option &amp;quot;-r&amp;quot; für den &amp;quot;shutdown&amp;quot;-Befehl&lt;br /&gt;
&lt;br /&gt;
oder den &amp;quot;reboot&amp;quot;-Befehl die beide auch als root ausgeführt werden müssen:&lt;br /&gt;
&lt;br /&gt;
 xinux@zero:~$ sudo -i&lt;br /&gt;
 [sudo] password for xinux: &lt;br /&gt;
 root@zero:~# shutdown -r now&lt;br /&gt;
&lt;br /&gt;
 root@zero:~# reboot&lt;br /&gt;
&lt;br /&gt;
===&amp;quot;man&amp;quot;===&lt;br /&gt;
&lt;br /&gt;
Programm zum Einsehen der Online-Manuals&lt;br /&gt;
&lt;br /&gt;
Die Manuals sind in folgende Sektionen unterteilt:&lt;br /&gt;
# Ausführbare Programme oder Shellbefehle&lt;br /&gt;
# Systemaufrufe (Kernelfunktionen)&lt;br /&gt;
# Bibliotheksaufrufe (Funktionen in System-Bibliotheken)&lt;br /&gt;
# Spezielle Dateien (gewöhnlich in /dev)&lt;br /&gt;
# Dateiformate und Konventionen, z. B. /etc/passwd&lt;br /&gt;
# Spiele&lt;br /&gt;
# Makropakete und Konventionen, z. B. man(7), groff(7)&lt;br /&gt;
# Systemadministrationsbefehle (in der Regel nur für root)&lt;br /&gt;
# Kernelroutinen [Nicht Standard]&lt;br /&gt;
&lt;br /&gt;
Aufruf eines Manuals erfolgt durch ''man kommando''&lt;br /&gt;
Beendet wird durch Drücken des Buchstabens q&lt;br /&gt;
Gesucht wird vorwärts durch Eingabe eines /suchausdruck&lt;br /&gt;
Gesucht wird rückwärts durch Eingabe eines ?suchausdruck&lt;br /&gt;
&lt;br /&gt;
Beispiele:&lt;br /&gt;
&lt;br /&gt;
      man passwd        Anschauen der Manualseite zum Programm passwd&lt;br /&gt;
      man 5 passwd      Anschauen der Manualseite zur Datei /etc/passwd&lt;br /&gt;
      man -a passwd     Anschauen aller Manualseiten zu passwd&lt;br /&gt;
      man -k passwd     Durchsucht die Kurzbeschreibungen der Manualseite&lt;br /&gt;
                        nach passwd und gibt alle Treffer aus&lt;br /&gt;
      man -f passwd      Gibt alle gefunden Kurzbescheibungen zu passwd aus&lt;br /&gt;
      man -L en passwd Gibt englische Manualseiten aus&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Was geht vor auf meinem System? (date,who)===&lt;br /&gt;
&lt;br /&gt;
Das Kommando date dient zur Abfrage von Datum und Uhrzeit.&lt;br /&gt;
&lt;br /&gt;
 xinux@zero:~ &amp;gt; date&lt;br /&gt;
 Fre Mär 16 16:35:03 CET 2001&lt;br /&gt;
&lt;br /&gt;
oder auch Anzeige der Grennwich Zeit:&lt;br /&gt;
&lt;br /&gt;
 xinux@zero:~ &amp;gt; date -u&lt;br /&gt;
 Fre Mär 16 15:35:34 UTC 2001&lt;br /&gt;
&lt;br /&gt;
 xinux@zero:~ &amp;gt; date -u &amp;quot;+%X&amp;quot;&lt;br /&gt;
 15:37:19&lt;br /&gt;
&lt;br /&gt;
 xinux@zero:~ &amp;gt; date -u &amp;quot;+%x&amp;quot;&lt;br /&gt;
 01/15/02&lt;br /&gt;
&lt;br /&gt;
who zeigt alle angemeldeten Benutzer an&lt;br /&gt;
&lt;br /&gt;
 thomas@cardassia:~ &amp;gt; who&lt;br /&gt;
 thomas             tty1 Feb 27 16:39&lt;br /&gt;
 thomas             tty2 Mar 2 17:08&lt;br /&gt;
 tina               tty6 Mar 16 16:38&lt;br /&gt;
&lt;br /&gt;
Mit `who --help' bekommen Sie mehr Informationen.&lt;br /&gt;
&lt;br /&gt;
 thomas@cardassia:~ &amp;gt; who --help&lt;br /&gt;
&lt;br /&gt;
Benutzung: who [OPTION]... [ DATEI | ARG1 ARG2 ]&lt;br /&gt;
&lt;br /&gt;
 -H, --heading             print line of column headings&lt;br /&gt;
 -i, -u, --idle            add user idle time as HOURS:MINUTES, . or old&lt;br /&gt;
 -l, --lookup              attempt to canonicalize hostnames via DNS&lt;br /&gt;
 -m                        only hostname and user associated with stdin&lt;br /&gt;
 -q, --count               all login names and number of users logged on&lt;br /&gt;
 -s                        (ignored)&lt;br /&gt;
 -T, -w, --mesg            add user's message status as +, - or ?&lt;br /&gt;
     --message             same as -T&lt;br /&gt;
     --writable            same as -T&lt;br /&gt;
     --help                display this help and exit&lt;br /&gt;
     --version             output version information and exit&lt;br /&gt;
&lt;br /&gt;
==Das UNIX-Dateisystem==&lt;br /&gt;
===Verzeichnisbaum===&lt;br /&gt;
&lt;br /&gt;
[[Image:vztree.jpg]]&lt;br /&gt;
&lt;br /&gt;
Das Betriebssystem UNIX besitzt ein hierarchisches Dateisystem. Es besteht aus:&lt;br /&gt;
* Dateien (Files)&lt;br /&gt;
Dateien speichern Informationen (Text, Bilder, Sound, Videos, Programme) und&lt;br /&gt;
werden über den Dateinamen angesprochen.&lt;br /&gt;
&lt;br /&gt;
* Verzeichnissen (Directories, Kataloge)&lt;br /&gt;
Verzeichnisse besitzen ebenfalls einen Namen und dienen zur Ordnung des&lt;br /&gt;
Dateisystems. Ein Verzeichnis kann Dateien und Unterverzeichnisse&lt;br /&gt;
(Subdirectories) enthalten. Das oberste Verzeichnis im Dateisystem heisst&lt;br /&gt;
Rootverzeichnis oder kurz Root und wird durch / (sprich: slash)&lt;br /&gt;
gekennzeichnet.&lt;br /&gt;
&lt;br /&gt;
Im Gegensatz zu Windows kennt UNIX keine Laufwerke.&lt;br /&gt;
Das obige Bild zeigt ein typisches UNIX-Dateisystem.&lt;br /&gt;
Unterhalb des Rootverzeichnisses befinden sich eine Vielzahl vonVerzeichnissen.&lt;br /&gt;
&lt;br /&gt;
===Wichtige Verzeichnisse===&lt;br /&gt;
&lt;br /&gt;
• '''Homeverzeichnis'''&lt;br /&gt;
&lt;br /&gt;
das Verzeichnis, in dem man sich unmittelbar nach dem Anmelden befindet. Das&lt;br /&gt;
Homeverzeichnis wird vom Systemverwalter eingerichtet; jeder Anwender&lt;br /&gt;
besitzt ein festes Homeverzeichnis. z.B. /home/hans&lt;br /&gt;
&lt;br /&gt;
~ (Tilde) bzw. $HOME (Shellvariable) kennzeichnen das Homeverzeichnis.&lt;br /&gt;
&lt;br /&gt;
• '''Aktuelles Verzeichnis'''&lt;br /&gt;
&lt;br /&gt;
Verzeichnis, in dem man sich aktuell befindet.&lt;br /&gt;
Das aktuelle Verzeichnis wird mit dem Befehl cd (change directory) oder per&lt;br /&gt;
Mausklick verändert.&lt;br /&gt;
Ein einfacher Punkt . kennzeichnet das aktuelle Verzeichnis.&lt;br /&gt;
&lt;br /&gt;
• '''Elternverzeichnis'''&lt;br /&gt;
&lt;br /&gt;
Verzeichnis unmittelbar oberhalb des aktuellen Verzeichnisses.&lt;br /&gt;
Jedes Verzeichnis ausser / besitzt genau ein Elternverzeichnis.&lt;br /&gt;
Zwei Punkte .. kennzeichnen das Elternverzeichnis (abhängig vom aktuellen&lt;br /&gt;
VZ).&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Absoluter Pfadname:===&lt;br /&gt;
&lt;br /&gt;
Beschreibt ausgehend vom Rootverzeichnis den Weg zum Zielverzeichnis oder zur&lt;br /&gt;
Zieldatei. (Welche Verzeichnisse müssen ausgehend von / durchlaufen werden, um&lt;br /&gt;
zum Ziel zu kommen?) Ein absoluter Pfadname beginnt immer mit / .&lt;br /&gt;
&lt;br /&gt;
===Relativer Pfadname:===&lt;br /&gt;
&lt;br /&gt;
Beschreibt ausgehend vom aktuellen Verzeichnis den Weg zum Zielverzeichnis&lt;br /&gt;
oder zur Zieldatei; ein relativer Pfadname beginnt nicht mit / .&lt;br /&gt;
/home/suxer&lt;br /&gt;
absoluter Pfadname für das Verzeichnis sub1 im Homeverzeichnis von suxer&lt;br /&gt;
&lt;br /&gt;
===Verzeichnisstruktur===&lt;br /&gt;
&lt;br /&gt;
 /bin         Kommandos die beim starten benötigt werden (Zugriff hat jeder)&lt;br /&gt;
 /sbin        Wichtige System-Programme (In der Regel root vorberhalten)&lt;br /&gt;
 /boot        Hier findet man die Dateien des Bootmanagers und des Kernel.&lt;br /&gt;
 /dev         In diesem Verzeichnis stehen die Gerätedateien (Devices),&lt;br /&gt;
 /home        Alle Heimatverzeichnisse der Nutzer findet man hier.&lt;br /&gt;
 /lib         Beim Systemstart benötigten Bibliotheken und Modules stehen hier.&lt;br /&gt;
 /mnt         Mountpunkt für temporäre Partitionen&lt;br /&gt;
 /opt         Software, die nicht Installationsumfang von Linux gehören.&lt;br /&gt;
 /root        Heimatverzeichnis des Administrators.&lt;br /&gt;
 /tmp         Temporäre Dateien können hier abgelegt werden&lt;br /&gt;
 /usr         statische Dateien (kann read-only gemountet sein)&lt;br /&gt;
 /var         variable Dateien (muss beschreibar sein )&lt;br /&gt;
 /etc         Konfiguartionsdateien und Startscripte&lt;br /&gt;
 /proc        Virtuelles Dateisystem -&amp;gt; repräsentiert den Kernel&lt;br /&gt;
&lt;br /&gt;
===Unterverzeichnisse von /usr===&lt;br /&gt;
&lt;br /&gt;
 sbin         Programme für root die beim Start nicht benötigt werden&lt;br /&gt;
 bin          Programme für alle die beim Start nicht benötigt werden&lt;br /&gt;
 X11R6        Dateien des X-Window-Sytems&lt;br /&gt;
 bin          Ausführbare Programme&lt;br /&gt;
 doc          Dokumentationen&lt;br /&gt;
 etc          Konfigurationsdateien&lt;br /&gt;
 games        Spiele&lt;br /&gt;
 include      Headerdateien für C-Programme&lt;br /&gt;
 local        Pakete die nicht zur Distribution gehören ähnlich /opt&lt;br /&gt;
 share        Pakete die von mehreren Paketen genutzt werden&lt;br /&gt;
 share/man    Die Manualpages&lt;br /&gt;
 share/info   Seiten des Infosystems&lt;br /&gt;
 share/doc    Dokumentationen&lt;br /&gt;
 src          Sources von Programmen (Kernel und andere)&lt;br /&gt;
&lt;br /&gt;
===Unterverzeichnisse von /var===&lt;br /&gt;
&lt;br /&gt;
 cache        Zwischenspreicher für Progammes&lt;br /&gt;
 games        Variable Daten der Games (Scores etc...)&lt;br /&gt;
 lock         Sperrdateien&lt;br /&gt;
 log          Die Logdateien (wichtiges Verzeichnis für Admins)&lt;br /&gt;
 mail         Das Mailsystem&lt;br /&gt;
 run          Dateien zu laufemdem Prozessen&lt;br /&gt;
 spool        Spooldateien (z.B. für das Drucksystem&lt;br /&gt;
 state        Statusinfos&lt;br /&gt;
 tmp          Wie /tmp eventuell nicht auf root Partion&lt;br /&gt;
&lt;br /&gt;
==Einfache Komandos==&lt;br /&gt;
===cd: Wechseln des Arbeitsverzeichnis===&lt;br /&gt;
&lt;br /&gt;
Um festzustellen in welchem Verzeichnis man sich befindet, sollte man den&lt;br /&gt;
Befehl &amp;quot;pwd&amp;quot; benutzen,&lt;br /&gt;
&lt;br /&gt;
und mit dem Befehl &amp;quot;cd&amp;quot; kann man zwischen den Verzeichnissen wechseln:&lt;br /&gt;
&lt;br /&gt;
Wechsele ins homeverzeichnis von Xinux&lt;br /&gt;
&lt;br /&gt;
 xinux@zero:~$ cd /home/xinux/&lt;br /&gt;
 xinux@zero:~$ pwd&lt;br /&gt;
 /home/xinux&lt;br /&gt;
&lt;br /&gt;
cd ~ -&amp;gt; wechsele ins jeweilige Homeverzeichnis&lt;br /&gt;
&lt;br /&gt;
cd .. -&amp;gt; wechsele ein Verzeichnis höher&lt;br /&gt;
&lt;br /&gt;
cd ../verzeichnis -&amp;gt; wechsele in eine paralleles Verzeichnis &amp;lt;- (ist eine relative Pfadangabe !)&lt;br /&gt;
&lt;br /&gt;
cd - -&amp;gt; wechsele in das Verzeichnis, in dem vorher gearbeitet wurde.&lt;br /&gt;
&lt;br /&gt;
Mit cd / wechselt man in das Wurzelverzeichnis.&lt;br /&gt;
&lt;br /&gt;
 xinux@zero:/var/log$ cd /&lt;br /&gt;
 xinux@zero:/$ pwd&lt;br /&gt;
 /&lt;br /&gt;
&lt;br /&gt;
===ls: Listing===&lt;br /&gt;
&lt;br /&gt;
Den Inhalt von Verzeichnissen kann man sich mit dem Befehl &amp;quot;ls&amp;quot; anzeigen lassen&lt;br /&gt;
wobei &amp;quot;ls&amp;quot; eine Vielzahl von Optionen besitzt:&lt;br /&gt;
&lt;br /&gt;
 ls                                  standard&lt;br /&gt;
 ls -l                               langes listing&lt;br /&gt;
 ls -a                               alle Dateien&lt;br /&gt;
 ls -i                               mit Inode&lt;br /&gt;
 ls -h                               gut lesbare Dateigröße&lt;br /&gt;
 ls -d                               Verzechnis wird angezeigt, nicht der Inhalt&lt;br /&gt;
 ls -L                               sortiert nach Größe&lt;br /&gt;
 ls -t                               sortiert nach Datum&lt;br /&gt;
 ls -F                               mit nützlichem Anhang&lt;br /&gt;
&lt;br /&gt;
 xinux@zero:/$ ls -l /var/log/messages&lt;br /&gt;
 -rw-r----- 1 syslog adm 2296 2009-06-16 10:05 /var/log/messages&lt;br /&gt;
&lt;br /&gt;
===more: Seitenweises Anzeigen von Seiten===&lt;br /&gt;
 root@zero:~# more /var/log/messages&lt;br /&gt;
 ...&lt;br /&gt;
&lt;br /&gt;
===head: erste Zeilen anzeigen===&lt;br /&gt;
Erste 10 Zeilen anzeigen&lt;br /&gt;
 root@zero:~# head /var/log/messages&lt;br /&gt;
 Jun 15 12:37:08 zero syslogd 1.5.0#5ubuntu3: restart.&lt;br /&gt;
 Jun 15 12:38:43 zero kernel: [  830.065036] mtrr: your processor doesn't support write-combining&lt;br /&gt;
 Jun 15 12:46:05 zero pulseaudio[4817]: pid.c: Stale PID file, overwriting.&lt;br /&gt;
 Jun 15 13:05:24 zero -- MARK --&lt;br /&gt;
 ...&lt;br /&gt;
&lt;br /&gt;
Erste zwei Zeilen anzeigen&lt;br /&gt;
 root@zero:~# head -n 2 /var/log/messages&lt;br /&gt;
 Jun 15 12:37:08 zero syslogd 1.5.0#5ubuntu3: restart.&lt;br /&gt;
 Jun 15 12:38:43 zero kernel: [  830.065036] mtrr: your processor doesn't support write-combining&lt;br /&gt;
&lt;br /&gt;
===tail: letzte Zeilen anzeigen===&lt;br /&gt;
 &lt;br /&gt;
 root@zero:~# tail /var/log/syslog&lt;br /&gt;
 ...&lt;br /&gt;
 Jun 19 11:19:35 zero -- MARK --&lt;br /&gt;
 Jun 19 11:39:35 zero -- MARK --&lt;br /&gt;
 Jun 19 11:59:36 zero -- MARK --&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Letze 5 Zeilen anzeigen&lt;br /&gt;
 root@zero:~# tail -n 5 /var/log/auth.log&lt;br /&gt;
 Jun 18 14:30:01 zero CRON[12040]: pam_unix(cron:session): session closed for user root&lt;br /&gt;
 Jun 18 14:39:01 zero CRON[12191]: pam_unix(cron:session): session opened for user root by (uid=0)&lt;br /&gt;
 Jun 18 14:39:01 zero CRON[12191]: pam_unix(cron:session): session closed for user root&lt;br /&gt;
 Jun 18 14:40:01 zero CRON[12237]: pam_unix(cron:session): session opened for user root by (uid=0)&lt;br /&gt;
 Jun 18 14:40:01 zero CRON[12237]: pam_unix(cron:session): session closed for user root&lt;br /&gt;
&lt;br /&gt;
Letze Zeilen anzeigen und fortlaufend aktualisieren&lt;br /&gt;
 root@zero:~# tail -f /var/log/syslog&lt;br /&gt;
 ...&lt;br /&gt;
&lt;br /&gt;
===mkdir: Ein neues Verzeichnis erstellen===&lt;br /&gt;
&lt;br /&gt;
 mkdir        verzeichnis&lt;br /&gt;
Erstellt ein Verzeichnis im working directory (wd)&lt;br /&gt;
&lt;br /&gt;
 mkdir  -p    ver1/ver2&lt;br /&gt;
Erstellt ein Verzeichnis ver2 unterhalb von ver1&lt;br /&gt;
wenn ver1 nicht existiert wird es erstellt&lt;br /&gt;
&lt;br /&gt;
 mkdir -m 753 ver1&lt;br /&gt;
Es wird das Verzeichnis ver1 erstellt mit der mask 753&lt;br /&gt;
&lt;br /&gt;
 mkdir -v     ver1&lt;br /&gt;
Geschwätzige Ausgabe :)&lt;br /&gt;
&lt;br /&gt;
===Zum Löschen von leeren Verzeichnissen wird rmdir benutzt===&lt;br /&gt;
&lt;br /&gt;
 rmdir           ver1&lt;br /&gt;
Löscht das leere Verzeichnis ver1&lt;br /&gt;
&lt;br /&gt;
 rmdir -v        ver1&lt;br /&gt;
Löscht das leere Verzeichnis ver1 und ist geschwätzig&lt;br /&gt;
&lt;br /&gt;
 rmdir -p        /ver1/ver2/ver3&lt;br /&gt;
Löscht das Verzeichnis ver3; wenn dadurch ver2 ein leeres&lt;br /&gt;
Verzeichnis wird, wird dieses auch gelöscht , wenn ver1&lt;br /&gt;
dadurch ein leeres Verzeichnis wird, wird auch dieses gelöscht.&lt;br /&gt;
&lt;br /&gt;
===touch Verändern des Zeitstempels===&lt;br /&gt;
&lt;br /&gt;
Mit touch können wir eine neue leere Datei erzeugen (das ist nicht der eigentliche&lt;br /&gt;
Zweck von touch, eigentlich wird der Zeitstempel geändert)&lt;br /&gt;
&lt;br /&gt;
 touch            dateiname&lt;br /&gt;
&lt;br /&gt;
===Kopieren=== &lt;br /&gt;
cp ist das Kommando um Dateien zu kopieren &lt;br /&gt;
&lt;br /&gt;
Eine Kopie von dat1 mit dem Namen dat2 erstellen:&lt;br /&gt;
&lt;br /&gt;
 xinux@zero:~$ cp dat1 dat2&lt;br /&gt;
&lt;br /&gt;
Eine Kopie von dat1 ins Verzeichnis ver2 erstellen:&lt;br /&gt;
&lt;br /&gt;
 xinux@zero:~$ cp dat1 ver2/&lt;br /&gt;
 &lt;br /&gt;
Eine Kopie erstellen mit ausführlicher Anzeige:&lt;br /&gt;
&lt;br /&gt;
 xinux@zero:~$ cp -v dat1 dat2&lt;br /&gt;
 `dat1' -&amp;gt; `dat2'&lt;br /&gt;
&lt;br /&gt;
Eine Kopie erstellen mit Rückfrage fals etwas überschrieben wird:&lt;br /&gt;
&lt;br /&gt;
 xinux@zero:~$ cp -i dat1 dat2&lt;br /&gt;
 cp: overwrite `dat2'?&lt;br /&gt;
&lt;br /&gt;
Eine Kopie erstellen und die Rückfrage überbrücken:&lt;br /&gt;
&lt;br /&gt;
 xinux@zero:~$ cp -f dat1 dat2&lt;br /&gt;
&lt;br /&gt;
Eine Kopie von dat1 ins Verzeichnis ver2 erstellen fals keine neuere Version von dat1 vorliegt:&lt;br /&gt;
&lt;br /&gt;
 xinux@zero:~$ cp -u dat1 ver2/&lt;br /&gt;
&lt;br /&gt;
Eine Kopie erstellen fals ver2 auf dem selben Dateisystem wie dat1 liegt:&lt;br /&gt;
&lt;br /&gt;
 xinux@zero:~$ cp -x dat1 ver2/&lt;br /&gt;
&lt;br /&gt;
Eine Kopie von ver1, die als ver2 oder unter ver2 als ver1 gespeichert wird erstellen:&lt;br /&gt;
&lt;br /&gt;
 xinux@zero:~$ cp -r ver1/ ver2/&lt;br /&gt;
&lt;br /&gt;
Eine Kopie von einer Datei erstellen und ihre Attribute beibehalten:&lt;br /&gt;
&lt;br /&gt;
 xinux@zero:~$ cp -p sux1 sux2&lt;br /&gt;
&lt;br /&gt;
Eine Kopie erstellen bei der die Links erhalten bleiben:&lt;br /&gt;
&lt;br /&gt;
 xinux@zero:~$ cp -r ver1/ ver2/&lt;br /&gt;
&lt;br /&gt;
Eine Kopie erstellen zum Archivieren (-dpr):&lt;br /&gt;
&lt;br /&gt;
 xinux@zero:~$ cp -a ver1/ ver2/&lt;br /&gt;
&lt;br /&gt;
===rm: Löschen einer Datei===&lt;br /&gt;
&lt;br /&gt;
Um Dateien zu löschen, brauchen wir das Kommando &amp;quot;rm&amp;quot;:&lt;br /&gt;
&lt;br /&gt;
 rm               dat1        dat1 wird gelöscht&lt;br /&gt;
 rm         -i    dat1        dat1 wird nach Bestätigung gelöscht&lt;br /&gt;
 rm         -f    dat1        dat1 wird ohne Rückfragen gelöscht&lt;br /&gt;
 rm         -v    dat1        dat1 wird glöscht (geschwätzige Ausgabe)&lt;br /&gt;
 rm         -r    ver1        Löschen von nicht leeren Verzeichnissen&lt;br /&gt;
                              Achtung !!! Als root kann man sich damit Teile&lt;br /&gt;
                              oder sogar den gesamten Verzeichnisbaum&lt;br /&gt;
                              absägen !!!&lt;br /&gt;
&lt;br /&gt;
===mv: Verschieben===&lt;br /&gt;
&lt;br /&gt;
Mit dem Befehl &amp;quot;mv&amp;quot; werden Daten verschoben, folgendes gilt:&lt;br /&gt;
&lt;br /&gt;
 mv          dat1 dat2         &lt;br /&gt;
Die Datei dat1 wird in dat2 umbenannt&lt;br /&gt;
 mv          dat1 /ver1        &lt;br /&gt;
Die Datei dat1 wird nach /ver1 verschoben&lt;br /&gt;
&lt;br /&gt;
Die Parameter und ihre Bedeutung:&lt;br /&gt;
&lt;br /&gt;
      -i                      wenn eine Datei exisitiert wird vor dem&lt;br /&gt;
                              Überschreiben nachgefragt&lt;br /&gt;
      -v                      verbose (geschwätzig)&lt;br /&gt;
      -u                      nur neuere Daten werden bei Bedarf überschrieben&lt;br /&gt;
      -b                      wenn überschrieben werden soll, wird ein Backup&lt;br /&gt;
                              erstellt&lt;br /&gt;
      -S ENDUNG               das Backup bekommt die Endung ENDUNG&lt;br /&gt;
&lt;br /&gt;
===su Benutzer wechseln===&lt;br /&gt;
&lt;br /&gt;
 su -             &lt;br /&gt;
Wechsel zum Rootaccount, wie wenn dieser sich neu anmelden würde. (Bsp: su -)&lt;br /&gt;
&lt;br /&gt;
 su Benutzernamen &lt;br /&gt;
Wechsel der Identität zu Benutzer (gegebenenfalls Passwortabfrage)&lt;br /&gt;
&lt;br /&gt;
 su -c Kommando   &lt;br /&gt;
Kommando wird als rootaccount ausgeführt&lt;br /&gt;
&lt;br /&gt;
==Der Standard Editor vi==&lt;br /&gt;
Der vi ist der Standardeditor in der Unixwelt. Er ist in jedem Unix-Derivat&lt;br /&gt;
enthalten.&lt;br /&gt;
Der Editor hat zwar den schlechten Ruf umständlich zu bedienen zu sein, ist&lt;br /&gt;
jedoch sehr leistungsfähig und systemübergreifend verfügbar. Beim vi handelt es&lt;br /&gt;
sich um einen rein textorientierten Editor, der mittels eigener Kommandos&lt;br /&gt;
gesteuert wird.&lt;br /&gt;
&lt;br /&gt;
Der Editor VIM ist eine weitere Verbesserung von VI und leichter zu bedienen.&lt;br /&gt;
Und unter Ubuntu/Debian mit &amp;quot;apt-get install vim&amp;quot; zu installieren.&lt;br /&gt;
&lt;br /&gt;
===Starten des Editors:===&lt;br /&gt;
&lt;br /&gt;
Der Editorstart erfolgt einfach durch die Eingabe des Kommandos vi mit dem&lt;br /&gt;
Dateinamen der zu editierenden Datei als Parameter.&lt;br /&gt;
Beispiel:        &lt;br /&gt;
 vi sux.txt&lt;br /&gt;
&lt;br /&gt;
===Die Betriebsmodi des vi:===&lt;br /&gt;
&lt;br /&gt;
Ein Umstand, der dem vi den Ruf der komplizierten Bedienbarkeit zugetragen hat,&lt;br /&gt;
sind die unterschiedlichen Betriebsmodi des Editors. Genauer gesagt verfügt der&lt;br /&gt;
vi über drei Betriebsmodi:&lt;br /&gt;
&lt;br /&gt;
====Kommandomodus:====&lt;br /&gt;
&lt;br /&gt;
Innerhalb dieses Modus werden die eingegebenen Zeichen direkt als Befehle des&lt;br /&gt;
Editors interpretiert und ausgeführt. Dabei gibt es weder ein Bereitschaftszeichen&lt;br /&gt;
(Prompt) noch ein Echo (Ausgabe). Der Kommandomodus ist der Modus, in dem&lt;br /&gt;
sich der vi direkt nach seinem Start befindet.&lt;br /&gt;
&lt;br /&gt;
====Zeilenmodus oder Exmodus:====&lt;br /&gt;
&lt;br /&gt;
Dieser Modus ist der einzige Modus mit einem eigenen Bereitschaftszeichen,&lt;br /&gt;
nämlich dem Doppelpunkt (:). Das Prompt wird ebenso wie die Befehlsausgaben&lt;br /&gt;
in der Statuszeile angezeigt.&lt;br /&gt;
&lt;br /&gt;
====Eingabemodus:====&lt;br /&gt;
&lt;br /&gt;
Der Eingabemodus ist derjenige, in welchem der zu bearbeitende Text bearbeitet&lt;br /&gt;
werden kann. Alle hier eingegebenen Zeichen werden als Text für die aktuelle&lt;br /&gt;
Datei interpretiert. Zwischen den unterschiedlichen Modi kann jederzeit&lt;br /&gt;
gewechselt werden. Von Kommandomodus gelangen Sie durch mehere Wege in&lt;br /&gt;
den Eingabemodus. Man kann durch folgende Aktionen wechslen&lt;br /&gt;
&lt;br /&gt;
{| border=1 cellpadding=2&lt;br /&gt;
|i&lt;br /&gt;
|Text vor der aktuellen Cursorposition einfügen&lt;br /&gt;
|-&lt;br /&gt;
|I&lt;br /&gt;
|Text am Zeilenanfang einfügen&lt;br /&gt;
|-&lt;br /&gt;
|a&lt;br /&gt;
|Text hinter der aktuellen Cursorposition einfügen&lt;br /&gt;
|-&lt;br /&gt;
|A&lt;br /&gt;
|Text am Zeilenende einfügen&lt;br /&gt;
|-&lt;br /&gt;
|o&lt;br /&gt;
|Unterhalb der aktuellen Zeile eine neue Zeile einfügen&lt;br /&gt;
|-&lt;br /&gt;
|O&lt;br /&gt;
|Oberhalb der aktuellen Zeile eine neue Zeile einfügen&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Durch das Drücken der ESC - Taste gelangt man in den Kommandomodus zurück.&lt;br /&gt;
&lt;br /&gt;
Im Kommandomodus können Sie durch den Text navigieren und auch den Text&lt;br /&gt;
selbst bearbeiten, z.B ausschneiden, kopieren usw. Dazu sind einige Kommandos&lt;br /&gt;
nötig, von denen die wichtigsten im Folgenden erläutert werden:&lt;br /&gt;
&lt;br /&gt;
 xinux@zero:/$ vi iwas.txt&lt;br /&gt;
&lt;br /&gt;
[[Image:vim.jpg]]&lt;br /&gt;
&lt;br /&gt;
===Benutzen des Kommandomodus===&lt;br /&gt;
====Steuerung des Cursors durch den Text====&lt;br /&gt;
&lt;br /&gt;
Mittels folgender Kommandos bewegt sich der Cursor durch den Text:&lt;br /&gt;
&lt;br /&gt;
{| border=1 cellpadding=2&lt;br /&gt;
|h&lt;br /&gt;
|Cursor ein Zeichen nach links&lt;br /&gt;
|-&lt;br /&gt;
|l&lt;br /&gt;
|Cursor ein Zeichen nach rechts&lt;br /&gt;
|-&lt;br /&gt;
|k&lt;br /&gt;
|Cursor eine Zeile nach oben&lt;br /&gt;
|-&lt;br /&gt;
|j&lt;br /&gt;
|Cursor eine Zeile nach unten&lt;br /&gt;
|-&lt;br /&gt;
|w&lt;br /&gt;
|Cursor ein Wort nach rechts&lt;br /&gt;
|-&lt;br /&gt;
|b&lt;br /&gt;
|Cursor ein Wort nach links&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Alle diese Kommandos können mit einem vorgestellten Wiederholungsfaktor&lt;br /&gt;
arbeiten. Der Befehl 3w verschiebt demnach den Cursor um 3 Wörter nach rechts.&lt;br /&gt;
&lt;br /&gt;
====Angaben zur Positionierung====&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{| border=1 cellpadding=2&lt;br /&gt;
|STRG+U&lt;br /&gt;
|1⁄2 Bildschirmseite nach oben&lt;br /&gt;
|-&lt;br /&gt;
|STRG+D&lt;br /&gt;
|1⁄2 Bildschirmseite nach unten&lt;br /&gt;
|-&lt;br /&gt;
|STRG+B&lt;br /&gt;
|1 Bildschirmseite nach oben&lt;br /&gt;
|-&lt;br /&gt;
|STRG+F&lt;br /&gt;
|1 Bildschirmseite nach unten&lt;br /&gt;
|-&lt;br /&gt;
|/Ausdruck&lt;br /&gt;
|Sucht den Ausdruck (vorwärts) Weitersuchen mit n , N&lt;br /&gt;
|-&lt;br /&gt;
|?Ausdruck&lt;br /&gt;
|Sucht den Ausdurck (rückwärts) Weitersuchen mit n , N&lt;br /&gt;
|-&lt;br /&gt;
|0&lt;br /&gt;
|Zeilenanfang&lt;br /&gt;
|-&lt;br /&gt;
|$&lt;br /&gt;
|Zeilenende&lt;br /&gt;
|-&lt;br /&gt;
|w&lt;br /&gt;
|Nächstes Wort&lt;br /&gt;
|-&lt;br /&gt;
|b&lt;br /&gt;
|Vorheriges Wort&lt;br /&gt;
|-&lt;br /&gt;
|fc&lt;br /&gt;
|Auf das Zeichen c springen. c steht für ein beliebiges Zeichen&lt;br /&gt;
|-&lt;br /&gt;
|G&lt;br /&gt;
|Letzte Zeile der Datei&lt;br /&gt;
|-&lt;br /&gt;
|ng&lt;br /&gt;
|n-te Zeile der Datei&lt;br /&gt;
|-&lt;br /&gt;
|H&lt;br /&gt;
|Anfang der Bildschirmseite&lt;br /&gt;
|-&lt;br /&gt;
|L&lt;br /&gt;
|Ende der Bildschirmseite&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
====Befehle zur Textbearbeitung -&amp;gt; Was soll geschehen====&lt;br /&gt;
&lt;br /&gt;
{| Border=1 Cellpadding=2&lt;br /&gt;
|x&lt;br /&gt;
|Löscht Zeichen&lt;br /&gt;
|-&lt;br /&gt;
|d&lt;br /&gt;
|Löschen und in den Puffer laden&lt;br /&gt;
|-&lt;br /&gt;
|c&lt;br /&gt;
|Ändern&lt;br /&gt;
|-&lt;br /&gt;
|y&lt;br /&gt;
|In den Puffer laden&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
====Weitere wichtige Befehle:====&lt;br /&gt;
&lt;br /&gt;
{| Border=1 Cellpadding=2&lt;br /&gt;
|p&lt;br /&gt;
|Aus dem Puffer einfügen&lt;br /&gt;
|-&lt;br /&gt;
|u&lt;br /&gt;
|Undo, macht den letzten Befehl rückgängig&lt;br /&gt;
|-&lt;br /&gt;
|STRG+R&lt;br /&gt;
|Redo, macht den letzten Undo rückgängig&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
===Zeilen- oder Exmodus===&lt;br /&gt;
&lt;br /&gt;
Wie schon erwähnt wird der Zeilen oder Exmodus durch einen : eingeleitet.&lt;br /&gt;
Es folgen einige Beispiele.&lt;br /&gt;
&lt;br /&gt;
Befehle zum Speichern und Beenden:&lt;br /&gt;
&lt;br /&gt;
 :w          Schreibt Datei&lt;br /&gt;
 :w Datei2   Schreibt eine Kopie in Datei2&lt;br /&gt;
 :w !        Schreibt Datei (übergehe Schreibschutz)&lt;br /&gt;
 :w ! Datei2 Schreibt eine Kopie in Datei2 (übergehe Schreibschutz)&lt;br /&gt;
 :q          Schließe Datei&lt;br /&gt;
 :q!         Schließe Datei (verwerfe Änderungen)&lt;br /&gt;
 :wq         Schreibe Datei und beende Editor&lt;br /&gt;
 :wq!        Schreibe Datei und beende Editor (übergehe Schreibschutz)&lt;br /&gt;
 :q!         Schließe Datei (verwerfe Änderungen)&lt;br /&gt;
 :h          Hilfe anzeigen, durch drücken von :q Beenden der Hilfe&lt;br /&gt;
 :e Datei3   Editiere Datei3&lt;br /&gt;
 :e #        Editere vorhergehende Datei&lt;br /&gt;
 :1,3co9     Kopiere von der ersten bis zu dritten Zeile &lt;br /&gt;
             und füge den Inhalt unterhalb der neunte Zeile ein.&lt;br /&gt;
&lt;br /&gt;
Interaktionen mit Unix:&lt;br /&gt;
&lt;br /&gt;
 :r Datei4   Fügt Inhalt der Datei4 nach dem Cursor ein&lt;br /&gt;
 :r ! Befehl Fügt Ausgabe des Befehls nach dem Cursor ein&lt;br /&gt;
 :! Befehl   Führt den Befehl aus&lt;br /&gt;
 :sh         Starte Subshell -&amp;gt; mit exit kehrt man wieder zurück&lt;br /&gt;
             Eingabemodus zurück&lt;br /&gt;
&lt;br /&gt;
====Ersetzen von Textteilen====&lt;br /&gt;
&lt;br /&gt;
Die grundsätzliche Syntax lautet:&lt;br /&gt;
&lt;br /&gt;
 :[Zeilennummer,Zeilennummer]s/Muster/Ersetzung/[gc]&lt;br /&gt;
&lt;br /&gt;
 :s/worf/kirn/              der erste worf wird in der aktuellen Zeile durch kirn ersetzt&lt;br /&gt;
 :1,9s/worf/kirn/g          von der 1. bis zur 9. Zeile werden alle worf durch kirn ersetzt&lt;br /&gt;
 :1,$s/worf/kirn/           von der ersten bis zur letzten Zeile ersetze ersten worf durch&lt;br /&gt;
                            kirn&lt;br /&gt;
 :.,$s/worf/kirn/g          von der aktuellen bis zur letzten Zeile ersetze alle worf durch&lt;br /&gt;
                            kirn&lt;br /&gt;
 :1,.s/worf/kirn/c          von der 1. bis zur aktuellen Zeile ersetze worf durch kirn, frage&lt;br /&gt;
                            aber nach&lt;br /&gt;
 :1,$s/^worf/kirn/          von der ersten bis zur letzten Zeile ersetze worf am&lt;br /&gt;
                            Zeilenanfang durch kirn&lt;br /&gt;
 :4,$s/worf$/kirn/          von der 4. bis zur letzten Zeile ersetze worf am Zeilenende&lt;br /&gt;
                            durch kirn&lt;br /&gt;
 :1,$s/^#//                 lösche alle Kommentarzeichen&lt;br /&gt;
 :1,$s/^.orf/kirn/           ersetze alles was am Zeilenanfang ein beliebiges Zeichen hat&lt;br /&gt;
                            gefolgt von einem orf durch kirn&lt;br /&gt;
 :1,$s/^[A-Z]orf/kirn/g     suche nach einem Großbuchstaben am Anfang der Zeile&lt;br /&gt;
                            gefolgt von einem orf und ersetze durch kirn&lt;br /&gt;
 :1,$s/^M[ae][iy]e*r/kirn/  suche alles, was am Anfang der Zeile ein großes M enthält,&lt;br /&gt;
                            gefolgt von einem a oder e , gefolgt von einem i oder y ,&lt;br /&gt;
                            gefolgt von einem e , welches 0 oder N mal vorkommen kann,&lt;br /&gt;
                            gefolgt von einem r und ersetze es durch kirn&lt;br /&gt;
&lt;br /&gt;
==Reguläre Ausdrücke==&lt;br /&gt;
&lt;br /&gt;
{| Border=1 Cellpadding=2&lt;br /&gt;
|c&lt;br /&gt;
|Ein einzelner Buchstabe passt auf sich selbst&lt;br /&gt;
|-&lt;br /&gt;
|.&lt;br /&gt;
|Ein Punkt passt auf jedes Zeichen außer auf das Zeilenende&lt;br /&gt;
|-&lt;br /&gt;
|*&lt;br /&gt;
|Das dem Operator * vorangehende Muster kann 0 oder öfter vorkommen&lt;br /&gt;
|-&lt;br /&gt;
|^&lt;br /&gt;
|(Caret) passt auf den Zeilenanfang&lt;br /&gt;
|-&lt;br /&gt;
|$&lt;br /&gt;
|Passt auf das Zeilenende&lt;br /&gt;
|-&lt;br /&gt;
|\&lt;br /&gt;
|Das folgende Sonderzeichen wird entwertet&lt;br /&gt;
|-&lt;br /&gt;
|[...]&lt;br /&gt;
|Passt auf &amp;quot;genau&amp;quot; eins in [...] angebenen Zeichen&lt;br /&gt;
|-&lt;br /&gt;
|[^...]&lt;br /&gt;
|Passt auf &amp;quot;genau&amp;quot; ein Zeichen welches nicht in [...] angebenen ist&lt;br /&gt;
|-&lt;br /&gt;
|\&amp;lt;&lt;br /&gt;
|Passt auf den Wortanfang&lt;br /&gt;
|-&lt;br /&gt;
|\&amp;gt;&lt;br /&gt;
|Passt auf das Wortende&lt;br /&gt;
|-&lt;br /&gt;
|\+&lt;br /&gt;
|Das dem Operator \+ vorangehende Muster kann 1 oder öfter vorkommen&lt;br /&gt;
|-&lt;br /&gt;
|&amp;amp;&lt;br /&gt;
|Setzt das gefunden Suchmuster ein&lt;br /&gt;
|-&lt;br /&gt;
|\(...\)&lt;br /&gt;
|Speichert den Text auf den das Suchmuster passt zur späteren Verwendung&lt;br /&gt;
|-&lt;br /&gt;
|\n&lt;br /&gt;
|Setzt das vorangehende, mit \(...\) Gefundene wieder ein&lt;br /&gt;
|-&lt;br /&gt;
|(...)&lt;br /&gt;
|Gruppiert Auswahlmöglichkeiten&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;nowiki&amp;gt;|&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
|Trennt Auswahlmöglichkeiten&lt;br /&gt;
|-&lt;br /&gt;
|\b&lt;br /&gt;
|Passt auf den Anfang oder das Ende eines Wortes&lt;br /&gt;
|-&lt;br /&gt;
|\B&lt;br /&gt;
|Symbolisiert den Raum innerhalb eines Wortes&lt;br /&gt;
|-&lt;br /&gt;
|\w&lt;br /&gt;
|Passt auf alle alphanumerischen Zeichen [A-Za-z0-9]&lt;br /&gt;
|-&lt;br /&gt;
|\W&lt;br /&gt;
|Passt auf alle nichtalphanumerischen Zeichen [^A-Za-z0-9]&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Die Rangfolge der Operatoren(von der höchsten zur niedrigsten)&lt;br /&gt;
:(, ), ?, *, + | .&lt;br /&gt;
&lt;br /&gt;
Die anderen Operatoren sind mit den anderen Buchstaben gleichrangig.&lt;br /&gt;
&lt;br /&gt;
===Beispiel zum Suchen===&lt;br /&gt;
&lt;br /&gt;
 Suchmuster               Passt auf&lt;br /&gt;
 ^Tuxer                   Tuxer am Zeilenanfang&lt;br /&gt;
 [tT]uxer                 Tuxer oder tuxer&lt;br /&gt;
 80[23]?86                8086, 80286 oder 80386&lt;br /&gt;
&lt;br /&gt;
===grep===&lt;br /&gt;
&lt;br /&gt;
Mit grep ist es möglich, in Dateien nach regulären Ausdrücken zu suchen. Wenn&lt;br /&gt;
eine Übereinstimmung gefunden wird, wird die komplette Zeile auf die&lt;br /&gt;
Standardausgabe geschrieben. grep kann auch von STDIN lesen.Es ist&lt;br /&gt;
empfehlenswert, sich anzugwöhnen ,das Suchmuster in Anführungszeichen zu&lt;br /&gt;
schreiben. Es gibt 3 Arten fgrep = fastgrep , grep und egrep egrep&lt;br /&gt;
&lt;br /&gt;
Beispiel:&lt;br /&gt;
&lt;br /&gt;
 root@zero:~# cat text&lt;br /&gt;
 quatsch&lt;br /&gt;
 quatsch&lt;br /&gt;
 quatsch&lt;br /&gt;
 wichtig&lt;br /&gt;
 quatsch&lt;br /&gt;
 root@zero:~# grep wichtig text&lt;br /&gt;
 wichtig&lt;br /&gt;
 root@zero:~# &lt;br /&gt;
&lt;br /&gt;
 -c                   meldet nur die Gesamtzahl der Fundstellen&lt;br /&gt;
 -v                   zeigt nur Zeilen, die »Ausdruck« nicht enthalten&lt;br /&gt;
 -i                   ignoriert Groß- und Kleinschreibung&lt;br /&gt;
 -l                    meldet nur Dateinamen mit Fundstellen&lt;br /&gt;
 -n                   listet Zeilennummern zu jeder Fundstelle&lt;br /&gt;
 -f                   Dateiname »Dateiname« enthält die Such-Ausdrücke&lt;br /&gt;
 -E                   ist ein erweiterter regulärer Ausdruck (egrep)&lt;br /&gt;
 -F                   (Muster, Ausdruck) ist ein Muster (String) (fgrep)&lt;br /&gt;
 -b                   listet auch die Position der Fundstellen&lt;br /&gt;
 -C    Anzahl         Anzahl von Zeilen werden nach der Fundstelle ausgegeben&lt;br /&gt;
 -B    Anzahl         Anzahl von Zeilen werden vor der Fundstelle ausgegeben&lt;br /&gt;
 -r                   Durchsucht Verzeichnisse rekursiv&lt;br /&gt;
&lt;br /&gt;
==Useridendifikation==&lt;br /&gt;
===/etc/passwd===&lt;br /&gt;
====Beschreibung====&lt;br /&gt;
passwd ist eine ASCII-Datei, die eine Liste der Benutzer des Systems und deren&lt;br /&gt;
Passwörter enthält. Die Passwortdatei sollte für alle Benutzer lesbar sein, was für&lt;br /&gt;
dieVerschlüsselung notwendig ist; aber nur vom Superuser beschreibbar. Wenn&lt;br /&gt;
Sie eine neue Kennung einrichten, lassen Sie das Passwort-Feld in der Datei frei&lt;br /&gt;
und benutzen Sie passwd(1), um dem System ein Passwort für die neue Kennung&lt;br /&gt;
mitzuteilen.&lt;br /&gt;
&lt;br /&gt;
Die Datei /etc/passwd enthält einen Eintrag pro Zeile mit dem Format:&lt;br /&gt;
login_name:passwd:UID:GID:user_name:directory:shell&lt;br /&gt;
====Die Bedeutung der Felder:====&lt;br /&gt;
# login_name Kennung des Benutzers auf dem System.&lt;br /&gt;
# password   Hier steht bei Shadowsystemen ein x. Die Passwörter sind in der Datei /etc/shadow&lt;br /&gt;
# UID        Die numerische Benutzernummer.&lt;br /&gt;
#  GID        Die numerische Gruppennummer des Benutzers.&lt;br /&gt;
# user_name Ein optionales Kommentarfeld, oft benutzt für den vollen Namen des Benutzers und weitere Informationen (Telefon, Raum-Nummer etc.).&lt;br /&gt;
# directory  Das Heimatverzeichnis $HOME des Benutzers.&lt;br /&gt;
# shell      Das Programm, das beim Einloggen gestartet werden soll (falls nicht nötig, benutzen Sie /bin/bash).&lt;br /&gt;
&lt;br /&gt;
===/etc/group===&lt;br /&gt;
====Beschreibung====&lt;br /&gt;
etc/group ist eine ASCII Datei, die Gruppen definiert, zu denen Benutzer&lt;br /&gt;
gehören. Es gibt nur einen Eintrag pro Zeile; jede Zeile hat folgendes Format:&lt;br /&gt;
         GruppenName:Passwort:GruppenKennung:BenutzerListe&lt;br /&gt;
Beschreibung der Felder:&lt;br /&gt;
#     GruppenName      Die Bezeichnung der Gruppe.&lt;br /&gt;
#     Passwort         Das (verschlüsselte) Gruppen-Passwort. Wenn dieses Feld leer ist, wird kein Passwort benötigt.&lt;br /&gt;
#     GruppenKennung Die numerische Identifikation der Gruppe.&lt;br /&gt;
#     BenutzerListe    Alle Namen der Mitglieder, getrennt durch Kommas.&lt;br /&gt;
&lt;br /&gt;
===/etc/shadow===&lt;br /&gt;
====Beschreibung====&lt;br /&gt;
shadow beinhaltet Informationen zu den verschlüsselten Passwörten, zu den&lt;br /&gt;
Benutzerzugängen und weitere Informationen zur Laufzeit der Passwörter.&lt;br /&gt;
 Name:Passwort:Letzte Änderung:Mintage:Maxtage:Warntage:Inaktiv:Ablauf&lt;br /&gt;
#    Der Loginname&lt;br /&gt;
#    verschlüsseltes Passwort &lt;br /&gt;
&amp;lt;nowiki&amp;gt;*&amp;lt;/nowiki&amp;gt; bedeutet Benutzer kann sich nicht einlogen&lt;br /&gt;
! bedeutet Benutzer hat kein Passwort gesetzt&lt;br /&gt;
#    Tage seit dem 1 Januar 1970 an dem das Passwort letztmals geändert wurde&lt;br /&gt;
#    Tage, die das Passwort behalten werden muss, bevor es wieder geändert werden kann&lt;br /&gt;
#     Die Anzahl der Tage, nach denen der Benutzer das Passwort wieder ändern muss&lt;br /&gt;
#    Anzahl der Tage bevor das Passwort abläuft und der Benutzer gewarnt wird&lt;br /&gt;
#    Wenn der Zugang diese Anzahl von Tagen nicht benutzt wird, wird der Zugang gesperrt&lt;br /&gt;
#    Tag seit dem 1 Januar 1970, an dem der Zugang gesperrt wird&lt;br /&gt;
#    Reserviertes Feld&lt;br /&gt;
&lt;br /&gt;
Die Datei sollte aus Sicherheitgründen nicht für einen normalen Benutzer lesbar&lt;br /&gt;
sein.&lt;br /&gt;
&lt;br /&gt;
==Programme zur Userverwaltung==&lt;br /&gt;
===useradd===&lt;br /&gt;
User anlegen&lt;br /&gt;
 root@zero:~# useradd -m -u 1011 -g users -G admin -d /home/erwin -s /bin/bash -c &amp;quot;Erwin Lehman&amp;quot;  erwin&lt;br /&gt;
{| border=1 cellpadding=2&lt;br /&gt;
|&amp;quot;-m&amp;quot;&lt;br /&gt;
|Lege Homedirectory an&lt;br /&gt;
|-&lt;br /&gt;
|&amp;quot;-u 1011&amp;quot;&lt;br /&gt;
|Userid wird zugeordnet&lt;br /&gt;
|-&lt;br /&gt;
|&amp;quot;-g users&amp;quot;&lt;br /&gt;
|Primäre Gruppe wird zugeordnet&lt;br /&gt;
|-&lt;br /&gt;
|&amp;quot;-G admin&amp;quot;&lt;br /&gt;
|Sekunbdäre Gruppe wird zugeordnet&lt;br /&gt;
|-&lt;br /&gt;
|&amp;quot;-d /home/erwin/&amp;quot;&lt;br /&gt;
|Name des Homedirectory&lt;br /&gt;
|-&lt;br /&gt;
|&amp;quot;-s /bin/bash&amp;quot;&lt;br /&gt;
|Bash wird zugeordnet&lt;br /&gt;
|- &lt;br /&gt;
|&amp;quot;-c Erwin Lehman&amp;quot;&lt;br /&gt;
|Kommentarfeld&lt;br /&gt;
|-&lt;br /&gt;
|&amp;quot;erwin&amp;quot; &lt;br /&gt;
|Name des Users&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Defaulteinstellungen anzeigen&lt;br /&gt;
 root@zero:~# useradd -D&lt;br /&gt;
 GROUP=100&lt;br /&gt;
 HOME=/home&lt;br /&gt;
 INACTIVE=-1&lt;br /&gt;
 EXPIRE=&lt;br /&gt;
 SHELL=/bin/sh&lt;br /&gt;
 SKEL=/etc/skel&lt;br /&gt;
 CREATE_MAIL_SPOOL=no&lt;br /&gt;
&lt;br /&gt;
Defaulteinstellungen ändern&lt;br /&gt;
 useradd -D -s /bin/bash&lt;br /&gt;
&lt;br /&gt;
Konfigurationsdatei&lt;br /&gt;
 root@zero:~# cat /etc/default/useradd &lt;br /&gt;
 SHELL=/bin/bash&lt;br /&gt;
 GROUP=100&lt;br /&gt;
 HOME=/home&lt;br /&gt;
 INACTIVE=-1&lt;br /&gt;
 EXPIRE=&lt;br /&gt;
 SKEL=/etc/skel&lt;br /&gt;
 CREATE_MAIL_SPOOL=no&lt;br /&gt;
&lt;br /&gt;
===usermod===&lt;br /&gt;
User modifizieren&lt;br /&gt;
 root@zero:~# usermod -l fritz -s /bin/sh -G admin,video erwin&lt;br /&gt;
{| border=1 cellpadding=2&lt;br /&gt;
|&amp;quot;-l fritz&amp;quot;&lt;br /&gt;
|Neuer Username&lt;br /&gt;
|-&lt;br /&gt;
|&amp;quot;-s /bin/sh&amp;quot;&lt;br /&gt;
|Neue Shell&lt;br /&gt;
|-&lt;br /&gt;
|&amp;quot;-G admin, video&amp;quot;&lt;br /&gt;
|Sekunbdäre Gruppen werden zugeordnet&lt;br /&gt;
|-&lt;br /&gt;
|&amp;quot;erwin&amp;quot; &lt;br /&gt;
|Name des Users&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
===userdel===&lt;br /&gt;
User inklusive Homedirectory löschen&lt;br /&gt;
 root@zero:~# userdel -r fritz&lt;br /&gt;
&lt;br /&gt;
===passwd===&lt;br /&gt;
Rootpasswort ändern&lt;br /&gt;
 root@zero:~# passwd &lt;br /&gt;
 Geben Sie ein neues UNIX Passwort ein:'''sysadm''' &lt;br /&gt;
 Geben Sie das neue UNIX Passwort erneut ein:'''sysadm''' &lt;br /&gt;
 passwd: Passwort erfolgreich geändert&lt;br /&gt;
&lt;br /&gt;
Passwort von tux ändern&lt;br /&gt;
 root@zero:~# passwd tux&lt;br /&gt;
 Geben Sie ein neues UNIX Passwort ein:'''suxer''' &lt;br /&gt;
 Geben Sie das neue UNIX Passwort erneut ein:'''suxer'''&lt;br /&gt;
 passwd: Passwort erfolgreich geändert&lt;br /&gt;
&lt;br /&gt;
Minimale und Maximale Gültigkeit des Passwortes von tux festlegen&lt;br /&gt;
 root@zero:~# passwd -n 5 -x 120 tux&lt;br /&gt;
&lt;br /&gt;
===groupadd===&lt;br /&gt;
 root@zero:~# groupadd -f -g 2001 xinuxer&lt;br /&gt;
{| border=1 cellpadding=2&lt;br /&gt;
|&amp;quot;-f&amp;quot;&lt;br /&gt;
|Überschreibe bestehende Gruppe&lt;br /&gt;
|-&lt;br /&gt;
|&amp;quot;-g 2001&amp;quot;&lt;br /&gt;
|GID der Gruppe&lt;br /&gt;
|-&lt;br /&gt;
|&amp;quot;xinuxer&amp;quot; &lt;br /&gt;
|Name des Gruppe&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==chmod==&lt;br /&gt;
Die Syntax des Befehls chmod lautet:&lt;br /&gt;
&lt;br /&gt;
'''chmod''' WerWieWas [,WerWieWas,.....] Dateiliste&lt;br /&gt;
&lt;br /&gt;
oder&lt;br /&gt;
&lt;br /&gt;
'''chmod''' Oktalzahl Dateiliste&lt;br /&gt;
&lt;br /&gt;
Durch WerWieWas bzw. Oktalzahl wird die Rechtetabelle definiert. Innerhalb von&lt;br /&gt;
WerWieWas darf es kein Leerzeichen geben. Wer bezeichnet den Benutzerkreis,&lt;br /&gt;
dem man Rechte gibt, Wie die Art, in der die Rechte gegeben werden und Was die&lt;br /&gt;
Rechte als solche. Im einzelnen können folgende Kürzel benutzt werden:&lt;br /&gt;
&lt;br /&gt;
Für Wer kann eines der folgenden Kürzel oder eine Kombination davon stehen:&lt;br /&gt;
 u                   (user) Rechte für den Dateibesitzer&lt;br /&gt;
 g                   (group) Rechte für die Gruppe&lt;br /&gt;
 o                   (others) Rechte für alle anderen Benutzer&lt;br /&gt;
 a                   (all) Rechte für alle Benutzer&lt;br /&gt;
Für Wie steht eines der folgenden Kürzel:&lt;br /&gt;
 +                   Die Rechte werden zu den vorhandenen zusätzlich vergeben&lt;br /&gt;
 -                   Die im Folgenden genannten Rechte werden entzogen&lt;br /&gt;
 =                   Die im Folgenden genannten Rechte ersetzen die bisherigen&lt;br /&gt;
Für Was steht eines der folgenden Kürzel:&lt;br /&gt;
 r                   (read) lesen&lt;br /&gt;
 w                   (write) schreiben&lt;br /&gt;
 x                   (execute) ausführen&lt;br /&gt;
oder diese Sonderformen&lt;br /&gt;
 s                   (usersbit) Programm läuft unter der UID des Besitzers&lt;br /&gt;
 s                   (groupsbit)Programm läuft unter der GID des GRUPPE&lt;br /&gt;
 t                   (stickybit) Dateien im Verzeichnis darf nur Besitzer löschen&lt;br /&gt;
&lt;br /&gt;
===Beispiel===&lt;br /&gt;
Setze für alle Schreib- und Leserecht&lt;br /&gt;
 xinux@zero:~$ chmod a=rw test &lt;br /&gt;
 xinux@zero:~$ ls -l test &lt;br /&gt;
 -rw-rw-rw- 1 xinux xinux 0 2009-06-16 12:01 test&lt;br /&gt;
 xinux@zero:~$ &lt;br /&gt;
&lt;br /&gt;
Erteile Besitzer Ausführungsrecht&lt;br /&gt;
 xinux@zero:~$ chmod u+x test ; ls -l test &lt;br /&gt;
 -rwxrw-rw- 1 xinux xinux 0 2009-06-16 12:01 test&lt;br /&gt;
 xinux@zero:~$ &lt;br /&gt;
&lt;br /&gt;
===chmod oktale Schreibweise===&lt;br /&gt;
 Specialrights        User           Group         Other&lt;br /&gt;
 usbit gsbit sticky    r    w   x     r   w   x     r   w   x&lt;br /&gt;
   1     1      1      1    1   1     1   1   1     1   1   1&lt;br /&gt;
   0     0      0      0    0   0     0   0   0     0   0   0&lt;br /&gt;
 Oktale Wertigkeit pro Recht&lt;br /&gt;
   4     2       1     4    2   1     4   2   1     4   2   1&lt;br /&gt;
&lt;br /&gt;
===Beispiele===&lt;br /&gt;
 xinux@zero:~$ chmod 751 test ; ls -l test&lt;br /&gt;
 -rwxr-x--x 1 xinux xinux 0 2009-06-16 12:01 test&lt;br /&gt;
 xinux@zero:~$ &lt;br /&gt;
&lt;br /&gt;
 xinux@zero:~$ chmod 4770 test ; ls -l test&lt;br /&gt;
 -rwsrwx--- 1 xinux xinux 0 2009-06-16 12:01 test&lt;br /&gt;
 xinux@zero:~$ &lt;br /&gt;
&lt;br /&gt;
 xinux@zero:~$ chmod 0 test ; ls -l test &lt;br /&gt;
 ---------- 1 xinux xinux 0 2009-06-16 12:01 test&lt;br /&gt;
&lt;br /&gt;
===chmod Optionen===&lt;br /&gt;
 -c   (changes) es werden nur die Dateien angezeigt, deren Zugriffsrechte tatsächlich verändert werden&lt;br /&gt;
 -f   (silent, quiet) Fehlermeldungen wegen fehlgeschlagener Änderungsversuche werden unterdrückt&lt;br /&gt;
 -v   (verbose) alle Aktionen werden angezeigt&lt;br /&gt;
 -R   (recursive) die Zugriffsrechte aller Dateien in den Unterverzeichnissen werden ebenfalls geändert&lt;br /&gt;
&lt;br /&gt;
Theoretisch sind alle Kombinationen der Zugriffsrechte denkbar, aber der&lt;br /&gt;
Eigentümer einer Datei darf diese immer lesen, selbst wenn das Lesebit nicht&lt;br /&gt;
gesetzt ist. Genauso macht es wenig Sinn, eine gewöhnliche Textdatei als&lt;br /&gt;
ausführbar zu setzen; die Shell wird damit nichts anfangen können. Ein x für ein&lt;br /&gt;
Verzeichnis gibt an, dass in dieses gewechselt werden kann.&lt;br /&gt;
&lt;br /&gt;
Rechte sind verbindlich&lt;br /&gt;
&lt;br /&gt;
Interessant ist auch ein Konstrukt folgender Art&lt;br /&gt;
 -rwx---rwx&lt;br /&gt;
&lt;br /&gt;
das angibt, dass mit der Datei alles angestellt werden kann, außer durch Nutzer der&lt;br /&gt;
Gruppe. Versucht irgend jemand, der nicht der Gruppe des Eigentümers angehört,&lt;br /&gt;
die Datei zu modifizieren, wird ihm dies gelingen, einem Gruppenmitglied bleibt&lt;br /&gt;
dies versagt, obwohl er ja gleichzeitig ein &amp;quot;Anderer&amp;quot; ist. D.h. die Rechte der&lt;br /&gt;
Gruppe sind verbindlicher, als die Rechte der anderen!&lt;br /&gt;
&lt;br /&gt;
===Bedeutungen der Zugriffsarten===&lt;br /&gt;
====Dateien====&lt;br /&gt;
* r: Der Inhalt der Datei kann gelesen und damit auch kopiert werden. &lt;br /&gt;
 root@zero:~# cat test&lt;br /&gt;
 Dies ist eine Testdatei&lt;br /&gt;
  &lt;br /&gt;
 root@zero:~# cp test backup&lt;br /&gt;
&lt;br /&gt;
* w: Der Inhalt der Datei darf verändert werden. Ob die Datei gelöscht werden kann ist&lt;br /&gt;
keine Eigenschaft der Datei, sondern des Verzeichnisses, indem sich die Datei befindet.&lt;br /&gt;
 root@zero:~# cat &amp;gt; test&lt;br /&gt;
 Hier steht jetzt was anderes&lt;br /&gt;
 ^C&lt;br /&gt;
 root@zero:~# cat test&lt;br /&gt;
 Hier steht jetzt was anderes&lt;br /&gt;
  &lt;br /&gt;
 xinux@zero:~$ ls -ld verzeichnis/&lt;br /&gt;
 dr-xr-xr-x 2 xinux xinux 4096 2009-06-18 11:16 verzeichnis/&lt;br /&gt;
 xinux@zero:~/verzeichnis$ rm text&lt;br /&gt;
 rm: Entfernen von „text“ nicht möglich: Permission denied&lt;br /&gt;
&lt;br /&gt;
* x: Ausführrecht für Programme und Skripte&lt;br /&gt;
 xinux@zero:~$ ./programm&lt;br /&gt;
 -bash: ./programm: Permission denied&lt;br /&gt;
 xinux@zero:~$ chmod +x programm&lt;br /&gt;
 xinux@zero:~$ ./programm&lt;br /&gt;
 Test&lt;br /&gt;
  test&lt;br /&gt;
&lt;br /&gt;
====Verzeichnisse====&lt;br /&gt;
* r: Die Einträge in dem Verzeichnis sind lesbar.&lt;br /&gt;
Leserecht von verzeichnis/ entziehen&lt;br /&gt;
 xinux@zero:~$ chmod a-r verzeichnis/&lt;br /&gt;
 xinux@zero:~$ ls verzeichnis/&lt;br /&gt;
 ls: Öffnen von Verzeichnis verzeichnis/ nicht möglich: Permission denied&lt;br /&gt;
Leserecht für Benutzer und Gruppe vergeben&lt;br /&gt;
 xinux@zero:~$ chmod a+r verzeichnis/&lt;br /&gt;
 xinux@zero:~$ ls verzeichnis/&lt;br /&gt;
 text&lt;br /&gt;
&lt;br /&gt;
* w: Die Einträge in dem Verzeichnis können geändert werden. &lt;br /&gt;
Neue Datei erstellen&lt;br /&gt;
 xinux@zero:~$ touch neu&lt;br /&gt;
 xinux@zero:~$ ls neu&lt;br /&gt;
 neu&lt;br /&gt;
&lt;br /&gt;
Datei löschen&lt;br /&gt;
 xinux@zero:~$ rm neu&lt;br /&gt;
 xinux@zero:~$ ls neu&lt;br /&gt;
 ls: Zugriff auf neu nicht möglich: No such file or directory&lt;br /&gt;
&lt;br /&gt;
* x: Der Name des Verzeichnisses kann in einem Pfadnamen erscheinen.&lt;br /&gt;
Verzeichnis ohne x Recht&lt;br /&gt;
 xinux@zero:~$ chmod a-x verzeichnis/&lt;br /&gt;
Wechseln in Verzeichnis mangels x-Recht nicht möglich&lt;br /&gt;
 xinux@zero:~$ cd verzeichnis/&lt;br /&gt;
 -bash: cd: verzeichnis/: Permission denied&lt;br /&gt;
x-Recht vergeben&lt;br /&gt;
 xinux@zero:~$ chmod a+x verzeichnis/&lt;br /&gt;
damit Wechsel in Verzeichnis möglich&lt;br /&gt;
 xinux@zero:~$ cd verzeichnis/&lt;br /&gt;
 xinux@zero:~/verzeichnis$ pwd&lt;br /&gt;
 /home/xinux/verzeichnis&lt;br /&gt;
&lt;br /&gt;
====umask====&lt;br /&gt;
Neue Dateien und Verzeichnisse werden mit ein und denselben Zufriffsrechten erzeugt.&lt;br /&gt;
 xinux@zero:~$ mkdir text&lt;br /&gt;
 xinux@zero:~$ touch textdat&lt;br /&gt;
 xinux@zero:~$ ls -ld text*&lt;br /&gt;
 drwxr-xr-x 2 xinux xinux 4096 2009-06-18 11:37 text&lt;br /&gt;
 -rw-r--r-- 1 xinux xinux    0 2009-06-18 11:37 textdat&lt;br /&gt;
&lt;br /&gt;
Zuständig für dieses Verhalten ist die sogenannte umask, die oft in der Datei&lt;br /&gt;
/etc/profile auf den Wert 022 voreingestellt ist. Zusätzlich wird noch eine&lt;br /&gt;
Maximalmaske benötigt, die sich für Verzeichnisse und andere Dateien&lt;br /&gt;
unterscheidet. Die bei der Erzeugung gesetzten Rechte entstehen nun, indem von&lt;br /&gt;
der Maximalmaske der durch die umask vorgegebene Wert subtrahiert wird:&lt;br /&gt;
&lt;br /&gt;
{| border=1 cellpadding=2&lt;br /&gt;
!&lt;br /&gt;
! Dateien&lt;br /&gt;
! Verzeichnisse&lt;br /&gt;
|-&lt;br /&gt;
| Systemvorgabe&lt;br /&gt;
| 666&lt;br /&gt;
| 777&lt;br /&gt;
|-&lt;br /&gt;
| -umask&lt;br /&gt;
| 022&lt;br /&gt;
| 022&lt;br /&gt;
|-&lt;br /&gt;
| Ergebnis&lt;br /&gt;
| 644&lt;br /&gt;
| 755&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
 xinux@zero:~$ grep umask /etc/profile&lt;br /&gt;
 umask 022&lt;br /&gt;
&lt;br /&gt;
==Gruppenzugehörigkeit==&lt;br /&gt;
===newgrp===&lt;br /&gt;
Ändert die Gruppenzugehörigkeit eines Benutzers auf die angegebene Gruppe. Wenn keine Gruppe angegeben wird, wird die &lt;br /&gt;
Anmeldegruppe des Benutzers verwendet. Die neue Gruppe wird anschließend fü Zugriffskontrollen verwendet.&lt;br /&gt;
&lt;br /&gt;
 newgrp Gruppenname&lt;br /&gt;
&lt;br /&gt;
 root@zero:~# newgrp hacker&lt;br /&gt;
 root@zero:~# id&lt;br /&gt;
 uid=0(root) gid=1006(hacker) Gruppen=0(root),1006(hacker)&lt;br /&gt;
&lt;br /&gt;
===chgrp===&lt;br /&gt;
Verändert die Besitzugehörigkeit zu der angegebenen Gruppe&lt;br /&gt;
&lt;br /&gt;
 chgrp [Optionen] Gruppe Datei(en)&lt;br /&gt;
&lt;br /&gt;
Optionen:&lt;br /&gt;
 -c Zeigt Veränderungen an&lt;br /&gt;
 -f Unterdrückt die meisten Fehlermeldungen&lt;br /&gt;
 -R Verändert Dateien und Verzeichnisse rekursiv&lt;br /&gt;
 -v Gibt geschwätzige Ausgabe aus.&lt;br /&gt;
&lt;br /&gt;
 root@zero:~# ls -l&lt;br /&gt;
 ...&lt;br /&gt;
 d-wx--x--x  3 root root 4096 2009-06-18 13:34 verzeichnis&lt;br /&gt;
 &lt;br /&gt;
 root@zero:~# chgrp -R xinux verzeichnis/&lt;br /&gt;
 root@zero:~# ls -l&lt;br /&gt;
 ...&lt;br /&gt;
 d-wx--x--x  3 root xinux 4096 2009-06-18 13:34 verzeichnis&lt;br /&gt;
&lt;br /&gt;
 xinux@zero:~$ cd /root/verzeichnis/&lt;br /&gt;
 xinux@zero:/root/verzeichnis$ pwd&lt;br /&gt;
 /root/verzeichnis&lt;br /&gt;
&lt;br /&gt;
===chown===&lt;br /&gt;
Ändert den Eigentümer von einer oder mehreren Dateien in den angegebenen Benutzer. &lt;br /&gt;
chown erlaubt ebenfalls das Ändern der Gruppeneigentümreschaft. Nur der aktuelle Eigentümer einer&lt;br /&gt;
Datei oder der Superuser (root) darf die Eigentumsverhältnisse ändern.&lt;br /&gt;
&lt;br /&gt;
 chown [Optionen] Benutzer(:Gruppe) Dateien&lt;br /&gt;
&lt;br /&gt;
Optionen:&lt;br /&gt;
 -c Gibt Informationen über die veränderten Dateien aus&lt;br /&gt;
 --dereference Symbolischen Links folgen&lt;br /&gt;
 -v Gibt Informationen über alle Dateien aus, die chown zu ändern versucht, egal, ob die Änderung erfolgt ist oder nicht&lt;br /&gt;
 -R Geht rekursiv durch alle Unterverzeichnisse und führt die Änderungen durch. &lt;br /&gt;
&lt;br /&gt;
 root@zero:~# chown -R xinux.xinux verzeichnis/&lt;br /&gt;
 root@zero:~# ls -l&lt;br /&gt;
 insgesamt 12&lt;br /&gt;
 drwx------ 13 root  root  4096 2009-04-21 15:11 profile&lt;br /&gt;
 --w-------  1 root  root     0 2009-06-18 11:13 test&lt;br /&gt;
 -rw-r--r--  1 root  root    40 2009-06-18 12:04 text&lt;br /&gt;
 drwxrwx--x  3 xinux xinux 4096 2009-06-18 13:39 verzeichnis&lt;br /&gt;
 &lt;br /&gt;
 root@zero:~# chown -R -c xinux.xinux verzeichnis/&lt;br /&gt;
 &lt;br /&gt;
 root@zero:~# chown -R -v xinux.xinux verzeichnis/&lt;br /&gt;
 Eigentümer von „verzeichnis/01“ als xinux:xinux erhalten&lt;br /&gt;
 Eigentümer von „verzeichnis/test“ als xinux:xinux erhalten&lt;br /&gt;
 Eigentümer von „verzeichnis/“ als xinux:xinux erhalten&lt;br /&gt;
&lt;br /&gt;
==Eingabe/Ausgabe==&lt;br /&gt;
Standardeingabe (0): Laufende Programme erwarten von hier ihre Eingaben (normalerweise handelt es sich um die Tastatur).&lt;br /&gt;
&lt;br /&gt;
Standardausgabe (1): Programme schreiben auf diese ihre Ausgaben (Bildschirm).&lt;br /&gt;
&lt;br /&gt;
Standardfehlerausgabe (2) : Fehlerausgaben landen hier (Bildschirm, aber nur die aktive Konsole).&lt;br /&gt;
&lt;br /&gt;
[[Bild:std.jpg]]&lt;br /&gt;
&lt;br /&gt;
===cat===&lt;br /&gt;
Das Programm cat liest von STDIN und gibt es STDOUT wieder aus&lt;br /&gt;
&lt;br /&gt;
Einlesen der Datei text&lt;br /&gt;
 root@zero:~# cat &amp;lt; text&lt;br /&gt;
 wichtig&lt;br /&gt;
&lt;br /&gt;
Schreiben in die Datei text, dies überschreibt den bisherigen Inhalt der Datei&lt;br /&gt;
 root@zero:~# cat &amp;gt; text&lt;br /&gt;
 sogar noch wichtiger &lt;br /&gt;
 &lt;br /&gt;
Ausgeben der Datei text&lt;br /&gt;
 root@zero:~# cat text &lt;br /&gt;
 sogar noch wichtiger&lt;br /&gt;
&lt;br /&gt;
Lesen aus der Datei text und schreiben in die Datei neuertext&lt;br /&gt;
 root@zero:~# cat &amp;lt; text &amp;gt; neuertext&lt;br /&gt;
 root@zero:~# cat neuertext&lt;br /&gt;
 sogar noch wichtiger&lt;br /&gt;
&lt;br /&gt;
Anhängen der Ausgabe von date an die Datei neuertext&lt;br /&gt;
 root@zero:~# date &amp;gt;&amp;gt; neuertext&lt;br /&gt;
 root@zero:~# cat neuertext&lt;br /&gt;
 sogar noch wichtiger&lt;br /&gt;
 Do 18. Jun 14:08:58 CEST 2009&lt;br /&gt;
&lt;br /&gt;
Umleiten des Standardfehlerkanals nach error&lt;br /&gt;
 root@zero:~# rm sux 2&amp;gt; error&lt;br /&gt;
 root@zero:~# more error&lt;br /&gt;
 rm: Entfernen von „sux“ nicht möglich: No such file or directory&lt;br /&gt;
&lt;br /&gt;
===Umleitungen===&lt;br /&gt;
Nacheinander auszuführende Kommandos&lt;br /&gt;
 root@zero:~# pwd; date&lt;br /&gt;
 /root&lt;br /&gt;
 Do 18. Jun 14:13:05 CEST 2009&lt;br /&gt;
 &lt;br /&gt;
Übergeben der Ausgabe von tail als Eingabe von grep mit Hilfe der Pipe &amp;quot;|&amp;quot;&lt;br /&gt;
 root@zero:~# tail /var/log/auth.log | grep xinux&lt;br /&gt;
 Jun 18 13:52:33 zero nss_wins[11433]: pam_unix(login:session): session closed for user xinux&lt;br /&gt;
&lt;br /&gt;
Übergeben der letzten 100 Zeilen von syslog als Eingabe von grep&lt;br /&gt;
 root@zero:~# tail /var/log/syslog -n 100 | grep error&lt;br /&gt;
 Jun 18 09:30:54 zero kernel: [154384.692135] end_request: I/O error, dev fd0, sector 0&lt;br /&gt;
 Jun 18 09:30:54 zero kernel: [154384.712137] end_request: I/O error, dev fd0, sector 0&lt;br /&gt;
&lt;br /&gt;
==tr==&lt;br /&gt;
tr ist ein Programm um Zeichen zu übersetzen. Dies betrifft nur die Ausgabe, die Datei selbst bleibt unverändert.&lt;br /&gt;
&lt;br /&gt;
Ersetzt Kleinbuchstaben durch Großbuchstaben aus der Datei text&lt;br /&gt;
 root@zero:~# tr &amp;quot;a-z&amp;quot; &amp;quot;A-Z&amp;quot; &amp;lt; text&lt;br /&gt;
 SOGAR NOCH WICHTIGER&lt;br /&gt;
 123&lt;br /&gt;
 34&lt;br /&gt;
 4711&lt;br /&gt;
 TEST&lt;br /&gt;
&lt;br /&gt;
Ersetzt alle Zahlen durch X&lt;br /&gt;
 root@zero:~# tr &amp;quot;0-9&amp;quot; &amp;quot;X&amp;quot; &amp;lt; text&lt;br /&gt;
 sogar noch wichtiger&lt;br /&gt;
 XXX&lt;br /&gt;
 XX&lt;br /&gt;
 XXXX&lt;br /&gt;
 test&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
 root@zero:~# cat &amp;gt; test&lt;br /&gt;
 +++++&lt;br /&gt;
 ###&lt;br /&gt;
 1111&lt;br /&gt;
&lt;br /&gt;
-s löscht mehrfach kommende Zeichen&lt;br /&gt;
 root@zero:~# tr '''-s''' &amp;quot;+&amp;quot; &amp;lt; test&lt;br /&gt;
 +&lt;br /&gt;
 ###&lt;br /&gt;
 1111&lt;br /&gt;
&lt;br /&gt;
-d löscht vorkommende Zeichen &lt;br /&gt;
 root@zero:~# tr '''-d''' &amp;quot;#&amp;quot; &amp;lt; test&lt;br /&gt;
 +++++ &lt;br /&gt;
 &lt;br /&gt;
 1111&lt;br /&gt;
&lt;br /&gt;
==cut==&lt;br /&gt;
Spalten aus einer Datei schneiden. Dies betrifft nur die Ausgabe, die Datei selbst bleibt unverändert.&lt;br /&gt;
 &lt;br /&gt;
Schneidet die erste Spalte aus, der Delimiter ist : &lt;br /&gt;
 root@zero:~# cut -f 1 -d : /etc/passwd&lt;br /&gt;
 root&lt;br /&gt;
 daemon&lt;br /&gt;
 bin&lt;br /&gt;
 ...&lt;br /&gt;
 xinux&lt;br /&gt;
&lt;br /&gt;
 root@zero:~# more test&lt;br /&gt;
 1234#5678#9999&lt;br /&gt;
 &lt;br /&gt;
Schneidet die zweite Spalte aus, der Delimiter ist #&lt;br /&gt;
 root@zero:~# cut -f 2 -d &amp;quot;#&amp;quot; &amp;lt; test&lt;br /&gt;
 5678&lt;br /&gt;
&lt;br /&gt;
Schneidet bis zum 3 Zeichen ab&lt;br /&gt;
 root@zero:~$ echo S01policykit | cut -c 4-&lt;br /&gt;
 policykit&lt;br /&gt;
&lt;br /&gt;
==expand==&lt;br /&gt;
Ersetzt Tabulatorzeichen durch Folgen von Leerzeichen und schreibt das Ergebnis auf die Standardausgabe&lt;br /&gt;
 root@zero:~# expand /etc/samba/smb.conf&lt;br /&gt;
 ...&lt;br /&gt;
&lt;br /&gt;
==fmt==&lt;br /&gt;
Setzt den Text der Dateien im Blocksatz der angegebenen Breite durch Auffüllen von Zeilen und Entfernen von Zeilenwechseln.&lt;br /&gt;
Standardgemäß werden Leerzeilen, die Position von Leerzeichen und der Einzug am Zeilenanfang erhalten. fmt versucht, &lt;br /&gt;
Zeilenumbrüche an Satzenden durchzuführen sowie sie nach dem ersten oder vor dem letzten Wort eines Satzes zu vermeiden. &lt;br /&gt;
 &lt;br /&gt;
 fmt [Optionen] [Dateien]&lt;br /&gt;
&lt;br /&gt;
Optionen&lt;br /&gt;
&lt;br /&gt;
* -p ''Präfix'': Formatiert nur Zeilen, die mit ''Präfix'' anfangen&lt;br /&gt;
 root@zero:/tmp# fmt -p '#' text&lt;br /&gt;
 #Setzt den Text der Dateien im Blocksatz der angegebenen Breite durch&lt;br /&gt;
 #Auffüllen von Zeilen und Entfernen von Zeilenwechseln.  Standardgemäß&lt;br /&gt;
 #werden Leerzeilen, die Position von Leerzeichen und der Einzug am&lt;br /&gt;
 #Zeilenanfang erhalten. fmt versucht,&lt;br /&gt;
 Zeilenumbrüche an Satzenden durchzuführen sowie sie nach dem ersten oder vor dem letzten Wort eines Satzes zu vermeiden.&lt;br /&gt;
&lt;br /&gt;
* -u : Erzwingt genau ein Leerzeichen zwischen Wörtern und zwei Leerzeichen zwischen Sätzen&lt;br /&gt;
&lt;br /&gt;
* -w ''Breite'': Setzt die Ausgabebreite auf ''Breite''&lt;br /&gt;
 root@zero:/tmp# fmt -w 30 text&lt;br /&gt;
 #Setzt den Text der Dateien&lt;br /&gt;
 im Blocksatz der angegebenen&lt;br /&gt;
 Breite durch Auffüllen&lt;br /&gt;
 von Zeilen und Entfernen&lt;br /&gt;
 von Zeilenwechseln.&lt;br /&gt;
 #Standardgemäß werden&lt;br /&gt;
 Leerzeilen, die Position von&lt;br /&gt;
 Leerzeichen und der Einzug am&lt;br /&gt;
 Zeilenanfang erhalten. fmt&lt;br /&gt;
 versucht, Zeilenumbrüche&lt;br /&gt;
 an Satzenden durchzuführen&lt;br /&gt;
 sowie sie nach dem ersten&lt;br /&gt;
 oder vor dem letzten Wort&lt;br /&gt;
 eines Satzes zu vermeiden.&lt;br /&gt;
&lt;br /&gt;
==join==&lt;br /&gt;
Führt die Zeilen zweier sortierter Dateien anhand von '''Übereinstimmungen''' in einem gemeinsamen Feld zusammen.&lt;br /&gt;
&lt;br /&gt;
 root@zero:~# more name&lt;br /&gt;
 1. karl&lt;br /&gt;
 2. heinz&lt;br /&gt;
 3. hans&lt;br /&gt;
 4. otto&lt;br /&gt;
 root@zero:~# more tel&lt;br /&gt;
 1. 1234&lt;br /&gt;
 2. 4321&lt;br /&gt;
 3. 222&lt;br /&gt;
 4. 121212&lt;br /&gt;
 root@zero:~# join name tel &amp;gt; telefonbuch&lt;br /&gt;
 root@zero:~# more telefonbuch&lt;br /&gt;
 1. karl 1234&lt;br /&gt;
 2. heinz 4321&lt;br /&gt;
 3. hans 222&lt;br /&gt;
 4. otto 121212&lt;br /&gt;
&lt;br /&gt;
==nl==&lt;br /&gt;
Nummeriert die Zeilen in einer Datei.&lt;br /&gt;
&lt;br /&gt;
 root@zero:~# nl /etc/passwd                                                   &lt;br /&gt;
     1  root:x:0:0:root:/root:/bin/bash                                       &lt;br /&gt;
     2  daemon:x:1:1:daemon:/usr/sbin:/bin/sh                                 &lt;br /&gt;
     3  bin:x:2:2:bin:/bin:/bin/sh                                            &lt;br /&gt;
     4  sys:x:3:3:sys:/dev:/bin/sh                                            &lt;br /&gt;
     5  sync:x:4:65534:sync:/bin:/bin/sync&lt;br /&gt;
     ...&lt;br /&gt;
&lt;br /&gt;
==od==&lt;br /&gt;
Gibt Dateien im Oktal und anderen Formaten aus.&lt;br /&gt;
&lt;br /&gt;
 od [Optionen] Datei&lt;br /&gt;
&lt;br /&gt;
* -j ''Bytes'': Überspringt die Anzahl ''Bytes'' einer Datei&lt;br /&gt;
* -N ''Bytes'': Gibt nur die Anzahl ''Bytes'' aus&lt;br /&gt;
* -c : Gebe ASCII Zeichen aus&lt;br /&gt;
* -f : Gebe Fließkommazahlen aus&lt;br /&gt;
* -i : Gebe Dezimal Integer aus&lt;br /&gt;
* -l : Gebe Dezimal Long aus&lt;br /&gt;
* -o : Gebe Oktal 2 Byte Einheiten aus&lt;br /&gt;
* -s : Gebe Dezimal 2 Byte Einheiten aus&lt;br /&gt;
* -x : Gebe Hexadezimale 2 Byte einheiten aus&lt;br /&gt;
&lt;br /&gt;
Beispiele&lt;br /&gt;
&lt;br /&gt;
Gebe Master Boot Record (die ersten 512 Byte der Festplatte /dev/sda) als Hexadezimal aus&lt;br /&gt;
 root@zero:~# od '''-x -N''' 512 /dev/sda&lt;br /&gt;
 0000000 48eb 1090 d08e 00bc b8b0 0000 d88e c08e&lt;br /&gt;
 0000020 befb 7c00 00bf b906 0200 a4f3 21ea 0006&lt;br /&gt;
 0000040 be00 07be 0438 0b75 c683 8110 fefe 7507&lt;br /&gt;
 0000060 ebf3 b416 b002 bb01 7c00 80b2 748a 0203&lt;br /&gt;
 0000100 00ff 2000 0001 0000 0200 90fa f690 80c2&lt;br /&gt;
 ...&lt;br /&gt;
&lt;br /&gt;
Schreibe &amp;quot;suxer&amp;quot; in die Datei test&lt;br /&gt;
 root@zero:~# echo &amp;quot;suxer&amp;quot; &amp;gt; test&lt;br /&gt;
Ausgabe Hexadezimal&lt;br /&gt;
 root@zero:~# od -x test&lt;br /&gt;
 0000000 7573 6578 0a72&lt;br /&gt;
 0000006&lt;br /&gt;
&lt;br /&gt;
Ausgabe ASCII Zeichen&lt;br /&gt;
 root@zero:~# od -c test&lt;br /&gt;
 0000000   s   u   x   e   r  \n&lt;br /&gt;
 0000006&lt;br /&gt;
&lt;br /&gt;
==paste==&lt;br /&gt;
Fügt die Zeilen von zwei oder mehr Dateien horizontal zusammen&lt;br /&gt;
 root@zero:~# paste name tel&lt;br /&gt;
 1. karl 1. 1234&lt;br /&gt;
 2. heinz        2. 4321&lt;br /&gt;
 3. hans 3. 222&lt;br /&gt;
 4. otto 4. 121212&lt;br /&gt;
&lt;br /&gt;
==pr==&lt;br /&gt;
Bereitet Textdateien zum Drucken vor.&lt;br /&gt;
&lt;br /&gt;
 root@zero:~# echo &amp;quot;Plan für heute&amp;quot; &amp;gt; dokument&lt;br /&gt;
 root@zero:~# more dokument&lt;br /&gt;
 Plan für heute&lt;br /&gt;
 root@zero:~# pr dokument   &lt;br /&gt;
  &lt;br /&gt;
 &lt;br /&gt;
 2009-06-19 12:44                    dokument                     Seite 1&lt;br /&gt;
 &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
 Plan für heute&lt;br /&gt;
&lt;br /&gt;
Anmerkung Ausmaße der Bildschirmausgabe wie eine Druckseite.&lt;br /&gt;
&lt;br /&gt;
==sed==&lt;br /&gt;
streaming editor. Mit sed ist es möglich, den Inhalt einer Datei automatisch (nicht interaktiv) zu&lt;br /&gt;
bearbeiten. Wie unter Linux üblich, wird auch hier der Text nicht wirklich verändert sondern die &lt;br /&gt;
Änderung erfolgt über die Standardausgabe, die wieder umgeleitet werden kann. Die Syntax ist ähnlich &lt;br /&gt;
des ex modus von vi. Reguläre Ausdrücke können nach Belieben benutzt werden. &lt;br /&gt;
&lt;br /&gt;
Optionen:&lt;br /&gt;
 -e Zeichenkette  wendet die Editorbefehle aus Zeichenkette auf den Text an.&lt;br /&gt;
 -n gibt nur die Zeilen aus, die explizit (durch &amp;quot;p&amp;quot; ausgedruckt werden sollen&lt;br /&gt;
&lt;br /&gt;
Gibt die dritte Zeile der Datei text aus&lt;br /&gt;
 root@zero:~# sed -n &amp;quot;3p&amp;quot; text&lt;br /&gt;
 34&lt;br /&gt;
&lt;br /&gt;
Gibt die erste bis dritte Zeile von text aus&lt;br /&gt;
 root@zero:~# sed -n &amp;quot;1,3p&amp;quot; text&lt;br /&gt;
 sogar noch wichtiger&lt;br /&gt;
 123&lt;br /&gt;
 34&lt;br /&gt;
&lt;br /&gt;
Löschen der Zeile mit &amp;quot;sogar&amp;quot;&lt;br /&gt;
 root@zero:~# sed -e '/sogar/d' &amp;lt; text&lt;br /&gt;
 123&lt;br /&gt;
 34&lt;br /&gt;
 4711&lt;br /&gt;
 test&lt;br /&gt;
&lt;br /&gt;
und schreiben in text2&lt;br /&gt;
 root@zero:~# sed -e '/sogar/d' &amp;lt; text &amp;gt; text2&lt;br /&gt;
 root@zero:~# more text2&lt;br /&gt;
 123&lt;br /&gt;
 34&lt;br /&gt;
 4711&lt;br /&gt;
 test&lt;br /&gt;
&lt;br /&gt;
Alle 3en durch DREI ersetzen&lt;br /&gt;
 root@zero:~# sed -e 's/3/DREI/g' &amp;lt; text&lt;br /&gt;
 sogar noch wichtiger&lt;br /&gt;
 12DREI&lt;br /&gt;
 DREI4&lt;br /&gt;
 4711&lt;br /&gt;
 test&lt;br /&gt;
&lt;br /&gt;
==wc==&lt;br /&gt;
Zählt die Anzahl von Zeichen, Wörter oder Zeilen&lt;br /&gt;
&lt;br /&gt;
Optionen&lt;br /&gt;
* -m : Zählt die Anzahl der Zeichen&lt;br /&gt;
 root@zero:~# more name&lt;br /&gt;
 1. karl&lt;br /&gt;
 2. heinz&lt;br /&gt;
 3. hans&lt;br /&gt;
 4. otto&lt;br /&gt;
 root@zero:~# wc '''-m''' tel&lt;br /&gt;
 33 tel&lt;br /&gt;
&lt;br /&gt;
* -w : Zählt die Anzahl der Wörter (einschließlich Zahlen und andere Zeichen)&lt;br /&gt;
 root@zero:~# wc '''-w''' name&lt;br /&gt;
 8 name&lt;br /&gt;
&lt;br /&gt;
* -l : Zählt die Anzahl der Zeilen&lt;br /&gt;
 root@zero:~# wc '''-l''' name&lt;br /&gt;
 4 name&lt;br /&gt;
&lt;br /&gt;
==INodes==&lt;br /&gt;
Inode (oder I-Node) wird im Deutschen am besten als Informationsknoten oder&lt;br /&gt;
Indexeintrag bezeichnet. Er fasst alle Attribute einer Datei zusammen außer dem Inhalt&lt;br /&gt;
und dem Namen der Datei.&lt;br /&gt;
&lt;br /&gt;
===Daten===&lt;br /&gt;
{| border=1 cellpadding=2&lt;br /&gt;
|type&lt;br /&gt;
|Der Typ der Datei wird als einzelner Buchstabe angezeigt. Der Typ einer Datei wird beim Anlegen der Datei festgelegt&lt;br /&gt;
|-&lt;br /&gt;
|Permissions &lt;br /&gt;
|Die Zugriffsrechte der Datei werden in den 12 Bit sstrwxrwxrwx abgespeichert.Wenn sie gesetzt sind, werden sie bei &lt;br /&gt;
der Ausgabe an Stelle der x-Rechte ausgegeben. Die Zugriffsrechte können mit dem Kommando chmod verändert werden.&lt;br /&gt;
|-&lt;br /&gt;
|link count&lt;br /&gt;
|In UNIX kann eine Datei mehr als einen Namen haben. Der Link Count gibt die Anzahl der Namen einer Datei an. Er kann&lt;br /&gt;
mit dem Kommando ln erhöht und dem Kommando rm erniedrigt werden.&lt;br /&gt;
|-&lt;br /&gt;
|owner&lt;br /&gt;
|Für den Dateieigentümer gelten die in der ersten rwx-Gruppe festgelegten Zugriffsrechte. Standardmäßig ist der &lt;br /&gt;
Eigentümer einer Datei derjenige Benutzer, der die Datei angelegt hat.&lt;br /&gt;
|-&lt;br /&gt;
|group&lt;br /&gt;
|Für Benutzer, die in der gleichen Gruppe sind, der die Datei angehört, gelten die in der zweiten rwx-Gruppe festgelegten&lt;br /&gt;
Zugriffsrechte. In System V gehört eine Datei standardmäßig der Gruppe an, in der der anlegende Benutzer gerade ist.&lt;br /&gt;
|-&lt;br /&gt;
|size&lt;br /&gt;
|Bei normalen Dateien und Verzeichnissen gibt diese Information die Länge der Datei in Byte an.&lt;br /&gt;
|-&lt;br /&gt;
|access time&lt;br /&gt;
|Die Zugriffszeit gibt den Zeitpunkt des letzten Lesezugriffes auf eine Datei an. Aus Effizienzgründen wird die &lt;br /&gt;
Zugriffszeit an Verzeichnissen nicht gesetzt, wenn ein Verzeichnis durchsucht wird, obwohl man dies erwarten könnte.&lt;br /&gt;
|-&lt;br /&gt;
|modification time&lt;br /&gt;
|Die Modifikationszeit gibt die Zeit des letzten Schreibzugriffes auf die Daten der Datei an. Intern speichert UNIX &lt;br /&gt;
die Zeit als Sekunden seit Beginn des Jahres 1970 und in GMT ab. Für die Ausgabe wird dies in ein besser lesbares &lt;br /&gt;
Format in der lokalen Zeitzone umgewandelt.&lt;br /&gt;
|-&lt;br /&gt;
|change time &lt;br /&gt;
|Die Veränderungszeit gibt das Datum der letzten Statusänderung der Datei an. Sie wird immer dann gesetzt, wenn die &lt;br /&gt;
Informationen über die Datei sich ändern (Datum der Erzeugung wird nicht gespeichert)&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
===Dateiarten===&lt;br /&gt;
{| border=1 cellpadding=2&lt;br /&gt;
!Zeichen&lt;br /&gt;
!Typ&lt;br /&gt;
!Zweck&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;nowiki&amp;gt;-&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
|file&lt;br /&gt;
|normale Datei&lt;br /&gt;
|-&lt;br /&gt;
|d&lt;br /&gt;
|directory&lt;br /&gt;
|Verzeichnis&lt;br /&gt;
|-&lt;br /&gt;
|b&lt;br /&gt;
|block device&lt;br /&gt;
|Gerätedatei&lt;br /&gt;
|-&lt;br /&gt;
|c&lt;br /&gt;
|character device&lt;br /&gt;
|Gerätedatei&lt;br /&gt;
|-&lt;br /&gt;
|l&lt;br /&gt;
|link&lt;br /&gt;
|Querverweis&lt;br /&gt;
|-&lt;br /&gt;
|p&lt;br /&gt;
|named pipe&lt;br /&gt;
|Benannte Pipeline&lt;br /&gt;
|-&lt;br /&gt;
|s&lt;br /&gt;
|socket&lt;br /&gt;
|Netzwerkverbindung&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
====Normale Dateien====&lt;br /&gt;
Unter einer normalen Datei versteht man die Ansammlung von Daten. Dies kann ein Text, Programm, Bild oder sonstiges sein. &lt;br /&gt;
Beispiel&lt;br /&gt;
 root@zero:~# ls text&lt;br /&gt;
 text&lt;br /&gt;
&lt;br /&gt;
====Verzeichnisse====&lt;br /&gt;
Dateien werden in Verzeichnissen gespeichert, nur so ist eine Ordnung möglich. &lt;br /&gt;
 root@zero:~# mkdir -v Ordner&lt;br /&gt;
 mkdir: Verzeichnis „Ordner“ angelegt&lt;br /&gt;
 &lt;br /&gt;
 root@zero:~# ls -d ~/*&lt;br /&gt;
 /root/error  /root/neuertext  /root/Ordner  /root/profile  /root/test  /root/text  /root/verzeichnis&lt;br /&gt;
&lt;br /&gt;
====Gerätedateien (Block und Char)====&lt;br /&gt;
Gerätedateien ermöglichen Anwendungsprogrammen unter Benutzung des  Kernels den Zugriff auf die Hardwarekomponenten des &lt;br /&gt;
Systems. &lt;br /&gt;
&lt;br /&gt;
Beispiele&lt;br /&gt;
&lt;br /&gt;
Sicherung des Master Boot Records der ersten Festplatte&lt;br /&gt;
 root@zero:~# dd if=/dev/sda1 of=/tmp/mbr.img bs=512 count=1&lt;br /&gt;
&lt;br /&gt;
Einhängen des CD-ROM Laufwerks&lt;br /&gt;
 root@zero:~# mount /dev/cdrom /media/cdrom -t iso9660&lt;br /&gt;
&lt;br /&gt;
====Named Pipes====&lt;br /&gt;
Benannte Pipes (Named Pipes) können dagegen auch zur Kommunikation zwischen Prozessen eingesetzt werden, die nicht miteinander&lt;br /&gt;
verwandt sind und sich darüber hinaus auf unterschiedlichen Rechnern innerhalb eines Netzwerkes befinden dürfen. Sie sind &lt;br /&gt;
flexibler als anonyme Pipes und eignen sich für sogenannte Client-Server-Anwendungen (es lassen sich auch RPCs realisieren).&lt;br /&gt;
Benannte Pipes ermöglichen die gleichzeitige Kommunikation in beide Richtungen, das heißt, Daten können im Vollduplexbetrieb &lt;br /&gt;
zwischen den Prozessen ausgetauscht werden.&lt;br /&gt;
 &lt;br /&gt;
Erstelle Named Pipe mit Namen sux. Schreibe &amp;quot;Hallo Welt&amp;quot; in die Pipe sux und bleibe im Hintergrund. Gebe Inhalt der Pipe mit cat aus&lt;br /&gt;
 root@zero:~# mkfifo sux ; echo 'Hallo Welt' &amp;gt; sux &amp;amp; cat &amp;lt; sux&lt;br /&gt;
 [1] 12947&lt;br /&gt;
 Hallo Welt&lt;br /&gt;
 [1]+  Done                    echo 'Hallo Welt' &amp;gt; sux&lt;br /&gt;
&lt;br /&gt;
====Sockets====&lt;br /&gt;
Schnittstelle um es vernetzten Rechnern zu ermöglichen, miteinander zu kommunizieren.&lt;br /&gt;
&lt;br /&gt;
Sie ist in der Regel definiert durch IP-Adresse sowie Port. &lt;br /&gt;
&lt;br /&gt;
====Links====&lt;br /&gt;
Bei Links handelt es sich um symbolische Verweise auf andere Dateien&lt;br /&gt;
&lt;br /&gt;
'''Softlink'''&lt;br /&gt;
Ein Softlink ist eine Datei die nur auf den Namen einer anderen Datei verweist. Wenn die Originaldatei gelöscht wird, zeigt &lt;br /&gt;
der Link ins Leere. &lt;br /&gt;
&lt;br /&gt;
 ln -s datei softlink&lt;br /&gt;
&lt;br /&gt;
{| border=1 cellpadding=2&lt;br /&gt;
| Vorteile&lt;br /&gt;
| Symbolische Links können auch auf Verzeichnisse angelegt werden&amp;lt;br&amp;gt;Sie sind partitionsübergreifend&amp;lt;br&amp;gt;Man kann sie auf Dateien anlegen, die noch nicht existieren&lt;br /&gt;
|-&lt;br /&gt;
| Nachteile&lt;br /&gt;
| Wenn das Original gelöscht ist, ist kein Zugriff mehr möglich&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Beispiel&lt;br /&gt;
 root@zero:~# ln -s text verweis&lt;br /&gt;
 root@zero:~# ls -l verweis&lt;br /&gt;
 lrwxrwxrwx 1 root root 4 2009-06-18 15:48 verweis -&amp;gt; text&lt;br /&gt;
&lt;br /&gt;
'''Hardlinks'''&lt;br /&gt;
 ln datei hardlink&lt;br /&gt;
Eigentlich ist jede Datei ein Hardlink. Ein Hardlink ist ein Verzeichniseintrag,&lt;br /&gt;
der auf eine Inode verweist. Beim Erzeugen einer Datei verweist ein Eintrag auf&lt;br /&gt;
eine Inode. Man kann dann weitere Verweise erzeugen. Der Linkcounter wird&lt;br /&gt;
jeweils um 1 erhöht. Beim Löschen einer Datei wird er jeweils um 1 reduziert.&lt;br /&gt;
Wird der Wert 0 erreicht, ist die Datei gelöscht.&lt;br /&gt;
{| border=1 cellpadding=2&lt;br /&gt;
| Vorteile&lt;br /&gt;
|Zugriff auf die Daten, selbst wenn das Orginal gelöscht ist.&lt;br /&gt;
|-&lt;br /&gt;
|Nachteile&lt;br /&gt;
|Man kann keine Hardlinks auf Verzeichnisse anlegen.&lt;br /&gt;
Ist nur innerhalb einer Partion möglich.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Beispiel&lt;br /&gt;
 root@zero:~# touch 1&lt;br /&gt;
 root@zero:~# echo &amp;quot;text&amp;quot; &amp;gt; 1&lt;br /&gt;
 root@zero:~# ln 1 2&lt;br /&gt;
 root@zero:~# more 2&lt;br /&gt;
 text&lt;br /&gt;
 root@zero:~# echo &amp;quot;doch kein text&amp;quot; &amp;gt; 1&lt;br /&gt;
 root@zero:~# more 1&lt;br /&gt;
 doch kein text&lt;br /&gt;
 root@zero:~# more 2&lt;br /&gt;
 doch kein text&lt;br /&gt;
&lt;br /&gt;
Weitere Optionen:&lt;br /&gt;
 -b sichert Dateien, statt sie zu überschreiben &lt;br /&gt;
 -f Überschreibt bestehende, gleichnamige Dateien&lt;br /&gt;
 -i fragt vor dem Überschreiben nach Bestätigung&lt;br /&gt;
 -v ausführliche Meldungen&lt;br /&gt;
&lt;br /&gt;
==Prozesse==&lt;br /&gt;
===Was ist ein Prozess?===&lt;br /&gt;
Ein Prozess setzt sich aus zwei Teilen zusammen:&lt;br /&gt;
&lt;br /&gt;
1.Programm, das in den Hauptspeicher geladen wurde&lt;br /&gt;
&lt;br /&gt;
2.Prozessumgebung&lt;br /&gt;
&lt;br /&gt;
Unter einem Prozess versteht man ein Programm (binär), das in den Hauptspeicher&lt;br /&gt;
geladen wurde. Also nicht das Program selbst, das auf der Festplatte liegt ist der&lt;br /&gt;
Prozess, sondern es wird erst durch das Laden in den Hauptspeicher dazu.&lt;br /&gt;
Normalerweise liegt ein Programm als ausführbare Datei irgendwo auf der&lt;br /&gt;
Festplatte oder auf Diskette. Ob es sich bei dem Programm um eine binäre Datei&lt;br /&gt;
handelt, kann man mit dem Befehl '' file '' feststellen.&lt;br /&gt;
 &lt;br /&gt;
 root@zero:~# file /bin/mkdir&lt;br /&gt;
 /bin/mkdir: ELF 32-bit LSB executable, Intel 80386, version 1 (SYSV), dynamically linked (uses shared libs), for GNU/Linux 2.6.8, stripped&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Die Datei liegt im Maschinencode vor und kann in den Hauptspeicher geladen&lt;br /&gt;
werden. Sobald dies geschehen ist, kann der Rechner diesen Maschinencode&lt;br /&gt;
abarbeiten (ausführen).&lt;br /&gt;
&lt;br /&gt;
Da aber ein Programm nicht direkt auf die Hardware zugreifen soll, muss es vom&lt;br /&gt;
Betriebsystem kontrolliert werden. Das Betriebssystem liegt logisch gesehen&lt;br /&gt;
zwischen Hardware und Anwendung. Das Betriebssystem ordnet jedem Prozess&lt;br /&gt;
verschiedene Kenndaten zu, um die Prozesse verwalten zu können. Alle&lt;br /&gt;
Kenndaten, die einem Prozess zugeordnet sind, nennt man die&lt;br /&gt;
Prozessumgebung.Wenn man in der Shell ein Kommando eingibt, wird ein Prozess&lt;br /&gt;
kreiert. Natürlich ist die Shell selbst auch ein Prozess. Ein Prozess kann aber&lt;br /&gt;
genauso gut ein Serverprozess (Dienst) sein, z.B. Apache.&lt;br /&gt;
Ein wesentliches Merkmal eines Prozesses ist die Prozesskommunikation. Über im&lt;br /&gt;
Betriebssystem implementierte Methoden ist es möglich, dass verschiedene&lt;br /&gt;
Prozesse Signale und Daten untereinander austauschen können.&lt;br /&gt;
Dadurch wird auch dem Benutzer ermöglicht, einem Prozeß bestimmte Signale zu&lt;br /&gt;
senden bzw. auf den Status eines Prozesses Einfluss zu nehmen.&lt;br /&gt;
&lt;br /&gt;
===Prozesstabelle (Anzeige mit ps)===&lt;br /&gt;
Da zu jedem Prozess Kenndaten geführt werden, müssen diese auch irgendwo&lt;br /&gt;
festgehalten werden. Das geschieht in der sogenannten Prozesstabelle.&lt;br /&gt;
&lt;br /&gt;
Kenndaten der Prozesse (Auswahl):&lt;br /&gt;
* F Flags (z.B. ausgelagert; Systemprozess; Trace,...)&lt;br /&gt;
* UID Nutzer, mit dessen Rechten der Prozess ausgeführt wird&lt;br /&gt;
* PID Prozess - ID. Diese Nummer gibt eine eindeutige Prozess - Nummer&lt;br /&gt;
an. Sie wird vom System automatisch beim Starten des Prozesses&lt;br /&gt;
vergeben und ist für die Laufzeit eindeutig.&lt;br /&gt;
* PPID Prozessnumer der Eltern-Prozesses&lt;br /&gt;
* PRI Priorität eines Prozesses; je niedriger der Wert ist, desto besser&lt;br /&gt;
* NI ist der Nicewert des Prozesses; Nice erniedrigt den Grundwert&lt;br /&gt;
der Priorität des Prozesses und gibt damit Prozessorzeit für andere&lt;br /&gt;
Prozesse frei.&lt;br /&gt;
* SIZE Speichergröße des Prozesses inklusive Stack (eine Art Zwischenspeicher)&lt;br /&gt;
* RSS Verbrauch an physischen Speicher&lt;br /&gt;
* WCHAN ist der Name der Kernerlfunktion, in der der Prozess schläft&lt;br /&gt;
* STAT Status des Prozesses&lt;br /&gt;
R läuft       S schlafend     D nicht störbarer Schlaf&lt;br /&gt;
T angehalten  Z Zombie        W der Prozess belegt keine Seiten&lt;br /&gt;
* TIME Bisland benötigte Prozessorzeit&lt;br /&gt;
* SIZE ist die Größe von Text, Daten und Stack&lt;br /&gt;
* TTY die Nummer des kontrollierenden Teminal; wenn hier ein ? steht,&lt;br /&gt;
handelt es sich um einen Dämon oder Serverprozess.&lt;br /&gt;
* COMMAND Angabe des Prozesses selbst. Dies ist meist der Programmname.&lt;br /&gt;
&lt;br /&gt;
Weiteres&lt;br /&gt;
* GID Gruppe, unter der der Prozess läuft&lt;br /&gt;
* Verweis auf das aktuellen Arbeitsverzeichnis&lt;br /&gt;
* Um mit relativen Pfadangaben arbeiten zu können braucht man diesen Eintrag&lt;br /&gt;
* Tabelle mit Verweisen auf aktuell geöffnete Dateien&lt;br /&gt;
* 3 sind automatisch geöffnet Standardeingabe, Standardausgabe und&lt;br /&gt;
Standardfehlerkanal&lt;br /&gt;
&lt;br /&gt;
Beispiel&lt;br /&gt;
 root@zero:~# ps -l&lt;br /&gt;
 F S   UID   PID  PPID  C PRI  NI ADDR SZ WCHAN  TTY          TIME CMD&lt;br /&gt;
 4 R     0 18639 18631  0  80   0 -  1080 -      pts/0    00:00:00 bash&lt;br /&gt;
 0 R     0 25904 18639  0  80   0 -   635 -      pts/0    00:00:00 ps&lt;br /&gt;
&lt;br /&gt;
===Eltern und Kinder===&lt;br /&gt;
Jeder Prozess kann weitere Prozesse erzeugen. Die erzeugten Prozesse bezeichnet&lt;br /&gt;
man als Kindprozesse. Jeder Kindprozess weiß anhand der PID, woher er stammt.&lt;br /&gt;
&lt;br /&gt;
Alle Prozesse sind von einem anderen Prozess gestartet worden, mit Ausnahme&lt;br /&gt;
des Pseudoprozesses (noch im Kernel beim Starten erzeugter Prozess). Dieser hat&lt;br /&gt;
die Prozessnummer 0. Er hat die Aufgabe, den Init Prozess ( /sbin/init die Nummer&lt;br /&gt;
1) zu starten, der in System V alle anderen Prozesse direkt oder über seine Kind-&lt;br /&gt;
prozesse startet. (init wird konfiguriert durch die /etc/inittab)&lt;br /&gt;
&lt;br /&gt;
Es gibt zwei Arten wie ein Prozess gestartet werden kann:&lt;br /&gt;
&lt;br /&gt;
# Fork und Exec: Prozessumgebung wird dupliziert, der neue Prozess bekommt eine eigene neue PID&lt;br /&gt;
# Exec: Alter Prozess wird durch neuen Prozess überladen (geht mit dem shell-buildin exec)&lt;br /&gt;
&lt;br /&gt;
'''Rechte auf Objekte UID GID'''&lt;br /&gt;
Ob ein Prozess auf eine Datei zugreifen kann, entscheidet der Kernel anhand der&lt;br /&gt;
Zugriffssrechte, die auf der Datei gesetzt sind. Er checkt anhand der UID und GID&lt;br /&gt;
des Prozesses, ob es erlaubt ist. Mit dieser Technik wird letztendlich geprüft, was&lt;br /&gt;
ein User darf, und was nicht.&lt;br /&gt;
&lt;br /&gt;
===Rechenzeit und Priorität===&lt;br /&gt;
Da auch bei Prozessen eine Gerechtigkeit herschen muss, muss eine Instanz&lt;br /&gt;
darüber entscheiden wie lange ein Prozess Rechenzeit verbrauchen darf.&lt;br /&gt;
Folgende Kenndaten werden dazu benötigt&lt;br /&gt;
* clocktick = Zeiteinheit&lt;br /&gt;
* n = Faktor über den Kernel einstellbar&lt;br /&gt;
* slice = n &amp;lt;nowiki&amp;gt;*&amp;lt;/nowiki&amp;gt; clocktick&lt;br /&gt;
* agingtime = weitere Zeiteinheit über den Kernel einstellbar&lt;br /&gt;
&lt;br /&gt;
Es wird davon ausgegangen das der Prozess mit der niedrigsten Priorität gerade&lt;br /&gt;
rechnet. Pro clocktick erhöht sich die Priorität dieses Prozesses um eins.&lt;br /&gt;
&lt;br /&gt;
Jetzt können 3 Situationen eintreten die alle dazu führen das der Scheduler&lt;br /&gt;
aufgerufen wird.&lt;br /&gt;
&lt;br /&gt;
# Prozess blockiert wegen einer Ausgabe oder Eingabe.&lt;br /&gt;
# Gibt Rechenzeit freiwillig ab.&lt;br /&gt;
# Der Slice endet.&lt;br /&gt;
&lt;br /&gt;
Der Aufruf des Schedulers bewirkt das der Prozess mit der niedrigsten Priorität&lt;br /&gt;
gescheduled wird, er also nun rechnen darf. Nach Ablauf der agingtime werden&lt;br /&gt;
nun die Prozesse &amp;quot;gealtert&amp;quot;. Das geschieht nach folgender Formel&lt;br /&gt;
&lt;br /&gt;
Neue Priorität = Alte Priorität / 2 + Nicewert&lt;br /&gt;
&lt;br /&gt;
Der User hat die Möglichkeit, über den sogenannten Nicefaktor den Grundwert für&lt;br /&gt;
einen Prozess zu senken. Der Prozess braucht dann länger für seine Abarbeitung.&lt;br /&gt;
Er verhält sich somit netter zu den anderen Prozessen. Normale User können nur&lt;br /&gt;
netter werden, der Systemverwalter kann auch nicht netter (gemeiner) werden. Der&lt;br /&gt;
Bereich liegt zwischen 19 (sehr nett) bis 0 (weniger nett) für die User, und 19 bis&lt;br /&gt;
-20 für root.&lt;br /&gt;
&lt;br /&gt;
[[Image:pri.png]]&lt;br /&gt;
&lt;br /&gt;
'''Signale'''&lt;br /&gt;
&lt;br /&gt;
Mit den Kommando kill und killall kann man Prozessen Signale schicken&lt;br /&gt;
&lt;br /&gt;
 kill -Signalnummer PID &lt;br /&gt;
&lt;br /&gt;
Signalnummer&lt;br /&gt;
{| border=1 cellpadding=2&lt;br /&gt;
!Signalname&lt;br /&gt;
!Wert&lt;br /&gt;
!Aktion&lt;br /&gt;
|-&lt;br /&gt;
|SIGHUP&lt;br /&gt;
|1&lt;br /&gt;
|Neuinitialisierung eines Prozesses&lt;br /&gt;
|-&lt;br /&gt;
|SIGINT&lt;br /&gt;
|2&lt;br /&gt;
|Interrupt-Signal von der Tastatur (STRG+c)&lt;br /&gt;
|-&lt;br /&gt;
|SIGQUIT&lt;br /&gt;
|3&lt;br /&gt;
|Interrupt-Signal von der Tastatur (STRG+c) mit Dump&lt;br /&gt;
|-&lt;br /&gt;
|SIGKILL&lt;br /&gt;
|9&lt;br /&gt;
|unwiderrufliches Beendigungssignal (Töten)&lt;br /&gt;
|-&lt;br /&gt;
|SIGSEGV&lt;br /&gt;
|11&lt;br /&gt;
|Ungültige Speicherreferenz (bedeutet oft auf defekten Speicher)&lt;br /&gt;
|-&lt;br /&gt;
|SIGTERM &lt;br /&gt;
|15&lt;br /&gt;
|Beendigungssignal (geöffnete Dateien werden geschlossen)&lt;br /&gt;
|-&lt;br /&gt;
|SIGCONT &lt;br /&gt;
|18&lt;br /&gt;
|Weiterfahren, wenn gestoppt&lt;br /&gt;
|-&lt;br /&gt;
|SIGSTOP&lt;br /&gt;
|19&lt;br /&gt;
|Prozessstop&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Beispiel&lt;br /&gt;
 root@zero:~# kill -1 7562&lt;br /&gt;
&lt;br /&gt;
===Programme im Zusammenhang mit Prozessen===&lt;br /&gt;
* ps: Zeigt die Prozesse mit ihrem Status an&lt;br /&gt;
 root@zero:~# ps&lt;br /&gt;
  PID TTY          TIME CMD&lt;br /&gt;
 14134 pts/0    00:00:00 bash&lt;br /&gt;
 14149 pts/0    00:00:00 ps&lt;br /&gt;
&lt;br /&gt;
 root@zero:~# ps -elf | grep apache&lt;br /&gt;
 1 S root      5738     1  0  80   0 -  5461 select Jun16 ?        00:00:00 /usr/sbin/apache2 -k start&lt;br /&gt;
 5 S www-data  5739  5738  0  80   0 -  5581 inet_c Jun16 ?        00:00:00 /usr/sbin/apache2 -k start&lt;br /&gt;
 5 S www-data  5742  5738  0  80   0 -  5461 inet_c Jun16 ?        00:00:00 /usr/sbin/apache2 -k start&lt;br /&gt;
 5 S www-data  5743  5738  0  80   0 -  5461 inet_c Jun16 ?        00:00:00 /usr/sbin/apache2 -k start&lt;br /&gt;
 5 S www-data  5745  5738  0  80   0 -  5461 inet_c Jun16 ?        00:00:00 /usr/sbin/apache2 -k start&lt;br /&gt;
 5 S www-data  5746  5738  0  80   0 -  5461 inet_c Jun16 ?        00:00:00 /usr/sbin/apache2 -k start&lt;br /&gt;
 0 S root     14153 14134  0  80   0 -   837 pipe_w 16:59 pts/0    00:00:00 grep apache&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* nice: Lässt ein Programm mit verändertem Grundwert der Priorität laufen&lt;br /&gt;
 root@zero:~# nice&lt;br /&gt;
 0&lt;br /&gt;
 root@zero:~# nice -n 9 bash&lt;br /&gt;
 root@zero:~# nice&lt;br /&gt;
 9&lt;br /&gt;
 root@zero:~#&lt;br /&gt;
&lt;br /&gt;
* renice: Ändert den Grundwert der Priorität eines laufenden Prozesses&lt;br /&gt;
 root@zero:~# renice 10 5742&lt;br /&gt;
 5742: Alte Priorität: 0, neue Priorität: 10&lt;br /&gt;
&lt;br /&gt;
* top: Zeigt die Prozesse mit ihrem Status an (Abbrechen mit q)&lt;br /&gt;
 root@zero:~# top&lt;br /&gt;
&lt;br /&gt;
* pstree: Zeigt die Prozesse als Baumstruktur&lt;br /&gt;
 root@zero:~# pstree&lt;br /&gt;
 init─┬─NetworkManager&lt;br /&gt;
      ├─acpid&lt;br /&gt;
      ├─apache2───5*[apache2]&lt;br /&gt;
      ├─atd&lt;br /&gt;
      ├─bluetoothd&lt;br /&gt;
      ├─console-kit-dae───63*[{console-kit-dae}]&lt;br /&gt;
      ├─cron&lt;br /&gt;
      ├─cupsd&lt;br /&gt;
      ├─dbus-daemon&lt;br /&gt;
      ├─dd&lt;br /&gt;
      ├─gdm───gdm─┬─Xorg&lt;br /&gt;
      │           └─gdmgreeter&lt;br /&gt;
      ├─6*[getty]&lt;br /&gt;
      ├─hald───hald-runner─┬─hald-addon-acpi&lt;br /&gt;
      │                    ├─hald-addon-inpu&lt;br /&gt;
      │                    └─2*[hald-addon-stor]&lt;br /&gt;
      ├─klogd&lt;br /&gt;
      ├─nm-system-setti&lt;br /&gt;
      ├─nmbd&lt;br /&gt;
      ├─nscd───11*[{nscd}]&lt;br /&gt;
      ├─portmap&lt;br /&gt;
      ├─rpc.statd&lt;br /&gt;
      ├─slapd───2*[{slapd}]&lt;br /&gt;
      ├─smbd───smbd&lt;br /&gt;
      ├─sshd───sshd───bash───bash───pstree&lt;br /&gt;
      ├─syslogd&lt;br /&gt;
      ├─system-tools-ba&lt;br /&gt;
      ├─udevd&lt;br /&gt;
      ├─winbindd─┬─winbindd───winbindd&lt;br /&gt;
      │          └─3*[winbindd]&lt;br /&gt;
      └─wpa_supplicant&lt;br /&gt;
&lt;br /&gt;
===Jobs===&lt;br /&gt;
Unter einem Job versteht man ein Programm, welches man von der Shell gelöst&lt;br /&gt;
hat. D. h. man kann ganz normal weiter arbeiten und der Job verrichtet seinen&lt;br /&gt;
Dienst im Hintergrund. Man kann jederzeit zu diesem Job wieder Kontakt&lt;br /&gt;
aufnehmen.&lt;br /&gt;
&lt;br /&gt;
Ein Job kann auf 2 Arten gestarten werden:&lt;br /&gt;
&lt;br /&gt;
# Durch Anhängen des &amp;amp; Zeichens beim Programmstart&lt;br /&gt;
 root@zero:~# tail -f /var/log/messages &amp;amp;&lt;br /&gt;
 Jun 19 06:59:31 zero -- MARK --&lt;br /&gt;
 Jun 19 07:19:31 zero -- MARK --&lt;br /&gt;
 Jun 19 07:39:32 zero -- MARK --&lt;br /&gt;
 Jun 19 07:44:57 zero syslogd 1.5.0#5ubuntu3: restart.&lt;br /&gt;
 Jun 19 07:59:32 zero -- MARK --&lt;br /&gt;
 Jun 19 08:19:32 zero -- MARK --&lt;br /&gt;
 Jun 19 08:39:32 zero -- MARK --&lt;br /&gt;
 Jun 19 08:59:32 zero -- MARK --&lt;br /&gt;
 Jun 19 09:19:33 zero -- MARK --&lt;br /&gt;
 Jun 19 09:39:33 zero -- MARK --&lt;br /&gt;
 [3] 27421&lt;br /&gt;
&lt;br /&gt;
# Durch Stoppen des Prozesses durch Drücken von Strg-Z und in den Hintergrund schicken mit %n (n ist die Jobnummer)&lt;br /&gt;
 root@zero:~# watch cat /proc/cpuinfo&lt;br /&gt;
 Strg-Z&lt;br /&gt;
 [4]+  Stopped                 watch cat /proc/cpuinfo&lt;br /&gt;
 root@zero:~# bg %4&lt;br /&gt;
 [4]+ watch cat /proc/cpuinfo &amp;amp;&lt;br /&gt;
&lt;br /&gt;
Anweisungen im Zusammenhang mit Jobs (n ist die Jobnummer)&lt;br /&gt;
* bg %n : Einen Job in den Hintergrund stellen (wie oben)&lt;br /&gt;
* fg %n : Einen Job in den Vordergrund holen&lt;br /&gt;
 root@zero:~# fg %4&lt;br /&gt;
 watch cat /proc/cpuinfo&lt;br /&gt;
&lt;br /&gt;
* jobs : Aktive Jobs ausgeben&lt;br /&gt;
&lt;br /&gt;
 root@zero:~# jobs&lt;br /&gt;
 [1]   Running                 tail -f /var/log/syslog &amp;amp;&lt;br /&gt;
 [2]   Running                 tail -f /var/log/syslog &amp;amp;&lt;br /&gt;
 [3]-  Running                 tail -f /var/log/messages &amp;amp;&lt;br /&gt;
 [4]+  Stopped                 watch cat /proc/cpuinfo&lt;br /&gt;
&lt;br /&gt;
* Strg-Z : Einen Vordergrund-Job vorübergehend anhalten&lt;br /&gt;
* kill -STOP %n : Unterbricht Job im Hintergrund&lt;br /&gt;
 root@zero:~# kill -STOP %1&lt;br /&gt;
 root@zero:~# jobs&lt;br /&gt;
 [1]+  '''Stopped'''                 tail -f /var/log/syslog&lt;br /&gt;
 [2]   Running                 tail -f /var/log/syslog &amp;amp;&lt;br /&gt;
 [3]   Running                 tail -f /var/log/messages &amp;amp;&lt;br /&gt;
 [4]-  Stopped                 watch cat /proc/cpuinfo&lt;br /&gt;
* kill -CONT %n : Setzt den unterbrochenen Job im Hintergrund fort&lt;br /&gt;
root@zero:~# kill -CONT %1&lt;br /&gt;
root@zero:~# jobs&lt;br /&gt;
 [1]+  '''Running'''                 tail -f /var/log/syslog &amp;amp;&lt;br /&gt;
 [2]   Running                 tail -f /var/log/syslog &amp;amp;&lt;br /&gt;
 [3]   Running                 tail -f /var/log/messages &amp;amp;&lt;br /&gt;
 [4]-  Stopped                 watch cat /proc/cpuinfo&lt;br /&gt;
* kill -KILL %n : Tötet Job im Hintergrund&lt;br /&gt;
 root@zero:~# kill -KILL %1&lt;br /&gt;
 root@zero:~# jobs&lt;br /&gt;
 [1]+  '''Killed'''                  tail -f /var/log/syslog&lt;br /&gt;
 [2]   Running                 tail -f /var/log/syslog &amp;amp;&lt;br /&gt;
 [3]   Running                 tail -f /var/log/messages &amp;amp;&lt;br /&gt;
 [4]-  Stopped                 watch cat /proc/cpuinfo&lt;br /&gt;
 root@zero:~# jobs&lt;br /&gt;
 [2]   Running                 tail -f /var/log/syslog &amp;amp;&lt;br /&gt;
 [3]-  Running                 tail -f /var/log/messages &amp;amp;&lt;br /&gt;
 [4]+  Stopped                 watch cat /proc/cpuinfo&lt;br /&gt;
&lt;br /&gt;
Bedingungen, die zu Jobausführung eingehalten werden sollen:&lt;br /&gt;
* Der Job soll nicht auf den Bildschirm schreiben (Standardausgabe +Standardfehlerkanal).&lt;br /&gt;
* Er soll keine Eingaben vom Benutzer erwarten.&lt;br /&gt;
&lt;br /&gt;
==Suchen von Dateien==&lt;br /&gt;
===find===&lt;br /&gt;
 find ab_wo_wird_gesucht was_wird_gesucht aktion&lt;br /&gt;
 find [Pfad] [Bedingung] [Aktion]&lt;br /&gt;
&lt;br /&gt;
====Nach Namen====&lt;br /&gt;
 find [Pfad] '''-name''' [Name]&lt;br /&gt;
 &lt;br /&gt;
Finde alle Dateien mit Namen test ab dem Verzeichnis /home und gebe diese Zeilenweise aus&lt;br /&gt;
 root@zero:~# find /home -name test -print&lt;br /&gt;
 /home/xinux/test&lt;br /&gt;
 /home/test&lt;br /&gt;
&lt;br /&gt;
Wie oben, jedoch mit Namensanfang test&lt;br /&gt;
 root@zero:/home/xinux# find /home -name 'test*'&lt;br /&gt;
 /home/xinux/testdatei&lt;br /&gt;
 /home/xinux/test&lt;br /&gt;
 /home/test&lt;br /&gt;
&lt;br /&gt;
====Nach Benutzer(Eigentümer)====&lt;br /&gt;
 root@zero:/tmp# find /tmp/ '''-user''' xinux&lt;br /&gt;
 /tmp/datei&lt;br /&gt;
&lt;br /&gt;
====Nach Gruppe====&lt;br /&gt;
 root@zero:/tmp# find /tmp/ '''-group''' hacker&lt;br /&gt;
 /tmp/datei3&lt;br /&gt;
 /tmp/datei2&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
====Nach Typ====&lt;br /&gt;
Es wird nach Dateien anhand Ihrer Art gesucht:&lt;br /&gt;
 find [Pfad] '''-type''' [Typ] &lt;br /&gt;
Typ:&lt;br /&gt;
* f: Normale Dateien&lt;br /&gt;
 root@zero:~# find /tmp/ -type f&lt;br /&gt;
 /tmp/mbr.img&lt;br /&gt;
 /tmp/datei&lt;br /&gt;
 /tmp/zeugs&lt;br /&gt;
 /tmp/.X0-lock&lt;br /&gt;
* d: Verzeichnisse&lt;br /&gt;
 root@zero:~# find /var/log -type d&lt;br /&gt;
 /var/log&lt;br /&gt;
 /var/log/apache2&lt;br /&gt;
 /var/log/unattended-upgrades&lt;br /&gt;
 /var/log/apparmor&lt;br /&gt;
 /var/log/ConsoleKit&lt;br /&gt;
 /var/log/dist-upgrade&lt;br /&gt;
 /var/log/dist-upgrade/20090526-1052&lt;br /&gt;
 /var/log/cups&lt;br /&gt;
 /var/log/apt&lt;br /&gt;
 /var/log/fsck&lt;br /&gt;
 /var/log/samba&lt;br /&gt;
 /var/log/samba/cores&lt;br /&gt;
 /var/log/samba/cores/smbd&lt;br /&gt;
 /var/log/samba/cores/nmbd&lt;br /&gt;
 /var/log/samba/cores/winbindd&lt;br /&gt;
 /var/log/installer&lt;br /&gt;
 /var/log/gdm&lt;br /&gt;
 /var/log/news&lt;br /&gt;
* c: Char Devices (Zeichenorientierte Gerätedatei)&lt;br /&gt;
 root@zero:~# find / -type c&lt;br /&gt;
 /lib/udev/devices/kmem&lt;br /&gt;
 /lib/udev/devices/null&lt;br /&gt;
 /lib/udev/devices/console&lt;br /&gt;
 /lib/udev/devices/ppp&lt;br /&gt;
 /lib/udev/devices/net/tun&lt;br /&gt;
* b: Block Devices (Blockorientierte Gerätedatei)&lt;br /&gt;
* p: Benannte Pipe&lt;br /&gt;
* l: Links&lt;br /&gt;
* s: Sockets&lt;br /&gt;
&lt;br /&gt;
====Nach Modifikation====&lt;br /&gt;
Listet alle Dateien in /etc auf, die innerhalb von zwei Tagen modifiziert wurden&lt;br /&gt;
 root@zero:/var/log# find /etc/ -mtime 2 -print&lt;br /&gt;
 /etc/apache2&lt;br /&gt;
 /etc/apache2/mods-available&lt;br /&gt;
 /etc/apache2/conf.d&lt;br /&gt;
 /etc/apache2/sites-available&lt;br /&gt;
 /etc/bash_completion.d&lt;br /&gt;
 /etc/blkid.tab.old&lt;br /&gt;
 /etc/firefox-3.0/profile&lt;br /&gt;
 /etc/firefox-3.0/profile/chrome&lt;br /&gt;
 /etc/firefox-3.0/pref&lt;br /&gt;
 /etc/profile.d&lt;br /&gt;
 /etc/ufw/applications.d&lt;br /&gt;
 /etc/logrotate.d&lt;br /&gt;
 /etc/xulrunner-1.9&lt;br /&gt;
 /etc/blkid.tab&lt;br /&gt;
 /etc/cron.daily&lt;br /&gt;
 /etc/alternatives&lt;br /&gt;
 /etc/alternatives/x-www-browser&lt;br /&gt;
 /etc/alternatives/xulrunner&lt;br /&gt;
 /etc/gre.d&lt;br /&gt;
 /etc/hal/fdi/policy&lt;br /&gt;
 /etc/dbus-1/system.d&lt;br /&gt;
 /etc/udev/rules.d&lt;br /&gt;
&lt;br /&gt;
====Nach Größe====&lt;br /&gt;
Finde Dateien in /tmp, die größer als 100 MByte sind&lt;br /&gt;
 root@zero:/tmp# find /tmp/ -size +100M&lt;br /&gt;
 /tmp/datei&lt;br /&gt;
&lt;br /&gt;
Finde Dateien in /tmp, die kleiner als 100 KByte sind&lt;br /&gt;
 root@zero:/tmp# find /tmp/ -size -100k&lt;br /&gt;
 /tmp/&lt;br /&gt;
 /tmp/datei3&lt;br /&gt;
 /tmp/backup &lt;br /&gt;
 /tmp/datei2&lt;br /&gt;
 /tmp/.winbindd &lt;br /&gt;
 /tmp/.winbindd/pipe&lt;br /&gt;
 /tmp/mbr.img&lt;br /&gt;
 /tmp/zeugs&lt;br /&gt;
 /tmp/.ICE-unix&lt;br /&gt;
 /tmp/.X0-lock&lt;br /&gt;
 /tmp/datei1&lt;br /&gt;
 /tmp/.X11-unix&lt;br /&gt;
 /tmp/.X11-unix/X0&lt;br /&gt;
 /tmp/pulse-PKdhtXMmr18n&lt;br /&gt;
&lt;br /&gt;
====Nach Berechtigungen====&lt;br /&gt;
Finde Dateien in Home mit der Berechtigung 777 (-rwxrwxrwx)&lt;br /&gt;
 root@zero:/var# find /home/ -perm 777&lt;br /&gt;
 /home/samba&lt;br /&gt;
 /home/xinux/Examples&lt;br /&gt;
 /home/xinux/.pulse/1f0763ee4cf4c7e1d3c07fd149dda37b:runtime&lt;br /&gt;
 /home/test/Examples&lt;br /&gt;
&lt;br /&gt;
===locate===&lt;br /&gt;
Locate arbeitet über einen Index, der erstellt und aktualisiert werden muss. Aus diesem Grund kann locate teilweise nicht &lt;br /&gt;
akutell sein. Es ist immer schneller als find und es durchsucht immer das ganze Dateisystem. &lt;br /&gt;
 locate [Dateiname]&lt;br /&gt;
 &lt;br /&gt;
Lokalisiere die Datei wvdial.conf. Anmerkung: Der Stern wird beim Suchen automatisch hinzugefügt. Entspricht also&lt;br /&gt;
wvidal.conf*&lt;br /&gt;
 root@zero:~# locate wvdial.conf&lt;br /&gt;
 /etc/wvdial.conf&lt;br /&gt;
 /usr/share/man/man5/wvdial.conf.5.gz&lt;br /&gt;
 /var/lib/dpkg/info/wvdial.conffiles&lt;br /&gt;
 /var/lib/dpkg/info/wvdial.config&lt;br /&gt;
&lt;br /&gt;
Lokalisiere die Datei wvdial.conf und nur diese&lt;br /&gt;
 root@zero:~# locate -b '\wvdial.conf'&lt;br /&gt;
 /etc/wvdial.conf&lt;br /&gt;
&lt;br /&gt;
Aktualisieren des Indexes&lt;br /&gt;
 root@zero:~# updatedb&lt;br /&gt;
&lt;br /&gt;
==Wie wird ein Kommando lokalisiert==&lt;br /&gt;
Wenn die Shell alle Ersetzungen in der Kommandozeile vorgenommen und alle Umleitungen vorbereitet hat, ist der Zeitpunkt &lt;br /&gt;
gekommen, auf den der Anwender die ganze Zeit gewartet hat. Die Shell versucht das Kommando auszuführen. Dazu muss sie &lt;br /&gt;
es aber erst lokalisieren. Das erste passende Kommando wird ausgeführt.&lt;br /&gt;
&lt;br /&gt;
Als Kommandoname wird immer das erste Wort eines einfachen Kommandos erkannt. Ein Kommandoname kann mit Pfadnamen in &lt;br /&gt;
einem Verzeichnis (absolut oder relativ) angegeben werden. Die Shell erkennt dies an (mindestens) einem Slash `/' &lt;br /&gt;
im Kommandonamen. Wenn kein Verzeichnis angegeben ist, versucht die Shell selbst, das Kommando zu finden. Dazu wird &lt;br /&gt;
der Kommandoname zuerst in der Hashtabelle gesucht, dann wird er mit den Synonymen, mit den Scriptfunktionen und &lt;br /&gt;
schließlich mit den Shellfunktionen verglichen. &lt;br /&gt;
&lt;br /&gt;
Wird auf diese Weise kein Programm dieses Namens gefunden, werden alle in der PATH-Umgebungsvariablen aufgeführten &lt;br /&gt;
Verzeichnisse nach einer ausführbaren Datei dieses Namens durchsucht. Wird auch hier kein passendes Kommando gefunden, &lt;br /&gt;
gibt die Shell eine Fehlermeldung aus.&lt;br /&gt;
&lt;br /&gt;
===which und type===&lt;br /&gt;
====which====&lt;br /&gt;
which gibt die vollen Pfadnamen der Dateien aus, die bei Benutzung des angegebenen Befehls ausgeführt werden würden.&lt;br /&gt;
&lt;br /&gt;
 which [-a] Dateiname &lt;br /&gt;
&lt;br /&gt;
Optionen:&lt;br /&gt;
&lt;br /&gt;
* -a : Alle Treffer ausgeben, nicht nur den ersten&lt;br /&gt;
* --skip-dot : Verzeichnisse, die mit einem Punkt beginnen, auslassen&lt;br /&gt;
&lt;br /&gt;
Beispiel&lt;br /&gt;
 root@zero:~# which startx&lt;br /&gt;
 /usr/bin/startx&lt;br /&gt;
&lt;br /&gt;
====type====&lt;br /&gt;
Anzeigen der absoluten Pfadnamen von Befehlen, und ob sich diese Befehle in der Hash-Tabelle der aktuellen&lt;br /&gt;
Shell befinden.&lt;br /&gt;
&lt;br /&gt;
 type [Optionen] Befehle&lt;br /&gt;
&lt;br /&gt;
Beispiel&lt;br /&gt;
 root@zero:~# type ls&lt;br /&gt;
 ls is aliased to `ls --color=auto'&lt;br /&gt;
&lt;br /&gt;
Optionen:&lt;br /&gt;
&lt;br /&gt;
* -a : Alle vorkommenden Befehle werden ausgegeben, nicht nur das, welches aufgerufen werden würde&lt;br /&gt;
 root@zero:~# type '''-a''' ls&lt;br /&gt;
 ls is aliased to `ls --color=auto'&lt;br /&gt;
 ls is /bin/ls&lt;br /&gt;
&lt;br /&gt;
* -p : Anzeigen des Eintrags von Befehl in der Hash-Tabelle. Dieser Wert kann sich vom ersten Auftreten des Befehls in PATH&lt;br /&gt;
unterscheiden&lt;br /&gt;
 root@zero:~# type '''-p''' apache2&lt;br /&gt;
 /usr/sbin/apache2&lt;br /&gt;
&lt;br /&gt;
* -t : Anzeigen, ob Befehl ein Aliasname, ein Schlüsselwort, eine Funktion, ein eingebauter Befehl oder eine Datei ist&lt;br /&gt;
 root@zero:~# type '''-t''' apache2&lt;br /&gt;
 file&lt;/div&gt;</summary>
		<author><name>192.168.178.46</name></author>
	</entry>
	<entry>
		<id>https://www.xinux.net/index.php?title=Linux_Grundlagen&amp;diff=68</id>
		<title>Linux Grundlagen</title>
		<link rel="alternate" type="text/html" href="https://www.xinux.net/index.php?title=Linux_Grundlagen&amp;diff=68"/>
		<updated>2009-07-07T07:48:46Z</updated>

		<summary type="html">&lt;p&gt;192.168.178.46: /* tr */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Einführung==&lt;br /&gt;
===Geschichte Unix===&lt;br /&gt;
====1969====&lt;br /&gt;
Am Anfang von Linux steht Multics, ein von Bell Laboratories geschaffenes &amp;quot;Betriebssystem&amp;quot;, &lt;br /&gt;
das noch mit Lochkarten arbeitete. Multics wird mit Unterstützung von AT&amp;amp;T und Western &lt;br /&gt;
Electric unter Mitarbeit von Ken Thompson und Dennis Ritchie weiterentwickelt. Obwohl sich &lt;br /&gt;
Bell Laboratories bald zurückzieht, gibt Thompson das Projekt nicht auf.  Zum Entwicklerteam &lt;br /&gt;
gehören auch Rudd Canaday und Brian Kernighan. Letzterer gibt 1970 dem Betriebssystem den Namen UNIX. &lt;br /&gt;
Thompson definiert 7 Richtlinien für UNIX:&lt;br /&gt;
 &lt;br /&gt;
# Hierarchische Anordnung der Dateisysteme&lt;br /&gt;
# Die Ausgabe von Daten an die Peripherie(-geräte) und Dateien soll gleich sein.&lt;br /&gt;
# Prozesse und Programme sollen miteinander kommunizieren.&lt;br /&gt;
# Multitasking (voneinander getrennte Prozesse)&lt;br /&gt;
# Persönliche Shell's&lt;br /&gt;
# Der Compiler soll für viele Programmiersprachen tauglich sein.&lt;br /&gt;
# Portabilität&lt;br /&gt;
&lt;br /&gt;
====1971====&lt;br /&gt;
Bis 1971 ist das für eine DEC PDP-7 geschriebene Unix als Version 1 auf eine PDP-11 portiert. Bis&lt;br /&gt;
zur Version 4 entwickelt Ritchie die Programmier- (Hoch-) Sprache C. Das in Assembler geschriebene&lt;br /&gt;
Unix wird fast völlig nach C übersetzt, wodurch zum erstenmal die geforderte Hardware-Unabhängigkeit&lt;br /&gt;
des Betriebssystems realisiert werden kann.&lt;br /&gt;
&lt;br /&gt;
====1975====&lt;br /&gt;
Da AT&amp;amp;T aufgrund vertraglicher Bindungen mit der US-Bundesregierung Unix nicht kommerziell vermarkten darf, stellt sie den Source Code für ein paar hundert Dollar den Universitäten, Lehr- und Forschungsanstalten zur Verfügung. Dies führt zu einer sehr dynamischen Entwicklung von Unix. 1975 wird die Version 6 als erstes UNIX-System veröffentlicht, die darauffolgende Version 7 wird sehr erfolgreich. Da es keine Standardisierung gibt, entwickeln bald verschiedenste Firmen ihr eigenes UNIX. Ab 1984 wird AT&amp;amp;T per Gerichtsbeschluss erlaubt, Unix zu vermarkten. AT&amp;amp;T verkauft sein Unix V und beginnt, sich um einen internationalen Standard von UNIX zu bemühen. &lt;br /&gt;
&lt;br /&gt;
====1984====&lt;br /&gt;
Durch Richard Stallman wird die Free Software Foundation (FSF) gegründet. Diese initiiert ein Projekt namens GNU (GNU ist Not Unix), welches das Ziel verfolgt, ein freies UNIX System zu schaffen. &lt;br /&gt;
&lt;br /&gt;
====1987====&lt;br /&gt;
AT&amp;amp;T verbietet die Verwendung des Unix Quellcodes an den Universitäten. Während dieser Zeit ist Andrew (Andy) Tannenbaum Professor an der Freien Universität von Amsterdam und entwickelt Minix. Minix ist ein kostengünstiges Lehrbetriebssystem und kommt ohne jeglichen AT&amp;amp;T Code aus, obwohl es die gleiche Funktionalität wie Unix 7 bietet. Im Usenet unter comp.os.minix entsteht eine Minix-Gemeinde, die den Minix Kernel und die Anwendungen rundherum programmiert und verbessert.&lt;br /&gt;
&lt;br /&gt;
====1991====&lt;br /&gt;
Linus Torvalds hat als Student für Computerwissenschaften an der Universität in Helsinki Minix installiert und das Buch von Andy Tannenbaum gelesen. Er beginnt im Sinne der FSF einen Unix ähnlichen Kernel zu programmieren mit der Idee, &amp;quot;ein besseres Minix als Minix&amp;quot; zu bauen. 1992 stellt er die Version 0.02 mit dem Namen Linux der Internetgemeinde zur Verfügung. &lt;br /&gt;
&lt;br /&gt;
====1994====&lt;br /&gt;
Die Linux Version 1.0 wird freigegeben. Das Linux Fieber beginnt... &lt;br /&gt;
&lt;br /&gt;
====1998====&lt;br /&gt;
Der Kreis der Linux Entwickler und Anwender ist kräftig angeschwollen. KDE 1.0 wird veröffentlicht. Die Zuwachsraten von Linux übertreffen die von Windows NT deutlich. &lt;br /&gt;
&lt;br /&gt;
====1999====&lt;br /&gt;
Der lange erwartete stabile Linux Kernel Version 2.2 wird freigegeben. Namhafte Firmen wie IBM kündigen ihre Unterstützung für Linux an. &lt;br /&gt;
&lt;br /&gt;
====2001====&lt;br /&gt;
Der lange erwartete stabile Linux Kernel Version 2.4 wird freigegeben. USB Unterstützung und eine neue Firewallimplementierung zeichnen ihn aus.&lt;br /&gt;
&lt;br /&gt;
====2003====&lt;br /&gt;
Linux Kernel Version 2.6 wird freigegeben. Am auffälligsten sind Änderungen bei der Modulverwaltung.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Distributionen===&lt;br /&gt;
{| Border=1 Cellpadding=2&lt;br /&gt;
| &lt;br /&gt;
|Url&lt;br /&gt;
|Paketformat&lt;br /&gt;
|-&lt;br /&gt;
|Red Hat&lt;br /&gt;
|www.redhat.com&lt;br /&gt;
|rpm&lt;br /&gt;
|-&lt;br /&gt;
|fedora&lt;br /&gt;
|fedora.redhat.com&lt;br /&gt;
|rpm&lt;br /&gt;
|-&lt;br /&gt;
|CentOS&lt;br /&gt;
|www.centos.org&lt;br /&gt;
|rpm&lt;br /&gt;
|-&lt;br /&gt;
|Suse/openSUSE&lt;br /&gt;
|www.opensuse.org&lt;br /&gt;
|rpm&lt;br /&gt;
|-&lt;br /&gt;
|Debian&lt;br /&gt;
|www.debian.org&lt;br /&gt;
|deb&lt;br /&gt;
|-&lt;br /&gt;
|Ubuntu&lt;br /&gt;
|www.ubuntu.com&lt;br /&gt;
|deb&lt;br /&gt;
|-&lt;br /&gt;
|Mandrake&lt;br /&gt;
|www.linux-mandrake.com&lt;br /&gt;
|rpm&lt;br /&gt;
|-&lt;br /&gt;
|Easy Linux&lt;br /&gt;
|www.easy-linux.de&lt;br /&gt;
|rpm&lt;br /&gt;
|-&lt;br /&gt;
|Turbo&lt;br /&gt;
|www.turbolinux.com&lt;br /&gt;
|rpm&lt;br /&gt;
|-&lt;br /&gt;
|minis&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|toms&lt;br /&gt;
|www.toms.net/rb&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|damn small linux&lt;br /&gt;
|www.damnsmalllinux.org&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|pocket-linux&lt;br /&gt;
|www.pocket-linux.org&lt;br /&gt;
|&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
====Bücher====&lt;br /&gt;
 Titel : Das Linux Anwenderhandbuch und Leitfaden für die Systemverwaltung&lt;br /&gt;
 Autor : Sebastian Hetze, Dirk Hohndel, Olaf Kirch und Martin Müller&lt;br /&gt;
 Verlag: Lunetix&lt;br /&gt;
 ISBN : 3-929764-06-7&lt;br /&gt;
&lt;br /&gt;
 Titel : Linux in a Nutshell&lt;br /&gt;
 Autor : Jessica Perry Hekman und die Mitarbeiter von O'Reilly &amp;amp; Associates&lt;br /&gt;
 Verlag: O'Reilly&lt;br /&gt;
 ISBN : 3-930673-57-6&lt;br /&gt;
&lt;br /&gt;
 Titel : Linux - Wegweiser zur Installation und Konfiguration&lt;br /&gt;
 Autor : Matt Welsh, Lar Kaufman, Matthias Kalle Dallheimer&lt;br /&gt;
 Verlag: O'Reilly&lt;br /&gt;
 ISBN : 3-930673-58-4 (deutsch), 1-56592-469-X (englisch)&lt;br /&gt;
&lt;br /&gt;
 Titel : Linux - Installation, Konfiguration, Anwendung&lt;br /&gt;
 Autor : Michael KoflerMultitasking&lt;br /&gt;
 Verlag: Addison-Wesley&lt;br /&gt;
 ISBN : 3-8273-1475-5&lt;br /&gt;
&lt;br /&gt;
 Titel : Linux - Wegweiser für Netzwerker&lt;br /&gt;
 Autor : Olaf Kirch&lt;br /&gt;
 Verlag: O'Reilly&lt;br /&gt;
 ISBN : 3-930673-18-5&lt;br /&gt;
&lt;br /&gt;
 Titel : TCP/IP-Netzwerk-Administration&lt;br /&gt;
 Autor : Craig Hunt&lt;br /&gt;
 Verlag: O'Reilly&lt;br /&gt;
 ISBN : 3-89721-110-6&lt;br /&gt;
&lt;br /&gt;
 Titel : Essential System Administration&lt;br /&gt;
 Autor : Eleen Frisch&lt;br /&gt;
 Verlag: O'Reilly&lt;br /&gt;
 ISBN : 1-56592-127-5&lt;br /&gt;
&lt;br /&gt;
==Betriebssystem==&lt;br /&gt;
===Was ist ein Betriebssystem?===&lt;br /&gt;
&lt;br /&gt;
Ein Betriebssystem liegt logisch gesehen zwischenAnwendungsprogramm und Hardware.&lt;br /&gt;
&lt;br /&gt;
Es nimmt die Anforderungen der Anwendungsprogramme entgegen und leitet&lt;br /&gt;
diese kontrolliert an die Hardware weiter. Kein Anwendungsprogramm sollte&lt;br /&gt;
direkt auf die Hardware zugreifen können. Den zentralen Zugang schafft einzig&lt;br /&gt;
das Betriebssystem. Somit kann das Betriebssystem unsinnige Anforderungen&lt;br /&gt;
oder Bedienungsfehler abblocken.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Image:Linux.jpg]]&lt;br /&gt;
&lt;br /&gt;
===Aufgaben eines Betriebssystems===&lt;br /&gt;
&lt;br /&gt;
# Verbergen der Komplexität der Maschine vor dem Anwender (Abstraktion)&lt;br /&gt;
# Bereitstellen einer Benutzerschnittstelle (&amp;quot;Kommandointerpreter&amp;quot;, &amp;quot;Shell&amp;quot;)&lt;br /&gt;
# Bereitstellen einer normierten Programmierschnittstelle (API)&lt;br /&gt;
# Verwaltung der Ressourcen der Maschine::&lt;br /&gt;
Hauptspeicher&lt;br /&gt;
Prozessor(en)&lt;br /&gt;
Hintergrundspeicher (Platte, Band, etc.)&lt;br /&gt;
Geräte (Terminal, Drucker, Plotter, etc.)&lt;br /&gt;
Rechenzeit&lt;br /&gt;
Koordination von Prozessen&lt;br /&gt;
&lt;br /&gt;
===Aufbau eines Betriebssystems===&lt;br /&gt;
&lt;br /&gt;
Ein Rechensystem besteht aus Hardware, Systemprogrammen und Anwendungs-&lt;br /&gt;
programmen. Unter einem Betriebssystem wird meist die Summe aus Betriebs-&lt;br /&gt;
systemkern (Kernel) und den wichtigsten Systemprogrammen verstanden. Ein&lt;br /&gt;
minimaler LINUX-Kernel besitzt ungefähr eine Größe von 400 - 800 kByte.&lt;br /&gt;
Weitere wichtige Systemkomponenten benötigen zusätzlich 10 - 100 Mbyte&lt;br /&gt;
Plattenplatz.&lt;br /&gt;
&lt;br /&gt;
Ein Betriebssystem stellt den Rechner als erweiterte Maschine (virtuelle&lt;br /&gt;
Maschine) über definierte Software-Schnittstellen zur Verfügung.&lt;br /&gt;
Das Betriebssystem dient als Betriebsmittelverwalter, der Anforderungen&lt;br /&gt;
befriedigt, protokolliert, abrechnet und vermittelt.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Aufgaben des Betriebssystemkerns:&lt;br /&gt;
&lt;br /&gt;
{| Border=1 Cellpadding=2&lt;br /&gt;
|Prozessverwaltung  (dispatching and scheduling)&lt;br /&gt;
| Mehrere Benutzer können mit mehreren Aktionen gleichzeitig im System arbeiten, ohne sich gegenseitig zu beeinflussen. Damit dies möglich ist,  müssen die Aktionen organisiert, koordiniert und verwaltet werden. Die zu verwaltende Einheit nennt man Prozess.&lt;br /&gt;
|-&lt;br /&gt;
|Speicherverwaltung   (memory management)&lt;br /&gt;
|Zuteilen von Speicherbereichen an laufende Prozesse, Schutz der Speicherbereiche vor unbefugten Zugriffen, bei Speicherengpässen: Auslagern von ganzen (swapping) oder von Teilen (paging) von Prozessen auf die Platte (swap file).&lt;br /&gt;
|-&lt;br /&gt;
|Dateiverwaltung  (file handling)&lt;br /&gt;
|Zuteilung von Plattenplatz für Programme, Benutzer und Systemdienste, Schreiben, Lesen und Strukturieren der Daten auf den Massenspeichern; Durch Bereitstellung einer entsprechenden Schnittstelle (VFS, virtual file system) kann der Kern Dateisysteme unterschiedlichster Art (EXT2, FAT, NFS, HPFS, NTFS, ...) ansprechen.&lt;br /&gt;
|-&lt;br /&gt;
|Geräteverwaltung  (resource management)&lt;br /&gt;
|Der Kern ermöglicht und kontrolliert den Zugriff auf die Hardware. Er steuert die Ein- und Ausgabetätigkeiten der Anwender. An den Kern&lt;br /&gt;
gebunden sind die entsprechenden Gerätetreiber (device driver), die damit eine Kommunikation zwischen Kern und Hardware ermöglichen.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
===Multitasking===&lt;br /&gt;
&lt;br /&gt;
Multitasking bedeutet, dass ein Rechner aus Anwendersicht mehrere Aufgaben&lt;br /&gt;
(Tasks) gleichzeitg übernehmen kann. Das Betriebssystem (OS) unterteilt die&lt;br /&gt;
gleichzeitig anstehenden Aufgaben in Einzelarbeitsschritte (Prozesse) und&lt;br /&gt;
managed durch ein Zeitscheibenverfahren (scheduling) die gleichmäßige&lt;br /&gt;
Abarbeitung der Prozesse.&lt;br /&gt;
&lt;br /&gt;
Es wird unterschieden zwischen:&lt;br /&gt;
&lt;br /&gt;
*non-präamptiven (kooperativen=die Ressourcen werden vom aktiven Prozess freigegeben, bei einem Hänger steht das ganze System)&lt;br /&gt;
&lt;br /&gt;
und&lt;br /&gt;
&lt;br /&gt;
*präamptiven (reinem=der Betriebssystemkern steuert Taskwechsel, indem nach einer festgelegten Zeit vom gerade aktiven Prozess zum nächsten weitergeschaltet wird)&lt;br /&gt;
&lt;br /&gt;
===Mehrprozessorbetrieb===&lt;br /&gt;
&lt;br /&gt;
Bei mehreren Prozessoren und Unterstützung durch das OS&lt;br /&gt;
(NT,Linux,Unix,Novell) können mehrere Tasks auf diese verteilt werden und&lt;br /&gt;
gleichzeitig bearbeitet werden. Nachteilig ist, dass dies nicht oder kaum von&lt;br /&gt;
Anwendungsprogrammen unterstützt wird und es zu Kommunikationsproblemen&lt;br /&gt;
zwischen den einzelnen Tasks kommen kann.&lt;br /&gt;
&lt;br /&gt;
===Arten von von Betriebssystemen===&lt;br /&gt;
&lt;br /&gt;
{|Border=1 Cellpadding=2&lt;br /&gt;
|&lt;br /&gt;
|SingleUser  &lt;br /&gt;
|Multiuser&lt;br /&gt;
|-&lt;br /&gt;
|Single Tasking&lt;br /&gt;
|MS - DOS&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|Multi Tasking&lt;br /&gt;
|Windows 3.x&lt;br /&gt;
|UNIX&lt;br /&gt;
|-&lt;br /&gt;
|&lt;br /&gt;
|Windows 95/98&lt;br /&gt;
|Linux&lt;br /&gt;
|-&lt;br /&gt;
|&lt;br /&gt;
|Windows NT4 ohne Erweiterungen&lt;br /&gt;
|VMS&lt;br /&gt;
|-&lt;br /&gt;
|&lt;br /&gt;
|OS/2 &lt;br /&gt;
|Windows NT mit  Erweiterungen&lt;br /&gt;
|-&lt;br /&gt;
|&lt;br /&gt;
|Apple&lt;br /&gt;
|Windows 2000, XP, 2003&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
===SHELL===&lt;br /&gt;
&lt;br /&gt;
Wenn man mit Linux arbeiten will, kann man nicht direkt mit dem Betriebssystem&lt;br /&gt;
kommunizieren. Man braucht dazu ein Hilfsprogramm, welches die&lt;br /&gt;
Kommandoeingaben ordnungsgemäß an das Betriebssystem weiterleitet. Dieses&lt;br /&gt;
Hilfsprogramm hat den Namen Shell.&lt;br /&gt;
&lt;br /&gt;
Die Shell schirmt den Betriebssystemkern von den Anwendungsprogrammen ab.&lt;br /&gt;
Die unterschiedlichen Shells erfüllen alle dieselbe Aufgabe, sie unterscheiden sich&lt;br /&gt;
allerdings in ihrer Syntax.&lt;br /&gt;
&lt;br /&gt;
==Die Installation im Überblick==&lt;br /&gt;
&lt;br /&gt;
Die Installation von Linux geschieht in folgenden Schritten:&lt;br /&gt;
&lt;br /&gt;
# Analyse (Welche Hardware habe ich? ,Hab ich weitere Betriebsysteme?)&lt;br /&gt;
# Booten des Linux-Kernels. (von CD oder Diskette)&lt;br /&gt;
# Laden einer RAM-Disk (das macht das Installationsprogramm automatisch).&lt;br /&gt;
# Partitionieren der Festplatte (fdisk).&lt;br /&gt;
# Einrichten der Swappartition (mkswap), Formatieren der Festplatte (mkfs).&lt;br /&gt;
# Montieren der Dateisysteme (mount), Aktivieren der Swapbereiche (swapon).&lt;br /&gt;
# Kopieren und Auspacken der Daten vom Installationsmedium auf die Festplatte (die eigentliche Installation). (rpm, dpkg oder tar).&lt;br /&gt;
# Geeignete Wahl der Bootmethode unter Berücksichtigung von Punkt 1 (grub, lilo).&lt;br /&gt;
# Konfiguration des Systems (Netz, Modem etc...).&lt;br /&gt;
&lt;br /&gt;
==Erste Schritte==&lt;br /&gt;
===Anmelden===&lt;br /&gt;
Sie können sich nun mit dem Usernamen und dem Passwort, das sie bei der Installation angelegt haben anmelden!&lt;br /&gt;
[[Image:benutzer.jpg]]&lt;br /&gt;
&lt;br /&gt;
[[Image:passwd.jpg]]&lt;br /&gt;
&lt;br /&gt;
===Terminal öffnen===&lt;br /&gt;
&lt;br /&gt;
Ein Terminal öffnen Sie über das Startmenü:&lt;br /&gt;
&lt;br /&gt;
[[Image:Terminalde.jpg]]&lt;br /&gt;
&lt;br /&gt;
Das geöffnete Terminal sieht dann folgendermaßen aus:&lt;br /&gt;
&lt;br /&gt;
[[Image:Terminalde2.jpg]]&lt;br /&gt;
&lt;br /&gt;
===Sudo===&lt;br /&gt;
Rootrechte erlangen sie über den &amp;quot;Sudo&amp;quot;-Befehl&lt;br /&gt;
 &lt;br /&gt;
''Den nächsten Befehl als root ausführen''&lt;br /&gt;
 xinux@zero:~$ sudo cat /etc/shadow&lt;br /&gt;
 [sudo] password for xinux:&lt;br /&gt;
&lt;br /&gt;
''Eine komplette Sitzung als root starten''&lt;br /&gt;
 xinux@zero:~$ sudo -i&lt;br /&gt;
 [sudo] password for xinux:&lt;br /&gt;
 root@zero:~#&lt;br /&gt;
&lt;br /&gt;
===Virtuelle Konsolen===&lt;br /&gt;
&lt;br /&gt;
In die Virtuelle Konsole gelangen sie über &amp;quot;STRG+ALT+(F1-F6)&amp;quot;.&lt;br /&gt;
Sie funktioniert wie ein ganz normales Terminal, und mit &amp;quot;ALT+F7&amp;quot;&lt;br /&gt;
gelangen sie wieder zurück auf die grafische Benutzeroberfläche&lt;br /&gt;
&lt;br /&gt;
===Abmelden===&lt;br /&gt;
&lt;br /&gt;
Abmelden können Sie sich wieder über das Startmenu unter:&lt;br /&gt;
&lt;br /&gt;
[[Image:Logout.jpg]]&lt;br /&gt;
&lt;br /&gt;
Fals sie nur einzelne Sitzungen in einem der Terminals oder &lt;br /&gt;
den Virtuellen Konsolen Abmelden wollen benutzen sie dazu den Befehl: &amp;quot;exit&amp;quot;&lt;br /&gt;
&lt;br /&gt;
===Herunterfahren===&lt;br /&gt;
&lt;br /&gt;
Das Herunterfahren funktioniert auf dem selben Weg.&lt;br /&gt;
&lt;br /&gt;
Entweder sie Benutzen wieder das Startmenü und benutzen diesmal den &amp;quot;Ausschalten ...&amp;quot; Knopf,&lt;br /&gt;
&lt;br /&gt;
Oder sie geben den äquivalenten &amp;quot;shutdown&amp;quot;-Befehl in einem Terminal bzw. der virtuellen Konsole ein.&lt;br /&gt;
&lt;br /&gt;
Allerdings müssen sie dazu als Administrator angemeldet sein s. &amp;quot;Sudo&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Wenn Sie den &amp;quot;shutdown&amp;quot;-Befehl benutzen wollen muss hinter den Befehl&lt;br /&gt;
&lt;br /&gt;
eine Zeitangabe in Minuten oder das wort &amp;quot;now&amp;quot; für sofortiges Ausschalten hinzugefügt werden:&lt;br /&gt;
&lt;br /&gt;
 xinux@zero:~$ sudo -i&lt;br /&gt;
 root@zero:~# shutdown 60&lt;br /&gt;
 &lt;br /&gt;
 Broadcast message from xinux@zero &lt;br /&gt;
         (/dev/pts/3) at 14:29 ...&lt;br /&gt;
 &lt;br /&gt;
 The system is going down for maintenance in 60 minutes!&lt;br /&gt;
&lt;br /&gt;
Sollten sie den Befehl widerrufen wollen dann drücken sie &amp;quot;STRG+C&amp;quot;,&lt;br /&gt;
&lt;br /&gt;
in dem Terminal in dem der shutdown Befehl gestartet wurde,&lt;br /&gt;
&lt;br /&gt;
oder geben sie den &amp;quot;shutdown&amp;quot;-Befehl zusammen mit der Abbruchoption &amp;quot;-c&amp;quot; in einem anderen Terminal ein:&lt;br /&gt;
&lt;br /&gt;
 root@zero:~# shutdown -c&lt;br /&gt;
&lt;br /&gt;
 shutdown: Shutdown cancelled&lt;br /&gt;
 root@zero:~# &lt;br /&gt;
&lt;br /&gt;
Wenn Sie den Rechner Neustarten möchten gibt es dazu die Option &amp;quot;-r&amp;quot; für den &amp;quot;shutdown&amp;quot;-Befehl&lt;br /&gt;
&lt;br /&gt;
oder den &amp;quot;reboot&amp;quot;-Befehl die beide auch als root ausgeführt werden müssen:&lt;br /&gt;
&lt;br /&gt;
 xinux@zero:~$ sudo -i&lt;br /&gt;
 [sudo] password for xinux: &lt;br /&gt;
 root@zero:~# shutdown -r now&lt;br /&gt;
&lt;br /&gt;
 root@zero:~# reboot&lt;br /&gt;
&lt;br /&gt;
===&amp;quot;man&amp;quot;===&lt;br /&gt;
&lt;br /&gt;
Programm zum Einsehen der Online-Manuals&lt;br /&gt;
&lt;br /&gt;
Die Manuals sind in folgende Sektionen unterteilt:&lt;br /&gt;
# Ausführbare Programme oder Shellbefehle&lt;br /&gt;
# Systemaufrufe (Kernelfunktionen)&lt;br /&gt;
# Bibliotheksaufrufe (Funktionen in System-Bibliotheken)&lt;br /&gt;
# Spezielle Dateien (gewöhnlich in /dev)&lt;br /&gt;
# Dateiformate und Konventionen, z. B. /etc/passwd&lt;br /&gt;
# Spiele&lt;br /&gt;
# Makropakete und Konventionen, z. B. man(7), groff(7)&lt;br /&gt;
# Systemadministrationsbefehle (in der Regel nur für root)&lt;br /&gt;
# Kernelroutinen [Nicht Standard]&lt;br /&gt;
&lt;br /&gt;
Aufruf eines Manuals erfolgt durch ''man kommando''&lt;br /&gt;
Beendet wird durch Drücken des Buchstabens q&lt;br /&gt;
Gesucht wird vorwärts durch Eingabe eines /suchausdruck&lt;br /&gt;
Gesucht wird rückwärts durch Eingabe eines ?suchausdruck&lt;br /&gt;
&lt;br /&gt;
Beispiele:&lt;br /&gt;
&lt;br /&gt;
      man passwd        Anschauen der Manualseite zum Programm passwd&lt;br /&gt;
      man 5 passwd      Anschauen der Manualseite zur Datei /etc/passwd&lt;br /&gt;
      man -a passwd     Anschauen aller Manualseiten zu passwd&lt;br /&gt;
      man -k passwd     Durchsucht die Kurzbeschreibungen der Manualseite&lt;br /&gt;
                        nach passwd und gibt alle Treffer aus&lt;br /&gt;
      man -f passwd      Gibt alle gefunden Kurzbescheibungen zu passwd aus&lt;br /&gt;
      man -L en passwd Gibt englische Manualseiten aus&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Was geht vor auf meinem System? (date,who)===&lt;br /&gt;
&lt;br /&gt;
Das Kommando date dient zur Abfrage von Datum und Uhrzeit.&lt;br /&gt;
&lt;br /&gt;
 xinux@zero:~ &amp;gt; date&lt;br /&gt;
 Fre Mär 16 16:35:03 CET 2001&lt;br /&gt;
&lt;br /&gt;
oder auch Anzeige der Grennwich Zeit:&lt;br /&gt;
&lt;br /&gt;
 xinux@zero:~ &amp;gt; date -u&lt;br /&gt;
 Fre Mär 16 15:35:34 UTC 2001&lt;br /&gt;
&lt;br /&gt;
 xinux@zero:~ &amp;gt; date -u &amp;quot;+%X&amp;quot;&lt;br /&gt;
 15:37:19&lt;br /&gt;
&lt;br /&gt;
 xinux@zero:~ &amp;gt; date -u &amp;quot;+%x&amp;quot;&lt;br /&gt;
 01/15/02&lt;br /&gt;
&lt;br /&gt;
who zeigt alle angemeldeten Benutzer an&lt;br /&gt;
&lt;br /&gt;
 thomas@cardassia:~ &amp;gt; who&lt;br /&gt;
 thomas             tty1 Feb 27 16:39&lt;br /&gt;
 thomas             tty2 Mar 2 17:08&lt;br /&gt;
 tina               tty6 Mar 16 16:38&lt;br /&gt;
&lt;br /&gt;
Mit `who --help' bekommen Sie mehr Informationen.&lt;br /&gt;
&lt;br /&gt;
 thomas@cardassia:~ &amp;gt; who --help&lt;br /&gt;
&lt;br /&gt;
Benutzung: who [OPTION]... [ DATEI | ARG1 ARG2 ]&lt;br /&gt;
&lt;br /&gt;
 -H, --heading             print line of column headings&lt;br /&gt;
 -i, -u, --idle            add user idle time as HOURS:MINUTES, . or old&lt;br /&gt;
 -l, --lookup              attempt to canonicalize hostnames via DNS&lt;br /&gt;
 -m                        only hostname and user associated with stdin&lt;br /&gt;
 -q, --count               all login names and number of users logged on&lt;br /&gt;
 -s                        (ignored)&lt;br /&gt;
 -T, -w, --mesg            add user's message status as +, - or ?&lt;br /&gt;
     --message             same as -T&lt;br /&gt;
     --writable            same as -T&lt;br /&gt;
     --help                display this help and exit&lt;br /&gt;
     --version             output version information and exit&lt;br /&gt;
&lt;br /&gt;
==Das UNIX-Dateisystem==&lt;br /&gt;
===Verzeichnisbaum===&lt;br /&gt;
&lt;br /&gt;
[[Image:vztree.jpg]]&lt;br /&gt;
&lt;br /&gt;
Das Betriebssystem UNIX besitzt ein hierarchisches Dateisystem. Es besteht aus:&lt;br /&gt;
* Dateien (Files)&lt;br /&gt;
Dateien speichern Informationen (Text, Bilder, Sound, Videos, Programme) und&lt;br /&gt;
werden über den Dateinamen angesprochen.&lt;br /&gt;
&lt;br /&gt;
* Verzeichnissen (Directories, Kataloge)&lt;br /&gt;
Verzeichnisse besitzen ebenfalls einen Namen und dienen zur Ordnung des&lt;br /&gt;
Dateisystems. Ein Verzeichnis kann Dateien und Unterverzeichnisse&lt;br /&gt;
(Subdirectories) enthalten. Das oberste Verzeichnis im Dateisystem heisst&lt;br /&gt;
Rootverzeichnis oder kurz Root und wird durch / (sprich: slash)&lt;br /&gt;
gekennzeichnet.&lt;br /&gt;
&lt;br /&gt;
Im Gegensatz zu Windows kennt UNIX keine Laufwerke.&lt;br /&gt;
Das obige Bild zeigt ein typisches UNIX-Dateisystem.&lt;br /&gt;
Unterhalb des Rootverzeichnisses befinden sich eine Vielzahl vonVerzeichnissen.&lt;br /&gt;
&lt;br /&gt;
===Wichtige Verzeichnisse===&lt;br /&gt;
&lt;br /&gt;
• '''Homeverzeichnis'''&lt;br /&gt;
&lt;br /&gt;
das Verzeichnis, in dem man sich unmittelbar nach dem Anmelden befindet. Das&lt;br /&gt;
Homeverzeichnis wird vom Systemverwalter eingerichtet; jeder Anwender&lt;br /&gt;
besitzt ein festes Homeverzeichnis. z.B. /home/hans&lt;br /&gt;
&lt;br /&gt;
~ (Tilde) bzw. $HOME (Shellvariable) kennzeichnen das Homeverzeichnis.&lt;br /&gt;
&lt;br /&gt;
• '''Aktuelles Verzeichnis'''&lt;br /&gt;
&lt;br /&gt;
Verzeichnis, in dem man sich aktuell befindet.&lt;br /&gt;
Das aktuelle Verzeichnis wird mit dem Befehl cd (change directory) oder per&lt;br /&gt;
Mausklick verändert.&lt;br /&gt;
Ein einfacher Punkt . kennzeichnet das aktuelle Verzeichnis.&lt;br /&gt;
&lt;br /&gt;
• '''Elternverzeichnis'''&lt;br /&gt;
&lt;br /&gt;
Verzeichnis unmittelbar oberhalb des aktuellen Verzeichnisses.&lt;br /&gt;
Jedes Verzeichnis ausser / besitzt genau ein Elternverzeichnis.&lt;br /&gt;
Zwei Punkte .. kennzeichnen das Elternverzeichnis (abhängig vom aktuellen&lt;br /&gt;
VZ).&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Absoluter Pfadname:===&lt;br /&gt;
&lt;br /&gt;
Beschreibt ausgehend vom Rootverzeichnis den Weg zum Zielverzeichnis oder zur&lt;br /&gt;
Zieldatei. (Welche Verzeichnisse müssen ausgehend von / durchlaufen werden, um&lt;br /&gt;
zum Ziel zu kommen?) Ein absoluter Pfadname beginnt immer mit / .&lt;br /&gt;
&lt;br /&gt;
===Relativer Pfadname:===&lt;br /&gt;
&lt;br /&gt;
Beschreibt ausgehend vom aktuellen Verzeichnis den Weg zum Zielverzeichnis&lt;br /&gt;
oder zur Zieldatei; ein relativer Pfadname beginnt nicht mit / .&lt;br /&gt;
/home/suxer&lt;br /&gt;
absoluter Pfadname für das Verzeichnis sub1 im Homeverzeichnis von suxer&lt;br /&gt;
&lt;br /&gt;
===Verzeichnisstruktur===&lt;br /&gt;
&lt;br /&gt;
 /bin         Kommandos die beim starten benötigt werden (Zugriff hat jeder)&lt;br /&gt;
 /sbin        Wichtige System-Programme (In der Regel root vorberhalten)&lt;br /&gt;
 /boot        Hier findet man die Dateien des Bootmanagers und des Kernel.&lt;br /&gt;
 /dev         In diesem Verzeichnis stehen die Gerätedateien (Devices),&lt;br /&gt;
 /home        Alle Heimatverzeichnisse der Nutzer findet man hier.&lt;br /&gt;
 /lib         Beim Systemstart benötigten Bibliotheken und Modules stehen hier.&lt;br /&gt;
 /mnt         Mountpunkt für temporäre Partitionen&lt;br /&gt;
 /opt         Software, die nicht Installationsumfang von Linux gehören.&lt;br /&gt;
 /root        Heimatverzeichnis des Administrators.&lt;br /&gt;
 /tmp         Temporäre Dateien können hier abgelegt werden&lt;br /&gt;
 /usr         statische Dateien (kann read-only gemountet sein)&lt;br /&gt;
 /var         variable Dateien (muss beschreibar sein )&lt;br /&gt;
 /etc         Konfiguartionsdateien und Startscripte&lt;br /&gt;
 /proc        Virtuelles Dateisystem -&amp;gt; repräsentiert den Kernel&lt;br /&gt;
&lt;br /&gt;
===Unterverzeichnisse von /usr===&lt;br /&gt;
&lt;br /&gt;
 sbin         Programme für root die beim Start nicht benötigt werden&lt;br /&gt;
 bin          Programme für alle die beim Start nicht benötigt werden&lt;br /&gt;
 X11R6        Dateien des X-Window-Sytems&lt;br /&gt;
 bin          Ausführbare Programme&lt;br /&gt;
 doc          Dokumentationen&lt;br /&gt;
 etc          Konfigurationsdateien&lt;br /&gt;
 games        Spiele&lt;br /&gt;
 include      Headerdateien für C-Programme&lt;br /&gt;
 local        Pakete die nicht zur Distribution gehören ähnlich /opt&lt;br /&gt;
 share        Pakete die von mehreren Paketen genutzt werden&lt;br /&gt;
 share/man    Die Manualpages&lt;br /&gt;
 share/info   Seiten des Infosystems&lt;br /&gt;
 share/doc    Dokumentationen&lt;br /&gt;
 src          Sources von Programmen (Kernel und andere)&lt;br /&gt;
&lt;br /&gt;
===Unterverzeichnisse von /var===&lt;br /&gt;
&lt;br /&gt;
 cache        Zwischenspreicher für Progammes&lt;br /&gt;
 games        Variable Daten der Games (Scores etc...)&lt;br /&gt;
 lock         Sperrdateien&lt;br /&gt;
 log          Die Logdateien (wichtiges Verzeichnis für Admins)&lt;br /&gt;
 mail         Das Mailsystem&lt;br /&gt;
 run          Dateien zu laufemdem Prozessen&lt;br /&gt;
 spool        Spooldateien (z.B. für das Drucksystem&lt;br /&gt;
 state        Statusinfos&lt;br /&gt;
 tmp          Wie /tmp eventuell nicht auf root Partion&lt;br /&gt;
&lt;br /&gt;
==Einfache Komandos==&lt;br /&gt;
===cd: Wechseln des Arbeitsverzeichnis===&lt;br /&gt;
&lt;br /&gt;
Um festzustellen in welchem Verzeichnis man sich befindet, sollte man den&lt;br /&gt;
Befehl &amp;quot;pwd&amp;quot; benutzen,&lt;br /&gt;
&lt;br /&gt;
und mit dem Befehl &amp;quot;cd&amp;quot; kann man zwischen den Verzeichnissen wechseln:&lt;br /&gt;
&lt;br /&gt;
Wechsele ins homeverzeichnis von Xinux&lt;br /&gt;
&lt;br /&gt;
 xinux@zero:~$ cd /home/xinux/&lt;br /&gt;
 xinux@zero:~$ pwd&lt;br /&gt;
 /home/xinux&lt;br /&gt;
&lt;br /&gt;
cd ~ -&amp;gt; wechsele ins jeweilige Homeverzeichnis&lt;br /&gt;
&lt;br /&gt;
cd .. -&amp;gt; wechsele ein Verzeichnis höher&lt;br /&gt;
&lt;br /&gt;
cd ../verzeichnis -&amp;gt; wechsele in eine paralleles Verzeichnis &amp;lt;- (ist eine relative Pfadangabe !)&lt;br /&gt;
&lt;br /&gt;
cd - -&amp;gt; wechsele in das Verzeichnis, in dem vorher gearbeitet wurde.&lt;br /&gt;
&lt;br /&gt;
Mit cd / wechselt man in das Wurzelverzeichnis.&lt;br /&gt;
&lt;br /&gt;
 xinux@zero:/var/log$ cd /&lt;br /&gt;
 xinux@zero:/$ pwd&lt;br /&gt;
 /&lt;br /&gt;
&lt;br /&gt;
===ls: Listing===&lt;br /&gt;
&lt;br /&gt;
Den Inhalt von Verzeichnissen kann man sich mit dem Befehl &amp;quot;ls&amp;quot; anzeigen lassen&lt;br /&gt;
wobei &amp;quot;ls&amp;quot; eine Vielzahl von Optionen besitzt:&lt;br /&gt;
&lt;br /&gt;
 ls                                  standard&lt;br /&gt;
 ls -l                               langes listing&lt;br /&gt;
 ls -a                               alle Dateien&lt;br /&gt;
 ls -i                               mit Inode&lt;br /&gt;
 ls -h                               gut lesbare Dateigröße&lt;br /&gt;
 ls -d                               Verzechnis wird angezeigt, nicht der Inhalt&lt;br /&gt;
 ls -L                               sortiert nach Größe&lt;br /&gt;
 ls -t                               sortiert nach Datum&lt;br /&gt;
 ls -F                               mit nützlichem Anhang&lt;br /&gt;
&lt;br /&gt;
 xinux@zero:/$ ls -l /var/log/messages&lt;br /&gt;
 -rw-r----- 1 syslog adm 2296 2009-06-16 10:05 /var/log/messages&lt;br /&gt;
&lt;br /&gt;
===more: Seitenweises Anzeigen von Seiten===&lt;br /&gt;
 root@zero:~# more /var/log/messages&lt;br /&gt;
 ...&lt;br /&gt;
&lt;br /&gt;
===head: erste Zeilen anzeigen===&lt;br /&gt;
Erste 10 Zeilen anzeigen&lt;br /&gt;
 root@zero:~# head /var/log/messages&lt;br /&gt;
 Jun 15 12:37:08 zero syslogd 1.5.0#5ubuntu3: restart.&lt;br /&gt;
 Jun 15 12:38:43 zero kernel: [  830.065036] mtrr: your processor doesn't support write-combining&lt;br /&gt;
 Jun 15 12:46:05 zero pulseaudio[4817]: pid.c: Stale PID file, overwriting.&lt;br /&gt;
 Jun 15 13:05:24 zero -- MARK --&lt;br /&gt;
 ...&lt;br /&gt;
&lt;br /&gt;
Erste zwei Zeilen anzeigen&lt;br /&gt;
 root@zero:~# head -n 2 /var/log/messages&lt;br /&gt;
 Jun 15 12:37:08 zero syslogd 1.5.0#5ubuntu3: restart.&lt;br /&gt;
 Jun 15 12:38:43 zero kernel: [  830.065036] mtrr: your processor doesn't support write-combining&lt;br /&gt;
&lt;br /&gt;
===tail: letzte Zeilen anzeigen===&lt;br /&gt;
 &lt;br /&gt;
 root@zero:~# tail /var/log/syslog&lt;br /&gt;
 ...&lt;br /&gt;
 Jun 19 11:19:35 zero -- MARK --&lt;br /&gt;
 Jun 19 11:39:35 zero -- MARK --&lt;br /&gt;
 Jun 19 11:59:36 zero -- MARK --&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Letze 5 Zeilen anzeigen&lt;br /&gt;
 root@zero:~# tail -n 5 /var/log/auth.log&lt;br /&gt;
 Jun 18 14:30:01 zero CRON[12040]: pam_unix(cron:session): session closed for user root&lt;br /&gt;
 Jun 18 14:39:01 zero CRON[12191]: pam_unix(cron:session): session opened for user root by (uid=0)&lt;br /&gt;
 Jun 18 14:39:01 zero CRON[12191]: pam_unix(cron:session): session closed for user root&lt;br /&gt;
 Jun 18 14:40:01 zero CRON[12237]: pam_unix(cron:session): session opened for user root by (uid=0)&lt;br /&gt;
 Jun 18 14:40:01 zero CRON[12237]: pam_unix(cron:session): session closed for user root&lt;br /&gt;
&lt;br /&gt;
Letze Zeilen anzeigen und fortlaufend aktualisieren&lt;br /&gt;
 root@zero:~# tail -f /var/log/syslog&lt;br /&gt;
 ...&lt;br /&gt;
&lt;br /&gt;
===mkdir: Ein neues Verzeichnis erstellen===&lt;br /&gt;
&lt;br /&gt;
 mkdir        verzeichnis&lt;br /&gt;
Erstellt ein Verzeichnis im working directory (wd)&lt;br /&gt;
&lt;br /&gt;
 mkdir  -p    ver1/ver2&lt;br /&gt;
Erstellt ein Verzeichnis ver2 unterhalb von ver1&lt;br /&gt;
wenn ver1 nicht existiert wird es erstellt&lt;br /&gt;
&lt;br /&gt;
 mkdir -m 753 ver1&lt;br /&gt;
Es wird das Verzeichnis ver1 erstellt mit der mask 753&lt;br /&gt;
&lt;br /&gt;
 mkdir -v     ver1&lt;br /&gt;
Geschwätzige Ausgabe :)&lt;br /&gt;
&lt;br /&gt;
===Zum Löschen von leeren Verzeichnissen wird rmdir benutzt===&lt;br /&gt;
&lt;br /&gt;
 rmdir           ver1&lt;br /&gt;
Löscht das leere Verzeichnis ver1&lt;br /&gt;
&lt;br /&gt;
 rmdir -v        ver1&lt;br /&gt;
Löscht das leere Verzeichnis ver1 und ist geschwätzig&lt;br /&gt;
&lt;br /&gt;
 rmdir -p        /ver1/ver2/ver3&lt;br /&gt;
Löscht das Verzeichnis ver3; wenn dadurch ver2 ein leeres&lt;br /&gt;
Verzeichnis wird, wird dieses auch gelöscht , wenn ver1&lt;br /&gt;
dadurch ein leeres Verzeichnis wird, wird auch dieses gelöscht.&lt;br /&gt;
&lt;br /&gt;
===touch Verändern des Zeitstempels===&lt;br /&gt;
&lt;br /&gt;
Mit touch können wir eine neue leere Datei erzeugen (das ist nicht der eigentliche&lt;br /&gt;
Zweck von touch, eigentlich wird der Zeitstempel geändert)&lt;br /&gt;
&lt;br /&gt;
 touch            dateiname&lt;br /&gt;
&lt;br /&gt;
===Kopieren=== &lt;br /&gt;
cp ist das Kommando um Dateien zu kopieren &lt;br /&gt;
&lt;br /&gt;
Eine Kopie von dat1 mit dem Namen dat2 erstellen:&lt;br /&gt;
&lt;br /&gt;
 xinux@zero:~$ cp dat1 dat2&lt;br /&gt;
&lt;br /&gt;
Eine Kopie von dat1 ins Verzeichnis ver2 erstellen:&lt;br /&gt;
&lt;br /&gt;
 xinux@zero:~$ cp dat1 ver2/&lt;br /&gt;
 &lt;br /&gt;
Eine Kopie erstellen mit ausführlicher Anzeige:&lt;br /&gt;
&lt;br /&gt;
 xinux@zero:~$ cp -v dat1 dat2&lt;br /&gt;
 `dat1' -&amp;gt; `dat2'&lt;br /&gt;
&lt;br /&gt;
Eine Kopie erstellen mit Rückfrage fals etwas überschrieben wird:&lt;br /&gt;
&lt;br /&gt;
 xinux@zero:~$ cp -i dat1 dat2&lt;br /&gt;
 cp: overwrite `dat2'?&lt;br /&gt;
&lt;br /&gt;
Eine Kopie erstellen und die Rückfrage überbrücken:&lt;br /&gt;
&lt;br /&gt;
 xinux@zero:~$ cp -f dat1 dat2&lt;br /&gt;
&lt;br /&gt;
Eine Kopie von dat1 ins Verzeichnis ver2 erstellen fals keine neuere Version von dat1 vorliegt:&lt;br /&gt;
&lt;br /&gt;
 xinux@zero:~$ cp -u dat1 ver2/&lt;br /&gt;
&lt;br /&gt;
Eine Kopie erstellen fals ver2 auf dem selben Dateisystem wie dat1 liegt:&lt;br /&gt;
&lt;br /&gt;
 xinux@zero:~$ cp -x dat1 ver2/&lt;br /&gt;
&lt;br /&gt;
Eine Kopie von ver1, die als ver2 oder unter ver2 als ver1 gespeichert wird erstellen:&lt;br /&gt;
&lt;br /&gt;
 xinux@zero:~$ cp -r ver1/ ver2/&lt;br /&gt;
&lt;br /&gt;
Eine Kopie von einer Datei erstellen und ihre Attribute beibehalten:&lt;br /&gt;
&lt;br /&gt;
 xinux@zero:~$ cp -p sux1 sux2&lt;br /&gt;
&lt;br /&gt;
Eine Kopie erstellen bei der die Links erhalten bleiben:&lt;br /&gt;
&lt;br /&gt;
 xinux@zero:~$ cp -r ver1/ ver2/&lt;br /&gt;
&lt;br /&gt;
Eine Kopie erstellen zum Archivieren (-dpr):&lt;br /&gt;
&lt;br /&gt;
 xinux@zero:~$ cp -a ver1/ ver2/&lt;br /&gt;
&lt;br /&gt;
===rm: Löschen einer Datei===&lt;br /&gt;
&lt;br /&gt;
Um Dateien zu löschen, brauchen wir das Kommando &amp;quot;rm&amp;quot;:&lt;br /&gt;
&lt;br /&gt;
 rm               dat1        dat1 wird gelöscht&lt;br /&gt;
 rm         -i    dat1        dat1 wird nach Bestätigung gelöscht&lt;br /&gt;
 rm         -f    dat1        dat1 wird ohne Rückfragen gelöscht&lt;br /&gt;
 rm         -v    dat1        dat1 wird glöscht (geschwätzige Ausgabe)&lt;br /&gt;
 rm         -r    ver1        Löschen von nicht leeren Verzeichnissen&lt;br /&gt;
                              Achtung !!! Als root kann man sich damit Teile&lt;br /&gt;
                              oder sogar den gesamten Verzeichnisbaum&lt;br /&gt;
                              absägen !!!&lt;br /&gt;
&lt;br /&gt;
===mv: Verschieben===&lt;br /&gt;
&lt;br /&gt;
Mit dem Befehl &amp;quot;mv&amp;quot; werden Daten verschoben, folgendes gilt:&lt;br /&gt;
&lt;br /&gt;
 mv          dat1 dat2         &lt;br /&gt;
Die Datei dat1 wird in dat2 umbenannt&lt;br /&gt;
 mv          dat1 /ver1        &lt;br /&gt;
Die Datei dat1 wird nach /ver1 verschoben&lt;br /&gt;
&lt;br /&gt;
Die Parameter und ihre Bedeutung:&lt;br /&gt;
&lt;br /&gt;
      -i                      wenn eine Datei exisitiert wird vor dem&lt;br /&gt;
                              Überschreiben nachgefragt&lt;br /&gt;
      -v                      verbose (geschwätzig)&lt;br /&gt;
      -u                      nur neuere Daten werden bei Bedarf überschrieben&lt;br /&gt;
      -b                      wenn überschrieben werden soll, wird ein Backup&lt;br /&gt;
                              erstellt&lt;br /&gt;
      -S ENDUNG               das Backup bekommt die Endung ENDUNG&lt;br /&gt;
&lt;br /&gt;
===su Benutzer wechseln===&lt;br /&gt;
&lt;br /&gt;
 su -             &lt;br /&gt;
Wechsel zum Rootaccount, wie wenn dieser sich neu anmelden würde. (Bsp: su -)&lt;br /&gt;
&lt;br /&gt;
 su Benutzernamen &lt;br /&gt;
Wechsel der Identität zu Benutzer (gegebenenfalls Passwortabfrage)&lt;br /&gt;
&lt;br /&gt;
 su -c Kommando   &lt;br /&gt;
Kommando wird als rootaccount ausgeführt&lt;br /&gt;
&lt;br /&gt;
==Der Standard Editor vi==&lt;br /&gt;
Der vi ist der Standardeditor in der Unixwelt. Er ist in jedem Unix-Derivat&lt;br /&gt;
enthalten.&lt;br /&gt;
Der Editor hat zwar den schlechten Ruf umständlich zu bedienen zu sein, ist&lt;br /&gt;
jedoch sehr leistungsfähig und systemübergreifend verfügbar. Beim vi handelt es&lt;br /&gt;
sich um einen rein textorientierten Editor, der mittels eigener Kommandos&lt;br /&gt;
gesteuert wird.&lt;br /&gt;
&lt;br /&gt;
Der Editor VIM ist eine weitere Verbesserung von VI und leichter zu bedienen.&lt;br /&gt;
Und unter Ubuntu/Debian mit &amp;quot;apt-get install vim&amp;quot; zu installieren.&lt;br /&gt;
&lt;br /&gt;
===Starten des Editors:===&lt;br /&gt;
&lt;br /&gt;
Der Editorstart erfolgt einfach durch die Eingabe des Kommandos vi mit dem&lt;br /&gt;
Dateinamen der zu editierenden Datei als Parameter.&lt;br /&gt;
Beispiel:        &lt;br /&gt;
 vi sux.txt&lt;br /&gt;
&lt;br /&gt;
===Die Betriebsmodi des vi:===&lt;br /&gt;
&lt;br /&gt;
Ein Umstand, der dem vi den Ruf der komplizierten Bedienbarkeit zugetragen hat,&lt;br /&gt;
sind die unterschiedlichen Betriebsmodi des Editors. Genauer gesagt verfügt der&lt;br /&gt;
vi über drei Betriebsmodi:&lt;br /&gt;
&lt;br /&gt;
====Kommandomodus:====&lt;br /&gt;
&lt;br /&gt;
Innerhalb dieses Modus werden die eingegebenen Zeichen direkt als Befehle des&lt;br /&gt;
Editors interpretiert und ausgeführt. Dabei gibt es weder ein Bereitschaftszeichen&lt;br /&gt;
(Prompt) noch ein Echo (Ausgabe). Der Kommandomodus ist der Modus, in dem&lt;br /&gt;
sich der vi direkt nach seinem Start befindet.&lt;br /&gt;
&lt;br /&gt;
====Zeilenmodus oder Exmodus:====&lt;br /&gt;
&lt;br /&gt;
Dieser Modus ist der einzige Modus mit einem eigenen Bereitschaftszeichen,&lt;br /&gt;
nämlich dem Doppelpunkt (:). Das Prompt wird ebenso wie die Befehlsausgaben&lt;br /&gt;
in der Statuszeile angezeigt.&lt;br /&gt;
&lt;br /&gt;
====Eingabemodus:====&lt;br /&gt;
&lt;br /&gt;
Der Eingabemodus ist derjenige, in welchem der zu bearbeitende Text bearbeitet&lt;br /&gt;
werden kann. Alle hier eingegebenen Zeichen werden als Text für die aktuelle&lt;br /&gt;
Datei interpretiert. Zwischen den unterschiedlichen Modi kann jederzeit&lt;br /&gt;
gewechselt werden. Von Kommandomodus gelangen Sie durch mehere Wege in&lt;br /&gt;
den Eingabemodus. Man kann durch folgende Aktionen wechslen&lt;br /&gt;
&lt;br /&gt;
{| border=1 cellpadding=2&lt;br /&gt;
|i&lt;br /&gt;
|Text vor der aktuellen Cursorposition einfügen&lt;br /&gt;
|-&lt;br /&gt;
|I&lt;br /&gt;
|Text am Zeilenanfang einfügen&lt;br /&gt;
|-&lt;br /&gt;
|a&lt;br /&gt;
|Text hinter der aktuellen Cursorposition einfügen&lt;br /&gt;
|-&lt;br /&gt;
|A&lt;br /&gt;
|Text am Zeilenende einfügen&lt;br /&gt;
|-&lt;br /&gt;
|o&lt;br /&gt;
|Unterhalb der aktuellen Zeile eine neue Zeile einfügen&lt;br /&gt;
|-&lt;br /&gt;
|O&lt;br /&gt;
|Oberhalb der aktuellen Zeile eine neue Zeile einfügen&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Durch das Drücken der ESC - Taste gelangt man in den Kommandomodus zurück.&lt;br /&gt;
&lt;br /&gt;
Im Kommandomodus können Sie durch den Text navigieren und auch den Text&lt;br /&gt;
selbst bearbeiten, z.B ausschneiden, kopieren usw. Dazu sind einige Kommandos&lt;br /&gt;
nötig, von denen die wichtigsten im Folgenden erläutert werden:&lt;br /&gt;
&lt;br /&gt;
 xinux@zero:/$ vi iwas.txt&lt;br /&gt;
&lt;br /&gt;
[[Image:vim.jpg]]&lt;br /&gt;
&lt;br /&gt;
===Benutzen des Kommandomodus===&lt;br /&gt;
====Steuerung des Cursors durch den Text====&lt;br /&gt;
&lt;br /&gt;
Mittels folgender Kommandos bewegt sich der Cursor durch den Text:&lt;br /&gt;
&lt;br /&gt;
{| border=1 cellpadding=2&lt;br /&gt;
|h&lt;br /&gt;
|Cursor ein Zeichen nach links&lt;br /&gt;
|-&lt;br /&gt;
|l&lt;br /&gt;
|Cursor ein Zeichen nach rechts&lt;br /&gt;
|-&lt;br /&gt;
|k&lt;br /&gt;
|Cursor eine Zeile nach oben&lt;br /&gt;
|-&lt;br /&gt;
|j&lt;br /&gt;
|Cursor eine Zeile nach unten&lt;br /&gt;
|-&lt;br /&gt;
|w&lt;br /&gt;
|Cursor ein Wort nach rechts&lt;br /&gt;
|-&lt;br /&gt;
|b&lt;br /&gt;
|Cursor ein Wort nach links&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Alle diese Kommandos können mit einem vorgestellten Wiederholungsfaktor&lt;br /&gt;
arbeiten. Der Befehl 3w verschiebt demnach den Cursor um 3 Wörter nach rechts.&lt;br /&gt;
&lt;br /&gt;
====Angaben zur Positionierung====&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{| border=1 cellpadding=2&lt;br /&gt;
|STRG+U&lt;br /&gt;
|1⁄2 Bildschirmseite nach oben&lt;br /&gt;
|-&lt;br /&gt;
|STRG+D&lt;br /&gt;
|1⁄2 Bildschirmseite nach unten&lt;br /&gt;
|-&lt;br /&gt;
|STRG+B&lt;br /&gt;
|1 Bildschirmseite nach oben&lt;br /&gt;
|-&lt;br /&gt;
|STRG+F&lt;br /&gt;
|1 Bildschirmseite nach unten&lt;br /&gt;
|-&lt;br /&gt;
|/Ausdruck&lt;br /&gt;
|Sucht den Ausdruck (vorwärts) Weitersuchen mit n , N&lt;br /&gt;
|-&lt;br /&gt;
|?Ausdruck&lt;br /&gt;
|Sucht den Ausdurck (rückwärts) Weitersuchen mit n , N&lt;br /&gt;
|-&lt;br /&gt;
|0&lt;br /&gt;
|Zeilenanfang&lt;br /&gt;
|-&lt;br /&gt;
|$&lt;br /&gt;
|Zeilenende&lt;br /&gt;
|-&lt;br /&gt;
|w&lt;br /&gt;
|Nächstes Wort&lt;br /&gt;
|-&lt;br /&gt;
|b&lt;br /&gt;
|Vorheriges Wort&lt;br /&gt;
|-&lt;br /&gt;
|fc&lt;br /&gt;
|Auf das Zeichen c springen. c steht für ein beliebiges Zeichen&lt;br /&gt;
|-&lt;br /&gt;
|G&lt;br /&gt;
|Letzte Zeile der Datei&lt;br /&gt;
|-&lt;br /&gt;
|ng&lt;br /&gt;
|n-te Zeile der Datei&lt;br /&gt;
|-&lt;br /&gt;
|H&lt;br /&gt;
|Anfang der Bildschirmseite&lt;br /&gt;
|-&lt;br /&gt;
|L&lt;br /&gt;
|Ende der Bildschirmseite&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
====Befehle zur Textbearbeitung -&amp;gt; Was soll geschehen====&lt;br /&gt;
&lt;br /&gt;
{| Border=1 Cellpadding=2&lt;br /&gt;
|x&lt;br /&gt;
|Löscht Zeichen&lt;br /&gt;
|-&lt;br /&gt;
|d&lt;br /&gt;
|Löschen und in den Puffer laden&lt;br /&gt;
|-&lt;br /&gt;
|c&lt;br /&gt;
|Ändern&lt;br /&gt;
|-&lt;br /&gt;
|y&lt;br /&gt;
|In den Puffer laden&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
====Weitere wichtige Befehle:====&lt;br /&gt;
&lt;br /&gt;
{| Border=1 Cellpadding=2&lt;br /&gt;
|p&lt;br /&gt;
|Aus dem Puffer einfügen&lt;br /&gt;
|-&lt;br /&gt;
|u&lt;br /&gt;
|Undo, macht den letzten Befehl rückgängig&lt;br /&gt;
|-&lt;br /&gt;
|STRG+R&lt;br /&gt;
|Redo, macht den letzten Undo rückgängig&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
===Zeilen- oder Exmodus===&lt;br /&gt;
&lt;br /&gt;
Wie schon erwähnt wird der Zeilen oder Exmodus durch einen : eingeleitet.&lt;br /&gt;
Es folgen einige Beispiele.&lt;br /&gt;
&lt;br /&gt;
Befehle zum Speichern und Beenden:&lt;br /&gt;
&lt;br /&gt;
 :w          Schreibt Datei&lt;br /&gt;
 :w Datei2   Schreibt eine Kopie in Datei2&lt;br /&gt;
 :w !        Schreibt Datei (übergehe Schreibschutz)&lt;br /&gt;
 :w ! Datei2 Schreibt eine Kopie in Datei2 (übergehe Schreibschutz)&lt;br /&gt;
 :q          Schließe Datei&lt;br /&gt;
 :q!         Schließe Datei (verwerfe Änderungen)&lt;br /&gt;
 :wq         Schreibe Datei und beende Editor&lt;br /&gt;
 :wq!        Schreibe Datei und beende Editor (übergehe Schreibschutz)&lt;br /&gt;
 :q!         Schließe Datei (verwerfe Änderungen)&lt;br /&gt;
 :h          Hilfe anzeigen, durch drücken von :q Beenden der Hilfe&lt;br /&gt;
 :e Datei3   Editiere Datei3&lt;br /&gt;
 :e #        Editere vorhergehende Datei&lt;br /&gt;
 :1,3co9     Kopiere von der ersten bis zu dritten Zeile &lt;br /&gt;
             und füge den Inhalt unterhalb der neunte Zeile ein.&lt;br /&gt;
&lt;br /&gt;
Interaktionen mit Unix:&lt;br /&gt;
&lt;br /&gt;
 :r Datei4   Fügt Inhalt der Datei4 nach dem Cursor ein&lt;br /&gt;
 :r ! Befehl Fügt Ausgabe des Befehls nach dem Cursor ein&lt;br /&gt;
 :! Befehl   Führt den Befehl aus&lt;br /&gt;
 :sh         Starte Subshell -&amp;gt; mit exit kehrt man wieder zurück&lt;br /&gt;
             Eingabemodus zurück&lt;br /&gt;
&lt;br /&gt;
====Ersetzen von Textteilen====&lt;br /&gt;
&lt;br /&gt;
Die grundsätzliche Syntax lautet:&lt;br /&gt;
&lt;br /&gt;
 :[Zeilennummer,Zeilennummer]s/Muster/Ersetzung/[gc]&lt;br /&gt;
&lt;br /&gt;
 :s/worf/kirn/              der erste worf wird in der aktuellen Zeile durch kirn ersetzt&lt;br /&gt;
 :1,9s/worf/kirn/g          von der 1. bis zur 9. Zeile werden alle worf durch kirn ersetzt&lt;br /&gt;
 :1,$s/worf/kirn/           von der ersten bis zur letzten Zeile ersetze ersten worf durch&lt;br /&gt;
                            kirn&lt;br /&gt;
 :.,$s/worf/kirn/g          von der aktuellen bis zur letzten Zeile ersetze alle worf durch&lt;br /&gt;
                            kirn&lt;br /&gt;
 :1,.s/worf/kirn/c          von der 1. bis zur aktuellen Zeile ersetze worf durch kirn, frage&lt;br /&gt;
                            aber nach&lt;br /&gt;
 :1,$s/^worf/kirn/          von der ersten bis zur letzten Zeile ersetze worf am&lt;br /&gt;
                            Zeilenanfang durch kirn&lt;br /&gt;
 :4,$s/worf$/kirn/          von der 4. bis zur letzten Zeile ersetze worf am Zeilenende&lt;br /&gt;
                            durch kirn&lt;br /&gt;
 :1,$s/^#//                 lösche alle Kommentarzeichen&lt;br /&gt;
 :1,$s/^.orf/kirn/           ersetze alles was am Zeilenanfang ein beliebiges Zeichen hat&lt;br /&gt;
                            gefolgt von einem orf durch kirn&lt;br /&gt;
 :1,$s/^[A-Z]orf/kirn/g     suche nach einem Großbuchstaben am Anfang der Zeile&lt;br /&gt;
                            gefolgt von einem orf und ersetze durch kirn&lt;br /&gt;
 :1,$s/^M[ae][iy]e*r/kirn/  suche alles, was am Anfang der Zeile ein großes M enthält,&lt;br /&gt;
                            gefolgt von einem a oder e , gefolgt von einem i oder y ,&lt;br /&gt;
                            gefolgt von einem e , welches 0 oder N mal vorkommen kann,&lt;br /&gt;
                            gefolgt von einem r und ersetze es durch kirn&lt;br /&gt;
&lt;br /&gt;
==Reguläre Ausdrücke==&lt;br /&gt;
&lt;br /&gt;
{| Border=1 Cellpadding=2&lt;br /&gt;
|c&lt;br /&gt;
|Ein einzelner Buchstabe passt auf sich selbst&lt;br /&gt;
|-&lt;br /&gt;
|.&lt;br /&gt;
|Ein Punkt passt auf jedes Zeichen außer auf das Zeilenende&lt;br /&gt;
|-&lt;br /&gt;
|*&lt;br /&gt;
|Das dem Operator * vorangehende Muster kann 0 oder öfter vorkommen&lt;br /&gt;
|-&lt;br /&gt;
|^&lt;br /&gt;
|(Caret) passt auf den Zeilenanfang&lt;br /&gt;
|-&lt;br /&gt;
|$&lt;br /&gt;
|Passt auf das Zeilenende&lt;br /&gt;
|-&lt;br /&gt;
|\&lt;br /&gt;
|Das folgende Sonderzeichen wird entwertet&lt;br /&gt;
|-&lt;br /&gt;
|[...]&lt;br /&gt;
|Passt auf &amp;quot;genau&amp;quot; eins in [...] angebenen Zeichen&lt;br /&gt;
|-&lt;br /&gt;
|[^...]&lt;br /&gt;
|Passt auf &amp;quot;genau&amp;quot; ein Zeichen welches nicht in [...] angebenen ist&lt;br /&gt;
|-&lt;br /&gt;
|\&amp;lt;&lt;br /&gt;
|Passt auf den Wortanfang&lt;br /&gt;
|-&lt;br /&gt;
|\&amp;gt;&lt;br /&gt;
|Passt auf das Wortende&lt;br /&gt;
|-&lt;br /&gt;
|\+&lt;br /&gt;
|Das dem Operator \+ vorangehende Muster kann 1 oder öfter vorkommen&lt;br /&gt;
|-&lt;br /&gt;
|&amp;amp;&lt;br /&gt;
|Setzt das gefunden Suchmuster ein&lt;br /&gt;
|-&lt;br /&gt;
|\(...\)&lt;br /&gt;
|Speichert den Text auf den das Suchmuster passt zur späteren Verwendung&lt;br /&gt;
|-&lt;br /&gt;
|\n&lt;br /&gt;
|Setzt das vorangehende, mit \(...\) Gefundene wieder ein&lt;br /&gt;
|-&lt;br /&gt;
|(...)&lt;br /&gt;
|Gruppiert Auswahlmöglichkeiten&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;nowiki&amp;gt;|&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
|Trennt Auswahlmöglichkeiten&lt;br /&gt;
|-&lt;br /&gt;
|\b&lt;br /&gt;
|Passt auf den Anfang oder das Ende eines Wortes&lt;br /&gt;
|-&lt;br /&gt;
|\B&lt;br /&gt;
|Symbolisiert den Raum innerhalb eines Wortes&lt;br /&gt;
|-&lt;br /&gt;
|\w&lt;br /&gt;
|Passt auf alle alphanumerischen Zeichen [A-Za-z0-9]&lt;br /&gt;
|-&lt;br /&gt;
|\W&lt;br /&gt;
|Passt auf alle nichtalphanumerischen Zeichen [^A-Za-z0-9]&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Die Rangfolge der Operatoren(von der höchsten zur niedrigsten)&lt;br /&gt;
:(, ), ?, *, + | .&lt;br /&gt;
&lt;br /&gt;
Die anderen Operatoren sind mit den anderen Buchstaben gleichrangig.&lt;br /&gt;
&lt;br /&gt;
===Beispiel zum Suchen===&lt;br /&gt;
&lt;br /&gt;
 Suchmuster               Passt auf&lt;br /&gt;
 ^Tuxer                   Tuxer am Zeilenanfang&lt;br /&gt;
 [tT]uxer                 Tuxer oder tuxer&lt;br /&gt;
 80[23]?86                8086, 80286 oder 80386&lt;br /&gt;
&lt;br /&gt;
===grep===&lt;br /&gt;
&lt;br /&gt;
Mit grep ist es möglich, in Dateien nach regulären Ausdrücken zu suchen. Wenn&lt;br /&gt;
eine Übereinstimmung gefunden wird, wird die komplette Zeile auf die&lt;br /&gt;
Standardausgabe geschrieben. grep kann auch von STDIN lesen.Es ist&lt;br /&gt;
empfehlenswert, sich anzugwöhnen ,das Suchmuster in Anführungszeichen zu&lt;br /&gt;
schreiben. Es gibt 3 Arten fgrep = fastgrep , grep und egrep egrep&lt;br /&gt;
&lt;br /&gt;
Beispiel:&lt;br /&gt;
&lt;br /&gt;
 root@zero:~# cat text&lt;br /&gt;
 quatsch&lt;br /&gt;
 quatsch&lt;br /&gt;
 quatsch&lt;br /&gt;
 wichtig&lt;br /&gt;
 quatsch&lt;br /&gt;
 root@zero:~# grep wichtig text&lt;br /&gt;
 wichtig&lt;br /&gt;
 root@zero:~# &lt;br /&gt;
&lt;br /&gt;
 -c                   meldet nur die Gesamtzahl der Fundstellen&lt;br /&gt;
 -v                   zeigt nur Zeilen, die »Ausdruck« nicht enthalten&lt;br /&gt;
 -i                   ignoriert Groß- und Kleinschreibung&lt;br /&gt;
 -l                    meldet nur Dateinamen mit Fundstellen&lt;br /&gt;
 -n                   listet Zeilennummern zu jeder Fundstelle&lt;br /&gt;
 -f                   Dateiname »Dateiname« enthält die Such-Ausdrücke&lt;br /&gt;
 -E                   ist ein erweiterter regulärer Ausdruck (egrep)&lt;br /&gt;
 -F                   (Muster, Ausdruck) ist ein Muster (String) (fgrep)&lt;br /&gt;
 -b                   listet auch die Position der Fundstellen&lt;br /&gt;
 -C    Anzahl         Anzahl von Zeilen werden nach der Fundstelle ausgegeben&lt;br /&gt;
 -B    Anzahl         Anzahl von Zeilen werden vor der Fundstelle ausgegeben&lt;br /&gt;
 -r                   Durchsucht Verzeichnisse rekursiv&lt;br /&gt;
&lt;br /&gt;
==Useridendifikation==&lt;br /&gt;
===/etc/passwd===&lt;br /&gt;
====Beschreibung====&lt;br /&gt;
passwd ist eine ASCII-Datei, die eine Liste der Benutzer des Systems und deren&lt;br /&gt;
Passwörter enthält. Die Passwortdatei sollte für alle Benutzer lesbar sein, was für&lt;br /&gt;
dieVerschlüsselung notwendig ist; aber nur vom Superuser beschreibbar. Wenn&lt;br /&gt;
Sie eine neue Kennung einrichten, lassen Sie das Passwort-Feld in der Datei frei&lt;br /&gt;
und benutzen Sie passwd(1), um dem System ein Passwort für die neue Kennung&lt;br /&gt;
mitzuteilen.&lt;br /&gt;
&lt;br /&gt;
Die Datei /etc/passwd enthält einen Eintrag pro Zeile mit dem Format:&lt;br /&gt;
login_name:passwd:UID:GID:user_name:directory:shell&lt;br /&gt;
====Die Bedeutung der Felder:====&lt;br /&gt;
# login_name Kennung des Benutzers auf dem System.&lt;br /&gt;
# password   Hier steht bei Shadowsystemen ein x. Die Passwörter sind in der Datei /etc/shadow&lt;br /&gt;
# UID        Die numerische Benutzernummer.&lt;br /&gt;
#  GID        Die numerische Gruppennummer des Benutzers.&lt;br /&gt;
# user_name Ein optionales Kommentarfeld, oft benutzt für den vollen Namen des Benutzers und weitere Informationen (Telefon, Raum-Nummer etc.).&lt;br /&gt;
# directory  Das Heimatverzeichnis $HOME des Benutzers.&lt;br /&gt;
# shell      Das Programm, das beim Einloggen gestartet werden soll (falls nicht nötig, benutzen Sie /bin/bash).&lt;br /&gt;
&lt;br /&gt;
===/etc/group===&lt;br /&gt;
====Beschreibung====&lt;br /&gt;
etc/group ist eine ASCII Datei, die Gruppen definiert, zu denen Benutzer&lt;br /&gt;
gehören. Es gibt nur einen Eintrag pro Zeile; jede Zeile hat folgendes Format:&lt;br /&gt;
         GruppenName:Passwort:GruppenKennung:BenutzerListe&lt;br /&gt;
Beschreibung der Felder:&lt;br /&gt;
#     GruppenName      Die Bezeichnung der Gruppe.&lt;br /&gt;
#     Passwort         Das (verschlüsselte) Gruppen-Passwort. Wenn dieses Feld leer ist, wird kein Passwort benötigt.&lt;br /&gt;
#     GruppenKennung Die numerische Identifikation der Gruppe.&lt;br /&gt;
#     BenutzerListe    Alle Namen der Mitglieder, getrennt durch Kommas.&lt;br /&gt;
&lt;br /&gt;
===/etc/shadow===&lt;br /&gt;
====Beschreibung====&lt;br /&gt;
shadow beinhaltet Informationen zu den verschlüsselten Passwörten, zu den&lt;br /&gt;
Benutzerzugängen und weitere Informationen zur Laufzeit der Passwörter.&lt;br /&gt;
 Name:Passwort:Letzte Änderung:Mintage:Maxtage:Warntage:Inaktiv:Ablauf&lt;br /&gt;
#    Der Loginname&lt;br /&gt;
#    verschlüsseltes Passwort &lt;br /&gt;
&amp;lt;nowiki&amp;gt;*&amp;lt;/nowiki&amp;gt; bedeutet Benutzer kann sich nicht einlogen&lt;br /&gt;
! bedeutet Benutzer hat kein Passwort gesetzt&lt;br /&gt;
#    Tage seit dem 1 Januar 1970 an dem das Passwort letztmals geändert wurde&lt;br /&gt;
#    Tage, die das Passwort behalten werden muss, bevor es wieder geändert werden kann&lt;br /&gt;
#     Die Anzahl der Tage, nach denen der Benutzer das Passwort wieder ändern muss&lt;br /&gt;
#    Anzahl der Tage bevor das Passwort abläuft und der Benutzer gewarnt wird&lt;br /&gt;
#    Wenn der Zugang diese Anzahl von Tagen nicht benutzt wird, wird der Zugang gesperrt&lt;br /&gt;
#    Tag seit dem 1 Januar 1970, an dem der Zugang gesperrt wird&lt;br /&gt;
#    Reserviertes Feld&lt;br /&gt;
&lt;br /&gt;
Die Datei sollte aus Sicherheitgründen nicht für einen normalen Benutzer lesbar&lt;br /&gt;
sein.&lt;br /&gt;
&lt;br /&gt;
==Programme zur Userverwaltung==&lt;br /&gt;
===useradd===&lt;br /&gt;
User anlegen&lt;br /&gt;
 root@zero:~# useradd -m -u 1011 -g users -G admin -d /home/erwin -s /bin/bash -c &amp;quot;Erwin Lehman&amp;quot;  erwin&lt;br /&gt;
{| border=1 cellpadding=2&lt;br /&gt;
|&amp;quot;-m&amp;quot;&lt;br /&gt;
|Lege Homedirectory an&lt;br /&gt;
|-&lt;br /&gt;
|&amp;quot;-u 1011&amp;quot;&lt;br /&gt;
|Userid wird zugeordnet&lt;br /&gt;
|-&lt;br /&gt;
|&amp;quot;-g users&amp;quot;&lt;br /&gt;
|Primäre Gruppe wird zugeordnet&lt;br /&gt;
|-&lt;br /&gt;
|&amp;quot;-G admin&amp;quot;&lt;br /&gt;
|Sekunbdäre Gruppe wird zugeordnet&lt;br /&gt;
|-&lt;br /&gt;
|&amp;quot;-d /home/erwin/&amp;quot;&lt;br /&gt;
|Name des Homedirectory&lt;br /&gt;
|-&lt;br /&gt;
|&amp;quot;-s /bin/bash&amp;quot;&lt;br /&gt;
|Bash wird zugeordnet&lt;br /&gt;
|- &lt;br /&gt;
|&amp;quot;-c Erwin Lehman&amp;quot;&lt;br /&gt;
|Kommentarfeld&lt;br /&gt;
|-&lt;br /&gt;
|&amp;quot;erwin&amp;quot; &lt;br /&gt;
|Name des Users&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Defaulteinstellungen anzeigen&lt;br /&gt;
 root@zero:~# useradd -D&lt;br /&gt;
 GROUP=100&lt;br /&gt;
 HOME=/home&lt;br /&gt;
 INACTIVE=-1&lt;br /&gt;
 EXPIRE=&lt;br /&gt;
 SHELL=/bin/sh&lt;br /&gt;
 SKEL=/etc/skel&lt;br /&gt;
 CREATE_MAIL_SPOOL=no&lt;br /&gt;
&lt;br /&gt;
Defaulteinstellungen ändern&lt;br /&gt;
 useradd -D -s /bin/bash&lt;br /&gt;
&lt;br /&gt;
Konfigurationsdatei&lt;br /&gt;
 root@zero:~# cat /etc/default/useradd &lt;br /&gt;
 SHELL=/bin/bash&lt;br /&gt;
 GROUP=100&lt;br /&gt;
 HOME=/home&lt;br /&gt;
 INACTIVE=-1&lt;br /&gt;
 EXPIRE=&lt;br /&gt;
 SKEL=/etc/skel&lt;br /&gt;
 CREATE_MAIL_SPOOL=no&lt;br /&gt;
&lt;br /&gt;
===usermod===&lt;br /&gt;
User modifizieren&lt;br /&gt;
 root@zero:~# usermod -l fritz -s /bin/sh -G admin,video erwin&lt;br /&gt;
{| border=1 cellpadding=2&lt;br /&gt;
|&amp;quot;-l fritz&amp;quot;&lt;br /&gt;
|Neuer Username&lt;br /&gt;
|-&lt;br /&gt;
|&amp;quot;-s /bin/sh&amp;quot;&lt;br /&gt;
|Neue Shell&lt;br /&gt;
|-&lt;br /&gt;
|&amp;quot;-G admin, video&amp;quot;&lt;br /&gt;
|Sekunbdäre Gruppen werden zugeordnet&lt;br /&gt;
|-&lt;br /&gt;
|&amp;quot;erwin&amp;quot; &lt;br /&gt;
|Name des Users&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
===userdel===&lt;br /&gt;
User inklusive Homedirectory löschen&lt;br /&gt;
 root@zero:~# userdel -r fritz&lt;br /&gt;
&lt;br /&gt;
===passwd===&lt;br /&gt;
Rootpasswort ändern&lt;br /&gt;
 root@zero:~# passwd &lt;br /&gt;
 Geben Sie ein neues UNIX Passwort ein:'''sysadm''' &lt;br /&gt;
 Geben Sie das neue UNIX Passwort erneut ein:'''sysadm''' &lt;br /&gt;
 passwd: Passwort erfolgreich geändert&lt;br /&gt;
&lt;br /&gt;
Passwort von tux ändern&lt;br /&gt;
 root@zero:~# passwd tux&lt;br /&gt;
 Geben Sie ein neues UNIX Passwort ein:'''suxer''' &lt;br /&gt;
 Geben Sie das neue UNIX Passwort erneut ein:'''suxer'''&lt;br /&gt;
 passwd: Passwort erfolgreich geändert&lt;br /&gt;
&lt;br /&gt;
Minimale und Maximale Gültigkeit des Passwortes von tux festlegen&lt;br /&gt;
 root@zero:~# passwd -n 5 -x 120 tux&lt;br /&gt;
&lt;br /&gt;
===groupadd===&lt;br /&gt;
 root@zero:~# groupadd -f -g 2001 xinuxer&lt;br /&gt;
{| border=1 cellpadding=2&lt;br /&gt;
|&amp;quot;-f&amp;quot;&lt;br /&gt;
|Überschreibe bestehende Gruppe&lt;br /&gt;
|-&lt;br /&gt;
|&amp;quot;-g 2001&amp;quot;&lt;br /&gt;
|GID der Gruppe&lt;br /&gt;
|-&lt;br /&gt;
|&amp;quot;xinuxer&amp;quot; &lt;br /&gt;
|Name des Gruppe&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==chmod==&lt;br /&gt;
Die Syntax des Befehls chmod lautet:&lt;br /&gt;
&lt;br /&gt;
'''chmod''' WerWieWas [,WerWieWas,.....] Dateiliste&lt;br /&gt;
&lt;br /&gt;
oder&lt;br /&gt;
&lt;br /&gt;
'''chmod''' Oktalzahl Dateiliste&lt;br /&gt;
&lt;br /&gt;
Durch WerWieWas bzw. Oktalzahl wird die Rechtetabelle definiert. Innerhalb von&lt;br /&gt;
WerWieWas darf es kein Leerzeichen geben. Wer bezeichnet den Benutzerkreis,&lt;br /&gt;
dem man Rechte gibt, Wie die Art, in der die Rechte gegeben werden und Was die&lt;br /&gt;
Rechte als solche. Im einzelnen können folgende Kürzel benutzt werden:&lt;br /&gt;
&lt;br /&gt;
Für Wer kann eines der folgenden Kürzel oder eine Kombination davon stehen:&lt;br /&gt;
 u                   (user) Rechte für den Dateibesitzer&lt;br /&gt;
 g                   (group) Rechte für die Gruppe&lt;br /&gt;
 o                   (others) Rechte für alle anderen Benutzer&lt;br /&gt;
 a                   (all) Rechte für alle Benutzer&lt;br /&gt;
Für Wie steht eines der folgenden Kürzel:&lt;br /&gt;
 +                   Die Rechte werden zu den vorhandenen zusätzlich vergeben&lt;br /&gt;
 -                   Die im Folgenden genannten Rechte werden entzogen&lt;br /&gt;
 =                   Die im Folgenden genannten Rechte ersetzen die bisherigen&lt;br /&gt;
Für Was steht eines der folgenden Kürzel:&lt;br /&gt;
 r                   (read) lesen&lt;br /&gt;
 w                   (write) schreiben&lt;br /&gt;
 x                   (execute) ausführen&lt;br /&gt;
oder diese Sonderformen&lt;br /&gt;
 s                   (usersbit) Programm läuft unter der UID des Besitzers&lt;br /&gt;
 s                   (groupsbit)Programm läuft unter der GID des GRUPPE&lt;br /&gt;
 t                   (stickybit) Dateien im Verzeichnis darf nur Besitzer löschen&lt;br /&gt;
&lt;br /&gt;
===Beispiel===&lt;br /&gt;
Setze für alle Schreib- und Leserecht&lt;br /&gt;
 xinux@zero:~$ chmod a=rw test &lt;br /&gt;
 xinux@zero:~$ ls -l test &lt;br /&gt;
 -rw-rw-rw- 1 xinux xinux 0 2009-06-16 12:01 test&lt;br /&gt;
 xinux@zero:~$ &lt;br /&gt;
&lt;br /&gt;
Erteile Besitzer Ausführungsrecht&lt;br /&gt;
 xinux@zero:~$ chmod u+x test ; ls -l test &lt;br /&gt;
 -rwxrw-rw- 1 xinux xinux 0 2009-06-16 12:01 test&lt;br /&gt;
 xinux@zero:~$ &lt;br /&gt;
&lt;br /&gt;
===chmod oktale Schreibweise===&lt;br /&gt;
 Specialrights        User           Group         Other&lt;br /&gt;
 usbit gsbit sticky    r    w   x     r   w   x     r   w   x&lt;br /&gt;
   1     1      1      1    1   1     1   1   1     1   1   1&lt;br /&gt;
   0     0      0      0    0   0     0   0   0     0   0   0&lt;br /&gt;
 Oktale Wertigkeit pro Recht&lt;br /&gt;
   4     2       1     4    2   1     4   2   1     4   2   1&lt;br /&gt;
&lt;br /&gt;
===Beispiele===&lt;br /&gt;
 xinux@zero:~$ chmod 751 test ; ls -l test&lt;br /&gt;
 -rwxr-x--x 1 xinux xinux 0 2009-06-16 12:01 test&lt;br /&gt;
 xinux@zero:~$ &lt;br /&gt;
&lt;br /&gt;
 xinux@zero:~$ chmod 4770 test ; ls -l test&lt;br /&gt;
 -rwsrwx--- 1 xinux xinux 0 2009-06-16 12:01 test&lt;br /&gt;
 xinux@zero:~$ &lt;br /&gt;
&lt;br /&gt;
 xinux@zero:~$ chmod 0 test ; ls -l test &lt;br /&gt;
 ---------- 1 xinux xinux 0 2009-06-16 12:01 test&lt;br /&gt;
&lt;br /&gt;
===chmod Optionen===&lt;br /&gt;
 -c   (changes) es werden nur die Dateien angezeigt, deren Zugriffsrechte tatsächlich verändert werden&lt;br /&gt;
 -f   (silent, quiet) Fehlermeldungen wegen fehlgeschlagener Änderungsversuche werden unterdrückt&lt;br /&gt;
 -v   (verbose) alle Aktionen werden angezeigt&lt;br /&gt;
 -R   (recursive) die Zugriffsrechte aller Dateien in den Unterverzeichnissen werden ebenfalls geändert&lt;br /&gt;
&lt;br /&gt;
Theoretisch sind alle Kombinationen der Zugriffsrechte denkbar, aber der&lt;br /&gt;
Eigentümer einer Datei darf diese immer lesen, selbst wenn das Lesebit nicht&lt;br /&gt;
gesetzt ist. Genauso macht es wenig Sinn, eine gewöhnliche Textdatei als&lt;br /&gt;
ausführbar zu setzen; die Shell wird damit nichts anfangen können. Ein x für ein&lt;br /&gt;
Verzeichnis gibt an, dass in dieses gewechselt werden kann.&lt;br /&gt;
&lt;br /&gt;
Rechte sind verbindlich&lt;br /&gt;
&lt;br /&gt;
Interessant ist auch ein Konstrukt folgender Art&lt;br /&gt;
 -rwx---rwx&lt;br /&gt;
&lt;br /&gt;
das angibt, dass mit der Datei alles angestellt werden kann, außer durch Nutzer der&lt;br /&gt;
Gruppe. Versucht irgend jemand, der nicht der Gruppe des Eigentümers angehört,&lt;br /&gt;
die Datei zu modifizieren, wird ihm dies gelingen, einem Gruppenmitglied bleibt&lt;br /&gt;
dies versagt, obwohl er ja gleichzeitig ein &amp;quot;Anderer&amp;quot; ist. D.h. die Rechte der&lt;br /&gt;
Gruppe sind verbindlicher, als die Rechte der anderen!&lt;br /&gt;
&lt;br /&gt;
===Bedeutungen der Zugriffsarten===&lt;br /&gt;
====Dateien====&lt;br /&gt;
* r: Der Inhalt der Datei kann gelesen und damit auch kopiert werden. &lt;br /&gt;
 root@zero:~# cat test&lt;br /&gt;
 Dies ist eine Testdatei&lt;br /&gt;
  &lt;br /&gt;
 root@zero:~# cp test backup&lt;br /&gt;
&lt;br /&gt;
* w: Der Inhalt der Datei darf verändert werden. Ob die Datei gelöscht werden kann ist&lt;br /&gt;
keine Eigenschaft der Datei, sondern des Verzeichnisses, indem sich die Datei befindet.&lt;br /&gt;
 root@zero:~# cat &amp;gt; test&lt;br /&gt;
 Hier steht jetzt was anderes&lt;br /&gt;
 ^C&lt;br /&gt;
 root@zero:~# cat test&lt;br /&gt;
 Hier steht jetzt was anderes&lt;br /&gt;
  &lt;br /&gt;
 xinux@zero:~$ ls -ld verzeichnis/&lt;br /&gt;
 dr-xr-xr-x 2 xinux xinux 4096 2009-06-18 11:16 verzeichnis/&lt;br /&gt;
 xinux@zero:~/verzeichnis$ rm text&lt;br /&gt;
 rm: Entfernen von „text“ nicht möglich: Permission denied&lt;br /&gt;
&lt;br /&gt;
* x: Ausführrecht für Programme und Skripte&lt;br /&gt;
 xinux@zero:~$ ./programm&lt;br /&gt;
 -bash: ./programm: Permission denied&lt;br /&gt;
 xinux@zero:~$ chmod +x programm&lt;br /&gt;
 xinux@zero:~$ ./programm&lt;br /&gt;
 Test&lt;br /&gt;
  test&lt;br /&gt;
&lt;br /&gt;
====Verzeichnisse====&lt;br /&gt;
* r: Die Einträge in dem Verzeichnis sind lesbar.&lt;br /&gt;
Leserecht von verzeichnis/ entziehen&lt;br /&gt;
 xinux@zero:~$ chmod a-r verzeichnis/&lt;br /&gt;
 xinux@zero:~$ ls verzeichnis/&lt;br /&gt;
 ls: Öffnen von Verzeichnis verzeichnis/ nicht möglich: Permission denied&lt;br /&gt;
Leserecht für Benutzer und Gruppe vergeben&lt;br /&gt;
 xinux@zero:~$ chmod a+r verzeichnis/&lt;br /&gt;
 xinux@zero:~$ ls verzeichnis/&lt;br /&gt;
 text&lt;br /&gt;
&lt;br /&gt;
* w: Die Einträge in dem Verzeichnis können geändert werden. &lt;br /&gt;
Neue Datei erstellen&lt;br /&gt;
 xinux@zero:~$ touch neu&lt;br /&gt;
 xinux@zero:~$ ls neu&lt;br /&gt;
 neu&lt;br /&gt;
&lt;br /&gt;
Datei löschen&lt;br /&gt;
 xinux@zero:~$ rm neu&lt;br /&gt;
 xinux@zero:~$ ls neu&lt;br /&gt;
 ls: Zugriff auf neu nicht möglich: No such file or directory&lt;br /&gt;
&lt;br /&gt;
* x: Der Name des Verzeichnisses kann in einem Pfadnamen erscheinen.&lt;br /&gt;
Verzeichnis ohne x Recht&lt;br /&gt;
 xinux@zero:~$ chmod a-x verzeichnis/&lt;br /&gt;
Wechseln in Verzeichnis mangels x-Recht nicht möglich&lt;br /&gt;
 xinux@zero:~$ cd verzeichnis/&lt;br /&gt;
 -bash: cd: verzeichnis/: Permission denied&lt;br /&gt;
x-Recht vergeben&lt;br /&gt;
 xinux@zero:~$ chmod a+x verzeichnis/&lt;br /&gt;
damit Wechsel in Verzeichnis möglich&lt;br /&gt;
 xinux@zero:~$ cd verzeichnis/&lt;br /&gt;
 xinux@zero:~/verzeichnis$ pwd&lt;br /&gt;
 /home/xinux/verzeichnis&lt;br /&gt;
&lt;br /&gt;
====umask====&lt;br /&gt;
Neue Dateien und Verzeichnisse werden mit ein und denselben Zufriffsrechten erzeugt.&lt;br /&gt;
 xinux@zero:~$ mkdir text&lt;br /&gt;
 xinux@zero:~$ touch textdat&lt;br /&gt;
 xinux@zero:~$ ls -ld text*&lt;br /&gt;
 drwxr-xr-x 2 xinux xinux 4096 2009-06-18 11:37 text&lt;br /&gt;
 -rw-r--r-- 1 xinux xinux    0 2009-06-18 11:37 textdat&lt;br /&gt;
&lt;br /&gt;
Zuständig für dieses Verhalten ist die sogenannte umask, die oft in der Datei&lt;br /&gt;
/etc/profile auf den Wert 022 voreingestellt ist. Zusätzlich wird noch eine&lt;br /&gt;
Maximalmaske benötigt, die sich für Verzeichnisse und andere Dateien&lt;br /&gt;
unterscheidet. Die bei der Erzeugung gesetzten Rechte entstehen nun, indem von&lt;br /&gt;
der Maximalmaske der durch die umask vorgegebene Wert subtrahiert wird:&lt;br /&gt;
&lt;br /&gt;
{| border=1 cellpadding=2&lt;br /&gt;
!&lt;br /&gt;
! Dateien&lt;br /&gt;
! Verzeichnisse&lt;br /&gt;
|-&lt;br /&gt;
| Systemvorgabe&lt;br /&gt;
| 666&lt;br /&gt;
| 777&lt;br /&gt;
|-&lt;br /&gt;
| -umask&lt;br /&gt;
| 022&lt;br /&gt;
| 022&lt;br /&gt;
|-&lt;br /&gt;
| Ergebnis&lt;br /&gt;
| 644&lt;br /&gt;
| 755&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
 xinux@zero:~$ grep umask /etc/profile&lt;br /&gt;
 umask 022&lt;br /&gt;
&lt;br /&gt;
==Gruppenzugehörigkeit==&lt;br /&gt;
===newgrp===&lt;br /&gt;
Ändert die Gruppenzugehörigkeit eines Benutzers auf die angegebene Gruppe. Wenn keine Gruppe angegeben wird, wird die &lt;br /&gt;
Anmeldegruppe des Benutzers verwendet. Die neue Gruppe wird anschließend fü Zugriffskontrollen verwendet.&lt;br /&gt;
&lt;br /&gt;
 newgrp Gruppenname&lt;br /&gt;
&lt;br /&gt;
 root@zero:~# newgrp hacker&lt;br /&gt;
 root@zero:~# id&lt;br /&gt;
 uid=0(root) gid=1006(hacker) Gruppen=0(root),1006(hacker)&lt;br /&gt;
&lt;br /&gt;
===chgrp===&lt;br /&gt;
Verändert die Besitzugehörigkeit zu der angegebenen Gruppe&lt;br /&gt;
&lt;br /&gt;
 chgrp [Optionen] Gruppe Datei(en)&lt;br /&gt;
&lt;br /&gt;
Optionen:&lt;br /&gt;
 -c Zeigt Veränderungen an&lt;br /&gt;
 -f Unterdrückt die meisten Fehlermeldungen&lt;br /&gt;
 -R Verändert Dateien und Verzeichnisse rekursiv&lt;br /&gt;
 -v Gibt geschwätzige Ausgabe aus.&lt;br /&gt;
&lt;br /&gt;
 root@zero:~# ls -l&lt;br /&gt;
 ...&lt;br /&gt;
 d-wx--x--x  3 root root 4096 2009-06-18 13:34 verzeichnis&lt;br /&gt;
 &lt;br /&gt;
 root@zero:~# chgrp -R xinux verzeichnis/&lt;br /&gt;
 root@zero:~# ls -l&lt;br /&gt;
 ...&lt;br /&gt;
 d-wx--x--x  3 root xinux 4096 2009-06-18 13:34 verzeichnis&lt;br /&gt;
&lt;br /&gt;
 xinux@zero:~$ cd /root/verzeichnis/&lt;br /&gt;
 xinux@zero:/root/verzeichnis$ pwd&lt;br /&gt;
 /root/verzeichnis&lt;br /&gt;
&lt;br /&gt;
===chown===&lt;br /&gt;
Ändert den Eigentümer von einer oder mehreren Dateien in den angegebenen Benutzer. &lt;br /&gt;
chown erlaubt ebenfalls das Ändern der Gruppeneigentümreschaft. Nur der aktuelle Eigentümer einer&lt;br /&gt;
Datei oder der Superuser (root) darf die Eigentumsverhältnisse ändern.&lt;br /&gt;
&lt;br /&gt;
 chown [Optionen] Benutzer(:Gruppe) Dateien&lt;br /&gt;
&lt;br /&gt;
Optionen:&lt;br /&gt;
 -c Gibt Informationen über die veränderten Dateien aus&lt;br /&gt;
 --dereference Symbolischen Links folgen&lt;br /&gt;
 -v Gibt Informationen über alle Dateien aus, die chown zu ändern versucht, egal, ob die Änderung erfolgt ist oder nicht&lt;br /&gt;
 -R Geht rekursiv durch alle Unterverzeichnisse und führt die Änderungen durch. &lt;br /&gt;
&lt;br /&gt;
 root@zero:~# chown -R xinux.xinux verzeichnis/&lt;br /&gt;
 root@zero:~# ls -l&lt;br /&gt;
 insgesamt 12&lt;br /&gt;
 drwx------ 13 root  root  4096 2009-04-21 15:11 profile&lt;br /&gt;
 --w-------  1 root  root     0 2009-06-18 11:13 test&lt;br /&gt;
 -rw-r--r--  1 root  root    40 2009-06-18 12:04 text&lt;br /&gt;
 drwxrwx--x  3 xinux xinux 4096 2009-06-18 13:39 verzeichnis&lt;br /&gt;
 &lt;br /&gt;
 root@zero:~# chown -R -c xinux.xinux verzeichnis/&lt;br /&gt;
 &lt;br /&gt;
 root@zero:~# chown -R -v xinux.xinux verzeichnis/&lt;br /&gt;
 Eigentümer von „verzeichnis/01“ als xinux:xinux erhalten&lt;br /&gt;
 Eigentümer von „verzeichnis/test“ als xinux:xinux erhalten&lt;br /&gt;
 Eigentümer von „verzeichnis/“ als xinux:xinux erhalten&lt;br /&gt;
&lt;br /&gt;
==Eingabe/Ausgabe==&lt;br /&gt;
Standardeingabe (0): Laufende Programme erwarten von hier ihre Eingaben (normalerweise handelt es sich um die Tastatur).&lt;br /&gt;
&lt;br /&gt;
Standardausgabe (1): Programme schreiben auf diese ihre Ausgaben (Bildschirm).&lt;br /&gt;
&lt;br /&gt;
Standardfehlerausgabe (2) : Fehlerausgaben landen hier (Bildschirm, aber nur die aktive Konsole).&lt;br /&gt;
&lt;br /&gt;
[[Bild:std.jpg]]&lt;br /&gt;
&lt;br /&gt;
===cat===&lt;br /&gt;
Das Programm cat liest von STDIN und gibt es STDOUT wieder aus&lt;br /&gt;
&lt;br /&gt;
Einlesen der Datei text&lt;br /&gt;
 root@zero:~# cat &amp;lt; text&lt;br /&gt;
 wichtig&lt;br /&gt;
&lt;br /&gt;
Schreiben in die Datei text, dies überschreibt den bisherigen Inhalt der Datei&lt;br /&gt;
 root@zero:~# cat &amp;gt; text&lt;br /&gt;
 sogar noch wichtiger &lt;br /&gt;
 &lt;br /&gt;
Ausgeben der Datei text&lt;br /&gt;
 root@zero:~# cat text &lt;br /&gt;
 sogar noch wichtiger&lt;br /&gt;
&lt;br /&gt;
Lesen aus der Datei text und schreiben in die Datei neuertext&lt;br /&gt;
 root@zero:~# cat &amp;lt; text &amp;gt; neuertext&lt;br /&gt;
 root@zero:~# cat neuertext&lt;br /&gt;
 sogar noch wichtiger&lt;br /&gt;
&lt;br /&gt;
Anhängen der Ausgabe von date an die Datei neuertext&lt;br /&gt;
 root@zero:~# date &amp;gt;&amp;gt; neuertext&lt;br /&gt;
 root@zero:~# cat neuertext&lt;br /&gt;
 sogar noch wichtiger&lt;br /&gt;
 Do 18. Jun 14:08:58 CEST 2009&lt;br /&gt;
&lt;br /&gt;
Umleiten des Standardfehlerkanals nach error&lt;br /&gt;
 root@zero:~# rm sux 2&amp;gt; error&lt;br /&gt;
 root@zero:~# more error&lt;br /&gt;
 rm: Entfernen von „sux“ nicht möglich: No such file or directory&lt;br /&gt;
&lt;br /&gt;
===Umleitungen===&lt;br /&gt;
Nacheinander auszuführende Kommandos&lt;br /&gt;
 root@zero:~# pwd; date&lt;br /&gt;
 /root&lt;br /&gt;
 Do 18. Jun 14:13:05 CEST 2009&lt;br /&gt;
 &lt;br /&gt;
Übergeben der Ausgabe von tail als Eingabe von grep mit Hilfe der Pipe &amp;quot;|&amp;quot;&lt;br /&gt;
 root@zero:~# tail /var/log/auth.log | grep xinux&lt;br /&gt;
 Jun 18 13:52:33 zero nss_wins[11433]: pam_unix(login:session): session closed for user xinux&lt;br /&gt;
&lt;br /&gt;
Übergeben der letzten 100 Zeilen von syslog als Eingabe von grep&lt;br /&gt;
 root@zero:~# tail /var/log/syslog -n 100 | grep error&lt;br /&gt;
 Jun 18 09:30:54 zero kernel: [154384.692135] end_request: I/O error, dev fd0, sector 0&lt;br /&gt;
 Jun 18 09:30:54 zero kernel: [154384.712137] end_request: I/O error, dev fd0, sector 0&lt;br /&gt;
&lt;br /&gt;
==tr==&lt;br /&gt;
tr ist ein Programm um Zeichen zu übersetzen. Dies betrifft nur die Ausgabe, die Datei selbst bleibt unverändert.&lt;br /&gt;
&lt;br /&gt;
Ersetzt Kleinbuchstaben durch Großbuchstaben aus der Datei text&lt;br /&gt;
 root@zero:~# tr &amp;quot;a-z&amp;quot; &amp;quot;A-Z&amp;quot; &amp;lt; text&lt;br /&gt;
 SOGAR NOCH WICHTIGER&lt;br /&gt;
 123&lt;br /&gt;
 34&lt;br /&gt;
 4711&lt;br /&gt;
 TEST&lt;br /&gt;
&lt;br /&gt;
Ersetzt alle Zahlen durch X&lt;br /&gt;
 root@zero:~# tr &amp;quot;0-9&amp;quot; &amp;quot;X&amp;quot; &amp;lt; text&lt;br /&gt;
 sogar noch wichtiger&lt;br /&gt;
 XXX&lt;br /&gt;
 XX&lt;br /&gt;
 XXXX&lt;br /&gt;
 test&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
 root@zero:~# cat &amp;gt; test&lt;br /&gt;
 +++++&lt;br /&gt;
 ###&lt;br /&gt;
 1111&lt;br /&gt;
&lt;br /&gt;
-s löscht mehrfach kommende Zeichen&lt;br /&gt;
 root@zero:~# tr '''-s''' &amp;quot;+&amp;quot; &amp;lt; test&lt;br /&gt;
 +&lt;br /&gt;
 ###&lt;br /&gt;
 1111&lt;br /&gt;
&lt;br /&gt;
-d löscht vorkommende Zeichen &lt;br /&gt;
 root@zero:~# tr '''-d''' &amp;quot;#&amp;quot; &amp;lt; test&lt;br /&gt;
 +++++ &lt;br /&gt;
 &lt;br /&gt;
 1111&lt;br /&gt;
&lt;br /&gt;
==cut==&lt;br /&gt;
Spalten aus einer Datei schneiden. Dies betrifft nur die Ausgabe, die Datei selbst bleibt unverändert.&lt;br /&gt;
 &lt;br /&gt;
Schneidet die erste Spalte aus, der Delimiter ist : &lt;br /&gt;
 root@zero:~# cut -f 1 -d : /etc/passwd&lt;br /&gt;
 root&lt;br /&gt;
 daemon&lt;br /&gt;
 bin&lt;br /&gt;
 ...&lt;br /&gt;
 xinux&lt;br /&gt;
&lt;br /&gt;
 root@zero:~# more test&lt;br /&gt;
 1234#5678#9999&lt;br /&gt;
 &lt;br /&gt;
Schneidet die zweite Spalte aus, der Delimiter ist #&lt;br /&gt;
 root@zero:~# cut -f 2 -d &amp;quot;#&amp;quot; &amp;lt; test&lt;br /&gt;
 5678&lt;br /&gt;
&lt;br /&gt;
==expand==&lt;br /&gt;
Ersetzt Tabulatorzeichen durch Folgen von Leerzeichen und schreibt das Ergebnis auf die Standardausgabe&lt;br /&gt;
 root@zero:~# expand /etc/samba/smb.conf&lt;br /&gt;
 ...&lt;br /&gt;
&lt;br /&gt;
==fmt==&lt;br /&gt;
Setzt den Text der Dateien im Blocksatz der angegebenen Breite durch Auffüllen von Zeilen und Entfernen von Zeilenwechseln.&lt;br /&gt;
Standardgemäß werden Leerzeilen, die Position von Leerzeichen und der Einzug am Zeilenanfang erhalten. fmt versucht, &lt;br /&gt;
Zeilenumbrüche an Satzenden durchzuführen sowie sie nach dem ersten oder vor dem letzten Wort eines Satzes zu vermeiden. &lt;br /&gt;
 &lt;br /&gt;
 fmt [Optionen] [Dateien]&lt;br /&gt;
&lt;br /&gt;
Optionen&lt;br /&gt;
&lt;br /&gt;
* -p ''Präfix'': Formatiert nur Zeilen, die mit ''Präfix'' anfangen&lt;br /&gt;
 root@zero:/tmp# fmt -p '#' text&lt;br /&gt;
 #Setzt den Text der Dateien im Blocksatz der angegebenen Breite durch&lt;br /&gt;
 #Auffüllen von Zeilen und Entfernen von Zeilenwechseln.  Standardgemäß&lt;br /&gt;
 #werden Leerzeilen, die Position von Leerzeichen und der Einzug am&lt;br /&gt;
 #Zeilenanfang erhalten. fmt versucht,&lt;br /&gt;
 Zeilenumbrüche an Satzenden durchzuführen sowie sie nach dem ersten oder vor dem letzten Wort eines Satzes zu vermeiden.&lt;br /&gt;
&lt;br /&gt;
* -u : Erzwingt genau ein Leerzeichen zwischen Wörtern und zwei Leerzeichen zwischen Sätzen&lt;br /&gt;
&lt;br /&gt;
* -w ''Breite'': Setzt die Ausgabebreite auf ''Breite''&lt;br /&gt;
 root@zero:/tmp# fmt -w 30 text&lt;br /&gt;
 #Setzt den Text der Dateien&lt;br /&gt;
 im Blocksatz der angegebenen&lt;br /&gt;
 Breite durch Auffüllen&lt;br /&gt;
 von Zeilen und Entfernen&lt;br /&gt;
 von Zeilenwechseln.&lt;br /&gt;
 #Standardgemäß werden&lt;br /&gt;
 Leerzeilen, die Position von&lt;br /&gt;
 Leerzeichen und der Einzug am&lt;br /&gt;
 Zeilenanfang erhalten. fmt&lt;br /&gt;
 versucht, Zeilenumbrüche&lt;br /&gt;
 an Satzenden durchzuführen&lt;br /&gt;
 sowie sie nach dem ersten&lt;br /&gt;
 oder vor dem letzten Wort&lt;br /&gt;
 eines Satzes zu vermeiden.&lt;br /&gt;
&lt;br /&gt;
==join==&lt;br /&gt;
Führt die Zeilen zweier sortierter Dateien anhand von '''Übereinstimmungen''' in einem gemeinsamen Feld zusammen.&lt;br /&gt;
&lt;br /&gt;
 root@zero:~# more name&lt;br /&gt;
 1. karl&lt;br /&gt;
 2. heinz&lt;br /&gt;
 3. hans&lt;br /&gt;
 4. otto&lt;br /&gt;
 root@zero:~# more tel&lt;br /&gt;
 1. 1234&lt;br /&gt;
 2. 4321&lt;br /&gt;
 3. 222&lt;br /&gt;
 4. 121212&lt;br /&gt;
 root@zero:~# join name tel &amp;gt; telefonbuch&lt;br /&gt;
 root@zero:~# more telefonbuch&lt;br /&gt;
 1. karl 1234&lt;br /&gt;
 2. heinz 4321&lt;br /&gt;
 3. hans 222&lt;br /&gt;
 4. otto 121212&lt;br /&gt;
&lt;br /&gt;
==nl==&lt;br /&gt;
Nummeriert die Zeilen in einer Datei.&lt;br /&gt;
&lt;br /&gt;
 root@zero:~# nl /etc/passwd                                                   &lt;br /&gt;
     1  root:x:0:0:root:/root:/bin/bash                                       &lt;br /&gt;
     2  daemon:x:1:1:daemon:/usr/sbin:/bin/sh                                 &lt;br /&gt;
     3  bin:x:2:2:bin:/bin:/bin/sh                                            &lt;br /&gt;
     4  sys:x:3:3:sys:/dev:/bin/sh                                            &lt;br /&gt;
     5  sync:x:4:65534:sync:/bin:/bin/sync&lt;br /&gt;
     ...&lt;br /&gt;
&lt;br /&gt;
==od==&lt;br /&gt;
Gibt Dateien im Oktal und anderen Formaten aus.&lt;br /&gt;
&lt;br /&gt;
 od [Optionen] Datei&lt;br /&gt;
&lt;br /&gt;
* -j ''Bytes'': Überspringt die Anzahl ''Bytes'' einer Datei&lt;br /&gt;
* -N ''Bytes'': Gibt nur die Anzahl ''Bytes'' aus&lt;br /&gt;
* -c : Gebe ASCII Zeichen aus&lt;br /&gt;
* -f : Gebe Fließkommazahlen aus&lt;br /&gt;
* -i : Gebe Dezimal Integer aus&lt;br /&gt;
* -l : Gebe Dezimal Long aus&lt;br /&gt;
* -o : Gebe Oktal 2 Byte Einheiten aus&lt;br /&gt;
* -s : Gebe Dezimal 2 Byte Einheiten aus&lt;br /&gt;
* -x : Gebe Hexadezimale 2 Byte einheiten aus&lt;br /&gt;
&lt;br /&gt;
Beispiele&lt;br /&gt;
&lt;br /&gt;
Gebe Master Boot Record (die ersten 512 Byte der Festplatte /dev/sda) als Hexadezimal aus&lt;br /&gt;
 root@zero:~# od '''-x -N''' 512 /dev/sda&lt;br /&gt;
 0000000 48eb 1090 d08e 00bc b8b0 0000 d88e c08e&lt;br /&gt;
 0000020 befb 7c00 00bf b906 0200 a4f3 21ea 0006&lt;br /&gt;
 0000040 be00 07be 0438 0b75 c683 8110 fefe 7507&lt;br /&gt;
 0000060 ebf3 b416 b002 bb01 7c00 80b2 748a 0203&lt;br /&gt;
 0000100 00ff 2000 0001 0000 0200 90fa f690 80c2&lt;br /&gt;
 ...&lt;br /&gt;
&lt;br /&gt;
Schreibe &amp;quot;suxer&amp;quot; in die Datei test&lt;br /&gt;
 root@zero:~# echo &amp;quot;suxer&amp;quot; &amp;gt; test&lt;br /&gt;
Ausgabe Hexadezimal&lt;br /&gt;
 root@zero:~# od -x test&lt;br /&gt;
 0000000 7573 6578 0a72&lt;br /&gt;
 0000006&lt;br /&gt;
&lt;br /&gt;
Ausgabe ASCII Zeichen&lt;br /&gt;
 root@zero:~# od -c test&lt;br /&gt;
 0000000   s   u   x   e   r  \n&lt;br /&gt;
 0000006&lt;br /&gt;
&lt;br /&gt;
==paste==&lt;br /&gt;
Fügt die Zeilen von zwei oder mehr Dateien horizontal zusammen&lt;br /&gt;
 root@zero:~# paste name tel&lt;br /&gt;
 1. karl 1. 1234&lt;br /&gt;
 2. heinz        2. 4321&lt;br /&gt;
 3. hans 3. 222&lt;br /&gt;
 4. otto 4. 121212&lt;br /&gt;
&lt;br /&gt;
==pr==&lt;br /&gt;
Bereitet Textdateien zum Drucken vor.&lt;br /&gt;
&lt;br /&gt;
 root@zero:~# echo &amp;quot;Plan für heute&amp;quot; &amp;gt; dokument&lt;br /&gt;
 root@zero:~# more dokument&lt;br /&gt;
 Plan für heute&lt;br /&gt;
 root@zero:~# pr dokument   &lt;br /&gt;
  &lt;br /&gt;
 &lt;br /&gt;
 2009-06-19 12:44                    dokument                     Seite 1&lt;br /&gt;
 &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
 Plan für heute&lt;br /&gt;
&lt;br /&gt;
Anmerkung Ausmaße der Bildschirmausgabe wie eine Druckseite.&lt;br /&gt;
&lt;br /&gt;
==sed==&lt;br /&gt;
streaming editor. Mit sed ist es möglich, den Inhalt einer Datei automatisch (nicht interaktiv) zu&lt;br /&gt;
bearbeiten. Wie unter Linux üblich, wird auch hier der Text nicht wirklich verändert sondern die &lt;br /&gt;
Änderung erfolgt über die Standardausgabe, die wieder umgeleitet werden kann. Die Syntax ist ähnlich &lt;br /&gt;
des ex modus von vi. Reguläre Ausdrücke können nach Belieben benutzt werden. &lt;br /&gt;
&lt;br /&gt;
Optionen:&lt;br /&gt;
 -e Zeichenkette  wendet die Editorbefehle aus Zeichenkette auf den Text an.&lt;br /&gt;
 -n gibt nur die Zeilen aus, die explizit (durch &amp;quot;p&amp;quot; ausgedruckt werden sollen&lt;br /&gt;
&lt;br /&gt;
Gibt die dritte Zeile der Datei text aus&lt;br /&gt;
 root@zero:~# sed -n &amp;quot;3p&amp;quot; text&lt;br /&gt;
 34&lt;br /&gt;
&lt;br /&gt;
Gibt die erste bis dritte Zeile von text aus&lt;br /&gt;
 root@zero:~# sed -n &amp;quot;1,3p&amp;quot; text&lt;br /&gt;
 sogar noch wichtiger&lt;br /&gt;
 123&lt;br /&gt;
 34&lt;br /&gt;
&lt;br /&gt;
Löschen der Zeile mit &amp;quot;sogar&amp;quot;&lt;br /&gt;
 root@zero:~# sed -e '/sogar/d' &amp;lt; text&lt;br /&gt;
 123&lt;br /&gt;
 34&lt;br /&gt;
 4711&lt;br /&gt;
 test&lt;br /&gt;
&lt;br /&gt;
und schreiben in text2&lt;br /&gt;
 root@zero:~# sed -e '/sogar/d' &amp;lt; text &amp;gt; text2&lt;br /&gt;
 root@zero:~# more text2&lt;br /&gt;
 123&lt;br /&gt;
 34&lt;br /&gt;
 4711&lt;br /&gt;
 test&lt;br /&gt;
&lt;br /&gt;
Alle 3en durch DREI ersetzen&lt;br /&gt;
 root@zero:~# sed -e 's/3/DREI/g' &amp;lt; text&lt;br /&gt;
 sogar noch wichtiger&lt;br /&gt;
 12DREI&lt;br /&gt;
 DREI4&lt;br /&gt;
 4711&lt;br /&gt;
 test&lt;br /&gt;
&lt;br /&gt;
==wc==&lt;br /&gt;
Zählt die Anzahl von Zeichen, Wörter oder Zeilen&lt;br /&gt;
&lt;br /&gt;
Optionen&lt;br /&gt;
* -m : Zählt die Anzahl der Zeichen&lt;br /&gt;
 root@zero:~# more name&lt;br /&gt;
 1. karl&lt;br /&gt;
 2. heinz&lt;br /&gt;
 3. hans&lt;br /&gt;
 4. otto&lt;br /&gt;
 root@zero:~# wc '''-m''' tel&lt;br /&gt;
 33 tel&lt;br /&gt;
&lt;br /&gt;
* -w : Zählt die Anzahl der Wörter (einschließlich Zahlen und andere Zeichen)&lt;br /&gt;
 root@zero:~# wc '''-w''' name&lt;br /&gt;
 8 name&lt;br /&gt;
&lt;br /&gt;
* -l : Zählt die Anzahl der Zeilen&lt;br /&gt;
 root@zero:~# wc '''-l''' name&lt;br /&gt;
 4 name&lt;br /&gt;
&lt;br /&gt;
==INodes==&lt;br /&gt;
Inode (oder I-Node) wird im Deutschen am besten als Informationsknoten oder&lt;br /&gt;
Indexeintrag bezeichnet. Er fasst alle Attribute einer Datei zusammen außer dem Inhalt&lt;br /&gt;
und dem Namen der Datei.&lt;br /&gt;
&lt;br /&gt;
===Daten===&lt;br /&gt;
{| border=1 cellpadding=2&lt;br /&gt;
|type&lt;br /&gt;
|Der Typ der Datei wird als einzelner Buchstabe angezeigt. Der Typ einer Datei wird beim Anlegen der Datei festgelegt&lt;br /&gt;
|-&lt;br /&gt;
|Permissions &lt;br /&gt;
|Die Zugriffsrechte der Datei werden in den 12 Bit sstrwxrwxrwx abgespeichert.Wenn sie gesetzt sind, werden sie bei &lt;br /&gt;
der Ausgabe an Stelle der x-Rechte ausgegeben. Die Zugriffsrechte können mit dem Kommando chmod verändert werden.&lt;br /&gt;
|-&lt;br /&gt;
|link count&lt;br /&gt;
|In UNIX kann eine Datei mehr als einen Namen haben. Der Link Count gibt die Anzahl der Namen einer Datei an. Er kann&lt;br /&gt;
mit dem Kommando ln erhöht und dem Kommando rm erniedrigt werden.&lt;br /&gt;
|-&lt;br /&gt;
|owner&lt;br /&gt;
|Für den Dateieigentümer gelten die in der ersten rwx-Gruppe festgelegten Zugriffsrechte. Standardmäßig ist der &lt;br /&gt;
Eigentümer einer Datei derjenige Benutzer, der die Datei angelegt hat.&lt;br /&gt;
|-&lt;br /&gt;
|group&lt;br /&gt;
|Für Benutzer, die in der gleichen Gruppe sind, der die Datei angehört, gelten die in der zweiten rwx-Gruppe festgelegten&lt;br /&gt;
Zugriffsrechte. In System V gehört eine Datei standardmäßig der Gruppe an, in der der anlegende Benutzer gerade ist.&lt;br /&gt;
|-&lt;br /&gt;
|size&lt;br /&gt;
|Bei normalen Dateien und Verzeichnissen gibt diese Information die Länge der Datei in Byte an.&lt;br /&gt;
|-&lt;br /&gt;
|access time&lt;br /&gt;
|Die Zugriffszeit gibt den Zeitpunkt des letzten Lesezugriffes auf eine Datei an. Aus Effizienzgründen wird die &lt;br /&gt;
Zugriffszeit an Verzeichnissen nicht gesetzt, wenn ein Verzeichnis durchsucht wird, obwohl man dies erwarten könnte.&lt;br /&gt;
|-&lt;br /&gt;
|modification time&lt;br /&gt;
|Die Modifikationszeit gibt die Zeit des letzten Schreibzugriffes auf die Daten der Datei an. Intern speichert UNIX &lt;br /&gt;
die Zeit als Sekunden seit Beginn des Jahres 1970 und in GMT ab. Für die Ausgabe wird dies in ein besser lesbares &lt;br /&gt;
Format in der lokalen Zeitzone umgewandelt.&lt;br /&gt;
|-&lt;br /&gt;
|change time &lt;br /&gt;
|Die Veränderungszeit gibt das Datum der letzten Statusänderung der Datei an. Sie wird immer dann gesetzt, wenn die &lt;br /&gt;
Informationen über die Datei sich ändern (Datum der Erzeugung wird nicht gespeichert)&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
===Dateiarten===&lt;br /&gt;
{| border=1 cellpadding=2&lt;br /&gt;
!Zeichen&lt;br /&gt;
!Typ&lt;br /&gt;
!Zweck&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;nowiki&amp;gt;-&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
|file&lt;br /&gt;
|normale Datei&lt;br /&gt;
|-&lt;br /&gt;
|d&lt;br /&gt;
|directory&lt;br /&gt;
|Verzeichnis&lt;br /&gt;
|-&lt;br /&gt;
|b&lt;br /&gt;
|block device&lt;br /&gt;
|Gerätedatei&lt;br /&gt;
|-&lt;br /&gt;
|c&lt;br /&gt;
|character device&lt;br /&gt;
|Gerätedatei&lt;br /&gt;
|-&lt;br /&gt;
|l&lt;br /&gt;
|link&lt;br /&gt;
|Querverweis&lt;br /&gt;
|-&lt;br /&gt;
|p&lt;br /&gt;
|named pipe&lt;br /&gt;
|Benannte Pipeline&lt;br /&gt;
|-&lt;br /&gt;
|s&lt;br /&gt;
|socket&lt;br /&gt;
|Netzwerkverbindung&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
====Normale Dateien====&lt;br /&gt;
Unter einer normalen Datei versteht man die Ansammlung von Daten. Dies kann ein Text, Programm, Bild oder sonstiges sein. &lt;br /&gt;
Beispiel&lt;br /&gt;
 root@zero:~# ls text&lt;br /&gt;
 text&lt;br /&gt;
&lt;br /&gt;
====Verzeichnisse====&lt;br /&gt;
Dateien werden in Verzeichnissen gespeichert, nur so ist eine Ordnung möglich. &lt;br /&gt;
 root@zero:~# mkdir -v Ordner&lt;br /&gt;
 mkdir: Verzeichnis „Ordner“ angelegt&lt;br /&gt;
 &lt;br /&gt;
 root@zero:~# ls -d ~/*&lt;br /&gt;
 /root/error  /root/neuertext  /root/Ordner  /root/profile  /root/test  /root/text  /root/verzeichnis&lt;br /&gt;
&lt;br /&gt;
====Gerätedateien (Block und Char)====&lt;br /&gt;
Gerätedateien ermöglichen Anwendungsprogrammen unter Benutzung des  Kernels den Zugriff auf die Hardwarekomponenten des &lt;br /&gt;
Systems. &lt;br /&gt;
&lt;br /&gt;
Beispiele&lt;br /&gt;
&lt;br /&gt;
Sicherung des Master Boot Records der ersten Festplatte&lt;br /&gt;
 root@zero:~# dd if=/dev/sda1 of=/tmp/mbr.img bs=512 count=1&lt;br /&gt;
&lt;br /&gt;
Einhängen des CD-ROM Laufwerks&lt;br /&gt;
 root@zero:~# mount /dev/cdrom /media/cdrom -t iso9660&lt;br /&gt;
&lt;br /&gt;
====Named Pipes====&lt;br /&gt;
Benannte Pipes (Named Pipes) können dagegen auch zur Kommunikation zwischen Prozessen eingesetzt werden, die nicht miteinander&lt;br /&gt;
verwandt sind und sich darüber hinaus auf unterschiedlichen Rechnern innerhalb eines Netzwerkes befinden dürfen. Sie sind &lt;br /&gt;
flexibler als anonyme Pipes und eignen sich für sogenannte Client-Server-Anwendungen (es lassen sich auch RPCs realisieren).&lt;br /&gt;
Benannte Pipes ermöglichen die gleichzeitige Kommunikation in beide Richtungen, das heißt, Daten können im Vollduplexbetrieb &lt;br /&gt;
zwischen den Prozessen ausgetauscht werden.&lt;br /&gt;
 &lt;br /&gt;
Erstelle Named Pipe mit Namen sux. Schreibe &amp;quot;Hallo Welt&amp;quot; in die Pipe sux und bleibe im Hintergrund. Gebe Inhalt der Pipe mit cat aus&lt;br /&gt;
 root@zero:~# mkfifo sux ; echo 'Hallo Welt' &amp;gt; sux &amp;amp; cat &amp;lt; sux&lt;br /&gt;
 [1] 12947&lt;br /&gt;
 Hallo Welt&lt;br /&gt;
 [1]+  Done                    echo 'Hallo Welt' &amp;gt; sux&lt;br /&gt;
&lt;br /&gt;
====Sockets====&lt;br /&gt;
Schnittstelle um es vernetzten Rechnern zu ermöglichen, miteinander zu kommunizieren.&lt;br /&gt;
&lt;br /&gt;
Sie ist in der Regel definiert durch IP-Adresse sowie Port. &lt;br /&gt;
&lt;br /&gt;
====Links====&lt;br /&gt;
Bei Links handelt es sich um symbolische Verweise auf andere Dateien&lt;br /&gt;
&lt;br /&gt;
'''Softlink'''&lt;br /&gt;
Ein Softlink ist eine Datei die nur auf den Namen einer anderen Datei verweist. Wenn die Originaldatei gelöscht wird, zeigt &lt;br /&gt;
der Link ins Leere. &lt;br /&gt;
&lt;br /&gt;
 ln -s datei softlink&lt;br /&gt;
&lt;br /&gt;
{| border=1 cellpadding=2&lt;br /&gt;
| Vorteile&lt;br /&gt;
| Symbolische Links können auch auf Verzeichnisse angelegt werden&amp;lt;br&amp;gt;Sie sind partitionsübergreifend&amp;lt;br&amp;gt;Man kann sie auf Dateien anlegen, die noch nicht existieren&lt;br /&gt;
|-&lt;br /&gt;
| Nachteile&lt;br /&gt;
| Wenn das Original gelöscht ist, ist kein Zugriff mehr möglich&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Beispiel&lt;br /&gt;
 root@zero:~# ln -s text verweis&lt;br /&gt;
 root@zero:~# ls -l verweis&lt;br /&gt;
 lrwxrwxrwx 1 root root 4 2009-06-18 15:48 verweis -&amp;gt; text&lt;br /&gt;
&lt;br /&gt;
'''Hardlinks'''&lt;br /&gt;
 ln datei hardlink&lt;br /&gt;
Eigentlich ist jede Datei ein Hardlink. Ein Hardlink ist ein Verzeichniseintrag,&lt;br /&gt;
der auf eine Inode verweist. Beim Erzeugen einer Datei verweist ein Eintrag auf&lt;br /&gt;
eine Inode. Man kann dann weitere Verweise erzeugen. Der Linkcounter wird&lt;br /&gt;
jeweils um 1 erhöht. Beim Löschen einer Datei wird er jeweils um 1 reduziert.&lt;br /&gt;
Wird der Wert 0 erreicht, ist die Datei gelöscht.&lt;br /&gt;
{| border=1 cellpadding=2&lt;br /&gt;
| Vorteile&lt;br /&gt;
|Zugriff auf die Daten, selbst wenn das Orginal gelöscht ist.&lt;br /&gt;
|-&lt;br /&gt;
|Nachteile&lt;br /&gt;
|Man kann keine Hardlinks auf Verzeichnisse anlegen.&lt;br /&gt;
Ist nur innerhalb einer Partion möglich.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Beispiel&lt;br /&gt;
 root@zero:~# touch 1&lt;br /&gt;
 root@zero:~# echo &amp;quot;text&amp;quot; &amp;gt; 1&lt;br /&gt;
 root@zero:~# ln 1 2&lt;br /&gt;
 root@zero:~# more 2&lt;br /&gt;
 text&lt;br /&gt;
 root@zero:~# echo &amp;quot;doch kein text&amp;quot; &amp;gt; 1&lt;br /&gt;
 root@zero:~# more 1&lt;br /&gt;
 doch kein text&lt;br /&gt;
 root@zero:~# more 2&lt;br /&gt;
 doch kein text&lt;br /&gt;
&lt;br /&gt;
Weitere Optionen:&lt;br /&gt;
 -b sichert Dateien, statt sie zu überschreiben &lt;br /&gt;
 -f Überschreibt bestehende, gleichnamige Dateien&lt;br /&gt;
 -i fragt vor dem Überschreiben nach Bestätigung&lt;br /&gt;
 -v ausführliche Meldungen&lt;br /&gt;
&lt;br /&gt;
==Prozesse==&lt;br /&gt;
===Was ist ein Prozess?===&lt;br /&gt;
Ein Prozess setzt sich aus zwei Teilen zusammen:&lt;br /&gt;
&lt;br /&gt;
1.Programm, das in den Hauptspeicher geladen wurde&lt;br /&gt;
&lt;br /&gt;
2.Prozessumgebung&lt;br /&gt;
&lt;br /&gt;
Unter einem Prozess versteht man ein Programm (binär), das in den Hauptspeicher&lt;br /&gt;
geladen wurde. Also nicht das Program selbst, das auf der Festplatte liegt ist der&lt;br /&gt;
Prozess, sondern es wird erst durch das Laden in den Hauptspeicher dazu.&lt;br /&gt;
Normalerweise liegt ein Programm als ausführbare Datei irgendwo auf der&lt;br /&gt;
Festplatte oder auf Diskette. Ob es sich bei dem Programm um eine binäre Datei&lt;br /&gt;
handelt, kann man mit dem Befehl '' file '' feststellen.&lt;br /&gt;
 &lt;br /&gt;
 root@zero:~# file /bin/mkdir&lt;br /&gt;
 /bin/mkdir: ELF 32-bit LSB executable, Intel 80386, version 1 (SYSV), dynamically linked (uses shared libs), for GNU/Linux 2.6.8, stripped&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Die Datei liegt im Maschinencode vor und kann in den Hauptspeicher geladen&lt;br /&gt;
werden. Sobald dies geschehen ist, kann der Rechner diesen Maschinencode&lt;br /&gt;
abarbeiten (ausführen).&lt;br /&gt;
&lt;br /&gt;
Da aber ein Programm nicht direkt auf die Hardware zugreifen soll, muss es vom&lt;br /&gt;
Betriebsystem kontrolliert werden. Das Betriebssystem liegt logisch gesehen&lt;br /&gt;
zwischen Hardware und Anwendung. Das Betriebssystem ordnet jedem Prozess&lt;br /&gt;
verschiedene Kenndaten zu, um die Prozesse verwalten zu können. Alle&lt;br /&gt;
Kenndaten, die einem Prozess zugeordnet sind, nennt man die&lt;br /&gt;
Prozessumgebung.Wenn man in der Shell ein Kommando eingibt, wird ein Prozess&lt;br /&gt;
kreiert. Natürlich ist die Shell selbst auch ein Prozess. Ein Prozess kann aber&lt;br /&gt;
genauso gut ein Serverprozess (Dienst) sein, z.B. Apache.&lt;br /&gt;
Ein wesentliches Merkmal eines Prozesses ist die Prozesskommunikation. Über im&lt;br /&gt;
Betriebssystem implementierte Methoden ist es möglich, dass verschiedene&lt;br /&gt;
Prozesse Signale und Daten untereinander austauschen können.&lt;br /&gt;
Dadurch wird auch dem Benutzer ermöglicht, einem Prozeß bestimmte Signale zu&lt;br /&gt;
senden bzw. auf den Status eines Prozesses Einfluss zu nehmen.&lt;br /&gt;
&lt;br /&gt;
===Prozesstabelle (Anzeige mit ps)===&lt;br /&gt;
Da zu jedem Prozess Kenndaten geführt werden, müssen diese auch irgendwo&lt;br /&gt;
festgehalten werden. Das geschieht in der sogenannten Prozesstabelle.&lt;br /&gt;
&lt;br /&gt;
Kenndaten der Prozesse (Auswahl):&lt;br /&gt;
* F Flags (z.B. ausgelagert; Systemprozess; Trace,...)&lt;br /&gt;
* UID Nutzer, mit dessen Rechten der Prozess ausgeführt wird&lt;br /&gt;
* PID Prozess - ID. Diese Nummer gibt eine eindeutige Prozess - Nummer&lt;br /&gt;
an. Sie wird vom System automatisch beim Starten des Prozesses&lt;br /&gt;
vergeben und ist für die Laufzeit eindeutig.&lt;br /&gt;
* PPID Prozessnumer der Eltern-Prozesses&lt;br /&gt;
* PRI Priorität eines Prozesses; je niedriger der Wert ist, desto besser&lt;br /&gt;
* NI ist der Nicewert des Prozesses; Nice erniedrigt den Grundwert&lt;br /&gt;
der Priorität des Prozesses und gibt damit Prozessorzeit für andere&lt;br /&gt;
Prozesse frei.&lt;br /&gt;
* SIZE Speichergröße des Prozesses inklusive Stack (eine Art Zwischenspeicher)&lt;br /&gt;
* RSS Verbrauch an physischen Speicher&lt;br /&gt;
* WCHAN ist der Name der Kernerlfunktion, in der der Prozess schläft&lt;br /&gt;
* STAT Status des Prozesses&lt;br /&gt;
R läuft       S schlafend     D nicht störbarer Schlaf&lt;br /&gt;
T angehalten  Z Zombie        W der Prozess belegt keine Seiten&lt;br /&gt;
* TIME Bisland benötigte Prozessorzeit&lt;br /&gt;
* SIZE ist die Größe von Text, Daten und Stack&lt;br /&gt;
* TTY die Nummer des kontrollierenden Teminal; wenn hier ein ? steht,&lt;br /&gt;
handelt es sich um einen Dämon oder Serverprozess.&lt;br /&gt;
* COMMAND Angabe des Prozesses selbst. Dies ist meist der Programmname.&lt;br /&gt;
&lt;br /&gt;
Weiteres&lt;br /&gt;
* GID Gruppe, unter der der Prozess läuft&lt;br /&gt;
* Verweis auf das aktuellen Arbeitsverzeichnis&lt;br /&gt;
* Um mit relativen Pfadangaben arbeiten zu können braucht man diesen Eintrag&lt;br /&gt;
* Tabelle mit Verweisen auf aktuell geöffnete Dateien&lt;br /&gt;
* 3 sind automatisch geöffnet Standardeingabe, Standardausgabe und&lt;br /&gt;
Standardfehlerkanal&lt;br /&gt;
&lt;br /&gt;
Beispiel&lt;br /&gt;
 root@zero:~# ps -l&lt;br /&gt;
 F S   UID   PID  PPID  C PRI  NI ADDR SZ WCHAN  TTY          TIME CMD&lt;br /&gt;
 4 R     0 18639 18631  0  80   0 -  1080 -      pts/0    00:00:00 bash&lt;br /&gt;
 0 R     0 25904 18639  0  80   0 -   635 -      pts/0    00:00:00 ps&lt;br /&gt;
&lt;br /&gt;
===Eltern und Kinder===&lt;br /&gt;
Jeder Prozess kann weitere Prozesse erzeugen. Die erzeugten Prozesse bezeichnet&lt;br /&gt;
man als Kindprozesse. Jeder Kindprozess weiß anhand der PID, woher er stammt.&lt;br /&gt;
&lt;br /&gt;
Alle Prozesse sind von einem anderen Prozess gestartet worden, mit Ausnahme&lt;br /&gt;
des Pseudoprozesses (noch im Kernel beim Starten erzeugter Prozess). Dieser hat&lt;br /&gt;
die Prozessnummer 0. Er hat die Aufgabe, den Init Prozess ( /sbin/init die Nummer&lt;br /&gt;
1) zu starten, der in System V alle anderen Prozesse direkt oder über seine Kind-&lt;br /&gt;
prozesse startet. (init wird konfiguriert durch die /etc/inittab)&lt;br /&gt;
&lt;br /&gt;
Es gibt zwei Arten wie ein Prozess gestartet werden kann:&lt;br /&gt;
&lt;br /&gt;
# Fork und Exec: Prozessumgebung wird dupliziert, der neue Prozess bekommt eine eigene neue PID&lt;br /&gt;
# Exec: Alter Prozess wird durch neuen Prozess überladen (geht mit dem shell-buildin exec)&lt;br /&gt;
&lt;br /&gt;
'''Rechte auf Objekte UID GID'''&lt;br /&gt;
Ob ein Prozess auf eine Datei zugreifen kann, entscheidet der Kernel anhand der&lt;br /&gt;
Zugriffssrechte, die auf der Datei gesetzt sind. Er checkt anhand der UID und GID&lt;br /&gt;
des Prozesses, ob es erlaubt ist. Mit dieser Technik wird letztendlich geprüft, was&lt;br /&gt;
ein User darf, und was nicht.&lt;br /&gt;
&lt;br /&gt;
===Rechenzeit und Priorität===&lt;br /&gt;
Da auch bei Prozessen eine Gerechtigkeit herschen muss, muss eine Instanz&lt;br /&gt;
darüber entscheiden wie lange ein Prozess Rechenzeit verbrauchen darf.&lt;br /&gt;
Folgende Kenndaten werden dazu benötigt&lt;br /&gt;
* clocktick = Zeiteinheit&lt;br /&gt;
* n = Faktor über den Kernel einstellbar&lt;br /&gt;
* slice = n &amp;lt;nowiki&amp;gt;*&amp;lt;/nowiki&amp;gt; clocktick&lt;br /&gt;
* agingtime = weitere Zeiteinheit über den Kernel einstellbar&lt;br /&gt;
&lt;br /&gt;
Es wird davon ausgegangen das der Prozess mit der niedrigsten Priorität gerade&lt;br /&gt;
rechnet. Pro clocktick erhöht sich die Priorität dieses Prozesses um eins.&lt;br /&gt;
&lt;br /&gt;
Jetzt können 3 Situationen eintreten die alle dazu führen das der Scheduler&lt;br /&gt;
aufgerufen wird.&lt;br /&gt;
&lt;br /&gt;
# Prozess blockiert wegen einer Ausgabe oder Eingabe.&lt;br /&gt;
# Gibt Rechenzeit freiwillig ab.&lt;br /&gt;
# Der Slice endet.&lt;br /&gt;
&lt;br /&gt;
Der Aufruf des Schedulers bewirkt das der Prozess mit der niedrigsten Priorität&lt;br /&gt;
gescheduled wird, er also nun rechnen darf. Nach Ablauf der agingtime werden&lt;br /&gt;
nun die Prozesse &amp;quot;gealtert&amp;quot;. Das geschieht nach folgender Formel&lt;br /&gt;
&lt;br /&gt;
Neue Priorität = Alte Priorität / 2 + Nicewert&lt;br /&gt;
&lt;br /&gt;
Der User hat die Möglichkeit, über den sogenannten Nicefaktor den Grundwert für&lt;br /&gt;
einen Prozess zu senken. Der Prozess braucht dann länger für seine Abarbeitung.&lt;br /&gt;
Er verhält sich somit netter zu den anderen Prozessen. Normale User können nur&lt;br /&gt;
netter werden, der Systemverwalter kann auch nicht netter (gemeiner) werden. Der&lt;br /&gt;
Bereich liegt zwischen 19 (sehr nett) bis 0 (weniger nett) für die User, und 19 bis&lt;br /&gt;
-20 für root.&lt;br /&gt;
&lt;br /&gt;
[[Image:pri.png]]&lt;br /&gt;
&lt;br /&gt;
'''Signale'''&lt;br /&gt;
&lt;br /&gt;
Mit den Kommando kill und killall kann man Prozessen Signale schicken&lt;br /&gt;
&lt;br /&gt;
 kill -Signalnummer PID &lt;br /&gt;
&lt;br /&gt;
Signalnummer&lt;br /&gt;
{| border=1 cellpadding=2&lt;br /&gt;
!Signalname&lt;br /&gt;
!Wert&lt;br /&gt;
!Aktion&lt;br /&gt;
|-&lt;br /&gt;
|SIGHUP&lt;br /&gt;
|1&lt;br /&gt;
|Neuinitialisierung eines Prozesses&lt;br /&gt;
|-&lt;br /&gt;
|SIGINT&lt;br /&gt;
|2&lt;br /&gt;
|Interrupt-Signal von der Tastatur (STRG+c)&lt;br /&gt;
|-&lt;br /&gt;
|SIGQUIT&lt;br /&gt;
|3&lt;br /&gt;
|Interrupt-Signal von der Tastatur (STRG+c) mit Dump&lt;br /&gt;
|-&lt;br /&gt;
|SIGKILL&lt;br /&gt;
|9&lt;br /&gt;
|unwiderrufliches Beendigungssignal (Töten)&lt;br /&gt;
|-&lt;br /&gt;
|SIGSEGV&lt;br /&gt;
|11&lt;br /&gt;
|Ungültige Speicherreferenz (bedeutet oft auf defekten Speicher)&lt;br /&gt;
|-&lt;br /&gt;
|SIGTERM &lt;br /&gt;
|15&lt;br /&gt;
|Beendigungssignal (geöffnete Dateien werden geschlossen)&lt;br /&gt;
|-&lt;br /&gt;
|SIGCONT &lt;br /&gt;
|18&lt;br /&gt;
|Weiterfahren, wenn gestoppt&lt;br /&gt;
|-&lt;br /&gt;
|SIGSTOP&lt;br /&gt;
|19&lt;br /&gt;
|Prozessstop&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Beispiel&lt;br /&gt;
 root@zero:~# kill -1 7562&lt;br /&gt;
&lt;br /&gt;
===Programme im Zusammenhang mit Prozessen===&lt;br /&gt;
* ps: Zeigt die Prozesse mit ihrem Status an&lt;br /&gt;
 root@zero:~# ps&lt;br /&gt;
  PID TTY          TIME CMD&lt;br /&gt;
 14134 pts/0    00:00:00 bash&lt;br /&gt;
 14149 pts/0    00:00:00 ps&lt;br /&gt;
&lt;br /&gt;
 root@zero:~# ps -elf | grep apache&lt;br /&gt;
 1 S root      5738     1  0  80   0 -  5461 select Jun16 ?        00:00:00 /usr/sbin/apache2 -k start&lt;br /&gt;
 5 S www-data  5739  5738  0  80   0 -  5581 inet_c Jun16 ?        00:00:00 /usr/sbin/apache2 -k start&lt;br /&gt;
 5 S www-data  5742  5738  0  80   0 -  5461 inet_c Jun16 ?        00:00:00 /usr/sbin/apache2 -k start&lt;br /&gt;
 5 S www-data  5743  5738  0  80   0 -  5461 inet_c Jun16 ?        00:00:00 /usr/sbin/apache2 -k start&lt;br /&gt;
 5 S www-data  5745  5738  0  80   0 -  5461 inet_c Jun16 ?        00:00:00 /usr/sbin/apache2 -k start&lt;br /&gt;
 5 S www-data  5746  5738  0  80   0 -  5461 inet_c Jun16 ?        00:00:00 /usr/sbin/apache2 -k start&lt;br /&gt;
 0 S root     14153 14134  0  80   0 -   837 pipe_w 16:59 pts/0    00:00:00 grep apache&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* nice: Lässt ein Programm mit verändertem Grundwert der Priorität laufen&lt;br /&gt;
 root@zero:~# nice&lt;br /&gt;
 0&lt;br /&gt;
 root@zero:~# nice -n 9 bash&lt;br /&gt;
 root@zero:~# nice&lt;br /&gt;
 9&lt;br /&gt;
 root@zero:~#&lt;br /&gt;
&lt;br /&gt;
* renice: Ändert den Grundwert der Priorität eines laufenden Prozesses&lt;br /&gt;
 root@zero:~# renice 10 5742&lt;br /&gt;
 5742: Alte Priorität: 0, neue Priorität: 10&lt;br /&gt;
&lt;br /&gt;
* top: Zeigt die Prozesse mit ihrem Status an (Abbrechen mit q)&lt;br /&gt;
 root@zero:~# top&lt;br /&gt;
&lt;br /&gt;
* pstree: Zeigt die Prozesse als Baumstruktur&lt;br /&gt;
 root@zero:~# pstree&lt;br /&gt;
 init─┬─NetworkManager&lt;br /&gt;
      ├─acpid&lt;br /&gt;
      ├─apache2───5*[apache2]&lt;br /&gt;
      ├─atd&lt;br /&gt;
      ├─bluetoothd&lt;br /&gt;
      ├─console-kit-dae───63*[{console-kit-dae}]&lt;br /&gt;
      ├─cron&lt;br /&gt;
      ├─cupsd&lt;br /&gt;
      ├─dbus-daemon&lt;br /&gt;
      ├─dd&lt;br /&gt;
      ├─gdm───gdm─┬─Xorg&lt;br /&gt;
      │           └─gdmgreeter&lt;br /&gt;
      ├─6*[getty]&lt;br /&gt;
      ├─hald───hald-runner─┬─hald-addon-acpi&lt;br /&gt;
      │                    ├─hald-addon-inpu&lt;br /&gt;
      │                    └─2*[hald-addon-stor]&lt;br /&gt;
      ├─klogd&lt;br /&gt;
      ├─nm-system-setti&lt;br /&gt;
      ├─nmbd&lt;br /&gt;
      ├─nscd───11*[{nscd}]&lt;br /&gt;
      ├─portmap&lt;br /&gt;
      ├─rpc.statd&lt;br /&gt;
      ├─slapd───2*[{slapd}]&lt;br /&gt;
      ├─smbd───smbd&lt;br /&gt;
      ├─sshd───sshd───bash───bash───pstree&lt;br /&gt;
      ├─syslogd&lt;br /&gt;
      ├─system-tools-ba&lt;br /&gt;
      ├─udevd&lt;br /&gt;
      ├─winbindd─┬─winbindd───winbindd&lt;br /&gt;
      │          └─3*[winbindd]&lt;br /&gt;
      └─wpa_supplicant&lt;br /&gt;
&lt;br /&gt;
===Jobs===&lt;br /&gt;
Unter einem Job versteht man ein Programm, welches man von der Shell gelöst&lt;br /&gt;
hat. D. h. man kann ganz normal weiter arbeiten und der Job verrichtet seinen&lt;br /&gt;
Dienst im Hintergrund. Man kann jederzeit zu diesem Job wieder Kontakt&lt;br /&gt;
aufnehmen.&lt;br /&gt;
&lt;br /&gt;
Ein Job kann auf 2 Arten gestarten werden:&lt;br /&gt;
&lt;br /&gt;
# Durch Anhängen des &amp;amp; Zeichens beim Programmstart&lt;br /&gt;
 root@zero:~# tail -f /var/log/messages &amp;amp;&lt;br /&gt;
 Jun 19 06:59:31 zero -- MARK --&lt;br /&gt;
 Jun 19 07:19:31 zero -- MARK --&lt;br /&gt;
 Jun 19 07:39:32 zero -- MARK --&lt;br /&gt;
 Jun 19 07:44:57 zero syslogd 1.5.0#5ubuntu3: restart.&lt;br /&gt;
 Jun 19 07:59:32 zero -- MARK --&lt;br /&gt;
 Jun 19 08:19:32 zero -- MARK --&lt;br /&gt;
 Jun 19 08:39:32 zero -- MARK --&lt;br /&gt;
 Jun 19 08:59:32 zero -- MARK --&lt;br /&gt;
 Jun 19 09:19:33 zero -- MARK --&lt;br /&gt;
 Jun 19 09:39:33 zero -- MARK --&lt;br /&gt;
 [3] 27421&lt;br /&gt;
&lt;br /&gt;
# Durch Stoppen des Prozesses durch Drücken von Strg-Z und in den Hintergrund schicken mit %n (n ist die Jobnummer)&lt;br /&gt;
 root@zero:~# watch cat /proc/cpuinfo&lt;br /&gt;
 Strg-Z&lt;br /&gt;
 [4]+  Stopped                 watch cat /proc/cpuinfo&lt;br /&gt;
 root@zero:~# bg %4&lt;br /&gt;
 [4]+ watch cat /proc/cpuinfo &amp;amp;&lt;br /&gt;
&lt;br /&gt;
Anweisungen im Zusammenhang mit Jobs (n ist die Jobnummer)&lt;br /&gt;
* bg %n : Einen Job in den Hintergrund stellen (wie oben)&lt;br /&gt;
* fg %n : Einen Job in den Vordergrund holen&lt;br /&gt;
 root@zero:~# fg %4&lt;br /&gt;
 watch cat /proc/cpuinfo&lt;br /&gt;
&lt;br /&gt;
* jobs : Aktive Jobs ausgeben&lt;br /&gt;
&lt;br /&gt;
 root@zero:~# jobs&lt;br /&gt;
 [1]   Running                 tail -f /var/log/syslog &amp;amp;&lt;br /&gt;
 [2]   Running                 tail -f /var/log/syslog &amp;amp;&lt;br /&gt;
 [3]-  Running                 tail -f /var/log/messages &amp;amp;&lt;br /&gt;
 [4]+  Stopped                 watch cat /proc/cpuinfo&lt;br /&gt;
&lt;br /&gt;
* Strg-Z : Einen Vordergrund-Job vorübergehend anhalten&lt;br /&gt;
* kill -STOP %n : Unterbricht Job im Hintergrund&lt;br /&gt;
 root@zero:~# kill -STOP %1&lt;br /&gt;
 root@zero:~# jobs&lt;br /&gt;
 [1]+  '''Stopped'''                 tail -f /var/log/syslog&lt;br /&gt;
 [2]   Running                 tail -f /var/log/syslog &amp;amp;&lt;br /&gt;
 [3]   Running                 tail -f /var/log/messages &amp;amp;&lt;br /&gt;
 [4]-  Stopped                 watch cat /proc/cpuinfo&lt;br /&gt;
* kill -CONT %n : Setzt den unterbrochenen Job im Hintergrund fort&lt;br /&gt;
root@zero:~# kill -CONT %1&lt;br /&gt;
root@zero:~# jobs&lt;br /&gt;
 [1]+  '''Running'''                 tail -f /var/log/syslog &amp;amp;&lt;br /&gt;
 [2]   Running                 tail -f /var/log/syslog &amp;amp;&lt;br /&gt;
 [3]   Running                 tail -f /var/log/messages &amp;amp;&lt;br /&gt;
 [4]-  Stopped                 watch cat /proc/cpuinfo&lt;br /&gt;
* kill -KILL %n : Tötet Job im Hintergrund&lt;br /&gt;
 root@zero:~# kill -KILL %1&lt;br /&gt;
 root@zero:~# jobs&lt;br /&gt;
 [1]+  '''Killed'''                  tail -f /var/log/syslog&lt;br /&gt;
 [2]   Running                 tail -f /var/log/syslog &amp;amp;&lt;br /&gt;
 [3]   Running                 tail -f /var/log/messages &amp;amp;&lt;br /&gt;
 [4]-  Stopped                 watch cat /proc/cpuinfo&lt;br /&gt;
 root@zero:~# jobs&lt;br /&gt;
 [2]   Running                 tail -f /var/log/syslog &amp;amp;&lt;br /&gt;
 [3]-  Running                 tail -f /var/log/messages &amp;amp;&lt;br /&gt;
 [4]+  Stopped                 watch cat /proc/cpuinfo&lt;br /&gt;
&lt;br /&gt;
Bedingungen, die zu Jobausführung eingehalten werden sollen:&lt;br /&gt;
* Der Job soll nicht auf den Bildschirm schreiben (Standardausgabe +Standardfehlerkanal).&lt;br /&gt;
* Er soll keine Eingaben vom Benutzer erwarten.&lt;br /&gt;
&lt;br /&gt;
==Suchen von Dateien==&lt;br /&gt;
===find===&lt;br /&gt;
 find ab_wo_wird_gesucht was_wird_gesucht aktion&lt;br /&gt;
 find [Pfad] [Bedingung] [Aktion]&lt;br /&gt;
&lt;br /&gt;
====Nach Namen====&lt;br /&gt;
 find [Pfad] '''-name''' [Name]&lt;br /&gt;
 &lt;br /&gt;
Finde alle Dateien mit Namen test ab dem Verzeichnis /home und gebe diese Zeilenweise aus&lt;br /&gt;
 root@zero:~# find /home -name test -print&lt;br /&gt;
 /home/xinux/test&lt;br /&gt;
 /home/test&lt;br /&gt;
&lt;br /&gt;
Wie oben, jedoch mit Namensanfang test&lt;br /&gt;
 root@zero:/home/xinux# find /home -name 'test*'&lt;br /&gt;
 /home/xinux/testdatei&lt;br /&gt;
 /home/xinux/test&lt;br /&gt;
 /home/test&lt;br /&gt;
&lt;br /&gt;
====Nach Benutzer(Eigentümer)====&lt;br /&gt;
 root@zero:/tmp# find /tmp/ '''-user''' xinux&lt;br /&gt;
 /tmp/datei&lt;br /&gt;
&lt;br /&gt;
====Nach Gruppe====&lt;br /&gt;
 root@zero:/tmp# find /tmp/ '''-group''' hacker&lt;br /&gt;
 /tmp/datei3&lt;br /&gt;
 /tmp/datei2&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
====Nach Typ====&lt;br /&gt;
Es wird nach Dateien anhand Ihrer Art gesucht:&lt;br /&gt;
 find [Pfad] '''-type''' [Typ] &lt;br /&gt;
Typ:&lt;br /&gt;
* f: Normale Dateien&lt;br /&gt;
 root@zero:~# find /tmp/ -type f&lt;br /&gt;
 /tmp/mbr.img&lt;br /&gt;
 /tmp/datei&lt;br /&gt;
 /tmp/zeugs&lt;br /&gt;
 /tmp/.X0-lock&lt;br /&gt;
* d: Verzeichnisse&lt;br /&gt;
 root@zero:~# find /var/log -type d&lt;br /&gt;
 /var/log&lt;br /&gt;
 /var/log/apache2&lt;br /&gt;
 /var/log/unattended-upgrades&lt;br /&gt;
 /var/log/apparmor&lt;br /&gt;
 /var/log/ConsoleKit&lt;br /&gt;
 /var/log/dist-upgrade&lt;br /&gt;
 /var/log/dist-upgrade/20090526-1052&lt;br /&gt;
 /var/log/cups&lt;br /&gt;
 /var/log/apt&lt;br /&gt;
 /var/log/fsck&lt;br /&gt;
 /var/log/samba&lt;br /&gt;
 /var/log/samba/cores&lt;br /&gt;
 /var/log/samba/cores/smbd&lt;br /&gt;
 /var/log/samba/cores/nmbd&lt;br /&gt;
 /var/log/samba/cores/winbindd&lt;br /&gt;
 /var/log/installer&lt;br /&gt;
 /var/log/gdm&lt;br /&gt;
 /var/log/news&lt;br /&gt;
* c: Char Devices (Zeichenorientierte Gerätedatei)&lt;br /&gt;
 root@zero:~# find / -type c&lt;br /&gt;
 /lib/udev/devices/kmem&lt;br /&gt;
 /lib/udev/devices/null&lt;br /&gt;
 /lib/udev/devices/console&lt;br /&gt;
 /lib/udev/devices/ppp&lt;br /&gt;
 /lib/udev/devices/net/tun&lt;br /&gt;
* b: Block Devices (Blockorientierte Gerätedatei)&lt;br /&gt;
* p: Benannte Pipe&lt;br /&gt;
* l: Links&lt;br /&gt;
* s: Sockets&lt;br /&gt;
&lt;br /&gt;
====Nach Modifikation====&lt;br /&gt;
Listet alle Dateien in /etc auf, die innerhalb von zwei Tagen modifiziert wurden&lt;br /&gt;
 root@zero:/var/log# find /etc/ -mtime 2 -print&lt;br /&gt;
 /etc/apache2&lt;br /&gt;
 /etc/apache2/mods-available&lt;br /&gt;
 /etc/apache2/conf.d&lt;br /&gt;
 /etc/apache2/sites-available&lt;br /&gt;
 /etc/bash_completion.d&lt;br /&gt;
 /etc/blkid.tab.old&lt;br /&gt;
 /etc/firefox-3.0/profile&lt;br /&gt;
 /etc/firefox-3.0/profile/chrome&lt;br /&gt;
 /etc/firefox-3.0/pref&lt;br /&gt;
 /etc/profile.d&lt;br /&gt;
 /etc/ufw/applications.d&lt;br /&gt;
 /etc/logrotate.d&lt;br /&gt;
 /etc/xulrunner-1.9&lt;br /&gt;
 /etc/blkid.tab&lt;br /&gt;
 /etc/cron.daily&lt;br /&gt;
 /etc/alternatives&lt;br /&gt;
 /etc/alternatives/x-www-browser&lt;br /&gt;
 /etc/alternatives/xulrunner&lt;br /&gt;
 /etc/gre.d&lt;br /&gt;
 /etc/hal/fdi/policy&lt;br /&gt;
 /etc/dbus-1/system.d&lt;br /&gt;
 /etc/udev/rules.d&lt;br /&gt;
&lt;br /&gt;
====Nach Größe====&lt;br /&gt;
Finde Dateien in /tmp, die größer als 100 MByte sind&lt;br /&gt;
 root@zero:/tmp# find /tmp/ -size +100M&lt;br /&gt;
 /tmp/datei&lt;br /&gt;
&lt;br /&gt;
Finde Dateien in /tmp, die kleiner als 100 KByte sind&lt;br /&gt;
 root@zero:/tmp# find /tmp/ -size -100k&lt;br /&gt;
 /tmp/&lt;br /&gt;
 /tmp/datei3&lt;br /&gt;
 /tmp/backup &lt;br /&gt;
 /tmp/datei2&lt;br /&gt;
 /tmp/.winbindd &lt;br /&gt;
 /tmp/.winbindd/pipe&lt;br /&gt;
 /tmp/mbr.img&lt;br /&gt;
 /tmp/zeugs&lt;br /&gt;
 /tmp/.ICE-unix&lt;br /&gt;
 /tmp/.X0-lock&lt;br /&gt;
 /tmp/datei1&lt;br /&gt;
 /tmp/.X11-unix&lt;br /&gt;
 /tmp/.X11-unix/X0&lt;br /&gt;
 /tmp/pulse-PKdhtXMmr18n&lt;br /&gt;
&lt;br /&gt;
====Nach Berechtigungen====&lt;br /&gt;
Finde Dateien in Home mit der Berechtigung 777 (-rwxrwxrwx)&lt;br /&gt;
 root@zero:/var# find /home/ -perm 777&lt;br /&gt;
 /home/samba&lt;br /&gt;
 /home/xinux/Examples&lt;br /&gt;
 /home/xinux/.pulse/1f0763ee4cf4c7e1d3c07fd149dda37b:runtime&lt;br /&gt;
 /home/test/Examples&lt;br /&gt;
&lt;br /&gt;
===locate===&lt;br /&gt;
Locate arbeitet über einen Index, der erstellt und aktualisiert werden muss. Aus diesem Grund kann locate teilweise nicht &lt;br /&gt;
akutell sein. Es ist immer schneller als find und es durchsucht immer das ganze Dateisystem. &lt;br /&gt;
 locate [Dateiname]&lt;br /&gt;
 &lt;br /&gt;
Lokalisiere die Datei wvdial.conf. Anmerkung: Der Stern wird beim Suchen automatisch hinzugefügt. Entspricht also&lt;br /&gt;
wvidal.conf*&lt;br /&gt;
 root@zero:~# locate wvdial.conf&lt;br /&gt;
 /etc/wvdial.conf&lt;br /&gt;
 /usr/share/man/man5/wvdial.conf.5.gz&lt;br /&gt;
 /var/lib/dpkg/info/wvdial.conffiles&lt;br /&gt;
 /var/lib/dpkg/info/wvdial.config&lt;br /&gt;
&lt;br /&gt;
Lokalisiere die Datei wvdial.conf und nur diese&lt;br /&gt;
 root@zero:~# locate -b '\wvdial.conf'&lt;br /&gt;
 /etc/wvdial.conf&lt;br /&gt;
&lt;br /&gt;
Aktualisieren des Indexes&lt;br /&gt;
 root@zero:~# updatedb&lt;br /&gt;
&lt;br /&gt;
==Wie wird ein Kommando lokalisiert==&lt;br /&gt;
Wenn die Shell alle Ersetzungen in der Kommandozeile vorgenommen und alle Umleitungen vorbereitet hat, ist der Zeitpunkt &lt;br /&gt;
gekommen, auf den der Anwender die ganze Zeit gewartet hat. Die Shell versucht das Kommando auszuführen. Dazu muss sie &lt;br /&gt;
es aber erst lokalisieren. Das erste passende Kommando wird ausgeführt.&lt;br /&gt;
&lt;br /&gt;
Als Kommandoname wird immer das erste Wort eines einfachen Kommandos erkannt. Ein Kommandoname kann mit Pfadnamen in &lt;br /&gt;
einem Verzeichnis (absolut oder relativ) angegeben werden. Die Shell erkennt dies an (mindestens) einem Slash `/' &lt;br /&gt;
im Kommandonamen. Wenn kein Verzeichnis angegeben ist, versucht die Shell selbst, das Kommando zu finden. Dazu wird &lt;br /&gt;
der Kommandoname zuerst in der Hashtabelle gesucht, dann wird er mit den Synonymen, mit den Scriptfunktionen und &lt;br /&gt;
schließlich mit den Shellfunktionen verglichen. &lt;br /&gt;
&lt;br /&gt;
Wird auf diese Weise kein Programm dieses Namens gefunden, werden alle in der PATH-Umgebungsvariablen aufgeführten &lt;br /&gt;
Verzeichnisse nach einer ausführbaren Datei dieses Namens durchsucht. Wird auch hier kein passendes Kommando gefunden, &lt;br /&gt;
gibt die Shell eine Fehlermeldung aus.&lt;br /&gt;
&lt;br /&gt;
===which und type===&lt;br /&gt;
====which====&lt;br /&gt;
which gibt die vollen Pfadnamen der Dateien aus, die bei Benutzung des angegebenen Befehls ausgeführt werden würden.&lt;br /&gt;
&lt;br /&gt;
 which [-a] Dateiname &lt;br /&gt;
&lt;br /&gt;
Optionen:&lt;br /&gt;
&lt;br /&gt;
* -a : Alle Treffer ausgeben, nicht nur den ersten&lt;br /&gt;
* --skip-dot : Verzeichnisse, die mit einem Punkt beginnen, auslassen&lt;br /&gt;
&lt;br /&gt;
Beispiel&lt;br /&gt;
 root@zero:~# which startx&lt;br /&gt;
 /usr/bin/startx&lt;br /&gt;
&lt;br /&gt;
====type====&lt;br /&gt;
Anzeigen der absoluten Pfadnamen von Befehlen, und ob sich diese Befehle in der Hash-Tabelle der aktuellen&lt;br /&gt;
Shell befinden.&lt;br /&gt;
&lt;br /&gt;
 type [Optionen] Befehle&lt;br /&gt;
&lt;br /&gt;
Beispiel&lt;br /&gt;
 root@zero:~# type ls&lt;br /&gt;
 ls is aliased to `ls --color=auto'&lt;br /&gt;
&lt;br /&gt;
Optionen:&lt;br /&gt;
&lt;br /&gt;
* -a : Alle vorkommenden Befehle werden ausgegeben, nicht nur das, welches aufgerufen werden würde&lt;br /&gt;
 root@zero:~# type '''-a''' ls&lt;br /&gt;
 ls is aliased to `ls --color=auto'&lt;br /&gt;
 ls is /bin/ls&lt;br /&gt;
&lt;br /&gt;
* -p : Anzeigen des Eintrags von Befehl in der Hash-Tabelle. Dieser Wert kann sich vom ersten Auftreten des Befehls in PATH&lt;br /&gt;
unterscheiden&lt;br /&gt;
 root@zero:~# type '''-p''' apache2&lt;br /&gt;
 /usr/sbin/apache2&lt;br /&gt;
&lt;br /&gt;
* -t : Anzeigen, ob Befehl ein Aliasname, ein Schlüsselwort, eine Funktion, ein eingebauter Befehl oder eine Datei ist&lt;br /&gt;
 root@zero:~# type '''-t''' apache2&lt;br /&gt;
 file&lt;/div&gt;</summary>
		<author><name>192.168.178.46</name></author>
	</entry>
	<entry>
		<id>https://www.xinux.net/index.php?title=Linux_Grundlagen&amp;diff=67</id>
		<title>Linux Grundlagen</title>
		<link rel="alternate" type="text/html" href="https://www.xinux.net/index.php?title=Linux_Grundlagen&amp;diff=67"/>
		<updated>2009-07-07T06:56:03Z</updated>

		<summary type="html">&lt;p&gt;192.168.178.46: /* useradd */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Einführung==&lt;br /&gt;
===Geschichte Unix===&lt;br /&gt;
====1969====&lt;br /&gt;
Am Anfang von Linux steht Multics, ein von Bell Laboratories geschaffenes &amp;quot;Betriebssystem&amp;quot;, &lt;br /&gt;
das noch mit Lochkarten arbeitete. Multics wird mit Unterstützung von AT&amp;amp;T und Western &lt;br /&gt;
Electric unter Mitarbeit von Ken Thompson und Dennis Ritchie weiterentwickelt. Obwohl sich &lt;br /&gt;
Bell Laboratories bald zurückzieht, gibt Thompson das Projekt nicht auf.  Zum Entwicklerteam &lt;br /&gt;
gehören auch Rudd Canaday und Brian Kernighan. Letzterer gibt 1970 dem Betriebssystem den Namen UNIX. &lt;br /&gt;
Thompson definiert 7 Richtlinien für UNIX:&lt;br /&gt;
 &lt;br /&gt;
# Hierarchische Anordnung der Dateisysteme&lt;br /&gt;
# Die Ausgabe von Daten an die Peripherie(-geräte) und Dateien soll gleich sein.&lt;br /&gt;
# Prozesse und Programme sollen miteinander kommunizieren.&lt;br /&gt;
# Multitasking (voneinander getrennte Prozesse)&lt;br /&gt;
# Persönliche Shell's&lt;br /&gt;
# Der Compiler soll für viele Programmiersprachen tauglich sein.&lt;br /&gt;
# Portabilität&lt;br /&gt;
&lt;br /&gt;
====1971====&lt;br /&gt;
Bis 1971 ist das für eine DEC PDP-7 geschriebene Unix als Version 1 auf eine PDP-11 portiert. Bis&lt;br /&gt;
zur Version 4 entwickelt Ritchie die Programmier- (Hoch-) Sprache C. Das in Assembler geschriebene&lt;br /&gt;
Unix wird fast völlig nach C übersetzt, wodurch zum erstenmal die geforderte Hardware-Unabhängigkeit&lt;br /&gt;
des Betriebssystems realisiert werden kann.&lt;br /&gt;
&lt;br /&gt;
====1975====&lt;br /&gt;
Da AT&amp;amp;T aufgrund vertraglicher Bindungen mit der US-Bundesregierung Unix nicht kommerziell vermarkten darf, stellt sie den Source Code für ein paar hundert Dollar den Universitäten, Lehr- und Forschungsanstalten zur Verfügung. Dies führt zu einer sehr dynamischen Entwicklung von Unix. 1975 wird die Version 6 als erstes UNIX-System veröffentlicht, die darauffolgende Version 7 wird sehr erfolgreich. Da es keine Standardisierung gibt, entwickeln bald verschiedenste Firmen ihr eigenes UNIX. Ab 1984 wird AT&amp;amp;T per Gerichtsbeschluss erlaubt, Unix zu vermarkten. AT&amp;amp;T verkauft sein Unix V und beginnt, sich um einen internationalen Standard von UNIX zu bemühen. &lt;br /&gt;
&lt;br /&gt;
====1984====&lt;br /&gt;
Durch Richard Stallman wird die Free Software Foundation (FSF) gegründet. Diese initiiert ein Projekt namens GNU (GNU ist Not Unix), welches das Ziel verfolgt, ein freies UNIX System zu schaffen. &lt;br /&gt;
&lt;br /&gt;
====1987====&lt;br /&gt;
AT&amp;amp;T verbietet die Verwendung des Unix Quellcodes an den Universitäten. Während dieser Zeit ist Andrew (Andy) Tannenbaum Professor an der Freien Universität von Amsterdam und entwickelt Minix. Minix ist ein kostengünstiges Lehrbetriebssystem und kommt ohne jeglichen AT&amp;amp;T Code aus, obwohl es die gleiche Funktionalität wie Unix 7 bietet. Im Usenet unter comp.os.minix entsteht eine Minix-Gemeinde, die den Minix Kernel und die Anwendungen rundherum programmiert und verbessert.&lt;br /&gt;
&lt;br /&gt;
====1991====&lt;br /&gt;
Linus Torvalds hat als Student für Computerwissenschaften an der Universität in Helsinki Minix installiert und das Buch von Andy Tannenbaum gelesen. Er beginnt im Sinne der FSF einen Unix ähnlichen Kernel zu programmieren mit der Idee, &amp;quot;ein besseres Minix als Minix&amp;quot; zu bauen. 1992 stellt er die Version 0.02 mit dem Namen Linux der Internetgemeinde zur Verfügung. &lt;br /&gt;
&lt;br /&gt;
====1994====&lt;br /&gt;
Die Linux Version 1.0 wird freigegeben. Das Linux Fieber beginnt... &lt;br /&gt;
&lt;br /&gt;
====1998====&lt;br /&gt;
Der Kreis der Linux Entwickler und Anwender ist kräftig angeschwollen. KDE 1.0 wird veröffentlicht. Die Zuwachsraten von Linux übertreffen die von Windows NT deutlich. &lt;br /&gt;
&lt;br /&gt;
====1999====&lt;br /&gt;
Der lange erwartete stabile Linux Kernel Version 2.2 wird freigegeben. Namhafte Firmen wie IBM kündigen ihre Unterstützung für Linux an. &lt;br /&gt;
&lt;br /&gt;
====2001====&lt;br /&gt;
Der lange erwartete stabile Linux Kernel Version 2.4 wird freigegeben. USB Unterstützung und eine neue Firewallimplementierung zeichnen ihn aus.&lt;br /&gt;
&lt;br /&gt;
====2003====&lt;br /&gt;
Linux Kernel Version 2.6 wird freigegeben. Am auffälligsten sind Änderungen bei der Modulverwaltung.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Distributionen===&lt;br /&gt;
{| Border=1 Cellpadding=2&lt;br /&gt;
| &lt;br /&gt;
|Url&lt;br /&gt;
|Paketformat&lt;br /&gt;
|-&lt;br /&gt;
|Red Hat&lt;br /&gt;
|www.redhat.com&lt;br /&gt;
|rpm&lt;br /&gt;
|-&lt;br /&gt;
|fedora&lt;br /&gt;
|fedora.redhat.com&lt;br /&gt;
|rpm&lt;br /&gt;
|-&lt;br /&gt;
|CentOS&lt;br /&gt;
|www.centos.org&lt;br /&gt;
|rpm&lt;br /&gt;
|-&lt;br /&gt;
|Suse/openSUSE&lt;br /&gt;
|www.opensuse.org&lt;br /&gt;
|rpm&lt;br /&gt;
|-&lt;br /&gt;
|Debian&lt;br /&gt;
|www.debian.org&lt;br /&gt;
|deb&lt;br /&gt;
|-&lt;br /&gt;
|Ubuntu&lt;br /&gt;
|www.ubuntu.com&lt;br /&gt;
|deb&lt;br /&gt;
|-&lt;br /&gt;
|Mandrake&lt;br /&gt;
|www.linux-mandrake.com&lt;br /&gt;
|rpm&lt;br /&gt;
|-&lt;br /&gt;
|Easy Linux&lt;br /&gt;
|www.easy-linux.de&lt;br /&gt;
|rpm&lt;br /&gt;
|-&lt;br /&gt;
|Turbo&lt;br /&gt;
|www.turbolinux.com&lt;br /&gt;
|rpm&lt;br /&gt;
|-&lt;br /&gt;
|minis&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|toms&lt;br /&gt;
|www.toms.net/rb&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|damn small linux&lt;br /&gt;
|www.damnsmalllinux.org&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|pocket-linux&lt;br /&gt;
|www.pocket-linux.org&lt;br /&gt;
|&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
====Bücher====&lt;br /&gt;
 Titel : Das Linux Anwenderhandbuch und Leitfaden für die Systemverwaltung&lt;br /&gt;
 Autor : Sebastian Hetze, Dirk Hohndel, Olaf Kirch und Martin Müller&lt;br /&gt;
 Verlag: Lunetix&lt;br /&gt;
 ISBN : 3-929764-06-7&lt;br /&gt;
&lt;br /&gt;
 Titel : Linux in a Nutshell&lt;br /&gt;
 Autor : Jessica Perry Hekman und die Mitarbeiter von O'Reilly &amp;amp; Associates&lt;br /&gt;
 Verlag: O'Reilly&lt;br /&gt;
 ISBN : 3-930673-57-6&lt;br /&gt;
&lt;br /&gt;
 Titel : Linux - Wegweiser zur Installation und Konfiguration&lt;br /&gt;
 Autor : Matt Welsh, Lar Kaufman, Matthias Kalle Dallheimer&lt;br /&gt;
 Verlag: O'Reilly&lt;br /&gt;
 ISBN : 3-930673-58-4 (deutsch), 1-56592-469-X (englisch)&lt;br /&gt;
&lt;br /&gt;
 Titel : Linux - Installation, Konfiguration, Anwendung&lt;br /&gt;
 Autor : Michael KoflerMultitasking&lt;br /&gt;
 Verlag: Addison-Wesley&lt;br /&gt;
 ISBN : 3-8273-1475-5&lt;br /&gt;
&lt;br /&gt;
 Titel : Linux - Wegweiser für Netzwerker&lt;br /&gt;
 Autor : Olaf Kirch&lt;br /&gt;
 Verlag: O'Reilly&lt;br /&gt;
 ISBN : 3-930673-18-5&lt;br /&gt;
&lt;br /&gt;
 Titel : TCP/IP-Netzwerk-Administration&lt;br /&gt;
 Autor : Craig Hunt&lt;br /&gt;
 Verlag: O'Reilly&lt;br /&gt;
 ISBN : 3-89721-110-6&lt;br /&gt;
&lt;br /&gt;
 Titel : Essential System Administration&lt;br /&gt;
 Autor : Eleen Frisch&lt;br /&gt;
 Verlag: O'Reilly&lt;br /&gt;
 ISBN : 1-56592-127-5&lt;br /&gt;
&lt;br /&gt;
==Betriebssystem==&lt;br /&gt;
===Was ist ein Betriebssystem?===&lt;br /&gt;
&lt;br /&gt;
Ein Betriebssystem liegt logisch gesehen zwischenAnwendungsprogramm und Hardware.&lt;br /&gt;
&lt;br /&gt;
Es nimmt die Anforderungen der Anwendungsprogramme entgegen und leitet&lt;br /&gt;
diese kontrolliert an die Hardware weiter. Kein Anwendungsprogramm sollte&lt;br /&gt;
direkt auf die Hardware zugreifen können. Den zentralen Zugang schafft einzig&lt;br /&gt;
das Betriebssystem. Somit kann das Betriebssystem unsinnige Anforderungen&lt;br /&gt;
oder Bedienungsfehler abblocken.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Image:Linux.jpg]]&lt;br /&gt;
&lt;br /&gt;
===Aufgaben eines Betriebssystems===&lt;br /&gt;
&lt;br /&gt;
# Verbergen der Komplexität der Maschine vor dem Anwender (Abstraktion)&lt;br /&gt;
# Bereitstellen einer Benutzerschnittstelle (&amp;quot;Kommandointerpreter&amp;quot;, &amp;quot;Shell&amp;quot;)&lt;br /&gt;
# Bereitstellen einer normierten Programmierschnittstelle (API)&lt;br /&gt;
# Verwaltung der Ressourcen der Maschine::&lt;br /&gt;
Hauptspeicher&lt;br /&gt;
Prozessor(en)&lt;br /&gt;
Hintergrundspeicher (Platte, Band, etc.)&lt;br /&gt;
Geräte (Terminal, Drucker, Plotter, etc.)&lt;br /&gt;
Rechenzeit&lt;br /&gt;
Koordination von Prozessen&lt;br /&gt;
&lt;br /&gt;
===Aufbau eines Betriebssystems===&lt;br /&gt;
&lt;br /&gt;
Ein Rechensystem besteht aus Hardware, Systemprogrammen und Anwendungs-&lt;br /&gt;
programmen. Unter einem Betriebssystem wird meist die Summe aus Betriebs-&lt;br /&gt;
systemkern (Kernel) und den wichtigsten Systemprogrammen verstanden. Ein&lt;br /&gt;
minimaler LINUX-Kernel besitzt ungefähr eine Größe von 400 - 800 kByte.&lt;br /&gt;
Weitere wichtige Systemkomponenten benötigen zusätzlich 10 - 100 Mbyte&lt;br /&gt;
Plattenplatz.&lt;br /&gt;
&lt;br /&gt;
Ein Betriebssystem stellt den Rechner als erweiterte Maschine (virtuelle&lt;br /&gt;
Maschine) über definierte Software-Schnittstellen zur Verfügung.&lt;br /&gt;
Das Betriebssystem dient als Betriebsmittelverwalter, der Anforderungen&lt;br /&gt;
befriedigt, protokolliert, abrechnet und vermittelt.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Aufgaben des Betriebssystemkerns:&lt;br /&gt;
&lt;br /&gt;
{| Border=1 Cellpadding=2&lt;br /&gt;
|Prozessverwaltung  (dispatching and scheduling)&lt;br /&gt;
| Mehrere Benutzer können mit mehreren Aktionen gleichzeitig im System arbeiten, ohne sich gegenseitig zu beeinflussen. Damit dies möglich ist,  müssen die Aktionen organisiert, koordiniert und verwaltet werden. Die zu verwaltende Einheit nennt man Prozess.&lt;br /&gt;
|-&lt;br /&gt;
|Speicherverwaltung   (memory management)&lt;br /&gt;
|Zuteilen von Speicherbereichen an laufende Prozesse, Schutz der Speicherbereiche vor unbefugten Zugriffen, bei Speicherengpässen: Auslagern von ganzen (swapping) oder von Teilen (paging) von Prozessen auf die Platte (swap file).&lt;br /&gt;
|-&lt;br /&gt;
|Dateiverwaltung  (file handling)&lt;br /&gt;
|Zuteilung von Plattenplatz für Programme, Benutzer und Systemdienste, Schreiben, Lesen und Strukturieren der Daten auf den Massenspeichern; Durch Bereitstellung einer entsprechenden Schnittstelle (VFS, virtual file system) kann der Kern Dateisysteme unterschiedlichster Art (EXT2, FAT, NFS, HPFS, NTFS, ...) ansprechen.&lt;br /&gt;
|-&lt;br /&gt;
|Geräteverwaltung  (resource management)&lt;br /&gt;
|Der Kern ermöglicht und kontrolliert den Zugriff auf die Hardware. Er steuert die Ein- und Ausgabetätigkeiten der Anwender. An den Kern&lt;br /&gt;
gebunden sind die entsprechenden Gerätetreiber (device driver), die damit eine Kommunikation zwischen Kern und Hardware ermöglichen.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
===Multitasking===&lt;br /&gt;
&lt;br /&gt;
Multitasking bedeutet, dass ein Rechner aus Anwendersicht mehrere Aufgaben&lt;br /&gt;
(Tasks) gleichzeitg übernehmen kann. Das Betriebssystem (OS) unterteilt die&lt;br /&gt;
gleichzeitig anstehenden Aufgaben in Einzelarbeitsschritte (Prozesse) und&lt;br /&gt;
managed durch ein Zeitscheibenverfahren (scheduling) die gleichmäßige&lt;br /&gt;
Abarbeitung der Prozesse.&lt;br /&gt;
&lt;br /&gt;
Es wird unterschieden zwischen:&lt;br /&gt;
&lt;br /&gt;
*non-präamptiven (kooperativen=die Ressourcen werden vom aktiven Prozess freigegeben, bei einem Hänger steht das ganze System)&lt;br /&gt;
&lt;br /&gt;
und&lt;br /&gt;
&lt;br /&gt;
*präamptiven (reinem=der Betriebssystemkern steuert Taskwechsel, indem nach einer festgelegten Zeit vom gerade aktiven Prozess zum nächsten weitergeschaltet wird)&lt;br /&gt;
&lt;br /&gt;
===Mehrprozessorbetrieb===&lt;br /&gt;
&lt;br /&gt;
Bei mehreren Prozessoren und Unterstützung durch das OS&lt;br /&gt;
(NT,Linux,Unix,Novell) können mehrere Tasks auf diese verteilt werden und&lt;br /&gt;
gleichzeitig bearbeitet werden. Nachteilig ist, dass dies nicht oder kaum von&lt;br /&gt;
Anwendungsprogrammen unterstützt wird und es zu Kommunikationsproblemen&lt;br /&gt;
zwischen den einzelnen Tasks kommen kann.&lt;br /&gt;
&lt;br /&gt;
===Arten von von Betriebssystemen===&lt;br /&gt;
&lt;br /&gt;
{|Border=1 Cellpadding=2&lt;br /&gt;
|&lt;br /&gt;
|SingleUser  &lt;br /&gt;
|Multiuser&lt;br /&gt;
|-&lt;br /&gt;
|Single Tasking&lt;br /&gt;
|MS - DOS&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|Multi Tasking&lt;br /&gt;
|Windows 3.x&lt;br /&gt;
|UNIX&lt;br /&gt;
|-&lt;br /&gt;
|&lt;br /&gt;
|Windows 95/98&lt;br /&gt;
|Linux&lt;br /&gt;
|-&lt;br /&gt;
|&lt;br /&gt;
|Windows NT4 ohne Erweiterungen&lt;br /&gt;
|VMS&lt;br /&gt;
|-&lt;br /&gt;
|&lt;br /&gt;
|OS/2 &lt;br /&gt;
|Windows NT mit  Erweiterungen&lt;br /&gt;
|-&lt;br /&gt;
|&lt;br /&gt;
|Apple&lt;br /&gt;
|Windows 2000, XP, 2003&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
===SHELL===&lt;br /&gt;
&lt;br /&gt;
Wenn man mit Linux arbeiten will, kann man nicht direkt mit dem Betriebssystem&lt;br /&gt;
kommunizieren. Man braucht dazu ein Hilfsprogramm, welches die&lt;br /&gt;
Kommandoeingaben ordnungsgemäß an das Betriebssystem weiterleitet. Dieses&lt;br /&gt;
Hilfsprogramm hat den Namen Shell.&lt;br /&gt;
&lt;br /&gt;
Die Shell schirmt den Betriebssystemkern von den Anwendungsprogrammen ab.&lt;br /&gt;
Die unterschiedlichen Shells erfüllen alle dieselbe Aufgabe, sie unterscheiden sich&lt;br /&gt;
allerdings in ihrer Syntax.&lt;br /&gt;
&lt;br /&gt;
==Die Installation im Überblick==&lt;br /&gt;
&lt;br /&gt;
Die Installation von Linux geschieht in folgenden Schritten:&lt;br /&gt;
&lt;br /&gt;
# Analyse (Welche Hardware habe ich? ,Hab ich weitere Betriebsysteme?)&lt;br /&gt;
# Booten des Linux-Kernels. (von CD oder Diskette)&lt;br /&gt;
# Laden einer RAM-Disk (das macht das Installationsprogramm automatisch).&lt;br /&gt;
# Partitionieren der Festplatte (fdisk).&lt;br /&gt;
# Einrichten der Swappartition (mkswap), Formatieren der Festplatte (mkfs).&lt;br /&gt;
# Montieren der Dateisysteme (mount), Aktivieren der Swapbereiche (swapon).&lt;br /&gt;
# Kopieren und Auspacken der Daten vom Installationsmedium auf die Festplatte (die eigentliche Installation). (rpm, dpkg oder tar).&lt;br /&gt;
# Geeignete Wahl der Bootmethode unter Berücksichtigung von Punkt 1 (grub, lilo).&lt;br /&gt;
# Konfiguration des Systems (Netz, Modem etc...).&lt;br /&gt;
&lt;br /&gt;
==Erste Schritte==&lt;br /&gt;
===Anmelden===&lt;br /&gt;
Sie können sich nun mit dem Usernamen und dem Passwort, das sie bei der Installation angelegt haben anmelden!&lt;br /&gt;
[[Image:benutzer.jpg]]&lt;br /&gt;
&lt;br /&gt;
[[Image:passwd.jpg]]&lt;br /&gt;
&lt;br /&gt;
===Terminal öffnen===&lt;br /&gt;
&lt;br /&gt;
Ein Terminal öffnen Sie über das Startmenü:&lt;br /&gt;
&lt;br /&gt;
[[Image:Terminalde.jpg]]&lt;br /&gt;
&lt;br /&gt;
Das geöffnete Terminal sieht dann folgendermaßen aus:&lt;br /&gt;
&lt;br /&gt;
[[Image:Terminalde2.jpg]]&lt;br /&gt;
&lt;br /&gt;
===Sudo===&lt;br /&gt;
Rootrechte erlangen sie über den &amp;quot;Sudo&amp;quot;-Befehl&lt;br /&gt;
 &lt;br /&gt;
''Den nächsten Befehl als root ausführen''&lt;br /&gt;
 xinux@zero:~$ sudo cat /etc/shadow&lt;br /&gt;
 [sudo] password for xinux:&lt;br /&gt;
&lt;br /&gt;
''Eine komplette Sitzung als root starten''&lt;br /&gt;
 xinux@zero:~$ sudo -i&lt;br /&gt;
 [sudo] password for xinux:&lt;br /&gt;
 root@zero:~#&lt;br /&gt;
&lt;br /&gt;
===Virtuelle Konsolen===&lt;br /&gt;
&lt;br /&gt;
In die Virtuelle Konsole gelangen sie über &amp;quot;STRG+ALT+(F1-F6)&amp;quot;.&lt;br /&gt;
Sie funktioniert wie ein ganz normales Terminal, und mit &amp;quot;ALT+F7&amp;quot;&lt;br /&gt;
gelangen sie wieder zurück auf die grafische Benutzeroberfläche&lt;br /&gt;
&lt;br /&gt;
===Abmelden===&lt;br /&gt;
&lt;br /&gt;
Abmelden können Sie sich wieder über das Startmenu unter:&lt;br /&gt;
&lt;br /&gt;
[[Image:Logout.jpg]]&lt;br /&gt;
&lt;br /&gt;
Fals sie nur einzelne Sitzungen in einem der Terminals oder &lt;br /&gt;
den Virtuellen Konsolen Abmelden wollen benutzen sie dazu den Befehl: &amp;quot;exit&amp;quot;&lt;br /&gt;
&lt;br /&gt;
===Herunterfahren===&lt;br /&gt;
&lt;br /&gt;
Das Herunterfahren funktioniert auf dem selben Weg.&lt;br /&gt;
&lt;br /&gt;
Entweder sie Benutzen wieder das Startmenü und benutzen diesmal den &amp;quot;Ausschalten ...&amp;quot; Knopf,&lt;br /&gt;
&lt;br /&gt;
Oder sie geben den äquivalenten &amp;quot;shutdown&amp;quot;-Befehl in einem Terminal bzw. der virtuellen Konsole ein.&lt;br /&gt;
&lt;br /&gt;
Allerdings müssen sie dazu als Administrator angemeldet sein s. &amp;quot;Sudo&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Wenn Sie den &amp;quot;shutdown&amp;quot;-Befehl benutzen wollen muss hinter den Befehl&lt;br /&gt;
&lt;br /&gt;
eine Zeitangabe in Minuten oder das wort &amp;quot;now&amp;quot; für sofortiges Ausschalten hinzugefügt werden:&lt;br /&gt;
&lt;br /&gt;
 xinux@zero:~$ sudo -i&lt;br /&gt;
 root@zero:~# shutdown 60&lt;br /&gt;
 &lt;br /&gt;
 Broadcast message from xinux@zero &lt;br /&gt;
         (/dev/pts/3) at 14:29 ...&lt;br /&gt;
 &lt;br /&gt;
 The system is going down for maintenance in 60 minutes!&lt;br /&gt;
&lt;br /&gt;
Sollten sie den Befehl widerrufen wollen dann drücken sie &amp;quot;STRG+C&amp;quot;,&lt;br /&gt;
&lt;br /&gt;
in dem Terminal in dem der shutdown Befehl gestartet wurde,&lt;br /&gt;
&lt;br /&gt;
oder geben sie den &amp;quot;shutdown&amp;quot;-Befehl zusammen mit der Abbruchoption &amp;quot;-c&amp;quot; in einem anderen Terminal ein:&lt;br /&gt;
&lt;br /&gt;
 root@zero:~# shutdown -c&lt;br /&gt;
&lt;br /&gt;
 shutdown: Shutdown cancelled&lt;br /&gt;
 root@zero:~# &lt;br /&gt;
&lt;br /&gt;
Wenn Sie den Rechner Neustarten möchten gibt es dazu die Option &amp;quot;-r&amp;quot; für den &amp;quot;shutdown&amp;quot;-Befehl&lt;br /&gt;
&lt;br /&gt;
oder den &amp;quot;reboot&amp;quot;-Befehl die beide auch als root ausgeführt werden müssen:&lt;br /&gt;
&lt;br /&gt;
 xinux@zero:~$ sudo -i&lt;br /&gt;
 [sudo] password for xinux: &lt;br /&gt;
 root@zero:~# shutdown -r now&lt;br /&gt;
&lt;br /&gt;
 root@zero:~# reboot&lt;br /&gt;
&lt;br /&gt;
===&amp;quot;man&amp;quot;===&lt;br /&gt;
&lt;br /&gt;
Programm zum Einsehen der Online-Manuals&lt;br /&gt;
&lt;br /&gt;
Die Manuals sind in folgende Sektionen unterteilt:&lt;br /&gt;
# Ausführbare Programme oder Shellbefehle&lt;br /&gt;
# Systemaufrufe (Kernelfunktionen)&lt;br /&gt;
# Bibliotheksaufrufe (Funktionen in System-Bibliotheken)&lt;br /&gt;
# Spezielle Dateien (gewöhnlich in /dev)&lt;br /&gt;
# Dateiformate und Konventionen, z. B. /etc/passwd&lt;br /&gt;
# Spiele&lt;br /&gt;
# Makropakete und Konventionen, z. B. man(7), groff(7)&lt;br /&gt;
# Systemadministrationsbefehle (in der Regel nur für root)&lt;br /&gt;
# Kernelroutinen [Nicht Standard]&lt;br /&gt;
&lt;br /&gt;
Aufruf eines Manuals erfolgt durch ''man kommando''&lt;br /&gt;
Beendet wird durch Drücken des Buchstabens q&lt;br /&gt;
Gesucht wird vorwärts durch Eingabe eines /suchausdruck&lt;br /&gt;
Gesucht wird rückwärts durch Eingabe eines ?suchausdruck&lt;br /&gt;
&lt;br /&gt;
Beispiele:&lt;br /&gt;
&lt;br /&gt;
      man passwd        Anschauen der Manualseite zum Programm passwd&lt;br /&gt;
      man 5 passwd      Anschauen der Manualseite zur Datei /etc/passwd&lt;br /&gt;
      man -a passwd     Anschauen aller Manualseiten zu passwd&lt;br /&gt;
      man -k passwd     Durchsucht die Kurzbeschreibungen der Manualseite&lt;br /&gt;
                        nach passwd und gibt alle Treffer aus&lt;br /&gt;
      man -f passwd      Gibt alle gefunden Kurzbescheibungen zu passwd aus&lt;br /&gt;
      man -L en passwd Gibt englische Manualseiten aus&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Was geht vor auf meinem System? (date,who)===&lt;br /&gt;
&lt;br /&gt;
Das Kommando date dient zur Abfrage von Datum und Uhrzeit.&lt;br /&gt;
&lt;br /&gt;
 xinux@zero:~ &amp;gt; date&lt;br /&gt;
 Fre Mär 16 16:35:03 CET 2001&lt;br /&gt;
&lt;br /&gt;
oder auch Anzeige der Grennwich Zeit:&lt;br /&gt;
&lt;br /&gt;
 xinux@zero:~ &amp;gt; date -u&lt;br /&gt;
 Fre Mär 16 15:35:34 UTC 2001&lt;br /&gt;
&lt;br /&gt;
 xinux@zero:~ &amp;gt; date -u &amp;quot;+%X&amp;quot;&lt;br /&gt;
 15:37:19&lt;br /&gt;
&lt;br /&gt;
 xinux@zero:~ &amp;gt; date -u &amp;quot;+%x&amp;quot;&lt;br /&gt;
 01/15/02&lt;br /&gt;
&lt;br /&gt;
who zeigt alle angemeldeten Benutzer an&lt;br /&gt;
&lt;br /&gt;
 thomas@cardassia:~ &amp;gt; who&lt;br /&gt;
 thomas             tty1 Feb 27 16:39&lt;br /&gt;
 thomas             tty2 Mar 2 17:08&lt;br /&gt;
 tina               tty6 Mar 16 16:38&lt;br /&gt;
&lt;br /&gt;
Mit `who --help' bekommen Sie mehr Informationen.&lt;br /&gt;
&lt;br /&gt;
 thomas@cardassia:~ &amp;gt; who --help&lt;br /&gt;
&lt;br /&gt;
Benutzung: who [OPTION]... [ DATEI | ARG1 ARG2 ]&lt;br /&gt;
&lt;br /&gt;
 -H, --heading             print line of column headings&lt;br /&gt;
 -i, -u, --idle            add user idle time as HOURS:MINUTES, . or old&lt;br /&gt;
 -l, --lookup              attempt to canonicalize hostnames via DNS&lt;br /&gt;
 -m                        only hostname and user associated with stdin&lt;br /&gt;
 -q, --count               all login names and number of users logged on&lt;br /&gt;
 -s                        (ignored)&lt;br /&gt;
 -T, -w, --mesg            add user's message status as +, - or ?&lt;br /&gt;
     --message             same as -T&lt;br /&gt;
     --writable            same as -T&lt;br /&gt;
     --help                display this help and exit&lt;br /&gt;
     --version             output version information and exit&lt;br /&gt;
&lt;br /&gt;
==Das UNIX-Dateisystem==&lt;br /&gt;
===Verzeichnisbaum===&lt;br /&gt;
&lt;br /&gt;
[[Image:vztree.jpg]]&lt;br /&gt;
&lt;br /&gt;
Das Betriebssystem UNIX besitzt ein hierarchisches Dateisystem. Es besteht aus:&lt;br /&gt;
* Dateien (Files)&lt;br /&gt;
Dateien speichern Informationen (Text, Bilder, Sound, Videos, Programme) und&lt;br /&gt;
werden über den Dateinamen angesprochen.&lt;br /&gt;
&lt;br /&gt;
* Verzeichnissen (Directories, Kataloge)&lt;br /&gt;
Verzeichnisse besitzen ebenfalls einen Namen und dienen zur Ordnung des&lt;br /&gt;
Dateisystems. Ein Verzeichnis kann Dateien und Unterverzeichnisse&lt;br /&gt;
(Subdirectories) enthalten. Das oberste Verzeichnis im Dateisystem heisst&lt;br /&gt;
Rootverzeichnis oder kurz Root und wird durch / (sprich: slash)&lt;br /&gt;
gekennzeichnet.&lt;br /&gt;
&lt;br /&gt;
Im Gegensatz zu Windows kennt UNIX keine Laufwerke.&lt;br /&gt;
Das obige Bild zeigt ein typisches UNIX-Dateisystem.&lt;br /&gt;
Unterhalb des Rootverzeichnisses befinden sich eine Vielzahl vonVerzeichnissen.&lt;br /&gt;
&lt;br /&gt;
===Wichtige Verzeichnisse===&lt;br /&gt;
&lt;br /&gt;
• '''Homeverzeichnis'''&lt;br /&gt;
&lt;br /&gt;
das Verzeichnis, in dem man sich unmittelbar nach dem Anmelden befindet. Das&lt;br /&gt;
Homeverzeichnis wird vom Systemverwalter eingerichtet; jeder Anwender&lt;br /&gt;
besitzt ein festes Homeverzeichnis. z.B. /home/hans&lt;br /&gt;
&lt;br /&gt;
~ (Tilde) bzw. $HOME (Shellvariable) kennzeichnen das Homeverzeichnis.&lt;br /&gt;
&lt;br /&gt;
• '''Aktuelles Verzeichnis'''&lt;br /&gt;
&lt;br /&gt;
Verzeichnis, in dem man sich aktuell befindet.&lt;br /&gt;
Das aktuelle Verzeichnis wird mit dem Befehl cd (change directory) oder per&lt;br /&gt;
Mausklick verändert.&lt;br /&gt;
Ein einfacher Punkt . kennzeichnet das aktuelle Verzeichnis.&lt;br /&gt;
&lt;br /&gt;
• '''Elternverzeichnis'''&lt;br /&gt;
&lt;br /&gt;
Verzeichnis unmittelbar oberhalb des aktuellen Verzeichnisses.&lt;br /&gt;
Jedes Verzeichnis ausser / besitzt genau ein Elternverzeichnis.&lt;br /&gt;
Zwei Punkte .. kennzeichnen das Elternverzeichnis (abhängig vom aktuellen&lt;br /&gt;
VZ).&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Absoluter Pfadname:===&lt;br /&gt;
&lt;br /&gt;
Beschreibt ausgehend vom Rootverzeichnis den Weg zum Zielverzeichnis oder zur&lt;br /&gt;
Zieldatei. (Welche Verzeichnisse müssen ausgehend von / durchlaufen werden, um&lt;br /&gt;
zum Ziel zu kommen?) Ein absoluter Pfadname beginnt immer mit / .&lt;br /&gt;
&lt;br /&gt;
===Relativer Pfadname:===&lt;br /&gt;
&lt;br /&gt;
Beschreibt ausgehend vom aktuellen Verzeichnis den Weg zum Zielverzeichnis&lt;br /&gt;
oder zur Zieldatei; ein relativer Pfadname beginnt nicht mit / .&lt;br /&gt;
/home/suxer&lt;br /&gt;
absoluter Pfadname für das Verzeichnis sub1 im Homeverzeichnis von suxer&lt;br /&gt;
&lt;br /&gt;
===Verzeichnisstruktur===&lt;br /&gt;
&lt;br /&gt;
 /bin         Kommandos die beim starten benötigt werden (Zugriff hat jeder)&lt;br /&gt;
 /sbin        Wichtige System-Programme (In der Regel root vorberhalten)&lt;br /&gt;
 /boot        Hier findet man die Dateien des Bootmanagers und des Kernel.&lt;br /&gt;
 /dev         In diesem Verzeichnis stehen die Gerätedateien (Devices),&lt;br /&gt;
 /home        Alle Heimatverzeichnisse der Nutzer findet man hier.&lt;br /&gt;
 /lib         Beim Systemstart benötigten Bibliotheken und Modules stehen hier.&lt;br /&gt;
 /mnt         Mountpunkt für temporäre Partitionen&lt;br /&gt;
 /opt         Software, die nicht Installationsumfang von Linux gehören.&lt;br /&gt;
 /root        Heimatverzeichnis des Administrators.&lt;br /&gt;
 /tmp         Temporäre Dateien können hier abgelegt werden&lt;br /&gt;
 /usr         statische Dateien (kann read-only gemountet sein)&lt;br /&gt;
 /var         variable Dateien (muss beschreibar sein )&lt;br /&gt;
 /etc         Konfiguartionsdateien und Startscripte&lt;br /&gt;
 /proc        Virtuelles Dateisystem -&amp;gt; repräsentiert den Kernel&lt;br /&gt;
&lt;br /&gt;
===Unterverzeichnisse von /usr===&lt;br /&gt;
&lt;br /&gt;
 sbin         Programme für root die beim Start nicht benötigt werden&lt;br /&gt;
 bin          Programme für alle die beim Start nicht benötigt werden&lt;br /&gt;
 X11R6        Dateien des X-Window-Sytems&lt;br /&gt;
 bin          Ausführbare Programme&lt;br /&gt;
 doc          Dokumentationen&lt;br /&gt;
 etc          Konfigurationsdateien&lt;br /&gt;
 games        Spiele&lt;br /&gt;
 include      Headerdateien für C-Programme&lt;br /&gt;
 local        Pakete die nicht zur Distribution gehören ähnlich /opt&lt;br /&gt;
 share        Pakete die von mehreren Paketen genutzt werden&lt;br /&gt;
 share/man    Die Manualpages&lt;br /&gt;
 share/info   Seiten des Infosystems&lt;br /&gt;
 share/doc    Dokumentationen&lt;br /&gt;
 src          Sources von Programmen (Kernel und andere)&lt;br /&gt;
&lt;br /&gt;
===Unterverzeichnisse von /var===&lt;br /&gt;
&lt;br /&gt;
 cache        Zwischenspreicher für Progammes&lt;br /&gt;
 games        Variable Daten der Games (Scores etc...)&lt;br /&gt;
 lock         Sperrdateien&lt;br /&gt;
 log          Die Logdateien (wichtiges Verzeichnis für Admins)&lt;br /&gt;
 mail         Das Mailsystem&lt;br /&gt;
 run          Dateien zu laufemdem Prozessen&lt;br /&gt;
 spool        Spooldateien (z.B. für das Drucksystem&lt;br /&gt;
 state        Statusinfos&lt;br /&gt;
 tmp          Wie /tmp eventuell nicht auf root Partion&lt;br /&gt;
&lt;br /&gt;
==Einfache Komandos==&lt;br /&gt;
===cd: Wechseln des Arbeitsverzeichnis===&lt;br /&gt;
&lt;br /&gt;
Um festzustellen in welchem Verzeichnis man sich befindet, sollte man den&lt;br /&gt;
Befehl &amp;quot;pwd&amp;quot; benutzen,&lt;br /&gt;
&lt;br /&gt;
und mit dem Befehl &amp;quot;cd&amp;quot; kann man zwischen den Verzeichnissen wechseln:&lt;br /&gt;
&lt;br /&gt;
Wechsele ins homeverzeichnis von Xinux&lt;br /&gt;
&lt;br /&gt;
 xinux@zero:~$ cd /home/xinux/&lt;br /&gt;
 xinux@zero:~$ pwd&lt;br /&gt;
 /home/xinux&lt;br /&gt;
&lt;br /&gt;
cd ~ -&amp;gt; wechsele ins jeweilige Homeverzeichnis&lt;br /&gt;
&lt;br /&gt;
cd .. -&amp;gt; wechsele ein Verzeichnis höher&lt;br /&gt;
&lt;br /&gt;
cd ../verzeichnis -&amp;gt; wechsele in eine paralleles Verzeichnis &amp;lt;- (ist eine relative Pfadangabe !)&lt;br /&gt;
&lt;br /&gt;
cd - -&amp;gt; wechsele in das Verzeichnis, in dem vorher gearbeitet wurde.&lt;br /&gt;
&lt;br /&gt;
Mit cd / wechselt man in das Wurzelverzeichnis.&lt;br /&gt;
&lt;br /&gt;
 xinux@zero:/var/log$ cd /&lt;br /&gt;
 xinux@zero:/$ pwd&lt;br /&gt;
 /&lt;br /&gt;
&lt;br /&gt;
===ls: Listing===&lt;br /&gt;
&lt;br /&gt;
Den Inhalt von Verzeichnissen kann man sich mit dem Befehl &amp;quot;ls&amp;quot; anzeigen lassen&lt;br /&gt;
wobei &amp;quot;ls&amp;quot; eine Vielzahl von Optionen besitzt:&lt;br /&gt;
&lt;br /&gt;
 ls                                  standard&lt;br /&gt;
 ls -l                               langes listing&lt;br /&gt;
 ls -a                               alle Dateien&lt;br /&gt;
 ls -i                               mit Inode&lt;br /&gt;
 ls -h                               gut lesbare Dateigröße&lt;br /&gt;
 ls -d                               Verzechnis wird angezeigt, nicht der Inhalt&lt;br /&gt;
 ls -L                               sortiert nach Größe&lt;br /&gt;
 ls -t                               sortiert nach Datum&lt;br /&gt;
 ls -F                               mit nützlichem Anhang&lt;br /&gt;
&lt;br /&gt;
 xinux@zero:/$ ls -l /var/log/messages&lt;br /&gt;
 -rw-r----- 1 syslog adm 2296 2009-06-16 10:05 /var/log/messages&lt;br /&gt;
&lt;br /&gt;
===more: Seitenweises Anzeigen von Seiten===&lt;br /&gt;
 root@zero:~# more /var/log/messages&lt;br /&gt;
 ...&lt;br /&gt;
&lt;br /&gt;
===head: erste Zeilen anzeigen===&lt;br /&gt;
Erste 10 Zeilen anzeigen&lt;br /&gt;
 root@zero:~# head /var/log/messages&lt;br /&gt;
 Jun 15 12:37:08 zero syslogd 1.5.0#5ubuntu3: restart.&lt;br /&gt;
 Jun 15 12:38:43 zero kernel: [  830.065036] mtrr: your processor doesn't support write-combining&lt;br /&gt;
 Jun 15 12:46:05 zero pulseaudio[4817]: pid.c: Stale PID file, overwriting.&lt;br /&gt;
 Jun 15 13:05:24 zero -- MARK --&lt;br /&gt;
 ...&lt;br /&gt;
&lt;br /&gt;
Erste zwei Zeilen anzeigen&lt;br /&gt;
 root@zero:~# head -n 2 /var/log/messages&lt;br /&gt;
 Jun 15 12:37:08 zero syslogd 1.5.0#5ubuntu3: restart.&lt;br /&gt;
 Jun 15 12:38:43 zero kernel: [  830.065036] mtrr: your processor doesn't support write-combining&lt;br /&gt;
&lt;br /&gt;
===tail: letzte Zeilen anzeigen===&lt;br /&gt;
 &lt;br /&gt;
 root@zero:~# tail /var/log/syslog&lt;br /&gt;
 ...&lt;br /&gt;
 Jun 19 11:19:35 zero -- MARK --&lt;br /&gt;
 Jun 19 11:39:35 zero -- MARK --&lt;br /&gt;
 Jun 19 11:59:36 zero -- MARK --&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Letze 5 Zeilen anzeigen&lt;br /&gt;
 root@zero:~# tail -n 5 /var/log/auth.log&lt;br /&gt;
 Jun 18 14:30:01 zero CRON[12040]: pam_unix(cron:session): session closed for user root&lt;br /&gt;
 Jun 18 14:39:01 zero CRON[12191]: pam_unix(cron:session): session opened for user root by (uid=0)&lt;br /&gt;
 Jun 18 14:39:01 zero CRON[12191]: pam_unix(cron:session): session closed for user root&lt;br /&gt;
 Jun 18 14:40:01 zero CRON[12237]: pam_unix(cron:session): session opened for user root by (uid=0)&lt;br /&gt;
 Jun 18 14:40:01 zero CRON[12237]: pam_unix(cron:session): session closed for user root&lt;br /&gt;
&lt;br /&gt;
Letze Zeilen anzeigen und fortlaufend aktualisieren&lt;br /&gt;
 root@zero:~# tail -f /var/log/syslog&lt;br /&gt;
 ...&lt;br /&gt;
&lt;br /&gt;
===mkdir: Ein neues Verzeichnis erstellen===&lt;br /&gt;
&lt;br /&gt;
 mkdir        verzeichnis&lt;br /&gt;
Erstellt ein Verzeichnis im working directory (wd)&lt;br /&gt;
&lt;br /&gt;
 mkdir  -p    ver1/ver2&lt;br /&gt;
Erstellt ein Verzeichnis ver2 unterhalb von ver1&lt;br /&gt;
wenn ver1 nicht existiert wird es erstellt&lt;br /&gt;
&lt;br /&gt;
 mkdir -m 753 ver1&lt;br /&gt;
Es wird das Verzeichnis ver1 erstellt mit der mask 753&lt;br /&gt;
&lt;br /&gt;
 mkdir -v     ver1&lt;br /&gt;
Geschwätzige Ausgabe :)&lt;br /&gt;
&lt;br /&gt;
===Zum Löschen von leeren Verzeichnissen wird rmdir benutzt===&lt;br /&gt;
&lt;br /&gt;
 rmdir           ver1&lt;br /&gt;
Löscht das leere Verzeichnis ver1&lt;br /&gt;
&lt;br /&gt;
 rmdir -v        ver1&lt;br /&gt;
Löscht das leere Verzeichnis ver1 und ist geschwätzig&lt;br /&gt;
&lt;br /&gt;
 rmdir -p        /ver1/ver2/ver3&lt;br /&gt;
Löscht das Verzeichnis ver3; wenn dadurch ver2 ein leeres&lt;br /&gt;
Verzeichnis wird, wird dieses auch gelöscht , wenn ver1&lt;br /&gt;
dadurch ein leeres Verzeichnis wird, wird auch dieses gelöscht.&lt;br /&gt;
&lt;br /&gt;
===touch Verändern des Zeitstempels===&lt;br /&gt;
&lt;br /&gt;
Mit touch können wir eine neue leere Datei erzeugen (das ist nicht der eigentliche&lt;br /&gt;
Zweck von touch, eigentlich wird der Zeitstempel geändert)&lt;br /&gt;
&lt;br /&gt;
 touch            dateiname&lt;br /&gt;
&lt;br /&gt;
===Kopieren=== &lt;br /&gt;
cp ist das Kommando um Dateien zu kopieren &lt;br /&gt;
&lt;br /&gt;
Eine Kopie von dat1 mit dem Namen dat2 erstellen:&lt;br /&gt;
&lt;br /&gt;
 xinux@zero:~$ cp dat1 dat2&lt;br /&gt;
&lt;br /&gt;
Eine Kopie von dat1 ins Verzeichnis ver2 erstellen:&lt;br /&gt;
&lt;br /&gt;
 xinux@zero:~$ cp dat1 ver2/&lt;br /&gt;
 &lt;br /&gt;
Eine Kopie erstellen mit ausführlicher Anzeige:&lt;br /&gt;
&lt;br /&gt;
 xinux@zero:~$ cp -v dat1 dat2&lt;br /&gt;
 `dat1' -&amp;gt; `dat2'&lt;br /&gt;
&lt;br /&gt;
Eine Kopie erstellen mit Rückfrage fals etwas überschrieben wird:&lt;br /&gt;
&lt;br /&gt;
 xinux@zero:~$ cp -i dat1 dat2&lt;br /&gt;
 cp: overwrite `dat2'?&lt;br /&gt;
&lt;br /&gt;
Eine Kopie erstellen und die Rückfrage überbrücken:&lt;br /&gt;
&lt;br /&gt;
 xinux@zero:~$ cp -f dat1 dat2&lt;br /&gt;
&lt;br /&gt;
Eine Kopie von dat1 ins Verzeichnis ver2 erstellen fals keine neuere Version von dat1 vorliegt:&lt;br /&gt;
&lt;br /&gt;
 xinux@zero:~$ cp -u dat1 ver2/&lt;br /&gt;
&lt;br /&gt;
Eine Kopie erstellen fals ver2 auf dem selben Dateisystem wie dat1 liegt:&lt;br /&gt;
&lt;br /&gt;
 xinux@zero:~$ cp -x dat1 ver2/&lt;br /&gt;
&lt;br /&gt;
Eine Kopie von ver1, die als ver2 oder unter ver2 als ver1 gespeichert wird erstellen:&lt;br /&gt;
&lt;br /&gt;
 xinux@zero:~$ cp -r ver1/ ver2/&lt;br /&gt;
&lt;br /&gt;
Eine Kopie von einer Datei erstellen und ihre Attribute beibehalten:&lt;br /&gt;
&lt;br /&gt;
 xinux@zero:~$ cp -p sux1 sux2&lt;br /&gt;
&lt;br /&gt;
Eine Kopie erstellen bei der die Links erhalten bleiben:&lt;br /&gt;
&lt;br /&gt;
 xinux@zero:~$ cp -r ver1/ ver2/&lt;br /&gt;
&lt;br /&gt;
Eine Kopie erstellen zum Archivieren (-dpr):&lt;br /&gt;
&lt;br /&gt;
 xinux@zero:~$ cp -a ver1/ ver2/&lt;br /&gt;
&lt;br /&gt;
===rm: Löschen einer Datei===&lt;br /&gt;
&lt;br /&gt;
Um Dateien zu löschen, brauchen wir das Kommando &amp;quot;rm&amp;quot;:&lt;br /&gt;
&lt;br /&gt;
 rm               dat1        dat1 wird gelöscht&lt;br /&gt;
 rm         -i    dat1        dat1 wird nach Bestätigung gelöscht&lt;br /&gt;
 rm         -f    dat1        dat1 wird ohne Rückfragen gelöscht&lt;br /&gt;
 rm         -v    dat1        dat1 wird glöscht (geschwätzige Ausgabe)&lt;br /&gt;
 rm         -r    ver1        Löschen von nicht leeren Verzeichnissen&lt;br /&gt;
                              Achtung !!! Als root kann man sich damit Teile&lt;br /&gt;
                              oder sogar den gesamten Verzeichnisbaum&lt;br /&gt;
                              absägen !!!&lt;br /&gt;
&lt;br /&gt;
===mv: Verschieben===&lt;br /&gt;
&lt;br /&gt;
Mit dem Befehl &amp;quot;mv&amp;quot; werden Daten verschoben, folgendes gilt:&lt;br /&gt;
&lt;br /&gt;
 mv          dat1 dat2         &lt;br /&gt;
Die Datei dat1 wird in dat2 umbenannt&lt;br /&gt;
 mv          dat1 /ver1        &lt;br /&gt;
Die Datei dat1 wird nach /ver1 verschoben&lt;br /&gt;
&lt;br /&gt;
Die Parameter und ihre Bedeutung:&lt;br /&gt;
&lt;br /&gt;
      -i                      wenn eine Datei exisitiert wird vor dem&lt;br /&gt;
                              Überschreiben nachgefragt&lt;br /&gt;
      -v                      verbose (geschwätzig)&lt;br /&gt;
      -u                      nur neuere Daten werden bei Bedarf überschrieben&lt;br /&gt;
      -b                      wenn überschrieben werden soll, wird ein Backup&lt;br /&gt;
                              erstellt&lt;br /&gt;
      -S ENDUNG               das Backup bekommt die Endung ENDUNG&lt;br /&gt;
&lt;br /&gt;
===su Benutzer wechseln===&lt;br /&gt;
&lt;br /&gt;
 su -             &lt;br /&gt;
Wechsel zum Rootaccount, wie wenn dieser sich neu anmelden würde. (Bsp: su -)&lt;br /&gt;
&lt;br /&gt;
 su Benutzernamen &lt;br /&gt;
Wechsel der Identität zu Benutzer (gegebenenfalls Passwortabfrage)&lt;br /&gt;
&lt;br /&gt;
 su -c Kommando   &lt;br /&gt;
Kommando wird als rootaccount ausgeführt&lt;br /&gt;
&lt;br /&gt;
==Der Standard Editor vi==&lt;br /&gt;
Der vi ist der Standardeditor in der Unixwelt. Er ist in jedem Unix-Derivat&lt;br /&gt;
enthalten.&lt;br /&gt;
Der Editor hat zwar den schlechten Ruf umständlich zu bedienen zu sein, ist&lt;br /&gt;
jedoch sehr leistungsfähig und systemübergreifend verfügbar. Beim vi handelt es&lt;br /&gt;
sich um einen rein textorientierten Editor, der mittels eigener Kommandos&lt;br /&gt;
gesteuert wird.&lt;br /&gt;
&lt;br /&gt;
Der Editor VIM ist eine weitere Verbesserung von VI und leichter zu bedienen.&lt;br /&gt;
Und unter Ubuntu/Debian mit &amp;quot;apt-get install vim&amp;quot; zu installieren.&lt;br /&gt;
&lt;br /&gt;
===Starten des Editors:===&lt;br /&gt;
&lt;br /&gt;
Der Editorstart erfolgt einfach durch die Eingabe des Kommandos vi mit dem&lt;br /&gt;
Dateinamen der zu editierenden Datei als Parameter.&lt;br /&gt;
Beispiel:        &lt;br /&gt;
 vi sux.txt&lt;br /&gt;
&lt;br /&gt;
===Die Betriebsmodi des vi:===&lt;br /&gt;
&lt;br /&gt;
Ein Umstand, der dem vi den Ruf der komplizierten Bedienbarkeit zugetragen hat,&lt;br /&gt;
sind die unterschiedlichen Betriebsmodi des Editors. Genauer gesagt verfügt der&lt;br /&gt;
vi über drei Betriebsmodi:&lt;br /&gt;
&lt;br /&gt;
====Kommandomodus:====&lt;br /&gt;
&lt;br /&gt;
Innerhalb dieses Modus werden die eingegebenen Zeichen direkt als Befehle des&lt;br /&gt;
Editors interpretiert und ausgeführt. Dabei gibt es weder ein Bereitschaftszeichen&lt;br /&gt;
(Prompt) noch ein Echo (Ausgabe). Der Kommandomodus ist der Modus, in dem&lt;br /&gt;
sich der vi direkt nach seinem Start befindet.&lt;br /&gt;
&lt;br /&gt;
====Zeilenmodus oder Exmodus:====&lt;br /&gt;
&lt;br /&gt;
Dieser Modus ist der einzige Modus mit einem eigenen Bereitschaftszeichen,&lt;br /&gt;
nämlich dem Doppelpunkt (:). Das Prompt wird ebenso wie die Befehlsausgaben&lt;br /&gt;
in der Statuszeile angezeigt.&lt;br /&gt;
&lt;br /&gt;
====Eingabemodus:====&lt;br /&gt;
&lt;br /&gt;
Der Eingabemodus ist derjenige, in welchem der zu bearbeitende Text bearbeitet&lt;br /&gt;
werden kann. Alle hier eingegebenen Zeichen werden als Text für die aktuelle&lt;br /&gt;
Datei interpretiert. Zwischen den unterschiedlichen Modi kann jederzeit&lt;br /&gt;
gewechselt werden. Von Kommandomodus gelangen Sie durch mehere Wege in&lt;br /&gt;
den Eingabemodus. Man kann durch folgende Aktionen wechslen&lt;br /&gt;
&lt;br /&gt;
{| border=1 cellpadding=2&lt;br /&gt;
|i&lt;br /&gt;
|Text vor der aktuellen Cursorposition einfügen&lt;br /&gt;
|-&lt;br /&gt;
|I&lt;br /&gt;
|Text am Zeilenanfang einfügen&lt;br /&gt;
|-&lt;br /&gt;
|a&lt;br /&gt;
|Text hinter der aktuellen Cursorposition einfügen&lt;br /&gt;
|-&lt;br /&gt;
|A&lt;br /&gt;
|Text am Zeilenende einfügen&lt;br /&gt;
|-&lt;br /&gt;
|o&lt;br /&gt;
|Unterhalb der aktuellen Zeile eine neue Zeile einfügen&lt;br /&gt;
|-&lt;br /&gt;
|O&lt;br /&gt;
|Oberhalb der aktuellen Zeile eine neue Zeile einfügen&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Durch das Drücken der ESC - Taste gelangt man in den Kommandomodus zurück.&lt;br /&gt;
&lt;br /&gt;
Im Kommandomodus können Sie durch den Text navigieren und auch den Text&lt;br /&gt;
selbst bearbeiten, z.B ausschneiden, kopieren usw. Dazu sind einige Kommandos&lt;br /&gt;
nötig, von denen die wichtigsten im Folgenden erläutert werden:&lt;br /&gt;
&lt;br /&gt;
 xinux@zero:/$ vi iwas.txt&lt;br /&gt;
&lt;br /&gt;
[[Image:vim.jpg]]&lt;br /&gt;
&lt;br /&gt;
===Benutzen des Kommandomodus===&lt;br /&gt;
====Steuerung des Cursors durch den Text====&lt;br /&gt;
&lt;br /&gt;
Mittels folgender Kommandos bewegt sich der Cursor durch den Text:&lt;br /&gt;
&lt;br /&gt;
{| border=1 cellpadding=2&lt;br /&gt;
|h&lt;br /&gt;
|Cursor ein Zeichen nach links&lt;br /&gt;
|-&lt;br /&gt;
|l&lt;br /&gt;
|Cursor ein Zeichen nach rechts&lt;br /&gt;
|-&lt;br /&gt;
|k&lt;br /&gt;
|Cursor eine Zeile nach oben&lt;br /&gt;
|-&lt;br /&gt;
|j&lt;br /&gt;
|Cursor eine Zeile nach unten&lt;br /&gt;
|-&lt;br /&gt;
|w&lt;br /&gt;
|Cursor ein Wort nach rechts&lt;br /&gt;
|-&lt;br /&gt;
|b&lt;br /&gt;
|Cursor ein Wort nach links&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Alle diese Kommandos können mit einem vorgestellten Wiederholungsfaktor&lt;br /&gt;
arbeiten. Der Befehl 3w verschiebt demnach den Cursor um 3 Wörter nach rechts.&lt;br /&gt;
&lt;br /&gt;
====Angaben zur Positionierung====&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{| border=1 cellpadding=2&lt;br /&gt;
|STRG+U&lt;br /&gt;
|1⁄2 Bildschirmseite nach oben&lt;br /&gt;
|-&lt;br /&gt;
|STRG+D&lt;br /&gt;
|1⁄2 Bildschirmseite nach unten&lt;br /&gt;
|-&lt;br /&gt;
|STRG+B&lt;br /&gt;
|1 Bildschirmseite nach oben&lt;br /&gt;
|-&lt;br /&gt;
|STRG+F&lt;br /&gt;
|1 Bildschirmseite nach unten&lt;br /&gt;
|-&lt;br /&gt;
|/Ausdruck&lt;br /&gt;
|Sucht den Ausdruck (vorwärts) Weitersuchen mit n , N&lt;br /&gt;
|-&lt;br /&gt;
|?Ausdruck&lt;br /&gt;
|Sucht den Ausdurck (rückwärts) Weitersuchen mit n , N&lt;br /&gt;
|-&lt;br /&gt;
|0&lt;br /&gt;
|Zeilenanfang&lt;br /&gt;
|-&lt;br /&gt;
|$&lt;br /&gt;
|Zeilenende&lt;br /&gt;
|-&lt;br /&gt;
|w&lt;br /&gt;
|Nächstes Wort&lt;br /&gt;
|-&lt;br /&gt;
|b&lt;br /&gt;
|Vorheriges Wort&lt;br /&gt;
|-&lt;br /&gt;
|fc&lt;br /&gt;
|Auf das Zeichen c springen. c steht für ein beliebiges Zeichen&lt;br /&gt;
|-&lt;br /&gt;
|G&lt;br /&gt;
|Letzte Zeile der Datei&lt;br /&gt;
|-&lt;br /&gt;
|ng&lt;br /&gt;
|n-te Zeile der Datei&lt;br /&gt;
|-&lt;br /&gt;
|H&lt;br /&gt;
|Anfang der Bildschirmseite&lt;br /&gt;
|-&lt;br /&gt;
|L&lt;br /&gt;
|Ende der Bildschirmseite&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
====Befehle zur Textbearbeitung -&amp;gt; Was soll geschehen====&lt;br /&gt;
&lt;br /&gt;
{| Border=1 Cellpadding=2&lt;br /&gt;
|x&lt;br /&gt;
|Löscht Zeichen&lt;br /&gt;
|-&lt;br /&gt;
|d&lt;br /&gt;
|Löschen und in den Puffer laden&lt;br /&gt;
|-&lt;br /&gt;
|c&lt;br /&gt;
|Ändern&lt;br /&gt;
|-&lt;br /&gt;
|y&lt;br /&gt;
|In den Puffer laden&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
====Weitere wichtige Befehle:====&lt;br /&gt;
&lt;br /&gt;
{| Border=1 Cellpadding=2&lt;br /&gt;
|p&lt;br /&gt;
|Aus dem Puffer einfügen&lt;br /&gt;
|-&lt;br /&gt;
|u&lt;br /&gt;
|Undo, macht den letzten Befehl rückgängig&lt;br /&gt;
|-&lt;br /&gt;
|STRG+R&lt;br /&gt;
|Redo, macht den letzten Undo rückgängig&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
===Zeilen- oder Exmodus===&lt;br /&gt;
&lt;br /&gt;
Wie schon erwähnt wird der Zeilen oder Exmodus durch einen : eingeleitet.&lt;br /&gt;
Es folgen einige Beispiele.&lt;br /&gt;
&lt;br /&gt;
Befehle zum Speichern und Beenden:&lt;br /&gt;
&lt;br /&gt;
 :w          Schreibt Datei&lt;br /&gt;
 :w Datei2   Schreibt eine Kopie in Datei2&lt;br /&gt;
 :w !        Schreibt Datei (übergehe Schreibschutz)&lt;br /&gt;
 :w ! Datei2 Schreibt eine Kopie in Datei2 (übergehe Schreibschutz)&lt;br /&gt;
 :q          Schließe Datei&lt;br /&gt;
 :q!         Schließe Datei (verwerfe Änderungen)&lt;br /&gt;
 :wq         Schreibe Datei und beende Editor&lt;br /&gt;
 :wq!        Schreibe Datei und beende Editor (übergehe Schreibschutz)&lt;br /&gt;
 :q!         Schließe Datei (verwerfe Änderungen)&lt;br /&gt;
 :h          Hilfe anzeigen, durch drücken von :q Beenden der Hilfe&lt;br /&gt;
 :e Datei3   Editiere Datei3&lt;br /&gt;
 :e #        Editere vorhergehende Datei&lt;br /&gt;
 :1,3co9     Kopiere von der ersten bis zu dritten Zeile &lt;br /&gt;
             und füge den Inhalt unterhalb der neunte Zeile ein.&lt;br /&gt;
&lt;br /&gt;
Interaktionen mit Unix:&lt;br /&gt;
&lt;br /&gt;
 :r Datei4   Fügt Inhalt der Datei4 nach dem Cursor ein&lt;br /&gt;
 :r ! Befehl Fügt Ausgabe des Befehls nach dem Cursor ein&lt;br /&gt;
 :! Befehl   Führt den Befehl aus&lt;br /&gt;
 :sh         Starte Subshell -&amp;gt; mit exit kehrt man wieder zurück&lt;br /&gt;
             Eingabemodus zurück&lt;br /&gt;
&lt;br /&gt;
====Ersetzen von Textteilen====&lt;br /&gt;
&lt;br /&gt;
Die grundsätzliche Syntax lautet:&lt;br /&gt;
&lt;br /&gt;
 :[Zeilennummer,Zeilennummer]s/Muster/Ersetzung/[gc]&lt;br /&gt;
&lt;br /&gt;
 :s/worf/kirn/              der erste worf wird in der aktuellen Zeile durch kirn ersetzt&lt;br /&gt;
 :1,9s/worf/kirn/g          von der 1. bis zur 9. Zeile werden alle worf durch kirn ersetzt&lt;br /&gt;
 :1,$s/worf/kirn/           von der ersten bis zur letzten Zeile ersetze ersten worf durch&lt;br /&gt;
                            kirn&lt;br /&gt;
 :.,$s/worf/kirn/g          von der aktuellen bis zur letzten Zeile ersetze alle worf durch&lt;br /&gt;
                            kirn&lt;br /&gt;
 :1,.s/worf/kirn/c          von der 1. bis zur aktuellen Zeile ersetze worf durch kirn, frage&lt;br /&gt;
                            aber nach&lt;br /&gt;
 :1,$s/^worf/kirn/          von der ersten bis zur letzten Zeile ersetze worf am&lt;br /&gt;
                            Zeilenanfang durch kirn&lt;br /&gt;
 :4,$s/worf$/kirn/          von der 4. bis zur letzten Zeile ersetze worf am Zeilenende&lt;br /&gt;
                            durch kirn&lt;br /&gt;
 :1,$s/^#//                 lösche alle Kommentarzeichen&lt;br /&gt;
 :1,$s/^.orf/kirn/           ersetze alles was am Zeilenanfang ein beliebiges Zeichen hat&lt;br /&gt;
                            gefolgt von einem orf durch kirn&lt;br /&gt;
 :1,$s/^[A-Z]orf/kirn/g     suche nach einem Großbuchstaben am Anfang der Zeile&lt;br /&gt;
                            gefolgt von einem orf und ersetze durch kirn&lt;br /&gt;
 :1,$s/^M[ae][iy]e*r/kirn/  suche alles, was am Anfang der Zeile ein großes M enthält,&lt;br /&gt;
                            gefolgt von einem a oder e , gefolgt von einem i oder y ,&lt;br /&gt;
                            gefolgt von einem e , welches 0 oder N mal vorkommen kann,&lt;br /&gt;
                            gefolgt von einem r und ersetze es durch kirn&lt;br /&gt;
&lt;br /&gt;
==Reguläre Ausdrücke==&lt;br /&gt;
&lt;br /&gt;
{| Border=1 Cellpadding=2&lt;br /&gt;
|c&lt;br /&gt;
|Ein einzelner Buchstabe passt auf sich selbst&lt;br /&gt;
|-&lt;br /&gt;
|.&lt;br /&gt;
|Ein Punkt passt auf jedes Zeichen außer auf das Zeilenende&lt;br /&gt;
|-&lt;br /&gt;
|*&lt;br /&gt;
|Das dem Operator * vorangehende Muster kann 0 oder öfter vorkommen&lt;br /&gt;
|-&lt;br /&gt;
|^&lt;br /&gt;
|(Caret) passt auf den Zeilenanfang&lt;br /&gt;
|-&lt;br /&gt;
|$&lt;br /&gt;
|Passt auf das Zeilenende&lt;br /&gt;
|-&lt;br /&gt;
|\&lt;br /&gt;
|Das folgende Sonderzeichen wird entwertet&lt;br /&gt;
|-&lt;br /&gt;
|[...]&lt;br /&gt;
|Passt auf &amp;quot;genau&amp;quot; eins in [...] angebenen Zeichen&lt;br /&gt;
|-&lt;br /&gt;
|[^...]&lt;br /&gt;
|Passt auf &amp;quot;genau&amp;quot; ein Zeichen welches nicht in [...] angebenen ist&lt;br /&gt;
|-&lt;br /&gt;
|\&amp;lt;&lt;br /&gt;
|Passt auf den Wortanfang&lt;br /&gt;
|-&lt;br /&gt;
|\&amp;gt;&lt;br /&gt;
|Passt auf das Wortende&lt;br /&gt;
|-&lt;br /&gt;
|\+&lt;br /&gt;
|Das dem Operator \+ vorangehende Muster kann 1 oder öfter vorkommen&lt;br /&gt;
|-&lt;br /&gt;
|&amp;amp;&lt;br /&gt;
|Setzt das gefunden Suchmuster ein&lt;br /&gt;
|-&lt;br /&gt;
|\(...\)&lt;br /&gt;
|Speichert den Text auf den das Suchmuster passt zur späteren Verwendung&lt;br /&gt;
|-&lt;br /&gt;
|\n&lt;br /&gt;
|Setzt das vorangehende, mit \(...\) Gefundene wieder ein&lt;br /&gt;
|-&lt;br /&gt;
|(...)&lt;br /&gt;
|Gruppiert Auswahlmöglichkeiten&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;nowiki&amp;gt;|&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
|Trennt Auswahlmöglichkeiten&lt;br /&gt;
|-&lt;br /&gt;
|\b&lt;br /&gt;
|Passt auf den Anfang oder das Ende eines Wortes&lt;br /&gt;
|-&lt;br /&gt;
|\B&lt;br /&gt;
|Symbolisiert den Raum innerhalb eines Wortes&lt;br /&gt;
|-&lt;br /&gt;
|\w&lt;br /&gt;
|Passt auf alle alphanumerischen Zeichen [A-Za-z0-9]&lt;br /&gt;
|-&lt;br /&gt;
|\W&lt;br /&gt;
|Passt auf alle nichtalphanumerischen Zeichen [^A-Za-z0-9]&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Die Rangfolge der Operatoren(von der höchsten zur niedrigsten)&lt;br /&gt;
:(, ), ?, *, + | .&lt;br /&gt;
&lt;br /&gt;
Die anderen Operatoren sind mit den anderen Buchstaben gleichrangig.&lt;br /&gt;
&lt;br /&gt;
===Beispiel zum Suchen===&lt;br /&gt;
&lt;br /&gt;
 Suchmuster               Passt auf&lt;br /&gt;
 ^Tuxer                   Tuxer am Zeilenanfang&lt;br /&gt;
 [tT]uxer                 Tuxer oder tuxer&lt;br /&gt;
 80[23]?86                8086, 80286 oder 80386&lt;br /&gt;
&lt;br /&gt;
===grep===&lt;br /&gt;
&lt;br /&gt;
Mit grep ist es möglich, in Dateien nach regulären Ausdrücken zu suchen. Wenn&lt;br /&gt;
eine Übereinstimmung gefunden wird, wird die komplette Zeile auf die&lt;br /&gt;
Standardausgabe geschrieben. grep kann auch von STDIN lesen.Es ist&lt;br /&gt;
empfehlenswert, sich anzugwöhnen ,das Suchmuster in Anführungszeichen zu&lt;br /&gt;
schreiben. Es gibt 3 Arten fgrep = fastgrep , grep und egrep egrep&lt;br /&gt;
&lt;br /&gt;
Beispiel:&lt;br /&gt;
&lt;br /&gt;
 root@zero:~# cat text&lt;br /&gt;
 quatsch&lt;br /&gt;
 quatsch&lt;br /&gt;
 quatsch&lt;br /&gt;
 wichtig&lt;br /&gt;
 quatsch&lt;br /&gt;
 root@zero:~# grep wichtig text&lt;br /&gt;
 wichtig&lt;br /&gt;
 root@zero:~# &lt;br /&gt;
&lt;br /&gt;
 -c                   meldet nur die Gesamtzahl der Fundstellen&lt;br /&gt;
 -v                   zeigt nur Zeilen, die »Ausdruck« nicht enthalten&lt;br /&gt;
 -i                   ignoriert Groß- und Kleinschreibung&lt;br /&gt;
 -l                    meldet nur Dateinamen mit Fundstellen&lt;br /&gt;
 -n                   listet Zeilennummern zu jeder Fundstelle&lt;br /&gt;
 -f                   Dateiname »Dateiname« enthält die Such-Ausdrücke&lt;br /&gt;
 -E                   ist ein erweiterter regulärer Ausdruck (egrep)&lt;br /&gt;
 -F                   (Muster, Ausdruck) ist ein Muster (String) (fgrep)&lt;br /&gt;
 -b                   listet auch die Position der Fundstellen&lt;br /&gt;
 -C    Anzahl         Anzahl von Zeilen werden nach der Fundstelle ausgegeben&lt;br /&gt;
 -B    Anzahl         Anzahl von Zeilen werden vor der Fundstelle ausgegeben&lt;br /&gt;
 -r                   Durchsucht Verzeichnisse rekursiv&lt;br /&gt;
&lt;br /&gt;
==Useridendifikation==&lt;br /&gt;
===/etc/passwd===&lt;br /&gt;
====Beschreibung====&lt;br /&gt;
passwd ist eine ASCII-Datei, die eine Liste der Benutzer des Systems und deren&lt;br /&gt;
Passwörter enthält. Die Passwortdatei sollte für alle Benutzer lesbar sein, was für&lt;br /&gt;
dieVerschlüsselung notwendig ist; aber nur vom Superuser beschreibbar. Wenn&lt;br /&gt;
Sie eine neue Kennung einrichten, lassen Sie das Passwort-Feld in der Datei frei&lt;br /&gt;
und benutzen Sie passwd(1), um dem System ein Passwort für die neue Kennung&lt;br /&gt;
mitzuteilen.&lt;br /&gt;
&lt;br /&gt;
Die Datei /etc/passwd enthält einen Eintrag pro Zeile mit dem Format:&lt;br /&gt;
login_name:passwd:UID:GID:user_name:directory:shell&lt;br /&gt;
====Die Bedeutung der Felder:====&lt;br /&gt;
# login_name Kennung des Benutzers auf dem System.&lt;br /&gt;
# password   Hier steht bei Shadowsystemen ein x. Die Passwörter sind in der Datei /etc/shadow&lt;br /&gt;
# UID        Die numerische Benutzernummer.&lt;br /&gt;
#  GID        Die numerische Gruppennummer des Benutzers.&lt;br /&gt;
# user_name Ein optionales Kommentarfeld, oft benutzt für den vollen Namen des Benutzers und weitere Informationen (Telefon, Raum-Nummer etc.).&lt;br /&gt;
# directory  Das Heimatverzeichnis $HOME des Benutzers.&lt;br /&gt;
# shell      Das Programm, das beim Einloggen gestartet werden soll (falls nicht nötig, benutzen Sie /bin/bash).&lt;br /&gt;
&lt;br /&gt;
===/etc/group===&lt;br /&gt;
====Beschreibung====&lt;br /&gt;
etc/group ist eine ASCII Datei, die Gruppen definiert, zu denen Benutzer&lt;br /&gt;
gehören. Es gibt nur einen Eintrag pro Zeile; jede Zeile hat folgendes Format:&lt;br /&gt;
         GruppenName:Passwort:GruppenKennung:BenutzerListe&lt;br /&gt;
Beschreibung der Felder:&lt;br /&gt;
#     GruppenName      Die Bezeichnung der Gruppe.&lt;br /&gt;
#     Passwort         Das (verschlüsselte) Gruppen-Passwort. Wenn dieses Feld leer ist, wird kein Passwort benötigt.&lt;br /&gt;
#     GruppenKennung Die numerische Identifikation der Gruppe.&lt;br /&gt;
#     BenutzerListe    Alle Namen der Mitglieder, getrennt durch Kommas.&lt;br /&gt;
&lt;br /&gt;
===/etc/shadow===&lt;br /&gt;
====Beschreibung====&lt;br /&gt;
shadow beinhaltet Informationen zu den verschlüsselten Passwörten, zu den&lt;br /&gt;
Benutzerzugängen und weitere Informationen zur Laufzeit der Passwörter.&lt;br /&gt;
 Name:Passwort:Letzte Änderung:Mintage:Maxtage:Warntage:Inaktiv:Ablauf&lt;br /&gt;
#    Der Loginname&lt;br /&gt;
#    verschlüsseltes Passwort &lt;br /&gt;
&amp;lt;nowiki&amp;gt;*&amp;lt;/nowiki&amp;gt; bedeutet Benutzer kann sich nicht einlogen&lt;br /&gt;
! bedeutet Benutzer hat kein Passwort gesetzt&lt;br /&gt;
#    Tage seit dem 1 Januar 1970 an dem das Passwort letztmals geändert wurde&lt;br /&gt;
#    Tage, die das Passwort behalten werden muss, bevor es wieder geändert werden kann&lt;br /&gt;
#     Die Anzahl der Tage, nach denen der Benutzer das Passwort wieder ändern muss&lt;br /&gt;
#    Anzahl der Tage bevor das Passwort abläuft und der Benutzer gewarnt wird&lt;br /&gt;
#    Wenn der Zugang diese Anzahl von Tagen nicht benutzt wird, wird der Zugang gesperrt&lt;br /&gt;
#    Tag seit dem 1 Januar 1970, an dem der Zugang gesperrt wird&lt;br /&gt;
#    Reserviertes Feld&lt;br /&gt;
&lt;br /&gt;
Die Datei sollte aus Sicherheitgründen nicht für einen normalen Benutzer lesbar&lt;br /&gt;
sein.&lt;br /&gt;
&lt;br /&gt;
==Programme zur Userverwaltung==&lt;br /&gt;
===useradd===&lt;br /&gt;
User anlegen&lt;br /&gt;
 root@zero:~# useradd -m -u 1011 -g users -G admin -d /home/erwin -s /bin/bash -c &amp;quot;Erwin Lehman&amp;quot;  erwin&lt;br /&gt;
{| border=1 cellpadding=2&lt;br /&gt;
|&amp;quot;-m&amp;quot;&lt;br /&gt;
|Lege Homedirectory an&lt;br /&gt;
|-&lt;br /&gt;
|&amp;quot;-u 1011&amp;quot;&lt;br /&gt;
|Userid wird zugeordnet&lt;br /&gt;
|-&lt;br /&gt;
|&amp;quot;-g users&amp;quot;&lt;br /&gt;
|Primäre Gruppe wird zugeordnet&lt;br /&gt;
|-&lt;br /&gt;
|&amp;quot;-G admin&amp;quot;&lt;br /&gt;
|Sekunbdäre Gruppe wird zugeordnet&lt;br /&gt;
|-&lt;br /&gt;
|&amp;quot;-d /home/erwin/&amp;quot;&lt;br /&gt;
|Name des Homedirectory&lt;br /&gt;
|-&lt;br /&gt;
|&amp;quot;-s /bin/bash&amp;quot;&lt;br /&gt;
|Bash wird zugeordnet&lt;br /&gt;
|- &lt;br /&gt;
|&amp;quot;-c Erwin Lehman&amp;quot;&lt;br /&gt;
|Kommentarfeld&lt;br /&gt;
|-&lt;br /&gt;
|&amp;quot;erwin&amp;quot; &lt;br /&gt;
|Name des Users&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Defaulteinstellungen anzeigen&lt;br /&gt;
 root@zero:~# useradd -D&lt;br /&gt;
 GROUP=100&lt;br /&gt;
 HOME=/home&lt;br /&gt;
 INACTIVE=-1&lt;br /&gt;
 EXPIRE=&lt;br /&gt;
 SHELL=/bin/sh&lt;br /&gt;
 SKEL=/etc/skel&lt;br /&gt;
 CREATE_MAIL_SPOOL=no&lt;br /&gt;
&lt;br /&gt;
Defaulteinstellungen ändern&lt;br /&gt;
 useradd -D -s /bin/bash&lt;br /&gt;
&lt;br /&gt;
Konfigurationsdatei&lt;br /&gt;
 root@zero:~# cat /etc/default/useradd &lt;br /&gt;
 SHELL=/bin/bash&lt;br /&gt;
 GROUP=100&lt;br /&gt;
 HOME=/home&lt;br /&gt;
 INACTIVE=-1&lt;br /&gt;
 EXPIRE=&lt;br /&gt;
 SKEL=/etc/skel&lt;br /&gt;
 CREATE_MAIL_SPOOL=no&lt;br /&gt;
&lt;br /&gt;
===usermod===&lt;br /&gt;
User modifizieren&lt;br /&gt;
 root@zero:~# usermod -l fritz -s /bin/sh -G admin,video erwin&lt;br /&gt;
{| border=1 cellpadding=2&lt;br /&gt;
|&amp;quot;-l fritz&amp;quot;&lt;br /&gt;
|Neuer Username&lt;br /&gt;
|-&lt;br /&gt;
|&amp;quot;-s /bin/sh&amp;quot;&lt;br /&gt;
|Neue Shell&lt;br /&gt;
|-&lt;br /&gt;
|&amp;quot;-G admin, video&amp;quot;&lt;br /&gt;
|Sekunbdäre Gruppen werden zugeordnet&lt;br /&gt;
|-&lt;br /&gt;
|&amp;quot;erwin&amp;quot; &lt;br /&gt;
|Name des Users&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
===userdel===&lt;br /&gt;
User inklusive Homedirectory löschen&lt;br /&gt;
 root@zero:~# userdel -r fritz&lt;br /&gt;
&lt;br /&gt;
===passwd===&lt;br /&gt;
Rootpasswort ändern&lt;br /&gt;
 root@zero:~# passwd &lt;br /&gt;
 Geben Sie ein neues UNIX Passwort ein:'''sysadm''' &lt;br /&gt;
 Geben Sie das neue UNIX Passwort erneut ein:'''sysadm''' &lt;br /&gt;
 passwd: Passwort erfolgreich geändert&lt;br /&gt;
&lt;br /&gt;
Passwort von tux ändern&lt;br /&gt;
 root@zero:~# passwd tux&lt;br /&gt;
 Geben Sie ein neues UNIX Passwort ein:'''suxer''' &lt;br /&gt;
 Geben Sie das neue UNIX Passwort erneut ein:'''suxer'''&lt;br /&gt;
 passwd: Passwort erfolgreich geändert&lt;br /&gt;
&lt;br /&gt;
Minimale und Maximale Gültigkeit des Passwortes von tux festlegen&lt;br /&gt;
 root@zero:~# passwd -n 5 -x 120 tux&lt;br /&gt;
&lt;br /&gt;
===groupadd===&lt;br /&gt;
 root@zero:~# groupadd -f -g 2001 xinuxer&lt;br /&gt;
{| border=1 cellpadding=2&lt;br /&gt;
|&amp;quot;-f&amp;quot;&lt;br /&gt;
|Überschreibe bestehende Gruppe&lt;br /&gt;
|-&lt;br /&gt;
|&amp;quot;-g 2001&amp;quot;&lt;br /&gt;
|GID der Gruppe&lt;br /&gt;
|-&lt;br /&gt;
|&amp;quot;xinuxer&amp;quot; &lt;br /&gt;
|Name des Gruppe&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==chmod==&lt;br /&gt;
Die Syntax des Befehls chmod lautet:&lt;br /&gt;
&lt;br /&gt;
'''chmod''' WerWieWas [,WerWieWas,.....] Dateiliste&lt;br /&gt;
&lt;br /&gt;
oder&lt;br /&gt;
&lt;br /&gt;
'''chmod''' Oktalzahl Dateiliste&lt;br /&gt;
&lt;br /&gt;
Durch WerWieWas bzw. Oktalzahl wird die Rechtetabelle definiert. Innerhalb von&lt;br /&gt;
WerWieWas darf es kein Leerzeichen geben. Wer bezeichnet den Benutzerkreis,&lt;br /&gt;
dem man Rechte gibt, Wie die Art, in der die Rechte gegeben werden und Was die&lt;br /&gt;
Rechte als solche. Im einzelnen können folgende Kürzel benutzt werden:&lt;br /&gt;
&lt;br /&gt;
Für Wer kann eines der folgenden Kürzel oder eine Kombination davon stehen:&lt;br /&gt;
 u                   (user) Rechte für den Dateibesitzer&lt;br /&gt;
 g                   (group) Rechte für die Gruppe&lt;br /&gt;
 o                   (others) Rechte für alle anderen Benutzer&lt;br /&gt;
 a                   (all) Rechte für alle Benutzer&lt;br /&gt;
Für Wie steht eines der folgenden Kürzel:&lt;br /&gt;
 +                   Die Rechte werden zu den vorhandenen zusätzlich vergeben&lt;br /&gt;
 -                   Die im Folgenden genannten Rechte werden entzogen&lt;br /&gt;
 =                   Die im Folgenden genannten Rechte ersetzen die bisherigen&lt;br /&gt;
Für Was steht eines der folgenden Kürzel:&lt;br /&gt;
 r                   (read) lesen&lt;br /&gt;
 w                   (write) schreiben&lt;br /&gt;
 x                   (execute) ausführen&lt;br /&gt;
oder diese Sonderformen&lt;br /&gt;
 s                   (usersbit) Programm läuft unter der UID des Besitzers&lt;br /&gt;
 s                   (groupsbit)Programm läuft unter der GID des GRUPPE&lt;br /&gt;
 t                   (stickybit) Dateien im Verzeichnis darf nur Besitzer löschen&lt;br /&gt;
&lt;br /&gt;
===Beispiel===&lt;br /&gt;
Setze für alle Schreib- und Leserecht&lt;br /&gt;
 xinux@zero:~$ chmod a=rw test &lt;br /&gt;
 xinux@zero:~$ ls -l test &lt;br /&gt;
 -rw-rw-rw- 1 xinux xinux 0 2009-06-16 12:01 test&lt;br /&gt;
 xinux@zero:~$ &lt;br /&gt;
&lt;br /&gt;
Erteile Besitzer Ausführungsrecht&lt;br /&gt;
 xinux@zero:~$ chmod u+x test ; ls -l test &lt;br /&gt;
 -rwxrw-rw- 1 xinux xinux 0 2009-06-16 12:01 test&lt;br /&gt;
 xinux@zero:~$ &lt;br /&gt;
&lt;br /&gt;
===chmod oktale Schreibweise===&lt;br /&gt;
 Specialrights        User           Group         Other&lt;br /&gt;
 usbit gsbit sticky    r    w   x     r   w   x     r   w   x&lt;br /&gt;
   1     1      1      1    1   1     1   1   1     1   1   1&lt;br /&gt;
   0     0      0      0    0   0     0   0   0     0   0   0&lt;br /&gt;
 Oktale Wertigkeit pro Recht&lt;br /&gt;
   4     2       1     4    2   1     4   2   1     4   2   1&lt;br /&gt;
&lt;br /&gt;
===Beispiele===&lt;br /&gt;
 xinux@zero:~$ chmod 751 test ; ls -l test&lt;br /&gt;
 -rwxr-x--x 1 xinux xinux 0 2009-06-16 12:01 test&lt;br /&gt;
 xinux@zero:~$ &lt;br /&gt;
&lt;br /&gt;
 xinux@zero:~$ chmod 4770 test ; ls -l test&lt;br /&gt;
 -rwsrwx--- 1 xinux xinux 0 2009-06-16 12:01 test&lt;br /&gt;
 xinux@zero:~$ &lt;br /&gt;
&lt;br /&gt;
 xinux@zero:~$ chmod 0 test ; ls -l test &lt;br /&gt;
 ---------- 1 xinux xinux 0 2009-06-16 12:01 test&lt;br /&gt;
&lt;br /&gt;
===chmod Optionen===&lt;br /&gt;
 -c   (changes) es werden nur die Dateien angezeigt, deren Zugriffsrechte tatsächlich verändert werden&lt;br /&gt;
 -f   (silent, quiet) Fehlermeldungen wegen fehlgeschlagener Änderungsversuche werden unterdrückt&lt;br /&gt;
 -v   (verbose) alle Aktionen werden angezeigt&lt;br /&gt;
 -R   (recursive) die Zugriffsrechte aller Dateien in den Unterverzeichnissen werden ebenfalls geändert&lt;br /&gt;
&lt;br /&gt;
Theoretisch sind alle Kombinationen der Zugriffsrechte denkbar, aber der&lt;br /&gt;
Eigentümer einer Datei darf diese immer lesen, selbst wenn das Lesebit nicht&lt;br /&gt;
gesetzt ist. Genauso macht es wenig Sinn, eine gewöhnliche Textdatei als&lt;br /&gt;
ausführbar zu setzen; die Shell wird damit nichts anfangen können. Ein x für ein&lt;br /&gt;
Verzeichnis gibt an, dass in dieses gewechselt werden kann.&lt;br /&gt;
&lt;br /&gt;
Rechte sind verbindlich&lt;br /&gt;
&lt;br /&gt;
Interessant ist auch ein Konstrukt folgender Art&lt;br /&gt;
 -rwx---rwx&lt;br /&gt;
&lt;br /&gt;
das angibt, dass mit der Datei alles angestellt werden kann, außer durch Nutzer der&lt;br /&gt;
Gruppe. Versucht irgend jemand, der nicht der Gruppe des Eigentümers angehört,&lt;br /&gt;
die Datei zu modifizieren, wird ihm dies gelingen, einem Gruppenmitglied bleibt&lt;br /&gt;
dies versagt, obwohl er ja gleichzeitig ein &amp;quot;Anderer&amp;quot; ist. D.h. die Rechte der&lt;br /&gt;
Gruppe sind verbindlicher, als die Rechte der anderen!&lt;br /&gt;
&lt;br /&gt;
===Bedeutungen der Zugriffsarten===&lt;br /&gt;
====Dateien====&lt;br /&gt;
* r: Der Inhalt der Datei kann gelesen und damit auch kopiert werden. &lt;br /&gt;
 root@zero:~# cat test&lt;br /&gt;
 Dies ist eine Testdatei&lt;br /&gt;
  &lt;br /&gt;
 root@zero:~# cp test backup&lt;br /&gt;
&lt;br /&gt;
* w: Der Inhalt der Datei darf verändert werden. Ob die Datei gelöscht werden kann ist&lt;br /&gt;
keine Eigenschaft der Datei, sondern des Verzeichnisses, indem sich die Datei befindet.&lt;br /&gt;
 root@zero:~# cat &amp;gt; test&lt;br /&gt;
 Hier steht jetzt was anderes&lt;br /&gt;
 ^C&lt;br /&gt;
 root@zero:~# cat test&lt;br /&gt;
 Hier steht jetzt was anderes&lt;br /&gt;
  &lt;br /&gt;
 xinux@zero:~$ ls -ld verzeichnis/&lt;br /&gt;
 dr-xr-xr-x 2 xinux xinux 4096 2009-06-18 11:16 verzeichnis/&lt;br /&gt;
 xinux@zero:~/verzeichnis$ rm text&lt;br /&gt;
 rm: Entfernen von „text“ nicht möglich: Permission denied&lt;br /&gt;
&lt;br /&gt;
* x: Ausführrecht für Programme und Skripte&lt;br /&gt;
 xinux@zero:~$ ./programm&lt;br /&gt;
 -bash: ./programm: Permission denied&lt;br /&gt;
 xinux@zero:~$ chmod +x programm&lt;br /&gt;
 xinux@zero:~$ ./programm&lt;br /&gt;
 Test&lt;br /&gt;
  test&lt;br /&gt;
&lt;br /&gt;
====Verzeichnisse====&lt;br /&gt;
* r: Die Einträge in dem Verzeichnis sind lesbar.&lt;br /&gt;
Leserecht von verzeichnis/ entziehen&lt;br /&gt;
 xinux@zero:~$ chmod a-r verzeichnis/&lt;br /&gt;
 xinux@zero:~$ ls verzeichnis/&lt;br /&gt;
 ls: Öffnen von Verzeichnis verzeichnis/ nicht möglich: Permission denied&lt;br /&gt;
Leserecht für Benutzer und Gruppe vergeben&lt;br /&gt;
 xinux@zero:~$ chmod a+r verzeichnis/&lt;br /&gt;
 xinux@zero:~$ ls verzeichnis/&lt;br /&gt;
 text&lt;br /&gt;
&lt;br /&gt;
* w: Die Einträge in dem Verzeichnis können geändert werden. &lt;br /&gt;
Neue Datei erstellen&lt;br /&gt;
 xinux@zero:~$ touch neu&lt;br /&gt;
 xinux@zero:~$ ls neu&lt;br /&gt;
 neu&lt;br /&gt;
&lt;br /&gt;
Datei löschen&lt;br /&gt;
 xinux@zero:~$ rm neu&lt;br /&gt;
 xinux@zero:~$ ls neu&lt;br /&gt;
 ls: Zugriff auf neu nicht möglich: No such file or directory&lt;br /&gt;
&lt;br /&gt;
* x: Der Name des Verzeichnisses kann in einem Pfadnamen erscheinen.&lt;br /&gt;
Verzeichnis ohne x Recht&lt;br /&gt;
 xinux@zero:~$ chmod a-x verzeichnis/&lt;br /&gt;
Wechseln in Verzeichnis mangels x-Recht nicht möglich&lt;br /&gt;
 xinux@zero:~$ cd verzeichnis/&lt;br /&gt;
 -bash: cd: verzeichnis/: Permission denied&lt;br /&gt;
x-Recht vergeben&lt;br /&gt;
 xinux@zero:~$ chmod a+x verzeichnis/&lt;br /&gt;
damit Wechsel in Verzeichnis möglich&lt;br /&gt;
 xinux@zero:~$ cd verzeichnis/&lt;br /&gt;
 xinux@zero:~/verzeichnis$ pwd&lt;br /&gt;
 /home/xinux/verzeichnis&lt;br /&gt;
&lt;br /&gt;
====umask====&lt;br /&gt;
Neue Dateien und Verzeichnisse werden mit ein und denselben Zufriffsrechten erzeugt.&lt;br /&gt;
 xinux@zero:~$ mkdir text&lt;br /&gt;
 xinux@zero:~$ touch textdat&lt;br /&gt;
 xinux@zero:~$ ls -ld text*&lt;br /&gt;
 drwxr-xr-x 2 xinux xinux 4096 2009-06-18 11:37 text&lt;br /&gt;
 -rw-r--r-- 1 xinux xinux    0 2009-06-18 11:37 textdat&lt;br /&gt;
&lt;br /&gt;
Zuständig für dieses Verhalten ist die sogenannte umask, die oft in der Datei&lt;br /&gt;
/etc/profile auf den Wert 022 voreingestellt ist. Zusätzlich wird noch eine&lt;br /&gt;
Maximalmaske benötigt, die sich für Verzeichnisse und andere Dateien&lt;br /&gt;
unterscheidet. Die bei der Erzeugung gesetzten Rechte entstehen nun, indem von&lt;br /&gt;
der Maximalmaske der durch die umask vorgegebene Wert subtrahiert wird:&lt;br /&gt;
&lt;br /&gt;
{| border=1 cellpadding=2&lt;br /&gt;
!&lt;br /&gt;
! Dateien&lt;br /&gt;
! Verzeichnisse&lt;br /&gt;
|-&lt;br /&gt;
| Systemvorgabe&lt;br /&gt;
| 666&lt;br /&gt;
| 777&lt;br /&gt;
|-&lt;br /&gt;
| -umask&lt;br /&gt;
| 022&lt;br /&gt;
| 022&lt;br /&gt;
|-&lt;br /&gt;
| Ergebnis&lt;br /&gt;
| 644&lt;br /&gt;
| 755&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
 xinux@zero:~$ grep umask /etc/profile&lt;br /&gt;
 umask 022&lt;br /&gt;
&lt;br /&gt;
==Gruppenzugehörigkeit==&lt;br /&gt;
===newgrp===&lt;br /&gt;
Ändert die Gruppenzugehörigkeit eines Benutzers auf die angegebene Gruppe. Wenn keine Gruppe angegeben wird, wird die &lt;br /&gt;
Anmeldegruppe des Benutzers verwendet. Die neue Gruppe wird anschließend fü Zugriffskontrollen verwendet.&lt;br /&gt;
&lt;br /&gt;
 newgrp Gruppenname&lt;br /&gt;
&lt;br /&gt;
 root@zero:~# newgrp hacker&lt;br /&gt;
 root@zero:~# id&lt;br /&gt;
 uid=0(root) gid=1006(hacker) Gruppen=0(root),1006(hacker)&lt;br /&gt;
&lt;br /&gt;
===chgrp===&lt;br /&gt;
Verändert die Besitzugehörigkeit zu der angegebenen Gruppe&lt;br /&gt;
&lt;br /&gt;
 chgrp [Optionen] Gruppe Datei(en)&lt;br /&gt;
&lt;br /&gt;
Optionen:&lt;br /&gt;
 -c Zeigt Veränderungen an&lt;br /&gt;
 -f Unterdrückt die meisten Fehlermeldungen&lt;br /&gt;
 -R Verändert Dateien und Verzeichnisse rekursiv&lt;br /&gt;
 -v Gibt geschwätzige Ausgabe aus.&lt;br /&gt;
&lt;br /&gt;
 root@zero:~# ls -l&lt;br /&gt;
 ...&lt;br /&gt;
 d-wx--x--x  3 root root 4096 2009-06-18 13:34 verzeichnis&lt;br /&gt;
 &lt;br /&gt;
 root@zero:~# chgrp -R xinux verzeichnis/&lt;br /&gt;
 root@zero:~# ls -l&lt;br /&gt;
 ...&lt;br /&gt;
 d-wx--x--x  3 root xinux 4096 2009-06-18 13:34 verzeichnis&lt;br /&gt;
&lt;br /&gt;
 xinux@zero:~$ cd /root/verzeichnis/&lt;br /&gt;
 xinux@zero:/root/verzeichnis$ pwd&lt;br /&gt;
 /root/verzeichnis&lt;br /&gt;
&lt;br /&gt;
===chown===&lt;br /&gt;
Ändert den Eigentümer von einer oder mehreren Dateien in den angegebenen Benutzer. &lt;br /&gt;
chown erlaubt ebenfalls das Ändern der Gruppeneigentümreschaft. Nur der aktuelle Eigentümer einer&lt;br /&gt;
Datei oder der Superuser (root) darf die Eigentumsverhältnisse ändern.&lt;br /&gt;
&lt;br /&gt;
 chown [Optionen] Benutzer(:Gruppe) Dateien&lt;br /&gt;
&lt;br /&gt;
Optionen:&lt;br /&gt;
 -c Gibt Informationen über die veränderten Dateien aus&lt;br /&gt;
 --dereference Symbolischen Links folgen&lt;br /&gt;
 -v Gibt Informationen über alle Dateien aus, die chown zu ändern versucht, egal, ob die Änderung erfolgt ist oder nicht&lt;br /&gt;
 -R Geht rekursiv durch alle Unterverzeichnisse und führt die Änderungen durch. &lt;br /&gt;
&lt;br /&gt;
 root@zero:~# chown -R xinux.xinux verzeichnis/&lt;br /&gt;
 root@zero:~# ls -l&lt;br /&gt;
 insgesamt 12&lt;br /&gt;
 drwx------ 13 root  root  4096 2009-04-21 15:11 profile&lt;br /&gt;
 --w-------  1 root  root     0 2009-06-18 11:13 test&lt;br /&gt;
 -rw-r--r--  1 root  root    40 2009-06-18 12:04 text&lt;br /&gt;
 drwxrwx--x  3 xinux xinux 4096 2009-06-18 13:39 verzeichnis&lt;br /&gt;
 &lt;br /&gt;
 root@zero:~# chown -R -c xinux.xinux verzeichnis/&lt;br /&gt;
 &lt;br /&gt;
 root@zero:~# chown -R -v xinux.xinux verzeichnis/&lt;br /&gt;
 Eigentümer von „verzeichnis/01“ als xinux:xinux erhalten&lt;br /&gt;
 Eigentümer von „verzeichnis/test“ als xinux:xinux erhalten&lt;br /&gt;
 Eigentümer von „verzeichnis/“ als xinux:xinux erhalten&lt;br /&gt;
&lt;br /&gt;
==Eingabe/Ausgabe==&lt;br /&gt;
Standardeingabe (0): Laufende Programme erwarten von hier ihre Eingaben (normalerweise handelt es sich um die Tastatur).&lt;br /&gt;
&lt;br /&gt;
Standardausgabe (1): Programme schreiben auf diese ihre Ausgaben (Bildschirm).&lt;br /&gt;
&lt;br /&gt;
Standardfehlerausgabe (2) : Fehlerausgaben landen hier (Bildschirm, aber nur die aktive Konsole).&lt;br /&gt;
&lt;br /&gt;
[[Bild:std.jpg]]&lt;br /&gt;
&lt;br /&gt;
===cat===&lt;br /&gt;
Das Programm cat liest von STDIN und gibt es STDOUT wieder aus&lt;br /&gt;
&lt;br /&gt;
Einlesen der Datei text&lt;br /&gt;
 root@zero:~# cat &amp;lt; text&lt;br /&gt;
 wichtig&lt;br /&gt;
&lt;br /&gt;
Schreiben in die Datei text, dies überschreibt den bisherigen Inhalt der Datei&lt;br /&gt;
 root@zero:~# cat &amp;gt; text&lt;br /&gt;
 sogar noch wichtiger &lt;br /&gt;
 &lt;br /&gt;
Ausgeben der Datei text&lt;br /&gt;
 root@zero:~# cat text &lt;br /&gt;
 sogar noch wichtiger&lt;br /&gt;
&lt;br /&gt;
Lesen aus der Datei text und schreiben in die Datei neuertext&lt;br /&gt;
 root@zero:~# cat &amp;lt; text &amp;gt; neuertext&lt;br /&gt;
 root@zero:~# cat neuertext&lt;br /&gt;
 sogar noch wichtiger&lt;br /&gt;
&lt;br /&gt;
Anhängen der Ausgabe von date an die Datei neuertext&lt;br /&gt;
 root@zero:~# date &amp;gt;&amp;gt; neuertext&lt;br /&gt;
 root@zero:~# cat neuertext&lt;br /&gt;
 sogar noch wichtiger&lt;br /&gt;
 Do 18. Jun 14:08:58 CEST 2009&lt;br /&gt;
&lt;br /&gt;
Umleiten des Standardfehlerkanals nach error&lt;br /&gt;
 root@zero:~# rm sux 2&amp;gt; error&lt;br /&gt;
 root@zero:~# more error&lt;br /&gt;
 rm: Entfernen von „sux“ nicht möglich: No such file or directory&lt;br /&gt;
&lt;br /&gt;
===Umleitungen===&lt;br /&gt;
Nacheinander auszuführende Kommandos&lt;br /&gt;
 root@zero:~# pwd; date&lt;br /&gt;
 /root&lt;br /&gt;
 Do 18. Jun 14:13:05 CEST 2009&lt;br /&gt;
 &lt;br /&gt;
Übergeben der Ausgabe von tail als Eingabe von grep mit Hilfe der Pipe &amp;quot;|&amp;quot;&lt;br /&gt;
 root@zero:~# tail /var/log/auth.log | grep xinux&lt;br /&gt;
 Jun 18 13:52:33 zero nss_wins[11433]: pam_unix(login:session): session closed for user xinux&lt;br /&gt;
&lt;br /&gt;
Übergeben der letzten 100 Zeilen von syslog als Eingabe von grep&lt;br /&gt;
 root@zero:~# tail /var/log/syslog -n 100 | grep error&lt;br /&gt;
 Jun 18 09:30:54 zero kernel: [154384.692135] end_request: I/O error, dev fd0, sector 0&lt;br /&gt;
 Jun 18 09:30:54 zero kernel: [154384.712137] end_request: I/O error, dev fd0, sector 0&lt;br /&gt;
&lt;br /&gt;
==tr==&lt;br /&gt;
tr ist ein Programm um Zeichen zu übersetzen. Dies betrifft nur die Ausgabe, die Datei selbst bleibt unverändert.&lt;br /&gt;
&lt;br /&gt;
Ersetzt Kleinbuchstaben durch Großbuchstaben aus der Datei text&lt;br /&gt;
 root@zero:~# tr &amp;quot;a-z&amp;quot; &amp;quot;A-Z&amp;quot; &amp;lt; text&lt;br /&gt;
 SOGAR NOCH WICHTIGER&lt;br /&gt;
 123&lt;br /&gt;
 34&lt;br /&gt;
 4711&lt;br /&gt;
 TEST&lt;br /&gt;
&lt;br /&gt;
Ersetzt alle Zahlen durch X&lt;br /&gt;
 root@zero:~# tr &amp;quot;0-9&amp;quot; &amp;quot;X&amp;quot; &amp;lt; text&lt;br /&gt;
 sogar noch wichtiger&lt;br /&gt;
 XXX&lt;br /&gt;
 XX&lt;br /&gt;
 XXXX&lt;br /&gt;
 test&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
 root@zero:~# cat test&lt;br /&gt;
 +++++&lt;br /&gt;
 ###&lt;br /&gt;
 1111&lt;br /&gt;
&lt;br /&gt;
-s löscht mehrfach kommende Zeichen&lt;br /&gt;
 root@zero:~# tr '''-s''' &amp;quot;+&amp;quot; &amp;lt; test&lt;br /&gt;
 +&lt;br /&gt;
 ###&lt;br /&gt;
 1111&lt;br /&gt;
&lt;br /&gt;
-d löscht vorkommende Zeichen &lt;br /&gt;
 root@zero:~# tr '''-d''' &amp;quot;#&amp;quot; &amp;lt; test&lt;br /&gt;
 +++++ &lt;br /&gt;
 &lt;br /&gt;
 1111&lt;br /&gt;
&lt;br /&gt;
==cut==&lt;br /&gt;
Spalten aus einer Datei schneiden. Dies betrifft nur die Ausgabe, die Datei selbst bleibt unverändert.&lt;br /&gt;
 &lt;br /&gt;
Schneidet die erste Spalte aus, der Delimiter ist : &lt;br /&gt;
 root@zero:~# cut -f 1 -d : /etc/passwd&lt;br /&gt;
 root&lt;br /&gt;
 daemon&lt;br /&gt;
 bin&lt;br /&gt;
 ...&lt;br /&gt;
 xinux&lt;br /&gt;
&lt;br /&gt;
 root@zero:~# more test&lt;br /&gt;
 1234#5678#9999&lt;br /&gt;
 &lt;br /&gt;
Schneidet die zweite Spalte aus, der Delimiter ist #&lt;br /&gt;
 root@zero:~# cut -f 2 -d &amp;quot;#&amp;quot; &amp;lt; test&lt;br /&gt;
 5678&lt;br /&gt;
&lt;br /&gt;
==expand==&lt;br /&gt;
Ersetzt Tabulatorzeichen durch Folgen von Leerzeichen und schreibt das Ergebnis auf die Standardausgabe&lt;br /&gt;
 root@zero:~# expand /etc/samba/smb.conf&lt;br /&gt;
 ...&lt;br /&gt;
&lt;br /&gt;
==fmt==&lt;br /&gt;
Setzt den Text der Dateien im Blocksatz der angegebenen Breite durch Auffüllen von Zeilen und Entfernen von Zeilenwechseln.&lt;br /&gt;
Standardgemäß werden Leerzeilen, die Position von Leerzeichen und der Einzug am Zeilenanfang erhalten. fmt versucht, &lt;br /&gt;
Zeilenumbrüche an Satzenden durchzuführen sowie sie nach dem ersten oder vor dem letzten Wort eines Satzes zu vermeiden. &lt;br /&gt;
 &lt;br /&gt;
 fmt [Optionen] [Dateien]&lt;br /&gt;
&lt;br /&gt;
Optionen&lt;br /&gt;
&lt;br /&gt;
* -p ''Präfix'': Formatiert nur Zeilen, die mit ''Präfix'' anfangen&lt;br /&gt;
 root@zero:/tmp# fmt -p '#' text&lt;br /&gt;
 #Setzt den Text der Dateien im Blocksatz der angegebenen Breite durch&lt;br /&gt;
 #Auffüllen von Zeilen und Entfernen von Zeilenwechseln.  Standardgemäß&lt;br /&gt;
 #werden Leerzeilen, die Position von Leerzeichen und der Einzug am&lt;br /&gt;
 #Zeilenanfang erhalten. fmt versucht,&lt;br /&gt;
 Zeilenumbrüche an Satzenden durchzuführen sowie sie nach dem ersten oder vor dem letzten Wort eines Satzes zu vermeiden.&lt;br /&gt;
&lt;br /&gt;
* -u : Erzwingt genau ein Leerzeichen zwischen Wörtern und zwei Leerzeichen zwischen Sätzen&lt;br /&gt;
&lt;br /&gt;
* -w ''Breite'': Setzt die Ausgabebreite auf ''Breite''&lt;br /&gt;
 root@zero:/tmp# fmt -w 30 text&lt;br /&gt;
 #Setzt den Text der Dateien&lt;br /&gt;
 im Blocksatz der angegebenen&lt;br /&gt;
 Breite durch Auffüllen&lt;br /&gt;
 von Zeilen und Entfernen&lt;br /&gt;
 von Zeilenwechseln.&lt;br /&gt;
 #Standardgemäß werden&lt;br /&gt;
 Leerzeilen, die Position von&lt;br /&gt;
 Leerzeichen und der Einzug am&lt;br /&gt;
 Zeilenanfang erhalten. fmt&lt;br /&gt;
 versucht, Zeilenumbrüche&lt;br /&gt;
 an Satzenden durchzuführen&lt;br /&gt;
 sowie sie nach dem ersten&lt;br /&gt;
 oder vor dem letzten Wort&lt;br /&gt;
 eines Satzes zu vermeiden.&lt;br /&gt;
&lt;br /&gt;
==join==&lt;br /&gt;
Führt die Zeilen zweier sortierter Dateien anhand von '''Übereinstimmungen''' in einem gemeinsamen Feld zusammen.&lt;br /&gt;
&lt;br /&gt;
 root@zero:~# more name&lt;br /&gt;
 1. karl&lt;br /&gt;
 2. heinz&lt;br /&gt;
 3. hans&lt;br /&gt;
 4. otto&lt;br /&gt;
 root@zero:~# more tel&lt;br /&gt;
 1. 1234&lt;br /&gt;
 2. 4321&lt;br /&gt;
 3. 222&lt;br /&gt;
 4. 121212&lt;br /&gt;
 root@zero:~# join name tel &amp;gt; telefonbuch&lt;br /&gt;
 root@zero:~# more telefonbuch&lt;br /&gt;
 1. karl 1234&lt;br /&gt;
 2. heinz 4321&lt;br /&gt;
 3. hans 222&lt;br /&gt;
 4. otto 121212&lt;br /&gt;
&lt;br /&gt;
==nl==&lt;br /&gt;
Nummeriert die Zeilen in einer Datei.&lt;br /&gt;
&lt;br /&gt;
 root@zero:~# nl /etc/passwd                                                   &lt;br /&gt;
     1  root:x:0:0:root:/root:/bin/bash                                       &lt;br /&gt;
     2  daemon:x:1:1:daemon:/usr/sbin:/bin/sh                                 &lt;br /&gt;
     3  bin:x:2:2:bin:/bin:/bin/sh                                            &lt;br /&gt;
     4  sys:x:3:3:sys:/dev:/bin/sh                                            &lt;br /&gt;
     5  sync:x:4:65534:sync:/bin:/bin/sync&lt;br /&gt;
     ...&lt;br /&gt;
&lt;br /&gt;
==od==&lt;br /&gt;
Gibt Dateien im Oktal und anderen Formaten aus.&lt;br /&gt;
&lt;br /&gt;
 od [Optionen] Datei&lt;br /&gt;
&lt;br /&gt;
* -j ''Bytes'': Überspringt die Anzahl ''Bytes'' einer Datei&lt;br /&gt;
* -N ''Bytes'': Gibt nur die Anzahl ''Bytes'' aus&lt;br /&gt;
* -c : Gebe ASCII Zeichen aus&lt;br /&gt;
* -f : Gebe Fließkommazahlen aus&lt;br /&gt;
* -i : Gebe Dezimal Integer aus&lt;br /&gt;
* -l : Gebe Dezimal Long aus&lt;br /&gt;
* -o : Gebe Oktal 2 Byte Einheiten aus&lt;br /&gt;
* -s : Gebe Dezimal 2 Byte Einheiten aus&lt;br /&gt;
* -x : Gebe Hexadezimale 2 Byte einheiten aus&lt;br /&gt;
&lt;br /&gt;
Beispiele&lt;br /&gt;
&lt;br /&gt;
Gebe Master Boot Record (die ersten 512 Byte der Festplatte /dev/sda) als Hexadezimal aus&lt;br /&gt;
 root@zero:~# od '''-x -N''' 512 /dev/sda&lt;br /&gt;
 0000000 48eb 1090 d08e 00bc b8b0 0000 d88e c08e&lt;br /&gt;
 0000020 befb 7c00 00bf b906 0200 a4f3 21ea 0006&lt;br /&gt;
 0000040 be00 07be 0438 0b75 c683 8110 fefe 7507&lt;br /&gt;
 0000060 ebf3 b416 b002 bb01 7c00 80b2 748a 0203&lt;br /&gt;
 0000100 00ff 2000 0001 0000 0200 90fa f690 80c2&lt;br /&gt;
 ...&lt;br /&gt;
&lt;br /&gt;
Schreibe &amp;quot;suxer&amp;quot; in die Datei test&lt;br /&gt;
 root@zero:~# echo &amp;quot;suxer&amp;quot; &amp;gt; test&lt;br /&gt;
Ausgabe Hexadezimal&lt;br /&gt;
 root@zero:~# od -x test&lt;br /&gt;
 0000000 7573 6578 0a72&lt;br /&gt;
 0000006&lt;br /&gt;
&lt;br /&gt;
Ausgabe ASCII Zeichen&lt;br /&gt;
 root@zero:~# od -c test&lt;br /&gt;
 0000000   s   u   x   e   r  \n&lt;br /&gt;
 0000006&lt;br /&gt;
&lt;br /&gt;
==paste==&lt;br /&gt;
Fügt die Zeilen von zwei oder mehr Dateien horizontal zusammen&lt;br /&gt;
 root@zero:~# paste name tel&lt;br /&gt;
 1. karl 1. 1234&lt;br /&gt;
 2. heinz        2. 4321&lt;br /&gt;
 3. hans 3. 222&lt;br /&gt;
 4. otto 4. 121212&lt;br /&gt;
&lt;br /&gt;
==pr==&lt;br /&gt;
Bereitet Textdateien zum Drucken vor.&lt;br /&gt;
&lt;br /&gt;
 root@zero:~# echo &amp;quot;Plan für heute&amp;quot; &amp;gt; dokument&lt;br /&gt;
 root@zero:~# more dokument&lt;br /&gt;
 Plan für heute&lt;br /&gt;
 root@zero:~# pr dokument   &lt;br /&gt;
  &lt;br /&gt;
 &lt;br /&gt;
 2009-06-19 12:44                    dokument                     Seite 1&lt;br /&gt;
 &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
 Plan für heute&lt;br /&gt;
&lt;br /&gt;
Anmerkung Ausmaße der Bildschirmausgabe wie eine Druckseite.&lt;br /&gt;
&lt;br /&gt;
==sed==&lt;br /&gt;
streaming editor. Mit sed ist es möglich, den Inhalt einer Datei automatisch (nicht interaktiv) zu&lt;br /&gt;
bearbeiten. Wie unter Linux üblich, wird auch hier der Text nicht wirklich verändert sondern die &lt;br /&gt;
Änderung erfolgt über die Standardausgabe, die wieder umgeleitet werden kann. Die Syntax ist ähnlich &lt;br /&gt;
des ex modus von vi. Reguläre Ausdrücke können nach Belieben benutzt werden. &lt;br /&gt;
&lt;br /&gt;
Optionen:&lt;br /&gt;
 -e Zeichenkette  wendet die Editorbefehle aus Zeichenkette auf den Text an.&lt;br /&gt;
 -n gibt nur die Zeilen aus, die explizit (durch &amp;quot;p&amp;quot; ausgedruckt werden sollen&lt;br /&gt;
&lt;br /&gt;
Gibt die dritte Zeile der Datei text aus&lt;br /&gt;
 root@zero:~# sed -n &amp;quot;3p&amp;quot; text&lt;br /&gt;
 34&lt;br /&gt;
&lt;br /&gt;
Gibt die erste bis dritte Zeile von text aus&lt;br /&gt;
 root@zero:~# sed -n &amp;quot;1,3p&amp;quot; text&lt;br /&gt;
 sogar noch wichtiger&lt;br /&gt;
 123&lt;br /&gt;
 34&lt;br /&gt;
&lt;br /&gt;
Löschen der Zeile mit &amp;quot;sogar&amp;quot;&lt;br /&gt;
 root@zero:~# sed -e '/sogar/d' &amp;lt; text&lt;br /&gt;
 123&lt;br /&gt;
 34&lt;br /&gt;
 4711&lt;br /&gt;
 test&lt;br /&gt;
&lt;br /&gt;
und schreiben in text2&lt;br /&gt;
 root@zero:~# sed -e '/sogar/d' &amp;lt; text &amp;gt; text2&lt;br /&gt;
 root@zero:~# more text2&lt;br /&gt;
 123&lt;br /&gt;
 34&lt;br /&gt;
 4711&lt;br /&gt;
 test&lt;br /&gt;
&lt;br /&gt;
Alle 3en durch DREI ersetzen&lt;br /&gt;
 root@zero:~# sed -e 's/3/DREI/g' &amp;lt; text&lt;br /&gt;
 sogar noch wichtiger&lt;br /&gt;
 12DREI&lt;br /&gt;
 DREI4&lt;br /&gt;
 4711&lt;br /&gt;
 test&lt;br /&gt;
&lt;br /&gt;
==wc==&lt;br /&gt;
Zählt die Anzahl von Zeichen, Wörter oder Zeilen&lt;br /&gt;
&lt;br /&gt;
Optionen&lt;br /&gt;
* -m : Zählt die Anzahl der Zeichen&lt;br /&gt;
 root@zero:~# more name&lt;br /&gt;
 1. karl&lt;br /&gt;
 2. heinz&lt;br /&gt;
 3. hans&lt;br /&gt;
 4. otto&lt;br /&gt;
 root@zero:~# wc '''-m''' tel&lt;br /&gt;
 33 tel&lt;br /&gt;
&lt;br /&gt;
* -w : Zählt die Anzahl der Wörter (einschließlich Zahlen und andere Zeichen)&lt;br /&gt;
 root@zero:~# wc '''-w''' name&lt;br /&gt;
 8 name&lt;br /&gt;
&lt;br /&gt;
* -l : Zählt die Anzahl der Zeilen&lt;br /&gt;
 root@zero:~# wc '''-l''' name&lt;br /&gt;
 4 name&lt;br /&gt;
&lt;br /&gt;
==INodes==&lt;br /&gt;
Inode (oder I-Node) wird im Deutschen am besten als Informationsknoten oder&lt;br /&gt;
Indexeintrag bezeichnet. Er fasst alle Attribute einer Datei zusammen außer dem Inhalt&lt;br /&gt;
und dem Namen der Datei.&lt;br /&gt;
&lt;br /&gt;
===Daten===&lt;br /&gt;
{| border=1 cellpadding=2&lt;br /&gt;
|type&lt;br /&gt;
|Der Typ der Datei wird als einzelner Buchstabe angezeigt. Der Typ einer Datei wird beim Anlegen der Datei festgelegt&lt;br /&gt;
|-&lt;br /&gt;
|Permissions &lt;br /&gt;
|Die Zugriffsrechte der Datei werden in den 12 Bit sstrwxrwxrwx abgespeichert.Wenn sie gesetzt sind, werden sie bei &lt;br /&gt;
der Ausgabe an Stelle der x-Rechte ausgegeben. Die Zugriffsrechte können mit dem Kommando chmod verändert werden.&lt;br /&gt;
|-&lt;br /&gt;
|link count&lt;br /&gt;
|In UNIX kann eine Datei mehr als einen Namen haben. Der Link Count gibt die Anzahl der Namen einer Datei an. Er kann&lt;br /&gt;
mit dem Kommando ln erhöht und dem Kommando rm erniedrigt werden.&lt;br /&gt;
|-&lt;br /&gt;
|owner&lt;br /&gt;
|Für den Dateieigentümer gelten die in der ersten rwx-Gruppe festgelegten Zugriffsrechte. Standardmäßig ist der &lt;br /&gt;
Eigentümer einer Datei derjenige Benutzer, der die Datei angelegt hat.&lt;br /&gt;
|-&lt;br /&gt;
|group&lt;br /&gt;
|Für Benutzer, die in der gleichen Gruppe sind, der die Datei angehört, gelten die in der zweiten rwx-Gruppe festgelegten&lt;br /&gt;
Zugriffsrechte. In System V gehört eine Datei standardmäßig der Gruppe an, in der der anlegende Benutzer gerade ist.&lt;br /&gt;
|-&lt;br /&gt;
|size&lt;br /&gt;
|Bei normalen Dateien und Verzeichnissen gibt diese Information die Länge der Datei in Byte an.&lt;br /&gt;
|-&lt;br /&gt;
|access time&lt;br /&gt;
|Die Zugriffszeit gibt den Zeitpunkt des letzten Lesezugriffes auf eine Datei an. Aus Effizienzgründen wird die &lt;br /&gt;
Zugriffszeit an Verzeichnissen nicht gesetzt, wenn ein Verzeichnis durchsucht wird, obwohl man dies erwarten könnte.&lt;br /&gt;
|-&lt;br /&gt;
|modification time&lt;br /&gt;
|Die Modifikationszeit gibt die Zeit des letzten Schreibzugriffes auf die Daten der Datei an. Intern speichert UNIX &lt;br /&gt;
die Zeit als Sekunden seit Beginn des Jahres 1970 und in GMT ab. Für die Ausgabe wird dies in ein besser lesbares &lt;br /&gt;
Format in der lokalen Zeitzone umgewandelt.&lt;br /&gt;
|-&lt;br /&gt;
|change time &lt;br /&gt;
|Die Veränderungszeit gibt das Datum der letzten Statusänderung der Datei an. Sie wird immer dann gesetzt, wenn die &lt;br /&gt;
Informationen über die Datei sich ändern (Datum der Erzeugung wird nicht gespeichert)&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
===Dateiarten===&lt;br /&gt;
{| border=1 cellpadding=2&lt;br /&gt;
!Zeichen&lt;br /&gt;
!Typ&lt;br /&gt;
!Zweck&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;nowiki&amp;gt;-&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
|file&lt;br /&gt;
|normale Datei&lt;br /&gt;
|-&lt;br /&gt;
|d&lt;br /&gt;
|directory&lt;br /&gt;
|Verzeichnis&lt;br /&gt;
|-&lt;br /&gt;
|b&lt;br /&gt;
|block device&lt;br /&gt;
|Gerätedatei&lt;br /&gt;
|-&lt;br /&gt;
|c&lt;br /&gt;
|character device&lt;br /&gt;
|Gerätedatei&lt;br /&gt;
|-&lt;br /&gt;
|l&lt;br /&gt;
|link&lt;br /&gt;
|Querverweis&lt;br /&gt;
|-&lt;br /&gt;
|p&lt;br /&gt;
|named pipe&lt;br /&gt;
|Benannte Pipeline&lt;br /&gt;
|-&lt;br /&gt;
|s&lt;br /&gt;
|socket&lt;br /&gt;
|Netzwerkverbindung&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
====Normale Dateien====&lt;br /&gt;
Unter einer normalen Datei versteht man die Ansammlung von Daten. Dies kann ein Text, Programm, Bild oder sonstiges sein. &lt;br /&gt;
Beispiel&lt;br /&gt;
 root@zero:~# ls text&lt;br /&gt;
 text&lt;br /&gt;
&lt;br /&gt;
====Verzeichnisse====&lt;br /&gt;
Dateien werden in Verzeichnissen gespeichert, nur so ist eine Ordnung möglich. &lt;br /&gt;
 root@zero:~# mkdir -v Ordner&lt;br /&gt;
 mkdir: Verzeichnis „Ordner“ angelegt&lt;br /&gt;
 &lt;br /&gt;
 root@zero:~# ls -d ~/*&lt;br /&gt;
 /root/error  /root/neuertext  /root/Ordner  /root/profile  /root/test  /root/text  /root/verzeichnis&lt;br /&gt;
&lt;br /&gt;
====Gerätedateien (Block und Char)====&lt;br /&gt;
Gerätedateien ermöglichen Anwendungsprogrammen unter Benutzung des  Kernels den Zugriff auf die Hardwarekomponenten des &lt;br /&gt;
Systems. &lt;br /&gt;
&lt;br /&gt;
Beispiele&lt;br /&gt;
&lt;br /&gt;
Sicherung des Master Boot Records der ersten Festplatte&lt;br /&gt;
 root@zero:~# dd if=/dev/sda1 of=/tmp/mbr.img bs=512 count=1&lt;br /&gt;
&lt;br /&gt;
Einhängen des CD-ROM Laufwerks&lt;br /&gt;
 root@zero:~# mount /dev/cdrom /media/cdrom -t iso9660&lt;br /&gt;
&lt;br /&gt;
====Named Pipes====&lt;br /&gt;
Benannte Pipes (Named Pipes) können dagegen auch zur Kommunikation zwischen Prozessen eingesetzt werden, die nicht miteinander&lt;br /&gt;
verwandt sind und sich darüber hinaus auf unterschiedlichen Rechnern innerhalb eines Netzwerkes befinden dürfen. Sie sind &lt;br /&gt;
flexibler als anonyme Pipes und eignen sich für sogenannte Client-Server-Anwendungen (es lassen sich auch RPCs realisieren).&lt;br /&gt;
Benannte Pipes ermöglichen die gleichzeitige Kommunikation in beide Richtungen, das heißt, Daten können im Vollduplexbetrieb &lt;br /&gt;
zwischen den Prozessen ausgetauscht werden.&lt;br /&gt;
 &lt;br /&gt;
Erstelle Named Pipe mit Namen sux. Schreibe &amp;quot;Hallo Welt&amp;quot; in die Pipe sux und bleibe im Hintergrund. Gebe Inhalt der Pipe mit cat aus&lt;br /&gt;
 root@zero:~# mkfifo sux ; echo 'Hallo Welt' &amp;gt; sux &amp;amp; cat &amp;lt; sux&lt;br /&gt;
 [1] 12947&lt;br /&gt;
 Hallo Welt&lt;br /&gt;
 [1]+  Done                    echo 'Hallo Welt' &amp;gt; sux&lt;br /&gt;
&lt;br /&gt;
====Sockets====&lt;br /&gt;
Schnittstelle um es vernetzten Rechnern zu ermöglichen, miteinander zu kommunizieren.&lt;br /&gt;
&lt;br /&gt;
Sie ist in der Regel definiert durch IP-Adresse sowie Port. &lt;br /&gt;
&lt;br /&gt;
====Links====&lt;br /&gt;
Bei Links handelt es sich um symbolische Verweise auf andere Dateien&lt;br /&gt;
&lt;br /&gt;
'''Softlink'''&lt;br /&gt;
Ein Softlink ist eine Datei die nur auf den Namen einer anderen Datei verweist. Wenn die Originaldatei gelöscht wird, zeigt &lt;br /&gt;
der Link ins Leere. &lt;br /&gt;
&lt;br /&gt;
 ln -s datei softlink&lt;br /&gt;
&lt;br /&gt;
{| border=1 cellpadding=2&lt;br /&gt;
| Vorteile&lt;br /&gt;
| Symbolische Links können auch auf Verzeichnisse angelegt werden&amp;lt;br&amp;gt;Sie sind partitionsübergreifend&amp;lt;br&amp;gt;Man kann sie auf Dateien anlegen, die noch nicht existieren&lt;br /&gt;
|-&lt;br /&gt;
| Nachteile&lt;br /&gt;
| Wenn das Original gelöscht ist, ist kein Zugriff mehr möglich&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Beispiel&lt;br /&gt;
 root@zero:~# ln -s text verweis&lt;br /&gt;
 root@zero:~# ls -l verweis&lt;br /&gt;
 lrwxrwxrwx 1 root root 4 2009-06-18 15:48 verweis -&amp;gt; text&lt;br /&gt;
&lt;br /&gt;
'''Hardlinks'''&lt;br /&gt;
 ln datei hardlink&lt;br /&gt;
Eigentlich ist jede Datei ein Hardlink. Ein Hardlink ist ein Verzeichniseintrag,&lt;br /&gt;
der auf eine Inode verweist. Beim Erzeugen einer Datei verweist ein Eintrag auf&lt;br /&gt;
eine Inode. Man kann dann weitere Verweise erzeugen. Der Linkcounter wird&lt;br /&gt;
jeweils um 1 erhöht. Beim Löschen einer Datei wird er jeweils um 1 reduziert.&lt;br /&gt;
Wird der Wert 0 erreicht, ist die Datei gelöscht.&lt;br /&gt;
{| border=1 cellpadding=2&lt;br /&gt;
| Vorteile&lt;br /&gt;
|Zugriff auf die Daten, selbst wenn das Orginal gelöscht ist.&lt;br /&gt;
|-&lt;br /&gt;
|Nachteile&lt;br /&gt;
|Man kann keine Hardlinks auf Verzeichnisse anlegen.&lt;br /&gt;
Ist nur innerhalb einer Partion möglich.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Beispiel&lt;br /&gt;
 root@zero:~# touch 1&lt;br /&gt;
 root@zero:~# echo &amp;quot;text&amp;quot; &amp;gt; 1&lt;br /&gt;
 root@zero:~# ln 1 2&lt;br /&gt;
 root@zero:~# more 2&lt;br /&gt;
 text&lt;br /&gt;
 root@zero:~# echo &amp;quot;doch kein text&amp;quot; &amp;gt; 1&lt;br /&gt;
 root@zero:~# more 1&lt;br /&gt;
 doch kein text&lt;br /&gt;
 root@zero:~# more 2&lt;br /&gt;
 doch kein text&lt;br /&gt;
&lt;br /&gt;
Weitere Optionen:&lt;br /&gt;
 -b sichert Dateien, statt sie zu überschreiben &lt;br /&gt;
 -f Überschreibt bestehende, gleichnamige Dateien&lt;br /&gt;
 -i fragt vor dem Überschreiben nach Bestätigung&lt;br /&gt;
 -v ausführliche Meldungen&lt;br /&gt;
&lt;br /&gt;
==Prozesse==&lt;br /&gt;
===Was ist ein Prozess?===&lt;br /&gt;
Ein Prozess setzt sich aus zwei Teilen zusammen:&lt;br /&gt;
&lt;br /&gt;
1.Programm, das in den Hauptspeicher geladen wurde&lt;br /&gt;
&lt;br /&gt;
2.Prozessumgebung&lt;br /&gt;
&lt;br /&gt;
Unter einem Prozess versteht man ein Programm (binär), das in den Hauptspeicher&lt;br /&gt;
geladen wurde. Also nicht das Program selbst, das auf der Festplatte liegt ist der&lt;br /&gt;
Prozess, sondern es wird erst durch das Laden in den Hauptspeicher dazu.&lt;br /&gt;
Normalerweise liegt ein Programm als ausführbare Datei irgendwo auf der&lt;br /&gt;
Festplatte oder auf Diskette. Ob es sich bei dem Programm um eine binäre Datei&lt;br /&gt;
handelt, kann man mit dem Befehl '' file '' feststellen.&lt;br /&gt;
 &lt;br /&gt;
 root@zero:~# file /bin/mkdir&lt;br /&gt;
 /bin/mkdir: ELF 32-bit LSB executable, Intel 80386, version 1 (SYSV), dynamically linked (uses shared libs), for GNU/Linux 2.6.8, stripped&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Die Datei liegt im Maschinencode vor und kann in den Hauptspeicher geladen&lt;br /&gt;
werden. Sobald dies geschehen ist, kann der Rechner diesen Maschinencode&lt;br /&gt;
abarbeiten (ausführen).&lt;br /&gt;
&lt;br /&gt;
Da aber ein Programm nicht direkt auf die Hardware zugreifen soll, muss es vom&lt;br /&gt;
Betriebsystem kontrolliert werden. Das Betriebssystem liegt logisch gesehen&lt;br /&gt;
zwischen Hardware und Anwendung. Das Betriebssystem ordnet jedem Prozess&lt;br /&gt;
verschiedene Kenndaten zu, um die Prozesse verwalten zu können. Alle&lt;br /&gt;
Kenndaten, die einem Prozess zugeordnet sind, nennt man die&lt;br /&gt;
Prozessumgebung.Wenn man in der Shell ein Kommando eingibt, wird ein Prozess&lt;br /&gt;
kreiert. Natürlich ist die Shell selbst auch ein Prozess. Ein Prozess kann aber&lt;br /&gt;
genauso gut ein Serverprozess (Dienst) sein, z.B. Apache.&lt;br /&gt;
Ein wesentliches Merkmal eines Prozesses ist die Prozesskommunikation. Über im&lt;br /&gt;
Betriebssystem implementierte Methoden ist es möglich, dass verschiedene&lt;br /&gt;
Prozesse Signale und Daten untereinander austauschen können.&lt;br /&gt;
Dadurch wird auch dem Benutzer ermöglicht, einem Prozeß bestimmte Signale zu&lt;br /&gt;
senden bzw. auf den Status eines Prozesses Einfluss zu nehmen.&lt;br /&gt;
&lt;br /&gt;
===Prozesstabelle (Anzeige mit ps)===&lt;br /&gt;
Da zu jedem Prozess Kenndaten geführt werden, müssen diese auch irgendwo&lt;br /&gt;
festgehalten werden. Das geschieht in der sogenannten Prozesstabelle.&lt;br /&gt;
&lt;br /&gt;
Kenndaten der Prozesse (Auswahl):&lt;br /&gt;
* F Flags (z.B. ausgelagert; Systemprozess; Trace,...)&lt;br /&gt;
* UID Nutzer, mit dessen Rechten der Prozess ausgeführt wird&lt;br /&gt;
* PID Prozess - ID. Diese Nummer gibt eine eindeutige Prozess - Nummer&lt;br /&gt;
an. Sie wird vom System automatisch beim Starten des Prozesses&lt;br /&gt;
vergeben und ist für die Laufzeit eindeutig.&lt;br /&gt;
* PPID Prozessnumer der Eltern-Prozesses&lt;br /&gt;
* PRI Priorität eines Prozesses; je niedriger der Wert ist, desto besser&lt;br /&gt;
* NI ist der Nicewert des Prozesses; Nice erniedrigt den Grundwert&lt;br /&gt;
der Priorität des Prozesses und gibt damit Prozessorzeit für andere&lt;br /&gt;
Prozesse frei.&lt;br /&gt;
* SIZE Speichergröße des Prozesses inklusive Stack (eine Art Zwischenspeicher)&lt;br /&gt;
* RSS Verbrauch an physischen Speicher&lt;br /&gt;
* WCHAN ist der Name der Kernerlfunktion, in der der Prozess schläft&lt;br /&gt;
* STAT Status des Prozesses&lt;br /&gt;
R läuft       S schlafend     D nicht störbarer Schlaf&lt;br /&gt;
T angehalten  Z Zombie        W der Prozess belegt keine Seiten&lt;br /&gt;
* TIME Bisland benötigte Prozessorzeit&lt;br /&gt;
* SIZE ist die Größe von Text, Daten und Stack&lt;br /&gt;
* TTY die Nummer des kontrollierenden Teminal; wenn hier ein ? steht,&lt;br /&gt;
handelt es sich um einen Dämon oder Serverprozess.&lt;br /&gt;
* COMMAND Angabe des Prozesses selbst. Dies ist meist der Programmname.&lt;br /&gt;
&lt;br /&gt;
Weiteres&lt;br /&gt;
* GID Gruppe, unter der der Prozess läuft&lt;br /&gt;
* Verweis auf das aktuellen Arbeitsverzeichnis&lt;br /&gt;
* Um mit relativen Pfadangaben arbeiten zu können braucht man diesen Eintrag&lt;br /&gt;
* Tabelle mit Verweisen auf aktuell geöffnete Dateien&lt;br /&gt;
* 3 sind automatisch geöffnet Standardeingabe, Standardausgabe und&lt;br /&gt;
Standardfehlerkanal&lt;br /&gt;
&lt;br /&gt;
Beispiel&lt;br /&gt;
 root@zero:~# ps -l&lt;br /&gt;
 F S   UID   PID  PPID  C PRI  NI ADDR SZ WCHAN  TTY          TIME CMD&lt;br /&gt;
 4 R     0 18639 18631  0  80   0 -  1080 -      pts/0    00:00:00 bash&lt;br /&gt;
 0 R     0 25904 18639  0  80   0 -   635 -      pts/0    00:00:00 ps&lt;br /&gt;
&lt;br /&gt;
===Eltern und Kinder===&lt;br /&gt;
Jeder Prozess kann weitere Prozesse erzeugen. Die erzeugten Prozesse bezeichnet&lt;br /&gt;
man als Kindprozesse. Jeder Kindprozess weiß anhand der PID, woher er stammt.&lt;br /&gt;
&lt;br /&gt;
Alle Prozesse sind von einem anderen Prozess gestartet worden, mit Ausnahme&lt;br /&gt;
des Pseudoprozesses (noch im Kernel beim Starten erzeugter Prozess). Dieser hat&lt;br /&gt;
die Prozessnummer 0. Er hat die Aufgabe, den Init Prozess ( /sbin/init die Nummer&lt;br /&gt;
1) zu starten, der in System V alle anderen Prozesse direkt oder über seine Kind-&lt;br /&gt;
prozesse startet. (init wird konfiguriert durch die /etc/inittab)&lt;br /&gt;
&lt;br /&gt;
Es gibt zwei Arten wie ein Prozess gestartet werden kann:&lt;br /&gt;
&lt;br /&gt;
# Fork und Exec: Prozessumgebung wird dupliziert, der neue Prozess bekommt eine eigene neue PID&lt;br /&gt;
# Exec: Alter Prozess wird durch neuen Prozess überladen (geht mit dem shell-buildin exec)&lt;br /&gt;
&lt;br /&gt;
'''Rechte auf Objekte UID GID'''&lt;br /&gt;
Ob ein Prozess auf eine Datei zugreifen kann, entscheidet der Kernel anhand der&lt;br /&gt;
Zugriffssrechte, die auf der Datei gesetzt sind. Er checkt anhand der UID und GID&lt;br /&gt;
des Prozesses, ob es erlaubt ist. Mit dieser Technik wird letztendlich geprüft, was&lt;br /&gt;
ein User darf, und was nicht.&lt;br /&gt;
&lt;br /&gt;
===Rechenzeit und Priorität===&lt;br /&gt;
Da auch bei Prozessen eine Gerechtigkeit herschen muss, muss eine Instanz&lt;br /&gt;
darüber entscheiden wie lange ein Prozess Rechenzeit verbrauchen darf.&lt;br /&gt;
Folgende Kenndaten werden dazu benötigt&lt;br /&gt;
* clocktick = Zeiteinheit&lt;br /&gt;
* n = Faktor über den Kernel einstellbar&lt;br /&gt;
* slice = n &amp;lt;nowiki&amp;gt;*&amp;lt;/nowiki&amp;gt; clocktick&lt;br /&gt;
* agingtime = weitere Zeiteinheit über den Kernel einstellbar&lt;br /&gt;
&lt;br /&gt;
Es wird davon ausgegangen das der Prozess mit der niedrigsten Priorität gerade&lt;br /&gt;
rechnet. Pro clocktick erhöht sich die Priorität dieses Prozesses um eins.&lt;br /&gt;
&lt;br /&gt;
Jetzt können 3 Situationen eintreten die alle dazu führen das der Scheduler&lt;br /&gt;
aufgerufen wird.&lt;br /&gt;
&lt;br /&gt;
# Prozess blockiert wegen einer Ausgabe oder Eingabe.&lt;br /&gt;
# Gibt Rechenzeit freiwillig ab.&lt;br /&gt;
# Der Slice endet.&lt;br /&gt;
&lt;br /&gt;
Der Aufruf des Schedulers bewirkt das der Prozess mit der niedrigsten Priorität&lt;br /&gt;
gescheduled wird, er also nun rechnen darf. Nach Ablauf der agingtime werden&lt;br /&gt;
nun die Prozesse &amp;quot;gealtert&amp;quot;. Das geschieht nach folgender Formel&lt;br /&gt;
&lt;br /&gt;
Neue Priorität = Alte Priorität / 2 + Nicewert&lt;br /&gt;
&lt;br /&gt;
Der User hat die Möglichkeit, über den sogenannten Nicefaktor den Grundwert für&lt;br /&gt;
einen Prozess zu senken. Der Prozess braucht dann länger für seine Abarbeitung.&lt;br /&gt;
Er verhält sich somit netter zu den anderen Prozessen. Normale User können nur&lt;br /&gt;
netter werden, der Systemverwalter kann auch nicht netter (gemeiner) werden. Der&lt;br /&gt;
Bereich liegt zwischen 19 (sehr nett) bis 0 (weniger nett) für die User, und 19 bis&lt;br /&gt;
-20 für root.&lt;br /&gt;
&lt;br /&gt;
[[Image:pri.png]]&lt;br /&gt;
&lt;br /&gt;
'''Signale'''&lt;br /&gt;
&lt;br /&gt;
Mit den Kommando kill und killall kann man Prozessen Signale schicken&lt;br /&gt;
&lt;br /&gt;
 kill -Signalnummer PID &lt;br /&gt;
&lt;br /&gt;
Signalnummer&lt;br /&gt;
{| border=1 cellpadding=2&lt;br /&gt;
!Signalname&lt;br /&gt;
!Wert&lt;br /&gt;
!Aktion&lt;br /&gt;
|-&lt;br /&gt;
|SIGHUP&lt;br /&gt;
|1&lt;br /&gt;
|Neuinitialisierung eines Prozesses&lt;br /&gt;
|-&lt;br /&gt;
|SIGINT&lt;br /&gt;
|2&lt;br /&gt;
|Interrupt-Signal von der Tastatur (STRG+c)&lt;br /&gt;
|-&lt;br /&gt;
|SIGQUIT&lt;br /&gt;
|3&lt;br /&gt;
|Interrupt-Signal von der Tastatur (STRG+c) mit Dump&lt;br /&gt;
|-&lt;br /&gt;
|SIGKILL&lt;br /&gt;
|9&lt;br /&gt;
|unwiderrufliches Beendigungssignal (Töten)&lt;br /&gt;
|-&lt;br /&gt;
|SIGSEGV&lt;br /&gt;
|11&lt;br /&gt;
|Ungültige Speicherreferenz (bedeutet oft auf defekten Speicher)&lt;br /&gt;
|-&lt;br /&gt;
|SIGTERM &lt;br /&gt;
|15&lt;br /&gt;
|Beendigungssignal (geöffnete Dateien werden geschlossen)&lt;br /&gt;
|-&lt;br /&gt;
|SIGCONT &lt;br /&gt;
|18&lt;br /&gt;
|Weiterfahren, wenn gestoppt&lt;br /&gt;
|-&lt;br /&gt;
|SIGSTOP&lt;br /&gt;
|19&lt;br /&gt;
|Prozessstop&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Beispiel&lt;br /&gt;
 root@zero:~# kill -1 7562&lt;br /&gt;
&lt;br /&gt;
===Programme im Zusammenhang mit Prozessen===&lt;br /&gt;
* ps: Zeigt die Prozesse mit ihrem Status an&lt;br /&gt;
 root@zero:~# ps&lt;br /&gt;
  PID TTY          TIME CMD&lt;br /&gt;
 14134 pts/0    00:00:00 bash&lt;br /&gt;
 14149 pts/0    00:00:00 ps&lt;br /&gt;
&lt;br /&gt;
 root@zero:~# ps -elf | grep apache&lt;br /&gt;
 1 S root      5738     1  0  80   0 -  5461 select Jun16 ?        00:00:00 /usr/sbin/apache2 -k start&lt;br /&gt;
 5 S www-data  5739  5738  0  80   0 -  5581 inet_c Jun16 ?        00:00:00 /usr/sbin/apache2 -k start&lt;br /&gt;
 5 S www-data  5742  5738  0  80   0 -  5461 inet_c Jun16 ?        00:00:00 /usr/sbin/apache2 -k start&lt;br /&gt;
 5 S www-data  5743  5738  0  80   0 -  5461 inet_c Jun16 ?        00:00:00 /usr/sbin/apache2 -k start&lt;br /&gt;
 5 S www-data  5745  5738  0  80   0 -  5461 inet_c Jun16 ?        00:00:00 /usr/sbin/apache2 -k start&lt;br /&gt;
 5 S www-data  5746  5738  0  80   0 -  5461 inet_c Jun16 ?        00:00:00 /usr/sbin/apache2 -k start&lt;br /&gt;
 0 S root     14153 14134  0  80   0 -   837 pipe_w 16:59 pts/0    00:00:00 grep apache&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* nice: Lässt ein Programm mit verändertem Grundwert der Priorität laufen&lt;br /&gt;
 root@zero:~# nice&lt;br /&gt;
 0&lt;br /&gt;
 root@zero:~# nice -n 9 bash&lt;br /&gt;
 root@zero:~# nice&lt;br /&gt;
 9&lt;br /&gt;
 root@zero:~#&lt;br /&gt;
&lt;br /&gt;
* renice: Ändert den Grundwert der Priorität eines laufenden Prozesses&lt;br /&gt;
 root@zero:~# renice 10 5742&lt;br /&gt;
 5742: Alte Priorität: 0, neue Priorität: 10&lt;br /&gt;
&lt;br /&gt;
* top: Zeigt die Prozesse mit ihrem Status an (Abbrechen mit q)&lt;br /&gt;
 root@zero:~# top&lt;br /&gt;
&lt;br /&gt;
* pstree: Zeigt die Prozesse als Baumstruktur&lt;br /&gt;
 root@zero:~# pstree&lt;br /&gt;
 init─┬─NetworkManager&lt;br /&gt;
      ├─acpid&lt;br /&gt;
      ├─apache2───5*[apache2]&lt;br /&gt;
      ├─atd&lt;br /&gt;
      ├─bluetoothd&lt;br /&gt;
      ├─console-kit-dae───63*[{console-kit-dae}]&lt;br /&gt;
      ├─cron&lt;br /&gt;
      ├─cupsd&lt;br /&gt;
      ├─dbus-daemon&lt;br /&gt;
      ├─dd&lt;br /&gt;
      ├─gdm───gdm─┬─Xorg&lt;br /&gt;
      │           └─gdmgreeter&lt;br /&gt;
      ├─6*[getty]&lt;br /&gt;
      ├─hald───hald-runner─┬─hald-addon-acpi&lt;br /&gt;
      │                    ├─hald-addon-inpu&lt;br /&gt;
      │                    └─2*[hald-addon-stor]&lt;br /&gt;
      ├─klogd&lt;br /&gt;
      ├─nm-system-setti&lt;br /&gt;
      ├─nmbd&lt;br /&gt;
      ├─nscd───11*[{nscd}]&lt;br /&gt;
      ├─portmap&lt;br /&gt;
      ├─rpc.statd&lt;br /&gt;
      ├─slapd───2*[{slapd}]&lt;br /&gt;
      ├─smbd───smbd&lt;br /&gt;
      ├─sshd───sshd───bash───bash───pstree&lt;br /&gt;
      ├─syslogd&lt;br /&gt;
      ├─system-tools-ba&lt;br /&gt;
      ├─udevd&lt;br /&gt;
      ├─winbindd─┬─winbindd───winbindd&lt;br /&gt;
      │          └─3*[winbindd]&lt;br /&gt;
      └─wpa_supplicant&lt;br /&gt;
&lt;br /&gt;
===Jobs===&lt;br /&gt;
Unter einem Job versteht man ein Programm, welches man von der Shell gelöst&lt;br /&gt;
hat. D. h. man kann ganz normal weiter arbeiten und der Job verrichtet seinen&lt;br /&gt;
Dienst im Hintergrund. Man kann jederzeit zu diesem Job wieder Kontakt&lt;br /&gt;
aufnehmen.&lt;br /&gt;
&lt;br /&gt;
Ein Job kann auf 2 Arten gestarten werden:&lt;br /&gt;
&lt;br /&gt;
# Durch Anhängen des &amp;amp; Zeichens beim Programmstart&lt;br /&gt;
 root@zero:~# tail -f /var/log/messages &amp;amp;&lt;br /&gt;
 Jun 19 06:59:31 zero -- MARK --&lt;br /&gt;
 Jun 19 07:19:31 zero -- MARK --&lt;br /&gt;
 Jun 19 07:39:32 zero -- MARK --&lt;br /&gt;
 Jun 19 07:44:57 zero syslogd 1.5.0#5ubuntu3: restart.&lt;br /&gt;
 Jun 19 07:59:32 zero -- MARK --&lt;br /&gt;
 Jun 19 08:19:32 zero -- MARK --&lt;br /&gt;
 Jun 19 08:39:32 zero -- MARK --&lt;br /&gt;
 Jun 19 08:59:32 zero -- MARK --&lt;br /&gt;
 Jun 19 09:19:33 zero -- MARK --&lt;br /&gt;
 Jun 19 09:39:33 zero -- MARK --&lt;br /&gt;
 [3] 27421&lt;br /&gt;
&lt;br /&gt;
# Durch Stoppen des Prozesses durch Drücken von Strg-Z und in den Hintergrund schicken mit %n (n ist die Jobnummer)&lt;br /&gt;
 root@zero:~# watch cat /proc/cpuinfo&lt;br /&gt;
 Strg-Z&lt;br /&gt;
 [4]+  Stopped                 watch cat /proc/cpuinfo&lt;br /&gt;
 root@zero:~# bg %4&lt;br /&gt;
 [4]+ watch cat /proc/cpuinfo &amp;amp;&lt;br /&gt;
&lt;br /&gt;
Anweisungen im Zusammenhang mit Jobs (n ist die Jobnummer)&lt;br /&gt;
* bg %n : Einen Job in den Hintergrund stellen (wie oben)&lt;br /&gt;
* fg %n : Einen Job in den Vordergrund holen&lt;br /&gt;
 root@zero:~# fg %4&lt;br /&gt;
 watch cat /proc/cpuinfo&lt;br /&gt;
&lt;br /&gt;
* jobs : Aktive Jobs ausgeben&lt;br /&gt;
&lt;br /&gt;
 root@zero:~# jobs&lt;br /&gt;
 [1]   Running                 tail -f /var/log/syslog &amp;amp;&lt;br /&gt;
 [2]   Running                 tail -f /var/log/syslog &amp;amp;&lt;br /&gt;
 [3]-  Running                 tail -f /var/log/messages &amp;amp;&lt;br /&gt;
 [4]+  Stopped                 watch cat /proc/cpuinfo&lt;br /&gt;
&lt;br /&gt;
* Strg-Z : Einen Vordergrund-Job vorübergehend anhalten&lt;br /&gt;
* kill -STOP %n : Unterbricht Job im Hintergrund&lt;br /&gt;
 root@zero:~# kill -STOP %1&lt;br /&gt;
 root@zero:~# jobs&lt;br /&gt;
 [1]+  '''Stopped'''                 tail -f /var/log/syslog&lt;br /&gt;
 [2]   Running                 tail -f /var/log/syslog &amp;amp;&lt;br /&gt;
 [3]   Running                 tail -f /var/log/messages &amp;amp;&lt;br /&gt;
 [4]-  Stopped                 watch cat /proc/cpuinfo&lt;br /&gt;
* kill -CONT %n : Setzt den unterbrochenen Job im Hintergrund fort&lt;br /&gt;
root@zero:~# kill -CONT %1&lt;br /&gt;
root@zero:~# jobs&lt;br /&gt;
 [1]+  '''Running'''                 tail -f /var/log/syslog &amp;amp;&lt;br /&gt;
 [2]   Running                 tail -f /var/log/syslog &amp;amp;&lt;br /&gt;
 [3]   Running                 tail -f /var/log/messages &amp;amp;&lt;br /&gt;
 [4]-  Stopped                 watch cat /proc/cpuinfo&lt;br /&gt;
* kill -KILL %n : Tötet Job im Hintergrund&lt;br /&gt;
 root@zero:~# kill -KILL %1&lt;br /&gt;
 root@zero:~# jobs&lt;br /&gt;
 [1]+  '''Killed'''                  tail -f /var/log/syslog&lt;br /&gt;
 [2]   Running                 tail -f /var/log/syslog &amp;amp;&lt;br /&gt;
 [3]   Running                 tail -f /var/log/messages &amp;amp;&lt;br /&gt;
 [4]-  Stopped                 watch cat /proc/cpuinfo&lt;br /&gt;
 root@zero:~# jobs&lt;br /&gt;
 [2]   Running                 tail -f /var/log/syslog &amp;amp;&lt;br /&gt;
 [3]-  Running                 tail -f /var/log/messages &amp;amp;&lt;br /&gt;
 [4]+  Stopped                 watch cat /proc/cpuinfo&lt;br /&gt;
&lt;br /&gt;
Bedingungen, die zu Jobausführung eingehalten werden sollen:&lt;br /&gt;
* Der Job soll nicht auf den Bildschirm schreiben (Standardausgabe +Standardfehlerkanal).&lt;br /&gt;
* Er soll keine Eingaben vom Benutzer erwarten.&lt;br /&gt;
&lt;br /&gt;
==Suchen von Dateien==&lt;br /&gt;
===find===&lt;br /&gt;
 find ab_wo_wird_gesucht was_wird_gesucht aktion&lt;br /&gt;
 find [Pfad] [Bedingung] [Aktion]&lt;br /&gt;
&lt;br /&gt;
====Nach Namen====&lt;br /&gt;
 find [Pfad] '''-name''' [Name]&lt;br /&gt;
 &lt;br /&gt;
Finde alle Dateien mit Namen test ab dem Verzeichnis /home und gebe diese Zeilenweise aus&lt;br /&gt;
 root@zero:~# find /home -name test -print&lt;br /&gt;
 /home/xinux/test&lt;br /&gt;
 /home/test&lt;br /&gt;
&lt;br /&gt;
Wie oben, jedoch mit Namensanfang test&lt;br /&gt;
 root@zero:/home/xinux# find /home -name 'test*'&lt;br /&gt;
 /home/xinux/testdatei&lt;br /&gt;
 /home/xinux/test&lt;br /&gt;
 /home/test&lt;br /&gt;
&lt;br /&gt;
====Nach Benutzer(Eigentümer)====&lt;br /&gt;
 root@zero:/tmp# find /tmp/ '''-user''' xinux&lt;br /&gt;
 /tmp/datei&lt;br /&gt;
&lt;br /&gt;
====Nach Gruppe====&lt;br /&gt;
 root@zero:/tmp# find /tmp/ '''-group''' hacker&lt;br /&gt;
 /tmp/datei3&lt;br /&gt;
 /tmp/datei2&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
====Nach Typ====&lt;br /&gt;
Es wird nach Dateien anhand Ihrer Art gesucht:&lt;br /&gt;
 find [Pfad] '''-type''' [Typ] &lt;br /&gt;
Typ:&lt;br /&gt;
* f: Normale Dateien&lt;br /&gt;
 root@zero:~# find /tmp/ -type f&lt;br /&gt;
 /tmp/mbr.img&lt;br /&gt;
 /tmp/datei&lt;br /&gt;
 /tmp/zeugs&lt;br /&gt;
 /tmp/.X0-lock&lt;br /&gt;
* d: Verzeichnisse&lt;br /&gt;
 root@zero:~# find /var/log -type d&lt;br /&gt;
 /var/log&lt;br /&gt;
 /var/log/apache2&lt;br /&gt;
 /var/log/unattended-upgrades&lt;br /&gt;
 /var/log/apparmor&lt;br /&gt;
 /var/log/ConsoleKit&lt;br /&gt;
 /var/log/dist-upgrade&lt;br /&gt;
 /var/log/dist-upgrade/20090526-1052&lt;br /&gt;
 /var/log/cups&lt;br /&gt;
 /var/log/apt&lt;br /&gt;
 /var/log/fsck&lt;br /&gt;
 /var/log/samba&lt;br /&gt;
 /var/log/samba/cores&lt;br /&gt;
 /var/log/samba/cores/smbd&lt;br /&gt;
 /var/log/samba/cores/nmbd&lt;br /&gt;
 /var/log/samba/cores/winbindd&lt;br /&gt;
 /var/log/installer&lt;br /&gt;
 /var/log/gdm&lt;br /&gt;
 /var/log/news&lt;br /&gt;
* c: Char Devices (Zeichenorientierte Gerätedatei)&lt;br /&gt;
 root@zero:~# find / -type c&lt;br /&gt;
 /lib/udev/devices/kmem&lt;br /&gt;
 /lib/udev/devices/null&lt;br /&gt;
 /lib/udev/devices/console&lt;br /&gt;
 /lib/udev/devices/ppp&lt;br /&gt;
 /lib/udev/devices/net/tun&lt;br /&gt;
* b: Block Devices (Blockorientierte Gerätedatei)&lt;br /&gt;
* p: Benannte Pipe&lt;br /&gt;
* l: Links&lt;br /&gt;
* s: Sockets&lt;br /&gt;
&lt;br /&gt;
====Nach Modifikation====&lt;br /&gt;
Listet alle Dateien in /etc auf, die innerhalb von zwei Tagen modifiziert wurden&lt;br /&gt;
 root@zero:/var/log# find /etc/ -mtime 2 -print&lt;br /&gt;
 /etc/apache2&lt;br /&gt;
 /etc/apache2/mods-available&lt;br /&gt;
 /etc/apache2/conf.d&lt;br /&gt;
 /etc/apache2/sites-available&lt;br /&gt;
 /etc/bash_completion.d&lt;br /&gt;
 /etc/blkid.tab.old&lt;br /&gt;
 /etc/firefox-3.0/profile&lt;br /&gt;
 /etc/firefox-3.0/profile/chrome&lt;br /&gt;
 /etc/firefox-3.0/pref&lt;br /&gt;
 /etc/profile.d&lt;br /&gt;
 /etc/ufw/applications.d&lt;br /&gt;
 /etc/logrotate.d&lt;br /&gt;
 /etc/xulrunner-1.9&lt;br /&gt;
 /etc/blkid.tab&lt;br /&gt;
 /etc/cron.daily&lt;br /&gt;
 /etc/alternatives&lt;br /&gt;
 /etc/alternatives/x-www-browser&lt;br /&gt;
 /etc/alternatives/xulrunner&lt;br /&gt;
 /etc/gre.d&lt;br /&gt;
 /etc/hal/fdi/policy&lt;br /&gt;
 /etc/dbus-1/system.d&lt;br /&gt;
 /etc/udev/rules.d&lt;br /&gt;
&lt;br /&gt;
====Nach Größe====&lt;br /&gt;
Finde Dateien in /tmp, die größer als 100 MByte sind&lt;br /&gt;
 root@zero:/tmp# find /tmp/ -size +100M&lt;br /&gt;
 /tmp/datei&lt;br /&gt;
&lt;br /&gt;
Finde Dateien in /tmp, die kleiner als 100 KByte sind&lt;br /&gt;
 root@zero:/tmp# find /tmp/ -size -100k&lt;br /&gt;
 /tmp/&lt;br /&gt;
 /tmp/datei3&lt;br /&gt;
 /tmp/backup &lt;br /&gt;
 /tmp/datei2&lt;br /&gt;
 /tmp/.winbindd &lt;br /&gt;
 /tmp/.winbindd/pipe&lt;br /&gt;
 /tmp/mbr.img&lt;br /&gt;
 /tmp/zeugs&lt;br /&gt;
 /tmp/.ICE-unix&lt;br /&gt;
 /tmp/.X0-lock&lt;br /&gt;
 /tmp/datei1&lt;br /&gt;
 /tmp/.X11-unix&lt;br /&gt;
 /tmp/.X11-unix/X0&lt;br /&gt;
 /tmp/pulse-PKdhtXMmr18n&lt;br /&gt;
&lt;br /&gt;
====Nach Berechtigungen====&lt;br /&gt;
Finde Dateien in Home mit der Berechtigung 777 (-rwxrwxrwx)&lt;br /&gt;
 root@zero:/var# find /home/ -perm 777&lt;br /&gt;
 /home/samba&lt;br /&gt;
 /home/xinux/Examples&lt;br /&gt;
 /home/xinux/.pulse/1f0763ee4cf4c7e1d3c07fd149dda37b:runtime&lt;br /&gt;
 /home/test/Examples&lt;br /&gt;
&lt;br /&gt;
===locate===&lt;br /&gt;
Locate arbeitet über einen Index, der erstellt und aktualisiert werden muss. Aus diesem Grund kann locate teilweise nicht &lt;br /&gt;
akutell sein. Es ist immer schneller als find und es durchsucht immer das ganze Dateisystem. &lt;br /&gt;
 locate [Dateiname]&lt;br /&gt;
 &lt;br /&gt;
Lokalisiere die Datei wvdial.conf. Anmerkung: Der Stern wird beim Suchen automatisch hinzugefügt. Entspricht also&lt;br /&gt;
wvidal.conf*&lt;br /&gt;
 root@zero:~# locate wvdial.conf&lt;br /&gt;
 /etc/wvdial.conf&lt;br /&gt;
 /usr/share/man/man5/wvdial.conf.5.gz&lt;br /&gt;
 /var/lib/dpkg/info/wvdial.conffiles&lt;br /&gt;
 /var/lib/dpkg/info/wvdial.config&lt;br /&gt;
&lt;br /&gt;
Lokalisiere die Datei wvdial.conf und nur diese&lt;br /&gt;
 root@zero:~# locate -b '\wvdial.conf'&lt;br /&gt;
 /etc/wvdial.conf&lt;br /&gt;
&lt;br /&gt;
Aktualisieren des Indexes&lt;br /&gt;
 root@zero:~# updatedb&lt;br /&gt;
&lt;br /&gt;
==Wie wird ein Kommando lokalisiert==&lt;br /&gt;
Wenn die Shell alle Ersetzungen in der Kommandozeile vorgenommen und alle Umleitungen vorbereitet hat, ist der Zeitpunkt &lt;br /&gt;
gekommen, auf den der Anwender die ganze Zeit gewartet hat. Die Shell versucht das Kommando auszuführen. Dazu muss sie &lt;br /&gt;
es aber erst lokalisieren. Das erste passende Kommando wird ausgeführt.&lt;br /&gt;
&lt;br /&gt;
Als Kommandoname wird immer das erste Wort eines einfachen Kommandos erkannt. Ein Kommandoname kann mit Pfadnamen in &lt;br /&gt;
einem Verzeichnis (absolut oder relativ) angegeben werden. Die Shell erkennt dies an (mindestens) einem Slash `/' &lt;br /&gt;
im Kommandonamen. Wenn kein Verzeichnis angegeben ist, versucht die Shell selbst, das Kommando zu finden. Dazu wird &lt;br /&gt;
der Kommandoname zuerst in der Hashtabelle gesucht, dann wird er mit den Synonymen, mit den Scriptfunktionen und &lt;br /&gt;
schließlich mit den Shellfunktionen verglichen. &lt;br /&gt;
&lt;br /&gt;
Wird auf diese Weise kein Programm dieses Namens gefunden, werden alle in der PATH-Umgebungsvariablen aufgeführten &lt;br /&gt;
Verzeichnisse nach einer ausführbaren Datei dieses Namens durchsucht. Wird auch hier kein passendes Kommando gefunden, &lt;br /&gt;
gibt die Shell eine Fehlermeldung aus.&lt;br /&gt;
&lt;br /&gt;
===which und type===&lt;br /&gt;
====which====&lt;br /&gt;
which gibt die vollen Pfadnamen der Dateien aus, die bei Benutzung des angegebenen Befehls ausgeführt werden würden.&lt;br /&gt;
&lt;br /&gt;
 which [-a] Dateiname &lt;br /&gt;
&lt;br /&gt;
Optionen:&lt;br /&gt;
&lt;br /&gt;
* -a : Alle Treffer ausgeben, nicht nur den ersten&lt;br /&gt;
* --skip-dot : Verzeichnisse, die mit einem Punkt beginnen, auslassen&lt;br /&gt;
&lt;br /&gt;
Beispiel&lt;br /&gt;
 root@zero:~# which startx&lt;br /&gt;
 /usr/bin/startx&lt;br /&gt;
&lt;br /&gt;
====type====&lt;br /&gt;
Anzeigen der absoluten Pfadnamen von Befehlen, und ob sich diese Befehle in der Hash-Tabelle der aktuellen&lt;br /&gt;
Shell befinden.&lt;br /&gt;
&lt;br /&gt;
 type [Optionen] Befehle&lt;br /&gt;
&lt;br /&gt;
Beispiel&lt;br /&gt;
 root@zero:~# type ls&lt;br /&gt;
 ls is aliased to `ls --color=auto'&lt;br /&gt;
&lt;br /&gt;
Optionen:&lt;br /&gt;
&lt;br /&gt;
* -a : Alle vorkommenden Befehle werden ausgegeben, nicht nur das, welches aufgerufen werden würde&lt;br /&gt;
 root@zero:~# type '''-a''' ls&lt;br /&gt;
 ls is aliased to `ls --color=auto'&lt;br /&gt;
 ls is /bin/ls&lt;br /&gt;
&lt;br /&gt;
* -p : Anzeigen des Eintrags von Befehl in der Hash-Tabelle. Dieser Wert kann sich vom ersten Auftreten des Befehls in PATH&lt;br /&gt;
unterscheiden&lt;br /&gt;
 root@zero:~# type '''-p''' apache2&lt;br /&gt;
 /usr/sbin/apache2&lt;br /&gt;
&lt;br /&gt;
* -t : Anzeigen, ob Befehl ein Aliasname, ein Schlüsselwort, eine Funktion, ein eingebauter Befehl oder eine Datei ist&lt;br /&gt;
 root@zero:~# type '''-t''' apache2&lt;br /&gt;
 file&lt;/div&gt;</summary>
		<author><name>192.168.178.46</name></author>
	</entry>
	<entry>
		<id>https://www.xinux.net/index.php?title=Linux_Grundlagen&amp;diff=66</id>
		<title>Linux Grundlagen</title>
		<link rel="alternate" type="text/html" href="https://www.xinux.net/index.php?title=Linux_Grundlagen&amp;diff=66"/>
		<updated>2009-07-07T06:49:17Z</updated>

		<summary type="html">&lt;p&gt;192.168.178.46: /* Die Bedeutung der Felder: */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Einführung==&lt;br /&gt;
===Geschichte Unix===&lt;br /&gt;
====1969====&lt;br /&gt;
Am Anfang von Linux steht Multics, ein von Bell Laboratories geschaffenes &amp;quot;Betriebssystem&amp;quot;, &lt;br /&gt;
das noch mit Lochkarten arbeitete. Multics wird mit Unterstützung von AT&amp;amp;T und Western &lt;br /&gt;
Electric unter Mitarbeit von Ken Thompson und Dennis Ritchie weiterentwickelt. Obwohl sich &lt;br /&gt;
Bell Laboratories bald zurückzieht, gibt Thompson das Projekt nicht auf.  Zum Entwicklerteam &lt;br /&gt;
gehören auch Rudd Canaday und Brian Kernighan. Letzterer gibt 1970 dem Betriebssystem den Namen UNIX. &lt;br /&gt;
Thompson definiert 7 Richtlinien für UNIX:&lt;br /&gt;
 &lt;br /&gt;
# Hierarchische Anordnung der Dateisysteme&lt;br /&gt;
# Die Ausgabe von Daten an die Peripherie(-geräte) und Dateien soll gleich sein.&lt;br /&gt;
# Prozesse und Programme sollen miteinander kommunizieren.&lt;br /&gt;
# Multitasking (voneinander getrennte Prozesse)&lt;br /&gt;
# Persönliche Shell's&lt;br /&gt;
# Der Compiler soll für viele Programmiersprachen tauglich sein.&lt;br /&gt;
# Portabilität&lt;br /&gt;
&lt;br /&gt;
====1971====&lt;br /&gt;
Bis 1971 ist das für eine DEC PDP-7 geschriebene Unix als Version 1 auf eine PDP-11 portiert. Bis&lt;br /&gt;
zur Version 4 entwickelt Ritchie die Programmier- (Hoch-) Sprache C. Das in Assembler geschriebene&lt;br /&gt;
Unix wird fast völlig nach C übersetzt, wodurch zum erstenmal die geforderte Hardware-Unabhängigkeit&lt;br /&gt;
des Betriebssystems realisiert werden kann.&lt;br /&gt;
&lt;br /&gt;
====1975====&lt;br /&gt;
Da AT&amp;amp;T aufgrund vertraglicher Bindungen mit der US-Bundesregierung Unix nicht kommerziell vermarkten darf, stellt sie den Source Code für ein paar hundert Dollar den Universitäten, Lehr- und Forschungsanstalten zur Verfügung. Dies führt zu einer sehr dynamischen Entwicklung von Unix. 1975 wird die Version 6 als erstes UNIX-System veröffentlicht, die darauffolgende Version 7 wird sehr erfolgreich. Da es keine Standardisierung gibt, entwickeln bald verschiedenste Firmen ihr eigenes UNIX. Ab 1984 wird AT&amp;amp;T per Gerichtsbeschluss erlaubt, Unix zu vermarkten. AT&amp;amp;T verkauft sein Unix V und beginnt, sich um einen internationalen Standard von UNIX zu bemühen. &lt;br /&gt;
&lt;br /&gt;
====1984====&lt;br /&gt;
Durch Richard Stallman wird die Free Software Foundation (FSF) gegründet. Diese initiiert ein Projekt namens GNU (GNU ist Not Unix), welches das Ziel verfolgt, ein freies UNIX System zu schaffen. &lt;br /&gt;
&lt;br /&gt;
====1987====&lt;br /&gt;
AT&amp;amp;T verbietet die Verwendung des Unix Quellcodes an den Universitäten. Während dieser Zeit ist Andrew (Andy) Tannenbaum Professor an der Freien Universität von Amsterdam und entwickelt Minix. Minix ist ein kostengünstiges Lehrbetriebssystem und kommt ohne jeglichen AT&amp;amp;T Code aus, obwohl es die gleiche Funktionalität wie Unix 7 bietet. Im Usenet unter comp.os.minix entsteht eine Minix-Gemeinde, die den Minix Kernel und die Anwendungen rundherum programmiert und verbessert.&lt;br /&gt;
&lt;br /&gt;
====1991====&lt;br /&gt;
Linus Torvalds hat als Student für Computerwissenschaften an der Universität in Helsinki Minix installiert und das Buch von Andy Tannenbaum gelesen. Er beginnt im Sinne der FSF einen Unix ähnlichen Kernel zu programmieren mit der Idee, &amp;quot;ein besseres Minix als Minix&amp;quot; zu bauen. 1992 stellt er die Version 0.02 mit dem Namen Linux der Internetgemeinde zur Verfügung. &lt;br /&gt;
&lt;br /&gt;
====1994====&lt;br /&gt;
Die Linux Version 1.0 wird freigegeben. Das Linux Fieber beginnt... &lt;br /&gt;
&lt;br /&gt;
====1998====&lt;br /&gt;
Der Kreis der Linux Entwickler und Anwender ist kräftig angeschwollen. KDE 1.0 wird veröffentlicht. Die Zuwachsraten von Linux übertreffen die von Windows NT deutlich. &lt;br /&gt;
&lt;br /&gt;
====1999====&lt;br /&gt;
Der lange erwartete stabile Linux Kernel Version 2.2 wird freigegeben. Namhafte Firmen wie IBM kündigen ihre Unterstützung für Linux an. &lt;br /&gt;
&lt;br /&gt;
====2001====&lt;br /&gt;
Der lange erwartete stabile Linux Kernel Version 2.4 wird freigegeben. USB Unterstützung und eine neue Firewallimplementierung zeichnen ihn aus.&lt;br /&gt;
&lt;br /&gt;
====2003====&lt;br /&gt;
Linux Kernel Version 2.6 wird freigegeben. Am auffälligsten sind Änderungen bei der Modulverwaltung.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Distributionen===&lt;br /&gt;
{| Border=1 Cellpadding=2&lt;br /&gt;
| &lt;br /&gt;
|Url&lt;br /&gt;
|Paketformat&lt;br /&gt;
|-&lt;br /&gt;
|Red Hat&lt;br /&gt;
|www.redhat.com&lt;br /&gt;
|rpm&lt;br /&gt;
|-&lt;br /&gt;
|fedora&lt;br /&gt;
|fedora.redhat.com&lt;br /&gt;
|rpm&lt;br /&gt;
|-&lt;br /&gt;
|CentOS&lt;br /&gt;
|www.centos.org&lt;br /&gt;
|rpm&lt;br /&gt;
|-&lt;br /&gt;
|Suse/openSUSE&lt;br /&gt;
|www.opensuse.org&lt;br /&gt;
|rpm&lt;br /&gt;
|-&lt;br /&gt;
|Debian&lt;br /&gt;
|www.debian.org&lt;br /&gt;
|deb&lt;br /&gt;
|-&lt;br /&gt;
|Ubuntu&lt;br /&gt;
|www.ubuntu.com&lt;br /&gt;
|deb&lt;br /&gt;
|-&lt;br /&gt;
|Mandrake&lt;br /&gt;
|www.linux-mandrake.com&lt;br /&gt;
|rpm&lt;br /&gt;
|-&lt;br /&gt;
|Easy Linux&lt;br /&gt;
|www.easy-linux.de&lt;br /&gt;
|rpm&lt;br /&gt;
|-&lt;br /&gt;
|Turbo&lt;br /&gt;
|www.turbolinux.com&lt;br /&gt;
|rpm&lt;br /&gt;
|-&lt;br /&gt;
|minis&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|toms&lt;br /&gt;
|www.toms.net/rb&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|damn small linux&lt;br /&gt;
|www.damnsmalllinux.org&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|pocket-linux&lt;br /&gt;
|www.pocket-linux.org&lt;br /&gt;
|&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
====Bücher====&lt;br /&gt;
 Titel : Das Linux Anwenderhandbuch und Leitfaden für die Systemverwaltung&lt;br /&gt;
 Autor : Sebastian Hetze, Dirk Hohndel, Olaf Kirch und Martin Müller&lt;br /&gt;
 Verlag: Lunetix&lt;br /&gt;
 ISBN : 3-929764-06-7&lt;br /&gt;
&lt;br /&gt;
 Titel : Linux in a Nutshell&lt;br /&gt;
 Autor : Jessica Perry Hekman und die Mitarbeiter von O'Reilly &amp;amp; Associates&lt;br /&gt;
 Verlag: O'Reilly&lt;br /&gt;
 ISBN : 3-930673-57-6&lt;br /&gt;
&lt;br /&gt;
 Titel : Linux - Wegweiser zur Installation und Konfiguration&lt;br /&gt;
 Autor : Matt Welsh, Lar Kaufman, Matthias Kalle Dallheimer&lt;br /&gt;
 Verlag: O'Reilly&lt;br /&gt;
 ISBN : 3-930673-58-4 (deutsch), 1-56592-469-X (englisch)&lt;br /&gt;
&lt;br /&gt;
 Titel : Linux - Installation, Konfiguration, Anwendung&lt;br /&gt;
 Autor : Michael KoflerMultitasking&lt;br /&gt;
 Verlag: Addison-Wesley&lt;br /&gt;
 ISBN : 3-8273-1475-5&lt;br /&gt;
&lt;br /&gt;
 Titel : Linux - Wegweiser für Netzwerker&lt;br /&gt;
 Autor : Olaf Kirch&lt;br /&gt;
 Verlag: O'Reilly&lt;br /&gt;
 ISBN : 3-930673-18-5&lt;br /&gt;
&lt;br /&gt;
 Titel : TCP/IP-Netzwerk-Administration&lt;br /&gt;
 Autor : Craig Hunt&lt;br /&gt;
 Verlag: O'Reilly&lt;br /&gt;
 ISBN : 3-89721-110-6&lt;br /&gt;
&lt;br /&gt;
 Titel : Essential System Administration&lt;br /&gt;
 Autor : Eleen Frisch&lt;br /&gt;
 Verlag: O'Reilly&lt;br /&gt;
 ISBN : 1-56592-127-5&lt;br /&gt;
&lt;br /&gt;
==Betriebssystem==&lt;br /&gt;
===Was ist ein Betriebssystem?===&lt;br /&gt;
&lt;br /&gt;
Ein Betriebssystem liegt logisch gesehen zwischenAnwendungsprogramm und Hardware.&lt;br /&gt;
&lt;br /&gt;
Es nimmt die Anforderungen der Anwendungsprogramme entgegen und leitet&lt;br /&gt;
diese kontrolliert an die Hardware weiter. Kein Anwendungsprogramm sollte&lt;br /&gt;
direkt auf die Hardware zugreifen können. Den zentralen Zugang schafft einzig&lt;br /&gt;
das Betriebssystem. Somit kann das Betriebssystem unsinnige Anforderungen&lt;br /&gt;
oder Bedienungsfehler abblocken.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Image:Linux.jpg]]&lt;br /&gt;
&lt;br /&gt;
===Aufgaben eines Betriebssystems===&lt;br /&gt;
&lt;br /&gt;
# Verbergen der Komplexität der Maschine vor dem Anwender (Abstraktion)&lt;br /&gt;
# Bereitstellen einer Benutzerschnittstelle (&amp;quot;Kommandointerpreter&amp;quot;, &amp;quot;Shell&amp;quot;)&lt;br /&gt;
# Bereitstellen einer normierten Programmierschnittstelle (API)&lt;br /&gt;
# Verwaltung der Ressourcen der Maschine::&lt;br /&gt;
Hauptspeicher&lt;br /&gt;
Prozessor(en)&lt;br /&gt;
Hintergrundspeicher (Platte, Band, etc.)&lt;br /&gt;
Geräte (Terminal, Drucker, Plotter, etc.)&lt;br /&gt;
Rechenzeit&lt;br /&gt;
Koordination von Prozessen&lt;br /&gt;
&lt;br /&gt;
===Aufbau eines Betriebssystems===&lt;br /&gt;
&lt;br /&gt;
Ein Rechensystem besteht aus Hardware, Systemprogrammen und Anwendungs-&lt;br /&gt;
programmen. Unter einem Betriebssystem wird meist die Summe aus Betriebs-&lt;br /&gt;
systemkern (Kernel) und den wichtigsten Systemprogrammen verstanden. Ein&lt;br /&gt;
minimaler LINUX-Kernel besitzt ungefähr eine Größe von 400 - 800 kByte.&lt;br /&gt;
Weitere wichtige Systemkomponenten benötigen zusätzlich 10 - 100 Mbyte&lt;br /&gt;
Plattenplatz.&lt;br /&gt;
&lt;br /&gt;
Ein Betriebssystem stellt den Rechner als erweiterte Maschine (virtuelle&lt;br /&gt;
Maschine) über definierte Software-Schnittstellen zur Verfügung.&lt;br /&gt;
Das Betriebssystem dient als Betriebsmittelverwalter, der Anforderungen&lt;br /&gt;
befriedigt, protokolliert, abrechnet und vermittelt.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Aufgaben des Betriebssystemkerns:&lt;br /&gt;
&lt;br /&gt;
{| Border=1 Cellpadding=2&lt;br /&gt;
|Prozessverwaltung  (dispatching and scheduling)&lt;br /&gt;
| Mehrere Benutzer können mit mehreren Aktionen gleichzeitig im System arbeiten, ohne sich gegenseitig zu beeinflussen. Damit dies möglich ist,  müssen die Aktionen organisiert, koordiniert und verwaltet werden. Die zu verwaltende Einheit nennt man Prozess.&lt;br /&gt;
|-&lt;br /&gt;
|Speicherverwaltung   (memory management)&lt;br /&gt;
|Zuteilen von Speicherbereichen an laufende Prozesse, Schutz der Speicherbereiche vor unbefugten Zugriffen, bei Speicherengpässen: Auslagern von ganzen (swapping) oder von Teilen (paging) von Prozessen auf die Platte (swap file).&lt;br /&gt;
|-&lt;br /&gt;
|Dateiverwaltung  (file handling)&lt;br /&gt;
|Zuteilung von Plattenplatz für Programme, Benutzer und Systemdienste, Schreiben, Lesen und Strukturieren der Daten auf den Massenspeichern; Durch Bereitstellung einer entsprechenden Schnittstelle (VFS, virtual file system) kann der Kern Dateisysteme unterschiedlichster Art (EXT2, FAT, NFS, HPFS, NTFS, ...) ansprechen.&lt;br /&gt;
|-&lt;br /&gt;
|Geräteverwaltung  (resource management)&lt;br /&gt;
|Der Kern ermöglicht und kontrolliert den Zugriff auf die Hardware. Er steuert die Ein- und Ausgabetätigkeiten der Anwender. An den Kern&lt;br /&gt;
gebunden sind die entsprechenden Gerätetreiber (device driver), die damit eine Kommunikation zwischen Kern und Hardware ermöglichen.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
===Multitasking===&lt;br /&gt;
&lt;br /&gt;
Multitasking bedeutet, dass ein Rechner aus Anwendersicht mehrere Aufgaben&lt;br /&gt;
(Tasks) gleichzeitg übernehmen kann. Das Betriebssystem (OS) unterteilt die&lt;br /&gt;
gleichzeitig anstehenden Aufgaben in Einzelarbeitsschritte (Prozesse) und&lt;br /&gt;
managed durch ein Zeitscheibenverfahren (scheduling) die gleichmäßige&lt;br /&gt;
Abarbeitung der Prozesse.&lt;br /&gt;
&lt;br /&gt;
Es wird unterschieden zwischen:&lt;br /&gt;
&lt;br /&gt;
*non-präamptiven (kooperativen=die Ressourcen werden vom aktiven Prozess freigegeben, bei einem Hänger steht das ganze System)&lt;br /&gt;
&lt;br /&gt;
und&lt;br /&gt;
&lt;br /&gt;
*präamptiven (reinem=der Betriebssystemkern steuert Taskwechsel, indem nach einer festgelegten Zeit vom gerade aktiven Prozess zum nächsten weitergeschaltet wird)&lt;br /&gt;
&lt;br /&gt;
===Mehrprozessorbetrieb===&lt;br /&gt;
&lt;br /&gt;
Bei mehreren Prozessoren und Unterstützung durch das OS&lt;br /&gt;
(NT,Linux,Unix,Novell) können mehrere Tasks auf diese verteilt werden und&lt;br /&gt;
gleichzeitig bearbeitet werden. Nachteilig ist, dass dies nicht oder kaum von&lt;br /&gt;
Anwendungsprogrammen unterstützt wird und es zu Kommunikationsproblemen&lt;br /&gt;
zwischen den einzelnen Tasks kommen kann.&lt;br /&gt;
&lt;br /&gt;
===Arten von von Betriebssystemen===&lt;br /&gt;
&lt;br /&gt;
{|Border=1 Cellpadding=2&lt;br /&gt;
|&lt;br /&gt;
|SingleUser  &lt;br /&gt;
|Multiuser&lt;br /&gt;
|-&lt;br /&gt;
|Single Tasking&lt;br /&gt;
|MS - DOS&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|Multi Tasking&lt;br /&gt;
|Windows 3.x&lt;br /&gt;
|UNIX&lt;br /&gt;
|-&lt;br /&gt;
|&lt;br /&gt;
|Windows 95/98&lt;br /&gt;
|Linux&lt;br /&gt;
|-&lt;br /&gt;
|&lt;br /&gt;
|Windows NT4 ohne Erweiterungen&lt;br /&gt;
|VMS&lt;br /&gt;
|-&lt;br /&gt;
|&lt;br /&gt;
|OS/2 &lt;br /&gt;
|Windows NT mit  Erweiterungen&lt;br /&gt;
|-&lt;br /&gt;
|&lt;br /&gt;
|Apple&lt;br /&gt;
|Windows 2000, XP, 2003&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
===SHELL===&lt;br /&gt;
&lt;br /&gt;
Wenn man mit Linux arbeiten will, kann man nicht direkt mit dem Betriebssystem&lt;br /&gt;
kommunizieren. Man braucht dazu ein Hilfsprogramm, welches die&lt;br /&gt;
Kommandoeingaben ordnungsgemäß an das Betriebssystem weiterleitet. Dieses&lt;br /&gt;
Hilfsprogramm hat den Namen Shell.&lt;br /&gt;
&lt;br /&gt;
Die Shell schirmt den Betriebssystemkern von den Anwendungsprogrammen ab.&lt;br /&gt;
Die unterschiedlichen Shells erfüllen alle dieselbe Aufgabe, sie unterscheiden sich&lt;br /&gt;
allerdings in ihrer Syntax.&lt;br /&gt;
&lt;br /&gt;
==Die Installation im Überblick==&lt;br /&gt;
&lt;br /&gt;
Die Installation von Linux geschieht in folgenden Schritten:&lt;br /&gt;
&lt;br /&gt;
# Analyse (Welche Hardware habe ich? ,Hab ich weitere Betriebsysteme?)&lt;br /&gt;
# Booten des Linux-Kernels. (von CD oder Diskette)&lt;br /&gt;
# Laden einer RAM-Disk (das macht das Installationsprogramm automatisch).&lt;br /&gt;
# Partitionieren der Festplatte (fdisk).&lt;br /&gt;
# Einrichten der Swappartition (mkswap), Formatieren der Festplatte (mkfs).&lt;br /&gt;
# Montieren der Dateisysteme (mount), Aktivieren der Swapbereiche (swapon).&lt;br /&gt;
# Kopieren und Auspacken der Daten vom Installationsmedium auf die Festplatte (die eigentliche Installation). (rpm, dpkg oder tar).&lt;br /&gt;
# Geeignete Wahl der Bootmethode unter Berücksichtigung von Punkt 1 (grub, lilo).&lt;br /&gt;
# Konfiguration des Systems (Netz, Modem etc...).&lt;br /&gt;
&lt;br /&gt;
==Erste Schritte==&lt;br /&gt;
===Anmelden===&lt;br /&gt;
Sie können sich nun mit dem Usernamen und dem Passwort, das sie bei der Installation angelegt haben anmelden!&lt;br /&gt;
[[Image:benutzer.jpg]]&lt;br /&gt;
&lt;br /&gt;
[[Image:passwd.jpg]]&lt;br /&gt;
&lt;br /&gt;
===Terminal öffnen===&lt;br /&gt;
&lt;br /&gt;
Ein Terminal öffnen Sie über das Startmenü:&lt;br /&gt;
&lt;br /&gt;
[[Image:Terminalde.jpg]]&lt;br /&gt;
&lt;br /&gt;
Das geöffnete Terminal sieht dann folgendermaßen aus:&lt;br /&gt;
&lt;br /&gt;
[[Image:Terminalde2.jpg]]&lt;br /&gt;
&lt;br /&gt;
===Sudo===&lt;br /&gt;
Rootrechte erlangen sie über den &amp;quot;Sudo&amp;quot;-Befehl&lt;br /&gt;
 &lt;br /&gt;
''Den nächsten Befehl als root ausführen''&lt;br /&gt;
 xinux@zero:~$ sudo cat /etc/shadow&lt;br /&gt;
 [sudo] password for xinux:&lt;br /&gt;
&lt;br /&gt;
''Eine komplette Sitzung als root starten''&lt;br /&gt;
 xinux@zero:~$ sudo -i&lt;br /&gt;
 [sudo] password for xinux:&lt;br /&gt;
 root@zero:~#&lt;br /&gt;
&lt;br /&gt;
===Virtuelle Konsolen===&lt;br /&gt;
&lt;br /&gt;
In die Virtuelle Konsole gelangen sie über &amp;quot;STRG+ALT+(F1-F6)&amp;quot;.&lt;br /&gt;
Sie funktioniert wie ein ganz normales Terminal, und mit &amp;quot;ALT+F7&amp;quot;&lt;br /&gt;
gelangen sie wieder zurück auf die grafische Benutzeroberfläche&lt;br /&gt;
&lt;br /&gt;
===Abmelden===&lt;br /&gt;
&lt;br /&gt;
Abmelden können Sie sich wieder über das Startmenu unter:&lt;br /&gt;
&lt;br /&gt;
[[Image:Logout.jpg]]&lt;br /&gt;
&lt;br /&gt;
Fals sie nur einzelne Sitzungen in einem der Terminals oder &lt;br /&gt;
den Virtuellen Konsolen Abmelden wollen benutzen sie dazu den Befehl: &amp;quot;exit&amp;quot;&lt;br /&gt;
&lt;br /&gt;
===Herunterfahren===&lt;br /&gt;
&lt;br /&gt;
Das Herunterfahren funktioniert auf dem selben Weg.&lt;br /&gt;
&lt;br /&gt;
Entweder sie Benutzen wieder das Startmenü und benutzen diesmal den &amp;quot;Ausschalten ...&amp;quot; Knopf,&lt;br /&gt;
&lt;br /&gt;
Oder sie geben den äquivalenten &amp;quot;shutdown&amp;quot;-Befehl in einem Terminal bzw. der virtuellen Konsole ein.&lt;br /&gt;
&lt;br /&gt;
Allerdings müssen sie dazu als Administrator angemeldet sein s. &amp;quot;Sudo&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Wenn Sie den &amp;quot;shutdown&amp;quot;-Befehl benutzen wollen muss hinter den Befehl&lt;br /&gt;
&lt;br /&gt;
eine Zeitangabe in Minuten oder das wort &amp;quot;now&amp;quot; für sofortiges Ausschalten hinzugefügt werden:&lt;br /&gt;
&lt;br /&gt;
 xinux@zero:~$ sudo -i&lt;br /&gt;
 root@zero:~# shutdown 60&lt;br /&gt;
 &lt;br /&gt;
 Broadcast message from xinux@zero &lt;br /&gt;
         (/dev/pts/3) at 14:29 ...&lt;br /&gt;
 &lt;br /&gt;
 The system is going down for maintenance in 60 minutes!&lt;br /&gt;
&lt;br /&gt;
Sollten sie den Befehl widerrufen wollen dann drücken sie &amp;quot;STRG+C&amp;quot;,&lt;br /&gt;
&lt;br /&gt;
in dem Terminal in dem der shutdown Befehl gestartet wurde,&lt;br /&gt;
&lt;br /&gt;
oder geben sie den &amp;quot;shutdown&amp;quot;-Befehl zusammen mit der Abbruchoption &amp;quot;-c&amp;quot; in einem anderen Terminal ein:&lt;br /&gt;
&lt;br /&gt;
 root@zero:~# shutdown -c&lt;br /&gt;
&lt;br /&gt;
 shutdown: Shutdown cancelled&lt;br /&gt;
 root@zero:~# &lt;br /&gt;
&lt;br /&gt;
Wenn Sie den Rechner Neustarten möchten gibt es dazu die Option &amp;quot;-r&amp;quot; für den &amp;quot;shutdown&amp;quot;-Befehl&lt;br /&gt;
&lt;br /&gt;
oder den &amp;quot;reboot&amp;quot;-Befehl die beide auch als root ausgeführt werden müssen:&lt;br /&gt;
&lt;br /&gt;
 xinux@zero:~$ sudo -i&lt;br /&gt;
 [sudo] password for xinux: &lt;br /&gt;
 root@zero:~# shutdown -r now&lt;br /&gt;
&lt;br /&gt;
 root@zero:~# reboot&lt;br /&gt;
&lt;br /&gt;
===&amp;quot;man&amp;quot;===&lt;br /&gt;
&lt;br /&gt;
Programm zum Einsehen der Online-Manuals&lt;br /&gt;
&lt;br /&gt;
Die Manuals sind in folgende Sektionen unterteilt:&lt;br /&gt;
# Ausführbare Programme oder Shellbefehle&lt;br /&gt;
# Systemaufrufe (Kernelfunktionen)&lt;br /&gt;
# Bibliotheksaufrufe (Funktionen in System-Bibliotheken)&lt;br /&gt;
# Spezielle Dateien (gewöhnlich in /dev)&lt;br /&gt;
# Dateiformate und Konventionen, z. B. /etc/passwd&lt;br /&gt;
# Spiele&lt;br /&gt;
# Makropakete und Konventionen, z. B. man(7), groff(7)&lt;br /&gt;
# Systemadministrationsbefehle (in der Regel nur für root)&lt;br /&gt;
# Kernelroutinen [Nicht Standard]&lt;br /&gt;
&lt;br /&gt;
Aufruf eines Manuals erfolgt durch ''man kommando''&lt;br /&gt;
Beendet wird durch Drücken des Buchstabens q&lt;br /&gt;
Gesucht wird vorwärts durch Eingabe eines /suchausdruck&lt;br /&gt;
Gesucht wird rückwärts durch Eingabe eines ?suchausdruck&lt;br /&gt;
&lt;br /&gt;
Beispiele:&lt;br /&gt;
&lt;br /&gt;
      man passwd        Anschauen der Manualseite zum Programm passwd&lt;br /&gt;
      man 5 passwd      Anschauen der Manualseite zur Datei /etc/passwd&lt;br /&gt;
      man -a passwd     Anschauen aller Manualseiten zu passwd&lt;br /&gt;
      man -k passwd     Durchsucht die Kurzbeschreibungen der Manualseite&lt;br /&gt;
                        nach passwd und gibt alle Treffer aus&lt;br /&gt;
      man -f passwd      Gibt alle gefunden Kurzbescheibungen zu passwd aus&lt;br /&gt;
      man -L en passwd Gibt englische Manualseiten aus&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Was geht vor auf meinem System? (date,who)===&lt;br /&gt;
&lt;br /&gt;
Das Kommando date dient zur Abfrage von Datum und Uhrzeit.&lt;br /&gt;
&lt;br /&gt;
 xinux@zero:~ &amp;gt; date&lt;br /&gt;
 Fre Mär 16 16:35:03 CET 2001&lt;br /&gt;
&lt;br /&gt;
oder auch Anzeige der Grennwich Zeit:&lt;br /&gt;
&lt;br /&gt;
 xinux@zero:~ &amp;gt; date -u&lt;br /&gt;
 Fre Mär 16 15:35:34 UTC 2001&lt;br /&gt;
&lt;br /&gt;
 xinux@zero:~ &amp;gt; date -u &amp;quot;+%X&amp;quot;&lt;br /&gt;
 15:37:19&lt;br /&gt;
&lt;br /&gt;
 xinux@zero:~ &amp;gt; date -u &amp;quot;+%x&amp;quot;&lt;br /&gt;
 01/15/02&lt;br /&gt;
&lt;br /&gt;
who zeigt alle angemeldeten Benutzer an&lt;br /&gt;
&lt;br /&gt;
 thomas@cardassia:~ &amp;gt; who&lt;br /&gt;
 thomas             tty1 Feb 27 16:39&lt;br /&gt;
 thomas             tty2 Mar 2 17:08&lt;br /&gt;
 tina               tty6 Mar 16 16:38&lt;br /&gt;
&lt;br /&gt;
Mit `who --help' bekommen Sie mehr Informationen.&lt;br /&gt;
&lt;br /&gt;
 thomas@cardassia:~ &amp;gt; who --help&lt;br /&gt;
&lt;br /&gt;
Benutzung: who [OPTION]... [ DATEI | ARG1 ARG2 ]&lt;br /&gt;
&lt;br /&gt;
 -H, --heading             print line of column headings&lt;br /&gt;
 -i, -u, --idle            add user idle time as HOURS:MINUTES, . or old&lt;br /&gt;
 -l, --lookup              attempt to canonicalize hostnames via DNS&lt;br /&gt;
 -m                        only hostname and user associated with stdin&lt;br /&gt;
 -q, --count               all login names and number of users logged on&lt;br /&gt;
 -s                        (ignored)&lt;br /&gt;
 -T, -w, --mesg            add user's message status as +, - or ?&lt;br /&gt;
     --message             same as -T&lt;br /&gt;
     --writable            same as -T&lt;br /&gt;
     --help                display this help and exit&lt;br /&gt;
     --version             output version information and exit&lt;br /&gt;
&lt;br /&gt;
==Das UNIX-Dateisystem==&lt;br /&gt;
===Verzeichnisbaum===&lt;br /&gt;
&lt;br /&gt;
[[Image:vztree.jpg]]&lt;br /&gt;
&lt;br /&gt;
Das Betriebssystem UNIX besitzt ein hierarchisches Dateisystem. Es besteht aus:&lt;br /&gt;
* Dateien (Files)&lt;br /&gt;
Dateien speichern Informationen (Text, Bilder, Sound, Videos, Programme) und&lt;br /&gt;
werden über den Dateinamen angesprochen.&lt;br /&gt;
&lt;br /&gt;
* Verzeichnissen (Directories, Kataloge)&lt;br /&gt;
Verzeichnisse besitzen ebenfalls einen Namen und dienen zur Ordnung des&lt;br /&gt;
Dateisystems. Ein Verzeichnis kann Dateien und Unterverzeichnisse&lt;br /&gt;
(Subdirectories) enthalten. Das oberste Verzeichnis im Dateisystem heisst&lt;br /&gt;
Rootverzeichnis oder kurz Root und wird durch / (sprich: slash)&lt;br /&gt;
gekennzeichnet.&lt;br /&gt;
&lt;br /&gt;
Im Gegensatz zu Windows kennt UNIX keine Laufwerke.&lt;br /&gt;
Das obige Bild zeigt ein typisches UNIX-Dateisystem.&lt;br /&gt;
Unterhalb des Rootverzeichnisses befinden sich eine Vielzahl vonVerzeichnissen.&lt;br /&gt;
&lt;br /&gt;
===Wichtige Verzeichnisse===&lt;br /&gt;
&lt;br /&gt;
• '''Homeverzeichnis'''&lt;br /&gt;
&lt;br /&gt;
das Verzeichnis, in dem man sich unmittelbar nach dem Anmelden befindet. Das&lt;br /&gt;
Homeverzeichnis wird vom Systemverwalter eingerichtet; jeder Anwender&lt;br /&gt;
besitzt ein festes Homeverzeichnis. z.B. /home/hans&lt;br /&gt;
&lt;br /&gt;
~ (Tilde) bzw. $HOME (Shellvariable) kennzeichnen das Homeverzeichnis.&lt;br /&gt;
&lt;br /&gt;
• '''Aktuelles Verzeichnis'''&lt;br /&gt;
&lt;br /&gt;
Verzeichnis, in dem man sich aktuell befindet.&lt;br /&gt;
Das aktuelle Verzeichnis wird mit dem Befehl cd (change directory) oder per&lt;br /&gt;
Mausklick verändert.&lt;br /&gt;
Ein einfacher Punkt . kennzeichnet das aktuelle Verzeichnis.&lt;br /&gt;
&lt;br /&gt;
• '''Elternverzeichnis'''&lt;br /&gt;
&lt;br /&gt;
Verzeichnis unmittelbar oberhalb des aktuellen Verzeichnisses.&lt;br /&gt;
Jedes Verzeichnis ausser / besitzt genau ein Elternverzeichnis.&lt;br /&gt;
Zwei Punkte .. kennzeichnen das Elternverzeichnis (abhängig vom aktuellen&lt;br /&gt;
VZ).&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Absoluter Pfadname:===&lt;br /&gt;
&lt;br /&gt;
Beschreibt ausgehend vom Rootverzeichnis den Weg zum Zielverzeichnis oder zur&lt;br /&gt;
Zieldatei. (Welche Verzeichnisse müssen ausgehend von / durchlaufen werden, um&lt;br /&gt;
zum Ziel zu kommen?) Ein absoluter Pfadname beginnt immer mit / .&lt;br /&gt;
&lt;br /&gt;
===Relativer Pfadname:===&lt;br /&gt;
&lt;br /&gt;
Beschreibt ausgehend vom aktuellen Verzeichnis den Weg zum Zielverzeichnis&lt;br /&gt;
oder zur Zieldatei; ein relativer Pfadname beginnt nicht mit / .&lt;br /&gt;
/home/suxer&lt;br /&gt;
absoluter Pfadname für das Verzeichnis sub1 im Homeverzeichnis von suxer&lt;br /&gt;
&lt;br /&gt;
===Verzeichnisstruktur===&lt;br /&gt;
&lt;br /&gt;
 /bin         Kommandos die beim starten benötigt werden (Zugriff hat jeder)&lt;br /&gt;
 /sbin        Wichtige System-Programme (In der Regel root vorberhalten)&lt;br /&gt;
 /boot        Hier findet man die Dateien des Bootmanagers und des Kernel.&lt;br /&gt;
 /dev         In diesem Verzeichnis stehen die Gerätedateien (Devices),&lt;br /&gt;
 /home        Alle Heimatverzeichnisse der Nutzer findet man hier.&lt;br /&gt;
 /lib         Beim Systemstart benötigten Bibliotheken und Modules stehen hier.&lt;br /&gt;
 /mnt         Mountpunkt für temporäre Partitionen&lt;br /&gt;
 /opt         Software, die nicht Installationsumfang von Linux gehören.&lt;br /&gt;
 /root        Heimatverzeichnis des Administrators.&lt;br /&gt;
 /tmp         Temporäre Dateien können hier abgelegt werden&lt;br /&gt;
 /usr         statische Dateien (kann read-only gemountet sein)&lt;br /&gt;
 /var         variable Dateien (muss beschreibar sein )&lt;br /&gt;
 /etc         Konfiguartionsdateien und Startscripte&lt;br /&gt;
 /proc        Virtuelles Dateisystem -&amp;gt; repräsentiert den Kernel&lt;br /&gt;
&lt;br /&gt;
===Unterverzeichnisse von /usr===&lt;br /&gt;
&lt;br /&gt;
 sbin         Programme für root die beim Start nicht benötigt werden&lt;br /&gt;
 bin          Programme für alle die beim Start nicht benötigt werden&lt;br /&gt;
 X11R6        Dateien des X-Window-Sytems&lt;br /&gt;
 bin          Ausführbare Programme&lt;br /&gt;
 doc          Dokumentationen&lt;br /&gt;
 etc          Konfigurationsdateien&lt;br /&gt;
 games        Spiele&lt;br /&gt;
 include      Headerdateien für C-Programme&lt;br /&gt;
 local        Pakete die nicht zur Distribution gehören ähnlich /opt&lt;br /&gt;
 share        Pakete die von mehreren Paketen genutzt werden&lt;br /&gt;
 share/man    Die Manualpages&lt;br /&gt;
 share/info   Seiten des Infosystems&lt;br /&gt;
 share/doc    Dokumentationen&lt;br /&gt;
 src          Sources von Programmen (Kernel und andere)&lt;br /&gt;
&lt;br /&gt;
===Unterverzeichnisse von /var===&lt;br /&gt;
&lt;br /&gt;
 cache        Zwischenspreicher für Progammes&lt;br /&gt;
 games        Variable Daten der Games (Scores etc...)&lt;br /&gt;
 lock         Sperrdateien&lt;br /&gt;
 log          Die Logdateien (wichtiges Verzeichnis für Admins)&lt;br /&gt;
 mail         Das Mailsystem&lt;br /&gt;
 run          Dateien zu laufemdem Prozessen&lt;br /&gt;
 spool        Spooldateien (z.B. für das Drucksystem&lt;br /&gt;
 state        Statusinfos&lt;br /&gt;
 tmp          Wie /tmp eventuell nicht auf root Partion&lt;br /&gt;
&lt;br /&gt;
==Einfache Komandos==&lt;br /&gt;
===cd: Wechseln des Arbeitsverzeichnis===&lt;br /&gt;
&lt;br /&gt;
Um festzustellen in welchem Verzeichnis man sich befindet, sollte man den&lt;br /&gt;
Befehl &amp;quot;pwd&amp;quot; benutzen,&lt;br /&gt;
&lt;br /&gt;
und mit dem Befehl &amp;quot;cd&amp;quot; kann man zwischen den Verzeichnissen wechseln:&lt;br /&gt;
&lt;br /&gt;
Wechsele ins homeverzeichnis von Xinux&lt;br /&gt;
&lt;br /&gt;
 xinux@zero:~$ cd /home/xinux/&lt;br /&gt;
 xinux@zero:~$ pwd&lt;br /&gt;
 /home/xinux&lt;br /&gt;
&lt;br /&gt;
cd ~ -&amp;gt; wechsele ins jeweilige Homeverzeichnis&lt;br /&gt;
&lt;br /&gt;
cd .. -&amp;gt; wechsele ein Verzeichnis höher&lt;br /&gt;
&lt;br /&gt;
cd ../verzeichnis -&amp;gt; wechsele in eine paralleles Verzeichnis &amp;lt;- (ist eine relative Pfadangabe !)&lt;br /&gt;
&lt;br /&gt;
cd - -&amp;gt; wechsele in das Verzeichnis, in dem vorher gearbeitet wurde.&lt;br /&gt;
&lt;br /&gt;
Mit cd / wechselt man in das Wurzelverzeichnis.&lt;br /&gt;
&lt;br /&gt;
 xinux@zero:/var/log$ cd /&lt;br /&gt;
 xinux@zero:/$ pwd&lt;br /&gt;
 /&lt;br /&gt;
&lt;br /&gt;
===ls: Listing===&lt;br /&gt;
&lt;br /&gt;
Den Inhalt von Verzeichnissen kann man sich mit dem Befehl &amp;quot;ls&amp;quot; anzeigen lassen&lt;br /&gt;
wobei &amp;quot;ls&amp;quot; eine Vielzahl von Optionen besitzt:&lt;br /&gt;
&lt;br /&gt;
 ls                                  standard&lt;br /&gt;
 ls -l                               langes listing&lt;br /&gt;
 ls -a                               alle Dateien&lt;br /&gt;
 ls -i                               mit Inode&lt;br /&gt;
 ls -h                               gut lesbare Dateigröße&lt;br /&gt;
 ls -d                               Verzechnis wird angezeigt, nicht der Inhalt&lt;br /&gt;
 ls -L                               sortiert nach Größe&lt;br /&gt;
 ls -t                               sortiert nach Datum&lt;br /&gt;
 ls -F                               mit nützlichem Anhang&lt;br /&gt;
&lt;br /&gt;
 xinux@zero:/$ ls -l /var/log/messages&lt;br /&gt;
 -rw-r----- 1 syslog adm 2296 2009-06-16 10:05 /var/log/messages&lt;br /&gt;
&lt;br /&gt;
===more: Seitenweises Anzeigen von Seiten===&lt;br /&gt;
 root@zero:~# more /var/log/messages&lt;br /&gt;
 ...&lt;br /&gt;
&lt;br /&gt;
===head: erste Zeilen anzeigen===&lt;br /&gt;
Erste 10 Zeilen anzeigen&lt;br /&gt;
 root@zero:~# head /var/log/messages&lt;br /&gt;
 Jun 15 12:37:08 zero syslogd 1.5.0#5ubuntu3: restart.&lt;br /&gt;
 Jun 15 12:38:43 zero kernel: [  830.065036] mtrr: your processor doesn't support write-combining&lt;br /&gt;
 Jun 15 12:46:05 zero pulseaudio[4817]: pid.c: Stale PID file, overwriting.&lt;br /&gt;
 Jun 15 13:05:24 zero -- MARK --&lt;br /&gt;
 ...&lt;br /&gt;
&lt;br /&gt;
Erste zwei Zeilen anzeigen&lt;br /&gt;
 root@zero:~# head -n 2 /var/log/messages&lt;br /&gt;
 Jun 15 12:37:08 zero syslogd 1.5.0#5ubuntu3: restart.&lt;br /&gt;
 Jun 15 12:38:43 zero kernel: [  830.065036] mtrr: your processor doesn't support write-combining&lt;br /&gt;
&lt;br /&gt;
===tail: letzte Zeilen anzeigen===&lt;br /&gt;
 &lt;br /&gt;
 root@zero:~# tail /var/log/syslog&lt;br /&gt;
 ...&lt;br /&gt;
 Jun 19 11:19:35 zero -- MARK --&lt;br /&gt;
 Jun 19 11:39:35 zero -- MARK --&lt;br /&gt;
 Jun 19 11:59:36 zero -- MARK --&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Letze 5 Zeilen anzeigen&lt;br /&gt;
 root@zero:~# tail -n 5 /var/log/auth.log&lt;br /&gt;
 Jun 18 14:30:01 zero CRON[12040]: pam_unix(cron:session): session closed for user root&lt;br /&gt;
 Jun 18 14:39:01 zero CRON[12191]: pam_unix(cron:session): session opened for user root by (uid=0)&lt;br /&gt;
 Jun 18 14:39:01 zero CRON[12191]: pam_unix(cron:session): session closed for user root&lt;br /&gt;
 Jun 18 14:40:01 zero CRON[12237]: pam_unix(cron:session): session opened for user root by (uid=0)&lt;br /&gt;
 Jun 18 14:40:01 zero CRON[12237]: pam_unix(cron:session): session closed for user root&lt;br /&gt;
&lt;br /&gt;
Letze Zeilen anzeigen und fortlaufend aktualisieren&lt;br /&gt;
 root@zero:~# tail -f /var/log/syslog&lt;br /&gt;
 ...&lt;br /&gt;
&lt;br /&gt;
===mkdir: Ein neues Verzeichnis erstellen===&lt;br /&gt;
&lt;br /&gt;
 mkdir        verzeichnis&lt;br /&gt;
Erstellt ein Verzeichnis im working directory (wd)&lt;br /&gt;
&lt;br /&gt;
 mkdir  -p    ver1/ver2&lt;br /&gt;
Erstellt ein Verzeichnis ver2 unterhalb von ver1&lt;br /&gt;
wenn ver1 nicht existiert wird es erstellt&lt;br /&gt;
&lt;br /&gt;
 mkdir -m 753 ver1&lt;br /&gt;
Es wird das Verzeichnis ver1 erstellt mit der mask 753&lt;br /&gt;
&lt;br /&gt;
 mkdir -v     ver1&lt;br /&gt;
Geschwätzige Ausgabe :)&lt;br /&gt;
&lt;br /&gt;
===Zum Löschen von leeren Verzeichnissen wird rmdir benutzt===&lt;br /&gt;
&lt;br /&gt;
 rmdir           ver1&lt;br /&gt;
Löscht das leere Verzeichnis ver1&lt;br /&gt;
&lt;br /&gt;
 rmdir -v        ver1&lt;br /&gt;
Löscht das leere Verzeichnis ver1 und ist geschwätzig&lt;br /&gt;
&lt;br /&gt;
 rmdir -p        /ver1/ver2/ver3&lt;br /&gt;
Löscht das Verzeichnis ver3; wenn dadurch ver2 ein leeres&lt;br /&gt;
Verzeichnis wird, wird dieses auch gelöscht , wenn ver1&lt;br /&gt;
dadurch ein leeres Verzeichnis wird, wird auch dieses gelöscht.&lt;br /&gt;
&lt;br /&gt;
===touch Verändern des Zeitstempels===&lt;br /&gt;
&lt;br /&gt;
Mit touch können wir eine neue leere Datei erzeugen (das ist nicht der eigentliche&lt;br /&gt;
Zweck von touch, eigentlich wird der Zeitstempel geändert)&lt;br /&gt;
&lt;br /&gt;
 touch            dateiname&lt;br /&gt;
&lt;br /&gt;
===Kopieren=== &lt;br /&gt;
cp ist das Kommando um Dateien zu kopieren &lt;br /&gt;
&lt;br /&gt;
Eine Kopie von dat1 mit dem Namen dat2 erstellen:&lt;br /&gt;
&lt;br /&gt;
 xinux@zero:~$ cp dat1 dat2&lt;br /&gt;
&lt;br /&gt;
Eine Kopie von dat1 ins Verzeichnis ver2 erstellen:&lt;br /&gt;
&lt;br /&gt;
 xinux@zero:~$ cp dat1 ver2/&lt;br /&gt;
 &lt;br /&gt;
Eine Kopie erstellen mit ausführlicher Anzeige:&lt;br /&gt;
&lt;br /&gt;
 xinux@zero:~$ cp -v dat1 dat2&lt;br /&gt;
 `dat1' -&amp;gt; `dat2'&lt;br /&gt;
&lt;br /&gt;
Eine Kopie erstellen mit Rückfrage fals etwas überschrieben wird:&lt;br /&gt;
&lt;br /&gt;
 xinux@zero:~$ cp -i dat1 dat2&lt;br /&gt;
 cp: overwrite `dat2'?&lt;br /&gt;
&lt;br /&gt;
Eine Kopie erstellen und die Rückfrage überbrücken:&lt;br /&gt;
&lt;br /&gt;
 xinux@zero:~$ cp -f dat1 dat2&lt;br /&gt;
&lt;br /&gt;
Eine Kopie von dat1 ins Verzeichnis ver2 erstellen fals keine neuere Version von dat1 vorliegt:&lt;br /&gt;
&lt;br /&gt;
 xinux@zero:~$ cp -u dat1 ver2/&lt;br /&gt;
&lt;br /&gt;
Eine Kopie erstellen fals ver2 auf dem selben Dateisystem wie dat1 liegt:&lt;br /&gt;
&lt;br /&gt;
 xinux@zero:~$ cp -x dat1 ver2/&lt;br /&gt;
&lt;br /&gt;
Eine Kopie von ver1, die als ver2 oder unter ver2 als ver1 gespeichert wird erstellen:&lt;br /&gt;
&lt;br /&gt;
 xinux@zero:~$ cp -r ver1/ ver2/&lt;br /&gt;
&lt;br /&gt;
Eine Kopie von einer Datei erstellen und ihre Attribute beibehalten:&lt;br /&gt;
&lt;br /&gt;
 xinux@zero:~$ cp -p sux1 sux2&lt;br /&gt;
&lt;br /&gt;
Eine Kopie erstellen bei der die Links erhalten bleiben:&lt;br /&gt;
&lt;br /&gt;
 xinux@zero:~$ cp -r ver1/ ver2/&lt;br /&gt;
&lt;br /&gt;
Eine Kopie erstellen zum Archivieren (-dpr):&lt;br /&gt;
&lt;br /&gt;
 xinux@zero:~$ cp -a ver1/ ver2/&lt;br /&gt;
&lt;br /&gt;
===rm: Löschen einer Datei===&lt;br /&gt;
&lt;br /&gt;
Um Dateien zu löschen, brauchen wir das Kommando &amp;quot;rm&amp;quot;:&lt;br /&gt;
&lt;br /&gt;
 rm               dat1        dat1 wird gelöscht&lt;br /&gt;
 rm         -i    dat1        dat1 wird nach Bestätigung gelöscht&lt;br /&gt;
 rm         -f    dat1        dat1 wird ohne Rückfragen gelöscht&lt;br /&gt;
 rm         -v    dat1        dat1 wird glöscht (geschwätzige Ausgabe)&lt;br /&gt;
 rm         -r    ver1        Löschen von nicht leeren Verzeichnissen&lt;br /&gt;
                              Achtung !!! Als root kann man sich damit Teile&lt;br /&gt;
                              oder sogar den gesamten Verzeichnisbaum&lt;br /&gt;
                              absägen !!!&lt;br /&gt;
&lt;br /&gt;
===mv: Verschieben===&lt;br /&gt;
&lt;br /&gt;
Mit dem Befehl &amp;quot;mv&amp;quot; werden Daten verschoben, folgendes gilt:&lt;br /&gt;
&lt;br /&gt;
 mv          dat1 dat2         &lt;br /&gt;
Die Datei dat1 wird in dat2 umbenannt&lt;br /&gt;
 mv          dat1 /ver1        &lt;br /&gt;
Die Datei dat1 wird nach /ver1 verschoben&lt;br /&gt;
&lt;br /&gt;
Die Parameter und ihre Bedeutung:&lt;br /&gt;
&lt;br /&gt;
      -i                      wenn eine Datei exisitiert wird vor dem&lt;br /&gt;
                              Überschreiben nachgefragt&lt;br /&gt;
      -v                      verbose (geschwätzig)&lt;br /&gt;
      -u                      nur neuere Daten werden bei Bedarf überschrieben&lt;br /&gt;
      -b                      wenn überschrieben werden soll, wird ein Backup&lt;br /&gt;
                              erstellt&lt;br /&gt;
      -S ENDUNG               das Backup bekommt die Endung ENDUNG&lt;br /&gt;
&lt;br /&gt;
===su Benutzer wechseln===&lt;br /&gt;
&lt;br /&gt;
 su -             &lt;br /&gt;
Wechsel zum Rootaccount, wie wenn dieser sich neu anmelden würde. (Bsp: su -)&lt;br /&gt;
&lt;br /&gt;
 su Benutzernamen &lt;br /&gt;
Wechsel der Identität zu Benutzer (gegebenenfalls Passwortabfrage)&lt;br /&gt;
&lt;br /&gt;
 su -c Kommando   &lt;br /&gt;
Kommando wird als rootaccount ausgeführt&lt;br /&gt;
&lt;br /&gt;
==Der Standard Editor vi==&lt;br /&gt;
Der vi ist der Standardeditor in der Unixwelt. Er ist in jedem Unix-Derivat&lt;br /&gt;
enthalten.&lt;br /&gt;
Der Editor hat zwar den schlechten Ruf umständlich zu bedienen zu sein, ist&lt;br /&gt;
jedoch sehr leistungsfähig und systemübergreifend verfügbar. Beim vi handelt es&lt;br /&gt;
sich um einen rein textorientierten Editor, der mittels eigener Kommandos&lt;br /&gt;
gesteuert wird.&lt;br /&gt;
&lt;br /&gt;
Der Editor VIM ist eine weitere Verbesserung von VI und leichter zu bedienen.&lt;br /&gt;
Und unter Ubuntu/Debian mit &amp;quot;apt-get install vim&amp;quot; zu installieren.&lt;br /&gt;
&lt;br /&gt;
===Starten des Editors:===&lt;br /&gt;
&lt;br /&gt;
Der Editorstart erfolgt einfach durch die Eingabe des Kommandos vi mit dem&lt;br /&gt;
Dateinamen der zu editierenden Datei als Parameter.&lt;br /&gt;
Beispiel:        &lt;br /&gt;
 vi sux.txt&lt;br /&gt;
&lt;br /&gt;
===Die Betriebsmodi des vi:===&lt;br /&gt;
&lt;br /&gt;
Ein Umstand, der dem vi den Ruf der komplizierten Bedienbarkeit zugetragen hat,&lt;br /&gt;
sind die unterschiedlichen Betriebsmodi des Editors. Genauer gesagt verfügt der&lt;br /&gt;
vi über drei Betriebsmodi:&lt;br /&gt;
&lt;br /&gt;
====Kommandomodus:====&lt;br /&gt;
&lt;br /&gt;
Innerhalb dieses Modus werden die eingegebenen Zeichen direkt als Befehle des&lt;br /&gt;
Editors interpretiert und ausgeführt. Dabei gibt es weder ein Bereitschaftszeichen&lt;br /&gt;
(Prompt) noch ein Echo (Ausgabe). Der Kommandomodus ist der Modus, in dem&lt;br /&gt;
sich der vi direkt nach seinem Start befindet.&lt;br /&gt;
&lt;br /&gt;
====Zeilenmodus oder Exmodus:====&lt;br /&gt;
&lt;br /&gt;
Dieser Modus ist der einzige Modus mit einem eigenen Bereitschaftszeichen,&lt;br /&gt;
nämlich dem Doppelpunkt (:). Das Prompt wird ebenso wie die Befehlsausgaben&lt;br /&gt;
in der Statuszeile angezeigt.&lt;br /&gt;
&lt;br /&gt;
====Eingabemodus:====&lt;br /&gt;
&lt;br /&gt;
Der Eingabemodus ist derjenige, in welchem der zu bearbeitende Text bearbeitet&lt;br /&gt;
werden kann. Alle hier eingegebenen Zeichen werden als Text für die aktuelle&lt;br /&gt;
Datei interpretiert. Zwischen den unterschiedlichen Modi kann jederzeit&lt;br /&gt;
gewechselt werden. Von Kommandomodus gelangen Sie durch mehere Wege in&lt;br /&gt;
den Eingabemodus. Man kann durch folgende Aktionen wechslen&lt;br /&gt;
&lt;br /&gt;
{| border=1 cellpadding=2&lt;br /&gt;
|i&lt;br /&gt;
|Text vor der aktuellen Cursorposition einfügen&lt;br /&gt;
|-&lt;br /&gt;
|I&lt;br /&gt;
|Text am Zeilenanfang einfügen&lt;br /&gt;
|-&lt;br /&gt;
|a&lt;br /&gt;
|Text hinter der aktuellen Cursorposition einfügen&lt;br /&gt;
|-&lt;br /&gt;
|A&lt;br /&gt;
|Text am Zeilenende einfügen&lt;br /&gt;
|-&lt;br /&gt;
|o&lt;br /&gt;
|Unterhalb der aktuellen Zeile eine neue Zeile einfügen&lt;br /&gt;
|-&lt;br /&gt;
|O&lt;br /&gt;
|Oberhalb der aktuellen Zeile eine neue Zeile einfügen&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Durch das Drücken der ESC - Taste gelangt man in den Kommandomodus zurück.&lt;br /&gt;
&lt;br /&gt;
Im Kommandomodus können Sie durch den Text navigieren und auch den Text&lt;br /&gt;
selbst bearbeiten, z.B ausschneiden, kopieren usw. Dazu sind einige Kommandos&lt;br /&gt;
nötig, von denen die wichtigsten im Folgenden erläutert werden:&lt;br /&gt;
&lt;br /&gt;
 xinux@zero:/$ vi iwas.txt&lt;br /&gt;
&lt;br /&gt;
[[Image:vim.jpg]]&lt;br /&gt;
&lt;br /&gt;
===Benutzen des Kommandomodus===&lt;br /&gt;
====Steuerung des Cursors durch den Text====&lt;br /&gt;
&lt;br /&gt;
Mittels folgender Kommandos bewegt sich der Cursor durch den Text:&lt;br /&gt;
&lt;br /&gt;
{| border=1 cellpadding=2&lt;br /&gt;
|h&lt;br /&gt;
|Cursor ein Zeichen nach links&lt;br /&gt;
|-&lt;br /&gt;
|l&lt;br /&gt;
|Cursor ein Zeichen nach rechts&lt;br /&gt;
|-&lt;br /&gt;
|k&lt;br /&gt;
|Cursor eine Zeile nach oben&lt;br /&gt;
|-&lt;br /&gt;
|j&lt;br /&gt;
|Cursor eine Zeile nach unten&lt;br /&gt;
|-&lt;br /&gt;
|w&lt;br /&gt;
|Cursor ein Wort nach rechts&lt;br /&gt;
|-&lt;br /&gt;
|b&lt;br /&gt;
|Cursor ein Wort nach links&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Alle diese Kommandos können mit einem vorgestellten Wiederholungsfaktor&lt;br /&gt;
arbeiten. Der Befehl 3w verschiebt demnach den Cursor um 3 Wörter nach rechts.&lt;br /&gt;
&lt;br /&gt;
====Angaben zur Positionierung====&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{| border=1 cellpadding=2&lt;br /&gt;
|STRG+U&lt;br /&gt;
|1⁄2 Bildschirmseite nach oben&lt;br /&gt;
|-&lt;br /&gt;
|STRG+D&lt;br /&gt;
|1⁄2 Bildschirmseite nach unten&lt;br /&gt;
|-&lt;br /&gt;
|STRG+B&lt;br /&gt;
|1 Bildschirmseite nach oben&lt;br /&gt;
|-&lt;br /&gt;
|STRG+F&lt;br /&gt;
|1 Bildschirmseite nach unten&lt;br /&gt;
|-&lt;br /&gt;
|/Ausdruck&lt;br /&gt;
|Sucht den Ausdruck (vorwärts) Weitersuchen mit n , N&lt;br /&gt;
|-&lt;br /&gt;
|?Ausdruck&lt;br /&gt;
|Sucht den Ausdurck (rückwärts) Weitersuchen mit n , N&lt;br /&gt;
|-&lt;br /&gt;
|0&lt;br /&gt;
|Zeilenanfang&lt;br /&gt;
|-&lt;br /&gt;
|$&lt;br /&gt;
|Zeilenende&lt;br /&gt;
|-&lt;br /&gt;
|w&lt;br /&gt;
|Nächstes Wort&lt;br /&gt;
|-&lt;br /&gt;
|b&lt;br /&gt;
|Vorheriges Wort&lt;br /&gt;
|-&lt;br /&gt;
|fc&lt;br /&gt;
|Auf das Zeichen c springen. c steht für ein beliebiges Zeichen&lt;br /&gt;
|-&lt;br /&gt;
|G&lt;br /&gt;
|Letzte Zeile der Datei&lt;br /&gt;
|-&lt;br /&gt;
|ng&lt;br /&gt;
|n-te Zeile der Datei&lt;br /&gt;
|-&lt;br /&gt;
|H&lt;br /&gt;
|Anfang der Bildschirmseite&lt;br /&gt;
|-&lt;br /&gt;
|L&lt;br /&gt;
|Ende der Bildschirmseite&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
====Befehle zur Textbearbeitung -&amp;gt; Was soll geschehen====&lt;br /&gt;
&lt;br /&gt;
{| Border=1 Cellpadding=2&lt;br /&gt;
|x&lt;br /&gt;
|Löscht Zeichen&lt;br /&gt;
|-&lt;br /&gt;
|d&lt;br /&gt;
|Löschen und in den Puffer laden&lt;br /&gt;
|-&lt;br /&gt;
|c&lt;br /&gt;
|Ändern&lt;br /&gt;
|-&lt;br /&gt;
|y&lt;br /&gt;
|In den Puffer laden&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
====Weitere wichtige Befehle:====&lt;br /&gt;
&lt;br /&gt;
{| Border=1 Cellpadding=2&lt;br /&gt;
|p&lt;br /&gt;
|Aus dem Puffer einfügen&lt;br /&gt;
|-&lt;br /&gt;
|u&lt;br /&gt;
|Undo, macht den letzten Befehl rückgängig&lt;br /&gt;
|-&lt;br /&gt;
|STRG+R&lt;br /&gt;
|Redo, macht den letzten Undo rückgängig&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
===Zeilen- oder Exmodus===&lt;br /&gt;
&lt;br /&gt;
Wie schon erwähnt wird der Zeilen oder Exmodus durch einen : eingeleitet.&lt;br /&gt;
Es folgen einige Beispiele.&lt;br /&gt;
&lt;br /&gt;
Befehle zum Speichern und Beenden:&lt;br /&gt;
&lt;br /&gt;
 :w          Schreibt Datei&lt;br /&gt;
 :w Datei2   Schreibt eine Kopie in Datei2&lt;br /&gt;
 :w !        Schreibt Datei (übergehe Schreibschutz)&lt;br /&gt;
 :w ! Datei2 Schreibt eine Kopie in Datei2 (übergehe Schreibschutz)&lt;br /&gt;
 :q          Schließe Datei&lt;br /&gt;
 :q!         Schließe Datei (verwerfe Änderungen)&lt;br /&gt;
 :wq         Schreibe Datei und beende Editor&lt;br /&gt;
 :wq!        Schreibe Datei und beende Editor (übergehe Schreibschutz)&lt;br /&gt;
 :q!         Schließe Datei (verwerfe Änderungen)&lt;br /&gt;
 :h          Hilfe anzeigen, durch drücken von :q Beenden der Hilfe&lt;br /&gt;
 :e Datei3   Editiere Datei3&lt;br /&gt;
 :e #        Editere vorhergehende Datei&lt;br /&gt;
 :1,3co9     Kopiere von der ersten bis zu dritten Zeile &lt;br /&gt;
             und füge den Inhalt unterhalb der neunte Zeile ein.&lt;br /&gt;
&lt;br /&gt;
Interaktionen mit Unix:&lt;br /&gt;
&lt;br /&gt;
 :r Datei4   Fügt Inhalt der Datei4 nach dem Cursor ein&lt;br /&gt;
 :r ! Befehl Fügt Ausgabe des Befehls nach dem Cursor ein&lt;br /&gt;
 :! Befehl   Führt den Befehl aus&lt;br /&gt;
 :sh         Starte Subshell -&amp;gt; mit exit kehrt man wieder zurück&lt;br /&gt;
             Eingabemodus zurück&lt;br /&gt;
&lt;br /&gt;
====Ersetzen von Textteilen====&lt;br /&gt;
&lt;br /&gt;
Die grundsätzliche Syntax lautet:&lt;br /&gt;
&lt;br /&gt;
 :[Zeilennummer,Zeilennummer]s/Muster/Ersetzung/[gc]&lt;br /&gt;
&lt;br /&gt;
 :s/worf/kirn/              der erste worf wird in der aktuellen Zeile durch kirn ersetzt&lt;br /&gt;
 :1,9s/worf/kirn/g          von der 1. bis zur 9. Zeile werden alle worf durch kirn ersetzt&lt;br /&gt;
 :1,$s/worf/kirn/           von der ersten bis zur letzten Zeile ersetze ersten worf durch&lt;br /&gt;
                            kirn&lt;br /&gt;
 :.,$s/worf/kirn/g          von der aktuellen bis zur letzten Zeile ersetze alle worf durch&lt;br /&gt;
                            kirn&lt;br /&gt;
 :1,.s/worf/kirn/c          von der 1. bis zur aktuellen Zeile ersetze worf durch kirn, frage&lt;br /&gt;
                            aber nach&lt;br /&gt;
 :1,$s/^worf/kirn/          von der ersten bis zur letzten Zeile ersetze worf am&lt;br /&gt;
                            Zeilenanfang durch kirn&lt;br /&gt;
 :4,$s/worf$/kirn/          von der 4. bis zur letzten Zeile ersetze worf am Zeilenende&lt;br /&gt;
                            durch kirn&lt;br /&gt;
 :1,$s/^#//                 lösche alle Kommentarzeichen&lt;br /&gt;
 :1,$s/^.orf/kirn/           ersetze alles was am Zeilenanfang ein beliebiges Zeichen hat&lt;br /&gt;
                            gefolgt von einem orf durch kirn&lt;br /&gt;
 :1,$s/^[A-Z]orf/kirn/g     suche nach einem Großbuchstaben am Anfang der Zeile&lt;br /&gt;
                            gefolgt von einem orf und ersetze durch kirn&lt;br /&gt;
 :1,$s/^M[ae][iy]e*r/kirn/  suche alles, was am Anfang der Zeile ein großes M enthält,&lt;br /&gt;
                            gefolgt von einem a oder e , gefolgt von einem i oder y ,&lt;br /&gt;
                            gefolgt von einem e , welches 0 oder N mal vorkommen kann,&lt;br /&gt;
                            gefolgt von einem r und ersetze es durch kirn&lt;br /&gt;
&lt;br /&gt;
==Reguläre Ausdrücke==&lt;br /&gt;
&lt;br /&gt;
{| Border=1 Cellpadding=2&lt;br /&gt;
|c&lt;br /&gt;
|Ein einzelner Buchstabe passt auf sich selbst&lt;br /&gt;
|-&lt;br /&gt;
|.&lt;br /&gt;
|Ein Punkt passt auf jedes Zeichen außer auf das Zeilenende&lt;br /&gt;
|-&lt;br /&gt;
|*&lt;br /&gt;
|Das dem Operator * vorangehende Muster kann 0 oder öfter vorkommen&lt;br /&gt;
|-&lt;br /&gt;
|^&lt;br /&gt;
|(Caret) passt auf den Zeilenanfang&lt;br /&gt;
|-&lt;br /&gt;
|$&lt;br /&gt;
|Passt auf das Zeilenende&lt;br /&gt;
|-&lt;br /&gt;
|\&lt;br /&gt;
|Das folgende Sonderzeichen wird entwertet&lt;br /&gt;
|-&lt;br /&gt;
|[...]&lt;br /&gt;
|Passt auf &amp;quot;genau&amp;quot; eins in [...] angebenen Zeichen&lt;br /&gt;
|-&lt;br /&gt;
|[^...]&lt;br /&gt;
|Passt auf &amp;quot;genau&amp;quot; ein Zeichen welches nicht in [...] angebenen ist&lt;br /&gt;
|-&lt;br /&gt;
|\&amp;lt;&lt;br /&gt;
|Passt auf den Wortanfang&lt;br /&gt;
|-&lt;br /&gt;
|\&amp;gt;&lt;br /&gt;
|Passt auf das Wortende&lt;br /&gt;
|-&lt;br /&gt;
|\+&lt;br /&gt;
|Das dem Operator \+ vorangehende Muster kann 1 oder öfter vorkommen&lt;br /&gt;
|-&lt;br /&gt;
|&amp;amp;&lt;br /&gt;
|Setzt das gefunden Suchmuster ein&lt;br /&gt;
|-&lt;br /&gt;
|\(...\)&lt;br /&gt;
|Speichert den Text auf den das Suchmuster passt zur späteren Verwendung&lt;br /&gt;
|-&lt;br /&gt;
|\n&lt;br /&gt;
|Setzt das vorangehende, mit \(...\) Gefundene wieder ein&lt;br /&gt;
|-&lt;br /&gt;
|(...)&lt;br /&gt;
|Gruppiert Auswahlmöglichkeiten&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;nowiki&amp;gt;|&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
|Trennt Auswahlmöglichkeiten&lt;br /&gt;
|-&lt;br /&gt;
|\b&lt;br /&gt;
|Passt auf den Anfang oder das Ende eines Wortes&lt;br /&gt;
|-&lt;br /&gt;
|\B&lt;br /&gt;
|Symbolisiert den Raum innerhalb eines Wortes&lt;br /&gt;
|-&lt;br /&gt;
|\w&lt;br /&gt;
|Passt auf alle alphanumerischen Zeichen [A-Za-z0-9]&lt;br /&gt;
|-&lt;br /&gt;
|\W&lt;br /&gt;
|Passt auf alle nichtalphanumerischen Zeichen [^A-Za-z0-9]&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Die Rangfolge der Operatoren(von der höchsten zur niedrigsten)&lt;br /&gt;
:(, ), ?, *, + | .&lt;br /&gt;
&lt;br /&gt;
Die anderen Operatoren sind mit den anderen Buchstaben gleichrangig.&lt;br /&gt;
&lt;br /&gt;
===Beispiel zum Suchen===&lt;br /&gt;
&lt;br /&gt;
 Suchmuster               Passt auf&lt;br /&gt;
 ^Tuxer                   Tuxer am Zeilenanfang&lt;br /&gt;
 [tT]uxer                 Tuxer oder tuxer&lt;br /&gt;
 80[23]?86                8086, 80286 oder 80386&lt;br /&gt;
&lt;br /&gt;
===grep===&lt;br /&gt;
&lt;br /&gt;
Mit grep ist es möglich, in Dateien nach regulären Ausdrücken zu suchen. Wenn&lt;br /&gt;
eine Übereinstimmung gefunden wird, wird die komplette Zeile auf die&lt;br /&gt;
Standardausgabe geschrieben. grep kann auch von STDIN lesen.Es ist&lt;br /&gt;
empfehlenswert, sich anzugwöhnen ,das Suchmuster in Anführungszeichen zu&lt;br /&gt;
schreiben. Es gibt 3 Arten fgrep = fastgrep , grep und egrep egrep&lt;br /&gt;
&lt;br /&gt;
Beispiel:&lt;br /&gt;
&lt;br /&gt;
 root@zero:~# cat text&lt;br /&gt;
 quatsch&lt;br /&gt;
 quatsch&lt;br /&gt;
 quatsch&lt;br /&gt;
 wichtig&lt;br /&gt;
 quatsch&lt;br /&gt;
 root@zero:~# grep wichtig text&lt;br /&gt;
 wichtig&lt;br /&gt;
 root@zero:~# &lt;br /&gt;
&lt;br /&gt;
 -c                   meldet nur die Gesamtzahl der Fundstellen&lt;br /&gt;
 -v                   zeigt nur Zeilen, die »Ausdruck« nicht enthalten&lt;br /&gt;
 -i                   ignoriert Groß- und Kleinschreibung&lt;br /&gt;
 -l                    meldet nur Dateinamen mit Fundstellen&lt;br /&gt;
 -n                   listet Zeilennummern zu jeder Fundstelle&lt;br /&gt;
 -f                   Dateiname »Dateiname« enthält die Such-Ausdrücke&lt;br /&gt;
 -E                   ist ein erweiterter regulärer Ausdruck (egrep)&lt;br /&gt;
 -F                   (Muster, Ausdruck) ist ein Muster (String) (fgrep)&lt;br /&gt;
 -b                   listet auch die Position der Fundstellen&lt;br /&gt;
 -C    Anzahl         Anzahl von Zeilen werden nach der Fundstelle ausgegeben&lt;br /&gt;
 -B    Anzahl         Anzahl von Zeilen werden vor der Fundstelle ausgegeben&lt;br /&gt;
 -r                   Durchsucht Verzeichnisse rekursiv&lt;br /&gt;
&lt;br /&gt;
==Useridendifikation==&lt;br /&gt;
===/etc/passwd===&lt;br /&gt;
====Beschreibung====&lt;br /&gt;
passwd ist eine ASCII-Datei, die eine Liste der Benutzer des Systems und deren&lt;br /&gt;
Passwörter enthält. Die Passwortdatei sollte für alle Benutzer lesbar sein, was für&lt;br /&gt;
dieVerschlüsselung notwendig ist; aber nur vom Superuser beschreibbar. Wenn&lt;br /&gt;
Sie eine neue Kennung einrichten, lassen Sie das Passwort-Feld in der Datei frei&lt;br /&gt;
und benutzen Sie passwd(1), um dem System ein Passwort für die neue Kennung&lt;br /&gt;
mitzuteilen.&lt;br /&gt;
&lt;br /&gt;
Die Datei /etc/passwd enthält einen Eintrag pro Zeile mit dem Format:&lt;br /&gt;
login_name:passwd:UID:GID:user_name:directory:shell&lt;br /&gt;
====Die Bedeutung der Felder:====&lt;br /&gt;
# login_name Kennung des Benutzers auf dem System.&lt;br /&gt;
# password   Hier steht bei Shadowsystemen ein x. Die Passwörter sind in der Datei /etc/shadow&lt;br /&gt;
# UID        Die numerische Benutzernummer.&lt;br /&gt;
#  GID        Die numerische Gruppennummer des Benutzers.&lt;br /&gt;
# user_name Ein optionales Kommentarfeld, oft benutzt für den vollen Namen des Benutzers und weitere Informationen (Telefon, Raum-Nummer etc.).&lt;br /&gt;
# directory  Das Heimatverzeichnis $HOME des Benutzers.&lt;br /&gt;
# shell      Das Programm, das beim Einloggen gestartet werden soll (falls nicht nötig, benutzen Sie /bin/bash).&lt;br /&gt;
&lt;br /&gt;
===/etc/group===&lt;br /&gt;
====Beschreibung====&lt;br /&gt;
etc/group ist eine ASCII Datei, die Gruppen definiert, zu denen Benutzer&lt;br /&gt;
gehören. Es gibt nur einen Eintrag pro Zeile; jede Zeile hat folgendes Format:&lt;br /&gt;
         GruppenName:Passwort:GruppenKennung:BenutzerListe&lt;br /&gt;
Beschreibung der Felder:&lt;br /&gt;
#     GruppenName      Die Bezeichnung der Gruppe.&lt;br /&gt;
#     Passwort         Das (verschlüsselte) Gruppen-Passwort. Wenn dieses Feld leer ist, wird kein Passwort benötigt.&lt;br /&gt;
#     GruppenKennung Die numerische Identifikation der Gruppe.&lt;br /&gt;
#     BenutzerListe    Alle Namen der Mitglieder, getrennt durch Kommas.&lt;br /&gt;
&lt;br /&gt;
===/etc/shadow===&lt;br /&gt;
====Beschreibung====&lt;br /&gt;
shadow beinhaltet Informationen zu den verschlüsselten Passwörten, zu den&lt;br /&gt;
Benutzerzugängen und weitere Informationen zur Laufzeit der Passwörter.&lt;br /&gt;
 Name:Passwort:Letzte Änderung:Mintage:Maxtage:Warntage:Inaktiv:Ablauf&lt;br /&gt;
#    Der Loginname&lt;br /&gt;
#    verschlüsseltes Passwort &lt;br /&gt;
&amp;lt;nowiki&amp;gt;*&amp;lt;/nowiki&amp;gt; bedeutet Benutzer kann sich nicht einlogen&lt;br /&gt;
! bedeutet Benutzer hat kein Passwort gesetzt&lt;br /&gt;
#    Tage seit dem 1 Januar 1970 an dem das Passwort letztmals geändert wurde&lt;br /&gt;
#    Tage, die das Passwort behalten werden muss, bevor es wieder geändert werden kann&lt;br /&gt;
#     Die Anzahl der Tage, nach denen der Benutzer das Passwort wieder ändern muss&lt;br /&gt;
#    Anzahl der Tage bevor das Passwort abläuft und der Benutzer gewarnt wird&lt;br /&gt;
#    Wenn der Zugang diese Anzahl von Tagen nicht benutzt wird, wird der Zugang gesperrt&lt;br /&gt;
#    Tag seit dem 1 Januar 1970, an dem der Zugang gesperrt wird&lt;br /&gt;
#    Reserviertes Feld&lt;br /&gt;
&lt;br /&gt;
Die Datei sollte aus Sicherheitgründen nicht für einen normalen Benutzer lesbar&lt;br /&gt;
sein.&lt;br /&gt;
&lt;br /&gt;
==Programme zur Userverwaltung==&lt;br /&gt;
===useradd===&lt;br /&gt;
User anlegen&lt;br /&gt;
 root@zero:~# useradd -m -u 1011 -g user -G admin -d /home/erwin -s /bin/bash -c &amp;quot;Erwin Lehman&amp;quot;  erwin&lt;br /&gt;
{| border=1 cellpadding=2&lt;br /&gt;
|&amp;quot;-m&amp;quot;&lt;br /&gt;
|Lege Homedirectory an&lt;br /&gt;
|-&lt;br /&gt;
|&amp;quot;-u 1011&amp;quot;&lt;br /&gt;
|Userid wird zugeordnet&lt;br /&gt;
|-&lt;br /&gt;
|&amp;quot;-g user&amp;quot;&lt;br /&gt;
|Primäre Gruppe wird zugeordnet&lt;br /&gt;
|-&lt;br /&gt;
|&amp;quot;-G admin&amp;quot;&lt;br /&gt;
|Sekunbdäre Gruppe wird zugeordnet&lt;br /&gt;
|-&lt;br /&gt;
|&amp;quot;-d /home/erwin/&amp;quot;&lt;br /&gt;
|Name des Homedirectory&lt;br /&gt;
|-&lt;br /&gt;
|&amp;quot;-s /bin/bash&amp;quot;&lt;br /&gt;
|Bash wird zugeordnet&lt;br /&gt;
|- &lt;br /&gt;
|&amp;quot;-c Erwin Lehman&amp;quot;&lt;br /&gt;
|Kommentarfeld&lt;br /&gt;
|-&lt;br /&gt;
|&amp;quot;erwin&amp;quot; &lt;br /&gt;
|Name des Users&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Defaulteinstellungen anzeigen&lt;br /&gt;
 root@zero:~# useradd -D&lt;br /&gt;
 GROUP=100&lt;br /&gt;
 HOME=/home&lt;br /&gt;
 INACTIVE=-1&lt;br /&gt;
 EXPIRE=&lt;br /&gt;
 SHELL=/bin/sh&lt;br /&gt;
 SKEL=/etc/skel&lt;br /&gt;
 CREATE_MAIL_SPOOL=no&lt;br /&gt;
&lt;br /&gt;
Defaulteinstellungen ändern&lt;br /&gt;
 useradd -D -s /bin/bash&lt;br /&gt;
&lt;br /&gt;
Konfigurationsdatei&lt;br /&gt;
 root@zero:~# cat /etc/default/useradd &lt;br /&gt;
 SHELL=/bin/bash&lt;br /&gt;
 GROUP=100&lt;br /&gt;
 HOME=/home&lt;br /&gt;
 INACTIVE=-1&lt;br /&gt;
 EXPIRE=&lt;br /&gt;
 SKEL=/etc/skel&lt;br /&gt;
 CREATE_MAIL_SPOOL=no&lt;br /&gt;
&lt;br /&gt;
===usermod===&lt;br /&gt;
User modifizieren&lt;br /&gt;
 root@zero:~# usermod -l fritz -s /bin/sh -G admin,video erwin&lt;br /&gt;
{| border=1 cellpadding=2&lt;br /&gt;
|&amp;quot;-l fritz&amp;quot;&lt;br /&gt;
|Neuer Username&lt;br /&gt;
|-&lt;br /&gt;
|&amp;quot;-s /bin/sh&amp;quot;&lt;br /&gt;
|Neue Shell&lt;br /&gt;
|-&lt;br /&gt;
|&amp;quot;-G admin, video&amp;quot;&lt;br /&gt;
|Sekunbdäre Gruppen werden zugeordnet&lt;br /&gt;
|-&lt;br /&gt;
|&amp;quot;erwin&amp;quot; &lt;br /&gt;
|Name des Users&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
===userdel===&lt;br /&gt;
User inklusive Homedirectory löschen&lt;br /&gt;
 root@zero:~# userdel -r fritz&lt;br /&gt;
&lt;br /&gt;
===passwd===&lt;br /&gt;
Rootpasswort ändern&lt;br /&gt;
 root@zero:~# passwd &lt;br /&gt;
 Geben Sie ein neues UNIX Passwort ein:'''sysadm''' &lt;br /&gt;
 Geben Sie das neue UNIX Passwort erneut ein:'''sysadm''' &lt;br /&gt;
 passwd: Passwort erfolgreich geändert&lt;br /&gt;
&lt;br /&gt;
Passwort von tux ändern&lt;br /&gt;
 root@zero:~# passwd tux&lt;br /&gt;
 Geben Sie ein neues UNIX Passwort ein:'''suxer''' &lt;br /&gt;
 Geben Sie das neue UNIX Passwort erneut ein:'''suxer'''&lt;br /&gt;
 passwd: Passwort erfolgreich geändert&lt;br /&gt;
&lt;br /&gt;
Minimale und Maximale Gültigkeit des Passwortes von tux festlegen&lt;br /&gt;
 root@zero:~# passwd -n 5 -x 120 tux&lt;br /&gt;
&lt;br /&gt;
===groupadd===&lt;br /&gt;
 root@zero:~# groupadd -f -g 2001 xinuxer&lt;br /&gt;
{| border=1 cellpadding=2&lt;br /&gt;
|&amp;quot;-f&amp;quot;&lt;br /&gt;
|Überschreibe bestehende Gruppe&lt;br /&gt;
|-&lt;br /&gt;
|&amp;quot;-g 2001&amp;quot;&lt;br /&gt;
|GID der Gruppe&lt;br /&gt;
|-&lt;br /&gt;
|&amp;quot;xinuxer&amp;quot; &lt;br /&gt;
|Name des Gruppe&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==chmod==&lt;br /&gt;
Die Syntax des Befehls chmod lautet:&lt;br /&gt;
&lt;br /&gt;
'''chmod''' WerWieWas [,WerWieWas,.....] Dateiliste&lt;br /&gt;
&lt;br /&gt;
oder&lt;br /&gt;
&lt;br /&gt;
'''chmod''' Oktalzahl Dateiliste&lt;br /&gt;
&lt;br /&gt;
Durch WerWieWas bzw. Oktalzahl wird die Rechtetabelle definiert. Innerhalb von&lt;br /&gt;
WerWieWas darf es kein Leerzeichen geben. Wer bezeichnet den Benutzerkreis,&lt;br /&gt;
dem man Rechte gibt, Wie die Art, in der die Rechte gegeben werden und Was die&lt;br /&gt;
Rechte als solche. Im einzelnen können folgende Kürzel benutzt werden:&lt;br /&gt;
&lt;br /&gt;
Für Wer kann eines der folgenden Kürzel oder eine Kombination davon stehen:&lt;br /&gt;
 u                   (user) Rechte für den Dateibesitzer&lt;br /&gt;
 g                   (group) Rechte für die Gruppe&lt;br /&gt;
 o                   (others) Rechte für alle anderen Benutzer&lt;br /&gt;
 a                   (all) Rechte für alle Benutzer&lt;br /&gt;
Für Wie steht eines der folgenden Kürzel:&lt;br /&gt;
 +                   Die Rechte werden zu den vorhandenen zusätzlich vergeben&lt;br /&gt;
 -                   Die im Folgenden genannten Rechte werden entzogen&lt;br /&gt;
 =                   Die im Folgenden genannten Rechte ersetzen die bisherigen&lt;br /&gt;
Für Was steht eines der folgenden Kürzel:&lt;br /&gt;
 r                   (read) lesen&lt;br /&gt;
 w                   (write) schreiben&lt;br /&gt;
 x                   (execute) ausführen&lt;br /&gt;
oder diese Sonderformen&lt;br /&gt;
 s                   (usersbit) Programm läuft unter der UID des Besitzers&lt;br /&gt;
 s                   (groupsbit)Programm läuft unter der GID des GRUPPE&lt;br /&gt;
 t                   (stickybit) Dateien im Verzeichnis darf nur Besitzer löschen&lt;br /&gt;
&lt;br /&gt;
===Beispiel===&lt;br /&gt;
Setze für alle Schreib- und Leserecht&lt;br /&gt;
 xinux@zero:~$ chmod a=rw test &lt;br /&gt;
 xinux@zero:~$ ls -l test &lt;br /&gt;
 -rw-rw-rw- 1 xinux xinux 0 2009-06-16 12:01 test&lt;br /&gt;
 xinux@zero:~$ &lt;br /&gt;
&lt;br /&gt;
Erteile Besitzer Ausführungsrecht&lt;br /&gt;
 xinux@zero:~$ chmod u+x test ; ls -l test &lt;br /&gt;
 -rwxrw-rw- 1 xinux xinux 0 2009-06-16 12:01 test&lt;br /&gt;
 xinux@zero:~$ &lt;br /&gt;
&lt;br /&gt;
===chmod oktale Schreibweise===&lt;br /&gt;
 Specialrights        User           Group         Other&lt;br /&gt;
 usbit gsbit sticky    r    w   x     r   w   x     r   w   x&lt;br /&gt;
   1     1      1      1    1   1     1   1   1     1   1   1&lt;br /&gt;
   0     0      0      0    0   0     0   0   0     0   0   0&lt;br /&gt;
 Oktale Wertigkeit pro Recht&lt;br /&gt;
   4     2       1     4    2   1     4   2   1     4   2   1&lt;br /&gt;
&lt;br /&gt;
===Beispiele===&lt;br /&gt;
 xinux@zero:~$ chmod 751 test ; ls -l test&lt;br /&gt;
 -rwxr-x--x 1 xinux xinux 0 2009-06-16 12:01 test&lt;br /&gt;
 xinux@zero:~$ &lt;br /&gt;
&lt;br /&gt;
 xinux@zero:~$ chmod 4770 test ; ls -l test&lt;br /&gt;
 -rwsrwx--- 1 xinux xinux 0 2009-06-16 12:01 test&lt;br /&gt;
 xinux@zero:~$ &lt;br /&gt;
&lt;br /&gt;
 xinux@zero:~$ chmod 0 test ; ls -l test &lt;br /&gt;
 ---------- 1 xinux xinux 0 2009-06-16 12:01 test&lt;br /&gt;
&lt;br /&gt;
===chmod Optionen===&lt;br /&gt;
 -c   (changes) es werden nur die Dateien angezeigt, deren Zugriffsrechte tatsächlich verändert werden&lt;br /&gt;
 -f   (silent, quiet) Fehlermeldungen wegen fehlgeschlagener Änderungsversuche werden unterdrückt&lt;br /&gt;
 -v   (verbose) alle Aktionen werden angezeigt&lt;br /&gt;
 -R   (recursive) die Zugriffsrechte aller Dateien in den Unterverzeichnissen werden ebenfalls geändert&lt;br /&gt;
&lt;br /&gt;
Theoretisch sind alle Kombinationen der Zugriffsrechte denkbar, aber der&lt;br /&gt;
Eigentümer einer Datei darf diese immer lesen, selbst wenn das Lesebit nicht&lt;br /&gt;
gesetzt ist. Genauso macht es wenig Sinn, eine gewöhnliche Textdatei als&lt;br /&gt;
ausführbar zu setzen; die Shell wird damit nichts anfangen können. Ein x für ein&lt;br /&gt;
Verzeichnis gibt an, dass in dieses gewechselt werden kann.&lt;br /&gt;
&lt;br /&gt;
Rechte sind verbindlich&lt;br /&gt;
&lt;br /&gt;
Interessant ist auch ein Konstrukt folgender Art&lt;br /&gt;
 -rwx---rwx&lt;br /&gt;
&lt;br /&gt;
das angibt, dass mit der Datei alles angestellt werden kann, außer durch Nutzer der&lt;br /&gt;
Gruppe. Versucht irgend jemand, der nicht der Gruppe des Eigentümers angehört,&lt;br /&gt;
die Datei zu modifizieren, wird ihm dies gelingen, einem Gruppenmitglied bleibt&lt;br /&gt;
dies versagt, obwohl er ja gleichzeitig ein &amp;quot;Anderer&amp;quot; ist. D.h. die Rechte der&lt;br /&gt;
Gruppe sind verbindlicher, als die Rechte der anderen!&lt;br /&gt;
&lt;br /&gt;
===Bedeutungen der Zugriffsarten===&lt;br /&gt;
====Dateien====&lt;br /&gt;
* r: Der Inhalt der Datei kann gelesen und damit auch kopiert werden. &lt;br /&gt;
 root@zero:~# cat test&lt;br /&gt;
 Dies ist eine Testdatei&lt;br /&gt;
  &lt;br /&gt;
 root@zero:~# cp test backup&lt;br /&gt;
&lt;br /&gt;
* w: Der Inhalt der Datei darf verändert werden. Ob die Datei gelöscht werden kann ist&lt;br /&gt;
keine Eigenschaft der Datei, sondern des Verzeichnisses, indem sich die Datei befindet.&lt;br /&gt;
 root@zero:~# cat &amp;gt; test&lt;br /&gt;
 Hier steht jetzt was anderes&lt;br /&gt;
 ^C&lt;br /&gt;
 root@zero:~# cat test&lt;br /&gt;
 Hier steht jetzt was anderes&lt;br /&gt;
  &lt;br /&gt;
 xinux@zero:~$ ls -ld verzeichnis/&lt;br /&gt;
 dr-xr-xr-x 2 xinux xinux 4096 2009-06-18 11:16 verzeichnis/&lt;br /&gt;
 xinux@zero:~/verzeichnis$ rm text&lt;br /&gt;
 rm: Entfernen von „text“ nicht möglich: Permission denied&lt;br /&gt;
&lt;br /&gt;
* x: Ausführrecht für Programme und Skripte&lt;br /&gt;
 xinux@zero:~$ ./programm&lt;br /&gt;
 -bash: ./programm: Permission denied&lt;br /&gt;
 xinux@zero:~$ chmod +x programm&lt;br /&gt;
 xinux@zero:~$ ./programm&lt;br /&gt;
 Test&lt;br /&gt;
  test&lt;br /&gt;
&lt;br /&gt;
====Verzeichnisse====&lt;br /&gt;
* r: Die Einträge in dem Verzeichnis sind lesbar.&lt;br /&gt;
Leserecht von verzeichnis/ entziehen&lt;br /&gt;
 xinux@zero:~$ chmod a-r verzeichnis/&lt;br /&gt;
 xinux@zero:~$ ls verzeichnis/&lt;br /&gt;
 ls: Öffnen von Verzeichnis verzeichnis/ nicht möglich: Permission denied&lt;br /&gt;
Leserecht für Benutzer und Gruppe vergeben&lt;br /&gt;
 xinux@zero:~$ chmod a+r verzeichnis/&lt;br /&gt;
 xinux@zero:~$ ls verzeichnis/&lt;br /&gt;
 text&lt;br /&gt;
&lt;br /&gt;
* w: Die Einträge in dem Verzeichnis können geändert werden. &lt;br /&gt;
Neue Datei erstellen&lt;br /&gt;
 xinux@zero:~$ touch neu&lt;br /&gt;
 xinux@zero:~$ ls neu&lt;br /&gt;
 neu&lt;br /&gt;
&lt;br /&gt;
Datei löschen&lt;br /&gt;
 xinux@zero:~$ rm neu&lt;br /&gt;
 xinux@zero:~$ ls neu&lt;br /&gt;
 ls: Zugriff auf neu nicht möglich: No such file or directory&lt;br /&gt;
&lt;br /&gt;
* x: Der Name des Verzeichnisses kann in einem Pfadnamen erscheinen.&lt;br /&gt;
Verzeichnis ohne x Recht&lt;br /&gt;
 xinux@zero:~$ chmod a-x verzeichnis/&lt;br /&gt;
Wechseln in Verzeichnis mangels x-Recht nicht möglich&lt;br /&gt;
 xinux@zero:~$ cd verzeichnis/&lt;br /&gt;
 -bash: cd: verzeichnis/: Permission denied&lt;br /&gt;
x-Recht vergeben&lt;br /&gt;
 xinux@zero:~$ chmod a+x verzeichnis/&lt;br /&gt;
damit Wechsel in Verzeichnis möglich&lt;br /&gt;
 xinux@zero:~$ cd verzeichnis/&lt;br /&gt;
 xinux@zero:~/verzeichnis$ pwd&lt;br /&gt;
 /home/xinux/verzeichnis&lt;br /&gt;
&lt;br /&gt;
====umask====&lt;br /&gt;
Neue Dateien und Verzeichnisse werden mit ein und denselben Zufriffsrechten erzeugt.&lt;br /&gt;
 xinux@zero:~$ mkdir text&lt;br /&gt;
 xinux@zero:~$ touch textdat&lt;br /&gt;
 xinux@zero:~$ ls -ld text*&lt;br /&gt;
 drwxr-xr-x 2 xinux xinux 4096 2009-06-18 11:37 text&lt;br /&gt;
 -rw-r--r-- 1 xinux xinux    0 2009-06-18 11:37 textdat&lt;br /&gt;
&lt;br /&gt;
Zuständig für dieses Verhalten ist die sogenannte umask, die oft in der Datei&lt;br /&gt;
/etc/profile auf den Wert 022 voreingestellt ist. Zusätzlich wird noch eine&lt;br /&gt;
Maximalmaske benötigt, die sich für Verzeichnisse und andere Dateien&lt;br /&gt;
unterscheidet. Die bei der Erzeugung gesetzten Rechte entstehen nun, indem von&lt;br /&gt;
der Maximalmaske der durch die umask vorgegebene Wert subtrahiert wird:&lt;br /&gt;
&lt;br /&gt;
{| border=1 cellpadding=2&lt;br /&gt;
!&lt;br /&gt;
! Dateien&lt;br /&gt;
! Verzeichnisse&lt;br /&gt;
|-&lt;br /&gt;
| Systemvorgabe&lt;br /&gt;
| 666&lt;br /&gt;
| 777&lt;br /&gt;
|-&lt;br /&gt;
| -umask&lt;br /&gt;
| 022&lt;br /&gt;
| 022&lt;br /&gt;
|-&lt;br /&gt;
| Ergebnis&lt;br /&gt;
| 644&lt;br /&gt;
| 755&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
 xinux@zero:~$ grep umask /etc/profile&lt;br /&gt;
 umask 022&lt;br /&gt;
&lt;br /&gt;
==Gruppenzugehörigkeit==&lt;br /&gt;
===newgrp===&lt;br /&gt;
Ändert die Gruppenzugehörigkeit eines Benutzers auf die angegebene Gruppe. Wenn keine Gruppe angegeben wird, wird die &lt;br /&gt;
Anmeldegruppe des Benutzers verwendet. Die neue Gruppe wird anschließend fü Zugriffskontrollen verwendet.&lt;br /&gt;
&lt;br /&gt;
 newgrp Gruppenname&lt;br /&gt;
&lt;br /&gt;
 root@zero:~# newgrp hacker&lt;br /&gt;
 root@zero:~# id&lt;br /&gt;
 uid=0(root) gid=1006(hacker) Gruppen=0(root),1006(hacker)&lt;br /&gt;
&lt;br /&gt;
===chgrp===&lt;br /&gt;
Verändert die Besitzugehörigkeit zu der angegebenen Gruppe&lt;br /&gt;
&lt;br /&gt;
 chgrp [Optionen] Gruppe Datei(en)&lt;br /&gt;
&lt;br /&gt;
Optionen:&lt;br /&gt;
 -c Zeigt Veränderungen an&lt;br /&gt;
 -f Unterdrückt die meisten Fehlermeldungen&lt;br /&gt;
 -R Verändert Dateien und Verzeichnisse rekursiv&lt;br /&gt;
 -v Gibt geschwätzige Ausgabe aus.&lt;br /&gt;
&lt;br /&gt;
 root@zero:~# ls -l&lt;br /&gt;
 ...&lt;br /&gt;
 d-wx--x--x  3 root root 4096 2009-06-18 13:34 verzeichnis&lt;br /&gt;
 &lt;br /&gt;
 root@zero:~# chgrp -R xinux verzeichnis/&lt;br /&gt;
 root@zero:~# ls -l&lt;br /&gt;
 ...&lt;br /&gt;
 d-wx--x--x  3 root xinux 4096 2009-06-18 13:34 verzeichnis&lt;br /&gt;
&lt;br /&gt;
 xinux@zero:~$ cd /root/verzeichnis/&lt;br /&gt;
 xinux@zero:/root/verzeichnis$ pwd&lt;br /&gt;
 /root/verzeichnis&lt;br /&gt;
&lt;br /&gt;
===chown===&lt;br /&gt;
Ändert den Eigentümer von einer oder mehreren Dateien in den angegebenen Benutzer. &lt;br /&gt;
chown erlaubt ebenfalls das Ändern der Gruppeneigentümreschaft. Nur der aktuelle Eigentümer einer&lt;br /&gt;
Datei oder der Superuser (root) darf die Eigentumsverhältnisse ändern.&lt;br /&gt;
&lt;br /&gt;
 chown [Optionen] Benutzer(:Gruppe) Dateien&lt;br /&gt;
&lt;br /&gt;
Optionen:&lt;br /&gt;
 -c Gibt Informationen über die veränderten Dateien aus&lt;br /&gt;
 --dereference Symbolischen Links folgen&lt;br /&gt;
 -v Gibt Informationen über alle Dateien aus, die chown zu ändern versucht, egal, ob die Änderung erfolgt ist oder nicht&lt;br /&gt;
 -R Geht rekursiv durch alle Unterverzeichnisse und führt die Änderungen durch. &lt;br /&gt;
&lt;br /&gt;
 root@zero:~# chown -R xinux.xinux verzeichnis/&lt;br /&gt;
 root@zero:~# ls -l&lt;br /&gt;
 insgesamt 12&lt;br /&gt;
 drwx------ 13 root  root  4096 2009-04-21 15:11 profile&lt;br /&gt;
 --w-------  1 root  root     0 2009-06-18 11:13 test&lt;br /&gt;
 -rw-r--r--  1 root  root    40 2009-06-18 12:04 text&lt;br /&gt;
 drwxrwx--x  3 xinux xinux 4096 2009-06-18 13:39 verzeichnis&lt;br /&gt;
 &lt;br /&gt;
 root@zero:~# chown -R -c xinux.xinux verzeichnis/&lt;br /&gt;
 &lt;br /&gt;
 root@zero:~# chown -R -v xinux.xinux verzeichnis/&lt;br /&gt;
 Eigentümer von „verzeichnis/01“ als xinux:xinux erhalten&lt;br /&gt;
 Eigentümer von „verzeichnis/test“ als xinux:xinux erhalten&lt;br /&gt;
 Eigentümer von „verzeichnis/“ als xinux:xinux erhalten&lt;br /&gt;
&lt;br /&gt;
==Eingabe/Ausgabe==&lt;br /&gt;
Standardeingabe (0): Laufende Programme erwarten von hier ihre Eingaben (normalerweise handelt es sich um die Tastatur).&lt;br /&gt;
&lt;br /&gt;
Standardausgabe (1): Programme schreiben auf diese ihre Ausgaben (Bildschirm).&lt;br /&gt;
&lt;br /&gt;
Standardfehlerausgabe (2) : Fehlerausgaben landen hier (Bildschirm, aber nur die aktive Konsole).&lt;br /&gt;
&lt;br /&gt;
[[Bild:std.jpg]]&lt;br /&gt;
&lt;br /&gt;
===cat===&lt;br /&gt;
Das Programm cat liest von STDIN und gibt es STDOUT wieder aus&lt;br /&gt;
&lt;br /&gt;
Einlesen der Datei text&lt;br /&gt;
 root@zero:~# cat &amp;lt; text&lt;br /&gt;
 wichtig&lt;br /&gt;
&lt;br /&gt;
Schreiben in die Datei text, dies überschreibt den bisherigen Inhalt der Datei&lt;br /&gt;
 root@zero:~# cat &amp;gt; text&lt;br /&gt;
 sogar noch wichtiger &lt;br /&gt;
 &lt;br /&gt;
Ausgeben der Datei text&lt;br /&gt;
 root@zero:~# cat text &lt;br /&gt;
 sogar noch wichtiger&lt;br /&gt;
&lt;br /&gt;
Lesen aus der Datei text und schreiben in die Datei neuertext&lt;br /&gt;
 root@zero:~# cat &amp;lt; text &amp;gt; neuertext&lt;br /&gt;
 root@zero:~# cat neuertext&lt;br /&gt;
 sogar noch wichtiger&lt;br /&gt;
&lt;br /&gt;
Anhängen der Ausgabe von date an die Datei neuertext&lt;br /&gt;
 root@zero:~# date &amp;gt;&amp;gt; neuertext&lt;br /&gt;
 root@zero:~# cat neuertext&lt;br /&gt;
 sogar noch wichtiger&lt;br /&gt;
 Do 18. Jun 14:08:58 CEST 2009&lt;br /&gt;
&lt;br /&gt;
Umleiten des Standardfehlerkanals nach error&lt;br /&gt;
 root@zero:~# rm sux 2&amp;gt; error&lt;br /&gt;
 root@zero:~# more error&lt;br /&gt;
 rm: Entfernen von „sux“ nicht möglich: No such file or directory&lt;br /&gt;
&lt;br /&gt;
===Umleitungen===&lt;br /&gt;
Nacheinander auszuführende Kommandos&lt;br /&gt;
 root@zero:~# pwd; date&lt;br /&gt;
 /root&lt;br /&gt;
 Do 18. Jun 14:13:05 CEST 2009&lt;br /&gt;
 &lt;br /&gt;
Übergeben der Ausgabe von tail als Eingabe von grep mit Hilfe der Pipe &amp;quot;|&amp;quot;&lt;br /&gt;
 root@zero:~# tail /var/log/auth.log | grep xinux&lt;br /&gt;
 Jun 18 13:52:33 zero nss_wins[11433]: pam_unix(login:session): session closed for user xinux&lt;br /&gt;
&lt;br /&gt;
Übergeben der letzten 100 Zeilen von syslog als Eingabe von grep&lt;br /&gt;
 root@zero:~# tail /var/log/syslog -n 100 | grep error&lt;br /&gt;
 Jun 18 09:30:54 zero kernel: [154384.692135] end_request: I/O error, dev fd0, sector 0&lt;br /&gt;
 Jun 18 09:30:54 zero kernel: [154384.712137] end_request: I/O error, dev fd0, sector 0&lt;br /&gt;
&lt;br /&gt;
==tr==&lt;br /&gt;
tr ist ein Programm um Zeichen zu übersetzen. Dies betrifft nur die Ausgabe, die Datei selbst bleibt unverändert.&lt;br /&gt;
&lt;br /&gt;
Ersetzt Kleinbuchstaben durch Großbuchstaben aus der Datei text&lt;br /&gt;
 root@zero:~# tr &amp;quot;a-z&amp;quot; &amp;quot;A-Z&amp;quot; &amp;lt; text&lt;br /&gt;
 SOGAR NOCH WICHTIGER&lt;br /&gt;
 123&lt;br /&gt;
 34&lt;br /&gt;
 4711&lt;br /&gt;
 TEST&lt;br /&gt;
&lt;br /&gt;
Ersetzt alle Zahlen durch X&lt;br /&gt;
 root@zero:~# tr &amp;quot;0-9&amp;quot; &amp;quot;X&amp;quot; &amp;lt; text&lt;br /&gt;
 sogar noch wichtiger&lt;br /&gt;
 XXX&lt;br /&gt;
 XX&lt;br /&gt;
 XXXX&lt;br /&gt;
 test&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
 root@zero:~# cat test&lt;br /&gt;
 +++++&lt;br /&gt;
 ###&lt;br /&gt;
 1111&lt;br /&gt;
&lt;br /&gt;
-s löscht mehrfach kommende Zeichen&lt;br /&gt;
 root@zero:~# tr '''-s''' &amp;quot;+&amp;quot; &amp;lt; test&lt;br /&gt;
 +&lt;br /&gt;
 ###&lt;br /&gt;
 1111&lt;br /&gt;
&lt;br /&gt;
-d löscht vorkommende Zeichen &lt;br /&gt;
 root@zero:~# tr '''-d''' &amp;quot;#&amp;quot; &amp;lt; test&lt;br /&gt;
 +++++ &lt;br /&gt;
 &lt;br /&gt;
 1111&lt;br /&gt;
&lt;br /&gt;
==cut==&lt;br /&gt;
Spalten aus einer Datei schneiden. Dies betrifft nur die Ausgabe, die Datei selbst bleibt unverändert.&lt;br /&gt;
 &lt;br /&gt;
Schneidet die erste Spalte aus, der Delimiter ist : &lt;br /&gt;
 root@zero:~# cut -f 1 -d : /etc/passwd&lt;br /&gt;
 root&lt;br /&gt;
 daemon&lt;br /&gt;
 bin&lt;br /&gt;
 ...&lt;br /&gt;
 xinux&lt;br /&gt;
&lt;br /&gt;
 root@zero:~# more test&lt;br /&gt;
 1234#5678#9999&lt;br /&gt;
 &lt;br /&gt;
Schneidet die zweite Spalte aus, der Delimiter ist #&lt;br /&gt;
 root@zero:~# cut -f 2 -d &amp;quot;#&amp;quot; &amp;lt; test&lt;br /&gt;
 5678&lt;br /&gt;
&lt;br /&gt;
==expand==&lt;br /&gt;
Ersetzt Tabulatorzeichen durch Folgen von Leerzeichen und schreibt das Ergebnis auf die Standardausgabe&lt;br /&gt;
 root@zero:~# expand /etc/samba/smb.conf&lt;br /&gt;
 ...&lt;br /&gt;
&lt;br /&gt;
==fmt==&lt;br /&gt;
Setzt den Text der Dateien im Blocksatz der angegebenen Breite durch Auffüllen von Zeilen und Entfernen von Zeilenwechseln.&lt;br /&gt;
Standardgemäß werden Leerzeilen, die Position von Leerzeichen und der Einzug am Zeilenanfang erhalten. fmt versucht, &lt;br /&gt;
Zeilenumbrüche an Satzenden durchzuführen sowie sie nach dem ersten oder vor dem letzten Wort eines Satzes zu vermeiden. &lt;br /&gt;
 &lt;br /&gt;
 fmt [Optionen] [Dateien]&lt;br /&gt;
&lt;br /&gt;
Optionen&lt;br /&gt;
&lt;br /&gt;
* -p ''Präfix'': Formatiert nur Zeilen, die mit ''Präfix'' anfangen&lt;br /&gt;
 root@zero:/tmp# fmt -p '#' text&lt;br /&gt;
 #Setzt den Text der Dateien im Blocksatz der angegebenen Breite durch&lt;br /&gt;
 #Auffüllen von Zeilen und Entfernen von Zeilenwechseln.  Standardgemäß&lt;br /&gt;
 #werden Leerzeilen, die Position von Leerzeichen und der Einzug am&lt;br /&gt;
 #Zeilenanfang erhalten. fmt versucht,&lt;br /&gt;
 Zeilenumbrüche an Satzenden durchzuführen sowie sie nach dem ersten oder vor dem letzten Wort eines Satzes zu vermeiden.&lt;br /&gt;
&lt;br /&gt;
* -u : Erzwingt genau ein Leerzeichen zwischen Wörtern und zwei Leerzeichen zwischen Sätzen&lt;br /&gt;
&lt;br /&gt;
* -w ''Breite'': Setzt die Ausgabebreite auf ''Breite''&lt;br /&gt;
 root@zero:/tmp# fmt -w 30 text&lt;br /&gt;
 #Setzt den Text der Dateien&lt;br /&gt;
 im Blocksatz der angegebenen&lt;br /&gt;
 Breite durch Auffüllen&lt;br /&gt;
 von Zeilen und Entfernen&lt;br /&gt;
 von Zeilenwechseln.&lt;br /&gt;
 #Standardgemäß werden&lt;br /&gt;
 Leerzeilen, die Position von&lt;br /&gt;
 Leerzeichen und der Einzug am&lt;br /&gt;
 Zeilenanfang erhalten. fmt&lt;br /&gt;
 versucht, Zeilenumbrüche&lt;br /&gt;
 an Satzenden durchzuführen&lt;br /&gt;
 sowie sie nach dem ersten&lt;br /&gt;
 oder vor dem letzten Wort&lt;br /&gt;
 eines Satzes zu vermeiden.&lt;br /&gt;
&lt;br /&gt;
==join==&lt;br /&gt;
Führt die Zeilen zweier sortierter Dateien anhand von '''Übereinstimmungen''' in einem gemeinsamen Feld zusammen.&lt;br /&gt;
&lt;br /&gt;
 root@zero:~# more name&lt;br /&gt;
 1. karl&lt;br /&gt;
 2. heinz&lt;br /&gt;
 3. hans&lt;br /&gt;
 4. otto&lt;br /&gt;
 root@zero:~# more tel&lt;br /&gt;
 1. 1234&lt;br /&gt;
 2. 4321&lt;br /&gt;
 3. 222&lt;br /&gt;
 4. 121212&lt;br /&gt;
 root@zero:~# join name tel &amp;gt; telefonbuch&lt;br /&gt;
 root@zero:~# more telefonbuch&lt;br /&gt;
 1. karl 1234&lt;br /&gt;
 2. heinz 4321&lt;br /&gt;
 3. hans 222&lt;br /&gt;
 4. otto 121212&lt;br /&gt;
&lt;br /&gt;
==nl==&lt;br /&gt;
Nummeriert die Zeilen in einer Datei.&lt;br /&gt;
&lt;br /&gt;
 root@zero:~# nl /etc/passwd                                                   &lt;br /&gt;
     1  root:x:0:0:root:/root:/bin/bash                                       &lt;br /&gt;
     2  daemon:x:1:1:daemon:/usr/sbin:/bin/sh                                 &lt;br /&gt;
     3  bin:x:2:2:bin:/bin:/bin/sh                                            &lt;br /&gt;
     4  sys:x:3:3:sys:/dev:/bin/sh                                            &lt;br /&gt;
     5  sync:x:4:65534:sync:/bin:/bin/sync&lt;br /&gt;
     ...&lt;br /&gt;
&lt;br /&gt;
==od==&lt;br /&gt;
Gibt Dateien im Oktal und anderen Formaten aus.&lt;br /&gt;
&lt;br /&gt;
 od [Optionen] Datei&lt;br /&gt;
&lt;br /&gt;
* -j ''Bytes'': Überspringt die Anzahl ''Bytes'' einer Datei&lt;br /&gt;
* -N ''Bytes'': Gibt nur die Anzahl ''Bytes'' aus&lt;br /&gt;
* -c : Gebe ASCII Zeichen aus&lt;br /&gt;
* -f : Gebe Fließkommazahlen aus&lt;br /&gt;
* -i : Gebe Dezimal Integer aus&lt;br /&gt;
* -l : Gebe Dezimal Long aus&lt;br /&gt;
* -o : Gebe Oktal 2 Byte Einheiten aus&lt;br /&gt;
* -s : Gebe Dezimal 2 Byte Einheiten aus&lt;br /&gt;
* -x : Gebe Hexadezimale 2 Byte einheiten aus&lt;br /&gt;
&lt;br /&gt;
Beispiele&lt;br /&gt;
&lt;br /&gt;
Gebe Master Boot Record (die ersten 512 Byte der Festplatte /dev/sda) als Hexadezimal aus&lt;br /&gt;
 root@zero:~# od '''-x -N''' 512 /dev/sda&lt;br /&gt;
 0000000 48eb 1090 d08e 00bc b8b0 0000 d88e c08e&lt;br /&gt;
 0000020 befb 7c00 00bf b906 0200 a4f3 21ea 0006&lt;br /&gt;
 0000040 be00 07be 0438 0b75 c683 8110 fefe 7507&lt;br /&gt;
 0000060 ebf3 b416 b002 bb01 7c00 80b2 748a 0203&lt;br /&gt;
 0000100 00ff 2000 0001 0000 0200 90fa f690 80c2&lt;br /&gt;
 ...&lt;br /&gt;
&lt;br /&gt;
Schreibe &amp;quot;suxer&amp;quot; in die Datei test&lt;br /&gt;
 root@zero:~# echo &amp;quot;suxer&amp;quot; &amp;gt; test&lt;br /&gt;
Ausgabe Hexadezimal&lt;br /&gt;
 root@zero:~# od -x test&lt;br /&gt;
 0000000 7573 6578 0a72&lt;br /&gt;
 0000006&lt;br /&gt;
&lt;br /&gt;
Ausgabe ASCII Zeichen&lt;br /&gt;
 root@zero:~# od -c test&lt;br /&gt;
 0000000   s   u   x   e   r  \n&lt;br /&gt;
 0000006&lt;br /&gt;
&lt;br /&gt;
==paste==&lt;br /&gt;
Fügt die Zeilen von zwei oder mehr Dateien horizontal zusammen&lt;br /&gt;
 root@zero:~# paste name tel&lt;br /&gt;
 1. karl 1. 1234&lt;br /&gt;
 2. heinz        2. 4321&lt;br /&gt;
 3. hans 3. 222&lt;br /&gt;
 4. otto 4. 121212&lt;br /&gt;
&lt;br /&gt;
==pr==&lt;br /&gt;
Bereitet Textdateien zum Drucken vor.&lt;br /&gt;
&lt;br /&gt;
 root@zero:~# echo &amp;quot;Plan für heute&amp;quot; &amp;gt; dokument&lt;br /&gt;
 root@zero:~# more dokument&lt;br /&gt;
 Plan für heute&lt;br /&gt;
 root@zero:~# pr dokument   &lt;br /&gt;
  &lt;br /&gt;
 &lt;br /&gt;
 2009-06-19 12:44                    dokument                     Seite 1&lt;br /&gt;
 &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
 Plan für heute&lt;br /&gt;
&lt;br /&gt;
Anmerkung Ausmaße der Bildschirmausgabe wie eine Druckseite.&lt;br /&gt;
&lt;br /&gt;
==sed==&lt;br /&gt;
streaming editor. Mit sed ist es möglich, den Inhalt einer Datei automatisch (nicht interaktiv) zu&lt;br /&gt;
bearbeiten. Wie unter Linux üblich, wird auch hier der Text nicht wirklich verändert sondern die &lt;br /&gt;
Änderung erfolgt über die Standardausgabe, die wieder umgeleitet werden kann. Die Syntax ist ähnlich &lt;br /&gt;
des ex modus von vi. Reguläre Ausdrücke können nach Belieben benutzt werden. &lt;br /&gt;
&lt;br /&gt;
Optionen:&lt;br /&gt;
 -e Zeichenkette  wendet die Editorbefehle aus Zeichenkette auf den Text an.&lt;br /&gt;
 -n gibt nur die Zeilen aus, die explizit (durch &amp;quot;p&amp;quot; ausgedruckt werden sollen&lt;br /&gt;
&lt;br /&gt;
Gibt die dritte Zeile der Datei text aus&lt;br /&gt;
 root@zero:~# sed -n &amp;quot;3p&amp;quot; text&lt;br /&gt;
 34&lt;br /&gt;
&lt;br /&gt;
Gibt die erste bis dritte Zeile von text aus&lt;br /&gt;
 root@zero:~# sed -n &amp;quot;1,3p&amp;quot; text&lt;br /&gt;
 sogar noch wichtiger&lt;br /&gt;
 123&lt;br /&gt;
 34&lt;br /&gt;
&lt;br /&gt;
Löschen der Zeile mit &amp;quot;sogar&amp;quot;&lt;br /&gt;
 root@zero:~# sed -e '/sogar/d' &amp;lt; text&lt;br /&gt;
 123&lt;br /&gt;
 34&lt;br /&gt;
 4711&lt;br /&gt;
 test&lt;br /&gt;
&lt;br /&gt;
und schreiben in text2&lt;br /&gt;
 root@zero:~# sed -e '/sogar/d' &amp;lt; text &amp;gt; text2&lt;br /&gt;
 root@zero:~# more text2&lt;br /&gt;
 123&lt;br /&gt;
 34&lt;br /&gt;
 4711&lt;br /&gt;
 test&lt;br /&gt;
&lt;br /&gt;
Alle 3en durch DREI ersetzen&lt;br /&gt;
 root@zero:~# sed -e 's/3/DREI/g' &amp;lt; text&lt;br /&gt;
 sogar noch wichtiger&lt;br /&gt;
 12DREI&lt;br /&gt;
 DREI4&lt;br /&gt;
 4711&lt;br /&gt;
 test&lt;br /&gt;
&lt;br /&gt;
==wc==&lt;br /&gt;
Zählt die Anzahl von Zeichen, Wörter oder Zeilen&lt;br /&gt;
&lt;br /&gt;
Optionen&lt;br /&gt;
* -m : Zählt die Anzahl der Zeichen&lt;br /&gt;
 root@zero:~# more name&lt;br /&gt;
 1. karl&lt;br /&gt;
 2. heinz&lt;br /&gt;
 3. hans&lt;br /&gt;
 4. otto&lt;br /&gt;
 root@zero:~# wc '''-m''' tel&lt;br /&gt;
 33 tel&lt;br /&gt;
&lt;br /&gt;
* -w : Zählt die Anzahl der Wörter (einschließlich Zahlen und andere Zeichen)&lt;br /&gt;
 root@zero:~# wc '''-w''' name&lt;br /&gt;
 8 name&lt;br /&gt;
&lt;br /&gt;
* -l : Zählt die Anzahl der Zeilen&lt;br /&gt;
 root@zero:~# wc '''-l''' name&lt;br /&gt;
 4 name&lt;br /&gt;
&lt;br /&gt;
==INodes==&lt;br /&gt;
Inode (oder I-Node) wird im Deutschen am besten als Informationsknoten oder&lt;br /&gt;
Indexeintrag bezeichnet. Er fasst alle Attribute einer Datei zusammen außer dem Inhalt&lt;br /&gt;
und dem Namen der Datei.&lt;br /&gt;
&lt;br /&gt;
===Daten===&lt;br /&gt;
{| border=1 cellpadding=2&lt;br /&gt;
|type&lt;br /&gt;
|Der Typ der Datei wird als einzelner Buchstabe angezeigt. Der Typ einer Datei wird beim Anlegen der Datei festgelegt&lt;br /&gt;
|-&lt;br /&gt;
|Permissions &lt;br /&gt;
|Die Zugriffsrechte der Datei werden in den 12 Bit sstrwxrwxrwx abgespeichert.Wenn sie gesetzt sind, werden sie bei &lt;br /&gt;
der Ausgabe an Stelle der x-Rechte ausgegeben. Die Zugriffsrechte können mit dem Kommando chmod verändert werden.&lt;br /&gt;
|-&lt;br /&gt;
|link count&lt;br /&gt;
|In UNIX kann eine Datei mehr als einen Namen haben. Der Link Count gibt die Anzahl der Namen einer Datei an. Er kann&lt;br /&gt;
mit dem Kommando ln erhöht und dem Kommando rm erniedrigt werden.&lt;br /&gt;
|-&lt;br /&gt;
|owner&lt;br /&gt;
|Für den Dateieigentümer gelten die in der ersten rwx-Gruppe festgelegten Zugriffsrechte. Standardmäßig ist der &lt;br /&gt;
Eigentümer einer Datei derjenige Benutzer, der die Datei angelegt hat.&lt;br /&gt;
|-&lt;br /&gt;
|group&lt;br /&gt;
|Für Benutzer, die in der gleichen Gruppe sind, der die Datei angehört, gelten die in der zweiten rwx-Gruppe festgelegten&lt;br /&gt;
Zugriffsrechte. In System V gehört eine Datei standardmäßig der Gruppe an, in der der anlegende Benutzer gerade ist.&lt;br /&gt;
|-&lt;br /&gt;
|size&lt;br /&gt;
|Bei normalen Dateien und Verzeichnissen gibt diese Information die Länge der Datei in Byte an.&lt;br /&gt;
|-&lt;br /&gt;
|access time&lt;br /&gt;
|Die Zugriffszeit gibt den Zeitpunkt des letzten Lesezugriffes auf eine Datei an. Aus Effizienzgründen wird die &lt;br /&gt;
Zugriffszeit an Verzeichnissen nicht gesetzt, wenn ein Verzeichnis durchsucht wird, obwohl man dies erwarten könnte.&lt;br /&gt;
|-&lt;br /&gt;
|modification time&lt;br /&gt;
|Die Modifikationszeit gibt die Zeit des letzten Schreibzugriffes auf die Daten der Datei an. Intern speichert UNIX &lt;br /&gt;
die Zeit als Sekunden seit Beginn des Jahres 1970 und in GMT ab. Für die Ausgabe wird dies in ein besser lesbares &lt;br /&gt;
Format in der lokalen Zeitzone umgewandelt.&lt;br /&gt;
|-&lt;br /&gt;
|change time &lt;br /&gt;
|Die Veränderungszeit gibt das Datum der letzten Statusänderung der Datei an. Sie wird immer dann gesetzt, wenn die &lt;br /&gt;
Informationen über die Datei sich ändern (Datum der Erzeugung wird nicht gespeichert)&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
===Dateiarten===&lt;br /&gt;
{| border=1 cellpadding=2&lt;br /&gt;
!Zeichen&lt;br /&gt;
!Typ&lt;br /&gt;
!Zweck&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;nowiki&amp;gt;-&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
|file&lt;br /&gt;
|normale Datei&lt;br /&gt;
|-&lt;br /&gt;
|d&lt;br /&gt;
|directory&lt;br /&gt;
|Verzeichnis&lt;br /&gt;
|-&lt;br /&gt;
|b&lt;br /&gt;
|block device&lt;br /&gt;
|Gerätedatei&lt;br /&gt;
|-&lt;br /&gt;
|c&lt;br /&gt;
|character device&lt;br /&gt;
|Gerätedatei&lt;br /&gt;
|-&lt;br /&gt;
|l&lt;br /&gt;
|link&lt;br /&gt;
|Querverweis&lt;br /&gt;
|-&lt;br /&gt;
|p&lt;br /&gt;
|named pipe&lt;br /&gt;
|Benannte Pipeline&lt;br /&gt;
|-&lt;br /&gt;
|s&lt;br /&gt;
|socket&lt;br /&gt;
|Netzwerkverbindung&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
====Normale Dateien====&lt;br /&gt;
Unter einer normalen Datei versteht man die Ansammlung von Daten. Dies kann ein Text, Programm, Bild oder sonstiges sein. &lt;br /&gt;
Beispiel&lt;br /&gt;
 root@zero:~# ls text&lt;br /&gt;
 text&lt;br /&gt;
&lt;br /&gt;
====Verzeichnisse====&lt;br /&gt;
Dateien werden in Verzeichnissen gespeichert, nur so ist eine Ordnung möglich. &lt;br /&gt;
 root@zero:~# mkdir -v Ordner&lt;br /&gt;
 mkdir: Verzeichnis „Ordner“ angelegt&lt;br /&gt;
 &lt;br /&gt;
 root@zero:~# ls -d ~/*&lt;br /&gt;
 /root/error  /root/neuertext  /root/Ordner  /root/profile  /root/test  /root/text  /root/verzeichnis&lt;br /&gt;
&lt;br /&gt;
====Gerätedateien (Block und Char)====&lt;br /&gt;
Gerätedateien ermöglichen Anwendungsprogrammen unter Benutzung des  Kernels den Zugriff auf die Hardwarekomponenten des &lt;br /&gt;
Systems. &lt;br /&gt;
&lt;br /&gt;
Beispiele&lt;br /&gt;
&lt;br /&gt;
Sicherung des Master Boot Records der ersten Festplatte&lt;br /&gt;
 root@zero:~# dd if=/dev/sda1 of=/tmp/mbr.img bs=512 count=1&lt;br /&gt;
&lt;br /&gt;
Einhängen des CD-ROM Laufwerks&lt;br /&gt;
 root@zero:~# mount /dev/cdrom /media/cdrom -t iso9660&lt;br /&gt;
&lt;br /&gt;
====Named Pipes====&lt;br /&gt;
Benannte Pipes (Named Pipes) können dagegen auch zur Kommunikation zwischen Prozessen eingesetzt werden, die nicht miteinander&lt;br /&gt;
verwandt sind und sich darüber hinaus auf unterschiedlichen Rechnern innerhalb eines Netzwerkes befinden dürfen. Sie sind &lt;br /&gt;
flexibler als anonyme Pipes und eignen sich für sogenannte Client-Server-Anwendungen (es lassen sich auch RPCs realisieren).&lt;br /&gt;
Benannte Pipes ermöglichen die gleichzeitige Kommunikation in beide Richtungen, das heißt, Daten können im Vollduplexbetrieb &lt;br /&gt;
zwischen den Prozessen ausgetauscht werden.&lt;br /&gt;
 &lt;br /&gt;
Erstelle Named Pipe mit Namen sux. Schreibe &amp;quot;Hallo Welt&amp;quot; in die Pipe sux und bleibe im Hintergrund. Gebe Inhalt der Pipe mit cat aus&lt;br /&gt;
 root@zero:~# mkfifo sux ; echo 'Hallo Welt' &amp;gt; sux &amp;amp; cat &amp;lt; sux&lt;br /&gt;
 [1] 12947&lt;br /&gt;
 Hallo Welt&lt;br /&gt;
 [1]+  Done                    echo 'Hallo Welt' &amp;gt; sux&lt;br /&gt;
&lt;br /&gt;
====Sockets====&lt;br /&gt;
Schnittstelle um es vernetzten Rechnern zu ermöglichen, miteinander zu kommunizieren.&lt;br /&gt;
&lt;br /&gt;
Sie ist in der Regel definiert durch IP-Adresse sowie Port. &lt;br /&gt;
&lt;br /&gt;
====Links====&lt;br /&gt;
Bei Links handelt es sich um symbolische Verweise auf andere Dateien&lt;br /&gt;
&lt;br /&gt;
'''Softlink'''&lt;br /&gt;
Ein Softlink ist eine Datei die nur auf den Namen einer anderen Datei verweist. Wenn die Originaldatei gelöscht wird, zeigt &lt;br /&gt;
der Link ins Leere. &lt;br /&gt;
&lt;br /&gt;
 ln -s datei softlink&lt;br /&gt;
&lt;br /&gt;
{| border=1 cellpadding=2&lt;br /&gt;
| Vorteile&lt;br /&gt;
| Symbolische Links können auch auf Verzeichnisse angelegt werden&amp;lt;br&amp;gt;Sie sind partitionsübergreifend&amp;lt;br&amp;gt;Man kann sie auf Dateien anlegen, die noch nicht existieren&lt;br /&gt;
|-&lt;br /&gt;
| Nachteile&lt;br /&gt;
| Wenn das Original gelöscht ist, ist kein Zugriff mehr möglich&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Beispiel&lt;br /&gt;
 root@zero:~# ln -s text verweis&lt;br /&gt;
 root@zero:~# ls -l verweis&lt;br /&gt;
 lrwxrwxrwx 1 root root 4 2009-06-18 15:48 verweis -&amp;gt; text&lt;br /&gt;
&lt;br /&gt;
'''Hardlinks'''&lt;br /&gt;
 ln datei hardlink&lt;br /&gt;
Eigentlich ist jede Datei ein Hardlink. Ein Hardlink ist ein Verzeichniseintrag,&lt;br /&gt;
der auf eine Inode verweist. Beim Erzeugen einer Datei verweist ein Eintrag auf&lt;br /&gt;
eine Inode. Man kann dann weitere Verweise erzeugen. Der Linkcounter wird&lt;br /&gt;
jeweils um 1 erhöht. Beim Löschen einer Datei wird er jeweils um 1 reduziert.&lt;br /&gt;
Wird der Wert 0 erreicht, ist die Datei gelöscht.&lt;br /&gt;
{| border=1 cellpadding=2&lt;br /&gt;
| Vorteile&lt;br /&gt;
|Zugriff auf die Daten, selbst wenn das Orginal gelöscht ist.&lt;br /&gt;
|-&lt;br /&gt;
|Nachteile&lt;br /&gt;
|Man kann keine Hardlinks auf Verzeichnisse anlegen.&lt;br /&gt;
Ist nur innerhalb einer Partion möglich.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Beispiel&lt;br /&gt;
 root@zero:~# touch 1&lt;br /&gt;
 root@zero:~# echo &amp;quot;text&amp;quot; &amp;gt; 1&lt;br /&gt;
 root@zero:~# ln 1 2&lt;br /&gt;
 root@zero:~# more 2&lt;br /&gt;
 text&lt;br /&gt;
 root@zero:~# echo &amp;quot;doch kein text&amp;quot; &amp;gt; 1&lt;br /&gt;
 root@zero:~# more 1&lt;br /&gt;
 doch kein text&lt;br /&gt;
 root@zero:~# more 2&lt;br /&gt;
 doch kein text&lt;br /&gt;
&lt;br /&gt;
Weitere Optionen:&lt;br /&gt;
 -b sichert Dateien, statt sie zu überschreiben &lt;br /&gt;
 -f Überschreibt bestehende, gleichnamige Dateien&lt;br /&gt;
 -i fragt vor dem Überschreiben nach Bestätigung&lt;br /&gt;
 -v ausführliche Meldungen&lt;br /&gt;
&lt;br /&gt;
==Prozesse==&lt;br /&gt;
===Was ist ein Prozess?===&lt;br /&gt;
Ein Prozess setzt sich aus zwei Teilen zusammen:&lt;br /&gt;
&lt;br /&gt;
1.Programm, das in den Hauptspeicher geladen wurde&lt;br /&gt;
&lt;br /&gt;
2.Prozessumgebung&lt;br /&gt;
&lt;br /&gt;
Unter einem Prozess versteht man ein Programm (binär), das in den Hauptspeicher&lt;br /&gt;
geladen wurde. Also nicht das Program selbst, das auf der Festplatte liegt ist der&lt;br /&gt;
Prozess, sondern es wird erst durch das Laden in den Hauptspeicher dazu.&lt;br /&gt;
Normalerweise liegt ein Programm als ausführbare Datei irgendwo auf der&lt;br /&gt;
Festplatte oder auf Diskette. Ob es sich bei dem Programm um eine binäre Datei&lt;br /&gt;
handelt, kann man mit dem Befehl '' file '' feststellen.&lt;br /&gt;
 &lt;br /&gt;
 root@zero:~# file /bin/mkdir&lt;br /&gt;
 /bin/mkdir: ELF 32-bit LSB executable, Intel 80386, version 1 (SYSV), dynamically linked (uses shared libs), for GNU/Linux 2.6.8, stripped&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Die Datei liegt im Maschinencode vor und kann in den Hauptspeicher geladen&lt;br /&gt;
werden. Sobald dies geschehen ist, kann der Rechner diesen Maschinencode&lt;br /&gt;
abarbeiten (ausführen).&lt;br /&gt;
&lt;br /&gt;
Da aber ein Programm nicht direkt auf die Hardware zugreifen soll, muss es vom&lt;br /&gt;
Betriebsystem kontrolliert werden. Das Betriebssystem liegt logisch gesehen&lt;br /&gt;
zwischen Hardware und Anwendung. Das Betriebssystem ordnet jedem Prozess&lt;br /&gt;
verschiedene Kenndaten zu, um die Prozesse verwalten zu können. Alle&lt;br /&gt;
Kenndaten, die einem Prozess zugeordnet sind, nennt man die&lt;br /&gt;
Prozessumgebung.Wenn man in der Shell ein Kommando eingibt, wird ein Prozess&lt;br /&gt;
kreiert. Natürlich ist die Shell selbst auch ein Prozess. Ein Prozess kann aber&lt;br /&gt;
genauso gut ein Serverprozess (Dienst) sein, z.B. Apache.&lt;br /&gt;
Ein wesentliches Merkmal eines Prozesses ist die Prozesskommunikation. Über im&lt;br /&gt;
Betriebssystem implementierte Methoden ist es möglich, dass verschiedene&lt;br /&gt;
Prozesse Signale und Daten untereinander austauschen können.&lt;br /&gt;
Dadurch wird auch dem Benutzer ermöglicht, einem Prozeß bestimmte Signale zu&lt;br /&gt;
senden bzw. auf den Status eines Prozesses Einfluss zu nehmen.&lt;br /&gt;
&lt;br /&gt;
===Prozesstabelle (Anzeige mit ps)===&lt;br /&gt;
Da zu jedem Prozess Kenndaten geführt werden, müssen diese auch irgendwo&lt;br /&gt;
festgehalten werden. Das geschieht in der sogenannten Prozesstabelle.&lt;br /&gt;
&lt;br /&gt;
Kenndaten der Prozesse (Auswahl):&lt;br /&gt;
* F Flags (z.B. ausgelagert; Systemprozess; Trace,...)&lt;br /&gt;
* UID Nutzer, mit dessen Rechten der Prozess ausgeführt wird&lt;br /&gt;
* PID Prozess - ID. Diese Nummer gibt eine eindeutige Prozess - Nummer&lt;br /&gt;
an. Sie wird vom System automatisch beim Starten des Prozesses&lt;br /&gt;
vergeben und ist für die Laufzeit eindeutig.&lt;br /&gt;
* PPID Prozessnumer der Eltern-Prozesses&lt;br /&gt;
* PRI Priorität eines Prozesses; je niedriger der Wert ist, desto besser&lt;br /&gt;
* NI ist der Nicewert des Prozesses; Nice erniedrigt den Grundwert&lt;br /&gt;
der Priorität des Prozesses und gibt damit Prozessorzeit für andere&lt;br /&gt;
Prozesse frei.&lt;br /&gt;
* SIZE Speichergröße des Prozesses inklusive Stack (eine Art Zwischenspeicher)&lt;br /&gt;
* RSS Verbrauch an physischen Speicher&lt;br /&gt;
* WCHAN ist der Name der Kernerlfunktion, in der der Prozess schläft&lt;br /&gt;
* STAT Status des Prozesses&lt;br /&gt;
R läuft       S schlafend     D nicht störbarer Schlaf&lt;br /&gt;
T angehalten  Z Zombie        W der Prozess belegt keine Seiten&lt;br /&gt;
* TIME Bisland benötigte Prozessorzeit&lt;br /&gt;
* SIZE ist die Größe von Text, Daten und Stack&lt;br /&gt;
* TTY die Nummer des kontrollierenden Teminal; wenn hier ein ? steht,&lt;br /&gt;
handelt es sich um einen Dämon oder Serverprozess.&lt;br /&gt;
* COMMAND Angabe des Prozesses selbst. Dies ist meist der Programmname.&lt;br /&gt;
&lt;br /&gt;
Weiteres&lt;br /&gt;
* GID Gruppe, unter der der Prozess läuft&lt;br /&gt;
* Verweis auf das aktuellen Arbeitsverzeichnis&lt;br /&gt;
* Um mit relativen Pfadangaben arbeiten zu können braucht man diesen Eintrag&lt;br /&gt;
* Tabelle mit Verweisen auf aktuell geöffnete Dateien&lt;br /&gt;
* 3 sind automatisch geöffnet Standardeingabe, Standardausgabe und&lt;br /&gt;
Standardfehlerkanal&lt;br /&gt;
&lt;br /&gt;
Beispiel&lt;br /&gt;
 root@zero:~# ps -l&lt;br /&gt;
 F S   UID   PID  PPID  C PRI  NI ADDR SZ WCHAN  TTY          TIME CMD&lt;br /&gt;
 4 R     0 18639 18631  0  80   0 -  1080 -      pts/0    00:00:00 bash&lt;br /&gt;
 0 R     0 25904 18639  0  80   0 -   635 -      pts/0    00:00:00 ps&lt;br /&gt;
&lt;br /&gt;
===Eltern und Kinder===&lt;br /&gt;
Jeder Prozess kann weitere Prozesse erzeugen. Die erzeugten Prozesse bezeichnet&lt;br /&gt;
man als Kindprozesse. Jeder Kindprozess weiß anhand der PID, woher er stammt.&lt;br /&gt;
&lt;br /&gt;
Alle Prozesse sind von einem anderen Prozess gestartet worden, mit Ausnahme&lt;br /&gt;
des Pseudoprozesses (noch im Kernel beim Starten erzeugter Prozess). Dieser hat&lt;br /&gt;
die Prozessnummer 0. Er hat die Aufgabe, den Init Prozess ( /sbin/init die Nummer&lt;br /&gt;
1) zu starten, der in System V alle anderen Prozesse direkt oder über seine Kind-&lt;br /&gt;
prozesse startet. (init wird konfiguriert durch die /etc/inittab)&lt;br /&gt;
&lt;br /&gt;
Es gibt zwei Arten wie ein Prozess gestartet werden kann:&lt;br /&gt;
&lt;br /&gt;
# Fork und Exec: Prozessumgebung wird dupliziert, der neue Prozess bekommt eine eigene neue PID&lt;br /&gt;
# Exec: Alter Prozess wird durch neuen Prozess überladen (geht mit dem shell-buildin exec)&lt;br /&gt;
&lt;br /&gt;
'''Rechte auf Objekte UID GID'''&lt;br /&gt;
Ob ein Prozess auf eine Datei zugreifen kann, entscheidet der Kernel anhand der&lt;br /&gt;
Zugriffssrechte, die auf der Datei gesetzt sind. Er checkt anhand der UID und GID&lt;br /&gt;
des Prozesses, ob es erlaubt ist. Mit dieser Technik wird letztendlich geprüft, was&lt;br /&gt;
ein User darf, und was nicht.&lt;br /&gt;
&lt;br /&gt;
===Rechenzeit und Priorität===&lt;br /&gt;
Da auch bei Prozessen eine Gerechtigkeit herschen muss, muss eine Instanz&lt;br /&gt;
darüber entscheiden wie lange ein Prozess Rechenzeit verbrauchen darf.&lt;br /&gt;
Folgende Kenndaten werden dazu benötigt&lt;br /&gt;
* clocktick = Zeiteinheit&lt;br /&gt;
* n = Faktor über den Kernel einstellbar&lt;br /&gt;
* slice = n &amp;lt;nowiki&amp;gt;*&amp;lt;/nowiki&amp;gt; clocktick&lt;br /&gt;
* agingtime = weitere Zeiteinheit über den Kernel einstellbar&lt;br /&gt;
&lt;br /&gt;
Es wird davon ausgegangen das der Prozess mit der niedrigsten Priorität gerade&lt;br /&gt;
rechnet. Pro clocktick erhöht sich die Priorität dieses Prozesses um eins.&lt;br /&gt;
&lt;br /&gt;
Jetzt können 3 Situationen eintreten die alle dazu führen das der Scheduler&lt;br /&gt;
aufgerufen wird.&lt;br /&gt;
&lt;br /&gt;
# Prozess blockiert wegen einer Ausgabe oder Eingabe.&lt;br /&gt;
# Gibt Rechenzeit freiwillig ab.&lt;br /&gt;
# Der Slice endet.&lt;br /&gt;
&lt;br /&gt;
Der Aufruf des Schedulers bewirkt das der Prozess mit der niedrigsten Priorität&lt;br /&gt;
gescheduled wird, er also nun rechnen darf. Nach Ablauf der agingtime werden&lt;br /&gt;
nun die Prozesse &amp;quot;gealtert&amp;quot;. Das geschieht nach folgender Formel&lt;br /&gt;
&lt;br /&gt;
Neue Priorität = Alte Priorität / 2 + Nicewert&lt;br /&gt;
&lt;br /&gt;
Der User hat die Möglichkeit, über den sogenannten Nicefaktor den Grundwert für&lt;br /&gt;
einen Prozess zu senken. Der Prozess braucht dann länger für seine Abarbeitung.&lt;br /&gt;
Er verhält sich somit netter zu den anderen Prozessen. Normale User können nur&lt;br /&gt;
netter werden, der Systemverwalter kann auch nicht netter (gemeiner) werden. Der&lt;br /&gt;
Bereich liegt zwischen 19 (sehr nett) bis 0 (weniger nett) für die User, und 19 bis&lt;br /&gt;
-20 für root.&lt;br /&gt;
&lt;br /&gt;
[[Image:pri.png]]&lt;br /&gt;
&lt;br /&gt;
'''Signale'''&lt;br /&gt;
&lt;br /&gt;
Mit den Kommando kill und killall kann man Prozessen Signale schicken&lt;br /&gt;
&lt;br /&gt;
 kill -Signalnummer PID &lt;br /&gt;
&lt;br /&gt;
Signalnummer&lt;br /&gt;
{| border=1 cellpadding=2&lt;br /&gt;
!Signalname&lt;br /&gt;
!Wert&lt;br /&gt;
!Aktion&lt;br /&gt;
|-&lt;br /&gt;
|SIGHUP&lt;br /&gt;
|1&lt;br /&gt;
|Neuinitialisierung eines Prozesses&lt;br /&gt;
|-&lt;br /&gt;
|SIGINT&lt;br /&gt;
|2&lt;br /&gt;
|Interrupt-Signal von der Tastatur (STRG+c)&lt;br /&gt;
|-&lt;br /&gt;
|SIGQUIT&lt;br /&gt;
|3&lt;br /&gt;
|Interrupt-Signal von der Tastatur (STRG+c) mit Dump&lt;br /&gt;
|-&lt;br /&gt;
|SIGKILL&lt;br /&gt;
|9&lt;br /&gt;
|unwiderrufliches Beendigungssignal (Töten)&lt;br /&gt;
|-&lt;br /&gt;
|SIGSEGV&lt;br /&gt;
|11&lt;br /&gt;
|Ungültige Speicherreferenz (bedeutet oft auf defekten Speicher)&lt;br /&gt;
|-&lt;br /&gt;
|SIGTERM &lt;br /&gt;
|15&lt;br /&gt;
|Beendigungssignal (geöffnete Dateien werden geschlossen)&lt;br /&gt;
|-&lt;br /&gt;
|SIGCONT &lt;br /&gt;
|18&lt;br /&gt;
|Weiterfahren, wenn gestoppt&lt;br /&gt;
|-&lt;br /&gt;
|SIGSTOP&lt;br /&gt;
|19&lt;br /&gt;
|Prozessstop&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Beispiel&lt;br /&gt;
 root@zero:~# kill -1 7562&lt;br /&gt;
&lt;br /&gt;
===Programme im Zusammenhang mit Prozessen===&lt;br /&gt;
* ps: Zeigt die Prozesse mit ihrem Status an&lt;br /&gt;
 root@zero:~# ps&lt;br /&gt;
  PID TTY          TIME CMD&lt;br /&gt;
 14134 pts/0    00:00:00 bash&lt;br /&gt;
 14149 pts/0    00:00:00 ps&lt;br /&gt;
&lt;br /&gt;
 root@zero:~# ps -elf | grep apache&lt;br /&gt;
 1 S root      5738     1  0  80   0 -  5461 select Jun16 ?        00:00:00 /usr/sbin/apache2 -k start&lt;br /&gt;
 5 S www-data  5739  5738  0  80   0 -  5581 inet_c Jun16 ?        00:00:00 /usr/sbin/apache2 -k start&lt;br /&gt;
 5 S www-data  5742  5738  0  80   0 -  5461 inet_c Jun16 ?        00:00:00 /usr/sbin/apache2 -k start&lt;br /&gt;
 5 S www-data  5743  5738  0  80   0 -  5461 inet_c Jun16 ?        00:00:00 /usr/sbin/apache2 -k start&lt;br /&gt;
 5 S www-data  5745  5738  0  80   0 -  5461 inet_c Jun16 ?        00:00:00 /usr/sbin/apache2 -k start&lt;br /&gt;
 5 S www-data  5746  5738  0  80   0 -  5461 inet_c Jun16 ?        00:00:00 /usr/sbin/apache2 -k start&lt;br /&gt;
 0 S root     14153 14134  0  80   0 -   837 pipe_w 16:59 pts/0    00:00:00 grep apache&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* nice: Lässt ein Programm mit verändertem Grundwert der Priorität laufen&lt;br /&gt;
 root@zero:~# nice&lt;br /&gt;
 0&lt;br /&gt;
 root@zero:~# nice -n 9 bash&lt;br /&gt;
 root@zero:~# nice&lt;br /&gt;
 9&lt;br /&gt;
 root@zero:~#&lt;br /&gt;
&lt;br /&gt;
* renice: Ändert den Grundwert der Priorität eines laufenden Prozesses&lt;br /&gt;
 root@zero:~# renice 10 5742&lt;br /&gt;
 5742: Alte Priorität: 0, neue Priorität: 10&lt;br /&gt;
&lt;br /&gt;
* top: Zeigt die Prozesse mit ihrem Status an (Abbrechen mit q)&lt;br /&gt;
 root@zero:~# top&lt;br /&gt;
&lt;br /&gt;
* pstree: Zeigt die Prozesse als Baumstruktur&lt;br /&gt;
 root@zero:~# pstree&lt;br /&gt;
 init─┬─NetworkManager&lt;br /&gt;
      ├─acpid&lt;br /&gt;
      ├─apache2───5*[apache2]&lt;br /&gt;
      ├─atd&lt;br /&gt;
      ├─bluetoothd&lt;br /&gt;
      ├─console-kit-dae───63*[{console-kit-dae}]&lt;br /&gt;
      ├─cron&lt;br /&gt;
      ├─cupsd&lt;br /&gt;
      ├─dbus-daemon&lt;br /&gt;
      ├─dd&lt;br /&gt;
      ├─gdm───gdm─┬─Xorg&lt;br /&gt;
      │           └─gdmgreeter&lt;br /&gt;
      ├─6*[getty]&lt;br /&gt;
      ├─hald───hald-runner─┬─hald-addon-acpi&lt;br /&gt;
      │                    ├─hald-addon-inpu&lt;br /&gt;
      │                    └─2*[hald-addon-stor]&lt;br /&gt;
      ├─klogd&lt;br /&gt;
      ├─nm-system-setti&lt;br /&gt;
      ├─nmbd&lt;br /&gt;
      ├─nscd───11*[{nscd}]&lt;br /&gt;
      ├─portmap&lt;br /&gt;
      ├─rpc.statd&lt;br /&gt;
      ├─slapd───2*[{slapd}]&lt;br /&gt;
      ├─smbd───smbd&lt;br /&gt;
      ├─sshd───sshd───bash───bash───pstree&lt;br /&gt;
      ├─syslogd&lt;br /&gt;
      ├─system-tools-ba&lt;br /&gt;
      ├─udevd&lt;br /&gt;
      ├─winbindd─┬─winbindd───winbindd&lt;br /&gt;
      │          └─3*[winbindd]&lt;br /&gt;
      └─wpa_supplicant&lt;br /&gt;
&lt;br /&gt;
===Jobs===&lt;br /&gt;
Unter einem Job versteht man ein Programm, welches man von der Shell gelöst&lt;br /&gt;
hat. D. h. man kann ganz normal weiter arbeiten und der Job verrichtet seinen&lt;br /&gt;
Dienst im Hintergrund. Man kann jederzeit zu diesem Job wieder Kontakt&lt;br /&gt;
aufnehmen.&lt;br /&gt;
&lt;br /&gt;
Ein Job kann auf 2 Arten gestarten werden:&lt;br /&gt;
&lt;br /&gt;
# Durch Anhängen des &amp;amp; Zeichens beim Programmstart&lt;br /&gt;
 root@zero:~# tail -f /var/log/messages &amp;amp;&lt;br /&gt;
 Jun 19 06:59:31 zero -- MARK --&lt;br /&gt;
 Jun 19 07:19:31 zero -- MARK --&lt;br /&gt;
 Jun 19 07:39:32 zero -- MARK --&lt;br /&gt;
 Jun 19 07:44:57 zero syslogd 1.5.0#5ubuntu3: restart.&lt;br /&gt;
 Jun 19 07:59:32 zero -- MARK --&lt;br /&gt;
 Jun 19 08:19:32 zero -- MARK --&lt;br /&gt;
 Jun 19 08:39:32 zero -- MARK --&lt;br /&gt;
 Jun 19 08:59:32 zero -- MARK --&lt;br /&gt;
 Jun 19 09:19:33 zero -- MARK --&lt;br /&gt;
 Jun 19 09:39:33 zero -- MARK --&lt;br /&gt;
 [3] 27421&lt;br /&gt;
&lt;br /&gt;
# Durch Stoppen des Prozesses durch Drücken von Strg-Z und in den Hintergrund schicken mit %n (n ist die Jobnummer)&lt;br /&gt;
 root@zero:~# watch cat /proc/cpuinfo&lt;br /&gt;
 Strg-Z&lt;br /&gt;
 [4]+  Stopped                 watch cat /proc/cpuinfo&lt;br /&gt;
 root@zero:~# bg %4&lt;br /&gt;
 [4]+ watch cat /proc/cpuinfo &amp;amp;&lt;br /&gt;
&lt;br /&gt;
Anweisungen im Zusammenhang mit Jobs (n ist die Jobnummer)&lt;br /&gt;
* bg %n : Einen Job in den Hintergrund stellen (wie oben)&lt;br /&gt;
* fg %n : Einen Job in den Vordergrund holen&lt;br /&gt;
 root@zero:~# fg %4&lt;br /&gt;
 watch cat /proc/cpuinfo&lt;br /&gt;
&lt;br /&gt;
* jobs : Aktive Jobs ausgeben&lt;br /&gt;
&lt;br /&gt;
 root@zero:~# jobs&lt;br /&gt;
 [1]   Running                 tail -f /var/log/syslog &amp;amp;&lt;br /&gt;
 [2]   Running                 tail -f /var/log/syslog &amp;amp;&lt;br /&gt;
 [3]-  Running                 tail -f /var/log/messages &amp;amp;&lt;br /&gt;
 [4]+  Stopped                 watch cat /proc/cpuinfo&lt;br /&gt;
&lt;br /&gt;
* Strg-Z : Einen Vordergrund-Job vorübergehend anhalten&lt;br /&gt;
* kill -STOP %n : Unterbricht Job im Hintergrund&lt;br /&gt;
 root@zero:~# kill -STOP %1&lt;br /&gt;
 root@zero:~# jobs&lt;br /&gt;
 [1]+  '''Stopped'''                 tail -f /var/log/syslog&lt;br /&gt;
 [2]   Running                 tail -f /var/log/syslog &amp;amp;&lt;br /&gt;
 [3]   Running                 tail -f /var/log/messages &amp;amp;&lt;br /&gt;
 [4]-  Stopped                 watch cat /proc/cpuinfo&lt;br /&gt;
* kill -CONT %n : Setzt den unterbrochenen Job im Hintergrund fort&lt;br /&gt;
root@zero:~# kill -CONT %1&lt;br /&gt;
root@zero:~# jobs&lt;br /&gt;
 [1]+  '''Running'''                 tail -f /var/log/syslog &amp;amp;&lt;br /&gt;
 [2]   Running                 tail -f /var/log/syslog &amp;amp;&lt;br /&gt;
 [3]   Running                 tail -f /var/log/messages &amp;amp;&lt;br /&gt;
 [4]-  Stopped                 watch cat /proc/cpuinfo&lt;br /&gt;
* kill -KILL %n : Tötet Job im Hintergrund&lt;br /&gt;
 root@zero:~# kill -KILL %1&lt;br /&gt;
 root@zero:~# jobs&lt;br /&gt;
 [1]+  '''Killed'''                  tail -f /var/log/syslog&lt;br /&gt;
 [2]   Running                 tail -f /var/log/syslog &amp;amp;&lt;br /&gt;
 [3]   Running                 tail -f /var/log/messages &amp;amp;&lt;br /&gt;
 [4]-  Stopped                 watch cat /proc/cpuinfo&lt;br /&gt;
 root@zero:~# jobs&lt;br /&gt;
 [2]   Running                 tail -f /var/log/syslog &amp;amp;&lt;br /&gt;
 [3]-  Running                 tail -f /var/log/messages &amp;amp;&lt;br /&gt;
 [4]+  Stopped                 watch cat /proc/cpuinfo&lt;br /&gt;
&lt;br /&gt;
Bedingungen, die zu Jobausführung eingehalten werden sollen:&lt;br /&gt;
* Der Job soll nicht auf den Bildschirm schreiben (Standardausgabe +Standardfehlerkanal).&lt;br /&gt;
* Er soll keine Eingaben vom Benutzer erwarten.&lt;br /&gt;
&lt;br /&gt;
==Suchen von Dateien==&lt;br /&gt;
===find===&lt;br /&gt;
 find ab_wo_wird_gesucht was_wird_gesucht aktion&lt;br /&gt;
 find [Pfad] [Bedingung] [Aktion]&lt;br /&gt;
&lt;br /&gt;
====Nach Namen====&lt;br /&gt;
 find [Pfad] '''-name''' [Name]&lt;br /&gt;
 &lt;br /&gt;
Finde alle Dateien mit Namen test ab dem Verzeichnis /home und gebe diese Zeilenweise aus&lt;br /&gt;
 root@zero:~# find /home -name test -print&lt;br /&gt;
 /home/xinux/test&lt;br /&gt;
 /home/test&lt;br /&gt;
&lt;br /&gt;
Wie oben, jedoch mit Namensanfang test&lt;br /&gt;
 root@zero:/home/xinux# find /home -name 'test*'&lt;br /&gt;
 /home/xinux/testdatei&lt;br /&gt;
 /home/xinux/test&lt;br /&gt;
 /home/test&lt;br /&gt;
&lt;br /&gt;
====Nach Benutzer(Eigentümer)====&lt;br /&gt;
 root@zero:/tmp# find /tmp/ '''-user''' xinux&lt;br /&gt;
 /tmp/datei&lt;br /&gt;
&lt;br /&gt;
====Nach Gruppe====&lt;br /&gt;
 root@zero:/tmp# find /tmp/ '''-group''' hacker&lt;br /&gt;
 /tmp/datei3&lt;br /&gt;
 /tmp/datei2&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
====Nach Typ====&lt;br /&gt;
Es wird nach Dateien anhand Ihrer Art gesucht:&lt;br /&gt;
 find [Pfad] '''-type''' [Typ] &lt;br /&gt;
Typ:&lt;br /&gt;
* f: Normale Dateien&lt;br /&gt;
 root@zero:~# find /tmp/ -type f&lt;br /&gt;
 /tmp/mbr.img&lt;br /&gt;
 /tmp/datei&lt;br /&gt;
 /tmp/zeugs&lt;br /&gt;
 /tmp/.X0-lock&lt;br /&gt;
* d: Verzeichnisse&lt;br /&gt;
 root@zero:~# find /var/log -type d&lt;br /&gt;
 /var/log&lt;br /&gt;
 /var/log/apache2&lt;br /&gt;
 /var/log/unattended-upgrades&lt;br /&gt;
 /var/log/apparmor&lt;br /&gt;
 /var/log/ConsoleKit&lt;br /&gt;
 /var/log/dist-upgrade&lt;br /&gt;
 /var/log/dist-upgrade/20090526-1052&lt;br /&gt;
 /var/log/cups&lt;br /&gt;
 /var/log/apt&lt;br /&gt;
 /var/log/fsck&lt;br /&gt;
 /var/log/samba&lt;br /&gt;
 /var/log/samba/cores&lt;br /&gt;
 /var/log/samba/cores/smbd&lt;br /&gt;
 /var/log/samba/cores/nmbd&lt;br /&gt;
 /var/log/samba/cores/winbindd&lt;br /&gt;
 /var/log/installer&lt;br /&gt;
 /var/log/gdm&lt;br /&gt;
 /var/log/news&lt;br /&gt;
* c: Char Devices (Zeichenorientierte Gerätedatei)&lt;br /&gt;
 root@zero:~# find / -type c&lt;br /&gt;
 /lib/udev/devices/kmem&lt;br /&gt;
 /lib/udev/devices/null&lt;br /&gt;
 /lib/udev/devices/console&lt;br /&gt;
 /lib/udev/devices/ppp&lt;br /&gt;
 /lib/udev/devices/net/tun&lt;br /&gt;
* b: Block Devices (Blockorientierte Gerätedatei)&lt;br /&gt;
* p: Benannte Pipe&lt;br /&gt;
* l: Links&lt;br /&gt;
* s: Sockets&lt;br /&gt;
&lt;br /&gt;
====Nach Modifikation====&lt;br /&gt;
Listet alle Dateien in /etc auf, die innerhalb von zwei Tagen modifiziert wurden&lt;br /&gt;
 root@zero:/var/log# find /etc/ -mtime 2 -print&lt;br /&gt;
 /etc/apache2&lt;br /&gt;
 /etc/apache2/mods-available&lt;br /&gt;
 /etc/apache2/conf.d&lt;br /&gt;
 /etc/apache2/sites-available&lt;br /&gt;
 /etc/bash_completion.d&lt;br /&gt;
 /etc/blkid.tab.old&lt;br /&gt;
 /etc/firefox-3.0/profile&lt;br /&gt;
 /etc/firefox-3.0/profile/chrome&lt;br /&gt;
 /etc/firefox-3.0/pref&lt;br /&gt;
 /etc/profile.d&lt;br /&gt;
 /etc/ufw/applications.d&lt;br /&gt;
 /etc/logrotate.d&lt;br /&gt;
 /etc/xulrunner-1.9&lt;br /&gt;
 /etc/blkid.tab&lt;br /&gt;
 /etc/cron.daily&lt;br /&gt;
 /etc/alternatives&lt;br /&gt;
 /etc/alternatives/x-www-browser&lt;br /&gt;
 /etc/alternatives/xulrunner&lt;br /&gt;
 /etc/gre.d&lt;br /&gt;
 /etc/hal/fdi/policy&lt;br /&gt;
 /etc/dbus-1/system.d&lt;br /&gt;
 /etc/udev/rules.d&lt;br /&gt;
&lt;br /&gt;
====Nach Größe====&lt;br /&gt;
Finde Dateien in /tmp, die größer als 100 MByte sind&lt;br /&gt;
 root@zero:/tmp# find /tmp/ -size +100M&lt;br /&gt;
 /tmp/datei&lt;br /&gt;
&lt;br /&gt;
Finde Dateien in /tmp, die kleiner als 100 KByte sind&lt;br /&gt;
 root@zero:/tmp# find /tmp/ -size -100k&lt;br /&gt;
 /tmp/&lt;br /&gt;
 /tmp/datei3&lt;br /&gt;
 /tmp/backup &lt;br /&gt;
 /tmp/datei2&lt;br /&gt;
 /tmp/.winbindd &lt;br /&gt;
 /tmp/.winbindd/pipe&lt;br /&gt;
 /tmp/mbr.img&lt;br /&gt;
 /tmp/zeugs&lt;br /&gt;
 /tmp/.ICE-unix&lt;br /&gt;
 /tmp/.X0-lock&lt;br /&gt;
 /tmp/datei1&lt;br /&gt;
 /tmp/.X11-unix&lt;br /&gt;
 /tmp/.X11-unix/X0&lt;br /&gt;
 /tmp/pulse-PKdhtXMmr18n&lt;br /&gt;
&lt;br /&gt;
====Nach Berechtigungen====&lt;br /&gt;
Finde Dateien in Home mit der Berechtigung 777 (-rwxrwxrwx)&lt;br /&gt;
 root@zero:/var# find /home/ -perm 777&lt;br /&gt;
 /home/samba&lt;br /&gt;
 /home/xinux/Examples&lt;br /&gt;
 /home/xinux/.pulse/1f0763ee4cf4c7e1d3c07fd149dda37b:runtime&lt;br /&gt;
 /home/test/Examples&lt;br /&gt;
&lt;br /&gt;
===locate===&lt;br /&gt;
Locate arbeitet über einen Index, der erstellt und aktualisiert werden muss. Aus diesem Grund kann locate teilweise nicht &lt;br /&gt;
akutell sein. Es ist immer schneller als find und es durchsucht immer das ganze Dateisystem. &lt;br /&gt;
 locate [Dateiname]&lt;br /&gt;
 &lt;br /&gt;
Lokalisiere die Datei wvdial.conf. Anmerkung: Der Stern wird beim Suchen automatisch hinzugefügt. Entspricht also&lt;br /&gt;
wvidal.conf*&lt;br /&gt;
 root@zero:~# locate wvdial.conf&lt;br /&gt;
 /etc/wvdial.conf&lt;br /&gt;
 /usr/share/man/man5/wvdial.conf.5.gz&lt;br /&gt;
 /var/lib/dpkg/info/wvdial.conffiles&lt;br /&gt;
 /var/lib/dpkg/info/wvdial.config&lt;br /&gt;
&lt;br /&gt;
Lokalisiere die Datei wvdial.conf und nur diese&lt;br /&gt;
 root@zero:~# locate -b '\wvdial.conf'&lt;br /&gt;
 /etc/wvdial.conf&lt;br /&gt;
&lt;br /&gt;
Aktualisieren des Indexes&lt;br /&gt;
 root@zero:~# updatedb&lt;br /&gt;
&lt;br /&gt;
==Wie wird ein Kommando lokalisiert==&lt;br /&gt;
Wenn die Shell alle Ersetzungen in der Kommandozeile vorgenommen und alle Umleitungen vorbereitet hat, ist der Zeitpunkt &lt;br /&gt;
gekommen, auf den der Anwender die ganze Zeit gewartet hat. Die Shell versucht das Kommando auszuführen. Dazu muss sie &lt;br /&gt;
es aber erst lokalisieren. Das erste passende Kommando wird ausgeführt.&lt;br /&gt;
&lt;br /&gt;
Als Kommandoname wird immer das erste Wort eines einfachen Kommandos erkannt. Ein Kommandoname kann mit Pfadnamen in &lt;br /&gt;
einem Verzeichnis (absolut oder relativ) angegeben werden. Die Shell erkennt dies an (mindestens) einem Slash `/' &lt;br /&gt;
im Kommandonamen. Wenn kein Verzeichnis angegeben ist, versucht die Shell selbst, das Kommando zu finden. Dazu wird &lt;br /&gt;
der Kommandoname zuerst in der Hashtabelle gesucht, dann wird er mit den Synonymen, mit den Scriptfunktionen und &lt;br /&gt;
schließlich mit den Shellfunktionen verglichen. &lt;br /&gt;
&lt;br /&gt;
Wird auf diese Weise kein Programm dieses Namens gefunden, werden alle in der PATH-Umgebungsvariablen aufgeführten &lt;br /&gt;
Verzeichnisse nach einer ausführbaren Datei dieses Namens durchsucht. Wird auch hier kein passendes Kommando gefunden, &lt;br /&gt;
gibt die Shell eine Fehlermeldung aus.&lt;br /&gt;
&lt;br /&gt;
===which und type===&lt;br /&gt;
====which====&lt;br /&gt;
which gibt die vollen Pfadnamen der Dateien aus, die bei Benutzung des angegebenen Befehls ausgeführt werden würden.&lt;br /&gt;
&lt;br /&gt;
 which [-a] Dateiname &lt;br /&gt;
&lt;br /&gt;
Optionen:&lt;br /&gt;
&lt;br /&gt;
* -a : Alle Treffer ausgeben, nicht nur den ersten&lt;br /&gt;
* --skip-dot : Verzeichnisse, die mit einem Punkt beginnen, auslassen&lt;br /&gt;
&lt;br /&gt;
Beispiel&lt;br /&gt;
 root@zero:~# which startx&lt;br /&gt;
 /usr/bin/startx&lt;br /&gt;
&lt;br /&gt;
====type====&lt;br /&gt;
Anzeigen der absoluten Pfadnamen von Befehlen, und ob sich diese Befehle in der Hash-Tabelle der aktuellen&lt;br /&gt;
Shell befinden.&lt;br /&gt;
&lt;br /&gt;
 type [Optionen] Befehle&lt;br /&gt;
&lt;br /&gt;
Beispiel&lt;br /&gt;
 root@zero:~# type ls&lt;br /&gt;
 ls is aliased to `ls --color=auto'&lt;br /&gt;
&lt;br /&gt;
Optionen:&lt;br /&gt;
&lt;br /&gt;
* -a : Alle vorkommenden Befehle werden ausgegeben, nicht nur das, welches aufgerufen werden würde&lt;br /&gt;
 root@zero:~# type '''-a''' ls&lt;br /&gt;
 ls is aliased to `ls --color=auto'&lt;br /&gt;
 ls is /bin/ls&lt;br /&gt;
&lt;br /&gt;
* -p : Anzeigen des Eintrags von Befehl in der Hash-Tabelle. Dieser Wert kann sich vom ersten Auftreten des Befehls in PATH&lt;br /&gt;
unterscheiden&lt;br /&gt;
 root@zero:~# type '''-p''' apache2&lt;br /&gt;
 /usr/sbin/apache2&lt;br /&gt;
&lt;br /&gt;
* -t : Anzeigen, ob Befehl ein Aliasname, ein Schlüsselwort, eine Funktion, ein eingebauter Befehl oder eine Datei ist&lt;br /&gt;
 root@zero:~# type '''-t''' apache2&lt;br /&gt;
 file&lt;/div&gt;</summary>
		<author><name>192.168.178.46</name></author>
	</entry>
	<entry>
		<id>https://www.xinux.net/index.php?title=Linux_Grundlagen&amp;diff=45</id>
		<title>Linux Grundlagen</title>
		<link rel="alternate" type="text/html" href="https://www.xinux.net/index.php?title=Linux_Grundlagen&amp;diff=45"/>
		<updated>2009-07-06T10:21:46Z</updated>

		<summary type="html">&lt;p&gt;192.168.178.46: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Einführung==&lt;br /&gt;
===Geschichte Unix===&lt;br /&gt;
====1969====&lt;br /&gt;
Am Anfang von Linux steht Multics, ein von Bell Laboratories geschaffenes &amp;quot;Betriebssystem&amp;quot;, &lt;br /&gt;
das noch mit Lochkarten arbeitete. Multics wird mit Unterstützung von AT&amp;amp;T und Western &lt;br /&gt;
Electric unter Mitarbeit von Ken Thompson und Dennis Ritchie weiterentwickelt. Obwohl sich &lt;br /&gt;
Bell Laboratories bald zurückzieht, gibt Thompson das Projekt nicht auf.  Zum Entwicklerteam &lt;br /&gt;
gehören auch Rudd Canaday und Brian Kernighan. Letzterer gibt 1970 dem Betriebssystem den Namen UNIX. &lt;br /&gt;
Thompson definiert 7 Richtlinien für UNIX:&lt;br /&gt;
 &lt;br /&gt;
# Hierarchische Anordnung der Dateisysteme&lt;br /&gt;
# Die Ausgabe von Daten an die Peripherie(-geräte) und Dateien soll gleich sein.&lt;br /&gt;
# Prozesse und Programme sollen miteinander kommunizieren.&lt;br /&gt;
# Multitasking (voneinander getrennte Prozesse)&lt;br /&gt;
# Persönliche Shell's&lt;br /&gt;
# Der Compiler soll für viele Programmiersprachen tauglich sein.&lt;br /&gt;
# Portabilität&lt;br /&gt;
&lt;br /&gt;
====1971====&lt;br /&gt;
Bis 1971 ist das für eine DEC PDP-7 geschriebene Unix als Version 1 auf eine PDP-11 portiert. Bis&lt;br /&gt;
zur Version 4 entwickelt Ritchie die Programmier- (Hoch-) Sprache C. Das in Assembler geschriebene&lt;br /&gt;
Unix wird fast völlig nach C übersetzt, wodurch zum erstenmal die geforderte Hardware-Unabhängigkeit&lt;br /&gt;
des Betriebssystems realisiert werden kann.&lt;br /&gt;
&lt;br /&gt;
===Distributionen===&lt;br /&gt;
{| Border=1 Cellpadding=2&lt;br /&gt;
| &lt;br /&gt;
|Url&lt;br /&gt;
|Paketformat&lt;br /&gt;
|-&lt;br /&gt;
|Red Hat&lt;br /&gt;
|www.redhat.com&lt;br /&gt;
|rpm&lt;br /&gt;
|-&lt;br /&gt;
|fedora&lt;br /&gt;
|fedora.redhat.com&lt;br /&gt;
|rpm&lt;br /&gt;
|-&lt;br /&gt;
|CentOS&lt;br /&gt;
|www.centos.org&lt;br /&gt;
|rpm&lt;br /&gt;
|-&lt;br /&gt;
|Suse/openSUSE&lt;br /&gt;
|www.opensuse.org&lt;br /&gt;
|rpm&lt;br /&gt;
|-&lt;br /&gt;
|Debian&lt;br /&gt;
|www.debian.org&lt;br /&gt;
|deb&lt;br /&gt;
|-&lt;br /&gt;
|Ubuntu&lt;br /&gt;
|www.ubuntu.com&lt;br /&gt;
|deb&lt;br /&gt;
|-&lt;br /&gt;
|Mandrake&lt;br /&gt;
|www.linux-mandrake.com&lt;br /&gt;
|rpm&lt;br /&gt;
|-&lt;br /&gt;
|Easy Linux&lt;br /&gt;
|www.easy-linux.de&lt;br /&gt;
|rpm&lt;br /&gt;
|-&lt;br /&gt;
|Turbo&lt;br /&gt;
|www.turbolinux.com&lt;br /&gt;
|rpm&lt;br /&gt;
|-&lt;br /&gt;
|minis&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|toms&lt;br /&gt;
|www.toms.net/rb&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|damn small linux&lt;br /&gt;
|www.damnsmalllinux.org&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|pocket-linux&lt;br /&gt;
|www.pocket-linux.org&lt;br /&gt;
|&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
====Bücher====&lt;br /&gt;
 Titel : Das Linux Anwenderhandbuch und Leitfaden für die Systemverwaltung&lt;br /&gt;
 Autor : Sebastian Hetze, Dirk Hohndel, Olaf Kirch und Martin Müller&lt;br /&gt;
 Verlag: Lunetix&lt;br /&gt;
 ISBN : 3-929764-06-7&lt;br /&gt;
&lt;br /&gt;
 Titel : Linux in a Nutshell&lt;br /&gt;
 Autor : Jessica Perry Hekman und die Mitarbeiter von O'Reilly &amp;amp; Associates&lt;br /&gt;
 Verlag: O'Reilly&lt;br /&gt;
 ISBN : 3-930673-57-6&lt;br /&gt;
&lt;br /&gt;
 Titel : Linux - Wegweiser zur Installation und Konfiguration&lt;br /&gt;
 Autor : Matt Welsh, Lar Kaufman, Matthias Kalle Dallheimer&lt;br /&gt;
 Verlag: O'Reilly&lt;br /&gt;
 ISBN : 3-930673-58-4 (deutsch), 1-56592-469-X (englisch)&lt;br /&gt;
&lt;br /&gt;
 Titel : Linux - Installation, Konfiguration, Anwendung&lt;br /&gt;
 Autor : Michael KoflerMultitasking&lt;br /&gt;
 Verlag: Addison-Wesley&lt;br /&gt;
 ISBN : 3-8273-1475-5&lt;br /&gt;
&lt;br /&gt;
 Titel : Linux - Wegweiser für Netzwerker&lt;br /&gt;
 Autor : Olaf Kirch&lt;br /&gt;
 Verlag: O'Reilly&lt;br /&gt;
 ISBN : 3-930673-18-5&lt;br /&gt;
&lt;br /&gt;
 Titel : TCP/IP-Netzwerk-Administration&lt;br /&gt;
 Autor : Craig Hunt&lt;br /&gt;
 Verlag: O'Reilly&lt;br /&gt;
 ISBN : 3-89721-110-6&lt;br /&gt;
&lt;br /&gt;
 Titel : Essential System Administration&lt;br /&gt;
 Autor : Eleen Frisch&lt;br /&gt;
 Verlag: O'Reilly&lt;br /&gt;
 ISBN : 1-56592-127-5&lt;br /&gt;
&lt;br /&gt;
==Betriebssystem==&lt;br /&gt;
===Was ist ein Betriebssystem?===&lt;br /&gt;
&lt;br /&gt;
Ein Betriebssystem liegt logisch gesehen zwischenAnwendungsprogramm und Hardware.&lt;br /&gt;
&lt;br /&gt;
Es nimmt die Anforderungen der Anwendungsprogramme entgegen und leitet&lt;br /&gt;
diese kontrolliert an die Hardware weiter. Kein Anwendungsprogramm sollte&lt;br /&gt;
direkt auf die Hardware zugreifen können. Den zentralen Zugang schafft einzig&lt;br /&gt;
das Betriebssystem. Somit kann das Betriebssystem unsinnige Anforderungen&lt;br /&gt;
oder Bedienungsfehler abblocken.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Image:Linux.jpg]]&lt;br /&gt;
&lt;br /&gt;
===Aufgaben eines Betriebssystems===&lt;br /&gt;
&lt;br /&gt;
# Verbergen der Komplexität der Maschine vor dem Anwender (Abstraktion)&lt;br /&gt;
# Bereitstellen einer Benutzerschnittstelle (&amp;quot;Kommandointerpreter&amp;quot;, &amp;quot;Shell&amp;quot;)&lt;br /&gt;
# Bereitstellen einer normierten Programmierschnittstelle (API)&lt;br /&gt;
# Verwaltung der Ressourcen der Maschine::&lt;br /&gt;
Hauptspeicher&lt;br /&gt;
Prozessor(en)&lt;br /&gt;
Hintergrundspeicher (Platte, Band, etc.)&lt;br /&gt;
Geräte (Terminal, Drucker, Plotter, etc.)&lt;br /&gt;
Rechenzeit&lt;br /&gt;
Koordination von Prozessen&lt;br /&gt;
&lt;br /&gt;
===Aufbau eines Betriebssystems===&lt;br /&gt;
&lt;br /&gt;
Ein Rechensystem besteht aus Hardware, Systemprogrammen und Anwendungs-&lt;br /&gt;
programmen. Unter einem Betriebssystem wird meist die Summe aus Betriebs-&lt;br /&gt;
systemkern (Kernel) und den wichtigsten Systemprogrammen verstanden. Ein&lt;br /&gt;
minimaler LINUX-Kernel besitzt ungefähr eine Größe von 400 - 800 kByte.&lt;br /&gt;
Weitere wichtige Systemkomponenten benötigen zusätzlich 10 - 100 Mbyte&lt;br /&gt;
Plattenplatz.&lt;br /&gt;
&lt;br /&gt;
Ein Betriebssystem stellt den Rechner als erweiterte Maschine (virtuelle&lt;br /&gt;
Maschine) über definierte Software-Schnittstellen zur Verfügung.&lt;br /&gt;
Das Betriebssystem dient als Betriebsmittelverwalter, der Anforderungen&lt;br /&gt;
befriedigt, protokolliert, abrechnet und vermittelt.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Aufgaben des Betriebssystemkerns:&lt;br /&gt;
&lt;br /&gt;
{| Border=1 Cellpadding=2&lt;br /&gt;
|Prozessverwaltung  (dispatching and scheduling)&lt;br /&gt;
| Mehrere Benutzer können mit mehreren Aktionen gleichzeitig im System arbeiten, ohne sich gegenseitig zu beeinflussen. Damit dies möglich ist,  müssen die Aktionen organisiert, koordiniert und verwaltet werden. Die zu verwaltende Einheit nennt man Prozess.&lt;br /&gt;
|-&lt;br /&gt;
|Speicherverwaltung   (memory management)&lt;br /&gt;
|Zuteilen von Speicherbereichen an laufende Prozesse, Schutz der Speicherbereiche vor unbefugten Zugriffen, bei Speicherengpässen: Auslagern von ganzen (swapping) oder von Teilen (paging) von Prozessen auf die Platte (swap file).&lt;br /&gt;
|-&lt;br /&gt;
|Dateiverwaltung  (file handling)&lt;br /&gt;
|Zuteilung von Plattenplatz für Programme, Benutzer und Systemdienste, Schreiben, Lesen und Strukturieren der Daten auf den Massenspeichern; Durch Bereitstellung einer entsprechenden Schnittstelle (VFS, virtual file system) kann der Kern Dateisysteme unterschiedlichster Art (EXT2, FAT, NFS, HPFS, NTFS, ...) ansprechen.&lt;br /&gt;
|-&lt;br /&gt;
|Geräteverwaltung  (resource management)&lt;br /&gt;
|Der Kern ermöglicht und kontrolliert den Zugriff auf die Hardware. Er steuert die Ein- und Ausgabetätigkeiten der Anwender. An den Kern&lt;br /&gt;
gebunden sind die entsprechenden Gerätetreiber (device driver), die damit eine Kommunikation zwischen Kern und Hardware ermöglichen.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
===Multitasking===&lt;br /&gt;
&lt;br /&gt;
Multitasking bedeutet, dass ein Rechner aus Anwendersicht mehrere Aufgaben&lt;br /&gt;
(Tasks) gleichzeitg übernehmen kann. Das Betriebssystem (OS) unterteilt die&lt;br /&gt;
gleichzeitig anstehenden Aufgaben in Einzelarbeitsschritte (Prozesse) und&lt;br /&gt;
managed durch ein Zeitscheibenverfahren (scheduling) die gleichmäßige&lt;br /&gt;
Abarbeitung der Prozesse.&lt;br /&gt;
&lt;br /&gt;
Es wird unterschieden zwischen:&lt;br /&gt;
&lt;br /&gt;
*non-präamptiven (kooperativen=die Ressourcen werden vom aktiven Prozess freigegeben, bei einem Hänger steht das ganze System)&lt;br /&gt;
&lt;br /&gt;
und&lt;br /&gt;
&lt;br /&gt;
*präamptiven (reinem=der Betriebssystemkern steuert Taskwechsel, indem nach einer festgelegten Zeit vom gerade aktiven Prozess zum nächsten weitergeschaltet wird)&lt;br /&gt;
&lt;br /&gt;
===Mehrprozessorbetrieb===&lt;br /&gt;
&lt;br /&gt;
Bei mehreren Prozessoren und Unterstützung durch das OS&lt;br /&gt;
(NT,Linux,Unix,Novell) können mehrere Tasks auf diese verteilt werden und&lt;br /&gt;
gleichzeitig bearbeitet werden. Nachteilig ist, dass dies nicht oder kaum von&lt;br /&gt;
Anwendungsprogrammen unterstützt wird und es zu Kommunikationsproblemen&lt;br /&gt;
zwischen den einzelnen Tasks kommen kann.&lt;br /&gt;
&lt;br /&gt;
===Arten von von Betriebssystemen===&lt;br /&gt;
&lt;br /&gt;
{|Border=1 Cellpadding=2&lt;br /&gt;
|&lt;br /&gt;
|SingleUser  &lt;br /&gt;
|Multiuser&lt;br /&gt;
|-&lt;br /&gt;
|Single Tasking&lt;br /&gt;
|MS - DOS&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|Multi Tasking&lt;br /&gt;
|Windows 3.x&lt;br /&gt;
|UNIX&lt;br /&gt;
|-&lt;br /&gt;
|&lt;br /&gt;
|Windows 95/98&lt;br /&gt;
|Linux&lt;br /&gt;
|-&lt;br /&gt;
|&lt;br /&gt;
|Windows NT4 ohne Erweiterungen&lt;br /&gt;
|VMS&lt;br /&gt;
|-&lt;br /&gt;
|&lt;br /&gt;
|OS/2 &lt;br /&gt;
|Windows NT mit  Erweiterungen&lt;br /&gt;
|-&lt;br /&gt;
|&lt;br /&gt;
|Apple&lt;br /&gt;
|Windows 2000, XP, 2003&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
===SHELL===&lt;br /&gt;
&lt;br /&gt;
Wenn man mit Linux arbeiten will, kann man nicht direkt mit dem Betriebssystem&lt;br /&gt;
kommunizieren. Man braucht dazu ein Hilfsprogramm, welches die&lt;br /&gt;
Kommandoeingaben ordnungsgemäß an das Betriebssystem weiterleitet. Dieses&lt;br /&gt;
Hilfsprogramm hat den Namen Shell.&lt;br /&gt;
&lt;br /&gt;
Die Shell schirmt den Betriebssystemkern von den Anwendungsprogrammen ab.&lt;br /&gt;
Die unterschiedlichen Shells erfüllen alle dieselbe Aufgabe, sie unterscheiden sich&lt;br /&gt;
allerdings in ihrer Syntax.&lt;br /&gt;
&lt;br /&gt;
==Die Installation im Überblick==&lt;br /&gt;
&lt;br /&gt;
Die Installation von Linux geschieht in folgenden Schritten:&lt;br /&gt;
&lt;br /&gt;
# Analyse (Welche Hardware habe ich? ,Hab ich weitere Betriebsysteme?)&lt;br /&gt;
# Booten des Linux-Kernels. (von CD oder Diskette)&lt;br /&gt;
# Laden einer RAM-Disk (das macht das Installationsprogramm automatisch).&lt;br /&gt;
# Partitionieren der Festplatte (fdisk).&lt;br /&gt;
# Einrichten der Swappartition (mkswap), Formatieren der Festplatte (mkfs).&lt;br /&gt;
# Montieren der Dateisysteme (mount), Aktivieren der Swapbereiche (swapon).&lt;br /&gt;
# Kopieren und Auspacken der Daten vom Installationsmedium auf die Festplatte (die eigentliche Installation). (rpm, dpkg oder tar).&lt;br /&gt;
# Geeignete Wahl der Bootmethode unter Berücksichtigung von Punkt 1 (grub, lilo).&lt;br /&gt;
# Konfiguration des Systems (Netz, Modem etc...).&lt;br /&gt;
&lt;br /&gt;
==Erste Schritte==&lt;br /&gt;
===Anmelden===&lt;br /&gt;
Sie können sich nun mit dem Usernamen und dem Passwort, das sie bei der Installation angelegt haben anmelden!&lt;br /&gt;
[[Image:benutzer.jpg]]&lt;br /&gt;
&lt;br /&gt;
[[Image:passwd.jpg]]&lt;br /&gt;
&lt;br /&gt;
===Terminal öffnen===&lt;br /&gt;
&lt;br /&gt;
Ein Terminal öffnen Sie über das Startmenü:&lt;br /&gt;
&lt;br /&gt;
[[Image:Terminalde.jpg]]&lt;br /&gt;
&lt;br /&gt;
Das geöffnete Terminal sieht dann folgendermaßen aus:&lt;br /&gt;
&lt;br /&gt;
[[Image:Terminalde2.jpg]]&lt;br /&gt;
&lt;br /&gt;
===Sudo===&lt;br /&gt;
Rootrechte erlangen sie über den &amp;quot;Sudo&amp;quot;-Befehl&lt;br /&gt;
 &lt;br /&gt;
''Den nächsten Befehl als root ausführen''&lt;br /&gt;
 xinux@zero:~$ sudo cat /etc/shadow&lt;br /&gt;
 [sudo] password for xinux:&lt;br /&gt;
&lt;br /&gt;
''Eine komplette Sitzung als root starten''&lt;br /&gt;
 xinux@zero:~$ sudo -i&lt;br /&gt;
 [sudo] password for xinux:&lt;br /&gt;
 root@zero:~#&lt;br /&gt;
&lt;br /&gt;
===Virtuelle Konsolen===&lt;br /&gt;
&lt;br /&gt;
In die Virtuelle Konsole gelangen sie über &amp;quot;STRG+ALT+(F1-F6)&amp;quot;.&lt;br /&gt;
Sie funktioniert wie ein ganz normales Terminal, und mit &amp;quot;ALT+F7&amp;quot;&lt;br /&gt;
gelangen sie wieder zurück auf die grafische Benutzeroberfläche&lt;br /&gt;
&lt;br /&gt;
===Abmelden===&lt;br /&gt;
&lt;br /&gt;
Abmelden können Sie sich wieder über das Startmenu unter:&lt;br /&gt;
&lt;br /&gt;
[[Image:Logout.jpg]]&lt;br /&gt;
&lt;br /&gt;
Fals sie nur einzelne Sitzungen in einem der Terminals oder &lt;br /&gt;
den Virtuellen Konsolen Abmelden wollen benutzen sie dazu den Befehl: &amp;quot;exit&amp;quot;&lt;br /&gt;
&lt;br /&gt;
===Herunterfahren===&lt;br /&gt;
&lt;br /&gt;
Das Herunterfahren funktioniert auf dem selben Weg.&lt;br /&gt;
&lt;br /&gt;
Entweder sie Benutzen wieder das Startmenü und benutzen diesmal den &amp;quot;Ausschalten ...&amp;quot; Knopf,&lt;br /&gt;
&lt;br /&gt;
Oder sie geben den äquivalenten &amp;quot;shutdown&amp;quot;-Befehl in einem Terminal bzw. der virtuellen Konsole ein.&lt;br /&gt;
&lt;br /&gt;
Allerdings müssen sie dazu als Administrator angemeldet sein s. &amp;quot;Sudo&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Wenn Sie den &amp;quot;shutdown&amp;quot;-Befehl benutzen wollen muss hinter den Befehl&lt;br /&gt;
&lt;br /&gt;
eine Zeitangabe in Minuten oder das wort &amp;quot;now&amp;quot; für sofortiges Ausschalten hinzugefügt werden:&lt;br /&gt;
&lt;br /&gt;
 xinux@zero:~$ sudo -i&lt;br /&gt;
 root@zero:~# shutdown 60&lt;br /&gt;
 &lt;br /&gt;
 Broadcast message from xinux@zero &lt;br /&gt;
         (/dev/pts/3) at 14:29 ...&lt;br /&gt;
 &lt;br /&gt;
 The system is going down for maintenance in 60 minutes!&lt;br /&gt;
&lt;br /&gt;
Sollten sie den Befehl widerrufen wollen dann drücken sie &amp;quot;STRG+C&amp;quot;,&lt;br /&gt;
&lt;br /&gt;
in dem Terminal in dem der shutdown Befehl gestartet wurde,&lt;br /&gt;
&lt;br /&gt;
oder geben sie den &amp;quot;shutdown&amp;quot;-Befehl zusammen mit der Abbruchoption &amp;quot;-c&amp;quot; in einem anderen Terminal ein:&lt;br /&gt;
&lt;br /&gt;
 root@zero:~# shutdown -c&lt;br /&gt;
&lt;br /&gt;
 shutdown: Shutdown cancelled&lt;br /&gt;
 root@zero:~# &lt;br /&gt;
&lt;br /&gt;
Wenn Sie den Rechner Neustarten möchten gibt es dazu die Option &amp;quot;-r&amp;quot; für den &amp;quot;shutdown&amp;quot;-Befehl&lt;br /&gt;
&lt;br /&gt;
oder den &amp;quot;reboot&amp;quot;-Befehl die beide auch als root ausgeführt werden müssen:&lt;br /&gt;
&lt;br /&gt;
 xinux@zero:~$ sudo -i&lt;br /&gt;
 [sudo] password for xinux: &lt;br /&gt;
 root@zero:~# shutdown -r now&lt;br /&gt;
&lt;br /&gt;
 root@zero:~# reboot&lt;br /&gt;
&lt;br /&gt;
===&amp;quot;man&amp;quot;===&lt;br /&gt;
&lt;br /&gt;
Programm zum Einsehen der Online-Manuals&lt;br /&gt;
&lt;br /&gt;
Die Manuals sind in folgende Sektionen unterteilt:&lt;br /&gt;
# Ausführbare Programme oder Shellbefehle&lt;br /&gt;
# Systemaufrufe (Kernelfunktionen)&lt;br /&gt;
# Bibliotheksaufrufe (Funktionen in System-Bibliotheken)&lt;br /&gt;
# Spezielle Dateien (gewöhnlich in /dev)&lt;br /&gt;
# Dateiformate und Konventionen, z. B. /etc/passwd&lt;br /&gt;
# Spiele&lt;br /&gt;
# Makropakete und Konventionen, z. B. man(7), groff(7)&lt;br /&gt;
# Systemadministrationsbefehle (in der Regel nur für root)&lt;br /&gt;
# Kernelroutinen [Nicht Standard]&lt;br /&gt;
&lt;br /&gt;
Aufruf eines Manuals erfolgt durch ''man kommando''&lt;br /&gt;
Beendet wird durch Drücken des Buchstabens q&lt;br /&gt;
Gesucht wird vorwärts durch Eingabe eines /suchausdruck&lt;br /&gt;
Gesucht wird rückwärts durch Eingabe eines ?suchausdruck&lt;br /&gt;
&lt;br /&gt;
Beispiele:&lt;br /&gt;
&lt;br /&gt;
      man passwd        Anschauen der Manualseite zum Programm passwd&lt;br /&gt;
      man 5 passwd      Anschauen der Manualseite zur Datei /etc/passwd&lt;br /&gt;
      man -a passwd     Anschauen aller Manualseiten zu passwd&lt;br /&gt;
      man -k passwd     Durchsucht die Kurzbeschreibungen der Manualseite&lt;br /&gt;
                        nach passwd und gibt alle Treffer aus&lt;br /&gt;
      man -f passwd      Gibt alle gefunden Kurzbescheibungen zu passwd aus&lt;br /&gt;
      man -L en passwd Gibt englische Manualseiten aus&lt;br /&gt;
&lt;br /&gt;
===WHO===&lt;br /&gt;
&lt;br /&gt;
WHO(1)           Dienstprogramme für Benutzer        WHO(1)&lt;br /&gt;
&lt;br /&gt;
Bezeichnung&lt;br /&gt;
      who - gibt Information über die aktiven Anwender des Sys&lt;br /&gt;
      tems&lt;br /&gt;
&lt;br /&gt;
Syntax&lt;br /&gt;
      who [-Optionen] [Datei] [ami]&lt;br /&gt;
&lt;br /&gt;
Beschreibung&lt;br /&gt;
   who zeigt die Namen, das Terminal und die Loginzeit der&lt;br /&gt;
   aktiven Benutzer. Außerdem gibt es Antwort auf die exis&lt;br /&gt;
   tentielle Frage wer bin ich?! z.B. mit whoami.&lt;br /&gt;
   Wird eine Datei angegeben, so wird die Information über&lt;br /&gt;
   die aktiven Anwender aus dieser Datei genommen. Vor&lt;br /&gt;
   eingestellt ist die Datei /etc/utmp&lt;br /&gt;
&lt;br /&gt;
Optionen&lt;br /&gt;
   -i     zeigt die Dauer der aktuellen Sitzungen&lt;br /&gt;
   -m     gibt den eigenen Benutzernamen mit E-mail Adresse aus&lt;br /&gt;
   -q     gibt nur die Benutzernamen und die Zahl der aktiven Benutzer aus&lt;br /&gt;
   -s     Ausgabe im Standardformat&lt;br /&gt;
   -u     wie -i&lt;br /&gt;
   -w     markiert alle Benutzer mit +, die eine Nachricht empfangen können,&lt;br /&gt;
          oder mit einem -, wenn der Empfang von Nachrichten abgeschaltet&lt;br /&gt;
          wurde&lt;br /&gt;
   -H     gibt zusätzlich eine Kopfzeile mit der Bedeutung der einzelnen&lt;br /&gt;
          Spalten aus&lt;br /&gt;
   -T     wie -w&lt;br /&gt;
&lt;br /&gt;
Siehe auch:          das LunetIX Linuxhandbuch&lt;br /&gt;
&lt;br /&gt;
===Was geht vor auf meinem System? (date,who)===&lt;br /&gt;
&lt;br /&gt;
Das Kommando date dient zur Abfrage von Datum und Uhrzeit.&lt;br /&gt;
&lt;br /&gt;
 xinux@zero:~ &amp;gt; date&lt;br /&gt;
 Fre Mär 16 16:35:03 CET 2001&lt;br /&gt;
&lt;br /&gt;
oder auch Anzeige der Grennwich Zeit:&lt;br /&gt;
&lt;br /&gt;
 xinux@zero:~ &amp;gt; date -u&lt;br /&gt;
 Fre Mär 16 15:35:34 UTC 2001&lt;br /&gt;
&lt;br /&gt;
 xinux@zero:~ &amp;gt; date -u &amp;quot;+%X&amp;quot;&lt;br /&gt;
 15:37:19&lt;br /&gt;
&lt;br /&gt;
 xinux@zero:~ &amp;gt; date -u &amp;quot;+%x&amp;quot;&lt;br /&gt;
 01/15/02&lt;br /&gt;
&lt;br /&gt;
who zeigt alle angemeldeten Benutzer an&lt;br /&gt;
&lt;br /&gt;
 thomas@cardassia:~ &amp;gt; who&lt;br /&gt;
 thomas             tty1 Feb 27 16:39&lt;br /&gt;
 thomas             tty2 Mar 2 17:08&lt;br /&gt;
 tina               tty6 Mar 16 16:38&lt;br /&gt;
&lt;br /&gt;
Mit `who --help' bekommen Sie mehr Informationen.&lt;br /&gt;
&lt;br /&gt;
 thomas@cardassia:~ &amp;gt; who --help&lt;br /&gt;
&lt;br /&gt;
Benutzung: who [OPTION]... [ DATEI | ARG1 ARG2 ]&lt;br /&gt;
&lt;br /&gt;
 -H, --heading             print line of column headings&lt;br /&gt;
 -i, -u, --idle            add user idle time as HOURS:MINUTES, . or old&lt;br /&gt;
 -l, --lookup              attempt to canonicalize hostnames via DNS&lt;br /&gt;
 -m                        only hostname and user associated with stdin&lt;br /&gt;
 -q, --count               all login names and number of users logged on&lt;br /&gt;
 -s                        (ignored)&lt;br /&gt;
 -T, -w, --mesg            add user's message status as +, - or ?&lt;br /&gt;
     --message             same as -T&lt;br /&gt;
     --writable            same as -T&lt;br /&gt;
     --help                display this help and exit&lt;br /&gt;
     --version             output version information and exit&lt;br /&gt;
&lt;br /&gt;
==Das UNIX-Dateisystem==&lt;br /&gt;
===Verzeichnisbaum===&lt;br /&gt;
&lt;br /&gt;
[[Image:vztree.jpg]]&lt;br /&gt;
&lt;br /&gt;
Das Betriebssystem UNIX besitzt ein hierarchisches Dateisystem. Es besteht aus:&lt;br /&gt;
* Dateien (Files)&lt;br /&gt;
Dateien speichern Informationen (Text, Bilder, Sound, Videos, Programme) und&lt;br /&gt;
werden über den Dateinamen angesprochen.&lt;br /&gt;
&lt;br /&gt;
* Verzeichnissen (Directories, Kataloge)&lt;br /&gt;
Verzeichnisse besitzen ebenfalls einen Namen und dienen zur Ordnung des&lt;br /&gt;
Dateisystems. Ein Verzeichnis kann Dateien und Unterverzeichnisse&lt;br /&gt;
(Subdirectories) enthalten. Das oberste Verzeichnis im Dateisystem heisst&lt;br /&gt;
Rootverzeichnis oder kurz Root und wird durch / (sprich: slash)&lt;br /&gt;
gekennzeichnet.&lt;br /&gt;
&lt;br /&gt;
Im Gegensatz zu Windows kennt UNIX keine Laufwerke.&lt;br /&gt;
Das obige Bild zeigt ein typisches UNIX-Dateisystem.&lt;br /&gt;
Unterhalb des Rootverzeichnisses befinden sich eine Vielzahl vonVerzeichnissen.&lt;br /&gt;
&lt;br /&gt;
===Wichtige Verzeichnisse===&lt;br /&gt;
&lt;br /&gt;
• '''Homeverzeichnis'''&lt;br /&gt;
&lt;br /&gt;
das Verzeichnis, in dem man sich unmittelbar nach dem Anmelden befindet. Das&lt;br /&gt;
Homeverzeichnis wird vom Systemverwalter eingerichtet; jeder Anwender&lt;br /&gt;
besitzt ein festes Homeverzeichnis. z.B. /home/hans&lt;br /&gt;
&lt;br /&gt;
~ (Tilde) bzw. $HOME (Shellvariable) kennzeichnen das Homeverzeichnis.&lt;br /&gt;
&lt;br /&gt;
• '''Aktuelles Verzeichnis'''&lt;br /&gt;
&lt;br /&gt;
Verzeichnis, in dem man sich aktuell befindet.&lt;br /&gt;
Das aktuelle Verzeichnis wird mit dem Befehl cd (change directory) oder per&lt;br /&gt;
Mausklick verändert.&lt;br /&gt;
Ein einfacher Punkt . kennzeichnet das aktuelle Verzeichnis.&lt;br /&gt;
&lt;br /&gt;
• '''Elternverzeichnis'''&lt;br /&gt;
&lt;br /&gt;
Verzeichnis unmittelbar oberhalb des aktuellen Verzeichnisses.&lt;br /&gt;
Jedes Verzeichnis ausser / besitzt genau ein Elternverzeichnis.&lt;br /&gt;
Zwei Punkte .. kennzeichnen das Elternverzeichnis (abhängig vom aktuellen&lt;br /&gt;
VZ).&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Absoluter Pfadname:===&lt;br /&gt;
&lt;br /&gt;
Beschreibt ausgehend vom Rootverzeichnis den Weg zum Zielverzeichnis oder zur&lt;br /&gt;
Zieldatei. (Welche Verzeichnisse müssen ausgehend von / durchlaufen werden, um&lt;br /&gt;
zum Ziel zu kommen?) Ein absoluter Pfadname beginnt immer mit / .&lt;br /&gt;
&lt;br /&gt;
===Relativer Pfadname:===&lt;br /&gt;
&lt;br /&gt;
Beschreibt ausgehend vom aktuellen Verzeichnis den Weg zum Zielverzeichnis&lt;br /&gt;
oder zur Zieldatei; ein relativer Pfadname beginnt nicht mit / .&lt;br /&gt;
/home/suxer&lt;br /&gt;
absoluter Pfadname für das Verzeichnis sub1 im Homeverzeichnis von suxer&lt;br /&gt;
&lt;br /&gt;
===Verzeichnisstruktur===&lt;br /&gt;
&lt;br /&gt;
 /bin         Kommandos die beim starten benötigt werden (Zugriff hat jeder)&lt;br /&gt;
 /sbin        Wichtige System-Programme (In der Regel root vorberhalten)&lt;br /&gt;
 /boot        Hier findet man die Dateien des Bootmanagers und des Kernel.&lt;br /&gt;
 /dev         In diesem Verzeichnis stehen die Gerätedateien (Devices),&lt;br /&gt;
 /home        Alle Heimatverzeichnisse der Nutzer findet man hier.&lt;br /&gt;
 /lib         Beim Systemstart benötigten Bibliotheken und Modules stehen hier.&lt;br /&gt;
 /mnt         Mountpunkt für temporäre Partitionen&lt;br /&gt;
 /opt         Software, die nicht Installationsumfang von Linux gehören.&lt;br /&gt;
 /root        Heimatverzeichnis des Administrators.&lt;br /&gt;
 /tmp         Temporäre Dateien können hier abgelegt werden&lt;br /&gt;
 /usr         statische Dateien (kann read-only gemountet sein)&lt;br /&gt;
 /var         variable Dateien (muss beschreibar sein )&lt;br /&gt;
 /etc         Konfiguartionsdateien und Startscripte&lt;br /&gt;
 /proc        Virtuelles Dateisystem -&amp;gt; repräsentiert den Kernel&lt;br /&gt;
&lt;br /&gt;
===Unterverzeichnisse von /usr===&lt;br /&gt;
&lt;br /&gt;
 sbin         Programme für root die beim Start nicht benötigt werden&lt;br /&gt;
 bin          Programme für alle die beim Start nicht benötigt werden&lt;br /&gt;
 X11R6        Dateien des X-Window-Sytems&lt;br /&gt;
 bin          Ausführbare Programme&lt;br /&gt;
 doc          Dokumentationen&lt;br /&gt;
 etc          Konfigurationsdateien&lt;br /&gt;
 games        Spiele&lt;br /&gt;
 include      Headerdateien für C-Programme&lt;br /&gt;
 local        Pakete die nicht zur Distribution gehören ähnlich /opt&lt;br /&gt;
 share        Pakete die von mehreren Paketen genutzt werden&lt;br /&gt;
 share/man    Die Manualpages&lt;br /&gt;
 share/info   Seiten des Infosystems&lt;br /&gt;
 share/doc    Dokumentationen&lt;br /&gt;
 src          Sources von Programmen (Kernel und andere)&lt;br /&gt;
&lt;br /&gt;
===Unterverzeichnisse von /var===&lt;br /&gt;
&lt;br /&gt;
 cache        Zwischenspreicher für Progammes&lt;br /&gt;
 games        Variable Daten der Games (Scores etc...)&lt;br /&gt;
 lock         Sperrdateien&lt;br /&gt;
 log          Die Logdateien (wichtiges Verzeichnis für Admins)&lt;br /&gt;
 mail         Das Mailsystem&lt;br /&gt;
 run          Dateien zu laufemdem Prozessen&lt;br /&gt;
 spool        Spooldateien (z.B. für das Drucksystem&lt;br /&gt;
 state        Statusinfos&lt;br /&gt;
 tmp          Wie /tmp eventuell nicht auf root Partion&lt;br /&gt;
&lt;br /&gt;
==Einfache Komandos==&lt;br /&gt;
===cd: Wechseln des Arbeitsverzeichnis===&lt;br /&gt;
&lt;br /&gt;
Um festzustellen in welchem Verzeichnis man sich befindet, sollte man den&lt;br /&gt;
Befehl &amp;quot;pwd&amp;quot; benutzen,&lt;br /&gt;
&lt;br /&gt;
und mit dem Befehl &amp;quot;cd&amp;quot; kann man zwischen den Verzeichnissen wechseln:&lt;br /&gt;
&lt;br /&gt;
Wechsele ins homeverzeichnis von Xinux&lt;br /&gt;
&lt;br /&gt;
 xinux@zero:~$ cd /home/xinux/&lt;br /&gt;
 xinux@zero:~$ pwd&lt;br /&gt;
 /home/xinux&lt;br /&gt;
&lt;br /&gt;
cd ~ -&amp;gt; wechsele ins jeweilige Homeverzeichnis&lt;br /&gt;
&lt;br /&gt;
cd .. -&amp;gt; wechsele ein Verzeichnis höher&lt;br /&gt;
&lt;br /&gt;
cd ../verzeichnis -&amp;gt; wechsele in eine paralleles Verzeichnis &amp;lt;- (ist eine relative Pfadangabe !)&lt;br /&gt;
&lt;br /&gt;
cd - -&amp;gt; wechsele in das Verzeichnis, in dem vorher gearbeitet wurde.&lt;br /&gt;
&lt;br /&gt;
Mit cd / wechselt man in das Wurzelverzeichnis.&lt;br /&gt;
&lt;br /&gt;
 xinux@zero:/var/log$ cd /&lt;br /&gt;
 xinux@zero:/$ pwd&lt;br /&gt;
 /&lt;br /&gt;
&lt;br /&gt;
===ls: Listing===&lt;br /&gt;
&lt;br /&gt;
Den Inhalt von Verzeichnissen kann man sich mit dem Befehl &amp;quot;ls&amp;quot; anzeigen lassen&lt;br /&gt;
wobei &amp;quot;ls&amp;quot; eine Vielzahl von Optionen besitzt:&lt;br /&gt;
&lt;br /&gt;
 ls                                  standard&lt;br /&gt;
 ls -l                               langes listing&lt;br /&gt;
 ls -a                               alle Dateien&lt;br /&gt;
 ls -i                               mit Inode&lt;br /&gt;
 ls -h                               gut lesbare Dateigröße&lt;br /&gt;
 ls -d                               Verzechnis wird angezeigt, nicht der Inhalt&lt;br /&gt;
 ls -L                               sortiert nach Größe&lt;br /&gt;
 ls -t                               sortiert nach Datum&lt;br /&gt;
 ls -F                               mit nützlichem Anhang&lt;br /&gt;
&lt;br /&gt;
 xinux@zero:/$ ls -l /var/log/messages&lt;br /&gt;
 -rw-r----- 1 syslog adm 2296 2009-06-16 10:05 /var/log/messages&lt;br /&gt;
&lt;br /&gt;
===more: Seitenweises Anzeigen von Seiten===&lt;br /&gt;
 root@zero:~# more /var/log/messages&lt;br /&gt;
 ...&lt;br /&gt;
&lt;br /&gt;
===head: erste Zeilen anzeigen===&lt;br /&gt;
Erste 10 Zeilen anzeigen&lt;br /&gt;
 root@zero:~# head /var/log/messages&lt;br /&gt;
 Jun 15 12:37:08 zero syslogd 1.5.0#5ubuntu3: restart.&lt;br /&gt;
 Jun 15 12:38:43 zero kernel: [  830.065036] mtrr: your processor doesn't support write-combining&lt;br /&gt;
 Jun 15 12:46:05 zero pulseaudio[4817]: pid.c: Stale PID file, overwriting.&lt;br /&gt;
 Jun 15 13:05:24 zero -- MARK --&lt;br /&gt;
 ...&lt;br /&gt;
&lt;br /&gt;
Erste zwei Zeilen anzeigen&lt;br /&gt;
 root@zero:~# head -n 2 /var/log/messages&lt;br /&gt;
 Jun 15 12:37:08 zero syslogd 1.5.0#5ubuntu3: restart.&lt;br /&gt;
 Jun 15 12:38:43 zero kernel: [  830.065036] mtrr: your processor doesn't support write-combining&lt;br /&gt;
&lt;br /&gt;
===tail: letzte Zeilen anzeigen===&lt;br /&gt;
 &lt;br /&gt;
 root@zero:~# tail /var/log/syslog&lt;br /&gt;
 ...&lt;br /&gt;
 Jun 19 11:19:35 zero -- MARK --&lt;br /&gt;
 Jun 19 11:39:35 zero -- MARK --&lt;br /&gt;
 Jun 19 11:59:36 zero -- MARK --&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Letze 5 Zeilen anzeigen&lt;br /&gt;
 root@zero:~# tail -n 5 /var/log/auth.log&lt;br /&gt;
 Jun 18 14:30:01 zero CRON[12040]: pam_unix(cron:session): session closed for user root&lt;br /&gt;
 Jun 18 14:39:01 zero CRON[12191]: pam_unix(cron:session): session opened for user root by (uid=0)&lt;br /&gt;
 Jun 18 14:39:01 zero CRON[12191]: pam_unix(cron:session): session closed for user root&lt;br /&gt;
 Jun 18 14:40:01 zero CRON[12237]: pam_unix(cron:session): session opened for user root by (uid=0)&lt;br /&gt;
 Jun 18 14:40:01 zero CRON[12237]: pam_unix(cron:session): session closed for user root&lt;br /&gt;
&lt;br /&gt;
Letze Zeilen anzeigen und fortlaufend aktualisieren&lt;br /&gt;
 root@zero:~# tail -f /var/log/syslog&lt;br /&gt;
 ...&lt;br /&gt;
&lt;br /&gt;
===mkdir: Ein neues Verzeichnis erstellen===&lt;br /&gt;
&lt;br /&gt;
 mkdir        verzeichnis&lt;br /&gt;
Erstellt ein Verzeichnis im working directory (wd)&lt;br /&gt;
&lt;br /&gt;
 mkdir  -p    ver1/ver2&lt;br /&gt;
Erstellt ein Verzeichnis ver2 unterhalb von ver1&lt;br /&gt;
wenn ver1 nicht existiert wird es erstellt&lt;br /&gt;
&lt;br /&gt;
 mkdir -m 753 ver1&lt;br /&gt;
Es wird das Verzeichnis ver1 erstellt mit der mask 753&lt;br /&gt;
&lt;br /&gt;
 mkdir -v     ver1&lt;br /&gt;
Geschwätzige Ausgabe :)&lt;br /&gt;
&lt;br /&gt;
===Zum Löschen von leeren Verzeichnissen wird rmdir benutzt===&lt;br /&gt;
&lt;br /&gt;
 rmdir           ver1&lt;br /&gt;
Löscht das leere Verzeichnis ver1&lt;br /&gt;
&lt;br /&gt;
 rmdir -v        ver1&lt;br /&gt;
Löscht das leere Verzeichnis ver1 und ist geschwätzig&lt;br /&gt;
&lt;br /&gt;
 rmdir -p        /ver1/ver2/ver3&lt;br /&gt;
Löscht das Verzeichnis ver3; wenn dadurch ver2 ein leeres&lt;br /&gt;
Verzeichnis wird, wird dieses auch gelöscht , wenn ver1&lt;br /&gt;
dadurch ein leeres Verzeichnis wird, wird auch dieses gelöscht.&lt;br /&gt;
&lt;br /&gt;
===touch Verändern des Zeitstempels===&lt;br /&gt;
&lt;br /&gt;
Mit touch können wir eine neue leere Datei erzeugen (das ist nicht der eigentliche&lt;br /&gt;
Zweck von touch, eigentlich wird der Zeitstempel geändert)&lt;br /&gt;
&lt;br /&gt;
 touch            dateiname&lt;br /&gt;
&lt;br /&gt;
===Kopieren=== &lt;br /&gt;
cp ist das Kommando um Dateien zu kopieren &lt;br /&gt;
&lt;br /&gt;
Eine Kopie von dat1 mit dem Namen dat2 erstellen:&lt;br /&gt;
&lt;br /&gt;
 xinux@zero:~$ cp dat1 dat2&lt;br /&gt;
&lt;br /&gt;
Eine Kopie von dat1 ins Verzeichnis ver2 erstellen:&lt;br /&gt;
&lt;br /&gt;
 xinux@zero:~$ cp dat1 ver2/&lt;br /&gt;
 &lt;br /&gt;
Eine Kopie erstellen mit ausführlicher Anzeige:&lt;br /&gt;
&lt;br /&gt;
 xinux@zero:~$ cp -v dat1 dat2&lt;br /&gt;
 `dat1' -&amp;gt; `dat2'&lt;br /&gt;
&lt;br /&gt;
Eine Kopie erstellen mit Rückfrage fals etwas überschrieben wird:&lt;br /&gt;
&lt;br /&gt;
 xinux@zero:~$ cp -i dat1 dat2&lt;br /&gt;
 cp: overwrite `dat2'?&lt;br /&gt;
&lt;br /&gt;
Eine Kopie erstellen und die Rückfrage überbrücken:&lt;br /&gt;
&lt;br /&gt;
 xinux@zero:~$ cp -f dat1 dat2&lt;br /&gt;
&lt;br /&gt;
Eine Kopie von dat1 ins Verzeichnis ver2 erstellen fals keine neuere Version von dat1 vorliegt:&lt;br /&gt;
&lt;br /&gt;
 xinux@zero:~$ cp -u dat1 ver2/&lt;br /&gt;
&lt;br /&gt;
Eine Kopie erstellen fals ver2 auf dem selben Dateisystem wie dat1 liegt:&lt;br /&gt;
&lt;br /&gt;
 xinux@zero:~$ cp -x dat1 ver2/&lt;br /&gt;
&lt;br /&gt;
Eine Kopie von ver1, die als ver2 oder unter ver2 als ver1 gespeichert wird erstellen:&lt;br /&gt;
&lt;br /&gt;
 xinux@zero:~$ cp -r ver1/ ver2/&lt;br /&gt;
&lt;br /&gt;
Eine Kopie von einer Datei erstellen und ihre Attribute beibehalten:&lt;br /&gt;
&lt;br /&gt;
 xinux@zero:~$ cp -p sux1 sux2&lt;br /&gt;
&lt;br /&gt;
Eine Kopie erstellen bei der die Links erhalten bleiben:&lt;br /&gt;
&lt;br /&gt;
 xinux@zero:~$ cp -r ver1/ ver2/&lt;br /&gt;
&lt;br /&gt;
Eine Kopie erstellen zum Archivieren (-dpr):&lt;br /&gt;
&lt;br /&gt;
 xinux@zero:~$ cp -a ver1/ ver2/&lt;br /&gt;
&lt;br /&gt;
===rm: Löschen einer Datei===&lt;br /&gt;
&lt;br /&gt;
Um Dateien zu löschen, brauchen wir das Kommando &amp;quot;rm&amp;quot;:&lt;br /&gt;
&lt;br /&gt;
 rm               dat1        dat1 wird gelöscht&lt;br /&gt;
 rm         -i    dat1        dat1 wird nach Bestätigung gelöscht&lt;br /&gt;
 rm         -f    dat1        dat1 wird ohne Rückfragen gelöscht&lt;br /&gt;
 rm         -v    dat1        dat1 wird glöscht (geschwätzige Ausgabe)&lt;br /&gt;
 rm         -r    ver1        Löschen von nicht leeren Verzeichnissen&lt;br /&gt;
                              Achtung !!! Als root kann man sich damit Teile&lt;br /&gt;
                              oder sogar den gesamten Verzeichnisbaum&lt;br /&gt;
                              absägen !!!&lt;br /&gt;
&lt;br /&gt;
===mv: Verschieben===&lt;br /&gt;
&lt;br /&gt;
Mit dem Befehl &amp;quot;mv&amp;quot; werden Daten verschoben, folgendes gilt:&lt;br /&gt;
&lt;br /&gt;
 mv          dat1 dat2         &lt;br /&gt;
Die Datei dat1 wird in dat2 umbenannt&lt;br /&gt;
 mv          dat1 /ver1        &lt;br /&gt;
Die Datei dat1 wird nach /ver1 verschoben&lt;br /&gt;
&lt;br /&gt;
Die Parameter und ihre Bedeutung:&lt;br /&gt;
&lt;br /&gt;
      -i                      wenn eine Datei exisitiert wird vor dem&lt;br /&gt;
                              Überschreiben nachgefragt&lt;br /&gt;
      -v                      verbose (geschwätzig)&lt;br /&gt;
      -u                      nur neuere Daten werden bei Bedarf überschrieben&lt;br /&gt;
      -b                      wenn überschrieben werden soll, wird ein Backup&lt;br /&gt;
                              erstellt&lt;br /&gt;
      -S ENDUNG               das Backup bekommt die Endung ENDUNG&lt;br /&gt;
&lt;br /&gt;
===su Benutzer wechseln===&lt;br /&gt;
&lt;br /&gt;
 su -             &lt;br /&gt;
Wechsel zum Rootaccount, wie wenn dieser sich neu anmelden würde. (Bsp: su -)&lt;br /&gt;
&lt;br /&gt;
 su Benutzernamen &lt;br /&gt;
Wechsel der Identität zu Benutzer (gegebenenfalls Passwortabfrage)&lt;br /&gt;
&lt;br /&gt;
 su -c Kommando   &lt;br /&gt;
Kommando wird als rootaccount ausgeführt&lt;br /&gt;
&lt;br /&gt;
==Der Standard Editor vi==&lt;br /&gt;
Der vi ist der Standardeditor in der Unixwelt. Er ist in jedem Unix-Derivat&lt;br /&gt;
enthalten.&lt;br /&gt;
Der Editor hat zwar den schlechten Ruf umständlich zu bedienen zu sein, ist&lt;br /&gt;
jedoch sehr leistungsfähig und systemübergreifend verfügbar. Beim vi handelt es&lt;br /&gt;
sich um einen rein textorientierten Editor, der mittels eigener Kommandos&lt;br /&gt;
gesteuert wird.&lt;br /&gt;
&lt;br /&gt;
Der Editor VIM ist eine weitere Verbesserung von VI und leichter zu bedienen.&lt;br /&gt;
Und unter Ubuntu/Debian mit &amp;quot;apt-get install vim&amp;quot; zu installieren.&lt;br /&gt;
&lt;br /&gt;
===Starten des Editors:===&lt;br /&gt;
&lt;br /&gt;
Der Editorstart erfolgt einfach durch die Eingabe des Kommandos vi mit dem&lt;br /&gt;
Dateinamen der zu editierenden Datei als Parameter.&lt;br /&gt;
Beispiel:        &lt;br /&gt;
 vi sux.txt&lt;br /&gt;
&lt;br /&gt;
===Die Betriebsmodi des vi:===&lt;br /&gt;
&lt;br /&gt;
Ein Umstand, der dem vi den Ruf der komplizierten Bedienbarkeit zugetragen hat,&lt;br /&gt;
sind die unterschiedlichen Betriebsmodi des Editors. Genauer gesagt verfügt der&lt;br /&gt;
vi über drei Betriebsmodi:&lt;br /&gt;
&lt;br /&gt;
====Kommandomodus:====&lt;br /&gt;
&lt;br /&gt;
Innerhalb dieses Modus werden die eingegebenen Zeichen direkt als Befehle des&lt;br /&gt;
Editors interpretiert und ausgeführt. Dabei gibt es weder ein Bereitschaftszeichen&lt;br /&gt;
(Prompt) noch ein Echo (Ausgabe). Der Kommandomodus ist der Modus, in dem&lt;br /&gt;
sich der vi direkt nach seinem Start befindet.&lt;br /&gt;
&lt;br /&gt;
====Zeilenmodus oder Exmodus:====&lt;br /&gt;
&lt;br /&gt;
Dieser Modus ist der einzige Modus mit einem eigenen Bereitschaftszeichen,&lt;br /&gt;
nämlich dem Doppelpunkt (:). Das Prompt wird ebenso wie die Befehlsausgaben&lt;br /&gt;
in der Statuszeile angezeigt.&lt;br /&gt;
&lt;br /&gt;
====Eingabemodus:====&lt;br /&gt;
&lt;br /&gt;
Der Eingabemodus ist derjenige, in welchem der zu bearbeitende Text bearbeitet&lt;br /&gt;
werden kann. Alle hier eingegebenen Zeichen werden als Text für die aktuelle&lt;br /&gt;
Datei interpretiert. Zwischen den unterschiedlichen Modi kann jederzeit&lt;br /&gt;
gewechselt werden. Von Kommandomodus gelangen Sie durch mehere Wege in&lt;br /&gt;
den Eingabemodus. Man kann durch folgende Aktionen wechslen&lt;br /&gt;
&lt;br /&gt;
{| border=1 cellpadding=2&lt;br /&gt;
|i&lt;br /&gt;
|Text vor der aktuellen Cursorposition einfügen&lt;br /&gt;
|-&lt;br /&gt;
|I&lt;br /&gt;
|Text am Zeilenanfang einfügen&lt;br /&gt;
|-&lt;br /&gt;
|a&lt;br /&gt;
|Text hinter der aktuellen Cursorposition einfügen&lt;br /&gt;
|-&lt;br /&gt;
|A&lt;br /&gt;
|Text am Zeilenende einfügen&lt;br /&gt;
|-&lt;br /&gt;
|o&lt;br /&gt;
|Unterhalb der aktuellen Zeile eine neue Zeile einfügen&lt;br /&gt;
|-&lt;br /&gt;
|O&lt;br /&gt;
|Oberhalb der aktuellen Zeile eine neue Zeile einfügen&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Durch das Drücken der ESC - Taste gelangt man in den Kommandomodus zurück.&lt;br /&gt;
&lt;br /&gt;
Im Kommandomodus können Sie durch den Text navigieren und auch den Text&lt;br /&gt;
selbst bearbeiten, z.B ausschneiden, kopieren usw. Dazu sind einige Kommandos&lt;br /&gt;
nötig, von denen die wichtigsten im Folgenden erläutert werden:&lt;br /&gt;
&lt;br /&gt;
 xinux@zero:/$ vi iwas.txt&lt;br /&gt;
&lt;br /&gt;
[[Image:vim.jpg]]&lt;br /&gt;
&lt;br /&gt;
===Benutzen des Kommandomodus===&lt;br /&gt;
====Steuerung des Cursors durch den Text====&lt;br /&gt;
&lt;br /&gt;
Mittels folgender Kommandos bewegt sich der Cursor durch den Text:&lt;br /&gt;
&lt;br /&gt;
{| border=1 cellpadding=2&lt;br /&gt;
|h&lt;br /&gt;
|Cursor ein Zeichen nach links&lt;br /&gt;
|-&lt;br /&gt;
|l&lt;br /&gt;
|Cursor ein Zeichen nach rechts&lt;br /&gt;
|-&lt;br /&gt;
|k&lt;br /&gt;
|Cursor eine Zeile nach oben&lt;br /&gt;
|-&lt;br /&gt;
|j&lt;br /&gt;
|Cursor eine Zeile nach unten&lt;br /&gt;
|-&lt;br /&gt;
|w&lt;br /&gt;
|Cursor ein Wort nach rechts&lt;br /&gt;
|-&lt;br /&gt;
|b&lt;br /&gt;
|Cursor ein Wort nach links&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Alle diese Kommandos können mit einem vorgestellten Wiederholungsfaktor&lt;br /&gt;
arbeiten. Der Befehl 3w verschiebt demnach den Cursor um 3 Wörter nach rechts.&lt;br /&gt;
&lt;br /&gt;
====Angaben zur Positionierung====&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{| border=1 cellpadding=2&lt;br /&gt;
|STRG+U&lt;br /&gt;
|1⁄2 Bildschirmseite nach oben&lt;br /&gt;
|-&lt;br /&gt;
|STRG+D&lt;br /&gt;
|1⁄2 Bildschirmseite nach unten&lt;br /&gt;
|-&lt;br /&gt;
|STRG+B&lt;br /&gt;
|1 Bildschirmseite nach oben&lt;br /&gt;
|-&lt;br /&gt;
|STRG+F&lt;br /&gt;
|1 Bildschirmseite nach unten&lt;br /&gt;
|-&lt;br /&gt;
|/Ausdruck&lt;br /&gt;
|Sucht den Ausdruck (vorwärts) Weitersuchen mit n , N&lt;br /&gt;
|-&lt;br /&gt;
|?Ausdruck&lt;br /&gt;
|Sucht den Ausdurck (rückwärts) Weitersuchen mit n , N&lt;br /&gt;
|-&lt;br /&gt;
|0&lt;br /&gt;
|Zeilenanfang&lt;br /&gt;
|-&lt;br /&gt;
|$&lt;br /&gt;
|Zeilenende&lt;br /&gt;
|-&lt;br /&gt;
|w&lt;br /&gt;
|Nächstes Wort&lt;br /&gt;
|-&lt;br /&gt;
|b&lt;br /&gt;
|Vorheriges Wort&lt;br /&gt;
|-&lt;br /&gt;
|fc&lt;br /&gt;
|Auf das Zeichen c springen. c steht für ein beliebiges Zeichen&lt;br /&gt;
|-&lt;br /&gt;
|G&lt;br /&gt;
|Letzte Zeile der Datei&lt;br /&gt;
|-&lt;br /&gt;
|ng&lt;br /&gt;
|n-te Zeile der Datei&lt;br /&gt;
|-&lt;br /&gt;
|H&lt;br /&gt;
|Anfang der Bildschirmseite&lt;br /&gt;
|-&lt;br /&gt;
|L&lt;br /&gt;
|Ende der Bildschirmseite&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
====Befehle zur Textbearbeitung -&amp;gt; Was soll geschehen====&lt;br /&gt;
&lt;br /&gt;
{| Border=1 Cellpadding=2&lt;br /&gt;
|x&lt;br /&gt;
|Löscht Zeichen&lt;br /&gt;
|-&lt;br /&gt;
|d&lt;br /&gt;
|Löschen und in den Puffer laden&lt;br /&gt;
|-&lt;br /&gt;
|c&lt;br /&gt;
|Ändern&lt;br /&gt;
|-&lt;br /&gt;
|y&lt;br /&gt;
|In den Puffer laden&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
====Weitere wichtige Befehle:====&lt;br /&gt;
&lt;br /&gt;
{| Border=1 Cellpadding=2&lt;br /&gt;
|p&lt;br /&gt;
|Aus dem Puffer einfügen&lt;br /&gt;
|-&lt;br /&gt;
|u&lt;br /&gt;
|Undo, macht den letzten Befehl rückgängig&lt;br /&gt;
|-&lt;br /&gt;
|STRG+R&lt;br /&gt;
|Redo, macht den letzten Undo rückgängig&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
===Zeilen- oder Exmodus===&lt;br /&gt;
&lt;br /&gt;
Wie schon erwähnt wird der Zeilen oder Exmodus durch einen : eingeleitet.&lt;br /&gt;
Es folgen einige Beispiele.&lt;br /&gt;
&lt;br /&gt;
Befehle zum Speichern und Beenden:&lt;br /&gt;
&lt;br /&gt;
 :w          Schreibt Datei&lt;br /&gt;
 :w Datei2   Schreibt eine Kopie in Datei2&lt;br /&gt;
 :w !        Schreibt Datei (übergehe Schreibschutz)&lt;br /&gt;
 :w ! Datei2 Schreibt eine Kopie in Datei2 (übergehe Schreibschutz)&lt;br /&gt;
 :q          Schließe Datei&lt;br /&gt;
 :q!         Schließe Datei (verwerfe Änderungen)&lt;br /&gt;
 :wq         Schreibe Datei und beende Editor&lt;br /&gt;
 :wq!        Schreibe Datei und beende Editor (übergehe Schreibschutz)&lt;br /&gt;
 :q!         Schließe Datei (verwerfe Änderungen)&lt;br /&gt;
 :h          Hilfe anzeigen, durch drücken von :q Beenden der Hilfe&lt;br /&gt;
 :e Datei3   Editiere Datei3&lt;br /&gt;
 :e #        Editere vorhergehende Datei&lt;br /&gt;
 :1,3co9     Kopiere von der ersten bis zu dritten Zeile &lt;br /&gt;
             und füge den Inhalt unterhalb der neunte Zeile ein.&lt;br /&gt;
&lt;br /&gt;
Interaktionen mit Unix:&lt;br /&gt;
&lt;br /&gt;
 :r Datei4   Fügt Inhalt der Datei4 nach dem Cursor ein&lt;br /&gt;
 :r ! Befehl Fügt Ausgabe des Befehls nach dem Cursor ein&lt;br /&gt;
 :! Befehl   Führt den Befehl aus&lt;br /&gt;
 :sh         Starte Subshell -&amp;gt; mit exit kehrt man wieder zurück&lt;br /&gt;
             Eingabemodus zurück&lt;br /&gt;
&lt;br /&gt;
====Ersetzen von Textteilen====&lt;br /&gt;
&lt;br /&gt;
Die grundsätzliche Syntax lautet:&lt;br /&gt;
&lt;br /&gt;
 :[Zeilennummer,Zeilennummer]s/Muster/Ersetzung/[gc]&lt;br /&gt;
&lt;br /&gt;
 :s/worf/kirn/              der erste worf wird in der aktuellen Zeile durch kirn ersetzt&lt;br /&gt;
 :1,9s/worf/kirn/g          von der 1. bis zur 9. Zeile werden alle worf durch kirn ersetzt&lt;br /&gt;
 :1,$s/worf/kirn/           von der ersten bis zur letzten Zeile ersetze ersten worf durch&lt;br /&gt;
                            kirn&lt;br /&gt;
 :.,$s/worf/kirn/g          von der aktuellen bis zur letzten Zeile ersetze alle worf durch&lt;br /&gt;
                            kirn&lt;br /&gt;
 :1,.s/worf/kirn/c          von der 1. bis zur aktuellen Zeile ersetze worf durch kirn, frage&lt;br /&gt;
                            aber nach&lt;br /&gt;
 :1,$s/^worf/kirn/          von der ersten bis zur letzten Zeile ersetze worf am&lt;br /&gt;
                            Zeilenanfang durch kirn&lt;br /&gt;
 :4,$s/worf$/kirn/          von der 4. bis zur letzten Zeile ersetze worf am Zeilenende&lt;br /&gt;
                            durch kirn&lt;br /&gt;
 :1,$s/^#//                 lösche alle Kommentarzeichen&lt;br /&gt;
 :1,$s/^.orf/kirn/           ersetze alles was am Zeilenanfang ein beliebiges Zeichen hat&lt;br /&gt;
                            gefolgt von einem orf durch kirn&lt;br /&gt;
 :1,$s/^[A-Z]orf/kirn/g     suche nach einem Großbuchstaben am Anfang der Zeile&lt;br /&gt;
                            gefolgt von einem orf und ersetze durch kirn&lt;br /&gt;
 :1,$s/^M[ae][iy]e*r/kirn/  suche alles, was am Anfang der Zeile ein großes M enthält,&lt;br /&gt;
                            gefolgt von einem a oder e , gefolgt von einem i oder y ,&lt;br /&gt;
                            gefolgt von einem e , welches 0 oder N mal vorkommen kann,&lt;br /&gt;
                            gefolgt von einem r und ersetze es durch kirn&lt;br /&gt;
&lt;br /&gt;
==Reguläre Ausdrücke==&lt;br /&gt;
&lt;br /&gt;
{| Border=1 Cellpadding=2&lt;br /&gt;
|c&lt;br /&gt;
|Ein einzelner Buchstabe passt auf sich selbst&lt;br /&gt;
|-&lt;br /&gt;
|.&lt;br /&gt;
|Ein Punkt passt auf jedes Zeichen außer auf das Zeilenende&lt;br /&gt;
|-&lt;br /&gt;
|*&lt;br /&gt;
|Das dem Operator * vorangehende Muster kann 0 oder öfter vorkommen&lt;br /&gt;
|-&lt;br /&gt;
|^&lt;br /&gt;
|(Caret) passt auf den Zeilenanfang&lt;br /&gt;
|-&lt;br /&gt;
|$&lt;br /&gt;
|Passt auf das Zeilenende&lt;br /&gt;
|-&lt;br /&gt;
|\&lt;br /&gt;
|Das folgende Sonderzeichen wird entwertet&lt;br /&gt;
|-&lt;br /&gt;
|[...]&lt;br /&gt;
|Passt auf &amp;quot;genau&amp;quot; eins in [...] angebenen Zeichen&lt;br /&gt;
|-&lt;br /&gt;
|[^...]&lt;br /&gt;
|Passt auf &amp;quot;genau&amp;quot; ein Zeichen welches nicht in [...] angebenen ist&lt;br /&gt;
|-&lt;br /&gt;
|\&amp;lt;&lt;br /&gt;
|Passt auf den Wortanfang&lt;br /&gt;
|-&lt;br /&gt;
|\&amp;gt;&lt;br /&gt;
|Passt auf das Wortende&lt;br /&gt;
|-&lt;br /&gt;
|\+&lt;br /&gt;
|Das dem Operator \+ vorangehende Muster kann 1 oder öfter vorkommen&lt;br /&gt;
|-&lt;br /&gt;
|&amp;amp;&lt;br /&gt;
|Setzt das gefunden Suchmuster ein&lt;br /&gt;
|-&lt;br /&gt;
|\(...\)&lt;br /&gt;
|Speichert den Text auf den das Suchmuster passt zur späteren Verwendung&lt;br /&gt;
|-&lt;br /&gt;
|\n&lt;br /&gt;
|Setzt das vorangehende, mit \(...\) Gefundene wieder ein&lt;br /&gt;
|-&lt;br /&gt;
|(...)&lt;br /&gt;
|Gruppiert Auswahlmöglichkeiten&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;nowiki&amp;gt;|&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
|Trennt Auswahlmöglichkeiten&lt;br /&gt;
|-&lt;br /&gt;
|\b&lt;br /&gt;
|Passt auf den Anfang oder das Ende eines Wortes&lt;br /&gt;
|-&lt;br /&gt;
|\B&lt;br /&gt;
|Symbolisiert den Raum innerhalb eines Wortes&lt;br /&gt;
|-&lt;br /&gt;
|\w&lt;br /&gt;
|Passt auf alle alphanumerischen Zeichen [A-Za-z0-9]&lt;br /&gt;
|-&lt;br /&gt;
|\W&lt;br /&gt;
|Passt auf alle nichtalphanumerischen Zeichen [^A-Za-z0-9]&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Die Rangfolge der Operatoren(von der höchsten zur niedrigsten)&lt;br /&gt;
:(, ), ?, *, + | .&lt;br /&gt;
&lt;br /&gt;
Die anderen Operatoren sind mit den anderen Buchstaben gleichrangig.&lt;br /&gt;
&lt;br /&gt;
===Beispiel zum Suchen===&lt;br /&gt;
&lt;br /&gt;
 Suchmuster               Passt auf&lt;br /&gt;
 ^Tuxer                   Tuxer am Zeilenanfang&lt;br /&gt;
 [tT]uxer                 Tuxer oder tuxer&lt;br /&gt;
 80[23]?86                8086, 80286 oder 80386&lt;br /&gt;
&lt;br /&gt;
===grep===&lt;br /&gt;
&lt;br /&gt;
Mit grep ist es möglich, in Dateien nach regulären Ausdrücken zu suchen. Wenn&lt;br /&gt;
eine Übereinstimmung gefunden wird, wird die komplette Zeile auf die&lt;br /&gt;
Standardausgabe geschrieben. grep kann auch von STDIN lesen.Es ist&lt;br /&gt;
empfehlenswert, sich anzugwöhnen ,das Suchmuster in Anführungszeichen zu&lt;br /&gt;
schreiben. Es gibt 3 Arten fgrep = fastgrep , grep und egrep egrep&lt;br /&gt;
&lt;br /&gt;
Beispiel:&lt;br /&gt;
&lt;br /&gt;
 root@zero:~# cat text&lt;br /&gt;
 quatsch&lt;br /&gt;
 quatsch&lt;br /&gt;
 quatsch&lt;br /&gt;
 wichtig&lt;br /&gt;
 quatsch&lt;br /&gt;
 root@zero:~# grep wichtig text&lt;br /&gt;
 wichtig&lt;br /&gt;
 root@zero:~# &lt;br /&gt;
&lt;br /&gt;
 -c                   meldet nur die Gesamtzahl der Fundstellen&lt;br /&gt;
 -v                   zeigt nur Zeilen, die »Ausdruck« nicht enthalten&lt;br /&gt;
 -i                   ignoriert Groß- und Kleinschreibung&lt;br /&gt;
 -l                    meldet nur Dateinamen mit Fundstellen&lt;br /&gt;
 -n                   listet Zeilennummern zu jeder Fundstelle&lt;br /&gt;
 -f                   Dateiname »Dateiname« enthält die Such-Ausdrücke&lt;br /&gt;
 -E                   ist ein erweiterter regulärer Ausdruck (egrep)&lt;br /&gt;
 -F                   (Muster, Ausdruck) ist ein Muster (String) (fgrep)&lt;br /&gt;
 -b                   listet auch die Position der Fundstellen&lt;br /&gt;
 -C    Anzahl         Anzahl von Zeilen werden nach der Fundstelle ausgegeben&lt;br /&gt;
 -B    Anzahl         Anzahl von Zeilen werden vor der Fundstelle ausgegeben&lt;br /&gt;
 -r                   Durchsucht Verzeichnisse rekursiv&lt;br /&gt;
&lt;br /&gt;
==Useridendifikation==&lt;br /&gt;
===/etc/passwd===&lt;br /&gt;
====Beschreibung====&lt;br /&gt;
passwd ist eine ASCII-Datei, die eine Liste der Benutzer des Systems und deren&lt;br /&gt;
Passwörter enthält. Die Passwortdatei sollte für alle Benutzer lesbar sein, was für&lt;br /&gt;
dieVerschlüsselung notwendig ist; aber nur vom Superuser beschreibbar. Wenn&lt;br /&gt;
Sie eine neue Kennung einrichten, lassen Sie das Passwort-Feld in der Datei frei&lt;br /&gt;
und benutzen Sie passwd(1), um dem System ein Passwort für die neue Kennung&lt;br /&gt;
mitzuteilen.&lt;br /&gt;
&lt;br /&gt;
Die Datei /etc/passwd enthält einen Eintrag pro Zeile mit dem Format:&lt;br /&gt;
login_name:passwd:UID:GID:user_name:directory:shell&lt;br /&gt;
====Die Bedeutung der Felder:====&lt;br /&gt;
# login_name Kennung des Benutzers auf dem System.&lt;br /&gt;
# password   Das verschlüsselte Passwort des Benutzers.&lt;br /&gt;
# UID        Die numerische Benutzernummer.&lt;br /&gt;
#  GID        Die numerische Gruppennummer des Benutzers.&lt;br /&gt;
# user_name Ein optionales Kommentarfeld, oft benutzt für den vollen Namen des Benutzers und weitere Informationen (Telefon, Raum-Nummer etc.).&lt;br /&gt;
# directory  Das Heimatverzeichnis $HOME des Benutzers.&lt;br /&gt;
# shell      Das Programm, das beim Einloggen gestartet werden soll (falls nicht nötig, benutzen Sie /bin/bash).&lt;br /&gt;
====Useradd====&lt;br /&gt;
Mit dem Programm useradd werden User angelegt&lt;br /&gt;
*-&lt;br /&gt;
*&lt;br /&gt;
*&lt;br /&gt;
*&lt;br /&gt;
*&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===/etc/group===&lt;br /&gt;
====Beschreibung====&lt;br /&gt;
etc/group ist eine ASCII Datei, die Gruppen definiert, zu denen Benutzer&lt;br /&gt;
gehören. Es gibt nur einen Eintrag pro Zeile; jede Zeile hat folgendes Format:&lt;br /&gt;
         GruppenName:Passwort:GruppenKennung:BenutzerListe&lt;br /&gt;
Beschreibung der Felder:&lt;br /&gt;
#     GruppenName      Die Bezeichnung der Gruppe.&lt;br /&gt;
#     Passwort         Das (verschlüsselte) Gruppen-Passwort. Wenn dieses Feld leer ist, wird kein Passwort benötigt.&lt;br /&gt;
#     GruppenKennung Die numerische Identifikation der Gruppe.&lt;br /&gt;
#     BenutzerListe    Alle Namen der Mitglieder, getrennt durch Kommas.&lt;br /&gt;
&lt;br /&gt;
===/etc/shadow===&lt;br /&gt;
====Beschreibung====&lt;br /&gt;
shadow beinhaltet Informationen zu den verschlüsselten Passwörten, zu den&lt;br /&gt;
Benutzerzugängen und weitere Informationen zur Laufzeit der Passwörter.&lt;br /&gt;
 Name:Passwort:Letzte Änderung:Mintage:Maxtage:Warntage:Inaktiv:Ablauf&lt;br /&gt;
#    Der Loginname&lt;br /&gt;
#    verschlüsseltes Passwort &lt;br /&gt;
&amp;lt;nowiki&amp;gt;*&amp;lt;/nowiki&amp;gt; bedeutet Benutzer kann sich nicht einlogen&lt;br /&gt;
! bedeutet Benutzer hat kein Passwort gesetzt&lt;br /&gt;
#    Tage seit dem 1 Januar 1970 an dem das Passwort letztmals geändert wurde&lt;br /&gt;
#    Tage, die das Passwort behalten werden muss, bevor es wieder geändert werden kann&lt;br /&gt;
#     Die Anzahl der Tage, nach denen der Benutzer das Passwort wieder ändern muss&lt;br /&gt;
#    Anzahl der Tage bevor das Passwort abläuft und der Benutzer gewarnt wird&lt;br /&gt;
#    Wenn der Zugang diese Anzahl von Tagen nicht benutzt wird, wird der Zugang gesperrt&lt;br /&gt;
#    Tag seit dem 1 Januar 1970, an dem der Zugang gesperrt wird&lt;br /&gt;
#    Reserviertes Feld&lt;br /&gt;
&lt;br /&gt;
Die Datei sollte aus Sicherheitgründen nicht für einen normalen Benutzer lesbar&lt;br /&gt;
sein.&lt;br /&gt;
&lt;br /&gt;
==chmod==&lt;br /&gt;
Die Syntax des Befehls chmod lautet:&lt;br /&gt;
&lt;br /&gt;
'''chmod''' WerWieWas [,WerWieWas,.....] Dateiliste&lt;br /&gt;
&lt;br /&gt;
oder&lt;br /&gt;
&lt;br /&gt;
'''chmod''' Oktalzahl Dateiliste&lt;br /&gt;
&lt;br /&gt;
Durch WerWieWas bzw. Oktalzahl wird die Rechtetabelle definiert. Innerhalb von&lt;br /&gt;
WerWieWas darf es kein Leerzeichen geben. Wer bezeichnet den Benutzerkreis,&lt;br /&gt;
dem man Rechte gibt, Wie die Art, in der die Rechte gegeben werden und Was die&lt;br /&gt;
Rechte als solche. Im einzelnen können folgende Kürzel benutzt werden:&lt;br /&gt;
&lt;br /&gt;
Für Wer kann eines der folgenden Kürzel oder eine Kombination davon stehen:&lt;br /&gt;
 u                   (user) Rechte für den Dateibesitzer&lt;br /&gt;
 g                   (group) Rechte für die Gruppe&lt;br /&gt;
 o                   (others) Rechte für alle anderen Benutzer&lt;br /&gt;
 a                   (all) Rechte für alle Benutzer&lt;br /&gt;
Für Wie steht eines der folgenden Kürzel:&lt;br /&gt;
 +                   Die Rechte werden zu den vorhandenen zusätzlich vergeben&lt;br /&gt;
 -                   Die im Folgenden genannten Rechte werden entzogen&lt;br /&gt;
 =                   Die im Folgenden genannten Rechte ersetzen die bisherigen&lt;br /&gt;
Für Was steht eines der folgenden Kürzel:&lt;br /&gt;
 r                   (read) lesen&lt;br /&gt;
 w                   (write) schreiben&lt;br /&gt;
 x                   (execute) ausführen&lt;br /&gt;
oder diese Sonderformen&lt;br /&gt;
 s                   (usersbit) Programm läuft unter der UID des Besitzers&lt;br /&gt;
 s                   (groupsbit)Programm läuft unter der GID des GRUPPE&lt;br /&gt;
 t                   (stickybit) Dateien im Verzeichnis darf nur Besitzer löschen&lt;br /&gt;
&lt;br /&gt;
===Beispiel===&lt;br /&gt;
Setze für alle Schreib- und Leserecht&lt;br /&gt;
 xinux@zero:~$ chmod a=rw test &lt;br /&gt;
 xinux@zero:~$ ls -l test &lt;br /&gt;
 -rw-rw-rw- 1 xinux xinux 0 2009-06-16 12:01 test&lt;br /&gt;
 xinux@zero:~$ &lt;br /&gt;
&lt;br /&gt;
Erteile Besitzer Ausführungsrecht&lt;br /&gt;
 xinux@zero:~$ chmod u+x test ; ls -l test &lt;br /&gt;
 -rwxrw-rw- 1 xinux xinux 0 2009-06-16 12:01 test&lt;br /&gt;
 xinux@zero:~$ &lt;br /&gt;
&lt;br /&gt;
===chmod oktale Schreibweise===&lt;br /&gt;
 Specialrights        User           Group         Other&lt;br /&gt;
 usbit gsbit sticky    r    w   x     r   w   x     r   w   x&lt;br /&gt;
   1     1      1      1    1   1     1   1   1     1   1   1&lt;br /&gt;
   0     0      0      0    0   0     0   0   0     0   0   0&lt;br /&gt;
 Oktale Wertigkeit pro Recht&lt;br /&gt;
   4     2       1     4    2   1     4   2   1     4   2   1&lt;br /&gt;
&lt;br /&gt;
===Beispiele===&lt;br /&gt;
 xinux@zero:~$ chmod 751 test ; ls -l test&lt;br /&gt;
 -rwxr-x--x 1 xinux xinux 0 2009-06-16 12:01 test&lt;br /&gt;
 xinux@zero:~$ &lt;br /&gt;
&lt;br /&gt;
 xinux@zero:~$ chmod 4770 test ; ls -l test&lt;br /&gt;
 -rwsrwx--- 1 xinux xinux 0 2009-06-16 12:01 test&lt;br /&gt;
 xinux@zero:~$ &lt;br /&gt;
&lt;br /&gt;
 xinux@zero:~$ chmod 0 test ; ls -l test &lt;br /&gt;
 ---------- 1 xinux xinux 0 2009-06-16 12:01 test&lt;br /&gt;
&lt;br /&gt;
===chmod Optionen===&lt;br /&gt;
 -c   (changes) es werden nur die Dateien angezeigt, deren Zugriffsrechte tatsächlich verändert werden&lt;br /&gt;
 -f   (silent, quiet) Fehlermeldungen wegen fehlgeschlagener Änderungsversuche werden unterdrückt&lt;br /&gt;
 -v   (verbose) alle Aktionen werden angezeigt&lt;br /&gt;
 -R   (recursive) die Zugriffsrechte aller Dateien in den Unterverzeichnissen werden ebenfalls geändert&lt;br /&gt;
&lt;br /&gt;
Theoretisch sind alle Kombinationen der Zugriffsrechte denkbar, aber der&lt;br /&gt;
Eigentümer einer Datei darf diese immer lesen, selbst wenn das Lesebit nicht&lt;br /&gt;
gesetzt ist. Genauso macht es wenig Sinn, eine gewöhnliche Textdatei als&lt;br /&gt;
ausführbar zu setzen; die Shell wird damit nichts anfangen können. Ein x für ein&lt;br /&gt;
Verzeichnis gibt an, dass in dieses gewechselt werden kann.&lt;br /&gt;
&lt;br /&gt;
Rechte sind verbindlich&lt;br /&gt;
&lt;br /&gt;
Interessant ist auch ein Konstrukt folgender Art&lt;br /&gt;
 -rwx---rwx&lt;br /&gt;
&lt;br /&gt;
das angibt, dass mit der Datei alles angestellt werden kann, außer durch Nutzer der&lt;br /&gt;
Gruppe. Versucht irgend jemand, der nicht der Gruppe des Eigentümers angehört,&lt;br /&gt;
die Datei zu modifizieren, wird ihm dies gelingen, einem Gruppenmitglied bleibt&lt;br /&gt;
dies versagt, obwohl er ja gleichzeitig ein &amp;quot;Anderer&amp;quot; ist. D.h. die Rechte der&lt;br /&gt;
Gruppe sind verbindlicher, als die Rechte der anderen!&lt;br /&gt;
&lt;br /&gt;
===Bedeutungen der Zugriffsarten===&lt;br /&gt;
====Dateien====&lt;br /&gt;
* r: Der Inhalt der Datei kann gelesen und damit auch kopiert werden. &lt;br /&gt;
 root@zero:~# cat test&lt;br /&gt;
 Dies ist eine Testdatei&lt;br /&gt;
  &lt;br /&gt;
 root@zero:~# cp test backup&lt;br /&gt;
&lt;br /&gt;
* w: Der Inhalt der Datei darf verändert werden. Ob die Datei gelöscht werden kann ist&lt;br /&gt;
keine Eigenschaft der Datei, sondern des Verzeichnisses, indem sich die Datei befindet.&lt;br /&gt;
 root@zero:~# cat &amp;gt; test&lt;br /&gt;
 Hier steht jetzt was anderes&lt;br /&gt;
 ^C&lt;br /&gt;
 root@zero:~# cat test&lt;br /&gt;
 Hier steht jetzt was anderes&lt;br /&gt;
  &lt;br /&gt;
 xinux@zero:~$ ls -ld verzeichnis/&lt;br /&gt;
 dr-xr-xr-x 2 xinux xinux 4096 2009-06-18 11:16 verzeichnis/&lt;br /&gt;
 xinux@zero:~/verzeichnis$ rm text&lt;br /&gt;
 rm: Entfernen von „text“ nicht möglich: Permission denied&lt;br /&gt;
&lt;br /&gt;
* x: Ausführrecht für Programme und Skripte&lt;br /&gt;
 xinux@zero:~$ ./programm&lt;br /&gt;
 -bash: ./programm: Permission denied&lt;br /&gt;
 xinux@zero:~$ chmod +x programm&lt;br /&gt;
 xinux@zero:~$ ./programm&lt;br /&gt;
 Test&lt;br /&gt;
  test&lt;br /&gt;
&lt;br /&gt;
====Verzeichnisse====&lt;br /&gt;
* r: Die Einträge in dem Verzeichnis sind lesbar.&lt;br /&gt;
Leserecht von verzeichnis/ entziehen&lt;br /&gt;
 xinux@zero:~$ chmod a-r verzeichnis/&lt;br /&gt;
 xinux@zero:~$ ls verzeichnis/&lt;br /&gt;
 ls: Öffnen von Verzeichnis verzeichnis/ nicht möglich: Permission denied&lt;br /&gt;
Leserecht für Benutzer und Gruppe vergeben&lt;br /&gt;
 xinux@zero:~$ chmod a+r verzeichnis/&lt;br /&gt;
 xinux@zero:~$ ls verzeichnis/&lt;br /&gt;
 text&lt;br /&gt;
&lt;br /&gt;
* w: Die Einträge in dem Verzeichnis können geändert werden. &lt;br /&gt;
Neue Datei erstellen&lt;br /&gt;
 xinux@zero:~$ touch neu&lt;br /&gt;
 xinux@zero:~$ ls neu&lt;br /&gt;
 neu&lt;br /&gt;
&lt;br /&gt;
Datei löschen&lt;br /&gt;
 xinux@zero:~$ rm neu&lt;br /&gt;
 xinux@zero:~$ ls neu&lt;br /&gt;
 ls: Zugriff auf neu nicht möglich: No such file or directory&lt;br /&gt;
&lt;br /&gt;
* x: Der Name des Verzeichnisses kann in einem Pfadnamen erscheinen.&lt;br /&gt;
Verzeichnis ohne x Recht&lt;br /&gt;
 xinux@zero:~$ chmod a-x verzeichnis/&lt;br /&gt;
Wechseln in Verzeichnis mangels x-Recht nicht möglich&lt;br /&gt;
 xinux@zero:~$ cd verzeichnis/&lt;br /&gt;
 -bash: cd: verzeichnis/: Permission denied&lt;br /&gt;
x-Recht vergeben&lt;br /&gt;
 xinux@zero:~$ chmod a+x verzeichnis/&lt;br /&gt;
damit Wechsel in Verzeichnis möglich&lt;br /&gt;
 xinux@zero:~$ cd verzeichnis/&lt;br /&gt;
 xinux@zero:~/verzeichnis$ pwd&lt;br /&gt;
 /home/xinux/verzeichnis&lt;br /&gt;
&lt;br /&gt;
====umask====&lt;br /&gt;
Neue Dateien und Verzeichnisse werden mit ein und denselben Zufriffsrechten erzeugt.&lt;br /&gt;
 xinux@zero:~$ mkdir text&lt;br /&gt;
 xinux@zero:~$ touch textdat&lt;br /&gt;
 xinux@zero:~$ ls -ld text*&lt;br /&gt;
 drwxr-xr-x 2 xinux xinux 4096 2009-06-18 11:37 text&lt;br /&gt;
 -rw-r--r-- 1 xinux xinux    0 2009-06-18 11:37 textdat&lt;br /&gt;
&lt;br /&gt;
Zuständig für dieses Verhalten ist die sogenannte umask, die oft in der Datei&lt;br /&gt;
/etc/profile auf den Wert 022 voreingestellt ist. Zusätzlich wird noch eine&lt;br /&gt;
Maximalmaske benötigt, die sich für Verzeichnisse und andere Dateien&lt;br /&gt;
unterscheidet. Die bei der Erzeugung gesetzten Rechte entstehen nun, indem von&lt;br /&gt;
der Maximalmaske der durch die umask vorgegebene Wert subtrahiert wird:&lt;br /&gt;
&lt;br /&gt;
{| border=1 cellpadding=2&lt;br /&gt;
!&lt;br /&gt;
! Dateien&lt;br /&gt;
! Verzeichnisse&lt;br /&gt;
|-&lt;br /&gt;
| Systemvorgabe&lt;br /&gt;
| 666&lt;br /&gt;
| 777&lt;br /&gt;
|-&lt;br /&gt;
| -umask&lt;br /&gt;
| 022&lt;br /&gt;
| 022&lt;br /&gt;
|-&lt;br /&gt;
| Ergebnis&lt;br /&gt;
| 644&lt;br /&gt;
| 755&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
 xinux@zero:~$ grep umask /etc/profile&lt;br /&gt;
 umask 022&lt;br /&gt;
&lt;br /&gt;
==Gruppenzugehörigkeit==&lt;br /&gt;
===newgrp===&lt;br /&gt;
Ändert die Gruppenzugehörigkeit eines Benutzers auf die angegebene Gruppe. Wenn keine Gruppe angegeben wird, wird die &lt;br /&gt;
Anmeldegruppe des Benutzers verwendet. Die neue Gruppe wird anschließend fü Zugriffskontrollen verwendet.&lt;br /&gt;
&lt;br /&gt;
 newgrp Gruppenname&lt;br /&gt;
&lt;br /&gt;
 root@zero:~# newgrp hacker&lt;br /&gt;
 root@zero:~# id&lt;br /&gt;
 uid=0(root) gid=1006(hacker) Gruppen=0(root),1006(hacker)&lt;br /&gt;
&lt;br /&gt;
===chgrp===&lt;br /&gt;
Verändert die Besitzugehörigkeit zu der angegebenen Gruppe&lt;br /&gt;
&lt;br /&gt;
 chgrp [Optionen] Gruppe Datei(en)&lt;br /&gt;
&lt;br /&gt;
Optionen:&lt;br /&gt;
 -c Zeigt Veränderungen an&lt;br /&gt;
 -f Unterdrückt die meisten Fehlermeldungen&lt;br /&gt;
 -R Verändert Dateien und Verzeichnisse rekursiv&lt;br /&gt;
 -v Gibt geschwätzige Ausgabe aus.&lt;br /&gt;
&lt;br /&gt;
 root@zero:~# ls -l&lt;br /&gt;
 ...&lt;br /&gt;
 d-wx--x--x  3 root root 4096 2009-06-18 13:34 verzeichnis&lt;br /&gt;
 &lt;br /&gt;
 root@zero:~# chgrp -R xinux verzeichnis/&lt;br /&gt;
 root@zero:~# ls -l&lt;br /&gt;
 ...&lt;br /&gt;
 d-wx--x--x  3 root xinux 4096 2009-06-18 13:34 verzeichnis&lt;br /&gt;
&lt;br /&gt;
 xinux@zero:~$ cd /root/verzeichnis/&lt;br /&gt;
 xinux@zero:/root/verzeichnis$ pwd&lt;br /&gt;
 /root/verzeichnis&lt;br /&gt;
&lt;br /&gt;
===chown===&lt;br /&gt;
Ändert den Eigentümer von einer oder mehreren Dateien in den angegebenen Benutzer. &lt;br /&gt;
chown erlaubt ebenfalls das Ändern der Gruppeneigentümreschaft. Nur der aktuelle Eigentümer einer&lt;br /&gt;
Datei oder der Superuser (root) darf die Eigentumsverhältnisse ändern.&lt;br /&gt;
&lt;br /&gt;
 chown [Optionen] Benutzer(:Gruppe) Dateien&lt;br /&gt;
&lt;br /&gt;
Optionen:&lt;br /&gt;
 -c Gibt Informationen über die veränderten Dateien aus&lt;br /&gt;
 --dereference Symbolischen Links folgen&lt;br /&gt;
 -v Gibt Informationen über alle Dateien aus, die chown zu ändern versucht, egal, ob die Änderung erfolgt ist oder nicht&lt;br /&gt;
 -R Geht rekursiv durch alle Unterverzeichnisse und führt die Änderungen durch. &lt;br /&gt;
&lt;br /&gt;
 root@zero:~# chown -R xinux.xinux verzeichnis/&lt;br /&gt;
 root@zero:~# ls -l&lt;br /&gt;
 insgesamt 12&lt;br /&gt;
 drwx------ 13 root  root  4096 2009-04-21 15:11 profile&lt;br /&gt;
 --w-------  1 root  root     0 2009-06-18 11:13 test&lt;br /&gt;
 -rw-r--r--  1 root  root    40 2009-06-18 12:04 text&lt;br /&gt;
 drwxrwx--x  3 xinux xinux 4096 2009-06-18 13:39 verzeichnis&lt;br /&gt;
 &lt;br /&gt;
 root@zero:~# chown -R -c xinux.xinux verzeichnis/&lt;br /&gt;
 &lt;br /&gt;
 root@zero:~# chown -R -v xinux.xinux verzeichnis/&lt;br /&gt;
 Eigentümer von „verzeichnis/01“ als xinux:xinux erhalten&lt;br /&gt;
 Eigentümer von „verzeichnis/test“ als xinux:xinux erhalten&lt;br /&gt;
 Eigentümer von „verzeichnis/“ als xinux:xinux erhalten&lt;br /&gt;
&lt;br /&gt;
==Eingabe/Ausgabe==&lt;br /&gt;
Standardeingabe (0): Laufende Programme erwarten von hier ihre Eingaben (normalerweise handelt es sich um die Tastatur).&lt;br /&gt;
&lt;br /&gt;
Standardausgabe (1): Programme schreiben auf diese ihre Ausgaben (Bildschirm).&lt;br /&gt;
&lt;br /&gt;
Standardfehlerausgabe (2) : Fehlerausgaben landen hier (Bildschirm, aber nur die aktive Konsole).&lt;br /&gt;
&lt;br /&gt;
===cat===&lt;br /&gt;
Das Programm cat liest von STDIN und gibt es STDOUT wieder aus&lt;br /&gt;
&lt;br /&gt;
Einlesen der Datei text&lt;br /&gt;
 root@zero:~# cat &amp;lt; text&lt;br /&gt;
 wichtig&lt;br /&gt;
&lt;br /&gt;
Schreiben in die Datei text, dies überschreibt den bisherigen Inhalt der Datei&lt;br /&gt;
 root@zero:~# cat &amp;gt; text&lt;br /&gt;
 sogar noch wichtiger &lt;br /&gt;
 &lt;br /&gt;
Ausgeben der Datei text&lt;br /&gt;
 root@zero:~# cat text &lt;br /&gt;
 sogar noch wichtiger&lt;br /&gt;
&lt;br /&gt;
Lesen aus der Datei text und schreiben in die Datei neuertext&lt;br /&gt;
 root@zero:~# cat &amp;lt; text &amp;gt; neuertext&lt;br /&gt;
 root@zero:~# cat neuertext&lt;br /&gt;
 sogar noch wichtiger&lt;br /&gt;
&lt;br /&gt;
Anhängen der Ausgabe von date an die Datei neuertext&lt;br /&gt;
 root@zero:~# date &amp;gt;&amp;gt; neuertext&lt;br /&gt;
 root@zero:~# cat neuertext&lt;br /&gt;
 sogar noch wichtiger&lt;br /&gt;
 Do 18. Jun 14:08:58 CEST 2009&lt;br /&gt;
&lt;br /&gt;
Umleiten des Standardfehlerkanals nach error&lt;br /&gt;
 root@zero:~# rm sux 2&amp;gt; error&lt;br /&gt;
 root@zero:~# more error&lt;br /&gt;
 rm: Entfernen von „sux“ nicht möglich: No such file or directory&lt;br /&gt;
&lt;br /&gt;
===Umleitungen===&lt;br /&gt;
Nacheinander auszuführende Kommandos&lt;br /&gt;
 root@zero:~# pwd; date&lt;br /&gt;
 /root&lt;br /&gt;
 Do 18. Jun 14:13:05 CEST 2009&lt;br /&gt;
 &lt;br /&gt;
Übergeben der Ausgabe von tail als Eingabe von grep mit Hilfe der Pipe &amp;quot;|&amp;quot;&lt;br /&gt;
 root@zero:~# tail /var/log/auth.log | grep xinux&lt;br /&gt;
 Jun 18 13:52:33 zero nss_wins[11433]: pam_unix(login:session): session closed for user xinux&lt;br /&gt;
&lt;br /&gt;
Übergeben der letzten 100 Zeilen von syslog als Eingabe von grep&lt;br /&gt;
 root@zero:~# tail /var/log/syslog -n 100 | grep error&lt;br /&gt;
 Jun 18 09:30:54 zero kernel: [154384.692135] end_request: I/O error, dev fd0, sector 0&lt;br /&gt;
 Jun 18 09:30:54 zero kernel: [154384.712137] end_request: I/O error, dev fd0, sector 0&lt;br /&gt;
&lt;br /&gt;
==tr==&lt;br /&gt;
tr ist ein Programm um Zeichen zu übersetzen. Dies betrifft nur die Ausgabe, die Datei selbst bleibt unverändert.&lt;br /&gt;
&lt;br /&gt;
Ersetzt Kleinbuchstaben durch Großbuchstaben aus der Datei text&lt;br /&gt;
 root@zero:~# tr &amp;quot;a-z&amp;quot; &amp;quot;A-Z&amp;quot; &amp;lt; text&lt;br /&gt;
 SOGAR NOCH WICHTIGER&lt;br /&gt;
 123&lt;br /&gt;
 34&lt;br /&gt;
 4711&lt;br /&gt;
 TEST&lt;br /&gt;
&lt;br /&gt;
Ersetzt alle Zahlen durch X&lt;br /&gt;
 root@zero:~# tr &amp;quot;0-9&amp;quot; &amp;quot;X&amp;quot; &amp;lt; text&lt;br /&gt;
 sogar noch wichtiger&lt;br /&gt;
 XXX&lt;br /&gt;
 XX&lt;br /&gt;
 XXXX&lt;br /&gt;
 test&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
 root@zero:~# cat test&lt;br /&gt;
 +++++&lt;br /&gt;
 ###&lt;br /&gt;
 1111&lt;br /&gt;
&lt;br /&gt;
-s löscht mehrfach kommende Zeichen&lt;br /&gt;
 root@zero:~# tr '''-s''' &amp;quot;+&amp;quot; &amp;lt; test&lt;br /&gt;
 +&lt;br /&gt;
 ###&lt;br /&gt;
 1111&lt;br /&gt;
&lt;br /&gt;
-d löscht vorkommende Zeichen &lt;br /&gt;
 root@zero:~# tr '''-d''' &amp;quot;#&amp;quot; &amp;lt; test&lt;br /&gt;
 +++++ &lt;br /&gt;
 &lt;br /&gt;
 1111&lt;br /&gt;
&lt;br /&gt;
==cut==&lt;br /&gt;
Spalten aus einer Datei schneiden. Dies betrifft nur die Ausgabe, die Datei selbst bleibt unverändert.&lt;br /&gt;
 &lt;br /&gt;
Schneidet die erste Spalte aus, der Delimiter ist : &lt;br /&gt;
 root@zero:~# cut -f 1 -d : /etc/passwd&lt;br /&gt;
 root&lt;br /&gt;
 daemon&lt;br /&gt;
 bin&lt;br /&gt;
 ...&lt;br /&gt;
 xinux&lt;br /&gt;
&lt;br /&gt;
 root@zero:~# more test&lt;br /&gt;
 1234#5678#9999&lt;br /&gt;
 &lt;br /&gt;
Schneidet die zweite Spalte aus, der Delimiter ist #&lt;br /&gt;
 root@zero:~# cut -f 2 -d &amp;quot;#&amp;quot; &amp;lt; test&lt;br /&gt;
 5678&lt;br /&gt;
&lt;br /&gt;
==expand==&lt;br /&gt;
Ersetzt Tabulatorzeichen durch Folgen von Leerzeichen und schreibt das Ergebnis auf die Standardausgabe&lt;br /&gt;
 root@zero:~# expand /etc/samba/smb.conf&lt;br /&gt;
 ...&lt;br /&gt;
&lt;br /&gt;
==fmt==&lt;br /&gt;
Setzt den Text der Dateien im Blocksatz der angegebenen Breite durch Auffüllen von Zeilen und Entfernen von Zeilenwechseln.&lt;br /&gt;
Standardgemäß werden Leerzeilen, die Position von Leerzeichen und der Einzug am Zeilenanfang erhalten. fmt versucht, &lt;br /&gt;
Zeilenumbrüche an Satzenden durchzuführen sowie sie nach dem ersten oder vor dem letzten Wort eines Satzes zu vermeiden. &lt;br /&gt;
 &lt;br /&gt;
 fmt [Optionen] [Dateien]&lt;br /&gt;
&lt;br /&gt;
Optionen&lt;br /&gt;
&lt;br /&gt;
* -p ''Präfix'': Formatiert nur Zeilen, die mit ''Präfix'' anfangen&lt;br /&gt;
 root@zero:/tmp# fmt -p '#' text&lt;br /&gt;
 #Setzt den Text der Dateien im Blocksatz der angegebenen Breite durch&lt;br /&gt;
 #Auffüllen von Zeilen und Entfernen von Zeilenwechseln.  Standardgemäß&lt;br /&gt;
 #werden Leerzeilen, die Position von Leerzeichen und der Einzug am&lt;br /&gt;
 #Zeilenanfang erhalten. fmt versucht,&lt;br /&gt;
 Zeilenumbrüche an Satzenden durchzuführen sowie sie nach dem ersten oder vor dem letzten Wort eines Satzes zu vermeiden.&lt;br /&gt;
&lt;br /&gt;
* -u : Erzwingt genau ein Leerzeichen zwischen Wörtern und zwei Leerzeichen zwischen Sätzen&lt;br /&gt;
&lt;br /&gt;
* -w ''Breite'': Setzt die Ausgabebreite auf ''Breite''&lt;br /&gt;
 root@zero:/tmp# fmt -w 30 text&lt;br /&gt;
 #Setzt den Text der Dateien&lt;br /&gt;
 im Blocksatz der angegebenen&lt;br /&gt;
 Breite durch Auffüllen&lt;br /&gt;
 von Zeilen und Entfernen&lt;br /&gt;
 von Zeilenwechseln.&lt;br /&gt;
 #Standardgemäß werden&lt;br /&gt;
 Leerzeilen, die Position von&lt;br /&gt;
 Leerzeichen und der Einzug am&lt;br /&gt;
 Zeilenanfang erhalten. fmt&lt;br /&gt;
 versucht, Zeilenumbrüche&lt;br /&gt;
 an Satzenden durchzuführen&lt;br /&gt;
 sowie sie nach dem ersten&lt;br /&gt;
 oder vor dem letzten Wort&lt;br /&gt;
 eines Satzes zu vermeiden.&lt;br /&gt;
&lt;br /&gt;
==join==&lt;br /&gt;
Führt die Zeilen zweier sortierter Dateien anhand von '''Übereinstimmungen''' in einem gemeinsamen Feld zusammen.&lt;br /&gt;
&lt;br /&gt;
 root@zero:~# more name&lt;br /&gt;
 1. karl&lt;br /&gt;
 2. heinz&lt;br /&gt;
 3. hans&lt;br /&gt;
 4. otto&lt;br /&gt;
 root@zero:~# more tel&lt;br /&gt;
 1. 1234&lt;br /&gt;
 2. 4321&lt;br /&gt;
 3. 222&lt;br /&gt;
 4. 121212&lt;br /&gt;
 root@zero:~# join name tel &amp;gt; telefonbuch&lt;br /&gt;
 root@zero:~# more telefonbuch&lt;br /&gt;
 1. karl 1234&lt;br /&gt;
 2. heinz 4321&lt;br /&gt;
 3. hans 222&lt;br /&gt;
 4. otto 121212&lt;br /&gt;
&lt;br /&gt;
==nl==&lt;br /&gt;
Nummeriert die Zeilen in einer Datei.&lt;br /&gt;
&lt;br /&gt;
 root@zero:~# nl /etc/passwd                                                   &lt;br /&gt;
     1  root:x:0:0:root:/root:/bin/bash                                       &lt;br /&gt;
     2  daemon:x:1:1:daemon:/usr/sbin:/bin/sh                                 &lt;br /&gt;
     3  bin:x:2:2:bin:/bin:/bin/sh                                            &lt;br /&gt;
     4  sys:x:3:3:sys:/dev:/bin/sh                                            &lt;br /&gt;
     5  sync:x:4:65534:sync:/bin:/bin/sync&lt;br /&gt;
     ...&lt;br /&gt;
&lt;br /&gt;
==od==&lt;br /&gt;
Gibt Dateien im Oktal und anderen Formaten aus.&lt;br /&gt;
&lt;br /&gt;
 od [Optionen] Datei&lt;br /&gt;
&lt;br /&gt;
* -j ''Bytes'': Überspringt die Anzahl ''Bytes'' einer Datei&lt;br /&gt;
* -N ''Bytes'': Gibt nur die Anzahl ''Bytes'' aus&lt;br /&gt;
* -c : Gebe ASCII Zeichen aus&lt;br /&gt;
* -f : Gebe Fließkommazahlen aus&lt;br /&gt;
* -i : Gebe Dezimal Integer aus&lt;br /&gt;
* -l : Gebe Dezimal Long aus&lt;br /&gt;
* -o : Gebe Oktal 2 Byte Einheiten aus&lt;br /&gt;
* -s : Gebe Dezimal 2 Byte Einheiten aus&lt;br /&gt;
* -x : Gebe Hexadezimale 2 Byte einheiten aus&lt;br /&gt;
&lt;br /&gt;
Beispiele&lt;br /&gt;
&lt;br /&gt;
Gebe Master Boot Record (die ersten 512 Byte der Festplatte /dev/sda) als Hexadezimal aus&lt;br /&gt;
 root@zero:~# od '''-x -N''' 512 /dev/sda&lt;br /&gt;
 0000000 48eb 1090 d08e 00bc b8b0 0000 d88e c08e&lt;br /&gt;
 0000020 befb 7c00 00bf b906 0200 a4f3 21ea 0006&lt;br /&gt;
 0000040 be00 07be 0438 0b75 c683 8110 fefe 7507&lt;br /&gt;
 0000060 ebf3 b416 b002 bb01 7c00 80b2 748a 0203&lt;br /&gt;
 0000100 00ff 2000 0001 0000 0200 90fa f690 80c2&lt;br /&gt;
 ...&lt;br /&gt;
&lt;br /&gt;
Schreibe &amp;quot;suxer&amp;quot; in die Datei test&lt;br /&gt;
 root@zero:~# echo &amp;quot;suxer&amp;quot; &amp;gt; test&lt;br /&gt;
Ausgabe Hexadezimal&lt;br /&gt;
 root@zero:~# od -x test&lt;br /&gt;
 0000000 7573 6578 0a72&lt;br /&gt;
 0000006&lt;br /&gt;
&lt;br /&gt;
Ausgabe ASCII Zeichen&lt;br /&gt;
 root@zero:~# od -c test&lt;br /&gt;
 0000000   s   u   x   e   r  \n&lt;br /&gt;
 0000006&lt;br /&gt;
&lt;br /&gt;
==paste==&lt;br /&gt;
Fügt die Zeilen von zwei oder mehr Dateien horizontal zusammen&lt;br /&gt;
 root@zero:~# paste name tel&lt;br /&gt;
 1. karl 1. 1234&lt;br /&gt;
 2. heinz        2. 4321&lt;br /&gt;
 3. hans 3. 222&lt;br /&gt;
 4. otto 4. 121212&lt;br /&gt;
&lt;br /&gt;
==pr==&lt;br /&gt;
Bereitet Textdateien zum Drucken vor.&lt;br /&gt;
&lt;br /&gt;
 root@zero:~# echo &amp;quot;Plan für heute&amp;quot; &amp;gt; dokument&lt;br /&gt;
 root@zero:~# more dokument&lt;br /&gt;
 Plan für heute&lt;br /&gt;
 root@zero:~# pr dokument   &lt;br /&gt;
  &lt;br /&gt;
 &lt;br /&gt;
 2009-06-19 12:44                    dokument                     Seite 1&lt;br /&gt;
 &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
 Plan für heute&lt;br /&gt;
&lt;br /&gt;
Anmerkung Ausmaße der Bildschirmausgabe wie eine Druckseite.&lt;br /&gt;
&lt;br /&gt;
==sed==&lt;br /&gt;
streaming editor. Mit sed ist es möglich, den Inhalt einer Datei automatisch (nicht interaktiv) zu&lt;br /&gt;
bearbeiten. Wie unter Linux üblich, wird auch hier der Text nicht wirklich verändert sondern die &lt;br /&gt;
Änderung erfolgt über die Standardausgabe, die wieder umgeleitet werden kann. Die Syntax ist ähnlich &lt;br /&gt;
des ex modus von vi. Reguläre Ausdrücke können nach Belieben benutzt werden. &lt;br /&gt;
&lt;br /&gt;
Optionen:&lt;br /&gt;
 -e Zeichenkette  wendet die Editorbefehle aus Zeichenkette auf den Text an.&lt;br /&gt;
 -n gibt nur die Zeilen aus, die explizit (durch &amp;quot;p&amp;quot; ausgedruckt werden sollen&lt;br /&gt;
&lt;br /&gt;
Gibt die dritte Zeile der Datei text aus&lt;br /&gt;
 root@zero:~# sed -n &amp;quot;3p&amp;quot; text&lt;br /&gt;
 34&lt;br /&gt;
&lt;br /&gt;
Gibt die erste bis dritte Zeile von text aus&lt;br /&gt;
 root@zero:~# sed -n &amp;quot;1,3p&amp;quot; text&lt;br /&gt;
 sogar noch wichtiger&lt;br /&gt;
 123&lt;br /&gt;
 34&lt;br /&gt;
&lt;br /&gt;
Löschen der Zeile mit &amp;quot;sogar&amp;quot;&lt;br /&gt;
 root@zero:~# sed -e '/sogar/d' &amp;lt; text&lt;br /&gt;
 123&lt;br /&gt;
 34&lt;br /&gt;
 4711&lt;br /&gt;
 test&lt;br /&gt;
&lt;br /&gt;
und schreiben in text2&lt;br /&gt;
 root@zero:~# sed -e '/sogar/d' &amp;lt; text &amp;gt; text2&lt;br /&gt;
 root@zero:~# more text2&lt;br /&gt;
 123&lt;br /&gt;
 34&lt;br /&gt;
 4711&lt;br /&gt;
 test&lt;br /&gt;
&lt;br /&gt;
Alle 3en durch DREI ersetzen&lt;br /&gt;
 root@zero:~# sed -e 's/3/DREI/g' &amp;lt; text&lt;br /&gt;
 sogar noch wichtiger&lt;br /&gt;
 12DREI&lt;br /&gt;
 DREI4&lt;br /&gt;
 4711&lt;br /&gt;
 test&lt;br /&gt;
&lt;br /&gt;
==wc==&lt;br /&gt;
Zählt die Anzahl von Zeichen, Wörter oder Zeilen&lt;br /&gt;
&lt;br /&gt;
Optionen&lt;br /&gt;
* -m : Zählt die Anzahl der Zeichen&lt;br /&gt;
 root@zero:~# more name&lt;br /&gt;
 1. karl&lt;br /&gt;
 2. heinz&lt;br /&gt;
 3. hans&lt;br /&gt;
 4. otto&lt;br /&gt;
 root@zero:~# wc '''-m''' tel&lt;br /&gt;
 33 tel&lt;br /&gt;
&lt;br /&gt;
* -w : Zählt die Anzahl der Wörter (einschließlich Zahlen und andere Zeichen)&lt;br /&gt;
 root@zero:~# wc '''-w''' name&lt;br /&gt;
 8 name&lt;br /&gt;
&lt;br /&gt;
* -l : Zählt die Anzahl der Zeilen&lt;br /&gt;
 root@zero:~# wc '''-l''' name&lt;br /&gt;
 4 name&lt;br /&gt;
&lt;br /&gt;
==INodes==&lt;br /&gt;
Inode (oder I-Node) wird im Deutschen am besten als Informationsknoten oder&lt;br /&gt;
Indexeintrag bezeichnet. Er fasst alle Attribute einer Datei zusammen außer dem Inhalt&lt;br /&gt;
und dem Namen der Datei.&lt;br /&gt;
&lt;br /&gt;
===Daten===&lt;br /&gt;
{| border=1 cellpadding=2&lt;br /&gt;
|type&lt;br /&gt;
|Der Typ der Datei wird als einzelner Buchstabe angezeigt. Der Typ einer Datei wird beim Anlegen der Datei festgelegt&lt;br /&gt;
|-&lt;br /&gt;
|Permissions &lt;br /&gt;
|Die Zugriffsrechte der Datei werden in den 12 Bit sstrwxrwxrwx abgespeichert.Wenn sie gesetzt sind, werden sie bei &lt;br /&gt;
der Ausgabe an Stelle der x-Rechte ausgegeben. Die Zugriffsrechte können mit dem Kommando chmod verändert werden.&lt;br /&gt;
|-&lt;br /&gt;
|link count&lt;br /&gt;
|In UNIX kann eine Datei mehr als einen Namen haben. Der Link Count gibt die Anzahl der Namen einer Datei an. Er kann&lt;br /&gt;
mit dem Kommando ln erhöht und dem Kommando rm erniedrigt werden.&lt;br /&gt;
|-&lt;br /&gt;
|owner&lt;br /&gt;
|Für den Dateieigentümer gelten die in der ersten rwx-Gruppe festgelegten Zugriffsrechte. Standardmäßig ist der &lt;br /&gt;
Eigentümer einer Datei derjenige Benutzer, der die Datei angelegt hat.&lt;br /&gt;
|-&lt;br /&gt;
|group&lt;br /&gt;
|Für Benutzer, die in der gleichen Gruppe sind, der die Datei angehört, gelten die in der zweiten rwx-Gruppe festgelegten&lt;br /&gt;
Zugriffsrechte. In System V gehört eine Datei standardmäßig der Gruppe an, in der der anlegende Benutzer gerade ist.&lt;br /&gt;
|-&lt;br /&gt;
|size&lt;br /&gt;
|Bei normalen Dateien und Verzeichnissen gibt diese Information die Länge der Datei in Byte an.&lt;br /&gt;
|-&lt;br /&gt;
|access time&lt;br /&gt;
|Die Zugriffszeit gibt den Zeitpunkt des letzten Lesezugriffes auf eine Datei an. Aus Effizienzgründen wird die &lt;br /&gt;
Zugriffszeit an Verzeichnissen nicht gesetzt, wenn ein Verzeichnis durchsucht wird, obwohl man dies erwarten könnte.&lt;br /&gt;
|-&lt;br /&gt;
|modification time&lt;br /&gt;
|Die Modifikationszeit gibt die Zeit des letzten Schreibzugriffes auf die Daten der Datei an. Intern speichert UNIX &lt;br /&gt;
die Zeit als Sekunden seit Beginn des Jahres 1970 und in GMT ab. Für die Ausgabe wird dies in ein besser lesbares &lt;br /&gt;
Format in der lokalen Zeitzone umgewandelt.&lt;br /&gt;
|-&lt;br /&gt;
|change time &lt;br /&gt;
|Die Veränderungszeit gibt das Datum der letzten Statusänderung der Datei an. Sie wird immer dann gesetzt, wenn die &lt;br /&gt;
Informationen über die Datei sich ändern (Datum der Erzeugung wird nicht gespeichert)&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
===Dateiarten===&lt;br /&gt;
{| border=1 cellpadding=2&lt;br /&gt;
!Zeichen&lt;br /&gt;
!Typ&lt;br /&gt;
!Zweck&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;nowiki&amp;gt;-&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
|file&lt;br /&gt;
|normale Datei&lt;br /&gt;
|-&lt;br /&gt;
|d&lt;br /&gt;
|directory&lt;br /&gt;
|Verzeichnis&lt;br /&gt;
|-&lt;br /&gt;
|b&lt;br /&gt;
|block device&lt;br /&gt;
|Gerätedatei&lt;br /&gt;
|-&lt;br /&gt;
|c&lt;br /&gt;
|character device&lt;br /&gt;
|Gerätedatei&lt;br /&gt;
|-&lt;br /&gt;
|l&lt;br /&gt;
|link&lt;br /&gt;
|Querverweis&lt;br /&gt;
|-&lt;br /&gt;
|p&lt;br /&gt;
|named pipe&lt;br /&gt;
|Benannte Pipeline&lt;br /&gt;
|-&lt;br /&gt;
|s&lt;br /&gt;
|socket&lt;br /&gt;
|Netzwerkverbindung&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
====Normale Dateien====&lt;br /&gt;
Unter einer normalen Datei versteht man die Ansammlung von Daten. Dies kann ein Text, Programm, Bild oder sonstiges sein. &lt;br /&gt;
Beispiel&lt;br /&gt;
 root@zero:~# ls text&lt;br /&gt;
 text&lt;br /&gt;
&lt;br /&gt;
====Verzeichnisse====&lt;br /&gt;
Dateien werden in Verzeichnissen gespeichert, nur so ist eine Ordnung möglich. &lt;br /&gt;
 root@zero:~# mkdir -v Ordner&lt;br /&gt;
 mkdir: Verzeichnis „Ordner“ angelegt&lt;br /&gt;
 &lt;br /&gt;
 root@zero:~# ls -d ~/*&lt;br /&gt;
 /root/error  /root/neuertext  /root/Ordner  /root/profile  /root/test  /root/text  /root/verzeichnis&lt;br /&gt;
&lt;br /&gt;
====Gerätedateien (Block und Char)====&lt;br /&gt;
Gerätedateien ermöglichen Anwendungsprogrammen unter Benutzung des  Kernels den Zugriff auf die Hardwarekomponenten des &lt;br /&gt;
Systems. &lt;br /&gt;
&lt;br /&gt;
Beispiele&lt;br /&gt;
&lt;br /&gt;
Sicherung des Master Boot Records der ersten Festplatte&lt;br /&gt;
 root@zero:~# dd if=/dev/sda1 of=/tmp/mbr.img bs=512 count=1&lt;br /&gt;
&lt;br /&gt;
Einhängen des CD-ROM Laufwerks&lt;br /&gt;
 root@zero:~# mount /dev/cdrom /media/cdrom -t iso9660&lt;br /&gt;
&lt;br /&gt;
====Named Pipes====&lt;br /&gt;
Benannte Pipes (Named Pipes) können dagegen auch zur Kommunikation zwischen Prozessen eingesetzt werden, die nicht miteinander&lt;br /&gt;
verwandt sind und sich darüber hinaus auf unterschiedlichen Rechnern innerhalb eines Netzwerkes befinden dürfen. Sie sind &lt;br /&gt;
flexibler als anonyme Pipes und eignen sich für sogenannte Client-Server-Anwendungen (es lassen sich auch RPCs realisieren).&lt;br /&gt;
Benannte Pipes ermöglichen die gleichzeitige Kommunikation in beide Richtungen, das heißt, Daten können im Vollduplexbetrieb &lt;br /&gt;
zwischen den Prozessen ausgetauscht werden.&lt;br /&gt;
 &lt;br /&gt;
Erstelle Named Pipe mit Namen sux. Schreibe &amp;quot;Hallo Welt&amp;quot; in die Pipe sux und bleibe im Hintergrund. Gebe Inhalt der Pipe mit cat aus&lt;br /&gt;
 root@zero:~# mkfifo sux ; echo 'Hallo Welt' &amp;gt; sux &amp;amp; cat &amp;lt; sux&lt;br /&gt;
 [1] 12947&lt;br /&gt;
 Hallo Welt&lt;br /&gt;
 [1]+  Done                    echo 'Hallo Welt' &amp;gt; sux&lt;br /&gt;
&lt;br /&gt;
====Sockets====&lt;br /&gt;
Schnittstelle um es vernetzten Rechnern zu ermöglichen, miteinander zu kommunizieren.&lt;br /&gt;
&lt;br /&gt;
Sie ist in der Regel definiert durch IP-Adresse sowie Port. &lt;br /&gt;
&lt;br /&gt;
====Links====&lt;br /&gt;
Bei Links handelt es sich um symbolische Verweise auf andere Dateien&lt;br /&gt;
&lt;br /&gt;
'''Softlink'''&lt;br /&gt;
Ein Softlink ist eine Datei die nur auf den Namen einer anderen Datei verweist. Wenn die Originaldatei gelöscht wird, zeigt &lt;br /&gt;
der Link ins Leere. &lt;br /&gt;
&lt;br /&gt;
 ln -s datei softlink&lt;br /&gt;
&lt;br /&gt;
{| border=1 cellpadding=2&lt;br /&gt;
| Vorteile&lt;br /&gt;
| Symbolische Links können auch auf Verzeichnisse angelegt werden&amp;lt;br&amp;gt;Sie sind partitionsübergreifend&amp;lt;br&amp;gt;Man kann sie auf Dateien anlegen, die noch nicht existieren&lt;br /&gt;
|-&lt;br /&gt;
| Nachteile&lt;br /&gt;
| Wenn das Original gelöscht ist, ist kein Zugriff mehr möglich&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Beispiel&lt;br /&gt;
 root@zero:~# ln -s text verweis&lt;br /&gt;
 root@zero:~# ls -l verweis&lt;br /&gt;
 lrwxrwxrwx 1 root root 4 2009-06-18 15:48 verweis -&amp;gt; text&lt;br /&gt;
&lt;br /&gt;
'''Hardlinks'''&lt;br /&gt;
 ln datei hardlink&lt;br /&gt;
Eigentlich ist jede Datei ein Hardlink. Ein Hardlink ist ein Verzeichniseintrag,&lt;br /&gt;
der auf eine Inode verweist. Beim Erzeugen einer Datei verweist ein Eintrag auf&lt;br /&gt;
eine Inode. Man kann dann weitere Verweise erzeugen. Der Linkcounter wird&lt;br /&gt;
jeweils um 1 erhöht. Beim Löschen einer Datei wird er jeweils um 1 reduziert.&lt;br /&gt;
Wird der Wert 0 erreicht, ist die Datei gelöscht.&lt;br /&gt;
{| border=1 cellpadding=2&lt;br /&gt;
| Vorteile&lt;br /&gt;
|Zugriff auf die Daten, selbst wenn das Orginal gelöscht ist.&lt;br /&gt;
|-&lt;br /&gt;
|Nachteile&lt;br /&gt;
|Man kann keine Hardlinks auf Verzeichnisse anlegen.&lt;br /&gt;
Ist nur innerhalb einer Partion möglich.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Beispiel&lt;br /&gt;
 root@zero:~# touch 1&lt;br /&gt;
 root@zero:~# echo &amp;quot;text&amp;quot; &amp;gt; 1&lt;br /&gt;
 root@zero:~# ln 1 2&lt;br /&gt;
 root@zero:~# more 2&lt;br /&gt;
 text&lt;br /&gt;
 root@zero:~# echo &amp;quot;doch kein text&amp;quot; &amp;gt; 1&lt;br /&gt;
 root@zero:~# more 1&lt;br /&gt;
 doch kein text&lt;br /&gt;
 root@zero:~# more 2&lt;br /&gt;
 doch kein text&lt;br /&gt;
&lt;br /&gt;
Weitere Optionen:&lt;br /&gt;
 -b sichert Dateien, statt sie zu überschreiben &lt;br /&gt;
 -f Überschreibt bestehende, gleichnamige Dateien&lt;br /&gt;
 -i fragt vor dem Überschreiben nach Bestätigung&lt;br /&gt;
 -v ausführliche Meldungen&lt;br /&gt;
&lt;br /&gt;
==Prozesse==&lt;br /&gt;
===Was ist ein Prozess?===&lt;br /&gt;
Ein Prozess setzt sich aus zwei Teilen zusammen:&lt;br /&gt;
&lt;br /&gt;
1.Programm, das in den Hauptspeicher geladen wurde&lt;br /&gt;
&lt;br /&gt;
2.Prozessumgebung&lt;br /&gt;
&lt;br /&gt;
Unter einem Prozess versteht man ein Programm (binär), das in den Hauptspeicher&lt;br /&gt;
geladen wurde. Also nicht das Program selbst, das auf der Festplatte liegt ist der&lt;br /&gt;
Prozess, sondern es wird erst durch das Laden in den Hauptspeicher dazu.&lt;br /&gt;
Normalerweise liegt ein Programm als ausführbare Datei irgendwo auf der&lt;br /&gt;
Festplatte oder auf Diskette. Ob es sich bei dem Programm um eine binäre Datei&lt;br /&gt;
handelt, kann man mit dem Befehl '' file '' feststellen.&lt;br /&gt;
 &lt;br /&gt;
 root@zero:~# file /bin/mkdir&lt;br /&gt;
 /bin/mkdir: ELF 32-bit LSB executable, Intel 80386, version 1 (SYSV), dynamically linked (uses shared libs), for GNU/Linux 2.6.8, stripped&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Die Datei liegt im Maschinencode vor und kann in den Hauptspeicher geladen&lt;br /&gt;
werden. Sobald dies geschehen ist, kann der Rechner diesen Maschinencode&lt;br /&gt;
abarbeiten (ausführen).&lt;br /&gt;
&lt;br /&gt;
Da aber ein Programm nicht direkt auf die Hardware zugreifen soll, muss es vom&lt;br /&gt;
Betriebsystem kontrolliert werden. Das Betriebssystem liegt logisch gesehen&lt;br /&gt;
zwischen Hardware und Anwendung. Das Betriebssystem ordnet jedem Prozess&lt;br /&gt;
verschiedene Kenndaten zu, um die Prozesse verwalten zu können. Alle&lt;br /&gt;
Kenndaten, die einem Prozess zugeordnet sind, nennt man die&lt;br /&gt;
Prozessumgebung.Wenn man in der Shell ein Kommando eingibt, wird ein Prozess&lt;br /&gt;
kreiert. Natürlich ist die Shell selbst auch ein Prozess. Ein Prozess kann aber&lt;br /&gt;
genauso gut ein Serverprozess (Dienst) sein, z.B. Apache.&lt;br /&gt;
Ein wesentliches Merkmal eines Prozesses ist die Prozesskommunikation. Über im&lt;br /&gt;
Betriebssystem implementierte Methoden ist es möglich, dass verschiedene&lt;br /&gt;
Prozesse Signale und Daten untereinander austauschen können.&lt;br /&gt;
Dadurch wird auch dem Benutzer ermöglicht, einem Prozeß bestimmte Signale zu&lt;br /&gt;
senden bzw. auf den Status eines Prozesses Einfluss zu nehmen.&lt;br /&gt;
&lt;br /&gt;
===Prozesstabelle (Anzeige mit ps)===&lt;br /&gt;
Da zu jedem Prozess Kenndaten geführt werden, müssen diese auch irgendwo&lt;br /&gt;
festgehalten werden. Das geschieht in der sogenannten Prozesstabelle.&lt;br /&gt;
&lt;br /&gt;
Kenndaten der Prozesse (Auswahl):&lt;br /&gt;
* F Flags (z.B. ausgelagert; Systemprozess; Trace,...)&lt;br /&gt;
* UID Nutzer, mit dessen Rechten der Prozess ausgeführt wird&lt;br /&gt;
* PID Prozess - ID. Diese Nummer gibt eine eindeutige Prozess - Nummer&lt;br /&gt;
an. Sie wird vom System automatisch beim Starten des Prozesses&lt;br /&gt;
vergeben und ist für die Laufzeit eindeutig.&lt;br /&gt;
* PPID Prozessnumer der Eltern-Prozesses&lt;br /&gt;
* PRI Priorität eines Prozesses; je niedriger der Wert ist, desto besser&lt;br /&gt;
* NI ist der Nicewert des Prozesses; Nice erniedrigt den Grundwert&lt;br /&gt;
der Priorität des Prozesses und gibt damit Prozessorzeit für andere&lt;br /&gt;
Prozesse frei.&lt;br /&gt;
* SIZE Speichergröße des Prozesses inklusive Stack (eine Art Zwischenspeicher)&lt;br /&gt;
* RSS Verbrauch an physischen Speicher&lt;br /&gt;
* WCHAN ist der Name der Kernerlfunktion, in der der Prozess schläft&lt;br /&gt;
* STAT Status des Prozesses&lt;br /&gt;
R läuft       S schlafend     D nicht störbarer Schlaf&lt;br /&gt;
T angehalten  Z Zombie        W der Prozess belegt keine Seiten&lt;br /&gt;
* TIME Bisland benötigte Prozessorzeit&lt;br /&gt;
* SIZE ist die Größe von Text, Daten und Stack&lt;br /&gt;
* TTY die Nummer des kontrollierenden Teminal; wenn hier ein ? steht,&lt;br /&gt;
handelt es sich um einen Dämon oder Serverprozess.&lt;br /&gt;
* COMMAND Angabe des Prozesses selbst. Dies ist meist der Programmname.&lt;br /&gt;
&lt;br /&gt;
Weiteres&lt;br /&gt;
* GID Gruppe, unter der der Prozess läuft&lt;br /&gt;
* Verweis auf das aktuellen Arbeitsverzeichnis&lt;br /&gt;
* Um mit relativen Pfadangaben arbeiten zu können braucht man diesen Eintrag&lt;br /&gt;
* Tabelle mit Verweisen auf aktuell geöffnete Dateien&lt;br /&gt;
* 3 sind automatisch geöffnet Standardeingabe, Standardausgabe und&lt;br /&gt;
Standardfehlerkanal&lt;br /&gt;
&lt;br /&gt;
Beispiel&lt;br /&gt;
 root@zero:~# ps -l&lt;br /&gt;
 F S   UID   PID  PPID  C PRI  NI ADDR SZ WCHAN  TTY          TIME CMD&lt;br /&gt;
 4 R     0 18639 18631  0  80   0 -  1080 -      pts/0    00:00:00 bash&lt;br /&gt;
 0 R     0 25904 18639  0  80   0 -   635 -      pts/0    00:00:00 ps&lt;br /&gt;
&lt;br /&gt;
===Eltern und Kinder===&lt;br /&gt;
Jeder Prozess kann weitere Prozesse erzeugen. Die erzeugten Prozesse bezeichnet&lt;br /&gt;
man als Kindprozesse. Jeder Kindprozess weiß anhand der PID, woher er stammt.&lt;br /&gt;
&lt;br /&gt;
Alle Prozesse sind von einem anderen Prozess gestartet worden, mit Ausnahme&lt;br /&gt;
des Pseudoprozesses (noch im Kernel beim Starten erzeugter Prozess). Dieser hat&lt;br /&gt;
die Prozessnummer 0. Er hat die Aufgabe, den Init Prozess ( /sbin/init die Nummer&lt;br /&gt;
1) zu starten, der in System V alle anderen Prozesse direkt oder über seine Kind-&lt;br /&gt;
prozesse startet. (init wird konfiguriert durch die /etc/inittab)&lt;br /&gt;
&lt;br /&gt;
Es gibt zwei Arten wie ein Prozess gestartet werden kann:&lt;br /&gt;
&lt;br /&gt;
# Fork und Exec: Prozessumgebung wird dupliziert, der neue Prozess bekommt eine eigene neue PID&lt;br /&gt;
# Exec: Alter Prozess wird durch neuen Prozess überladen (geht mit dem shell-buildin exec)&lt;br /&gt;
&lt;br /&gt;
'''Rechte auf Objekte UID GID'''&lt;br /&gt;
Ob ein Prozess auf eine Datei zugreifen kann, entscheidet der Kernel anhand der&lt;br /&gt;
Zugriffssrechte, die auf der Datei gesetzt sind. Er checkt anhand der UID und GID&lt;br /&gt;
des Prozesses, ob es erlaubt ist. Mit dieser Technik wird letztendlich geprüft, was&lt;br /&gt;
ein User darf, und was nicht.&lt;br /&gt;
&lt;br /&gt;
===Rechenzeit und Priorität===&lt;br /&gt;
Da auch bei Prozessen eine Gerechtigkeit herschen muss, muss eine Instanz&lt;br /&gt;
darüber entscheiden wie lange ein Prozess Rechenzeit verbrauchen darf.&lt;br /&gt;
Folgende Kenndaten werden dazu benötigt&lt;br /&gt;
* clocktick = Zeiteinheit&lt;br /&gt;
* n = Faktor über den Kernel einstellbar&lt;br /&gt;
* slice = n &amp;lt;nowiki&amp;gt;*&amp;lt;/nowiki&amp;gt; clocktick&lt;br /&gt;
* agingtime = weitere Zeiteinheit über den Kernel einstellbar&lt;br /&gt;
&lt;br /&gt;
Es wird davon ausgegangen das der Prozess mit der niedrigsten Priorität gerade&lt;br /&gt;
rechnet. Pro clocktick erhöht sich die Priorität dieses Prozesses um eins.&lt;br /&gt;
&lt;br /&gt;
Jetzt können 3 Situationen eintreten die alle dazu führen das der Scheduler&lt;br /&gt;
aufgerufen wird.&lt;br /&gt;
&lt;br /&gt;
# Prozess blockiert wegen einer Ausgabe oder Eingabe.&lt;br /&gt;
# Gibt Rechenzeit freiwillig ab.&lt;br /&gt;
# Der Slice endet.&lt;br /&gt;
&lt;br /&gt;
Der Aufruf des Schedulers bewirkt das der Prozess mit der niedrigsten Priorität&lt;br /&gt;
gescheduled wird, er also nun rechnen darf. Nach Ablauf der agingtime werden&lt;br /&gt;
nun die Prozesse &amp;quot;gealtert&amp;quot;. Das geschieht nach folgender Formel&lt;br /&gt;
&lt;br /&gt;
Neue Priorität = Alte Priorität / 2 + Nicewert&lt;br /&gt;
&lt;br /&gt;
Der User hat die Möglichkeit, über den sogenannten Nicefaktor den Grundwert für&lt;br /&gt;
einen Prozess zu senken. Der Prozess braucht dann länger für seine Abarbeitung.&lt;br /&gt;
Er verhält sich somit netter zu den anderen Prozessen. Normale User können nur&lt;br /&gt;
netter werden, der Systemverwalter kann auch nicht netter (gemeiner) werden. Der&lt;br /&gt;
Bereich liegt zwischen 19 (sehr nett) bis 0 (weniger nett) für die User, und 19 bis&lt;br /&gt;
-20 für root.&lt;br /&gt;
&lt;br /&gt;
[[Image:pri.png]]&lt;br /&gt;
&lt;br /&gt;
'''Signale'''&lt;br /&gt;
&lt;br /&gt;
Mit den Kommando kill und killall kann man Prozessen Signale schicken&lt;br /&gt;
&lt;br /&gt;
 kill -Signalnummer PID &lt;br /&gt;
&lt;br /&gt;
Signalnummer&lt;br /&gt;
{| border=1 cellpadding=2&lt;br /&gt;
!Signalname&lt;br /&gt;
!Wert&lt;br /&gt;
!Aktion&lt;br /&gt;
|-&lt;br /&gt;
|SIGHUP&lt;br /&gt;
|1&lt;br /&gt;
|Neuinitialisierung eines Prozesses&lt;br /&gt;
|-&lt;br /&gt;
|SIGINT&lt;br /&gt;
|2&lt;br /&gt;
|Interrupt-Signal von der Tastatur (STRG+c)&lt;br /&gt;
|-&lt;br /&gt;
|SIGQUIT&lt;br /&gt;
|3&lt;br /&gt;
|Interrupt-Signal von der Tastatur (STRG+c) mit Dump&lt;br /&gt;
|-&lt;br /&gt;
|SIGKILL&lt;br /&gt;
|9&lt;br /&gt;
|unwiderrufliches Beendigungssignal (Töten)&lt;br /&gt;
|-&lt;br /&gt;
|SIGSEGV&lt;br /&gt;
|11&lt;br /&gt;
|Ungültige Speicherreferenz (bedeutet oft auf defekten Speicher)&lt;br /&gt;
|-&lt;br /&gt;
|SIGTERM &lt;br /&gt;
|15&lt;br /&gt;
|Beendigungssignal (geöffnete Dateien werden geschlossen)&lt;br /&gt;
|-&lt;br /&gt;
|SIGCONT &lt;br /&gt;
|18&lt;br /&gt;
|Weiterfahren, wenn gestoppt&lt;br /&gt;
|-&lt;br /&gt;
|SIGSTOP&lt;br /&gt;
|19&lt;br /&gt;
|Prozessstop&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Beispiel&lt;br /&gt;
 root@zero:~# kill -1 7562&lt;br /&gt;
&lt;br /&gt;
===Programme im Zusammenhang mit Prozessen===&lt;br /&gt;
* ps: Zeigt die Prozesse mit ihrem Status an&lt;br /&gt;
 root@zero:~# ps&lt;br /&gt;
  PID TTY          TIME CMD&lt;br /&gt;
 14134 pts/0    00:00:00 bash&lt;br /&gt;
 14149 pts/0    00:00:00 ps&lt;br /&gt;
&lt;br /&gt;
 root@zero:~# ps -elf | grep apache&lt;br /&gt;
 1 S root      5738     1  0  80   0 -  5461 select Jun16 ?        00:00:00 /usr/sbin/apache2 -k start&lt;br /&gt;
 5 S www-data  5739  5738  0  80   0 -  5581 inet_c Jun16 ?        00:00:00 /usr/sbin/apache2 -k start&lt;br /&gt;
 5 S www-data  5742  5738  0  80   0 -  5461 inet_c Jun16 ?        00:00:00 /usr/sbin/apache2 -k start&lt;br /&gt;
 5 S www-data  5743  5738  0  80   0 -  5461 inet_c Jun16 ?        00:00:00 /usr/sbin/apache2 -k start&lt;br /&gt;
 5 S www-data  5745  5738  0  80   0 -  5461 inet_c Jun16 ?        00:00:00 /usr/sbin/apache2 -k start&lt;br /&gt;
 5 S www-data  5746  5738  0  80   0 -  5461 inet_c Jun16 ?        00:00:00 /usr/sbin/apache2 -k start&lt;br /&gt;
 0 S root     14153 14134  0  80   0 -   837 pipe_w 16:59 pts/0    00:00:00 grep apache&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* nice: Lässt ein Programm mit verändertem Grundwert der Priorität laufen&lt;br /&gt;
 root@zero:~# nice&lt;br /&gt;
 0&lt;br /&gt;
 root@zero:~# nice -n 9 bash&lt;br /&gt;
 root@zero:~# nice&lt;br /&gt;
 9&lt;br /&gt;
 root@zero:~#&lt;br /&gt;
&lt;br /&gt;
* renice: Ändert den Grundwert der Priorität eines laufenden Prozesses&lt;br /&gt;
 root@zero:~# renice 10 5742&lt;br /&gt;
 5742: Alte Priorität: 0, neue Priorität: 10&lt;br /&gt;
&lt;br /&gt;
* top: Zeigt die Prozesse mit ihrem Status an (Abbrechen mit q)&lt;br /&gt;
 root@zero:~# top&lt;br /&gt;
&lt;br /&gt;
* pstree: Zeigt die Prozesse als Baumstruktur&lt;br /&gt;
 root@zero:~# pstree&lt;br /&gt;
 init─┬─NetworkManager&lt;br /&gt;
      ├─acpid&lt;br /&gt;
      ├─apache2───5*[apache2]&lt;br /&gt;
      ├─atd&lt;br /&gt;
      ├─bluetoothd&lt;br /&gt;
      ├─console-kit-dae───63*[{console-kit-dae}]&lt;br /&gt;
      ├─cron&lt;br /&gt;
      ├─cupsd&lt;br /&gt;
      ├─dbus-daemon&lt;br /&gt;
      ├─dd&lt;br /&gt;
      ├─gdm───gdm─┬─Xorg&lt;br /&gt;
      │           └─gdmgreeter&lt;br /&gt;
      ├─6*[getty]&lt;br /&gt;
      ├─hald───hald-runner─┬─hald-addon-acpi&lt;br /&gt;
      │                    ├─hald-addon-inpu&lt;br /&gt;
      │                    └─2*[hald-addon-stor]&lt;br /&gt;
      ├─klogd&lt;br /&gt;
      ├─nm-system-setti&lt;br /&gt;
      ├─nmbd&lt;br /&gt;
      ├─nscd───11*[{nscd}]&lt;br /&gt;
      ├─portmap&lt;br /&gt;
      ├─rpc.statd&lt;br /&gt;
      ├─slapd───2*[{slapd}]&lt;br /&gt;
      ├─smbd───smbd&lt;br /&gt;
      ├─sshd───sshd───bash───bash───pstree&lt;br /&gt;
      ├─syslogd&lt;br /&gt;
      ├─system-tools-ba&lt;br /&gt;
      ├─udevd&lt;br /&gt;
      ├─winbindd─┬─winbindd───winbindd&lt;br /&gt;
      │          └─3*[winbindd]&lt;br /&gt;
      └─wpa_supplicant&lt;br /&gt;
&lt;br /&gt;
===Jobs===&lt;br /&gt;
Unter einem Job versteht man ein Programm, welches man von der Shell gelöst&lt;br /&gt;
hat. D. h. man kann ganz normal weiter arbeiten und der Job verrichtet seinen&lt;br /&gt;
Dienst im Hintergrund. Man kann jederzeit zu diesem Job wieder Kontakt&lt;br /&gt;
aufnehmen.&lt;br /&gt;
&lt;br /&gt;
Ein Job kann auf 2 Arten gestarten werden:&lt;br /&gt;
&lt;br /&gt;
# Durch Anhängen des &amp;amp; Zeichens beim Programmstart&lt;br /&gt;
 root@zero:~# tail -f /var/log/messages &amp;amp;&lt;br /&gt;
 Jun 19 06:59:31 zero -- MARK --&lt;br /&gt;
 Jun 19 07:19:31 zero -- MARK --&lt;br /&gt;
 Jun 19 07:39:32 zero -- MARK --&lt;br /&gt;
 Jun 19 07:44:57 zero syslogd 1.5.0#5ubuntu3: restart.&lt;br /&gt;
 Jun 19 07:59:32 zero -- MARK --&lt;br /&gt;
 Jun 19 08:19:32 zero -- MARK --&lt;br /&gt;
 Jun 19 08:39:32 zero -- MARK --&lt;br /&gt;
 Jun 19 08:59:32 zero -- MARK --&lt;br /&gt;
 Jun 19 09:19:33 zero -- MARK --&lt;br /&gt;
 Jun 19 09:39:33 zero -- MARK --&lt;br /&gt;
 [3] 27421&lt;br /&gt;
&lt;br /&gt;
# Durch Stoppen des Prozesses durch Drücken von Strg-Z und in den Hintergrund schicken mit %n (n ist die Jobnummer)&lt;br /&gt;
 root@zero:~# watch cat /proc/cpuinfo&lt;br /&gt;
 Strg-Z&lt;br /&gt;
 [4]+  Stopped                 watch cat /proc/cpuinfo&lt;br /&gt;
 root@zero:~# bg %4&lt;br /&gt;
 [4]+ watch cat /proc/cpuinfo &amp;amp;&lt;br /&gt;
&lt;br /&gt;
Anweisungen im Zusammenhang mit Jobs (n ist die Jobnummer)&lt;br /&gt;
* bg %n : Einen Job in den Hintergrund stellen (wie oben)&lt;br /&gt;
* fg %n : Einen Job in den Vordergrund holen&lt;br /&gt;
 root@zero:~# fg %4&lt;br /&gt;
 watch cat /proc/cpuinfo&lt;br /&gt;
&lt;br /&gt;
* jobs : Aktive Jobs ausgeben&lt;br /&gt;
&lt;br /&gt;
 root@zero:~# jobs&lt;br /&gt;
 [1]   Running                 tail -f /var/log/syslog &amp;amp;&lt;br /&gt;
 [2]   Running                 tail -f /var/log/syslog &amp;amp;&lt;br /&gt;
 [3]-  Running                 tail -f /var/log/messages &amp;amp;&lt;br /&gt;
 [4]+  Stopped                 watch cat /proc/cpuinfo&lt;br /&gt;
&lt;br /&gt;
* Strg-Z : Einen Vordergrund-Job vorübergehend anhalten&lt;br /&gt;
* kill -STOP %n : Unterbricht Job im Hintergrund&lt;br /&gt;
 root@zero:~# kill -STOP %1&lt;br /&gt;
 root@zero:~# jobs&lt;br /&gt;
 [1]+  '''Stopped'''                 tail -f /var/log/syslog&lt;br /&gt;
 [2]   Running                 tail -f /var/log/syslog &amp;amp;&lt;br /&gt;
 [3]   Running                 tail -f /var/log/messages &amp;amp;&lt;br /&gt;
 [4]-  Stopped                 watch cat /proc/cpuinfo&lt;br /&gt;
* kill -CONT %n : Setzt den unterbrochenen Job im Hintergrund fort&lt;br /&gt;
root@zero:~# kill -CONT %1&lt;br /&gt;
root@zero:~# jobs&lt;br /&gt;
 [1]+  '''Running'''                 tail -f /var/log/syslog &amp;amp;&lt;br /&gt;
 [2]   Running                 tail -f /var/log/syslog &amp;amp;&lt;br /&gt;
 [3]   Running                 tail -f /var/log/messages &amp;amp;&lt;br /&gt;
 [4]-  Stopped                 watch cat /proc/cpuinfo&lt;br /&gt;
* kill -KILL %n : Tötet Job im Hintergrund&lt;br /&gt;
 root@zero:~# kill -KILL %1&lt;br /&gt;
 root@zero:~# jobs&lt;br /&gt;
 [1]+  '''Killed'''                  tail -f /var/log/syslog&lt;br /&gt;
 [2]   Running                 tail -f /var/log/syslog &amp;amp;&lt;br /&gt;
 [3]   Running                 tail -f /var/log/messages &amp;amp;&lt;br /&gt;
 [4]-  Stopped                 watch cat /proc/cpuinfo&lt;br /&gt;
 root@zero:~# jobs&lt;br /&gt;
 [2]   Running                 tail -f /var/log/syslog &amp;amp;&lt;br /&gt;
 [3]-  Running                 tail -f /var/log/messages &amp;amp;&lt;br /&gt;
 [4]+  Stopped                 watch cat /proc/cpuinfo&lt;br /&gt;
&lt;br /&gt;
Bedingungen, die zu Jobausführung eingehalten werden sollen:&lt;br /&gt;
* Der Job soll nicht auf den Bildschirm schreiben (Standardausgabe +Standardfehlerkanal).&lt;br /&gt;
* Er soll keine Eingaben vom Benutzer erwarten.&lt;br /&gt;
&lt;br /&gt;
==Suchen von Dateien==&lt;br /&gt;
===find===&lt;br /&gt;
 find ab_wo_wird_gesucht was_wird_gesucht aktion&lt;br /&gt;
 find [Pfad] [Bedingung] [Aktion]&lt;br /&gt;
&lt;br /&gt;
====Nach Namen====&lt;br /&gt;
 find [Pfad] '''-name''' [Name]&lt;br /&gt;
 &lt;br /&gt;
Finde alle Dateien mit Namen test ab dem Verzeichnis /home und gebe diese Zeilenweise aus&lt;br /&gt;
 root@zero:~# find /home -name test -print&lt;br /&gt;
 /home/xinux/test&lt;br /&gt;
 /home/test&lt;br /&gt;
&lt;br /&gt;
Wie oben, jedoch mit Namensanfang test&lt;br /&gt;
 root@zero:/home/xinux# find /home -name 'test*'&lt;br /&gt;
 /home/xinux/testdatei&lt;br /&gt;
 /home/xinux/test&lt;br /&gt;
 /home/test&lt;br /&gt;
&lt;br /&gt;
====Nach Benutzer(Eigentümer)====&lt;br /&gt;
 root@zero:/tmp# find /tmp/ '''-user''' xinux&lt;br /&gt;
 /tmp/datei&lt;br /&gt;
&lt;br /&gt;
====Nach Gruppe====&lt;br /&gt;
 root@zero:/tmp# find /tmp/ '''-group''' hacker&lt;br /&gt;
 /tmp/datei3&lt;br /&gt;
 /tmp/datei2&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
====Nach Typ====&lt;br /&gt;
Es wird nach Dateien anhand Ihrer Art gesucht:&lt;br /&gt;
 find [Pfad] '''-type''' [Typ] &lt;br /&gt;
Typ:&lt;br /&gt;
* f: Normale Dateien&lt;br /&gt;
 root@zero:~# find /tmp/ -type f&lt;br /&gt;
 /tmp/mbr.img&lt;br /&gt;
 /tmp/datei&lt;br /&gt;
 /tmp/zeugs&lt;br /&gt;
 /tmp/.X0-lock&lt;br /&gt;
* d: Verzeichnisse&lt;br /&gt;
 root@zero:~# find /var/log -type d&lt;br /&gt;
 /var/log&lt;br /&gt;
 /var/log/apache2&lt;br /&gt;
 /var/log/unattended-upgrades&lt;br /&gt;
 /var/log/apparmor&lt;br /&gt;
 /var/log/ConsoleKit&lt;br /&gt;
 /var/log/dist-upgrade&lt;br /&gt;
 /var/log/dist-upgrade/20090526-1052&lt;br /&gt;
 /var/log/cups&lt;br /&gt;
 /var/log/apt&lt;br /&gt;
 /var/log/fsck&lt;br /&gt;
 /var/log/samba&lt;br /&gt;
 /var/log/samba/cores&lt;br /&gt;
 /var/log/samba/cores/smbd&lt;br /&gt;
 /var/log/samba/cores/nmbd&lt;br /&gt;
 /var/log/samba/cores/winbindd&lt;br /&gt;
 /var/log/installer&lt;br /&gt;
 /var/log/gdm&lt;br /&gt;
 /var/log/news&lt;br /&gt;
* c: Char Devices (Zeichenorientierte Gerätedatei)&lt;br /&gt;
 root@zero:~# find / -type c&lt;br /&gt;
 /lib/udev/devices/kmem&lt;br /&gt;
 /lib/udev/devices/null&lt;br /&gt;
 /lib/udev/devices/console&lt;br /&gt;
 /lib/udev/devices/ppp&lt;br /&gt;
 /lib/udev/devices/net/tun&lt;br /&gt;
* b: Block Devices (Blockorientierte Gerätedatei)&lt;br /&gt;
* p: Benannte Pipe&lt;br /&gt;
* l: Links&lt;br /&gt;
* s: Sockets&lt;br /&gt;
&lt;br /&gt;
====Nach Modifikation====&lt;br /&gt;
Listet alle Dateien in /etc auf, die innerhalb von zwei Tagen modifiziert wurden&lt;br /&gt;
 root@zero:/var/log# find /etc/ -mtime 2 -print&lt;br /&gt;
 /etc/apache2&lt;br /&gt;
 /etc/apache2/mods-available&lt;br /&gt;
 /etc/apache2/conf.d&lt;br /&gt;
 /etc/apache2/sites-available&lt;br /&gt;
 /etc/bash_completion.d&lt;br /&gt;
 /etc/blkid.tab.old&lt;br /&gt;
 /etc/firefox-3.0/profile&lt;br /&gt;
 /etc/firefox-3.0/profile/chrome&lt;br /&gt;
 /etc/firefox-3.0/pref&lt;br /&gt;
 /etc/profile.d&lt;br /&gt;
 /etc/ufw/applications.d&lt;br /&gt;
 /etc/logrotate.d&lt;br /&gt;
 /etc/xulrunner-1.9&lt;br /&gt;
 /etc/blkid.tab&lt;br /&gt;
 /etc/cron.daily&lt;br /&gt;
 /etc/alternatives&lt;br /&gt;
 /etc/alternatives/x-www-browser&lt;br /&gt;
 /etc/alternatives/xulrunner&lt;br /&gt;
 /etc/gre.d&lt;br /&gt;
 /etc/hal/fdi/policy&lt;br /&gt;
 /etc/dbus-1/system.d&lt;br /&gt;
 /etc/udev/rules.d&lt;br /&gt;
&lt;br /&gt;
====Nach Größe====&lt;br /&gt;
Finde Dateien in /tmp, die größer als 100 MByte sind&lt;br /&gt;
 root@zero:/tmp# find /tmp/ -size +100M&lt;br /&gt;
 /tmp/datei&lt;br /&gt;
&lt;br /&gt;
Finde Dateien in /tmp, die kleiner als 100 KByte sind&lt;br /&gt;
 root@zero:/tmp# find /tmp/ -size -100k&lt;br /&gt;
 /tmp/&lt;br /&gt;
 /tmp/datei3&lt;br /&gt;
 /tmp/backup &lt;br /&gt;
 /tmp/datei2&lt;br /&gt;
 /tmp/.winbindd &lt;br /&gt;
 /tmp/.winbindd/pipe&lt;br /&gt;
 /tmp/mbr.img&lt;br /&gt;
 /tmp/zeugs&lt;br /&gt;
 /tmp/.ICE-unix&lt;br /&gt;
 /tmp/.X0-lock&lt;br /&gt;
 /tmp/datei1&lt;br /&gt;
 /tmp/.X11-unix&lt;br /&gt;
 /tmp/.X11-unix/X0&lt;br /&gt;
 /tmp/pulse-PKdhtXMmr18n&lt;br /&gt;
&lt;br /&gt;
====Nach Berechtigungen====&lt;br /&gt;
Finde Dateien in Home mit der Berechtigung 777 (-rwxrwxrwx)&lt;br /&gt;
 root@zero:/var# find /home/ -perm 777&lt;br /&gt;
 /home/samba&lt;br /&gt;
 /home/xinux/Examples&lt;br /&gt;
 /home/xinux/.pulse/1f0763ee4cf4c7e1d3c07fd149dda37b:runtime&lt;br /&gt;
 /home/test/Examples&lt;br /&gt;
&lt;br /&gt;
===locate===&lt;br /&gt;
Locate arbeitet über einen Index, der erstellt und aktualisiert werden muss. Aus diesem Grund kann locate teilweise nicht &lt;br /&gt;
akutell sein. Es ist immer schneller als find und es durchsucht immer das ganze Dateisystem. &lt;br /&gt;
 locate [Dateiname]&lt;br /&gt;
 &lt;br /&gt;
Lokalisiere die Datei wvdial.conf. Anmerkung: Der Stern wird beim Suchen automatisch hinzugefügt. Entspricht also&lt;br /&gt;
wvidal.conf*&lt;br /&gt;
 root@zero:~# locate wvdial.conf&lt;br /&gt;
 /etc/wvdial.conf&lt;br /&gt;
 /usr/share/man/man5/wvdial.conf.5.gz&lt;br /&gt;
 /var/lib/dpkg/info/wvdial.conffiles&lt;br /&gt;
 /var/lib/dpkg/info/wvdial.config&lt;br /&gt;
&lt;br /&gt;
Lokalisiere die Datei wvdial.conf und nur diese&lt;br /&gt;
 root@zero:~# locate -b '\wvdial.conf'&lt;br /&gt;
 /etc/wvdial.conf&lt;br /&gt;
&lt;br /&gt;
Aktualisieren des Indexes&lt;br /&gt;
 root@zero:~# updatedb&lt;br /&gt;
&lt;br /&gt;
==Wie wird ein Kommando lokalisiert==&lt;br /&gt;
Wenn die Shell alle Ersetzungen in der Kommandozeile vorgenommen und alle Umleitungen vorbereitet hat, ist der Zeitpunkt &lt;br /&gt;
gekommen, auf den der Anwender die ganze Zeit gewartet hat. Die Shell versucht das Kommando auszuführen. Dazu muss sie &lt;br /&gt;
es aber erst lokalisieren. Das erste passende Kommando wird ausgeführt.&lt;br /&gt;
&lt;br /&gt;
Als Kommandoname wird immer das erste Wort eines einfachen Kommandos erkannt. Ein Kommandoname kann mit Pfadnamen in &lt;br /&gt;
einem Verzeichnis (absolut oder relativ) angegeben werden. Die Shell erkennt dies an (mindestens) einem Slash `/' &lt;br /&gt;
im Kommandonamen. Wenn kein Verzeichnis angegeben ist, versucht die Shell selbst, das Kommando zu finden. Dazu wird &lt;br /&gt;
der Kommandoname zuerst in der Hashtabelle gesucht, dann wird er mit den Synonymen, mit den Scriptfunktionen und &lt;br /&gt;
schließlich mit den Shellfunktionen verglichen. &lt;br /&gt;
&lt;br /&gt;
Wird auf diese Weise kein Programm dieses Namens gefunden, werden alle in der PATH-Umgebungsvariablen aufgeführten &lt;br /&gt;
Verzeichnisse nach einer ausführbaren Datei dieses Namens durchsucht. Wird auch hier kein passendes Kommando gefunden, &lt;br /&gt;
gibt die Shell eine Fehlermeldung aus.&lt;br /&gt;
&lt;br /&gt;
===which und type===&lt;br /&gt;
====which====&lt;br /&gt;
which gibt die vollen Pfadnamen der Dateien aus, die bei Benutzung des angegebenen Befehls ausgeführt werden würden.&lt;br /&gt;
&lt;br /&gt;
 which [-a] Dateiname &lt;br /&gt;
&lt;br /&gt;
Optionen:&lt;br /&gt;
&lt;br /&gt;
* -a : Alle Treffer ausgeben, nicht nur den ersten&lt;br /&gt;
* --skip-dot : Verzeichnisse, die mit einem Punkt beginnen, auslassen&lt;br /&gt;
&lt;br /&gt;
Beispiel&lt;br /&gt;
 root@zero:~# which startx&lt;br /&gt;
 /usr/bin/startx&lt;br /&gt;
&lt;br /&gt;
====type====&lt;br /&gt;
Anzeigen der absoluten Pfadnamen von Befehlen, und ob sich diese Befehle in der Hash-Tabelle der aktuellen&lt;br /&gt;
Shell befinden.&lt;br /&gt;
&lt;br /&gt;
 type [Optionen] Befehle&lt;br /&gt;
&lt;br /&gt;
Beispiel&lt;br /&gt;
 root@zero:~# type ls&lt;br /&gt;
 ls is aliased to `ls --color=auto'&lt;br /&gt;
&lt;br /&gt;
Optionen:&lt;br /&gt;
&lt;br /&gt;
* -a : Alle vorkommenden Befehle werden ausgegeben, nicht nur das, welches aufgerufen werden würde&lt;br /&gt;
 root@zero:~# type '''-a''' ls&lt;br /&gt;
 ls is aliased to `ls --color=auto'&lt;br /&gt;
 ls is /bin/ls&lt;br /&gt;
&lt;br /&gt;
* -p : Anzeigen des Eintrags von Befehl in der Hash-Tabelle. Dieser Wert kann sich vom ersten Auftreten des Befehls in PATH&lt;br /&gt;
unterscheiden&lt;br /&gt;
 root@zero:~# type '''-p''' apache2&lt;br /&gt;
 /usr/sbin/apache2&lt;br /&gt;
&lt;br /&gt;
* -t : Anzeigen, ob Befehl ein Aliasname, ein Schlüsselwort, eine Funktion, ein eingebauter Befehl oder eine Datei ist&lt;br /&gt;
 root@zero:~# type '''-t''' apache2&lt;br /&gt;
 file&lt;/div&gt;</summary>
		<author><name>192.168.178.46</name></author>
	</entry>
	<entry>
		<id>https://www.xinux.net/index.php?title=Linux_Grundlagen&amp;diff=44</id>
		<title>Linux Grundlagen</title>
		<link rel="alternate" type="text/html" href="https://www.xinux.net/index.php?title=Linux_Grundlagen&amp;diff=44"/>
		<updated>2009-07-06T10:14:14Z</updated>

		<summary type="html">&lt;p&gt;192.168.178.46: /* Ersetzen von Textteilen */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Einführung==&lt;br /&gt;
===Geschichte Unix===&lt;br /&gt;
====1969====&lt;br /&gt;
Am Anfang von Linux steht Multics, ein von Bell Laboratories geschaffenes &amp;quot;Betriebssystem&amp;quot;, &lt;br /&gt;
das noch mit Lochkarten arbeitete. Multics wird mit Unterstützung von AT&amp;amp;T und Western &lt;br /&gt;
Electric unter Mitarbeit von Ken Thompson und Dennis Ritchie weiterentwickelt. Obwohl sich &lt;br /&gt;
Bell Laboratories bald zurückzieht, gibt Thompson das Projekt nicht auf.  Zum Entwicklerteam &lt;br /&gt;
gehören auch Rudd Canaday und Brian Kernighan. Letzterer gibt 1970 dem Betriebssystem den Namen UNIX. &lt;br /&gt;
Thompson definiert 7 Richtlinien für UNIX:&lt;br /&gt;
 &lt;br /&gt;
# Hierarchische Anordnung der Dateisysteme&lt;br /&gt;
# Die Ausgabe von Daten an die Peripherie(-geräte) und Dateien soll gleich sein.&lt;br /&gt;
# Prozesse und Programme sollen miteinander kommunizieren.&lt;br /&gt;
# Multitasking (voneinander getrennte Prozesse)&lt;br /&gt;
# Persönliche Shell's&lt;br /&gt;
# Der Compiler soll für viele Programmiersprachen tauglich sein.&lt;br /&gt;
# Portabilität&lt;br /&gt;
&lt;br /&gt;
====1971====&lt;br /&gt;
Bis 1971 ist das für eine DEC PDP-7 geschriebene Unix als Version 1 auf eine PDP-11 portiert. Bis&lt;br /&gt;
zur Version 4 entwickelt Ritchie die Programmier- (Hoch-) Sprache C. Das in Assembler geschriebene&lt;br /&gt;
Unix wird fast völlig nach C übersetzt, wodurch zum erstenmal die geforderte Hardware-Unabhängigkeit&lt;br /&gt;
des Betriebssystems realisiert werden kann.&lt;br /&gt;
&lt;br /&gt;
===Distributionen===&lt;br /&gt;
{| Border=1 Cellpadding=2&lt;br /&gt;
| &lt;br /&gt;
|Url&lt;br /&gt;
|Paketformat&lt;br /&gt;
|-&lt;br /&gt;
|Red Hat&lt;br /&gt;
|www.redhat.com&lt;br /&gt;
|rpm&lt;br /&gt;
|-&lt;br /&gt;
|fedora&lt;br /&gt;
|fedora.redhat.com&lt;br /&gt;
|rpm&lt;br /&gt;
|-&lt;br /&gt;
|CentOS&lt;br /&gt;
|www.centos.org&lt;br /&gt;
|rpm&lt;br /&gt;
|-&lt;br /&gt;
|Suse/openSUSE&lt;br /&gt;
|www.opensuse.org&lt;br /&gt;
|rpm&lt;br /&gt;
|-&lt;br /&gt;
|Debian&lt;br /&gt;
|www.debian.org&lt;br /&gt;
|deb&lt;br /&gt;
|-&lt;br /&gt;
|Ubuntu&lt;br /&gt;
|www.ubuntu.com&lt;br /&gt;
|deb&lt;br /&gt;
|-&lt;br /&gt;
|Mandrake&lt;br /&gt;
|www.linux-mandrake.com&lt;br /&gt;
|rpm&lt;br /&gt;
|-&lt;br /&gt;
|Easy Linux&lt;br /&gt;
|www.easy-linux.de&lt;br /&gt;
|rpm&lt;br /&gt;
|-&lt;br /&gt;
|Turbo&lt;br /&gt;
|www.turbolinux.com&lt;br /&gt;
|rpm&lt;br /&gt;
|-&lt;br /&gt;
|minis&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|toms&lt;br /&gt;
|www.toms.net/rb&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|damn small linux&lt;br /&gt;
|www.damnsmalllinux.org&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|pocket-linux&lt;br /&gt;
|www.pocket-linux.org&lt;br /&gt;
|&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
====Bücher====&lt;br /&gt;
 Titel : Das Linux Anwenderhandbuch und Leitfaden für die Systemverwaltung&lt;br /&gt;
 Autor : Sebastian Hetze, Dirk Hohndel, Olaf Kirch und Martin Müller&lt;br /&gt;
 Verlag: Lunetix&lt;br /&gt;
 ISBN : 3-929764-06-7&lt;br /&gt;
&lt;br /&gt;
 Titel : Linux in a Nutshell&lt;br /&gt;
 Autor : Jessica Perry Hekman und die Mitarbeiter von O'Reilly &amp;amp; Associates&lt;br /&gt;
 Verlag: O'Reilly&lt;br /&gt;
 ISBN : 3-930673-57-6&lt;br /&gt;
&lt;br /&gt;
 Titel : Linux - Wegweiser zur Installation und Konfiguration&lt;br /&gt;
 Autor : Matt Welsh, Lar Kaufman, Matthias Kalle Dallheimer&lt;br /&gt;
 Verlag: O'Reilly&lt;br /&gt;
 ISBN : 3-930673-58-4 (deutsch), 1-56592-469-X (englisch)&lt;br /&gt;
&lt;br /&gt;
 Titel : Linux - Installation, Konfiguration, Anwendung&lt;br /&gt;
 Autor : Michael KoflerMultitasking&lt;br /&gt;
 Verlag: Addison-Wesley&lt;br /&gt;
 ISBN : 3-8273-1475-5&lt;br /&gt;
&lt;br /&gt;
 Titel : Linux - Wegweiser für Netzwerker&lt;br /&gt;
 Autor : Olaf Kirch&lt;br /&gt;
 Verlag: O'Reilly&lt;br /&gt;
 ISBN : 3-930673-18-5&lt;br /&gt;
&lt;br /&gt;
 Titel : TCP/IP-Netzwerk-Administration&lt;br /&gt;
 Autor : Craig Hunt&lt;br /&gt;
 Verlag: O'Reilly&lt;br /&gt;
 ISBN : 3-89721-110-6&lt;br /&gt;
&lt;br /&gt;
 Titel : Essential System Administration&lt;br /&gt;
 Autor : Eleen Frisch&lt;br /&gt;
 Verlag: O'Reilly&lt;br /&gt;
 ISBN : 1-56592-127-5&lt;br /&gt;
&lt;br /&gt;
==Betriebssystem==&lt;br /&gt;
===Was ist ein Betriebssystem?===&lt;br /&gt;
&lt;br /&gt;
Ein Betriebssystem liegt logisch gesehen zwischenAnwendungsprogramm und Hardware.&lt;br /&gt;
&lt;br /&gt;
Es nimmt die Anforderungen der Anwendungsprogramme entgegen und leitet&lt;br /&gt;
diese kontrolliert an die Hardware weiter. Kein Anwendungsprogramm sollte&lt;br /&gt;
direkt auf die Hardware zugreifen können. Den zentralen Zugang schafft einzig&lt;br /&gt;
das Betriebssystem. Somit kann das Betriebssystem unsinnige Anforderungen&lt;br /&gt;
oder Bedienungsfehler abblocken.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Image:Linux.jpg]]&lt;br /&gt;
&lt;br /&gt;
===Aufgaben eines Betriebssystems===&lt;br /&gt;
&lt;br /&gt;
# Verbergen der Komplexität der Maschine vor dem Anwender (Abstraktion)&lt;br /&gt;
# Bereitstellen einer Benutzerschnittstelle (&amp;quot;Kommandointerpreter&amp;quot;, &amp;quot;Shell&amp;quot;)&lt;br /&gt;
# Bereitstellen einer normierten Programmierschnittstelle (API)&lt;br /&gt;
# Verwaltung der Ressourcen der Maschine::&lt;br /&gt;
Hauptspeicher&lt;br /&gt;
Prozessor(en)&lt;br /&gt;
Hintergrundspeicher (Platte, Band, etc.)&lt;br /&gt;
Geräte (Terminal, Drucker, Plotter, etc.)&lt;br /&gt;
Rechenzeit&lt;br /&gt;
Koordination von Prozessen&lt;br /&gt;
&lt;br /&gt;
===Aufbau eines Betriebssystems===&lt;br /&gt;
&lt;br /&gt;
Ein Rechensystem besteht aus Hardware, Systemprogrammen und Anwendungs-&lt;br /&gt;
programmen. Unter einem Betriebssystem wird meist die Summe aus Betriebs-&lt;br /&gt;
systemkern (Kernel) und den wichtigsten Systemprogrammen verstanden. Ein&lt;br /&gt;
minimaler LINUX-Kernel besitzt ungefähr eine Größe von 400 - 800 kByte.&lt;br /&gt;
Weitere wichtige Systemkomponenten benötigen zusätzlich 10 - 100 Mbyte&lt;br /&gt;
Plattenplatz.&lt;br /&gt;
&lt;br /&gt;
Ein Betriebssystem stellt den Rechner als erweiterte Maschine (virtuelle&lt;br /&gt;
Maschine) über definierte Software-Schnittstellen zur Verfügung.&lt;br /&gt;
Das Betriebssystem dient als Betriebsmittelverwalter, der Anforderungen&lt;br /&gt;
befriedigt, protokolliert, abrechnet und vermittelt.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Aufgaben des Betriebssystemkerns:&lt;br /&gt;
&lt;br /&gt;
{| Border=1 Cellpadding=2&lt;br /&gt;
|Prozessverwaltung  (dispatching and scheduling)&lt;br /&gt;
| Mehrere Benutzer können mit mehreren Aktionen gleichzeitig im System arbeiten, ohne sich gegenseitig zu beeinflussen. Damit dies möglich ist,  müssen die Aktionen organisiert, koordiniert und verwaltet werden. Die zu verwaltende Einheit nennt man Prozess.&lt;br /&gt;
|-&lt;br /&gt;
|Speicherverwaltung   (memory management)&lt;br /&gt;
|Zuteilen von Speicherbereichen an laufende Prozesse, Schutz der Speicherbereiche vor unbefugten Zugriffen, bei Speicherengpässen: Auslagern von ganzen (swapping) oder von Teilen (paging) von Prozessen auf die Platte (swap file).&lt;br /&gt;
|-&lt;br /&gt;
|Dateiverwaltung  (file handling)&lt;br /&gt;
|Zuteilung von Plattenplatz für Programme, Benutzer und Systemdienste, Schreiben, Lesen und Strukturieren der Daten auf den Massenspeichern; Durch Bereitstellung einer entsprechenden Schnittstelle (VFS, virtual file system) kann der Kern Dateisysteme unterschiedlichster Art (EXT2, FAT, NFS, HPFS, NTFS, ...) ansprechen.&lt;br /&gt;
|-&lt;br /&gt;
|Geräteverwaltung  (resource management)&lt;br /&gt;
|Der Kern ermöglicht und kontrolliert den Zugriff auf die Hardware. Er steuert die Ein- und Ausgabetätigkeiten der Anwender. An den Kern&lt;br /&gt;
gebunden sind die entsprechenden Gerätetreiber (device driver), die damit eine Kommunikation zwischen Kern und Hardware ermöglichen.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
===Multitasking===&lt;br /&gt;
&lt;br /&gt;
Multitasking bedeutet, dass ein Rechner aus Anwendersicht mehrere Aufgaben&lt;br /&gt;
(Tasks) gleichzeitg übernehmen kann. Das Betriebssystem (OS) unterteilt die&lt;br /&gt;
gleichzeitig anstehenden Aufgaben in Einzelarbeitsschritte (Prozesse) und&lt;br /&gt;
managed durch ein Zeitscheibenverfahren (scheduling) die gleichmäßige&lt;br /&gt;
Abarbeitung der Prozesse.&lt;br /&gt;
&lt;br /&gt;
Es wird unterschieden zwischen:&lt;br /&gt;
&lt;br /&gt;
*non-präamptiven (kooperativen=die Ressourcen werden vom aktiven Prozess freigegeben, bei einem Hänger steht das ganze System)&lt;br /&gt;
&lt;br /&gt;
und&lt;br /&gt;
&lt;br /&gt;
*präamptiven (reinem=der Betriebssystemkern steuert Taskwechsel, indem nach einer festgelegten Zeit vom gerade aktiven Prozess zum nächsten weitergeschaltet wird)&lt;br /&gt;
&lt;br /&gt;
===Mehrprozessorbetrieb===&lt;br /&gt;
&lt;br /&gt;
Bei mehreren Prozessoren und Unterstützung durch das OS&lt;br /&gt;
(NT,Linux,Unix,Novell) können mehrere Tasks auf diese verteilt werden und&lt;br /&gt;
gleichzeitig bearbeitet werden. Nachteilig ist, dass dies nicht oder kaum von&lt;br /&gt;
Anwendungsprogrammen unterstützt wird und es zu Kommunikationsproblemen&lt;br /&gt;
zwischen den einzelnen Tasks kommen kann.&lt;br /&gt;
&lt;br /&gt;
===Arten von von Betriebssystemen===&lt;br /&gt;
&lt;br /&gt;
{|Border=1 Cellpadding=2&lt;br /&gt;
|&lt;br /&gt;
|SingleUser  &lt;br /&gt;
|Multiuser&lt;br /&gt;
|-&lt;br /&gt;
|Single Tasking&lt;br /&gt;
|MS - DOS&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|Multi Tasking&lt;br /&gt;
|Windows 3.x&lt;br /&gt;
|UNIX&lt;br /&gt;
|-&lt;br /&gt;
|&lt;br /&gt;
|Windows 95/98&lt;br /&gt;
|Linux&lt;br /&gt;
|-&lt;br /&gt;
|&lt;br /&gt;
|Windows NT4 ohne Erweiterungen&lt;br /&gt;
|VMS&lt;br /&gt;
|-&lt;br /&gt;
|&lt;br /&gt;
|OS/2 &lt;br /&gt;
|Windows NT mit  Erweiterungen&lt;br /&gt;
|-&lt;br /&gt;
|&lt;br /&gt;
|Apple&lt;br /&gt;
|Windows 2000, XP, 2003&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
===SHELL===&lt;br /&gt;
&lt;br /&gt;
Wenn man mit Linux arbeiten will, kann man nicht direkt mit dem Betriebssystem&lt;br /&gt;
kommunizieren. Man braucht dazu ein Hilfsprogramm, welches die&lt;br /&gt;
Kommandoeingaben ordnungsgemäß an das Betriebssystem weiterleitet. Dieses&lt;br /&gt;
Hilfsprogramm hat den Namen Shell.&lt;br /&gt;
&lt;br /&gt;
Die Shell schirmt den Betriebssystemkern von den Anwendungsprogrammen ab.&lt;br /&gt;
Die unterschiedlichen Shells erfüllen alle dieselbe Aufgabe, sie unterscheiden sich&lt;br /&gt;
allerdings in ihrer Syntax.&lt;br /&gt;
&lt;br /&gt;
==Die Installation im Überblick==&lt;br /&gt;
&lt;br /&gt;
Die Installation von Linux geschieht in folgenden Schritten:&lt;br /&gt;
&lt;br /&gt;
# Analyse (Welche Hardware habe ich? ,Hab ich weitere Betriebsysteme?)&lt;br /&gt;
# Booten des Linux-Kernels. (von CD oder Diskette)&lt;br /&gt;
# Laden einer RAM-Disk (das macht das Installationsprogramm automatisch).&lt;br /&gt;
# Partitionieren der Festplatte (fdisk).&lt;br /&gt;
# Einrichten der Swappartition (mkswap), Formatieren der Festplatte (mkfs).&lt;br /&gt;
# Montieren der Dateisysteme (mount), Aktivieren der Swapbereiche (swapon).&lt;br /&gt;
# Kopieren und Auspacken der Daten vom Installationsmedium auf die Festplatte (die eigentliche Installation). (rpm, dpkg oder tar).&lt;br /&gt;
# Geeignete Wahl der Bootmethode unter Berücksichtigung von Punkt 1 (grub, lilo).&lt;br /&gt;
# Konfiguration des Systems (Netz, Modem etc...).&lt;br /&gt;
&lt;br /&gt;
==Erste Schritte==&lt;br /&gt;
===Anmelden===&lt;br /&gt;
Sie können sich nun mit dem Usernamen und dem Passwort, das sie bei der Installation angelegt haben anmelden!&lt;br /&gt;
[[Image:benutzer.jpg]]&lt;br /&gt;
&lt;br /&gt;
[[Image:passwd.jpg]]&lt;br /&gt;
&lt;br /&gt;
===Terminal öffnen===&lt;br /&gt;
&lt;br /&gt;
Ein Terminal öffnen Sie über das Startmenü:&lt;br /&gt;
&lt;br /&gt;
[[Image:Terminalde.jpg]]&lt;br /&gt;
&lt;br /&gt;
Das geöffnete Terminal sieht dann folgendermaßen aus:&lt;br /&gt;
&lt;br /&gt;
[[Image:Terminalde2.jpg]]&lt;br /&gt;
&lt;br /&gt;
===Sudo===&lt;br /&gt;
Rootrechte erlangen sie über den &amp;quot;Sudo&amp;quot;-Befehl&lt;br /&gt;
 &lt;br /&gt;
''Den nächsten Befehl als root ausführen''&lt;br /&gt;
 xinux@zero:~$ sudo cat /etc/shadow&lt;br /&gt;
 [sudo] password for xinux:&lt;br /&gt;
&lt;br /&gt;
''Eine komplette Sitzung als root starten''&lt;br /&gt;
 xinux@zero:~$ sudo -i&lt;br /&gt;
 [sudo] password for xinux:&lt;br /&gt;
 root@zero:~#&lt;br /&gt;
&lt;br /&gt;
===Virtuelle Konsolen===&lt;br /&gt;
&lt;br /&gt;
In die Virtuelle Konsole gelangen sie über &amp;quot;STRG+ALT+(F1-F6)&amp;quot;.&lt;br /&gt;
Sie funktioniert wie ein ganz normales Terminal, und mit &amp;quot;ALT+F7&amp;quot;&lt;br /&gt;
gelangen sie wieder zurück auf die grafische Benutzeroberfläche&lt;br /&gt;
&lt;br /&gt;
===Abmelden===&lt;br /&gt;
&lt;br /&gt;
Abmelden können Sie sich wieder über das Startmenu unter:&lt;br /&gt;
&lt;br /&gt;
[[Image:Logout.jpg]]&lt;br /&gt;
&lt;br /&gt;
Fals sie nur einzelne Sitzungen in einem der Terminals oder &lt;br /&gt;
den Virtuellen Konsolen Abmelden wollen benutzen sie dazu den Befehl: &amp;quot;exit&amp;quot;&lt;br /&gt;
&lt;br /&gt;
===Herunterfahren===&lt;br /&gt;
&lt;br /&gt;
Das Herunterfahren funktioniert auf dem selben Weg.&lt;br /&gt;
&lt;br /&gt;
Entweder sie Benutzen wieder das Startmenü und benutzen diesmal den &amp;quot;Ausschalten ...&amp;quot; Knopf,&lt;br /&gt;
&lt;br /&gt;
Oder sie geben den äquivalenten &amp;quot;shutdown&amp;quot;-Befehl in einem Terminal bzw. der virtuellen Konsole ein.&lt;br /&gt;
&lt;br /&gt;
Allerdings müssen sie dazu als Administrator angemeldet sein s. &amp;quot;Sudo&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Wenn Sie den &amp;quot;shutdown&amp;quot;-Befehl benutzen wollen muss hinter den Befehl&lt;br /&gt;
&lt;br /&gt;
eine Zeitangabe in Minuten oder das wort &amp;quot;now&amp;quot; für sofortiges Ausschalten hinzugefügt werden:&lt;br /&gt;
&lt;br /&gt;
 xinux@zero:~$ sudo -i&lt;br /&gt;
 root@zero:~# shutdown 60&lt;br /&gt;
 &lt;br /&gt;
 Broadcast message from xinux@zero &lt;br /&gt;
         (/dev/pts/3) at 14:29 ...&lt;br /&gt;
 &lt;br /&gt;
 The system is going down for maintenance in 60 minutes!&lt;br /&gt;
&lt;br /&gt;
Sollten sie den Befehl widerrufen wollen dann drücken sie &amp;quot;STRG+C&amp;quot;,&lt;br /&gt;
&lt;br /&gt;
in dem Terminal in dem der shutdown Befehl gestartet wurde,&lt;br /&gt;
&lt;br /&gt;
oder geben sie den &amp;quot;shutdown&amp;quot;-Befehl zusammen mit der Abbruchoption &amp;quot;-c&amp;quot; in einem anderen Terminal ein:&lt;br /&gt;
&lt;br /&gt;
 root@zero:~# shutdown -c&lt;br /&gt;
&lt;br /&gt;
 shutdown: Shutdown cancelled&lt;br /&gt;
 root@zero:~# &lt;br /&gt;
&lt;br /&gt;
Wenn Sie den Rechner Neustarten möchten gibt es dazu die Option &amp;quot;-r&amp;quot; für den &amp;quot;shutdown&amp;quot;-Befehl&lt;br /&gt;
&lt;br /&gt;
oder den &amp;quot;reboot&amp;quot;-Befehl die beide auch als root ausgeführt werden müssen:&lt;br /&gt;
&lt;br /&gt;
 xinux@zero:~$ sudo -i&lt;br /&gt;
 [sudo] password for xinux: &lt;br /&gt;
 root@zero:~# shutdown -r now&lt;br /&gt;
&lt;br /&gt;
 root@zero:~# reboot&lt;br /&gt;
&lt;br /&gt;
===&amp;quot;man&amp;quot;===&lt;br /&gt;
&lt;br /&gt;
Programm zum Einsehen der Online-Manuals&lt;br /&gt;
&lt;br /&gt;
Die Manuals sind in folgende Sektionen unterteilt:&lt;br /&gt;
# Ausführbare Programme oder Shellbefehle&lt;br /&gt;
# Systemaufrufe (Kernelfunktionen)&lt;br /&gt;
# Bibliotheksaufrufe (Funktionen in System-Bibliotheken)&lt;br /&gt;
# Spezielle Dateien (gewöhnlich in /dev)&lt;br /&gt;
# Dateiformate und Konventionen, z. B. /etc/passwd&lt;br /&gt;
# Spiele&lt;br /&gt;
# Makropakete und Konventionen, z. B. man(7), groff(7)&lt;br /&gt;
# Systemadministrationsbefehle (in der Regel nur für root)&lt;br /&gt;
# Kernelroutinen [Nicht Standard]&lt;br /&gt;
&lt;br /&gt;
Aufruf eines Manuals erfolgt durch ''man kommando''&lt;br /&gt;
Beendet wird durch Drücken des Buchstabens q&lt;br /&gt;
Gesucht wird vorwärts durch Eingabe eines /suchausdruck&lt;br /&gt;
Gesucht wird rückwärts durch Eingabe eines ?suchausdruck&lt;br /&gt;
&lt;br /&gt;
Beispiele:&lt;br /&gt;
&lt;br /&gt;
      man passwd        Anschauen der Manualseite zum Programm passwd&lt;br /&gt;
      man 5 passwd      Anschauen der Manualseite zur Datei /etc/passwd&lt;br /&gt;
      man -a passwd     Anschauen aller Manualseiten zu passwd&lt;br /&gt;
      man -k passwd     Durchsucht die Kurzbeschreibungen der Manualseite&lt;br /&gt;
                        nach passwd und gibt alle Treffer aus&lt;br /&gt;
      man -f passwd      Gibt alle gefunden Kurzbescheibungen zu passwd aus&lt;br /&gt;
      man -L en passwd Gibt englische Manualseiten aus&lt;br /&gt;
&lt;br /&gt;
===WHO===&lt;br /&gt;
&lt;br /&gt;
WHO(1)           Dienstprogramme für Benutzer        WHO(1)&lt;br /&gt;
&lt;br /&gt;
Bezeichnung&lt;br /&gt;
      who - gibt Information über die aktiven Anwender des Sys&lt;br /&gt;
      tems&lt;br /&gt;
&lt;br /&gt;
Syntax&lt;br /&gt;
      who [-Optionen] [Datei] [ami]&lt;br /&gt;
&lt;br /&gt;
Beschreibung&lt;br /&gt;
   who zeigt die Namen, das Terminal und die Loginzeit der&lt;br /&gt;
   aktiven Benutzer. Außerdem gibt es Antwort auf die exis&lt;br /&gt;
   tentielle Frage wer bin ich?! z.B. mit whoami.&lt;br /&gt;
   Wird eine Datei angegeben, so wird die Information über&lt;br /&gt;
   die aktiven Anwender aus dieser Datei genommen. Vor&lt;br /&gt;
   eingestellt ist die Datei /etc/utmp&lt;br /&gt;
&lt;br /&gt;
Optionen&lt;br /&gt;
   -i     zeigt die Dauer der aktuellen Sitzungen&lt;br /&gt;
   -m     gibt den eigenen Benutzernamen mit E-mail Adresse aus&lt;br /&gt;
   -q     gibt nur die Benutzernamen und die Zahl der aktiven Benutzer aus&lt;br /&gt;
   -s     Ausgabe im Standardformat&lt;br /&gt;
   -u     wie -i&lt;br /&gt;
   -w     markiert alle Benutzer mit +, die eine Nachricht empfangen können,&lt;br /&gt;
          oder mit einem -, wenn der Empfang von Nachrichten abgeschaltet&lt;br /&gt;
          wurde&lt;br /&gt;
   -H     gibt zusätzlich eine Kopfzeile mit der Bedeutung der einzelnen&lt;br /&gt;
          Spalten aus&lt;br /&gt;
   -T     wie -w&lt;br /&gt;
&lt;br /&gt;
Siehe auch:          das LunetIX Linuxhandbuch&lt;br /&gt;
&lt;br /&gt;
===Was geht vor auf meinem System? (date,who)===&lt;br /&gt;
&lt;br /&gt;
Das Kommando date dient zur Abfrage von Datum und Uhrzeit.&lt;br /&gt;
&lt;br /&gt;
 xinux@zero:~ &amp;gt; date&lt;br /&gt;
 Fre Mär 16 16:35:03 CET 2001&lt;br /&gt;
&lt;br /&gt;
oder auch Anzeige der Grennwich Zeit:&lt;br /&gt;
&lt;br /&gt;
 xinux@zero:~ &amp;gt; date -u&lt;br /&gt;
 Fre Mär 16 15:35:34 UTC 2001&lt;br /&gt;
&lt;br /&gt;
 xinux@zero:~ &amp;gt; date -u &amp;quot;+%X&amp;quot;&lt;br /&gt;
 15:37:19&lt;br /&gt;
&lt;br /&gt;
 xinux@zero:~ &amp;gt; date -u &amp;quot;+%x&amp;quot;&lt;br /&gt;
 01/15/02&lt;br /&gt;
&lt;br /&gt;
who zeigt alle angemeldeten Benutzer an&lt;br /&gt;
&lt;br /&gt;
 thomas@cardassia:~ &amp;gt; who&lt;br /&gt;
 thomas             tty1 Feb 27 16:39&lt;br /&gt;
 thomas             tty2 Mar 2 17:08&lt;br /&gt;
 tina               tty6 Mar 16 16:38&lt;br /&gt;
&lt;br /&gt;
Mit `who --help' bekommen Sie mehr Informationen.&lt;br /&gt;
&lt;br /&gt;
 thomas@cardassia:~ &amp;gt; who --help&lt;br /&gt;
&lt;br /&gt;
Benutzung: who [OPTION]... [ DATEI | ARG1 ARG2 ]&lt;br /&gt;
&lt;br /&gt;
 -H, --heading             print line of column headings&lt;br /&gt;
 -i, -u, --idle            add user idle time as HOURS:MINUTES, . or old&lt;br /&gt;
 -l, --lookup              attempt to canonicalize hostnames via DNS&lt;br /&gt;
 -m                        only hostname and user associated with stdin&lt;br /&gt;
 -q, --count               all login names and number of users logged on&lt;br /&gt;
 -s                        (ignored)&lt;br /&gt;
 -T, -w, --mesg            add user's message status as +, - or ?&lt;br /&gt;
     --message             same as -T&lt;br /&gt;
     --writable            same as -T&lt;br /&gt;
     --help                display this help and exit&lt;br /&gt;
     --version             output version information and exit&lt;br /&gt;
&lt;br /&gt;
==Das UNIX-Dateisystem==&lt;br /&gt;
===Verzeichnisbaum===&lt;br /&gt;
&lt;br /&gt;
[[Image:vztree.jpg]]&lt;br /&gt;
&lt;br /&gt;
Das Betriebssystem UNIX besitzt ein hierarchisches Dateisystem. Es besteht aus:&lt;br /&gt;
* Dateien (Files)&lt;br /&gt;
Dateien speichern Informationen (Text, Bilder, Sound, Videos, Programme) und&lt;br /&gt;
werden über den Dateinamen angesprochen.&lt;br /&gt;
&lt;br /&gt;
* Verzeichnissen (Directories, Kataloge)&lt;br /&gt;
Verzeichnisse besitzen ebenfalls einen Namen und dienen zur Ordnung des&lt;br /&gt;
Dateisystems. Ein Verzeichnis kann Dateien und Unterverzeichnisse&lt;br /&gt;
(Subdirectories) enthalten. Das oberste Verzeichnis im Dateisystem heisst&lt;br /&gt;
Rootverzeichnis oder kurz Root und wird durch / (sprich: slash)&lt;br /&gt;
gekennzeichnet.&lt;br /&gt;
&lt;br /&gt;
Im Gegensatz zu Windows kennt UNIX keine Laufwerke.&lt;br /&gt;
Das obige Bild zeigt ein typisches UNIX-Dateisystem.&lt;br /&gt;
Unterhalb des Rootverzeichnisses befinden sich eine Vielzahl vonVerzeichnissen.&lt;br /&gt;
&lt;br /&gt;
===Wichtige Verzeichnisse===&lt;br /&gt;
&lt;br /&gt;
• '''Homeverzeichnis'''&lt;br /&gt;
&lt;br /&gt;
das Verzeichnis, in dem man sich unmittelbar nach dem Anmelden befindet. Das&lt;br /&gt;
Homeverzeichnis wird vom Systemverwalter eingerichtet; jeder Anwender&lt;br /&gt;
besitzt ein festes Homeverzeichnis. z.B. /home/hans&lt;br /&gt;
&lt;br /&gt;
~ (Tilde) bzw. $HOME (Shellvariable) kennzeichnen das Homeverzeichnis.&lt;br /&gt;
&lt;br /&gt;
• '''Aktuelles Verzeichnis'''&lt;br /&gt;
&lt;br /&gt;
Verzeichnis, in dem man sich aktuell befindet.&lt;br /&gt;
Das aktuelle Verzeichnis wird mit dem Befehl cd (change directory) oder per&lt;br /&gt;
Mausklick verändert.&lt;br /&gt;
Ein einfacher Punkt . kennzeichnet das aktuelle Verzeichnis.&lt;br /&gt;
&lt;br /&gt;
• '''Elternverzeichnis'''&lt;br /&gt;
&lt;br /&gt;
Verzeichnis unmittelbar oberhalb des aktuellen Verzeichnisses.&lt;br /&gt;
Jedes Verzeichnis ausser / besitzt genau ein Elternverzeichnis.&lt;br /&gt;
Zwei Punkte .. kennzeichnen das Elternverzeichnis (abhängig vom aktuellen&lt;br /&gt;
VZ).&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Absoluter Pfadname:===&lt;br /&gt;
&lt;br /&gt;
Beschreibt ausgehend vom Rootverzeichnis den Weg zum Zielverzeichnis oder zur&lt;br /&gt;
Zieldatei. (Welche Verzeichnisse müssen ausgehend von / durchlaufen werden, um&lt;br /&gt;
zum Ziel zu kommen?) Ein absoluter Pfadname beginnt immer mit / .&lt;br /&gt;
&lt;br /&gt;
===Relativer Pfadname:===&lt;br /&gt;
&lt;br /&gt;
Beschreibt ausgehend vom aktuellen Verzeichnis den Weg zum Zielverzeichnis&lt;br /&gt;
oder zur Zieldatei; ein relativer Pfadname beginnt nicht mit / .&lt;br /&gt;
/home/suxer&lt;br /&gt;
absoluter Pfadname für das Verzeichnis sub1 im Homeverzeichnis von suxer&lt;br /&gt;
&lt;br /&gt;
===Verzeichnisstruktur===&lt;br /&gt;
&lt;br /&gt;
 /bin         Kommandos die beim starten benötigt werden (Zugriff hat jeder)&lt;br /&gt;
 /sbin        Wichtige System-Programme (In der Regel root vorberhalten)&lt;br /&gt;
 /boot        Hier findet man die Dateien des Bootmanagers und des Kernel.&lt;br /&gt;
 /dev         In diesem Verzeichnis stehen die Gerätedateien (Devices),&lt;br /&gt;
 /home        Alle Heimatverzeichnisse der Nutzer findet man hier.&lt;br /&gt;
 /lib         Beim Systemstart benötigten Bibliotheken und Modules stehen hier.&lt;br /&gt;
 /mnt         Mountpunkt für temporäre Partitionen&lt;br /&gt;
 /opt         Software, die nicht Installationsumfang von Linux gehören.&lt;br /&gt;
 /root        Heimatverzeichnis des Administrators.&lt;br /&gt;
 /tmp         Temporäre Dateien können hier abgelegt werden&lt;br /&gt;
 /usr         statische Dateien (kann read-only gemountet sein)&lt;br /&gt;
 /var         variable Dateien (muss beschreibar sein )&lt;br /&gt;
 /etc         Konfiguartionsdateien und Startscripte&lt;br /&gt;
 /proc        Virtuelles Dateisystem -&amp;gt; repräsentiert den Kernel&lt;br /&gt;
&lt;br /&gt;
===Unterverzeichnisse von /usr===&lt;br /&gt;
&lt;br /&gt;
 sbin         Programme für root die beim Start nicht benötigt werden&lt;br /&gt;
 bin          Programme für alle die beim Start nicht benötigt werden&lt;br /&gt;
 X11R6        Dateien des X-Window-Sytems&lt;br /&gt;
 bin          Ausführbare Programme&lt;br /&gt;
 doc          Dokumentationen&lt;br /&gt;
 etc          Konfigurationsdateien&lt;br /&gt;
 games        Spiele&lt;br /&gt;
 include      Headerdateien für C-Programme&lt;br /&gt;
 local        Pakete die nicht zur Distribution gehören ähnlich /opt&lt;br /&gt;
 share        Pakete die von mehreren Paketen genutzt werden&lt;br /&gt;
 share/man    Die Manualpages&lt;br /&gt;
 share/info   Seiten des Infosystems&lt;br /&gt;
 share/doc    Dokumentationen&lt;br /&gt;
 src          Sources von Programmen (Kernel und andere)&lt;br /&gt;
&lt;br /&gt;
===Unterverzeichnisse von /var===&lt;br /&gt;
&lt;br /&gt;
 cache        Zwischenspreicher für Progammes&lt;br /&gt;
 games        Variable Daten der Games (Scores etc...)&lt;br /&gt;
 lock         Sperrdateien&lt;br /&gt;
 log          Die Logdateien (wichtiges Verzeichnis für Admins)&lt;br /&gt;
 mail         Das Mailsystem&lt;br /&gt;
 run          Dateien zu laufemdem Prozessen&lt;br /&gt;
 spool        Spooldateien (z.B. für das Drucksystem&lt;br /&gt;
 state        Statusinfos&lt;br /&gt;
 tmp          Wie /tmp eventuell nicht auf root Partion&lt;br /&gt;
&lt;br /&gt;
==Einfache Komandos==&lt;br /&gt;
===cd: Wechseln des Arbeitsverzeichnis===&lt;br /&gt;
&lt;br /&gt;
Um festzustellen in welchem Verzeichnis man sich befindet, sollte man den&lt;br /&gt;
Befehl &amp;quot;pwd&amp;quot; benutzen,&lt;br /&gt;
&lt;br /&gt;
und mit dem Befehl &amp;quot;cd&amp;quot; kann man zwischen den Verzeichnissen wechseln:&lt;br /&gt;
&lt;br /&gt;
Wechsele ins homeverzeichnis von Xinux&lt;br /&gt;
&lt;br /&gt;
 xinux@zero:~$ cd /home/xinux/&lt;br /&gt;
 xinux@zero:~$ pwd&lt;br /&gt;
 /home/xinux&lt;br /&gt;
&lt;br /&gt;
cd ~ -&amp;gt; wechsele ins jeweilige Homeverzeichnis&lt;br /&gt;
&lt;br /&gt;
cd .. -&amp;gt; wechsele ein Verzeichnis höher&lt;br /&gt;
&lt;br /&gt;
cd ../verzeichnis -&amp;gt; wechsele in eine paralleles Verzeichnis &amp;lt;- (ist eine relative Pfadangabe !)&lt;br /&gt;
&lt;br /&gt;
cd - -&amp;gt; wechsele in das Verzeichnis, in dem vorher gearbeitet wurde.&lt;br /&gt;
&lt;br /&gt;
Mit cd / wechselt man in das Wurzelverzeichnis.&lt;br /&gt;
&lt;br /&gt;
 xinux@zero:/var/log$ cd /&lt;br /&gt;
 xinux@zero:/$ pwd&lt;br /&gt;
 /&lt;br /&gt;
&lt;br /&gt;
===ls: Listing===&lt;br /&gt;
&lt;br /&gt;
Den Inhalt von Verzeichnissen kann man sich mit dem Befehl &amp;quot;ls&amp;quot; anzeigen lassen&lt;br /&gt;
wobei &amp;quot;ls&amp;quot; eine Vielzahl von Optionen besitzt:&lt;br /&gt;
&lt;br /&gt;
 ls                                  standard&lt;br /&gt;
 ls -l                               langes listing&lt;br /&gt;
 ls -a                               alle Dateien&lt;br /&gt;
 ls -i                               mit Inode&lt;br /&gt;
 ls -h                               gut lesbare Dateigröße&lt;br /&gt;
 ls -d                               Verzechnis wird angezeigt, nicht der Inhalt&lt;br /&gt;
 ls -L                               sortiert nach Größe&lt;br /&gt;
 ls -t                               sortiert nach Datum&lt;br /&gt;
 ls -F                               mit nützlichem Anhang&lt;br /&gt;
&lt;br /&gt;
 xinux@zero:/$ ls -l /var/log/messages&lt;br /&gt;
 -rw-r----- 1 syslog adm 2296 2009-06-16 10:05 /var/log/messages&lt;br /&gt;
&lt;br /&gt;
===more: Seitenweises Anzeigen von Seiten===&lt;br /&gt;
 root@zero:~# more /var/log/messages&lt;br /&gt;
 ...&lt;br /&gt;
&lt;br /&gt;
===head: erste Zeilen anzeigen===&lt;br /&gt;
Erste 10 Zeilen anzeigen&lt;br /&gt;
 root@zero:~# head /var/log/messages&lt;br /&gt;
 Jun 15 12:37:08 zero syslogd 1.5.0#5ubuntu3: restart.&lt;br /&gt;
 Jun 15 12:38:43 zero kernel: [  830.065036] mtrr: your processor doesn't support write-combining&lt;br /&gt;
 Jun 15 12:46:05 zero pulseaudio[4817]: pid.c: Stale PID file, overwriting.&lt;br /&gt;
 Jun 15 13:05:24 zero -- MARK --&lt;br /&gt;
 ...&lt;br /&gt;
&lt;br /&gt;
Erste zwei Zeilen anzeigen&lt;br /&gt;
 root@zero:~# head -n 2 /var/log/messages&lt;br /&gt;
 Jun 15 12:37:08 zero syslogd 1.5.0#5ubuntu3: restart.&lt;br /&gt;
 Jun 15 12:38:43 zero kernel: [  830.065036] mtrr: your processor doesn't support write-combining&lt;br /&gt;
&lt;br /&gt;
===tail: letzte Zeilen anzeigen===&lt;br /&gt;
 &lt;br /&gt;
 root@zero:~# tail /var/log/syslog&lt;br /&gt;
 ...&lt;br /&gt;
 Jun 19 11:19:35 zero -- MARK --&lt;br /&gt;
 Jun 19 11:39:35 zero -- MARK --&lt;br /&gt;
 Jun 19 11:59:36 zero -- MARK --&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Letze 5 Zeilen anzeigen&lt;br /&gt;
 root@zero:~# tail -n 5 /var/log/auth.log&lt;br /&gt;
 Jun 18 14:30:01 zero CRON[12040]: pam_unix(cron:session): session closed for user root&lt;br /&gt;
 Jun 18 14:39:01 zero CRON[12191]: pam_unix(cron:session): session opened for user root by (uid=0)&lt;br /&gt;
 Jun 18 14:39:01 zero CRON[12191]: pam_unix(cron:session): session closed for user root&lt;br /&gt;
 Jun 18 14:40:01 zero CRON[12237]: pam_unix(cron:session): session opened for user root by (uid=0)&lt;br /&gt;
 Jun 18 14:40:01 zero CRON[12237]: pam_unix(cron:session): session closed for user root&lt;br /&gt;
&lt;br /&gt;
Letze Zeilen anzeigen und fortlaufend aktualisieren&lt;br /&gt;
 root@zero:~# tail -f /var/log/syslog&lt;br /&gt;
 ...&lt;br /&gt;
&lt;br /&gt;
===mkdir: Ein neues Verzeichnis erstellen===&lt;br /&gt;
&lt;br /&gt;
 mkdir        verzeichnis&lt;br /&gt;
Erstellt ein Verzeichnis im working directory (wd)&lt;br /&gt;
&lt;br /&gt;
 mkdir  -p    ver1/ver2&lt;br /&gt;
Erstellt ein Verzeichnis ver2 unterhalb von ver1&lt;br /&gt;
wenn ver1 nicht existiert wird es erstellt&lt;br /&gt;
&lt;br /&gt;
 mkdir -m 753 ver1&lt;br /&gt;
Es wird das Verzeichnis ver1 erstellt mit der mask 753&lt;br /&gt;
&lt;br /&gt;
 mkdir -v     ver1&lt;br /&gt;
Geschwätzige Ausgabe :)&lt;br /&gt;
&lt;br /&gt;
===Zum Löschen von leeren Verzeichnissen wird rmdir benutzt===&lt;br /&gt;
&lt;br /&gt;
 rmdir           ver1&lt;br /&gt;
Löscht das leere Verzeichnis ver1&lt;br /&gt;
&lt;br /&gt;
 rmdir -v        ver1&lt;br /&gt;
Löscht das leere Verzeichnis ver1 und ist geschwätzig&lt;br /&gt;
&lt;br /&gt;
 rmdir -p        /ver1/ver2/ver3&lt;br /&gt;
Löscht das Verzeichnis ver3; wenn dadurch ver2 ein leeres&lt;br /&gt;
Verzeichnis wird, wird dieses auch gelöscht , wenn ver1&lt;br /&gt;
dadurch ein leeres Verzeichnis wird, wird auch dieses gelöscht.&lt;br /&gt;
&lt;br /&gt;
===touch Verändern des Zeitstempels===&lt;br /&gt;
&lt;br /&gt;
Mit touch können wir eine neue leere Datei erzeugen (das ist nicht der eigentliche&lt;br /&gt;
Zweck von touch, eigentlich wird der Zeitstempel geändert)&lt;br /&gt;
&lt;br /&gt;
 touch            dateiname&lt;br /&gt;
&lt;br /&gt;
===Kopieren=== &lt;br /&gt;
cp ist das Kommando um Dateien zu kopieren &lt;br /&gt;
&lt;br /&gt;
Eine Kopie von dat1 mit dem Namen dat2 erstellen:&lt;br /&gt;
&lt;br /&gt;
 xinux@zero:~$ cp dat1 dat2&lt;br /&gt;
&lt;br /&gt;
Eine Kopie von dat1 ins Verzeichnis ver2 erstellen:&lt;br /&gt;
&lt;br /&gt;
 xinux@zero:~$ cp dat1 ver2/&lt;br /&gt;
 &lt;br /&gt;
Eine Kopie erstellen mit ausführlicher Anzeige:&lt;br /&gt;
&lt;br /&gt;
 xinux@zero:~$ cp -v dat1 dat2&lt;br /&gt;
 `dat1' -&amp;gt; `dat2'&lt;br /&gt;
&lt;br /&gt;
Eine Kopie erstellen mit Rückfrage fals etwas überschrieben wird:&lt;br /&gt;
&lt;br /&gt;
 xinux@zero:~$ cp -i dat1 dat2&lt;br /&gt;
 cp: overwrite `dat2'?&lt;br /&gt;
&lt;br /&gt;
Eine Kopie erstellen und die Rückfrage überbrücken:&lt;br /&gt;
&lt;br /&gt;
 xinux@zero:~$ cp -f dat1 dat2&lt;br /&gt;
&lt;br /&gt;
Eine Kopie von dat1 ins Verzeichnis ver2 erstellen fals keine neuere Version von dat1 vorliegt:&lt;br /&gt;
&lt;br /&gt;
 xinux@zero:~$ cp -u dat1 ver2/&lt;br /&gt;
&lt;br /&gt;
Eine Kopie erstellen fals ver2 auf dem selben Dateisystem wie dat1 liegt:&lt;br /&gt;
&lt;br /&gt;
 xinux@zero:~$ cp -x dat1 ver2/&lt;br /&gt;
&lt;br /&gt;
Eine Kopie von ver1, die als ver2 oder unter ver2 als ver1 gespeichert wird erstellen:&lt;br /&gt;
&lt;br /&gt;
 xinux@zero:~$ cp -r ver1/ ver2/&lt;br /&gt;
&lt;br /&gt;
Eine Kopie von einer Datei erstellen und ihre Attribute beibehalten:&lt;br /&gt;
&lt;br /&gt;
 xinux@zero:~$ cp -p sux1 sux2&lt;br /&gt;
&lt;br /&gt;
Eine Kopie erstellen bei der die Links erhalten bleiben:&lt;br /&gt;
&lt;br /&gt;
 xinux@zero:~$ cp -r ver1/ ver2/&lt;br /&gt;
&lt;br /&gt;
Eine Kopie erstellen zum Archivieren (-dpr):&lt;br /&gt;
&lt;br /&gt;
 xinux@zero:~$ cp -a ver1/ ver2/&lt;br /&gt;
&lt;br /&gt;
===rm: Löschen einer Datei===&lt;br /&gt;
&lt;br /&gt;
Um Dateien zu löschen, brauchen wir das Kommando &amp;quot;rm&amp;quot;:&lt;br /&gt;
&lt;br /&gt;
 rm               dat1        dat1 wird gelöscht&lt;br /&gt;
 rm         -i    dat1        dat1 wird nach Bestätigung gelöscht&lt;br /&gt;
 rm         -f    dat1        dat1 wird ohne Rückfragen gelöscht&lt;br /&gt;
 rm         -v    dat1        dat1 wird glöscht (geschwätzige Ausgabe)&lt;br /&gt;
 rm         -r    ver1        Löschen von nicht leeren Verzeichnissen&lt;br /&gt;
                              Achtung !!! Als root kann man sich damit Teile&lt;br /&gt;
                              oder sogar den gesamten Verzeichnisbaum&lt;br /&gt;
                              absägen !!!&lt;br /&gt;
&lt;br /&gt;
===mv: Verschieben===&lt;br /&gt;
&lt;br /&gt;
Mit dem Befehl &amp;quot;mv&amp;quot; werden Daten verschoben, folgendes gilt:&lt;br /&gt;
&lt;br /&gt;
 mv          dat1 dat2         &lt;br /&gt;
Die Datei dat1 wird in dat2 umbenannt&lt;br /&gt;
 mv          dat1 /ver1        &lt;br /&gt;
Die Datei dat1 wird nach /ver1 verschoben&lt;br /&gt;
&lt;br /&gt;
Die Parameter und ihre Bedeutung:&lt;br /&gt;
&lt;br /&gt;
      -i                      wenn eine Datei exisitiert wird vor dem&lt;br /&gt;
                              Überschreiben nachgefragt&lt;br /&gt;
      -v                      verbose (geschwätzig)&lt;br /&gt;
      -u                      nur neuere Daten werden bei Bedarf überschrieben&lt;br /&gt;
      -b                      wenn überschrieben werden soll, wird ein Backup&lt;br /&gt;
                              erstellt&lt;br /&gt;
      -S ENDUNG               das Backup bekommt die Endung ENDUNG&lt;br /&gt;
&lt;br /&gt;
===su Benutzer wechseln===&lt;br /&gt;
&lt;br /&gt;
 su -             &lt;br /&gt;
Wechsel zum Rootaccount, wie wenn dieser sich neu anmelden würde. (Bsp: su -)&lt;br /&gt;
&lt;br /&gt;
 su Benutzernamen &lt;br /&gt;
Wechsel der Identität zu Benutzer (gegebenenfalls Passwortabfrage)&lt;br /&gt;
&lt;br /&gt;
 su -c Kommando   &lt;br /&gt;
Kommando wird als rootaccount ausgeführt&lt;br /&gt;
&lt;br /&gt;
==Der Standard Editor vi==&lt;br /&gt;
Der vi ist der Standardeditor in der Unixwelt. Er ist in jedem Unix-Derivat&lt;br /&gt;
enthalten.&lt;br /&gt;
Der Editor hat zwar den schlechten Ruf umständlich zu bedienen zu sein, ist&lt;br /&gt;
jedoch sehr leistungsfähig und systemübergreifend verfügbar. Beim vi handelt es&lt;br /&gt;
sich um einen rein textorientierten Editor, der mittels eigener Kommandos&lt;br /&gt;
gesteuert wird.&lt;br /&gt;
&lt;br /&gt;
Der Editor VIM ist eine weitere Verbesserung von VI und leichter zu bedienen.&lt;br /&gt;
Und unter Ubuntu/Debian mit &amp;quot;apt-get install vim&amp;quot; zu installieren.&lt;br /&gt;
&lt;br /&gt;
===Starten des Editors:===&lt;br /&gt;
&lt;br /&gt;
Der Editorstart erfolgt einfach durch die Eingabe des Kommandos vi mit dem&lt;br /&gt;
Dateinamen der zu editierenden Datei als Parameter.&lt;br /&gt;
Beispiel:        &lt;br /&gt;
 vi sux.txt&lt;br /&gt;
&lt;br /&gt;
===Die Betriebsmodi des vi:===&lt;br /&gt;
&lt;br /&gt;
Ein Umstand, der dem vi den Ruf der komplizierten Bedienbarkeit zugetragen hat,&lt;br /&gt;
sind die unterschiedlichen Betriebsmodi des Editors. Genauer gesagt verfügt der&lt;br /&gt;
vi über drei Betriebsmodi:&lt;br /&gt;
&lt;br /&gt;
====Kommandomodus:====&lt;br /&gt;
&lt;br /&gt;
Innerhalb dieses Modus werden die eingegebenen Zeichen direkt als Befehle des&lt;br /&gt;
Editors interpretiert und ausgeführt. Dabei gibt es weder ein Bereitschaftszeichen&lt;br /&gt;
(Prompt) noch ein Echo (Ausgabe). Der Kommandomodus ist der Modus, in dem&lt;br /&gt;
sich der vi direkt nach seinem Start befindet.&lt;br /&gt;
&lt;br /&gt;
====Zeilenmodus oder Exmodus:====&lt;br /&gt;
&lt;br /&gt;
Dieser Modus ist der einzige Modus mit einem eigenen Bereitschaftszeichen,&lt;br /&gt;
nämlich dem Doppelpunkt (:). Das Prompt wird ebenso wie die Befehlsausgaben&lt;br /&gt;
in der Statuszeile angezeigt.&lt;br /&gt;
&lt;br /&gt;
====Eingabemodus:====&lt;br /&gt;
&lt;br /&gt;
Der Eingabemodus ist derjenige, in welchem der zu bearbeitende Text bearbeitet&lt;br /&gt;
werden kann. Alle hier eingegebenen Zeichen werden als Text für die aktuelle&lt;br /&gt;
Datei interpretiert. Zwischen den unterschiedlichen Modi kann jederzeit&lt;br /&gt;
gewechselt werden. Von Kommandomodus gelangen Sie durch mehere Wege in&lt;br /&gt;
den Eingabemodus. Man kann durch folgende Aktionen wechslen&lt;br /&gt;
&lt;br /&gt;
{| border=1 cellpadding=2&lt;br /&gt;
|i&lt;br /&gt;
|Text vor der aktuellen Cursorposition einfügen&lt;br /&gt;
|-&lt;br /&gt;
|I&lt;br /&gt;
|Text am Zeilenanfang einfügen&lt;br /&gt;
|-&lt;br /&gt;
|a&lt;br /&gt;
|Text hinter der aktuellen Cursorposition einfügen&lt;br /&gt;
|-&lt;br /&gt;
|A&lt;br /&gt;
|Text am Zeilenende einfügen&lt;br /&gt;
|-&lt;br /&gt;
|o&lt;br /&gt;
|Unterhalb der aktuellen Zeile eine neue Zeile einfügen&lt;br /&gt;
|-&lt;br /&gt;
|O&lt;br /&gt;
|Oberhalb der aktuellen Zeile eine neue Zeile einfügen&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Durch das Drücken der ESC - Taste gelangt man in den Kommandomodus zurück.&lt;br /&gt;
&lt;br /&gt;
Im Kommandomodus können Sie durch den Text navigieren und auch den Text&lt;br /&gt;
selbst bearbeiten, z.B ausschneiden, kopieren usw. Dazu sind einige Kommandos&lt;br /&gt;
nötig, von denen die wichtigsten im Folgenden erläutert werden:&lt;br /&gt;
&lt;br /&gt;
 xinux@zero:/$ vi iwas.txt&lt;br /&gt;
&lt;br /&gt;
[[Image:vim.jpg]]&lt;br /&gt;
&lt;br /&gt;
===Benutzen des Kommandomodus===&lt;br /&gt;
====Steuerung des Cursors durch den Text====&lt;br /&gt;
&lt;br /&gt;
Mittels folgender Kommandos bewegt sich der Cursor durch den Text:&lt;br /&gt;
&lt;br /&gt;
{| border=1 cellpadding=2&lt;br /&gt;
|h&lt;br /&gt;
|Cursor ein Zeichen nach links&lt;br /&gt;
|-&lt;br /&gt;
|l&lt;br /&gt;
|Cursor ein Zeichen nach rechts&lt;br /&gt;
|-&lt;br /&gt;
|k&lt;br /&gt;
|Cursor eine Zeile nach oben&lt;br /&gt;
|-&lt;br /&gt;
|j&lt;br /&gt;
|Cursor eine Zeile nach unten&lt;br /&gt;
|-&lt;br /&gt;
|w&lt;br /&gt;
|Cursor ein Wort nach rechts&lt;br /&gt;
|-&lt;br /&gt;
|b&lt;br /&gt;
|Cursor ein Wort nach links&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Alle diese Kommandos können mit einem vorgestellten Wiederholungsfaktor&lt;br /&gt;
arbeiten. Der Befehl 3w verschiebt demnach den Cursor um 3 Wörter nach rechts.&lt;br /&gt;
&lt;br /&gt;
====Angaben zur Positionierung====&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{| border=1 cellpadding=2&lt;br /&gt;
|STRG+U&lt;br /&gt;
|1⁄2 Bildschirmseite nach oben&lt;br /&gt;
|-&lt;br /&gt;
|STRG+D&lt;br /&gt;
|1⁄2 Bildschirmseite nach unten&lt;br /&gt;
|-&lt;br /&gt;
|STRG+B&lt;br /&gt;
|1 Bildschirmseite nach oben&lt;br /&gt;
|-&lt;br /&gt;
|STRG+F&lt;br /&gt;
|1 Bildschirmseite nach unten&lt;br /&gt;
|-&lt;br /&gt;
|/Ausdruck&lt;br /&gt;
|Sucht den Ausdruck (vorwärts) Weitersuchen mit n , N&lt;br /&gt;
|-&lt;br /&gt;
|?Ausdruck&lt;br /&gt;
|Sucht den Ausdurck (rückwärts) Weitersuchen mit n , N&lt;br /&gt;
|-&lt;br /&gt;
|0&lt;br /&gt;
|Zeilenanfang&lt;br /&gt;
|-&lt;br /&gt;
|$&lt;br /&gt;
|Zeilenende&lt;br /&gt;
|-&lt;br /&gt;
|w&lt;br /&gt;
|Nächstes Wort&lt;br /&gt;
|-&lt;br /&gt;
|b&lt;br /&gt;
|Vorheriges Wort&lt;br /&gt;
|-&lt;br /&gt;
|fc&lt;br /&gt;
|Auf das Zeichen c springen. c steht für ein beliebiges Zeichen&lt;br /&gt;
|-&lt;br /&gt;
|G&lt;br /&gt;
|Letzte Zeile der Datei&lt;br /&gt;
|-&lt;br /&gt;
|ng&lt;br /&gt;
|n-te Zeile der Datei&lt;br /&gt;
|-&lt;br /&gt;
|H&lt;br /&gt;
|Anfang der Bildschirmseite&lt;br /&gt;
|-&lt;br /&gt;
|L&lt;br /&gt;
|Ende der Bildschirmseite&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
====Befehle zur Textbearbeitung -&amp;gt; Was soll geschehen====&lt;br /&gt;
&lt;br /&gt;
{| Border=1 Cellpadding=2&lt;br /&gt;
|x&lt;br /&gt;
|Löscht Zeichen&lt;br /&gt;
|-&lt;br /&gt;
|d&lt;br /&gt;
|Löschen und in den Puffer laden&lt;br /&gt;
|-&lt;br /&gt;
|c&lt;br /&gt;
|Ändern&lt;br /&gt;
|-&lt;br /&gt;
|y&lt;br /&gt;
|In den Puffer laden&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
====Weitere wichtige Befehle:====&lt;br /&gt;
&lt;br /&gt;
{| Border=1 Cellpadding=2&lt;br /&gt;
|p&lt;br /&gt;
|Aus dem Puffer einfügen&lt;br /&gt;
|-&lt;br /&gt;
|u&lt;br /&gt;
|Undo, macht den letzten Befehl rückgängig&lt;br /&gt;
|-&lt;br /&gt;
|STRG+R&lt;br /&gt;
|Redo, macht den letzten Undo rückgängig&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
===Zeilen- oder Exmodus===&lt;br /&gt;
&lt;br /&gt;
Wie schon erwähnt wird der Zeilen oder Exmodus durch einen : eingeleitet.&lt;br /&gt;
Es folgen einige Beispiele.&lt;br /&gt;
&lt;br /&gt;
Befehle zum Speichern und Beenden:&lt;br /&gt;
&lt;br /&gt;
 :w          Schreibt Datei&lt;br /&gt;
 :w Datei2   Schreibt eine Kopie in Datei2&lt;br /&gt;
 :w !        Schreibt Datei (übergehe Schreibschutz)&lt;br /&gt;
 :w ! Datei2 Schreibt eine Kopie in Datei2 (übergehe Schreibschutz)&lt;br /&gt;
 :q          Schließe Datei&lt;br /&gt;
 :q!         Schließe Datei (verwerfe Änderungen)&lt;br /&gt;
 :wq         Schreibe Datei und beende Editor&lt;br /&gt;
 :wq!        Schreibe Datei und beende Editor (übergehe Schreibschutz)&lt;br /&gt;
 :q!         Schließe Datei (verwerfe Änderungen)&lt;br /&gt;
 :h          Hilfe anzeigen, durch drücken von :q Beenden der Hilfe&lt;br /&gt;
 :e Datei3   Editiere Datei3&lt;br /&gt;
 :e #        Editere vorhergehende Datei&lt;br /&gt;
 :1,3co9     Kopiere von der ersten bis zu dritten Zeile &lt;br /&gt;
             und füge den Inhalt unterhalb der neunte Zeile ein.&lt;br /&gt;
&lt;br /&gt;
Interaktionen mit Unix:&lt;br /&gt;
&lt;br /&gt;
 :r Datei4   Fügt Inhalt der Datei4 nach dem Cursor ein&lt;br /&gt;
 :r ! Befehl Fügt Ausgabe des Befehls nach dem Cursor ein&lt;br /&gt;
 :! Befehl   Führt den Befehl aus&lt;br /&gt;
 :sh         Starte Subshell -&amp;gt; mit exit kehrt man wieder zurück&lt;br /&gt;
             Eingabemodus zurück&lt;br /&gt;
&lt;br /&gt;
====Ersetzen von Textteilen====&lt;br /&gt;
&lt;br /&gt;
Die grundsätzliche Syntax lautet:&lt;br /&gt;
&lt;br /&gt;
 :[Zeilennummer,Zeilennummer]s/Muster/Ersetzung/[gc]&lt;br /&gt;
&lt;br /&gt;
 :s/worf/kirn/              der erste worf wird in der aktuellen Zeile durch kirn ersetzt&lt;br /&gt;
 :1,9s/worf/kirn/g          von der 1. bis zur 9. Zeile werden alle worf durch kirn ersetzt&lt;br /&gt;
 :1,$s/worf/kirn/           von der ersten bis zur letzten Zeile ersetze ersten worf durch&lt;br /&gt;
                            kirn&lt;br /&gt;
 :.,$s/worf/kirn/g          von der aktuellen bis zur letzten Zeile ersetze alle worf durch&lt;br /&gt;
                            kirn&lt;br /&gt;
 :1,.s/worf/kirn/c          von der 1. bis zur aktuellen Zeile ersetze worf durch kirn, frage&lt;br /&gt;
                            aber nach&lt;br /&gt;
 :1,$s/^worf/kirn/          von der ersten bis zur letzten Zeile ersetze worf am&lt;br /&gt;
                            Zeilenanfang durch kirn&lt;br /&gt;
 :4,$s/worf$/kirn/          von der 4. bis zur letzten Zeile ersetze worf am Zeilenende&lt;br /&gt;
                            durch kirn&lt;br /&gt;
 :1,$s/^#//                 lösche alle Kommentarzeichen&lt;br /&gt;
 :1,$s/^.orf/kirn/           ersetze alles was am Zeilenanfang ein beliebiges Zeichen hat&lt;br /&gt;
                            gefolgt von einem orf durch kirn&lt;br /&gt;
 :1,$s/^[A-Z]orf/kirn/g     suche nach einem Großbuchstaben am Anfang der Zeile&lt;br /&gt;
                            gefolgt von einem orf und ersetze durch kirn&lt;br /&gt;
 :1,$s/^M[ae][iy]e*r/kirn/  suche alles, was am Anfang der Zeile ein großes M enthält,&lt;br /&gt;
                            gefolgt von einem a oder e , gefolgt von einem i oder y ,&lt;br /&gt;
                            gefolgt von einem e , welches 0 oder N mal vorkommen kann,&lt;br /&gt;
                            gefolgt von einem r und ersetze es durch kirn&lt;br /&gt;
&lt;br /&gt;
==Reguläre Ausdrücke==&lt;br /&gt;
&lt;br /&gt;
{| Border=1 Cellpadding=2&lt;br /&gt;
|c&lt;br /&gt;
|Ein einzelner Buchstabe passt auf sich selbst&lt;br /&gt;
|-&lt;br /&gt;
|.&lt;br /&gt;
|Ein Punkt passt auf jedes Zeichen außer auf das Zeilenende&lt;br /&gt;
|-&lt;br /&gt;
|*&lt;br /&gt;
|Das dem Operator * vorangehende Muster kann 0 oder öfter vorkommen&lt;br /&gt;
|-&lt;br /&gt;
|^&lt;br /&gt;
|(Caret) passt auf den Zeilenanfang&lt;br /&gt;
|-&lt;br /&gt;
|$&lt;br /&gt;
|Passt auf das Zeilenende&lt;br /&gt;
|-&lt;br /&gt;
|\&lt;br /&gt;
|Das folgende Sonderzeichen wird entwertet&lt;br /&gt;
|-&lt;br /&gt;
|[...]&lt;br /&gt;
|Passt auf &amp;quot;genau&amp;quot; eins in [...] angebenen Zeichen&lt;br /&gt;
|-&lt;br /&gt;
|[^...]&lt;br /&gt;
|Passt auf &amp;quot;genau&amp;quot; ein Zeichen welches nicht in [...] angebenen ist&lt;br /&gt;
|-&lt;br /&gt;
|\&amp;lt;&lt;br /&gt;
|Passt auf den Wortanfang&lt;br /&gt;
|-&lt;br /&gt;
|\&amp;gt;&lt;br /&gt;
|Passt auf das Wortende&lt;br /&gt;
|-&lt;br /&gt;
|\+&lt;br /&gt;
|Das dem Operator \+ vorangehende Muster kann 1 oder öfter vorkommen&lt;br /&gt;
|-&lt;br /&gt;
|&amp;amp;&lt;br /&gt;
|Setzt das gefunden Suchmuster ein&lt;br /&gt;
|-&lt;br /&gt;
|\(...\)&lt;br /&gt;
|Speichert den Text auf den das Suchmuster passt zur späteren Verwendung&lt;br /&gt;
|-&lt;br /&gt;
|\n&lt;br /&gt;
|Setzt das vorangehende, mit \(...\) Gefundene wieder ein&lt;br /&gt;
|-&lt;br /&gt;
|(...)&lt;br /&gt;
|Gruppiert Auswahlmöglichkeiten&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;nowiki&amp;gt;|&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
|Trennt Auswahlmöglichkeiten&lt;br /&gt;
|-&lt;br /&gt;
|\b&lt;br /&gt;
|Passt auf den Anfang oder das Ende eines Wortes&lt;br /&gt;
|-&lt;br /&gt;
|\B&lt;br /&gt;
|Symbolisiert den Raum innerhalb eines Wortes&lt;br /&gt;
|-&lt;br /&gt;
|\w&lt;br /&gt;
|Passt auf alle alphanumerischen Zeichen [A-Za-z0-9]&lt;br /&gt;
|-&lt;br /&gt;
|\W&lt;br /&gt;
|Passt auf alle nichtalphanumerischen Zeichen [^A-Za-z0-9]&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Die Rangfolge der Operatoren(von der höchsten zur niedrigsten)&lt;br /&gt;
:(, ), ?, *, + | .&lt;br /&gt;
&lt;br /&gt;
Die anderen Operatoren sind mit den anderen Buchstaben gleichrangig.&lt;br /&gt;
&lt;br /&gt;
===Beispiel zum Suchen===&lt;br /&gt;
&lt;br /&gt;
 Suchmuster               Passt auf&lt;br /&gt;
 ^Tuxer                   Tuxer am Zeilenanfang&lt;br /&gt;
 [tT]uxer                 Tuxer oder tuxer&lt;br /&gt;
 80[23]?86                8086, 80286 oder 80386&lt;br /&gt;
&lt;br /&gt;
===grep===&lt;br /&gt;
&lt;br /&gt;
Mit grep ist es möglich, in Dateien nach regulären Ausdrücken zu suchen. Wenn&lt;br /&gt;
eine Übereinstimmung gefunden wird, wird die komplette Zeile auf die&lt;br /&gt;
Standardausgabe geschrieben. grep kann auch von STDIN lesen.Es ist&lt;br /&gt;
empfehlenswert, sich anzugwöhnen ,das Suchmuster in Anführungszeichen zu&lt;br /&gt;
schreiben. Es gibt 3 Arten fgrep = fastgrep , grep und egrep egrep&lt;br /&gt;
&lt;br /&gt;
Beispiel:&lt;br /&gt;
&lt;br /&gt;
 root@zero:~# cat text&lt;br /&gt;
 quatsch&lt;br /&gt;
 quatsch&lt;br /&gt;
 quatsch&lt;br /&gt;
 wichtig&lt;br /&gt;
 quatsch&lt;br /&gt;
 root@zero:~# grep wichtig text&lt;br /&gt;
 wichtig&lt;br /&gt;
 root@zero:~# &lt;br /&gt;
&lt;br /&gt;
 -c                   meldet nur die Gesamtzahl der Fundstellen&lt;br /&gt;
 -v                   zeigt nur Zeilen, die »Ausdruck« nicht enthalten&lt;br /&gt;
 -i                   ignoriert Groß- und Kleinschreibung&lt;br /&gt;
 -l                    meldet nur Dateinamen mit Fundstellen&lt;br /&gt;
 -n                   listet Zeilennummern zu jeder Fundstelle&lt;br /&gt;
 -f                   Dateiname »Dateiname« enthält die Such-Ausdrücke&lt;br /&gt;
 -E                   ist ein erweiterter regulärer Ausdruck (egrep)&lt;br /&gt;
 -F                   (Muster, Ausdruck) ist ein Muster (String) (fgrep)&lt;br /&gt;
 -b                   listet auch die Position der Fundstellen&lt;br /&gt;
 -C    Anzahl         Anzahl von Zeilen werden nach der Fundstelle ausgegeben&lt;br /&gt;
 -B    Anzahl         Anzahl von Zeilen werden vor der Fundstelle ausgegeben&lt;br /&gt;
 -r                   Durchsucht Verzeichnisse rekursiv&lt;br /&gt;
&lt;br /&gt;
==Useridendifikation==&lt;br /&gt;
===/etc/passwd===&lt;br /&gt;
====Beschreibung====&lt;br /&gt;
passwd ist eine ASCII-Datei, die eine Liste der Benutzer des Systems und deren&lt;br /&gt;
Passwörter enthält. Die Passwortdatei sollte für alle Benutzer lesbar sein, was für&lt;br /&gt;
dieVerschlüsselung notwendig ist; aber nur vom Superuser beschreibbar. Wenn&lt;br /&gt;
Sie eine neue Kennung einrichten, lassen Sie das Passwort-Feld in der Datei frei&lt;br /&gt;
und benutzen Sie passwd(1), um dem System ein Passwort für die neue Kennung&lt;br /&gt;
mitzuteilen.&lt;br /&gt;
&lt;br /&gt;
Die Datei /etc/passwd enthält einen Eintrag pro Zeile mit dem Format:&lt;br /&gt;
login_name:passwd:UID:GID:user_name:directory:shell&lt;br /&gt;
&lt;br /&gt;
====Die Bedeutung der Felder:====&lt;br /&gt;
# login_name Kennung des Benutzers auf dem System.&lt;br /&gt;
# password   Das verschlüsselte Passwort des Benutzers.&lt;br /&gt;
# UID        Die numerische Benutzernummer.&lt;br /&gt;
#  GID        Die numerische Gruppennummer des Benutzers.&lt;br /&gt;
# user_name Ein optionales Kommentarfeld, oft benutzt für den vollen Namen des Benutzers und weitere Informationen (Telefon, Raum-Nummer etc.).&lt;br /&gt;
# directory  Das Heimatverzeichnis $HOME des Benutzers.&lt;br /&gt;
# shell      Das Programm, das beim Einloggen gestartet werden soll (falls nicht nötig, benutzen Sie /bin/bash).&lt;br /&gt;
&lt;br /&gt;
===/etc/group===&lt;br /&gt;
====Beschreibung====&lt;br /&gt;
etc/group ist eine ASCII Datei, die Gruppen definiert, zu denen Benutzer&lt;br /&gt;
gehören. Es gibt nur einen Eintrag pro Zeile; jede Zeile hat folgendes Format:&lt;br /&gt;
         GruppenName:Passwort:GruppenKennung:BenutzerListe&lt;br /&gt;
Beschreibung der Felder:&lt;br /&gt;
#     GruppenName      Die Bezeichnung der Gruppe.&lt;br /&gt;
#     Passwort         Das (verschlüsselte) Gruppen-Passwort. Wenn dieses Feld leer ist, wird kein Passwort benötigt.&lt;br /&gt;
#     GruppenKennung Die numerische Identifikation der Gruppe.&lt;br /&gt;
#     BenutzerListe    Alle Namen der Mitglieder, getrennt durch Kommas.&lt;br /&gt;
&lt;br /&gt;
===/etc/shadow===&lt;br /&gt;
====Beschreibung====&lt;br /&gt;
shadow beinhaltet Informationen zu den verschlüsselten Passwörten, zu den&lt;br /&gt;
Benutzerzugängen und weitere Informationen zur Laufzeit der Passwörter.&lt;br /&gt;
 Name:Passwort:Letzte Änderung:Mintage:Maxtage:Warntage:Inaktiv:Ablauf&lt;br /&gt;
#    Der Loginname&lt;br /&gt;
#    verschlüsseltes Passwort &lt;br /&gt;
&amp;lt;nowiki&amp;gt;*&amp;lt;/nowiki&amp;gt; bedeutet Benutzer kann sich nicht einlogen&lt;br /&gt;
! bedeutet Benutzer hat kein Passwort gesetzt&lt;br /&gt;
#    Tage seit dem 1 Januar 1970 an dem das Passwort letztmals geändert wurde&lt;br /&gt;
#    Tage, die das Passwort behalten werden muss, bevor es wieder geändert werden kann&lt;br /&gt;
#     Die Anzahl der Tage, nach denen der Benutzer das Passwort wieder ändern muss&lt;br /&gt;
#    Anzahl der Tage bevor das Passwort abläuft und der Benutzer gewarnt wird&lt;br /&gt;
#    Wenn der Zugang diese Anzahl von Tagen nicht benutzt wird, wird der Zugang gesperrt&lt;br /&gt;
#    Tag seit dem 1 Januar 1970, an dem der Zugang gesperrt wird&lt;br /&gt;
#    Reserviertes Feld&lt;br /&gt;
&lt;br /&gt;
Die Datei sollte aus Sicherheitgründen nicht für einen normalen Benutzer lesbar&lt;br /&gt;
sein.&lt;br /&gt;
&lt;br /&gt;
==chmod==&lt;br /&gt;
Die Syntax des Befehls chmod lautet:&lt;br /&gt;
&lt;br /&gt;
'''chmod''' WerWieWas [,WerWieWas,.....] Dateiliste&lt;br /&gt;
&lt;br /&gt;
oder&lt;br /&gt;
&lt;br /&gt;
'''chmod''' Oktalzahl Dateiliste&lt;br /&gt;
&lt;br /&gt;
Durch WerWieWas bzw. Oktalzahl wird die Rechtetabelle definiert. Innerhalb von&lt;br /&gt;
WerWieWas darf es kein Leerzeichen geben. Wer bezeichnet den Benutzerkreis,&lt;br /&gt;
dem man Rechte gibt, Wie die Art, in der die Rechte gegeben werden und Was die&lt;br /&gt;
Rechte als solche. Im einzelnen können folgende Kürzel benutzt werden:&lt;br /&gt;
&lt;br /&gt;
Für Wer kann eines der folgenden Kürzel oder eine Kombination davon stehen:&lt;br /&gt;
 u                   (user) Rechte für den Dateibesitzer&lt;br /&gt;
 g                   (group) Rechte für die Gruppe&lt;br /&gt;
 o                   (others) Rechte für alle anderen Benutzer&lt;br /&gt;
 a                   (all) Rechte für alle Benutzer&lt;br /&gt;
Für Wie steht eines der folgenden Kürzel:&lt;br /&gt;
 +                   Die Rechte werden zu den vorhandenen zusätzlich vergeben&lt;br /&gt;
 -                   Die im Folgenden genannten Rechte werden entzogen&lt;br /&gt;
 =                   Die im Folgenden genannten Rechte ersetzen die bisherigen&lt;br /&gt;
Für Was steht eines der folgenden Kürzel:&lt;br /&gt;
 r                   (read) lesen&lt;br /&gt;
 w                   (write) schreiben&lt;br /&gt;
 x                   (execute) ausführen&lt;br /&gt;
oder diese Sonderformen&lt;br /&gt;
 s                   (usersbit) Programm läuft unter der UID des Besitzers&lt;br /&gt;
 s                   (groupsbit)Programm läuft unter der GID des GRUPPE&lt;br /&gt;
 t                   (stickybit) Dateien im Verzeichnis darf nur Besitzer löschen&lt;br /&gt;
&lt;br /&gt;
===Beispiel===&lt;br /&gt;
Setze für alle Schreib- und Leserecht&lt;br /&gt;
 xinux@zero:~$ chmod a=rw test &lt;br /&gt;
 xinux@zero:~$ ls -l test &lt;br /&gt;
 -rw-rw-rw- 1 xinux xinux 0 2009-06-16 12:01 test&lt;br /&gt;
 xinux@zero:~$ &lt;br /&gt;
&lt;br /&gt;
Erteile Besitzer Ausführungsrecht&lt;br /&gt;
 xinux@zero:~$ chmod u+x test ; ls -l test &lt;br /&gt;
 -rwxrw-rw- 1 xinux xinux 0 2009-06-16 12:01 test&lt;br /&gt;
 xinux@zero:~$ &lt;br /&gt;
&lt;br /&gt;
===chmod oktale Schreibweise===&lt;br /&gt;
 Specialrights        User           Group         Other&lt;br /&gt;
 usbit gsbit sticky    r    w   x     r   w   x     r   w   x&lt;br /&gt;
   1     1      1      1    1   1     1   1   1     1   1   1&lt;br /&gt;
   0     0      0      0    0   0     0   0   0     0   0   0&lt;br /&gt;
 Oktale Wertigkeit pro Recht&lt;br /&gt;
   4     2       1     4    2   1     4   2   1     4   2   1&lt;br /&gt;
&lt;br /&gt;
===Beispiele===&lt;br /&gt;
 xinux@zero:~$ chmod 751 test ; ls -l test&lt;br /&gt;
 -rwxr-x--x 1 xinux xinux 0 2009-06-16 12:01 test&lt;br /&gt;
 xinux@zero:~$ &lt;br /&gt;
&lt;br /&gt;
 xinux@zero:~$ chmod 4770 test ; ls -l test&lt;br /&gt;
 -rwsrwx--- 1 xinux xinux 0 2009-06-16 12:01 test&lt;br /&gt;
 xinux@zero:~$ &lt;br /&gt;
&lt;br /&gt;
 xinux@zero:~$ chmod 0 test ; ls -l test &lt;br /&gt;
 ---------- 1 xinux xinux 0 2009-06-16 12:01 test&lt;br /&gt;
&lt;br /&gt;
===chmod Optionen===&lt;br /&gt;
 -c   (changes) es werden nur die Dateien angezeigt, deren Zugriffsrechte tatsächlich verändert werden&lt;br /&gt;
 -f   (silent, quiet) Fehlermeldungen wegen fehlgeschlagener Änderungsversuche werden unterdrückt&lt;br /&gt;
 -v   (verbose) alle Aktionen werden angezeigt&lt;br /&gt;
 -R   (recursive) die Zugriffsrechte aller Dateien in den Unterverzeichnissen werden ebenfalls geändert&lt;br /&gt;
&lt;br /&gt;
Theoretisch sind alle Kombinationen der Zugriffsrechte denkbar, aber der&lt;br /&gt;
Eigentümer einer Datei darf diese immer lesen, selbst wenn das Lesebit nicht&lt;br /&gt;
gesetzt ist. Genauso macht es wenig Sinn, eine gewöhnliche Textdatei als&lt;br /&gt;
ausführbar zu setzen; die Shell wird damit nichts anfangen können. Ein x für ein&lt;br /&gt;
Verzeichnis gibt an, dass in dieses gewechselt werden kann.&lt;br /&gt;
&lt;br /&gt;
Rechte sind verbindlich&lt;br /&gt;
&lt;br /&gt;
Interessant ist auch ein Konstrukt folgender Art&lt;br /&gt;
 -rwx---rwx&lt;br /&gt;
&lt;br /&gt;
das angibt, dass mit der Datei alles angestellt werden kann, außer durch Nutzer der&lt;br /&gt;
Gruppe. Versucht irgend jemand, der nicht der Gruppe des Eigentümers angehört,&lt;br /&gt;
die Datei zu modifizieren, wird ihm dies gelingen, einem Gruppenmitglied bleibt&lt;br /&gt;
dies versagt, obwohl er ja gleichzeitig ein &amp;quot;Anderer&amp;quot; ist. D.h. die Rechte der&lt;br /&gt;
Gruppe sind verbindlicher, als die Rechte der anderen!&lt;br /&gt;
&lt;br /&gt;
===Bedeutungen der Zugriffsarten===&lt;br /&gt;
====Dateien====&lt;br /&gt;
* r: Der Inhalt der Datei kann gelesen und damit auch kopiert werden. &lt;br /&gt;
 root@zero:~# cat test&lt;br /&gt;
 Dies ist eine Testdatei&lt;br /&gt;
  &lt;br /&gt;
 root@zero:~# cp test backup&lt;br /&gt;
&lt;br /&gt;
* w: Der Inhalt der Datei darf verändert werden. Ob die Datei gelöscht werden kann ist&lt;br /&gt;
keine Eigenschaft der Datei, sondern des Verzeichnisses, indem sich die Datei befindet.&lt;br /&gt;
 root@zero:~# cat &amp;gt; test&lt;br /&gt;
 Hier steht jetzt was anderes&lt;br /&gt;
 ^C&lt;br /&gt;
 root@zero:~# cat test&lt;br /&gt;
 Hier steht jetzt was anderes&lt;br /&gt;
  &lt;br /&gt;
 xinux@zero:~$ ls -ld verzeichnis/&lt;br /&gt;
 dr-xr-xr-x 2 xinux xinux 4096 2009-06-18 11:16 verzeichnis/&lt;br /&gt;
 xinux@zero:~/verzeichnis$ rm text&lt;br /&gt;
 rm: Entfernen von „text“ nicht möglich: Permission denied&lt;br /&gt;
&lt;br /&gt;
* x: Ausführrecht für Programme und Skripte&lt;br /&gt;
 xinux@zero:~$ ./programm&lt;br /&gt;
 -bash: ./programm: Permission denied&lt;br /&gt;
 xinux@zero:~$ chmod +x programm&lt;br /&gt;
 xinux@zero:~$ ./programm&lt;br /&gt;
 Test&lt;br /&gt;
  test&lt;br /&gt;
&lt;br /&gt;
====Verzeichnisse====&lt;br /&gt;
* r: Die Einträge in dem Verzeichnis sind lesbar.&lt;br /&gt;
Leserecht von verzeichnis/ entziehen&lt;br /&gt;
 xinux@zero:~$ chmod a-r verzeichnis/&lt;br /&gt;
 xinux@zero:~$ ls verzeichnis/&lt;br /&gt;
 ls: Öffnen von Verzeichnis verzeichnis/ nicht möglich: Permission denied&lt;br /&gt;
Leserecht für Benutzer und Gruppe vergeben&lt;br /&gt;
 xinux@zero:~$ chmod a+r verzeichnis/&lt;br /&gt;
 xinux@zero:~$ ls verzeichnis/&lt;br /&gt;
 text&lt;br /&gt;
&lt;br /&gt;
* w: Die Einträge in dem Verzeichnis können geändert werden. &lt;br /&gt;
Neue Datei erstellen&lt;br /&gt;
 xinux@zero:~$ touch neu&lt;br /&gt;
 xinux@zero:~$ ls neu&lt;br /&gt;
 neu&lt;br /&gt;
&lt;br /&gt;
Datei löschen&lt;br /&gt;
 xinux@zero:~$ rm neu&lt;br /&gt;
 xinux@zero:~$ ls neu&lt;br /&gt;
 ls: Zugriff auf neu nicht möglich: No such file or directory&lt;br /&gt;
&lt;br /&gt;
* x: Der Name des Verzeichnisses kann in einem Pfadnamen erscheinen.&lt;br /&gt;
Verzeichnis ohne x Recht&lt;br /&gt;
 xinux@zero:~$ chmod a-x verzeichnis/&lt;br /&gt;
Wechseln in Verzeichnis mangels x-Recht nicht möglich&lt;br /&gt;
 xinux@zero:~$ cd verzeichnis/&lt;br /&gt;
 -bash: cd: verzeichnis/: Permission denied&lt;br /&gt;
x-Recht vergeben&lt;br /&gt;
 xinux@zero:~$ chmod a+x verzeichnis/&lt;br /&gt;
damit Wechsel in Verzeichnis möglich&lt;br /&gt;
 xinux@zero:~$ cd verzeichnis/&lt;br /&gt;
 xinux@zero:~/verzeichnis$ pwd&lt;br /&gt;
 /home/xinux/verzeichnis&lt;br /&gt;
&lt;br /&gt;
====umask====&lt;br /&gt;
Neue Dateien und Verzeichnisse werden mit ein und denselben Zufriffsrechten erzeugt.&lt;br /&gt;
 xinux@zero:~$ mkdir text&lt;br /&gt;
 xinux@zero:~$ touch textdat&lt;br /&gt;
 xinux@zero:~$ ls -ld text*&lt;br /&gt;
 drwxr-xr-x 2 xinux xinux 4096 2009-06-18 11:37 text&lt;br /&gt;
 -rw-r--r-- 1 xinux xinux    0 2009-06-18 11:37 textdat&lt;br /&gt;
&lt;br /&gt;
Zuständig für dieses Verhalten ist die sogenannte umask, die oft in der Datei&lt;br /&gt;
/etc/profile auf den Wert 022 voreingestellt ist. Zusätzlich wird noch eine&lt;br /&gt;
Maximalmaske benötigt, die sich für Verzeichnisse und andere Dateien&lt;br /&gt;
unterscheidet. Die bei der Erzeugung gesetzten Rechte entstehen nun, indem von&lt;br /&gt;
der Maximalmaske der durch die umask vorgegebene Wert subtrahiert wird:&lt;br /&gt;
&lt;br /&gt;
{| border=1 cellpadding=2&lt;br /&gt;
!&lt;br /&gt;
! Dateien&lt;br /&gt;
! Verzeichnisse&lt;br /&gt;
|-&lt;br /&gt;
| Systemvorgabe&lt;br /&gt;
| 666&lt;br /&gt;
| 777&lt;br /&gt;
|-&lt;br /&gt;
| -umask&lt;br /&gt;
| 022&lt;br /&gt;
| 022&lt;br /&gt;
|-&lt;br /&gt;
| Ergebnis&lt;br /&gt;
| 644&lt;br /&gt;
| 755&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
 xinux@zero:~$ grep umask /etc/profile&lt;br /&gt;
 umask 022&lt;br /&gt;
&lt;br /&gt;
==Gruppenzugehörigkeit==&lt;br /&gt;
===newgrp===&lt;br /&gt;
Ändert die Gruppenzugehörigkeit eines Benutzers auf die angegebene Gruppe. Wenn keine Gruppe angegeben wird, wird die &lt;br /&gt;
Anmeldegruppe des Benutzers verwendet. Die neue Gruppe wird anschließend fü Zugriffskontrollen verwendet.&lt;br /&gt;
&lt;br /&gt;
 newgrp Gruppenname&lt;br /&gt;
&lt;br /&gt;
 root@zero:~# newgrp hacker&lt;br /&gt;
 root@zero:~# id&lt;br /&gt;
 uid=0(root) gid=1006(hacker) Gruppen=0(root),1006(hacker)&lt;br /&gt;
&lt;br /&gt;
===chgrp===&lt;br /&gt;
Verändert die Besitzugehörigkeit zu der angegebenen Gruppe&lt;br /&gt;
&lt;br /&gt;
 chgrp [Optionen] Gruppe Datei(en)&lt;br /&gt;
&lt;br /&gt;
Optionen:&lt;br /&gt;
 -c Zeigt Veränderungen an&lt;br /&gt;
 -f Unterdrückt die meisten Fehlermeldungen&lt;br /&gt;
 -R Verändert Dateien und Verzeichnisse rekursiv&lt;br /&gt;
 -v Gibt geschwätzige Ausgabe aus.&lt;br /&gt;
&lt;br /&gt;
 root@zero:~# ls -l&lt;br /&gt;
 ...&lt;br /&gt;
 d-wx--x--x  3 root root 4096 2009-06-18 13:34 verzeichnis&lt;br /&gt;
 &lt;br /&gt;
 root@zero:~# chgrp -R xinux verzeichnis/&lt;br /&gt;
 root@zero:~# ls -l&lt;br /&gt;
 ...&lt;br /&gt;
 d-wx--x--x  3 root xinux 4096 2009-06-18 13:34 verzeichnis&lt;br /&gt;
&lt;br /&gt;
 xinux@zero:~$ cd /root/verzeichnis/&lt;br /&gt;
 xinux@zero:/root/verzeichnis$ pwd&lt;br /&gt;
 /root/verzeichnis&lt;br /&gt;
&lt;br /&gt;
===chown===&lt;br /&gt;
Ändert den Eigentümer von einer oder mehreren Dateien in den angegebenen Benutzer. &lt;br /&gt;
chown erlaubt ebenfalls das Ändern der Gruppeneigentümreschaft. Nur der aktuelle Eigentümer einer&lt;br /&gt;
Datei oder der Superuser (root) darf die Eigentumsverhältnisse ändern.&lt;br /&gt;
&lt;br /&gt;
 chown [Optionen] Benutzer(:Gruppe) Dateien&lt;br /&gt;
&lt;br /&gt;
Optionen:&lt;br /&gt;
 -c Gibt Informationen über die veränderten Dateien aus&lt;br /&gt;
 --dereference Symbolischen Links folgen&lt;br /&gt;
 -v Gibt Informationen über alle Dateien aus, die chown zu ändern versucht, egal, ob die Änderung erfolgt ist oder nicht&lt;br /&gt;
 -R Geht rekursiv durch alle Unterverzeichnisse und führt die Änderungen durch. &lt;br /&gt;
&lt;br /&gt;
 root@zero:~# chown -R xinux.xinux verzeichnis/&lt;br /&gt;
 root@zero:~# ls -l&lt;br /&gt;
 insgesamt 12&lt;br /&gt;
 drwx------ 13 root  root  4096 2009-04-21 15:11 profile&lt;br /&gt;
 --w-------  1 root  root     0 2009-06-18 11:13 test&lt;br /&gt;
 -rw-r--r--  1 root  root    40 2009-06-18 12:04 text&lt;br /&gt;
 drwxrwx--x  3 xinux xinux 4096 2009-06-18 13:39 verzeichnis&lt;br /&gt;
 &lt;br /&gt;
 root@zero:~# chown -R -c xinux.xinux verzeichnis/&lt;br /&gt;
 &lt;br /&gt;
 root@zero:~# chown -R -v xinux.xinux verzeichnis/&lt;br /&gt;
 Eigentümer von „verzeichnis/01“ als xinux:xinux erhalten&lt;br /&gt;
 Eigentümer von „verzeichnis/test“ als xinux:xinux erhalten&lt;br /&gt;
 Eigentümer von „verzeichnis/“ als xinux:xinux erhalten&lt;br /&gt;
&lt;br /&gt;
==Eingabe/Ausgabe==&lt;br /&gt;
Standardeingabe (0): Laufende Programme erwarten von hier ihre Eingaben (normalerweise handelt es sich um die Tastatur).&lt;br /&gt;
&lt;br /&gt;
Standardausgabe (1): Programme schreiben auf diese ihre Ausgaben (Bildschirm).&lt;br /&gt;
&lt;br /&gt;
Standardfehlerausgabe (2) : Fehlerausgaben landen hier (Bildschirm, aber nur die aktive Konsole).&lt;br /&gt;
&lt;br /&gt;
===cat===&lt;br /&gt;
Das Programm cat liest von STDIN und gibt es STDOUT wieder aus&lt;br /&gt;
&lt;br /&gt;
Einlesen der Datei text&lt;br /&gt;
 root@zero:~# cat &amp;lt; text&lt;br /&gt;
 wichtig&lt;br /&gt;
&lt;br /&gt;
Schreiben in die Datei text, dies überschreibt den bisherigen Inhalt der Datei&lt;br /&gt;
 root@zero:~# cat &amp;gt; text&lt;br /&gt;
 sogar noch wichtiger &lt;br /&gt;
 &lt;br /&gt;
Ausgeben der Datei text&lt;br /&gt;
 root@zero:~# cat text &lt;br /&gt;
 sogar noch wichtiger&lt;br /&gt;
&lt;br /&gt;
Lesen aus der Datei text und schreiben in die Datei neuertext&lt;br /&gt;
 root@zero:~# cat &amp;lt; text &amp;gt; neuertext&lt;br /&gt;
 root@zero:~# cat neuertext&lt;br /&gt;
 sogar noch wichtiger&lt;br /&gt;
&lt;br /&gt;
Anhängen der Ausgabe von date an die Datei neuertext&lt;br /&gt;
 root@zero:~# date &amp;gt;&amp;gt; neuertext&lt;br /&gt;
 root@zero:~# cat neuertext&lt;br /&gt;
 sogar noch wichtiger&lt;br /&gt;
 Do 18. Jun 14:08:58 CEST 2009&lt;br /&gt;
&lt;br /&gt;
Umleiten des Standardfehlerkanals nach error&lt;br /&gt;
 root@zero:~# rm sux 2&amp;gt; error&lt;br /&gt;
 root@zero:~# more error&lt;br /&gt;
 rm: Entfernen von „sux“ nicht möglich: No such file or directory&lt;br /&gt;
&lt;br /&gt;
===Umleitungen===&lt;br /&gt;
Nacheinander auszuführende Kommandos&lt;br /&gt;
 root@zero:~# pwd; date&lt;br /&gt;
 /root&lt;br /&gt;
 Do 18. Jun 14:13:05 CEST 2009&lt;br /&gt;
 &lt;br /&gt;
Übergeben der Ausgabe von tail als Eingabe von grep mit Hilfe der Pipe &amp;quot;|&amp;quot;&lt;br /&gt;
 root@zero:~# tail /var/log/auth.log | grep xinux&lt;br /&gt;
 Jun 18 13:52:33 zero nss_wins[11433]: pam_unix(login:session): session closed for user xinux&lt;br /&gt;
&lt;br /&gt;
Übergeben der letzten 100 Zeilen von syslog als Eingabe von grep&lt;br /&gt;
 root@zero:~# tail /var/log/syslog -n 100 | grep error&lt;br /&gt;
 Jun 18 09:30:54 zero kernel: [154384.692135] end_request: I/O error, dev fd0, sector 0&lt;br /&gt;
 Jun 18 09:30:54 zero kernel: [154384.712137] end_request: I/O error, dev fd0, sector 0&lt;br /&gt;
&lt;br /&gt;
==tr==&lt;br /&gt;
tr ist ein Programm um Zeichen zu übersetzen. Dies betrifft nur die Ausgabe, die Datei selbst bleibt unverändert.&lt;br /&gt;
&lt;br /&gt;
Ersetzt Kleinbuchstaben durch Großbuchstaben aus der Datei text&lt;br /&gt;
 root@zero:~# tr &amp;quot;a-z&amp;quot; &amp;quot;A-Z&amp;quot; &amp;lt; text&lt;br /&gt;
 SOGAR NOCH WICHTIGER&lt;br /&gt;
 123&lt;br /&gt;
 34&lt;br /&gt;
 4711&lt;br /&gt;
 TEST&lt;br /&gt;
&lt;br /&gt;
Ersetzt alle Zahlen durch X&lt;br /&gt;
 root@zero:~# tr &amp;quot;0-9&amp;quot; &amp;quot;X&amp;quot; &amp;lt; text&lt;br /&gt;
 sogar noch wichtiger&lt;br /&gt;
 XXX&lt;br /&gt;
 XX&lt;br /&gt;
 XXXX&lt;br /&gt;
 test&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
 root@zero:~# cat test&lt;br /&gt;
 +++++&lt;br /&gt;
 ###&lt;br /&gt;
 1111&lt;br /&gt;
&lt;br /&gt;
-s löscht mehrfach kommende Zeichen&lt;br /&gt;
 root@zero:~# tr '''-s''' &amp;quot;+&amp;quot; &amp;lt; test&lt;br /&gt;
 +&lt;br /&gt;
 ###&lt;br /&gt;
 1111&lt;br /&gt;
&lt;br /&gt;
-d löscht vorkommende Zeichen &lt;br /&gt;
 root@zero:~# tr '''-d''' &amp;quot;#&amp;quot; &amp;lt; test&lt;br /&gt;
 +++++ &lt;br /&gt;
 &lt;br /&gt;
 1111&lt;br /&gt;
&lt;br /&gt;
==cut==&lt;br /&gt;
Spalten aus einer Datei schneiden. Dies betrifft nur die Ausgabe, die Datei selbst bleibt unverändert.&lt;br /&gt;
 &lt;br /&gt;
Schneidet die erste Spalte aus, der Delimiter ist : &lt;br /&gt;
 root@zero:~# cut -f 1 -d : /etc/passwd&lt;br /&gt;
 root&lt;br /&gt;
 daemon&lt;br /&gt;
 bin&lt;br /&gt;
 ...&lt;br /&gt;
 xinux&lt;br /&gt;
&lt;br /&gt;
 root@zero:~# more test&lt;br /&gt;
 1234#5678#9999&lt;br /&gt;
 &lt;br /&gt;
Schneidet die zweite Spalte aus, der Delimiter ist #&lt;br /&gt;
 root@zero:~# cut -f 2 -d &amp;quot;#&amp;quot; &amp;lt; test&lt;br /&gt;
 5678&lt;br /&gt;
&lt;br /&gt;
==expand==&lt;br /&gt;
Ersetzt Tabulatorzeichen durch Folgen von Leerzeichen und schreibt das Ergebnis auf die Standardausgabe&lt;br /&gt;
 root@zero:~# expand /etc/samba/smb.conf&lt;br /&gt;
 ...&lt;br /&gt;
&lt;br /&gt;
==fmt==&lt;br /&gt;
Setzt den Text der Dateien im Blocksatz der angegebenen Breite durch Auffüllen von Zeilen und Entfernen von Zeilenwechseln.&lt;br /&gt;
Standardgemäß werden Leerzeilen, die Position von Leerzeichen und der Einzug am Zeilenanfang erhalten. fmt versucht, &lt;br /&gt;
Zeilenumbrüche an Satzenden durchzuführen sowie sie nach dem ersten oder vor dem letzten Wort eines Satzes zu vermeiden. &lt;br /&gt;
 &lt;br /&gt;
 fmt [Optionen] [Dateien]&lt;br /&gt;
&lt;br /&gt;
Optionen&lt;br /&gt;
&lt;br /&gt;
* -p ''Präfix'': Formatiert nur Zeilen, die mit ''Präfix'' anfangen&lt;br /&gt;
 root@zero:/tmp# fmt -p '#' text&lt;br /&gt;
 #Setzt den Text der Dateien im Blocksatz der angegebenen Breite durch&lt;br /&gt;
 #Auffüllen von Zeilen und Entfernen von Zeilenwechseln.  Standardgemäß&lt;br /&gt;
 #werden Leerzeilen, die Position von Leerzeichen und der Einzug am&lt;br /&gt;
 #Zeilenanfang erhalten. fmt versucht,&lt;br /&gt;
 Zeilenumbrüche an Satzenden durchzuführen sowie sie nach dem ersten oder vor dem letzten Wort eines Satzes zu vermeiden.&lt;br /&gt;
&lt;br /&gt;
* -u : Erzwingt genau ein Leerzeichen zwischen Wörtern und zwei Leerzeichen zwischen Sätzen&lt;br /&gt;
&lt;br /&gt;
* -w ''Breite'': Setzt die Ausgabebreite auf ''Breite''&lt;br /&gt;
 root@zero:/tmp# fmt -w 30 text&lt;br /&gt;
 #Setzt den Text der Dateien&lt;br /&gt;
 im Blocksatz der angegebenen&lt;br /&gt;
 Breite durch Auffüllen&lt;br /&gt;
 von Zeilen und Entfernen&lt;br /&gt;
 von Zeilenwechseln.&lt;br /&gt;
 #Standardgemäß werden&lt;br /&gt;
 Leerzeilen, die Position von&lt;br /&gt;
 Leerzeichen und der Einzug am&lt;br /&gt;
 Zeilenanfang erhalten. fmt&lt;br /&gt;
 versucht, Zeilenumbrüche&lt;br /&gt;
 an Satzenden durchzuführen&lt;br /&gt;
 sowie sie nach dem ersten&lt;br /&gt;
 oder vor dem letzten Wort&lt;br /&gt;
 eines Satzes zu vermeiden.&lt;br /&gt;
&lt;br /&gt;
==join==&lt;br /&gt;
Führt die Zeilen zweier sortierter Dateien anhand von '''Übereinstimmungen''' in einem gemeinsamen Feld zusammen.&lt;br /&gt;
&lt;br /&gt;
 root@zero:~# more name&lt;br /&gt;
 1. karl&lt;br /&gt;
 2. heinz&lt;br /&gt;
 3. hans&lt;br /&gt;
 4. otto&lt;br /&gt;
 root@zero:~# more tel&lt;br /&gt;
 1. 1234&lt;br /&gt;
 2. 4321&lt;br /&gt;
 3. 222&lt;br /&gt;
 4. 121212&lt;br /&gt;
 root@zero:~# join name tel &amp;gt; telefonbuch&lt;br /&gt;
 root@zero:~# more telefonbuch&lt;br /&gt;
 1. karl 1234&lt;br /&gt;
 2. heinz 4321&lt;br /&gt;
 3. hans 222&lt;br /&gt;
 4. otto 121212&lt;br /&gt;
&lt;br /&gt;
==nl==&lt;br /&gt;
Nummeriert die Zeilen in einer Datei.&lt;br /&gt;
&lt;br /&gt;
 root@zero:~# nl /etc/passwd                                                   &lt;br /&gt;
     1  root:x:0:0:root:/root:/bin/bash                                       &lt;br /&gt;
     2  daemon:x:1:1:daemon:/usr/sbin:/bin/sh                                 &lt;br /&gt;
     3  bin:x:2:2:bin:/bin:/bin/sh                                            &lt;br /&gt;
     4  sys:x:3:3:sys:/dev:/bin/sh                                            &lt;br /&gt;
     5  sync:x:4:65534:sync:/bin:/bin/sync&lt;br /&gt;
     ...&lt;br /&gt;
&lt;br /&gt;
==od==&lt;br /&gt;
Gibt Dateien im Oktal und anderen Formaten aus.&lt;br /&gt;
&lt;br /&gt;
 od [Optionen] Datei&lt;br /&gt;
&lt;br /&gt;
* -j ''Bytes'': Überspringt die Anzahl ''Bytes'' einer Datei&lt;br /&gt;
* -N ''Bytes'': Gibt nur die Anzahl ''Bytes'' aus&lt;br /&gt;
* -c : Gebe ASCII Zeichen aus&lt;br /&gt;
* -f : Gebe Fließkommazahlen aus&lt;br /&gt;
* -i : Gebe Dezimal Integer aus&lt;br /&gt;
* -l : Gebe Dezimal Long aus&lt;br /&gt;
* -o : Gebe Oktal 2 Byte Einheiten aus&lt;br /&gt;
* -s : Gebe Dezimal 2 Byte Einheiten aus&lt;br /&gt;
* -x : Gebe Hexadezimale 2 Byte einheiten aus&lt;br /&gt;
&lt;br /&gt;
Beispiele&lt;br /&gt;
&lt;br /&gt;
Gebe Master Boot Record (die ersten 512 Byte der Festplatte /dev/sda) als Hexadezimal aus&lt;br /&gt;
 root@zero:~# od '''-x -N''' 512 /dev/sda&lt;br /&gt;
 0000000 48eb 1090 d08e 00bc b8b0 0000 d88e c08e&lt;br /&gt;
 0000020 befb 7c00 00bf b906 0200 a4f3 21ea 0006&lt;br /&gt;
 0000040 be00 07be 0438 0b75 c683 8110 fefe 7507&lt;br /&gt;
 0000060 ebf3 b416 b002 bb01 7c00 80b2 748a 0203&lt;br /&gt;
 0000100 00ff 2000 0001 0000 0200 90fa f690 80c2&lt;br /&gt;
 ...&lt;br /&gt;
&lt;br /&gt;
Schreibe &amp;quot;suxer&amp;quot; in die Datei test&lt;br /&gt;
 root@zero:~# echo &amp;quot;suxer&amp;quot; &amp;gt; test&lt;br /&gt;
Ausgabe Hexadezimal&lt;br /&gt;
 root@zero:~# od -x test&lt;br /&gt;
 0000000 7573 6578 0a72&lt;br /&gt;
 0000006&lt;br /&gt;
&lt;br /&gt;
Ausgabe ASCII Zeichen&lt;br /&gt;
 root@zero:~# od -c test&lt;br /&gt;
 0000000   s   u   x   e   r  \n&lt;br /&gt;
 0000006&lt;br /&gt;
&lt;br /&gt;
==paste==&lt;br /&gt;
Fügt die Zeilen von zwei oder mehr Dateien horizontal zusammen&lt;br /&gt;
 root@zero:~# paste name tel&lt;br /&gt;
 1. karl 1. 1234&lt;br /&gt;
 2. heinz        2. 4321&lt;br /&gt;
 3. hans 3. 222&lt;br /&gt;
 4. otto 4. 121212&lt;br /&gt;
&lt;br /&gt;
==pr==&lt;br /&gt;
Bereitet Textdateien zum Drucken vor.&lt;br /&gt;
&lt;br /&gt;
 root@zero:~# echo &amp;quot;Plan für heute&amp;quot; &amp;gt; dokument&lt;br /&gt;
 root@zero:~# more dokument&lt;br /&gt;
 Plan für heute&lt;br /&gt;
 root@zero:~# pr dokument   &lt;br /&gt;
  &lt;br /&gt;
 &lt;br /&gt;
 2009-06-19 12:44                    dokument                     Seite 1&lt;br /&gt;
 &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
 Plan für heute&lt;br /&gt;
&lt;br /&gt;
Anmerkung Ausmaße der Bildschirmausgabe wie eine Druckseite.&lt;br /&gt;
&lt;br /&gt;
==sed==&lt;br /&gt;
streaming editor. Mit sed ist es möglich, den Inhalt einer Datei automatisch (nicht interaktiv) zu&lt;br /&gt;
bearbeiten. Wie unter Linux üblich, wird auch hier der Text nicht wirklich verändert sondern die &lt;br /&gt;
Änderung erfolgt über die Standardausgabe, die wieder umgeleitet werden kann. Die Syntax ist ähnlich &lt;br /&gt;
des ex modus von vi. Reguläre Ausdrücke können nach Belieben benutzt werden. &lt;br /&gt;
&lt;br /&gt;
Optionen:&lt;br /&gt;
 -e Zeichenkette  wendet die Editorbefehle aus Zeichenkette auf den Text an.&lt;br /&gt;
 -n gibt nur die Zeilen aus, die explizit (durch &amp;quot;p&amp;quot; ausgedruckt werden sollen&lt;br /&gt;
&lt;br /&gt;
Gibt die dritte Zeile der Datei text aus&lt;br /&gt;
 root@zero:~# sed -n &amp;quot;3p&amp;quot; text&lt;br /&gt;
 34&lt;br /&gt;
&lt;br /&gt;
Gibt die erste bis dritte Zeile von text aus&lt;br /&gt;
 root@zero:~# sed -n &amp;quot;1,3p&amp;quot; text&lt;br /&gt;
 sogar noch wichtiger&lt;br /&gt;
 123&lt;br /&gt;
 34&lt;br /&gt;
&lt;br /&gt;
Löschen der Zeile mit &amp;quot;sogar&amp;quot;&lt;br /&gt;
 root@zero:~# sed -e '/sogar/d' &amp;lt; text&lt;br /&gt;
 123&lt;br /&gt;
 34&lt;br /&gt;
 4711&lt;br /&gt;
 test&lt;br /&gt;
&lt;br /&gt;
und schreiben in text2&lt;br /&gt;
 root@zero:~# sed -e '/sogar/d' &amp;lt; text &amp;gt; text2&lt;br /&gt;
 root@zero:~# more text2&lt;br /&gt;
 123&lt;br /&gt;
 34&lt;br /&gt;
 4711&lt;br /&gt;
 test&lt;br /&gt;
&lt;br /&gt;
Alle 3en durch DREI ersetzen&lt;br /&gt;
 root@zero:~# sed -e 's/3/DREI/g' &amp;lt; text&lt;br /&gt;
 sogar noch wichtiger&lt;br /&gt;
 12DREI&lt;br /&gt;
 DREI4&lt;br /&gt;
 4711&lt;br /&gt;
 test&lt;br /&gt;
&lt;br /&gt;
==wc==&lt;br /&gt;
Zählt die Anzahl von Zeichen, Wörter oder Zeilen&lt;br /&gt;
&lt;br /&gt;
Optionen&lt;br /&gt;
* -m : Zählt die Anzahl der Zeichen&lt;br /&gt;
 root@zero:~# more name&lt;br /&gt;
 1. karl&lt;br /&gt;
 2. heinz&lt;br /&gt;
 3. hans&lt;br /&gt;
 4. otto&lt;br /&gt;
 root@zero:~# wc '''-m''' tel&lt;br /&gt;
 33 tel&lt;br /&gt;
&lt;br /&gt;
* -w : Zählt die Anzahl der Wörter (einschließlich Zahlen und andere Zeichen)&lt;br /&gt;
 root@zero:~# wc '''-w''' name&lt;br /&gt;
 8 name&lt;br /&gt;
&lt;br /&gt;
* -l : Zählt die Anzahl der Zeilen&lt;br /&gt;
 root@zero:~# wc '''-l''' name&lt;br /&gt;
 4 name&lt;br /&gt;
&lt;br /&gt;
==INodes==&lt;br /&gt;
Inode (oder I-Node) wird im Deutschen am besten als Informationsknoten oder&lt;br /&gt;
Indexeintrag bezeichnet. Er fasst alle Attribute einer Datei zusammen außer dem Inhalt&lt;br /&gt;
und dem Namen der Datei.&lt;br /&gt;
&lt;br /&gt;
===Daten===&lt;br /&gt;
{| border=1 cellpadding=2&lt;br /&gt;
|type&lt;br /&gt;
|Der Typ der Datei wird als einzelner Buchstabe angezeigt. Der Typ einer Datei wird beim Anlegen der Datei festgelegt&lt;br /&gt;
|-&lt;br /&gt;
|Permissions &lt;br /&gt;
|Die Zugriffsrechte der Datei werden in den 12 Bit sstrwxrwxrwx abgespeichert.Wenn sie gesetzt sind, werden sie bei &lt;br /&gt;
der Ausgabe an Stelle der x-Rechte ausgegeben. Die Zugriffsrechte können mit dem Kommando chmod verändert werden.&lt;br /&gt;
|-&lt;br /&gt;
|link count&lt;br /&gt;
|In UNIX kann eine Datei mehr als einen Namen haben. Der Link Count gibt die Anzahl der Namen einer Datei an. Er kann&lt;br /&gt;
mit dem Kommando ln erhöht und dem Kommando rm erniedrigt werden.&lt;br /&gt;
|-&lt;br /&gt;
|owner&lt;br /&gt;
|Für den Dateieigentümer gelten die in der ersten rwx-Gruppe festgelegten Zugriffsrechte. Standardmäßig ist der &lt;br /&gt;
Eigentümer einer Datei derjenige Benutzer, der die Datei angelegt hat.&lt;br /&gt;
|-&lt;br /&gt;
|group&lt;br /&gt;
|Für Benutzer, die in der gleichen Gruppe sind, der die Datei angehört, gelten die in der zweiten rwx-Gruppe festgelegten&lt;br /&gt;
Zugriffsrechte. In System V gehört eine Datei standardmäßig der Gruppe an, in der der anlegende Benutzer gerade ist.&lt;br /&gt;
|-&lt;br /&gt;
|size&lt;br /&gt;
|Bei normalen Dateien und Verzeichnissen gibt diese Information die Länge der Datei in Byte an.&lt;br /&gt;
|-&lt;br /&gt;
|access time&lt;br /&gt;
|Die Zugriffszeit gibt den Zeitpunkt des letzten Lesezugriffes auf eine Datei an. Aus Effizienzgründen wird die &lt;br /&gt;
Zugriffszeit an Verzeichnissen nicht gesetzt, wenn ein Verzeichnis durchsucht wird, obwohl man dies erwarten könnte.&lt;br /&gt;
|-&lt;br /&gt;
|modification time&lt;br /&gt;
|Die Modifikationszeit gibt die Zeit des letzten Schreibzugriffes auf die Daten der Datei an. Intern speichert UNIX &lt;br /&gt;
die Zeit als Sekunden seit Beginn des Jahres 1970 und in GMT ab. Für die Ausgabe wird dies in ein besser lesbares &lt;br /&gt;
Format in der lokalen Zeitzone umgewandelt.&lt;br /&gt;
|-&lt;br /&gt;
|change time &lt;br /&gt;
|Die Veränderungszeit gibt das Datum der letzten Statusänderung der Datei an. Sie wird immer dann gesetzt, wenn die &lt;br /&gt;
Informationen über die Datei sich ändern (Datum der Erzeugung wird nicht gespeichert)&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
===Dateiarten===&lt;br /&gt;
{| border=1 cellpadding=2&lt;br /&gt;
!Zeichen&lt;br /&gt;
!Typ&lt;br /&gt;
!Zweck&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;nowiki&amp;gt;-&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
|file&lt;br /&gt;
|normale Datei&lt;br /&gt;
|-&lt;br /&gt;
|d&lt;br /&gt;
|directory&lt;br /&gt;
|Verzeichnis&lt;br /&gt;
|-&lt;br /&gt;
|b&lt;br /&gt;
|block device&lt;br /&gt;
|Gerätedatei&lt;br /&gt;
|-&lt;br /&gt;
|c&lt;br /&gt;
|character device&lt;br /&gt;
|Gerätedatei&lt;br /&gt;
|-&lt;br /&gt;
|l&lt;br /&gt;
|link&lt;br /&gt;
|Querverweis&lt;br /&gt;
|-&lt;br /&gt;
|p&lt;br /&gt;
|named pipe&lt;br /&gt;
|Benannte Pipeline&lt;br /&gt;
|-&lt;br /&gt;
|s&lt;br /&gt;
|socket&lt;br /&gt;
|Netzwerkverbindung&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
====Normale Dateien====&lt;br /&gt;
Unter einer normalen Datei versteht man die Ansammlung von Daten. Dies kann ein Text, Programm, Bild oder sonstiges sein. &lt;br /&gt;
Beispiel&lt;br /&gt;
 root@zero:~# ls text&lt;br /&gt;
 text&lt;br /&gt;
&lt;br /&gt;
====Verzeichnisse====&lt;br /&gt;
Dateien werden in Verzeichnissen gespeichert, nur so ist eine Ordnung möglich. &lt;br /&gt;
 root@zero:~# mkdir -v Ordner&lt;br /&gt;
 mkdir: Verzeichnis „Ordner“ angelegt&lt;br /&gt;
 &lt;br /&gt;
 root@zero:~# ls -d ~/*&lt;br /&gt;
 /root/error  /root/neuertext  /root/Ordner  /root/profile  /root/test  /root/text  /root/verzeichnis&lt;br /&gt;
&lt;br /&gt;
====Gerätedateien (Block und Char)====&lt;br /&gt;
Gerätedateien ermöglichen Anwendungsprogrammen unter Benutzung des  Kernels den Zugriff auf die Hardwarekomponenten des &lt;br /&gt;
Systems. &lt;br /&gt;
&lt;br /&gt;
Beispiele&lt;br /&gt;
&lt;br /&gt;
Sicherung des Master Boot Records der ersten Festplatte&lt;br /&gt;
 root@zero:~# dd if=/dev/sda1 of=/tmp/mbr.img bs=512 count=1&lt;br /&gt;
&lt;br /&gt;
Einhängen des CD-ROM Laufwerks&lt;br /&gt;
 root@zero:~# mount /dev/cdrom /media/cdrom -t iso9660&lt;br /&gt;
&lt;br /&gt;
====Named Pipes====&lt;br /&gt;
Benannte Pipes (Named Pipes) können dagegen auch zur Kommunikation zwischen Prozessen eingesetzt werden, die nicht miteinander&lt;br /&gt;
verwandt sind und sich darüber hinaus auf unterschiedlichen Rechnern innerhalb eines Netzwerkes befinden dürfen. Sie sind &lt;br /&gt;
flexibler als anonyme Pipes und eignen sich für sogenannte Client-Server-Anwendungen (es lassen sich auch RPCs realisieren).&lt;br /&gt;
Benannte Pipes ermöglichen die gleichzeitige Kommunikation in beide Richtungen, das heißt, Daten können im Vollduplexbetrieb &lt;br /&gt;
zwischen den Prozessen ausgetauscht werden.&lt;br /&gt;
 &lt;br /&gt;
Erstelle Named Pipe mit Namen sux. Schreibe &amp;quot;Hallo Welt&amp;quot; in die Pipe sux und bleibe im Hintergrund. Gebe Inhalt der Pipe mit cat aus&lt;br /&gt;
 root@zero:~# mkfifo sux ; echo 'Hallo Welt' &amp;gt; sux &amp;amp; cat &amp;lt; sux&lt;br /&gt;
 [1] 12947&lt;br /&gt;
 Hallo Welt&lt;br /&gt;
 [1]+  Done                    echo 'Hallo Welt' &amp;gt; sux&lt;br /&gt;
&lt;br /&gt;
====Sockets====&lt;br /&gt;
Schnittstelle um es vernetzten Rechnern zu ermöglichen, miteinander zu kommunizieren.&lt;br /&gt;
&lt;br /&gt;
Sie ist in der Regel definiert durch IP-Adresse sowie Port. &lt;br /&gt;
&lt;br /&gt;
====Links====&lt;br /&gt;
Bei Links handelt es sich um symbolische Verweise auf andere Dateien&lt;br /&gt;
&lt;br /&gt;
'''Softlink'''&lt;br /&gt;
Ein Softlink ist eine Datei die nur auf den Namen einer anderen Datei verweist. Wenn die Originaldatei gelöscht wird, zeigt &lt;br /&gt;
der Link ins Leere. &lt;br /&gt;
&lt;br /&gt;
 ln -s datei softlink&lt;br /&gt;
&lt;br /&gt;
{| border=1 cellpadding=2&lt;br /&gt;
| Vorteile&lt;br /&gt;
| Symbolische Links können auch auf Verzeichnisse angelegt werden&amp;lt;br&amp;gt;Sie sind partitionsübergreifend&amp;lt;br&amp;gt;Man kann sie auf Dateien anlegen, die noch nicht existieren&lt;br /&gt;
|-&lt;br /&gt;
| Nachteile&lt;br /&gt;
| Wenn das Original gelöscht ist, ist kein Zugriff mehr möglich&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Beispiel&lt;br /&gt;
 root@zero:~# ln -s text verweis&lt;br /&gt;
 root@zero:~# ls -l verweis&lt;br /&gt;
 lrwxrwxrwx 1 root root 4 2009-06-18 15:48 verweis -&amp;gt; text&lt;br /&gt;
&lt;br /&gt;
'''Hardlinks'''&lt;br /&gt;
 ln datei hardlink&lt;br /&gt;
Eigentlich ist jede Datei ein Hardlink. Ein Hardlink ist ein Verzeichniseintrag,&lt;br /&gt;
der auf eine Inode verweist. Beim Erzeugen einer Datei verweist ein Eintrag auf&lt;br /&gt;
eine Inode. Man kann dann weitere Verweise erzeugen. Der Linkcounter wird&lt;br /&gt;
jeweils um 1 erhöht. Beim Löschen einer Datei wird er jeweils um 1 reduziert.&lt;br /&gt;
Wird der Wert 0 erreicht, ist die Datei gelöscht.&lt;br /&gt;
{| border=1 cellpadding=2&lt;br /&gt;
| Vorteile&lt;br /&gt;
|Zugriff auf die Daten, selbst wenn das Orginal gelöscht ist.&lt;br /&gt;
|-&lt;br /&gt;
|Nachteile&lt;br /&gt;
|Man kann keine Hardlinks auf Verzeichnisse anlegen.&lt;br /&gt;
Ist nur innerhalb einer Partion möglich.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Beispiel&lt;br /&gt;
 root@zero:~# touch 1&lt;br /&gt;
 root@zero:~# echo &amp;quot;text&amp;quot; &amp;gt; 1&lt;br /&gt;
 root@zero:~# ln 1 2&lt;br /&gt;
 root@zero:~# more 2&lt;br /&gt;
 text&lt;br /&gt;
 root@zero:~# echo &amp;quot;doch kein text&amp;quot; &amp;gt; 1&lt;br /&gt;
 root@zero:~# more 1&lt;br /&gt;
 doch kein text&lt;br /&gt;
 root@zero:~# more 2&lt;br /&gt;
 doch kein text&lt;br /&gt;
&lt;br /&gt;
Weitere Optionen:&lt;br /&gt;
 -b sichert Dateien, statt sie zu überschreiben &lt;br /&gt;
 -f Überschreibt bestehende, gleichnamige Dateien&lt;br /&gt;
 -i fragt vor dem Überschreiben nach Bestätigung&lt;br /&gt;
 -v ausführliche Meldungen&lt;br /&gt;
&lt;br /&gt;
==Prozesse==&lt;br /&gt;
===Was ist ein Prozess?===&lt;br /&gt;
Ein Prozess setzt sich aus zwei Teilen zusammen:&lt;br /&gt;
&lt;br /&gt;
1.Programm, das in den Hauptspeicher geladen wurde&lt;br /&gt;
&lt;br /&gt;
2.Prozessumgebung&lt;br /&gt;
&lt;br /&gt;
Unter einem Prozess versteht man ein Programm (binär), das in den Hauptspeicher&lt;br /&gt;
geladen wurde. Also nicht das Program selbst, das auf der Festplatte liegt ist der&lt;br /&gt;
Prozess, sondern es wird erst durch das Laden in den Hauptspeicher dazu.&lt;br /&gt;
Normalerweise liegt ein Programm als ausführbare Datei irgendwo auf der&lt;br /&gt;
Festplatte oder auf Diskette. Ob es sich bei dem Programm um eine binäre Datei&lt;br /&gt;
handelt, kann man mit dem Befehl '' file '' feststellen.&lt;br /&gt;
 &lt;br /&gt;
 root@zero:~# file /bin/mkdir&lt;br /&gt;
 /bin/mkdir: ELF 32-bit LSB executable, Intel 80386, version 1 (SYSV), dynamically linked (uses shared libs), for GNU/Linux 2.6.8, stripped&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Die Datei liegt im Maschinencode vor und kann in den Hauptspeicher geladen&lt;br /&gt;
werden. Sobald dies geschehen ist, kann der Rechner diesen Maschinencode&lt;br /&gt;
abarbeiten (ausführen).&lt;br /&gt;
&lt;br /&gt;
Da aber ein Programm nicht direkt auf die Hardware zugreifen soll, muss es vom&lt;br /&gt;
Betriebsystem kontrolliert werden. Das Betriebssystem liegt logisch gesehen&lt;br /&gt;
zwischen Hardware und Anwendung. Das Betriebssystem ordnet jedem Prozess&lt;br /&gt;
verschiedene Kenndaten zu, um die Prozesse verwalten zu können. Alle&lt;br /&gt;
Kenndaten, die einem Prozess zugeordnet sind, nennt man die&lt;br /&gt;
Prozessumgebung.Wenn man in der Shell ein Kommando eingibt, wird ein Prozess&lt;br /&gt;
kreiert. Natürlich ist die Shell selbst auch ein Prozess. Ein Prozess kann aber&lt;br /&gt;
genauso gut ein Serverprozess (Dienst) sein, z.B. Apache.&lt;br /&gt;
Ein wesentliches Merkmal eines Prozesses ist die Prozesskommunikation. Über im&lt;br /&gt;
Betriebssystem implementierte Methoden ist es möglich, dass verschiedene&lt;br /&gt;
Prozesse Signale und Daten untereinander austauschen können.&lt;br /&gt;
Dadurch wird auch dem Benutzer ermöglicht, einem Prozeß bestimmte Signale zu&lt;br /&gt;
senden bzw. auf den Status eines Prozesses Einfluss zu nehmen.&lt;br /&gt;
&lt;br /&gt;
===Prozesstabelle (Anzeige mit ps)===&lt;br /&gt;
Da zu jedem Prozess Kenndaten geführt werden, müssen diese auch irgendwo&lt;br /&gt;
festgehalten werden. Das geschieht in der sogenannten Prozesstabelle.&lt;br /&gt;
&lt;br /&gt;
Kenndaten der Prozesse (Auswahl):&lt;br /&gt;
* F Flags (z.B. ausgelagert; Systemprozess; Trace,...)&lt;br /&gt;
* UID Nutzer, mit dessen Rechten der Prozess ausgeführt wird&lt;br /&gt;
* PID Prozess - ID. Diese Nummer gibt eine eindeutige Prozess - Nummer&lt;br /&gt;
an. Sie wird vom System automatisch beim Starten des Prozesses&lt;br /&gt;
vergeben und ist für die Laufzeit eindeutig.&lt;br /&gt;
* PPID Prozessnumer der Eltern-Prozesses&lt;br /&gt;
* PRI Priorität eines Prozesses; je niedriger der Wert ist, desto besser&lt;br /&gt;
* NI ist der Nicewert des Prozesses; Nice erniedrigt den Grundwert&lt;br /&gt;
der Priorität des Prozesses und gibt damit Prozessorzeit für andere&lt;br /&gt;
Prozesse frei.&lt;br /&gt;
* SIZE Speichergröße des Prozesses inklusive Stack (eine Art Zwischenspeicher)&lt;br /&gt;
* RSS Verbrauch an physischen Speicher&lt;br /&gt;
* WCHAN ist der Name der Kernerlfunktion, in der der Prozess schläft&lt;br /&gt;
* STAT Status des Prozesses&lt;br /&gt;
R läuft       S schlafend     D nicht störbarer Schlaf&lt;br /&gt;
T angehalten  Z Zombie        W der Prozess belegt keine Seiten&lt;br /&gt;
* TIME Bisland benötigte Prozessorzeit&lt;br /&gt;
* SIZE ist die Größe von Text, Daten und Stack&lt;br /&gt;
* TTY die Nummer des kontrollierenden Teminal; wenn hier ein ? steht,&lt;br /&gt;
handelt es sich um einen Dämon oder Serverprozess.&lt;br /&gt;
* COMMAND Angabe des Prozesses selbst. Dies ist meist der Programmname.&lt;br /&gt;
&lt;br /&gt;
Weiteres&lt;br /&gt;
* GID Gruppe, unter der der Prozess läuft&lt;br /&gt;
* Verweis auf das aktuellen Arbeitsverzeichnis&lt;br /&gt;
* Um mit relativen Pfadangaben arbeiten zu können braucht man diesen Eintrag&lt;br /&gt;
* Tabelle mit Verweisen auf aktuell geöffnete Dateien&lt;br /&gt;
* 3 sind automatisch geöffnet Standardeingabe, Standardausgabe und&lt;br /&gt;
Standardfehlerkanal&lt;br /&gt;
&lt;br /&gt;
Beispiel&lt;br /&gt;
 root@zero:~# ps -l&lt;br /&gt;
 F S   UID   PID  PPID  C PRI  NI ADDR SZ WCHAN  TTY          TIME CMD&lt;br /&gt;
 4 R     0 18639 18631  0  80   0 -  1080 -      pts/0    00:00:00 bash&lt;br /&gt;
 0 R     0 25904 18639  0  80   0 -   635 -      pts/0    00:00:00 ps&lt;br /&gt;
&lt;br /&gt;
===Eltern und Kinder===&lt;br /&gt;
Jeder Prozess kann weitere Prozesse erzeugen. Die erzeugten Prozesse bezeichnet&lt;br /&gt;
man als Kindprozesse. Jeder Kindprozess weiß anhand der PID, woher er stammt.&lt;br /&gt;
&lt;br /&gt;
Alle Prozesse sind von einem anderen Prozess gestartet worden, mit Ausnahme&lt;br /&gt;
des Pseudoprozesses (noch im Kernel beim Starten erzeugter Prozess). Dieser hat&lt;br /&gt;
die Prozessnummer 0. Er hat die Aufgabe, den Init Prozess ( /sbin/init die Nummer&lt;br /&gt;
1) zu starten, der in System V alle anderen Prozesse direkt oder über seine Kind-&lt;br /&gt;
prozesse startet. (init wird konfiguriert durch die /etc/inittab)&lt;br /&gt;
&lt;br /&gt;
Es gibt zwei Arten wie ein Prozess gestartet werden kann:&lt;br /&gt;
&lt;br /&gt;
# Fork und Exec: Prozessumgebung wird dupliziert, der neue Prozess bekommt eine eigene neue PID&lt;br /&gt;
# Exec: Alter Prozess wird durch neuen Prozess überladen (geht mit dem shell-buildin exec)&lt;br /&gt;
&lt;br /&gt;
'''Rechte auf Objekte UID GID'''&lt;br /&gt;
Ob ein Prozess auf eine Datei zugreifen kann, entscheidet der Kernel anhand der&lt;br /&gt;
Zugriffssrechte, die auf der Datei gesetzt sind. Er checkt anhand der UID und GID&lt;br /&gt;
des Prozesses, ob es erlaubt ist. Mit dieser Technik wird letztendlich geprüft, was&lt;br /&gt;
ein User darf, und was nicht.&lt;br /&gt;
&lt;br /&gt;
===Rechenzeit und Priorität===&lt;br /&gt;
Da auch bei Prozessen eine Gerechtigkeit herschen muss, muss eine Instanz&lt;br /&gt;
darüber entscheiden wie lange ein Prozess Rechenzeit verbrauchen darf.&lt;br /&gt;
Folgende Kenndaten werden dazu benötigt&lt;br /&gt;
* clocktick = Zeiteinheit&lt;br /&gt;
* n = Faktor über den Kernel einstellbar&lt;br /&gt;
* slice = n &amp;lt;nowiki&amp;gt;*&amp;lt;/nowiki&amp;gt; clocktick&lt;br /&gt;
* agingtime = weitere Zeiteinheit über den Kernel einstellbar&lt;br /&gt;
&lt;br /&gt;
Es wird davon ausgegangen das der Prozess mit der niedrigsten Priorität gerade&lt;br /&gt;
rechnet. Pro clocktick erhöht sich die Priorität dieses Prozesses um eins.&lt;br /&gt;
&lt;br /&gt;
Jetzt können 3 Situationen eintreten die alle dazu führen das der Scheduler&lt;br /&gt;
aufgerufen wird.&lt;br /&gt;
&lt;br /&gt;
# Prozess blockiert wegen einer Ausgabe oder Eingabe.&lt;br /&gt;
# Gibt Rechenzeit freiwillig ab.&lt;br /&gt;
# Der Slice endet.&lt;br /&gt;
&lt;br /&gt;
Der Aufruf des Schedulers bewirkt das der Prozess mit der niedrigsten Priorität&lt;br /&gt;
gescheduled wird, er also nun rechnen darf. Nach Ablauf der agingtime werden&lt;br /&gt;
nun die Prozesse &amp;quot;gealtert&amp;quot;. Das geschieht nach folgender Formel&lt;br /&gt;
&lt;br /&gt;
Neue Priorität = Alte Priorität / 2 + Nicewert&lt;br /&gt;
&lt;br /&gt;
Der User hat die Möglichkeit, über den sogenannten Nicefaktor den Grundwert für&lt;br /&gt;
einen Prozess zu senken. Der Prozess braucht dann länger für seine Abarbeitung.&lt;br /&gt;
Er verhält sich somit netter zu den anderen Prozessen. Normale User können nur&lt;br /&gt;
netter werden, der Systemverwalter kann auch nicht netter (gemeiner) werden. Der&lt;br /&gt;
Bereich liegt zwischen 19 (sehr nett) bis 0 (weniger nett) für die User, und 19 bis&lt;br /&gt;
-20 für root.&lt;br /&gt;
&lt;br /&gt;
[[Image:pri.png]]&lt;br /&gt;
&lt;br /&gt;
'''Signale'''&lt;br /&gt;
&lt;br /&gt;
Mit den Kommando kill und killall kann man Prozessen Signale schicken&lt;br /&gt;
&lt;br /&gt;
 kill -Signalnummer PID &lt;br /&gt;
&lt;br /&gt;
Signalnummer&lt;br /&gt;
{| border=1 cellpadding=2&lt;br /&gt;
!Signalname&lt;br /&gt;
!Wert&lt;br /&gt;
!Aktion&lt;br /&gt;
|-&lt;br /&gt;
|SIGHUP&lt;br /&gt;
|1&lt;br /&gt;
|Neuinitialisierung eines Prozesses&lt;br /&gt;
|-&lt;br /&gt;
|SIGINT&lt;br /&gt;
|2&lt;br /&gt;
|Interrupt-Signal von der Tastatur (STRG+c)&lt;br /&gt;
|-&lt;br /&gt;
|SIGQUIT&lt;br /&gt;
|3&lt;br /&gt;
|Interrupt-Signal von der Tastatur (STRG+c) mit Dump&lt;br /&gt;
|-&lt;br /&gt;
|SIGKILL&lt;br /&gt;
|9&lt;br /&gt;
|unwiderrufliches Beendigungssignal (Töten)&lt;br /&gt;
|-&lt;br /&gt;
|SIGSEGV&lt;br /&gt;
|11&lt;br /&gt;
|Ungültige Speicherreferenz (bedeutet oft auf defekten Speicher)&lt;br /&gt;
|-&lt;br /&gt;
|SIGTERM &lt;br /&gt;
|15&lt;br /&gt;
|Beendigungssignal (geöffnete Dateien werden geschlossen)&lt;br /&gt;
|-&lt;br /&gt;
|SIGCONT &lt;br /&gt;
|18&lt;br /&gt;
|Weiterfahren, wenn gestoppt&lt;br /&gt;
|-&lt;br /&gt;
|SIGSTOP&lt;br /&gt;
|19&lt;br /&gt;
|Prozessstop&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Beispiel&lt;br /&gt;
 root@zero:~# kill -1 7562&lt;br /&gt;
&lt;br /&gt;
===Programme im Zusammenhang mit Prozessen===&lt;br /&gt;
* ps: Zeigt die Prozesse mit ihrem Status an&lt;br /&gt;
 root@zero:~# ps&lt;br /&gt;
  PID TTY          TIME CMD&lt;br /&gt;
 14134 pts/0    00:00:00 bash&lt;br /&gt;
 14149 pts/0    00:00:00 ps&lt;br /&gt;
&lt;br /&gt;
 root@zero:~# ps -elf | grep apache&lt;br /&gt;
 1 S root      5738     1  0  80   0 -  5461 select Jun16 ?        00:00:00 /usr/sbin/apache2 -k start&lt;br /&gt;
 5 S www-data  5739  5738  0  80   0 -  5581 inet_c Jun16 ?        00:00:00 /usr/sbin/apache2 -k start&lt;br /&gt;
 5 S www-data  5742  5738  0  80   0 -  5461 inet_c Jun16 ?        00:00:00 /usr/sbin/apache2 -k start&lt;br /&gt;
 5 S www-data  5743  5738  0  80   0 -  5461 inet_c Jun16 ?        00:00:00 /usr/sbin/apache2 -k start&lt;br /&gt;
 5 S www-data  5745  5738  0  80   0 -  5461 inet_c Jun16 ?        00:00:00 /usr/sbin/apache2 -k start&lt;br /&gt;
 5 S www-data  5746  5738  0  80   0 -  5461 inet_c Jun16 ?        00:00:00 /usr/sbin/apache2 -k start&lt;br /&gt;
 0 S root     14153 14134  0  80   0 -   837 pipe_w 16:59 pts/0    00:00:00 grep apache&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* nice: Lässt ein Programm mit verändertem Grundwert der Priorität laufen&lt;br /&gt;
 root@zero:~# nice&lt;br /&gt;
 0&lt;br /&gt;
 root@zero:~# nice -n 9 bash&lt;br /&gt;
 root@zero:~# nice&lt;br /&gt;
 9&lt;br /&gt;
 root@zero:~#&lt;br /&gt;
&lt;br /&gt;
* renice: Ändert den Grundwert der Priorität eines laufenden Prozesses&lt;br /&gt;
 root@zero:~# renice 10 5742&lt;br /&gt;
 5742: Alte Priorität: 0, neue Priorität: 10&lt;br /&gt;
&lt;br /&gt;
* top: Zeigt die Prozesse mit ihrem Status an (Abbrechen mit q)&lt;br /&gt;
 root@zero:~# top&lt;br /&gt;
&lt;br /&gt;
* pstree: Zeigt die Prozesse als Baumstruktur&lt;br /&gt;
 root@zero:~# pstree&lt;br /&gt;
 init─┬─NetworkManager&lt;br /&gt;
      ├─acpid&lt;br /&gt;
      ├─apache2───5*[apache2]&lt;br /&gt;
      ├─atd&lt;br /&gt;
      ├─bluetoothd&lt;br /&gt;
      ├─console-kit-dae───63*[{console-kit-dae}]&lt;br /&gt;
      ├─cron&lt;br /&gt;
      ├─cupsd&lt;br /&gt;
      ├─dbus-daemon&lt;br /&gt;
      ├─dd&lt;br /&gt;
      ├─gdm───gdm─┬─Xorg&lt;br /&gt;
      │           └─gdmgreeter&lt;br /&gt;
      ├─6*[getty]&lt;br /&gt;
      ├─hald───hald-runner─┬─hald-addon-acpi&lt;br /&gt;
      │                    ├─hald-addon-inpu&lt;br /&gt;
      │                    └─2*[hald-addon-stor]&lt;br /&gt;
      ├─klogd&lt;br /&gt;
      ├─nm-system-setti&lt;br /&gt;
      ├─nmbd&lt;br /&gt;
      ├─nscd───11*[{nscd}]&lt;br /&gt;
      ├─portmap&lt;br /&gt;
      ├─rpc.statd&lt;br /&gt;
      ├─slapd───2*[{slapd}]&lt;br /&gt;
      ├─smbd───smbd&lt;br /&gt;
      ├─sshd───sshd───bash───bash───pstree&lt;br /&gt;
      ├─syslogd&lt;br /&gt;
      ├─system-tools-ba&lt;br /&gt;
      ├─udevd&lt;br /&gt;
      ├─winbindd─┬─winbindd───winbindd&lt;br /&gt;
      │          └─3*[winbindd]&lt;br /&gt;
      └─wpa_supplicant&lt;br /&gt;
&lt;br /&gt;
===Jobs===&lt;br /&gt;
Unter einem Job versteht man ein Programm, welches man von der Shell gelöst&lt;br /&gt;
hat. D. h. man kann ganz normal weiter arbeiten und der Job verrichtet seinen&lt;br /&gt;
Dienst im Hintergrund. Man kann jederzeit zu diesem Job wieder Kontakt&lt;br /&gt;
aufnehmen.&lt;br /&gt;
&lt;br /&gt;
Ein Job kann auf 2 Arten gestarten werden:&lt;br /&gt;
&lt;br /&gt;
# Durch Anhängen des &amp;amp; Zeichens beim Programmstart&lt;br /&gt;
 root@zero:~# tail -f /var/log/messages &amp;amp;&lt;br /&gt;
 Jun 19 06:59:31 zero -- MARK --&lt;br /&gt;
 Jun 19 07:19:31 zero -- MARK --&lt;br /&gt;
 Jun 19 07:39:32 zero -- MARK --&lt;br /&gt;
 Jun 19 07:44:57 zero syslogd 1.5.0#5ubuntu3: restart.&lt;br /&gt;
 Jun 19 07:59:32 zero -- MARK --&lt;br /&gt;
 Jun 19 08:19:32 zero -- MARK --&lt;br /&gt;
 Jun 19 08:39:32 zero -- MARK --&lt;br /&gt;
 Jun 19 08:59:32 zero -- MARK --&lt;br /&gt;
 Jun 19 09:19:33 zero -- MARK --&lt;br /&gt;
 Jun 19 09:39:33 zero -- MARK --&lt;br /&gt;
 [3] 27421&lt;br /&gt;
&lt;br /&gt;
# Durch Stoppen des Prozesses durch Drücken von Strg-Z und in den Hintergrund schicken mit %n (n ist die Jobnummer)&lt;br /&gt;
 root@zero:~# watch cat /proc/cpuinfo&lt;br /&gt;
 Strg-Z&lt;br /&gt;
 [4]+  Stopped                 watch cat /proc/cpuinfo&lt;br /&gt;
 root@zero:~# bg %4&lt;br /&gt;
 [4]+ watch cat /proc/cpuinfo &amp;amp;&lt;br /&gt;
&lt;br /&gt;
Anweisungen im Zusammenhang mit Jobs (n ist die Jobnummer)&lt;br /&gt;
* bg %n : Einen Job in den Hintergrund stellen (wie oben)&lt;br /&gt;
* fg %n : Einen Job in den Vordergrund holen&lt;br /&gt;
 root@zero:~# fg %4&lt;br /&gt;
 watch cat /proc/cpuinfo&lt;br /&gt;
&lt;br /&gt;
* jobs : Aktive Jobs ausgeben&lt;br /&gt;
&lt;br /&gt;
 root@zero:~# jobs&lt;br /&gt;
 [1]   Running                 tail -f /var/log/syslog &amp;amp;&lt;br /&gt;
 [2]   Running                 tail -f /var/log/syslog &amp;amp;&lt;br /&gt;
 [3]-  Running                 tail -f /var/log/messages &amp;amp;&lt;br /&gt;
 [4]+  Stopped                 watch cat /proc/cpuinfo&lt;br /&gt;
&lt;br /&gt;
* Strg-Z : Einen Vordergrund-Job vorübergehend anhalten&lt;br /&gt;
* kill -STOP %n : Unterbricht Job im Hintergrund&lt;br /&gt;
 root@zero:~# kill -STOP %1&lt;br /&gt;
 root@zero:~# jobs&lt;br /&gt;
 [1]+  '''Stopped'''                 tail -f /var/log/syslog&lt;br /&gt;
 [2]   Running                 tail -f /var/log/syslog &amp;amp;&lt;br /&gt;
 [3]   Running                 tail -f /var/log/messages &amp;amp;&lt;br /&gt;
 [4]-  Stopped                 watch cat /proc/cpuinfo&lt;br /&gt;
* kill -CONT %n : Setzt den unterbrochenen Job im Hintergrund fort&lt;br /&gt;
root@zero:~# kill -CONT %1&lt;br /&gt;
root@zero:~# jobs&lt;br /&gt;
 [1]+  '''Running'''                 tail -f /var/log/syslog &amp;amp;&lt;br /&gt;
 [2]   Running                 tail -f /var/log/syslog &amp;amp;&lt;br /&gt;
 [3]   Running                 tail -f /var/log/messages &amp;amp;&lt;br /&gt;
 [4]-  Stopped                 watch cat /proc/cpuinfo&lt;br /&gt;
* kill -KILL %n : Tötet Job im Hintergrund&lt;br /&gt;
 root@zero:~# kill -KILL %1&lt;br /&gt;
 root@zero:~# jobs&lt;br /&gt;
 [1]+  '''Killed'''                  tail -f /var/log/syslog&lt;br /&gt;
 [2]   Running                 tail -f /var/log/syslog &amp;amp;&lt;br /&gt;
 [3]   Running                 tail -f /var/log/messages &amp;amp;&lt;br /&gt;
 [4]-  Stopped                 watch cat /proc/cpuinfo&lt;br /&gt;
 root@zero:~# jobs&lt;br /&gt;
 [2]   Running                 tail -f /var/log/syslog &amp;amp;&lt;br /&gt;
 [3]-  Running                 tail -f /var/log/messages &amp;amp;&lt;br /&gt;
 [4]+  Stopped                 watch cat /proc/cpuinfo&lt;br /&gt;
&lt;br /&gt;
Bedingungen, die zu Jobausführung eingehalten werden sollen:&lt;br /&gt;
* Der Job soll nicht auf den Bildschirm schreiben (Standardausgabe +Standardfehlerkanal).&lt;br /&gt;
* Er soll keine Eingaben vom Benutzer erwarten.&lt;br /&gt;
&lt;br /&gt;
==Suchen von Dateien==&lt;br /&gt;
===find===&lt;br /&gt;
 find ab_wo_wird_gesucht was_wird_gesucht aktion&lt;br /&gt;
 find [Pfad] [Bedingung] [Aktion]&lt;br /&gt;
&lt;br /&gt;
====Nach Namen====&lt;br /&gt;
 find [Pfad] '''-name''' [Name]&lt;br /&gt;
 &lt;br /&gt;
Finde alle Dateien mit Namen test ab dem Verzeichnis /home und gebe diese Zeilenweise aus&lt;br /&gt;
 root@zero:~# find /home -name test -print&lt;br /&gt;
 /home/xinux/test&lt;br /&gt;
 /home/test&lt;br /&gt;
&lt;br /&gt;
Wie oben, jedoch mit Namensanfang test&lt;br /&gt;
 root@zero:/home/xinux# find /home -name 'test*'&lt;br /&gt;
 /home/xinux/testdatei&lt;br /&gt;
 /home/xinux/test&lt;br /&gt;
 /home/test&lt;br /&gt;
&lt;br /&gt;
====Nach Benutzer(Eigentümer)====&lt;br /&gt;
 root@zero:/tmp# find /tmp/ '''-user''' xinux&lt;br /&gt;
 /tmp/datei&lt;br /&gt;
&lt;br /&gt;
====Nach Gruppe====&lt;br /&gt;
 root@zero:/tmp# find /tmp/ '''-group''' hacker&lt;br /&gt;
 /tmp/datei3&lt;br /&gt;
 /tmp/datei2&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
====Nach Typ====&lt;br /&gt;
Es wird nach Dateien anhand Ihrer Art gesucht:&lt;br /&gt;
 find [Pfad] '''-type''' [Typ] &lt;br /&gt;
Typ:&lt;br /&gt;
* f: Normale Dateien&lt;br /&gt;
 root@zero:~# find /tmp/ -type f&lt;br /&gt;
 /tmp/mbr.img&lt;br /&gt;
 /tmp/datei&lt;br /&gt;
 /tmp/zeugs&lt;br /&gt;
 /tmp/.X0-lock&lt;br /&gt;
* d: Verzeichnisse&lt;br /&gt;
 root@zero:~# find /var/log -type d&lt;br /&gt;
 /var/log&lt;br /&gt;
 /var/log/apache2&lt;br /&gt;
 /var/log/unattended-upgrades&lt;br /&gt;
 /var/log/apparmor&lt;br /&gt;
 /var/log/ConsoleKit&lt;br /&gt;
 /var/log/dist-upgrade&lt;br /&gt;
 /var/log/dist-upgrade/20090526-1052&lt;br /&gt;
 /var/log/cups&lt;br /&gt;
 /var/log/apt&lt;br /&gt;
 /var/log/fsck&lt;br /&gt;
 /var/log/samba&lt;br /&gt;
 /var/log/samba/cores&lt;br /&gt;
 /var/log/samba/cores/smbd&lt;br /&gt;
 /var/log/samba/cores/nmbd&lt;br /&gt;
 /var/log/samba/cores/winbindd&lt;br /&gt;
 /var/log/installer&lt;br /&gt;
 /var/log/gdm&lt;br /&gt;
 /var/log/news&lt;br /&gt;
* c: Char Devices (Zeichenorientierte Gerätedatei)&lt;br /&gt;
 root@zero:~# find / -type c&lt;br /&gt;
 /lib/udev/devices/kmem&lt;br /&gt;
 /lib/udev/devices/null&lt;br /&gt;
 /lib/udev/devices/console&lt;br /&gt;
 /lib/udev/devices/ppp&lt;br /&gt;
 /lib/udev/devices/net/tun&lt;br /&gt;
* b: Block Devices (Blockorientierte Gerätedatei)&lt;br /&gt;
* p: Benannte Pipe&lt;br /&gt;
* l: Links&lt;br /&gt;
* s: Sockets&lt;br /&gt;
&lt;br /&gt;
====Nach Modifikation====&lt;br /&gt;
Listet alle Dateien in /etc auf, die innerhalb von zwei Tagen modifiziert wurden&lt;br /&gt;
 root@zero:/var/log# find /etc/ -mtime 2 -print&lt;br /&gt;
 /etc/apache2&lt;br /&gt;
 /etc/apache2/mods-available&lt;br /&gt;
 /etc/apache2/conf.d&lt;br /&gt;
 /etc/apache2/sites-available&lt;br /&gt;
 /etc/bash_completion.d&lt;br /&gt;
 /etc/blkid.tab.old&lt;br /&gt;
 /etc/firefox-3.0/profile&lt;br /&gt;
 /etc/firefox-3.0/profile/chrome&lt;br /&gt;
 /etc/firefox-3.0/pref&lt;br /&gt;
 /etc/profile.d&lt;br /&gt;
 /etc/ufw/applications.d&lt;br /&gt;
 /etc/logrotate.d&lt;br /&gt;
 /etc/xulrunner-1.9&lt;br /&gt;
 /etc/blkid.tab&lt;br /&gt;
 /etc/cron.daily&lt;br /&gt;
 /etc/alternatives&lt;br /&gt;
 /etc/alternatives/x-www-browser&lt;br /&gt;
 /etc/alternatives/xulrunner&lt;br /&gt;
 /etc/gre.d&lt;br /&gt;
 /etc/hal/fdi/policy&lt;br /&gt;
 /etc/dbus-1/system.d&lt;br /&gt;
 /etc/udev/rules.d&lt;br /&gt;
&lt;br /&gt;
====Nach Größe====&lt;br /&gt;
Finde Dateien in /tmp, die größer als 100 MByte sind&lt;br /&gt;
 root@zero:/tmp# find /tmp/ -size +100M&lt;br /&gt;
 /tmp/datei&lt;br /&gt;
&lt;br /&gt;
Finde Dateien in /tmp, die kleiner als 100 KByte sind&lt;br /&gt;
 root@zero:/tmp# find /tmp/ -size -100k&lt;br /&gt;
 /tmp/&lt;br /&gt;
 /tmp/datei3&lt;br /&gt;
 /tmp/backup &lt;br /&gt;
 /tmp/datei2&lt;br /&gt;
 /tmp/.winbindd &lt;br /&gt;
 /tmp/.winbindd/pipe&lt;br /&gt;
 /tmp/mbr.img&lt;br /&gt;
 /tmp/zeugs&lt;br /&gt;
 /tmp/.ICE-unix&lt;br /&gt;
 /tmp/.X0-lock&lt;br /&gt;
 /tmp/datei1&lt;br /&gt;
 /tmp/.X11-unix&lt;br /&gt;
 /tmp/.X11-unix/X0&lt;br /&gt;
 /tmp/pulse-PKdhtXMmr18n&lt;br /&gt;
&lt;br /&gt;
====Nach Berechtigungen====&lt;br /&gt;
Finde Dateien in Home mit der Berechtigung 777 (-rwxrwxrwx)&lt;br /&gt;
 root@zero:/var# find /home/ -perm 777&lt;br /&gt;
 /home/samba&lt;br /&gt;
 /home/xinux/Examples&lt;br /&gt;
 /home/xinux/.pulse/1f0763ee4cf4c7e1d3c07fd149dda37b:runtime&lt;br /&gt;
 /home/test/Examples&lt;br /&gt;
&lt;br /&gt;
===locate===&lt;br /&gt;
Locate arbeitet über einen Index, der erstellt und aktualisiert werden muss. Aus diesem Grund kann locate teilweise nicht &lt;br /&gt;
akutell sein. Es ist immer schneller als find und es durchsucht immer das ganze Dateisystem. &lt;br /&gt;
 locate [Dateiname]&lt;br /&gt;
 &lt;br /&gt;
Lokalisiere die Datei wvdial.conf. Anmerkung: Der Stern wird beim Suchen automatisch hinzugefügt. Entspricht also&lt;br /&gt;
wvidal.conf*&lt;br /&gt;
 root@zero:~# locate wvdial.conf&lt;br /&gt;
 /etc/wvdial.conf&lt;br /&gt;
 /usr/share/man/man5/wvdial.conf.5.gz&lt;br /&gt;
 /var/lib/dpkg/info/wvdial.conffiles&lt;br /&gt;
 /var/lib/dpkg/info/wvdial.config&lt;br /&gt;
&lt;br /&gt;
Lokalisiere die Datei wvdial.conf und nur diese&lt;br /&gt;
 root@zero:~# locate -b '\wvdial.conf'&lt;br /&gt;
 /etc/wvdial.conf&lt;br /&gt;
&lt;br /&gt;
Aktualisieren des Indexes&lt;br /&gt;
 root@zero:~# updatedb&lt;br /&gt;
&lt;br /&gt;
==Wie wird ein Kommando lokalisiert==&lt;br /&gt;
Wenn die Shell alle Ersetzungen in der Kommandozeile vorgenommen und alle Umleitungen vorbereitet hat, ist der Zeitpunkt &lt;br /&gt;
gekommen, auf den der Anwender die ganze Zeit gewartet hat. Die Shell versucht das Kommando auszuführen. Dazu muss sie &lt;br /&gt;
es aber erst lokalisieren. Das erste passende Kommando wird ausgeführt.&lt;br /&gt;
&lt;br /&gt;
Als Kommandoname wird immer das erste Wort eines einfachen Kommandos erkannt. Ein Kommandoname kann mit Pfadnamen in &lt;br /&gt;
einem Verzeichnis (absolut oder relativ) angegeben werden. Die Shell erkennt dies an (mindestens) einem Slash `/' &lt;br /&gt;
im Kommandonamen. Wenn kein Verzeichnis angegeben ist, versucht die Shell selbst, das Kommando zu finden. Dazu wird &lt;br /&gt;
der Kommandoname zuerst in der Hashtabelle gesucht, dann wird er mit den Synonymen, mit den Scriptfunktionen und &lt;br /&gt;
schließlich mit den Shellfunktionen verglichen. &lt;br /&gt;
&lt;br /&gt;
Wird auf diese Weise kein Programm dieses Namens gefunden, werden alle in der PATH-Umgebungsvariablen aufgeführten &lt;br /&gt;
Verzeichnisse nach einer ausführbaren Datei dieses Namens durchsucht. Wird auch hier kein passendes Kommando gefunden, &lt;br /&gt;
gibt die Shell eine Fehlermeldung aus.&lt;br /&gt;
&lt;br /&gt;
===which und type===&lt;br /&gt;
====which====&lt;br /&gt;
which gibt die vollen Pfadnamen der Dateien aus, die bei Benutzung des angegebenen Befehls ausgeführt werden würden.&lt;br /&gt;
&lt;br /&gt;
 which [-a] Dateiname &lt;br /&gt;
&lt;br /&gt;
Optionen:&lt;br /&gt;
&lt;br /&gt;
* -a : Alle Treffer ausgeben, nicht nur den ersten&lt;br /&gt;
* --skip-dot : Verzeichnisse, die mit einem Punkt beginnen, auslassen&lt;br /&gt;
&lt;br /&gt;
Beispiel&lt;br /&gt;
 root@zero:~# which startx&lt;br /&gt;
 /usr/bin/startx&lt;br /&gt;
&lt;br /&gt;
====type====&lt;br /&gt;
Anzeigen der absoluten Pfadnamen von Befehlen, und ob sich diese Befehle in der Hash-Tabelle der aktuellen&lt;br /&gt;
Shell befinden.&lt;br /&gt;
&lt;br /&gt;
 type [Optionen] Befehle&lt;br /&gt;
&lt;br /&gt;
Beispiel&lt;br /&gt;
 root@zero:~# type ls&lt;br /&gt;
 ls is aliased to `ls --color=auto'&lt;br /&gt;
&lt;br /&gt;
Optionen:&lt;br /&gt;
&lt;br /&gt;
* -a : Alle vorkommenden Befehle werden ausgegeben, nicht nur das, welches aufgerufen werden würde&lt;br /&gt;
 root@zero:~# type '''-a''' ls&lt;br /&gt;
 ls is aliased to `ls --color=auto'&lt;br /&gt;
 ls is /bin/ls&lt;br /&gt;
&lt;br /&gt;
* -p : Anzeigen des Eintrags von Befehl in der Hash-Tabelle. Dieser Wert kann sich vom ersten Auftreten des Befehls in PATH&lt;br /&gt;
unterscheiden&lt;br /&gt;
 root@zero:~# type '''-p''' apache2&lt;br /&gt;
 /usr/sbin/apache2&lt;br /&gt;
&lt;br /&gt;
* -t : Anzeigen, ob Befehl ein Aliasname, ein Schlüsselwort, eine Funktion, ein eingebauter Befehl oder eine Datei ist&lt;br /&gt;
 root@zero:~# type '''-t''' apache2&lt;br /&gt;
 file&lt;/div&gt;</summary>
		<author><name>192.168.178.46</name></author>
	</entry>
	<entry>
		<id>https://www.xinux.net/index.php?title=Linux_Grundlagen&amp;diff=43</id>
		<title>Linux Grundlagen</title>
		<link rel="alternate" type="text/html" href="https://www.xinux.net/index.php?title=Linux_Grundlagen&amp;diff=43"/>
		<updated>2009-07-06T10:01:19Z</updated>

		<summary type="html">&lt;p&gt;192.168.178.46: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Einführung==&lt;br /&gt;
===Geschichte Unix===&lt;br /&gt;
====1969====&lt;br /&gt;
Am Anfang von Linux steht Multics, ein von Bell Laboratories geschaffenes &amp;quot;Betriebssystem&amp;quot;, &lt;br /&gt;
das noch mit Lochkarten arbeitete. Multics wird mit Unterstützung von AT&amp;amp;T und Western &lt;br /&gt;
Electric unter Mitarbeit von Ken Thompson und Dennis Ritchie weiterentwickelt. Obwohl sich &lt;br /&gt;
Bell Laboratories bald zurückzieht, gibt Thompson das Projekt nicht auf.  Zum Entwicklerteam &lt;br /&gt;
gehören auch Rudd Canaday und Brian Kernighan. Letzterer gibt 1970 dem Betriebssystem den Namen UNIX. &lt;br /&gt;
Thompson definiert 7 Richtlinien für UNIX:&lt;br /&gt;
 &lt;br /&gt;
# Hierarchische Anordnung der Dateisysteme&lt;br /&gt;
# Die Ausgabe von Daten an die Peripherie(-geräte) und Dateien soll gleich sein.&lt;br /&gt;
# Prozesse und Programme sollen miteinander kommunizieren.&lt;br /&gt;
# Multitasking (voneinander getrennte Prozesse)&lt;br /&gt;
# Persönliche Shell's&lt;br /&gt;
# Der Compiler soll für viele Programmiersprachen tauglich sein.&lt;br /&gt;
# Portabilität&lt;br /&gt;
&lt;br /&gt;
====1971====&lt;br /&gt;
Bis 1971 ist das für eine DEC PDP-7 geschriebene Unix als Version 1 auf eine PDP-11 portiert. Bis&lt;br /&gt;
zur Version 4 entwickelt Ritchie die Programmier- (Hoch-) Sprache C. Das in Assembler geschriebene&lt;br /&gt;
Unix wird fast völlig nach C übersetzt, wodurch zum erstenmal die geforderte Hardware-Unabhängigkeit&lt;br /&gt;
des Betriebssystems realisiert werden kann.&lt;br /&gt;
&lt;br /&gt;
===Distributionen===&lt;br /&gt;
{| Border=1 Cellpadding=2&lt;br /&gt;
| &lt;br /&gt;
|Url&lt;br /&gt;
|Paketformat&lt;br /&gt;
|-&lt;br /&gt;
|Red Hat&lt;br /&gt;
|www.redhat.com&lt;br /&gt;
|rpm&lt;br /&gt;
|-&lt;br /&gt;
|fedora&lt;br /&gt;
|fedora.redhat.com&lt;br /&gt;
|rpm&lt;br /&gt;
|-&lt;br /&gt;
|CentOS&lt;br /&gt;
|www.centos.org&lt;br /&gt;
|rpm&lt;br /&gt;
|-&lt;br /&gt;
|Suse/openSUSE&lt;br /&gt;
|www.opensuse.org&lt;br /&gt;
|rpm&lt;br /&gt;
|-&lt;br /&gt;
|Debian&lt;br /&gt;
|www.debian.org&lt;br /&gt;
|deb&lt;br /&gt;
|-&lt;br /&gt;
|Ubuntu&lt;br /&gt;
|www.ubuntu.com&lt;br /&gt;
|deb&lt;br /&gt;
|-&lt;br /&gt;
|Mandrake&lt;br /&gt;
|www.linux-mandrake.com&lt;br /&gt;
|rpm&lt;br /&gt;
|-&lt;br /&gt;
|Easy Linux&lt;br /&gt;
|www.easy-linux.de&lt;br /&gt;
|rpm&lt;br /&gt;
|-&lt;br /&gt;
|Turbo&lt;br /&gt;
|www.turbolinux.com&lt;br /&gt;
|rpm&lt;br /&gt;
|-&lt;br /&gt;
|minis&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|toms&lt;br /&gt;
|www.toms.net/rb&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|damn small linux&lt;br /&gt;
|www.damnsmalllinux.org&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|pocket-linux&lt;br /&gt;
|www.pocket-linux.org&lt;br /&gt;
|&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
====Bücher====&lt;br /&gt;
 Titel : Das Linux Anwenderhandbuch und Leitfaden für die Systemverwaltung&lt;br /&gt;
 Autor : Sebastian Hetze, Dirk Hohndel, Olaf Kirch und Martin Müller&lt;br /&gt;
 Verlag: Lunetix&lt;br /&gt;
 ISBN : 3-929764-06-7&lt;br /&gt;
&lt;br /&gt;
 Titel : Linux in a Nutshell&lt;br /&gt;
 Autor : Jessica Perry Hekman und die Mitarbeiter von O'Reilly &amp;amp; Associates&lt;br /&gt;
 Verlag: O'Reilly&lt;br /&gt;
 ISBN : 3-930673-57-6&lt;br /&gt;
&lt;br /&gt;
 Titel : Linux - Wegweiser zur Installation und Konfiguration&lt;br /&gt;
 Autor : Matt Welsh, Lar Kaufman, Matthias Kalle Dallheimer&lt;br /&gt;
 Verlag: O'Reilly&lt;br /&gt;
 ISBN : 3-930673-58-4 (deutsch), 1-56592-469-X (englisch)&lt;br /&gt;
&lt;br /&gt;
 Titel : Linux - Installation, Konfiguration, Anwendung&lt;br /&gt;
 Autor : Michael KoflerMultitasking&lt;br /&gt;
 Verlag: Addison-Wesley&lt;br /&gt;
 ISBN : 3-8273-1475-5&lt;br /&gt;
&lt;br /&gt;
 Titel : Linux - Wegweiser für Netzwerker&lt;br /&gt;
 Autor : Olaf Kirch&lt;br /&gt;
 Verlag: O'Reilly&lt;br /&gt;
 ISBN : 3-930673-18-5&lt;br /&gt;
&lt;br /&gt;
 Titel : TCP/IP-Netzwerk-Administration&lt;br /&gt;
 Autor : Craig Hunt&lt;br /&gt;
 Verlag: O'Reilly&lt;br /&gt;
 ISBN : 3-89721-110-6&lt;br /&gt;
&lt;br /&gt;
 Titel : Essential System Administration&lt;br /&gt;
 Autor : Eleen Frisch&lt;br /&gt;
 Verlag: O'Reilly&lt;br /&gt;
 ISBN : 1-56592-127-5&lt;br /&gt;
&lt;br /&gt;
==Betriebssystem==&lt;br /&gt;
===Was ist ein Betriebssystem?===&lt;br /&gt;
&lt;br /&gt;
Ein Betriebssystem liegt logisch gesehen zwischenAnwendungsprogramm und Hardware.&lt;br /&gt;
&lt;br /&gt;
Es nimmt die Anforderungen der Anwendungsprogramme entgegen und leitet&lt;br /&gt;
diese kontrolliert an die Hardware weiter. Kein Anwendungsprogramm sollte&lt;br /&gt;
direkt auf die Hardware zugreifen können. Den zentralen Zugang schafft einzig&lt;br /&gt;
das Betriebssystem. Somit kann das Betriebssystem unsinnige Anforderungen&lt;br /&gt;
oder Bedienungsfehler abblocken.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Image:Linux.jpg]]&lt;br /&gt;
&lt;br /&gt;
===Aufgaben eines Betriebssystems===&lt;br /&gt;
&lt;br /&gt;
# Verbergen der Komplexität der Maschine vor dem Anwender (Abstraktion)&lt;br /&gt;
# Bereitstellen einer Benutzerschnittstelle (&amp;quot;Kommandointerpreter&amp;quot;, &amp;quot;Shell&amp;quot;)&lt;br /&gt;
# Bereitstellen einer normierten Programmierschnittstelle (API)&lt;br /&gt;
# Verwaltung der Ressourcen der Maschine::&lt;br /&gt;
Hauptspeicher&lt;br /&gt;
Prozessor(en)&lt;br /&gt;
Hintergrundspeicher (Platte, Band, etc.)&lt;br /&gt;
Geräte (Terminal, Drucker, Plotter, etc.)&lt;br /&gt;
Rechenzeit&lt;br /&gt;
Koordination von Prozessen&lt;br /&gt;
&lt;br /&gt;
===Aufbau eines Betriebssystems===&lt;br /&gt;
&lt;br /&gt;
Ein Rechensystem besteht aus Hardware, Systemprogrammen und Anwendungs-&lt;br /&gt;
programmen. Unter einem Betriebssystem wird meist die Summe aus Betriebs-&lt;br /&gt;
systemkern (Kernel) und den wichtigsten Systemprogrammen verstanden. Ein&lt;br /&gt;
minimaler LINUX-Kernel besitzt ungefähr eine Größe von 400 - 800 kByte.&lt;br /&gt;
Weitere wichtige Systemkomponenten benötigen zusätzlich 10 - 100 Mbyte&lt;br /&gt;
Plattenplatz.&lt;br /&gt;
&lt;br /&gt;
Ein Betriebssystem stellt den Rechner als erweiterte Maschine (virtuelle&lt;br /&gt;
Maschine) über definierte Software-Schnittstellen zur Verfügung.&lt;br /&gt;
Das Betriebssystem dient als Betriebsmittelverwalter, der Anforderungen&lt;br /&gt;
befriedigt, protokolliert, abrechnet und vermittelt.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Aufgaben des Betriebssystemkerns:&lt;br /&gt;
&lt;br /&gt;
{| Border=1 Cellpadding=2&lt;br /&gt;
|Prozessverwaltung  (dispatching and scheduling)&lt;br /&gt;
| Mehrere Benutzer können mit mehreren Aktionen gleichzeitig im System arbeiten, ohne sich gegenseitig zu beeinflussen. Damit dies möglich ist,  müssen die Aktionen organisiert, koordiniert und verwaltet werden. Die zu verwaltende Einheit nennt man Prozess.&lt;br /&gt;
|-&lt;br /&gt;
|Speicherverwaltung   (memory management)&lt;br /&gt;
|Zuteilen von Speicherbereichen an laufende Prozesse, Schutz der Speicherbereiche vor unbefugten Zugriffen, bei Speicherengpässen: Auslagern von ganzen (swapping) oder von Teilen (paging) von Prozessen auf die Platte (swap file).&lt;br /&gt;
|-&lt;br /&gt;
|Dateiverwaltung  (file handling)&lt;br /&gt;
|Zuteilung von Plattenplatz für Programme, Benutzer und Systemdienste, Schreiben, Lesen und Strukturieren der Daten auf den Massenspeichern; Durch Bereitstellung einer entsprechenden Schnittstelle (VFS, virtual file system) kann der Kern Dateisysteme unterschiedlichster Art (EXT2, FAT, NFS, HPFS, NTFS, ...) ansprechen.&lt;br /&gt;
|-&lt;br /&gt;
|Geräteverwaltung  (resource management)&lt;br /&gt;
|Der Kern ermöglicht und kontrolliert den Zugriff auf die Hardware. Er steuert die Ein- und Ausgabetätigkeiten der Anwender. An den Kern&lt;br /&gt;
gebunden sind die entsprechenden Gerätetreiber (device driver), die damit eine Kommunikation zwischen Kern und Hardware ermöglichen.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
===Multitasking===&lt;br /&gt;
&lt;br /&gt;
Multitasking bedeutet, dass ein Rechner aus Anwendersicht mehrere Aufgaben&lt;br /&gt;
(Tasks) gleichzeitg übernehmen kann. Das Betriebssystem (OS) unterteilt die&lt;br /&gt;
gleichzeitig anstehenden Aufgaben in Einzelarbeitsschritte (Prozesse) und&lt;br /&gt;
managed durch ein Zeitscheibenverfahren (scheduling) die gleichmäßige&lt;br /&gt;
Abarbeitung der Prozesse.&lt;br /&gt;
&lt;br /&gt;
Es wird unterschieden zwischen:&lt;br /&gt;
&lt;br /&gt;
*non-präamptiven (kooperativen=die Ressourcen werden vom aktiven Prozess freigegeben, bei einem Hänger steht das ganze System)&lt;br /&gt;
&lt;br /&gt;
und&lt;br /&gt;
&lt;br /&gt;
*präamptiven (reinem=der Betriebssystemkern steuert Taskwechsel, indem nach einer festgelegten Zeit vom gerade aktiven Prozess zum nächsten weitergeschaltet wird)&lt;br /&gt;
&lt;br /&gt;
===Mehrprozessorbetrieb===&lt;br /&gt;
&lt;br /&gt;
Bei mehreren Prozessoren und Unterstützung durch das OS&lt;br /&gt;
(NT,Linux,Unix,Novell) können mehrere Tasks auf diese verteilt werden und&lt;br /&gt;
gleichzeitig bearbeitet werden. Nachteilig ist, dass dies nicht oder kaum von&lt;br /&gt;
Anwendungsprogrammen unterstützt wird und es zu Kommunikationsproblemen&lt;br /&gt;
zwischen den einzelnen Tasks kommen kann.&lt;br /&gt;
&lt;br /&gt;
===Arten von von Betriebssystemen===&lt;br /&gt;
&lt;br /&gt;
{|Border=1 Cellpadding=2&lt;br /&gt;
|&lt;br /&gt;
|SingleUser  &lt;br /&gt;
|Multiuser&lt;br /&gt;
|-&lt;br /&gt;
|Single Tasking&lt;br /&gt;
|MS - DOS&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|Multi Tasking&lt;br /&gt;
|Windows 3.x&lt;br /&gt;
|UNIX&lt;br /&gt;
|-&lt;br /&gt;
|&lt;br /&gt;
|Windows 95/98&lt;br /&gt;
|Linux&lt;br /&gt;
|-&lt;br /&gt;
|&lt;br /&gt;
|Windows NT4 ohne Erweiterungen&lt;br /&gt;
|VMS&lt;br /&gt;
|-&lt;br /&gt;
|&lt;br /&gt;
|OS/2 &lt;br /&gt;
|Windows NT mit  Erweiterungen&lt;br /&gt;
|-&lt;br /&gt;
|&lt;br /&gt;
|Apple&lt;br /&gt;
|Windows 2000, XP, 2003&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
===SHELL===&lt;br /&gt;
&lt;br /&gt;
Wenn man mit Linux arbeiten will, kann man nicht direkt mit dem Betriebssystem&lt;br /&gt;
kommunizieren. Man braucht dazu ein Hilfsprogramm, welches die&lt;br /&gt;
Kommandoeingaben ordnungsgemäß an das Betriebssystem weiterleitet. Dieses&lt;br /&gt;
Hilfsprogramm hat den Namen Shell.&lt;br /&gt;
&lt;br /&gt;
Die Shell schirmt den Betriebssystemkern von den Anwendungsprogrammen ab.&lt;br /&gt;
Die unterschiedlichen Shells erfüllen alle dieselbe Aufgabe, sie unterscheiden sich&lt;br /&gt;
allerdings in ihrer Syntax.&lt;br /&gt;
&lt;br /&gt;
==Die Installation im Überblick==&lt;br /&gt;
&lt;br /&gt;
Die Installation von Linux geschieht in folgenden Schritten:&lt;br /&gt;
&lt;br /&gt;
# Analyse (Welche Hardware habe ich? ,Hab ich weitere Betriebsysteme?)&lt;br /&gt;
# Booten des Linux-Kernels. (von CD oder Diskette)&lt;br /&gt;
# Laden einer RAM-Disk (das macht das Installationsprogramm automatisch).&lt;br /&gt;
# Partitionieren der Festplatte (fdisk).&lt;br /&gt;
# Einrichten der Swappartition (mkswap), Formatieren der Festplatte (mkfs).&lt;br /&gt;
# Montieren der Dateisysteme (mount), Aktivieren der Swapbereiche (swapon).&lt;br /&gt;
# Kopieren und Auspacken der Daten vom Installationsmedium auf die Festplatte (die eigentliche Installation). (rpm, dpkg oder tar).&lt;br /&gt;
# Geeignete Wahl der Bootmethode unter Berücksichtigung von Punkt 1 (grub, lilo).&lt;br /&gt;
# Konfiguration des Systems (Netz, Modem etc...).&lt;br /&gt;
&lt;br /&gt;
==Erste Schritte==&lt;br /&gt;
===Anmelden===&lt;br /&gt;
Sie können sich nun mit dem Usernamen und dem Passwort, das sie bei der Installation angelegt haben anmelden!&lt;br /&gt;
[[Image:benutzer.jpg]]&lt;br /&gt;
&lt;br /&gt;
[[Image:passwd.jpg]]&lt;br /&gt;
&lt;br /&gt;
===Terminal öffnen===&lt;br /&gt;
&lt;br /&gt;
Ein Terminal öffnen Sie über das Startmenü:&lt;br /&gt;
&lt;br /&gt;
[[Image:Terminalde.jpg]]&lt;br /&gt;
&lt;br /&gt;
Das geöffnete Terminal sieht dann folgendermaßen aus:&lt;br /&gt;
&lt;br /&gt;
[[Image:Terminalde2.jpg]]&lt;br /&gt;
&lt;br /&gt;
===Sudo===&lt;br /&gt;
Rootrechte erlangen sie über den &amp;quot;Sudo&amp;quot;-Befehl&lt;br /&gt;
 &lt;br /&gt;
''Den nächsten Befehl als root ausführen''&lt;br /&gt;
 xinux@zero:~$ sudo cat /etc/shadow&lt;br /&gt;
 [sudo] password for xinux:&lt;br /&gt;
&lt;br /&gt;
''Eine komplette Sitzung als root starten''&lt;br /&gt;
 xinux@zero:~$ sudo -i&lt;br /&gt;
 [sudo] password for xinux:&lt;br /&gt;
 root@zero:~#&lt;br /&gt;
&lt;br /&gt;
===Virtuelle Konsolen===&lt;br /&gt;
&lt;br /&gt;
In die Virtuelle Konsole gelangen sie über &amp;quot;STRG+ALT+(F1-F6)&amp;quot;.&lt;br /&gt;
Sie funktioniert wie ein ganz normales Terminal, und mit &amp;quot;ALT+F7&amp;quot;&lt;br /&gt;
gelangen sie wieder zurück auf die grafische Benutzeroberfläche&lt;br /&gt;
&lt;br /&gt;
===Abmelden===&lt;br /&gt;
&lt;br /&gt;
Abmelden können Sie sich wieder über das Startmenu unter:&lt;br /&gt;
&lt;br /&gt;
[[Image:Logout.jpg]]&lt;br /&gt;
&lt;br /&gt;
Fals sie nur einzelne Sitzungen in einem der Terminals oder &lt;br /&gt;
den Virtuellen Konsolen Abmelden wollen benutzen sie dazu den Befehl: &amp;quot;exit&amp;quot;&lt;br /&gt;
&lt;br /&gt;
===Herunterfahren===&lt;br /&gt;
&lt;br /&gt;
Das Herunterfahren funktioniert auf dem selben Weg.&lt;br /&gt;
&lt;br /&gt;
Entweder sie Benutzen wieder das Startmenü und benutzen diesmal den &amp;quot;Ausschalten ...&amp;quot; Knopf,&lt;br /&gt;
&lt;br /&gt;
Oder sie geben den äquivalenten &amp;quot;shutdown&amp;quot;-Befehl in einem Terminal bzw. der virtuellen Konsole ein.&lt;br /&gt;
&lt;br /&gt;
Allerdings müssen sie dazu als Administrator angemeldet sein s. &amp;quot;Sudo&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Wenn Sie den &amp;quot;shutdown&amp;quot;-Befehl benutzen wollen muss hinter den Befehl&lt;br /&gt;
&lt;br /&gt;
eine Zeitangabe in Minuten oder das wort &amp;quot;now&amp;quot; für sofortiges Ausschalten hinzugefügt werden:&lt;br /&gt;
&lt;br /&gt;
 xinux@zero:~$ sudo -i&lt;br /&gt;
 root@zero:~# shutdown 60&lt;br /&gt;
 &lt;br /&gt;
 Broadcast message from xinux@zero &lt;br /&gt;
         (/dev/pts/3) at 14:29 ...&lt;br /&gt;
 &lt;br /&gt;
 The system is going down for maintenance in 60 minutes!&lt;br /&gt;
&lt;br /&gt;
Sollten sie den Befehl widerrufen wollen dann drücken sie &amp;quot;STRG+C&amp;quot;,&lt;br /&gt;
&lt;br /&gt;
in dem Terminal in dem der shutdown Befehl gestartet wurde,&lt;br /&gt;
&lt;br /&gt;
oder geben sie den &amp;quot;shutdown&amp;quot;-Befehl zusammen mit der Abbruchoption &amp;quot;-c&amp;quot; in einem anderen Terminal ein:&lt;br /&gt;
&lt;br /&gt;
 root@zero:~# shutdown -c&lt;br /&gt;
&lt;br /&gt;
 shutdown: Shutdown cancelled&lt;br /&gt;
 root@zero:~# &lt;br /&gt;
&lt;br /&gt;
Wenn Sie den Rechner Neustarten möchten gibt es dazu die Option &amp;quot;-r&amp;quot; für den &amp;quot;shutdown&amp;quot;-Befehl&lt;br /&gt;
&lt;br /&gt;
oder den &amp;quot;reboot&amp;quot;-Befehl die beide auch als root ausgeführt werden müssen:&lt;br /&gt;
&lt;br /&gt;
 xinux@zero:~$ sudo -i&lt;br /&gt;
 [sudo] password for xinux: &lt;br /&gt;
 root@zero:~# shutdown -r now&lt;br /&gt;
&lt;br /&gt;
 root@zero:~# reboot&lt;br /&gt;
&lt;br /&gt;
===&amp;quot;man&amp;quot;===&lt;br /&gt;
&lt;br /&gt;
Programm zum Einsehen der Online-Manuals&lt;br /&gt;
&lt;br /&gt;
Die Manuals sind in folgende Sektionen unterteilt:&lt;br /&gt;
# Ausführbare Programme oder Shellbefehle&lt;br /&gt;
# Systemaufrufe (Kernelfunktionen)&lt;br /&gt;
# Bibliotheksaufrufe (Funktionen in System-Bibliotheken)&lt;br /&gt;
# Spezielle Dateien (gewöhnlich in /dev)&lt;br /&gt;
# Dateiformate und Konventionen, z. B. /etc/passwd&lt;br /&gt;
# Spiele&lt;br /&gt;
# Makropakete und Konventionen, z. B. man(7), groff(7)&lt;br /&gt;
# Systemadministrationsbefehle (in der Regel nur für root)&lt;br /&gt;
# Kernelroutinen [Nicht Standard]&lt;br /&gt;
&lt;br /&gt;
Aufruf eines Manuals erfolgt durch ''man kommando''&lt;br /&gt;
Beendet wird durch Drücken des Buchstabens q&lt;br /&gt;
Gesucht wird vorwärts durch Eingabe eines /suchausdruck&lt;br /&gt;
Gesucht wird rückwärts durch Eingabe eines ?suchausdruck&lt;br /&gt;
&lt;br /&gt;
Beispiele:&lt;br /&gt;
&lt;br /&gt;
      man passwd        Anschauen der Manualseite zum Programm passwd&lt;br /&gt;
      man 5 passwd      Anschauen der Manualseite zur Datei /etc/passwd&lt;br /&gt;
      man -a passwd     Anschauen aller Manualseiten zu passwd&lt;br /&gt;
      man -k passwd     Durchsucht die Kurzbeschreibungen der Manualseite&lt;br /&gt;
                        nach passwd und gibt alle Treffer aus&lt;br /&gt;
      man -f passwd      Gibt alle gefunden Kurzbescheibungen zu passwd aus&lt;br /&gt;
      man -L en passwd Gibt englische Manualseiten aus&lt;br /&gt;
&lt;br /&gt;
===WHO===&lt;br /&gt;
&lt;br /&gt;
WHO(1)           Dienstprogramme für Benutzer        WHO(1)&lt;br /&gt;
&lt;br /&gt;
Bezeichnung&lt;br /&gt;
      who - gibt Information über die aktiven Anwender des Sys&lt;br /&gt;
      tems&lt;br /&gt;
&lt;br /&gt;
Syntax&lt;br /&gt;
      who [-Optionen] [Datei] [ami]&lt;br /&gt;
&lt;br /&gt;
Beschreibung&lt;br /&gt;
   who zeigt die Namen, das Terminal und die Loginzeit der&lt;br /&gt;
   aktiven Benutzer. Außerdem gibt es Antwort auf die exis&lt;br /&gt;
   tentielle Frage wer bin ich?! z.B. mit whoami.&lt;br /&gt;
   Wird eine Datei angegeben, so wird die Information über&lt;br /&gt;
   die aktiven Anwender aus dieser Datei genommen. Vor&lt;br /&gt;
   eingestellt ist die Datei /etc/utmp&lt;br /&gt;
&lt;br /&gt;
Optionen&lt;br /&gt;
   -i     zeigt die Dauer der aktuellen Sitzungen&lt;br /&gt;
   -m     gibt den eigenen Benutzernamen mit E-mail Adresse aus&lt;br /&gt;
   -q     gibt nur die Benutzernamen und die Zahl der aktiven Benutzer aus&lt;br /&gt;
   -s     Ausgabe im Standardformat&lt;br /&gt;
   -u     wie -i&lt;br /&gt;
   -w     markiert alle Benutzer mit +, die eine Nachricht empfangen können,&lt;br /&gt;
          oder mit einem -, wenn der Empfang von Nachrichten abgeschaltet&lt;br /&gt;
          wurde&lt;br /&gt;
   -H     gibt zusätzlich eine Kopfzeile mit der Bedeutung der einzelnen&lt;br /&gt;
          Spalten aus&lt;br /&gt;
   -T     wie -w&lt;br /&gt;
&lt;br /&gt;
Siehe auch:          das LunetIX Linuxhandbuch&lt;br /&gt;
&lt;br /&gt;
===Was geht vor auf meinem System? (date,who)===&lt;br /&gt;
&lt;br /&gt;
Das Kommando date dient zur Abfrage von Datum und Uhrzeit.&lt;br /&gt;
&lt;br /&gt;
 xinux@zero:~ &amp;gt; date&lt;br /&gt;
 Fre Mär 16 16:35:03 CET 2001&lt;br /&gt;
&lt;br /&gt;
oder auch Anzeige der Grennwich Zeit:&lt;br /&gt;
&lt;br /&gt;
 xinux@zero:~ &amp;gt; date -u&lt;br /&gt;
 Fre Mär 16 15:35:34 UTC 2001&lt;br /&gt;
&lt;br /&gt;
 xinux@zero:~ &amp;gt; date -u &amp;quot;+%X&amp;quot;&lt;br /&gt;
 15:37:19&lt;br /&gt;
&lt;br /&gt;
 xinux@zero:~ &amp;gt; date -u &amp;quot;+%x&amp;quot;&lt;br /&gt;
 01/15/02&lt;br /&gt;
&lt;br /&gt;
who zeigt alle angemeldeten Benutzer an&lt;br /&gt;
&lt;br /&gt;
 thomas@cardassia:~ &amp;gt; who&lt;br /&gt;
 thomas             tty1 Feb 27 16:39&lt;br /&gt;
 thomas             tty2 Mar 2 17:08&lt;br /&gt;
 tina               tty6 Mar 16 16:38&lt;br /&gt;
&lt;br /&gt;
Mit `who --help' bekommen Sie mehr Informationen.&lt;br /&gt;
&lt;br /&gt;
 thomas@cardassia:~ &amp;gt; who --help&lt;br /&gt;
&lt;br /&gt;
Benutzung: who [OPTION]... [ DATEI | ARG1 ARG2 ]&lt;br /&gt;
&lt;br /&gt;
 -H, --heading             print line of column headings&lt;br /&gt;
 -i, -u, --idle            add user idle time as HOURS:MINUTES, . or old&lt;br /&gt;
 -l, --lookup              attempt to canonicalize hostnames via DNS&lt;br /&gt;
 -m                        only hostname and user associated with stdin&lt;br /&gt;
 -q, --count               all login names and number of users logged on&lt;br /&gt;
 -s                        (ignored)&lt;br /&gt;
 -T, -w, --mesg            add user's message status as +, - or ?&lt;br /&gt;
     --message             same as -T&lt;br /&gt;
     --writable            same as -T&lt;br /&gt;
     --help                display this help and exit&lt;br /&gt;
     --version             output version information and exit&lt;br /&gt;
&lt;br /&gt;
==Das UNIX-Dateisystem==&lt;br /&gt;
===Verzeichnisbaum===&lt;br /&gt;
&lt;br /&gt;
[[Image:vztree.jpg]]&lt;br /&gt;
&lt;br /&gt;
Das Betriebssystem UNIX besitzt ein hierarchisches Dateisystem. Es besteht aus:&lt;br /&gt;
* Dateien (Files)&lt;br /&gt;
Dateien speichern Informationen (Text, Bilder, Sound, Videos, Programme) und&lt;br /&gt;
werden über den Dateinamen angesprochen.&lt;br /&gt;
&lt;br /&gt;
* Verzeichnissen (Directories, Kataloge)&lt;br /&gt;
Verzeichnisse besitzen ebenfalls einen Namen und dienen zur Ordnung des&lt;br /&gt;
Dateisystems. Ein Verzeichnis kann Dateien und Unterverzeichnisse&lt;br /&gt;
(Subdirectories) enthalten. Das oberste Verzeichnis im Dateisystem heisst&lt;br /&gt;
Rootverzeichnis oder kurz Root und wird durch / (sprich: slash)&lt;br /&gt;
gekennzeichnet.&lt;br /&gt;
&lt;br /&gt;
Im Gegensatz zu Windows kennt UNIX keine Laufwerke.&lt;br /&gt;
Das obige Bild zeigt ein typisches UNIX-Dateisystem.&lt;br /&gt;
Unterhalb des Rootverzeichnisses befinden sich eine Vielzahl vonVerzeichnissen.&lt;br /&gt;
&lt;br /&gt;
===Wichtige Verzeichnisse===&lt;br /&gt;
&lt;br /&gt;
• '''Homeverzeichnis'''&lt;br /&gt;
&lt;br /&gt;
das Verzeichnis, in dem man sich unmittelbar nach dem Anmelden befindet. Das&lt;br /&gt;
Homeverzeichnis wird vom Systemverwalter eingerichtet; jeder Anwender&lt;br /&gt;
besitzt ein festes Homeverzeichnis. z.B. /home/hans&lt;br /&gt;
&lt;br /&gt;
~ (Tilde) bzw. $HOME (Shellvariable) kennzeichnen das Homeverzeichnis.&lt;br /&gt;
&lt;br /&gt;
• '''Aktuelles Verzeichnis'''&lt;br /&gt;
&lt;br /&gt;
Verzeichnis, in dem man sich aktuell befindet.&lt;br /&gt;
Das aktuelle Verzeichnis wird mit dem Befehl cd (change directory) oder per&lt;br /&gt;
Mausklick verändert.&lt;br /&gt;
Ein einfacher Punkt . kennzeichnet das aktuelle Verzeichnis.&lt;br /&gt;
&lt;br /&gt;
• '''Elternverzeichnis'''&lt;br /&gt;
&lt;br /&gt;
Verzeichnis unmittelbar oberhalb des aktuellen Verzeichnisses.&lt;br /&gt;
Jedes Verzeichnis ausser / besitzt genau ein Elternverzeichnis.&lt;br /&gt;
Zwei Punkte .. kennzeichnen das Elternverzeichnis (abhängig vom aktuellen&lt;br /&gt;
VZ).&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Absoluter Pfadname:===&lt;br /&gt;
&lt;br /&gt;
Beschreibt ausgehend vom Rootverzeichnis den Weg zum Zielverzeichnis oder zur&lt;br /&gt;
Zieldatei. (Welche Verzeichnisse müssen ausgehend von / durchlaufen werden, um&lt;br /&gt;
zum Ziel zu kommen?) Ein absoluter Pfadname beginnt immer mit / .&lt;br /&gt;
&lt;br /&gt;
===Relativer Pfadname:===&lt;br /&gt;
&lt;br /&gt;
Beschreibt ausgehend vom aktuellen Verzeichnis den Weg zum Zielverzeichnis&lt;br /&gt;
oder zur Zieldatei; ein relativer Pfadname beginnt nicht mit / .&lt;br /&gt;
/home/suxer&lt;br /&gt;
absoluter Pfadname für das Verzeichnis sub1 im Homeverzeichnis von suxer&lt;br /&gt;
&lt;br /&gt;
===Verzeichnisstruktur===&lt;br /&gt;
&lt;br /&gt;
 /bin         Kommandos die beim starten benötigt werden (Zugriff hat jeder)&lt;br /&gt;
 /sbin        Wichtige System-Programme (In der Regel root vorberhalten)&lt;br /&gt;
 /boot        Hier findet man die Dateien des Bootmanagers und des Kernel.&lt;br /&gt;
 /dev         In diesem Verzeichnis stehen die Gerätedateien (Devices),&lt;br /&gt;
 /home        Alle Heimatverzeichnisse der Nutzer findet man hier.&lt;br /&gt;
 /lib         Beim Systemstart benötigten Bibliotheken und Modules stehen hier.&lt;br /&gt;
 /mnt         Mountpunkt für temporäre Partitionen&lt;br /&gt;
 /opt         Software, die nicht Installationsumfang von Linux gehören.&lt;br /&gt;
 /root        Heimatverzeichnis des Administrators.&lt;br /&gt;
 /tmp         Temporäre Dateien können hier abgelegt werden&lt;br /&gt;
 /usr         statische Dateien (kann read-only gemountet sein)&lt;br /&gt;
 /var         variable Dateien (muss beschreibar sein )&lt;br /&gt;
 /etc         Konfiguartionsdateien und Startscripte&lt;br /&gt;
 /proc        Virtuelles Dateisystem -&amp;gt; repräsentiert den Kernel&lt;br /&gt;
&lt;br /&gt;
===Unterverzeichnisse von /usr===&lt;br /&gt;
&lt;br /&gt;
 sbin         Programme für root die beim Start nicht benötigt werden&lt;br /&gt;
 bin          Programme für alle die beim Start nicht benötigt werden&lt;br /&gt;
 X11R6        Dateien des X-Window-Sytems&lt;br /&gt;
 bin          Ausführbare Programme&lt;br /&gt;
 doc          Dokumentationen&lt;br /&gt;
 etc          Konfigurationsdateien&lt;br /&gt;
 games        Spiele&lt;br /&gt;
 include      Headerdateien für C-Programme&lt;br /&gt;
 local        Pakete die nicht zur Distribution gehören ähnlich /opt&lt;br /&gt;
 share        Pakete die von mehreren Paketen genutzt werden&lt;br /&gt;
 share/man    Die Manualpages&lt;br /&gt;
 share/info   Seiten des Infosystems&lt;br /&gt;
 share/doc    Dokumentationen&lt;br /&gt;
 src          Sources von Programmen (Kernel und andere)&lt;br /&gt;
&lt;br /&gt;
===Unterverzeichnisse von /var===&lt;br /&gt;
&lt;br /&gt;
 cache        Zwischenspreicher für Progammes&lt;br /&gt;
 games        Variable Daten der Games (Scores etc...)&lt;br /&gt;
 lock         Sperrdateien&lt;br /&gt;
 log          Die Logdateien (wichtiges Verzeichnis für Admins)&lt;br /&gt;
 mail         Das Mailsystem&lt;br /&gt;
 run          Dateien zu laufemdem Prozessen&lt;br /&gt;
 spool        Spooldateien (z.B. für das Drucksystem&lt;br /&gt;
 state        Statusinfos&lt;br /&gt;
 tmp          Wie /tmp eventuell nicht auf root Partion&lt;br /&gt;
&lt;br /&gt;
==Einfache Komandos==&lt;br /&gt;
===cd: Wechseln des Arbeitsverzeichnis===&lt;br /&gt;
&lt;br /&gt;
Um festzustellen in welchem Verzeichnis man sich befindet, sollte man den&lt;br /&gt;
Befehl &amp;quot;pwd&amp;quot; benutzen,&lt;br /&gt;
&lt;br /&gt;
und mit dem Befehl &amp;quot;cd&amp;quot; kann man zwischen den Verzeichnissen wechseln:&lt;br /&gt;
&lt;br /&gt;
Wechsele ins homeverzeichnis von Xinux&lt;br /&gt;
&lt;br /&gt;
 xinux@zero:~$ cd /home/xinux/&lt;br /&gt;
 xinux@zero:~$ pwd&lt;br /&gt;
 /home/xinux&lt;br /&gt;
&lt;br /&gt;
cd ~ -&amp;gt; wechsele ins jeweilige Homeverzeichnis&lt;br /&gt;
&lt;br /&gt;
cd .. -&amp;gt; wechsele ein Verzeichnis höher&lt;br /&gt;
&lt;br /&gt;
cd ../verzeichnis -&amp;gt; wechsele in eine paralleles Verzeichnis &amp;lt;- (ist eine relative Pfadangabe !)&lt;br /&gt;
&lt;br /&gt;
cd - -&amp;gt; wechsele in das Verzeichnis, in dem vorher gearbeitet wurde.&lt;br /&gt;
&lt;br /&gt;
Mit cd / wechselt man in das Wurzelverzeichnis.&lt;br /&gt;
&lt;br /&gt;
 xinux@zero:/var/log$ cd /&lt;br /&gt;
 xinux@zero:/$ pwd&lt;br /&gt;
 /&lt;br /&gt;
&lt;br /&gt;
===ls: Listing===&lt;br /&gt;
&lt;br /&gt;
Den Inhalt von Verzeichnissen kann man sich mit dem Befehl &amp;quot;ls&amp;quot; anzeigen lassen&lt;br /&gt;
wobei &amp;quot;ls&amp;quot; eine Vielzahl von Optionen besitzt:&lt;br /&gt;
&lt;br /&gt;
 ls                                  standard&lt;br /&gt;
 ls -l                               langes listing&lt;br /&gt;
 ls -a                               alle Dateien&lt;br /&gt;
 ls -i                               mit Inode&lt;br /&gt;
 ls -h                               gut lesbare Dateigröße&lt;br /&gt;
 ls -d                               Verzechnis wird angezeigt, nicht der Inhalt&lt;br /&gt;
 ls -L                               sortiert nach Größe&lt;br /&gt;
 ls -t                               sortiert nach Datum&lt;br /&gt;
 ls -F                               mit nützlichem Anhang&lt;br /&gt;
&lt;br /&gt;
 xinux@zero:/$ ls -l /var/log/messages&lt;br /&gt;
 -rw-r----- 1 syslog adm 2296 2009-06-16 10:05 /var/log/messages&lt;br /&gt;
&lt;br /&gt;
===more: Seitenweises Anzeigen von Seiten===&lt;br /&gt;
 root@zero:~# more /var/log/messages&lt;br /&gt;
 ...&lt;br /&gt;
&lt;br /&gt;
===head: erste Zeilen anzeigen===&lt;br /&gt;
Erste 10 Zeilen anzeigen&lt;br /&gt;
 root@zero:~# head /var/log/messages&lt;br /&gt;
 Jun 15 12:37:08 zero syslogd 1.5.0#5ubuntu3: restart.&lt;br /&gt;
 Jun 15 12:38:43 zero kernel: [  830.065036] mtrr: your processor doesn't support write-combining&lt;br /&gt;
 Jun 15 12:46:05 zero pulseaudio[4817]: pid.c: Stale PID file, overwriting.&lt;br /&gt;
 Jun 15 13:05:24 zero -- MARK --&lt;br /&gt;
 ...&lt;br /&gt;
&lt;br /&gt;
Erste zwei Zeilen anzeigen&lt;br /&gt;
 root@zero:~# head -n 2 /var/log/messages&lt;br /&gt;
 Jun 15 12:37:08 zero syslogd 1.5.0#5ubuntu3: restart.&lt;br /&gt;
 Jun 15 12:38:43 zero kernel: [  830.065036] mtrr: your processor doesn't support write-combining&lt;br /&gt;
&lt;br /&gt;
===tail: letzte Zeilen anzeigen===&lt;br /&gt;
 &lt;br /&gt;
 root@zero:~# tail /var/log/syslog&lt;br /&gt;
 ...&lt;br /&gt;
 Jun 19 11:19:35 zero -- MARK --&lt;br /&gt;
 Jun 19 11:39:35 zero -- MARK --&lt;br /&gt;
 Jun 19 11:59:36 zero -- MARK --&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Letze 5 Zeilen anzeigen&lt;br /&gt;
 root@zero:~# tail -n 5 /var/log/auth.log&lt;br /&gt;
 Jun 18 14:30:01 zero CRON[12040]: pam_unix(cron:session): session closed for user root&lt;br /&gt;
 Jun 18 14:39:01 zero CRON[12191]: pam_unix(cron:session): session opened for user root by (uid=0)&lt;br /&gt;
 Jun 18 14:39:01 zero CRON[12191]: pam_unix(cron:session): session closed for user root&lt;br /&gt;
 Jun 18 14:40:01 zero CRON[12237]: pam_unix(cron:session): session opened for user root by (uid=0)&lt;br /&gt;
 Jun 18 14:40:01 zero CRON[12237]: pam_unix(cron:session): session closed for user root&lt;br /&gt;
&lt;br /&gt;
Letze Zeilen anzeigen und fortlaufend aktualisieren&lt;br /&gt;
 root@zero:~# tail -f /var/log/syslog&lt;br /&gt;
 ...&lt;br /&gt;
&lt;br /&gt;
===mkdir: Ein neues Verzeichnis erstellen===&lt;br /&gt;
&lt;br /&gt;
 mkdir        verzeichnis&lt;br /&gt;
Erstellt ein Verzeichnis im working directory (wd)&lt;br /&gt;
&lt;br /&gt;
 mkdir  -p    ver1/ver2&lt;br /&gt;
Erstellt ein Verzeichnis ver2 unterhalb von ver1&lt;br /&gt;
wenn ver1 nicht existiert wird es erstellt&lt;br /&gt;
&lt;br /&gt;
 mkdir -m 753 ver1&lt;br /&gt;
Es wird das Verzeichnis ver1 erstellt mit der mask 753&lt;br /&gt;
&lt;br /&gt;
 mkdir -v     ver1&lt;br /&gt;
Geschwätzige Ausgabe :)&lt;br /&gt;
&lt;br /&gt;
===Zum Löschen von leeren Verzeichnissen wird rmdir benutzt===&lt;br /&gt;
&lt;br /&gt;
 rmdir           ver1&lt;br /&gt;
Löscht das leere Verzeichnis ver1&lt;br /&gt;
&lt;br /&gt;
 rmdir -v        ver1&lt;br /&gt;
Löscht das leere Verzeichnis ver1 und ist geschwätzig&lt;br /&gt;
&lt;br /&gt;
 rmdir -p        /ver1/ver2/ver3&lt;br /&gt;
Löscht das Verzeichnis ver3; wenn dadurch ver2 ein leeres&lt;br /&gt;
Verzeichnis wird, wird dieses auch gelöscht , wenn ver1&lt;br /&gt;
dadurch ein leeres Verzeichnis wird, wird auch dieses gelöscht.&lt;br /&gt;
&lt;br /&gt;
===touch Verändern des Zeitstempels===&lt;br /&gt;
&lt;br /&gt;
Mit touch können wir eine neue leere Datei erzeugen (das ist nicht der eigentliche&lt;br /&gt;
Zweck von touch, eigentlich wird der Zeitstempel geändert)&lt;br /&gt;
&lt;br /&gt;
 touch            dateiname&lt;br /&gt;
&lt;br /&gt;
===Kopieren=== &lt;br /&gt;
cp ist das Kommando um Dateien zu kopieren &lt;br /&gt;
&lt;br /&gt;
Eine Kopie von dat1 mit dem Namen dat2 erstellen:&lt;br /&gt;
&lt;br /&gt;
 xinux@zero:~$ cp dat1 dat2&lt;br /&gt;
&lt;br /&gt;
Eine Kopie von dat1 ins Verzeichnis ver2 erstellen:&lt;br /&gt;
&lt;br /&gt;
 xinux@zero:~$ cp dat1 ver2/&lt;br /&gt;
 &lt;br /&gt;
Eine Kopie erstellen mit ausführlicher Anzeige:&lt;br /&gt;
&lt;br /&gt;
 xinux@zero:~$ cp -v dat1 dat2&lt;br /&gt;
 `dat1' -&amp;gt; `dat2'&lt;br /&gt;
&lt;br /&gt;
Eine Kopie erstellen mit Rückfrage fals etwas überschrieben wird:&lt;br /&gt;
&lt;br /&gt;
 xinux@zero:~$ cp -i dat1 dat2&lt;br /&gt;
 cp: overwrite `dat2'?&lt;br /&gt;
&lt;br /&gt;
Eine Kopie erstellen und die Rückfrage überbrücken:&lt;br /&gt;
&lt;br /&gt;
 xinux@zero:~$ cp -f dat1 dat2&lt;br /&gt;
&lt;br /&gt;
Eine Kopie von dat1 ins Verzeichnis ver2 erstellen fals keine neuere Version von dat1 vorliegt:&lt;br /&gt;
&lt;br /&gt;
 xinux@zero:~$ cp -u dat1 ver2/&lt;br /&gt;
&lt;br /&gt;
Eine Kopie erstellen fals ver2 auf dem selben Dateisystem wie dat1 liegt:&lt;br /&gt;
&lt;br /&gt;
 xinux@zero:~$ cp -x dat1 ver2/&lt;br /&gt;
&lt;br /&gt;
Eine Kopie von ver1, die als ver2 oder unter ver2 als ver1 gespeichert wird erstellen:&lt;br /&gt;
&lt;br /&gt;
 xinux@zero:~$ cp -r ver1/ ver2/&lt;br /&gt;
&lt;br /&gt;
Eine Kopie von einer Datei erstellen und ihre Attribute beibehalten:&lt;br /&gt;
&lt;br /&gt;
 xinux@zero:~$ cp -p sux1 sux2&lt;br /&gt;
&lt;br /&gt;
Eine Kopie erstellen bei der die Links erhalten bleiben:&lt;br /&gt;
&lt;br /&gt;
 xinux@zero:~$ cp -r ver1/ ver2/&lt;br /&gt;
&lt;br /&gt;
Eine Kopie erstellen zum Archivieren (-dpr):&lt;br /&gt;
&lt;br /&gt;
 xinux@zero:~$ cp -a ver1/ ver2/&lt;br /&gt;
&lt;br /&gt;
===rm: Löschen einer Datei===&lt;br /&gt;
&lt;br /&gt;
Um Dateien zu löschen, brauchen wir das Kommando &amp;quot;rm&amp;quot;:&lt;br /&gt;
&lt;br /&gt;
 rm               dat1        dat1 wird gelöscht&lt;br /&gt;
 rm         -i    dat1        dat1 wird nach Bestätigung gelöscht&lt;br /&gt;
 rm         -f    dat1        dat1 wird ohne Rückfragen gelöscht&lt;br /&gt;
 rm         -v    dat1        dat1 wird glöscht (geschwätzige Ausgabe)&lt;br /&gt;
 rm         -r    ver1        Löschen von nicht leeren Verzeichnissen&lt;br /&gt;
                              Achtung !!! Als root kann man sich damit Teile&lt;br /&gt;
                              oder sogar den gesamten Verzeichnisbaum&lt;br /&gt;
                              absägen !!!&lt;br /&gt;
&lt;br /&gt;
===mv: Verschieben===&lt;br /&gt;
&lt;br /&gt;
Mit dem Befehl &amp;quot;mv&amp;quot; werden Daten verschoben, folgendes gilt:&lt;br /&gt;
&lt;br /&gt;
 mv          dat1 dat2         &lt;br /&gt;
Die Datei dat1 wird in dat2 umbenannt&lt;br /&gt;
 mv          dat1 /ver1        &lt;br /&gt;
Die Datei dat1 wird nach /ver1 verschoben&lt;br /&gt;
&lt;br /&gt;
Die Parameter und ihre Bedeutung:&lt;br /&gt;
&lt;br /&gt;
      -i                      wenn eine Datei exisitiert wird vor dem&lt;br /&gt;
                              Überschreiben nachgefragt&lt;br /&gt;
      -v                      verbose (geschwätzig)&lt;br /&gt;
      -u                      nur neuere Daten werden bei Bedarf überschrieben&lt;br /&gt;
      -b                      wenn überschrieben werden soll, wird ein Backup&lt;br /&gt;
                              erstellt&lt;br /&gt;
      -S ENDUNG               das Backup bekommt die Endung ENDUNG&lt;br /&gt;
&lt;br /&gt;
===su Benutzer wechseln===&lt;br /&gt;
&lt;br /&gt;
 su -             &lt;br /&gt;
Wechsel zum Rootaccount, wie wenn dieser sich neu anmelden würde. (Bsp: su -)&lt;br /&gt;
&lt;br /&gt;
 su Benutzernamen &lt;br /&gt;
Wechsel der Identität zu Benutzer (gegebenenfalls Passwortabfrage)&lt;br /&gt;
&lt;br /&gt;
 su -c Kommando   &lt;br /&gt;
Kommando wird als rootaccount ausgeführt&lt;br /&gt;
&lt;br /&gt;
==Der Standard Editor vi==&lt;br /&gt;
Der vi ist der Standardeditor in der Unixwelt. Er ist in jedem Unix-Derivat&lt;br /&gt;
enthalten.&lt;br /&gt;
Der Editor hat zwar den schlechten Ruf umständlich zu bedienen zu sein, ist&lt;br /&gt;
jedoch sehr leistungsfähig und systemübergreifend verfügbar. Beim vi handelt es&lt;br /&gt;
sich um einen rein textorientierten Editor, der mittels eigener Kommandos&lt;br /&gt;
gesteuert wird.&lt;br /&gt;
&lt;br /&gt;
Der Editor VIM ist eine weitere Verbesserung von VI und leichter zu bedienen.&lt;br /&gt;
Und unter Ubuntu/Debian mit &amp;quot;apt-get install vim&amp;quot; zu installieren.&lt;br /&gt;
&lt;br /&gt;
===Starten des Editors:===&lt;br /&gt;
&lt;br /&gt;
Der Editorstart erfolgt einfach durch die Eingabe des Kommandos vi mit dem&lt;br /&gt;
Dateinamen der zu editierenden Datei als Parameter.&lt;br /&gt;
Beispiel:        &lt;br /&gt;
 vi sux.txt&lt;br /&gt;
&lt;br /&gt;
===Die Betriebsmodi des vi:===&lt;br /&gt;
&lt;br /&gt;
Ein Umstand, der dem vi den Ruf der komplizierten Bedienbarkeit zugetragen hat,&lt;br /&gt;
sind die unterschiedlichen Betriebsmodi des Editors. Genauer gesagt verfügt der&lt;br /&gt;
vi über drei Betriebsmodi:&lt;br /&gt;
&lt;br /&gt;
====Kommandomodus:====&lt;br /&gt;
&lt;br /&gt;
Innerhalb dieses Modus werden die eingegebenen Zeichen direkt als Befehle des&lt;br /&gt;
Editors interpretiert und ausgeführt. Dabei gibt es weder ein Bereitschaftszeichen&lt;br /&gt;
(Prompt) noch ein Echo (Ausgabe). Der Kommandomodus ist der Modus, in dem&lt;br /&gt;
sich der vi direkt nach seinem Start befindet.&lt;br /&gt;
&lt;br /&gt;
====Zeilenmodus oder Exmodus:====&lt;br /&gt;
&lt;br /&gt;
Dieser Modus ist der einzige Modus mit einem eigenen Bereitschaftszeichen,&lt;br /&gt;
nämlich dem Doppelpunkt (:). Das Prompt wird ebenso wie die Befehlsausgaben&lt;br /&gt;
in der Statuszeile angezeigt.&lt;br /&gt;
&lt;br /&gt;
====Eingabemodus:====&lt;br /&gt;
&lt;br /&gt;
Der Eingabemodus ist derjenige, in welchem der zu bearbeitende Text bearbeitet&lt;br /&gt;
werden kann. Alle hier eingegebenen Zeichen werden als Text für die aktuelle&lt;br /&gt;
Datei interpretiert. Zwischen den unterschiedlichen Modi kann jederzeit&lt;br /&gt;
gewechselt werden. Von Kommandomodus gelangen Sie durch mehere Wege in&lt;br /&gt;
den Eingabemodus. Man kann durch folgende Aktionen wechslen&lt;br /&gt;
&lt;br /&gt;
{| border=1 cellpadding=2&lt;br /&gt;
|i&lt;br /&gt;
|Text vor der aktuellen Cursorposition einfügen&lt;br /&gt;
|-&lt;br /&gt;
|I&lt;br /&gt;
|Text am Zeilenanfang einfügen&lt;br /&gt;
|-&lt;br /&gt;
|a&lt;br /&gt;
|Text hinter der aktuellen Cursorposition einfügen&lt;br /&gt;
|-&lt;br /&gt;
|A&lt;br /&gt;
|Text am Zeilenende einfügen&lt;br /&gt;
|-&lt;br /&gt;
|o&lt;br /&gt;
|Unterhalb der aktuellen Zeile eine neue Zeile einfügen&lt;br /&gt;
|-&lt;br /&gt;
|O&lt;br /&gt;
|Oberhalb der aktuellen Zeile eine neue Zeile einfügen&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Durch das Drücken der ESC - Taste gelangt man in den Kommandomodus zurück.&lt;br /&gt;
&lt;br /&gt;
Im Kommandomodus können Sie durch den Text navigieren und auch den Text&lt;br /&gt;
selbst bearbeiten, z.B ausschneiden, kopieren usw. Dazu sind einige Kommandos&lt;br /&gt;
nötig, von denen die wichtigsten im Folgenden erläutert werden:&lt;br /&gt;
&lt;br /&gt;
 xinux@zero:/$ vi iwas.txt&lt;br /&gt;
&lt;br /&gt;
[[Image:vim.jpg]]&lt;br /&gt;
&lt;br /&gt;
===Benutzen des Kommandomodus===&lt;br /&gt;
====Steuerung des Cursors durch den Text====&lt;br /&gt;
&lt;br /&gt;
Mittels folgender Kommandos bewegt sich der Cursor durch den Text:&lt;br /&gt;
&lt;br /&gt;
{| border=1 cellpadding=2&lt;br /&gt;
|h&lt;br /&gt;
|Cursor ein Zeichen nach links&lt;br /&gt;
|-&lt;br /&gt;
|l&lt;br /&gt;
|Cursor ein Zeichen nach rechts&lt;br /&gt;
|-&lt;br /&gt;
|k&lt;br /&gt;
|Cursor eine Zeile nach oben&lt;br /&gt;
|-&lt;br /&gt;
|j&lt;br /&gt;
|Cursor eine Zeile nach unten&lt;br /&gt;
|-&lt;br /&gt;
|w&lt;br /&gt;
|Cursor ein Wort nach rechts&lt;br /&gt;
|-&lt;br /&gt;
|b&lt;br /&gt;
|Cursor ein Wort nach links&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Alle diese Kommandos können mit einem vorgestellten Wiederholungsfaktor&lt;br /&gt;
arbeiten. Der Befehl 3w verschiebt demnach den Cursor um 3 Wörter nach rechts.&lt;br /&gt;
&lt;br /&gt;
====Angaben zur Positionierung====&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{| border=1 cellpadding=2&lt;br /&gt;
|STRG+U&lt;br /&gt;
|1⁄2 Bildschirmseite nach oben&lt;br /&gt;
|-&lt;br /&gt;
|STRG+D&lt;br /&gt;
|1⁄2 Bildschirmseite nach unten&lt;br /&gt;
|-&lt;br /&gt;
|STRG+B&lt;br /&gt;
|1 Bildschirmseite nach oben&lt;br /&gt;
|-&lt;br /&gt;
|STRG+F&lt;br /&gt;
|1 Bildschirmseite nach unten&lt;br /&gt;
|-&lt;br /&gt;
|/Ausdruck&lt;br /&gt;
|Sucht den Ausdruck (vorwärts) Weitersuchen mit n , N&lt;br /&gt;
|-&lt;br /&gt;
|?Ausdruck&lt;br /&gt;
|Sucht den Ausdurck (rückwärts) Weitersuchen mit n , N&lt;br /&gt;
|-&lt;br /&gt;
|0&lt;br /&gt;
|Zeilenanfang&lt;br /&gt;
|-&lt;br /&gt;
|$&lt;br /&gt;
|Zeilenende&lt;br /&gt;
|-&lt;br /&gt;
|w&lt;br /&gt;
|Nächstes Wort&lt;br /&gt;
|-&lt;br /&gt;
|b&lt;br /&gt;
|Vorheriges Wort&lt;br /&gt;
|-&lt;br /&gt;
|fc&lt;br /&gt;
|Auf das Zeichen c springen. c steht für ein beliebiges Zeichen&lt;br /&gt;
|-&lt;br /&gt;
|G&lt;br /&gt;
|Letzte Zeile der Datei&lt;br /&gt;
|-&lt;br /&gt;
|ng&lt;br /&gt;
|n-te Zeile der Datei&lt;br /&gt;
|-&lt;br /&gt;
|H&lt;br /&gt;
|Anfang der Bildschirmseite&lt;br /&gt;
|-&lt;br /&gt;
|L&lt;br /&gt;
|Ende der Bildschirmseite&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
====Befehle zur Textbearbeitung -&amp;gt; Was soll geschehen====&lt;br /&gt;
&lt;br /&gt;
{| Border=1 Cellpadding=2&lt;br /&gt;
|x&lt;br /&gt;
|Löscht Zeichen&lt;br /&gt;
|-&lt;br /&gt;
|d&lt;br /&gt;
|Löschen und in den Puffer laden&lt;br /&gt;
|-&lt;br /&gt;
|c&lt;br /&gt;
|Ändern&lt;br /&gt;
|-&lt;br /&gt;
|y&lt;br /&gt;
|In den Puffer laden&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
====Weitere wichtige Befehle:====&lt;br /&gt;
&lt;br /&gt;
{| Border=1 Cellpadding=2&lt;br /&gt;
|p&lt;br /&gt;
|Aus dem Puffer einfügen&lt;br /&gt;
|-&lt;br /&gt;
|u&lt;br /&gt;
|Undo, macht den letzten Befehl rückgängig&lt;br /&gt;
|-&lt;br /&gt;
|STRG+R&lt;br /&gt;
|Redo, macht den letzten Undo rückgängig&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
===Zeilen- oder Exmodus===&lt;br /&gt;
&lt;br /&gt;
Wie schon erwähnt wird der Zeilen oder Exmodus durch einen : eingeleitet.&lt;br /&gt;
Es folgen einige Beispiele.&lt;br /&gt;
&lt;br /&gt;
Befehle zum Speichern und Beenden:&lt;br /&gt;
&lt;br /&gt;
 :w          Schreibt Datei&lt;br /&gt;
 :w Datei2   Schreibt eine Kopie in Datei2&lt;br /&gt;
 :w !        Schreibt Datei (übergehe Schreibschutz)&lt;br /&gt;
 :w ! Datei2 Schreibt eine Kopie in Datei2 (übergehe Schreibschutz)&lt;br /&gt;
 :q          Schließe Datei&lt;br /&gt;
 :q!         Schließe Datei (verwerfe Änderungen)&lt;br /&gt;
 :wq         Schreibe Datei und beende Editor&lt;br /&gt;
 :wq!        Schreibe Datei und beende Editor (übergehe Schreibschutz)&lt;br /&gt;
 :q!         Schließe Datei (verwerfe Änderungen)&lt;br /&gt;
 :h          Hilfe anzeigen, durch drücken von :q Beenden der Hilfe&lt;br /&gt;
 :e Datei3   Editiere Datei3&lt;br /&gt;
 :e #        Editere vorhergehende Datei&lt;br /&gt;
 :1,3co9     Kopiere von der ersten bis zu dritten Zeile &lt;br /&gt;
             und füge den Inhalt unterhalb der neunte Zeile ein.&lt;br /&gt;
&lt;br /&gt;
Interaktionen mit Unix:&lt;br /&gt;
&lt;br /&gt;
 :r Datei4   Fügt Inhalt der Datei4 nach dem Cursor ein&lt;br /&gt;
 :r ! Befehl Fügt Ausgabe des Befehls nach dem Cursor ein&lt;br /&gt;
 :! Befehl   Führt den Befehl aus&lt;br /&gt;
 :sh         Starte Subshell -&amp;gt; mit exit kehrt man wieder zurück&lt;br /&gt;
             Eingabemodus zurück&lt;br /&gt;
&lt;br /&gt;
====Ersetzen von Textteilen====&lt;br /&gt;
&lt;br /&gt;
Die grundsätzliche Syntax lautet:&lt;br /&gt;
&lt;br /&gt;
 :[Zeilennummer,Zeilennummer]s/Muster/Ersetzung/[gc]&lt;br /&gt;
&lt;br /&gt;
 :s/worf/kirn/              der erste worf wird in der aktuellen Zeile durch kirn ersetzt&lt;br /&gt;
 :1,9s/worf/kirn/g          von der 1. bis zur 9. Zeile werden alle worf durch kirn ersetzt&lt;br /&gt;
 :1,$s/worf/kirn/           von der ersten bis zur letzten Zeile ersetze ersten worf durch&lt;br /&gt;
                            kirn&lt;br /&gt;
 :.,$s/worf/kirn/g          von der aktuellen bis zur letzten Zeile ersetze alle worf durch&lt;br /&gt;
                            kirn&lt;br /&gt;
 :1,.s/worf/kirn/c          von der 1. bis zur aktuellen Zeile ersetze worf durch kirn, frage&lt;br /&gt;
                            aber nach&lt;br /&gt;
 :1,$s/^worf/kirn/          von der ersten bis zur letzten Zeile ersetze worf am&lt;br /&gt;
                            Zeilenanfang durch kirn&lt;br /&gt;
 :4,$s/worf$/kirn/          von der 4. bis zur letzten Zeile ersetze worf am Zeilenende&lt;br /&gt;
                            durch kirn&lt;br /&gt;
 :1,$s/^#//                 lösche alle Kommentarzeilen&lt;br /&gt;
 :1,$s/^.orf/kirn/           ersetze alles was am Zeilenanfang ein beliebiges Zeichen hat&lt;br /&gt;
                            gefolgt von einem orf durch kirn&lt;br /&gt;
 :1,$s/^[A-Z]orf/kirn/g     suche nach einem Großbuchstaben am Anfang der Zeile&lt;br /&gt;
                            gefolgt von einem orf und ersetze durch kirn&lt;br /&gt;
 :1,$s/^M[ae][iy]e*r/kirn/  suche alles, was am Anfang der Zeile ein großes M enthält,&lt;br /&gt;
                            gefolgt von einem a oder e , gefolgt von einem i oder y ,&lt;br /&gt;
                            gefolgt von einem e , welches 0 oder N mal vorkommen kann,&lt;br /&gt;
                            gefolgt von einem r und ersetze es durch kirn&lt;br /&gt;
&lt;br /&gt;
==Reguläre Ausdrücke==&lt;br /&gt;
&lt;br /&gt;
{| Border=1 Cellpadding=2&lt;br /&gt;
|c&lt;br /&gt;
|Ein einzelner Buchstabe passt auf sich selbst&lt;br /&gt;
|-&lt;br /&gt;
|.&lt;br /&gt;
|Ein Punkt passt auf jedes Zeichen außer auf das Zeilenende&lt;br /&gt;
|-&lt;br /&gt;
|*&lt;br /&gt;
|Das dem Operator * vorangehende Muster kann 0 oder öfter vorkommen&lt;br /&gt;
|-&lt;br /&gt;
|^&lt;br /&gt;
|(Caret) passt auf den Zeilenanfang&lt;br /&gt;
|-&lt;br /&gt;
|$&lt;br /&gt;
|Passt auf das Zeilenende&lt;br /&gt;
|-&lt;br /&gt;
|\&lt;br /&gt;
|Das folgende Sonderzeichen wird entwertet&lt;br /&gt;
|-&lt;br /&gt;
|[...]&lt;br /&gt;
|Passt auf &amp;quot;genau&amp;quot; eins in [...] angebenen Zeichen&lt;br /&gt;
|-&lt;br /&gt;
|[^...]&lt;br /&gt;
|Passt auf &amp;quot;genau&amp;quot; ein Zeichen welches nicht in [...] angebenen ist&lt;br /&gt;
|-&lt;br /&gt;
|\&amp;lt;&lt;br /&gt;
|Passt auf den Wortanfang&lt;br /&gt;
|-&lt;br /&gt;
|\&amp;gt;&lt;br /&gt;
|Passt auf das Wortende&lt;br /&gt;
|-&lt;br /&gt;
|\+&lt;br /&gt;
|Das dem Operator \+ vorangehende Muster kann 1 oder öfter vorkommen&lt;br /&gt;
|-&lt;br /&gt;
|&amp;amp;&lt;br /&gt;
|Setzt das gefunden Suchmuster ein&lt;br /&gt;
|-&lt;br /&gt;
|\(...\)&lt;br /&gt;
|Speichert den Text auf den das Suchmuster passt zur späteren Verwendung&lt;br /&gt;
|-&lt;br /&gt;
|\n&lt;br /&gt;
|Setzt das vorangehende, mit \(...\) Gefundene wieder ein&lt;br /&gt;
|-&lt;br /&gt;
|(...)&lt;br /&gt;
|Gruppiert Auswahlmöglichkeiten&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;nowiki&amp;gt;|&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
|Trennt Auswahlmöglichkeiten&lt;br /&gt;
|-&lt;br /&gt;
|\b&lt;br /&gt;
|Passt auf den Anfang oder das Ende eines Wortes&lt;br /&gt;
|-&lt;br /&gt;
|\B&lt;br /&gt;
|Symbolisiert den Raum innerhalb eines Wortes&lt;br /&gt;
|-&lt;br /&gt;
|\w&lt;br /&gt;
|Passt auf alle alphanumerischen Zeichen [A-Za-z0-9]&lt;br /&gt;
|-&lt;br /&gt;
|\W&lt;br /&gt;
|Passt auf alle nichtalphanumerischen Zeichen [^A-Za-z0-9]&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Die Rangfolge der Operatoren(von der höchsten zur niedrigsten)&lt;br /&gt;
:(, ), ?, *, + | .&lt;br /&gt;
&lt;br /&gt;
Die anderen Operatoren sind mit den anderen Buchstaben gleichrangig.&lt;br /&gt;
&lt;br /&gt;
===Beispiel zum Suchen===&lt;br /&gt;
&lt;br /&gt;
 Suchmuster               Passt auf&lt;br /&gt;
 ^Tuxer                   Tuxer am Zeilenanfang&lt;br /&gt;
 [tT]uxer                 Tuxer oder tuxer&lt;br /&gt;
 80[23]?86                8086, 80286 oder 80386&lt;br /&gt;
&lt;br /&gt;
===grep===&lt;br /&gt;
&lt;br /&gt;
Mit grep ist es möglich, in Dateien nach regulären Ausdrücken zu suchen. Wenn&lt;br /&gt;
eine Übereinstimmung gefunden wird, wird die komplette Zeile auf die&lt;br /&gt;
Standardausgabe geschrieben. grep kann auch von STDIN lesen.Es ist&lt;br /&gt;
empfehlenswert, sich anzugwöhnen ,das Suchmuster in Anführungszeichen zu&lt;br /&gt;
schreiben. Es gibt 3 Arten fgrep = fastgrep , grep und egrep egrep&lt;br /&gt;
&lt;br /&gt;
Beispiel:&lt;br /&gt;
&lt;br /&gt;
 root@zero:~# cat text&lt;br /&gt;
 quatsch&lt;br /&gt;
 quatsch&lt;br /&gt;
 quatsch&lt;br /&gt;
 wichtig&lt;br /&gt;
 quatsch&lt;br /&gt;
 root@zero:~# grep wichtig text&lt;br /&gt;
 wichtig&lt;br /&gt;
 root@zero:~# &lt;br /&gt;
&lt;br /&gt;
 -c                   meldet nur die Gesamtzahl der Fundstellen&lt;br /&gt;
 -v                   zeigt nur Zeilen, die »Ausdruck« nicht enthalten&lt;br /&gt;
 -i                   ignoriert Groß- und Kleinschreibung&lt;br /&gt;
 -l                    meldet nur Dateinamen mit Fundstellen&lt;br /&gt;
 -n                   listet Zeilennummern zu jeder Fundstelle&lt;br /&gt;
 -f                   Dateiname »Dateiname« enthält die Such-Ausdrücke&lt;br /&gt;
 -E                   ist ein erweiterter regulärer Ausdruck (egrep)&lt;br /&gt;
 -F                   (Muster, Ausdruck) ist ein Muster (String) (fgrep)&lt;br /&gt;
 -b                   listet auch die Position der Fundstellen&lt;br /&gt;
 -C    Anzahl         Anzahl von Zeilen werden nach der Fundstelle ausgegeben&lt;br /&gt;
 -B    Anzahl         Anzahl von Zeilen werden vor der Fundstelle ausgegeben&lt;br /&gt;
 -r                   Durchsucht Verzeichnisse rekursiv&lt;br /&gt;
&lt;br /&gt;
==Useridendifikation==&lt;br /&gt;
===/etc/passwd===&lt;br /&gt;
====Beschreibung====&lt;br /&gt;
passwd ist eine ASCII-Datei, die eine Liste der Benutzer des Systems und deren&lt;br /&gt;
Passwörter enthält. Die Passwortdatei sollte für alle Benutzer lesbar sein, was für&lt;br /&gt;
dieVerschlüsselung notwendig ist; aber nur vom Superuser beschreibbar. Wenn&lt;br /&gt;
Sie eine neue Kennung einrichten, lassen Sie das Passwort-Feld in der Datei frei&lt;br /&gt;
und benutzen Sie passwd(1), um dem System ein Passwort für die neue Kennung&lt;br /&gt;
mitzuteilen.&lt;br /&gt;
&lt;br /&gt;
Die Datei /etc/passwd enthält einen Eintrag pro Zeile mit dem Format:&lt;br /&gt;
login_name:passwd:UID:GID:user_name:directory:shell&lt;br /&gt;
&lt;br /&gt;
====Die Bedeutung der Felder:====&lt;br /&gt;
# login_name Kennung des Benutzers auf dem System.&lt;br /&gt;
# password   Das verschlüsselte Passwort des Benutzers.&lt;br /&gt;
# UID        Die numerische Benutzernummer.&lt;br /&gt;
#  GID        Die numerische Gruppennummer des Benutzers.&lt;br /&gt;
# user_name Ein optionales Kommentarfeld, oft benutzt für den vollen Namen des Benutzers und weitere Informationen (Telefon, Raum-Nummer etc.).&lt;br /&gt;
# directory  Das Heimatverzeichnis $HOME des Benutzers.&lt;br /&gt;
# shell      Das Programm, das beim Einloggen gestartet werden soll (falls nicht nötig, benutzen Sie /bin/bash).&lt;br /&gt;
&lt;br /&gt;
===/etc/group===&lt;br /&gt;
====Beschreibung====&lt;br /&gt;
etc/group ist eine ASCII Datei, die Gruppen definiert, zu denen Benutzer&lt;br /&gt;
gehören. Es gibt nur einen Eintrag pro Zeile; jede Zeile hat folgendes Format:&lt;br /&gt;
         GruppenName:Passwort:GruppenKennung:BenutzerListe&lt;br /&gt;
Beschreibung der Felder:&lt;br /&gt;
#     GruppenName      Die Bezeichnung der Gruppe.&lt;br /&gt;
#     Passwort         Das (verschlüsselte) Gruppen-Passwort. Wenn dieses Feld leer ist, wird kein Passwort benötigt.&lt;br /&gt;
#     GruppenKennung Die numerische Identifikation der Gruppe.&lt;br /&gt;
#     BenutzerListe    Alle Namen der Mitglieder, getrennt durch Kommas.&lt;br /&gt;
&lt;br /&gt;
===/etc/shadow===&lt;br /&gt;
====Beschreibung====&lt;br /&gt;
shadow beinhaltet Informationen zu den verschlüsselten Passwörten, zu den&lt;br /&gt;
Benutzerzugängen und weitere Informationen zur Laufzeit der Passwörter.&lt;br /&gt;
 Name:Passwort:Letzte Änderung:Mintage:Maxtage:Warntage:Inaktiv:Ablauf&lt;br /&gt;
#    Der Loginname&lt;br /&gt;
#    verschlüsseltes Passwort &lt;br /&gt;
&amp;lt;nowiki&amp;gt;*&amp;lt;/nowiki&amp;gt; bedeutet Benutzer kann sich nicht einlogen&lt;br /&gt;
! bedeutet Benutzer hat kein Passwort gesetzt&lt;br /&gt;
#    Tage seit dem 1 Januar 1970 an dem das Passwort letztmals geändert wurde&lt;br /&gt;
#    Tage, die das Passwort behalten werden muss, bevor es wieder geändert werden kann&lt;br /&gt;
#     Die Anzahl der Tage, nach denen der Benutzer das Passwort wieder ändern muss&lt;br /&gt;
#    Anzahl der Tage bevor das Passwort abläuft und der Benutzer gewarnt wird&lt;br /&gt;
#    Wenn der Zugang diese Anzahl von Tagen nicht benutzt wird, wird der Zugang gesperrt&lt;br /&gt;
#    Tag seit dem 1 Januar 1970, an dem der Zugang gesperrt wird&lt;br /&gt;
#    Reserviertes Feld&lt;br /&gt;
&lt;br /&gt;
Die Datei sollte aus Sicherheitgründen nicht für einen normalen Benutzer lesbar&lt;br /&gt;
sein.&lt;br /&gt;
&lt;br /&gt;
==chmod==&lt;br /&gt;
Die Syntax des Befehls chmod lautet:&lt;br /&gt;
&lt;br /&gt;
'''chmod''' WerWieWas [,WerWieWas,.....] Dateiliste&lt;br /&gt;
&lt;br /&gt;
oder&lt;br /&gt;
&lt;br /&gt;
'''chmod''' Oktalzahl Dateiliste&lt;br /&gt;
&lt;br /&gt;
Durch WerWieWas bzw. Oktalzahl wird die Rechtetabelle definiert. Innerhalb von&lt;br /&gt;
WerWieWas darf es kein Leerzeichen geben. Wer bezeichnet den Benutzerkreis,&lt;br /&gt;
dem man Rechte gibt, Wie die Art, in der die Rechte gegeben werden und Was die&lt;br /&gt;
Rechte als solche. Im einzelnen können folgende Kürzel benutzt werden:&lt;br /&gt;
&lt;br /&gt;
Für Wer kann eines der folgenden Kürzel oder eine Kombination davon stehen:&lt;br /&gt;
 u                   (user) Rechte für den Dateibesitzer&lt;br /&gt;
 g                   (group) Rechte für die Gruppe&lt;br /&gt;
 o                   (others) Rechte für alle anderen Benutzer&lt;br /&gt;
 a                   (all) Rechte für alle Benutzer&lt;br /&gt;
Für Wie steht eines der folgenden Kürzel:&lt;br /&gt;
 +                   Die Rechte werden zu den vorhandenen zusätzlich vergeben&lt;br /&gt;
 -                   Die im Folgenden genannten Rechte werden entzogen&lt;br /&gt;
 =                   Die im Folgenden genannten Rechte ersetzen die bisherigen&lt;br /&gt;
Für Was steht eines der folgenden Kürzel:&lt;br /&gt;
 r                   (read) lesen&lt;br /&gt;
 w                   (write) schreiben&lt;br /&gt;
 x                   (execute) ausführen&lt;br /&gt;
oder diese Sonderformen&lt;br /&gt;
 s                   (usersbit) Programm läuft unter der UID des Besitzers&lt;br /&gt;
 s                   (groupsbit)Programm läuft unter der GID des GRUPPE&lt;br /&gt;
 t                   (stickybit) Dateien im Verzeichnis darf nur Besitzer löschen&lt;br /&gt;
&lt;br /&gt;
===Beispiel===&lt;br /&gt;
Setze für alle Schreib- und Leserecht&lt;br /&gt;
 xinux@zero:~$ chmod a=rw test &lt;br /&gt;
 xinux@zero:~$ ls -l test &lt;br /&gt;
 -rw-rw-rw- 1 xinux xinux 0 2009-06-16 12:01 test&lt;br /&gt;
 xinux@zero:~$ &lt;br /&gt;
&lt;br /&gt;
Erteile Besitzer Ausführungsrecht&lt;br /&gt;
 xinux@zero:~$ chmod u+x test ; ls -l test &lt;br /&gt;
 -rwxrw-rw- 1 xinux xinux 0 2009-06-16 12:01 test&lt;br /&gt;
 xinux@zero:~$ &lt;br /&gt;
&lt;br /&gt;
===chmod oktale Schreibweise===&lt;br /&gt;
 Specialrights        User           Group         Other&lt;br /&gt;
 usbit gsbit sticky    r    w   x     r   w   x     r   w   x&lt;br /&gt;
   1     1      1      1    1   1     1   1   1     1   1   1&lt;br /&gt;
   0     0      0      0    0   0     0   0   0     0   0   0&lt;br /&gt;
 Oktale Wertigkeit pro Recht&lt;br /&gt;
   4     2       1     4    2   1     4   2   1     4   2   1&lt;br /&gt;
&lt;br /&gt;
===Beispiele===&lt;br /&gt;
 xinux@zero:~$ chmod 751 test ; ls -l test&lt;br /&gt;
 -rwxr-x--x 1 xinux xinux 0 2009-06-16 12:01 test&lt;br /&gt;
 xinux@zero:~$ &lt;br /&gt;
&lt;br /&gt;
 xinux@zero:~$ chmod 4770 test ; ls -l test&lt;br /&gt;
 -rwsrwx--- 1 xinux xinux 0 2009-06-16 12:01 test&lt;br /&gt;
 xinux@zero:~$ &lt;br /&gt;
&lt;br /&gt;
 xinux@zero:~$ chmod 0 test ; ls -l test &lt;br /&gt;
 ---------- 1 xinux xinux 0 2009-06-16 12:01 test&lt;br /&gt;
&lt;br /&gt;
===chmod Optionen===&lt;br /&gt;
 -c   (changes) es werden nur die Dateien angezeigt, deren Zugriffsrechte tatsächlich verändert werden&lt;br /&gt;
 -f   (silent, quiet) Fehlermeldungen wegen fehlgeschlagener Änderungsversuche werden unterdrückt&lt;br /&gt;
 -v   (verbose) alle Aktionen werden angezeigt&lt;br /&gt;
 -R   (recursive) die Zugriffsrechte aller Dateien in den Unterverzeichnissen werden ebenfalls geändert&lt;br /&gt;
&lt;br /&gt;
Theoretisch sind alle Kombinationen der Zugriffsrechte denkbar, aber der&lt;br /&gt;
Eigentümer einer Datei darf diese immer lesen, selbst wenn das Lesebit nicht&lt;br /&gt;
gesetzt ist. Genauso macht es wenig Sinn, eine gewöhnliche Textdatei als&lt;br /&gt;
ausführbar zu setzen; die Shell wird damit nichts anfangen können. Ein x für ein&lt;br /&gt;
Verzeichnis gibt an, dass in dieses gewechselt werden kann.&lt;br /&gt;
&lt;br /&gt;
Rechte sind verbindlich&lt;br /&gt;
&lt;br /&gt;
Interessant ist auch ein Konstrukt folgender Art&lt;br /&gt;
 -rwx---rwx&lt;br /&gt;
&lt;br /&gt;
das angibt, dass mit der Datei alles angestellt werden kann, außer durch Nutzer der&lt;br /&gt;
Gruppe. Versucht irgend jemand, der nicht der Gruppe des Eigentümers angehört,&lt;br /&gt;
die Datei zu modifizieren, wird ihm dies gelingen, einem Gruppenmitglied bleibt&lt;br /&gt;
dies versagt, obwohl er ja gleichzeitig ein &amp;quot;Anderer&amp;quot; ist. D.h. die Rechte der&lt;br /&gt;
Gruppe sind verbindlicher, als die Rechte der anderen!&lt;br /&gt;
&lt;br /&gt;
===Bedeutungen der Zugriffsarten===&lt;br /&gt;
====Dateien====&lt;br /&gt;
* r: Der Inhalt der Datei kann gelesen und damit auch kopiert werden. &lt;br /&gt;
 root@zero:~# cat test&lt;br /&gt;
 Dies ist eine Testdatei&lt;br /&gt;
  &lt;br /&gt;
 root@zero:~# cp test backup&lt;br /&gt;
&lt;br /&gt;
* w: Der Inhalt der Datei darf verändert werden. Ob die Datei gelöscht werden kann ist&lt;br /&gt;
keine Eigenschaft der Datei, sondern des Verzeichnisses, indem sich die Datei befindet.&lt;br /&gt;
 root@zero:~# cat &amp;gt; test&lt;br /&gt;
 Hier steht jetzt was anderes&lt;br /&gt;
 ^C&lt;br /&gt;
 root@zero:~# cat test&lt;br /&gt;
 Hier steht jetzt was anderes&lt;br /&gt;
  &lt;br /&gt;
 xinux@zero:~$ ls -ld verzeichnis/&lt;br /&gt;
 dr-xr-xr-x 2 xinux xinux 4096 2009-06-18 11:16 verzeichnis/&lt;br /&gt;
 xinux@zero:~/verzeichnis$ rm text&lt;br /&gt;
 rm: Entfernen von „text“ nicht möglich: Permission denied&lt;br /&gt;
&lt;br /&gt;
* x: Ausführrecht für Programme und Skripte&lt;br /&gt;
 xinux@zero:~$ ./programm&lt;br /&gt;
 -bash: ./programm: Permission denied&lt;br /&gt;
 xinux@zero:~$ chmod +x programm&lt;br /&gt;
 xinux@zero:~$ ./programm&lt;br /&gt;
 Test&lt;br /&gt;
  test&lt;br /&gt;
&lt;br /&gt;
====Verzeichnisse====&lt;br /&gt;
* r: Die Einträge in dem Verzeichnis sind lesbar.&lt;br /&gt;
Leserecht von verzeichnis/ entziehen&lt;br /&gt;
 xinux@zero:~$ chmod a-r verzeichnis/&lt;br /&gt;
 xinux@zero:~$ ls verzeichnis/&lt;br /&gt;
 ls: Öffnen von Verzeichnis verzeichnis/ nicht möglich: Permission denied&lt;br /&gt;
Leserecht für Benutzer und Gruppe vergeben&lt;br /&gt;
 xinux@zero:~$ chmod a+r verzeichnis/&lt;br /&gt;
 xinux@zero:~$ ls verzeichnis/&lt;br /&gt;
 text&lt;br /&gt;
&lt;br /&gt;
* w: Die Einträge in dem Verzeichnis können geändert werden. &lt;br /&gt;
Neue Datei erstellen&lt;br /&gt;
 xinux@zero:~$ touch neu&lt;br /&gt;
 xinux@zero:~$ ls neu&lt;br /&gt;
 neu&lt;br /&gt;
&lt;br /&gt;
Datei löschen&lt;br /&gt;
 xinux@zero:~$ rm neu&lt;br /&gt;
 xinux@zero:~$ ls neu&lt;br /&gt;
 ls: Zugriff auf neu nicht möglich: No such file or directory&lt;br /&gt;
&lt;br /&gt;
* x: Der Name des Verzeichnisses kann in einem Pfadnamen erscheinen.&lt;br /&gt;
Verzeichnis ohne x Recht&lt;br /&gt;
 xinux@zero:~$ chmod a-x verzeichnis/&lt;br /&gt;
Wechseln in Verzeichnis mangels x-Recht nicht möglich&lt;br /&gt;
 xinux@zero:~$ cd verzeichnis/&lt;br /&gt;
 -bash: cd: verzeichnis/: Permission denied&lt;br /&gt;
x-Recht vergeben&lt;br /&gt;
 xinux@zero:~$ chmod a+x verzeichnis/&lt;br /&gt;
damit Wechsel in Verzeichnis möglich&lt;br /&gt;
 xinux@zero:~$ cd verzeichnis/&lt;br /&gt;
 xinux@zero:~/verzeichnis$ pwd&lt;br /&gt;
 /home/xinux/verzeichnis&lt;br /&gt;
&lt;br /&gt;
====umask====&lt;br /&gt;
Neue Dateien und Verzeichnisse werden mit ein und denselben Zufriffsrechten erzeugt.&lt;br /&gt;
 xinux@zero:~$ mkdir text&lt;br /&gt;
 xinux@zero:~$ touch textdat&lt;br /&gt;
 xinux@zero:~$ ls -ld text*&lt;br /&gt;
 drwxr-xr-x 2 xinux xinux 4096 2009-06-18 11:37 text&lt;br /&gt;
 -rw-r--r-- 1 xinux xinux    0 2009-06-18 11:37 textdat&lt;br /&gt;
&lt;br /&gt;
Zuständig für dieses Verhalten ist die sogenannte umask, die oft in der Datei&lt;br /&gt;
/etc/profile auf den Wert 022 voreingestellt ist. Zusätzlich wird noch eine&lt;br /&gt;
Maximalmaske benötigt, die sich für Verzeichnisse und andere Dateien&lt;br /&gt;
unterscheidet. Die bei der Erzeugung gesetzten Rechte entstehen nun, indem von&lt;br /&gt;
der Maximalmaske der durch die umask vorgegebene Wert subtrahiert wird:&lt;br /&gt;
&lt;br /&gt;
{| border=1 cellpadding=2&lt;br /&gt;
!&lt;br /&gt;
! Dateien&lt;br /&gt;
! Verzeichnisse&lt;br /&gt;
|-&lt;br /&gt;
| Systemvorgabe&lt;br /&gt;
| 666&lt;br /&gt;
| 777&lt;br /&gt;
|-&lt;br /&gt;
| -umask&lt;br /&gt;
| 022&lt;br /&gt;
| 022&lt;br /&gt;
|-&lt;br /&gt;
| Ergebnis&lt;br /&gt;
| 644&lt;br /&gt;
| 755&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
 xinux@zero:~$ grep umask /etc/profile&lt;br /&gt;
 umask 022&lt;br /&gt;
&lt;br /&gt;
==Gruppenzugehörigkeit==&lt;br /&gt;
===newgrp===&lt;br /&gt;
Ändert die Gruppenzugehörigkeit eines Benutzers auf die angegebene Gruppe. Wenn keine Gruppe angegeben wird, wird die &lt;br /&gt;
Anmeldegruppe des Benutzers verwendet. Die neue Gruppe wird anschließend fü Zugriffskontrollen verwendet.&lt;br /&gt;
&lt;br /&gt;
 newgrp Gruppenname&lt;br /&gt;
&lt;br /&gt;
 root@zero:~# newgrp hacker&lt;br /&gt;
 root@zero:~# id&lt;br /&gt;
 uid=0(root) gid=1006(hacker) Gruppen=0(root),1006(hacker)&lt;br /&gt;
&lt;br /&gt;
===chgrp===&lt;br /&gt;
Verändert die Besitzugehörigkeit zu der angegebenen Gruppe&lt;br /&gt;
&lt;br /&gt;
 chgrp [Optionen] Gruppe Datei(en)&lt;br /&gt;
&lt;br /&gt;
Optionen:&lt;br /&gt;
 -c Zeigt Veränderungen an&lt;br /&gt;
 -f Unterdrückt die meisten Fehlermeldungen&lt;br /&gt;
 -R Verändert Dateien und Verzeichnisse rekursiv&lt;br /&gt;
 -v Gibt geschwätzige Ausgabe aus.&lt;br /&gt;
&lt;br /&gt;
 root@zero:~# ls -l&lt;br /&gt;
 ...&lt;br /&gt;
 d-wx--x--x  3 root root 4096 2009-06-18 13:34 verzeichnis&lt;br /&gt;
 &lt;br /&gt;
 root@zero:~# chgrp -R xinux verzeichnis/&lt;br /&gt;
 root@zero:~# ls -l&lt;br /&gt;
 ...&lt;br /&gt;
 d-wx--x--x  3 root xinux 4096 2009-06-18 13:34 verzeichnis&lt;br /&gt;
&lt;br /&gt;
 xinux@zero:~$ cd /root/verzeichnis/&lt;br /&gt;
 xinux@zero:/root/verzeichnis$ pwd&lt;br /&gt;
 /root/verzeichnis&lt;br /&gt;
&lt;br /&gt;
===chown===&lt;br /&gt;
Ändert den Eigentümer von einer oder mehreren Dateien in den angegebenen Benutzer. &lt;br /&gt;
chown erlaubt ebenfalls das Ändern der Gruppeneigentümreschaft. Nur der aktuelle Eigentümer einer&lt;br /&gt;
Datei oder der Superuser (root) darf die Eigentumsverhältnisse ändern.&lt;br /&gt;
&lt;br /&gt;
 chown [Optionen] Benutzer(:Gruppe) Dateien&lt;br /&gt;
&lt;br /&gt;
Optionen:&lt;br /&gt;
 -c Gibt Informationen über die veränderten Dateien aus&lt;br /&gt;
 --dereference Symbolischen Links folgen&lt;br /&gt;
 -v Gibt Informationen über alle Dateien aus, die chown zu ändern versucht, egal, ob die Änderung erfolgt ist oder nicht&lt;br /&gt;
 -R Geht rekursiv durch alle Unterverzeichnisse und führt die Änderungen durch. &lt;br /&gt;
&lt;br /&gt;
 root@zero:~# chown -R xinux.xinux verzeichnis/&lt;br /&gt;
 root@zero:~# ls -l&lt;br /&gt;
 insgesamt 12&lt;br /&gt;
 drwx------ 13 root  root  4096 2009-04-21 15:11 profile&lt;br /&gt;
 --w-------  1 root  root     0 2009-06-18 11:13 test&lt;br /&gt;
 -rw-r--r--  1 root  root    40 2009-06-18 12:04 text&lt;br /&gt;
 drwxrwx--x  3 xinux xinux 4096 2009-06-18 13:39 verzeichnis&lt;br /&gt;
 &lt;br /&gt;
 root@zero:~# chown -R -c xinux.xinux verzeichnis/&lt;br /&gt;
 &lt;br /&gt;
 root@zero:~# chown -R -v xinux.xinux verzeichnis/&lt;br /&gt;
 Eigentümer von „verzeichnis/01“ als xinux:xinux erhalten&lt;br /&gt;
 Eigentümer von „verzeichnis/test“ als xinux:xinux erhalten&lt;br /&gt;
 Eigentümer von „verzeichnis/“ als xinux:xinux erhalten&lt;br /&gt;
&lt;br /&gt;
==Eingabe/Ausgabe==&lt;br /&gt;
Standardeingabe (0): Laufende Programme erwarten von hier ihre Eingaben (normalerweise handelt es sich um die Tastatur).&lt;br /&gt;
&lt;br /&gt;
Standardausgabe (1): Programme schreiben auf diese ihre Ausgaben (Bildschirm).&lt;br /&gt;
&lt;br /&gt;
Standardfehlerausgabe (2) : Fehlerausgaben landen hier (Bildschirm, aber nur die aktive Konsole).&lt;br /&gt;
&lt;br /&gt;
===cat===&lt;br /&gt;
Das Programm cat liest von STDIN und gibt es STDOUT wieder aus&lt;br /&gt;
&lt;br /&gt;
Einlesen der Datei text&lt;br /&gt;
 root@zero:~# cat &amp;lt; text&lt;br /&gt;
 wichtig&lt;br /&gt;
&lt;br /&gt;
Schreiben in die Datei text, dies überschreibt den bisherigen Inhalt der Datei&lt;br /&gt;
 root@zero:~# cat &amp;gt; text&lt;br /&gt;
 sogar noch wichtiger &lt;br /&gt;
 &lt;br /&gt;
Ausgeben der Datei text&lt;br /&gt;
 root@zero:~# cat text &lt;br /&gt;
 sogar noch wichtiger&lt;br /&gt;
&lt;br /&gt;
Lesen aus der Datei text und schreiben in die Datei neuertext&lt;br /&gt;
 root@zero:~# cat &amp;lt; text &amp;gt; neuertext&lt;br /&gt;
 root@zero:~# cat neuertext&lt;br /&gt;
 sogar noch wichtiger&lt;br /&gt;
&lt;br /&gt;
Anhängen der Ausgabe von date an die Datei neuertext&lt;br /&gt;
 root@zero:~# date &amp;gt;&amp;gt; neuertext&lt;br /&gt;
 root@zero:~# cat neuertext&lt;br /&gt;
 sogar noch wichtiger&lt;br /&gt;
 Do 18. Jun 14:08:58 CEST 2009&lt;br /&gt;
&lt;br /&gt;
Umleiten des Standardfehlerkanals nach error&lt;br /&gt;
 root@zero:~# rm sux 2&amp;gt; error&lt;br /&gt;
 root@zero:~# more error&lt;br /&gt;
 rm: Entfernen von „sux“ nicht möglich: No such file or directory&lt;br /&gt;
&lt;br /&gt;
===Umleitungen===&lt;br /&gt;
Nacheinander auszuführende Kommandos&lt;br /&gt;
 root@zero:~# pwd; date&lt;br /&gt;
 /root&lt;br /&gt;
 Do 18. Jun 14:13:05 CEST 2009&lt;br /&gt;
 &lt;br /&gt;
Übergeben der Ausgabe von tail als Eingabe von grep mit Hilfe der Pipe &amp;quot;|&amp;quot;&lt;br /&gt;
 root@zero:~# tail /var/log/auth.log | grep xinux&lt;br /&gt;
 Jun 18 13:52:33 zero nss_wins[11433]: pam_unix(login:session): session closed for user xinux&lt;br /&gt;
&lt;br /&gt;
Übergeben der letzten 100 Zeilen von syslog als Eingabe von grep&lt;br /&gt;
 root@zero:~# tail /var/log/syslog -n 100 | grep error&lt;br /&gt;
 Jun 18 09:30:54 zero kernel: [154384.692135] end_request: I/O error, dev fd0, sector 0&lt;br /&gt;
 Jun 18 09:30:54 zero kernel: [154384.712137] end_request: I/O error, dev fd0, sector 0&lt;br /&gt;
&lt;br /&gt;
==tr==&lt;br /&gt;
tr ist ein Programm um Zeichen zu übersetzen. Dies betrifft nur die Ausgabe, die Datei selbst bleibt unverändert.&lt;br /&gt;
&lt;br /&gt;
Ersetzt Kleinbuchstaben durch Großbuchstaben aus der Datei text&lt;br /&gt;
 root@zero:~# tr &amp;quot;a-z&amp;quot; &amp;quot;A-Z&amp;quot; &amp;lt; text&lt;br /&gt;
 SOGAR NOCH WICHTIGER&lt;br /&gt;
 123&lt;br /&gt;
 34&lt;br /&gt;
 4711&lt;br /&gt;
 TEST&lt;br /&gt;
&lt;br /&gt;
Ersetzt alle Zahlen durch X&lt;br /&gt;
 root@zero:~# tr &amp;quot;0-9&amp;quot; &amp;quot;X&amp;quot; &amp;lt; text&lt;br /&gt;
 sogar noch wichtiger&lt;br /&gt;
 XXX&lt;br /&gt;
 XX&lt;br /&gt;
 XXXX&lt;br /&gt;
 test&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
 root@zero:~# cat test&lt;br /&gt;
 +++++&lt;br /&gt;
 ###&lt;br /&gt;
 1111&lt;br /&gt;
&lt;br /&gt;
-s löscht mehrfach kommende Zeichen&lt;br /&gt;
 root@zero:~# tr '''-s''' &amp;quot;+&amp;quot; &amp;lt; test&lt;br /&gt;
 +&lt;br /&gt;
 ###&lt;br /&gt;
 1111&lt;br /&gt;
&lt;br /&gt;
-d löscht vorkommende Zeichen &lt;br /&gt;
 root@zero:~# tr '''-d''' &amp;quot;#&amp;quot; &amp;lt; test&lt;br /&gt;
 +++++ &lt;br /&gt;
 &lt;br /&gt;
 1111&lt;br /&gt;
&lt;br /&gt;
==cut==&lt;br /&gt;
Spalten aus einer Datei schneiden. Dies betrifft nur die Ausgabe, die Datei selbst bleibt unverändert.&lt;br /&gt;
 &lt;br /&gt;
Schneidet die erste Spalte aus, der Delimiter ist : &lt;br /&gt;
 root@zero:~# cut -f 1 -d : /etc/passwd&lt;br /&gt;
 root&lt;br /&gt;
 daemon&lt;br /&gt;
 bin&lt;br /&gt;
 ...&lt;br /&gt;
 xinux&lt;br /&gt;
&lt;br /&gt;
 root@zero:~# more test&lt;br /&gt;
 1234#5678#9999&lt;br /&gt;
 &lt;br /&gt;
Schneidet die zweite Spalte aus, der Delimiter ist #&lt;br /&gt;
 root@zero:~# cut -f 2 -d &amp;quot;#&amp;quot; &amp;lt; test&lt;br /&gt;
 5678&lt;br /&gt;
&lt;br /&gt;
==expand==&lt;br /&gt;
Ersetzt Tabulatorzeichen durch Folgen von Leerzeichen und schreibt das Ergebnis auf die Standardausgabe&lt;br /&gt;
 root@zero:~# expand /etc/samba/smb.conf&lt;br /&gt;
 ...&lt;br /&gt;
&lt;br /&gt;
==fmt==&lt;br /&gt;
Setzt den Text der Dateien im Blocksatz der angegebenen Breite durch Auffüllen von Zeilen und Entfernen von Zeilenwechseln.&lt;br /&gt;
Standardgemäß werden Leerzeilen, die Position von Leerzeichen und der Einzug am Zeilenanfang erhalten. fmt versucht, &lt;br /&gt;
Zeilenumbrüche an Satzenden durchzuführen sowie sie nach dem ersten oder vor dem letzten Wort eines Satzes zu vermeiden. &lt;br /&gt;
 &lt;br /&gt;
 fmt [Optionen] [Dateien]&lt;br /&gt;
&lt;br /&gt;
Optionen&lt;br /&gt;
&lt;br /&gt;
* -p ''Präfix'': Formatiert nur Zeilen, die mit ''Präfix'' anfangen&lt;br /&gt;
 root@zero:/tmp# fmt -p '#' text&lt;br /&gt;
 #Setzt den Text der Dateien im Blocksatz der angegebenen Breite durch&lt;br /&gt;
 #Auffüllen von Zeilen und Entfernen von Zeilenwechseln.  Standardgemäß&lt;br /&gt;
 #werden Leerzeilen, die Position von Leerzeichen und der Einzug am&lt;br /&gt;
 #Zeilenanfang erhalten. fmt versucht,&lt;br /&gt;
 Zeilenumbrüche an Satzenden durchzuführen sowie sie nach dem ersten oder vor dem letzten Wort eines Satzes zu vermeiden.&lt;br /&gt;
&lt;br /&gt;
* -u : Erzwingt genau ein Leerzeichen zwischen Wörtern und zwei Leerzeichen zwischen Sätzen&lt;br /&gt;
&lt;br /&gt;
* -w ''Breite'': Setzt die Ausgabebreite auf ''Breite''&lt;br /&gt;
 root@zero:/tmp# fmt -w 30 text&lt;br /&gt;
 #Setzt den Text der Dateien&lt;br /&gt;
 im Blocksatz der angegebenen&lt;br /&gt;
 Breite durch Auffüllen&lt;br /&gt;
 von Zeilen und Entfernen&lt;br /&gt;
 von Zeilenwechseln.&lt;br /&gt;
 #Standardgemäß werden&lt;br /&gt;
 Leerzeilen, die Position von&lt;br /&gt;
 Leerzeichen und der Einzug am&lt;br /&gt;
 Zeilenanfang erhalten. fmt&lt;br /&gt;
 versucht, Zeilenumbrüche&lt;br /&gt;
 an Satzenden durchzuführen&lt;br /&gt;
 sowie sie nach dem ersten&lt;br /&gt;
 oder vor dem letzten Wort&lt;br /&gt;
 eines Satzes zu vermeiden.&lt;br /&gt;
&lt;br /&gt;
==join==&lt;br /&gt;
Führt die Zeilen zweier sortierter Dateien anhand von '''Übereinstimmungen''' in einem gemeinsamen Feld zusammen.&lt;br /&gt;
&lt;br /&gt;
 root@zero:~# more name&lt;br /&gt;
 1. karl&lt;br /&gt;
 2. heinz&lt;br /&gt;
 3. hans&lt;br /&gt;
 4. otto&lt;br /&gt;
 root@zero:~# more tel&lt;br /&gt;
 1. 1234&lt;br /&gt;
 2. 4321&lt;br /&gt;
 3. 222&lt;br /&gt;
 4. 121212&lt;br /&gt;
 root@zero:~# join name tel &amp;gt; telefonbuch&lt;br /&gt;
 root@zero:~# more telefonbuch&lt;br /&gt;
 1. karl 1234&lt;br /&gt;
 2. heinz 4321&lt;br /&gt;
 3. hans 222&lt;br /&gt;
 4. otto 121212&lt;br /&gt;
&lt;br /&gt;
==nl==&lt;br /&gt;
Nummeriert die Zeilen in einer Datei.&lt;br /&gt;
&lt;br /&gt;
 root@zero:~# nl /etc/passwd                                                   &lt;br /&gt;
     1  root:x:0:0:root:/root:/bin/bash                                       &lt;br /&gt;
     2  daemon:x:1:1:daemon:/usr/sbin:/bin/sh                                 &lt;br /&gt;
     3  bin:x:2:2:bin:/bin:/bin/sh                                            &lt;br /&gt;
     4  sys:x:3:3:sys:/dev:/bin/sh                                            &lt;br /&gt;
     5  sync:x:4:65534:sync:/bin:/bin/sync&lt;br /&gt;
     ...&lt;br /&gt;
&lt;br /&gt;
==od==&lt;br /&gt;
Gibt Dateien im Oktal und anderen Formaten aus.&lt;br /&gt;
&lt;br /&gt;
 od [Optionen] Datei&lt;br /&gt;
&lt;br /&gt;
* -j ''Bytes'': Überspringt die Anzahl ''Bytes'' einer Datei&lt;br /&gt;
* -N ''Bytes'': Gibt nur die Anzahl ''Bytes'' aus&lt;br /&gt;
* -c : Gebe ASCII Zeichen aus&lt;br /&gt;
* -f : Gebe Fließkommazahlen aus&lt;br /&gt;
* -i : Gebe Dezimal Integer aus&lt;br /&gt;
* -l : Gebe Dezimal Long aus&lt;br /&gt;
* -o : Gebe Oktal 2 Byte Einheiten aus&lt;br /&gt;
* -s : Gebe Dezimal 2 Byte Einheiten aus&lt;br /&gt;
* -x : Gebe Hexadezimale 2 Byte einheiten aus&lt;br /&gt;
&lt;br /&gt;
Beispiele&lt;br /&gt;
&lt;br /&gt;
Gebe Master Boot Record (die ersten 512 Byte der Festplatte /dev/sda) als Hexadezimal aus&lt;br /&gt;
 root@zero:~# od '''-x -N''' 512 /dev/sda&lt;br /&gt;
 0000000 48eb 1090 d08e 00bc b8b0 0000 d88e c08e&lt;br /&gt;
 0000020 befb 7c00 00bf b906 0200 a4f3 21ea 0006&lt;br /&gt;
 0000040 be00 07be 0438 0b75 c683 8110 fefe 7507&lt;br /&gt;
 0000060 ebf3 b416 b002 bb01 7c00 80b2 748a 0203&lt;br /&gt;
 0000100 00ff 2000 0001 0000 0200 90fa f690 80c2&lt;br /&gt;
 ...&lt;br /&gt;
&lt;br /&gt;
Schreibe &amp;quot;suxer&amp;quot; in die Datei test&lt;br /&gt;
 root@zero:~# echo &amp;quot;suxer&amp;quot; &amp;gt; test&lt;br /&gt;
Ausgabe Hexadezimal&lt;br /&gt;
 root@zero:~# od -x test&lt;br /&gt;
 0000000 7573 6578 0a72&lt;br /&gt;
 0000006&lt;br /&gt;
&lt;br /&gt;
Ausgabe ASCII Zeichen&lt;br /&gt;
 root@zero:~# od -c test&lt;br /&gt;
 0000000   s   u   x   e   r  \n&lt;br /&gt;
 0000006&lt;br /&gt;
&lt;br /&gt;
==paste==&lt;br /&gt;
Fügt die Zeilen von zwei oder mehr Dateien horizontal zusammen&lt;br /&gt;
 root@zero:~# paste name tel&lt;br /&gt;
 1. karl 1. 1234&lt;br /&gt;
 2. heinz        2. 4321&lt;br /&gt;
 3. hans 3. 222&lt;br /&gt;
 4. otto 4. 121212&lt;br /&gt;
&lt;br /&gt;
==pr==&lt;br /&gt;
Bereitet Textdateien zum Drucken vor.&lt;br /&gt;
&lt;br /&gt;
 root@zero:~# echo &amp;quot;Plan für heute&amp;quot; &amp;gt; dokument&lt;br /&gt;
 root@zero:~# more dokument&lt;br /&gt;
 Plan für heute&lt;br /&gt;
 root@zero:~# pr dokument   &lt;br /&gt;
  &lt;br /&gt;
 &lt;br /&gt;
 2009-06-19 12:44                    dokument                     Seite 1&lt;br /&gt;
 &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
 Plan für heute&lt;br /&gt;
&lt;br /&gt;
Anmerkung Ausmaße der Bildschirmausgabe wie eine Druckseite.&lt;br /&gt;
&lt;br /&gt;
==sed==&lt;br /&gt;
streaming editor. Mit sed ist es möglich, den Inhalt einer Datei automatisch (nicht interaktiv) zu&lt;br /&gt;
bearbeiten. Wie unter Linux üblich, wird auch hier der Text nicht wirklich verändert sondern die &lt;br /&gt;
Änderung erfolgt über die Standardausgabe, die wieder umgeleitet werden kann. Die Syntax ist ähnlich &lt;br /&gt;
des ex modus von vi. Reguläre Ausdrücke können nach Belieben benutzt werden. &lt;br /&gt;
&lt;br /&gt;
Optionen:&lt;br /&gt;
 -e Zeichenkette  wendet die Editorbefehle aus Zeichenkette auf den Text an.&lt;br /&gt;
 -n gibt nur die Zeilen aus, die explizit (durch &amp;quot;p&amp;quot; ausgedruckt werden sollen&lt;br /&gt;
&lt;br /&gt;
Gibt die dritte Zeile der Datei text aus&lt;br /&gt;
 root@zero:~# sed -n &amp;quot;3p&amp;quot; text&lt;br /&gt;
 34&lt;br /&gt;
&lt;br /&gt;
Gibt die erste bis dritte Zeile von text aus&lt;br /&gt;
 root@zero:~# sed -n &amp;quot;1,3p&amp;quot; text&lt;br /&gt;
 sogar noch wichtiger&lt;br /&gt;
 123&lt;br /&gt;
 34&lt;br /&gt;
&lt;br /&gt;
Löschen der Zeile mit &amp;quot;sogar&amp;quot;&lt;br /&gt;
 root@zero:~# sed -e '/sogar/d' &amp;lt; text&lt;br /&gt;
 123&lt;br /&gt;
 34&lt;br /&gt;
 4711&lt;br /&gt;
 test&lt;br /&gt;
&lt;br /&gt;
und schreiben in text2&lt;br /&gt;
 root@zero:~# sed -e '/sogar/d' &amp;lt; text &amp;gt; text2&lt;br /&gt;
 root@zero:~# more text2&lt;br /&gt;
 123&lt;br /&gt;
 34&lt;br /&gt;
 4711&lt;br /&gt;
 test&lt;br /&gt;
&lt;br /&gt;
Alle 3en durch DREI ersetzen&lt;br /&gt;
 root@zero:~# sed -e 's/3/DREI/g' &amp;lt; text&lt;br /&gt;
 sogar noch wichtiger&lt;br /&gt;
 12DREI&lt;br /&gt;
 DREI4&lt;br /&gt;
 4711&lt;br /&gt;
 test&lt;br /&gt;
&lt;br /&gt;
==wc==&lt;br /&gt;
Zählt die Anzahl von Zeichen, Wörter oder Zeilen&lt;br /&gt;
&lt;br /&gt;
Optionen&lt;br /&gt;
* -m : Zählt die Anzahl der Zeichen&lt;br /&gt;
 root@zero:~# more name&lt;br /&gt;
 1. karl&lt;br /&gt;
 2. heinz&lt;br /&gt;
 3. hans&lt;br /&gt;
 4. otto&lt;br /&gt;
 root@zero:~# wc '''-m''' tel&lt;br /&gt;
 33 tel&lt;br /&gt;
&lt;br /&gt;
* -w : Zählt die Anzahl der Wörter (einschließlich Zahlen und andere Zeichen)&lt;br /&gt;
 root@zero:~# wc '''-w''' name&lt;br /&gt;
 8 name&lt;br /&gt;
&lt;br /&gt;
* -l : Zählt die Anzahl der Zeilen&lt;br /&gt;
 root@zero:~# wc '''-l''' name&lt;br /&gt;
 4 name&lt;br /&gt;
&lt;br /&gt;
==INodes==&lt;br /&gt;
Inode (oder I-Node) wird im Deutschen am besten als Informationsknoten oder&lt;br /&gt;
Indexeintrag bezeichnet. Er fasst alle Attribute einer Datei zusammen außer dem Inhalt&lt;br /&gt;
und dem Namen der Datei.&lt;br /&gt;
&lt;br /&gt;
===Daten===&lt;br /&gt;
{| border=1 cellpadding=2&lt;br /&gt;
|type&lt;br /&gt;
|Der Typ der Datei wird als einzelner Buchstabe angezeigt. Der Typ einer Datei wird beim Anlegen der Datei festgelegt&lt;br /&gt;
|-&lt;br /&gt;
|Permissions &lt;br /&gt;
|Die Zugriffsrechte der Datei werden in den 12 Bit sstrwxrwxrwx abgespeichert.Wenn sie gesetzt sind, werden sie bei &lt;br /&gt;
der Ausgabe an Stelle der x-Rechte ausgegeben. Die Zugriffsrechte können mit dem Kommando chmod verändert werden.&lt;br /&gt;
|-&lt;br /&gt;
|link count&lt;br /&gt;
|In UNIX kann eine Datei mehr als einen Namen haben. Der Link Count gibt die Anzahl der Namen einer Datei an. Er kann&lt;br /&gt;
mit dem Kommando ln erhöht und dem Kommando rm erniedrigt werden.&lt;br /&gt;
|-&lt;br /&gt;
|owner&lt;br /&gt;
|Für den Dateieigentümer gelten die in der ersten rwx-Gruppe festgelegten Zugriffsrechte. Standardmäßig ist der &lt;br /&gt;
Eigentümer einer Datei derjenige Benutzer, der die Datei angelegt hat.&lt;br /&gt;
|-&lt;br /&gt;
|group&lt;br /&gt;
|Für Benutzer, die in der gleichen Gruppe sind, der die Datei angehört, gelten die in der zweiten rwx-Gruppe festgelegten&lt;br /&gt;
Zugriffsrechte. In System V gehört eine Datei standardmäßig der Gruppe an, in der der anlegende Benutzer gerade ist.&lt;br /&gt;
|-&lt;br /&gt;
|size&lt;br /&gt;
|Bei normalen Dateien und Verzeichnissen gibt diese Information die Länge der Datei in Byte an.&lt;br /&gt;
|-&lt;br /&gt;
|access time&lt;br /&gt;
|Die Zugriffszeit gibt den Zeitpunkt des letzten Lesezugriffes auf eine Datei an. Aus Effizienzgründen wird die &lt;br /&gt;
Zugriffszeit an Verzeichnissen nicht gesetzt, wenn ein Verzeichnis durchsucht wird, obwohl man dies erwarten könnte.&lt;br /&gt;
|-&lt;br /&gt;
|modification time&lt;br /&gt;
|Die Modifikationszeit gibt die Zeit des letzten Schreibzugriffes auf die Daten der Datei an. Intern speichert UNIX &lt;br /&gt;
die Zeit als Sekunden seit Beginn des Jahres 1970 und in GMT ab. Für die Ausgabe wird dies in ein besser lesbares &lt;br /&gt;
Format in der lokalen Zeitzone umgewandelt.&lt;br /&gt;
|-&lt;br /&gt;
|change time &lt;br /&gt;
|Die Veränderungszeit gibt das Datum der letzten Statusänderung der Datei an. Sie wird immer dann gesetzt, wenn die &lt;br /&gt;
Informationen über die Datei sich ändern (Datum der Erzeugung wird nicht gespeichert)&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
===Dateiarten===&lt;br /&gt;
{| border=1 cellpadding=2&lt;br /&gt;
!Zeichen&lt;br /&gt;
!Typ&lt;br /&gt;
!Zweck&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;nowiki&amp;gt;-&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
|file&lt;br /&gt;
|normale Datei&lt;br /&gt;
|-&lt;br /&gt;
|d&lt;br /&gt;
|directory&lt;br /&gt;
|Verzeichnis&lt;br /&gt;
|-&lt;br /&gt;
|b&lt;br /&gt;
|block device&lt;br /&gt;
|Gerätedatei&lt;br /&gt;
|-&lt;br /&gt;
|c&lt;br /&gt;
|character device&lt;br /&gt;
|Gerätedatei&lt;br /&gt;
|-&lt;br /&gt;
|l&lt;br /&gt;
|link&lt;br /&gt;
|Querverweis&lt;br /&gt;
|-&lt;br /&gt;
|p&lt;br /&gt;
|named pipe&lt;br /&gt;
|Benannte Pipeline&lt;br /&gt;
|-&lt;br /&gt;
|s&lt;br /&gt;
|socket&lt;br /&gt;
|Netzwerkverbindung&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
====Normale Dateien====&lt;br /&gt;
Unter einer normalen Datei versteht man die Ansammlung von Daten. Dies kann ein Text, Programm, Bild oder sonstiges sein. &lt;br /&gt;
Beispiel&lt;br /&gt;
 root@zero:~# ls text&lt;br /&gt;
 text&lt;br /&gt;
&lt;br /&gt;
====Verzeichnisse====&lt;br /&gt;
Dateien werden in Verzeichnissen gespeichert, nur so ist eine Ordnung möglich. &lt;br /&gt;
 root@zero:~# mkdir -v Ordner&lt;br /&gt;
 mkdir: Verzeichnis „Ordner“ angelegt&lt;br /&gt;
 &lt;br /&gt;
 root@zero:~# ls -d ~/*&lt;br /&gt;
 /root/error  /root/neuertext  /root/Ordner  /root/profile  /root/test  /root/text  /root/verzeichnis&lt;br /&gt;
&lt;br /&gt;
====Gerätedateien (Block und Char)====&lt;br /&gt;
Gerätedateien ermöglichen Anwendungsprogrammen unter Benutzung des  Kernels den Zugriff auf die Hardwarekomponenten des &lt;br /&gt;
Systems. &lt;br /&gt;
&lt;br /&gt;
Beispiele&lt;br /&gt;
&lt;br /&gt;
Sicherung des Master Boot Records der ersten Festplatte&lt;br /&gt;
 root@zero:~# dd if=/dev/sda1 of=/tmp/mbr.img bs=512 count=1&lt;br /&gt;
&lt;br /&gt;
Einhängen des CD-ROM Laufwerks&lt;br /&gt;
 root@zero:~# mount /dev/cdrom /media/cdrom -t iso9660&lt;br /&gt;
&lt;br /&gt;
====Named Pipes====&lt;br /&gt;
Benannte Pipes (Named Pipes) können dagegen auch zur Kommunikation zwischen Prozessen eingesetzt werden, die nicht miteinander&lt;br /&gt;
verwandt sind und sich darüber hinaus auf unterschiedlichen Rechnern innerhalb eines Netzwerkes befinden dürfen. Sie sind &lt;br /&gt;
flexibler als anonyme Pipes und eignen sich für sogenannte Client-Server-Anwendungen (es lassen sich auch RPCs realisieren).&lt;br /&gt;
Benannte Pipes ermöglichen die gleichzeitige Kommunikation in beide Richtungen, das heißt, Daten können im Vollduplexbetrieb &lt;br /&gt;
zwischen den Prozessen ausgetauscht werden.&lt;br /&gt;
 &lt;br /&gt;
Erstelle Named Pipe mit Namen sux. Schreibe &amp;quot;Hallo Welt&amp;quot; in die Pipe sux und bleibe im Hintergrund. Gebe Inhalt der Pipe mit cat aus&lt;br /&gt;
 root@zero:~# mkfifo sux ; echo 'Hallo Welt' &amp;gt; sux &amp;amp; cat &amp;lt; sux&lt;br /&gt;
 [1] 12947&lt;br /&gt;
 Hallo Welt&lt;br /&gt;
 [1]+  Done                    echo 'Hallo Welt' &amp;gt; sux&lt;br /&gt;
&lt;br /&gt;
====Sockets====&lt;br /&gt;
Schnittstelle um es vernetzten Rechnern zu ermöglichen, miteinander zu kommunizieren.&lt;br /&gt;
&lt;br /&gt;
Sie ist in der Regel definiert durch IP-Adresse sowie Port. &lt;br /&gt;
&lt;br /&gt;
====Links====&lt;br /&gt;
Bei Links handelt es sich um symbolische Verweise auf andere Dateien&lt;br /&gt;
&lt;br /&gt;
'''Softlink'''&lt;br /&gt;
Ein Softlink ist eine Datei die nur auf den Namen einer anderen Datei verweist. Wenn die Originaldatei gelöscht wird, zeigt &lt;br /&gt;
der Link ins Leere. &lt;br /&gt;
&lt;br /&gt;
 ln -s datei softlink&lt;br /&gt;
&lt;br /&gt;
{| border=1 cellpadding=2&lt;br /&gt;
| Vorteile&lt;br /&gt;
| Symbolische Links können auch auf Verzeichnisse angelegt werden&amp;lt;br&amp;gt;Sie sind partitionsübergreifend&amp;lt;br&amp;gt;Man kann sie auf Dateien anlegen, die noch nicht existieren&lt;br /&gt;
|-&lt;br /&gt;
| Nachteile&lt;br /&gt;
| Wenn das Original gelöscht ist, ist kein Zugriff mehr möglich&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Beispiel&lt;br /&gt;
 root@zero:~# ln -s text verweis&lt;br /&gt;
 root@zero:~# ls -l verweis&lt;br /&gt;
 lrwxrwxrwx 1 root root 4 2009-06-18 15:48 verweis -&amp;gt; text&lt;br /&gt;
&lt;br /&gt;
'''Hardlinks'''&lt;br /&gt;
 ln datei hardlink&lt;br /&gt;
Eigentlich ist jede Datei ein Hardlink. Ein Hardlink ist ein Verzeichniseintrag,&lt;br /&gt;
der auf eine Inode verweist. Beim Erzeugen einer Datei verweist ein Eintrag auf&lt;br /&gt;
eine Inode. Man kann dann weitere Verweise erzeugen. Der Linkcounter wird&lt;br /&gt;
jeweils um 1 erhöht. Beim Löschen einer Datei wird er jeweils um 1 reduziert.&lt;br /&gt;
Wird der Wert 0 erreicht, ist die Datei gelöscht.&lt;br /&gt;
{| border=1 cellpadding=2&lt;br /&gt;
| Vorteile&lt;br /&gt;
|Zugriff auf die Daten, selbst wenn das Orginal gelöscht ist.&lt;br /&gt;
|-&lt;br /&gt;
|Nachteile&lt;br /&gt;
|Man kann keine Hardlinks auf Verzeichnisse anlegen.&lt;br /&gt;
Ist nur innerhalb einer Partion möglich.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Beispiel&lt;br /&gt;
 root@zero:~# touch 1&lt;br /&gt;
 root@zero:~# echo &amp;quot;text&amp;quot; &amp;gt; 1&lt;br /&gt;
 root@zero:~# ln 1 2&lt;br /&gt;
 root@zero:~# more 2&lt;br /&gt;
 text&lt;br /&gt;
 root@zero:~# echo &amp;quot;doch kein text&amp;quot; &amp;gt; 1&lt;br /&gt;
 root@zero:~# more 1&lt;br /&gt;
 doch kein text&lt;br /&gt;
 root@zero:~# more 2&lt;br /&gt;
 doch kein text&lt;br /&gt;
&lt;br /&gt;
Weitere Optionen:&lt;br /&gt;
 -b sichert Dateien, statt sie zu überschreiben &lt;br /&gt;
 -f Überschreibt bestehende, gleichnamige Dateien&lt;br /&gt;
 -i fragt vor dem Überschreiben nach Bestätigung&lt;br /&gt;
 -v ausführliche Meldungen&lt;br /&gt;
&lt;br /&gt;
==Prozesse==&lt;br /&gt;
===Was ist ein Prozess?===&lt;br /&gt;
Ein Prozess setzt sich aus zwei Teilen zusammen:&lt;br /&gt;
&lt;br /&gt;
1.Programm, das in den Hauptspeicher geladen wurde&lt;br /&gt;
&lt;br /&gt;
2.Prozessumgebung&lt;br /&gt;
&lt;br /&gt;
Unter einem Prozess versteht man ein Programm (binär), das in den Hauptspeicher&lt;br /&gt;
geladen wurde. Also nicht das Program selbst, das auf der Festplatte liegt ist der&lt;br /&gt;
Prozess, sondern es wird erst durch das Laden in den Hauptspeicher dazu.&lt;br /&gt;
Normalerweise liegt ein Programm als ausführbare Datei irgendwo auf der&lt;br /&gt;
Festplatte oder auf Diskette. Ob es sich bei dem Programm um eine binäre Datei&lt;br /&gt;
handelt, kann man mit dem Befehl '' file '' feststellen.&lt;br /&gt;
 &lt;br /&gt;
 root@zero:~# file /bin/mkdir&lt;br /&gt;
 /bin/mkdir: ELF 32-bit LSB executable, Intel 80386, version 1 (SYSV), dynamically linked (uses shared libs), for GNU/Linux 2.6.8, stripped&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Die Datei liegt im Maschinencode vor und kann in den Hauptspeicher geladen&lt;br /&gt;
werden. Sobald dies geschehen ist, kann der Rechner diesen Maschinencode&lt;br /&gt;
abarbeiten (ausführen).&lt;br /&gt;
&lt;br /&gt;
Da aber ein Programm nicht direkt auf die Hardware zugreifen soll, muss es vom&lt;br /&gt;
Betriebsystem kontrolliert werden. Das Betriebssystem liegt logisch gesehen&lt;br /&gt;
zwischen Hardware und Anwendung. Das Betriebssystem ordnet jedem Prozess&lt;br /&gt;
verschiedene Kenndaten zu, um die Prozesse verwalten zu können. Alle&lt;br /&gt;
Kenndaten, die einem Prozess zugeordnet sind, nennt man die&lt;br /&gt;
Prozessumgebung.Wenn man in der Shell ein Kommando eingibt, wird ein Prozess&lt;br /&gt;
kreiert. Natürlich ist die Shell selbst auch ein Prozess. Ein Prozess kann aber&lt;br /&gt;
genauso gut ein Serverprozess (Dienst) sein, z.B. Apache.&lt;br /&gt;
Ein wesentliches Merkmal eines Prozesses ist die Prozesskommunikation. Über im&lt;br /&gt;
Betriebssystem implementierte Methoden ist es möglich, dass verschiedene&lt;br /&gt;
Prozesse Signale und Daten untereinander austauschen können.&lt;br /&gt;
Dadurch wird auch dem Benutzer ermöglicht, einem Prozeß bestimmte Signale zu&lt;br /&gt;
senden bzw. auf den Status eines Prozesses Einfluss zu nehmen.&lt;br /&gt;
&lt;br /&gt;
===Prozesstabelle (Anzeige mit ps)===&lt;br /&gt;
Da zu jedem Prozess Kenndaten geführt werden, müssen diese auch irgendwo&lt;br /&gt;
festgehalten werden. Das geschieht in der sogenannten Prozesstabelle.&lt;br /&gt;
&lt;br /&gt;
Kenndaten der Prozesse (Auswahl):&lt;br /&gt;
* F Flags (z.B. ausgelagert; Systemprozess; Trace,...)&lt;br /&gt;
* UID Nutzer, mit dessen Rechten der Prozess ausgeführt wird&lt;br /&gt;
* PID Prozess - ID. Diese Nummer gibt eine eindeutige Prozess - Nummer&lt;br /&gt;
an. Sie wird vom System automatisch beim Starten des Prozesses&lt;br /&gt;
vergeben und ist für die Laufzeit eindeutig.&lt;br /&gt;
* PPID Prozessnumer der Eltern-Prozesses&lt;br /&gt;
* PRI Priorität eines Prozesses; je niedriger der Wert ist, desto besser&lt;br /&gt;
* NI ist der Nicewert des Prozesses; Nice erniedrigt den Grundwert&lt;br /&gt;
der Priorität des Prozesses und gibt damit Prozessorzeit für andere&lt;br /&gt;
Prozesse frei.&lt;br /&gt;
* SIZE Speichergröße des Prozesses inklusive Stack (eine Art Zwischenspeicher)&lt;br /&gt;
* RSS Verbrauch an physischen Speicher&lt;br /&gt;
* WCHAN ist der Name der Kernerlfunktion, in der der Prozess schläft&lt;br /&gt;
* STAT Status des Prozesses&lt;br /&gt;
R läuft       S schlafend     D nicht störbarer Schlaf&lt;br /&gt;
T angehalten  Z Zombie        W der Prozess belegt keine Seiten&lt;br /&gt;
* TIME Bisland benötigte Prozessorzeit&lt;br /&gt;
* SIZE ist die Größe von Text, Daten und Stack&lt;br /&gt;
* TTY die Nummer des kontrollierenden Teminal; wenn hier ein ? steht,&lt;br /&gt;
handelt es sich um einen Dämon oder Serverprozess.&lt;br /&gt;
* COMMAND Angabe des Prozesses selbst. Dies ist meist der Programmname.&lt;br /&gt;
&lt;br /&gt;
Weiteres&lt;br /&gt;
* GID Gruppe, unter der der Prozess läuft&lt;br /&gt;
* Verweis auf das aktuellen Arbeitsverzeichnis&lt;br /&gt;
* Um mit relativen Pfadangaben arbeiten zu können braucht man diesen Eintrag&lt;br /&gt;
* Tabelle mit Verweisen auf aktuell geöffnete Dateien&lt;br /&gt;
* 3 sind automatisch geöffnet Standardeingabe, Standardausgabe und&lt;br /&gt;
Standardfehlerkanal&lt;br /&gt;
&lt;br /&gt;
Beispiel&lt;br /&gt;
 root@zero:~# ps -l&lt;br /&gt;
 F S   UID   PID  PPID  C PRI  NI ADDR SZ WCHAN  TTY          TIME CMD&lt;br /&gt;
 4 R     0 18639 18631  0  80   0 -  1080 -      pts/0    00:00:00 bash&lt;br /&gt;
 0 R     0 25904 18639  0  80   0 -   635 -      pts/0    00:00:00 ps&lt;br /&gt;
&lt;br /&gt;
===Eltern und Kinder===&lt;br /&gt;
Jeder Prozess kann weitere Prozesse erzeugen. Die erzeugten Prozesse bezeichnet&lt;br /&gt;
man als Kindprozesse. Jeder Kindprozess weiß anhand der PID, woher er stammt.&lt;br /&gt;
&lt;br /&gt;
Alle Prozesse sind von einem anderen Prozess gestartet worden, mit Ausnahme&lt;br /&gt;
des Pseudoprozesses (noch im Kernel beim Starten erzeugter Prozess). Dieser hat&lt;br /&gt;
die Prozessnummer 0. Er hat die Aufgabe, den Init Prozess ( /sbin/init die Nummer&lt;br /&gt;
1) zu starten, der in System V alle anderen Prozesse direkt oder über seine Kind-&lt;br /&gt;
prozesse startet. (init wird konfiguriert durch die /etc/inittab)&lt;br /&gt;
&lt;br /&gt;
Es gibt zwei Arten wie ein Prozess gestartet werden kann:&lt;br /&gt;
&lt;br /&gt;
# Fork und Exec: Prozessumgebung wird dupliziert, der neue Prozess bekommt eine eigene neue PID&lt;br /&gt;
# Exec: Alter Prozess wird durch neuen Prozess überladen (geht mit dem shell-buildin exec)&lt;br /&gt;
&lt;br /&gt;
'''Rechte auf Objekte UID GID'''&lt;br /&gt;
Ob ein Prozess auf eine Datei zugreifen kann, entscheidet der Kernel anhand der&lt;br /&gt;
Zugriffssrechte, die auf der Datei gesetzt sind. Er checkt anhand der UID und GID&lt;br /&gt;
des Prozesses, ob es erlaubt ist. Mit dieser Technik wird letztendlich geprüft, was&lt;br /&gt;
ein User darf, und was nicht.&lt;br /&gt;
&lt;br /&gt;
===Rechenzeit und Priorität===&lt;br /&gt;
Da auch bei Prozessen eine Gerechtigkeit herschen muss, muss eine Instanz&lt;br /&gt;
darüber entscheiden wie lange ein Prozess Rechenzeit verbrauchen darf.&lt;br /&gt;
Folgende Kenndaten werden dazu benötigt&lt;br /&gt;
* clocktick = Zeiteinheit&lt;br /&gt;
* n = Faktor über den Kernel einstellbar&lt;br /&gt;
* slice = n &amp;lt;nowiki&amp;gt;*&amp;lt;/nowiki&amp;gt; clocktick&lt;br /&gt;
* agingtime = weitere Zeiteinheit über den Kernel einstellbar&lt;br /&gt;
&lt;br /&gt;
Es wird davon ausgegangen das der Prozess mit der niedrigsten Priorität gerade&lt;br /&gt;
rechnet. Pro clocktick erhöht sich die Priorität dieses Prozesses um eins.&lt;br /&gt;
&lt;br /&gt;
Jetzt können 3 Situationen eintreten die alle dazu führen das der Scheduler&lt;br /&gt;
aufgerufen wird.&lt;br /&gt;
&lt;br /&gt;
# Prozess blockiert wegen einer Ausgabe oder Eingabe.&lt;br /&gt;
# Gibt Rechenzeit freiwillig ab.&lt;br /&gt;
# Der Slice endet.&lt;br /&gt;
&lt;br /&gt;
Der Aufruf des Schedulers bewirkt das der Prozess mit der niedrigsten Priorität&lt;br /&gt;
gescheduled wird, er also nun rechnen darf. Nach Ablauf der agingtime werden&lt;br /&gt;
nun die Prozesse &amp;quot;gealtert&amp;quot;. Das geschieht nach folgender Formel&lt;br /&gt;
&lt;br /&gt;
Neue Priorität = Alte Priorität / 2 + Nicewert&lt;br /&gt;
&lt;br /&gt;
Der User hat die Möglichkeit, über den sogenannten Nicefaktor den Grundwert für&lt;br /&gt;
einen Prozess zu senken. Der Prozess braucht dann länger für seine Abarbeitung.&lt;br /&gt;
Er verhält sich somit netter zu den anderen Prozessen. Normale User können nur&lt;br /&gt;
netter werden, der Systemverwalter kann auch nicht netter (gemeiner) werden. Der&lt;br /&gt;
Bereich liegt zwischen 19 (sehr nett) bis 0 (weniger nett) für die User, und 19 bis&lt;br /&gt;
-20 für root.&lt;br /&gt;
&lt;br /&gt;
[[Image:pri.png]]&lt;br /&gt;
&lt;br /&gt;
'''Signale'''&lt;br /&gt;
&lt;br /&gt;
Mit den Kommando kill und killall kann man Prozessen Signale schicken&lt;br /&gt;
&lt;br /&gt;
 kill -Signalnummer PID &lt;br /&gt;
&lt;br /&gt;
Signalnummer&lt;br /&gt;
{| border=1 cellpadding=2&lt;br /&gt;
!Signalname&lt;br /&gt;
!Wert&lt;br /&gt;
!Aktion&lt;br /&gt;
|-&lt;br /&gt;
|SIGHUP&lt;br /&gt;
|1&lt;br /&gt;
|Neuinitialisierung eines Prozesses&lt;br /&gt;
|-&lt;br /&gt;
|SIGINT&lt;br /&gt;
|2&lt;br /&gt;
|Interrupt-Signal von der Tastatur (STRG+c)&lt;br /&gt;
|-&lt;br /&gt;
|SIGQUIT&lt;br /&gt;
|3&lt;br /&gt;
|Interrupt-Signal von der Tastatur (STRG+c) mit Dump&lt;br /&gt;
|-&lt;br /&gt;
|SIGKILL&lt;br /&gt;
|9&lt;br /&gt;
|unwiderrufliches Beendigungssignal (Töten)&lt;br /&gt;
|-&lt;br /&gt;
|SIGSEGV&lt;br /&gt;
|11&lt;br /&gt;
|Ungültige Speicherreferenz (bedeutet oft auf defekten Speicher)&lt;br /&gt;
|-&lt;br /&gt;
|SIGTERM &lt;br /&gt;
|15&lt;br /&gt;
|Beendigungssignal (geöffnete Dateien werden geschlossen)&lt;br /&gt;
|-&lt;br /&gt;
|SIGCONT &lt;br /&gt;
|18&lt;br /&gt;
|Weiterfahren, wenn gestoppt&lt;br /&gt;
|-&lt;br /&gt;
|SIGSTOP&lt;br /&gt;
|19&lt;br /&gt;
|Prozessstop&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Beispiel&lt;br /&gt;
 root@zero:~# kill -1 7562&lt;br /&gt;
&lt;br /&gt;
===Programme im Zusammenhang mit Prozessen===&lt;br /&gt;
* ps: Zeigt die Prozesse mit ihrem Status an&lt;br /&gt;
 root@zero:~# ps&lt;br /&gt;
  PID TTY          TIME CMD&lt;br /&gt;
 14134 pts/0    00:00:00 bash&lt;br /&gt;
 14149 pts/0    00:00:00 ps&lt;br /&gt;
&lt;br /&gt;
 root@zero:~# ps -elf | grep apache&lt;br /&gt;
 1 S root      5738     1  0  80   0 -  5461 select Jun16 ?        00:00:00 /usr/sbin/apache2 -k start&lt;br /&gt;
 5 S www-data  5739  5738  0  80   0 -  5581 inet_c Jun16 ?        00:00:00 /usr/sbin/apache2 -k start&lt;br /&gt;
 5 S www-data  5742  5738  0  80   0 -  5461 inet_c Jun16 ?        00:00:00 /usr/sbin/apache2 -k start&lt;br /&gt;
 5 S www-data  5743  5738  0  80   0 -  5461 inet_c Jun16 ?        00:00:00 /usr/sbin/apache2 -k start&lt;br /&gt;
 5 S www-data  5745  5738  0  80   0 -  5461 inet_c Jun16 ?        00:00:00 /usr/sbin/apache2 -k start&lt;br /&gt;
 5 S www-data  5746  5738  0  80   0 -  5461 inet_c Jun16 ?        00:00:00 /usr/sbin/apache2 -k start&lt;br /&gt;
 0 S root     14153 14134  0  80   0 -   837 pipe_w 16:59 pts/0    00:00:00 grep apache&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* nice: Lässt ein Programm mit verändertem Grundwert der Priorität laufen&lt;br /&gt;
 root@zero:~# nice&lt;br /&gt;
 0&lt;br /&gt;
 root@zero:~# nice -n 9 bash&lt;br /&gt;
 root@zero:~# nice&lt;br /&gt;
 9&lt;br /&gt;
 root@zero:~#&lt;br /&gt;
&lt;br /&gt;
* renice: Ändert den Grundwert der Priorität eines laufenden Prozesses&lt;br /&gt;
 root@zero:~# renice 10 5742&lt;br /&gt;
 5742: Alte Priorität: 0, neue Priorität: 10&lt;br /&gt;
&lt;br /&gt;
* top: Zeigt die Prozesse mit ihrem Status an (Abbrechen mit q)&lt;br /&gt;
 root@zero:~# top&lt;br /&gt;
&lt;br /&gt;
* pstree: Zeigt die Prozesse als Baumstruktur&lt;br /&gt;
 root@zero:~# pstree&lt;br /&gt;
 init─┬─NetworkManager&lt;br /&gt;
      ├─acpid&lt;br /&gt;
      ├─apache2───5*[apache2]&lt;br /&gt;
      ├─atd&lt;br /&gt;
      ├─bluetoothd&lt;br /&gt;
      ├─console-kit-dae───63*[{console-kit-dae}]&lt;br /&gt;
      ├─cron&lt;br /&gt;
      ├─cupsd&lt;br /&gt;
      ├─dbus-daemon&lt;br /&gt;
      ├─dd&lt;br /&gt;
      ├─gdm───gdm─┬─Xorg&lt;br /&gt;
      │           └─gdmgreeter&lt;br /&gt;
      ├─6*[getty]&lt;br /&gt;
      ├─hald───hald-runner─┬─hald-addon-acpi&lt;br /&gt;
      │                    ├─hald-addon-inpu&lt;br /&gt;
      │                    └─2*[hald-addon-stor]&lt;br /&gt;
      ├─klogd&lt;br /&gt;
      ├─nm-system-setti&lt;br /&gt;
      ├─nmbd&lt;br /&gt;
      ├─nscd───11*[{nscd}]&lt;br /&gt;
      ├─portmap&lt;br /&gt;
      ├─rpc.statd&lt;br /&gt;
      ├─slapd───2*[{slapd}]&lt;br /&gt;
      ├─smbd───smbd&lt;br /&gt;
      ├─sshd───sshd───bash───bash───pstree&lt;br /&gt;
      ├─syslogd&lt;br /&gt;
      ├─system-tools-ba&lt;br /&gt;
      ├─udevd&lt;br /&gt;
      ├─winbindd─┬─winbindd───winbindd&lt;br /&gt;
      │          └─3*[winbindd]&lt;br /&gt;
      └─wpa_supplicant&lt;br /&gt;
&lt;br /&gt;
===Jobs===&lt;br /&gt;
Unter einem Job versteht man ein Programm, welches man von der Shell gelöst&lt;br /&gt;
hat. D. h. man kann ganz normal weiter arbeiten und der Job verrichtet seinen&lt;br /&gt;
Dienst im Hintergrund. Man kann jederzeit zu diesem Job wieder Kontakt&lt;br /&gt;
aufnehmen.&lt;br /&gt;
&lt;br /&gt;
Ein Job kann auf 2 Arten gestarten werden:&lt;br /&gt;
&lt;br /&gt;
# Durch Anhängen des &amp;amp; Zeichens beim Programmstart&lt;br /&gt;
 root@zero:~# tail -f /var/log/messages &amp;amp;&lt;br /&gt;
 Jun 19 06:59:31 zero -- MARK --&lt;br /&gt;
 Jun 19 07:19:31 zero -- MARK --&lt;br /&gt;
 Jun 19 07:39:32 zero -- MARK --&lt;br /&gt;
 Jun 19 07:44:57 zero syslogd 1.5.0#5ubuntu3: restart.&lt;br /&gt;
 Jun 19 07:59:32 zero -- MARK --&lt;br /&gt;
 Jun 19 08:19:32 zero -- MARK --&lt;br /&gt;
 Jun 19 08:39:32 zero -- MARK --&lt;br /&gt;
 Jun 19 08:59:32 zero -- MARK --&lt;br /&gt;
 Jun 19 09:19:33 zero -- MARK --&lt;br /&gt;
 Jun 19 09:39:33 zero -- MARK --&lt;br /&gt;
 [3] 27421&lt;br /&gt;
&lt;br /&gt;
# Durch Stoppen des Prozesses durch Drücken von Strg-Z und in den Hintergrund schicken mit %n (n ist die Jobnummer)&lt;br /&gt;
 root@zero:~# watch cat /proc/cpuinfo&lt;br /&gt;
 Strg-Z&lt;br /&gt;
 [4]+  Stopped                 watch cat /proc/cpuinfo&lt;br /&gt;
 root@zero:~# bg %4&lt;br /&gt;
 [4]+ watch cat /proc/cpuinfo &amp;amp;&lt;br /&gt;
&lt;br /&gt;
Anweisungen im Zusammenhang mit Jobs (n ist die Jobnummer)&lt;br /&gt;
* bg %n : Einen Job in den Hintergrund stellen (wie oben)&lt;br /&gt;
* fg %n : Einen Job in den Vordergrund holen&lt;br /&gt;
 root@zero:~# fg %4&lt;br /&gt;
 watch cat /proc/cpuinfo&lt;br /&gt;
&lt;br /&gt;
* jobs : Aktive Jobs ausgeben&lt;br /&gt;
&lt;br /&gt;
 root@zero:~# jobs&lt;br /&gt;
 [1]   Running                 tail -f /var/log/syslog &amp;amp;&lt;br /&gt;
 [2]   Running                 tail -f /var/log/syslog &amp;amp;&lt;br /&gt;
 [3]-  Running                 tail -f /var/log/messages &amp;amp;&lt;br /&gt;
 [4]+  Stopped                 watch cat /proc/cpuinfo&lt;br /&gt;
&lt;br /&gt;
* Strg-Z : Einen Vordergrund-Job vorübergehend anhalten&lt;br /&gt;
* kill -STOP %n : Unterbricht Job im Hintergrund&lt;br /&gt;
 root@zero:~# kill -STOP %1&lt;br /&gt;
 root@zero:~# jobs&lt;br /&gt;
 [1]+  '''Stopped'''                 tail -f /var/log/syslog&lt;br /&gt;
 [2]   Running                 tail -f /var/log/syslog &amp;amp;&lt;br /&gt;
 [3]   Running                 tail -f /var/log/messages &amp;amp;&lt;br /&gt;
 [4]-  Stopped                 watch cat /proc/cpuinfo&lt;br /&gt;
* kill -CONT %n : Setzt den unterbrochenen Job im Hintergrund fort&lt;br /&gt;
root@zero:~# kill -CONT %1&lt;br /&gt;
root@zero:~# jobs&lt;br /&gt;
 [1]+  '''Running'''                 tail -f /var/log/syslog &amp;amp;&lt;br /&gt;
 [2]   Running                 tail -f /var/log/syslog &amp;amp;&lt;br /&gt;
 [3]   Running                 tail -f /var/log/messages &amp;amp;&lt;br /&gt;
 [4]-  Stopped                 watch cat /proc/cpuinfo&lt;br /&gt;
* kill -KILL %n : Tötet Job im Hintergrund&lt;br /&gt;
 root@zero:~# kill -KILL %1&lt;br /&gt;
 root@zero:~# jobs&lt;br /&gt;
 [1]+  '''Killed'''                  tail -f /var/log/syslog&lt;br /&gt;
 [2]   Running                 tail -f /var/log/syslog &amp;amp;&lt;br /&gt;
 [3]   Running                 tail -f /var/log/messages &amp;amp;&lt;br /&gt;
 [4]-  Stopped                 watch cat /proc/cpuinfo&lt;br /&gt;
 root@zero:~# jobs&lt;br /&gt;
 [2]   Running                 tail -f /var/log/syslog &amp;amp;&lt;br /&gt;
 [3]-  Running                 tail -f /var/log/messages &amp;amp;&lt;br /&gt;
 [4]+  Stopped                 watch cat /proc/cpuinfo&lt;br /&gt;
&lt;br /&gt;
Bedingungen, die zu Jobausführung eingehalten werden sollen:&lt;br /&gt;
* Der Job soll nicht auf den Bildschirm schreiben (Standardausgabe +Standardfehlerkanal).&lt;br /&gt;
* Er soll keine Eingaben vom Benutzer erwarten.&lt;br /&gt;
&lt;br /&gt;
==Suchen von Dateien==&lt;br /&gt;
===find===&lt;br /&gt;
 find ab_wo_wird_gesucht was_wird_gesucht aktion&lt;br /&gt;
 find [Pfad] [Bedingung] [Aktion]&lt;br /&gt;
&lt;br /&gt;
====Nach Namen====&lt;br /&gt;
 find [Pfad] '''-name''' [Name]&lt;br /&gt;
 &lt;br /&gt;
Finde alle Dateien mit Namen test ab dem Verzeichnis /home und gebe diese Zeilenweise aus&lt;br /&gt;
 root@zero:~# find /home -name test -print&lt;br /&gt;
 /home/xinux/test&lt;br /&gt;
 /home/test&lt;br /&gt;
&lt;br /&gt;
Wie oben, jedoch mit Namensanfang test&lt;br /&gt;
 root@zero:/home/xinux# find /home -name 'test*'&lt;br /&gt;
 /home/xinux/testdatei&lt;br /&gt;
 /home/xinux/test&lt;br /&gt;
 /home/test&lt;br /&gt;
&lt;br /&gt;
====Nach Benutzer(Eigentümer)====&lt;br /&gt;
 root@zero:/tmp# find /tmp/ '''-user''' xinux&lt;br /&gt;
 /tmp/datei&lt;br /&gt;
&lt;br /&gt;
====Nach Gruppe====&lt;br /&gt;
 root@zero:/tmp# find /tmp/ '''-group''' hacker&lt;br /&gt;
 /tmp/datei3&lt;br /&gt;
 /tmp/datei2&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
====Nach Typ====&lt;br /&gt;
Es wird nach Dateien anhand Ihrer Art gesucht:&lt;br /&gt;
 find [Pfad] '''-type''' [Typ] &lt;br /&gt;
Typ:&lt;br /&gt;
* f: Normale Dateien&lt;br /&gt;
 root@zero:~# find /tmp/ -type f&lt;br /&gt;
 /tmp/mbr.img&lt;br /&gt;
 /tmp/datei&lt;br /&gt;
 /tmp/zeugs&lt;br /&gt;
 /tmp/.X0-lock&lt;br /&gt;
* d: Verzeichnisse&lt;br /&gt;
 root@zero:~# find /var/log -type d&lt;br /&gt;
 /var/log&lt;br /&gt;
 /var/log/apache2&lt;br /&gt;
 /var/log/unattended-upgrades&lt;br /&gt;
 /var/log/apparmor&lt;br /&gt;
 /var/log/ConsoleKit&lt;br /&gt;
 /var/log/dist-upgrade&lt;br /&gt;
 /var/log/dist-upgrade/20090526-1052&lt;br /&gt;
 /var/log/cups&lt;br /&gt;
 /var/log/apt&lt;br /&gt;
 /var/log/fsck&lt;br /&gt;
 /var/log/samba&lt;br /&gt;
 /var/log/samba/cores&lt;br /&gt;
 /var/log/samba/cores/smbd&lt;br /&gt;
 /var/log/samba/cores/nmbd&lt;br /&gt;
 /var/log/samba/cores/winbindd&lt;br /&gt;
 /var/log/installer&lt;br /&gt;
 /var/log/gdm&lt;br /&gt;
 /var/log/news&lt;br /&gt;
* c: Char Devices (Zeichenorientierte Gerätedatei)&lt;br /&gt;
 root@zero:~# find / -type c&lt;br /&gt;
 /lib/udev/devices/kmem&lt;br /&gt;
 /lib/udev/devices/null&lt;br /&gt;
 /lib/udev/devices/console&lt;br /&gt;
 /lib/udev/devices/ppp&lt;br /&gt;
 /lib/udev/devices/net/tun&lt;br /&gt;
* b: Block Devices (Blockorientierte Gerätedatei)&lt;br /&gt;
* p: Benannte Pipe&lt;br /&gt;
* l: Links&lt;br /&gt;
* s: Sockets&lt;br /&gt;
&lt;br /&gt;
====Nach Modifikation====&lt;br /&gt;
Listet alle Dateien in /etc auf, die innerhalb von zwei Tagen modifiziert wurden&lt;br /&gt;
 root@zero:/var/log# find /etc/ -mtime 2 -print&lt;br /&gt;
 /etc/apache2&lt;br /&gt;
 /etc/apache2/mods-available&lt;br /&gt;
 /etc/apache2/conf.d&lt;br /&gt;
 /etc/apache2/sites-available&lt;br /&gt;
 /etc/bash_completion.d&lt;br /&gt;
 /etc/blkid.tab.old&lt;br /&gt;
 /etc/firefox-3.0/profile&lt;br /&gt;
 /etc/firefox-3.0/profile/chrome&lt;br /&gt;
 /etc/firefox-3.0/pref&lt;br /&gt;
 /etc/profile.d&lt;br /&gt;
 /etc/ufw/applications.d&lt;br /&gt;
 /etc/logrotate.d&lt;br /&gt;
 /etc/xulrunner-1.9&lt;br /&gt;
 /etc/blkid.tab&lt;br /&gt;
 /etc/cron.daily&lt;br /&gt;
 /etc/alternatives&lt;br /&gt;
 /etc/alternatives/x-www-browser&lt;br /&gt;
 /etc/alternatives/xulrunner&lt;br /&gt;
 /etc/gre.d&lt;br /&gt;
 /etc/hal/fdi/policy&lt;br /&gt;
 /etc/dbus-1/system.d&lt;br /&gt;
 /etc/udev/rules.d&lt;br /&gt;
&lt;br /&gt;
====Nach Größe====&lt;br /&gt;
Finde Dateien in /tmp, die größer als 100 MByte sind&lt;br /&gt;
 root@zero:/tmp# find /tmp/ -size +100M&lt;br /&gt;
 /tmp/datei&lt;br /&gt;
&lt;br /&gt;
Finde Dateien in /tmp, die kleiner als 100 KByte sind&lt;br /&gt;
 root@zero:/tmp# find /tmp/ -size -100k&lt;br /&gt;
 /tmp/&lt;br /&gt;
 /tmp/datei3&lt;br /&gt;
 /tmp/backup &lt;br /&gt;
 /tmp/datei2&lt;br /&gt;
 /tmp/.winbindd &lt;br /&gt;
 /tmp/.winbindd/pipe&lt;br /&gt;
 /tmp/mbr.img&lt;br /&gt;
 /tmp/zeugs&lt;br /&gt;
 /tmp/.ICE-unix&lt;br /&gt;
 /tmp/.X0-lock&lt;br /&gt;
 /tmp/datei1&lt;br /&gt;
 /tmp/.X11-unix&lt;br /&gt;
 /tmp/.X11-unix/X0&lt;br /&gt;
 /tmp/pulse-PKdhtXMmr18n&lt;br /&gt;
&lt;br /&gt;
====Nach Berechtigungen====&lt;br /&gt;
Finde Dateien in Home mit der Berechtigung 777 (-rwxrwxrwx)&lt;br /&gt;
 root@zero:/var# find /home/ -perm 777&lt;br /&gt;
 /home/samba&lt;br /&gt;
 /home/xinux/Examples&lt;br /&gt;
 /home/xinux/.pulse/1f0763ee4cf4c7e1d3c07fd149dda37b:runtime&lt;br /&gt;
 /home/test/Examples&lt;br /&gt;
&lt;br /&gt;
===locate===&lt;br /&gt;
Locate arbeitet über einen Index, der erstellt und aktualisiert werden muss. Aus diesem Grund kann locate teilweise nicht &lt;br /&gt;
akutell sein. Es ist immer schneller als find und es durchsucht immer das ganze Dateisystem. &lt;br /&gt;
 locate [Dateiname]&lt;br /&gt;
 &lt;br /&gt;
Lokalisiere die Datei wvdial.conf. Anmerkung: Der Stern wird beim Suchen automatisch hinzugefügt. Entspricht also&lt;br /&gt;
wvidal.conf*&lt;br /&gt;
 root@zero:~# locate wvdial.conf&lt;br /&gt;
 /etc/wvdial.conf&lt;br /&gt;
 /usr/share/man/man5/wvdial.conf.5.gz&lt;br /&gt;
 /var/lib/dpkg/info/wvdial.conffiles&lt;br /&gt;
 /var/lib/dpkg/info/wvdial.config&lt;br /&gt;
&lt;br /&gt;
Lokalisiere die Datei wvdial.conf und nur diese&lt;br /&gt;
 root@zero:~# locate -b '\wvdial.conf'&lt;br /&gt;
 /etc/wvdial.conf&lt;br /&gt;
&lt;br /&gt;
Aktualisieren des Indexes&lt;br /&gt;
 root@zero:~# updatedb&lt;br /&gt;
&lt;br /&gt;
==Wie wird ein Kommando lokalisiert==&lt;br /&gt;
Wenn die Shell alle Ersetzungen in der Kommandozeile vorgenommen und alle Umleitungen vorbereitet hat, ist der Zeitpunkt &lt;br /&gt;
gekommen, auf den der Anwender die ganze Zeit gewartet hat. Die Shell versucht das Kommando auszuführen. Dazu muss sie &lt;br /&gt;
es aber erst lokalisieren. Das erste passende Kommando wird ausgeführt.&lt;br /&gt;
&lt;br /&gt;
Als Kommandoname wird immer das erste Wort eines einfachen Kommandos erkannt. Ein Kommandoname kann mit Pfadnamen in &lt;br /&gt;
einem Verzeichnis (absolut oder relativ) angegeben werden. Die Shell erkennt dies an (mindestens) einem Slash `/' &lt;br /&gt;
im Kommandonamen. Wenn kein Verzeichnis angegeben ist, versucht die Shell selbst, das Kommando zu finden. Dazu wird &lt;br /&gt;
der Kommandoname zuerst in der Hashtabelle gesucht, dann wird er mit den Synonymen, mit den Scriptfunktionen und &lt;br /&gt;
schließlich mit den Shellfunktionen verglichen. &lt;br /&gt;
&lt;br /&gt;
Wird auf diese Weise kein Programm dieses Namens gefunden, werden alle in der PATH-Umgebungsvariablen aufgeführten &lt;br /&gt;
Verzeichnisse nach einer ausführbaren Datei dieses Namens durchsucht. Wird auch hier kein passendes Kommando gefunden, &lt;br /&gt;
gibt die Shell eine Fehlermeldung aus.&lt;br /&gt;
&lt;br /&gt;
===which und type===&lt;br /&gt;
====which====&lt;br /&gt;
which gibt die vollen Pfadnamen der Dateien aus, die bei Benutzung des angegebenen Befehls ausgeführt werden würden.&lt;br /&gt;
&lt;br /&gt;
 which [-a] Dateiname &lt;br /&gt;
&lt;br /&gt;
Optionen:&lt;br /&gt;
&lt;br /&gt;
* -a : Alle Treffer ausgeben, nicht nur den ersten&lt;br /&gt;
* --skip-dot : Verzeichnisse, die mit einem Punkt beginnen, auslassen&lt;br /&gt;
&lt;br /&gt;
Beispiel&lt;br /&gt;
 root@zero:~# which startx&lt;br /&gt;
 /usr/bin/startx&lt;br /&gt;
&lt;br /&gt;
====type====&lt;br /&gt;
Anzeigen der absoluten Pfadnamen von Befehlen, und ob sich diese Befehle in der Hash-Tabelle der aktuellen&lt;br /&gt;
Shell befinden.&lt;br /&gt;
&lt;br /&gt;
 type [Optionen] Befehle&lt;br /&gt;
&lt;br /&gt;
Beispiel&lt;br /&gt;
 root@zero:~# type ls&lt;br /&gt;
 ls is aliased to `ls --color=auto'&lt;br /&gt;
&lt;br /&gt;
Optionen:&lt;br /&gt;
&lt;br /&gt;
* -a : Alle vorkommenden Befehle werden ausgegeben, nicht nur das, welches aufgerufen werden würde&lt;br /&gt;
 root@zero:~# type '''-a''' ls&lt;br /&gt;
 ls is aliased to `ls --color=auto'&lt;br /&gt;
 ls is /bin/ls&lt;br /&gt;
&lt;br /&gt;
* -p : Anzeigen des Eintrags von Befehl in der Hash-Tabelle. Dieser Wert kann sich vom ersten Auftreten des Befehls in PATH&lt;br /&gt;
unterscheiden&lt;br /&gt;
 root@zero:~# type '''-p''' apache2&lt;br /&gt;
 /usr/sbin/apache2&lt;br /&gt;
&lt;br /&gt;
* -t : Anzeigen, ob Befehl ein Aliasname, ein Schlüsselwort, eine Funktion, ein eingebauter Befehl oder eine Datei ist&lt;br /&gt;
 root@zero:~# type '''-t''' apache2&lt;br /&gt;
 file&lt;/div&gt;</summary>
		<author><name>192.168.178.46</name></author>
	</entry>
</feed>