Linux Basics
Inhalt
Eine kurze Einführung in Linux mit Aufbau, Befehlen und einigen Grundkonzepten.
Organisation
Linux ist hierarchisch organisiert. Das Dateisystem fängt hier bei /
, dem sogenannten Root-Verzeichnis, an.1 Darunter kommen dann folgende Ordner:
Ordner | Inhalt |
---|---|
/bin/ | Programme, die eher von Benutzern genutzt werden |
/boot/ | Zum Hochfahren (Booten) des Rechners benötigten Dateien |
/dev/ | Erkannte Geräte (Festplatten, Maus, Tastatur, USB Sticks) |
/etc/ | Systemweite Konfigurationsdateien |
/home/ | Sämtliche Benutzerordner (z.B. /home/thinegen/ ) |
/lib/ , /lib64/ | Systembibliotheken, die von Programmen genutzt werden |
/mnt/ | Eingehängte Laufwerke (manchmal auch unter /media/ ) |
/opt/ | Nachträglich installierte Anwendungen |
/proc/ | Prozessinformationen |
/root/ | /root/ ist der Nutzerordner des root Nutzers |
/run/ | Daten, die während der Laufzeit eines Programms benötigt werden |
/sbin/ | Programme, die eher von Systemadministratoren benutzt werden |
/srv/ | Dateien, die für den Betrieb eines installierten Servers benötigt werden |
/sys/ | Systeminformationen |
/tmp/ | Temporäre Dateien, die beim Neustart gelöscht werden |
/usr/ | Anwendungssoftware, unterteilt in /usr/bin/ und /usr/sbin/ für Programme bzw. /usr/lib/ für benötigte Bibliotheken |
/var/ | Logs, Caches, Mail, etc. |
In Linux gibt es den Grundsatz
Everything is a file, Alles ist eine Datei
Deswegen können auch Informationen wie die aktuelle Prozessorauslastung aus einer Datei ausgelesen werden (z.B. gibt cat /sys/block/sda/size
die Größe der Festplatte sda
aus).
Datei- und Ordnerreferenzierung
Um einen Ordner oder eine Datei zu referenzieren gibt es zwei Möglichkeiten: Man kann den kompletten Pfad referenzieren: /tmp/Datei
. Das ist der sogenannte absolute Pfad. Er startet immer mit einem Slash (/
). Die andere Möglichkeit ist der relative Pfad: Hier wird eine Datei vom ausgehenden Pfad referenziert. Ist man in /tmp/
kann man Datei
einfach mit Datei
referenzieren.
Bei relativen Pfaden gibt es Besonderheiten: Ein Punkt referenziert das aktuelle Verzeichnis, zwei Punkte das darüberliegende. Wenn man sich also in /tmp/
befindet, zeigt .
auf /tmp/
und ..
auf /
. Eine weitere Besonderheit ist das Home-Verzeichnis des aktuellen Nutzers. Dieses kann mit ~
referenziert werden. Bei absoluten Pfaden können ebenfalls Punkte, aber nicht die Tilde verwendet werden (/usr/./sbin/../../tmp/Datei
zeigt also ebenfalls auf Datei
).
Berechtigungen
Dateien und Ordner haben Einstellungen zur Berechtigung. Diese kann man sich mit ls -l
(s. unten) anzeigen lassen. Die Ausgabe könnte so aussehen wie:
|
|
total
beschreibt die Anzahl der belegten Blöcke2 im Dateisystem. Die anderen Felder ergeben sich wie folgt:
|
|
3 Das d
am Anfang zeigt an, das es sich um ein Verzeichnis (directory) handelt. Die Größe eines Verzeichnisses ist aber nicht die Summe aller enthaltenen Dateien und Verzeichnisse, sondern nur die Größe der Information über das Verzeichnis selbst (z.B. Datum der letzten Änderung o.ä.).
Es gibt drei Rechte:
- das Leserecht:
r
(read) - das Schreibrecht:
w
(write) - das Ausführungsrecht:
x
(execute)- für Verzeichnisse: Recht das Verzeichnis zu betreten
Um die Rechte auszulesen teilt man sie in Dreier-Gruppen auf:
Nutzer Alle
| |
rwx r-x r-x
|
Gruppe
In diesem Fall darf der Nutzer also lesen, schreiben und das Verzeichnis betreten, während die Mitglieder der Gruppe und alle anderen nur lesen und das Verzeichnis betreten dürfen.
Eine andere oft benutze Art Rechte zu schreiben ist die Umrechnung in das Oktalsystem4. Hierfür addiert man die Werte der Rechte (r=4
, w=2
, x=1
) im Oktalsystem:
rwx r-x r-x
421 4 1 4 1
7 5 5
Wenn der Nutzer alles und andere nur lesen und ausführen dürfen, lauten die Berechtigungen also 755
.
Für Dateien und Verzeichnisse ist meistens die Berechtigung 644
geeignet:
6 4 4
42 4 4
rw-r--r--
Für den Root-Benutzer gelten keine Einschränkungen. Er kann alle Dateien lesen oder ändern.
Versteckte Dateien
Auf Linux kann man Dateien verstecken, wenn man ihnen einen Punkt voranstellt. Der Befehl ls -la
gibt beispielsweise Folgendes zurück:
|
|
Diese Dateien werden nur angezeigt, wenn man sie explizit anzeigen lässt.
Befehle
Befehle in Linux werden nach dem folgenden Schema eingegeben:
Befehl [Parameter]
Online wird Befehlen manchmal ein Dollar-Zeichen ($
) oder ein Doppelkreuz (#
) vorangestellt. Ein $
bedeutet, das der Befehl als normaler Nutzer ausgeführt werden sollte, ein #
bedeutet das der Befehl als Root-Nutzer ausgeführt werden soll. Das Zeichen selber wird aber nicht mit eingegeben. Da ein Doppelkreuz auch den Anfang eines Kommentars darstellt, wird alles nach #
ignoriert, wenn es nicht am Anfang der Zeile steht.
Möchte man beispielsweise alle Dateien und Verzeichnisse mit Rechten ausgeben, lautet der Befehl:
|
|
Um mehr über einen Befehl zu erfahren, helfen die sogenannten Man-Pages, die man mit
man Befehl
aufrufen kann.
Wichtige Befehle
Die folgenden Befehle werden öfter gebraucht. Falls ein Befehl nicht zu Kommandozeile zurückkehrt, kann er meistens mit q
beendet werden.
cat
: Ausgabe des Inhalts einer Dateicd
: Wechselt den aktuellen Ordnercd ~ # wechselt in den Home-Ordner des Nutzers
cd .. # Einen Ordner in der Hierarchie nach oben
chmod
: Ändert die Dateiberechtigungenchmod g+x Datei # Gibt der Gruppe der Datei Ausführungsrechte
chmod 644 Datei # Ändert die Berechtigung zu rw-r--r--
chown
: Ändert den Besitzer einer Datei. Der neue Besitzer muss auf dem System existierenchown besitzer-neu:gruppe-neu Datei
cp
: Kopiert eine Dateicp Quelle Ziel # Kopiert Quelle nach Ziel
cp -r Quelle Ziel # Kopiert Quelle rekursiv nach Ziel (für Ordner)
diff
: Zeigt den Unterschied zwischen zwei Dateien ancp Datei1 Datei2
echo
: Gibt die Eingabe wieder ausexit
: Schließt die Sitzung. Meistens funktioniert hier auch Ctrl+Dgrep
: Durchsucht Text von der Eingabehistory | grep main # Zeigt alle Zeilen mit main an
groups
: Gibt aus, in welchen Gruppen der aktuelle Nutzer Mitglied isthead
: Gibt die ersten Zeilen einer Datei aushistory
: Zeigt die Befehlshistorie anless
: Zeigt Dateien an, ohne sie vollständig auszugebenls
: Auflistung der im aktuellen Verzeichnis befindlichen Dateienls # Zeigt das aktuelle Verzeichnis an
ls -l # Zeigt das aktuelle Verzeichnis mit Berechtigungen und Besitzern an
ls -la # Zeigt das aktuelle Verzeichnis mit Berechtigungen und Besitzern, sowie versteckte Verzeichnisse an
man
: Ruft die man-page aufman ls # Zeigt die man-page von ls an
mkdir
: Erstellt ein Verzeichnismkdir Verzeichnis1 # Erstellt Verzeichnis1 im aktuellen Pfad
mkdir -p Verzeichnis1/Verzeichnis2 # Erstellt Verzeichnis1 und Verzeichnis2 als Unterordner
mv
: Bewegt eine Dateimv Quelle Ziel # Bewegt Quelle nach Ziel
passwd
: Ändert das Nutzerpasswortpwd
: Gibt den aktuellen Pfad zurückreboot
: Startet den Rechner neurmdir
: Löscht ein Verzeichnisrm
: Löscht eine Datei. Vorsicht: Es gibt keinen Papierkorb!rm Datei1 # Löscht die Datei1
rm -rf / # Löscht
alles
. Wenn dieser Befehl ausgeführt wird muss das Betriebssystem neu installiert werden.
shutdown
: Fährt den Rechner heruntersort
: Gibt die zeilenweise sortierte Eingabe aushistory | sort
sudo
: Führt einen Befehl mit Root-Rechten aus (SuperuserDo).sudo ls
su
: Wechselt den Benutzer zum Root-Nutzertail
: Gibt die letzten Zeilen einer Datei austouch
: Erstellt eine Dateitouch Datei1
wget
: Lädt eine Datei aus dem Internet herunter und speichert siewget https://thinegen.de/tags/linux/ # Lädt diese Seite herunter
whoami
: Gibt den aktuellen Nutzer zurück
Pipes
Die Ausgabe eines Befehls kann mit dem Pipe-Operator |
in die Eingabe eines anderen Befehls umgeleitet werden:
$ cat Liste.txt | sort
Hier wird der Inhalt von Liste.txt
direkt in das sort
-Programm umgeleitet. Vor allem für Befehle wie grep
ist das sinnvoll.
Bei Windows ist das Dateisystem nach Festplatten organisiert. Hier fängt jeder Pfad mit einem Laufwerksbuchstaben an (z.B.
C:\ProgramData
). ↩︎Zu Hardlinks: Es gibt zwei Arten von Links in Linux: Hard- und Softlinks. Mehrere Hardlinks sind gleichberechtigt, jeder Zugriff auf einen Hardlink ist ein Zugriff auf die Datei oder das Verzeichnis.
Ein Softlink verweist lediglich auf eine Datei oder ein Verzeichnis. Deswegen kann eine Datei gelöscht werden (alle Hardlinks löschen), aber ein Softlink noch existieren. Dieser verweist jedoch dann ins Leere. ↩︎
Im Oktalsystem gibt es nur die Zahlen von 0 bis 7. Eine Acht im Dezimalsystem (geschrieben 810 ) ist eine 10 im Oktalsystem (108 ). Auch die Rechenregeln ändern sich: 78 + 18 = 108 (und: 710 +110 = 108 ). Wikipedia ↩︎