
cli.help – Update: Bash Builtins Teil 3/5
10 neue Tools für die Terminal-Hilfe - diesmal eher so Meh ...
Ach, wie war das gleich nochmal mit der Syntax beim fc-Kommando? Was kann ich mit dem history-Befehl anfangen? Für derlei Fragen haben wir unsere hauseigene Linux-Hilfe cli.help. Die Hilfe bekommt Ihr dort, wo Ihr sie braucht, nämlich direkt im Terminal selbst.
Bash Builtins
Im dritten Update zu den über 50 Bash-internen Funktionen fehlen die großen Highlights, jedenfalls was Erklärungen angeht - das meiste ist ziemlich einfach zu nutzen und bietet nicht allzu viele Optionen. Auf funktionaler Seite sind aber einige echte Must-haves (<-- sieht schon scheisse aus das Wort, oder? Steht so im Duden ...) dabei: Allein die Tools history, fc, jobs und kill sind für den Arbeitsalltag unerlässlich - wer sie nicht kennt, sollte dringend einen Blick darauf werfen. Für die Job-Steuerung mit jobs, bg und fg haben wir einen eigenen Artikel, ebenso über das Wiederholen von Befehlen (mit neuen Argumenten) mit fc und history.
Und ein Klassiker wird hier auch noch aufgeklärt: Wie nutzt man eine Rechnung als Bedingung in einer Schleife? Oder anders: Warum ist "let" dasselbe wie "(( ))"?
Ihr erreicht die Hilfen wie immer im Terminal mit dem URL-Abgreifer curl:
curl cli.help/fc
curl cli.help/let
curl cli.help/helphelp
 helphelp? Ja, sorry - die Abfrage von "help" führt Euch zu einer Hilfeseite von cli.help selbst. Für die Bash-Funktion "help" müsst Ihr helphelp abfragen - ist eh nicht sonderlich interessant und so entspricht es dem Bash-eigenen help-Hilferuf "help help" 😉
Aber hier zunächst alle neuen Tools:
- fc
 - getopts
 - hash
 - help
 - history
 - jobs
 - kill
 - let
 - local
 - logout
 
Mehr zu cli.help gibt es auf unserer GitHub-Seite und freilich via
curl cli.help/hilfe
 Inhalte
In bester MAD-Tradition bekommt Ihr jetzt noch all die Inhalte der neuen Hilfen lieblos vor den Latz geknallt - aber versucht es mal im Terminal, da ist es dann auch hübsch!
fc
Das letzte Kommando im Editor öffnen, nach Speichern ausführen:
fc 
 Letzen Befehl wiederholen:
fc -s
 Letzten Befehl wiederholen - aber jedes "foo" durch "bar" ersetzen:
fc -s foo=bar
 Letzen grep-Befehl wiederholen:
fc -s grep
 Befehl 111 aus der history wiederholen:
fc -s 111
 Befehl 111 aus der history bearbeiten:
fc  111
 Letzten Befehl wiederholen - aber nur das ERSTE foo durch bar ersetzen:
^foo^bar 
 getopts
Skript "meinskript" mit Optionen wie "meinskript -a" oder "meinskript -X foobar" ausstatten:
 while getopts abX:Y: opt
do
   case $opt in
       a) echo "Schalter a";;
       b) echo "Schalter b";;
       X) echo "Schalter X : ($OPTARG)";;
       Y) echo "Schalter Y : ($OPTARG)";;
   esac
done
 Skript ausführen und "Schalter Y : (foobar)" ausgeben lassen:
./meinskript -Y foobar
 hash
In der Session genutzte/germerkte Kommandos samt Statistik aufrufen:
hash 
 Alternative grep-Version (statt /usr/bin/grep)mit dem Kommando grep ausführen:
hash -p /meine/skripte/grep_by_me grep
 Alternative grep-Zuordnung wieder vergessen:
hash -d grep
 Alle alternativen Zuordnungen wieder vergessen:
hash -r
 help
Bash-interne Funktionen auflisten:
help 
 Hilfe zur Bash-internen Funktion eval aufrufen:
help eval
 Kurzversion der Hilfe zu eval:
help -d eval
 Hilfe zu eval im Pseudo-manpage-Format:
help -d eval
 Aufrufsyntax zu eval:
help -s eval
 Hilfe zur Hilfe aufrufen:
help help
 history
History nach echo durchsuchen:
history | grep echo
 Befehl Nummer 305 aus der history wiederholen:
!305
 History-Liste ab Position 444 löschen:
history -d 444
 History-Datei (~/.bash_history) zur History-Liste der aktuellen Session hinzufügen:
history -r
 History-Liste der aktuellen Session zur History-Datei (~/.bash_history) hinzufügen:
history -a
 History um den Eintrag "foo bar ey" erweitern:
history -s foo bar ey
 echo-Befehle nicht mehr in der History speichern:
export HISTIGNORE="echo"
 Direkt nacheinander eingegebene identische Befehle nur ein mal speichern (Duplikate ignorieren):
export HISTCONTROL="ignoredups"
 jobs
Letzten gestarteten Job im Hintergrund laufen lassen:
bg 
 Job "xeyes" in den Hintergrund versetzen - so, als wäre es per "xeyes &" gestartet worden:
bg xeyes
 Workflow: Jobs auflisten, Job 2 (hier xeyes) in Hintergrund versetzen, dann wieder in den Vordergrund und beenden:
jobs 
bg 2
fg xeyes
STRG+C 
 let
Variablen a das Ergebnis einer arithmetischen Operation zuweisen (13):
let a=5+8
 Variablen a das Ergebnis einer arithmetischen Operation zuweisen (13):
a=$(( 5 + 8 ))
 Arithmetische Evaluation (aka Rechnung ...) als Bedingung verwenden:
if $(let 5+5==10); then echo Erfolg!; fi 
 Arithmetische Evaluation (aka Rechnung ...) als Bedignung verwenden:
if (( 5 + 5 = 10 )); then echo Erfolg!; fi 
 local
Variable a nur lokal in einer Funktion nutzen:
#!/bin/bash
test ()
{
  local a=jochen
 echo $a
}
test
 logout
Aus Login-Shell abmelden:
logout 
 Aus Nicht-Login-Shell abmelden:
exit 
 Tja, was soll man mehr dazu sagen? 😉
 
 




