Bilder automatisch verkleinern mit Mindestgröße

Mit nachfolgendem Befehl lassen sich alle jpg-Bilder im Verzeichnis auf eine maximale Höhe/Breite von 1024 Pixel verkleinern. Das Seitenverhältnis wird beibehalten und die größere Seite auf 1024 px reduziert. Ist ein Bild kleiner als 1024 px, wird dieses Bild nicht beeinflusst.

mogrify -resize '1024x1024>' *.jpg

Weitere Infos gibt auf der Seite von imagemagick

 

Abhilfe für Linux Fehlermeldung: /bin/rm: Die Argumentliste ist zu lang

Beim Löschen von Verzeichnissen mit sehr vielen Dateien, kann es schon mal vorkommen, das rm mit folgender Fehlermeldung aussteigt:

-bash: /bin/rm: Die Argumentliste ist zu lang

Abhilfe schafft hier, wenn der Aufruf als Schleife ausgeführt wird:

for i in *; do rm $i; done

Dadurch sollte die Grenze von 128kB unterschritten und Ihr nicht mit der Fehlermeldung belästigt werden.
Frohes Arbeiten 😉

 

Suchen und Ersetzen in Dateien unter Linux

Auch wenn statische Websites kaum mehr vorhanden sind, und meistens durch ein CMS abgelöst wurden, stößt man hin und wieder doch auf so ein „veraltetes“ System. Sollen nun in allen Dateien Änderungen vorgenommen werden, ist das meist mit großem Aufwand verbunden, da jede Datei geöffnet, geändert und gespeichert werden muss.
Zum Glück haben wir in unserem Linux-System ein sehr mächtiges Tool namens sed. sed steht für Stream EDitor und ist ein Programm, mit dem Texte auf Kommandozeilen-Ebene geändert werden können.

Hier der Aufruf von sed:

sed -i 's/SUCHMUSTER/ERSETZUNGSTEXT/g' /pfad/zur/datei

Da wir aber, wie oben schon genannt, die Änderung nicht nur in einer Datei vornehmen wollen, sondern in mehreren, kombinieren wir sed mit find:

$ find /pfad/zu/dateien -type f -exec sed -i 's/SUCHMUSTER/ERSETZUNGSTEXT/g' {} \;

Zu beachten ist, das reguläre Ausdrücke verwendet werden und somit die entsprechenden Sonderzeichen mit einem Backslash zu maskieren sind.

Welche nützlichen findsed-Kombinationen werden den von euch verwendet?

 

Android Entwicklung mit OpenSuSE und Archos 10.1

Wie unter developer.android.com beschrieben, sollte es nach wenigen Schritten möglich sein, auf einem angeschlossenen Gerät zu entwickeln. Bei drittens wird beschrieben, wie man sein System einrichten muss, um das Gerät unter „Ubuntu Linux“ zu erkennen. Da leider keine Beschreibung zur Entwicklung unter openSuSE vorliegt, hier meine Schritte (openSuSE 11.3):

1. In der Datei „AndroidManifest.xml“ der Anwendung (App), muss diese als debugbar definiert werden. Dazu wird der Application-Tag um android:debuggable=“true“ erweitert. Alternativ kann auch im Reiter „Application“ der Wert von „Debuggable“ auf „true“ geändert werden.
vorher:

nachher:

2. Das Gerät (in meinem Fall ein Archos 10.1), muss angeschlossen sein und das „USB-Debugging“ aktiviert sein. Zur Kontrollen kann dies über ‚Einstellungen -> Anwendungen -> Entwicklung‘ geprüft werden. Hier muss bei ‚USB-Debugging‘ der Haken gesetzt sein.
3. Nun muss für die Verwendung eines Gerätes eine Regel erstellt werden. Diese Regeln (engl. rules) sind an den Hersteller gebunden. Sollten also mehrere Geräte zur Entwicklung verwendet werden, müssen in der Regel auch mehrere Einträge erstellt werden. Um eine Regel zu erstellen, wechselt man mit ‚su‚ zum root-user. Anschließend wird in das Verzeichnis ‚/etc/udev/rules.d‘ gewechselt. Hier erstellt man mit ‚vi 51-android.rules‚ eine neue Datei und füllt diese mit nachfolgendem Inhalt (i drücken um in den insert-Modus von vi zu gelangen):

SUBSYSTEMS=="usb", ATTRS{idVendor}=="0e79", MODE="0666", SYMLINK+="android_adb"
SUBSYSTEMS=="usb", ATTRS{idVendor}=="0e79", MODE="0666", SYMLINK+="android_fastboot"

Stehen noch weitere Geräte zum debuggen zur Verfügung, müssen diese darunter definiert werden. Hierzu können die beiden Zeilen kopiert und an der Stelle ‚0e79‘ abgeändert werden (0e79 steht hierbei für den Hersteller Archos). Mit der Esc-Taste wird in den command-Modus von vi gewechselt. Hier lässt sich mit dem Befehl :wq<Enter> die Datei speichern und schließen.

Nun kommt der Schritt, der in der Beschreibung zu Ubuntu nicht genannt wird. Unter OpenSuSE muss in der Datei ‚adb_usb.ini‘ (zu finden im Home-Verzeichnis im Ordner .android) zusätzlich die Hersteller-ID eingetragen werden. In meinem Fall also ‚0x0e79‘. Im Anschluss daran, kann per ‚adb kill-server‚ und ‚adb devices‚ überprüft werden, ob das Gerät erkannt wurde, oder nicht.

PS: Sollte die Hersteller-ID (idVendor) nicht bekannt sein, kann diese nach dem Anschließen des Gerätes mit folgendem Befehl ermittelt werden: ‚tail -f /var/log/messages‚. Dort sollte ein Eintrag, ähnlich dem nachfolgenden, erscheinen:

usb 1-5: New USB device found, idVendor=0e79, idProduct=1411

In Eclipse kann nun bei einem Klick auf ‚Run‘ die Anwendung auf dem Gerät getestet werden.