User Tools

Site Tools


school:uso:labs:shell_scripting_2

Differences

This shows you the differences between two versions of the page.

Link to this comparison view

Both sides previous revision Previous revision
Next revision
Previous revision
school:uso:labs:shell_scripting_2 [2009/08/09 17:42]
razvan
school:uso:labs:shell_scripting_2 [2009/08/09 19:36]
razvan
Line 18: Line 18:
 === variabile de mediu, source === === variabile de mediu, source ===
  
-Intrați în directorul ''lab11/ex01/''+Intrați în directorul ''lab12/ex01/''
  
 ==== Tutorial === ==== Tutorial ===
Line 68: Line 68:
 === find, globbing === === find, globbing ===
  
-* Intrați în directorul ''lab11/ex02/''.+* Intrați în directorul ''lab12/ex02/''.
  
 ==== Tutorial ==== ==== Tutorial ====
Line 93: Line 93:
 ==== Enunț ==== ==== Enunț ====
  
-* Folosiți ''find'' pentru a identifica fișierele cu drept de execuție care **nu** au extensia ''.sh'' aflate în **subdirectoarele** directorului ''lab11/ex02''.+* Folosiți ''find'' pentru a identifica fișierele cu drept de execuție care **nu** au extensia ''.sh'' aflate în **subdirectoarele** directorului ''lab12/ex02/''.
  
 ==== Pași ajutători ==== ==== Pași ajutători ====
Line 104: Line 104:
 === find, shell expansion === === find, shell expansion ===
  
-* Intrați în directorul ''lab11/ex03/''.+* Intrați în directorul ''lab12/ex03/''.
  
 ==== Tutorial ==== ==== Tutorial ====
Line 121: Line 121:
 ==== Enunț ==== ==== Enunț ====
  
-* Folosiți ''find'' și ''cp'' pentru a crea copii de lucru ale fișierelor de configurare de distribuție din ierarhia ''lab11/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'').+* Folosiți ''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'').
  
 ==== Pași ajutători ==== ==== Pași ajutători ====
  
-* Folosiți ''find'' pentru a afișa fișierele cu extensia ''.dist'' din ierahia ''lab11/ex03/horde''. (Hint: ''-type'', ''-name'')+* Folosiți ''find'' pentru a afișa fișierele cu extensia ''.dist'' din ierahia ''lab12/ex03/horde/''. (Hint: ''-type'', ''-name'')
 * Folosiți ''for'', ''find'' și ''ls -l'' pentru a afișa informații complete despre fișierele de mai sus. * Folosiți ''for'', ''find'' și ''ls -l'' pentru a afișa informații complete despre fișierele de mai sus.
 * Inițializați variabila ''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''. * Inițializați variabila ''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''.
Line 132: Line 132:
 === read === === read ===
  
-* Intrați în directorul ''lab11/ex04/''.+* Intrați în directorul ''lab12/ex04/''.
  
 ==== Tutorial ==== ==== Tutorial ====
Line 171: Line 171:
 === grep, here document === === grep, here document ===
  
-* Intrați în directorul ''lab11/ex05/''.+* Intrați în directorul ''lab12/ex05/''.
  
 ==== Tutorial ==== ==== Tutorial ====
Line 213: Line 213:
 === variabile, source, sed === === variabile, source, sed ===
  
-* Intrați în directorul ''lab11/ex06/''.+* Intrați în directorul ''lab12/ex06/''.
  
 ==== Tutorial === ==== Tutorial ===
Line 251: Line 251:
 === grep, sed === === grep, sed ===
  
-* Intrați în directorul ''lab11/ex07/''.+* Intrați în directorul ''lab12/ex07/''.
  
 ==== Tutorial ==== ==== Tutorial ====
Line 258: Line 258:
  
 {{{ {{{
-grep '^ana' users.txt +grep 'ana' nonsense.txt 
-grep 'ana' users.txt+grep '^ana' nonsense.txt 
 +grep 'ana$nonsense.txt
 }}} }}}
  
Line 265: Line 266:
  
 {{{ {{{
-cp users.txt users.txt.old +cp nonsense.txt nonsense.txt.old 
-sed -i "s/ana/bogdan/g" users.txt +sed -i "s/ana/bogdan/g" nonsense.txt 
-sed -ibak "s/ana/bogdan/g" users.txt +sed -i.bak "s/ana/bogdan/g" nonsense.txt.old 
-ls users.txt* +ls nonsense.txt*
-}}} +
- +
-* În cadrul utilitarului ''sed'', construcția ''\1'' permite "recuperarea" unui subșir de înlocuit în cadrul șirului care înlocuiește: +
- +
-{{{ +
-sed "s/^\([a-z]*\) /\1__haha__/g"+
 }}} }}}
  
Line 294: Line 289:
 === grep, expresii regulate === === grep, expresii regulate ===
  
-* Intrați în directorul ''lab11/ex08/''.+* Intrați în directorul ''lab12/ex08/''.
  
 ==== Tutorial ==== ==== Tutorial ====
Line 301: Line 296:
  
 {{{ {{{
-echo -e "run^for^it \n runforit" | grep "run^for" +echo -e "run*for*it \n runforit" | grep "run*for" 
-echo -e "run^for^it \n runforit" | grep "run\^for"+echo -e "run*for*it \n runforit" | grep "run\*for"
 }}} }}}
  
Line 308: Line 303:
  
 {{{ {{{
-echo "anaconda \n ana are mere \n roxana" | grep "ana" +echo -e "anaconda \n ana are mere \n roxana" | grep "ana" 
-echo "anaconda \n ana are mere \n roxana" | grep -w "ana" +echo -e "anaconda \n ana are mere \n roxana" | grep -w "ana" 
-echo "anaconda \n ana are mere \n roxana" | grep "\<ana\>"+echo -e "anaconda \n ana are mere \n roxana" | grep "\<ana\>"
 }}} }}}
  
 ==== Enunț ==== ==== Enunț ====
  
-Folosiți ''grep'' pentru a elimina 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''.+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''.
  
 ==== Pași ajutători ==== ==== Pași ajutători ====
  
-* Folosiți ''grep'' pentru a elimina liniile ce conțin șirul ''gmail''(Hint: ''-v'') +* Folosiți ''grep'' pentru a selecta liniile ce conțin șirul ''gmail''
-* Folosiți ''grep'' pentru a elimina liniile ce conțin șirul ''gmail.com''. (Hint: folosiți ''\'' pentru citare) +* Folosiți ''grep'' pentru a selecta liniile ce conțin șirul ''gmail.com''. (Hint: folosiți ''\'' pentru citare) 
-* Folosiți ''grep'' pentru a elimina liniile ce conțin cuvântul ''gmail.com''. (Hint: ''\<'' și ''\>''+* Folosiți ''grep'' pentru a selecta liniile ce conțin cuvântul ''gmail.com''. (Hint: ''\<'' și ''\>''
-* Folosiți ''grep'' pentru a elimina liniile ce conțin cuvântul ''gmail.com'' în destinație. +* Folosiț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) 
-* Folosiți ''grep'' pentru a elimina liniile ce conțin șirul-cuvânt ''nume.prenume@gmail.com'' în destinație.+* Folosiți ''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ă)
  
 === grep, awk, sort, uniq === === grep, awk, sort, uniq ===
  
 * **Dificultate sporită** * **Dificultate sporită**
-* Intrați în directorul ''lab11/ex09/''.+* Intrați în directorul ''lab12/ex09/''.
  
 ==== Tutorial ==== ==== Tutorial ====
Line 335: Line 330:
  
 {{{ {{{
-cat lista.txt | awk -F '[ \t]+' "{ print "prenume:", $1, "nume:", $2; }" +cat lista.txt | awk -F '[ \t]+' '{ print "nume:", $1, "prenume", $2; }' 
-cat /etc/passwd | awk -F ':' "{ print "nume: $1", "home:", $6; }"+cat /etc/passwd | awk -F ':' '{ print "nume:", $1, "home:", $6; }'
 }}} }}}
  
Line 348: Line 343:
 ==== Enunț ==== ==== Enunț ====
  
-* Fișierul ''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.+* Fișierul ''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.
  
 ==== Pași ajutători ==== ==== Pași ajutători ====
  
-* Creați scriptul ''dest_sort.sh'' și folosiți ''grep'' pentru a extrage din fișierul ''mail.txt'' liniile care specifică destinatarul (liniile care încep cu ''To:''). +* Creați scriptul ''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:''). 
-* Folosiți înlănțuirea comenzilor (''|'') și ''awk'' pentru a extrage **doar** adresa de e-mail a destinatarului.+* Folosiți înlănțuirea comenzilor (''|'') ș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) 
 +* Folosiți înlănțuirea comenzilor și ''grep'' pentru a elimina liniile albe (liniile care conțin doar spații sau caractere TAB sau care nu conțin nimic).
 * Folosiți înlănțuirea comenzilor (''|'') și ''sort'' pentru a sorta adresele de e-mail ale destinatarilor. * Folosiți înlănțuirea comenzilor (''|'') și ''sort'' pentru a sorta adresele de e-mail ale destinatarilor.
 * Folosiți înlănțuirea comenzilor (''|'') și ''uniq'' pentru a "uniciza" adresele de e-mail ale destinatarilor cu afișarea numărului de apariții ale acestora. (Hint: ''-c'') * Folosiți înlănțuirea comenzilor (''|'') și ''uniq'' pentru a "uniciza" adresele de e-mail ale destinatarilor cu afișarea numărului de apariții ale acestora. (Hint: ''-c'')
Line 361: Line 357:
  
 * **Dificultate sporită** * **Dificultate sporită**
-* Intrați în directorul ''lab11/ex10/''.+* Intrați în directorul ''lab12/ex10/''.
  
 ==== Enunț ==== ==== Enunț ====
  
-* Fișierul ''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ă.+* Fișierul ''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ă.
  
 ==== Pași ajutători ==== ==== Pași ajutători ====
  
-* Creați scriptul ''date_sort.sh'' și folosiți ''grep'' pentru a extrage din fișierul ''mail.txt'' liniile care specifică data (liniile care încep cu ''Date:''). +* Creați scriptul ''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:''). 
-* Folosiți înlănțuirea comenzilor (''|'') și ''awk'' pentru a extrage **doar** data de transmitere a mesajului.+* Folosiți înlănțuirea comenzilor (''|'') ș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)
 * Folosiți înlănțuirea comenzilor (''|'') și ''sort'' pentru a sorta datele mesajelor. * Folosiți înlănțuirea comenzilor (''|'') și ''sort'' pentru a sorta datele mesajelor.
 * Folosiți înlănțuirea comenzilor (''|'') și ''uniq'' pentru a "uniciza" datele mesajelor cu afișarea numărului de apariții ale acestora (Hint: ''-c'') * Folosiți înlănțuirea comenzilor (''|'') și ''uniq'' pentru a "uniciza" datele mesajelor cu afișarea numărului de apariții ale acestora (Hint: ''-c'')
school/uso/labs/shell_scripting_2.txt · Last modified: 2020/07/20 09:16 (external edit)