claim.gif
Linux Magazin Linux User Easy Linux Ubuntu User International Linux Community
Erschienen in EasyLinux 11/2003

Tipps & Tricks für die Shell

Shell-Tipps

von Andrea Müller


Mächtig und flexibel -- das ist die Kommandozeile unter Linux. Trotz allerlei grafischer Frontends, die um die Gunst der Benutzer buhlen, lohnt sich hin und wieder ein Ausflug in die Shell.

Tipp: Dateien wiederherstellen mit RPM

Es gibt Tage, da geht einfach alles schief: Das Frühstücksei landet auf dem Hemd, die S-Bahn fährt einem vor der Nase davon und irgendwann klickt man unbedacht auf Löschen im Datei-Manager. Wenn Sie -- mal wieder -- beim Backup geschlampt haben, ist guter Rat teuer. Noch schlimmer ist es, wenn Sie als Administrator ein paar Systemdateien entsorgt haben. Die Strafpredigten neunmalkluger Linux-Anwender, die Ihnen vorwerfen, Sie seien mit Ihren root-Rechten zu leichtsinnig gewesen, helfen Ihnen nicht weiter -- Sie wollen die eben gelöschte Datei zurück -- und zwar fix.

Das ist dank der Paketverwaltung Ihres Linux-Systems kein Problem. Für dieses Beispiel nehmen wir an, dass Sie das Programm ls gelöscht haben, das unter Linux Verzeichnisinhalte auflistet. So bekommen Sie es wieder:

Schritt 1

Um das Paket zu finden, in dem sich ls befindet, müssen Sie den ursprünglichen Speicherort des Programmes, also den genauen Pfad angeben. Haben Sie den Datei-Manager nach Ihrer Löschaktion in Panik geschlossen, verrät Ihnen der Befehl

rpm -qal | grep /ls$

wo das Programm gespeichert war. Der Befehl rpm -qal listet die Dateien aller installierten Pakete auf. Da diese Liste mehrere hundert Bildschirmseiten lang ist, reicht das Pipe-Symbol (|) sie an den Befehl grep weiter. Dieser durchsucht nun die lange Liste nach der Zeichenfolge /ls. Das angehängte Dollar-Zeichen sagt grep, dass /ls am Ende der Zeichenkette stehen muss. So verhindern Sie, dass grep auch Treffer anzeigt, die mit Ihrer Suchanfrage gar nichts zu tun haben, wie etwa /usr/sbin/lsof. Die Ausgabe dieses Befehls ist /bin/ls. Mit diesem Zwischenergebnis finden Sie im nächsten Schritt heraus, aus welchem Paket ls stammt.

Schritt 2

Geben Sie rpm -qf /bin/ls ein. Die Paketverwaltung teilt Ihnen mit, dass ls im Paket fileutils enthalten ist. Neben dem Namen des Pakets wird auch die Versionsnummer ausgegeben, bei SuSE Linux 8.1 beispielsweise fileutils-4.1.11-18. Dass die Datei /bin/ls zu diesem Zeitpunkt gar nicht mehr existiert, spielt keine Rolle. rpm verlässt sich nur auf seine Datenbank, die alle Informationen über installierte Pakete speichert.

Schritt 3

Legen Sie nun das Installationsmedium Ihrer Distribution ein. Falls Sie keine DVD besitzen, müssen Sie je nach gesuchtem Paket eventuell alle CDs durchprobieren. Bei dem Paket fileutils ist das nicht nötig. Da es zur Standardausstattung eines jeden Linux-Systems gehört, liegt es sowohl bei SuSE als auch bei Red Hat Linux auf der ersten CD. Mounten Sie Ihre CD oder DVD durch Klick auf das passende Desktop-Icon.

Schritt 4

Nun können Sie das Paket neu installieren. Werden Sie dafür zunächst durch su und Eingabe Ihres Administraor-Passworts zu root. Der Befehl rpm -i paket.rpm hilft hier nicht weiter, da die Paketverwaltung sich weigert, ein schon installiertes Paket erneut einzuspielen. Auch der Weg über die Deinstallation mit rpm -e Paketname und nachfolgende Neuinstallation funktioniert in den meisten Fällen nicht, da andere Pakete von dem Installationskandidaten abhängig sind. Für solche Fälle kennt rpm den Parameter --replacepkgs (ersetze Paket). Dabei wird ein Paket selbst dann installiert, wenn es schon auf dem System vorhanden ist. Um die fileutils neu zu installieren, geben SuSE-Linux-Nutzer

rpm -i /media/cdrom/suse/i586/fileutils-4.1.11-18.i586.rpm --replacepkgs

ein, Red-Hat-Linux-Anwender tippen

rpm -i /mnt/cdrom/RedHat/RPMs/fileutils-4.1.9-11.i386.rpm --replacepkgs

Bei SuSE Linux 8.2 hat das Paket fileutils eine höhere Versionsnummer. Geben Sie einfach fileutils ein und nutzen Sie die [Tab]-Taste, um den Dateinamen zu vervollständigen. Unter Red Hat Linux 9 ist ls in das Paket coreutils gewandert, das sich ebenfalls auf der ersten CD befindet.

So wie hier beschrieben, ersetzen Sie auch andere Dateien, die Sie versehentlich gelöscht haben. Bei Benutzerprogrammen, wie z. B. Gimp, gehen Sie dabei kein Risiko ein, da diese Ihre Konfiguration in Ihrem Home-Verzeichnis speichern, das bei einem rpm-Aufruf nicht modifiziert wird. Ersetzen Sie jedoch System-Software wie das Paket pppd (zur Internet-Einwahl), müssen Sie eventuell erneut konfigurieren, z. B. mit YaST. Bei manchen Dateien funktioniert dieser Trick nicht, etwa wenn Sie eine Bibliothek gelöscht haben, ohne die rpm nicht funktioniert -- verstehen Sie ihn also nicht als Einladung, Ihre Administratorrechte leichtsinnig auszuüben.

Tipp: Schnittmuster für Spalten

Fast jedes Adressbuch kann seine Datensätze in eine Textdatei exportieren. Der Import dieser Textdateien in andere Programme funktioniert in der Regel problemlos, auch wenn im Einzelfall ein wenig Nachbearbeitung nötig ist. Mal kann ein importierendes Programm nicht mit allen exportierten Spalten etwas anfangen; mal wollen Sie selbst einige Informationen ausfiltern, um eine kompakte Übersicht auszudrucken. Wer sich nicht auf die Suche nach einem Editor mit Spaltenmodus begeben will, verwendet für solche Fälle das Kommandozeilen-Tool cut (engl.: "schneiden").

Abbildung 1 zeigt eine exportierte Adressdatenbank mit allerlei Feldern wie Geburtsdatum und Spitzname. Für einen Ausdruck wäre eine kompakte Liste besser: nur Namen, Adressen und Telefonnummern. Diese Informationen stehen in den Spalten 1, 2, 3 und 7. Durch Eingabe von

cut -f 1,2,3,7 adressen.txt > ausdruck.txt

schreiben Sie eine neue Textdatei namens ausdruck.txt, die nur die gewünschen Informationen in übersichtlicher Form enthält (Abbildung 2).

Abb. 1: Ein Bild wie Kraut und Rüben: Ein als Textdatei exportiertes Adressbuch.

Abb. 2: Cut hat vier Spalten aus der Adressdatei herausgeschnitten.

In der Default-Einstellung betrachtet cut nur Tabulatoren als Spalten-Trennzeichen. Möchten Sie eine durch Kommata getrennte Liste mit dem Tool bearbeiten, teilen Sie ihm das Trennzeichen (auf Englisch "delimiter") mit dem Parameter -d mit. Der Aufruf lautet dann

cut -d , -f 1,2,3,7 einedatei.txt > neuedatei.txt

Tipp: Alles hat ein Ende ...

... aber leider nicht immer dasselbe. Haben Sie eine Konfigurationsdatei unter Windows erstellt, hagelt es oft Fehlermeldungen, wenn Sie diese unter Linux nutzen wollen. Schuld sind die unterschiedlichen Zeilenumbrüche: Während unter Linux ein LF (Line Feed oder Zeilenvorschub in Anlehnung an die Zeiten der Schreibmaschine) einen Zeilenumbruch markiert, verwendet Windows zusätzlich zu dem LF noch ein CR (Carriage Return, Wagenrücklauf), also CRLF.

Die Umwandlung der Zeilenenden erledigen Sie mit dem Programm dos2unix: Der Aufruf

dos2unix -n dosdatei.txt unixdatei.txt

ersetzt alle CRLF in dosdatei.txt durch LF und schreibt seine Ausgabe in unixdatei.txt. Wollen Sie keine neue Datei erstellen, sondern die Änderungen direkt in der Originaldatei ausführen, rufen Sie einfach

dos2unix -o datei.txt

auf. In die andere Richtung geht es ebenso schnell. Das passende Tool heißt unix2dos und wird in der Form

unix2dos -n unixdatei.txt dosdatei.txt

aufgerufen. So verhindern Sie, dass einige Windows-Programme, wie etwa Notepad, Endloszeilen anzeigen. Unter SuSE Linux müssen Sie das Tool erst nachinstallieren. Das erledigen Sie mit dem Befehl yast -i unix2dos. YaST fordert daraufhin die zweite CD an und spielt die Software ein.

Tipp: Zeichen wechsel Dich

Ein weiterer Künstler im Umgang mit Textdateien ist tr. Dieses Programm erwartet die Angabe zweier Zeichenketten und ersetzt dann die Buchstaben des ersten Sets durch die des zweiten. Um z. B. alle Großbuchstaben in einer Textdatei in den entsprechenden Kleinbuchstaben zu verwandeln, geben Sie

tr A-ZÄÖÜ a-zäöü < original.txt > neu.txt

ein. Die beiden spitzen Klammern tragen dabei einer Besonderheit von tr Rechnung: Per Default liest es von der Standardeingabe (also das, was Sie eintippen) und schreibt seine Ergebnisse direkt auf den Bildschirm, die Standardausgabe. Das < weist tr an, aus der Datei original.txt zu lesen, und mit dem > leiten Sie die Ausgabe in die Datei neu.txt um.

Ähnlich einfach "verschlüsseln" Sie Texte nach der Rot-13-Methode: Diese Pseudo-Verschlüsselung ist auf Mailing-Listen über noch nicht gesendete Filme und Serien sehr beliebt, da man so niemandem versehentlich die Überraschung verdirbt. Bei Rot-13 wird jeder Buchstabe um 13 Stellen im Alphabet verschoben. Aus a wird dabei ein n. Wenden Sie darauf wieder Rot-13 an, wird das n wieder zum a. Der Befehl

tr a-zA-Z n-za-mN-ZA-M < datei > rotierte_datei

erledigt das für Sie. Wie tr dabei arbeitet, veranschaulicht Abbildung 3.

Abb. 3: Arbeitsweise von tr: hier umfasst das zu ersetzende Set (a-zA-Z) 52 Zeichen.

Sogar DOS-Zeilenenden können Sie mit tr in ihr Unix-Pendant verwandeln. Mit dem Parameter -d aufgerufen, entfernt tr die angegebenen Zeichen. Ein tr -d '\r' < dosdatei > unixdatei verpasst einer DOS-Datei Unix-Zeilenenden. Die Information, dass das Wagenrücklauf-Zeichen als \r eingegeben wird, steht in der Manpage von tr, die Ihnen auch verrät, dass ein Tabulator als \t dargestellt wird.

Lediglich die Frage, wie man "Postbote" ohne "o" ausspricht, wird Ihnen das Tool nicht beantworten. Ein echo Postbote | tr -d o liefert nur Pstbte zurück, obwohl doch jedes Kind weiß, dass die richtige Antwort "Briefträger" lautet. (fan)

Dieser Online-Artikel kann Links enthalten, die auf nicht mehr vorhandene Seiten verweisen. Wir ändern solche "broken links" nur in wenigen Ausnahmefällen. Der Online-Artikel soll möglichst unverändert der gedruckten Fassung entsprechen.

Druckerfreundliche Version | Feedback zu dieser Seite | Datenschutz | © 2020 COMPUTEC MEDIA GmbH | Last modified: 2007-01-25 16:32

Nutzungsbasierte Onlinewerbung

[Linux-Magazin] [LinuxUser] [Linux-Community] [Admin-Magazin] [Ubuntu User] [Smart Developer] [Linux Events] [Linux Magazine] [Ubuntu User] [Admin Magazine] [Smart Developer] [Linux Magazine Poland] [Linux Community Poland] [Linux Magazine Brasil] [Linux Magazine Spain] [Linux Technical Review]