Definition „Linux-Kommandos“ Wichtige Linux-Befehle im Überblick
Die von Unix geerbte Kommandozeile in GNU/Linux ist ein mächtiges Werkzeug, will aber auch wie ein Profiwerkzeug genutzt werden. Linux-Befehle, die dem Einsteiger kryptisch erscheinen, sind für erfahrene Anwender effizient. Hier werden sie vorgestellt.
Anbieter zum Thema

Eine Kreissäge schneidet geradlinig, präzise, sauber und schnell, kann bei falschem Gebrauch aber auch schwere Verletzungen verursachen. Wenn Sie unter Linux ein Werkzeug wie „rm“ auf Ihr Dateisystem ansetzen, sollten Sie ebenfalls wissen was Sie tun. Bei diesem ersten wichtigen Linux-Befehl, der Dateien löscht, fällt gleich eine weitere Analogie zum Profiwerkzeug auf. Die Namen der besonders häufig genutzten Kommandos, die Linux von Unix geerbt hat, sind nicht unbedingt ästhetisch, sondern für intensiven Gebrauch gemacht und nur zwei Buchstaben lang.
Kurz und knapp: Linux-Befehle zum Kopieren, Umbenennen und Löschen von Dateien
Für den Einsteiger sieht ein cp, mv und rm kryptisch aus, ein copy, move und remove würde aber einen zwei- bis dreifachen Tippaufwand bedeuten. Effizienz steht hier an erster Stelle. Ebenso erzeugen viele der Unix-kompatiblen Kommandos standardmäßig keine Ausgaben, solange kein Fehler auftritt. Das erleichtert ihre Verwendung in Shell-Skripten, durch deren Einsatz sich die Leistungsfähigkeit der Linux-Befehle noch potenziert.
Maßgeschneiderte Linux-Befehle und Befehlsnamen
Mit einem Shell-Skript lassen sich mehrfach benötigte Kommandosequenzen als Datei abspeichern, beispielsweise unter dem Namen machseinfach.sh. Sie werden so zu einem neuen, individuellen Linux-Befehl, der maßgeschneidert, komplexe Aufgaben löst. Der hier gewählte Dateiname ist lesbar, aber lang. Mit dem Befehl „ln“ erhält er einen zweiten, kürzeren:
ln -s machseinfach.sh mach
Die Option „-s“ weist „ln“ an, einen symbolischen Link oder Symlink zu erstellen – einen Verzeichniseintrag, der auf die Originaldatei verweist. Ohne ihn erzeugt der Befehl Hardlinks, die nicht mehr erkennen lassen, welches die Originaldatei ist.
Welche Art Datei das ist?
Die Endung „sh“ am Dateinamen eines Shell-Skripts ist optional, sie dient nur dem Anwender. Um welche Art Datei es sich handelt, lässt sich mit dem Linux-Befehl „file“ feststellen. Ein
file /bin/rm
zeigt zum Beispiel an, dass es sich bei rm um eine Binärdatei handelt, ein maschinenlesbares, kompiliertes Programm.
Linux-Befehle umdefinieren und umbenennen mit alias
Eine zweite, noch flexiblere Möglichkeit Linux-Befehle individuell anzupassen bietet das Kommando „alias“. Es kann Linux-Befehlen zusätzliche Namen geben, aber auch bestehende Kommandos für die Dauer einer Shell-Session umdefinieren und sogar ganze Kommandozeilen mit einem Namen versehen, eine Art Mini-Shell-Skript.
Dauerhafte Befehls-Aliase schreiben Sie in die Systemdatei „/etc/profile“ oder ihr benutzerspezifisches Gegenstück „~/.profile“. Diese lädt eine interaktive, also von einem Benutzer und nicht von einem Programm gestartete Shell, denn Aliase wie „cp -i“ würden bei einem nicht interaktiven Programmablauf stören. Häufig findet sich in den Profile-Dateien eine Zeile wie
alias cp=„cp -iv“ mv=„mv -iv“ rm=„rm -v“ del=„rm -i“
Warum nicht alias rm=„rm -i“? Wenn die Aliasdefinitionen aus irgendeinem Grund nicht aktiv sind, löscht ein „rm ...“ ohne Rückfrage alles bis auf schreibgeschützte Dateien. Ein „del ...“ erzeugt dagegen eine Fehlermeldung, weil der entsprechende Befehl auf Linux-Systemen normalerweise nicht existiert.
Linux-Befehle pur
Wenn ein Linux-Befehl direkt und nicht über einen Alias ausgeführt werden soll, dann hilft das Kommando „command“. Ein „command rm ...“ umgeht alle Aliasdefinitionen für „rm“. Meist ist das identisch mit dem Aufruf des Kommandos über seinen Dateinamen, im Beispiel „/bin/rm ...“.
Es gibt aber Befehle, sogenannte builtins, die direkt in die Shell einprogrammiert sind, zum Teil aus Performance-Gründen. Ein
command echo „Hello World“
(der Tradition folgend müsste das eigentlich der erste vorgestellte Befehl sein) gibt den Text „Hello World“ direkt durch die Shell aus. Ein „/bin/echo ...“ startet dagegen ein zusätzliches Programm.
Die Praxis: Linux-Befehle anwenden
Einige Linux-Befehle wurden bereits vorgestellt, aber wo lassen sie sich anwenden? Nach der Installation einer typischen Linux-Distribution haben Sie in der Regel eine grafische Benutzeroberfläche vor sich. Die Befehlseingabe ist hier über ein Terminalfenster möglich oder Sie wechseln auf eine Konsole.
Linux-Systeme erlauben meist ein Umschalten zwischen mehreren sogenannten virtuellen Terminals. Üblicherweise geschieht das mit einer Tastenkombination aus einer Funktionstaste zusammen mit „Alt“ oder „Alt“ und „Strg“, beziehungsweise „Ctrl“, bei englischer Tastaturbeschriftung.
Auf der Konsole wartet „login“ auf Eingaben, ein weiterer wichtiger Linux-Befehl, den aber normalerweise nur das System selbst aufruft. Er fragt nach Nutzernamen und Passwort und startet eine Shell, wenn er eine gültige Kombination erkannt hat.
Wo ist der Lichtschalter? Verzeichnisinhalte anzeigen
Nach dem Einloggen befinden Sie sich in einer Shell-Session und zwar in ihrem Heimatverzeichnis, beziehungsweise dem des Nutzers, den Sie beim Login angegeben haben. Davon ist im Terminalfenster aber nichts zu sehen. Licht ins Dunkel bringt der Befehl „ls“. Er zeigt standardmäßig die Dateinamen im aktuellen Verzeichnis an. Seine Ausgaben lassen sich über eine große Zahl von Kommandozeilenschaltern in weitem Umfang variieren.
Wichtige Optionen sind „-l“ für ein ausführliches „langes“ Listing, „-R“ für ein rekursives Listing, das Unterverzeichnisse einschließt sowie „-a“ und „-A“, um auch versteckte Dateien anzuzeigen. Diese beginnen nach Unix-Konvention mit einem Punkt. Bei Angabe eines Verzeichnispfades als Argument listet „ls“ die entsprechenden Einträge auf.
ls /usr/share/doc/
liefert beispielsweise eine Liste von Verzeichnissen mit Dokumentation zur installierten Systemsoftware, unter anderem auch Tutorials für Einsteiger.
Ordnung im Dateichaos: Verzeichnisse anlegen, hinein wechseln und löschen
Mit zunehmender Anzahl Dateien wird ein Verzeichnis schnell unübersichtlich. Unterverzeichnisse legt der Linux-Befehl „mkdir“ an. Das Kommando „cd“ ermöglicht es, hinein zu wechseln und „pwd“ zeigt das aktuelle Arbeitsverzeichnis an (engl. Working Directory). Überflüssige Verzeichnisse löscht zwar auch der bereits vorgestellte Befehl „rm“, wenn er mit „-r“ rekursiv aufgerufen wird. Das Kommando „rmdir“ ist aber trotzdem nützlich. Es löscht nämlich ausschließlich leere Verzeichnisse.
Ein „rmdir *“ räumt gefahrlos ungenutzte, leere Unterverzeichnisse weg, ein „rmdir */* *“ erweitert den Befehl auf Verzeichnisse, die ein oder mehrere leere Unterverzeichnisse enthalten. Die Reihenfolge der Argumente ist dabei wichtig. Linux-Befehle machen im Allgemeinen genau das, was ihnen aufgetragen wird. Ein „rmdir * */*“ würde zuerst erfolglos versuchen, die noch nicht leeren Verzeichnisse im Arbeitsverzeichnis zu löschen und danach erst die darin enthaltenen Unterverzeichnisse.
Dateien finden und wiederfinden
Der Befehl „ls“ hilft gut, wenn das Verzeichnis, beziehungsweise der Pfad zur gesuchten Datei bekannt ist. Mit „find“ lassen sich ganze Verzeichnisbäume gezielt durchsuchen. Die Syntax ist bei diesem Befehl ungewöhnlich, weil Sie zuerst die Pfade angeben müssen, die durchsucht werden sollen. Erst danach folgt die Spezifikation der Suchmuster.
Ein
find /usr -iname '*readme*'
sucht beispielsweise alle Dateien unterhalb des usr-Verzeichnisses, die „readme“ als Namensbestandteil haben, ohne Berücksichtigung der Groß-Klein-Schreibung. Ein weiterer Suchbefehl nutzt eine Datenbank, damit er nicht bei jedem Aufruf den Verzeichnisbaunm neu durchlaufen muss. Der Linux-Befehl „locate“ gibt aber eine Fehler- respektive Warnmeldung aus, wenn die Datenbank nicht existiert oder sehr alt ist.
Was ist drin? Dateien anzeigen
Gleich eine ganze Reihe von Linux-Befehlen dient dazu, den Inhalt von Dateien anzuzeigen:
Das Kommando „cat“ gibt einfach den Dateiinhalt aus, hat seinen Namen aber vom englischen catenate, weil es dabei mehrere Dateien zusammenführen kann. Benutzerfreundlichere Ausgaben sind mit den Pagern „more“ und „less“ möglich, die den Dateiinhalt seitenweise anzeigen und im Fall von „less“ auch ein Zurückblättern ermöglichen.
Die Kommandos „head“ und „tail“ geben die ersten respektive letzten Zeilen einer Datei aus. Besonders häufig wird ein
tail -f
auf Logdateien angesetzt, um nur die jüngsten sowie neu eintreffende Logmeldungen anzuzeigen. Der Befehl „tee“ dupliziert seine Eingabe und schreibt sie einmal in eine als Argument angegebene Datei und gibt sie andererseits unverändert wieder aus.
Alle diese Kommandos sind vornehmlich für Textdateien konzipiert. Mit „pdftotext“ können aber auch textliche Inhalte aus PDF-Dateien extrahiert werden. Das ist bei zwei weiteren Gruppen von Linux-Befehlen besonders nützlich.
Befehle zum Vergleichen von Dateiinhalten
Das Kommmando „diff“ vergleicht zwei Dateien und gibt unterschiedliche Zeilen aus. Die Ausgabe kann der Befehl „patch“ nutzen, um aus der einen Datei die andere zu erzeugen. Ein „sort“ sortiert seine Eingabe zeilenweise, „uniq“ filtert mehrfach hintereinander auftretende Zeilen heraus. Die Kommandozeile
ls -R | sort | uniq -d
liefert beispielsweise alle unterhalb des Arbeitsverzeichnisses mehrfach vorkommenden Dateinamen.
Big-Data mit Linux-Befehlen
Einige Linux-Kommandos nutzen ein spezielles mathematisches Konzept für die flexible und effiziente Verarbeitung von Texten: reguläre Ausdrücke. Der Befehl „grep“ durchsucht seine Eingabe mittels eines als Argument angegebenen regulären Ausdrucks und gibt standardmäßig alle passenden Zeilen aus. Das Programm „awk“ und der Stream-Editor „sed“ ermöglichen darüber hinaus, die gefundenen Textteile zu ersetzen.Ein
sed -e 's/[xX]/U/g'
ersetzt zum Beispiel jedes große oder kleine „X“ im Text durch ein „U“. Noch mächtiger ist der Befehl „perl“, hinter dem sich eine ausgefeilte Programmiersprache versteckt.
Dateiinhalte händisch verändern
Die gleiche Syntax für reguläre Ausdrücke bietet auch der Texteditor „vi“. Er hat sie von „ed“ geerbt, dem Standardeditor der Unix-Frühzeit. Ganz anders arbeitet der in Lisp programmierbare Editor „emacs“, der ursprünglich von Richard Stallman geschrieben wurde, dem Vater des GNU-Projekts und damit dem Großvater von Linux.
Nicht nur, dass die meisten elementaren Linux-Befehle aus der GNU-Toolchain stammen. Ohne den frei verfügbaren und anerkannt hochwertigen GNU-C-Compiler wäre die virale Entwicklung des Betriebssystemkerns Linux Anfang der 1990er-Jahre kaum möglich gewesen. Vi und Emacs haben vor Linux bereits die Unix-Welt in zwei Lager gespalten und als Vorbild für andere Editoren und ähnliche Programme gedient, die jeweils eine oder beide Tastaturbelegungen übernommen haben.
Ist noch Platz? Befehle für Systemstatistiken
Den von Dateien belegten Speicherplatz zeigt „du“ an, sehr hilfreich etwa beim Zusammenstellen von Dateisammlungen, die Sie auf CDs, DVDs oder Blu-Ray-Disks schreiben wollen. Informationen über den freien Plattenplatz liefert das Linux-Kommando „df“ (disk free) und „free“ zeigt die Belegung des Hauptspeichers an. Mehr Plattenplatz verschaffen Sie sich durch Einbinden eines weiteren Datenträgers mit „mount“, dessen Dateisystem zuvor mit „fsck“ geprüft werden sollte.
Eine Statistik der Systemlaufzeit und -auslastung gibt der Linux-Befehl „uptime“ aus. Mit „ps“ lassen sich verschiedene Statistiken der laufenden Prozesse erzeugen, die Sie mit dem Befehl „“ beenden und teils auch zu anderen Aktionen veranlassen können. Der Befehl „wc“ zählt Zeilen, Wörter und Zeichen in angegebenen Dateien oder der Standardeingabe. Das aktuelle Datum, die Uhrzeit und einen Kalender erhalten Sie mit den Befehlen „date“ und „cal“.
Linux-Befehle für die Systemverwaltung
Zugriffsrechte für Dateien ändern Sie mit „chmod“ und „chown“. Das Kommando „su“ ermöglicht es, temporär in die Rolle eines anderen Benutzers zu schlüpfen und mit „sudo“ führen Sie ausgewählte privilegierte Kommandos aus, ohne sich als Superuser „root“ einzuloggen, wenn der Befehl entsprechend konfiguriert ist. Zum Schluss dient der Linux-Befehl „shutdown“ dazu, das System geordnet herunterzufahren, sodass zuvor alle Programme beendet, Dateien geschlossen und die Dateisysteme ausgebunden werden, damit beim Neustart kein Dateisystemcheck nötig wird.
(ID:44784572)