CLI Tool van de Week : BASH

augustus 13, 2018

CLI Tool van de Week, editie 32, 13 augustus 2018

In tegenstelling tot andere besturingssystemen kun je bij de UNIX familie kiezen tussen verschillende shell’s de bekendste is BASH of Bourne Again SHell, deze is gebaseerd op de UNIX sh shell (Bourne Shell)

Slecht nieuws dus voor de fans van Matt Damon want het is niet gebaseerd op the bourne identity franchise 😉

Maar wat is een shell nu precies?

Als je in de manpages bekijkt staat er oa. command language interpreter that executes commands read from the standard input or from a
file
.

Dus om het vrij te vertalen de shell interpreteerd de commando taal , het voert commando’s uit en leest van standaard input of van een bestand.

Enkele van de meest gebruikte shell’s zijn:

  • BASH: Bourne Again SHell.
  • tcsh/csh : C-Shell of een geavanceerde versie (tcsh) deze heeft oa. een C-achtige syntaxis.
  • ksh : Korn Shell geschreven door David G. Korn en is een volledige, krachtige high-level programmeertaal.
  • zsh : Z Shell, zeer uitgebreide Shell vergelijkbaar met ksh maar met veel verbeteringen.
  • Fish : Friendly Interactive SHell, ontwikkeld in 2005 als interactieve en gebruiksvriendelijke shell.

Voorlopig gaan we ons hier beperken tot de Bourne Again SHell aangezien deze de meest gebruikte is en alle artikels hier (tenzij anders aangegeven) zijn gebaseerd op BASH.

Hyperpolyglot heeft hier en hele pagina waarin de werking van deze verschillende shell’s wordt vergeleken.

De Bourne Again SHell is de standaard bij de meeste Linux distributies en is gereleased in 1989 en geschreven door/voor GNU
en is daarom ook de GNU Project shell. Gebaseerd op de bourne shell van UNIX en eigenschappen van Korn Shell (ksh) en C Shell (csh).
Het is gemaakt om compatibel te zijn met de IEEE POSIX P1003.2/ISO 9945.2 Shell and Tools standard. en het bied functionele verbeteringen over sh (de bourne shell) voor
zowel programmeren als interactief gebruik. Verder werken de meeste scripts voor sh op bash zonder aangepast te moeten worden.

Enkele van de verbeteringen tenopzichte van sh zijn:

  • Command line editing
  • Ongelimiteerde grootte van commando historiek
  • Job control
  • Shell functies en Aliassen
  • Geïndexeerde arrays van ongelimiteerde grootte
  • Integer arithmetic in any base from two to sixty-four (berekeningen met gehele getallen in elke base van 2 tot 64).

Het laatste base moet misschien even beter uitgelegd worden.
Het base verwijst naar hoe getallen worden weergegeven, zo werken wij mensen zo goed als altijd met base 10 of getallen van 0 tot 9, of decimaal.
base 2 heeft er maar 2 (1 en 0) en wordt dus vaker binair genoemd. Dit is zoals jullie wel weten het enige wat een computer begrijpt.
Een andere veel gebruikt systeem in de computer industrie is de base 16 of Hexadecimaal, dit systeem gebruikt de getallen 0 tot 9 én de letters A tot F.
Hexadicimaal wort bijvoorbeeld gebruikt voor IPv6 IP adressen en netwerk hardware MAC (Media Access Control) adressen zoals bijvoorbeeld 00:A0:C9:14:C8:29

BASH heeft oa. de volgende opstart opties:

  • -l : bash gedraagd zich alsof het is opgestart als login shell
  • -i : interactieve modus
  • -r : restricted modus, deze modus werkt hetezelfde als de gewone modus met enkele beperkingen.
    • Directory veranderen met cd is niet mogelijk.
    • De variabelen SHELL, PATH, ENV of BASH_ENV kunnen niet ingesteld/veranderd worden.
    • Het gebruik van commando’s met / in de naam is niet mogelijk.
    • Het gebruik van bestanden met / als argument aan het ingebouwde . commando of als argument voor de -p optie tot het ingebouwde hash commando is niet mogelijk.
    • Functie definities importeren vanaf de shell omgeving tijdens het opstarten is niet mogelijk.
    • etc.

Er zijn ook enkele zogenaamde multi-character options, belangrijk is dat deze opties gebruikt worden voor de bovenvermelde single-character shell options, anders werken ze niet. Enkele megelijkheden zijn

  • –debugger
  • –help
  • –noediting : Gebruik de GNU readline bibliotheek niet om de commandoregel te lezen als de shell interactief gebruikt word.

De mogelijkheden van Bash zijn enorm (neem maar eens een kijkje in de manpages of infopages van Bash.

Ook zal de Unix Shells-pagina van Hyperpolyglot veel handige informatie bieden,
niet enkel over Bash maar nog enkele andere veel gebruikte Shell’s.

Happy Hacking !

Patrick Kox

Heb je tips of feedback, laat het gerust weten in comments, of via Email (patrick@linuxgebruikers.nl).

Deze artikels zijn ook beschikbaar op https://commandoregel.com of mobiel op https://mobiel.commandoregel.com

No Comments

Geef een reactie

Het e-mailadres wordt niet gepubliceerd. Vereiste velden zijn gemarkeerd met *