Praktische Einzeiler aus dem Linux-Alltag
Alle Dateien mit einem bestimmten Dateityp im Verzeichnis und Unterverzeichnissen in eine Datei packen
Manchmal möchte man nur eine Datensicherung von HTML- oder PHP-Dateien in einem Verzeichnis inklusive Unterverzeichnissen erstellen. Das folgende Beispiel nimmt PHP-Dateien und packt sie in die Datei "phpfiles.tar".
find -iname '*php' -type f -exec tar -rvf phpfiles.tar "{}" \;
VMStat mit Zeitstempel in jeder Zeile
Den aktuellen Video-Podcast von c't uplink herunterladen
Seit 2014 bietet der Heise-Verlag einen Videopodcast begleitend zur Computer-Zeitschrift c't. In dem Podcast wird natürlich für die Zeitschrift geworben, aber auch einige interessante Technologie-Themen angerissen.
rm -f ctuplinkvideo.rss; wget https://www.heise.de/ct/uplink/ctuplinkvideo.rss; wget "$(grep -m 1 "enclosure url.*mp4" ctuplinkvideo.rss | sed 's|.*"\(http[^"]*\)".*|\1|g')"
# for heiseshow
rm -f heiseshowsd.rss; wget https://www.heise.de/heiseshowsd.rss; wget -c "$(grep -m 1 "enclosure url.*mp4" heiseshowsd.rss | sed 's|.*"\(http[^"]*\)".*|\1|g')"
Mehrere Bilder in eine PDF-Datei umwandeln
Alle Jahre wieder: Als Anlage für meine Steuererklärung habe ich einige Kontoauszüge eingescannt. Zum Ausdrucken möchte ich drei Kontoauszüge auf eine PDF-Seite bringen. Hier ist ein Beispiel wie 4 eingescannte Bilder von Kontoauszügen in eine PDF-Datei umgewandelt werden können.
convert -append kontoauszug_01.jpg kontoauszug_02.jpg kontoauszug_03.jpg kontoauszug_seite_01.jpg
# convert the images to a PDF file with the images at the top of each page
convert kontoauszug_seite_01.jpg kontoauszug_04.jpg -resize 1240x1753 -background white -compose Copy -gravity North -extent 1240x1753 -units PixelsPerInch -density 150 kontoauszuege.pdf
Bild mit Text automatisch drehen
Nach dem Scannen eines Dokuments kann es sein, dass das Bild schief ist und noch um einige Grad gedreht werden muss, damit der Text wirklich horizontal ausgerichtet ist. Das Fachwort dafür nennt sich "deskew". Mit Imagemagick läßt sich diese Aufgabe einfach erledigen:
convert scanned_image.jpg -verbose -deskew 80% scanned_image_deskewed.jpg
Datei auf einen Server hochladen
Eine Datei im Browser über ein Web-Formular hochzuladen kann auf Dauer nerven. Automatisiert und damit einfacher geht es über die Kommandozeile. Im folgenden Beispiel wird die Datei "local.file" an einen Server hochgeladen. In dem Beispiel bietet der Server außerdem die Möglichkeit eine Datei umzubenennen - nach "filename.at.server". Das Programm "curl" bietet zusätzlich die Möglichkeit einen Benutzernamen und ein Passwort zu benutzen, wenn das Hochladen durch HTTP-Authentifizierung geschützt ist.
curl -u user:password -i -X POST -H "Content-Type: multipart/form-data" -F "path=filename.at.server" -F "datei=@local.file" https://server/upload.php
Metadaten einer PDF-Datei ausgeben
pdftk pdf_file.pdf dump_data | sed -e 's|InfoKey: ||g' -e 's|InfoValue:|:|g' | sed 'N;s/\n//'
Rechnen in der Kommandozeile
echo "scale=10; 21,14 / 71,33" | tr ',' '.' | bc | tr '.' ','
Bilder verkleinern
Mit Image-Magick können Bilder automatisiert bearbeitet werden. In folgendem Beispiel verkleinere ich einen Stapel von Bildern auf 500 Bildpunkte in der Breite.
mkdir small;for filename in $(ls -1 *jpg);do convert -resize 500 -quality 85% "$filename" small/"$filename".jpg; done
Geänderte Dateien der letzten 30 Minuten finden
find / -mmin -30
Mehrzeilig mit dem Streameditor arbeiten
Der Streameditor sed arbeitet normalerweise nur zeilenweise auf einer Textdatei. Mit einem kleinen Trick lassen sich auch mehrere Zeilen auf einmal mit sed bearbeiten. Dabei wird das Zeilenendezeichen durch @ ersetzt und später wieder zurückgewandelt.
sed 's|@|AAATTT|g' filename.txt | tr '\n' '@' | sed 's|@xy@z@|regular expression|' | tr '@' '\n' | sed 's|AAATTT|@|g'
Farben in der Bash-Shell
echo -e "\033[44m\033[1mBold on Blue\033[0m"
Fortschritt beim Kopieren mit dd anzeigen
pkill -USR1 -n -x dd
Umwandlung zwischen ASCII und hexadezimal
echo "12 34 56 78 90 ab cd ef" | xxd -r -p > file.bin
# hexadecimal conversion to ASCII
hexdump -ve '1/1 "%.2X "' file.bin; echo