Systemy operacyjne - Programowanie w powłoce linux

1. Skrypt to uruchamialny plik tekstowy, które mają ustawione odpowiednie prawo dostępu - prawo wykonywania. Skrypty używają komend systemowych. Skrypt powłoki Linuksa jest interpretowany przez powłokę Linuksa (Bash Shell / C Shell).

2. Tworzenie skryptów w Linuxie:



#!/bin/bash   -> linijka, w której podajemy w jakiej konkretnie powłoce skrypt powinien w dalszej części się uruchamiać
#moj program -> komentarz linijkowy 

Zmienne:
1. specjalne -> najbardziej prywatne zmienne powłoki, są udostępniane użytkownikowi tylko do odczytu

np.
$0 - nazwa bieżącego skryptu lub powłoki
$1..$9 - Parametry przekazywane do skryptu 
$$ – PID (Proces ID) bieżącej powłoki. Dla skryptu jest to PID procesu, w którym został uruchomiony skrypt
$? – Kod, z jakim zakończyła się ostatnia operacja
$! – identyfikator ostatnio uruchomionego procesu w tle

2. środowiskowe - napis, liczba całkowita lub ścieżka dostępu

np.
x=3 - przypisanie liczby do zmiennej
str="napis" - przypisanie napisu do zmiennej
str=`napis` - przypisanie napisu do zmiennej przy użyciu apostrofów

Operacje arytmetyczne:
  • + (dodawanie)
  • - (odejmowanie)
  • * (mnożenie)
  • / (dzielenie)
  • % (reszta z dzielenia)
Operacje arytmetyczne mogą być użyte z komendami: let oraz expr lub z wyrażeniem $[] 

np.

#!/bin/bash
y=7
let ”x=y-1”
echo $x
x=`expr $y - 1` #tutaj dajemy spacje!!!
echo $x
x=$[y–1]
echo $x

Deklarowanie tablic w Bashu:

table=(wartosc1 wartosc2)

lub:

table[0] = "wartosc1"
table[1] = "wartosc2"
table[2] = "wartosc3"

Usuwanie elementu z tablicy:

unset table[1]

Usuwanie tablicy:

unset table[*]

Konstrukcja instrukcji warunkowej:

#!/ bin/ bash 
if [ $1 - eq 2 ] 
then 
    echo " Dwa " 
else 
    echo " Nie dwa " 
fi

Konstrukcja pętli for:

#!/bin/bash 
for i in $(seq 1 2 20) 
do 
    echo "Welcome $i times" 
done

lub (dla Basha od wersji 3.0):

#!/bin/bash 
for i in {1..5} 
do 
    echo "Welcome $i times" 
done

lub (dla Basha od wersji 4.0):

#!/bin/bash 
for (( c=1; c<=5; c++ )) 
do 
    echo "Welcome $c times..." 
done

Konstrukcja pętli while:

#!/bin/bash 
x=1
while [ $x -le 5 ] 
do 
    echo "Welcome $x times" 
     x=$(( $x + 1 )) 
done

Metody porównania pomiędzy liczbami:
  • -lt (mniejsze niż) np. [$# -lt 2]
  • -gt (większe niż)
  • -le (mniejsze lub równe)
  • -ge (większe lub równe)
  • -eq (równe)
  • -ne (różne)
Metody porównania pomiędzy ciągami znaków:
  • == (równe) np. [ ”$a” == ”q” ]
  • != (różne)
  • -n (puste)
  • -z (niepuste)
Informacje o pliku [ -option sciezka/plik1.txt ] :
  • -a (czy plik istnieje)
  • -b (czy plik istnieje i jest specjalnym plikiem blokowym)
  • -c (czy plik istnieje i jest specjalnym plikiem znakowym)
  • -L (czy plik istnieje i jest to dowiązanie symboliczne)
  • -d (czy katalog istnieje)
Sprawdzanie relacji pomiędzy plikami [ sciezka/plik1.txt -option sciezka/plik2.txt ] :
  • -nt, -ot (czy plik1 jest nowszy niż plik2)