Następna strona Poprzednia strona Spis treści

6. Troszkę programowania.

6.1 Pisanie skryptów: takie .BAT-y tylko lepsze.

Jeśli używałeś plików .BAT, aby ułatwić sobie życie (Ja używałem i to dużo), to to samo można zrobić w Linux-ie używając aliasów - zobacz przykład wyżej. Ale jeśli twoje pliki .BAT były bardziej skomplikowane, to polubisz programowanie w powłoce - jest tak samo wydajne jak QBasic, jeśli nie bardziej. (nawet jeśli nie używałeś bardziej skomplikowanych plików .BAT, to i tak będziesz z czasem programował w powłoce. Chociażby dlatego, że wszelkie wersje instalacyjne programów pod Linux-a są napisane w skryptach.) Powłoka ma takie elementy jak: zmienne, instrukcje while, case, for, if...then...else i wiele innych, co może być alternatywą nawet dla dobrego języka programowania.

Aby napisać skrypt, wszystko co musisz zrobić, to napisać zwykły plik tekstowy zwierający polecenia, zapisać go i uczynić wykonywalnym. To ostatnie możesz zrobić poleceniem: chmod u+x <nazwa> Aby go wykonać wpisz jego nazwę - pamiętaj, że Linux nie widzi plików w katalogu bieżącym więc dodaj ./ na początku nazwy, albo dodaj katalog bieżący '.' do zmiennej PATH.

Słowo ostrzeżenia: Standardowy edytor systemowy 'vi' nie jest najszczęśliwszym edytorem - szczególnie jeśli ktoś jest przyzwyczajony do takich edytorów jak ne.exe czy te spod środowiska Pascal/C++. Jak już to radziłem wcześniej lepiej używać joe, który jest dostępny w każdej standardowej dystrybucji. Na wszelki wypadek powiem, że:
- aby coś wpisać w 'vi' trzeba najpierw nacisnąć 'i'
- aby wyjść bez zachowania zmian: 'ESC:q!'
- aby wyjść z zachowaniem zmian: 'ESC:x'

Pisanie skryptów pod Unix-ami, to tak obszerny temat, że można by napisać książkę na ten temat (w istocie są książki na ten temat :) ), więc nie będę się tutaj dalej zagłębiaj, tylko podam przykład, który mam nadzieję przyda się i z którego możesz wyciągnąć kilka podstawowych zasad.


   #!/bin/sh
   # Jestem sobie komentarzem
   # nie zmieniaj pierwszej linii !!! - musi tam być
   echo "To jest system: `uname -a`" # użyj wyjścia polecenia uname
   echo "Nazywam się $0" # zmienne wbudowane
   echo "Podałeś mi następujące $# parametry: "$*
   echo "Pierwszy parametr to: "$1
   echo -n "Jak się nazywasz? " ; read imie
   echo spójrz na róznicę: "Cześć $imie" # cytowanie z "
   echo spójrz na różnicę: 'Cześć $imie' # cytowanie z '
   DIRS=0 ; FILES=0
   for file in `ls .` ; do
     if [ -d ${file} ] ; then # jeśli plik jest katalogiem
       DIRS=`expr $DIRS + 1`  # DIRS = DIRS + 1
     elif [ -f ${file} ] ; then
       FILES=`expr $FILES + 1`
     fi
     case ${file} in
       *.gif|*jpg) echo "${file}: plik graficzny" ;;
       *.txt|*.tex) echo "${file}: plik tekstowy" ;;
       *.c|*.f|*.for) echo "${file}: plik żródłowy" ;;
       *) echo "${file}: inny plik" ;;
     esac
   done
   echo "Jest ${DIRS} katalogów i ${FILES} plików"
   ls | grep "ZxY--!!!WKW"
   if [ $? != 0 ] ; then # kod wyjścia ostatniego polecenia
     echo "ZxY--!!!WKW nie znaleziono"
   fi
   echo "wystarczy... jeśli chcesz wiedzieć więcej, to poczytaj"
   echo "podręcznik systemowy""


Następna strona Poprzednia strona Spis treści