Plattformunabhängige Werkzeugsammlung Swiss File Knife

Aus LinuxUser 02/2015

Plattformunabhängige Werkzeugsammlung Swiss File Knife

© PHOTOPRESS/Victorinox

Schweizer Messer

Swiss File Knife ersetzt auf einen Streich über einhundert einzelne Kommandozeilenprogramme, passt aber trotzdem auf einen USB-Stick und läuft unter allen gängigen Betriebssystemen.

Wer gerne das Terminal verwendet, der nutzt zwangsläufig viele verschiedene Programme. Sie alle unterscheiden sich in der Bedienung, was man ganz besonders zu spüren bekommt, wenn man zwischen verschiedenen Betriebssystemen hin- und herwechselt.

In solchen Fällen lohnt ein Blick auf SFK der Firma StahlWorks Technologies [1]: Das Werkzeug ersetzt zahlreiche herkömmliche Kommandozeilenprogramme und kann nicht nur Dateien verwalten, sondern auch Textdateien manipulieren und sogar einen FTP- oder HTTP-Server starten. Auf diese Weise lassen sich schnell Dateien übertragen oder Internetdienste ausprobieren beziehungsweise aufrechterhalten. Obendrein bietet Swiss File Knife (SFK) auch noch die Möglichkeit, einzelne Kommandos in Skripten zusammenzufassen.

Einen kleinen Überblick über die zahlreichen Möglichkeiten des Tools liefert der Kasten “Fähigkeiten von Swiss File Knife”. Im Idealfall brauchen Sie für die Arbeit nur noch SFK, dessen Funktionen zudem immer die gleiche Bedienung beziehungsweise Syntax bieten.

SFK steht als vorkompiliertes Programm bereit, das keine weiteren Abhängigkeiten besitzt. So können Sie das Werkzeug auf einem USB-Stick überall mit hinnehmen und vor Ort für Wartungs- oder Rettungsarbeiten einsetzen. Neben 32- und 64-Bit-Binaries für Linux gibt es auch Varianten für den Raspberry Pi und andere ARM-Rechner. sowie Windows und Mac OS X. Sie können also auf allen gängigen Systemen mit dem gleichen Werkzeug arbeiten und müssen nicht ständig umdenken.

Fähigkeiten von Swiss File Knife

Dateien und Verzeichnisse

  • Dateien im Verzeichnisbaum anhand von Zeit, Größe und Name heraussuchen und passend sortiert präsentieren
  • Dateien auf verschiedene Arten finden und Duplikate aufspüren
  • Unterschiede zwischen zwei Verzeichnissen anzeigen
  • Kommandos und Programme auf ausgewählte Dateien oder einen ganzen Verzeichnisbaum anwenden
  • MD5-Checksummen (Fingerabdrücke) erstellen und verifizieren
  • Hexdumps von Binärdateien erstellen
  • Inhalte von ZIP-, TAR-, TAR.GZ- und TAR.BZ2-Archiven anzeigen (nur kommerzielle Fassung)

Textdateien

  • Anfang und Ende von Dateien anzeigen (ähnlich head und tail)
  • Dateien filtern und Inhalte (teilweise) ersetzen
  • Dateien schnell teilen und wieder zusammensetzen
  • Tabulatoren entfernen
  • Windows-Zeilenumbruch (CRLF) gegen den Unix-Zeilenumbruch (LF) austauschen

Netzwerk

  • Dateien über die eingebauten FTP- und HTTP-Server austauschen
  • Dateien über die eingebauten FTP- und HTTP-Clients herunterladen
  • Datenstrom einer TCP-, UDP- oder HTTP-Verbindung ausgeben / beobachten

Wahl der Waffe

Alle Varianten von SFK finden Sie auf der Sourceforge-Seite [2] des Tools unter Files | 1-swissfileknife im Verzeichnis mit der aktuellen Versionsnummer, zu Redaktionsschluss 1.7.2. In der Liste klicken Sie dann die zu Ihrem System passende EXE-Datei an, die Sie an der Endung des Dateinamens erkennen (alle auch auf der Heft-DVD).

Für den Raspberry Pi und andere ARM-Rechner eignet sich ...-arm.exe, für 32- und 64-Bit-Linux stehen ...-linux.exe und -linux-64.exe parat. Die Datei mit dem Suffix -linux-lib5.exe ist für ältere Distributionen gedacht, auf denen noch die Bibliothek libstdc++.so.5 zum Einsatz kommt. Die OS-X-Versionen für PPC- und Intel-Maschinen erkennen Sie am Namensbestandteil mac, die Windows-Variante heißt schnöde sfkVersion.exe.

Es steht auch ein ZIP-Archiv zum Download, das unter anderem die Mac-OS-X-, Windows- und Linux-Versionen enthält, Letztere allerdings nur in der 32-Bit-Fassung. Nach dem Entpacken finden Sie die Linux-Programme im Unterverzeichnis uxbin.

Lassen Sie sich bei den Linux-Versionen in jedem Fall nicht von der Endung .exe stören: Es handelt sich trotzdem immer um ein ausführbares Binary. Benennen Sie es in sfk um und machen Sie es ausführbar, etwa mit: chmod +x sfk. Anschließend können Sie SFK direkt nutzen, ohne es installieren zu müssen. Auf Rechnern, auf denen Sie es regelmäßig nutzen wollen, kopieren Sie es am besten an einen passenden Ort, wie etwa nach ~/bin oder /usr/bin.

Zahlemann und Söhne

Zusätzlich zum freien, der BSD-Lizenz unterliegenden Swiss File Knife, das Sie auf Sourceforge erhalten, bietet StahlWorks Technologies noch eine kommerzielle “Extended Edition” an [4]. Sie kann zusätzlich die Inhalte von Archiven der Typen .zip, .tar.gz und .tar.bz2 durchsuchen und filtern, ersetzt Zeichenketten und Byte-Sequenzen in Text- beziehungsweise Binärdateien in einer höheren Geschwindigkeit und versteht beim Suchen und Ersetzen auch Wildcards sowie spezielle Suchmuster (aber weiterhin keine regulären Ausdrücke). Die “Extended Edition” gibt es ausschließlich als 32-Bit-Programm und nicht für ARM-Rechner, eine Lizenz kostet 30 Euro.

Listig

Wenn Sie SFK ohne Parameter aufrufen, präsentiert es Ihnen seine Funktionen. Welche Aufgabe das Programm erledigen soll, teilen Sie ihm über entsprechende Optionen mit. So listet beispielsweise sfk list Musik alle Dateien im Unterverzeichnis Musik auf (Abbildung 1).

Abbildung 1: Hier liefert <code srcset=

sfk zunächst einfach alle Dateien im Verzeichnis Musik, dann sortiert nach ihrem letzten Änderungszeitpunkt und zum Schluss nur die drei zuletzt geänderten Dateien.” width=”300″ height=”141″ /> Abbildung 1: Hier liefert sfk zunächst einfach alle Dateien im Verzeichnis Musik, dann sortiert nach ihrem letzten Änderungszeitpunkt und zum Schluss nur die drei zuletzt geänderten Dateien.

Der erste Parameter bestimmt grundsätzlich immer die auszuführende Aktion. So weist list SFK an, eine Liste mit Dateien auszugeben. Diese Funktionen bezeichnen die Entwickler von Swiss File Knife als Kommandos. Als zweiter Parameter folgt das Verzeichnis oder die Datei, auf die sich das Kommando bezieht.

Nach dem gleichen Schema rufen Sie auch alle weiteren Funktionen auf. Einige der Kommandos lassen sich noch über weitere Parameter feinsteuern. So liefert etwa $ sfk list -late=all Musik alle Dateien aus dem Verzeichnis Musik, sortiert nach deren Datum- und Zeitstempel. Ersetzen Sie all gegen die Zahl 3, dann zeigt SFK nur die ersten drei Dateien an.

Sofern Sie Parameter angeben, müssen diese immer direkt auf den Kommandonamen folgen. Rufen Sie lediglich sfk list auf, erhalten Sie eine Liste mit allen weiteren Parametern. Auch die meisten anderen Kommandos liefern ohne weitere Parameter ausführliche Informationen über die Optionen. So verrät sfk ftp beispielsweise, wie Sie eine Datei auf einen FTP-Server schieben.

Keine Regel ohne Ausnahme: Manche Kommandos benötigen keine Parameter und legen sofort mit der Arbeit los. So verrät sfk space, wie viel freier Speicherplatz auf dem aktuellen Laufwerk noch zur Verfügung steht. Bei solchen Kommandos liefert der Parameter -help eine Hilfeseite (Abbildung 2). Welche Kommandos das betrifft, erfahren Sie über den Aufruf sfk: Swiss File Knife kennzeichnet diese Kandidaten mit einem entsprechenden Hinweis, meist mit dem Kürzel [-h].

Abbildung 2: Die Online-Hilfe für das Kommando <code srcset=

space fällt ungewöhnlich kurz aus. Die der anderen Kommandos liefert meist mehrere Bildschirmseiten.” width=”300″ height=”259″ /> Abbildung 2: Die Online-Hilfe für das Kommando space fällt ungewöhnlich kurz aus. Die der anderen Kommandos liefert meist mehrere Bildschirmseiten.

Die von SFK ausgegebenen Hilfeseiten fallen durchweg ziemlich lang aus. Um sie in Ruhe studieren zu können, leiten Sie sie am besten in eine Textdatei um, nach folgendem Strickmuster

$ sfk list > list_hilfe.txt

Etwas bequemer lässt sich die Referenz auf der SFK-Homepage durchsuchen [1]. Eine Referenz mit allen Kommandos verkauft StahlWorks Technologies für 3 US-Dollar als PDF [3]. Die ersten 20 Seiten lassen sich kostenlos lesen. Im Wesentlichen handelt es sich dabei jedoch um die Inhalte der Hilfe-Seiten, die SFK ausgibt – in der Regel können Sie sich also den Kauf sparen.

Einzeln verarztet

In den bisherigen Beispielen hat sfk list immer alle Dateien aus dem Verzeichnis Musik berücksichtigt. Sie können die Anzeige aber auch auf bestimmte Dateien einschränken. So zeigt der Befehl sfk list Musik .wav .mp3 nur noch die Musikdateien mit der Endung .wav oder .mp3 an. Über einen Doppelpunkt lassen sich auch Dateien ausschließen: So liefert sfk list Musik :.wav alle Dateien, die nicht die Endung .wav besitzen.

Die in der Shell gerne verwendeten Platzhalter * und ? müssen Sie bei SFK durch \* und \? ersetzen – andernfalls besteht die Gefahr, dass die Shell und nicht sfk diese sogenannten Wildcards auswertet. Anstelle von \* dürfen Sie auch % schreiben. Der Befehl sfk list Musik %.mp3 zeigt also alle Dateien an, die auf .mp3 enden (Abbildung 3). Bei Bedarf kombinieren Sie mehrere Auswahlkriterien. So listet der folgende Befehl alle .mp3-Dateien auf, deren Dateiname nicht die Zeichenfolge Bubble enthält:

$ sfk list Musik %.mp3 :%Bubble%
Abbildung 3: Der erste Befehl gibt alle MP3-Dateien aus, der zweite unterdrückt zusätzlich alle Dateien mit dem Wort <code srcset=

Bubble.” width=”300″ height=”125″ /> Abbildung 3: Der erste Befehl gibt alle MP3-Dateien aus, der zweite unterdrückt zusätzlich alle Dateien mit dem Wort Bubble.

Die Auswahlkriterien stehen dabei immer am Ende des kompletten Befehls und beziehen sich auf das angegebene Verzeichnis, im Beispiel Musik. SFK kann aber auch die Dateien mehrerer Verzeichnisse gleichzeitig zeigen. Dazu müssen Sie jedoch eine leicht andere Notation verwenden und den Parameter -dir zu Hilfe bitten:

$sfk list -dir Musik Downloads

Jetzt umfasst die Liste alle Dateien aus den Unterverzeichnissen Musik und Downloads. Um die Anzeige auf bestimmte Dateien zu beschränken, geben Sie die Auswahlkriterien hinter dem Parameter -file an. Das folgende Beispiel fördert so alle MP3-Dateien aus Musik und Downloads zutage, die nicht den Text Bubble im Dateinamen tragen:

$ sfk list -dir Musik Downloads -file %.mp3 :%Bubble%

Solche Kommandos helfen nicht nur beim Durchforsten von Musiksammlungen: Programmierer können sich so beispielsweise schnell die Makefiles aus allen Unterverzeichnissen zusammenklauben.

Doppelt oder nichts

Seine Vorteile spielt SFK vor allem bei komplexeren Operationen aus. So entfernt der Befehl sfk deblank Musik/ sämtliche Leerzeichen aus den Namen der Dateien im Unterverzeichnis Musik. Beim Aufruf passiert allerdings erst einmal noch nichts: Wie in Abbildung 4 gibt SFK zunächst nur einen Ausblick darauf, welche Dateien es wie umbenennen würde. Um die Änderungen tatsächlich vorzunehmen, ergänzen Sie noch den Parameter -yes:

$ sfk deblank -yes Musik/
Abbildung 4: Einige Kommandos, wie hier <code srcset=

deblank, simulieren zunächst nur die Aktion. Hier zeigt das Werkzeug an, wie es die Dateien umbenennen würde. Die neuen Namen stehen dabei rechts neben den Pfeilen.” width=”300″ height=”45″ /> Abbildung 4: Einige Kommandos, wie hier deblank, simulieren zunächst nur die Aktion. Hier zeigt das Werkzeug an, wie es die Dateien umbenennen würde. Die neuen Namen stehen dabei rechts neben den Pfeilen.

Standardmäßig entfernt das Werkzeug die Leerzeichen sowohl in Datei- als auch Verzeichnisnamen. Möchten Sie die Änderungen auf Dateien beschränken, müssen Sie zunächst mit dem Kommando select alle Files auswählen und dann diese Auswahl von der Funktion deblank verarbeiten lassen:

$ sfk select Musik/ +deblank -yes

Das Plus-Zeichen vor deblank weist SFK an, die beiden Kommandos select und deblank zu verketten. Die von select vorbereitete Dateiliste erhält dabei das hinter dem Plus angegebene Kommando – in diesem Fall deblank.

Neben Leerzeichen kann SFK auch Duplikate aufspüren und eliminieren. Dabei verlässt es sich nicht rein auf die Dateinamen, sondern vergleicht immer die Inhalte der Files. Der folgende Befehl liefert die Namen aller Dateien, die sowohl im Verzeichnis Musik als auch in Download liegen (Abbildung 5):

$ sfk dupfind -dir Musik Downloads
Abbildung 5: Hier hat SFK eine Datei aufgespürt, die sowohl im Ordner <code srcset=

Musik als auch unter Downloads liegt.” width=”300″ height=”43″ /> Abbildung 5: Hier hat SFK eine Datei aufgespürt, die sowohl im Ordner Musik als auch unter Downloads liegt.

Um die doppelten Dateien auch zu löschen, hängen Sie die Funktion +delete (kurz: +del) an. SFK zeigt dabei zunächst nur an, welche Dateien es entfernen würde. Um das Löschen zu bestätigen, hängen Sie wie bei deblank noch den Parameter -yes an:

$ sfk dupfind -dir Musik Downloads +del -yes

Anders als bei list spielt bei dupfind die Reihenfolge der Verzeichnisse eine wichtige Rolle: SFK nimmt an, dass die Originaldateien in Musik liegen und wertet die Dateien aus den nachfolgend angegebenen Verzeichnissen als Duplikate.

Textmangel

Eine weitere Leib- und Magenspeise von SFK sind Textdateien. Tauschen Sie häufig Textdokumente zwischen Windows und Linux aus, dürften Sie sich beispielsweise über die Kommandos lf-to-crlf und crlf-to-lf freuen, mit denen Sie die unterschiedlichen Zeilenumbrüche konvertieren.

Programmierer wandeln mit detab die Tabulatoren in einer Textdatei in Leerzeichen um, umgekehrt funktioniert es mit entab. Des Weiteren bietet SFK auch eine recht mächtige Suchen-und-Ersetzen-Funktion. Der folgende Befehl liefert alle Zeilen aus der Protokolldatei server.log zurück, die mit Error beginnen:

$ sfk filter server.log "-ls+Error"

Bei -ls+Error handelt es sich nicht etwa um einen regulären Ausdruck, sondern um ein SFK-spezifisches Muster. Dessen Aufbau erklärt die recht umfangreiche Online-Hilfe, die Sie über sfk filter abrufen. Im obigen Beispiel steht ls für “line start”, also den Anfang einer Zeile. Um alle Zeilen ausgeben zu lassen, in denen irgendwo Error vorkommt, verwenden Sie zwei Pluszeichen:

$ sfk filter server.log "++Error"

Wie der Name des Kommandos dezent andeutet, kann filter auch Texte verändern. So ersetzt der folgende Befehl in der Datei super.txt jedes super durch toll:

$ sfk filter super.txt -rep "_super_toll_"

Das Kommando zeigt dabei die Änderungen zunächst nur auf der Standardausgabe an (Abbildung 6). Um sie in die Textdatei zu schreiben, müssen Sie noch den Parameter -yes bemühen; alternativ erstellen Sie eine neue Textdatei (Listing 1).

Abbildung 6: Das Kommando <code srcset=

find ersetzt hier die Zeichenkette super durch toll, wobei es weder Groß- und Kleinschreibung berücksichtigt, noch einzelne Worte beachtet.” width=”300″ height=”33″ /> Abbildung 6: Das Kommando find ersetzt hier die Zeichenkette super durch toll, wobei es weder Groß- und Kleinschreibung berücksichtigt, noch einzelne Worte beachtet.

Listing 1

$ sfk filter -yes super.txt -write -to toll.txt -rep "_super_toll_"

Ins Netz gegangen

SFK kümmert sich nicht nur um Dateien, sondern bietet auch einige nützliche Netzwerkkommandos. So fragen Sie etwa mit sfk ip die aktuelle Netzwerkadresse des Rechners ab.

Zu den eingebauten Kommandos zählen auch wget und ftp, wobei Sie sich durch die Namen nicht verwirren lassen sollten. So kann das SFK-“Wget” Dateien lediglich via HTTP herunterladen (Listing 2). Die umfangreichen Funktionen seines GNU-Namensvetters bietet es nicht; weder setzt es abgebrochene Downloads fort, noch arbeitet es rekursiv. Auch bei SFKs ftp handelt es sich nur um einen rudimentären FTP-Client.

Listing 2

$ sfk wget http://download.opensuse.org/distribution/13.2/iso/openSUSE-13.2-DVD-x86_64.iso

Immerhin enthält SFK einen einfachen Web- und FTP-Server. Beide lassen sich ohne große Konfiguration aufsetzen, ein sfk httpserv respektive ./sfk ftpserv genügt. Alle für den Zugriff benötigten Daten vermelden die beiden Dienste im Terminal. Sie beenden die Server jeweils über [Strg]+[C].

Abbildung 7: Der Webserver lauscht standardmäßig an Port 8080 und liefert hier die Inhalte des <code srcset=

Musik-Verzeichnisses aus.” width=”300″ height=”120″ /> Abbildung 7: Der Webserver lauscht standardmäßig an Port 8080 und liefert hier die Inhalte des Musik-Verzeichnisses aus.

Sowohl der FTP- als auch der HTTP-Server gestatten nach dem Start umgehend Lesezugriff auf die Inhalte des aktuellen sowie sämtlicher darin enthaltenen Verzeichnisse (Abbildung 7). Das ermöglicht zwar einerseits einen unkomplizierten Dateiaustausch, anderseits dürfen beliebige Benutzer auf die Daten zugreifen. Schränken Sie daher nach Möglichkeit über weitere Parameter den Zugriff ein.

Das gelingt beispielsweise mit dem Parameter -user. So sorgt der Befehl sfk ftpserv -user=hans dafür, dass sich nur Benutzer mit dem Username hans am FTP-Server anmelden können. Weitere mögliche Parameter spucken die Befehle sfk webserv -help und sfk ftpserv -help aus.

Fazit

SFK hilft allen, die häufig komplexe Datei-, Text- und Netzwerkarbeiten im Terminal ausführen müssen. Die Syntax fällt gewöhnungsbedürftig aus, zudem spielt die Reihenfolge der Parameter eine wichtige Rolle. Neulinge dürften deshalb häufig die Online-Hilfe wälzen. Die lässt zwar eine Einführung vermissen, ist im Gegenzug aber äußerst ausführlich und lässt kaum Fragen offen. Wer sich mit den Eigenheiten von Swiss File Knife anfreundet, kommt jedoch in vielen Lebenslagen ohne zusätzliche Tools aus. Obendrein lässt sich SFK auf einem USB-Stick überallhin mitnehmen und läuft mit identischer Syntax unter Linux, Mac OS X und Windows. 

Infos

[1] Swiss File Knife: http://stahlworks.com/dev/swiss-file-knife.html

[2] SFK bei Sourceforge: http://sourceforge.net/projects/swissfileknife/

[3] SFK “Three Dollar Booklet”: http://stahlworks.com/index.php?page=sfkbook

[4] SFK “Extended Edition”: http://stahlworks.com/sfkxe.html

DIESEN ARTIKEL ALS PDF KAUFEN
EXPRESS-KAUF ALS PDF
LinuxUser 02/2015 KAUFEN
EINZELNE AUSGABE
ABONNEMENTS
TABLET & SMARTPHONE APPS
E-Mail Benachrichtigung
Benachrichtige mich zu:

Hinweis: Dieser Artikel ist älter als ein Jahr, enthaltene Informationen sind möglicherweise veraltet.

0 Kommentare
Älteste
Neuste Beste Bewertung
Inline Feedbacks
Alle Kommentare anzeigen
Nach oben