This shows you the differences between two versions of the page.
school:uso:labs:shell_scripting_2 [2009/08/09 19:23] razvan |
school:uso:labs:shell_scripting_2 [2020/07/20 09:16] |
||
---|---|---|---|
Line 1: | Line 1: | ||
- | = Laborator shell scripting - partea a 2-a = | ||
- | == Elemente importante == | ||
- | |||
- | * variabile de mediu | ||
- | * source | ||
- | * globbing | ||
- | * find | ||
- | * expresii regulate | ||
- | * grep | ||
- | * sort, uniq | ||
- | * read | ||
- | * sed | ||
- | * awk | ||
- | |||
- | == Seturi de task-uri == | ||
- | |||
- | === variabile de mediu, source === | ||
- | |||
- | Intrați în directorul '' | ||
- | |||
- | ==== Tutorial === | ||
- | |||
- | * Rulați comenzile de mai jos pentru afișarea valorii variabilelor de mediu '' | ||
- | |||
- | {{{ | ||
- | echo $PATH | ||
- | echo $HOME | ||
- | }}} | ||
- | |||
- | * Rulați comenzile de mai jos pentru inițializarea și afișarea unei variabile (**nu** folosiți spații înainte sau după caracterul egal ('' | ||
- | |||
- | {{{ | ||
- | MY_VAR=$HOME/ | ||
- | echo $MY_VAR | ||
- | }}} | ||
- | |||
- | * Urmăriți conținutul scriptului '' | ||
- | |||
- | {{{ | ||
- | cat show_var.sh | ||
- | }}} | ||
- | |||
- | * Rulați scriptul: | ||
- | |||
- | {{{ | ||
- | ./ | ||
- | }}} | ||
- | |||
- | * **Doar** varibilele de mediu sunt propagate la procesele copil. Folosiți '' | ||
- | |||
- | {{{ | ||
- | export MY_VAR | ||
- | ./ | ||
- | }}} | ||
- | |||
- | ==== Enunț ==== | ||
- | |||
- | Creați un script '' | ||
- | |||
- | ==== Pași ajutători ==== | ||
- | |||
- | * Actualizați variabila de mediu '' | ||
- | * Creați un script '' | ||
- | * Rulați scriptul și afișați valoarea variabilei '' | ||
- | * Folosiți source pentru a rula scriptul. Afișați valoarea variabilei '' | ||
- | |||
- | === find, globbing === | ||
- | |||
- | * Intrați în directorul '' | ||
- | |||
- | ==== Tutorial ==== | ||
- | |||
- | * Comanda ''' | ||
- | |||
- | {{{ | ||
- | find . | ||
- | find | ||
- | }}} | ||
- | |||
- | * Rulați comanda de mai jos pentru a afișa fișierele din ierahia curentă: | ||
- | |||
- | {{{ | ||
- | find -type f | ||
- | }}} | ||
- | |||
- | * Caracterul star ('' | ||
- | |||
- | {{{ | ||
- | ls /etc/*.conf | ||
- | }}} | ||
- | |||
- | ==== Enunț ==== | ||
- | |||
- | * Folosiți '' | ||
- | |||
- | ==== Pași ajutători ==== | ||
- | |||
- | * Folosiți '' | ||
- | * Folosiți '' | ||
- | * Folosiți '' | ||
- | * Folosiți '' | ||
- | |||
- | === find, shell expansion === | ||
- | |||
- | * Intrați în directorul '' | ||
- | |||
- | ==== Tutorial ==== | ||
- | |||
- | * Construcția '' | ||
- | |||
- | {{{ | ||
- | var=" | ||
- | echo ${var%_mere} | ||
- | var=" | ||
- | echo ${var%.bak} | ||
- | var=" | ||
- | echo ${var%d*} | ||
- | }}} | ||
- | |||
- | ==== Enunț ==== | ||
- | |||
- | * Folosiți '' | ||
- | |||
- | ==== Pași ajutători ==== | ||
- | |||
- | * Folosiți '' | ||
- | * Folosiți '' | ||
- | * Inițializați variabila '' | ||
- | * Folosiți '' | ||
- | |||
- | === read === | ||
- | |||
- | * Intrați în directorul '' | ||
- | |||
- | ==== Tutorial ==== | ||
- | |||
- | * Comenzile '' | ||
- | |||
- | {{{ | ||
- | head -n -1 numbers.txt | ||
- | tail -n +2 numbers.txt | ||
- | head -n -3 numbers.txt | ||
- | tail -n +2 numbers.txt | ||
- | }}} | ||
- | |||
- | * Comanda '' | ||
- | |||
- | {{{ | ||
- | echo "a b c d" | (read v1 v2 v3 v4; echo "$v1 # $v2 # $v3 # $v4") | ||
- | echo " | ||
- | }}} | ||
- | |||
- | * În general, '' | ||
- | |||
- | {{{ | ||
- | cat numbers.txt | while read num string; do echo " | ||
- | }}} | ||
- | |||
- | ==== Enunț ==== | ||
- | |||
- | Pornind de la catalogul din fișierul '' | ||
- | |||
- | ==== Pași ajutători ==== | ||
- | |||
- | * Creați scriptul '' | ||
- | * Actualizați în cadrul scriptului variabila '' | ||
- | * Folosiți '' | ||
- | * Folosiți '' | ||
- | |||
- | === grep, here document === | ||
- | |||
- | * Intrați în directorul '' | ||
- | |||
- | ==== Tutorial ==== | ||
- | |||
- | * Comanda '' | ||
- | |||
- | {{{ | ||
- | grep " | ||
- | grep " | ||
- | }}} | ||
- | |||
- | * Argumentul '' | ||
- | |||
- | {{{ | ||
- | grep -v " | ||
- | }}} | ||
- | |||
- | ==== Enunț ==== | ||
- | |||
- | Creați un script '' | ||
- | |||
- | {{{ | ||
- | < | ||
- | < | ||
- | < | ||
- | RewriteEngine on | ||
- | RewriteCond %{HTTPS} !^on$ [NC] | ||
- | RewriteRule . https:// | ||
- | </ | ||
- | </ | ||
- | </ | ||
- | }}} | ||
- | |||
- | ==== Pași ajutători ==== | ||
- | |||
- | * Creați scriptul '' | ||
- | * Folosiți '' | ||
- | * Folosiți un [[http:// | ||
- | * Completați here document-ul pentru a adăuga inclusiv forma de încheiere a directivei (''</ | ||
- | |||
- | === variabile, source, sed === | ||
- | |||
- | * Intrați în directorul '' | ||
- | |||
- | ==== Tutorial === | ||
- | |||
- | * Comanda '' | ||
- | |||
- | {{{ | ||
- | echo "Say hello to my little friend" | ||
- | }}} | ||
- | |||
- | * Utilitarul '' | ||
- | |||
- | {{{ | ||
- | sed " | ||
- | }}} | ||
- | |||
- | * Pentru a concatena mai multe prelucrări '' | ||
- | |||
- | {{{ | ||
- | sed -e " | ||
- | }}} | ||
- | |||
- | ==== Enunț ==== | ||
- | |||
- | * Creați scriptul '' | ||
- | ** '' | ||
- | ** '' | ||
- | ** celelalte variabile reprezintă informații de substituit în template. | ||
- | |||
- | ==== Pași ajutători ==== | ||
- | |||
- | * Creați scriptul '' | ||
- | * Folosiți '' | ||
- | * Folosiți '' | ||
- | * Completați scriptul '' | ||
- | |||
- | === grep, sed === | ||
- | |||
- | * Intrați în directorul '' | ||
- | |||
- | ==== Tutorial ==== | ||
- | |||
- | * Utilitarul '' | ||
- | |||
- | {{{ | ||
- | grep ' | ||
- | grep ' | ||
- | grep ' | ||
- | }}} | ||
- | |||
- | * Argumentul '' | ||
- | |||
- | {{{ | ||
- | cp nonsense.txt nonsense.txt.old | ||
- | sed -i " | ||
- | sed -i.bak " | ||
- | ls nonsense.txt* | ||
- | }}} | ||
- | |||
- | ==== Enunț ==== | ||
- | |||
- | * Fișierul '' | ||
- | ** scriptul primește două argumente: numele de utilizator ('' | ||
- | ** dacă numele de utilizator există se actualizează (substituie) parola; | ||
- | ** dacă numele de utilizator nu există se adaugă parola. | ||
- | |||
- | ==== Pași ajutători ==== | ||
- | |||
- | * Creați scriptul '' | ||
- | * Folosiți grep pentru a extrage din fișierul '' | ||
- | * Afișați '' | ||
- | * În cazul în care numele de utilizator primit ca argument **nu** se găsește în fișierul '' | ||
- | * În cazul în care numele de utilizator primit ca argument se găsește în fișierul '' | ||
- | |||
- | === grep, expresii regulate === | ||
- | |||
- | * Intrați în directorul '' | ||
- | |||
- | ==== Tutorial ==== | ||
- | |||
- | * Expresiile regulate utilizate de '' | ||
- | |||
- | {{{ | ||
- | echo -e " | ||
- | echo -e " | ||
- | }}} | ||
- | |||
- | * '' | ||
- | |||
- | {{{ | ||
- | echo -e " | ||
- | echo -e " | ||
- | echo -e " | ||
- | }}} | ||
- | |||
- | ==== Enunț ==== | ||
- | |||
- | Folosiți '' | ||
- | |||
- | ==== Pași ajutători ==== | ||
- | |||
- | * Folosiți '' | ||
- | * Folosiți '' | ||
- | * Folosiți '' | ||
- | * Folosiți '' | ||
- | * Folosiți '' | ||
- | |||
- | === grep, awk, sort, uniq === | ||
- | |||
- | * **Dificultate sporită** | ||
- | * Intrați în directorul '' | ||
- | |||
- | ==== Tutorial ==== | ||
- | |||
- | * Utilitarul '' | ||
- | |||
- | {{{ | ||
- | cat lista.txt | awk -F '[ \t]+' '{ print " | ||
- | cat /etc/passwd | awk -F ':' | ||
- | }}} | ||
- | |||
- | * Utilitarul '' | ||
- | |||
- | {{{ | ||
- | cat lista2.txt | sort | ||
- | cat lista2.txt | sort | uniq | ||
- | }}} | ||
- | |||
- | ==== Enunț ==== | ||
- | |||
- | * Fișierul '' | ||
- | |||
- | ==== Pași ajutători ==== | ||
- | |||
- | * Creați scriptul '' | ||
- | * Folosiți înlănțuirea comenzilor ('' | ||
- | * Folosiți înlănțuirea comenzilor și '' | ||
- | * Folosiți înlănțuirea comenzilor ('' | ||
- | * Folosiți înlănțuirea comenzilor ('' | ||
- | * Folosiți înlănțuirea comenzilor ('' | ||
- | |||
- | === grep, awk, sort, uniq === | ||
- | |||
- | * **Dificultate sporită** | ||
- | * Intrați în directorul '' | ||
- | |||
- | ==== Enunț ==== | ||
- | |||
- | * Fișierul '' | ||
- | |||
- | ==== Pași ajutători ==== | ||
- | |||
- | * Creați scriptul '' | ||
- | * Folosiți înlănțuirea comenzilor ('' | ||
- | * Folosiți înlănțuirea comenzilor ('' | ||
- | * Folosiți înlănțuirea comenzilor ('' | ||
- | * Folosiți înlănțuirea comenzilor ('' | ||
- | |||
- | == Idei pentru shell scripting 1 == | ||
- | |||
- | * script care copiază un set de fișire în home-ul unor utilizatori primiți ca argument pe sistemul local și schimbă owner-ul acestora | ||
- | * adăugarea unei chei publice pe un sistem la distanță într-un one liner | ||
- | * script care copiază un fișier pe mai multe sisteme din rețeaua locală (poate integrat cu mdns) | ||
- | |||
- | == Extra == | ||
- | |||
- | * copierea unei ierarhii (doar fișierele cu extensia '' | ||
- | * gestiunea unei adrese electronice (address book) |