Standard-Programme

Im folgenden werden einige Programme vorgestellt, die für eine Benutzung innerhalb eines Shell-Fensters vorgesehen sind und daher meist mittels der Tastatur gesteuert werden. Derartige Programme haben keine graphische Bedienoberfläche (GUI), sondern sind textbasiert.

Die in der folgenden Auswahl aufgelisteten Programme sind unter Debian/Ubuntu/LinuxMint entweder bereits standardmäßig installiert, oder sie lassen sich einfach aus den Standard-Paketquellen nachinstallieren. Nach der Installation können die Programme von jedem Benutzer des Rechners (ohne SuperUser-Rechte) genutzt werden.

Datei-Verwaltung

Datei-Manager

mc

Der „Midnight Commander“ mc ist ein äußerst praktisches Werkzeug: Er bietet eine klar strukturierte Bedienoberfläche und ermöglicht es, Dateien mit nur wenigen Tastendrücken schnell und elegant zu verwalten.

../_images/midnight-commander.png

mc ist über die Paketverwaltung mittels des gleichnamigen Pakets installierbar:

sudo aptitude install mc

In der Grundeinstellung sind im Midnight-Commander zwei Ordner-Panele nebeneinander angeordnet. Zwischen den beiden Panelen (und damit zwischen den beiden angezeigten Verzeichnissen) kann mittels der Tab-Taste hin- und hergewechselt werden. In einem Panel lassen sich Dateien folgendermaßen auswählen:

  • Mit den Cursor-Tasten \uparrow und \downarrow kann in Einzelschritten zwischen den Dateien des Panel-Ordners navigiert werden.
  • Mit den PageUP- beziehungsweise PageDown-Tasten können umfangreiche Ordner seitenweise „durchblättert“ werden.
  • Mit der Home-Taste gelangt man zum ersten Eintrag eines Verzeichnisses. Dieser ist stets .. und ermöglicht durch Bestätigung mit der Enter-Taste einen Wechsel in das übergeordnete Verzeichnis.
  • Mit der End-Taste gelangt man zum letzten Eintrag eines Verzeichnisses.
  • Mit der Insert-Taste können mehrere Dateien ausgewählt oder wieder demarkiert werden. Durch einen Wechsel in ein anderes Verzeichnis wird die aktuelle Auswahl ebenfalls aufgehoben.

Viele häufig auftretende Aktionen lassen sich mittels der folgenden Funktionstasten bewerkstelligen:

F3 Ausgewählte Datei(en) mit dem internen Betrachter („Pager“) öffnen.
F4 Ausgewählte Datei(en) mit einem Editor öffnen.
F5 Ausgewählte Datei(en) vom aktuellen Panel in das gegenüberliegende kopieren.
F6 Ausgewählte Datei(en) vom aktuellen Panel in das gegenüberliegende verschieben.
F7 Einen neuen Ordner im Verzeichnis des aktuellen Panels erstellen
F8 Ausgewählte Datei(en) und/oder Ordner im aktuellen Panel löschen.
F9 Menüzeile anwählen

Über das Menü Optionens lässt sich der Midnight-Commander bezüglich Aussehen und Verhalten etwas anpassen. Persönlich halte ich folgende Anpassungen für sinnvoll beziehungsweise angenehm:

  • Im Bereich Konfiguration die Option „Sicheres Löschen“ (mittels der Leertaste) aktivieren, um nicht eine Datei versehentlich durch Drücken der Del-Taste, sondern nur mittels F8 löschen zu können.
  • Im Bereich Layout die Menüleiste, Tastenleiste und Informationsleiste (mittels der Leertaste) deaktivieren.
  • Im Bereich Paneloptionen (ebenfalls mittels der Leertaste) „Lynx-artige Bewegungen erlauben“ aktivieren. Dies erlaubt es, mittels der rechten Cursortaste in das ausgewählte Verzeichnis zu wechseln beziehungsweise mit der linken Cursortaste das übergeordnete Verzeichnis anzuwählen. Dies funktioniert übrigens auch auch mit (komprimierten) Archiv-Dateien!
  • Im Bereich Aussehen kann ein anderes Farbschema gewählt werden. Persönlich nutze ich am liebsten das zum Standard-Umfang gehörende Theme modarcon16-efbg-thin.

Weitere nützliche Tastenkombinationen für die Bedienung des mc sind:

Ins Datei unter Cursor markieren beziehungsweise demarkieren
* Alle Dateien des aktuellen Verzeichnisses markieren beziehungsweise demarkieren
+ Dateien nach bestimmten Kriterien markieren
\ Dateien nach bestimmten Kriterien demarkieren
Ctrl Leertaste Größe des ausgewählten Verzeichnisses anzeigen
Ctrl s Text Im Aktuellen Verzeichnis zu einer Datei springen, die mit Text beginnt. Funktioniert auch mit Verzeichnisnamen. Groß-/Kleinschreibung beachten!
Esc ? Im aktuellen Verzeichnis nach Dateien und/oder Inhalten suchen
Esc Tab Auto-Vervollständigung der Eingabezeile (wie Tab in einer Shell)
Esc t Zwischen verschiedenen Dateilisten-Layouts wechseln
Esc , Zwischen horizontaler und vertikaler Fensterteilung wechseln
Esc . Mit . beginnende Konfigurationsdateien und -verzeichnisse ein- und ausblenden
Esc Enter Name der Datei unter dem Cursor in die Eingabezeile kopieren
Ctrl x t Die Namen aller markierten Dateien in die Eingabezeile kopieren
Ctrl x Ctrl t Die Namen aller markierten Dateien der anderen Fensterhälfte in die Eingabezeile kopieren
Ctrl x p Den aktuellen Pfadnamen in die Eingabezeile kopieren
Ctrl x Ctrl p Den Pfadnamen der anderen Fensterhälfte in die Eingabezeile kopieren
Ctrl a Ctrl k Die Eingabezeile säubern (an den Anfang gehen und alles bis zum Ende löschen).
Ctrl O Wechsel zwischen Mitnight-Commander und Shell (mit mc als Background-Job)
Ctrl U Beide Fensterhälften vertauschen
Ctrl \ Verzeichnis-„Hotlist“ anzeigen. Hier lassen sich neben lokalen Pfaden auch FTP- beziehungsweise SSH-Zugangsadressen speichern beziehungsweise aufrufen
Ctrl x Ctrl s Einen Symlink der ausgewählten Datei (beziehungsweise des ausgewählten Ordners) im Pfad der anderen Fensterhälfte erzeugen (anstelle die Datei dorthin zu kopieren)
Ctrl H Liste der zuletzt besuchten Verzeichnisse anzeigen. Auswahl mit Pfeiltasten, Bestätigen mit Enter
Ctrl h Liste der letzten Eingabezeilen-Befehle anzeigen. Auswahl mit Pfeiltasten, Bestätigen mit Enter

Drückt man F9 zum Aktivieren der Menüzeile, anschließend unmittelbar Enter zum Öffnen der Menüs für das linke beziehungsweise rechte Panel und anschließend l für Listenmodus, so kann das Aussehen der Panels etwas optimieren, indem man eine benutzerdefinierte Ansicht wählt. Persönlich nutze ich dabei folgende Anzeige:

half type name | size:4 | mtime

Die Fensterbreite wird damit vorwiegend für die Anzeige der Dateinamen und den jeweiligen Endungen genutzt; am rechten Rand des Panels wird das Datum der letzten Änderung angezeigt (mtime); dazwischen wird die Dateigröße eingeblendet, wobei dafür maximal vier Zeichen genutzt werden dürfen. Dadurch wird eine Dateigröße von 3196000 Bytes in Form von 3.2M dargestellt; es die Dateigröße wird also gerundet und als Kilo- beziehungsweise Mega- oder Gigabyte ausgegeben.

Bisweilen ist es auch nützlich, F9 Enter s einzugeben, um in das Menü für das jeweilige Panel zu gelangen und dabei die Sortierreihenfolge festzulegen. Meist mag man die Dateien alphabetisch sortiert aufgelistet haben, bisweilen ist allerdings auch eine Sortierung nach dem Datum der letzten Änderung, nach der Dateigröße oder den Datei-Endungen hilfreich.

Suchprogramme

find

Mit find können Verzeichnisse nach Dateien durchsucht werden. Angezeigt werden jeweils (nur) die Dateien, die dem vorgegebenen Suchmuster entsprechen. Die allgemeine Syntax lautet:

find basisordner kriterium [weitere kriterien]

Häufig genutzte Kriterien sind beispielsweise:

  • -name suchmuster: Zeigt alle Dateien an, die dem Suchmuster entsprechen – einem „normalen“ Namen, oder einem regulären Ausdruck.
  • -iname suchmuster: Zeigt alle Daten an, die dem Suchmuster entsprechen – Groß- und Kleinschreibung wird dabei ignoriert.
  • -mtime -n: Zeigt alle Dateien an, die im Laufe der letzten n Tage (n * 24h) modifiziert wurden. Um Dateien anzuzeigen, deren letzte Änderung mindestens n * 24h zurückliegt, wird das --Zeichen weggelassen.
  • -executeable: Zeigt nur ausführbare Dateien an.
  • -size n [kMG]: Zeigt nur Dateien an, deren Dateigröße über n Kilo-/Mega-/Giga-Bytes liegt.
  • -user name: Zeigt nur Dateien an, die dem angegebenen Benutzer gehören.
  • -type [fdl]: Zeigt Dateien an, die dem angegebenen Dateityp entsprechen (f: Normale Datei („file“), d: Verzeichnis („directory“), l: Symbolischer Link).

Mit !-kriterium können die obigen und weitere Kriterien (siehe man find) „umgekehrt“ werden, so dass sie die genau gegenteiligen Ergebnisse liefern.

find kann auch in Verbindung mit grep genutzt werden, um zunächst bestimmte Dateien zu finden, und diese dann nach bestimmten Inhalten zu durchsuchen. Um beispielsweise die Namen aller Python-Dateien (Endung .py) eines Verzeichnisses und aller Unterverzeichnisse auszugeben, welche die Zeichenkette import sympy beinhalten, kann man folgendes eingeben:

find ./ -name "*.py" -exec grep -l "import sympy" {} \;

Hierbei werden von find, ausgehend vom aktuellen Verzeichnis ./, alle Dateien mit der Endung .py gesucht. Mit der Option -exec werden diese Dateien an das darauf folgende Programm übergeben, wobei die einzelnen Dateien an der Stelle eingefügt werden, wo die geschweiften Klammern {} stehen. Die exec-Anweisung muss am Ende mit \; abgeschlossen werden.

Noch einfacher ist die Verwendung von xargs, um die von find gefundenen Dateinamen an grep zu übergeben. Sollen beispielsweise alle Dateien mit der Endung .rst nach einem angegebenen Text durchsucht werden, kann folgendes eingegeben werden:

find ./ -name "*.rst" | xargs grep "Suchbegriff"

Nutzt man diese Kombination häufiger, so kann dafür in der Konfigurationsdatei ~/.bashrc ein alias definiert werden:

alias rstgrep='find ./ -name "*.rst" | xargs grep'

Damit kann künftig rstgrep ebenso wie grep mit allen dort zur Verfügung stehenden Optionen aufgerufen werden.

grep

Mit grep („get regular expression“) können Eingabedaten, Textdateien oder Verzeichnisse nach beliebigen Suchbegriffen und regulären Ausdrücken durchsucht werden. Der allgemeine grep-Befehl hat folgende Syntax:

grep [optionen] suchmuster suchpfad

Möchte man beispielsweise das aktuelle Verzeichnis und alle Unterverzeichnisse rekursiv nach einem Suchbegriff durchsuchen, wobei die Groß- und Kleinschreibung ignoriert werden soll, so gibt man folgendes ein:

grep -lir "suchbegriff" ./

Mittels der Option -l werden nur die Dateinamen anstelle der zutreffenden Textzeilen ausgegeben, mit -i („ignore-case“) die Groß-und Kleinschreibung ignoriert, und mit -r („recursive“) die Durchsuchung der Unterverzeichnisse aktiviert. Mittels der Option -c wird die Anzahl an Treffern angezeigt, mit der Option -v werden diejenigen Zeilen als Ergebnis ausgegeben, auf die das Suchmuster nicht zutrifft.

Möchte man alle Ergebnisse anzeigen, die auf (mindestens) eines von mehreren angegebenen Suchmustern zutreffen, so können die einzelnen Suchmuster jeweils mit der Option -e angegeben werden.

Als Exit-Status liefert grep den Wert 0, wenn die Suche erfolgreich war, 1, wenn das Suchmuster nicht gefunden wurde, und 2, wenn bei der Suche ein Fehler aufgetreten ist (beispielsweise eine Datei nicht lesbar war).

locate

Mit locate suchbegriff werden alle Dateinamen des Systems nach einem Suchbegriff durchsucht und die Ergebnisse angezeigt. Mit locate -i suchbegriff wird dabei die Groß- und Kleinschreibung ignoriert.

Um auch neueste Änderungen, die sich seit dem letzten Systemstart ergeben haben, anzuzeigen, kann die Datei-Datenbank mittels updatedb aktualisiert werden.

Dateien kopieren, verschieben, erstellen und löschen

cp

Mit cp datei neuer-pfad wird eine Datei (oder ein Verzeichnis) an eine andere Stelle kopiert. Es können mehrere Dateien auf einmal angeben werden; der zuletzt angegebene Pfad stellt dann den Zielpfad dar, in den alle zuvor angegebenen Dateien kopiert werden.

  • Mit cp -r werden auch Unterverzeichnisse rekursiv kopiert (andernfalls werden sie weggelassen).
  • Mit cp -s wird anstelle des Kopierens ein symbolischer Link am Zielpfad erstellt.

mkdir

Mit mkdir verzeichnisname wird ein neues Verzeichnis angelegt. verzeichnisname kann auch ein absoluter Pfad sein, dann wird das Verzeichnis an entsprechender Stelle angelegt.

mv

Mit mv datei neuer-pfad wird eine Datei (oder ein Verzeichnis) an eine andere Stelle verschoben. Es können mehrere Dateien auf einmal angeben werden; der zuletzt angegebene Pfad stellt dann den Zielpfad dar, in den alle zuvor angegebenen Dateien verschoben werden.

Mit mv alter-dateiname neuer-dateiname lässt sich eine Datei umbenennen.

rm

Mit rm datei(en) lässt sich eine oder mehrere Datei(en) unwiderruflich löschen.

  • Mit rm -r verzeichnis/* werden rekursiv alle Inhalte, ausgehend von verzeichnis gelöscht.

Achtung: Die Shell kennt keinen „Papierkorb“, Löschvorgänge sind somit endgültig. Vor dem Löschen sollte man sich daher stets vergewissern, ob man die entsprechenden Dateien auch wirklich löschen möchte.

Mit regulären Suchmustern wie * ist beim Löschen stets besondere Vorsicht geboten: Während rm -r *~ ausgehend vom aktuellen Verzeichnis alle (von manchen Editoren angelegten) temporären Dateien löscht, würde rm -r ~* sämtliche Inhalte des Home-Verzeichnisses unwiderruflich löschen!

rmdir

Mit rmdir verzeichnisname wird ein Verzeichnis gelöscht, sofern es leer ist. Möchte man ein nicht-leeres Verzeichnis löschen, so empfiehlt sich das einfach zu tippende rm -r  verzeichnisname* (es werden rekursiv alle Dateien, deren Pfadname mit verzeichnisname beginnt, gelöscht).

rsync

Mit rsync quelldatei backupdatei kann man eine Datei oder ein Verzeichnis gegenüber einer Backup-Kopie der Datei beziehungsweise des Verzeichnisses aktualisiert („synchronisiert“) halten. Der Backup findet dabei nur in eine Richtung statt, rsync prüft also anhand der letzten Bearbeitungszeit (MTIME) einer Datei, ob sich in der Quelle gegenüber dem Backup eine Veränderung ergeben hat. Falls ja, werden diese Änderungen übernommen.

Möchte man einen Backup von einem ganzen Verzeichnispfad mitsamt allen Unterverzeichnissen anlegen oder aktuell halten, so empfiehlt sich folgender Aufruf von rsync:

rsync -vahz quellverzeichnis/* zielverzeichnis

Das Zielverzeichnis muss dabei ein bestehender Ordner sein, kann sich allerdings auch auf einer anderen Partition, einem externen Datenträger, oder – bei Verwendung von ssh – sogar auf einem anderen Rechner befinden.

shred

Mit shred dateiname kann eine Datei sicher gelöscht werden, so dass sie auch mit Recovery-Programmen nicht wiederhergestellt werden kann. Während beim „normalen“ Löschen lediglich der „Einhängepunkt“ der Datei entfernt wird, überschreibt shred den belegten Speicherplatz mit zufällig mit Nullen und Einsen.

Man kann shred auch verwenden, um ganze Partitionen oder Festplatten zu „säubern“ (beispielsweise, wenn diese weiterverkauft werden sollen); als Dateiname muss in diesem Fall der Device-Name der Ziel-Partition angegeben werden.

touch

Mit touch dateiname lässt sich eine neue, leere Datei anlegen – beispielsweise eine neue Log-Datei oder eine Datei zu Test-Zwecken.

Datei-Eigenschaften

chmod

Mit chmod lassen sich die Zugriffsrechte einer Datei oder eines Verzeichnisses festlegen. Eine Datei kann lesbar (r für „read“), schreibbar (w für „write“) und/oder ausführbar (x für „executeable“) sein; Verzeichnisse sollten stets ausführbar sein.

Beispiele:

  • Mit chmod +x file wird eine Datei (beispielsweise ein Shell-Skript) im aktuellen Ordner ausführbar gemacht. Sie kann anschließend mit ./file aufgerufen werden.
  • Mit chmod -w file werden der Datei die Schreibrechte entzogen.

file

Mit file dateiname werden ausführliche Datei-Informationen (Dateityp, Version, Kodierung) der angegebenen Datei angezeigt.

Verlinkungen

ln

Mittels ln beziehungsweise ln -s lassen sich die zwei unter Linux möglichen Arten von Verknüpfungen erzeugen:

  • Mit ln datei1 datei2 wird zu einer existierenden Datei datei1 die Datei datai2 als so genannter „Hardlink“ erzeugt. Dabei handelt es sich im Grunde um eine zusätzliche Bezeichnung für die selbe Speicherstelle auf der Festplatte. Um beispielsweise eine mit Hardlinks versehene Datei zu löschen, müssen ebenfalls sämtliche Hardlink entfernt werden, um die Speicherstelle freizugeben.

    Da sich Hardlinks stets auf der gleichen Partition befinden müssen wie die Original-Dateien und sich nur auf „normale“ Dateien, jedoch nicht auf Verzeichnisse anwenden lassen, werden sie unter Linux nur selten verwendet.

Archive

bzip2, bunzip2

Mit bzip2 dateiname kann eine Datei zu einer gleichnamigen Datei im bz2-Format im komprimiert werden. Mit bunzip2 dateiname.bz2 kann die Datei wieder dekomprimiert werden.

Gibt man mehrere Dateinamen an, so wird jede Datei in ein eigenes Archiv komprimiert. Um eine einzelne bz2-komprimierte Datei zu erhalten, die mehrere Dateien enthält, so werden diese zunächst mittels tar zu einem Archiv gepackt.[3]

gzip, gunzip

Mit gzip dateiname kann eine Datei komprimiert, mit gunzip dateiname.gz wieder dekomprimiert werden. Mittels zcat dateiname.gz kann eine komprimierte Datei auf dem Bildschirm ausgegeben werden, ohne dass sie dazu auf der Festplatte entpackt wird (dies wird beispielsweise für Hilfeseiten genutzt, die in komprimierter Form auf der Festplatte abgelegt sind).

tar

Mit tar können mehrere Dateien zu einem Archiv zusammengefasst werden. Beispiel:

tar -cf archiv.tar datei1 datei2 ...

Mit der Option z wird das Archiv zusätzlich mit gzip komprimiert. Mit der Option v wird der Fortschritt der Archivierung angezeigt („verbose“ = redselig).

tar -czvf archiv.tar.gz datei1 datei2 ...

Der Inhalt eines tar-Archivs kann mittels tar tf archiv.tar angezeigt werden. Mittels der Option x (extract) kann der Inhalt des Archivs wieder entpackt werden:

tar -xvf archiv.tar          # für  "normale"   Archive
tar -xvzf archiv.tar.gz      # für komprimierte Archive

Anstelle der Option -z kann auch -j eingegeben werden, um anstelle der gz-Komprimierung das stärker komprimierende bz2-Format zu nutzen.

zip, unzip

Mit zip können mehrere Dateien zu einem Datei-Archiv gebündelt, mit unzip wieder entpackt werden. Die grundlegenden Befehle sehen etwa so aus (weitere Informationen erhält man mittels man zip beziehungsweise man unzip):

  • Mit zip archivname.zip datei1 datei2 ... werden mehrere Dateien zu einem (komprimierten) zip-Archiv gebündelt. Mit zip -r können Dateien und/oder Verzeichnisse rekursiv (samt Unterverzeichnissen) gepackt, mit zip -g zu einem bestehenden Archiv hinzugefügt werden.
  • Mit unzip archivname wird ein zip-Archiv wieder entpackt.

Pager und Editoren

antiword

Mit antiword lassen sich MS-Word-Dokumente (.doc) bequem in einem Shell-Fenster als Textform anzeigen.

antiword kann mittels der Paketverwaltung aptitude einfach installiert werden:

sudo aptitude install antiword

Die Ausgabe eines Word-Dokuments auf dem Bildschirm lässt sich dann folgendermaßen erreichen:

antiword file.doc

Die Ausgabe kann selbstverständlich auch in eine Textdatei umgeleitet werden:

antiword file.doc > file.txt

Das erspart oftmals ein Öffnen von LibreOffice oder Abiword. Leider kann antiword keine neueren docx-Dateien als Text ausgeben; hierzu kann allerdings das Paket docx2txt mittels apt installiert werden, das ein gleichnamiges Programm zum Abbilden einer docx-Datei in eine gleichnamige .txt-Datei genutzt werden kann.

cat

Mit cat file wird der Inhalt einer Datei auf dem Bildschirm ausgegeben. Bei der Ausgabe von langen Dateien kann mit Shift PageUp und Shift PageDown auf- und abgeblättert werden. Der Anfang oder das Ende einer Datei kann optional auch mit head file beziehungsweise tail file angezeigt werden.

cat kann auch verwendet werden, um zwei Textdateien zu einer einzelnen zu verbinden („concatenate“). Um beispielsweise eine Textdatei an eine andere anzuhängen, lautet die Syntax cat datei1 >> datei2. Um aus zwei Dateien eine neue Datei zu erstellen, lautet die Syntax cat datei1 datei2 > datei-neu.txt.

less

Mit less dateiname kann der Inhalt einer Textdatei angezeigt werden. Die Anzeige beginnt am Anfang der Datei, mit der \downarrow beziehungsweise \uparrow kann innerhalb der Datei nach unten beziehungsweise oben gescrollt werden. Mit / kann die Datei nach einem Begriff durchsucht werden, mit n kann man zum nächsten Suchergebnis springen. Mit q wird less wieder beendet.

man

Mit man programm werden die Hilfeseiten („Manual-Pages“, „Manpages“) eines Programms angezeigt. Hier werden sämtliche Programm-Aufruf-Optionen sowie meist einige nützliche Beispielfälle beschrieben.

Beispiel: Mit man less werden die Hilfe-Seiten zum Pager-Programm „less“ angezeigt.

Um alle Hilfeseiten nach einem bestimmten Begriff zu durchsuchen, kann man mit der Option -k („keyword“) aufgerufen werden:

Beispiel: Mit man -k find werden alle Programmnamen und Funktionen aufgelistet, die den Suchbegriff „find“ in ihrer Hilfeseite enthalten.

Internet

Netzwerk-Programme

host

Mit host URL kann die IP-Adresse einer Webseite angezeigt werden. Beispiel:

host www.grund-wissen.de
# www.grund-wissen.de has address 188.40.57.88

Häufig wird host in Kombination mit dem Zusatz-Programm whois verwendet, um zusätzliche Informationen über den Server einer Domain zu erhalten.

hostname

Mit hostname kann der Netzwerk-Name des Rechners angezeigt werden, auf dem man aktuell eingelogt ist. Dies kann beispielsweise nützlich sein, wenn man via ssh auch auf externen Rechnern arbeitet.

Um den Netzwerk-Namen des Computers für die Dauer der aktuellen Sitzung zu ändern, kann man hostname neuer-name eingeben; um ihn permanent zu ändern, muss dieser in der Datei /etc/hostname mit SuperUser-Rechten geändert werden.

ip

Mit ip r kann die lokale Netzwerkadresse (192.168.xxx.xxx) angezeigt werden.

Weitere Nutzungsmöglichkeiten des (ziemlich umfangreichen) Programms ip sind im Abschnitt Netzwerk-Verwaltung mittels iproute2 näher beschrieben.

nmap

Mit nmap können unter anderem anderem die Rechner innerhalb des lokalen Netzwerks mitsamt lokaler Netzwerkadresse aufgelistet werden. Die Syntax hierzu lautet:

nmap -sP 192.168.1.0/24

In diesem Fall wird davon ausgegangen, dass die zu durchsuchenden Netzwerkadressen die Form 192.168.1.xxx haben, wobei xxx eine laufende Nummer zwischen 1 und 255 sein kann. Ebenfalls möglich sind andere Namensräume, beispielsweise 192.168.2.xxx. Welcher bei den lokalen Rechnern vorliegt, hängt von den Einstellungen des Routers ab; man kann den lokalen Namensraum mittels Eingabe ip r abfragen.

ssh

Mit ssh benutzername@rechneradresse kann man sich auf einem anderen Linux-Rechner im lokalen Netzwerk oder im Internet anmelden. Ist die Rechneradresse erreichbar, erscheint ein Dialogfeld zur Passworteingabe. Alle auf dem Fremdrechner verfügbaren Shell-Befehle und -Programme lassen sich somit „ferngesteuert“ ausführen.

Zu einer Verwendung von ssh im lokalen Netzwerk sollten die folgenden beiden Pakete installiert werden:

sudo aptitude install openssh-client openssh-server

Die Benutzung von ssh ist im Abschnitt SSH – Arbeiten auf entfernten Rechnern ausführlich beschrieben.

whois

Mit whois können Informationen über den Betreiber, den Standort und das System des Servers angezeigt werden, der zu einer bestimmten IP-Adresse gehört; letztere kann zuvor mittels host ermittelt werden:

host grund-wissen.de
# grund-wissen.de has address 188.40.57.88
# grund-wissen.de mail is handled by 10 mail.grund-wissen.de.

whois 188.40.57.88
# ... viele Infos ...

Üblicherweise befindet sich unter den angezeigten Informationen auch eine Email-Adresse des Server-Administrators.

Download-Helfer

wget

Mit wget lassen sich mit wenig Aufwand Downloads von der Shell aus starten. Dabei können ganze Verzeichnisse (falls gewünscht auch mitsamt Unterverzeichnissen), bestimmte Dateitypen, Dateigrößen usw. als Auswahlkriterien festgelegt werden.

Um beispielsweise alle Beispiel-Dateien (1000 Stück!) des Computer-Algebra-Systems Maxima von der Seite http://www.lungau-academy.at/wx1/ herunterzuladen, genügt folgender Befehl:

wget -r -l1 -np -A wxmx http://www.lungau-academy.at/wxmax1001/

Hierbei steht -r für ein rekursives Herunterladen, -l1 beschränkt die Anzahl der durchsuchten Unterverzeichnisse auf 1. Die Option -np beziehungsweise --no-parent ist wichtig, um zu verhindern, dass auch übergeordnete Verzeichnisse durchsucht werden – dies könnte im Zweifelsfall die Downloadmenge erheblich vergrößern. Die Option -A filetype legt anhand der angegebenen Dateiendung(en) fest, welche Datentypen akzeptiert werden (im umgekehrten Fall können mit -R filetype bestimmte Datentypen zurückgewiesen werden).

Ein gutes Tutorial (en.) findet sich hier.

Multimedia

PDF-Werkzeuge und Texterkennung

pdfimages

Das pdfimages-Programm ermöglicht es, alle in einer PDF-Datei enthaltenen Graphiken beziehungsweise Bilder auf einmal zu „extrahieren“, also als einzelne Bilddateien zu speichern.

pdfimages ist Teil des poppler-utils-Pakets, das sich folgendermaßen installieren lässt:

aptitude install poppler-utils

Um alle Bilder zu extrahieren, gibt man im Ordner der PDF-Datei folgendes ein:

pdfimages dateiname.pdf dateiname

Die Bilder werden dann als dateiname-001.ppm usw. gespeichert; mit pdfimages -f n beziehungsweise pdfimages -l n können jeweils die erste und/oder die letzte zu scannende Seitennummer (n) festgelegt werden. Die extrahierten Bilder lassen sich mittels folgendem Skript beispielsweise in PNG-Dateien umwandeln:

for i in *.ppm; do convert $i $(basename $i .ppm).png ; done

pdftotext

Mit pdftotext pdf-datei lässt sich der gesamte Text einer PDF-Datei in eine Textdatei extrahieren. Der Text lässt sich dann oftmals einfach mittels ein paar Vim -Tricks (Einfügen von Restructured-Text-Syntax) und gegebenenfalls Sphinx in ein leicht durchsuchbares Wiki umwandeln.

pdftk

Das pdftk-Toolkit ermöglicht eine vielseitige Nachbearbeitung von pdf-Dateien. In den man pdftk-Hilfeseiten finden sich zahlreiche Beispiele, wie man mittels pdftk mehrere pdf-Dokumente zusammenfügen, einzelne Seiten entfernen, rotieren, oder vertauschen kann.

pdftk lässt sich wie üblich aus den Paketquellen installieren:

sudo aptitude install pdfk

Der grundsätzliche Aufruf erfolgt dann in folgender Form:

pdftk inputdatei(en) cat [seitenzahlen] output outputdatei.pdf
  • Um mehrere pdf-Dokumente zu einer Datei zusammenzufügen, genügt folgender Aufruf:
pdftk datei1.pdf datei2.pdf cat output neue-datei.pdf
  • Um einzelne Seiten aus einer pdf-Datei heraus zu kopieren, kann pdftk folgendermaßen aufgerufen werden:
pdftk datei.pdf cat 5 7 9-13 output ausschnitt.pdf

Mehr Infos zu pdftk gibt es unter pdftk im Ubuntu-Wiki.

tesseract

Mit tesseract als Texterkennungs-Software lassen sich im .tif-Format eingescannte oder photographierte Texte zurück in Textdateien verwandeln. Im Gegensatz zu den eingescannten Bilddateien sind diese dann durchsuch- und wiederverwertbar.

Installation:

tesseract ist über die Paketverwaltung mittels der Pakete tesseract-ocr beziehungsweise tesseract-ocr-deu und tesseract-ocr-eng für deutsche und englische Sprachunterstützung installierbar.

sudo aptitude install tesseract-ocr tesseract-ocr-deu tesseract-ocr-eng

Auch zahlreiche weitere Sprachen sind verfügbar, die entsprechenden Pakete können mit aptitude search tesseract angezeigt werden.

Benutzung:

tesseract benötigt als Eingabe-Format .tif-Dateien mit maximal acht Graustufen. Der Aufruf von tesseract zur Text-Erkennung erfolgt dann für einen deutschsprachigen Text folgendermaßen:

tesseract input-file.tif output-file  -l deu

Für englischsprachige Dateien wird entsprechend -l eng angegeben. An die Ausgabe-Datei wird automatisch die Endung .txt angefügt.

Tip: Screenshots nutzen

Neben der Limitierung auf acht Graustufen hat tesseract den Nachteil, dass der Original-Text einspaltig sein sollte – eine Trennlinie oder Tabulatur zwischen mehreren Spalten wird schlichtweg ignoriert. Wenn eine mehrspaltiger oder mehrfarbig gescannte beziehungsweise photographierte Original-Datei vorliegt – womöglich noch dazu in einem anderen Dateiformat –, so kann man sich, falls man sich ohnehin nur für bestimmte Ausschnitte interessiert, mit einem entsprechenden Screenshot-Alias in der ~/.bashrc helfen:

alias it='import -depth 8 txt_$(date +%Y%m%d_%H%M%S).tif'

Persönlich verwende ich das obige Beispiel zur Aufnahme von Screenshots mittels des import-Befehls aus dem Imagemagick-Paket. Die Angabe -depth 8 legt die Anzahl der Graustufen des Screenshots auf acht fest. Die Namen der einzelnen Screenshots sollen dann einem einheitlichen Namensmuster und schließlich chronologisch sortiert vorliegen; dies wird durch die Nutzung des date-Befehls erreicht.

Wird die obige Code-Zeile in die Konfigurationsdatei ~/.bashrc kopiert (und diese im gleichen Shell-Fenster gegebenenfalls mit source ~/.bashrc neu geladen), so kann mittels Eingabe von it stets ein neuer Screenshot im aktuellen Verzeichnis gespeichert werden – es muss nur noch mit dem erscheinenden Fadenkreuz ein Bidschirm-Bereich für den Screenshot festgelegt und durch einen Mausklick bestätigt werden.

Tip: Stapelverarbeitung mehrerer .tif-Dateien:

Mag man mehrere .tif-Dateien auf einmal der Texterkennung zuführen, so kann dies mit folgendem Einzeiler-Skript erreicht werden:

for i in *.tif; do tesseract $i $i -l deu; done;

Die Ausgabedateien werden in diesem Fall nach den Eingabe-Dateien benannt, gefolgt von der automatischen Endung .txt.

Um auf diese Weise zusammengehörige Screenshots eines Buchs der Texterkennung zuzuführen und die erzeugten Dateien wieder zu vereinen, sollten die Screenshots zum einen in einem separaten Ordner aufgenommen beziehungsweise dorthin kopiert werden. Zum anderen sollten die Screenshots entlang eines Buches stets „von vorne nach hinten“ aufgenommen werden, da auch die resultierenden Bild- beziehungsweise Textdateien chronologisch sortiert sind.

Das Zusammenführen aller Textdateien eines Ordners zu einer neuen Zieldatei gelingt schließlich folgendermaßen:

for in in *.txt; do cat $i >> new-file.rst ; done

Für die Zieldatei nutze ich gerne die Endung .rst, einerseits, um bei möglichen späteren Erweiterungen Namenskonflikte zu vermeiden (hierbei würde eine Zieldatei new-file.txt bei einem erneuten Aufruf des obigen Befehls mit auf sich selbst abgebildet werden), andererseits, um den Text gleich für eine „Informationsverwaltung“ oder spätere Publikationen mittels Sphinx bereit zu halten.

Der letztliche „Workflow“ sieht möglicherweise so aus: Farbig gescannte PDF-Datei mit atril, evince oder einem anderen Dokumentenbetrachter öffnen; in einem Shell-Fenster (beispielsweise guake) zu einem gewünschten Zielordner wechseln; mittels Eingabe von it und Textauswahl mit der Maus wiederholt Screenshots (beliebig viele) erzeugen; die obigen beiden Einzeiler ausführen und fertig!

Bei einigermaßen guten Scans und einer brauchbaren Auflösung des Bildschirms beim Erzeugen der Screenshots – hierbei genügt eine Vollbild-Darstellung des Dokuments auf einem 17-Zoll-Monitoren in den allermeisten Fällen, bei kleinen Schriftgrößen oder kleineren Monitoren notfalls etwas „hineinzoomen“ und lieber mehrere kleinere Bildausschnitte wählen – sollte das Ergebnis von tesseract durchaus zufriedenstellend sein.

Tip: Tiff-Dateien nachbearbeiten

Möchte man mehrere .tif-Dateien zu einer Multipage-Tiff-Datei zusammenfügen oder einzelne Seiten einer Multipage-Tiff-Datei entfernen, bieten sich die Hilfsprogramme tiffcp, tiffsplit und tiffcrop an.

Diese können mittels des libtiff-tools-Paketes installiert werden:

sudo aptitude install libtiff-tools

Das gleiche Paket stellt auch den Befehl tiff2pdf zur Umwandlung einer Multipage-Tiff-Datei in ein PDF-Dokument bereit.

Schließlich kann auch das Programm unpaper zur Aufbesserung von Scans genutzt werden. Infos hierzu gibt es unter unpaper im Ubuntuuser-Wiki.

Bildbearbeitungs-Programme

feh

Feh ist ein kleines, aber feines Bildbetrachtungs-Programm. Es kann über das gleichnamige Paket mittels der Paketverwaltung installiert werden:

sudo aptitude install feh

feh setzt eine aktive graphische Oberfläche voraus, kann also nicht als „reines“ Shell-Programm (ohne X-Server) verwendet werden. (Für derartige Anwendungen kann jedoch auf das Framebuffer-Image-Programm fbi zurückgegriffen werden.)

Der grundlegende Aufruf von feh sieht folgendermaßen aus:

feh image-file

Um alle Bilder des aktuellen Verzeichnisses anzusehen, genügt folgender Aufruf:

feh *

feh kann auf einfache Weise über die Tastatur gesteuert werden:

  • Mittels der Pfeiltasten \leftarrow und \rightarrow kann, sofern mehrere Bilder geöffnet werden, zum vorherigen beziehungsweise nächsten Bild gewechselt werden.
  • Mittels der Pfeiltasten \uparrow und \downarrow wird in das Bild hinein- beziehungsweise herausgezoomt.
  • Mittels v kann zwischen einer Vollbild- und einer normalen Anzeige gewechselt werden.
  • Mittels < und > kann ein Bild gegen beziehungsweise mit dem Uhrzeigersinn um 90° gedreht werden.
  • Mittels q („quit“) wird feh beendet.

feh kann mit einer Vielzahl an Parametern aufgerufen werden, um beispielsweise die geöffneten Bilder als Slideshow wiederzugeben. Hilfreich sind insbesondere die beiden Parameter -d und -F, mittels derer feh automatisch im Vollbild-Modus startet (feh -F) und den aktuellen Datei-Namen anzeigt (feh -d). Um beide Optionen als Standard zu definieren, bietet sich in der Konfigurationsdatei ~/.bashrc folgendes Alias an:

alias feh='feh -d -F'

Nach einem neuen Laden der Konfigurationsdatei (source ~/.bashrc) beziehungsweise in jedem neu geöffneten Shell-Fenster wird feh anschließend automatisch mit den beiden obigen Parametern gestartet.

Weitere Infos finden sich in den man-Pages und unter Feh im Ubuntu-Wiki.

imagemagick

Bei Imagemagick handelt es sich um eine Sammlung von mehreren kleinen Bildbearbeitungs-Programmen, mit deren Hilfe einfache Anpassungen von Graphiken – beispielsweise Formatumwandlungen, Erzeugung von kleinen Vorschaubildern, Fotomontagen u.ä. – stapelweise als Shell-Skript auf eine Vielzahl von Dateien anwenden lassen.

Sollte imagemagick nicht bereits installiert sein, lässt es sich einfach mittels aptitute nachinstallieren:

sudo aptitute install imagemagick

Die Imagemagick-Suite umfasst folgende Bildbearbeitungs-Programme:

  • import
  • convert
  • montage
  • display

Diese kleinen Hilfsprogramme sind nützlich, um automatisiert bestimmte Bildbearbeitungen als Skript auszuführen.

Beispiele:

  • Umwandeln eines transparenten in einen weißen Hintergrund:

    convert image-old.png -background white -flatten -alpha off image-new.png
    
  • Zusammenfügen mehrere Bilder vertikal zu einem „Filmstreifen“:

    montage -mode concatenate -tile 1x in-*.jpg out.jpg
    
  • Verkleinern von Digitalkamera-Fotos auf kleine Formate, beispielsweise Fotos von Rezepten für’s Vegan-Kochbuch:

    for i in *.jpg; \
        do convert $i -resize '1200x800 -quality 80 $(basename $i .jpg).png; \
        done
    

Das obige Mini-Skript wandelt alle .jpg-Dateien des aktuellen Verzeichnisses in 1200 px breite PNG-Dateien gleichen Namens um (mittels der basename-Anweisung wird die Endung .jpg abgeschnitten). Die Dateien können anschließend mit pngnq weiter komprimiert werden.

Mehr Infos zu imagemagick gibt es unter Imagemagick im Ubuntu-Wiki.

pngnq

Das Programm pngnq kann verwendet werden, um die Dateigröße von Bildern im PNG-Format durch Komprimierung erheblich (teilweise > 50%) zu reduzieren. Dabei werden von pngnq Qualitätsverluste in Kauf genommen, die jedoch mit bloßem Auge (meist) nicht zu erkennen sind – beispielsweise reicht in vielen Fällen zur Darstellung eines Bildes eine Farbtiefe von 256 Farben völlig aus.[4]

Persönlich verwende ich pngnq beispielsweise, um mit Inkscape erstellte und als png exportierte Graphiken zu verkleinern, damit die Webseiten, in denen die Graphiken vorkommen, schneller und mit weniger Serverlast geladen werden können. Dazu nutze ich hintereinander folgende zwei Mini-Skripte:

for f in $(find ./ -name '*.png' | grep -v nq8);  do pngnq -n 256 $f && rm $f ; done

for f in $(find ./ -name '*.png');  do mv $f $(dirname $f)/$(basename $f | sed 's/-nq8//') ; done

Mit der ersten Zeile wird pngnq auf alle png-Dateien angewendet; die neuen Dateien erhalten automatisch die Endung -nq8 angehängt, die Originale werden gelöscht. Im zweiten Schritt werden die neuen Dateien umbenannt, so dass sie wieder mit den ursprünglichen identisch sind (aber im Vergleich zu den Originalen oft nur noch halb so viel Speicherplatz benötigen).

Audio- und Video-Programme

abcde

abcde steht für „A better CD encoder“ und bietet in der Tat eine elegante Möglichkeit, eine Audio-CD automatisch als ogg oder mp3-Dateien einzulesen.

abcde ist über die Paketverwaltung mittels des gleichnamigen Pakets installierbar:

sudo aptitude install abcde

Nach dem Einlegen einer Audio-CD und dem Aufruf von abcde wird eine CD-Datenbank durchsucht und gegebenenfalls passende Einträge angezeigt. Nach Wunsch können die Meta-Daten noch bearbeitet werden, ansonsten wird nach Bestätigung mit Enter automatisch der Einlese- und Kodierungsprozess gestartet.

cmus

Der Console-Music-Player cmus bietet eine schlichte und übersichtliche Bedienoberfläche, um alle gängigen Audio-Formate (ogg, mp3, wav, flac, aac) sowie Playlisten (m3u und pls) innerhalb eines Shell-Fensters abzuspielen. Der Player bietet nicht so viele Möglichkeiten wie beispielsweise audacious, benötigt dafür aber keine graphische Oberfläche.

cmus ist über die Paketverwaltung mittels des gleichnamigen Pakets installierbar:

sudo aptitude install cmus

Anschließend kann der Player durch den Aufruf von cmus gestartet werden. Mittels der Tasten 1 bis 7 kann zwischen verschiedenen Ansichten gewechselt werden:

1 Bibliothek Zweispaltige Ansicht: Links werden Künstler und Album aufgelistet, rechts die jeweiligen Lieder
2 Sortierte Bibliothek (Flache Listenansicht aller Lieder, mit der Möglichkeit, die Sortierreihenfolge selbst festzulegen)
3 Wiedergabeliste Anzeige der (editier- und speicherbaren) Wiedergabeliste
4 Warteliste (Queue) Anzeige der unmittelbar abzuspielenden Lieder
5 Datei-Browser Dateisystemansicht mit der Möglichkeit zum Hinzufügen von Liedern zur Sammlung, der Wiedergabeliste oder Warteliste
6 Datei-Filter Anzeige benutzerdefinierter Filter
7 Einstellungen Mit d kann man Einstellungen löschen, mit Enter modifizieren sowie mit Leertaste konkrete Variablen ändern.

Beim erstmaligen Starten von cmus sollte zunächst ein Verzeichnis mit Audio-Dateien in die Bibliothek geladen werden. Hierfür wechselt man mittels : auf die Kommandozeile und gibt dort folgende Anweisung ein:[5]

:add ~/Musik

Nachdem die Sammlung eingelesen wurde, werden die Lieder in den Bibliotheks-Ansichten 1 und 2 den Namen der Interpreten sortiert angezeigt.

In den einzelnen Ansichten (1 bis 5) können mittels der jeweiligen Tasten folgende Funktionen aufgerufen werden:

Enter Datei abspielen beziehungsweise Verzeichnis öffnen
c Pause-Modus an- und ausschalten („continue“)
b Nächsten Titel abspielen
/ nach Suchmuster in Dateinamen oder ID-Tags suchen
n zur nächsten Datei gehen, auf die Suchmuster zutrifft
N zur vorherigen Datei gehen, auf die Suchmuster zutrifft
y Datei oder Verzeichnis unter Cursor zur Wiedergabeliste (3) hinzufügen
e Datei oder Verzeichnis unter Cursor an die Warteliste (4) anfügen
E Datei oder Verzeichnis unter Cursor an den Anfang der Warteliste (4) setzen
a Datei oder Verzeichnis unter Cursor in die Bibliothek (1 beziehungsweise 2) aufnehmen
- Lautstärke um 10% herabsetzen
+ Lautstärke um 10% erhöhen
, Aktuell abgespielte Datei 1 Minute zurückspulen
. Aktuell abgespielte Datei 1 Minute vorspulen
\leftarrow Aktuell abgespielte Datei 5 Sekunden zurückspulen
\rightarrow Aktuell abgespielte Datei 5 Sekunden vorspulen

In der Infozeile (vorletzte Zeile auf dem Bildschirm) werden auf der rechten Seite Infos über die aktuellen Wiedergabeoptionen (Zufallswiedergabe, Wiederholung usw.) eingeblendet. Diese können folgendermaßen verändert werden:[6]

s Zufallswiedergabe aktivieren oder deaktivieren
r Wiedergabe-Modus (der ganzen Playliste beziehungsweise des aktuellen Albums) aktivieren oder deaktivieren
Ctrl r Wiederholung des aktuellen Lieds aktivieren oder deaktivieren

Um Dateien innerhalb der Wiedergabeliste oder Warteliste nach oben oder unten zu verschieben, können die Tasten p und P („push“) genutzt werden:

p Datei unter Cursor in der Ansicht 3 oder 4 nach unten verschieben
P Datei unter Cursor in der Ansicht 3 oder 4 nach oben verschieben

Markiert man hierbei zunächst mehrere Dateien mittels der Space-Taste, so können diese anschließend mittels p oder P hinter beziehungsweise vor die Datei unter dem Cursor verschoben werden. Mit D oder Del können Dateien wieder aus der Wiedergabe- oder Warteliste entfernt werden.

Mehr Infos gibt es unter CMUS im Ubuntuuser-Wiki.

mencoder

Das Programm mencoder kann für vielerlei Arten von Video-Format-Umwandlungen genutzt werden. Beispielsweise lassen sich damit mehrere Teil-Videos (beispielsweise .flv- oder .mp4-Dateien von Youtube) folgendermaßen zu einer einzigen Datei zusammenfügen:

mencoder -ovc copy -oac copy -o complete-movie.mp4 part1.mp4 part2.mp4

Mehr Infos gibt es unter Mencoder im Ubuntuusers-Wiki.

Systemverwaltung

Konfigurationen

alias

Mit alias kurzname='langer befehl' lassen sich Abkürzungen für längere und/oder öfter gebrauchte Befehle definieren. Meist werden solche Aliase in der Konfigurationsdatei ~/.bashrc definiert. Steht dort in einer Zeile beispielsweise alias q='exit', so lässt sich das aktuelle Shellfenster wahlweise mit q oder mit exit schließen. Ist ein alias ll='ls -lh' definiert, so lässt sich eine ausführliche Liste des aktuellen Verzeichnisses mit ll aufrufen.

Persönlich verwende ich alias-Definitionen in sehr großem Umfang; beispielsweise habe ich vielerlei Abkürzungen zum schnellen Anwählen von Verzeichnissen definiert, beispielsweise cdhg='cd ~/data/homepage/grund-wissen', cdhgp='cd ~/data/homepage/grund-wissen/physik' usw.

passwd

Mit passwd kann man das zum eigenen Account gehörende Passwort ändern. Man wird nach einem neuen Passwort gefragt, wobei dieses sicherheitshalber zwei mal eingegeben werden muss.

Monitoring, Prozess- und PaketVerwaltung

apt, aptitude

Mit apt-cache search suchbegriff beziehungsweise aptitude search suchbegriff kann das System nach Paketen durchsucht werden, deren Name oder Beschreibung dem Suchbegriff entspricht. Die Ausgabe von aptitude gibt zusätzlich an, ob die entsprechenden Pakete installiert sind (i für „installed“) oder nicht (p für „purged“).

Zum (De-)Installieren von Paketen sind Superuser-Rechte erforderlich; auf die Paketverwaltung mittels apt wird daher erst im Abschnitt Administrations-Programme ausführlich eingegangen.

df

Mit df wird angezeigt, wie viel Speicherplatz im Augenblick auf den eingehängten Laufwerken verfügbar ist („disk free“); df kann auch eine allgemeine Übersicht über eingehängte Laufwerke ausgeben

  • Mit df -h wird die Ausgabe „human readable“ gestaltet, die Größen werden also in KB, MB oder GB anstelle von Bytes angegeben.
  • Mit df -aTh erhält man eine ausführliche, aber gut lesbare Übersicht über alle eingehängten Dateisysteme und ihre Partitionen inklusive ihrer Device-Namen und Einhänge-Punkte (eine ähnliche Ausgabe erhält man mittels mount | column -t).

du

Mit du wird angezeigt, wie viel Festplattenspeicher durch das aktuelle Verzeichnis und seiner Unterverzeichnisse belegt wird.

  • Mit du -h wird die Ausgabe „human readable“ gestaltet, die Größen werden in also KB, MB oder GB anstelle von Bytes angegeben. * Mit du -c wird die Gesamtgröße jedes Unterverzeichnisses sowie des aktuellen Verzeichnisses ausgegeben. du -S bewirkt im Prinzip das gleiche, allerdings wird hierbei die Größe der Unterverzeichnisse nicht zur Berechnung einer Verzeichnisgröße einbezogen. * Mit du -s wird nur die Gesamtsumme der Dateigrößen ausgegeben. * Mit du -L wird statt der Größe von Symlinks die Größe der verlinkten Dateien berücksichtigt.

exit

Mit exit wird der aktuelle Benutzer abgemeldet die aktuelle Sitzung (beispielsweise eine SSH-Verbindung) beendet. Ist nur eine Sitzung geöffnet, wird das Shell-Fenster geschlossen.

fdupes

Mit fdupes kann man ein Verzeichnis nach doppelten Dateien durchsuchen und diese gegebenenfalls auflisten.

Das Programm kann mittels apt über das gleichnamige Paket installiert werden:

sudo aptitude install fdupes

Aufgerufen wird fdupes mit folgender Syntax:

fdupes verzeichnis

Verglichen werden die Dateien des Verzeichnisses dabei zunächst anhand ihrer Größe, anschließend anhand eines Byte-für-Byte-Vergleichs; fdupes erkennt damit auch identische, aber unterschiedlich benannte Dateien (unabhängig vom Dateiformat). Mit fdupes -r verzeichnis werden auch die Unterverzeichnisse rekursiv mit durchsucht, mit der Option -s können zusätzlich auch Symlinks zu Verzeichnissen berücksichtigt werden.

free

Mit free -h bekommt man eine kurze Übersicht angezeigt, wieviel Arbeitsspeicher (RAM) aktuell belegt beziehungsweise noch frei ist.

inxi

Mit inxi kann man sich Informationen über das aktuell installierte Betriebsystem sowie einige Hardware-Informationen anzeigen lassen. Ruft man inxi -Fx auf, so erhält man eine detailierte, aber gut lesbare Liste.

Die wohl detailierteste Liste mit Hardware-Informationen liefert wohl dmidecode; da die Ausgabe recht lang ist, empfiehlt es sich, diese mittels dmidecode | less im Pager less zu betrachten.

lsblk, lsusb und lscpu

Mit lsblk werden alle „Block-Devices“, also Datenträger aufgelistet, die vom System erkannt werden. Zu jedem Device (beispielsweise sda, sdb usw.) werden zudem die einzelnen Partitionsnamen, die Größe der Partitionen sowie gegebenenfalls die Einhänge-Punkte („Mountpoints“) ausgegeben.

Mit lsusb werden Informationen über alle verfügbaren USB-Ports beziehungsweise dort angeschlossene Geräte ausgegeben.

Mit lscpu werden Informationen über die CPU ausgegeben; unter anderem kann man daran ablesen, ob es sich beim aktuellen Rechner um einen 32bit- oder 64bit-System handelt.

Das ähnliche Programm lshw, das allgemeine Hardware-Informationen anzeigt, sollte nur mit Root-Rechten aufgerufen werden.

kill, killall

Mit kill prozessID beziehungsweise mit killall programmname lässt sich ein (eventuell außer Kontrolle geratenes) Programm beenden. Die ID eines Prozesses lässt sich beispielsweise mit ps -aux programm, pgrep programmname oder mittels des Systemmonitors top anzeigen. Innerhalb von top lässt sich der kill-Befehl mittels k starten.

  • Mit kill -9 prozessID beziehungsweise mit killall -9 programmname wird ein Prozess unterbrochen, egal welchen Signalwert er gerade ausgibt. Dies ist die stärkste Form, einen unerwünschten Prozess zum erliegen zu bringen.

ncdu

Das Programm ncdu („ncurses-disk-usage“) ermöglicht es zu sehen, welche Ordner beziehungsweise Dateien am meisten Platz auf der Festplatte benötigen. Ausgehend von dem Pfad, aus dem heraus ncdu aufgerufen wird, analysiert es den Speicherbedarf und gibt eine sortierte, navigierbare Verzeichnisliste zurück.

ncdu ist über die Paketverwaltung mittels des gleichnamigen Pakets installierbar:

sudo aptitude install ncdu

Gibt man nach der Installation ncdu ein, so wird vom aktuellen Verzeichnis aus die Größe aller sich darin befindenden Dateien bestimmt; die Größe von Unterverzeichnissen wird schrittweise anhand der darin enthaltenen Dateien beziehungsweise Verzeichnisse bestimmt. Als Ergebnis wird der Inhalt des aktuellen Verzeichnisses nach absteigender Größe sortiert aufgelistet.

Eine Navigation innerhalb dieser Übersicht ist mittels den Pfeiltasten oder, wie bei Vim, mittels hjkl möglich. Drückt man ?, so wird eine Kurzübersicht der möglichen Eingabetasten eingeblendet, mit d kann die Datei unter dem Cursor (nach einer manuellen Bestätigung) gelöscht werden. Mit q wird ncdu wieder beendet.

top

Mit top werden aktuell laufende Prozesse, geordnet nach CPU-Auslastung, angezeigt. Auf diese Weise kann die Prozess-ID (PID) eines außer Kontrolle geratenen Programms oder „Speicherfressers“ schnell ausfindig gemacht und der entsprechende Prozess abgebrochen werden.

  • Mit P werden die Prozesse nach CPU-Auslastung sortiert, mit M nach Memory-Auslastung, mit N nach Prozess-ID.
  • Mit k wird nach Eingabe einer PID-Nummer der entsprechende Prozess abgebrochen. Die Nachfrage, mit welchem Signal der Prozess unterbrochen werden soll (Vorgabewert: 15), kann meist mit Enter bestätigt werden. Bei hartnäckigen Prozessen kann 9 angegeben werden, um den Prozess unabhängig von dessen Signalwert abzubrechen.
  • Mit q wird top wieder beendet.

uname

Mit uname -a kann angezeigt werden, ob es sich bei dem laufenden System um ein 32- oder ein 64-bit System handelt. Dies muss bisweilen berücksichtigt werden, wenn Zusatzpakete nicht via aptitude installiert werden, sondern beispielsweise als fertige Debian-Pakete von einer Webseite heruntergeladen werden sollen.

Mit uname -mrs bekommt man die aktuelle Version des Kernels angezeigt.

which

Mit which programm wird angezeigt, unter welchem Systempfad die auszuführende Datei des angegebenen Programms zu finden ist.

Hilfsprogramme

basename und dirname

Mit basename dateiname wird der Dateiname (ohne den Verzeichnispfad) angezeigt. Mit basename dateiname endung wird zusätzlich zum Verzeichnispfad auch die angegebene Endung der Datei „abgeschnitten“ (nützlich für Konvertierungs-Skripte, automatische Umbenennungen, etc.).

Mit dirname dateiname wird der Verzeichnisname einer Datei (ohne den eigentlichen Dateinamen) angezeigt.

bc

Mit bc steht ein simpler Taschenrechner auf der Kommandozeile zur Verfügung. Zahlen und Rechenzeichen können nach dem Aufruf direkt eingegeben werden; bei Bedarf können auch Klammern gesetzt werden. Nach Bestätigung mit der Enter-Taste wird das Ergebnis berechnet und angezeigt. Frühere Berechnungen können mit der \uparrow-Taste wieder angezeigt beziehungsweise als Vorlage für eine neue Eingabe genutzt werden.

Ruft man bc mit der Option -l auf, so wird automatisch eine Standard-Bibliothek mit einigen wichtigen mathematischen Funktionen geladen. Beispielsweise kann so mittels s(num) der Sinus der Zahl num ausgegeben werden, mittels c(num) der Cosinus und mit a(num) der Arcus-Tangens; die übergebenen Werte num müssen dabei in Radiant angegeben werden. Mit l(num) kann der natürliche Logarithmus der Zahl num berechnet werden, mit e(num) wird der Wert der natürlichen Exponentialfunktion von num ausgegeben.

Man kann bc auch innerhalb von Shell-Skripten verwenden, um numerische Berechnungen auszuführen und die Ergebnisse gegebenenfalls in Variablen zu speichern. Dazu wird der auszuwertende Ausdruck mittels echo und einem Pipe-Zeichen an bc übergeben:

echo '8/3' | bc
# Ergebnis: 2.66666666666666666666

pi=$( echo 'a(1)*4' | bc -l )
echo $pi
# Ergebnis: 3.14159265358979323844

Beim letzten Beispiel als Trick genutzt, dass der Arcus-Tangens von 1 exakt den Wert \frac{\pi}{4} ergibt; das Vierfache davon entspricht somit der Kreiszahl \pi. Dies kann auch genutzt werden, um (ohne Installation zusätzlicher Programme) einen einfachen CPU-Benchmark durchzuführen. Hierzu gibt man folgendes ein:

time echo "scale=5000; 4*a(1)" | bc -l

Über die time-Anweisung wird die Zeit ermittelt, die zum Ausführen eines Prozesses benötigt wird. Im konkreten Fall wird über scale=5000 die Anzahl der zu ermittelnden Nachkomma-Stellen auf 5000 festgelegt und anschließend mittels 4*a(1) der vierfache Wert der Arcus-Tangens-Funktion für den Wert 1 berechnet, was wiederum den Wert \pi liefert. Bei modernen Rechnern kann die Rechenzeit bei unter zwanzig Sekunden liegen, bei schwächeren Geräten kann die Rechenzeit auch rund hundert Sekunden betragen.

clear

Mit clear wird der Bildschirm „geleert“ – lediglich der aktuelle Eingabe-Prompt bleibt bestehen. Die Shell-History (mit \uparrow beziehungsweise \downarrow abrufbar) bleibt unverändert.

Persönlich habe ich oftmals gerne ein „leeres“ Shell-Fenster vor mir, bei dem die Ausgaben der einzelnen Anweisungen wieder von ganz oben beginnen (und keine womöglich nicht länger relevanten Informationen mehr „auf dem Schirm“ sind); ich habe mir daher die Abkürzung alias c='clear' in meine Konfigurationsdatei ~/.bashrc (beziehungsweise ~/.zshrc) aufgenommen.

date

Mit date wird das aktuelle Datum und die aktuelle Uhrzeit angezeigt.

Die Ausgabe von date kann mittels verschiedener Aufrufparameter beliebig angepasst werden. Dies kann u.a. in Skripten hilfreich sein, um „Zeitstempel“ in Dateinamen aufzunehmen. Der Aufruf von date +%Y%m%d_%H%M%S gibt beispielsweise eine Zeitangabe im Format YYYYMMDD_hhmmss aus. Beispielsweise entspricht dem Datum „30.08.2012, 9:21:03 Uhr“ damit die Zeichenfolge „20120830_092103“.

echo

Mit echo variable kann der Inhalt einer Variablen angezeigt werden. Beispielsweise liefert echo $PATH die Namen aller Verzeichnisse, in denen nach ausführbaren Shell-Programmen gesucht wird.

Möchte man echo verwenden, um einen Text mittels einer Pipe an ein anderes Programm zu übergeben, so muss beachtet werden, dass dabei beispielsweise das Newline-Zeichen \n nicht ausgewertet wird. Um dies zu erreichen, muss echo mit der Option -e aufgerufen werden.

gpg

GPG (GNU Privacy Guard) ist ein freies Verschlüsselungssystem, welches beispielsweise für die Verschlüsselung von Emails oder für die Signierung von Paket-Quellen benutzt wird. GPG gehört zum Standard aller Linux-Distributionen und ist auch auf einer Vielzahl anderer Systeme lauffähig.

Das Programm gpg ist im Abschnitt gpg – Signieren und Verschlüsseln von Dateien ausführlich beschrieben.

screen

Das Programm screen ermöglicht es, parallel auf mehreren virtuellen Terminals zu arbeiten, obwohl man in Wirklichkeit nur eines verwendet. Dies kann hilfreich sein, um sich beispielsweise über ssh auf einem externen Rechner einzuloggen und innerhalb des gleichen Fensters mehrere Prozesse ablaufen zu lassen.

screen lässt sich wie üblich aus den Paketquellen installieren:

sudo aptitude install screen

Nach der Installation kann screen ohne weitere Der Aufruf von Screen-Funktionen werden allgemein durch Drücken von Ctrl a eingeleitet, wobei der Eingabe der darauffolgenden Taste bestimmt, welche screen-Funktion gewählt wird.

Screen legt beim Start ein erstes virtuelles Terminal an. Drückt man hintereinander Ctrl a und c („create“), so erzeugt screen ein weiteres virtuelles Fenster; die ersten 10 Fenster werden mit Nummer und Bezeichnung in einer Infoleiste am unteren Ende des Screen-Fensters aufgelistet. Die Fenster können über Ctrl a und eine Zahl zwischen 0 und 9 ausgewählt werden, weitere können mittels Ctrl a und ' angewählt werden. Mit Ctrl a und " wird eine Übersicht aller Fenster eingeblendet, die auch zur gezielten Auswahl genutzt werden kann. Eine Änderung des Namens eines Fensters kann mit Ctrl a und a erreicht werden. Um ein Fenster zu schließen, kann man wie gewohnt exit eingeben oder Ctrl a und k („kill“) drücken.

Anstelle von screen kann in den allermeisten Fällen das Nachfolge-Projekt tmux genutzt werden, das insbesondere mehr Konfigurations-Möglichkeiten bietet.

tee

Das Programm tee liest Text von der Standardeingabe ein und schreibt diesen sowohl auf die Standardausgabe als auch in eine Datei. Dies kann beispielsweise genutzt werden, um eine Fehlermeldung einerseits auf dem Bildschirm auszugeben, andererseits gleichzeitig aber auch einen Eintrag in einer Logdatei zu erstellen. Meistens wird dazu ein Text mittels echo ausgegeben und mittels des Pipe-Operators | an tee weitergereicht, beispielsweise echo "Hallo!" | tee dateiname.

wc

Mit wc dateiname wird die Anzahl der Zeilen, Worte und Zeichen ausgegeben, die in der angegebenen Datei vorkommen („word count“).

Oftmals wird wc in Kombination mit find oder grep verwendet, um die Anzahl von Treffern bei einer bestimmten Suche anzuzeigen; um beispielsweise die Anzahl aller regulären Dateien des aktuellen Verzeichnisses mitsamt aller Unterverzeichnisse (ohne die Verzeichnisnamen selbst) anzuzeigen, kann man find ./ -type f | wc eingeben.

xargs

Mit xargs können die Ergebnisse eines Shell-Programms als Argumente eines anderen Shell-Programms verwendet werden. Dies ist beispielsweise bei der Kombination von find und grep nützlich, um die von find gefundenen Dateinamen nicht unmittelbar als (Eingabe-)Text, sondern als Zieldateien nach bestimmten Mustern zu durchsuchen.

Sollen beispielsweise alle .tex-Dateien nach einem bestimmten Begriff durchsucht werden, kann man folgendes eingeben:

find ./ -name "*.tex" | xargs grep

Ohne die Verwendung von xargs würden hier nur die Namen der Dateien, jedoch nicht deren Inhalt durchsucht.


Anmerkungen:

[1]Die Z-Shell bietet darüber hinaus ein Plugins namens wd an, mit dessen Hilfe man Bookmarks („Warp Points“) für einzelne Verzeichnisse setzen kann.
[2]

Beispielsweise bietet der Dateimanager Midnight Commander die Tastenkombination Ctrl x Ctrl s zur schnellen Erzeugung von Symlinks an. Mit dem Midnight Commander oder mittels cp -L kann man darüber hinaus beim Kopieren von Symlinks optional wieder auf die Originaldateien zurückgreifen und deren Inhalte kopieren.

Wird ein Symlink kopiert, so zeigt auch die Kopie auf den gleichen (absoluten) Pfad wie der ursprüngliche Symlink.

[3]Mittels tar -cjvf archivname datei1 datei2 können zwei oder mehrere Dateien direkt zu einem komprimierten tar-Archiv zusammgefasst werden.
[4]

Möchte man keinerlei Qualitätsverlust hinnehmen, so kann das Programm optipng genutzt werden, das via apt als gleichnamiges Paket installierbar ist. Um beispielsweise alle png-Dateien eines Verzeichnisses mit optipng zu optimieren, kann folgender Aufruf genutzt werden:

for file in *.png ; do optipng -o9 $file ; done

Der Kompressionsgrad von optipng ist allerdings erheblich geringer als von pngnq. Speziell für Webseiten sollte daher vergleichsweise auch pngnq getestet werden, wobei es ratsam ist, von den Originaldateien zunächst eine Backup-Kopie anzufertigen.

[5]cmus speichert alle Angaben zu den eingelesenen Dateien in der Datei ~/.cmus/cache. Um das Programm schlank und schnell zu halten, wird diese Datei nicht kontinuierlich aktualisiert. Dies hat zur Folge, dass cmus nicht erkennt, wenn die Metadaten eines Stücks von einem anderen Programm (wie beispielsweise EasyTAG) verändert wurden. Damit die Änderungen in cmus angezeigt werden, muss zunächst die Bibliothek mit :clear -l gelöscht und die Cache-Datei mit u aktualisiert werden. Anschließend kann man die Bibliothek neu einlesen.
[6]Zudem kann mit M festgelegt werden, ob nach dem Abspielen aller Titel der Warteliste weitere Titel der Bibliothek wiedergegeben werden sollen. Persönlich habe ich diese Option grundsätzlich abgeschaltet, so dass in der Infozeile rechts nicht „album from library“, sondern „playlist“ steht.