Professional Documents
Culture Documents
Asdasddsda
Asdasddsda
за колоквиум
1
4. Направете скрипта која ги печати имињата на сите извршни датотеки од
тековниот директориум во датотека izvrsni.txt, а на крај го печати и нивниот
број.
br=0
for i in `ls -l`
do
if [ -f $i -a -x $i ]
then
echo $i >> izvrsni.txt
br=`expr $br + 1`
fi
done
echo "Brojot na datotekite e: $br." >> izvrsni.txt
c=0
sum=0
for i in `ls -l *.txt`
do
c=`expr $c + 1`
if [ $c -eq 5 ]
then
sum=`expr $sum + $i`
fi
if [ $c -eq 9 ]
then
c=0
fi
done
echo "Vkupnata golemina e: $sum"
echo
echo "So gotova funkcija goleminata e: `du -bc *.txt | tail -1 | awk
'{ print $1 }'`" # Resenieto na Boki
2
7. Да се направи скрипта во која ќе се бришат интерактивно извршните
датотеки, и на крајот да се прикаже бројот на избришаните и неизбришаните
датотеки.
v=0
for i in `ls`
do
if [ -f $i -a -x $i ]
then
v=`expr $v + 1`
rm -i $i
fi
done
v1=0
for i in `ls`
do
if [ -f $i -a -x $i ]
then
v1=`expr $v1 + 1`
fi
done
echo "Brojot na izbrisani izvrsni datoteki e: `expr $v - $v1`"
echo "Brojot na neizbrisani izvrsni datoteki e: $v1"
i=7
s="poc"
echo "-------------------------------------------"
echo "Datoteki koi zapocnuvaat na $s se slednive"
echo "---------------Detalna Lista---------------"
echo
ls -l $s* | grep ^-.* | sort -k 7
echo
echo "-------------------------------------------"
echo "Znaci ima `ls -l $s* | grep ^-.* | wc -l` takvi datoteki."
echo "-------------------------------------------"
echo "Od koi najnovi $i se:"
ls -l $s* | grep ^-.* | sort -k 7 | tail -$i
12345
****
123
**
1
**
123
****
12345
3
i=5
while [ $i -ge 1 ]
do
j=1
if [ `expr $i % 2` -eq 1 ]
then
while [ $j -le $i ]
do
echo -n "$j"
j=`expr $j + 1`
done
echo " "
else
while [ $j -le $i ]
do
echo -n "*"
j=`expr $j + 1`
done
echo " "
fi
i=`expr $i - 1`
done
#
i=2
while [ $i -le 5 ]
do
j=1
if [ `expr $i % 2` -eq 1 ]
then
while [ $j -le $i ]
do
echo -n "$j"
j=`expr $j + 1`
done
echo " "
else
while [ $j -le $i ]
do
echo -n "*"
j=`expr $j + 1`
done
echo " "
fi
i=`expr $i + 1`
done
echo
echo "Ova e brojot na site korisnici definirani na sistemot `who -a|
wc -l`."
echo
echo "Ova se korisnicite momentalno najaveni na sistemot:"
echo
who
echo "Ova e brojot na momentalno najavenite na sistemot: `who|wc
-l`."
11. Да се направи командна процедура која користејки FOR циклуси печати
стринг Dzvezda, а потоа печати ѕвезди на следниот начин:
4
$ ./dzvezda
Dzvezda
*
**
***
****
*****
*****
****
***
**
*
echo
echo "Dzvezda"
for i in "*" "**" "***" "****" "*****"
do
echo "$i"
done
for i in "*****" "****" "***" "**" "*"
do
echo "$i"
done
echo
echo "Tekovniot direktorium e `pwd`."
if [ -d backup ]
then
echo "Postoi datoteka backup i vo nea ke gi smestam
datotekite!"
else
echo "Kreiram datoteka backup..."
mkdir backup
fi
echo "Kopiram datoteki..."
for i in `ls`
do
if [ -f $i ]
then
cp $i backup/
fi
done
cd backup/
echo "Im dodavam nastavka .backup na datotekite..."
for i in `ls`
do
mv $i "$i.backup"
done
cd ..
13. Напиши програма која ќе формира две датотеки: една (datoteki) со имињата
на сите датотеки во тековниот именик и друга (imenici) со имињата на сите
именици во тековниот именик.
5
echo "Tekovniot direktorium e `pwd`."
for i in `ls`
do
if [ -f $i ]
then
echo $i >> datoteki
fi
done
for j in `ls`
do
if [ -d $j ]
then
echo $j >> imenici
fi
done
15. Напиши скрипта која од секоја датотека со наставка .txt во тековниот именик
ќе ги додаде првите пет реда во датотека која се вика zaglavija.txt.
6
16. Да се направи скрипта која што од логираните корисници ќе ги прикаже
корисниците на кои што корисничкото име НЕ им почнува со i973. во опаѓачки
редослед.
if [ -d Zaednicki ]
then
echo "Postoi takov direktorium i go brisam..."
rm -r Zaednicki
fi
echo "Kreiram direktorium Zaednicki..."
mkdir Zaednicki
echo "Kopiram..."
for i in `ls -l | grep "^-........x " | awk '{ print $9 }'`
do
cp $i Zaednicki/
done
br=0
for i in `ls`
do
if [ -f $i ]
then
br=`expr $br + 1`
fi
done
echo "Ima vo domasniot direktorium $br datoteki."
if [ $br -lt 10 ]
then
echo "Kreiram podirektorium podDeset..."
mkdir podDeset
echo "Kopiram..."
for i in `ls`
do
if [ -f $i ]
then
cp $i podDeset/
fi
done
fi
if [ $br -ge 10 ]
7
then
echo "Kreiram poddirektotium nadDeset..."
mkdir nadDeset
echo "Kopiram..."
for i in `ls`
do
if [ -f $i ]
then
cp $i nadDeset/
fi
done
fi
cd $HOME
if [ -f listing ]
rm listing
fi
touch listing
echo "Vo imenikot $HOME se naogaat:" >> listing
ls -l >> listing
for i in `ls`
do
if [ -d $i ]
then
echo "" >> listing
echo "Vo imenikot $i se naogaat:" >> listing
ls -Rl $i >> listing
fi
done
if [ -f modificirani ]
then
rm modificirani
fi
touch modificirani
mesec=`date | awk '{ print $2 }'`
datum=`date | awk '{ print $3 }'`
for i in `ls`
do
if [ -f $i ]
then
m=`ls -l $i | awk '{ print $6 }'`
d=`ls -l $i | awk '{ print $7 }'`
if [ $mesec = $m -a $datum = $d ]
then
echo $i >> modificirani
fi
fi
done
8
21. Направете, во вид на скрипта, команда за безбедно бришење. Датотеките
дадени како аргументи на скриптата не се отстрануваат, туку се преместуваат во
директориумот ~/gjubre.На крај, скриптата ги отстранува сите датотеки од овој
директориум кои се постари од еден ден.
if [ -d stari ]
then
echo "Postoi imenik stari i go brisam!"
rm -r stari
fi
echo "Kreiram imenik stari!"
mkdir stari
pom=`date | awk '{ print $6 }'`
for i in `ls`
do
if [ -f $i ]
then
k=`ls -l $i | awk '{ print $8 }'`
if [ ! $pom = $k ]
then
cp $i stari/
fi
fi
done
touch logfile
9
for i in `ls`
do
if [ -f $i ]
then
k=`ls -l $i | awk '{ print $5 }'`
if [ $k -ge 100 ]
then
echo $i
echo "Dali sakas da ja brises $i (y/n): "
read odg
if [ $odg = "y" ]
then
echo "datoteka $i izbrisana na data `date`"
>> logfile
rm $i
fi
fi
fi
done
if [ $# -ne 1 ]
then
echo "Vnesi eden argument"
exit 1
fi
if [ ! -f $1 ]
then
echo "Ne postoi takva datoteka"
exit 1
fi
sed "s/#.*//" $1 > $1_
rm $1
cp $1_ $1
rm $1_
for i in $spid
do
br=1
echo "Na proces $i deca se:"
for j in $sppid
do
if [ $i = $j ]
then
g=`ps -AF --no-heading | head -$br | tail -1`
echo "$g"
br=`expr $br + 1`
else
br=`expr $br + 1`
fi
done
done
10
26. Направете скрипта која за секој активен процес прво го печати неговиот ID,
па бројот на неговиот татко, па ве прашува дали да го убие процесот, и во
зависност од одговорот изведува соодветна акција.
for i in $spid
do
echo $i
sppid=`ps -F --no-heading $i | awk '{ print $3 }'`
echo "proces: $i, tatko: $sppid"
echo "dali da go ubieme procesot? (d/n)"
read x
if [ $x = "d" ]
then
kill $pid
fi
done
avtomat
if [ -f izlez.txt ]
then
rm izlez.txt
fi
touch izlez.txt
while true
do
echo "Vnesete argument za skriptata, a kraj za izlez!"
read odg
case $odg in
kraj) exit 0
;;
*) skripta $odg >> izlez.txt
;;
esac
done
skripta
echo $1
28. Направете програма која генерира процес дете кое испечатува матрица 5х5
од ѕвездички, т.е. ислезот треба да биде од облик:
$ process tatko, sega vleguvam vo process dete
11
$ proces dete
*****
*****
*****
*****
*****
$ pak sum vo process tatko
#include<stdio.h>
#include<sys/wait.h>
int main()
{
int i,j,pid;
pid=fork();
if(pid > 0)
{
printf("proces tatko, sekga vleguvam vo dete\n");
wait(NULL);
printf("pak sum vo process tatko\n");
}
else
if(pid == 0)
{
printf("proces dete\n");
for(i=1;i<=5;i=i+1)
{
for(j=1;j<=5;j=j+1)
printf("*");
printf("\n");
}
}
}
# include <stdio.h>
int main()
{
int pid1,pid2;
pid1=fork();
pid2=fork();
12
}
тогаш се креираат датотеките John, Mary, Richard1, Sam, Zoe, Richard2 , така што
во John се наоѓа
John
Doe
1555
Main St.
Baltimore
MD 21228
(410) 222-3333
концепт, не решение
x=-1
for i in john, doe, ny,
do
x=`expr $x + 1`
b=`expr $x % 3`
case $b in
0)
echo "Ime: $zbor"
echo $zbor >> $zbor
;;
1)
echo "Prezime: $zbor"
13
;;
2)
echo "Grad: $zbor"
;;
esac
done
14