[[Vorlage(Getestet, jammy)]] {{{#!vorlage Wissen [:Packprogramme: Archive entpacken] [:Programme kompilieren: Pakete aus dem Quellcode erstellen] [:mit Root-Rechten arbeiten:] [:Terminal: Ein Terminal öffnen] }}} ## [[Inhaltsverzeichnis()]] [github:soveran/map:map] {en} 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. [[Vorlage(Fremd, Software, "")]] Dazu lädt man die aktuelle Version [https://github.com/soveran/map/archive/refs/heads/master.zip als ZIP-Datei herunter] {dl} 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]: {{{#!vorlage Befehl sudo make install }}} Damit ist das Programm einsatzbereit. =Benutzung= Die allgemeine Syntax von map lautet: {{{#!vorlage Befehl 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. {{{#!vorlage Befehl 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: {{{#!vorlage Befehl 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 Installation] die Daten entpackt hat und führt dort den Befehl {{{#!vorlage Befehl sudo make uninstall }}} aus. ##tag: Shell