
Es wird mal wieder Zeit zu Bloggen. Ich beginne mal eine Serie, die ich in loser Folge bis in alle Ewigkeit fortsetzen möchte.
Es geht um Shelltools, also kleine Helfer auf der Kommandozeile. Häufig ist man doch gezwungen unter Linux (auch in der Sandbox eines ChromeBook) Aufgaben auf der Kommandozeile zu erledigen. Ich persönlich finde das an vielen Stellen auch deutlich einfacher und performanter als das Klicki Bunti.
atool – Schweizer Taschenmesser für Archive
Der erste Kandidat für ein solches Tool ist atool. Eines der von mir am meisten genutzten kleinen Helferlein. Vorweg muss ich aber sagen das atool scheinbar seit 2012 nicht mehr aktiv betreut wird. Das tut aber der Funktion keinen Abbruch und auch in aktuellen Distributionen wird das Tool eingepflegt.
Atool ist ein kleines Perl-Skript zur Bearbeitung und Verwaltung von komprimierten Dateiarchiven verschiedener Typen. Dabei kann das Tool mit Archivformaten wie .tar, .zip, .jar, .rar, .lha, .lzh, .gz, .bz, .7z, .deb und vielen mehr umgehen.
Der große Vorteil ist, das man sich nicht jede Option jedes einzelnen Packprogramm merken muss. atool vereint alle Formate unter einem (Kommandozeilen) Befehl.
atool installieren
Auf nahezu allen Debian basierten System (Ubuntu, Xubuntu, … und die ChromeOS Sandbox ) reicht ein einziger Befehl zur Installation aus:
sudo apt install atool
Benutzung
Für die Benutzung gibt es verschiedene Einzelbefehle für die jeweiligen Programmfunktionen. Ansonsten kann auch auf den eigentlichen Befehl zurückgegriffen werden.
Grundsätzlich wird, wenn kein Archivtyp angegeben wird (–format bzw. -F), der Archivtyp aus der Dateiendung bestimmt.
Einzelbefehle
aunpack
aunpack
extrahiert ganze Archive oder Einzeldateien aus einem Archiv. Werden nur einzelne Dateien aus einem Archiv entpackt, legt das Programm diese im aktuellen Arbeitsverzeichnis ab. Wird jedoch ein ganzes Archiv entpackt, legt aunpack
automatisch ein temporäres Verzeichnis an, in welchem die ausgepackten Dateien platziert werden. Genau das ist auch die unglaubliche Stärke von atool. Ich entpacke einfach ein Archiv und der Kram landet mir nicht versehentlich im aktuellen Ordner. Ist im Archiv ein Verzeichnis wird das verwendet. Gibt es kein Verzeichnis im Archiv und es sind mehrere Dateien drin wird trotzdem eins angelegt.
aunpack [OPTION]... ARCHIV [DATEI DATEI ...]
apack
apack
erzeugt Archive (oder komprimierte Dateien). Falls keine Optionen angegeben sind, werden die Dateinamen aus dem aus der Standardeingabe übernommen.
apack [OPTION]... ARCHIV [DATEI DATEI ...]
als
als
listet alle Dateien in einem Archiv auf oder gibt, falls angegeben, detailliertere Informationen zu einzelnen Dateien im Archiv aus.
als [OPTION]... ARCHIV [DATEI]...
acat
acat
extrahiert Dateien in einem Archiv in die Standardausgabe. Auf diese Weise ist es möglich, z.B. in einem Archiv verpackte Textdateien direkt im Terminal anzeigen zu lassen.
acat [OPTION]... ARCHIV [DATEI]...
adiff
adiff
zeigt den Unterschied zwischen zwei Archiven an. Hierbei verwendet es das Programm diff.
adiff [OPTION]... ARCHIV1 ARCHIV2 ...
Grundsärtlicher Befehl atool
Auch mittels des Befehls atool
kann auf sämtliche Programmfunktionen zugegriffen werden. Hierbei müssen zwingend die für die gewünschte Funktion vorgesehenen Optionen Anwendung finden.
Der Aufruf erfolgt über
atool [OPTION]... ARCHIV [DATEI DATEI ...]
Optionen
Übersicht über die Aufrufoptionen
Kurzform | Langform | Bedeutung |
-l | --list | Listet die Dateien in einem Archiv auf (entspricht Aufruf von als ). |
-x | --extract | Extrahiert Dateien aus Archiv (entspricht Aufruf von aunpack ). |
-X | --extract-to=VERZEICHNISPFAD | Extrahiert Dateien aus einem Archiv in ein angegebenes Verzeichnis. |
-a | --add | Generiert ein Archiv (entspricht Aufruf von apack ). |
-c | --c | Extrahiert eine Datei aus einem Archiv in den Standard-Output, zeigt also zum Beispiel den Inhalt einer verpackten Textdatei im Terminal an (entspricht Aufruf von acat ). |
-d | --diff | Extrahiert zwei Archive und zeigt, unter Verwendung des Programms diff, die Unterschiede zwischen beiden an (entspricht Aufruf von adiff ). |
-e | --each | Wendet den Befehl auf jedes einzelne angegebene Element an (Stapelverarbeitung). Dies kann hilfreich sein, um z.B. mehrere Archive zu extrahieren, listen oder generieren. Hinweis: diese Option kann nicht zusammen mit dem cat -Befehl verwendet werden. |
-F | --format=DATEINAMENSERWEITERUNG | Spezifiziert das Archivformat manuell. |
-S | --simulate | Führt atool im Simulationsmodus aus. Alle Befehle, welche normalerweise ausgeführt würden, werden statt dessen angezeigt, so dass keine Veränderungen am Dateisystem vorgenommen werden. Diese Option kann nicht mit --explain kombiniert werden, da sie diese bereits enthält. Hinweis: in manchen Fällen kann aus bestimten Gründen ein unterschiedliches Verhalten beim Verwenden des Simulationsmodus und des Nicht-Simulationsmodus auftreten. |
-E | --explain | Erläutert die von atool ausgeführten Befehle (kann nicht mit --simulate kombiniert werden). |
-f | --force | Erlaubt beim Extrahieren das Überschreiben von lokalen Dateien bzw. beim Generieren eines Archivs das Überschreiben von Archivdateien. Hinweis: Es ist möglich, zu existierenden RAR- und ZIP-Archiven weitere Dateien hinzuzufügen; bei vielen anderen Formaten existiert diese Möglichkeit nicht. |
-D | --subdir | Erzeugt beim Extrahieren eines Archivs automatisch ein Unterverzeichnis. |
-q | --quiet | Reduziert die Ausführlichkeit der ausgegebenen Informationen um eine Stufe. |
-v | --verbose | Erhöht die Ausführlichkeit der ausgegebenen Informationen um eine Stufe. |
-V | --verbosity=STUFE | Legt den Grad der Ausführlichkeit der ausgegebenen Informationen manuell fest. Standardstufe ist 1. |
--help | Gibt eine Zusammenfassung der möglichen Optionen aus. | |
--version | Gibt Versionsinformationen aus. |
Verwendungsbeispiele
- Extrahieren aller Dateien eines Archivs in ein Unterverzeichnis bzw., falls das Archiv nur eine Datei enthält, in das aktuelle Arbeitsverzeichnis:
aunpack ARCHIV.tar.gz
- Extrahieren aller Dateien aller im aktuellen Verzeichnis vorhandenen .tar.gz-Archive:
aunpack -e *.tar.gz
- ZIP-Archiv der Bezeichnung ARCHIV.zip aus den Dateien DATEI1 und DATEI2 erstellen:
apack ARCHIV.zip DATEI1 DATEI2
- Inhalt des Archivs ARCHIV.rar auflisten:
als ARCHIV.rar
- Drei Archive dir1.tar.gz, dir2.tar.gz und dir3.tar.gz generieren, so dass das erste Archiv alle Dateien aus dem Ordner dir1, das zweite alle Dateien aus dir2 und das dritte alle Dateien aus dir3 enthält:
apack -e -F .tar.gz dir1 dir2 dir3
- Die Unterschiede der Kernelversionen 2.4.17 und 2.4.18 anzeigen:
adiff linux-2.4.17.tar.gz linux-2.4.18.tar.gz
Ich hoffe ich konnte dir einen guten Hint mit atool
geben – Lord CrazyMaker