See also ebooksgratis.com: no banners, no cookies, totally FREE.

CLASSICISTRANIERI HOME PAGE - YOUTUBE CHANNEL
Privacy Policy Cookie Policy Terms and Conditions
bash - Wikipedia, wolna encyklopedia

bash

Z Wikipedii

Ten artykuł dotyczy powłowki systemowej UNIX. Zobacz też: bash.org.pl.
Przykładowa sesja Basha
Przykładowa sesja Basha

bashpowłoka systemowa UNIX napisana dla projektu GNU. Program jest rozprowadzany na licencji GPL.

Bash to jedna z najpopularniejszych powłok systemów uniksowych. Jest domyślną powłoką w większości dystrybucji systemu GNU/Linux oraz w systemie Mac OS X w wersji 10.4 Tiger, istnieją także wersje dla większości systemów uniksowych. Bash jest także domyślną powłoką w środowisku Cygwin dla systemów Win32.

Bash umożliwia pracę interaktywną i wsadową. Język basha umożliwia definiowanie aliasów, funkcji, zawiera konstrukcje sterujące przepływem (if, while, for, ...). Powłoka bash zachowuje historię wykonywanych poleceń. Jest ona zapisywana w pliku .bash_history w katalogu domowym użytkownika.

Spis treści

[edytuj] Historia

Nazwa jest akronimem od Bourne-Again Shell (ang. gra słów: fonetycznie brzmi tak samo, jak Born again shell, czyli odrodzona powłoka). Wywodzi się od powłoki Bourne'a sh, która była jedną z pierwszych i najważniejszych powłok systemu UNIX oraz zawiera pomysły zawarte w powłokach Korna i csh. Pierwotna powłoka Bourne'a była tworzona przez Stephena Bourne'a. Bash był pisany głównie przez Briana Foksa i Cheta Rameya w 1987.

Powłoka Bourne'a sh została stworzona około 1977. W roku 1990 jej głównym opiekunem został Chet Ramey.

[edytuj] Język powłoki bash

[edytuj] Najciekawsze możliwości

Język powłoki bash jest rozszerzeniem powłoki sh. Większość skryptów przeznaczonych dla powłoki sh działa bez zmian w powłoce bash, wyjątkami są skrypty, które odwołują się do wbudowanych zmiennych powłoki Bourne'a lub używają wbudowanych poleceń tej powłoki. Składnia poleceń powłoki bash zawiera idee pochodzące z powłoki Korna i csh takie jak edycja linii poleceń (ang. command-line editing), historia poleceń, stos katalogów, zmienne $RANDOM i $PPID oraz POSIX-owe podstawianie polecenia (składnia: $((...))). Gdy bash jest używany interaktywnie, dostępne jest dokańczanie nazw plików, poleceń wbudowanych i zewnętrznych programów, zmiennych, itd. dzieje się to po naciśnięciu klawisza TAB.

[edytuj] Działania na liczbach całkowitych

Jednym z ograniczeń powłoki sh jest to, że nie umożliwia ona operowania na liczbach całkowitych bez tworzenia nowego procesu. Bash umożliwia wykonanie obliczeń za pomocą wyrażeń w podwójnych nawiasach ((...)) oraz składni $[...]. Przykładowo

x1=55             # Przypisz liczbę 55 do zmiennej x1. Nie może być spacji przed i po znaku równości.
((x1 = x1 + 1))   # Dodaj jeden do x1. Nie stawia się tutaj znaku '$'.
echo $((x1 + 1))  # Wypisz wartość x1+1 na ekran.
((++x1))          # Zwiększenie o jeden w stylu języka C.
((x1++))          # Podobnie jak powyżej ale teraz post-inkrementacja.
echo $[x1=x1*20]  # Pomnóż x1 przez 20, zapisz wynik do x1 i wypisz wynik na ekran.
echo $((x1 * 20)) # To samo co powyżej, ale nie zapisuj wyniku do zmiennej.
echo $((x1<1000)) # Sprawdź czy x1 jest mniejsze od 1000. Zero oznacza fałsz.

Składnia ((...)) może być także wykorzystana w wyrażeniach warunkowych, ponieważ w wyniku wykonania zwracane jest 0 lub jeden w zależności od tego czy porównanie wartości zwraca fałsz czy prawdę

if ((x == y * 3 + z * 2))
then
        echo Yes
fi

((z > 23)) && echo Yes

Składnia ((...)) umożliwia posługiwanie się operatorami: '==', '!=', '>', '<', '>=' i '<='.

Bash nie umożliwia wykonywania obliczeń z wykorzystaniem liczb zmiennoprzecinkowych. Jedyne powłoki systemowe pozwalające na posługiwanie się liczbami zmiennoprzecinkowymi to powłoka Korna (1993) oraz zsh (od wersji 4.0).

[edytuj] Przekierowanie wejścia/wyjścia

Bash rozszerza składnię powłoki sh służącą do przekierowania wejścia/wyjścia. Możliwe jest skierowanie standardowego wejścia i standardowego wyjścia dla błędów do pliku w sposób krótszy niż w sh:

polecenie &> plik

W powłoce Bourne'a wyglądałoby to następująco 'polecenie > plik 2>&'. Od wersji 2.05b możliwe jest przekierowanie zmiennej na standardowe wejście polecenia:

polecenie <<< "Napis do przeczytania ze standardowego wejścia"
#można też użyć zmiennej
zmienna="Ala ma"
cat <<< "${zmienna} kota."

Przykład: Przekieruj standardowe wyjście do pliku, wypisz dane, zamknij plik, zresetuj wyjście:

exec 6>&1                # niech deskryptor pliku 6 stanie się kopią standardowego wyjścia
exec 1>test.dane         # otwórz plik test.dane do zapisu, deskryptor nr 1 oznacza,
                         # że trafi do niego standardowe wyjście
echo "dane:dane:dane"    # wypisz coś
exec 1<&-                # zamknij plik
exec 1>&6                # przywróć deskryptorowi 1 jego pierwotną funkcję
exec 6<&-                # zamknij deskryptor 6

Otwórz i zamknij plik:

# otwórz test.dane do czytania
exec 6<test.dane
# czytaj kolejne wiersze i wypisuj je, aż do napotkania końca pliku
while read -u 6 dane
do
   echo "$dane" 
done
# zamknij plik
exec 6<&-

Podstaw wyjście zewnętrznego polecenia do zmiennej:

# wyszukaj pliki których nazwa kończy się na literę "h"
# i zachowaj wynik w zmiennej ZM
ZM=$(find . -name "*h")

[edytuj] Wbudowana obsługa wyrażeń regularnych

Bash 3.0 posiada wbudowaną obsługę wyrażeń regularnych, dopasowanie odbywa się za pomocą składni przypominającej Perl:

[[ napis =~ wyrażenie ]]

Używa się standardowych wyrażeń regularnych opisanych na stronie regex(7) podręcznika man. Powyższe polecenie zwraca wartość 0, gdy dopasowanie udało się lub 1 w przeciwnym przypadku. Podwyrażenia otoczone nawiasami są dostępne w zmiennej powłoki BASH_REMATCH, tak jak w poniższym przykładzie:

if [[ abcfoobarbletch =~ foo(bar)bl(.*) ]]
then
        echo "Dopasowanie udało się\!"
        echo $BASH_REMATCH               # wypisuje: foobarbletch
        echo ${BASH_REMATCH[1]}          # wypisuje: bar
        echo ${BASH_REMATCH[2]}          # wypisuje: etch
fi

Używanie powyższej składni, zamiast programu grep, daje kod działający szybciej, ponieważ unika się kosztownego tworzenia nowego procesu.

[edytuj] Wersje

Najnowsza wersja powłoki bash nosi numer 3.2 i została opublikowana 11 października 2006.

[edytuj] Zobacz też

[edytuj] Linki zewnętrzne

W języku polskim

W języku angielskim


aa - ab - af - ak - als - am - an - ang - ar - arc - as - ast - av - ay - az - ba - bar - bat_smg - bcl - be - be_x_old - bg - bh - bi - bm - bn - bo - bpy - br - bs - bug - bxr - ca - cbk_zam - cdo - ce - ceb - ch - cho - chr - chy - co - cr - crh - cs - csb - cu - cv - cy - da - de - diq - dsb - dv - dz - ee - el - eml - en - eo - es - et - eu - ext - fa - ff - fi - fiu_vro - fj - fo - fr - frp - fur - fy - ga - gan - gd - gl - glk - gn - got - gu - gv - ha - hak - haw - he - hi - hif - ho - hr - hsb - ht - hu - hy - hz - ia - id - ie - ig - ii - ik - ilo - io - is - it - iu - ja - jbo - jv - ka - kaa - kab - kg - ki - kj - kk - kl - km - kn - ko - kr - ks - ksh - ku - kv - kw - ky - la - lad - lb - lbe - lg - li - lij - lmo - ln - lo - lt - lv - map_bms - mdf - mg - mh - mi - mk - ml - mn - mo - mr - mt - mus - my - myv - mzn - na - nah - nap - nds - nds_nl - ne - new - ng - nl - nn - no - nov - nrm - nv - ny - oc - om - or - os - pa - pag - pam - pap - pdc - pi - pih - pl - pms - ps - pt - qu - quality - rm - rmy - rn - ro - roa_rup - roa_tara - ru - rw - sa - sah - sc - scn - sco - sd - se - sg - sh - si - simple - sk - sl - sm - sn - so - sr - srn - ss - st - stq - su - sv - sw - szl - ta - te - tet - tg - th - ti - tk - tl - tlh - tn - to - tpi - tr - ts - tt - tum - tw - ty - udm - ug - uk - ur - uz - ve - vec - vi - vls - vo - wa - war - wo - wuu - xal - xh - yi - yo - za - zea - zh - zh_classical - zh_min_nan - zh_yue - zu -