Documente Academic
Documente Profesional
Documente Cultură
Probleme Generale
Generalităţi
Principalele comenzi UNIX
Elemente ale limbajului de comandă UNIX
(Shell)
Proceduri Shell
Vedere generală asupra sistemului UNIX
Pentru a grupa mai multe comenzi se pot folosi parantezele "(" şi ")".
$ (ls -l > lista ; grep *.c < lista)&
Tot grupul este executat în
fundal !!!
until comanda
do
secventa de comenzi
done
Următorul script exemplifică folosirea programului test, care poate fi folosit pentru a testa existenţa unui fişier, dacă acesta poate fi citit sau scris,
pentru verificarea egalităţii a două şiruri sau dacă un număr este mai mare, egal sau mai mic decât un alt număr ş.a.m.d. Pentru opţiunile
permise de programul test se poate consulta manualul online. Acest script va adăuga conţinutul fişierului messagefile la sfârşitul fişierului
summaryfile şi goleşte fişierul messagefile.
if test -r messagefile
then
if test -w summaryfile -a -w messagefile
then
cat messagefile >> summaryfile
cp /dev/null messagefile
else
echo Nu se poate scrie in fisierul summary sau message
fi
else
echo Fisierul messagefile nu poate fi citit
fi
case $OPTION in
-p|-P)
print $FILE
;;
-[nN])
nroff $FILE
;;
*)
echo Optiune necunoscuta $OPTION
;;
esac
REPLY=da
while test $REPLY = da
do
echo "Suntem in ciclu !"
echo "Mai doresti sa ne mai invartim in ciclu ?"
read REPLY
done
for file in *
do
echo $file
mv $file $file.old
done
for argument
do
cat $argument
done
Următorul exemplu pe lângă exemplificarea comentariilor, introduce şi o nouă comandă exit care determină terminarea execuţiei scriptului.
Următoarea comandă va afişa o listă de fişiere din directorul curent în ordine inversă.
char buffer[4096];
if (argc != 3) {
printf(“Eroare !\n”);
exit(1);
}
fdold = open(argv[1], O_RDONLY);
if (fdold == -1) {
printf(“Eroare !\n”);
exit(1);
}
fdnew = creat(argv[2], 0666);
if (fdnew == -1) {
printf(“Eroare !\n”);
exit(1);
}
copy(fdold, fdnew);
exit(0);
}
pid = fork();
if (pid == 0)
execl(“copy”, “copy”, argv[1], argv[2]);
wpid = wait(&status);
exit(0);
}