sed kann capture groups

Ein praktisches Feature, mit dem man „eingefangene“ reguläre Ausdrücke als String in der Ausgabe benutzen kann.

Bei sed muss man die Klammern () mit Backslash escapen \(, dann kann man die Capture Groups sehr einfach nummeriert referenzieren: \1 \2 etc.

Ich musste zum Beispiel aus einer langen Config bestimmte Parameter auskommentieren, wollte aber die Whitespaces nicht verlieren:

sed -i 's/^\(\s*\)param/\1#param/g'

yt-dlp und zsh „no matches found“

yt-dlp (früher bekannt als youtube-dl, yt-dlp ist ein aktueller Fork) ist toll, um Videos von diversen Webseiten (nicht nur YouTube!) zu downloaden und zu archivieren. Dabei nervte mich, dass zsh das ? fürs Globbing benutzt und diese Fehlermeldung warf:

% yt-dlp https://www.youtube.com/watch?v=dQw4w9WgXcQ
zsh: no matches found: https://www.youtube.com/watch?v=dQw4w9WgXcQ

Wenn man den folgenden Codeblock in seine .zshrc einfügt, werden alle URLs automatisch escaped, wenn man sie ins Terminal kopiert. Damit funktionieren yt-dlp oder auch curl wieder ohne Probleme:

autoload -Uz bracketed-paste-magic
zle -N bracketed-paste bracketed-paste-magic

autoload -Uz url-quote-magic
zle -N self-insert url-quote-magic

Im Internet habe ich gelesen, dass es eventuell Kompatibilitätsprobleme mit anderen zsh-Plugins geben kann. Persönlich habe ich aber bisher nichts bemerkt.

Mit virt-install eine remote VM installieren

Ich muss gestehen, ich habe gerade zu lange gebraucht um die Kommandozeile herauszufinden, wie man noch mal einen neuen Gast via libvirt auf einem Server ohne grafische Oberfläche installiert. Hier ist sie:

virt-install --name $DOMAIN_NAME --memory $RAM_IN_MEGABYTE --disk path=$PATH_TO_VM.qcow2,size=10 --network network=default --location https://deb.debian.org/debian/dists/bookworm/main/installer-amd64/ --vcpus $ZAHL_DER_VCPUS --graphics none --os-variant debian12 --console pty,target_type=serial --extra-args 'console=ttyS0,115200n8 serial'

size=10 bedeutet, dass das qcow file auf dem Server maximal 10 GB groß wird.

Falls ihr einen Fehler bekommt wie Unknown OS name 'debian'. See `osinfo-query os` for valid values. muss osinfo-db eventuell installiert oder sogar aktualisiert werden. Folgende Pakete müssen installiert sein:
apt install osinfo-db-tools libosinfo-bin.

Für die Aktualisierung hier die letzte Datenbank runter laden, zum Beispiel mit:
wget -O /tmp/osinfo-db.tar.xz https://releases.pagure.org/libosinfo/osinfo-db-20231215.tar.xz

Danach muss nur noch lediglich dieses Kommando ausgeführt werden:
osinfo-db-import /tmp/osinfo-db.tar.xz

Jetzt sollte virt-install durch laufen und ihr könnt die VM auf der Kommandozeile ohne grafische Oberfläche installieren.