Skrypty realizowane na zajęciach z użytkowania systemu operacyjnego UNIX

Autor:Dariusz Wawrzyniak
Wersja:1.0 z dnia 2016.06.14
  1. Uruchamianie edytora (np. vi) z zachowaniem porzedniej wersji edytowanego pliku

    if [ ! $1 ] 
    then
       echo "Use: $0 <filename>"
       exit 2
    fi
    
    test -f $1 && cp $1 $1.tmp
    vi $1
    
    if [ -f $1.tmp ]
    then
       if cmp -s $1 $1.tmp
       then rm $1.tmp
       else mv $1.tmp $1.bak
       fi
    fi
    
    
    
  2. Sprawdzanie dostępności kopii plików podanych na liście argumentów linii poleceń

    for f
    do
       fname=`basename $f`
       if cmp -s $f ~/arch/$fname
       then :
       else test -f $f && echo "Plik $f nie ma kopii w archiwum"
       fi
    done
    
    
  3. Wysyłanie komunikatu do zalogowanych użytkowników, nie wyszczególnionych na liście w pliku (z pominięciem użytkowników na liście

    if [ ! $1 ] 
    then
       echo "Use: $0 <listofusers>"
       exit 2
    fi
    
    for i in `who | cut -f1 -d\  | sort | uniq | comm -23 - $1`
    do
       echo "Hej do: $i"
    done
    
    
  4. Wysyłanie komunikatu do zalogowanych użytkowników, wyszczególnionych na liście w pliku

    if [ ! $1 ] 
    then
       echo "Use: $0 <listofusers>"
       exit 2
    fi
    
    for i in `who | cut -f1 -d\  | sort | uniq | comm -12 - $1`
    do
       echo "Hej do: $i"
    done
    
    
  5. Zliczanie łącznej liczby linii, słów lub znaków odpowiednio dla plików z rozszerzeniem c lub h, txt oraz pozostałych

    nlines=0
    nwords=0
    nchars=0
    
    for i 
    do
       case $i in
       *.txt) 
          tmp=`wc -w < $i`
          nwords=`expr $nwords + $tmp` ;;
       *.c|*.h) 
          tmp=`wc -l < $i`
          nlines=`expr $nlines + $tmp` ;;
       *) tmp=`wc -c < $i`
          nchars=`expr $nchars + $tmp` ;;
       esac
    done
    echo "Number of lines "$nlines
    echo "Number of words "$nwords
    echo "Number of characters "$nchars