Bash, kort voor "Bourne Again SHell," is een Unix-shell en commando-taal die zowel fungeert als een commando-interpreter voor het besturingssysteem als een programmeertaal voor het schrijven van shell-scripts. Het is ontwikkeld als vervanging voor de Bourne Shell (sh) en integreert functies van de Korn Shell (ksh) en de C Shell (csh), waardoor het een krachtig en veelzijdig hulpmiddel is voor taken op de opdrachtregel en scripting. Bash wordt veel gebruikt in verschillende Linux-distributies, macOS en andere Unix-achtige besturingssystemen, en het fungeert als de standaard shell op veel systemen.
Bash werd in 1987 ontwikkeld door Brian Fox voor het GNU-project als een gratis softwarevervanging voor de Bourne Shell (sh). Het doel was om gebruikers een rijkere shell te bieden, terwijl de compatibiliteit met bestaande sh-scripts behouden bleef. In de loop der jaren is Bash geëvolueerd door bijdragen van talrijke ontwikkelaars, en de groei werd aangewakkerd door de toenemende populariteit van Linux en open-source software.
In de vroege jaren kreeg Bash snel aanhang onder gebruikers en ontwikkelaars vanwege de uitbreidbaarheid en de rijke set functies die het introduceerde. Belangrijke functies omvatten opdrachtregelbewerking, taakbeheer en verbeterde scriptingmogelijkheden. Tot nu toe wordt Bash actief onderhouden, met versie 5.2 die in september 2021 is uitgebracht. Het blijft een standaardhulpmiddel voor systeembeheerders, ontwikkelaars en iedereen die met Unix-achtige besturingssystemen werkt.
Bash heeft inspiratie gehaald uit verschillende andere shells en programmeertalen. De syntaxis en commando-structuren van de Korn Shell (ksh) en C Shell (csh) hebben een grote invloed gehad op het ontwerp. Bovendien maken de kenmerken van de commando-taal het gemakkelijk om te integreren met programmeertalen zoals Python en Ruby, die vaak worden gebruikt in scripts voor verbeterde functionaliteit.
Bash wordt veel gebruikt voor scripting en het automatiseren van systeemtaken, het beheren van software-installaties, het uitvoeren van systeembeheertaken en het verwerken van gegevens. Het is geïntegreerd in de ontwikkelingsworkflows van veel softwaretoepassingen en CI/CD-pijplijnen, evenals in cloudomgevingen en DevOps-praktijken.
Bash ondersteunt variabele toewijzing zonder een voorafgaande typeverklaring. Bijvoorbeeld:
name="Wereld"
echo "Hallo, $name!"
Bash bevat voorwaardelijke verklaringen zoals if-else voor stroomcontrole:
if [ "$name" == "Wereld" ]; then
echo "Hallo, Wereld!"
else
echo "Hallo, Vreemde!"
fi
Bash staat lussen toe zoals for
, while
en until
. Hier is een voorbeeld van een for
-lus:
for i in {1..5}; do
echo "Iteratie $i"
done
Je kunt functies definiëren en aanroepen in Bash:
greet() {
echo "Hallo, $1!"
}
greet "Gebruiker"
Bash ondersteunt commando substitutie met behulp van backticks of $(...)
:
today=$(date)
echo "Vandaag is $today"
Bash ondersteunt eendimensionale geïndexeerde arrays:
fruits=("appel" "banaan" "kers")
echo "Eerste fruit: ${fruits[0]}"
Bash biedt functies voor stringmanipulatie zoals substring-extractie:
text="Hallo Wereld"
echo ${text:6:5} # Geeft "Wereld" weer
Bash staat basisrekenkundige operaties toe met behulp van $((...))
:
result=$((5 + 3))
echo "Resultaat is $result"
Je kunt invoer en uitvoer omleiden in Bash:
echo "Hallo" > output.txt
Bash staat het gebruik van here documents toe voor multi-line invoer, waardoor het gemakkelijk is om multi-line strings aan commando's door te geven:
cat << EOF
Dit is een multi-line string.
EOF
Hoewel Bash-scripts in elke teksteditor kunnen worden bewerkt, bieden verschillende geïntegreerde ontwikkelomgevingen (IDE's) ondersteuning voor Bash. Deze omvatten Visual Studio Code, Atom, Sublime Text en Eclipse met plugins.
Bash-scripts worden geïnterpreteerd in plaats van gecompileerd, waarbij de Bash-interpreter zelf de scripts uitvoert. Het commando om een script uit te voeren is:
bash script.sh
Om projecten te bouwen, is het gebruikelijk om een Makefile te maken met make
, of Bash-scripts te gebruiken om taken zoals installatie of implementatie te automatiseren.
Bash wordt in verschillende domeinen gebruikt, waaronder:
Bash vindt zijn dichtstbijzijnde vergelijkingen in talen zoals Python en Perl voor scripting, terwijl het in specifieke gebruikssituaties kan worden vergeleken met meer algemene programmeertalen zoals C of Java.
Bash blinkt uit in interacties op de opdrachtregel en systeemtaken, terwijl Python veelzijdiger is voor complexe programmeertaken, gegevensverwerking en applicatieontwikkeling. Python biedt een rijke standaardbibliotheek die het geschikt maakt voor grotere applicaties.
Perl wordt vaak gebruikt voor tekstverwerking en systeembeheertaken; echter, het heeft een complexere syntaxis in vergelijking met Bash. Bash is gericht op het uitvoeren van commando's, terwijl Perl meer programmeergericht is.
JavaScript is voornamelijk een client-side webtaal, terwijl Bash fungeert als een commando-interpreter en scriptverwerker voor systeemoperaties. Bash is niet geschikt voor webontwikkeling, terwijl JavaScript uitblinkt in dat domein.
Bij het vertalen van Bash-scripts naar andere talen, zorg ervoor dat je de equivalenten van de commando's valideert en controleert op afhankelijkheden van systeemniveau functies. Er zijn tools zoals sh2py
die shell-scripts naar Python kunnen converteren, maar de semantische verschillen moeten zorgvuldig worden beheerd.
Er zijn een paar tools beschikbaar voor bron-naar-bron vertaling, waaronder: