Die Top 50 universellen UNIX-Befehle
Mit diesen Top 50 der UNIX-Befehle, Tools und Utilities für AIX, Solaris und HP-UX arbeiten UNIX und Linux-Administratoren eigentlich täglich.
Es gibt Tausende Befehle, auf die ein UNIX-Administrator zurückgreifen kann. In der Realität verwenden aber auch sehr erfahrene System-Administratoren nur eine Handvoll an Tools und Utilities im Tagesgeschäft. Für diese Anwender gilt, diese speziellen Befehle und Utilities zu meistern, um dadurch noch bessere Administratoren zu werden.
Etwas Geschichte: Unterschiede zwischen UNIX und Linux
Einige von Ihnen werden mit Linux vertrauter als mit UNIX sein. Nun stellen Sie sich vielleicht die Frage: „Ist UNIX und Linux im Prinzip nicht das Gleiche?“ Die kurze Antwort darauf ist: „Nein.“
Sehen wir uns die fundamentalen Unterschiede zwischen Linux und UNIX an. Starten wir mit Linux. Die Wurzeln von Linux gehen zurück ins Jahr 1983, als Richard Stallman das GNU-Projekt ins Leben gerufen hat. Ziel war es, ein UNIX-ähnliches Betriebssystem zu erstellen. Die GPL (GNU General Public License) wurde ebenfalls von Stallman erschaffen. Im Jahre 1987 hat Andrew Tanenbaum das UNIX-ähnliche Betriebssystem MINIX veröffentlicht. Dieses wurde leider nicht für die 32-Bit-Funktionen der i386-Architektur von Intel adaptiert. Außerdem gab es keinen voll funktionstüchtigen Kernel. Dieser Umstand hat im Jahre 1991 zu Linux geführt. Linus Torvalds hat das Programm auf einem 386-Prozessor unter Zuhilfenahme des Compilers GNU C auf MINIX geschrieben.
UNIX hat eine wesentlich längere Geschichte. In den 60ern hatten die AT&T Bell Labs mit GE und MIT zusammen an einem Multi-User-Betriebssystem mit Namen Multics gearbeitet. Dennis Ritchie und Ken Thompson arbeiteten zu dem Zeitpunkt an dem Projekt, bis AT&T sich davon zurückzog. Das OS mit Namen Unics wurde später zu UNIX, was sich wiederum in BSD und das kommerzielle System V spaltete. Heute gibt es drei populäre UNIX-Richtungen, die den Markt dominieren: HP-UX, AIX und Solaris. HP-UX und Solaris basieren auf System V und AIX ist ein Hybrid aus den beiden Zweigen. Ein Beispiel dafür ist die Druckfunktion. AIX bietet neben dem eigenen, proprietärem qprt ebenfalls die BSD-Version lpr und die System-V-Variante lp an. Auch wenn das in vieler Hinsicht typisch für AIX ist, haben all diese Geschmacksrichtungen ihre proprietären Eigenheiten. Das fängt beim Kernel an und geht über Tuning-Befehle und Netzwerk-Konfiguration bis zur Virtualisierung und anderen Prozessen.
Der vielleicht größte Unterschied zwischen UNIX und Linux ist, dass bei letzterem die hauptsächliche Arbeit von der Community erledigt wird. Möglicherweise widersprechen hier Red Hat und SUSE als Top-Distributoren und Antreiber der Kernel-Entwicklung. Sie liefern mit dem Betriebssystem auch zusätzlich nützliche Software aus. Die Community besteht aus Tausenden an Programmierern, die um den Erdball verteilt sind. Sie arbeiten an Linux und reichen ihre Verbesserungs-Vorschläge ein. Linus Torvalds hat allerdings das allerletzte Sagen, ob neuer Code in den Linux-Kernel Einzug hält oder nicht. Bei UNIX ist das nicht so. Jeder der Hardware-Hersteller treibt das mit seiner UNIX-Variante, was ihm in den Kram passt.
Es gibt fundamentale Unterschiede zwischen den UNIX-Richtungen, die sich auf die Administration und die Konfiguration der wichtigsten Prozesse des jeweiligen Systems auswirken.
Die Top 50 der UNIX-Befehle
Zunächst einmal sei gesagt, dass die Top 50 der UNIX-Befehle sehr ähnlich zu den Top 50 Kommandozeilen-Befehlen unter Linux sind. Es gibt allerdings genügend Unterschiede, um eine eigene Liste und auch eine andere Reihenfolge zu rechtfertigen. Als Beispiele finden Sie hier ps, w, who, uname und id, die in der ursprünglichen Liste nicht enthalten sind. Zu den Befehlen, die Sie in beiden Listen finden, gehören beispielsweise cron, vmstat, vi, netstat und find.
Die nachfolgenden Top 50 der UNIX-Befehle sind in allen Varianten des Betriebssystems vorhanden.
1. alias
Mit alias können Sie einen langen Befehl durch einen kürzeren oder leichter zu merkenden ersetzen.
Beispiel: So können Sie den Befehl du modifizieren, dass er Tausender-Einheiten verwendet:
# alias du=du -k
2. awk
Awk sucht in einer Datei nach Mustern und verarbeitet diese. Somit kann ein Programmierer kleine Programme in Form von Statements schreiben, um bestimmte Änderungen in Textdateien vorzunehmen. Voraussetzung ist, dass bestimmte Muster übereinstimmen. Auch das Extrahieren von Daten aus diesen Dateien ist möglich. Dieser Befehl vereinfacht einen Prozess, der üblicherweise mit den Programmiersprachen C oder Pascal erledigt wurde. Sie erfahren mehr über awk in diesem Linux-Shell-Scripting-Tutorial.
Beispiel: So zählen Sie die Anzahl der Zeilen in einer Datei. Das ist ähnlich zu wc -l:
# awk 'END{print NR}'
3. cat
Es ist die Kurzbezeichnung des Wortes „concatenate“. Es bedeutet, Dinge zu verbinden. Sie verwenden cat in UNIX, um Dateiinhalte zu verknüpfen. Die Ausgaben sehen Sie dann auf dem Bildschirm oder können diese an den Drucker schicken.
Beispiel: So können Sie sich die Datei /etc/hosts anzeigen lassen:
# cat /etc/hosts
4. cd
Der Befehl cd legt das Arbeitsverzeichnis für einen Prozess fest.
Beispiel: So begeben Sie sich in Ihr Home-Verzeichnis, falls die Variable HOME definiert ist:
# cd $HOME
5. chmod
Mithilfe des Utilities chmod ändern Sie die Rechte einer Datei.
Beispiel: Mit nachfolgendem Befehl ändern Sie die Rechte der Datei NeueDatei, damit diese vom Besitzer, der Gruppe und anderen gelesen, beschrieben und ausgeführt (rwx) werden darf:
#chmod 777 NeueDatei
6. chown
Ein Tool, um den Besitzer der Datei festzulegen.
Beispiel: Wir ändern den Besitzer der Datei NeueDatei auf frank:
# chown frank NeueDatei
7. cp
Den Befehl cp benutzt man, um Dateien zu kopieren.
Beispiel: So kopieren Sie die Datei testdb in einen anderen Ordner des Systems:
# cp /tmp/testdb /home/frank/testdb
8. cpio
Mithilfe des Befehls cpio speichern Sie Dateien in Archive und können diese auch wiederherstellen. Diese dürfen sich auf Datenband oder anderen Geräten befinden. Auch das Sichern in eine reguläre Datei ist möglich. Weiterhin können Sie einen Verzeichnisbaum duplizieren.
Beispiel: So kopieren Sie alle Dateien und Unterverzeichnisse des momentanen Ordners in ein anderes Verzeichnis mit Namen /user/neuedateien
# find ./ -depth | cpio -pdmv /usr/neuedateien
9. crontab
Crontab verwenden Sie, um cron zu manipulieren. Damit lassen sich Aufgaben anhand zeitgesteuert automatisieren.
Beispiel: So lassen Sie sich die Datei crontab anzeigen:
# crontab -l
10. df
Der Befehl df gibt Auskunft über die Auslastung des Festplattenplatzes.
Beispiel: Zeigt den Festplatten-Platz in KByte an:
# df -k
11. du
Der Befehl du gibt die Größe eines Verzeichnis-Baums aus.
Beispiel: Dieser Befehl fasst die Dateigröße des Ordners zusammen, aus dem er ausgeführt wird:
# du -s
12. env
Mithilfe von env finden Sie Informationen über Ihre derzeitige Umgebung heraus.
Beispiel: Der nachfolgende Befehl zeigt alle Umgebungs-Variablen an:
# env
13. echo
Damit können Sie eine Zeichenkette am Standard-Output ausgeben.
Beispiel: So geben Sie „Hallo Welt!“ aus:
# echo Hallo Welt!
14. enable
Aktiviert oder deaktiviert einen Drucker.
Beispiel: Aktivierung von Drucker1
# enable Drucker1
15. exit
Mit exit beenden Sie ein Programm, eine Shell oder ein UNIX-Netzwerk.
Beispiel: So beenden Sie die Shell:
# exit
16. export
Export legt den Wert einer Variablen fest, damit diese für alle Unterprozesse der momentanen Shell verfügbar ist.
Beispiel: Dieser Befehl exportiert die Variable TERM:
# TERM=vt220 ; export $TERM
17. exportfs
Kümmert sich um die Verzeichnisse für NFS-Clients.
Beispiel: Dieser Befehl exportiert alle Verzeichnisse:
# exportfs -a
18. find
Find durchsucht den Verzeichnisbaum rekursiv anhand des Ausdrucks (von rechts nach links), den man in diesem Befehl verwendet hat. Gesucht wird nach Dateien, die einem booleschen Ausdruck entsprechen. Dabei findet keine Überprüfung aller Schleifen statt. Sollte auf der linken Seite eine boolesche Operation (AND und OR) zutreffen, wird die rechte Seite nicht mehr ausgeführt.
Beispiel: Nachfolgender Befehl sucht nach allen Dateien und Verzeichnissen in einem bestimmten Verzeichnis und leitet das Ergebnis an den Standard-Output:
# find ./ -depth
19. ftp
Mit ftp können Sie Dateien zwischen verschiedenen Host-Rechnern austauschen.
Beispiel: Dieser Befehl startet ftp:
# ftp
20. grep
Den Befehl grep verwenden Sie zum Suchen von einer oder mehreren Dateien, die ein Zeichen oder eine Zeichenkette enthalten. Sie können grep auch kombiniert benutzen, um zum Beispiel eine Zeichenkette durch eine andere zu ersetzen.
Beispiel: So suchen Sie nach Instanzen von Hallo in der Datei text.txt:
# grep Hallo text.txt
21. gzip
Bei gzip handelt es sich um ein Kompressions-Utility. Es wurde als Ersatz für compress erschaffen. Die Hauptvorteile gegenüber compress sind eine bessere Komprimierung und es befinden sich keine patentierten Algorithmen darin. Gzip wurde vom GNU-Projekt übernommen und ist nun im Internet recht populär. Jean-loup Gailly ist der Autor von gzip und Mark Adler hat den Dekompressions-Code geschrieben.
Beispiel: So komprimieren Sie eine Datei und benennen diese in das gzip-Format test2 um. Mithilfe von gunzip dekomprimieren Sie eine gzip-Datei:
# gzip -c testdatei > test2.gz
22. id
Dieser Befehl zeigt die echten und aktuellen UIDs und GIDs an.
Beispiel: Nachfolgendes zeigt alle UIDs und GIDs an, wie sie in der Datei /etc/passwd hinterlegt sind:
# id
23. ifconfig
Mit ifconfig überprüfen Sie die Konfiguration der Netzwerk-Schnittstellen. Das ist zum Beispiel wichtig, wenn das System eines Anwenders andere Systeme im gleichen Netzwerk nicht erreichen kann. Sie können es weiterhin verwenden, um die Netzwerk-Schnittstellen zu konfigurieren.
Beispiel: Dieser Befehl zeigt die Informationen aller Adapter an:
# ifconfig -a
24. ifup
Startet eine Netzwerk-Schnittstelle.
Beispiel: So aktivieren Sie das Interface en0:
# ifup en0
25. ifdown
Stoppt eine Netzwerk-Schnittstelle.
Beispiel: So deaktivieren Sie alle aktiven Schnittstellen:
# ifdown -a
26. head
Gibt den ersten Teil einer Datei aus.
Beispiel: Nachfolgender Befehl zeigt die ersten zehn Zeilen der Datei /etc/hosts an:
# head -10 /etc/hosts
27. last
Der Befehl last zeigt die Anwender an, die sich zuletzt am System angemeldet haben.
Beispiel: Dieser Befehl listet die Zeiten des Herunterfahrens und die Änderungen der Run-Levels auf:
# last -x
28. ln
Mit dem Befehl ln können Sie Dateien verlinken.
Beispiel: So erstellen Sie einen symbolischen Link zu einer Datei:
ln -s QuellDatei LinkName
29. ls
Mit ls bekommen Sie Informationen über Dateien. System-Administratoren können die Inhalte eines Verzeichnisses auflisten. Damit lässt sich zum Beispiel herausfinden, welche Konfigurationsdateien zuletzt geändert wurden. Es gibt viele mögliche Parameter im Zusammenhang mit ls. Der Befehl ls -r zeigt zum Beispiel die Dateien in umgekehrter Reihenfolge an.
Beispiel: Diese Verwendung zeigt eine lange Liste an Dateiinformationen in einem Verzeichnis:
# ls -l data
30. man
Das ist die Kurzform für „manual“. Hier finden Sie Informationen über Befehle. Es ist sozusagen das eingebaute Benutzerhandbuch in UNIX-Systemen.
Beispiel: So finden Sie detaillierte Informationen zum Befehl tar:
# man tar
31. mv
Sie verwenden mv, um Dateien in andere Verzeichnisse zu verschieben. Auch ein Umbenennen von Dateien ist damit möglich.
Beispiel: So verschieben Sie die Datei test in das Verzeichnis /tmp:
# mv test /tmp
32. netstat
Der Befehl netstat gibt Informationen über den Netzwerk-Status aus. Sie finden damit unter anderem heraus, welche Ports offen sind oder auf welchen der Rechner lauscht. Weiterhin sehen Sie damit offene Verbindungen zu Computern im Netzwerk oder im Internet. Je nach den verwendeten Optionen, gibt das Tool unterschiedliche Informationen aus.
Beispiel: So lassen Sie sich die Routing-Tabelle anzeigen:
# netstat -r
33. ping
Der Befehl ping wurde nach dem Geräusch eines Echolots benannt. Er schickt Anfragen an einen Host, den Sie in der Kommandozeile definieren und zeigt die entsprechenden Antworten nach dem Rundtrip an. Terminieren Sie einen ping beispielsweise durch Strg+C, bekommen Sie eine Zusammenfassung der Ergebnisse. Sie sehen die Durchschnittszeit des Rundtrips und den Prozentsatz an verloren gegangenen Paketen. Dieser Befehl wird laufend verwendet. Damit möchte man feststellen, ob es ein Netzwerk-Problem zwischen zwei Host-Systemen gibt.
Beispiel: So schicken Sie eine Echo-Anfrage an hosta
#ping hosta
34. ps
Mit ps erfahren Sie mehr über den Status eines Prozesses. Es gibt zwei Arten, wie diese Komponente benutzt wird: Auf die Weise von System V und die Berkeley-Methode. Bei der Berkeley-Methode müssen Sie das Minus (-) nicht vor den Optionen verwenden.
Beispiel: So bekommen Sie Informationen über die laufenden Prozesse. Es ist die System-V-Variante:
#ps -ef
35. pwd
Pwd ist das Akronym für Print Working Directory. Der Befehl zeigt das Verzeichnis an, in dem Sie sich gerade befinden.
Beispiel: So lassen Sie sich das Verzeichnis anzeigen, indem Sie sich im Moment befinden
# pwd
36. rsync
Mit rsync können Sie Daten zwischen zwei Orten synchronisieren. Das Tool wurde von Andrew Tridgell erschaffen. Er gehört zum Kern-Team von Samba.
Beispiel: Diese Verwendung transferiert alle Dateien, auf die das Muster *.d zutrifft, vom derzeitigen Ort auf den Rechner hosta:
# rsync *.d hosta:data/
37. rm
Mit rm entfernen Sie eine oder mehrere Dateien und Ordner.
Beispiel: So fragt der Befehl beim Anwender nach, ob er die jeweiligen Dateien im entsprechenden Verzeichnis auch wirklich löschen möchte:
# rm -i *
38. sed
Sed steht für Streams Editor. Es handelt sich dabei allerdings nicht im einen Text-Editor oder eine Textverarbeitung im eigentlichen Sinne. Stattdessen bearbeitet der Befehl Text anhand von Filtern. Der eingegebene Text wird durch bestimmte Optionen modifiziert und dann wieder ausgegeben. Sed verwendet man in der Regel, um Teile einer Datei zu extrahieren, die bestimmten Mustern entsprechen. Ebenso setzen Sie das Tool ein, um bestimmte Teile einer Text-Datei zu ersetzen.
Beispiel: So fügen Sie eine leere Zeile nach jeder Zeile ein, die „test“ beinhaltet:
# sed '/test/G'
39. shutdown
Mithilfe des Befehls shutdown schalten Sie den Computer aus. Sie können ihn mit Variablen wie -h für halt oder -r für reboot kombinieren.
Beispiel: Verwenden Sie shutdown so, starten Sie einen AIX-Rechner neu. Die Optionen unterscheiden sich zwischen den UNIX-Varianten leicht. Sehen Sie vor einer Benutzung einfach mit man nach, wie Sie den Befehl handhaben müssen.
# shutdown -Fr
40. sudo
Sudo steht für superuser do. Damit können System-Administratoren bestimmten Anwendern oder Gruppen an Nutzern das Recht geben, einige oder alle Befehle als root oder als anderer Anwender auszuführen.
Beispiel: Angenommen das System wurde bereits so konfiguriert, dass der Anwender sudo ausführen darf. Dann könnte er so den Befehl adduser mit root-Rechten ausführen:
# sudo -u root adduser testanwender
41. ssh
Den Befehl ssh verwenden Sie, um sichere Netzwerk-Verbindungen herzustellen. Auch das Tunneln von TCP-Services ist möglich. OpenSSH ist eine Open-Source-Variante von SSH.
Beispiel: So verbindet sich der Anwender ken zu hostb.com:
# ssh -l ken hostb.com
42. tar
Das Programm tar gibt Ihnen die Möglichkeit, tar-Archive zu erstellen. Auch andere Arten der Manipulation sind denkbar. Zum Beispiel können Sie mit tar bestimmte Dateien aus zuvor erstellten Archiven extrahieren. Ebenso ist das Hinzufügen von Dateien möglich und Sie dürfen Updates durchführen. Ursprünglich wurden mit tar Dateien auf Datenbändern gespeichert. Der Name stammt ebenfalls aus dieser Zeit, denn tar ist die Kurzform für „tape archiver“. Lassen Sie sich vom Namen nicht täuschen. Tar kann die Ausgabe auch an andere Geräte, Dateien oder Programme umleiten. tar kann auch auf entfernte Dateien oder Geräte zugreifen.
Beispiel: So erstellen Sie ein tar-Archiv auf dem Bandgerät st0 und sichern den Inhalt von /home dort hin:
# tar -cvf /dev/st0 /home
43. tail
Mit tail können Sie den letzten Teil einer Datei ausgeben.
Beispiel: Mit dieser Verwendung geben Sie die letzten zehn Zeilen der Datei /etc/hosts aus:
# tail -10 /etc/hosts
44. traceroute
Traceroute ermittelt den Weg zu einem Host. Dieses Tool ist sehr hilfreich, wenn Sie Probleme mit dem Netzwerk oder einem Router haben. Sollte die Domäne nicht funktionieren oder nicht verfügbar sein, können Sie traceroute in Verbindung mit einer IP-Adresse verwenden.
Beispiel: Traceroute zu einer nicht erreichbaren Domäne, um das Problem herauszufinden:
# traceroute hostc.org
45. uname
Mit uname geben Sie den Namen des Systems und andere zugehörige Informationen aus.
Beispiel: So zeigen Sie ausführliche System-Informationen an:
# uname -a
46. vi
Der Editor vi ist bei vielen UNIX-Administratoren und -Anwendern sehr beliebt.
Beispiel: So versetzen Sie vi in den Editor-Modus, um die Datei /etc/hosts zu modifizieren:
# vi /etc/hosts
47. vmstat
Mit vmstat bekommen Sie eine Momentaufnahme, was sich gerade im System abspielt. Das hilft System-Administratoren beim Finden von Flaschenhälsen in Bezug auf CPU, Arbeitsspeicher oder I/O. Mit diesem Befehl erhalten Sie virtuelle Speicherstatistiken.
Beispiel: So starten Sie vmstat und es läuft alle zwei Sekunden für insgesamt zehn Iterationen:
# vmstat 2 10
48. w
Der Befehl w gibt eine Zusammenfassung zum System und dazugehörige Anwenderinformationen aus. Weiterhin verrät das Tool, wer derzeit angemeldet ist und was die jeweiligen Nutzer tun.
Beispiel: Eine kurze Version der Informationen bekommen Sie so:
# w -s
49. who
Who zeigt, welche Anwender gerade am System angemeldet sind.
Beispiel: Diese Verwendung listet den komplett verfügbaren Output für jeden Anwender auf:
# who -a
50. whoami
Mit whoami finden Sie heraus, als welcher Anwender Sie gerade auf dem System angemeldet sind. Das ist wichtig für System-Administratoren, die verschiedene Logins für unterschiedliche Aufgaben auf einem System haben.
Beispiel: Dieser Befehl zeigt den Namen des Anwenders, der momentan angemeldet ist:
# whoami
Über den Autor: Ken Milberg ist System-Consultant und hat 20 Jahre Erfahrung in Sachen UNIX und Linux.