GNU Nano Tipps & Tricks, Shortcuts und Syntax Highlighting

Ich verwende auf der Kommandozeile bevorzugt nano gegenüber vim, ganz einfach deswegen weil mir vim zu umständlich ist, ich mir die Befehle nie merke und ich für die Bearbeitung von ein paar Configfiles nicht unbedingt einen “mächtigen” Editor benötige. Zum Programmieren verwende ich sowieso lieber eine graphische Umgebung. Trotzdem kann nano eigentlich mehr, als man auf den ersten Blick meinen könnte. In der Augustausgabe von freiesMagazin sind ab Seite 25 einige nützliche Tipps&Tricks, Shortcuts und die Möglichkeit des Syntax Highlighting für diverse Sprachen beschrieben.

Wem Syntaxhighlighting für eine bestimmte Sprache abgeht: auf dem LinuxHelp Wiki gibts noch ein paar rc-files für diverse Sprachen. Hier meine für PHP (aus dem Wiki leicht angepasst):

syntax "php" ".php[2345s~]?$"
color brightblue start="<?(php)?" end="?>"
color blue start="<[^?]" end="[^?]>"
color cyan "$[a-zA-Z_0-9]*"
color cyan "([)|(])"
color blue "<(var|class|function|echo|case|break|default|exit|switch|if|else|elseif|@|while|foreach|return|public|private|protected|require|require_once|new|true|false|as)>"
color red "="
color green "[,{}()]"
color green "=="
color white "('[^']*')|("[^"]*")"
color yellow start="<!--" end="-->"
color yellow start="/*" end="*/"
color yellow start="#" end="$"

Fetchmail and Sieve with Virtual Mail on Debian Etch

When it comes to mail servers, I really like the setup Christoph Haas describes in his Document Howto: ISP-style Email Server with Debian-Etch and Postfix 2.3. One thing I was missing on a server was the ability to automatically generate config files for fetchmail and sieve from the database in order to get mail from other servers and being able to apply server side filters on incoming mail. This howto is based on the mentioned tutorial.

The additional setup is quite simple: 2 more database tables hold the data for fetchmail and sieve rules and a set of PHP scripts called by cron every few minutes fetches the data and writes it into the appropriate config files. For fetchmail, a script creates a .fetchmailrc file in /home/vmail/. For sieve, another script creates a .dovecot.sieve config file for every user who got sieve rules in the database.

read more »

Daten verschlüsseln mit TrueCrypt

Daten verschlüsseln mit TrueCrypt

Da ich mir kürzlich einen neuen USB-Stick zugelegt habe, habe ich heute mal ein paar Portable Apps (unter anderem PuTTY, Firefox, Thunderbird und Notepad++) daraufkopiert, um auch unterwegs an fremden Rechnern Zugriff auf gewohnte Tools zu haben. Da auch einige sensible Daten dabei sind (private Keys, gespeicherte Firefoxpasswörter, …) und sich meine Freude, sollte der Fall eintreten, dass ich es in einem Zustand geistiger Abstinenz schaffe den Stick zu verlieren, über besagte Daten in fremden Händen in Grenzen halten würde, habe ich die PortableSuite einfach komplett in einen TrueCrypt-Container gesteckt, der auf dem Stick liegt. Somit sind bei Verlust zwar die Daten auf dem Stick futsch, aber ich kann zumindest sicher sein, dass auch niemand anderes daran kommt. Wie das funktioniert, werde ich in den folgenden Schritten kurz erklären.

read more »

Reinstall grub using a Linux Live-CD

I just reinstalled Windows on my dual-boot system and had to reinstall grub as Windows setup overwrites the existing master boot record. Here’s how I did it using a Linux Live-CD (im my case an Ubuntu 7.04 CD I had lying around). My Linux root partition is /dev/sda6.

First it’s necessary to mount our Linux filesystem (including /proc and /dev). If you got /boot on an extra partition, you have to mount that partition too.

$ mkdir /mnt/root
$ mount -t ext3 /dev/sda6 /mnt/root
$ mount -t proc none /mnt/root/proc
$ mount -o bind /dev /mnt/root/dev

Then we can chroot into our system and re-install grub on /dev/sda.

$ chroot /mnt/root /bin/bash
$ grub-install /dev/sda

Done.

Adobe AIR unter Linux

Da ich mich in letzter Zeit vermehrt auf twitter herumtreibe, musste ein Desktop-Client dafür her. Dabei bin ich auf das auf Adobes AIR basierende thwirl gestoßen, das ich jetzt unter Windows einige Tage in Verwendung habe und das seine Aufgabe auch gut erledigt. Als ich AIR heute unter Ubuntu installieren wollte, erwartete mich folgende Meldung auf der Downloadseite:

Nach kurzer Recherche bin ich aber doch auf eine Möglichkeit gestoßen: es gibt eine Alpha-Version von AIR für Linux, die bei mir bislang problemlos funktioniert. Diese kann man folgendermaßen installieren:

  1. das binary auf der Downloadseite herunterladen
  2. die heruntergeladene Datei ausführbar machen: chmod +x adobeair_linux_a1_033108.bin
  3. die Datei ausführen und den Installer durchlaufen lassen: ./adobeair_linux_a1_033108.bin

Das wars auch schon. Wenn man thwirl installieren will, steht zwar unter Install now die nette Meldung Adobe AIR is not available for your system, ein Herunterladen und Öffnen der .air-Datei beweist jedoch das Gegenteil ;)

Nützliche bash-Tastaturkürzel

Einige nützliche bash-Tastaturkürzel:

Kürzel Beschreibung
ALT+B, ALT+F Cursor ein Wort zurück / weiter bewegen
CTRL+A, CTRL+E Cursor an den Anfang / Ende der Zeile setzen
CTRL+K Bis zum Ende der Zeile löschen
CTRL+T Die vorigen beiden Zeichen vertauschen
ALT+T Die vorigen beiden Wörter vertauschen
CTRL+L Bildschirm löschen
CTRL+R, CTRL+S Nach vorher eingegebenen Kommandos suchen

Linux: mit Hintergrundprozessen arbeiten

Um auf der Shell einen Prozess in den Hintergrund zu senden gibt es 2 Möglichkeiten.

Den Prozess mit command & starten.

maff@mafftop:~$ vim &
[1] 15564

Den Prozess mit CTRL+Z in den Hintergrund senden.

maff@mafftop:~$ vim
<CTRL+Z>
[1]+  Stopped                 vim

Um den Prozess wieder in den Vordergrund zu bekommen, reicht ein

maff@mafftop:~$ fg <job_nr>

Mit find und grep in Dateien suchen

Note: This post is old. Just use ack.

Da ich morgen heute — in 4,5 h — Klausur über Operating Systems schreibe, ist heute Schnipseltag. Um die Zeichenkette “foo” in allen Dateien im aktuellen Verzeichnis zu finden und eine Liste dieser Dateien auszugeben bietet sich folgende Kombination aus find und grep an:

find . -type f -exec grep -qi "foo" {} ; -print

Und um bestimmte Verzeichnisse auszuschließen (z.B. .git):

find . -path '*.git' -prune -o -type f -exec grep -qi "foo" {} ; -print