Beruflich / Linux / Einzeiler für die Kommandozeile

Sie benutzen einen Browser der von diesen Internetseiten nicht unterstützt wird. Daher kann es sein, dass nicht alles so funktioniert und aussieht wie es sollte.

Einzeiler für die Kommandozeile

Obwohl die Benutzeroberflächen von Linux ( gentoo rules) in den letzten Jahren enorme Fortschritte gemacht haben und es mittlerweile ausgereifte Umgebungen (wie z.B. KDE oder Gnome ) gibt, ist die Konsole für einen Linuxer kaum weg zu denken. Ebenso wie die Bedienung eines Computers mit der Tastatur in der Regel schneller von statten geht als mit der Maus (siehe auch Keystroke Level Model ), bietet die Kommandozeile viele Vorteile gegenüber der Verwendung von Computer-Programmen mit grafischer Oberfläche. Die folgenden Einzeiler sind hoffentlich in der Lage dies zu demonstrieren.

Wie installiere ich mehrere rpm-Dateien (RedHat Package Manager) auf einmal, ohne nicht erfüllte Abhängigkeiten analysieren zu müssen?

Einfach in das Verzeichnis wechseln, in dem sich die Dateien befinden und dann die folgende Befehlszeile eingeben:

ls -C1 *.rpm | sed -e 's/\(.*\)/rpm -ivh \1' > /tmp/ausfuehren.sh && chmod 755 /tmp/ausfuehren.sh

Dadurch wird eine ausführbare Datei /tmp/ausfuehren.sh erzeugt, die anschließend ausgeführt werden kann. Diese installiert jedes Paket einzeln oder, wenn anstatt des Parameters -ivh der Parameter -Fvh verwendet wird, aktualisiert jedes Paket falls erforderlich. Wenn die Pakete untereinander abhängig sind, kann die Datei einfach mehrmals ausgeführt werden, bis keine Änderung in der Ausgabe mehr erkennbar ist. Die restlichen Pakete können aufgrund von externen Abhängigkeiten nicht installiert werden.


Wie kann ich mehrere Dateien gleichzeitig umbenennen?

Dazu gibt es das Werkzeug mmv (Multiple Move). Existieren in einem Verzeichnis beispielsweise 10 Dateien, die den folgenden Aufbau haben: NR-name-titel.jpg, wobei NR für jeweils eine Zahl zwischen 1 und 10 steht, können mit dem Befehl

mmv "*-*" "#1 - #2" && mmv "*-*" "#1 #2"

die Dateien umbenannt werden in NR - titel name.jpg.


Wie kann ich mir die Grösse aller Dateien (auch der unsichtbaren) in einem Verzeichnis in Megabyte angeben lassen?

du -ms * .[^.]?*


Wie erzeuge ich ein ssh-Schlüsselpaar für die asymetrische Verschlüsselung mit DSA?

ssh-keygen -f id_dsa -b 2048 -t dsa


Wie kann ich mir den Inhalt einer Datei ohne Kommentare und Leerzeilen anzeigen lassen?

cat | grep -v "^#" | grep "^[^\ ]"


Wie kann ich alle unter gentoo installierten Pakete gleichzeitig aktualisieren?

Nachdem ich festgestellt habe, dass ein Update mit dem von gentoo verwendeten Werkzeug zur Paketverwaltung - emerge - nicht immer alle vorhandenen Updates einspielt, habe ich den folgenden Einzeiler geschrieben, der diese Aufgabe auf jeden Fall erledigt.

Voraussetzung hierfür ist, dass das Paket eix installiert ist (emerge eix) und dessen Index aktuell ist (eix-sync).

eix -c -I | sed -e 's/.*]\ \([^\ ]*\/[^\ ]*\)\ (.*/\1/' | grep "^\w" | grep -v '\[[0-9]\]' | grep -v Treffer | tr '\n' ' ' | xargs emerge --keep-going -DuNvp

Bei älteren Versionen von eix, waren die Ausgaben noch komplett in Englisch. Für diese Versionen lautet der Ausdruck dann wie folgt:

eix -c -I | sed -e 's/.*]\ \([^\ ]*\/[^\ ]*\)\ (.*/\1/' | grep "^\w" | grep -v '\[[0-9]\]' | grep -v Found | tr '\n' ' ' | xargs emerge --keep-going -DuNvp


Wie kann ich alle unter gentoo installierten Pakete nach einer Aktualisierung des gcc neu kompilieren?

Von Zeit zu Zeit kommt es vor, dass eine neue Version der gcc heraus kommt und unter gentoo verfügbar gemacht wird. Nach einer Aktualisierung wird empfohlen alle installierten Pakete neu zu kompilieren. Das geht in des Regel recht einfach, indem man einfach "world" mit dem "empty" Parameter neu kompiliert. Allerdings wird dabei z.B. die gcc ebenfalls neu kompiliert, obwohl das zuvor bereits geschehen ist. Außerdem macht das erneute kompilieren einiger Pakete nur wenig Sinn (z.B. die kernel Quellen oder den man pages). Also möchte man zunächst wissen, welche Pakete neu installiert werden sollen und diese Liste dann später ggf. Nachbearbeiten. Die Liste erhält man zunächst mit dem Befehl, den man eigentlich verwenden würde:

emerge -epv world > /tmp/emerge_world.txt

Hierbei wird allerdings die Ausgabe in die Datei "/tmp/emerge_world.txt" umgeleitet, wo man sie später bearbeiten kann. Aus dieser Datei kann man sich nun den eigentlichen Kommandozeilen-Aufruf zum kompilieren erzeugen:

cat /tmp/emerge_world.txt | grep "^\[" | sed -e 's/.*\]\ \([^\ ]*\)\ .*/=\1/' | tr "\n" " " > /tmp/emerge_world.sh

Auch hier wird das Ergebnis in eine Datei geschrieben, an deren Anfang man nun einfach ein "emerge" einfügt und ggf. die Pakete entfernt, die man nicht neu kompilieren möchte.

  • Derzeit 0 von 5 Sternen.
  • 1
  • 2
  • 3
  • 4
  • 5
Bewertung: 0/5 (Abgegebene Stimmen: 0)

Vielen Dank für die Bewertung!

Sie haben diesen Inhalt bereits bewertet. Sie können jeden Inhalt nur einmal bewerten!

Ihre Bewertung wurde geändert, vielen Dank für die Bewertung!

Ähnliche Inhalte