Du bist hier:Start»Linux»Einzeiler

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".

# put all PHP files in one tar file
find -iname '*php' -type f -exec tar -rvf phpfiles.tar "{}" \;

VMStat mit Zeitstempel in jeder Zeile

vmstat 1 | awk '/^ *[0-9]/{$0=$0 " " strftime("%Y-%m-%d %T")};1'

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.

# download video podcast c't uplink
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.

# combine 3 images to one big image - one above the other
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:

# rotate image automatically so that the text is aligned horizontally
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.

# upload a file to a server that is protected by user name and password
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

# display meta data of a PDF file (e.g. creation date)
pdftk pdf_file.pdf dump_data | sed -e 's|InfoKey: ||g' -e 's|InfoValue:|:|g' | sed 'N;s/\n//'

Rechnen in der Kommandozeile

# calculation with the basic calculator (bc) - converts the notation from , to .
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.

# resize images to 500 pixel width
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 files modified in the last 30 minutes
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.

# replace newlines with @ to edit multiple lines with sed
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

# example of colors in bash
echo -e "\033[44m\033[1mBold on Blue\033[0m"

Fortschritt beim Kopieren mit dd anzeigen

# display the progress when copying with dd
pkill -USR1 -n -x dd

Umwandlung zwischen ASCII und hexadezimal

# ASCII to hexadecimal conversion
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