<←> 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
expr
Ewaluacja wyrazeń. (expression)
Dostepne operacje:
operacje arytmetyczne: *
+
-
/
%
porównania: >
>=
!=
=
<
<=
|
&
(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 napis 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.
Jeśli zostanie wcześniej wykonane a=5
to 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ść 5
do zmiennej a
tak, że zmienna jest dostępna dla podprocesów.
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 wykonania komendy do zmiennej result
result=$(expr 2 + $a)
zalecana alternatywna składnia
result=$((3 * 4 + $a))
dodatkowa zalecana składnia do wykonywania operacji arytmetycznych (tylko liczby całkowite; bash nie wspiera operacji na liczbach zmiennoprzecinkowych)
alias NAME=CMD
nadaj komendzie CMD
aliast NAME
CMD1 ; CMD2
Wykonaj polecenie
CMD1
a 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.
CMD1 && CMD2
Wykonaj
CMD1
. JesliCMD1
zostanie wykonane poprawnie, to wykonaj teżCMD2
.
CMD1 || CMD2
Wykonaj
CMD1
. JesliCMD1
nie zostanie wykonane poprawnie, to wykonajCMD2
.
(CMD1; CMD2) && (CMD3; CMD4)
Sprawdź czy program cowsay jest zainstalowany, jeśli tak, 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.sh
w 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.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
. 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]