Autor: Nico Mittenzwey

BASH: Nach jedem xten Zeichen ein Zeichen in einen String einfügen

Mit sed "s/.\{x\}/& /g" kann man in eine Zeichenkette alle x Zeichen ein Leerzeichen automatisiert einfügen. Aber auch andere Zeichen sind möglich. So kann man bspw. alle zwei Zeichen einen Doppelpunkt in einen String einfügen:

#~> echo "AA11CC22EE" | sed "s/.\{2\}/&:/g"
AA:11:CC:22:EE:

Sollte das letzte Zeichen stören, kann man dies wie folgt entfernen:
#~> a = $(echo "AA11CC22EE" | sed "s/.\{2\}/&:/g")
#~> echo ${a%?}
AA:11:CC:22:EE

Could NOT find mhd (missing: MHD_INCLUDE_DIR MHD_LIBRARY) / MHD lib : MHD_LIBRARY-NOTFOUND

When cmake complains about a missing MHD library, install the microhttpd library development files.

On RHEL/CentOS:

 yum install libmicrohttpd-devel

Or download the up-to-date release from https://www.gnu.org/software/libmicrohttpd/ and compile and install it with:

tar -xzf libmicrohttpd-latest.tar.gz
cd libmicrohttpd-*
./configure && make install

VI oder VIM beenden

Um den bei vielen Linux und Unix Installationen und Tools (wie bspw. git) standardmäßig genutzten VI Editor zu beenden muss man mit der „ESC“-Taste in den Kommandomodus wechseln (am besten mehrfach drücken um ggf. schon eingegeben Kommandos abzubrechen) . Und dort dann „:q“ eingeben und Enter drücken.
Dies beendet VIM wenn vorher nichts geändert wurde. Wurde etwas am Text der geöffneten Datei geändert und man will dies speichern so nutzt man den Befehl „:wq“. Will man die Änderungen verwerfen und VI verlassen, so hilft „:q!“.

NVIDIA CUDA on Ubuntu: unsupported GNU version! gcc versions later than 5 are not supported!

After installing CUDA on Ubuntu, compiling CUDA applications with nvcc results in an error similar to this:

In file included from /usr/local/cuda-8.0/bin/../targets/x86_64-linux/include/cuda_runtime.h:78:0,
from <command-line>:0:
/usr/local/cuda-8.0/bin/../targets/x86_64-linux/include/host_config.h:119:2: error: #error — unsupported GNU version! gcc versions later than 5 are not supported!
#error — unsupported GNU version! gcc versions later than 5 are not supported!
^~~~~}}}

Ubuntu comes with a more up-to-date GCC then CUDA can handle. To solve this issue we install GCC 4.9:

sudo apt install gcc-4.9 g++-4.9

Now GCC 4.9 and the up-to-date GCC are installed on the system. To be able to use the up-to-date GCC without CUDA, one can setup and use the „update-alternatives“ system for GCC. In this case we replace the default GCC 6 compiler:

sudo update-alternatives --install /usr/bin/gcc gcc /usr/bin/gcc-6 60 --slave /usr/bin/g++ g++ /usr/bin/g++-6
sudo update-alternatives --install /usr/bin/gcc gcc /usr/bin/gcc-4.9 50 --slave /usr/bin/g++ g++ /usr/bin/g++-4.9

Now we can list the available compilers with

update-alternatives --list gcc

and set the GCC 4.9 as default with

update-alternatives --set gcc /usr/bin/gcc-4.9

Bouldern in der Boulderlounge Chemnitz

Waren heute in der Boulderlounge in Chemnitz. Ab 21:00 wurden Routen umgeschraubt, wodurch leider kein entspanntes Bouldern mehr möglich war. In Chemnitz ist insbesondere die Trainingsecke sehr interessant. Als Inspiration für die eigene Bouldertrainingsecke bzw. Klettertrainingsecke haben wir mal zwei Fotos gemacht:

Die Boulderlounge wird im nächsten Jahr in ein neues Gebäude mit „mehr Platz und Licht“ umziehen. Wir sind gespannt!

Shell: Ausgabe aller Zeilen einer Datei bis auf die ersten x

Wenn man alle Zeilen einer Datei bis auf die ersten x auf der Konsole ausgeben möchte, kann man tail nutzen. Normalerweise kann man damit die letzten 10 Zeilen tail namesliste.txt bzw. die letzten Y Zeilen mit tail -n Y namesliste.txt ausgeben.

Wenn man jedoch alles bis auf die ersten x Zeilen einer Datei ausgeben möchte, so kann man tail -n +(x+1) nutzen. In diesem Modus gibt tail ab der hinter dem + stehenden Zeile alles aus – daher x+1.