- TAB
- Automatyczne uzupełnianie
- ↑↓
- Poprzednie/następne polecenie
- CTRL+r
- Szukaj w historii komend
- CTRL+c
- SIGKILL
- CTRL+z
- SIGSTOP
- CTRL+d
- EOF
- expr
Ewaluacja wyrazeń. (expression)
Dostepne operacje:
operacje arytmetyczne: * + - / %
porównania: > >= != = < <=
- operacje boolowskie (Boolean): | &
(wartości: 0 lub null - fałsz, wszystko inne - prawda)
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?
- nazwa_zmiennej=wartość
Przypisanie wartości zmiennej. Zmiennych nie trzeba deklarować.
- a=5
- przypisuje wartość 5 do zmiennej a
- a = 5
- wywołuje komendę o nazwie a z dwoma argumentami: = i 5... czyli nie to co chcemy!
- b=cośtam
- przypisuje wartość cośtam do zmiennej b
- c="coś innego"
- przypisuje wartość coś innego do zmiennej b
- $nazwa_zmiennej
Dostęp do zmiennej.
- echo a
- wypisze a
- echo $a
- wypisze 5 (według tego co jest wyżej)
- echo "$a"
- wypisze 5 (według tego co jest wyżej)
- echo '$a'
- wypisze $a
echo $zmienna_ktorej_nic_nie_przypisalem
- set
- Wypisuje wartości wszystkich zmiennych.
Przydatne zmienne środowiskowe:
- $PATH
- $EDITOR
- $PS1
- $PWD
- $USER
- $LANG
- export nazwa_zmiennej=wartość
Przypisanie wartości zmiennej do użytku w podprocesach.
- export a=5
- przypisuje wartość 5 do zmiennej a
Przykład:
x=5
export y=5
bash # uruchomienie powłoki - podproces
echo "$x" "$y"
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)
- result=`expr 2 + $a`
- zapisze wynik komendy do zmiennej result
- alias NAME=CMD
- nadaj komendzie CMD aliast NAME
Lista poleceń
CMD1 ; CMD2
Wykonaj CMD1 a następnie CMD2
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 && CMD2
Wykonaj CMD1. Jesli CMD1 zostanie wykonane poprawnie, to wykonaj też CMD2.
Alternatywa
CMD1 || CMD2
Wykonaj CMD1. Jesli CMD1 nie zostanie wykonane poprawnie, to wykonaj CMD2.
Grupowanie
(CMD1; CMD2) && (CMD3; CMD4)
- 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: http://www.cs.put.poznan.pl/ksiek/_downloads/home.tar1.gz -- należy najpierw rozpakować). [find wc]
- Zmierz rzeczywisty czas wykonywania skryptu liar.sh w sekundach (http://www.cs.put.poznan.pl/ksiek/_downloads/liar1.sh). [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łujce skrypt infloop (http://www.cs.put.poznan.pl/ksiek/_downloads/infloop1.sh) w 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 (http://www.cs.put.poznan.pl/ksiek/_downloads/bad_words1.list). Przykładowy plik z kodem: http://www.cs.put.poznan.pl/ksiek/_downloads/Learner1.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\UŻYTKOWNIK>). [$PS1 tr]