Audio-CD extrahieren mit Linux

Seit langem mal wieder eine Audio-CD extrahiert und zu MP3 konvertiert. Womit sollte man arbeiten? Es bietet sich zum Beispiel "Sound Juicer" an. Leider bemerken viele, oft erst nachdem man mehrere CDs ausgelesen hat, dass die Qualität bei konstanten 128kb/Sekunde liegt. Das ist eine zu geringe Datenrate. Grund ist die folgende Voreinstellung für das Profil "CD-Quality, MP3 (.mp3-type)".

Grundeinstellung (so, oder so ähnlich):
audio/x-raw-int,rate=44100,channels=2 ! lame name=enc mode=4 vbr-quality=6 ! id3v2mux

Wir ändern das Profil einfach auf folgenden Wert (Bearbeiten -> Einstellungen -> Profile editieren):

Verbesserte Einstellung:
audio/x-raw-int,rate=44100,channels=2 ! lame name=enc mode=0 vbr=4 vbr-quality=2 ! xingmux ! id3v2mux

Dateien umbenennen mit der Linux-shell

Szenario 1: Musikdateien (z.B. best-off, Musikmix) auf MP3-Player haben teilweise Titelnummern am Anfang, die wir bei der best-off-Sammlung nicht gebrauchen können. Daher soll alles (auch Sonderzeichen) bis zum ersten Buchstaben(!) gelöscht werden.

rename -v 's/^[^a-zA-Z]*//' *.mp3

Erläuterung:
Es wird nach allem gesucht, was am Anfang(^-Symbol vor der eckigen Klammer) des Dateinamens keine (^-Symbol innerhalb der Klammer) Buchstaben (groß oder klein) aufweist.
-v steht für verbose und gibt alles aus, was der Befehl "rename" ausführt
-n kann als Option angegeben, wenn man erstmal testen möchte, was passieren wird. Es werden keine Dateien umbenannt!



Szenario 2: Allen Dateien soll etwas vorangestellt werden.
In folgendem Beispiel wird "file_" vor jede bestehende Dateibezeichnung im aktuellen Verzeichnis gesetzt.
Der komplette Dateiname wird durch .* in der Variablen $1 gespeichert. Dann wird dieser komplett durch file_ und den ehemaligen Dateinamen ersetzt.

rename -n 's/(.*)/file_$1/' *

Falls beispielsweise nur mp3-Dateien geändert werden sollen, wird der Befehl wie folgt abgeändert: 

rename -n 's/(.*)/file_$1/' *.mp3

Achtung, mit dem regulären Ausdruck .* muss vorsichtig umgegangen werden. Dazu später mehr.

Input und Output - Linux Shell Tutorial

Die folgenden Beiträge möchte ich verstärkt die basics der Linux Shell erläutern, da es dazu immer wieder Fragen an mich gibt. Bitte klicken Sie auf den folgenden Link, um den gesamten Beitrag zu sehen!

Gnuplot 102 - einfacher Graph mit 2 Wertepaaren

Gnuplot kann sehr aufwendige Operationen ausführen. Am Anfang möchte ich aber vorerst die Grundlagen erklären. Wir möchten folgende Datei namens "aepfel_birnen_preise" auslesen und mit Gnuplot darstellen lassen.

# Durchschnittspreise/kg von Aepfeln und Birnen in Jahren 2000-2010
# Ausgedachte Werte!
# Spalte 1: Jahr
# Spalte 2: Aepfel
# Spalte 3: Birnen
# -----------------
2000 2.1 1.7
2001 1.9 1.65
2002 2.34 1.26
2003 1.24 1.8
2004 1.56 2.1
2005 2.13 2.04
2006 1.67 2.56
2007 1.45 2.04
2008 2.56 2.11
2009 1.76 1.99
2010 1.63 1.56


Beim Aufruf in der Gnuplot-Kommandozeile (starten durch gnuplot) müssen wir definieren, welche Spalten in welcher Beziehung stehen. Zusätzlich sollen die Punkte mit Linien verbunden sein. Zum guten Schluß soll noch erkennbar sein, welche Linie mit welchen Obstpreisen in Beziehung stehen. Das ganze wird in Gnuplot durch einen Einzeiler erledigt.
gnuplot
plot "./aepfel_birnen_preise" using 1:2 title "Aepfel" with lines, "./aepfel_birnen_preise" using 1:3 title "Birnen" with lines
Das selbe kann auch abgekürzt werden (abkürzen bis auf Anfangsbuchstaben der Befehle; filename wird beim zweiten Aufruf interpoliert (es wird der letzte benutzte file genutzt)):
plot "./aepfel_birnen_preise" u 1:2 t "Aepfel" w l, "" u 1:3 t "Birnen" w l

Als Ergebnis wird uns folgender Graph ausgegeben:

GnuPlot 101 - Graph mit Zufallszahlen

Ich möchte einen einfachen Graph mit GNUPLOT ausgeben lassen. Als Zahlenquelle wähle ich Zufallszahlen. Gnuplot erwartet pro Zeile einen Datensatz. Man kann auch andere Formatierungen nutzen, dafür müsste der Befehlssyntax aber erweitert werden. Um eine Liste mit entsprechenden Datensätzen auszugeben, erstelle ich ein kleines Skript, das 100 Zufallszahlen in eine Datei schreibt:

#!/bin/bash
# Dateinamen festlegen
l="random_1"
# Datei loeschen - Fehler unterdruecken
rm $l 2>/dev/null
# 100 Zufallszahlen erstellen
for ((i=0;i<100;i++))
do
echo $RANDOM >>$l
done

Bevor man GnuPlot nutzt, muss man es natürlich installieren (die ersten 2 Befehle sind wichtig):

sudo apt-get install gnuplot
sudo apt-get install gnuplot-doc
sudo apt-get install gnuplott-X11

Nachdem man das Programm mit gnuplot aufruft, kann man Befehle über eine Text-Konsole eingeben. Eine kleine Einführung zu den Befehlen habe ich hier gefunden.

Gestartet werden kann auch direkt über die Linux-shell.
echo 'plot "./random_1"; pause 10'|gnuplot

Oder man startet gnuplot ('gnuplot') und gibt folgendes ein (Achtung, hier habe ich den Befehl durch "with lines" ergänzt. Damit verbindet man die Punkte mit Linien; vgl. Liniendiagram):
plot "./random_1" with lines


Die Graphen können auf vielfältige Weise definiert werden. Diverse Muster stehen zur Auswahl. Eine gute Erklärung findet man auf folgender Seite.

Sicherheitsrelevante updates

Auch bei Linux gibt es Sicherheitslücken. Allerdings kann man diese durch aptitude, dem Packetmanager, schnell beheben. Eine Internetzverbindung vorausgesetzt, spielt man durch folgende Befehle in der Konsole (aka shell) die neuesten Sicherheits-Updates ein:

sudo aptitude update
sudo aptitude safe-upgrade


Leider muss man da alle paar Tage dran denken. Gut wäre eine automatisierung. Leider brauch man für diese Befehle root-Rechte. Es sollte aber eine Lösung dafür geben; evtl durch einen cronjob.

Geschütztes PDF-Dokument drucken

Leider schützen viele Ihre PDF-Dokumente, damit Sie nicht gedruckt werden können. Dies kann man aber zum Glück mit dem Standart-Dokumentenbetrachter (bei UBUNTU: Evince) umgehen.

Man öffnet das Dokument einfach und druckt es dann aus! Die Sperre greift hier nicht. Man kann auch erstmal in eine Datei drucken, falls man zB die Live-CD nutzt. Anschließend kann man mit der Ausgegebenen Datei (Ausgabe.pdf) machen, was man möchte!

Linux ist mal wieder besser als Windows ;-) epic win.