Der unbekannte Befehl – Die Konsole für Dummies (Teil II)

Symbolisiertes Terminal

Im ersten Teil habe ich den grundsätzlichen Umgang mit  Befehlen und den Umgang mit Vorder- und Hintergrundprozessen geschildert. In diesem Teil soll es um die Hilfeseiten, der Vervollständigung in der Shell und der Shell-History, die Umgebungsvariable PATH, der Ausgabe von Programmen gehen und deren Umlenkungen in andere Programme und Dateien gehen. Als Letztes wird noch die Funktion von Alias und eine Reihe Bash-Shortcuts beschrieben. Der dritte Teil dieser Serie wird dann eine Reihe grundlegender Shellbefehle gehen die für einen Linuxbenutzer irgendwann essentiell sind.

Hilfeseiten

Jedes komplexere System braucht Hilfeseiten um bedienbar zu bleiben. So hat auch die Shell eine Hilfesystem. Der Aufruf einer Hilfeseite erfolgt mit dem Befehl man und daher auch der gebräuchliche Name für diese Seiten: „Manpages“. Praktisch jedes Programm für die Konsole hat eine oder mehrere dieser Seiten. Je nach Komplexität werden diese thematisch aufgeteilt. Folgende Aufzählung zeigt die thematische Unterteilung auf. Nicht jede dieser Seiten muss jedoch auch existieren.

  • Benutzerkommandos (1)
  • Systemaufruf (2)
  • Funktionen der Programmiersprache C (3)
  • Dateiformate (4)
  • Konfigurationsdateien (5)
  • Spiele (6)
  • Diverses (7)
  • Kommandos zur Systemadministration (8)
  • Kernelfunktionen (9)
  • Neue Kommandos (n)

Weiterlesen

Der unbekannte Befehl – Die Konsole für Dummies (Teil I)

Symbolisiertes Terminal

Heute einmal eine andere Form von „Der unbekannte Befehl“ denn ich habe festgestellt, dass ich zwar hier Befehle behandele die mehr oder minder exotisch sind aber hier noch niemals was zu der ein paar Handvollen die man ständig braucht geschrieben habe. Daher nun eine Abhandlung zu den gängigen Befehlen die man in der Konsole ständig nutzt.

Einleitung

Man braucht hier vor allem Dateioperationen wie das Auflisten von Verzeichnissen oder das Anzeigen und Bearbeiten von Dateiinhalten aber auch das Ändern von Dateirechte und vieles mehr. Hier unterscheidet sich Linux zunächst einmal wenig von der Eingabeaufforderung von (MS-)DOS, Windows, CPM oder sonstige Konsolen. Die größten Unterschiede sind die Bezeichnung der Befehle und die grundlegende Bedeutung der Konsole. Während z.B. unter Windows die Eingabeaufforderung meist nur noch von Systemadministratoren benutzt wird hat sie unter Linux eine deutlich höhere Bedeutung. Das liegt zum Einen daran, dass Linuxbenutzer oft Computer-affinier sind aber vor allem auch daran, dass die Konsole deutlich mächtiger ist als es eine GUI sein kann.

Weiterlesen

Der unbekannte Befehl – „umask“ der Maskierer

Symbolisiertes Terminal

umask führt eigentlich sehr zu unrecht ein Schattendasein auf den meisten Rechnern denn umask ist ein Sicherheitsfeature was die Rechteverwaltung des Filesystems bestimmt. umask bestimmt wo und wann welche Besitzer- bzw Gruppenrechte gesetzt werden.

Bekanntlich hat unter Linux/Unix jede Datei einen Besitzer und gehört zu einer Gruppe. Unter Debian ist häufig für einen Benutzer auch der Name als Gruppe gesetzt. So gehört der Benutzer max dann der Gruppe max an. Weitere Gruppen wie floppy oder cdrom oder games können folgen. Jeder Benutzer der weder der Besitzer einer Datei ist noch der Gruppe angehört der gehört im Rechtesystem zu other.

Die wichtigsten Rechte werden in jeweils drei Bit beschrieben:

$ ls -l .bashrc
-rw-r--r-- 1 max max 3667 Jul 10 18:00 .bashrc
$ ls -ld .
drwxr-xr-x 77 max max 12288 Aug 25 23:02 .

Dabei symbolisiert die Ausgabe rwxrwxrwx die Rechte für den Besitzer, Gruppe und other (also alle anderen) und dahinter dann den Besitzer und die Gruppe zu der die Datei oder das Verzeichnis (Verzeichnisse sind unter Linux/Unix eigentlich auch nur eine besondere Art Datei) gehört.

Weiterlesen

Der unbekannte Befehl – „tee“ das T-Stück

Symbolisiertes Terminal

tee ist ein Befehl der praktisch nie alleinstehend benutzt wird sondern immer in Kombination mit anderen Befehlen und einer Pipe. Der Name tee leitet sich tatsächlich aus dem T-Stück bei Rohren ab. Normalerweise kennt Linux/Unix einen stdin, stdout und stderr als drei Kanäle. stdin ist der Eingabekanal, stdout der Ausgabekanal und stderr der Fehlerkanal. Im Zusammenhang mit tee spielt das eine wichtige Rolle denn tee ist sozusagen ein T-Stück für die Ausgabekanäle stdout und stderr. Normalerweise liest ein Befehl über den stdin ein und gibt über die beiden Ausgabekanäle aus welche oft der Bildschirm ist. Durch eine Pipe | kann die Ausgabe an weitere Befehle umgeleitet werden. So wird z.B. oft eine unübersichtliche Anzeige von ls an den Pager more weitergeleitete:

$ ls | more

und man erhält eine bildschirmseitenabhängige Ausgabe. Wenn man zwei Ausgabekanäle bedienen möchte dann kommt tee ins Spiel.

Weiterlesen

Der unbekannte Befehl – „diff“ der Differenzierer

Symbolisiertes Terminal

diff ist ein Linux-Kommando zum inhaltlichen Vergleich von Dateien oder Ordnern. Dabei können die Unterschiede so dargestellt werden, dass durch die Ausgabe von diff eine Datei in die andere überführt werden kann. Dies hat eine Bedeutung beim schreiben von Patch-Dateien, durch die Änderungen an Programmcodes vorgenommen werden und diese Änderung daher nur in einer ASCII-Datei vorliegen braucht.

Wenn man zwei identische Dateien miteinander vergleicht so gibt diff keine Meldung aus. Mit der Option -s sieht das Ergebnis dann so aus:

$ diff -s orginal.txt modify.txt
Dateien orginal.txt und modify.txt sind identisch.

und es wird nur angezeigt ob die beiden inhaltlich völlig Dateien identisch sind. Interessant wird diese Funktion jedoch bei inhaltlich unterschiedlichen Dateien die in einem Zusammenhang stehen wie z.B. eine Originalquelle und der geänderte, gepatchte Quelltext.

Weiterlesen

Suchbefehl „find“ in der Linux-Konsole (II)

Symbolisiertes Terminal

Im ersten Teil dieser Serie habe ich bereits eine ganze Reihe an eher unbekannteren Suchbefehlen behandelt aber den wichtigsten Befehl find ignoriert. Dies war kein böser Wille sondern find ist derartig mächtig und umfangreich, dass man ihn separat behandeln muss. Auch erhebt dies hier nicht einmal im Ansatz den Anspruch auf Vollständigkeit sondern soll einen groben Überblick liefern.

Im Prinzip sucht find ab einem bestimmten Verzeichnis, kann auch das Wurzelverzeichnis / sein, ein bestimmtes Muster und macht eine bestimmte Aktion mit dem Ergebnis – oft einfach nur das Ergebnis auf stdout ausgeben. Nun gilt in der Unix/Linux-Welt das Prinzip „Alles ist eine Datei“ und das wird recht konsequent umgesetzt und dadurch kann man durchaus auch nach Gerätedateien oder Sockets suchen denn sie sind auf dem Dateisystem eine Datei.

Weiterlesen

Suchbefehle in der Linux-Konsole (I)

Symbolisiertes Terminal

Ich wage mich jetzt einmal an das Thema suchen in der Linux-Shell. Das Thema ist letztlich ein Fass ohne Boden da alleine der Befehl find sehr mächtig ist und man durch die möglichen Optionen schier erschlagen wird. find ist sicher der Befehl der am bekanntesten ist aber es gibt eine ganze Reihe nützliche und spezialisierterer aber deutlich unbekanntere Befehle die einem das Leben erleichtern wenn man etwas im Dateisystem sucht. Der Befehl find wird hier nicht behandelt sondern wird separat im zweiten Teil dieser Serie behandelt. Die hier behandelten Befehle sind:

  • grep
  • which
  • whereis
  • apropos
  • whatis
  • locate

Weiterlesen

Der unbekannte Befehl – „sar“ der Retrosammler

Symbolisiertes Terminal

Ein weiteres Kind aus der Familie der sysstat-Programme ist sar was für „System Activity Report“ steht. sar besteht eigentlich aus folgenden Teilprogrammen:

  • sar – zeigt die aufgezeichneten Daten an.
  • sadc – der „System Activity Data Collector“ zeichnet die Daten zu Systemaktivitäten im binären Format auf.
  • sa1 – ein BASH Skript was sadc im Hintergrund nutzt. Es wird alle zehn Minuten per crond aufgerufen (/etc/cron.d/sysstat).
  • sa2 – ein BASH Skript das zum Schreiben des täglichen Reports verwendet wird. Es wird per crond täglich ein Mal aufgerufen (/etc/cron.d/sysstat).
  • sadf – zeigt die aufgezeichneten Daten an und bietet dabei unterschiedliche Formate wie CSV, XML usw. an.

Weiterlesen

Der unbekannte Befehl – „iostat“ der Gatekeeper

Symbolisiertes Terminal

iostat ist ein Werkzeug zur Überwachung der Geschwindigkeit der Ein/Ausgabe-Geräte (I/O-Devices) und wird normalerweise als Teil einer Performance-Analyse verwendet. In Debian-System ist es Teil des Paketes sysstat und kann mit apt-get install sysstat installiert werden. Alle sysstat-Programme lesen ihre Werte aus dem proc-Dateisystem des Linux-Kernels aus und können daher nicht mehr Daten zur Verfügung stellen als der Kernel nach /proc schreibt.

Ein einfaches Ausrufen von iostat ohne Optionen führt zu einer Ausgabe die so ähnlich aussieht  (Die Ausgabe ist farblich unterlegt aber auf diese Wiedergabe verzichte ich hier):

$ iostat
Linux 4.19.0-8-amd64 (Marvin)           07.07.2020          _x86_64_                (4 CPU)

avg-cpu:           %user            %nice          %system         %iowait          %steal         %idle
                         8,80               0,00              4,06                0,05               0,00            87,09

Device                                      tps                kB_read/s         kB_wrtn/s     kB_read    kB_wrtn
sda                                          4,01                24,31                201,88         8408878    69819736

Weiterlesen

Der unbekannte Befehl – „file“ der Dateikenner

Symbolisiertes Terminal

Der Befehl ist nützlich wenn wir Dateien haben und wissen wollen welchen Zweck diese Datei hat. In der Windows-Welt bestimmt oft die Dateiendung über die potentielle Funktion einer Datei. Windows-Benutzer sehen diese Endung oft überhaupt nicht da sie vom Betriebssystem ausgeblendet wird und es stillschweigend davon ausgeht, dass die Endung korrekt ist – was in den allermeisten Fällen sicher auch zutreffen wird. Jedoch ist es sowohl unter Windows als auch unter Linux möglich einer Datei eine falsche Dateiendung zu geben. Böse Buben machen dies z.B. um bei schädlichen Email-Anhängen die Funktion zu verschleiern. Eine Datei mit dem Namen boese_datei.pdf.exe wird unter Windows oft nur als boese_datei.pdf angezeigt da die Dateiendung verschleiert wird und erscheint dadurch eine harmlose PDF-Datei statt ein ausführbares Programm zu sein.

Weiterlesen

kais-universum.de