| 
 Comenzi inglobate
 IntroducereComenzile inglobate sau interne (built-in commands) sunt comenzi ce pot fi apelate din interiorul unui
	shellscript sau de la linia de comanda. Shell-ul are 32 de comenzi inglobate. Fiecare comanda ce este 
	executata returneaza un exit-code. Atunci cand comanda nu se termina pe o singura linie, shell-ul
	prompteaza (al doilea prompter este >) utilizatorul pentru introducerea caracterelor de continuare
	pana cand se incheie comanda.
 
	Exemplu:
		$for i in f1 f2
		>do
		>file $i
		>done
		$ 
	 
 getoptsExista posibilitatea ca un shellscript sa fie apelat cu optiuni. Daca un shellscript denumit test.cmd
	are urmatoarea sintaxa: test.cmd [-a] [-b] [-c], atunci el poate fi apelat in oricare dintre modalitatile urmatoare:
 
		test.cmd -a
		test.cmd -abc
		test.cmd 
		test.cmd -a -b
		test.cmd -a -b -c
		
		...s.a.m.d
	In acest caz vom folosi getopts in interiorul uneia dintre instructiunile for, while sau until.
	getopts returneaza "true" atata timp cat exista optiuni ce trebuie luate in considerare.
	Formatul general este: getopts <optiuni> <variabila>
 
 
		Exemplu. Fie shellscript-ul test.cmd:
		
			# test.cmd
			...
			while getopts abc optiune
			do
			...
			done
		Care este modalitatea de lucru a lui getopts ?	Spre exemplu, daca apelul s-a facut 
	test.cmd -abc, comanda getopts verifica prima data daca exista o liniuta (-)
	in linia de comanda. Verifica apoi daca litera ce urmeaza este una dintre optiunile valide
	daca optiunea este valida, atunci ea este memorata in variabila optiune. In acest moment este
	returnat un exit status zero, deci corpul ciclului while este executat. Optiunile urmatoare sunt tratate
	in mod asemanator. Atunci cand se epuizeaza toate optiunile, getopts returneaza o valoare diferita de zero
	si astfel ciclul while se incheie. In cazul aparitiei unei optiuni invalide, spre exemplu se face apelul test.cmd -abcd, optiunile corecte sunt tratate
	ca mai sus, iar optiunea invalida d este considerata si ea de getopts deoarece face
	parte din grupul precedat de -. In acest caz, getopts ia valoarea ?, apoi returneaza un exit status zero
	si corpul ciclului while este executat. Shellscript-ul va contine cod corespunzator pentru 
	fiecare optiune valida. Un exemplu ar putea fi acela construit cu un case:
 
			while getopts abc optiune
			do
				case "$optiune" in 
					a) ...;;
					b) ...;;
					c) ...;;
					\?) echo "Optiune invalida..."
				esac
			...
			done
	Fie un nou shellscript, cu urmatorul format: test2.cmd [-a] [-b] [-c] infocib
 Optiunile a,b si c sunt tratate ca mai inainte iar getopts intoarce o valoare diferita de zero deoarece argumentul infocib nu este o optiune.
	Ciclul se termina drept rezultat al aparitiei unei valori false (diferita de zero) iar argumentul
	infocib este luat in considerare in continuare, dupa ciclul getopts.
 Fie acum cazul in care o optiune necesita si o valoare ce trebuie specificata. Fie shellscript-ul
	test3.cmd [-a] [-b argument] <nume_fisier>
 Comanda getopts devine: geopts ab: optiune, unde aparitia semnului : inseamna ca aceasta optiune trebuie urmata de cel putin un
caracter whitespace si de un argument. Argumentul va fi memorat intr-o variabila speciala numita OPTARG.
	Daca linia de comanda contine -b fara nici un argument in continuare, in variabila optiune
	 este memorat un ?. O alta variabila speciala, numita OPTIND este incrementata de fiecare data cand getopts
	 returneaza o valoare. Ea are initial valoarea 1. Se poate verifica in acest mod daca a fost introdus argumentul specificat pentru executia corecta a comenzii.
	 Astfel, in apelul 	test3.cmd -a -b nume infocib
 , daca valoarea lui OPTIND este mai mare decat
	 valoarea lui $# atunci numele fisierului <nume_fis> pentru executia corecta a scriptului nu a fost introdus.
 
 hashEste folosita pentru marirea vitezei primirii comenzilor.
 Comanda 	hash [-r] <comenzi>
 "spune" shell-ului sa caute comanda sau comenzile specificate si sa adauge directorul incare sunt localizate la
	"lista hash". Spre exemplu, odata executata comanda hash inter, urmatoarele apeluri catre shellscript-ul
	inter ce vor executa cu viteza mai mare. Daca folosim hash fara nici un argument, se va afisa
	o lista cu comenzi ce sunt deja in lista hash. Optiunea -r se foloseste atunci cand
	dorim stergerea din lista a unei comenzi.
 hash -r sterge toate componentele listei.
 Comanda  hash  fara nici un argument afiseaza toate componentele listei.
 
 type shAfiseaza informatii despre comanda sau comenzile specificate, avand sintaxa:
 type <comenzi>
 Poate fi folosita impreuna cu:
	 comenzi interne
	 comenzi Unix
	 shellscript-uri
	 functii
 
 newgrpModifica pentru un utilizator Unix identificatorul de grup (group_id). Are sintaxa:
 newgrp [<nume_grup>]
 Presupunand ca grupul utilizatorului este cibernetica si trebuie schimbat in comert,
	comanda este:
 
		newgrp comert
	Pentru motive legate de securitatea sistemjului, modificarea este permisa doar daca utilizatorul apare in lista membrilor grupului comert
	din fisierul /etc/group. Cu ajutorul acestei modificari, utilizatorul poate accesa programe disponibile grupului comert. 
 ulimitDimensiunea fisierului pe care un proces copil il poate scrie este limitata de un anumit numar de
	blocuri folosind comanda ulimit. Sintaxa acesteia este:
 ulimit [<dimens_fisier>]
 Pentru a afla setarea curenta, introducem pur si simplu comanda fara nici un argument. Utilizatorul obisnuit poate micsora
	dimensiunea; doar root poate creste aceasta dimensiune.
 
 umask Determina drepturile de acces implicite (default mask). Acestea sunt create folosind valori octale.
	 Pentru un fisier obisnuit, drepturile de acces deplin sunt:
 -rw-rw-rw-
 cu valoarea octala a reprezentarii 666. Dreptul de acces pentru un anumit fisier se obtine scazand
	 din 666 valoarea lui umask. In general, valoarea lui umask este setata de root la valoarea 
	 octala 022. se obtine deci valoarea 666-022=644, care reprezinta drepturile:
 -rw-r--r--
 Daca dorim drepturi depline de acces, vom seta umask la valoarea 0, prin comanda umask 0.
	Pentru un director, drepturile depline de acces sunt:
 -rwxrwxrwx (777 in octal)
 Dreptul x (de executie) pentru un director ofera utilizatorului dreptul de citire. Astfel, dreptul de acces la director se
	obtine scazand din 777 valoarea lui umask: 777-022=755, care reprezinta drepturile:
 -rw-r-xr-x
 
 
 times Aceasta comanda se foloseste pentru afisarea de catre shell a timpului necesitat de toate procesele 
	rulate de shell. Sunt listate atat timpul utuilizator cat si cel sistem. Fie exemplul:
  
			$times
			0m30s 3m30s
		Primul timp reprezinta 30 de secunde petrecute in mod utilizator iar cel de-al doilea timp este timpul
		ce a fost alocat proceselor sistem. 
 eval Comanda eval asigura evaluarea completa a unei variabile. Fie exemplul:
 
		$dir_curent='$pwd'
		$echo $dir_curent
			$pwd
		
		in cazul lui eval avem:	
		
		$eval $dir_curent
		/home/stud/an3/i97zzz
		
	 |