GeekzeugLinux im Griff

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

Mirco Lang

Freier Journalist, Exil-Sauerländer, (ziemlich alter) Skateboarder, Dipl.-Inf.-Wirt, Einzelhandelskaufmann, Open-Source-Nerd, Checkmk-Handbuchschreiber. Ex-Saturn'ler, Ex-Data-Becker'ler, Ex-BSI'ler. Computer-Erstkontakt: ca. 1982 - der C64 des großen Bruders eines Freunds. Wenn Ihr hier mehr über Open Source, Linux und Bastelkram lesen und Tutonaut unterstützen möchtet: Über Kaffeesponsoring via Paypal.freue ich mich immer. Schon mal im Voraus: Danke! Nicht verpassen: cli.help und VoltAmpereWatt.de. Neu: Mastodon

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert

Schaltfläche "Zurück zum Anfang"