Shell-Tipps

Know-how für die Kommandozeile

09.07.2013
Erfahrene Linux-Nutzer schwören auf flexible Kommandozeilentools, mit denen sich manche Aufgabe schneller bewältigen lässt als in grafischen Programmen. Wir stellen nützliche Anwendungen vor, um auch Einsteiger zu einem Ausflug in die Shell zu ermutigen.

Tipp: "convmv": Zeichensätze in Dateinamen ändern

Mit dem kleinen Kommandozeilentool convmv [1] wandeln Sie Zeichensätze von Datei- und Verzeichnisnamen um. Das Programm ist in den Repositories der von EasyLinux unterstützten Distributionen vorhanden. Sowohl unter (K)Ubuntu als auch unter OpenSuse rüsten Sie es nach, indem Sie über die Softwareverwaltung das Paket convmv installieren. Um in Erfahrung zu bringen, welche Zeichensätze das Tool unterstützt, tippen Sie Folgendes:

convmv --list

Die Liste ist lang – sowohl unter OpenSuse als auch unter Ubuntu kennt convmv insgesamt 124 Kodierungen. Das bestätigt der Aufruf, den Sie in Abbildung 1 sehen. Über die Pipe ([AltGr+<]) leiten Sie die Ausgabe von convmv an das Kommando wc -l weiter, das mit dem Parameter -l die Zeilen zählt.

Abbildung 1: Das Werkzeug "convmv" kennt 124 Zeichensätze zum Konvertieren von Datei- und Verzeichnisnamen.

Um im aktuellen Ordner alle Dateien und Verzeichnisse aus dem UTF-8-Format nach ISO-8859-15 zu konvertieren, tippen Sie diesen Befehl:

convmv -f utf8 -t iso-8859-15 *

Aufgeschlüsselt heißt das: Wandele alles (*) von UTF-8 (-f utf8) nach ISO-8859-15 (-t iso-8859-15). Um auch Unterverzeichnisse mit einzubeziehen, verwenden Sie die Aufrufoption -r, die rekursiv durch alle Ordner durchwandert (Abbildung 2). Auf der Standardausgabe sehen Sie nun, was convmv plant. Tatsächlich passiert jetzt noch nichts, wie die erste Zeile Starting a dry run ... ("Starte einen Testlauf") verrät. Um die Änderungen tatsächlich durchzuführen, benötigen Sie einen weiteren Parameter:

$ convmv -f utf8 -t iso-8859-15 * -r --notest
...
mv "./Ältlich"   "./Ältlich"
mv "./Kölsch"  "./Kölsch"
Ready!

Hat alles geklappt, bestätigt das Tool dies durch Ausgabe von Ready!; andernfalls beschwert es sich. Stimmt beispielsweise etwas nicht mit der Ausgangskodierung, fordert convmv Sie auf, das Problem erst selbst zu lösen oder einen anderen Zeichensatz zu wählen:

this file was not validly encoded in UTF-8: "./Kölsch"
To prevent damage to your files, we won't continue.
First fix this or correct options!
Abbildung 2: "convmv" arbeitet auf Wunsch rekursiv und erfasst damit Unterverzeichnisse und ihre Dateien.

Übrigens: Eine Mischung aus dem Testlauf und vollautomatischer Umwandlung bietet das Werkzeug ebenfalls. Verwenden Sie die Option -i für den interaktiven Modus, fragt es bei jedem Datei-/Verzeichnisnamen nach, ob Sie den Zeichensatz ändern möchten oder nicht.

Tipp: "convmv": Groß-/Kleinschreibung verändern

Das im vorigen Tipp vorgestellte Kommando convmv können Sie auch dazu verwenden, die Groß- und Kleinschreibung von Datei- und Verzeichnisnamen zu modifizieren. Um alles im aktuellen Ordner in Bezeichner mit großen Buchstaben zu verwandeln, tippen Sie:

convmv --upper *

Genauso geht es in die andere Richtung, und aus Großbuchstaben werden kleine:

convmv --lower *

Auch hier müssen Sie explizit mit --notest anstoßen, dass convmv tatsächlich konvertiert. Verwenden Sie wiederum -i, um bei jedem Namen zu entscheiden, ob convmv ihn ändert oder nicht. Soll sich das Tool rekursiv durch die Unterverzeichnisse arbeiten, verwenden Sie zusätzlich -r.

Tipp: "youtube-dl": Downloadformat selbst wählen

In der letzten Folge der Shell-Tipps haben wir das kleine Downloadtool youtube-dl [2] vorgestellt. Das Python-Programm lädt Videos von beliebten Portalen wie YouTube, MyVideo, Clipfish usw. herunter. Zur Erinnerung: Um einen Film auf die eigene Platte zu bringen, geben Sie hinter dem Kommando die URL an:

./youtube-dl https://www.youtube.com/watch?v=tgbNymZ7vqY

In diesem Fall wählt das Tool selbständig die höchste Auflösung bzw. die beste verfügbare Qualität und lädt diese Version herunter. Die meisten Plattformen bieten aber auch Varianten für Benutzer an, die nur eine langsame Internetverbindung haben. Ob das bei einem Film der Fall ist, bringen Sie mit dem Parameter -F in Erfahrung, der alle verfügbaren Formate anzeigt. Vor jedem Eintrag steht eine Ziffer, die Sie danach hinter -f angeben können, um eine ganz bestimmte Version auf die Platte zu bringen (Abbildung 3).

Abbildung 3: Auf Wunsch lädt "youtube-dl" ganz bestimmte Formate von der Videoplattform herunter. Mit "-F" bringen Sie vorhandene Versionen in Erfahrung, und mit "-f" entscheiden Sie sich für eine.

Tipp: "tar.xz"-Dateien auf der Shell entpacken

Die meisten komprimierten Archive werden im Internet als tar.gz- oder tar.bz2-Dateien angeboten; immer häufiger trifft man aber auch auf tar.xz. Bei .xz-Dateien handelt es sich um das Datenkompressionsformat der XZ Utils [3], früher als LZMA Utils bekannt. Genau wie gzip und bzip2 komprimiert das Packprogramm xz einzelne Dateien. Zusammen mit tar erstellen und komprimieren Sie ganze Dateisammlungen. Im Gegensatz zu gzip und bzip2 komprimiert xz effizienter und schrumpft Dateien besser zusammen, dafür braucht es etwas länger.

Mit dem Befehl xz --decompress oder der Kurzform unxz entpacken Sie eine solche Datei. Aktuelle tar-Versionen können auch mit dem Format umgehen und bieten einen Schalter an, um tar.xz-Archive in nur einem einzigen Kommando auszupacken:

tar -xvJf archiv.tar.xz

Die einzelnen tar-Optionen bedeuten im Detail: Entpacke das Archiv (-x), zeige dabei auf der Shell den Fortschritt (-v), benutze xz zum Dekomprimieren (-J), und der Name der Archivdatei ist der folgende (-f). Zur Erinnerung: Handelt es sich um ein tar.gz-Archiv, ersetzen Sie J durch z im Aufruf; bei einer tar.bz2-Datei verwenden Sie j.

Tipp: Passwortdateien mit "vipw" bearbeiten

In der Datei /etc/passwd finden Sie Angaben zu den einzelnen Benutzeraccounts Ihres Systems. Neben den "echten" Usern sind hier auch so genannte "Pseudoaccounts" (wie zum Beispiel lp und mail) aufgeführt. Die meisten Linux-Distributionen verschlüsseln für ihre Benutzerkonten die Kennwörter; diese stehen in der Datei /etc/shadow. Während /etc/passwd für alle Benutzer lesbar ist, sind Blicke in /etc/shadow dem Administrator root vorbehalten, und auch zum Verändern von der passwd-Datei braucht es Root-Rechte. Das gilt auch für das in diesem Tipp vorgestellte Programm vipw.

In den Ubuntu-/Mint-Tipps dieser Ausgabe stellen wir vigr zum Bearbeiten der Dateien /etc/group (verwaltet die Gruppen) und /etc/gshadow (verwaltet Gruppenpasswörter) vor. Ganz ähnlich arbeitet vipw, das sich um /etc/passwd und zusammen mit der Aufrufoption -s um /etc/shadow kümmert. Genau wie vigr sperrt vipw die Datei, während Sie Ihre Änderungen vornehmen, und nach dem Speichern prüft es die Syntax. Um vipw mit dem Lieblingseditor zusammenzubringen, starten Sie es am besten so:

export EDITOR=nano; vipw

Ersetzen Sie nano im Beispiel durch Ihren bevorzugten Texteditor. (Sie können die Umgebungsvariable EDITOR auch dauerhaft einrichten, indem Sie den export-Befehl in die Datei ~/.bashrc eintragen.) Nachdem Sie Ihre Anpassungen vorgenommen und gespeichert haben, beenden Sie den Texteditor. Das Tool erinnert Sie nun daran, dass Sie außer /etc/passwd auch /etc/shadow ändern sollten:

Sie haben /etc/passwd verändert.
Aus Konsistenzgründen müssen Sie unter Umständen auch /etc/shadow ändern.
Bitte nutzen Sie dazu den Befehl »vipw -s«.

Das zugehörige Kommando liefert es gleich mit: Über die Aufrufoption -s bearbeiten Sie die Datei für die Shadow-Passwörter.

Tipp: Integrität der Passwortdateien prüfen

Beide Werkzeuge, vigr und vipw, erkennen offensichtliche Syntaxfehler, prüfen aber nicht, ob alle Felder gültige Werte besitzen. Hier setzen die beiden Tools pwck und grpck an: Sie untersuchen die einzelnen Felder der Einträge in /etc/passwd, /etc/shadow, /etc/group und /etc/gshadow ganz genau, geben Warnungen und Fehler aus und machen sogar von sich aus Vorschläge zur Korrektur (siehe Listing 1). Dabei finden folgende Checks statt:

  • Hat jeder Eintrag die richtige Anzahl von Feldern?
  • Gibt es eindeutige Benutzernamen?
  • Existieren gültige User- und Gruppen-IDs?
  • Gibt es gültige Logingruppen?
  • Sind die Home-Verzeichnisse gültig?
  • Ist der Eintrag für die Start-Shell gültig?

Listing 1

Beispiele für "pwck" und "grpck"

$ pwck
Überprüfe `/etc/passwd'
Benutzer »test«: Programm »/bin/bas« existiert nicht.
Doppelter Passworteintrag
Zeile »huhn:x:1043:1043:Heike Jurzik,,,:/home/huhn:/bin/bash« löschen? y
pwck: Die Dateien wurden aktualisiert.
Überprüfe `/etc/shadow'.
Doppelter shadow-Passwort-Eintrag
Zeile »huhn:$6406S:15492:0:99999:7:::« löschen? y
pwck: Die Dateien wurden aktualisiert.
$ grpck
'huhn' is a member of the 'sudo' group in /etc/group but not in
/etc/gshadow
...

Wie Listing 1 zeigt, beschwert sich pwck lediglich darüber, dass es die Shell /bin/bas nicht gibt – das zu korrigieren, ist nun Ihre Aufgabe. Hingegen schlägt das Werkzeug beim offensichtlichen Fehler eines doppelten Eintrags vor, eine der Zeilen zu löschen. Durch Eingabe von y, gefolgt von [Eingabe], stimmen Sie dem Vorschlag zu. Auch beim zweiten Kommando (grpck) gibt es nur einen Hinweis: Der Benutzer huhn gehört laut /etc/group zur Gruppe sudo, das steht aber nicht in der Datei /etc/gshadow.

Tipp: Screenshots automatisch alle drei Sekunden

Das Werkzeug import aus der ImageMagick-Suite erstellt Screenshots. Um ein einzelnes Fenster aufzunehmen, tippen Sie beispielsweise:

import -frame firefox.png

Der Mauszeiger verwandelt sich in eine Art Fadenkreuz. Klicken Sie danach ins Programmfenster oder ziehen Sie mit gedrückt gehaltener linker Maustaste einen rechteckigen Bereich auf, den Sie knipsen möchten. Das Ergebnis landet in der Datei firefox.png; das Dateiformat erkennt import selbständig anhand der Endung.

Mit import können Sie auch den ganzen Bildschirm ablichten. Anstelle der Option -frame verwenden Sie in dem Fall -window root:

import -window root desktop.png

Möchten Sie import anweisen, alle drei Sekunden ein Bild aufzunehmen, geben Sie die Option -pause 3 an. Zusätzlich legen Sie über -snaps 5 fest, dass Sie insgesamt fünf Schnappschüsse benötigen. Am Ende steht wieder der Dateiname mit einer Endung, die das Bildformat definiert:

import -window root -snaps 5 -pause 3 bild.png

Dabei müssen Sie sich keine Sorgen machen, dass jedes Bild wieder in derselben Datei landet. Das Tool ist clever: Es erstellt fünf verschiedene Dateien und nummeriert diese sogar durch (Abbildung 4).

Abbildung 4: Das ImageMagick-Werkzeug "import" erstellt alle drei Sekunden ein Foto; insgesamt landen in diesem Beispiel fünf Bilder auf der Platte.

Tipp: Vim: Aktuelle Zeile hervorheben

Der Texteditor Vim bietet eine praktische Konfigurationsoption, die Ihnen hilft, sich in langen Dokumenten besser zurechtzufinden. Wechseln Sie über die Taste [Esc] in den Bearbeitungsmodus, falls Sie gerade im Einfügemodus sind, und geben Sie Folgendes ein:

:set cursorline

Danach drücken Sie die Eingabetaste, und Vim unterstreicht die aktuelle Zeile (Abbildung 5), also die, in der sich der Cursor befindet. Gefällt Ihnen die Zeilenmarkierung so gut, dass Sie dauerhaft damit arbeiten möchten, tragen Sie set cursorline ohne führenden Doppelpunkt in die Einrichtungsdatei .vimrc in Ihrem Home-Verzeichnis ein.

Abbildung 5: Der Texteditor "vim" kann die aktuelle Zeile durch einen Unterstrich hervorheben. So wissen Sie stets, wo Sie tippen oder lesen.

Tipp: Vim: Suchen mit Köpfchen

Um mit dem Texteditor nach einer Zeichenkette zu suchen, geben Sie im Bearbeitungsmodus einen Schrägstrich (/), gefolgt vom gesuchten Begriff ein. Mit einem Druck auf [Eingabe] beginnt die Suche; [N] zeigt den nächsten Treffer an, [Umschalt]+[N] den vorigen. Tippen Sie ggn, zeigt Vim den ersten Treffer an, GN den letzten. (gg bzw. G alleine springen an den Anfang bzw. das Ende der Datei.) Gleiches gilt für die Rückwärtssuche, die Sie mit einem Fragezeichen anstelle des Schrägstrichs beginnen.

Einige Tipparbeit können Sie sich sparen, wenn der Cursor über einem Wort steht und Sie nach weiteren Vorkommen fahnden möchten. In dem Fall reicht es, * (sucht vorwärts) oder # (sucht rückwärts) zu drücken. In beiden Fällen findet Vim nur exakte Treffer. Um auch Teiltreffer mit einzubeziehen, verwenden Sie g* bzw. g#. Wenn sich der Cursor zum Beispiel über "rückwärts" befindet und Sie g* drücken, zeigt Vim auch das Wort "Rückwärtssuche" an.

Eine weitere Erleichterung beim Suchen bietet die Option set hlsearch. Haben Sie dieses hinter einem Doppelpunkt eingegeben oder in die Konfigurationsdatei ~/.vimrc eingetragen, hebt Vim alle Treffer hervor (Abbildung 6).

Abbildung 6: Vim hat ein echtes Highlight zu bieten: Der Texteditor hebt auf Wunsch alle Fundstellen hervor.

Diesen Artikel als PDF kaufen

Express-Kauf als PDF

Umfang: 1 Heftseiten

Preis € 0,99
(inkl. 19% MwSt.)

LinuxCommunity kaufen

Einzelne Ausgabe
 
Abonnements
 

Ähnliche Artikel

Kommentare