Linux

Kommandozeile: Wann benutzt man den einfachen Bindestrich (-) und den doppelten Bindestrich (–) für Argumente

Auf der Befehlszeile wird der einfache Bindestrich (-) verwendet, um sogenannte Kurzformargument anzugeben, Argumente mit nur einem Buchstaben Das Argument -h wird zum Beispiel häufig verwendet, um die Hilfemeldung für einen Befehl anzuzeigen, und das Argument -v wird häufig verwendet, um eine ausführliche Ausgabe zu aktivieren. Du kannst den einfachen Bindestrich (-) nur dann verwenden, wenn das Argument aus einem einzigen Buchstaben besteht.

Beispiele, wo ein einzelner Bindestrich verwendet werden kann: -h, -R und -f , der einfache Bindestrich kann aber nie für Argumente mit mehreren Buchstaben wie -verbose oder -help verwendet werden.

Der doppelte Bindestrich (--) wird auf der Kommandozeile verwendet, um sogannte Langform-Argumente anzugeben, das ein Argument mit mehreren Buchstaben. Das Argument --help wird zum Beispiel häufig verwendet, um die Hilfemeldung für einen Befehl anzuzeigen, und das Argument --verbose wird häufig verwendet, um eine ausführliche Ausgabe zu aktivieren. Doppelte Bindestriche (--) können nur dann verwendet werden, wenn das Argument mehrere Buchstaben hat

Beispiele, in denen doppelte Bindestriche verwendet werden können: --verbose, --server und --help, aber Sie können sie nicht für Argumente mit nur einem Buchstaben wie zum Beispiel --h oder --R verwendet werden.

Beispiele, wie auf der Kommandozeile einfache oder doppelte Bindestriche verwendet werden:

# Zeigt die Hilfemeldung für einen Befehl mit dem Kurzform-Argument -h
my_command -h

# Aktiviere die ausführliche Ausgabe für einen Befehl mit dem Langform-Argument --verbose
my_command --verbose

# Kombination von verschiedenen Argumenten
my_command --verbose --server "https://techoverflow.net" -f 0.1

 

Posted by Uli Köhler in Linux

Problemlösung von Ubuntu /usr/bin/env: »python“: Datei oder Verzeichnis nicht gefunden

In neueren Ubuntu-Versionen sieht man ab und zu die Fehlermeldung

/usr/bin/env: »python“: Datei oder Verzeichnis nicht gefunden

Die Ursache für diese Fehlermeldung sind, dass diese Skripte mit python ausgeführt werden sollen, aber in neueren Ubuntu-Versionen nur python3 verfügbar ist (python2 ist schon lange veraltet.

Um das Problem zu lösen, installiere das python-is-python3-Paket, das ein Alias anlegt, sodass python auf python3 zeigt:

sudo apt -y install python-is-python3

 

Posted by Uli Köhler in Linux

Was tun bei apt-Fehlermeldung E: Paket rpi-imager kann nicht gefunden werden?

Problem:

Du versuchst, rpi-imager mithilfe von

sudo apt install rpi-imager

zu installieren, aber du siehst die Folgende Fehlermeldung:

Paketlisten werden gelesen... Fertig
Abhängigkeitsbaum wird aufgebaut.       
Statusinformationen werden eingelesen.... Fertig

Kein apt-Paket "rpi-imager", es ist aber ein Snap-Paket mit dem Namen vorhanden.
Versuchen Sie »snap install rpi-imager«

E: Paket rpi-imager kann nicht gefunden werden.

Lösung:

sudo apt -y install rpi-imager funktioniert nur auf Raspbian. Auf Ubuntu kannst du rpi-imager wie Folgt installieren

sudo snap install rpi-imager

Danach starte es mit

rpi-imager

Posted by Uli Köhler in Linux, Raspberry Pi

Parallele Ausführung von Prozessen mit xargs

Ein guter Startpunkt ist -P 4 -n 1 um 4 Prozesses parallel laufen zu lassen (-P 4), aber jeder Instanz des auszuführenden Prozesses nur ein Argument zu geben (-n 1)

Dies sind die xargs-Optionen für die parallele Ausführung aus der xargs-manpage:

-P, --max-procs=ANZAHL       höchstens diese ANZAHL Prozesse zugleich ausführen

-n, --max-args=ANZAHL        höchstens diese ANZAHL Argumente in der
                                 Befehlszeile verwenden

Beispiel:

cat urls.txt | xargs -P 4 -n 1 wget

Dieser Befehl führt bis zu 4 wget-Befehle parallel aus, bis jede der URLs aus urls.txt heruntergeladen wurde. Die Folgenden Prozesse würden parallel ausgeführt:

wget [URL #1]
wget [URL #2]
wget [URL #3]
wget [URL #4]

Benutzt man stattdessen die Parameter -P 4 -n 2 dann würden die Folgenden Prozesse parallel ausgeführt:

wget [URL #1] [URL #2]
wget [URL #3] [URL #4]
wget [URL #5] [URL #6]
wget [URL #7] [URL #8]

Ein größerer Wert für -n könnte die Effizienz leicht erhöhen, da nicht für jede URL ein eigener Prozess initialisiert werden muss. Allerdings funktioniert ein Wert von n > 1 für manche Befehle nicht.

Posted by Uli Köhler in Linux

Wie behebt man „Couldn’t run /usr/bin/dumpcap in child process: Permission denied“ auf Linux

Wenn du eine Fehlermeldung wie diese in Wireshark siehst:

liegt das daran, dass der aktuelle Systemnutzer keine Berechtigung hat, Pakete von der Netzwerkkarte abzufangen.

Das kann sogar dann passieren, wenn du während der Installation ausgewählt hast, dass normale Nutzer Pakete abfangen dürfen – denn diese Einstellung wird erst aktiv, wenn du dich aus- und wieder eingeloggt hast (oder den Computer neugestartet hast).

Um das Problem temporär zu beheben, ohne dich aus- und wieder einzuloggen, führe Wireshark als Root aus: sudo wireshark

Um das Problem permanent zu beheben, führe dieses Kommando aus:

sudo usermod -a -G wireshark $USER

und dann logge dich komplett aus und wieder ein (oder starte deinen Computer neu).

Posted by Uli Köhler in Linux

iotop ‚Netlink error: Vorgang nicht zulässig (1)‘ beheben

Problem:

Du versuchst, iotop zu starten, aber siehst nur diese Fehlermeldung:

Netlink error: Vorgang nicht zulässig (1)

The Linux kernel interfaces that iotop relies on now require root priviliges
or the NET_ADMIN capability. This change occured because a security issue
(CVE-2011-2494) was found that allows leakage of sensitive data across user
boundaries. If you require the ability to run iotop as a non-root user, please
configure sudo to allow you to run iotop as root.

Please do not file bugs on iotop about this.

Lösung:

Starte iotop als root:

sudo iotop

Der Grund dafür ist, dass iotop auf Kernel-Interfaces Zugriff benötigt, die nur root oder Prozessen/Nutzern mit der CAP_NET_ADMIN-capability zugänglich sind. Theoretisch könnte man dem iotop-binary diese capability mit sudo setcap cap_net_admin+ep /usr/sbin/iotop geben, unter Ubuntu 18.04 hat dies für mich allerdings nicht funktioniert.

Posted by Uli Köhler in Linux

PDF-Dateien mit pdftk auf der Kommandozeile zusammenführen

Mit dem freien Werkzeug pdftk können auf der Kommandozeile ganz einfach mehrere PDF-Dateien zusammengefügt werden:

pdftk 1.pdf 2.pdf 3.pdf cat output Zusammengeführt.pdf

Dieses Kommando hängt den Inhalt der PDF-Dateien 1.pdf, 2.pdf und 3.pdf (in dieser Reihenfolge) hintereinander und speichert das Resultat in Zusammengeführt.pdf.

cat und output müssen bei diesem Kommando immer gleich bleiben und müssen zwischen Eingabe- und Ausgabedateien stehen.

Posted by Uli Köhler in Linux

NodeJS 10.x auf Ubuntu in einer Minute installieren

Mit den Folgenden Shell-Kommandos kannst du NodeJS 10.x auf Ubuntu installieren:

curl -sL https://deb.nodesource.com/setup_10.x | sudo -E bash -
sudo apt-get install -y nodejs

Statt setup_10.x können auch andere Versionen ausgewählt werden, z.B. setup_8.x. Mit dieser Methode können allerdings nicht verschiedene Versionen parallel installiert werden.

Quelle: Offizielle NodeSource-Dokumentation

Posted by Uli Köhler in Linux, NodeJS