Farbige Banner in der Bash
Schön anzusehen und in einigen fällen sogar produktiv. Man kann sich beim starten der Bash ein ASCII Bild ausgeben lassen. Also ein Bild was aus verschiedenfarbigen Buchstaben, Zahlen und Sonderzeichen besteht.
Dies geschieht einfach, in dem man in seine .bashrc im Homeverzeichnis die passenden Zeilen via echo ausgibt.
Das Generieren von Schriftzügen kann man sich erleichtern, in dem man zum Beispiel einen ASCII Generator benutzt.
Dann muss man sich den Schriftzug nur noch in seine .bashrc kopieren und die echo's vor jede Zeile setzen, sowie die Farben definieren.
Farben
Nun noch ein paar Farbcodes die man verwenden kann, um die Schriftfarbe in den ASCII Bildern zu verändern. Das sind bestimmt nicht alle, aber fürs erste reicht.
| Farbcode | Wert |
|---|---|
| \033[1;30m | Grau |
| \033[0;37m | Hellgrau |
| \033[0;36m | Cyan |
| \033[1;36m | Hellcyan |
| \033[0m | Bash Default |
| \033[0;34m | Blau |
| \033[1;34m | Hellblau |
| \033[0;31m | Rot |
| \033[1;31m | Hellrot |
| \033[0;32m | Grün |
| \033[1;32m | Hellgrün |
| \033[0;35m | Lila |
| \033[1;35m | Helles Lila |
| \033[0;33m | Braun |
| \033[1;33m | Gelb |
| \033[0;30m | Schwarz |
| \033[1;37m | Weiß |
Die Codes werden einfach an der Stelle wo man eine andere Farbe haben möchte in den echo String gepackt. Alle darauf folgenden Zeichen haben dann diese Farbe. Bis wieder eine andere Farbe definiert wurde.
Bash Code
| 1 2 3 4 5 6 7 8 9 | echo -e "\033[0;34m d8888\033[0;31m \033[1;33m \033[0;32m 888 \033[1;37m888 d8b" echo -e "\033[0;34m d88888\033[0;31m \033[1;33m \033[0;32m 888 \033[1;37m888 Y8P" echo -e "\033[0;34m d88P888\033[0;31m \033[1;33m \033[0;32m 888 \033[1;37m888" echo -e "\033[0;34m d88P 888\033[0;31m 888d888\033[1;33m .d8888b\033[0;32m 88888b. \033[1;37m888 888 88888b. 888 888 888 888" echo -e "\033[0;34m d88P 888\033[0;31m 888P\" \033[1;33m d88P\" \033[0;32m 888 \"88b \033[1;37m 888 888 888 \"88b 888 888 \`Y8bd8P'" echo -e "\033[0;34m d88P 888\033[0;31m 888 \033[1;33m888 \033[0;32m 888 888 \033[1;37m888 888 888 888 888 888 X88K" echo -e "\033[0;34m d8888888888\033[0;31m 888 \033[1;33mY88b. \033[0;32m888 888 \033[1;37m888 888 888 888 Y88b 888 .d8\"\"8b." echo -e "\033[0;34m d88P 888\033[0;31m 888 \033[1;33m \"Y8888P\033[0;32m 888 888 \033[1;37m 88888888 888 888 888 \"Y88888 888 888" |
Nun kommen wir zu dem Code, der in die Bash eingetragen werden muss. Die Ausgabe wird ganz einfach über echo mit der Option "-e" erledigt. Die Option "-e" aktiviert die Interpretation von Backslash Kommandos in dem echo String.
So kann man Zeile für Zeile ausgeben lassen. Man kann am Anfang jedes echos auch schön das \033[0;34m Erkennen, womit der folgende Text dann Blau ist.
Nun kopiert man die ganzen echo's noch in die jeweilige ~/.bashrc. Am besten ganz an den Anfang, direkt unter das #!/bin/bash. So wird das Bild immer angezeigt. Egal was sonst noch so in der .bashrc definiert ist. Man kann sich natürlich auch ein if-Konstrukt bauen, und zB wenn man sich am System anmeldet, und nicht eine Bash auf macht, ein anderes Bild erscheinen lassen.
Ein weiteres Beispiel
Hier ein weiteres Beispiel. Dort ist das Logo von Arch Linux zusammen mit einem Schriftzug zu sehen. Daneben befinden sich als Zusatz diverse Systeminformationen wie Kernel, Uhrzeit, aktuelle IP Adresse usw.
(Auf Bild klicken für größere Ansicht.)
Wichtig: Das Script ist für Arch Linux optimiert! Es kann sein, dass bei anderen Distributionen die Systeminformationen nicht korrekt dargestellt werden.
| 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 | #!/bin/bash function getinet { if [ $(ifconfig wlan0 | grep "inet addr:" | cut -d ":" -f 2 | cut -d " " -f1) ]; then echo "$(ifconfig wlan0 | grep "inet addr:" | cut -d ":" -f 2 | cut -d " " -f1)@wlan0" exit; fi if [ $(ifconfig eth0 | grep "inet addr:" | cut -d ":" -f 2 | cut -d " " -f1) ]; then echo "$(ifconfig eth0 | grep "inet addr:" | cut -d ":" -f 2 | cut -d " " -f1)@eth0" exit; fi } function getupdown { if [ $(getinet | grep wlan0) ]; then IF="wlan0" else IF="eth0" fi UP=$(ifconfig $IF | grep "RX bytes" | cut -d "(" -f3 | cut -d ")" -f1) DOWN=$(ifconfig $IF | grep "RX bytes" | cut -d "(" -f2 | cut -d ")" -f1) echo "$DOWN down $UP up" } echo "[H[2J" echo " [1;30m|[34m Linux $(uname -r)" echo " [36;1m/\\ [37m|| [36m| | [30m|[32m $(date)" echo " [36m/ \\ [37m|| [36m| _ [30m|[32m " echo " [1;36m/ [0;36m.. [1m\\ [37m//==\\\\ ||/= /==\\ ||/=\\ [36m| | |/ \\ | | \\ / [30m|[0;37m $(getinet)" echo " [0;36m/ . . \\ [37m|| || || | || || [36m| | | | | | X [1;30m| $(getupdown)" echo " [0;36m/ . . \\ [37m\\\\==/| || \\==/ || || [36m| | | | \\_/| / \\ [1;30m|[31m " echo " [0;36m/ .. .. \\ [0;37mA simple, lightweight linux distribution. [1;30m|[31m $(($(finger | wc -l)-1)) User" echo " [0;36m/_' \`_\\ [1;30m|[35m $(tty) [0mon[1;33m $(hostname)" echo " [0m" |
Bei diesem Beispiel sind die Farbcodes schon im Binären Format. Weswegen mit normalem echo gearbeitet werden kann. Den Schriftzug habe ich übrigens im Arch Linux Forum gefunden.
Die beiden Funktionen getinet und getupdown liefern jeweils die IP Adresse/das aktive Interface und das gesendete/empfangene Traffic.
Zum Einbinden dieses Banners einfach den Code in eine Datei kopieren, diese in ~/ speichern und Ausführbar machen. Diese Datei muss dann nur via ./datei gestartet werden.




