SOPKY


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



Wyszukiwarka