Scrollen mit der mittleren Maustaste

Setze die Option general.autoscroll in der about:config auf true.

Suchergebnisse der Location Bar einschränken

Die folgenden Schnellfilter für die Suche im URL-Eingabefeld (“Location Bar”) können in der
about:config unter dem Präfix browser.urlbar.restrict gefunden werden.
Mehrere Suchwörter müssen mit Leerzeichen getrennt werden.

  • * Microcontroller: nur Lesezeichen zeigen, die das Wort ”Microcontroller” enthalten
    • Merkhilfe: Der Asterisk sieht aus wie ein Favoritenstern
  • ^ Microcontroller: nur Einträge aus dem Verlauf zeigen, die das Wort ”Microcontroller” enthalten
    • Merkhilfe (na ja): Der Pfeil zeigt zurück in der Historie.
  • + Microcontroller: nur ”Lesezeichen” zeigen, die mit ”Microcontroller” getaggt wurden
    • Merkhilfe: Das Plussymbol sieht ähnlich aus wie ein kleines t. Oder: Tags werden angeheftet = hinzugefügt = “geadded”.

Ebenfalls nützlich könnte sein:

  • % Microcontroller: nur geöffnete Tabs zeigen, die das Wort ”Microcontroller” im Namen enthalten

Cache leeren

Shift+Click, Strg-F5 oder Strg-R (Befehlstaste-R auf dem Macintosh) drücken. Strg-F5 nicht bei Linux / KDE, da hiermit auf das 5. Fenster umgeschaltet wird.

Links

Allgemein

  • Ausgabe des Befehls date alle 2 Sekunden anzeigen:
    watch --interval=2 date
    
  • Die letzten 20 Zeilen der Datei /var/log/syslog fortwährend überwachten:
    tail -n 20 -f /var/log/syslog
    
  • Kalender für den September 2015:
    cal 09 2015 # also: Sep 2015
    
  • Suche in der Befehlshistorie mittels (reverse-i-search): Ctrl+R
  • liefert den am nächsten in der Vergangenheit liegenden Befehl, der den Suchtext enthält
  • für weitere Treffer erneute Ctrl+R drücken

Dateinamen zerlegen

Das folgende Listing zeigt, wie man einzelne Teile eines Dateinamens erhält (nur Endung, nur Stammname, nur Verzeichnis, gesamter Dateiname):

$ filename=/tmp/testfile.tar.gz
$ echo ${filename##*.}# matches extension non-greedily
gz
$ echo ${filename#*.}         # matches extension greedily
tar.gz
$ echo ${filename%.*}         # matches all but extension greedily
/tmp/testfile.tar
$ echo ${filename%%.*}        # matches all but extension non-greedily
/tmp/testfile
$ echo $(basename $filename)  # filename including extension but without directory
testfile.tar.gz
$ echo $(dirname $filename)   # directory of file
/tmp

Farbe des Prompt-Titels verändern

Der Anfang jeder Zeile in einer Standard-Bash-Sitzung kann mithilfe der Umgebungsvariablen PS1 verändert werden (zu weiteren PS-Umgebungsvariablen siehe http://www.thegeekstuff.com/2008/09/bash-shell-take-control-of-ps1-ps2-ps3-ps4-and-prompt_command/).

Beispiel für root

Ein Beispiel ist der folgende Code aus der Datei /root/.bashrc:

PS1='\[\033[31m\]\u@\h\[\033[00m\]:\[\033[01;34m\]\w\[\033[00m\]\$'

Der Benutzername und Host werden in Rot geschrieben, der aktuelle Dateipfad in hellem Blau.

Beispiel für normalen Benutzer

Ein zweites Beispiel ist der folgende Code aus der Datei ~/.bashrc:

PS1='\[\033[01;37m\]\u@\h\[\033[00m\]:\[\033[01;34m\]\w\[\033[00m\]\$'

Der Benutzername und Host werden in Weiß geschrieben, der aktuelle Dateipfad in hellem Blau.

Erklärung im Einzelnen

Globbing

Die Bash bietet eine Vielzahl an komfortablen Fähigkeiten, dazu gehört es, alle Dateien im aktuellen Verzeichnis auszugeben (Globbing – siehe http://en.wikipedia.org/wiki/Glob_%28programming%29), die einem bestimmten Muster entsprechen:

$ echo *.txt
tmp.txt

Dadurch kann man leicht bspw. über alle Textdateien im Verzeichnis iterieren:

$ for file in *.txt; do file $file; done
tmp.txt: UTF-8 Unicode text

Ein Problem tritt auf, wenn es keine solchen Dateien gibt. Statt einer zu erwartenden leeren Ausgabe erhält man eine Fehlermeldung, da man im Falle, dass keine passenden Dateien gefunden werden, einfach den Originalausdruck zurückbekommt:

$ for file in *.nicht_vorhandene_endung; do file $file; done
  • .nicht_vorhandene_endung: ERROR: cannot open `*.nicht_vorhandene_endung’ (No such file or directory)

Dieses Problem kann man umgehen, indem man sogenannte Nullglobs aktiviert:

$ shopt -s nullglob
$ for file in *.nicht_vorhandene_endung; do file $file; done
$ 

Wie man sieht, sieht man nichts und das ist genau das, was man oft haben möchte.
Das ursprüngliche Verhalten lässt sich über

shopt -u nullglob

wiederherstellen.

Normalerweise werden versteckte Dateien (beginnen mit einem Punkt) nicht beim Globbing erkannt.
Dies kann man mittels

shopt -s dotglob # Versteckte Dateien miteinbeziehen
shopt -u dotglob # Versteckte Dateien nicht miteinbeziehen

konfigurieren.

Dateisystem

Dateiinformationen

  • Dateiinformationen über file.txt anzeigen
    (-i: MIME-Typ)

    file -i file.txt
    
  • Dateiinformationen über das Blockdevice /dev/sda anzeigen:
    sudo file -s /dev/sda
    
  • Dateiinformationen über file.txt anzeigen (Letzter Zugriff/Änderung/Rechte/Inode/… – Formattierung möglich):
    stat /etc/fstab
    

Ordnerstruktur

  • Ordner und Unterordner als Baumstruktur anzeigen:
    tree -L 1 .    # aktuelles Verzeichnis mit Unter- und Unterunterordnern
    
  • Ordner und Unterordner als Baumstruktur anzeigen (mit versteckten Dateien):
    tree -L 1 -a . # wie zuvor, mit versteckten Dateien
    
  • Ordner auflisten (bspw. zum Nutzen in einer for-Schleife)
    ls --format=single-column
    
  • ISO-Image cd_image.iso
    nach /media/mounted_iso mounten (Linux-Äquivalent zum “Virtuellen Laufwerk” unter Windows)

    mount ./cd_image.iso /media/mounted_iso -o loop
    
  • ISO-Image aushängen:
    umount -d /media/mounted_iso
    

Speicherplatzinformationen

  • Gesamtgröße des aktuellen Verzeichnisses (-h für besser lesbare Größenangaben):
    du -sh .
    
  • Gesamtgröße des aktuellen Verzeichnisses und der Unterordner bis Tiefe 2 sortiert nach Größe:
    du -h --max-depth=2 | sort -h .
    

Wer greift auf eine Datei zu?

Oft weigert sich umount, ein Laufwerk auszuhängen, da das Gerät noch genutzt würde:
device is busy.
Man kann herausfinden, wer ein bestimmtes Laufwerk (hier gemountet als /mnt/sdb1) nutzt:

sudo fuser -m -u /mnt/sdb1

Einen ähnlichen Befehl gibt es für Dateien:

$ sudo lsof /var/log/auth.log
COMMAND   PID   USER   FD   TYPE DEVICE SIZE/OFF    NODE NAME
rsyslogd 1182 syslog    2w   REG    8,3    50569 2098332 /var/log/auth.log

Datei sicher löschen

Überschreibe tmp.txt insgesamt 10 Mal, dann mit Nullen
(-z: zeros) und lösche die Datei danach
(-u: unlink):

shred -n 10 -z -u tmp.txt

Möchte man ein ganzes Laufwerk überschreiben, dann kann man das mittels dd tun. Man sollte sich sicher sein, dass man das will, denn wenn der Vorgang einmal begonnen hat, dann lässt er sich zwar noch anhalten, aber es werden wohl schon einige Teile der Dateien zunichte gemacht worden sein.

dd if=/dev/zero of=/dev/ bs=1M
dd if=/dev/urandom of=/dev/ bs=1M

Etwas nerdig: Man kann sich die I/O-Statistik von dd (per STDERR) anzeigen lassen, indem man das Signal USR1 an den Prozess schickt:

kill -USR1 

Zeichensatz und Zeilenenden

Inhalt einer UTF-8-Datei in Latin-9 konvertieren (Mit TAB kann man sich die verfügbaren über 1000(!) Zeichensätze anzeigen lassen):

$ file tmp.txt 
tmp.txt: UTF-8 Unicode text
$ iconv -f UTF-8 -t ISO8859-9
ISO8859-9   ISO8859-9E  
$ iconv -f UTF-8 -t ISO8859-9 tmp.txt > tmp.txt.latin9 
$ file tmp.txt.latin9 
tmp.txt.latin9: ISO-8859 text

Zeilenenden von Unix auf Windows ändern (und zurück – der Schalter -b ist nötig, falls Umlaute in der Datei auftreten, UTF-8 in diesem Fall):

$ file tmp.txt
tmp.txt: UTF-8 Unicode text
$ flip -mb tmp.txt
$ file tmp.txt
tmp.txt: UTF-8 Unicode text, with CRLF line terminators
$ flip -ub tmp.txt
$ file tmp.txt
tmp.txt: UTF-8 Unicode text

Geräteinformationen anzeigen

  • Arbeitspeicher
    cat /proc/meminfo
    
  • Prozessoren
    cat /proc/cpuinfo
    
  • USB-Geräte
  • Übersicht
    lsusb # -v for verbose output
    
  • als Baum
    lsusb -t
    
  • PCI-Geräte
    sudo lspci # -v for verbose output
    
  • Festplatte:
    • Alle Partitionen von erkannten Festplatten
      sudo fdisk -l
      
    • Durchsatzmessung /dev/sda:
      sudo hdparm -t /dev/sda
      
  • UUID(u.a.) auslesen:
    blkid
    
  • Übersicht:
    • CPU und Arbeitsspeicher:
      htop
      
    • CPU, Netzwerk und vieles mehr:
      nmon
      

Musik, Bilder und Videos

Zusammenfassung über die Eigenschaften einer mp3-Datei:

$ mp3info -x Fairytales\ -\ Alexander\ Rybak.mp3 
File: Fairytales - Alexander Rybak.mp3
Title:   Fairytale                      Track: 2
Artist:  Alexander Rybak
Album:   Fairytales                     Year:  2009
Comment:                                Genre: Pop [13]
Media Type:  MPEG 1.0 Layer III
Audio:       Variable kbps, 44 kHz (joint stereo)
Emphasis:    none
CRC:         No
Copyright:   No
Original:    Yes
Padding:     No
Length:      3:07

Installation via

sudo apt-get install mp3info

PDF

Mehrere PDF-Seiten pro Blatt

Es geht darum, die Datei infile.pdf so auszudrucken, dass 2 Seiten jeweils auf einem Blatt erscheinen.
Das Ergebnis steht in infile_2on1.pdf.

pdf2ps infile.pdf tmp.ps
psnup -2 -s0.9 tmp.ps tmp2.ps
ps2pdf tmp2.ps infile_2on1.pdf

Die Option -s0.9 überschreibt die intern von
psnup berechnete Skalierung, die manchmal zu klein ausfallen kann.
Die Option -2 gibt an, dass wir 2 Seiten pro Blatt Papier wünschen.

Paketmanagement

dpkg

Das Tool dpkg macht sich unter anderem in den folgenden Situationen nützlich:

  • Manuelle Installation von deb-Paketen (hier morewordsplease_10.08.4-public3_all.deb)
    dpkg -i morewordsplease_10.08.4-public3_all.deb
    
  • Auflistung aller Dateien, die zu einem Paket gehören (hier morewordsplease)
    dpkg -L morewordsplease
    
  • Auflistung aller bekannten Pakete mit deren Installationsstatus (kann wie üblich über grep gefiltert werden)
    $ dpkg -l | grep htop
    ii  htop                                                        0.9-4                                              interactive processes viewer
    

apt

Archive hinzufügen und entfernen

(am Beispiel des Person Package Archivs ppa:stesind/ppa)

Hinzufügen:

$ sudo apt-add-repository ppa:stesind/ppa 
You are about to add the following PPA to your system:
 stesind-ppa
[...]
Dependencies (automatically or pre-installed):

python2.6
pygtk
 More info: https://launchpad.net/~stesind/+archive/ppa
Press [ENTER] to continue or ctrl-c to cancel adding it

Executing: gpg --ignore-time-conflict --no-options --no-default-keyring --secret-keyring /tmp/tmp.vhZ0pjQFOq --trustdb-name /etc/apt/trustdb.gpg --keyring /etc/apt/trusted.gpg --primary-keyring /etc/apt/trusted.gpg --keyserver hkp://keyserver.ubuntu.com:80/ --recv BC3AAA57423DFEF471DC5589F8ECECC33CB35D04
gpg: requesting key 3CB35D04 from hkp server keyserver.ubuntu.com
gpg: key 3CB35D04: "Launchpad stesind-alsa" not changed
gpg: Total number processed: 1
gpg:              unchanged: 1

Danach ist ein Update nötig:

sudo apt-get update

Entfernen:

sudo apt-add-repository --remove ppa:stesind/ppa

Man kann auch Repositories im apt-Format angeben (wie in der Datei /etc/apt/sources.list):

sudo apt-add-repository 'deb http://myserver/path/to/repo stable myrepo'

Services und Hintergrundprozesse

Die folgenden Ausführungen gelten vornehmlich für Ubuntu und verwandte Systeme.

Runlevel

Die einzelnen Runlevel haben folgende Bedeutung (nach http://wiki.ubuntuusers.de/Dienste#Start-Stop-Skript-und-Runlevel)

Runlevel 0
: System wird heruntergefahren
Runlevel 1
: System im Einzelbenutzerbetrieb
Runlevel 2
: System im Mehrbenutzerbetrieb
Runlevel 3 bis 5
: nicht genutzt
Runlevel 6
: Systemneustart

Automatische Startprozesse konfigurieren

Als Beispiel wird hier der Tomcat-Webserver (tomcat6) verwendet.
Bei den meisten der verwendeten Befehlen funktioniert die Vervollständigung mittels TAB.

Default-Werte ermitteln

Bevor man einen Prozess aus der Startreihenfolge entfernt, sollte man sich ansehen, wo er während der Installation eingetragen wurde, damit man dies wiederherstellen kann, wenn man den Prozess erneut automatisch starten lassen möchte.
Dazu kann man beim Austragen des Services den Schalter -n (nur simulieren) nutzen. Falls der Dienst noch läuft (sudo service tomcat6 status), muss man das Austragen mittels -f erzwingen:

sudo update-rc.d -n -f tomcat6 remove
 Removing any system startup links for /etc/init.d/tomcat6 ...
   /etc/rc0.d/K08tomcat6
   /etc/rc1.d/K08tomcat6
   /etc/rc2.d/S92tomcat6
   /etc/rc3.d/S92tomcat6                                                                                                                                         
   /etc/rc4.d/S92tomcat6                                                                                                                                         
   /etc/rc5.d/S92tomcat6                                                                                                                                         
   /etc/rc6.d/K08tomcat6  

rc0.d/K08tomcat6
: heißt dabei, dass tomcat6 im Runlevel 0 (rc0) an 08. Stelle unter den zu stoppenden Prozessen (K: kill) steht
rc2.d/S92tomcat6
: heißt analog, dass tomcat6 im Runlevel 2 (rc2) an 92. Stelle unter den zu startenden Prozessen (S: start) steht

Für einen sicheren Startablauf ist dabei die Konvention üblich, dass die Prozesse in ihrer umgekehrten
Startreihenfolge gestoppt werden, dabei werden die Skripte mit kleinerer Nummer zuerst und die mit größerer
Nummer später ausgeführt, wobei Nummern im Bereich von 00 bis 99 vorgesehen sind.

Für tomcat6 erhält man somit für eine Startnummer von 92 eine Stoppnummer von 100 – 92 = 8.

Prozess austragen

Ist man sich nun sicher, dass man den Prozess austragen möchte, dann kann man diesen mittels

sudo update-rc.d -f tomcat6 remove

entfernen.

Prozess eintragen

Um nun den Prozess mit den exakten vorherigen Einstellungen einzutragen, muss man jeweils genau spezifizieren, wo der Prozess in welchem
Runlevel platziert werden soll:

sudo update-rc.d -f tomcat6 start 92 2 3 4 5 . stop 08 0 1 6 .

start 92 2 3 4 5 .
: Starte tomcat6 in den Runlevels 2 3 4 5 an Stelle 92
stop 08 0 1 6 .
: Stoppe tomcat6 in den Runlevels 0 1 6 an Stelle 08

Anmerkung: Der Punkt am Ende ist für eine korrekte Konfiguration wichtig!

Links

Benutzerverwaltung

Eigene Shell ändern

Der folgende Befehl ändert die voreingestellte Shell des Benutzers franz auf /bin/bash:

chsh --shell /bin/bash franz

sudo mit Rootpasswort

Normalerweise frage sudo nach dem Passwort desjenigen Benutzers, der den Befehl gestartet hat. Möchte man allerdings das Root-Passwort zur Authentifizierung nutzen, dann kann man dies wie folgt erreichen.

Starten des Editors für die sudo-Konfiguration:

sudo visudo

Zu dem (ersten) Bereich, der bereits mehrere Defaults-Einträge besitzt, fügt man folgendes hinzu:

Defaults    targetpw

Beim nächsten Ausführen von sudo wird man nach dem Rootpasswort gefragt:

$ sudo visudo
[sudo] password for root:

Zufallsstring

Einen zufälligen String kann man manuell wie folgt erzeugen:

cat /dev/urandom|tr -dc "a-zA-Z0-9-_\$\?"|fold -w 16|head -n 3 | sort

Die Ausgabe sieht dann etwa so aus:

48rk4SRPX?OE20Gt
4BzNt_1Qbm8bQT-I
7cbwdv$XUSKt6ked

Es werden dabei 3 Strings mit jeweils 16 Zeichen erzeugt, die ausschließlich aus Klein- und Großbuchstaben, Ziffern, Binde-/Unterstrichen sowie “$” und “?” bestehen.

I often wondered why the default syntax highlighting in vim is almost illegible (e.g., dark blue on black background).

The reason is that a syntax highlighting in vim defines two sets of colors, one for light background and one for dark background.

To find out your current color scheme, type:

:set background

To (temporarily) switch to the color scheme for dark background use:

:set background=dark

Vice versa, for light background, use:

:set background=light

To make these changes permanent, add the command without colon (set background=[dark|light]) to ~/.vimrc.

A great feature of the literature management tool Zotero is that you can rename the files linked to a particular entry according to the stored metadata (title, author, year,…). The default pattern is <author> – <year> – <title-truncated-to-50-characters> (syntax: {%c – }{%y – }{%t{50}}).

To change this pattern, open about:config (Edit -> Preferences -> Advanced/General/Open about:config) and search for the key extensions.zotero.attachmentRenameFormatString. The default value is {%c – }{%y – }{%t{50}}. For using the full title in the first place, followed by author and year, use {%t}{ – %c}{ – %y}.

The extension ZotFile seems to provide an easier to use interface to configure this pattern (see: http://zotfile.com/ -> Renaming Rules)

I regularly have to reduce the size of digital images. To automatize this, I created a little Bash script, which also considers the orientation (landscape/portrait) of the image:

#!/bin/bash

# This script shrinks all JPEG images in the given input folder and
# stores them in the output folder.
# 
# The maximum length (in pixels) of the longest edge can be set by
# the variable 'maxSize'.
#
# Author: Roland Kluge

maxSize="1000"
originaleImages="input"
smallImages="output"

IFS=$'\n'
for image in $(find $originaleImages -regex .*[jJ][pP][eE]?[gG])
do
  filename=$(basename $image)
  noExtension=${filename%.*}
  newPath="$smallImages/${noExtension}e.jpg"
  
  if [ $(identify -ping -format '%W/%H>1' $image | bc -l) -eq 1 ]; then
    echo "$image is landscape"
    newSize="${maxSize}x"
   else
    echo "$image is portrait"
    newSize="x${maxSize}"
   fi
  convert $image -strip -resize $newSize jpg:$newPath
done

The actual conversion is done with convert, which is part of the ImageMagick suite (for installation instructions, see here).

The option -strip removes all EXIF metadata during conversion and the prefix jpg: ensures that the correct file format is used for the new file.

Edit (2014-11-17): Fix loop condition to cope with file names that contain whitespaces and also to also match JPEG, jpeg,… Thanks, Paul Pell!

This article shortly describes how to set up the correct editor (+ correct syntax highlighting) for C++ template implementation files (extension: tpp) in Eclipse.

Syntax highlighting

Go to Window -> Preferences, then navigate to General -> Content Types. In the tree view on the right, go to Text -> C Source File -> C++ Source File -> C++ Header File and press Add… As Content Type enter *.tpp.

Do not close the preferences, yet.

File association

In Preferences, open General -> Editors -> File Associations. Press Add… and, as File Type, enter *.tpp . The editors list view at the bottom should contain the C/C++ Editor and Text Editor.

Acknowledgement

Thanks to JohnP@stackoverflow for describing this solution.

For an auto-testing sceanrio on Windows, I needed to start a number of Eclipse instances, each one with a particular workspace of system tests. In case of problems, I wanted  to quickly(, i.e., automatically) stop all instances. For starting and for stopping the instances, I created two Powershell scripts.

Starting Eclipse

When starting Eclipse, all we have to do is store the process id of each instance. Thanks to PowerShell being object-oriented, this is relatively easy. The Start-Process cmdlet returns a process instance when called with the parameter -PassThru, which can be queried for its Id property. We cache the process ids in a line-by-line manner to stop each instance later on.

$ECLIPSE_HOME = "C:\Program Files\eclipse"
$WORKSPACES = "TestWorkspace1","TestWorkspace"
$OUTPUT_DIRECTORY="$HOME\autotest_tmp_dir"

foreach ($WORKSPACE in $WORKSPACES) {
  $eclipse = Start-Process 
     -FilePath $ECLIPSE_HOME\eclipse.exe 
     -ArgumentList '-data',$WORKSPACE,'-application','org.moflon.testapplication','-showLocation'   
     -PassThru
  echo "    [$($eclipse.Id)] Workspace '$WORKSPACE'"
  $eclipse.Id >> "$OUTPUT_DIRECTORY\pids.txt"
}

Stopping Eclipse

A plethora of methods for stopping processes using PowerShell exists. Basically, you need to get a process object (using Get-Process) and call the Kill or Terminate method on it.

Unfortunately, Eclipse kept running after killing its correspondent process: Get-Process eclipse | Stop-Process .

The reason is that Eclipse spawns a child process running javaw.exe. This is the process that needs to be stopped, but killing it leads to an ugly error message. So the method of choice is to call CloseMainWindow() on the javaw process, which triggers the same action as pressing on the ‘X’ in the top-right corner. The remaining challenge is to find out, which of the running javaw processes belong to which Eclipse instance. This can be achieved with the cmdlet Find-ChildProcess as described by Tobias Weltner. The complete scripts looks as follows:

# http://powershell.com/cs/blogs/tobias/archive/2012/05/09/managing-child-processes.aspx
function Find-ChildProcess {
  param($ID=$PID)

  $CustomColumnID = @{
    Name = 'Id'
    Expression = { [Int[]]$_.ProcessID }
  }

  $result = Get-WmiObject -Class Win32_Process -Filter "ParentProcessID=$ID" |
  Select-Object -Property ProcessName, $CustomColumnID, CommandLine
  
  $result
  $result | Where-Object { $_.ID -ne $null } | ForEach-Object {
    Find-ChildProcess -id $_.Id
  }
}


$outputDirectory="$HOME\autotest_tmp_dir"
$filename = "$outputDirectory\pids.txt"
foreach ($id in [System.IO.File]::ReadLines($filename)) {
   $child = Find-ChildProcess $id
	(Get-Process -Id $child.Id).CloseMainWindow()
}

 

 

In a previous post, I suggested Java code templates for standard UIMA/uimaFit structures.
In this post, I add two more templates, this time for JUnit’s “setUp” and “tearDown” methods.

To add these templates to your Eclipse workspace, open the Eclipse preferences via Windows -> Preferences. And navigate to Java -> Editor -> Templates.
Either you use the provided XML files and select Import… or you create a new template with New… and copy the text from below.

@Before

Name: Before
Context: Java
Description: JUnit setUp method

${imp:import(org.junit.Before)}
@Before
public void setUp() throws Exception {
    ${cursor}
}

Download as XML

@After

Name: After
Context: Java
Description: JUnit tearDown method

${imp:import(org.junit.After)}
@After
public void tearDown() throws Exception {
    ${cursor}   
}

Download as XML

For some unknown reason, the default color for directories printed by ls is blue, which reads badly on a black background.

The default colors for ls can be changed via the environment variable LS_COLORS. To try it out, open a terminal and type in the following commands:

ls -la # possibly with --color option
export LS_COLORS='di=0;35'
ls -la

You should see a difference between the two executions of ls (if you have directories in the current folder). To make these changes permanent, add them to your bash initialization script (e.g., ~/.bashrc, ~/.bash_profile, ~/.bash_login).

The strange string 0;35 is a so-called color code and it conforms to ISO 6429 as described in the man page of dir_colors. The second number is the color (35 = magenta) and the first number modifies the ‘value/darkness’ of the color.

The man page lists some more colors: 44 = blue, 46 = cyan, etc.

If you want to know about which color is assigned to a specific file type, you may print out the whole dircolors database by typing:

dircolors --print-database

An output in the appropriate format for LS_COLORS (e.g., for the Bash) can be retrieved by typing:

dircolors --bourne-shell # or simply: -b

 References

  • My first hit when searching for more information was this blog post
  • Here is an online version of the dir_colors man page.