bash


Powloka Bash
Pawel Bielecki
13 stycznia 2004
Spis treści
1 Wprowadzenie. 2
2 Uruchamianie powloki. 2
3 Wprowadzenie poleceń 2
4 Edytowanie Linii poleceń. 3
4.1 Operacje na pojedynczych znakach. . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3
4.2 Poruszanie sie po linii. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3
5 Uzupelnianie Poleceń. 3
6 Historia poleceń. 4
7 Aliasy. 5
8 Skrypty Bash. 6
8.1 Zmienne programowe(ang. program variables) . . . . . . . . . . . . . . . . . . . . . . 6
8.2 Zmienne specjalne (ang. special variables, special parameters) . . . . . . . . . . . . . 7
8.3 Zmienne środowiskowe. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7
8.4 Instrukcja warunkowa if . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 8
8.5 Instrukcja case . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 9
8.6 Petla for . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 9
8.7 Petla select . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 10
8.8 Petla while . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 11
8.9 Petla until . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 11
8.10 Funkcje . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 12
8.11 Interpretacja wyrażeń arytmetycznych. . . . . . . . . . . . . . . . . . . . . . . . . . . 13
8.12 Polecenie let . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 13
1
1 Wprowadzenie.
Powloka shell to program, który przyjmuje polecenia użytkowników i uruchamia inne programy.
Kiedy użytkownik sie zaloguje, pierwsza widziana przez niego rzecza jest zgloszenie sie powloki (shell
prompt). Dostepnych jest wiele różnych powlok dla Linuxa (na przyklad Kerna, Bourne a, csh, tcsh);
ta która jest uruchamia sie po zalogowaniu, jest określona jego wpisem w pliku /etc/passwd.
Bush to skrót od Broune Again Shell, co wia że sie z faktem, że powloka ta jest wzorowana na
innej powloce, a mianowicie powloce Bourne. Wszystkie wbudowane polecenia powloki Bourne a sa
dostepne także w Bashu.
2 Uruchamianie powloki.
Powloki sa zwykle wywolywane podczas logowania użytkowania. Program logujacy sprawdza w pliku
/etc/passwd, jaka powloke przypisal danemu użytkownikowi administrator systemu. Jeżeli nie jest to
Bash, można wywolać program bash z innej powloki, wpisujac /bin/bash w linii poleceń. Można użyć
nastepujacych metod:
- norc - Nie odczytuje plików inicjacyjnych <"/.bashre w przypadku wywolania interaktywnej
powloki.
- rcfile nazwa pliku  Wykonuje polecenie ze wskazanego pliku.
- noprofile  Nie wczytuje systemowego pliku startowego /etc/profile ani żadnego osobistego pliku.
- version  Wyświetla informacje o wersji.
- login  Sprawi, że powloka dziala tak jak gdyby zostala bezpośrednio wywolana przez program
login.
3 Wprowadzenie poleceń
Pierwszy kontakt z bash nastepuje podczas normalnego wprowadzania poleceń. Bash wspomaga nas
duża liczba skrótów klawiaturowych i klawiszy specjalnych. W szczególności można używać klaw-
iszy kursora [w góre] i [w dól] do powtórnego wykonywania najcześciej wprowadzanych poleceń, co
oszczedza wiele mozolnego wpisywania. Po wylogowaniu sie z powloki, ostatnio używane polecenia
zostana zapisane w pliku i w ten sposób beda dostepne podczas nastepnej sesji (jeżeli pracujemy pod
ta sama nazwa użytkownika na kilku terminalach, tylko polecenia jednego z tych terminali beda za-
chowane). Wiersze poleceń moga być edytowane w ten sam sposób jak w edytorze tekstowym, można
wstawiać i usuwać znaki w dowolnym miejscu. Mapowanie klawiatury w bash jest niemal calkowicie
konfigurowalne. W szczególności można przypisywać swoje wlasne polecenia do klawiszy specjalnych
(takich jak klawisze funkcyjne i klawisze kursora). Poza tym można przelaczać sie pomiedzy try-
bami emacs oraz vi. Dlatego dla wszystkich podstawowych poleceń edycji odnosza sie te same skróty
klawiaturowe, co w wybranym edytorze. Zazwyczaj standardowym ustawieniem jest emacs.
2
4 Edytowanie Linii poleceń.
Wpisujac z klawiatury polecenia powloki, korzysta sie w istocie z prostego, liniowego miniedytora,
nieco podobnego do edytora DOSKEYS pod MS-DOS. Bush zawiera bardo dużo sekwencji znaków,
slużacych do edytowania linii polecenia.
4.1 Operacje na pojedynczych znakach.
-b lub Strzalka w prawo Przesuwa kursor o jeden znak w tyl.
-f lub Strzalka w lewo Przesuwa kursor o jeden znak w przód.
Usuwa znak na lewo o kursora.
- d Usuwa znak pod kursorem.
- u Cofa ostatnio dokonana zmiane (usuwa ostatnio wpisany
znak).
4.2 Poruszanie sie po linii.
-a Przesuwa kursor na poczatek lini.
-e Przesuwa kursor na koniec linii.
-f Przesuwa kursor o jedno slowo w przód.
-b Przesuwa kursor o jedno slowo w tyl.
-l Czyści ekran i wyświetla na górze bieżaca linie.
-k Usuwa tekst od pozycji kursora do końca linii.
-d Usuwa tekst od pozycji kursora do końca bieżacego slowa, jeśli kursor
znajduje sie w środku slowa to tekst do do końca nastepnego slowa.
-del Usuwa tekst od pozycji kursora do poczatku bieżacego slowa, a jeśli kursor jest
miedzy slowami  do poczatku poprzedniego slowa.
-y Wstawia ostatnio usuniete slowo w miejsce kursora.
Oprócz sekwencji klawiszy pozwalajacych edytować linie polecenia, powloka interpretuje też kilka
innych sekwencji, które steruja wykonaniem aktualnie aktywnego programu.
[Ctr1+C] Wysyla sygnal przerwania do aktualnie wykonywanego polecenia, co z
reguly powoduje, że odpowiedni proces zostaje zakończony.
[Ctr1+D] Wysyla znak końca pliku do aktualnie wykonywanego polecenia użyj
tej sekwencji do zakończenia wprowadzania danych z klawiatury.
[Ctr1+Z] Wstrzymuje (czasowo) wykonywanie aktualnie aktywnego programu.
5 Uzupelnianie Poleceń.
Dokańczanie poleceń jest bardzo wygodna i przyspieszajaca prace opcji powloki Bash. Dzieki niej
nie musimy już wpisywać pelnej nazwy programu (ścieżki do katalogu, pliku itp.) lub znać jego
dokladnej nazwy. Wystarczy, że wpiszemy jego pierwsza literke i wciśniemy klawisz TAB. Wtedy
Linux spróbuje wyszukać wszystkie dostepne programy, katalogi, pliki, których pierwsza litera nazwy
3
odpowiada wpisanej przez nas. Jeśli wiecej programów zaczyna sie na te sam znak powloka wylis-
tuje nam ich nazwy i poinformuje nas za pomoca brzeczyka, że należy podać dodatkowe informacje.
Dzieje sie to zazwyczaj, gdy podamy tylko jedna, badz dwie pierwsze litery, ale już np. wpisanie mut
i wciśniecie TAB, najprawdopodobniej spowoduje poprawne dokończenie nazwy programu na mutt!
Jeśli wpiszemy nazwe z bledem np. mot, które nie ma odniesienia w rzeczywistości i naciśniemy TAB
interpreter poinformuje nas o bledzie wydajac z brzeczyka systemowego charakterystyczny dzwiek.
Jest to dla nas sygnal, że coś jest nie w porzadku i należy poprawić.
Spis najcześciej używanych poleceń uzupelniajacych:
Próbuje uzupelnić tekst znajdujacy sie przed kursorem.
-? Wyświetla możliwe uzupelniania tekstu znajdujacego sie pod kursorem.
-x--r Wczytuje zawartość pliku inicjacyjnego i uwzglednia wszystkie
znajdujace sie tam powiazania i przypisania zmiennych.
Sprawia, że nastepny znak bedzie traktowany tak, jakby zostal naciśniety
razem z klawiszem.
- r Cofa wszystkie modyfikacje bieżacej linii.
- Przyrostowe cofanie zmian, zapamietywane oddzielnie dla każdej linii.
6 Historia poleceń.
Bash zapamietuje wydane przez użytkownika polecenia. Dzieki temu za pomoca klawiszy kursora
(góra - dól), możemy szybko przywolać polecenie, które już wcześniej wydaliśmy. Jest to szczególnie
przydatne, gdy w bardzo skomplikowanym poleceniu zmieniamy np. tylko nazwe pliku, na którym
ma zostać wykonane, a cala skladnia polecenia nie ulega modyfikacjom. Lista wydanych przez nas
poleceń jest ladowana z pliku historii, który domyślnie nosi nazwe .bash history. Parametry nazwy
pliku historii oraz ilości przechowywanych w nim ostatnio wydanych poleceń ustalaja zmienne HIST-
FILE oraz HISTSIZE. W tym miejscu warto zaznaczyć, że w wielu dystrybucjach Linuksa zmienna
HISTSIZE ma wartość 1000 co powoduje, że w pliku .bash history zapisywanych jest 1000 wydanych
ostatnio poleceń.
Przyjmuje linie niezależnie od polożenia kursora.
-p lub Strzalka do góry Przechodzi w góre listy historii.
-n lub Strzalka do dolu Przechodzi w dól listy historii.
-->Przechodzi do ostatniej linii historii.
-r Przeszukuj w tyl, zaczynajac od bieżacej linii i w razie potrzeby poruszajac sie
w gore listy historii.
-s Przeszukuj w przód, zaczynajac od bieżacej linii i w razie potrzeby poruszajac
sie w dól listy historii.
-p Szuka calego wpisanego slowa w tyl, zaczynajac od bieżacej linii i w razie
potrzeby poruszajac sie w góre listy historii.
4
-n Szuka calego wpisanego slowa w przód, zaczynajac od bieżacej linii i w razie
potrzeby poruszajac sie w góre listy historii.
--y Wstawia argument poprzedniego polecenia.
-. Lub- Wstawia ostatni argument poprzedniego polecenia.
Istnieje też metoda innego dostepu do historii poleceń:
! Zaczyna podstawianie poleceń z historii.
!! Jest to synonim zapisu !-1.
!n Oznacza n-ta linie polecenia.
!-n Oznacza polecenie odlegle o n linii w tyl.
!lańcuch Oznacza pierwsze z uprzednio wydanych poleceń zaczynajacych sie od lańcuch.
!?lańcuch[?] Oznacza pierwsze z uprzednio wydanych poleceń zawierajacych lańcuch.
!# Oznacza cala linie polecenia wpisana do tej pory.
Oprócz tych poleceń istniej polecenie history, które wyświetla listing historii poleceń.
history [N] [[-w  r  a  n] [ Nazwa pliku]]
-w Zapisuje bieżaca historie w pliku historii.
-r Wczytuje plik historii i wypelnia liste historii jego zawartościa.
-a Dodaje nowe linie historii.
-n Wczytuje linie historii jeszcze nie odczytane z pliku historii i umieszcza je na liście
historii.
7 Aliasy.
Aliasy to mechanizm powloki, który umożliwia utworzenie skróconych wersji czesto używanych pole-
ceń. Aliasy tworzy sie, wpisujac slowo alias , sekwencje znaków, która bedzie nowym aliasem, znak

równości, a wreszcie wartości, do której alias bedzie rozwijany.
Alias [Nazwa[=wartosc]...]
Bez argumentów wyświetla aktualna liste aliasów. W innym przypadku definiuje alias. Kiedy zostanie
wpisana nazwa , bash zmienia ja na wartość i wykonuje wartość jako polecenie.
  
Alias [-a][nazwa]
Usuwa określona nazwe z list aliasów. Opcja  a powoduje usuniecie wszystkich aliasów.
Przyklady:
alias rm= rm -i
alias cp= cp -i
5
alias up= kill -9 0
alias ping= ping -c 5
Można utworzyć plik. alias w swoim katalogu macierzystym i wykonywać zawarte w nim polecenia z
jednego z plików startowych. Plik.alias to zwykly plik tekstowy z lista aliansów, dokladnie w takiej
samej postaci, w jakiej wpisuje sie je w linii polecenia. Aby wykonać plik aliasów, można na przyklad
dolaczyć nastepujaca linie do pliku .bashrc:
/.alias
Dzieki temu aliasy z pliku .alias beda dostepne zaraz po zalogowaniu. Dodatkowa zaleta jest fakt, że
wszystkie aliasy sa przechowywane w jednym pliku, co ulatwia ich dodawanie i modyfikowane.
Unalias [-a][Nazwa...]
Polecenie usuwa określona Nazwe z listy aliasów. Opcja  a powoduje usuniecie wszystkich aliasów.
8 Skrypty Bash.
Skrypt to niekompilowany tekstowy plik wykonywalny, zawierajacy jakieś polecenia systemowe oraz
polecenia sterujace jego wykonaniem (instrukcje, petle itp.). Wykonywany jest tylko i wylacznie przez
interpreter ( tutaj /bin/bash), który tlumaczy polecenia zawarte w skrypcie na jezyk zrozumialy dla
procesora
8.1 Zmienne programowe(ang. program variables)
To zmienne definiowane samodzielnie przez użytkownika.
nazwa zmiennej= wartość
Na przyklad:
x= napis
echo $x
Na co należy uważać? Nie może być spacji po obu stronach!
x =  napis
ten zapis jest bledny
Pod zmienna możemy podstawić wynik jakiegoś polecenia, można to zrobić na dwa sposoby:
" Poprzez użycie odwrotnych apostrofów:
 polecenie
Przyklad:
6
GDZIE JESTEM= pwd
echo  Jestem w katalogu $GDZIE JESTEM
" Za pomoca rozwijania zawartości nawiasów:
$(polecenie)
Przyklad:
GDZIE JESTEM=$(pwd)
echo  Jestem w katalogu $GDZIE JESTEM
8.2 Zmienne specjalne (ang. special variables, special parameters)
To najbardziej prywatne zmienne powloki, sa udostepniane użytkownikowi tylko do odczytu (sa
wyjatki). Kilka przykladów:
" $0
nazwa bieżacego skryptu lub powloki
Przyklad:
echo  $0
" $1..$9
Parametry przekazywane do skryptu (wyjatek, użytkownik może modyfikować ten rodzaj $-ych spec-
jalnych.
echo  $1 $2 $3
" $@
Pokaże wszystkie parametry przekzywane do skryptu (też wyjatek), równoważne $1 $2 $3..., jeśli
nie podane sa żadne parametry $@ interpretowana jest jako nic.
Przyklad:
echo  Skrypt uruchomiono z parametrami: $@
" $?
kod powrotu ostanio wykonywanego polecenia
" $$
PID procesu bieżacej powloki
8.3 Zmienne środowiskowe.
Zmienne środowiskowe (ang.environment variables) definiuja środowisko użytkownika, dostepne dla
wszystkich procesów potomnych. Można je podzielić na:
- globalne - widoczne w każdym podshellu
- lokalne - widoczne tylko dla tego shella w którym zostal ustawione
Aby zainicjiwać zmienna globalna należy napisać
export x= napis
Jeśli napiszesz samo export, opcjonalnie export -p uzyskasz liste aktualnie eksportowanych zmi-
ennych. Na tej liście przed nazwa każdej zmiennej znajduje sie zapis declare-x. Jest to wewnetrzne
7
polecenie BASH-a, slużace do definiowania zmiennych i nadawania im atrybutów, -x to atrybut ek-
sportu czyli jest to, to samo, co polecenie export. Polecenie declare wystepuje tylko w BASH-u,
nie ma go w innych powlokach, natomiast export wystepuje w ksh, ash i innych, które korzystaja z
plików startowych /etc/profile. Dlatego też zaleca sie stosowanie polecenia export.
export -n nazwa zmiennej spowoduje usuniecie atrybutu eksportu dla danej zmiennej
Niektóre przyklady zmiennych środowiskowych:
$HOME ścieżka do twojego katalogu domowego
$USER twój login
$HOSTNAME nazwa twojego hosta
$OSTYPE rodzaj systemu operacyjnego
itp. dostepne zmienne środowiskowe można wyświetlić za pomoca polecenia:
printenv | more
8.4 Instrukcja warunkowa if
Sprawdza czy warunek jest prawdziwy, jeśli tak to wykonane zostanie polecenie lub polecenia znaj-
dujace sie po slowie kluczowym then. Instrukcja kończy sie slowem fi.
Skladnia:
if warunek
then
polecenie
fi
Przyklad:
if [ -e ~/.bashrc ]
then
echo "Masz plik.bashrc"
fi
Skladnia:
if warunek
then
polecenie1
else
polecenie2
fi
Przyklad:
8
if [ -e ~/.bashrc ]
then
echo "Masz plik.bashrc"
else
echo "Nie masz plik.bashrc"
fi
8.5 Instrukcja case
Pozwala na dokonanie wyboru spośród kilku wzorców. Najpierw sprawdzana jest wartość zmiennej
po slowie kluczowym case i porównywana ze wszystkimi wariantami po kolei. Oczywiście musi być
taka sama jak wzorzec do którego chcemy sie odwolać. Jesli dopasowanie zakończy sie sukcesem
wykonane zostanie polecenie lub polecenia przypisane do danego wzorca. W przeciwnym wypadku
użyte zostanie polecenie domyślne oznaczone symbolem gwiazdki: *) polecenie domyślne. Co jest
dobrym zabezpieczeniem na wypadek bledów popelnionych przez użytkownika naszego skrytpu.//
Skladnia://
case zmienna in
"wzorzec1") polecenie1 ;;
"wzorzec2") polecenie2 ;;
"wzorzec3") polecenie3 ;;
*) polecenie_domyulne
esac
Przyklad://
echo "Podaj cyfre dnia tygodnia"
read d
case "$d" in
"1") echo "Poniedzia_ek" ;;
"2") echo "Wtorek" ;;
"3") echo "Sroda" ;;
"4") echo "Czwartek" ;;
"5") echo "Piatek" ;;
"6") echo "Sobota" ;;
"7") echo "Niedziela" ;;
*) echo "Nic nie wybra_es"
esa
8.6 Petla for
Wykonuje polecenia zawarte wewnatrz petli, na każdym skladniku listy (iteracja).
Skladnia:
9
for zmienna in lista
do
polecenie
done
Przyklad:
for x in jeden dwa trzy
do
echo "To jest $x"
done
8.7 Petla select
Wygeneruje z listy slów po in proste ponumerowane menu, każdej pozycji odpowiada kolejna liczba od
1 wzwyż. Poniżej menu znajduje sie znak zachety PS3 gdzie wpisujemy cyfre odpowiadajaca wybranej
przez nas pozycji w menu. Jeśli nic nie wpiszemy i wciśniemy ENTER, menu bedzie wyświetlone
ponownie. To co wpisaliśmy zachowywane jest w zmiennej REPLY. Gdy odczytane zostaje EOF
(ang. End Of File) czyli znak końca pliku (CTRL+D) to select kończy prace. Petla dziala dotad
dopóki nie wykonane zostaje polecenie break lub return.
Skladnia:
select zmienna in lista
do
polecenie
done
Od razu nasuwa sie możliwość zastosowania wewnatrz niej instrukcji case:
echo "Co wybierasz?"
select y in X Y Z Quit
do
case $y in
"X") echo "Wybra_es X" ;;
"Y") echo "Wybra_es Y" ;;
"Z") echo "Wybra_es Z" ;;
"Quit") exit ;;
*) echo "Nic nie wybra_es"
esac
break
done
10
8.8 Petla while
Najpierw sprawdza warunek czy jest prawdziwy, jeśli tak to wykonane zostanie polecenie lub lista
poleceń zawartych wewnatrz petli, gdy warunek stanie sie falszywy petla zostanie zakończona.
Skladnia:
while warunek
do
polecenie
done
Przyklad:
x=1;
while [ $x -le 10 ]; do
echo "Napis pojawi_ si^ po raz: $x"
e
x=$[x + 1]
done
8.9 Petla until
Sprawdza czy warunek jest prawdziwy, gdy jest falszywy wykonywane jest polecenie lub lista pole-
ceń zawartych wewnatrz petli, miedzy slowami kluczowymi do a done. Petla until kończy swoje
dzialanie w momencie gdy warunek stanie sie prawdziwy.
Skladnia:
until warunek
do
polecenie
done
Przyklad:
x=1;
until [ $x -ge 10 ]; do
echo "Napis pojawil si^ po raz: $x"
e
x=$[x + 1]
done
11
8.10 Funkcje
Coś w rodzaju podprogramów. Stosuje sie je gdy w naszym skrypcie powtarza sie jakaś grupa poleceń,
po co pisać je kilka razy, skoro można to wszystko umieścić w funkcjach. Do danej funkcji odwolujemy
sie podajac jej nazwe, a wykonane zostanie wszystko co wpisaliśmy miedzy nawiasy { }, skraca to
znacznie dlugość skryptu.
Skladnia:
function nazwa_funkcji
{
olecenie1
polecenie2
polecenie3
}
Przyklad:
function napis
{
echo "To jest napis"
}
Funkcje moga sie znajdować w innym pliku, co uczyni nasz skrypt bardziej przejrzystym i wygodnym,
tworzy sie wlasne pliki naglówkowe, wywoluje sie je tak:
. <"/naszplik z funkcjami
nazwa funkcji
Trzeba pamietać o podaniu kropki + spacja przed nazwa pliku
Przyklad:
function nasza_funkcja
{
echo -e  Wlasnie uzyles funkcji o nazwie "nasza_funkcja".\a
}
Teraz pozostalo jeszcze utworzyć skrypt w którym wywolamy funkcje: nasza funkcja:
echo "Test funkcji."
. funkcja
nasza_funkcja
12
8.11 Interpretacja wyrażeń arytmetycznych.
Kiedy zachodzi potrzeba przeprowadzenia jakichś obliczeń można skorzystać z mechanizmu interpre-
tacji wyrażeń arytmetycznych, obliczenia dokonywane sa na liczbach calkowitych, nie przeprowadzana
jest kontrola przepelnienia (ang. overflow).
Skladnia:
$((wyrazenie)) lub $[wyrazenie]
Przyklad:
echo $((8/2))
wynik=$[4*5/2]
echo "$wynik"
8.12 Polecenie let
Do przeprowadzenia obliczeń można też skorzystać z polecenia let.
Przyklad:
liczba1=5
liczba2=6
let wynik=liczba1*liczba2
echo $wynik
13


Wyszukiwarka

Podobne podstrony:
Powłoka BASH
bash (4)
BASH Programowanie w powloce
Bash Prog Intro HOWTO
Bash Tutorial [EN]
Bash Style Guide an Coding Standard [EN]
bash help shhet shortcuts [EN]
BASH Skrypty
bash org pl śmieszne
bash (3)
bash Wprowadzenie?shwp
Bash History Cheat Sheet [EN]
BASH Bourne Again SHell
2005 11 Discovery Scripts Bash Based Hardware Detection for Pci and Usb
2005 11 Discovery Scripts Bash Based Hardware Detection for Pci and Usb

więcej podobnych podstron