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? ;)