Shellcommandos die ich immer wieder mal brauche
Musiksammlung
Um die Oggsammlung in mp3 zu konvertieren, z.B. für einen USB Stick in einem Audioplayer. Die Dateien sollen nachher in der Albumreihenfolge abgespielt werden, der Player ist aber saudoof und kann nur in FAT Verzeichnisreihenfolge abspielen.
Ein anderer Player (Onkyo CR-N765) ist deutlich schlauer und kann insbesondere .ogg Dateien abspielen. Wenn die Dateien vom Stick und nicht über DLNA kommen sollen, müssen Sie aber im Verzeichnis umbenannt werden, da die Dateien vom Player vor dem Abspielen alphabetisch sortiert werden.
Player mit mp3 only
Neues Verzeichnis anlegen und die ogg-Dateien des Albums hineinkopieren. Für jedes Album ein eigenes Verzeichnis. Dann in jedem Verzeichnis wie folgt vorgehen.
for i in *.ogg ; do echo $i; oggdec $i ; lame $(basename $i .ogg).wav ; done for i in *.ogg ; do L=`vorbiscomment -l "${i}" |grep tracknumber |cut -f2 -d'=' ` ; Z=`basename ${i} .ogg`; mv $Z.mp3 $L.mp3 ; done rm *.ogg
Anzeigen in realer Verzeichnisreihenfolge (unsortiert)
ls -lU
Falls die Dateien nicht in der gewünschten Abspielreihenfolge (1,2,3,4 usw.) angeordnet sind (sehr wahrscheinlich) die Dateien nochmals kopieren. Oder, besser das Programm "fatsort" benutzen. "-n" sortiert in natural order (1,2,3 ... 10,11) und nicht in ASCII order (1,10,11,12... 2,20,21,22..). "-d" gibt ein Verzeichnis an, dann wird nur das sortiert.
fatsort -n -d/dev/sd
danach dann die alten Dateien löschen. Die Shellexpansionen "*" und "?" expandieren automagisch alphabetisch.
Onkyo CR-N765, kann ogg Dateien abspielen
Die Dateien kann man in der Verzeichnisstruktur direkt auf den Stick kopieren. Leider werden vom Gerät inital nur die Dateinamen angezeigt und die Dateien werden vor dem Abspielen alphabetisch sortiert, d.h. man muß Sie "1_...", "2_..." benennen, wenn man Sie in Albumreihenfolge abspielen will.
Der folgende Trick fügt die Tracknumber aus den vorbiscomments vorne an den Dateinamen mit Underscore an. Direkt in jedem Verzeichnis ausführen.
for i in *.ogg; do L=`vorbiscomment -l "${i}" |grep tracknumber |cut -f2 -d'=' ` ; Z=`basename ${i} .ogg`; mv "${i}" "${L}_${i}" ; done
Bilder von der Kamera
Hässlich großgeschriebene Bilddateinamen in Kleinschreibung konvertieren.
for i in *.JPG; do mv $i ${i,,}; done
MPEG2-Transportströme analyisieren
Habe ich nicht auf Anhieb gefunden: Ein Tool um MPEG2-Transportströme zu
untersuchen (".ts"-Dateien). Dazu muß man das Paket mediainfo
installieren.
wget -S "http://172.16.0.4:9981/stream/channelnumber/966" -O test.ts mediainfo test.ts General ID : 501 (0x1F5) Complete name : test.ts Format : MPEG-TS File size : 136 KiB Duration : 3s 361ms Overall bit rate mode : Variable Overall bit rate : 281 Kbps [...]
aspect ratio einer von ts nach mkv konvertierten Datei konvertieren. Hat man eine Aufnahme vom Fernsehen mit avidemux2.6 gekürzt und z.B. als mkv gesichert geht oft der Aspekt verloren. Die Auflösung von SD ist 720x576, welches aber in 16:9 dargestellt werden soll. Korrektur im mkv:
mkvpropedit myvideo.mkv --edit track:v1 --set pixel-width=720 --set pixel-height=817
DVDs in mkv konvertieren ohne umkodieren
Wenn man den Film einer DVD ohne Mediengehampel komfortabel im Zugriff haben will, aber stundenlanges kodieren scheut funktioniert folgende Vorgehensweise. Diese Methode vermeidet CPU intensives kodieren. Ein sehr schnelles Speichermedium (PCIe basierendes NVMe und schneller Hauptspeicher) sind aber sehr zu empfehlen.
DVD ins Laufwerk /dev/sr0
einlegen. Meist ist der Film auf
Track 1, manchmal auch woanders, muß man halt suchen (da gibts tools dafür,
aber mehr als 10 oder 15 Tracks sind auf handelsüblichen DVDs zumeist nicht
drauf). Die Beispiele unten beziehen sich auf eine DVD in
/dev/sr0
und Film auf Track 1.
# DVD freischalten, Keys ermitteln, wenn der Film ordentlich losläuft ist # alles erledigt. DVD bis zum Abschluß des Kopierens auf Platte nicht mehr # entfernen mplayer dvd://1 # Gesamte DVD auf Platte kopieren (danach geht alles turbo-flott) dd if=/dev/sr0 of=Film.iso mplayer -dvd-device Film.iso dvd://1 -dumpstream -dumpfile "Film.vob" mkvmerge Film.vob -o mymovie.mkv mkvpropedit --set "title=Der richtige Titel des Films (Erscheinungsjahr)" mymovie.mkv # Nun die Sprachen der Audio-Spuren ermitteln (werden in der gleichen # Reihenfolge geschrieben wie sie auf der DVD sind) und mittels propedit # im mkv speichern - Dadurch kann man die Sprache später im Menü ordentlich # auswählen mkvpropedit "mymovie.mkv" --edit track:a1 --set language=eng # a1 = audio-track 1, a2 = audio-track 2 usw....Language eng, ger (= ISO Sprachen) mv mymovie.mkv "Der richtige Titel des Films (Erscheinungsjahr).mkv"
Zeilen aus einer Datei mittendrin herausschneiden
head und tail kann Anfang oder Ende einer Datei herausschneiden. Will man
ein "slice" herausschneiden so nimmt man am besten sed
.
sed -n 101,200p Datei.csv
Schneidet die Zeilen 101 bis 200 aus einer Datei aus.
sed -n -e 1p -e 101,200p Datei.csv
Schneidet die 1. Zeile und die Zeilen 101~200 aus einer Datei aus. Braucht man öfter mal für CSV Dateien.
vim
Uhrzeit-/Datum Zeitstempel 2018-03-18T11:58:59.817Z
mit vim in mysql-Format umkonvertieren 2018-03-19 11:58:59
. Dazu wird
der folgende Ausdruck am ":" Prompt von vim gebraucht.
%s/\([0-9]\{4\}\)-\([0-9]\{2\}\)-\([0-9]\{2\}\)T\([0-9]\{2\}\):\([0-9]\{2\}\):\([0-9]\{2\}\)\.[0-9]\{3\}Z/\1-\2-\3 \4:\5:\6/
Bildschirmsteuerung/BMC
Die Textconsole immer anlassen. Das ist wichtig auf Servern die einen BMC
(Baseboard management controller) haben wo man die Console über das Netzwerk
umleiten kann. So kann man die Bildschirmausgaben sehen, wenn z.B. der Kernel
gecrashed ist (ansonsten ist der Bildschirm nämlich wegen des
Bildschirmschoners schwarz). Am besten in /etc/rc.local
einfügen.
# Bildschirmschoner ausschalten. So sollte bei einem Crash o.ä. die Konsole # abrufbar sein (über BMC) setterm -blank 0