====== Bash ====== ===== Tastaturkürzel ===== Hier einige Tastaturkürzel für die Bash: ^ Tastaturkkombination ^ Beschreibung ^ | Ctrl + A | zum Anfang der Zeile springen | | Ctrl + E | zum Ende der Zeile springen | | Ctrl + L | leert den Bildschirm (wie der Befehl ''clear'') | | Ctrl + U | löscht die Zeichen vor dem Cursor | | Ctrl + H | wie backspace | | Ctrl + R | suche der zuletzt benutzten Befehle | | Ctrl + C | Killt das aktuell gestartete Programm | | Ctrl + D | schließt die aktuelle Shell | | Ctrl + Z | stellt den aktuell gestarteten Prozess angehalten in den Hintergrund \\ (mit Befehl ''jobs'' nach solchen Prozessen suchen und mit Befehl ''fg '' wieder in den Vordergrund holen | | Ctrl + W | löscht Wort vor dem Cursor | | Ctrl + K | löscht Zeichen nach dem Cursor | | Ctrl + T | vertauscht die zwei letzten Zeichen vor dem Cursor | | Esc + T | vertauscht die letzten zwei Wörter vor dem Cursor | | Alt + F | setzt den Cursor um ein Wort vor | | Alt + B | setzt den Cursor um ein Wort zurück | | Tab | Komplettiert automatisch Namen von Dateien und Ordnern | Quelle: [[http://www.howtogeek.com/howto/ubuntu/keyboard-shortcuts-for-bash-command-shell-for-ubuntu-debian-suse-redhat-linux-etc/|www.howtogeek.com]] ===== Zeichen vervollständigung ===== Wenn man in der Konsole die Anfangsbuchstaben von Befehlen eingibt und dann die Tabulatortaste drückt, werden Vorschläge zum Vervollständigen angeboten. Diese Funktion ist allerdings nur für, dem System bekannten, Befehlen verfügbar. ===== Installation ===== Möchte man diese Funktion erweitern und sie z.B. auch für Init-Scripte verwenden, muss ein Programm instaliert werden, welches über Login-Scripte gesteuert werden kann. apt-get install bash-completion Ab der nächsten Anmeldung bzw. dem öffnen eines neuen Terminals kann man schon auf einige Vervollständigungen zugreifen. ==== Konfiguration ==== Die Konfigurationsdatei von ''bash_completion'' liegt unter ''/etc''. Der Ordner ''/etc/bash_completion.d'' beinhaltet bereits einige Scripte zur Verfollständigung. Weitere Scripte besinden sich unter ''/usr/share/bash-completion/completions''. Man muss allerdings zunächst die ''bash_completion'' einschalten. Dies tut man indem, bei folgenden Zeilen, das ''#''-Zeichen entfernt. #if ! shopt -oq posix; then # if [ -f /usr/share/bash-completion/bash_completion ]; then # . /usr/share/bash-completion/bash_completion # elif [ -f /etc/bash_completion ]; then # . /etc/bash_completion # fi #fi Nach einem erneuten Anmelden bzw. öffnen eines Terminals verfügt man automatisch über neue Vervollständigungsfunktionen. ===== Bunter Text ===== Wenn man farbigen Text auf der Konsole ausgeben möchte, kann man das mit ''print'' oder ''echo'' (in Verbindung mit ''tput'') tun. Unter folgenden Links, findet man noch weitere Beispiel: [[http://misc.flogisoft.com/bash/tip_colors_and_formatting|misc.flogisoft.com]] Hier soll z. B. folgender farbiger Text ausgegeben Werden: "I love you." **Textformatierung mit ''tput''** red=`tput setaf 1` green=`tput setaf 2` reset=`tput sgr0` echo "I ${red}love ${green}you${reset}" **oder** echo "I `tput setaf 1`love `tput setaf 2`you`tput sgr0`." Bei buntem Text in der Message of the Day, bitte Anweisungen unter [[linux:message-of-the-day#farbiger_text]] beachten. **Hintergrundfarbe mit ''tput''** Zum ändern der Hintergrundfarbe, muss der ''tput''-Befehl wie folgt lauten: bgred=`tput setab 1` bgwhite=`tput setab 7` reset=`tput sgr0` echo "${bgwhite}I ${red}love ${green}you${reset}" **Farb-/Formatangaben** ^ Eigenschaft ^ Code ^ | schwarz | $(tput setaf 0) | | weiß | $(tput setaf 7) | | rot | $(tput setaf 1) | | grün | $(tput setaf 2) | | gelb | $(tput setaf 3) | | blau | $(tput setaf 4) | | hell gelb | $(tput setaf 190) | | hell blau | $(tput setaf 153) | | magenta | $(tput setaf 5) | | cyan | $(tput setaf 6) | | hell | $(tput bold) | | normal | $(tput sgr0) | | blinkend | $(tput blink) | | invertiert | $(tput smso) | | unterschrichen | $(tput smul) | | fett | $(tput bold) | **Textformatierung mit ANSI/VT100 Kontrollsequenzen** RED='\033[0;31m' NC='\033[0m' # No Color printf "I ${RED}love${NC} youw\n" **oder** printf "I \033[0;31mlove\033[0m you\n" **oder** echo -e "I \033[0;31mlove\033[0m you\n" **Farb-/Formatangaben** ^ Eigenschaft ^ Code ^ | schwarz | 0;30 | | weiß | 1;37 | | rot | 0;31 | | grün | 0;32 | | gelb | 1;33 | | blau | 0;34 | | orange | 0;33 | | lila | 0;35 | | cyan | 0;36 | | hellgrau | 0;37 | | dunkelgrau | 1;30 | | hellrot | 1;31 | | hellgrün | 1;32 | | hellblau | 1;34 | | helllila | 1;35 | | hellcyan | 1;36 | | dunkel | \e[2mDim | | blinkend | \e[5mBlink | | invertiert | \e[7minverted | | unterschrichen | \e[4mUnderlined | | fett | \e[1mBold | ===== Multitasking ===== Mit Linux kann man auf einer Konstolensitzung mehrere Befehle auf mehreren Subsitzungen gleichzeitig ausführen. Verschiedene Tools können mit Multitaskingsitzungen umgehen. ==== Screen ==== (Quelle: [[https://wiki.ubuntuusers.de/Screen/]]) ''screen'' ist ein Fenstermanager in der Konsole. Damit lassen sich an einer einzelnen Konsolensitzung mehrere virtuelle Sitzungen erstellen. Dies ist praktisch und auch sicherer, wenn man sich z. B. per ssh auf einen Server einloggt und darauf einen wichtigen länger andauernden Befehl aufruft. Wenn hier nun die ssh Sitzung abbricht, wird der Befehl unter Umständen auch abgebrochen. Wenn dieser Befehl auf einer virtuellen Sitzung gestartet wird, bleibt die Sitzung auch nach einem ssh Kommunikationsabbruch erhalten und der Befehl läuft durch. === Installation === sudo apt-get install screen === Befehle === ^ Funktion ^ Befehl ^ | Sitzung erstellen | screen -S | | Sitzungen anzeigen | screen -ls | | zur Sitzung wechseln | screen -r | | Sitzung an mehreren PC anzeigen | screen -rx | | Befehl an Sitzung leiten | screen -S -X stuff $'ls -l\n' | Innerhalb einer Sitzung kann man folgende Screen-Kommandos absetzen: * Strg + a, gefolgt von C zum Erstellen eines neuen Fensters (siehe auch Unterschied zwischen Sitzung und Fenster) * Strg + a, gefolgt von SPACE zum Wechseln zwischen den einzelnen Fenstern einer Sitzung * Strg + a, gefolgt von D zum Trennen (detach) der Verbindung zur aktuellen Sitzung, die Sitzung läuft dann im Hintergrund weiter * Strg + a, gefolgt von ?, gibt eine Übersicht über alle Tastenkürzel * Strg + D, beendet eine Stitzung **Statusleiste innerhalb einer Sitzung anzeigen** Zuerst den unten stehenden Befehl eingeben und dann zu einer Sitzungs wechseln. screen -X caption always "%{rw} * | %H * $LOGNAME | %{bw}%c %D | %{-}%-Lw%{rw}%50>%{rW}%n%f* %t %{-}%+Lw%<" Dabei stehen die verschiedenen Variablennamen für: | $LOGNAME | der Benutzername | | %H | der Hostname | | %c | die Uhrzeit im 24-Stunden-Format | | %D | der aktuelle Wochentag | | %n | Nummer des virtuellen Terminals | | %f | Flag; so zeigt das Sternchen das aktive virtuelle Terminal an, ein Minuszeichen die zuletzt besuchte Sitzung | | %t | der mit Strg + A , ⇧ + A gesetzte Titel der Sitzung | | %id` | Backtick-Referenz, wobei id = 1,2,3 ... | Die Angaben in den geschweiften Klammern beschreiben u.a. die Farben. Die Angabe ''%50>'' sorgt dafür, dass screen bei einer zu langen Fensterleiste die Ausgabe abschneidet, so dass die Angabe mittig erscheint. In der "man page" finden sich weitere anwendbare Escape-Sequenzen (string escapes). Über entsprechende Akzent-Zeichen (backticks) lassen sich Rückgabewerte von Shellscripten, z. B. das Auslesen der IP-Adresse, in die Statuszeile einblenden. Damit die Statusleiste dauerhaft erscheint, ohne alles mühsam von Hand einzugeben, kann ein Eintrag in der Konfigurationsdatei systemweit unter ''/etc/screenrc'' oder für den Benutzer unter ''~/.screenrc'' vorgenommen werden. In der Datei sollte dann folgender Eintrag hinzugefügt werden: caption always "%{rw} * | %H * $LOGNAME | %{bw}%c %D | %{-}%-Lw%{rw}%50>%{rW}%n%f* %t %{-}%+Lw%<" Unter Umständen muss man für die Benutzereinstellung eine Kopie von ''/etc/screenrc'' nach ''~/.screenrc'' kopieren. ==== tmux ==== Tmux ist sogenannt ein neugeschriebenes screen. === Installation === apt-get install tmux === Befehle === Nach dem start von ''tmux'' erscheint am unteren Rand eine grüne Zeile, mit verschiedenen Informationen über die jew. Session. * **starten**: ''tmux'' * **starten mit Sessionname**: ''tmux new -s '' * **Sessions auflisten**: ''tmux ls'' * **Sessionname öffnen**: ''tmux a -t '' Mit folgenden Befehlen lässt sich ''tmux'' steuern Ein Befehl wird standardmäßig mit STRG+b eingeleitet. ^ Befehl ^ Beschreibung ^ | ? | zeigt mögliche Befehle an | | c | erstellt ein neues Fenster | | x | schließt das aktuelle Fenster | | n | wechselt zum nächsten Fenster | | p | wechselt zum vorherigen Fenster | | w | Liste aller Fenster anzeigen | | # | wechselt zum angegebenen Fenster mit Nummer (#=Nummer) | | ’ | fragt in welche Fenster gewechselt werden soll | | % | Teilt das aktuelle Fenster vertical auf | | " | Teilt das aktuelle Fenster horizontal auf | | Space | Wechsel zwischen verschiedenen Aufteilungen der Fenster | | ! | Die aktuelle Fensterscheibe aus dem Fenster lösen und ein neues Fenster erstellen | | [ | Im aktuellen Fenster mit der Tastatur scrollen ("q" beendet) | | d | trennt die Konsolenverbindung | Um aus der normalen Konsole wieder zu den tmux-Konsolen zurückzukehren, einfach folgenden Befehl eingeben tmux attach ===== stdin stdout stderr ===== 0 ist der standard input file descriptor (stdin). 1 ist der standard output file descriptor (stdout). 2 ist der standard error file descriptor (stderr). 2>&1 **Erklärung:** Ausgabe der Error-Meldungen (2) wird umgeleitet (>) zum file descriptor (&) (und nicht zu einer Datei namens "1"), zur Standard-Ausgabe (1). ===== Tags ===== Shortcut, Kürzel, Pos1, Home, Ende, End, color, colour, farbe