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 üblichen 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.
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 und kann in Einzelschritten zwischen den Dateien des Panel-Ordners navigiert werden.
- Mit den
PageUP
- beziehungsweisePageDown
-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 derEnter
-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ü Optionen
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 derDel
-Taste, sondern nur mittels 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 Thememodarcon16-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 Sortier-Reihenfolge 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 Tage (n * 24h
) modifiziert wurden. Um Dateien anzuzeigen, deren letzte Änderung mindestensn * 24h
zurückliegt, wird das-
-Zeichen durch ein+
-Zeichen ersetzt.-executeable
: Zeigt nur ausführbare Dateien an.-size n [kMG]
: Zeigt nur Dateien an, deren Dateigröße übern
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. Mehr Beispiele zu find
gibt es u.a. hier
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
zeigtgrep
die Anzahl an Treffern an, 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.
Oftmals wird grep
auch als „Filter“ genutzt, um die Ausgaben einer
vorherigen Anweisung gezielt nach bestimmten Begriffen zu durchsuchen.
Beispielsweise kann man sich aus der langen Liste aller laufenden Prozesse, die
man mit ps aux
angezeigt bekommt, mittels ps aux | grep firefox
nur
diejenigen Zeilen anzeigen lassen, in denen das Wort „firefox“ vorkommt. Weitere
grep
-Beispiele gibt es beispielsweise hier.
Hinweis für Shell-Programmierer: 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.
Die einzelnen Einträge werden dabei in der Datei /var/lib/mlocate/mlocate.db
gespeichert.
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.
dd
¶
Mit dd
(„data dumper“) können Dateien bitweise kopiert werden. Da auch
Verzeichnisse und sogar ganze Partitionen unter Linux ebenfalls als „Dateien“
angesehen werden, kann man mit dd
also beispielsweise auch Image-Dateien von
SD-Karten o.ä. als Backups anfertigen. Ebenso kann man dd
nutzen, um aus
Image-Dateien (meist ISO) bootbare SD-Karten beispielsweise für Raspberry-Pis
oder ähnliche Einplatinen-Computer anzufertigen.
Warnung: So mächtig das Programm dd
ist, so gefährlich ist es auch, wenn
man es nicht mit Bedacht anwendet. Würde man beispielsweise mit dd
eine 3 TB
große Festplatte bitweise auf eine 4 TB große Festplatte kopieren, die zwei
jeweils 2 TB großen Partitionen enthält, so würde dd
ohne Warnungen über die
Partititons-Grenzen der ersten Partition hinweg schreiben, und dabei
gegebenenfalls vorhandene Daten auf der zweiten Partition überschreiben.
Bisweilen wird dd
daher auch „disk destroyer“ genannt, was ein Hinweis
darauf sein soll, dass man dieses Programm nur wohl überlegt nutzen sollte!
Die grundlegende Syntax von dd
lautet:
dd if=datei-1 of=datei-2
Hierbei steht if
für den Namen der zu kopierenden Datei („Infile“) und
of
für den Namen der Zieldatei („Outfile“). Zusätzlich wird oftmals mit dem
zusätzlichen Parameter BS
angegeben, in wie großen Blöcken die
Eingangsdatei kopiert werden soll: Beispielsweise bedeutet BS=1M
, dass die
Eingangsdatei in jeweils ein Megabyte große Blöcke zerlegt wird und diese einzeln
kopiert werden.
Um beispielsweise ein ISO-Backup-Image einer DVD zu erstellen, kann man folgende Anweisung eingeben:
dd if=/dev/cdrom of=/tmp/name.iso BS=1M
Auch hier muss vorab unbedingt geprüft werden (beispielsweise mit df -h
), ob
auf der Ziel-Partition genügend Speicherplatz zur Verfügung steht.
dd
zeigt während des Kopiervorgangs keinerlei Ausgabe auf dem Bildschirm an;
erst wenn der Kopiervorgang abgeschlossen ist, erscheint eine zusammenfassende
Meldung über die Anzahl der kopierten Blöcke, und der Eingabe-Prompt wird wieder
zugänglich. Gerade beim Kopieren ganzer Partitionen muss viel Zeit eingeplant
werden: dd
kopiert in diesem Fall immer die gesamte Partition, egal wie
viele Daten auf dieser gespeichert sind. Ein ISO-Image einer 4-GB-DVD ist somit
ebenfalls stets 4 GB groß, auch wenn darauf womöglich nur 500 MB an Daten
abgelegt sind.
Kopiert man mit dd
umgekehrt eine ISO-Datei beispielsweise eines
Linux-Live-Systems auf eine SD-Karte, so sollte nach einem erfolgreich
abgeschlossenen Kopiervorgang noch mehrfach die Anweisung sync
aufgerufen
werden, um sicher zu stellen, dass auch alle möglichen noch ausstehenden
Schreib-Vorgänge abgeschlossen werden (sollten sich noch Daten im Flash-Speicher
befinden).
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 gewöhnlichen Dateidatei1
die Dateidatei2
als so genannter „Hardlink“ erzeugt; beidatei2
muss hierbei ein absoluter Pfad angegeben werden. 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. Handelt es sich beidatei1
um ein Verzeichnis, so kann ein Hardlink mittelscp -al datei1 datei2
erstellt werden.Da sich Hardlinks stets auf der gleichen Partition befinden müssen wie die Original-Dateien, werden sie unter Linux vergleichsweise selten verwendet.
- Mit
ln -s datei1 datei2
wird zu einer existierenden Dateidatei1
die Dateidatai2
als so genannter „Symbolischer Link“ erzeugt (auch „Symlink“ oder „Softlink“ genannt). Dabei handelt es sich um eine neue Datei, deren einziger Inhalt ein Verweis auf die bestehende Datei ist (Symlinks sind daher stets nur wenige Bytes groß).
Wird eine Symlink-Datei geändert und gespeichert, so wird auch die Originaldatei entsprechend verändert. Wird allerdings der Symlink einer Datei gelöscht, so bleibt die Originaldatei bestehen. Wird im umgekehrten Fall die Original-Datei gelöscht oder umbenannt, so bleibt der Symlink als Datei bestehen, zeigt aber ins Leere („gebrochener Link“). Der Symlink muss in diesem Fall entfernt und neu erzeugt werden.[1]
Wird ein Symlink zu einer ausführbaren Datei erzeugt, so kann diese auch über den Symlink aufgerufen werden. Wird ein Symlink zu einem Ordner erstellt, so lassen sich dessen Inhalte auch über den Symlink anzeigen und verändern. Da Symlinks auch anders benannt sein können als die Originaldateien, können sie beispielsweise dazu genutzt werden, um aus einer vorhandenen Musiksammlung individuelle Playlisten in separaten Ordnern anzulegen.
Mit Symlinks verknüpfte Ordner beziehungsweise Dateien müssen nicht zwingend
auf dem gleichen Datenträger beziehungsweise der gleichen Partition liegen. So
ist es beispielsweise möglich auf einen (automatisch ins
/media
-Verzeichnis eingebundene) USB-Stick oder eine verschlüsselte
Festplattenpartition über einen entsprechenden Symlink im Home-Verzeichnis
zuzugreifen.
mkdir
¶
Mit mkdir verzeichnisname
wird ein neues Verzeichnis angelegt.
verzeichnisname
kann auch ein absoluter Pfad sein, dann wird das Verzeichnis
an entsprechender Stelle angelegt.
Möchte man ein neues Verzeichnis mitsamt Unterverzeichnis erstellen, so muss
normalerweise erst das neue Verzeichnis mit mkdir
erstellt werden, und dann
das Unterverzeichnis. Verwendet man allerdings mkdir -pv
, so genügt
folgender Aufruf:
mkdir -pv neues-verzeichnis/neues-unterverzeichnis
Damit wird das neue Unterverzeichnis erstellt, und bei Bedarf auch automatisch
das übergeordnete Verzeichnis. Persönlich finde ich diese Variante recht
hilfreich, und habe mir dies in meiner Konfigurationsdatei ~/.zshrc
mittels
des folgenden alias-Eintrags als Standard definiert.
alias mkdir='mkdir -pv'
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 vonverzeichnis
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. Oftmals wird in der
Konfigurationsdatei der Shell deshalb sicherheitshalber alias rm=rm -i
definiert, so dass vor jedem Löschvorgang standardmäßig nochmals eine explizite
Bestätigung des Benutzers verlangt wird. Soll dies umgangen werden, so ist dies
weiterhin mittels rm -f
möglich.
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*
. Damit werden rekursiv alle Dateien, deren
Pfadname mit verzeichnisname
beginnt, gelöscht. Wiederum sollte allerdings
beachtet werden, dass rm
die Dateien unwiderruflich löscht.
rsync
¶
Das Programm rsync
ist auf fast jedem Linux-System vorinstalliert; ansonsten
kann es über das gleichnamige Paket via apt installiert werden:
sudo aptitude install 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 kann folgender
Aufruf von rsync
verwendet werden:
rsync -avhz quellverzeichnis zielverzeichnis
Das Zielverzeichnis muss dabei ein bereits bestehendes Verzeichnis sein, kann
sich allerdings auch auf einer anderen Partition, einem externen Datenträger,
oder – bei Verwendung von SSH – sogar auf einem anderen Rechner
befinden. Diese und weitere Einsatz-Möglichkeiten von rsync
sind Abschnitt
Backups mit rsync näher beschrieben.
Möchte man rsync
zwischen zwei
Rechnern bidirektional (also zur Synchronisierung) nutzen, so kann
beispielsweise die auf rsync
basierende Python-Anwendung bsync verwendet werden.
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.
Die Rechte-Verwaltung unter Linux sieht zudem unterschiedliche Rechte für den
Besitzer einer Datei (u
für „user“), die Benutzer-Gruppe (g
für „group“)
und alle anderen (o
für „others“) vor. Die vollständige
Rechte-Konfiguration, die für einzelne Dateien vorliegen, kann man
beispielsweise mittels ls -l
anzeigen.
Um die Benutzer-Rechte einer Datei gezielt zu verändern, kann man beispielsweise folgende Anweisung eingeben:
# Dateirechte explizit festlegen:
chmod u=rwx,g=rx,o=r dateiname
Hierbei hätte der Besitzer der Datei volle Rechte, während Mitglieder der Benutzer-Gruppe die Datei zwar lesen und ausführen, jedoch nicht verändern oder löschen dürfen. Die übrigen Benutzer dürfen die Datei lediglich lesen, aber nicht ausführen oder verändern.
Als Alternative zu der obigen Syntax kann auch folgender Zahlen-Code verwendet werden:
Zahlen-Code Bedeutung 4
Lese-Rechte 2
Schreib-Rechte 1
Ausführ-Rechte
Die einzelnen Rechte können miteinander kombiniert werden, so dass beispielsweise
der Wert 5 = 4 + 1
für Lese- und Ausführ-Rechte oder der Zahlenwert 6 = 4
+2
für Lese- und Schreibrechte steht; der Zahlenwert 7 = 4 + 2 + 1
steht
für alle Rechte. Mit dieser Notation können die einzelnen Rechte als
dreistellige Zahl angegeben werden, wobei die erste Stelle für die Rechte des
Eigentümers, die zweite für die Rechte der Benutzergruppe und die dritte für die
Rechte aller anderer Benutzer steht. Die Anweisung aus dem obigen Beispiel kann
also auch kürzer in folgender Form geschrieben werden:
# Identisch mit obiger Anweisung:
chmod 754 dateiname
Als nützliches Anwendungsbeispiel kann man mittels chmod
beispielsweise
konfigurieren, ob bei einem Computer mit mehreren Benutzer-Accounts die einzelnen
Benutzer Zugriff auf die Home-Verzeichnisse der anderen Benutzer haben sollen.
Unter Ubuntu ist dies standardmäßig der Fall. Um dies zu deaktivieren, also das
eigene Home-Verzeichnis vor einem Zugriff eines anderen Benutzers zu schützen,
kann man folgendes eingeben:
# Home-Verzeichnis vor Zugriff anderer Benutzer schützen:
sudo chmod 0700 /home/benutzername
Mit dieser Einstellung kann der Eigentümer des Verzeichnisses die Inhalte seines Home-Verzeichnisses anzeigen beziehungsweise in dieses wechseln.
Hinweis: Für Verzeichnisse existieren die gleichen Benutzerrechte. Eine besondere
Bedeutung hat hierbei lediglich das Ausführungs-Recht (x
): Ist dieses Recht
gesetzt, so bedeutet dies, dass in dieses Verzeichnis gewechselt werden darf;
man „betritt“ dadurch das Verzeichnis und bekommt somit Zugriff auf die sich
darin befindlichen Dateien. Ist dieses Recht nicht gesetzt, das Lese-Recht
hingegen schon, so können zwar beispielsweise mittels ls
die Inhalte des
Verzeichnisses angezeigt werden; man hat allerdings keinen Zugriff darauf, kann
sie also beispielsweise nicht ausführen.
Kopiert man Dateien von einem Windows- oder mit FAT32 partitionierten Datenträger, so bekommen diese (je nach Kopier-Programm) unter Umständen standardmäßig Ausführungs-Rechte zugewiesen. Um diese wieder zu entfernen, kann folgende Anweisung genutzt werden (siehe hier):
find . -type f -exec chmod 644 {} +
Hierdurch werden die Ausführungsrechte von allen Dateien entfernt, nicht jedoch von den (Unter-)Verzeichnissen selbst.
file
¶
Mit file dateiname
werden ausführliche Datei-Informationen (Dateityp,
Version, Kodierung) der angegebenen Datei angezeigt.
umask
¶
Mit umask
kann für den aktuell angemeldeten Benutzer eingestellt werden,
welche Datei-Rechte der Eigentümer, die Gruppe und die sonstigen Benutzer bei
neu erstellten Dateien und Verzeichnissen erhalten sollen.
Grundsätzlich erhalten neue Verzeichnisse unter Linux die Rechte 777
, neue
Dateien 666
. Für Verzeichnisse haben somit alle Benutzer sämtliche Rechte,
für Dateien fehlt hingegen das Ausführungsrecht. Auf einem System, das auf
mehrere Benutzer ausgelegt ist, ist eine derart freizügige Rechtevergabe nicht
sinnvoll. Mittels umask
kann man die standardmäßig vergebenen Rechte
einschränken, wobei die gleichen Zahlen-Codes zum Einsatz
kommen wie bei chmod; diese werden allerdings von den
Standard-Rechten abgezogen.
Gibt man in einer Shell umask
ohne weitere Argumente ein, so bekommt man den
aktuellen umask
-Wert angezeigt:
- Unter Debian hat
umask
als Standard den Wert002
, so dass neue Verzeichnisse die Rechte775
und neue Dateien die Rechte664
erhalten. - Unter Debian hat
umask
als Standard den Wert022
, so dass neue Verzeichnisse die Rechte755
und neue Dateien die Rechte644
erhalten.
Wie man sieht, ist Debian also bezüglich der Schreib-Rechte für die jeweiligen
Benutzer-Gruppen „restriktiver“ als Ubuntu. Mittels umask neuerwert
kann die
Vorgabe für den aktuellen Benutzer neu eingestellt werden.
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 komprimierte Datei zu erhalten, die mehrere Dateien enthält, so werden diese häufig mittels tar zu einem Archiv gepackt:
- Mittels
tar -cjvf archivname datei1 datei2
können zwei (oder mehrere) Dateien unmittelbar zu einem komprimiertentar
-Archiv zusammengefasst werden. - Mittels
tar -xjvf archivname.tar.bz2
können die Daten eines mitbzip2
komprimierten Archivs unmittelbar wieder entpackt werden.
gzip
, gunzip
¶
Mit gzip dateiname
kann eine Datei komprimiert, mit gunzip dateiname.gz
wieder dekomprimiert werden. Dieses Verfahren ist unter Linux nach wie vor weit
verbreitet, allerdings wird zunehmend das modernere bzip2
anstelle von
gzip
verwendet.
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 von man für die Anzeige von Hilfeseiten
genutzt, die unter /usr/share/doc
in komprimierter Form abgelegt sind.
Meist wird gzip
in Kombination mit tar genutzt, um
Datei-Archive zu komprimieren.
tar
¶
Mit tar
können mehrere Dateien zu einem Archiv zusammengefasst werden.
Beispiel:
tar -cf archiv.tar datei1 datei2 ...
Mittels der Option z
kann das Archiv zusätzlich mit gzip
komprimiert
werden. Mit der Option v
wird der Fortschritt der Archivierung angezeigt
(„verbose“ = redselig). Für ein komprimiertes Archiv könnte das obige Beispiel
also folgendermaßen aussehen:
tar -czvf archiv.tar.gz datei1 datei2 ...
Anstelle der Option z
kann auch j
eingegeben werden, um anstelle der
gz
-Komprimierung das stärker komprimierende bz2
-Format zu nutzen.
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
Mit tar
-Archiven können ebenso einfach wie effizient Backups erstellt werden.
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. Mitzip -r
können Dateien und/oder Verzeichnisse rekursiv (samt Unterverzeichnissen) gepackt, mitzip -g
zu einem bestehenden Archiv hinzugefügt werden. - Mit
unzip archivname
wird einzip
-Archiv wieder entpackt.
Pager und Editoren¶
antiword
und docx2txt
¶
Mit antiword
lassen sich Word-Dokumente (.doc
) bequem in einem
Shell-Fenster als Textform anzeigen.
Das Programm kann mittels der Paketverwaltung aptitude
einfach installiert
werden:
sudo aptitude install antiword docx2txt
Die Umwandlung eines .doc
-Dokuments als gewöhnlichem Text lässt sich damit
folgendermaßen erreichen:
# Ausgabe aus dem Bildschirm:
antiword file.doc
# Umleitung der Ausgabe in eine Text-Datei:
antiword file.doc > file.txt
Das erspart oftmals ein Öffnen von LibreOffice oder
Abiword. Leider kann antiword
keine neueren
docx
-Dateien als Text ausgeben. Hierfür kann das Programm docx2txt
genutzt werden kann, das aus der angegebenen Datei automatisch eine
entsprechende .txt
-Datei erstellt:
docx2txt file.docx
# Ergebnis: file.txt
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.
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
.
head und tail
¶
Möchte man nicht sich nicht den gesamten Inhalt einer Datei ansehen, so kann nur
der Anfang oder nur das Ende einer Datei mit head file
beziehungsweise
tail file
angezeigt werden. Standardmäßig werden 10 Zeilen ausgegeben; dies
kann mittels der Option -n num
angepasst werden.
Verwendet man tail
mit der Option -f
, so bekommt man das Ende einer
Datei nicht nur einmalig, sondern fortlaufend angezeigt. Dies ist beispielsweise
sehr nützlich, um hinzukommende Einträge in Log-Dateien in einem separaten
Shell-Fenster im Blick zu behalten. Dieser „Newsreader“-Modus kann mit Ctrl
c
wieder beendet werden.
less
¶
Mit less dateiname
kann der Inhalt einer Textdatei angezeigt werden. Die
Anzeige beginnt am Anfang der Datei, mit der beziehungsweise
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
und info
¶
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.
Mit info programm
erhält man eine ähnliche, bisweilen sogar noch
ausführliche Dokumentation eines Programms.
nano
¶
Mit nano dateiname
kann man den Inhalt einer beliebigen Text-Datei
editieren. Der Editor ist auf fast jedem Linux-System standardmäßig installiert
und ohne jedes Vorwissen intuitiv bedienbar.
In den unteren zwei Zeilen zeigt nano
ein kleines Tasten-Menü an.
Beispielsweise bedeutet der Eintrag ^X
, dass durch Drücken der
Tastenkombination Ctrl x
der Editor wieder beendet werden kann:
- Steht im Tasten-Menü ein
^
-Zeichen vor einem Buchstaben oder Sonderzeichen, so steht dies für ein gleichzeitiges Drücken derCtrl
-Taste und des zusätzlich angegebenen Buchstabens beziehungsweise Zeichens.
- Steht im Tasten-Menü ein
M-
-Zeichen vor einem Buchstaben oder Sonderzeichen, so steht dies für ein nacheinander erfolgendes Drücken derEsc
-Taste und anschließend des zusätzlich angegebenen Buchstabens beziehungsweise Zeichens.
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 eingeloggt 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 mittels sudo hostnamectl set-hostname
oder manuell in der Datei
/etc/hostname
mit SuperUser-Rechten geändert werden.
ip
¶
Mit ip r
kann die lokale Netzwerkadresse (src 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. Durch das /24
wird die
zur IP-Adresse gehörende Subnetz-Maske angegeben.
Mit der Zusatz-Option -F
kann zudem geprüft werden, welche Netzwerk-Ports
bei einem gegebenen Rechner offen sind:
# Offene Ports anzeigen:
nmap -F ip-addresse
Ausführliche Infos zu nmap
und möglichen Anwendungsfällen gibt es
beispielsweise hier.
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 Passwort-Eingabe. 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.
Webbrowser¶
lynx
¶
Bei lynx handelt es sich um einen
einfachen Webbrowser, der ohne graphische Bedienoberfläche im Textmodus
funktioniert und ausschließlich über die Tastatur steuerbar ist. Zwar kann
lynx
keine Bilder oder Animationen anzeigen, funktioniert dafür aber für
textbasierte Webseiten und Suchanfragen schnell und zuverlässig. Ebenso wird
lynx
häufig zum Betrachten von lokalen .html
-Dateien in einem
Shell-Fenster genutzt, beispielsweise in Kombination mit mutt.
lynx
kann über das gleichnamige Paket installiert werden:
sudo aptitude install lynx
Startet man lynx
ohne weitere Argumente, so wird eine allgemeine Startseite
angezeigt; gibt man als Argument eine .html
-Datei oder eine URL an, so wird
stattdessen diese Seite geladen.
lynx
kennt folgende Tastenkürzel:
g
URL öffnen („goto“) PageUP
,PageDOWN
Seitenweise vor/zurück blättern , Nächsten/vorherigen Link auswählen , Enter
Link folgen Zurück zur vorherigen Seite Backspace
History anzeigen /
Text in aktuellem Dokument suchen n
,N
Nächstes/vorheriges Suchergebnis anzeigen a
Lesezeichen hinzufügen v
Lesezeichen-Liste anzeigen K
Übersicht aller Tastenkürzel anzeigen o
Optionen einstellen q
Programm beenden
Eingabe-Dialoge (beispielsweise für eine neue URL) können mit mit Ctrl g
wieder abgebrochen werden – nicht jedoch mit Esc
, das ist etwas
gewöhnungsbedürftig. Setzt man im o
angezeigten Options-Menü die Einstellung
auf On
und bestätigt am unteren Ende der Seite die
Einstellungen mittels Accept
, so ist auch eine Vim-artige
Navigation mittels hjkl
möglich.
Ruft man lynx
mit der Option -dump
und einer .html
-Datei als
Argument auf, so wird der Inhalt der angegebenen in Textform auf dem Bildschirm
ausgegeben:
# Plaintext einer html-Datei darstellen:
lynx -dump datei.html
# Lynx als html-to-text-Konverter nutzen:
lynx -dump datei.html > datei.txt
Lesezeichen werden von lynx
in der Datei ~/.lynx_bookmarks.html
verwaltet.
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 dieser Seite herunterzuladen, genügt folgender Befehl:
# Rekursives Herunterladen von Dateien eines Web-Verzeichnisses:
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 Datei-Endung(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.
youtube-dl
¶
Mit youtube-dl können Youtube-Videos schnell und einfach heruntergeladen werden, um sie beispielsweise mit dem VLC-Player lokal betrachten zu können. Das Programm kann als Python-Anwendung folgendermaßen installiert werden:
sudo aptitude install libav-tools python3-pip3
sudo pip3 install youtube-dl
Anschließend kann man youtube-dl
mit einer beliebigen Youtube-Film-Adresse
(URL) als einzigem zusätzlichen Argument aufrufen. Die Adresse muss allerdings
in (wahlweise einfache oder doppelte) Anführungszeichen gesetzt werden:
youtube-dl 'URL'
Gibt man als URL die Adresse einer Youtube-Playlist an, so werden alle Videos dieser Playlist einzeln in das aktuelle Verzeichnis heruntergeladen.
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:
sudo 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.
Ist pdftotext
auf einem System noch nicht vorhanden, kann es über das Paket
poppler-utils
mittels aptitude nachinstalliert werden.
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, kannpdftk
folgendermaßen aufgerufen werden:
pdftk datei.pdf cat 5 7 9-13 output ausschnitt.pdf
Mehr Infos zu pdftk
gibt es im Ubuntuusers-Wiki.
tesseract
¶
Mit tesseract
als Texterkennungs-Software lassen sich im .tif
-Format
eingescannte oder photographierte Texte zurück in Textdateien verwandeln.
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:
# Texterkennung (OCR) für eine einzelne Bilddatei:
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:
# Abkürzung für Screenshots zwecks OCR definieren:
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:
# Texterkennung für alle OCR-Screenshots:
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:
# OCR-Ausgabe-Dateien zusammenfügen:
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 Shell-Einzeiler ausführen. 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: Gescante 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 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 und kann, sofern mehrere Bilder geöffnet werden, zum vorherigen beziehungsweise nächsten Bild gewechselt werden.
- Mittels der Pfeiltasten und 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“) wirdfeh
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 im Ubuntuusers-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:
|
|
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 600 -quality 80 $(basename $i .jpg).png; \ done
Das obige Mini-Skript wandelt alle .jpg
-Dateien des aktuellen Verzeichnisses
in 600 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 im Ubuntuusers-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.[2]
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 Server-Last 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. Für eine MP3-Encodierung muss
das Programm lame
installiert werden.
abcde
ist über die Paketverwaltung mittels des gleichnamigen Pakets
installierbar:
sudo aptitude install abcde lame
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 allerdings 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:[3]
: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 |
Aktuell abgespielte Datei 5 Sekunden zurückspulen | |
Aktuell abgespielte Datei 5 Sekunden vorspulen |
In der Infozeile (vorletzte Zeile auf dem Bildschirm) werden auf der rechten Seite Infos über die aktuellen Wiedergabe-Optionen (Zufallswiedergabe, Wiederholung usw.) eingeblendet. Diese können folgendermaßen verändert werden:[4]
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.
espeak
¶
Mit dem Sprach-Synthesizer-Programm espeak kann ein angegebener Text in gesprochener Form über die Lautsprecher ausgegeben werden.
Das Programm kann über das gleichnamige Paket installiert werden:
sudo aptitude install espeak
Anschließend kann es beispielsweise in folgender Form genutzt werden:
# Englischsprachige Ausgabe:
espeak "hello world"
Damit gibt eine Synthesizer-Stimme den Angegebenen Text über die Lautsprecher aus.
Mittels der Option -v
können können zusätzliche Sprach-Einstellungen
vorgenommen werden. Beispielsweise kann die Ausgabe auch in deutscher Sprache
erfolgen:
# Deutschsprachige Ausgabe:
espeak -vde "hallo welt"
Zusätzlich kann, ebenfalls über die Option -v
, eine von sieben männlichen
und vier weiblichen Synchronstimmen ausgewählt werden. Hierzu fügt man an die
-v
-Option +m1
, +m2
, … beziehungsweise +f1
, +f2
, … für
eine männliche beziehungsweise weibliche Stimmausgabe an:
# Deutschsprachige Ausgabe mit weiblicher Stimme:
espeak -vde+f2 "hallo welt"
Der zu sprechende Text kann mittels der Option -f
auch aus einer Textdatei
augelesen werden:
# Deutschsprachige Ausgabe, Text aus Datei lesen:
espeak -vde -f textdatei
Mittels der Option -w ausgabedatei.wav
kann die Ausgabe optional auch in
eine .wav
-Datei geschrieben werden. Zusätzlich kann mittels der Option -p
wert
die Tonhöhe (mit wert
zwischen 0
und 99
, Standard: 50
)
und mit -s wert
die Sprech-Geschwindigkeit in Wörtern je Minute (mit
wert
zwischen 80
und 455
, Standard: 175
) angepasst werden.
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 zu mencoder
gibt es im Ubuntuusers-Wiki.
Systemverwaltung¶
Konfigurationen¶
alias
¶
Mit alias kurzname='langer befehl'
lassen sich Abkürzungen für längere
und/oder oft genutzte Anweisungen definieren. Gibt man eine alias
-Definition
in der Shell ein, so bleibt sie nur bestehen, bis die Shell wieder beendet wird.
Um sie auch in einer neuen Shell wieder nutzen zu können, fügt man
die Definition (jeweils eine je Zeile) in die Konfigurationsdatei ~/.bashrc
beziehungsweise ~/.zshrc
ein.
Steht dort in einer Zeile beispielsweise alias q='exit'
, so lässt sich ein
neues Shell-Fenster damit wahlweise mit q
oder mit exit
schließen. Ist
ein alias ll='ls -lh'
definiert, so lässt sich künftig eine ausführliche
Liste des aktuellen Verzeichnisses mit ll
aufrufen. Sollen die Änderungen
auch für schon laufende Shell-Fenster aktiv werden, so muss dort die
Konfigurationsdatei mittels source ~/.bashrc
beziehungsweise source
~/.zshrc
neu geladen werden.
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
Paket-Verwaltung mittels apt
beziehungsweise aptitude
wird daher 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 mittelsmount | 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. * Mitdu -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, wie viel
Arbeitsspeicher (RAM) und Auslagerungsspeicher (Swap) aktuell belegt
beziehungsweise noch frei ist.
groups
und id
¶
Mit groups
wird angezeigt, in welchen Benutzer-Gruppen der aktuell
angemeldete Benutzer Mitglied ist. Die gleichen Informationen, nur etwas
ausführlicher, erhält man mittels der Anweisung id
: Hier werden zusätzlich
die ID-Nummern des Benutzers sowie der einzelnen Gruppen mit ausgegeben.
Möchte man im umgekehrten Fall wissen, welche Benutzer Mitglied in einer Gruppe
sind, so kann man getent group
eingeben: Hierbei werden alle Gruppen mit der
jeweiligen Gruppen-ID (GID) und den jeweiligen Mitgliedern aufgelistet. Ist man
nur an den Mitgliedern einer einzelnen Gruppe interessiert, so kann man getent
group | grep gruppenname
eingeben.
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 umfangreichste 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 -15 prozessID
beziehungsweise mitkillall -15 programmname
kann ein Programm abgebrochen werden. Diese Variante sollte bei einem abgestürzten Programm bevorzugt verwendet werden, da das Programm dadurch die Möglichkeit hat, noch End-Routinen ablaufen zu lassen (Datenbanken schließen, temporäre Dateien löschen, u.ä.). - Mit
kill -9 prozessID
beziehungsweise mitkillall -9 programmname
wird ein Prozess abrupt unterbrochen, egal welchen Signalwert er gerade ausgibt. Ein derartiger Aufruf ist die stärkste Form, einen unerwünschten Prozess zum erliegen zu bringen; man sollte diesen allerdings auch erst als letztes Mittel wählen.
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, mitM
nach Memory-Auslastung, mitN
nach Prozess-ID. Mit - 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 in den meisten Fällen mitEnter
bestätigt werden. Bei hartnäckigen Prozessen kann, wenn dies nicht Funktioniert, als Wert9
angegeben werden, um den Prozess unabhängig von dessen Signalwert abzubrechen (siehe kill). - Mit
q
wirdtop
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.
Um zusätzlich festzustellen, zu welchem Paket eine Anwendung gehört, kann man
dpkg -S programmname
eingeben.
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 -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 exakt den Wert ergibt; das Vierfache davon entspricht somit der Kreiszahl . 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 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
beziehungsweise 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.
Eine Alternative zur clear
-Anweisung ist die Tastenkombination Ctrl l
,
die in den meisten Shells standardmäßig die gleiche Wirkung erzielt.
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.
pass
¶
Mit pass
können Passwörter sehr einfach und übersichtlich und sicher
verwaltet werden. Das Programm kann via aptitude über das
gleichnamige Paket installiert werden:
sudo aptitude install pass xclip
Das Programm pass
legt für jeden Passwort-Eintrag eine eigene Datei im
Verzeichnis ~/.password-store
an. Um zu gewährleisten, dass
kein Unbefugter darauf Zugriff hat, werden diese mittels gpg
verschlüsselt. Dies bringt neben der hohen Sicherheit des GPG-Verfahrens zwei
weitere Vorteile mit sich:
- Die Passwörter können in einer übersichtlichen Baum-Struktur abgelegt werden. Für verschiedene Zwecke oder Kategorien können einfach unterschiedlichen Verzeichnisse angelegt werden.
- Man muss sich nur ein Passwort für den GPG-Schlüssel merken, um beliebig viele und beliebig lange Passwörter verwalten zu können.
Um eine neue Passwort-Sammlung anzulegen, muss man diese einmalig initiieren:
pass init SCHLUESSEL-ID
Als SCHLUESSEL-ID
genügt es, eine Email-Adresse anzugeben, für die man einen
GPG-Schlüssel erstellt hat (siehe gpg).
Anschließend kann das Programm pass
in Kombination mit einer weiteren
Sub-Anweisung aufgerufen werden. Die wichtigsten Sub-Anweisungen sind:
Mit
pass add
wird ein neuer Eintrag in die Passwort-Sammlung hinzugefügt. Als erstes Argument wird hierbei angegeben, unter welcher Bezeichnung das Passwort abgelegt werden soll. Um beispielsweise das Passwort für das Online-Portal eines Email-Accounts abzuspeichern, könnte dies etwa so aussehen:pass add webadresse/emailadresse
Anschließend wird man um ein zweimaliges Eingeben des zu speichernden Passworts aufgefordert. Stimmen beide Eingaben überein, wird das Passwort in der Datei
~/.password-store/webadresse/emailadresse
abgelegt; die Verzeichnisstruktur wird dabei automatisch erzeugt.Man kann bei der Angabe des Speicher-Pfads optional auch eine tiefere Verschachtelung wählen, beispielsweise
servername/dienstname/benutzername
.Mit
pass generate
wird, ebenso wie mitpass add
, ein neuer Eintrag in die Password-Sammlung hinzugefügt. Allerdings wird hierbei ein neues Passwort automatisch generiert, dessen Länge als letztes Argument angegeben wird.pass generate webadresse/emailadresse 20
Mit der obigen Anweisung wird ein
20
Zeichen langes Passwort auf dem Bildschirm ausgegeben. Standardmäßig enthält dieses Klein- und Großbuchstaben, Zahlen und Sonderzeichen. Sollen keine Sonderzeichen im Passwort vorkommen, so kann man zusätzlich die Option-n
für ein alphanumerisches Passwort angeben.Soll das Passwort nicht im Shellfenster angezeigt, sondern stattdessen in die Zwischenablage kopiert werden, so kann zusätzlich die Option
-c
angegeben werden; hierfür muss das Paketxclip
installiert sein.Mitt
pass show eintrag
oder einfach nurpass eintrag
(beispielsweisepass webadresse/emailadresse
) wird das zu einem Eintrag gehörende Passwort ausgegeben. Wiederum kann man mittels der Option-c
erreichen, dass das Passwort direkt in die Zwischenablage kopiert wird.Ruft man
pass
ohne einen eindeutigen Eintrag auf, so werden anstelle des Passworts alle in Frage kommenden Einträge aufgelistet.
- Mit
pass ls
oderpass list
werden alle Passwort-Einträge der Schlüssel-Sammlung aufgelistet (ohne die zugehörigen Passwörter). Gibt man hinterpass list
eine Kategorie an, so werden nur diejenigen Passwörter ausgegeben, die im jeweiligen Verzeichnisnamen abgelegt sind. - Mit
pass find suchbegriff
kann gezielt nach Passwort-Einträgen gesucht werden, die den angegebenen Suchbegriff beinhalten. - Mit
pass mv alter-eintrag neuer-eintrag
kann ein Passwort-Eintrag in ein anderes Verzeichnis verschoben beziehungsweise umbenannt werden. - Mit
pass rm eintrag
kann ein Passwort-Eintrag wieder entfernt werden.
Die pass
-Anweisungen sind offensichtlich den üblichen Shell-Anweisungen sehr
ähnlich, das Programm ist also sehr intuitiv bedienbar; zudem kann bei der
Eingabe wie gewohnt eine Tab-Vervollständigung genutzt werden.
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] | Beispielsweise bietet der Dateimanager Midnight Commander die
Tastenkombination Wird ein Symlink kopiert, so zeigt auch die Kopie auf den gleichen (absoluten) Pfad wie der ursprüngliche Symlink. |
[2] | Möchte man keinerlei Qualitätsverlust hinnehmen, so kann das Programm
Der Kompressionsgrad von |
[3] | 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. |
[4] | 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. |