Bash, wat staat voor Bourne Again Shell, is een shell voor POSIX-systemen en wordt onder andere gebruikt op Linux en macOS. Het is geschreven door GNU en is sterk geïnspireerd op sh (afgeleid van de eerste twee letters van shell (Engels voor omhulsel)), het opdrachtregelprogramma van Unix.

De naam is een woordgrapje op de naam van de originele shell, die voluit Bourne shell heet, naar de auteur (Stephen Bourne). Bourne again wordt in het Engels hetzelfde uitgesproken als born again, hetgeen wedergeboren betekent. Bash streeft 100% achterwaartse compatibiliteit met sh na.

Vanwege de rijke syntaxismogelijkheden van bash is het ook mogelijk in bash ingewikkelde opdrachtregels uit te voeren. Deze opdrachten kunnen worden opgeslagen in afzonderlijke bestanden (meestal omwille van hun lengte) en vormen dan scripts.

Rekenkundige bewerkingenexpr 1 + 3 (spaties tussen 1 + 3 zijn verplicht)
Afdrukken van tekstecho “Dit is tekst”
Oproepen van een commandocommando
Uitleg over een commandoman commando
Uitvoeren van een scriptbash scriptNaam
bash “scriptNaam met spatie”
./ScriptNaam (nadat het uitvoerbaar is gemaakt)
Bestand uitvoerbaar makenchmod u+x bestandnaam

Regels die beginnen met # zijn commentaar. Meerdere commando’s op 1 regel door scheiden met ;

Soorten commando’s

Interne commando’s

Ingebouwde commando’s zijn ingesloten in de shell. Als de naam van een ingebouwd commando wordt gebruikt als het eerste woord van een primair commando dan zal het commando onmiddellijk zonder tussenkomst van een ander programma worden uitgevoerd. Primaire commando’s zijn nodig om bepaalde functionaliteit te implementeren die moeilijk of zelfs onmogelijk zijn om deze met externe hulpprogramma’s op te lossen.

Veel van de ingebouwde commando’s zijn uitgebreid door POSIX of Bash.

Externe commando’s

Externe commando’s zijn bestanden in de /bin folder. (In Linux wordt alles voorgesteld in de vorm van bestanden). Als de bestanden niet aanwezig zijn in de door het $PATH variabele gespecificeerd pad dan worden ze ook niet uitgevoerd. Hetzelfde geldt ook voor als de bestanden aanwezig zijn maar niet het pad gespecificeerd door het $PATH variabele. Elke keer als er commando wordt opgeroepen word een nieuw proces gecreëerd.

Bestandssysteem

cat Voegt bestanden samen en drukt ze af naar de standaard uitvoerconcatenate
cdBourne ShellVerandert de huidige directory naar anderechange directory
cp Kopiëren van bestandencopy files
dir Drukt lijst van zichtbare bestanden afdirectory
mkdir Aanmaken mapmake directory
ls Drukt lijst van zichtbare bestanden aflist files
mv Verplaatsen van bestandenmove
pwdBourne ShellDrukt de huidige werkmap afprint working directory
rm Bestand verwijderenremove files
rmdir Map verwijderen (enkel indien ze leeg is)remove directory
tac Voegt bestanden in omgekeerde volgorde samen en drukt ze af naar de standaard uitvoerreversed concatenate
touch Bestand aanpassen of aanmakentouch files

Gebruikersomgeving

clear Maakt het scherm leegclear screen
exitBourne ShellShell afsluiten of script stoppen 
last Lijst van laatst ingelogde gebruikers 
shutdown -h now sluit het systeem onmiddellijk af 
who Toont overzicht van de aangemelde gebruikers 
whoami Gebruikersnaam van terminalgebruiker 

Tekstverwerking

head Toont eerste X regels uit een bestand (standaard 10) 
grep Toont lijnen die voldoen aan het opgegeven patroon. 
less Toont de uitvoer via een schuifbaar pagineringprogramma in het terminalvenster. Zelfde als more maar less is more! 
more Toont de uitvoer via een indeelbaar pagineringprogramma via een terminalvenster. 
pg Paginagewijs door bestand bladerenpage
sort Sorteren 
tail Toont laatste X regels uit een bestand (standaard 10) 
uniq Toont of laat de dubbele lijnen wegunique
wc Aantal regels, woorden, bytes tellen van bestand(en)word count

Documentatie

helpBashToont help van een ingebouwde functie 
info Tekst viewer om documenten in het Info formaat de tonen 
man Toont de handleiding van een bestand via een pager programma zoals more of lessmanual

Ingebouwde shell-opdrachten

echoBashToont de waarde van variabelen, zowel omgevingspecifieke of gebruikersgedeclareerde. Het het kan ook een eenvoudige string tonen.
typeBashBeschrijft hoe argumenten worden geïnterpreteerd als ze gebruikt worden als commando-namen. 

Diverse

cal Drukt kalender van de huidige maand afcalender
date Drukt de huidige datum en tijd af