MATERIAŁY DO PRZEDMIOTU SOP - LEKCJA 3





Część 1: Sterowanie procesami

ps - wyświetla listę procesów
-e - wszystkie
-u user - tylko procesy tego usera
-F - więcej informacji

jobs - wyświetla listę procesow potomnych basha tzw "job". można się do nich odwoływać za pomocą %numer
-l - wyświetla pid'y

bg - wysyła "job" do tła (tak jakbyśmy odpalali z &)

fg - ustawia "job" na pierwszoplanowy

top - monitor procesów

1. stworz plik tekstowy o nazwie skr1 treści:

sleep 10
echo halo

2. nadaj mu prawa wykonywania
3. wykonaj ./skr1
4. wykonaj ./skr1&
5. wykonaj kilka razy ./skr1&
6. wyświetl listę poleceniem jobs

Przetestować użycie CTRL+Z na procesach, przetestować zmienną $?



Część 2: Skrypty i instrukcje strukturalne

argumenty skryptów

stworzyć skrypt testujący poniższe zmienne:
$@
$#
$0
$1
shift (numer)


instrukcje

read wczytuje ciąg z stdin na zmienną



if:
  • składnia (if ... ; then ... elif ... then ... else ... fi),
  • test ( [ ... ] ), -f file, -d file, =, !=, -a, -o, -eq , -ne, -lt, -le, -gt, -ge,

na przykład:

if test $# -ne 2 ; then 
  echo nie ma dwoch argumentow
else
  if [ $1 -lt $2 ] ; then
    echo -1
  elif [ $1 == $2 ] ; then
    echo 0
  else
    echo 1
  fi
fi

for:

  • składnia (for ... [in ...] ; do ... done) - (po elementach listy)
  • pętla po elementach listy, a nie po liczbach,

na przykład:

for zmienna in raz dwa trzy cztery
do
    echo $zmienna ma `echo $zmienna| wc -c` liter
done
ewentualnie notacja jak w C
for ((i=1; i <= 5 ; i++))
do
    echo -n "$i..."
done

echo



Ćwiczenia:
1. Napisz skrypt, który wyświetli ilość podanych argumentów.
2. Napisz skrypt, który wyświetli trzy pierwsze argumenty, każdy w oddzielnej linii, a w ostatniej linii wszystkie razem.
3. Napisz skrypt, który sprawdzi czy zostały podane dwa argumenty i wypisze stosowne komunikaty o liczbie argumentów
4. Napisz skrypt, który sprawdzi czy dwa pierwsze argumenty są identyczne, jeżeli jest więcej niż 2 argumenty to wypisze komunikat
5. Napisz skrypt, który sprawdzi czy dwa pierwsze argumenty są identyczne albo pierwszy jest równy 0 i wyświetli stosowną informację.
6. Napisz skrypt, który sprawdzi, czy podany argument jest nazwą katalogu i jak tak to wyświetli jego zawartość
7. Napisz skrypt, który sprawdzi, czy podany argument jest nazwą pliku i jak tak to go wyświetli i policzy jego wielkość
8. Napisz skrypt, ktory wypisuje swoje argumenty, kazdy w osobnym wierszu.
9. Napisz skrypt, który sprawdzi dla wszystkich argumentów czy jest nazwą pliku i jak tak to zrobi jego kopie z rozszerzeniem "bak"
10.To samo co w 9, ale w kopii wszystkie wielokrotne znaki spacji mają być usunięte (użyć tr)
11.Napisać skrypt, który dla każdego pliku w bieżącym katalogu, jego podkatalogach, itd., wypisze nazwę i rozmiar pliku.
12.Napisać skrypt, który działa tak jak w zadaniu 11 dodatkowo przyjmuje parametr będący ciągiem znaków, od którego zaczyna się nazwa pliku, który wyświetlamy. Jeżeli nie podano argumentu wyświetli się komunikat.
13.Napisz skrypt, który sprawdzi, czy podany argument jest nazwą katalogu i jak tak to wypisze informację o liczbie liter w nazwach wszystkich plików nie będących katalogami w tym katalogu (nazwa pliku --> liczba liter w nazwie). Jeżeli nie jest wypisze odpowiednią informacje.
14.Napisać skrypt, który wszystkie pliki z sufiksem podanym w parametrze, skopiuje (jezeli takie są) do katalogu BACKUP w biezacym katalogu. Jeżeli katalog BAKUP nie istnieje skrypt powinien go zalozyć. Jeżeli jest juz plik (lub inny nie-katalog) o nazwie BACKUP, skrypt powienien zgłosić błąd.



created by: Tomasz Kaszuba 2007

Valid HTML 4.01 Transitional