Środowisko¶
Przyjazne komendy¶
- expr
- Ewaluacja wyrazeń. (expression) - Dostepne operacje: - operacje arytmetyczne: - *- +- -- /- %
- porównania: - >- >=- !=- =- <- <=
- operacje boolowskie (Boolean): |&
- (wartości: - 0lub- null– fałsz, wszystko inne – prawda)
 
- operacje boolowskie (Boolean): 
- operacje na stringach: match substr index length 
 - expr 2 + 2
- zwróci: 4
- expr 0 | 1
- błąd, dlaczego?
- expr 0 > 1
- co się stanie?
 
Zmienne i zmienne środowiskowe¶
- nazwa_zmiennej=wartość
- Przypisanie wartości zmiennej. Zmiennych nie trzeba deklarować. - a=5
- przypisuje napis 5do zmienneja
- a = 5
- wywołuje komendę o nazwie az dwoma argumentami:=i5... czyli nie to co chcemy!
- b=cośtam
- przypisuje wartość cośtamdo zmiennejb
- c="coś innego"
- przypisuje wartość coś innegodo zmiennejb
 
- $nazwa_zmiennej
- Dostęp do zmiennej. - Jeśli zostanie wcześniej wykonane - a=5to co zostanie wypisane przez komendy:- echo a echo $a echo "$a" echo '$a' echo $zmienna_ktorej_nic_nie_przypisalem 
- env
- Wypisuje wartości wszystkich zmiennych.
Przydatne zmienne środowiskowe. Sprawdź ich zawartość.
$PATH
$EDITOR
$PS1
$PWD
$USER
$LANG
- export nazwa_zmiennej=wartość
- Przypisanie wartości zmiennej do użytku w podprocesach. - export a=5
- przypisuje wartość 5do zmiennejatak, że zmienna jest dostępna dla podprocesów.
 - Przykład: - x=5 export y=5 bash # uruchomienie powłoki - podproces echo "$x" "$y" 
Manipulacja zmiennymi¶
Długość napisu:
x="ala ma kota" echo ${#x} # wynik: 11
Ekstrakcja podciągu:
x="ala ma kota" echo ${x:0:3} # wynik: ala echo ${x:4:2} # wynik: ma echo ${x:7} # wynik: kota
Usuwanie podciągu z początku/końca napisu:
x="xxxXXXxxx" echo ${x#x*x} # wynik: xXXXxxx echo ${x##x*x} # wynik pusty (przypasowanie do całości) echo ${x%x*x} # wynik: xxxXXXx echo ${x%%x*x} # wynik pusty (j/w)Definicja podciągu za pomocą rozszerzeń bash-a:
*,?,[[:lower:]], etc.
Zamiana podciągu:
Command substitution¶
Przypisanie wyniku wykonania polecenia lub poleceń do aktualnie wykonywanego polecenia.
- echo "2 + 2 =" expr 2 + 2"
- wypisze na ekran 2 + 2 = expr 2 + 2
- echo "2 + 2 =" `expr 2 + 2`"
- wykona komendę expr 2 + 2
- i wklei to co ta komenda wypisze na ekran (4)
- jako argumenty do komendy echo
- i wykona tą komendę (echo "2 + 2 =" 4)
 
- wykona komendę 
- result=`expr 2 + $a`
- zapisze wynik wykonania komendy do zmiennej result
Aliasy¶
- alias NAME=CMD
- nadaj komendzie CMDaliastNAME
Stan polecenia i łączenie komend¶
Lista poleceń¶
CMD1 ; CMD2Wykonaj polecenie
CMD1a następnie polecenieCMD2
Stan wyjścia ostatnio wykonanego polecenia znajduje się pod zmienną $?.
Jeśli 0, zakonczony poprawnie. W przeciwnym wypadku program zakończył się
niepoprawnie.
Można ten fakt wykorzystać do łączenia komend.
Koniunkcja¶
CMD1 && CMD2Wykonaj
CMD1. JesliCMD1zostanie wykonane poprawnie, to wykonaj teżCMD2.
Alternatywa¶
CMD1 || CMD2Wykonaj
CMD1. JesliCMD1nie zostanie wykonane poprawnie, to wykonajCMD2.
Zadania¶
- Sprawdź czy program cowsay jest zainstalowany, jeśli nie to włącz przeglądarke internetową na adresie programu. [which]
- Sprawdź czy ktoś będzie reagował lepiej na określenie “developer” czy “hacker”: sprawdź czy ma w katalogu domowym więcej plików z z rozszerzeniem java czy py i wypisz na ekranie “developer” lub “hacker” (przykładowy katalog domowy: home.tar.gz– należy najpierw rozpakować). [find wc]
- Zmierz rzeczywisty czas wykonywania skryptu liar.shw sekundach. Czas podawany przez program jest błędny. Podaj wartość błędu. [date expr]
- Ustaw zmienną środowiskową $OPEN_COUNT, która będzie inkrementowana za każdym razem kiedy użytkownik otworzy interpreter bash. [.bashrc]
- Utwórz alias o nazwie print dla komendy echo.
- Spraw, żeby przy każdym uruchomieniu bash wyświetlał krótkie powitanie i informację o tym która jest godzina. (np. Hi Bob. It's 17:59.) [ps wc echo ewentualnie: /etc/passwd]
- Napisz polecenie wywołujące skrypt infloop.shw tle jako singleton: jeśli skrypt już się wykonuje, to wyswietl jego PID, w przeciwnym wypadku uruchom skrypt. [ps grep]
- Napisz polecenie które ustawia vim jako domyślny edytor w pliku .bashrc (ustaw odpowiednią zmienną na końcu pliku). Jeśli w pliku .bashrc jest już ustawiony domyślny edytor, to nie rób nic. Pamiętaj, że zmienna może być ustawiona ze słowem kluczowym export. Przed przystąpieniem do pracy zrób kopię zapasową pliku .bashrc. [expr wc echo]
- Napisz polecenie podjące numery linii pliku z kodem źródłowym ktore zawierają zakazane słowa. Lista zakazanych słów znajduje się w pliku bad_words.list. Przykładowy plik z kodem:Learner.java. [grep cat cut]
- Zmień string zachęty (prompt) interpretera bash w taki sposób żeby przypominał string zachęty z MS DOS (np. C:\\HOME\\INF77777>). [$PS1 tr]