getting the number of files in a certain directory (linux or os x)

This is a quick way to get the number of files in a certain directory.
The following command even counts files potentially existing in subfolders and works as well in Linux as in Mac OS X.

find /home/some/folder -type f | wc -l

Hint: If you’re looking for the number of directories in a certain path of course you can use the option -type -d in your command

using exiftool for manipulating image-, audio- and video-file metadata (ubuntu)

What’s this post about?
exiftool is a perl module with additional commandline support for reading, writing, editing oder removing meta-informations in images, audio- or video-files.

Installation
you need the package „libimage-exiftool-perl“, easy to install using apt-get

[sourcecode language=“bash“]
sudo apt-get install libimage-exiftool-perl
[/sourcecode]

General Syntax
you can use exiftool with the following syntax:

[sourcecode language=“bash“]
exiftool [options] filename.ext
[/sourcecode]

print width and height
with the following command you can see the dimensions for all jpg-images in a directory

[sourcecode language=“bash“]
exiftool -p ‚$Filename $ImageSize‘ *.jpg
[/sourcecode]

deleting metainformations
with the following command you can remove metadata from every jpg-file in a directory. exiftool will make backup-files for you (filename.jpg_original) automatically.

[sourcecode language=“bash“]
exiftool -all= *.jpg
[/sourcecode]

extracting a thumbnail from the image
with the following command you can extract a thumbnail from a jpg-file:

[sourcecode language=“bash“]
exiftool -b -ThumbnailImage filename.ext > thumbnailname.jpg
[/sourcecode]

extracting a preview-image from the image
with the following command you can extract a preview-image from a jpg-file:

[sourcecode language=“bash“]
exiftool -b -PreviewImage filename.ext > thumbnailname.jpg
[/sourcecode]

changing the dpi-resolution
with the following command you can change the dpi-resolution jpg-files in a directory (lossless change):

[sourcecode language=“bash“]
exiftool -Xresolution=150 -Yresolution=150 -ResolutionUnit=inches *.jpg
[/sourcecode]

quick tutorial: more memory for tomcat/railo-server

Here’s a short howto for upping tomcat/railo-server’s memory:

The secret’s in tomcat’s JAVA_OPTS variable (java runtime options), which is defined in the catalina-startup-script.
You should be able to find this catalina.sh named script in /<tomcat-install-dir>/bin/catalina.sh
Have a look at the file and grep for JAVA_OPTS, you’ll find the following line:

JAVA_OPTS="$JAVA_OPTS -Djava.util.logging.manager=org.apache.juli.ClassLoaderLogManager"

Now you can add some startup-parameters like this:

JAVA_OPTS="$JAVA_OPTS -Djava.util.logging.manager=org.apache.juli.ClassLoaderLogManager -Xms128m -Xmx512m"

Look for more detailed information at this wiki-section at apache.org

Hier geht es zur deutschen Version dieser Anleitung.

Tutorial: Tomcat und Railo 3.1 mehr Speicher zuweisen

Fix gemacht, hier eine kleine Anleitung, wie man Railo/Tomcat mehr Speicher spendiert:

Das Geheimnis liegt in der JAVA_OPTS Variable (Java runtime options) vom Tomcat-Server. Diese wird in definiert im Catalina Startup-Script, das man normalerweise unter dem Pfad /<Tomcat-Installationsverzeichnis>/bin/catalina.sh finden können sollte. Sucht man in der Datei nun nach JAVA_OPTS, findet man schnell die richtige Stelle:

JAVA_OPTS="$JAVA_OPTS -Djava.util.logging.manager=org.apache.juli.ClassLoaderLogManager"

Diese Zeile kann jetzt durch Start-Parameter erweitert werden:

JAVA_OPTS="$JAVA_OPTS -Djava.util.logging.manager=org.apache.juli.ClassLoaderLogManager -Xms128m -Xmx512m"

Für alle Interessierten gibt’s hier bei apache.org noch detaillierte Informationen.

Here’s the english version of this post.

kostenloses Vim-Tutorial mit dem Vim Tutor

Vim ist ein mächtiger und weit verbreiteter Editor. Er stellt quasi eine erweiterte Version des auf den meisten Unix-Systemen zur Verfügung stehenden Editors Vi dar. Die beste, allerdings relativ unbekannte Ressource zum Erlernen von Vim kommt direkt mit und ist kostenfrei. Einfach nur in den normalen Modus (also nach Aufrufen vom Kommando „vim“ oder im Edit-Modus nach Aufrufen von „vim filename.ext„) gehen und dann :! vimtutor eintippen.
Es erscheint der folgende Begrüßungs-Bildschirm:

Der VIM-Tutor

Der VIM-Tutor

Vim bietet dann einen ungefähr halbstündigen Praxiskurs an, in dem man alle wichtigen Funktionen und Kommandos kennenlernt – viel Spass!

mySQL Backups auf Konsole

Sichern von Datenbanken ist eine Sache, die man täglich braucht – bzw. täglich brauchen sollte. Es gibt wie immer viele Wege, diesen Job zu erledigen, aber am schnellsten läßt sich das sicherlich direkt in der Kommandozeile erledigen, damit ist man dann auch unabhängig von GUI-basierten Tools wie dem mySQL-Administrator oder phpMyadmin.
Das Kommando ist sehr übersichtlich:

mysqldump -u mysqluser -p mysqldatabase

Zur Erklärung: mysqldump ist das Programm, das wir benutzen, um das Backup zu erstellen. Das Programm kann verschiedene Paramter entgegennehmen, wir verwenden hier diese:

„-u“ bedeutet, dass wir die Aktion mit einem bestimmten User durchführen, der Username muss dem -u nachfolgen wie oben im Beispiel gezeigt.
„-p“ bedeutet, dass ein Passwort mitübergeben wird, das eebenfalls direkt nach -p eingetippt wird. Wird es nicht angegeben, wird ein Promt erscheinen, wo man das Passwort eingibt.

Eine vollständige Liste der Parameter kann übrigens mit mysql –help oder dem Aufruf der Manpage des Tools eingesehen werden:

man mysqldump

Ok, wenn man das Kommando oben ausführt, sieht man die Aktionen direkt in der Konsole vorbeihuschen – das ist schön, denn wir wissen damit, dass unser Kommando funktioniert, allerdings fehlt eine entscheidende Information: wo ist unsere Sicherung? Die Antwort ist: nirgends, denn wir haben das Backup nicht in ein File geschrieben. Um das nachzuholen, benutzt man zusätzlich zum oberen Kommando eine Redirection, was sehr einfach ist:

mysqldump -u mysqluser -p mysqldatabase > my_DB_backup.sql

Nun wird das Backup in das File mit dem spezifiziertem Namen geschrieben. Wenn man das File mit der Endung .sql in einem Text-Editor öffnet, sieht man alle SQL-Anweisungen zum Erstellen der Struktur und Inhalte der Datenbank. Was jetzt möglicherweise noch sinnvoll wäre, ist das Backup-File auch gleich komprimiert zu haben. Dazu benutzen wir Piping, mittels Piping übergeben wir den Output von mysqldump an das Tool gzip, welches dann die Komprimierung für uns übernimmt:

mysqldump -u mysqluser -p mysqldatabase | gzip > my_DB_backup.sql.gz

Statt gzip kann natürlich analog auch ein anderes Tool wie zip oder tar verwendet werden.

Apache Config überschreiben mit .htaccess (Beispiel RSS-Feed zum Download)

Gut, man kann das jetzt sicher nieschig nennen, aber trotzdem, weil ich grade mal ein konkretes Problem damit hatte, das vielleicht einige in dieser oder in ähnlicher Form kennen: Ihr legt irgendwo auf dem Dateisystem einen RSS-Feed für Eure User hin, aber anstatt den Feed direkt anzuzeigen, bietet der Browser diesen zum Download an.
Hat mich einige Zeit gekostet, rauszufinden, dass der Mimetype nicht bekannt war, die Lösung wäre also, das dem Apache beizubringen oder einfach eine .htaccess in das entsprechende Verzeichnis zu legen, die nur den folgenden Inhalt hat:

AddType application/rss+xml .rss

Damit klappt es dann problemlos, der Feed wird wie gewohnt in allen Browsern direkt angezeigt.
Interessantes zu .htaccess allgemein gibt es bei apache.org

genaue Linux Ubuntu Version und Kernel-Version ausgeben

Mit dem folgenden Befehle kann man sich die genaue Version ausgeben lassen:

lsb_release -a

Das Kommando sollte Euch eine Ausgabe wie diese zurückgeben:

lsb_release -a
No LSB modules are available.
Distributor ID: Ubuntu
Description: Ubuntu 9.10
Release: 9.10
Codename: karmic

Um die genaue Kernel-Version auszugeben, benutzt Ihr einfach dieses Kommando:

uname -v

Den Kernel-Release kriegt man mit:

uname- r

Update:
alle Informationen ausgeben:

uname -a

Betriebssystem-Info:

uname -o

statt ls -l auch den Alias ll benutzen

ls -l wird unter Linux benutzt, um den Inhalt eines Verzeichnisses anzuzeigen. Da man das wirklich oft braucht, ist es praktisch, wenn man auch die Kurzform ll benutzen kann. Ist ll noch nicht bekannt, muss man in seinem Home-Verzeichnis die .bashrc editieren

cd ~
less .bashrc

Eventuell habt Ihr in der Datei auch schon die benötigten Aliase stehen, dann einfach nur die Rauten, die die Zeilen auskommentieren, entfernen.
Falls die Aliase noch nicht da sind, einfach die folgenden Zeilen (ohne Rauten natürlich) in die .bashrc reinkopieren und speichern:

# some more ls aliases
alias ll='ls -l'
alias la='ls -A'
alias l='ls -CF'

Danach könnt Ihr die Kurzformen ll und la verwenden und spart so wieder Tipparbeit.