This shows you the differences between two versions of the page.
uso:laboratoare:new:05-cli:get-a-life [2018/10/30 10:59] liza_elena.babu [Get a life] |
uso:laboratoare:new:05-cli:get-a-life [2019/10/31 11:32] (current) adrian.zatreanu |
||
---|---|---|---|
Line 1: | Line 1: | ||
===== Get a life ===== | ===== Get a life ===== | ||
- | |||
- | ==== Exerciții ==== | ||
- | - Să scrie un script în care trebuie să schimbe directorul de lucru. (Hint: ''source'') | ||
- | - Mutați-vă la calea ''~/uso.git/labs/05-cli/support/get-a-life/ex2/'' și rulați scriptul ''just_regular_updates_here.sh''. Continuați să folosiți comenzile de bază (ls, cat, cd). Observați ce se întâmplă și rezolvați problema. | ||
- | - La calea ''~/uso.git/labs/05-cli/support/get-a-life/ex3/'' se află fișierul ''image.png''. Inspectați tipul fișierului. Scopul acestui exercițiu este să aflați un mesaj secret. (Hint: ''file'') | ||
- | - În directorul ''~/uso.git/labs/05-cli/support/get-a-life/ex4/'' se află numeroase fișiere. Să creeze o arhivă cu fișierele ce au o dimensiue mai mare de 10MB. | ||
- | - Să creeze un script care pornește programul ''firefox'' doar dacă acesta nu există deja. Altfel, nu-l pornește, ci doar afișează informații depsre el. Configurați acest script să ruleze din ''cron'' la fiecare 5 minute. (Hint: [[https://www.thegeekstuff.com/2011/07/cron-every-5-minutes|cron]]) | ||
==== Filtre de text avansate ==== | ==== Filtre de text avansate ==== | ||
Line 15: | Line 8: | ||
=== sed === | === sed === | ||
- | Înainte să începeți acest tutorial, navigați către calea ''/home/student/uso/labs/05-cli/support/get-a-life/tutorial-sed''. | + | Înainte să începeți acest tutorial, navigați către calea ''/home/student/uso-lab/05-cli/support/get-a-life/sed-tutorial''. |
În acest director avem fișierul ''songs.txt'' cu următorul conținut: | În acest director avem fișierul ''songs.txt'' cu următorul conținut: | ||
<code bash> | <code bash> | ||
- | student@uso:~/.../support/get-a-life/tutorial-sed$ cat songs.txt | + | student@uso:~/.../support/get-a-life/sed-tutorial$ cat songs.txt |
1, Justin Timberlake, Title 545, Price $6.30 | 1, Justin Timberlake, Title 545, Price $6.30 | ||
2, Taylor Swift, Title 723, Price $7.90 | 2, Taylor Swift, Title 723, Price $7.90 | ||
Line 34: | Line 27: | ||
<code bash> | <code bash> | ||
- | student@uso:~/.../support/get-a-life/tutorial-sed$ sed 's/6.30/7.30/' songs.txt > songs2.txt | + | student@uso:~/.../support/get-a-life/sed-tutorial$ sed 's/6\.30/7.30/' songs.txt > songs2.txt |
- | student@uso:~/.../support/get-a-life/tutorial-sed$ cat songs2.txt | + | student@uso:~/.../support/get-a-life/sed-tutorial$ cat songs2.txt |
1, Justin Timberlake, Title 545, Price $7.30 | 1, Justin Timberlake, Title 545, Price $7.30 | ||
2, Taylor Swift, Title 723, Price $7.90 | 2, Taylor Swift, Title 723, Price $7.90 | ||
Line 46: | Line 39: | ||
=== awk === | === awk === | ||
- | Mai devreme am văzut că putem extrage numele tuturor utilizatorilo din sistem folosind ''tr''. Vrem să | + | Mai devreme am văzut că putem extrage numele tuturor utilizatorilor din sistem folosind ''tr''. Vrem să |
facem asta folosind și filtrul ''awk''. | facem asta folosind și filtrul ''awk''. | ||
Line 52: | Line 45: | ||
<code bash> | <code bash> | ||
- | student@uso:~/.../support/get-a-life/tutorial-sed$ cat /etc/passwd | + | student@uso:~/.../support/get-a-life/sed-tutorial$ cat /etc/passwd |
root:x:0:0:root:/root:/bin/bash | root:x:0:0:root:/root:/bin/bash | ||
daemon:x:1:1:daemon:/usr/sbin:/usr/sbin/nologin | daemon:x:1:1:daemon:/usr/sbin:/usr/sbin/nologin | ||
bin:x:2:2:bin:/bin:/usr/sbin/nologin | bin:x:2:2:bin:/bin:/usr/sbin/nologin | ||
- | sys:x:3:3:sys:/dev:/usr/sbin/nologin | + | (...) |
- | sync:x:4:65534:sync:/bin:/bin/sync | + | |
- | games:x:5:60:games:/usr/games:/usr/sbin/nologin | + | |
- | man:x:6:12:man:/var/cache/man:/usr/sbin/nologin | + | |
- | lp:x:7:7:lp:/var/spool/lpd:/usr/sbin/nologin | + | |
- | mail:x:8:8:mail:/var/mail:/usr/sbin/nologin | + | |
- | news:x:9:9:news:/var/spool/news:/usr/sbin/nologin | + | |
- | uucp:x:10:10:uucp:/var/spool/uucp:/usr/sbin/nologin | + | |
- | proxy:x:13:13:proxy:/bin:/usr/sbin/nologin | + | |
- | www-data:x:33:33:www-data:/var/www:/usr/sbin/nologin | + | |
- | backup:x:34:34:backup:/var/backups:/usr/sbin/nologin | + | |
- | list:x:38:38:Mailing List Manager:/var/list:/usr/sbin/nologin | + | |
- | irc:x:39:39:ircd:/var/run/ircd:/usr/sbin/nologin | + | |
- | gnats:x:41:41:Gnats Bug-Reporting System (admin):/var/lib/gnats:/usr/sbin/nologin | + | |
- | nobody:x:65534:65534:nobody:/nonexistent:/usr/sbin/nologin | + | |
- | systemd-network:x:100:102:systemd Network Management,,,:/run/systemd/netif:/usr/sbin/nologin | + | |
- | systemd-resolve:x:101:103:systemd Resolver,,,:/run/systemd/resolve:/usr/sbin/nologin | + | |
- | syslog:x:102:106::/home/syslog:/usr/sbin/nologin | + | |
- | messagebus:x:103:107::/nonexistent:/usr/sbin/nologin | + | |
- | _apt:x:104:65534::/nonexistent:/usr/sbin/nologin | + | |
- | uuidd:x:105:111::/run/uuidd:/usr/sbin/nologin | + | |
- | avahi-autoipd:x:106:112:Avahi autoip daemon,,,:/var/lib/avahi-autoipd:/usr/sbin/nologin | + | |
- | usbmux:x:107:46:usbmux daemon,,,:/var/lib/usbmux:/usr/sbin/nologin | + | |
- | dnsmasq:x:108:65534:dnsmasq,,,:/var/lib/misc:/usr/sbin/nologin | + | |
- | rtkit:x:109:114:RealtimeKit,,,:/proc:/usr/sbin/nologin | + | |
- | cups-pk-helper:x:110:116:user for cups-pk-helper service,,,:/home/cups-pk-helper:/usr/sbin/nologin | + | |
- | speech-dispatcher:x:111:29:Speech Dispatcher,,,:/var/run/speech-dispatcher:/bin/false | + | |
- | whoopsie:x:112:117::/nonexistent:/bin/false | + | |
- | kernoops:x:113:65534:Kernel Oops Tracking Daemon,,,:/:/usr/sbin/nologin | + | |
- | saned:x:114:119::/var/lib/saned:/usr/sbin/nologin | + | |
- | pulse:x:115:120:PulseAudio daemon,,,:/var/run/pulse:/usr/sbin/nologin | + | |
- | avahi:x:116:122:Avahi mDNS daemon,,,:/var/run/avahi-daemon:/usr/sbin/nologin | + | |
- | colord:x:117:123:colord colour management daemon,,,:/var/lib/colord:/usr/sbin/nologin | + | |
- | hplip:x:118:7:HPLIP system user,,,:/var/run/hplip:/bin/false | + | |
- | geoclue:x:119:124::/var/lib/geoclue:/usr/sbin/nologin | + | |
- | gnome-initial-setup:x:120:65534::/run/gnome-initial-setup/:/bin/false | + | |
- | gdm:x:121:125:Gnome Display Manager:/var/lib/gdm3:/bin/false | + | |
- | student:x:1000:1000:Student User,,,:/home/student:/bin/bash | + | |
- | vboxadd:x:999:1::/var/run/vboxadd:/bin/false | + | |
- | sshd:x:122:65534::/run/sshd:/usr/sbin/nologin | + | |
- | festival:x:123:29::/nonexistent:/usr/sbin/nologin | + | |
- | test:x:1001:1001::/home/test:/bin/sh | + | |
- | test2:x:1002:1002:,,,:/home/test2:/bin/bash | + | |
</code> | </code> | ||
Line 104: | Line 55: | ||
<code bash> | <code bash> | ||
- | student@uso:~/.../support/get-a-life/tutorial-sed$ awk -F: '{print $1}' /etc/passwd | + | student@uso:~/.../support/get-a-life/sed-tutorial$ awk -F: '{print $1}' /etc/passwd |
root | root | ||
daemon | daemon | ||
bin | bin | ||
- | sys | + | (...) |
- | sync | + | |
- | games | + | |
- | man | + | |
- | lp | + | |
- | + | ||
- | news | + | |
- | uucp | + | |
- | proxy | + | |
- | www-data | + | |
- | backup | + | |
- | list | + | |
- | irc | + | |
- | gnats | + | |
- | nobody | + | |
- | systemd-network | + | |
- | systemd-resolve | + | |
- | syslog | + | |
- | messagebus | + | |
- | _apt | + | |
- | uuidd | + | |
- | avahi-autoipd | + | |
- | usbmux | + | |
- | dnsmasq | + | |
- | rtkit | + | |
- | cups-pk-helper | + | |
- | speech-dispatcher | + | |
- | whoopsie | + | |
- | kernoops | + | |
- | saned | + | |
- | pulse | + | |
- | avahi | + | |
- | colord | + | |
- | hplip | + | |
- | geoclue | + | |
- | gnome-initial-setup | + | |
- | gdm | + | |
- | student | + | |
- | vboxadd | + | |
- | sshd | + | |
- | festival | + | |
- | test | + | |
- | test2 | + | |
</code> | </code> | ||
Line 158: | Line 67: | ||
despre ''sed'', ''awk'' și multe altele [[http://coewww.rutgers.edu/linux/lessons/lesson9/shell_script_tutorial.html|aici]]. | despre ''sed'', ''awk'' și multe altele [[http://coewww.rutgers.edu/linux/lessons/lesson9/shell_script_tutorial.html|aici]]. | ||
</note> | </note> | ||
+ | |||
+ | ==== Exerciții ==== | ||
+ | - Scrieți un script care trebuie să schimbe directorul de lucru în ''~''. De ce nu ar merge dacă am scrie pur și simplu ''cd ~'' în script? (Hint: ''source'') | ||
+ | - Mutați-vă la calea ''~/uso-lab/05-cli/support/get-a-life/ex2/'' și rulați scriptul ''just_regular_updates_here.sh''. După rularea scriptului închideți terminalul curent și deschideți unul nou. Continuați să folosiți comenzile de bază (ls, cat). Observați ce se întâmplă și rezolvați problema. | ||
+ | - La calea ''~/uso-lab/05-cli/support/get-a-life/ex3/'' se află fișierul ''image.png''. Inspectați tipul fișierului. Scopul acestui exercițiu este să aflați un mesaj secret. (Hint: ''file'') | ||
+ | - În directorul ''~/uso-lab/05-cli/support/get-a-life/ex4/'' se află numeroase fișiere. Să se creeze o arhivă cu fișierele ce au o dimensiune mai mare de 10MB. | ||
+ | - Să se creeze un script care pornește programul ''firefox'' doar dacă acesta nu rulează deja. Altfel, nu-l pornește, ci doar afișează informații despre el. Configurați acest script să ruleze din ''cron'' la fiecare 5 minute. (Hint: [[https://www.thegeekstuff.com/2011/07/cron-every-5-minutes|cron]]) | ||
+ | - Realizați un script care să creeze câte o arhivă pentru fiecare branch al repository-ului. (Hint: ''man git'', [[https://www.cyberciti.biz/faq/bash-for-loop/|for]]) | ||
+ | - Folosind tot website-ul de [[http://ezprompt.net|aici]], modificați prompt-ul astfel încât să vă arate și branch-ul curent Git pe care vă aflați. | ||
+ | |||
+ | Înainte: | ||
+ | | ||
+ | <code bash> | ||
+ | student@uso:~$ | ||
+ | </code> | ||
+ | | ||
+ | După: | ||
+ | <code bash> | ||
+ | student@uso:~[lab-05-cli]$ | ||
+ | </code> |