Skrypt który wypisze argumenty wywołania znajdujące się na pozycjach o parzystym numerze
i=1
for x in $@; do
if [ $[ $i % 2 ] -eq 0 ]; then
echo $x;
fi
i=$[ $i + 1 ];
done
Skrypt który wypisze zawartość aktualnego katalogu (jeden Arg wywołania) albo zawartość katalogów będących Arg wywołania skryptu, jeżeli liczba plików i podkatalogów danego katalogu jest większa od pierwszego Arg wywołania skryptu($1)
if test $# -eq 1 ; then
ls $1;
elif test $# -eq 0 ; then
echo "ERR: Nie podales zadnych argumentow";
exit 0;
else
i=0;
for k in $@; do
if test $i -ge 1 ; then
if test `ls -lp | wc -l` -ge $[ $1 + 2 ] ; then
ls $k;
fi;
fi;
i=$[ $i + 1 ];
done
fi
Skrypt który w aktualnym katalogu utworzy podkatalog BACKUP ( jeżeli już taki istnieje to usuwa jego zawartość jeżeli istnieje plik o takiej nazwie kończy z kodem Bledu 1) i skopiuje do niego wszystkie pliki zakończone znakiem ~ znajdujące się w aktualnym katalogu
if test -d BACKUP; then
echo "Katalog istnieje";
exit 0;
else
mkdir ./BACKUP;
echo "Utworzono nowy katalog";
fi
for k in *~; do
echo "Kopiujemy" $k;
cp ./$k ./BACKUP;
done
Skrypt który dla każdego pliku znajdującego się w aktualnym katalogu sprawdzi liczbę linii zawierających słowa wzorcowe zdefiniowane przez Arg wywołania
for plik in * ; do
if [ -f $plik ] ; then
for arg in $@ ; do
echo slowo $arg w pliku $plik wystepuje `grep -c $arg $plik ` razy;
done
fi
done
Skrypt który obliczy silnie argumentu $1
silnia () {
if test $1 -ge 1 ; then
wynik=$[ $wynik * $1 ] ;
silnia $[ $1 - 1 ] ;
fi;
}
wynik=1;
silnia $1;
echo $wynik;
Skrypt który zliczy liczbę wszystkich znaków tworzących właściwe Arg wywołania $1, $2, $3
len=0
for k in $@; do
len=$[ $len + `echo $k | wc -c` ];
done
echo $[ $len-$# ];
Skrypt który rekurencyjnie wyznaczy n-ta liczbę fibonacciego gdzie n jest Arg wywołania
fibonacci() {
if test $1 -eq 0 ; then return 0 ; fi
if test $1 -eq 1 ; then zm=$[ $zm + 1]; return 1 ; fi
fibonacci $[ $1 - 1 ];
fibonacci $[ $1 - 2 ];
}
zm=0;
fibonacci $1;
echo $zm;
Skrypt który wyliczy wartość wyr arytmetycznego zdefiniowanego w liście Arg wywołania. Dopuszczalne operacje to dodawanie, odejmowanie, mnożenie itp.
i=0;
wartosc=$1;
while test $i -lt $[ $# - 1 ] ; do
shift;
case $1 in
+) shift; wartosc=$[ $wartosc + $1 ];;
-) shift; wartosc=$[ $wartosc - $1 ];;
/) shift; wartosc=$[ $wartosc / $1 ];;
%) shift; wartosc=$[ $wartosc % $1 ];;
"*") shift; wartosc=$[ $wartosc * $1 ];;
esac
i=$[ $i + 1 ];
done
echo $wartosc;
Skrypt który dla każdego pliku w aktualnym katalogu sprawdzi czy rozmiar tego pliku jest liczba pierwsza(jeśli nie to poda dowolny jego dzielnik ) . przed testem dla dowolnego pliku ma pytać (t,n,q) gdzie t - przeprowadzenie testu, n - brak testu , q - przerwanie działania.
function pierwsza () {
i=2;
while [ $i -lt $1 ]; do
if [ $[ $1 % $i ] -eq 0 ]; then
return $i;
else
i=$[ $i + 1 ];
fi
done
return 0;
}
for plik in *; do
if [ -f $plik ]; then
echo $plik;
read opcja;
case $opcja in
"t")
pierwsza `cat $plik | wc -c`;
echo "Wynik testu" $?;;
"n")
echo "Brak testu";;
esac
fi
done
skrypt który zliczy częstotliwość występowania slow w danym pliku
cat lista.txt | tr -d | tr -s[ :space |tr [ :space\\n | sort|uniq -c | tr -s[ :space|sort -nr
skrypt który zliczy wszystkie rozszerzenia plikow niekrytych znajdujących się w aktualnym katalogu
ls -1p | grep -v / | grep "\." | cut -d"." -f2 | sort | uniq | wc -l
skrypt który wypisze liczbę wszystkich niewidocznych plików i katalogów znajdujących się w aktualnym katalogu
ls -ap | grep -v / | grep ^"\." | wc -l
skrypt który wypisze liczbę wszystkich plikow z rozszerzeniem txt w poddrzewie aktualnego katalogu
find | grep „\.”txt$”| wc -l
skrypt który wypisze pierwsze trzy litery nazw plikow znajdujących się w aktualnym katalogu i nieparzystych numerach miejsc wyznaczonych przez sort leksykograf
ls -ap | grep -v / | sort | cat -n | cut -c6-10 | grep ^[1,3,5,7,9]| cut -c3-6
skrypt który jeżeli aktualny katalog zawiera bezpośrednio co najmniej jeden plik, to wypisze liczbe wszystkich podkatalogow w poddrzewie aktualnego katalogu
if [ 'ls -alp | grep -v / | wc -l' -ge 1 ]; then find -type d | wc -l;
fi
przejście rekurencyjne po drzewie katalogów
wyswietl () {
for i in * ; do
if [ -d $i ] ; then
k=$1
while [ $k -gt 0 ] ; do
echo -n " "
k=`expr $k - 1`
done
echo -n "+ $i"
if [ ! -r $i -o ! -x $i ] ; then
echo " - BEZ PRAWA ZAGLĄDANIA"
else
echo
cd $i
wyswietl `expr $1 + 3`
cd ..
fi
fi
done
for i in * ; do
if [ ! -d $i ] ; then
k=$1
while [ $k -gt 0 ]; do
echo -n " "
k=`expr $k - 1`
done
echo "- $i"
fi
done
}
--------------------------------------------------------------------------------------
mkdir nazwa => nowy katalog
rm -r nazwa => usun katalog
cp -r co gdzie => kopiowanie
mv -r co gdzie => przenoszenie
--------------------------------------------------------------------------------------
grep slowo npliku
-i => nie rozroznia literek
-n => ktory wiersz
-c => ile wierszy z danym wierszem
-p => zaznacza katalogi
--------------------------------------------------------------------------------------
zmienne
env nazwa
env DOM= /home/pjwstk/s3706 bash
--------------------------------------------------------------------------------------
wybieranie z kolumn
cat /etc/passwd
cut -c1-10 /etc/passwd
cut -d: -f1 /etc/passwd z separatorem :
--------------------------------------------------------------------------------------
wc -c zlicza liczbe bajtow(znakow)
-w tylko slowa
-l tylko wiersze
--------------------------------------------------------------------------------------
sortowanie
sort etc/passwd
sort -t: separator
sort -n numerycznie
--------------------------------------------------------------------------------------
uniq sortuje i usuwa powtarzające się wiersze
--------------------------------------------------------------------------------------
head -n5 wycina 5 pierwszych linijek od gory
tail -n5 od dołu
--------------------------------------------------------------------------------------
find -name sort.txt === find sort.txt
find s* wyszukuje te co zaczynaja sie na literke S
find s? jeden dowolny znak
find -type f => plik
d => katalog
---------------------------------------------------------------------------------------
expr 2 + 5
/
\*
"*"
"("
---------------------------------------------------------------------------------------
a -eq b a=b
b -ne b a!=b
a -gt b a>b
a -ge b a>=b
a -lt b a<b
a -le b a<=b
---------------------------------------------------------------------------------------
ls | wc -w (ile plików)
ls -l wszystkie dostępne pliki, foldery
ls -lp tylko katalogi
ls -ap +ukryte