Bash, kort för "Bourne Again SHell", är ett Unix-skal och kommandospråk som fungerar både som en kommandotolk för operativsystemet och som ett programmeringsspråk för att skriva skal-skript. Skapat som en ersättning för Bourne Shell (sh), inkorporerar Bash funktioner från Korn Shell (ksh) och C Shell (csh), vilket gör det till ett kraftfullt och mångsidigt verktyg för kommandorads- och skriptuppgifter. Bash används i stor utsträckning i olika Linux-distributioner, macOS och andra Unix-liknande operativsystem, och det fungerar som standard-skal på många system.
Bash utvecklades av Brian Fox för GNU-projektet 1987 som en fri mjukvaruersättning för Bourne Shell (sh). Målet var att ge användarna ett mer funktionsrikt skal samtidigt som kompatibiliteten med befintliga sh-skript bibehölls. Under åren har Bash utvecklats genom bidrag från många utvecklare, och dess tillväxt har drivits av den ökande populariteten av Linux och öppen källkod.
Under sina tidiga år fick Bash snabbt fäste bland användare och utvecklare tack vare sin utbyggbarhet och den rika uppsättningen funktioner den introducerade. Nyckelfunktioner inkluderade kommandoradsredigering, jobbkontroll och förbättrade skriptmöjligheter. I dagsläget underhålls Bash aktivt, med version 5.2 som släpptes i september 2021. Det fortsätter att vara ett standardverktyg för systemadministratörer, utvecklare och alla som arbetar med Unix-liknande operativsystem.
Bash har hämtat inspiration från flera andra skal och programmeringsspråk. Syntaxen och kommandostrukturerna från Korn Shell (ksh) och C Shell (csh) har haft stort inflytande på dess design. Dessutom gör dess kommandospråksfunktioner det enkelt att integrera med programmeringsspråk som Python och Ruby, som ofta används i skript för förbättrad funktionalitet.
Bash används i stor utsträckning för skriptning och automatisering av systemuppgifter, hantering av programvaruinstallationer, utförande av systemadministrationsuppgifter och hantering av databehandlingsjobb. Det är integrerat i utvecklingsarbetsflöden för många programvaruapplikationer och CI/CD-pipelines, samt i molnmiljöer och DevOps-praktiker.
Bash stöder variabeltilldelning utan en föregående typdeklaration. Till exempel:
name="World"
echo "Hello, $name!"
Bash inkluderar villkorssatser som if-else för flödeskontroll:
if [ "$name" == "World" ]; then
echo "Hello, World!"
else
echo "Hello, Stranger!"
fi
Bash tillåter loopar som for
, while
och until
. Här är ett exempel på en for
-loop:
for i in {1..5}; do
echo "Iteration $i"
done
Du kan definiera och anropa funktioner i Bash:
greet() {
echo "Hello, $1!"
}
greet "User"
Bash stöder kommandosubstitution med hjälp av backticks eller $(...)
:
today=$(date)
echo "Today is $today"
Bash stöder endimensionella indexerade arrayer:
fruits=("apple" "banana" "cherry")
echo "First fruit: ${fruits[0]}"
Bash erbjuder strängmanipulationsfunktioner som delsträngsextraktion:
text="Hello World"
echo ${text:6:5} # Utdata "World"
Bash tillåter grundläggande aritmetiska operationer med hjälp av $((...))
:
result=$((5 + 3))
echo "Result is $result"
Du kan omdirigera in- och utmatning i Bash:
echo "Hello" > output.txt
Bash tillåter användning av here documents för fleradig inmatning, vilket gör det enkelt att skicka fleradiga strängar till kommandon:
cat << EOF
This is a multi-line string.
EOF
Även om Bash-skript kan redigeras i vilken textredigerare som helst, erbjuder flera integrerade utvecklingsmiljöer (IDE:er) stöd för Bash. Dessa inkluderar Visual Studio Code, Atom, Sublime Text och Eclipse med plugins.
Bash-skript tolkas snarare än kompileras, med Bash-tolken själv som kör skripten. Kommandot för att köra ett skript är:
bash script.sh
För att bygga projekt är det vanligt att skapa en Makefile med make
, eller använda Bash-skript för att automatisera uppgifter som installation eller distribution.
Bash används inom olika områden, inklusive:
Bash har sina närmaste jämförelser i språk som Python och Perl för skriptning, medan det kan jämföras med mer allmänna språk som C eller Java i specifika användningsfall.
Bash utmärker sig vid kommandoradsinteraktioner och systemuppgifter, medan Python är mer mångsidigt för komplexa programmeringsuppgifter, databehandling och applikationsutveckling. Python erbjuder ett rikt standardbibliotek vilket gör det lämpligt för större applikationer.
Perl används ofta för textbearbetning och systemadministrationsuppgifter; dock har det en mer komplex syntax jämfört med Bash. Bash fokuserar på kommandokörning, medan Perl är mer programmeringscentrerat.
JavaScript är främst ett klientsides webb språk, medan Bash fungerar som en kommandotolk och skriptprocessor för systemoperationer. Bash är inte lämpligt för webb utveckling, medan JavaScript utmärker sig inom det området.
När du översätter Bash-skript till andra språk, se till att validera kommandots motsvarigheter och kontrollera beroenden på systemnivåfunktioner. Verktyg som sh2py
finns som kan konvertera skal-skript till Python, men de semantiska skillnaderna bör hanteras noggrant.
Det finns några verktyg tillgängliga för käll-till-käll översättning, inklusive: