Środowisko¶
Najważniejsze skróty klawiaturowe (powtórka)¶
<←> i <→> kursor w przód/w tył
<↑> i <↓> poprzednia/następna komenda w historii komend
<tab> uzupełnianie nazwy plików, nazwy komendy
<tab><tab> w wypadku wielu możliwych dopasowań przy uzupełnianiu wyświetl listę możliwości
<ctrl> + c
zabija aktywny proces (wysyła sygnał SIGQUIT)
<ctrl> + d
znak końca pliku/strumienia (EOF)
<ctrl> + a lub home, kursor na początek lini
<ctrl> + e lub end kursor na koniec lini
<ctrl> + k usuń wszystko po kursorze
<ctrl> + i
wyczyść ekran – równoznaczne z komendą clear
<ctrl> + <shift> + <insert> kopiuj zaznaczenie
<shift> + <insert> wklej
Przyjazne komendy¶
exprEwaluacja wyrazeń. (expression)
Dostepne operacje:
operacje arytmetyczne:
*+-/%porównania:
>>=!==<<=- operacje boolowskie (Boolean):
|& (wartości:
0lubnull– 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_zmiennejDostę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
set- 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"
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.
Grupowanie¶
(CMD1; CMD2) && (CMD3; CMD4)
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]