Bash, skrót od "Bourne Again SHell", to powłoka Unix i język poleceń, który służy zarówno jako interpreter poleceń dla systemu operacyjnego, jak i język programowania do pisania skryptów powłoki. Stworzony jako zamiennik dla Bourne Shell (sh), Bash łączy w sobie cechy z Korn Shell (ksh) i C Shell (csh), co czyni go potężnym i wszechstronnym narzędziem do zadań związanych z wierszem poleceń i skryptowaniem. Bash jest szeroko stosowany w różnych dystrybucjach Linuxa, macOS oraz innych systemach operacyjnych podobnych do Uniksa, i jest domyślną powłoką w wielu systemach.
Bash został opracowany przez Briana Foxa dla projektu GNU w 1987 roku jako darmowy zamiennik dla Bourne Shell (sh). Celem było zapewnienie użytkownikom bardziej rozbudowanej powłoki przy jednoczesnym zachowaniu zgodności z istniejącymi skryptami sh. Na przestrzeni lat Bash ewoluował dzięki wkładom licznych deweloperów, a jego rozwój był napędzany rosnącą popularnością Linuxa i oprogramowania open-source.
W swoich wczesnych latach Bash szybko zyskał popularność wśród użytkowników i deweloperów dzięki swojej rozszerzalności oraz bogatemu zestawowi funkcji, które wprowadził. Kluczowe cechy obejmowały edycję wiersza poleceń, kontrolę zadań oraz ulepszone możliwości skryptowe. Obecnie Bash jest aktywnie utrzymywany, a wersja 5.2 została wydana we wrześniu 2021 roku. Nadal jest standardowym narzędziem dla administratorów systemów, deweloperów oraz wszystkich pracujących z systemami operacyjnymi podobnymi do Uniksa.
Bash czerpał inspirację z kilku innych powłok i języków programowania. Składnia i struktury poleceń Korn Shell (ksh) i C Shell (csh) miały duży wpływ na jego projekt. Ponadto, cechy jego języka poleceń ułatwiają integrację z językami programowania takimi jak Python i Ruby, które często są wykorzystywane w skryptach dla zwiększenia funkcjonalności.
Bash jest szeroko stosowany do skryptowania i automatyzacji zadań systemowych, zarządzania instalacjami oprogramowania, wykonywania zadań administracyjnych oraz obsługi zadań przetwarzania danych. Jest zintegrowany z procesami rozwoju wielu aplikacji oraz z pipeline'ami CI/CD, a także w środowiskach chmurowych i praktykach DevOps.
Bash obsługuje przypisywanie zmiennych bez wcześniejszej deklaracji typu. Na przykład:
name="World"
echo "Hello, $name!"
Bash zawiera instrukcje warunkowe, takie jak if-else, do kontroli przepływu:
if [ "$name" == "World" ]; then
echo "Hello, World!"
else
echo "Hello, Stranger!"
fi
Bash pozwala na użycie pętli takich jak for
, while
i until
. Oto przykład pętli for
:
for i in {1..5}; do
echo "Iteration $i"
done
Możesz definiować i wywoływać funkcje w Bash:
greet() {
echo "Hello, $1!"
}
greet "User"
Bash obsługuje podstawienie poleceń za pomocą backticków lub $(...)
:
today=$(date)
echo "Today is $today"
Bash obsługuje jednowymiarowe tablice indeksowane:
fruits=("apple" "banana" "cherry")
echo "First fruit: ${fruits[0]}"
Bash oferuje funkcje manipulacji łańcuchami, takie jak ekstrakcja podłańcuchów:
text="Hello World"
echo ${text:6:5} # Wyjście "World"
Bash pozwala na podstawowe operacje arytmetyczne za pomocą $((...))
:
result=$((5 + 3))
echo "Result is $result"
Możesz przekierować wejście i wyjście w Bash:
echo "Hello" > output.txt
Bash pozwala na użycie here documents do wieloliniowego wejścia, co ułatwia przekazywanie wieloliniowych łańcuchów do poleceń:
cat << EOF
This is a multi-line string.
EOF
Chociaż skrypty Bash można edytować w dowolnym edytorze tekstu, kilka zintegrowanych środowisk programistycznych (IDE) oferuje wsparcie dla Bash. Należą do nich Visual Studio Code, Atom, Sublime Text i Eclipse z wtyczkami.
Skrypty Bash są interpretowane, a nie kompilowane, przy czym interpreter Bash sam wykonuje skrypty. Polecenie do uruchomienia skryptu to:
bash script.sh
Aby budować projekty, powszechnie tworzy się Makefile za pomocą make
lub używa skryptów Bash do automatyzacji zadań, takich jak instalacja czy wdrożenie.
Bash jest wykorzystywany w różnych dziedzinach, w tym:
Bash znajduje swoje najbliższe porównania w językach takich jak Python i Perl do skryptowania, podczas gdy może być porównywany z bardziej ogólnymi językami, takimi jak C czy Java w specyficznych przypadkach użycia.
Bash doskonale sprawdza się w interakcjach w wierszu poleceń i zadaniach systemowych, podczas gdy Python jest bardziej wszechstronny w przypadku złożonych zadań programistycznych, przetwarzania danych i rozwoju aplikacji. Python oferuje bogatą standardową bibliotekę, co czyni go odpowiednim do większych aplikacji.
Perl jest często używany do przetwarzania tekstu i zadań administracyjnych; jednak ma bardziej złożoną składnię w porównaniu do Bash. Bash koncentruje się na wykonywaniu poleceń, podczas gdy Perl jest bardziej zorientowany na programowanie.
JavaScript jest głównie językiem webowym po stronie klienta, podczas gdy Bash służy jako interpreter poleceń i procesor skryptów do operacji systemowych. Bash nie nadaje się do rozwoju aplikacji webowych, podczas gdy JavaScript doskonale sprawdza się w tej dziedzinie.
Podczas tłumaczenia skryptów Bash na inne języki, upewnij się, że polecenia mają swoje odpowiedniki i sprawdź zależności od funkcji na poziomie systemu. Istnieją narzędzia takie jak sh2py
, które mogą konwertować skrypty powłoki na Pythona, ale różnice semantyczne powinny być starannie zarządzane.
Dostępnych jest kilka narzędzi do tłumaczenia źródło-do-źródła, w tym: