ZADANIA
Zad. 1
Zapoznać się z działaniem polecenia wewnętrznego set (bez argumentów), obejrzeć
zbiór zmiennych i ich wartości wyświetlanych przez to polecenie.
Zad. 2Przeczytać opis i zapoznać się z działaniem polecenia zewnętrznego env, porównać
zbiór wyświetlanych zmiennych ze zbiorem wyświetlanym przez polecenie set. Następnie zwrócić uwagę na
zmienne HOME, PATH, USER, SHELL, PWD, PS1, SECONDS (wyświetlić je za pomocą odpowiedniej komendy) i spróbować odgadnąć ich znaczenie
(zaobserwować, czy/kiedy zachodzi zmiana ich wartości).
Zad. 3W podkatalogu public_html utworzyć plik o dowolnej nazwie z rozszerzeniem .php,
prawach dostępu 705 (oktalnie) i następującej zawartości:
<HTML>
<BODY>
<?PHP system("env"); ?>
</BODY>
</HTML>
obejrzeć plik w przeglądarce internetowej, porównać wyświetlony wykaz zmiennych
środowiska serwera HTTP z wyświetlonym w zad.2 wykazem zmiennych środowiska
bash'a.
UWAGA: po wykonaniu zadania należy usunąć utworzony plik, gdyż zwiększa on
zagrożenie systemu serwera.
Zad. 4Utworzyć kilka nowych zmiennych i przypisać im wartości pisząc zmienna=napis .
wyświetlić wartości przy użyciu polecenia echo $zmienna. przypisać nowe wartości
pisząc zmienna=nowy_napis , sprawdzić, że poprzednie wartości zostały nadpisane
przez nowe. przypisać zmiennej pusty łańcuch: zmienna= , usunąć zmienną: unset
zmienna .
Niektóre spośród wszystkich zmiennych danego procesu są oznakowane jako zmienne
środowiska (są to te, które są wyświetlane przez polecenie env). Zmienne środowiska są
dziedziczone przez wszystkie procesy potomne danego procesu (w momencie uruchomienia
procesu potomnego są kopiowane do jego środowiska). Użytkownik bash'a ma możliwość
zaznaczania zmiennych jako należących do środowiska (czyli przeznaczonych do
dziedziczenia), jak również usuwania tego oznakowania.
Zad. 5
Sprawdzić, że polecenie set wyświetla utworzone zmienne, zaś polecenie env - nie
wyświetla. Użyć polecenia export zmienna do umieszczenia jej w środowisku
(wyeksportowania), sprawdzić, że polecenie env będzie ją teraz wyświetlało.
Wypróbować działanie polecenia export -n zmienna (usunięcie ze środowiska).
Uruchomić nową kopię bash'a (polecenie bash), sprawdzić, że odziedziczone zostały
tylko te zmienne, które aktualnie były w środowisku pierwotnego bash'a. Wyłączyć
kopię bash'a (polecenie exit).
Bash posiada dość bogatą kolekcją operacji na łańcuchach stanowiących wartości zmiennych
- obliczanie długości, złączanie (konkatenacja), wycinanie podłańcuchów, sprawdzanie
zgodności z podanym wzorcem i inne (niektóre zostały opisane na górze strony).
Zad. 6Zapoznaj się z możliwościami typów zmiennych, np.
- przypisz dowolną wartość typu napisowego do zmiennych o nazwie napis1 oraz napis2 oraz
do zmiennej o nazwie napisy przypisz konkatenacje wartości zmiennych
tych dwóch zmiennych.
- wyświetl jaka jest długość wartości zmiennej napisy.
- wyświetl wartość zmiennej napisy od 3-go znaku indeksowanego od 0.
- wyświetl wartość zmiennej zmienna od 3-go do 7-go znaku indeksowanego od 0.
- wyświetl wartość zmiennej zmienna od 3-go do 7-go znaku indeksowanego od 0.
- przypisz dowolną wartość typu całkowitego do zmiennych o nazwie
liczba1 i liczba2 oraz ponownie przypisz im dowolne wartości, np. łańcuch znaków.
- stwórz zmienną typu tablicowego o nazwie tablica i przypisz dowolne wartości.
- wyświetl 2-gi element wartość zmiennej tablica indeksowanej od 0.
- wyświetl informacje ile elementów zawiera zmienna tablica.
Jeśli wartości zmiennych są poprawnymi zapisami liczb całkowitych (w sensie reguł
składniowych bash'a), jest możliwe wykonywanie na nich operacji arytmetycznych (z
typowego zbioru udostępnianego przez języki programowania, w zakresie arytmetyki liczb
całkowitych).
Zad. 7 Zadeklarować kilka zmiennych numerycznych (liczbowych) pisząc:
declare -i zmienna1 zmienna2 ... zmienna_n
Przyporządkować im wartości całkowitoliczbowe
pisząc zmienna=liczba . Wypróbować możliwość wykonywania obliczeń
arytmetycznych przy użyciu zadeklarowanych zmiennych:
a) zmienna=wyrażenie_arytmetyczne; echo $zmienna
b) echo $((wyrażenie_arytmetyczne))
Przeczytać w opisie bash'a wykaz dostępnych operatorów i reguły konstruowania
wyrażeń arytmetycznych.
Zad. 8Wypróbować wykonywanie działań arytmetycznych na: a) liczbach ósemkowych
(zaczynających się od 0); b) liczbach szesnastkowych (zaczynających się od 0x lub
0X); liczbach przy dowolnej innej podstawie (zaczynających się od podstawa# , na
przykład 2#100 oznacza liczbę binarną 100, czyli dziesiętną 4).
UWAGA: argumenty działań arytmetycznych mogą być liczbami o różnych podstawach, ale
wynik zawsze będzie wyświetlony w postaci dziesiętnej.
Operator o postaci $(polecenie) (starsza forma: `polecenie` - uwaga: użyte są znaki
odwrotnych apostrofów !) powoduje uruchomienie danego polecenia, a po jego zakończeniu
zastąpienie powyższego napisu tym, co dane polecenie wyprowadziło na swoje wyjącie
standardowe (z usuniętymi znakami nowej linii). Może to posłużyć do przypisania zmiennej
wartości wyprowadzonej przez dane polecenie na wyjącie standardowe.
Zad. 9 Wypróbować działanie poleceń:
a) zmienna=$(cat nazwa_pliku); echo $zmienna
b) zmienna=$(ls); echo $zmienna
c) zmienna=$(ls | wc -l); echo $zmienna
Zad. 10Zapoznaj się z możliwością uruchomienia plików binarnych w dowolnym miejscu.
Przykładowo dla pliku
example, który da się uruchomić poleceniem ./example, skonfiguruj odpowiednią zmienną środowiskową, tak by się dało go uruchomić poleceniem example, z dowolnej lokalizacji. Czy po wyłączeniu terminala i ponownym zalogowaniu ciągle będzie to możliwe?
Zad. 11Obejrzeć zawartości plików systemowych /etc/profile i /etc/bashrc oraz
własnych plików startowych .bash_profile i .bashrc . Przeczytać w opisie
bash'a (rozdział INVOCATION), kiedy i w jakiej kolejności są one
wykonywane. Uzupełnić zawartość pliku .bashrc o wyświetlenie własnego
komunikatu powitalnego i ustawienie zmiennej środowiska PATH dla pliku example jak w
poprzednim zadaniu. Zapisać plik, wyłączyć terminal i zalogować się ponownie. Następnie sprawdzić,
że wprowadzone zmiany przynoszą skutek.
UWAGA: nie zepsuć skryptu, nie zmieniać praw dostępu !