Intrați în directorul lab12/ex01/
PATH și HOME:=)):show_var.sh:export:
Creați un script update_path.sh care să actualizeze variabila de mediu PATH cu directorul bin/ din home-ul utilizatorului curent. Rulați scriptul pentru a actualiza valoarea variabilei în shell-ul curent.
PATH cu directorul /opt/bin. Afișați valoarea variabilei.update_path.sh care să actualizeze variabila de mediu PATH cu directorul bin/ din home-ul utilizatorului curent. Folosiți export pentru exportarea variabilei.PATH. De ce nu se modifică valoarea?PATH.lab12/ex02/.'find' afișează ierahia unui director. Dacă directorul lipsește se consideră implicit directorul curent (.). Rulați comanda de mai jos pentru a afișa intrările din ierarhia curentă (.):*) este folosit pentru a reprezenta orice șir de caractere (de la caracterul vid până la șirul infinit). Rulați comanda de mai jos pentru a afișa fișierele cu extensia .conf din /etc/.conf}
find pentru a identifica fișierele cu drept de execuție care nu au extensia .sh aflate în subdirectoarele directorului lab12/ex02/.find pentru a afișa ierarhia din subdirectoare. (Hint: -mindepth)find pentru a afișa fișierele din ierarhia din subdirectoare cu extensia .sh. (Hint: -name, -type)find pentru a afișa fișierele din ierarhia din subdirectoare care nu au extensia .sh. (Hint: OPERATORS în pagina de manual)find pentru a afișa fișierele din ierarhia din subdirectoare cu drept de execuție care nu au extensia .sh. (Hint: -perm)lab12/ex03/.${parameter%word} (descrisă și aici) permite eliminarea din variabila descrisă de parameter a porțiunii finale descrisă de șirul word. Rulați exemplele de mai jos:var_ana_are_mere_echo_var_mere_var_a.c.bak_echo_var_.bak_var_nebuchadnezzar_echo_var_d}
find și cp pentru a crea copii de lucru ale fișierelor de configurare de distribuție din ierarhia lab12/ex03/horde/. Fișierele de distribuție au extensia .dist (de exemplu conf.php.dist); o copie de lucru este un fișier fără extensia .dist (de exemplu: conf.php).find pentru a afișa fișierele cu extensia .dist din ierahia lab12/ex03/horde/. (Hint: -type, -name)for, find și ls -l pentru a afișa informații complete despre fișierele de mai sus.MY_FILE la valoarea conf.php.dist. Folosiți echo și construcția ${parameter%word} pentru a afișa valoarea variabilei MY_FILE fără extensia .dist.for, find și cp pentru a crea copii de lucru ale fișierelor de mai sus.lab12/ex04/.head și tail permit, respectiv, eliminarea ultimelor linii și a primelor linii dintr-un fișier. Rulați comenzile de mai jos:head_-n_-1_numbers.txt_tail_-n_2_numbers.txt_head_-n_-3_numbers.txt_tail_-n_2_numbers.txt}
read permite parsarea unui șir primit la intrare folosind spații albe ca separator implicit:read este folosit împreună cu while pentru a citi un întreg fișier.
Pornind de la catalogul din fișierul catalog.csv, creați scriptul select_7.sh care să afișeze numele și grupa celor care au nota mai mare sau egală cu 7.
select_7.sh și folosiți tail pentru a afișa toate liniile mai puțin prima linie (linia de antet). (Hint: -n +N)IFS pentru ca read să folosească pe post de separator caracterul virgulă (,). (Hint: detalii aici sau în pagina de manual a Bash - căutare după “Word splitting”)tail, while și read pentru a afișa doar numele și grupa studenților din fișierul catalog.txt, separate prin caracterul două puncte (:).if pentru a selecta studenții care au nota mai mare sau egală cu 7.lab12/ex05/.grep este folosită pentru a selecta liniile ce conțin un anumit șablon (expresie regulată):grep_ana_names.txt_grep_a._a_names.txt}
-v (revert selection) va selecta liniile ce nu conțin un anumit șablon:
Creați un script ssl_update.sh care să adauge opțiunea de redirectare HTTPS în cadrul unui fișier de tip vhost pentru Apache. Adăugați opțiunea de mai jos la sfârșitul directivei <VirtualHost> din cadrul fișierului vhost.conf:
ssl_update.sh.grep pentru a afișa toate liniile mai puțin linia de încheiere a directivei vhost (</VirtualHost>) (Hint: -v). Stocați rezultatul în fișierul vhost_new.conf.vhost_new.conf.</VirtualHost>).lab12/ex06/.mail permite transmiterea unui e-mail. În mod obișnuit se specifică subiectul și destinatarul. Comanda de mai jos trimite mesajul “Say hello to my little friend” cu subiectul “Hello” utilizatorului student:sed (stream editor) permite efectuarea a diverse operații pe un fișier la nivel de linie. În mod uzual este folosit pentru a substitui un șablon (expresie regulată) cu un șir:sed folosiți -e:my_send_mail.sh care trimite un e-mail cu un mesaj personalizat pornind de la un template-ul mail_template.txt și fișierul de configurare config. Fișierul de configurare specifică variabilele folosite de script:SUBJECT - subiectul mesajul;DEST_ADDRESS - destinatarul;my_send_mail.sh în cadrul căruia afișați valoarea variabilei SUBJECT din fișierul config. (Hint: folosiți source)sed pentru a substitui șirul dest_name} din mail_template.txt cu valoarea variabilei DEST_NAME din fișierul config.my_send_mail.sh pentru a trimite un e-mail cu un mesaj personalizat pornind de la un template-ul mail_template.txt și fișierul de configurare config.lab12/ex07/.grep folosește un șablon (expresie regulată) pentru selectarea liniilor. Caracterele căciulă (^) și dolar ($) se potrivesc, respectiv, cu începutul și sfârșitul unei linii:grep_ana_nonsense.txt_grep_ana_nonsense.txt_grep_ana_nonsense.txt}
-i al utilitarului sed permite modificarea “in place” a unui fișier:svn.passwd conține linii de forma username: password folosite pentru autentificare în Subversion. Creați scriptul update_svn_passwd.sh care actualizează fișierul cu parole:username) și parola (password);update_svn_passwd.sh care primește doi parametri și îi afișează.svn.passwd linia asociată numelui de utilizator primit ca prim argument. ((Hint: ^, $1)yes sau no după cum numele de utilizator primit ca prim argument se gasește în fișierul svn.passwd. (Hint: $?)svn.passwd adăugați linia $username: $password la sfârșitul fișierului. ($username este primul argument, iar $password este al doilea argument) (Hint: echo, »)svn.passwd, actualizați linia asociată. (Hint: sed, \1, -i)lab12/ex08/.grep folosesc caractere care au rol special (^, $, *, +, .). Pentru a putea fi folosite cu rol de caracter ASCII se citează folosind backslash (\):grep "run*for" echo -e "run*for*it \n runforit" | grep "run\*for" }
grep selectează linii care conțin un șir descris printr-o expresie regulată. Pentru a extrage un cuvânt se folosește -w sau construcția \< .. \>:
Folosiți grep pentru a selecta alias-urile cu destinația de forma nume.prenume@gmail.com din fișierul aliases. Intrările din fișierul aliases se consideră de forma alias: destinație.
grep pentru a selecta liniile ce conțin șirul gmail.grep pentru a selecta liniile ce conțin șirul gmail.com. (Hint: folosiți \ pentru citare)grep pentru a selecta liniile ce conțin cuvântul gmail.com. (Hint: \< și \>)grep pentru a selecta liniile ce conțin cuvântul gmail.com în destinație. (Hint: dacă folosiți + acesta trebuie citat cu \ pentru a avea rol în expresia regulată - unul sau mai multe caractere)grep pentru a selecta liniile ce conțin șirul-cuvânt nume.prenume@gmail.com în destinație. (Atenție: intrarea ce conține j.r.r.tolkien@gmail.com este invalidă)lab12/ex09/.awk' permite manipulări avansate ale unui fișier la nivel de linie. Sintaxa este similară cu cea a limbajului C. Poate fi folosit ca o versiune avansată a comenzilor read și cut (pentru parsarea intrării). Argumentul -F permite precizarea separatorului:sort sortează liniile de la intrare. Este folosit de obicei în conjuncție cu uniq:sent_mail.txt conține mesaje trimise de un utilizator. Creați un script dest_sort.sh care sortează mesajele trimise de un utilizator după destinatari; se vor afișa adresa de e-mail a destinatarului și numărul de mesaje transmise de acesta.dest_sort.sh și folosiți grep pentru a extrage din fișierul sent_mail.txt liniile care specifică destinatarul (liniile care încep cu To:).|) și awk pentru a extrage doar adresa de e-mail a primului destinatar. (Hint: folosiți < și > ca separatori; vor exista excepții dar sunt tolerabile)grep pentru a elimina liniile albe (liniile care conțin doar spații sau caractere TAB sau care nu conțin nimic).|) și sort pentru a sorta adresele de e-mail ale destinatarilor.|) și uniq pentru a “uniciza” adresele de e-mail ale destinatarilor cu afișarea numărului de apariții ale acestora. (Hint: -c)|) și sort pentru a sorta adreselele de e-mail după numărul de apariții ale acestora .(Hint: -r, -n)lab12/ex10/.sent_mail.txt conține mesaje trimise de un utilizator. Creați un script dest_sort.sh care script care sortează mesajele trimise de un utilizator în funcție de data la care au fost transmise; se vor afișa data de transmitere a mesajului și numărul de mesaje transmise la acea dată.date_sort.sh și folosiți grep pentru a extrage din fișierul sent_mail.txt liniile care specifică data (liniile care încep cu Date:).|) și awk pentru a extrage doar data de transmitere a mesajului. (Hint: se presupune data în formatul Day, DD Mon YYYY - adică 4 cuvinte separate prin spațiu)|) și sort pentru a sorta datele mesajelor.|) și uniq pentru a “uniciza” datele mesajelor cu afișarea numărului de apariții ale acestora (Hint: -c)|) și sort pentru a sorta datele mesajelor după numărul de apariții ale acestora (Hint: -r, -n).php.dist împreună cu directoarele asociate)