Sunteți pe pagina 1din 8

SUBIECTE

1.a) n directorul gazda. creati o structura de directoare pe 4 nivele, care sa con?ina:


- la nivelul 1, un director;
- la nivelul 2, 2 directoare;
-la nivelul 3, 3 directoare;
- la nivelul 4,4 directaore ;
b) Crea?i 3 fisiere n 3 directoare diferite la niveluri diferite, ale caror linii sunt structurate pe 4
campuri:
-primale 3 camuri sunt siruri de caractere iar ultimul este numeric.
c) Daca directorul curent este cel de nivel 1, concatenati cele 3 fisiere intr-unul din aceste directoare;
d)Sortati crescator dupa camprule 1 si 3 si descrescator dupa campruile 2 si 4 unul dintre fisierele
create
e) creati o legatura simbolica intr-un director de nivel 2, catre un fisier dintr-un director de nivel 4
2.Scrieti un shell-script care :
-testeaza daca numarul de argumente este mia mare decat 1 si in caz contrar transmite un mesaj de
eroare
-testeaza ca argumentele primite in linia de comanda sunt fisiere din care se paote citi;
-se creaza din linia de comanda fisierele cu numele acestor argumente care nu exista ;
-pentru toate fisierele, atat cele create cat si cele existene, sa se afiseze numele fisierului, nr de linii
sau nr de cuvinte din fisier

3. Sciptul care afiseaza numerele de fisiere obisnuite, subdirectoarele, fisiere pire, legaturi simbolice,
dintr-un director dat ca argument

REZOLVARE

1.
a)
mkdir nume
cd .. sau cd nume
b)

cat >fis1.txt <EOF


>Text text text numar
>EOF

c)
cat ./lab21/fis21 ./lab21/lab31/fis31 ./lab21/lab31/lab41/fis41 > concatenare.txt

d)
sort -k1,1 -k3,3 -k2,2r -k4,4rn fis21

e)
ln -s ../../lab41 lab21

2.
COMENZI chmod a+x 777 si ./numescript.sh argument 1 argument 2 etc

#!/bin/bash
if [ "$#" -gt 1 ];
then
for arg in "$@"
do
if test -e $arg
then
echo "$arg exista."
if test -f $arg
then
echo "$arg este un fisier"
if test -r $arg
then
echo "$arg se poate citi"
else
echo "$arg nu se poate citi"
fi
else
echo "$arg nu este un fisier"
fi
else
echo "$arg nu exista si se creeaza."
>$arg
fi
wc -l -w $arg
done
else
echo "Eroare : nr arg nu este mai mare decat 1"
fi

SAU

#!/bin/bash

if [ "$#" -gt 1 ]; then


for var in "$@"
do
if [ -r $var ]; then
echo "Se poate citi din $var."
else
echo "Nu se poate citi din $var, se creeaza fisierul. "
> $var
fi
declare -a result
result=( $(wc $var) )
linii=${result[0]}
cuvinte=${result[1]}
nume=${result[3]}
echo " ---> Nume: $nume, Linii: $linii, Cuvinte: $cuvinte"
done
else echo "Numarul de argumente nu este mai mare ca 1."
fi

3.
#!/bin/bash
echo "Directorul $1 "
echo "Fisiere obisnuite :"
find $1 -type f | wc -l
echo "Subdirectoare : "
find $1 -type d | wc -l
echo "Legaturi simbolice : "
find $1 -type l | wc

1.a) n directorul gazda. crea?i o structura de directoare pe 4 nivele, care sa con?ina:


- la nivelul 1, un director;
- la nivelul 2, 2 directoare;
-la nivelul 3, 3 directoare;
- la nivelul 4,4 directaore ;
b) Creati 3 fisiere n 3 directoare diferite la niveluri diferite, ale caror linii sunt structurate pe 4
campuri:
-primale 3 camuri sunt siruri de caractere iar ultimul este numeric.
c) Daca directorul curent este cel de nivel 1, concatenati cele 3 fisiere intr-unul din aceste directoare;
d)Sortati descrescator dupa camprule 1 si 3 si crescator dupa campruile 2 si 4 unul dintre fisierele
create
e) creati o legatura simbolica in directorul de nivel 1, catre un fisier dintr-un director de nivel 3

2.Scrieti un shell-script care :


- Script shell care verifica daca argumentele date in linia de comanda sunt cai relative la structura de
fisiere de pe disc si pe cele valide le adauga in lista

3. Screti un script care sa omoare toate procesele unui utilizator dat ca argument

REZOLVARE

1
a)
mkdir nume
cd .. sau cd nume

b)
cat >fis1.txt <EOF
>Text text text numar
>EOF

c)
cat ./dir1/fis1.txt ./dir2/fis2.txt ../fis3.txt > concat.txt

d)
sort -k1,1r -k3,3r -k2,2 -k4,4 fis21

e)
ln -s ../../dirCaruiaVreauSaFacLeg numeLegaturaDinDirectorulCurent
2.
#!/bin/bash
declare -a array
for arg in "$@"
do
if [[ $arg = /* ]];
then
if test -f $arg || test -d $arg
then
echo "$arg exista si este valida"
array+=($arg)
else
echo "$arg exista dar nu este valida"
fi
else
echo "$arg nu este o cale relativa"
fi
done
for arg in "${array[@]}"
do
echo "$arg"
done > relative.txt

3.
#!/bin/bash
ps -aux | grep {$1}
pkill -u $1
Exemplu: Creare structura de directoare. In directorul d:\lucru creati un subdirectorul cu numele
vostru; sub nume creati structura din figura 2.

Secventa de comenzi:
\>cd lucru
lucru>md .\nume\a1\b2\c1
lucru>cd nume
nume>cd a1
a1>md b1
a1>cd b2
b2>md c2
b2>cd d:\lucru\nume
nume>md .\a2\b3
nume>md a3
nume>md .\a4\b4\c3
nume>cd .\a2\b4
b4>md c4
b4>md c5
c4>cd ..
a4>md b5
nume>md ..
>tree
Exemplu: Un fisier de comenzi care concateneaza 2 fisiere ( date ca argument), care se afla in 2
directoare (date ca argument), intr-un fisier (dat ca argument) dintr-un director (dat ca argument)

Mai intai stabilim parametrii formali:


%1-I director
%2-I fisier
%3-II director
%4-II fisier
%5-III director, unde se va afla fiserul obtinut prin concatenare
%6-III fisier obtinut prin concatenare
Fisierul de comenzi (salvat cu numele fiscom1.bat)
echo Continutul dir. %1
dir %1
echo Continutul dir. %3
dir %3
echo Continutul dir. %5 inainte de conc.
dir %s
copy %1\%2 + %3\%4 %5\%6
echo Continutul dir. %5 dupa conc.
dir %5
Se salveaza: ..\nume\fiscom1.bat

S-ar putea să vă placă și