map
Dieser Artikel wurde für die folgenden Ubuntu-Versionen getestet:
Ubuntu 22.04 Jammy Jellyfish
Du möchtest den Artikel für eine weitere Ubuntu-Version testen? Mitarbeit im Wiki ist immer willkommen! Dazu sind die Hinweise zum Testen von Artikeln zu beachten.
Zum Verständnis dieses Artikels sind folgende Seiten hilfreich:
map 🇬🇧 ist ein kleines Hilfsprogramm für den Terminal, welches von der Standardeingabe liest und dann einen Befehl zeilenweise auf alle Daten von der Standardeingabe anwendet.
Das Programm kann nichts, was nicht auch mit xargs, awk oder in Teilen auch find erreichbar wäre - nur ist map für einfache Anwendungsfälle einfacher zu handhaben als die genannten Programme.
Installation¶
map ist nicht in den Paketquellen enthalten oder als fertig kompilierte Binärdatei verfügbar, lässt sich jedoch einfach kompilieren und installieren.
Hinweis!
Fremdsoftware kann das System gefährden.
Dazu lädt man die aktuelle Version als ZIP-Datei herunter ⮷ und entpackt diese in einem beliebigen Verzeichnis (z.B. dem eigenen Homeverzeichnis)[1]. Dort wechselt man in das Verzeichnis master-zip und führt den Befehl zum Kompilieren und Installieren aus [2][3]:
sudo make install
Damit ist das Programm einsatzbereit.
Benutzung¶
Die allgemeine Syntax von map lautet:
EINGABE | map VARIABLE KOMMANDO
EINGABE
ist der Befehl, der ein oder mehrere Zeilen als Ausgabe hat. VARIABLE
ist der Variablenname, den man der Eingabe zuweist. Dieser kann im Prinzip beliebig gewählt werden. KOMMANDO
ist der Befehl, an den die Variable übergeben wird und der für jede Eingabezeile angewendet wird.
Im folgenden Beispiel dient als Eingabe die Ausgabe des Befehls ls. Jede Eingabe wird iterativ der Variablen f zugewiesen und dann file
auf jede Zeile angewendet.
ls | map zeile 'test -f $zeile && wc -m $zeile'
Die Ausgabe sieht dann z.B. so aus, wenn man sich im Verzeichnis befindet, in dass man die unter "Installation" heruntergeladenen Daten entpackt hat:
LICENSE: ASCII text makefile: RAGE Package Format (RPF), map: ELF 64-bit LSB pie executable, x86-64, version 1 (SYSV), dynamically linked, interpreter /lib64/ld-linux-x86-64.so.2, BuildID[sha1]=cf71a82056f9ed6a5650cec21e192e69c1129816, for GNU/Linux 3.2.0, stripped map.1: troff or preprocessor input, ASCII text map.c: C source, ASCII text README.md: ASCII text test: directory
Der folgende Befehl würde für jede Datei im aktuellen Verzeichnis die Anzahl der Zeichen zählen:
ls | map zeile 'wc -m $zeile'
Auf der in Einleitung verlinkten Projektseite sind noch weitere Beispiele für die Verwendung von map zu finden.
Deinstallation¶
Zur Deinstallation wechselt man einfach wieder in das Verzeichnis, in das man bei der Installation die Daten entpackt hat und führt dort den Befehl
sudo make uninstall
aus.