Befehl im Hintergrund ausführen

Häufig habe ich einen Befehl ausgeführt, ohne auf die Laufzeit zu achten. Solange ein Programm aktiv läuft, ist das Terminal nicht zu verwenden. Mit der Tastenkombination Strg + Z kann man den Befehl einfrieren und ihn anschließend mit bg in den Hintergrund verfrachten. Schon kann man das Terminal weiter verwenden.

$ bg

Um einen Befehl wieder in den Vordergrund zu holen, benutzt man fg.

$ fg %1

Wenn man im vorherein weiss, das die Ausführung länger dauert, kann man den Befehl auch direkt in den Hintergrund verfrachten indem man ein & (Kaufmanns-Und) anhängt.

$ befehl &

Um zu erfahren welche Prozesse im hintergrund gerade laufen – oder auch nicht – gibt der Befehl jobs Auskunft.

$ jobs

Weitere Informationen zum Thema:
http://wiki.ubuntuusers.de/shell/prozesssteuerung

Doppelte Zeilen aus Datei entfernen

Heute habe ich eine Excel Tabelle erhalten, die ich in eine Datenbanktabelle importieren wollte. Das Problem: die Quelle hatte einige Dopplungen die mit dem UNIQUE KEY der Datenbanktabelle kollidierten. Damit der Import der weit über 16000 Zeilen ohne händisches Zutun importiert werden konnte, musste ein Script her.

Die Lösung ist eine Kombination der Programme cat, sort und uniq. Diese erledigt die Arbeit sogar in einer Zeile.

Die folgende Zeile entfernt doppelte Einträge und speichert das Ergebnis dann in einer neuen Datei ab.

$ cat dateiname | sort | uniq > dateiname.neu

Weitere Informationen zum Thema:
http://manpages.ubuntu.com/manpages/lucid/en/man1/cat.1.html
http://manpages.ubuntu.com/manpages/lucid/en/man1/sort.1.html
http://manpages.ubuntu.com/manpages/lucid/en/man1/uniq.1.html

Bash Historie leeren

So toll die Historie der Bash auch sein mag, so negativ kann sie unter Umständen auch sein (z.B. wenn ein Passwort oder andere Sicherheitskritische Informationen als Parameter eines Programms übergeben werden). Diese Informationen können dann von jedermann der Zugriff auf diesen Benutzer/Sitzung hat, eingesehen oder nochmals verwendet werden.

Beispiel: MySQL Zugangsdaten

sven@ubuntu-eeepc:~$ history
  823  mysql -u root -p geheim datenbank</tmp/dump.sql
  824  history

Um dieses Problem zu umgehen, kann man die Historie mit dem folgenden Befehl leeren.

$ history -c

Weitere Informationen zum Thema:
http://manpages.ubuntu.com/manpages/hardy/man3/history.3readline.html

Artwork von Ubuntu 11.04 per Backport in Ubuntu 10.04 nutzen

Auf so ziemlich allen produktiven Maschinen habe ich derzeit die aktuelle LTS Version (Ubuntu 10.04.3 – Lucid Lynx) von Ubuntu installiert. Optisch allerdings finde ich Ubuntu 11.04 deutlich ansprechender.

Glasen ist der gleichen Meinung und hat sich die Arbeit gemacht, alle Pakete die für das Artwork (Themes, Icons, Wallpaper) unter Ubuntu 11.04 verantwortlich sich, auf Ubuntu 10.04 (Lucid Lynx) zu portieren. Das ganze wurde als PPA auf Launchpad veröffentlicht. Danke! Super Arbeit! Kann man da nur sagen.

Lucid Backport - Themes

Die folgenden Befehle installieren das Artwork:

$ sudo add-apt-repository ppa:glasen/ubuntu-artwork-backport
$ sudo apt-get update
$ sudo apt-get upgrade

Jedem der die Optik von Ubuntu 11.04 ansprechender findet, sei dieser Backport empfohlen.

Weitere Informationen zum Thema:
https://launchpad.net/~glasen/+archive/ubuntu-artwork-backport
http://www.glasen-hardt.de/?p=1272

Bash Historie mit Zeitstempel versehen

Die Historie der Bash finde ich persönlich recht nützlich. Gerade um die letzten Befehle mittels Pfeil-Auf und Pfeil-Ab Tasten noch einmal auszuführen. Doch die Historie kann noch mehr! Die Gesamte Historie kann man sich mit dem folgenden Befehl anzeigen lassen. (Hinweis: Ich übergebe die Historie an less da meist der Anzeigepuffer des Terminals nicht ausreicht, um alle Befehle anzuzeigen.)

$ history | less

Ein Nachteil der Standard Einstellung ist, das alle Befehle nur der Reihe nach aufgelistet werden. Der Historie kann aber auch ein Zeitstempel zugewiesen werden, z.B. um das Durchsuchen der Historie nach einem bestimmten Tag oder Zeitraum zu ermöglichen.

Dies kann entweder dynamisch erfolgen …

$ export HISTTIMEFORMAT=“[%F] [%T] „

… oder besser noch, direkt in die Konfiguration der Bash geschrieben werden. In der Datei ~/.bashrc muss dazu die folgende Zeile ergänzt werden:

HISTTIMEFORMAT="[%F] [%T] "

Bei der Zweiten Variante ist zu beachten, das die Bash/Sitzung neu gestartet werden muss.

Weitere Informationen zum Thema:
http://manpages.ubuntu.com/manpages/hardy/man3/history.3readline.html