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""