Instrukcja_linux6_bash.pdf
(
102 KB
)
Pobierz
564204064 UNPDF
Instrukcja SO – powłoka BASH i skrypty powłoki
Istotne jest zrozumienie działania narzędzia
history
powłoki BASH. Każde polecenie wprowadzone
i wykonane w powłoce jest nazywane zdarzeniem. Historia jest buforem tekstowym zawierającym
wcześniej wprowadzone polecenia. Można je podejrzeć poleceniem:
$
history
Wszystkie zdarzenia zostaną ponumerowane, dostęp do nich jest możliwy poprzez użycie klawiszy
kursor w dół
i
kursor w górę.
Powłoka BASH ma funkcję wyszykiwania i uzupełniania zdarzeń.
Należy wprowadzić tę część zdarzenia, którą pamiętamy, wciskamy klawisz
Esc
, zaraz za nim
klawisz
Tab
, a zdarzenie pasujące do wprowadzonego tekstu zostanie znalezione i wyswietlone.
Jeśli jest ich kilka, system powiadamia sygnałem dźwiękowym i daje możliwość dopisania
kolejnych znaków. Znanymi i już wczesniej podanymi metodami można edytować polecenie.
Istnieją różne sposoby odwołania się do polecenia z listy historii. Przykładowo:
$
!5
Odwołanie do polecenia nr 5 z listy historii.
$
!ls
Odwołanie do pierwszego znalezionego na liście polecenia zaczynajacego się
ls
.
$
!-2
Odwołanie do drugiego od końca listy polecenia.
Uwaga: polecenia są numerowane według kolejności ich wykonywania.
Sposoby edycji zdarzeń historii
Istnieją dwa sposoby edycji:
–
pierwszy wykorzystuje możliwość edytora wiersza poleceń do odwołania sie do zdarzenia i
edycji polecenia za pomocą zestawu poleceń edytora emacs. Zestaw poleceń znajduje się
poniżej:
[Ctrl+p] –
przejście do poprzedniego polecenia listy historii
[Ctrl+n] -
przejście do następnego polecenia listy historii
[Ctrl+<] -
przejście na początek listy historii
[Ctrl+>] -
przejście na początek listy historii
/wzorzec –
przeszukiwanie listy wstecz
?wzorzec –
przeszukiwanie listy wprzód
n –
powtórzenie przeszukiwania
pozostałe polecenia zostały już podane wczesniej
–
drugi wykorzystuje do edycji poleceń edytor (domyslnie
vi
) wskazywany zmienną FCEDIT. W
czasie wykonywania polecenia można wskazać wykorzystywany edytor, przykładowo emacs.
$
fc
5
Wywołanie domyślnego edytora dla edycji 5ego polecenia listy
$
fc
-e emacs 5
Wywołanie edytora emacs dla edycji 5ego polecenia listy
Zmienne powłoki
Zmienna powłoki jest definiowana wtedy, kiedy po raz pierwszy jest użyta. Może się składać z
dowolnych znaków alfabetu, łącznie z podkreśleniem. Może zawierać cyfry, ale nie jako pierwsze
znaki. Nie może zawierać znaków
!, &, space
. Te znaki są rezerwowane do własnego użytku przez
powłokę. Nazwa może być tylko jednym słowem. Wartość jest przypisywana operatorem
przypisania
=
. Wartość zmiennej powłoki może wymagać cytowania.
We.wy skryptu
Polecenie
echo
służy do wyprowadzania danych.
Polecenie
read
służy do pobierania danych z klawiatury. Czyta dosłownie następny wiersz ze
standardowego wejścia aż do znaku nowego wiersza i przypisuje zmiennej.
Przykłąd:
echo
wprowadz powitanie
read
powitanie
echo
"chcesz, zeby cię witac slowem $powitanie
Podwójne cudzysłowy proste zapobiegają rozwijaniu wartości zmiennej.
Przykład:
echo
wprowadz wzorzec plikow
read
wzorzec
echo
Poszukiwane pliki to: $wzorzec
W tym przykładzie zmienna zostanie rozwinięta.
Podwójne przekierowanie odwrotne
<<
umieszcza dane w poleceniu.
Przykład:
mail grzesiek << koniec_listu
tekst listu
tekst listu
tekst listu
tekst listu
koniec_listu
Operacje arytmetyczne powłoki: let
Polecenie
let
powłoki służy do wykonywania działań arytmetycznych. Składnia polecenia
let
:
$
let
wartość1 operator wartość2
Przykład
$let 2*7
$let "2 * 7"
Przypisanie wyniku let do zmiennej
$let "wynik = 2 * 7"
Możliwe jest w poleceniu
let
używanie dowolnych operatorów porównania do wykonania
porównań między wartościami liczbowymi - używane do zarządzania strukturami
sterującymi.Uwaga: polecenie let automatycznie rozwija zmienne używane w wyrażeniach.
Przykład: (nazwa skryptu znowu)
znowu=1
while let "znowu<=5"
do
done
Wprowadzenie zmiennych skryptu
przykład 1
znowu=1
while let "znowu<=$1"
do
echo $znowu Witamy
let "znowu=znowu+1"
done
wywołanie
znowu liczba_powtórzeń
przykład 2
znowu=1
while let "znowu<=$1"
do
echo $znowu $2
let "znowu=znowu+1"
done
wywołanie
znowu liczba_powtórzeń tekst_powitania
Polecenie
test
Wyrażenie porównania jest w powłoce Linuxa testem logicznym. Składnia polecenia:
test wartość1 -opcja wartość2
echo $znowu Witamy
let "znowu=znowu+1"
Operatory całkowite polecenia test
int1 -eq int2 true, jeśli są równe
int1 -qe int2 true, jeśli int1 większy lub równy int2
int1 -qt int2 true, jeśli int1 większe od int2
int1 -le int2 true, jeśli int1 mniejszy lub równy int2
int1 -lt int2 true, jeśli int1 mniejszy int2
int1 -ne int2 true, jeśli int1 nie równy int2
Operatory tekstowe polecenia test
tekst1 = tekst2 true, jeśli tekst1 jest identyczny z tekst2
tekst1 != tekst2 true, jeśli tekst1 nie jest identyczny z tekst2
tekst true, jeśli wartość zmiennej tekst jest zdefiniowana
-n tekst true, jeśli tekst ma długość większą od zera
-z tekst true, jeśli tekst ma długość równą zero
Operatory plikowe polecenia test
-d nazwa_pliku true, jeśli nazwa pliku odnosi się do katalogu
-f nazwa_pliku true, jeśli nazwa pliku jest zwykłym plikiem
-r nazwa_pliku true, jeśli plik nazwa pliku może być czytany przez proces
-s nazwa_pliku true, jeśli plik nazwa pliku ma długość większą od zero
-w nazwa_pliku true, jeśli plik nazwa pliku może być zapisywany przez proces
-x nazwa_pliku true, jeśli plik nazwa pliku jest wykonywalny
operatory logiczne polecenia test
!wyrażenie true, jeśli wyrażenie nie jest prawdziwe
wyr1 -a wyr2 true, jeśli oba wyrażenia są prawdziwe
wyr1 -o wyr2 true, jeśli któreś z wyrażeń jest prawdziwe
Wyrażenie warunkowe if
Składnia polecenia if
if polecenie
then
polecenie1
else
fi
przykład
echo wprowadz s w celu wyprowadzenia rozmiarow plikow
echo w przeciwnym wypadku wyprowadzone beda wszystkie informacje o plikach
echo -n "prosze o wprowadzenie opcji"
read wybor
if
test $wybor = s
then
ls --size
else
ls -l
fi
echo jak sobie chcesz
Struktura elif pozwala na zagłebianie operacji if. (skrót od else if)
Jeśli pierwszy test if zakończy się błędem, sterowanie jest przekazywane do następnej struktury elif
i wykonywany jest test związany z nią, działąnie jest powtarzane do momentu, kiedy zostanie
wuykonany prawdziwy test. Wykonywane sąpolecenia następujące za prawdziwym testem in
sterowanie jest przekazywane poza strukturę if (poza słowo fi).
Przykład:
Sprawdzenie, czy w bieżącuym katalogu znajduje się plik o nazwie .profile
if
polecenie2
test -f .profile
then
echo "plik .profile znaleziony w bieżącym katalogu"
else
echo "nie znaleziony plik .profile"
fi
Struktura wielokrotnego wyboru case:
case napis in
wzorzec_1)
polecenia
;;
wzorzec_2)
polecenia
;;
wzorzec_n)
polecenia
;;
polecenia
;;
esac
Przykłady:
przykład 1
echo listowanie rozmiarów wpisz s
echo listowanie wszystkich informacji wpisz l
echo listowanie plików wpisz c
echo -n "wprowadz opcje:"
read wybor
case $wybor in
s)
ls --size
;;
l)
ls -l
;;
c)
ls *.c
;;
*)
echo bledna opcja
esac
Przykład 2
Skrypt sprawdza, czy pierwszym argumentem przekazanym w wierszu poleceń jest -i lub -e. W
pierwszym przypadku zlicza ilość wierszy pliku o nazwie podanej jako drugi parametr,
zaczynających się na literę i. Jeśli pierwszym argumentem jest -e, program zlicza wiersze pliku
podanego jako drugi argument, które zaczynają się na literę e. W innym przypadku wyświetlany jest
komunikat o blędzie.
case $1 in
-i)
licz=`grep ^i $2 | wc -l`
echo "ilość wierszy zaczynających się na i w pliku $2 wynosi $licz"
;;
-e)
*)
licz=`grep ^e $2 | wc -l`
echo "ilość wierszy zaczynających się na e w pliku $2 wynosi $licz"
;;
*)
echo "nie rozpoznana opcja"
;;
esac
Pętla for - in
składnia
for zmienna in lista_wartosci
do
polecenia
done
forma polecenia for - in bez listy wartości
składnia:
for zmienna
do
polecenia
done
Pętla jest wykonywana dla każdego wyrazu zawartego w zmiennej zmienna
Przykład:
Skrypt pobiera dowolną liczbę parametrów - nazw plików tekstowych, zamienia małe litery na
wielkie, wynik zapisuje w pliku o nazwie oryginału, ale z rozszerzeniem caps
for plik
do
tr a-z A-Z < $plik >$plik.caps
done
Przykład:
Skrypt tworzy kopię zapasową plików źródłowych i umieszcza je w katalogu zrodlakop
for kopplik in *.c
do
cp $kopplik zrodlakop/$kopplik
echo $kopplik
done
Inna wersja skryptu
Struktura for bez określonej listy wartości bierze jako listę wartości argumenty wiersza poleceń.
Argumenty podane w wierszu poleceń w czasie wywoływania skryptu stają się listą wartości, do
których odwołuje się for. Kolejność od pierwszego podanego argumentu.
Struktura for bez zadanej listy jest równoważna liście $@. $@ jest specjalną zmienną argumentową,
której wartością jest lista argumentów wiersza poleceń.
Przykład:
for kopplik
do
cp $kopplik zrodlakop/$kopplik
echo "$kopplik"
done
Plik z chomika:
bartek8809
Inne pliki z tego folderu:
abclin-15_18.pdf
(1196 KB)
100ubu-3.pdf
(656 KB)
Instrukcja_podstawowa.pdf
(348 KB)
debian-linux-pl_printview-php_lgw4zc5z.pdf
(257 KB)
dane linuksa2.doc
(102 KB)
Inne foldery tego chomika:
Linux
Zgłoś jeśli
naruszono regulamin