This shows you the differences between two versions of the page.
uso:laboratoare:new:01-fs:need-to-know [2019/10/02 16:33] adrian.zatreanu [3. Compilare automata - Makefile (X puncte)] |
uso:laboratoare:new:01-fs:need-to-know [2020/09/08 10:27] (current) razvan.deaconescu [2. Ierarhie de directoare] |
||
---|---|---|---|
Line 1: | Line 1: | ||
===== Need to Know ===== | ===== Need to Know ===== | ||
- | ==== 1. Lucrul cu Sistemul de Fișiere ==== | + | ==== 1. Lucrul cu Sistemul de Fișiere ==== |
Pentru a căuta un fișier în sistemul de fișiere putem folosi comanda **locate**. Aceasta se folosește în felul următor: | Pentru a căuta un fișier în sistemul de fișiere putem folosi comanda **locate**. Aceasta se folosește în felul următor: | ||
<code bash> | <code bash> | ||
Line 9: | Line 9: | ||
Putem observa că după **locate** trebuie să menționăm opțiunile precum și pattern-ul, adică cuvântul cheie pe care îl căutam. | Putem observa că după **locate** trebuie să menționăm opțiunile precum și pattern-ul, adică cuvântul cheie pe care îl căutam. | ||
- | Putem afla aceste opțiuni prin folosirea comenzii **man locate** sau **locate --help**. | + | Putem afla aceste opțiuni prin folosirea comenzii **man locate** sau **locate <nowiki>--</nowiki>help**. |
Vom căuta cuvântul cheie **slayer**, adică fișierul **slayer** în sistemul de fișiere. | Vom căuta cuvântul cheie **slayer**, adică fișierul **slayer** în sistemul de fișiere. | ||
Line 25: | Line 25: | ||
<code bash> | <code bash> | ||
student@uso:~$ locate slayer | student@uso:~$ locate slayer | ||
- | /home/student/uso.git/lab02/demo/slayer | + | /home/student/uso-lab/lab02/demo/slayer |
</code> | </code> | ||
Line 35: | Line 35: | ||
Mai departe vom căuta în interiorul fișierelor dintr-o ierarhie. Vom folosi utilitarul **grep**. Acesta se folosește astfel: | Mai departe vom căuta în interiorul fișierelor dintr-o ierarhie. Vom folosi utilitarul **grep**. Acesta se folosește astfel: | ||
<code bash> | <code bash> | ||
- | student@uso:~/uso.git$ grep --help | + | student@uso:~/uso-lab$ grep --help |
Usage: grep [OPTION]... PATTERN [FILE]... | Usage: grep [OPTION]... PATTERN [FILE]... | ||
Search for PATTERN in each FILE. | Search for PATTERN in each FILE. | ||
Line 41: | Line 41: | ||
</code> | </code> | ||
Cuvântul cheie **grep** urmat de opțiuni și de cuvântul cheie pe care îl căutam. | Cuvântul cheie **grep** urmat de opțiuni și de cuvântul cheie pe care îl căutam. | ||
- | Putem afla aceste opțiuni prin folosirea comenzii **man grep** sau **grep --help** la fel ca la utilitarul **locate**. | + | Putem afla aceste opțiuni prin folosirea comenzii **man grep** sau **grep <nowiki>--</nowiki>help** la fel ca la utilitarul **locate**. |
Astfel, putem observa că există opțiunea **-r** cu care putem căuta recursiv într-o ierarhie de fișiere. | Astfel, putem observa că există opțiunea **-r** cu care putem căuta recursiv într-o ierarhie de fișiere. | ||
- | Vrem să căutăm apariția ''int main()'' in ierarhia de fișiere ''~/uso.git''. Mergem în această ierarhie folosind **cd ~/uso.git**. | + | Vrem să căutăm apariția ''int main()'' in ierarhia de fișiere ''~/uso-lab''. Mergem în această ierarhie folosind **cd ~/uso-lab**. |
<code bash> | <code bash> | ||
- | student@uso:~/uso.git$ grep -r "int main()" | + | student@uso:~/uso-lab$ grep -r "int main()" |
tema1/year/year.c:int main(){ | tema1/year/year.c:int main(){ | ||
lab03/ugly/ugly.c:}int main() | lab03/ugly/ugly.c:}int main() | ||
Line 72: | Line 72: | ||
</code> | </code> | ||
- | **[1c]** Căutați în interiorul fișierelor în ierarhia de fișiere ''~/uso.git'' patternul **"include <stdio.h>"**. Folosiți ''grep recursiv''. | + | **[1c]** Căutați în interiorul fișierelor în ierarhia de fișiere ''~/uso-lab'' patternul **"include <stdio.h>"**. Folosiți ''grep recursiv''. |
- | ==== 2. Ierarhie de directoare ==== | + | ==== 2. Ierarhie de directoare ==== |
Putem crea directoare folosind comanda **mkdir**. Aceasta se folosește în felul următor: | Putem crea directoare folosind comanda **mkdir**. Aceasta se folosește în felul următor: | ||
<code bash> | <code bash> | ||
- | student@uso:~/uso.git$ mkdir --help | + | student@uso:~/uso-lab$ mkdir --help |
Usage: mkdir [OPTION]... DIRECTORY... | Usage: mkdir [OPTION]... DIRECTORY... | ||
Create the DIRECTORY(ies), if they do not already exist. | Create the DIRECTORY(ies), if they do not already exist. | ||
</code> | </code> | ||
Cuvântul cheie **mkdir** urmat de opțiuni și de numele directorului pe care vrem să îl creăm. | Cuvântul cheie **mkdir** urmat de opțiuni și de numele directorului pe care vrem să îl creăm. | ||
- | Putem afla aceste opțiuni prin folosirea comenzii **man mkdir** sau **mkdir --help** la fel ca la utilitarele **locate** și **grep**. | + | Putem afla aceste opțiuni prin folosirea comenzii **man mkdir** sau **mkdir <nowiki>--</nowiki>help** la fel ca la utilitarele **locate** și **grep**. |
- | Să creăm un director pornind de la ''~/uso.git''. Mergem în acest director folosind **cd ~/uso.git** | + | Să creăm un director pornind de la ''~/uso-lab''. Mergem în acest director folosind **cd ~/uso-lab** |
<code bash> | <code bash> | ||
- | student@uso:~/uso.git$ mkdir director_nou | + | student@uso:~/uso-lab$ mkdir director_nou |
- | student@uso:~/uso.git$ ls -l director_nou/ | + | student@uso:~/uso-lab$ ls -l director_nou/ |
total 8 | total 8 | ||
drwxr-xr-x 2 student student 4096 aug 22 23:35 ./ | drwxr-xr-x 2 student student 4096 aug 22 23:35 ./ | ||
Line 94: | Line 94: | ||
</code> | </code> | ||
- | Am folosit utlitarul mkdir fără nicio opțiune. **Atentie!** După fiecare comandă executată este bine să verificăm că aceasta s-a executat cu succes. După cum vedeți, am verificat folosind utlitarul **ls -l**. Să creăm încă un director în cadrul acestuia, dar să rămânem în calea ''~/uso.git''. | + | Am folosit utlitarul mkdir fără nicio opțiune. **Atentie!** După fiecare comandă executată este bine să verificăm că aceasta s-a executat cu succes. După cum vedeți, am verificat folosind utlitarul **ls -l**. Să creăm încă un director în cadrul acestuia, dar să rămânem în calea ''~/uso-lab''. |
<code bash> | <code bash> | ||
- | student@uso:~/uso.git$ mkdir -p director_nou/alt_director | + | student@uso:~/uso-lab$ mkdir -p director_nou/alt_director |
- | student@uso:~/uso.git$ ls -l director_nou/ | + | student@uso:~/uso-lab$ ls -l director_nou/ |
total 4 | total 4 | ||
drwxr-xr-x 2 student student 4096 aug 22 23:38 alt_director | drwxr-xr-x 2 student student 4096 aug 22 23:38 alt_director | ||
Line 103: | Line 103: | ||
Am folosit opțiunea **-p** de data aceasta pentru a crea un director într-o altă cale față de cea curentă. Este echivalent cu: | Am folosit opțiunea **-p** de data aceasta pentru a crea un director într-o altă cale față de cea curentă. Este echivalent cu: | ||
<code bash> | <code bash> | ||
- | student@uso:~/uso.git$ cd director_nou/ | + | student@uso:~/uso-lab$ cd director_nou/ |
- | student@uso:~/uso.git/director_nou$ mkdir un_al2lea_director | + | student@uso:~/uso-lab/director_nou$ mkdir un_al2lea_director |
- | student@uso:~/uso.git/director_nou$ ls -l | + | student@uso:~/uso-lab/director_nou$ ls -l |
total 8 | total 8 | ||
drwxr-xr-x 2 student student 4096 aug 22 23:38 alt_director | drwxr-xr-x 2 student student 4096 aug 22 23:38 alt_director | ||
Line 111: | Line 111: | ||
</code> | </code> | ||
- | **[2a]** Creați o ierarhie de directoare în directorul curent conform celei de mai jos. ''Hint: Frunzele sunt fișiere, nu directoare (nu se termină în /)''. | + | **[2a]** Creați un director ''uso-lab/01-fs/support/troops/''. Creați o ierarhie de directoare în ''uso-lab/01-fs/support/troops/'' conform cele de mai jos (se presupune că sunteți în directorul ''uso-lab/01-fs/support/troops'' ca în prompt). ''Hint: Frunzele sunt fișiere, nu directoare (nu se termină în /)''. |
<code bash> | <code bash> | ||
- | student@uso$ tree . | + | student@uso:~/uso-lab/01-fs/support/troops$ tree . |
. | . | ||
- | |-- ac_dc | + | |-- ac_dc/ |
| |-- angus | | |-- angus | ||
| |-- bon | | |-- bon | ||
Line 126: | Line 126: | ||
| |-- mark | | |-- mark | ||
| `-- phil | | `-- phil | ||
- | |-- cargo | + | |-- cargo/ |
- | |-- hammerfall | + | |-- hammerfall/ |
| |-- anders | | |-- anders | ||
| |-- jesper | | |-- jesper | ||
Line 135: | Line 135: | ||
| |-- pontus | | |-- pontus | ||
| `-- stefan | | `-- stefan | ||
- | |-- iris | + | |-- iris/ |
- | |-- metallica | + | |-- metallica/ |
- | |-- nightwish | + | |-- nightwish/ |
- | |-- nirvana | + | |-- nirvana/ |
- | |-- phoenix | + | |-- phoenix/ |
- | `-- slayer | + | `-- slayer/ |
</code> | </code> | ||
- | Putem muta directorul ''un_al2lea_director'' în ''alt_director'' fiind în ''~/uso.git'': | + | Putem muta directorul ''un_al2lea_director'' în ''alt_director'' fiind în ''~/uso-lab'': |
<code bash> | <code bash> | ||
- | student@uso:~/uso.git/director_nou$ cd ~/uso.git/ | + | student@uso:~/uso-lab/director_nou$ cd ~/uso-lab/ |
- | student@uso:~/uso.git$ mv director_nou/un_al2lea_director/ director_nou/alt_director/ | + | student@uso:~/uso-lab$ mv director_nou/un_al2lea_director/ director_nou/alt_director/ |
- | student@uso:~/uso.git$ ls -l director_nou/ | + | student@uso:~/uso-lab$ ls -l director_nou/ |
total 4 | total 4 | ||
drwxr-xr-x 3 student student 4096 aug 22 23:41 alt_director | drwxr-xr-x 3 student student 4096 aug 22 23:41 alt_director | ||
- | student@uso:~/uso.git$ ls -l director_nou/alt_director/ | + | student@uso:~/uso-lab$ ls -l director_nou/alt_director/ |
total 4 | total 4 | ||
drwxr-xr-x 2 student student 4096 aug 22 23:39 un_al2lea_director | drwxr-xr-x 2 student student 4096 aug 22 23:39 un_al2lea_director | ||
</code> | </code> | ||
- | Putem șterge acel director fiind în ''~/uso.git'': | + | Putem șterge acel director fiind în ''~/uso-lab'': |
<code bash> | <code bash> | ||
- | student@uso:~/uso.git$ rmdir director_nou/alt_director/un_al2lea_director | + | student@uso:~/uso-lab$ rmdir director_nou/alt_director/un_al2lea_director |
- | student@uso:~/uso.git$ ls -l director_nou/alt_director/ | + | student@uso:~/uso-lab$ ls -l director_nou/alt_director/ |
total 0 | total 0 | ||
</code> | </code> | ||
Line 172: | Line 172: | ||
Utilitarul **df** afișează informații despre sistemul de fișiere precum ocuparea acestuia. Folosirea acestuia: | Utilitarul **df** afișează informații despre sistemul de fișiere precum ocuparea acestuia. Folosirea acestuia: | ||
<code bash> | <code bash> | ||
- | student@uso:~/uso.git$ df --help | + | student@uso:~/uso-lab$ df --help |
Usage: df [OPTION]... [FILE]... | Usage: df [OPTION]... [FILE]... | ||
Show information about the file system on which each FILE resides, | Show information about the file system on which each FILE resides, | ||
Line 179: | Line 179: | ||
Cuvântul cheie **df** urmat de opțiuni și de numele fișierului. Fără numele fișierului, afișează informații despre întreg sistemul. | Cuvântul cheie **df** urmat de opțiuni și de numele fișierului. Fără numele fișierului, afișează informații despre întreg sistemul. | ||
- | Putem afla aceste opțiuni prin folosirea comenzii **man df** sau **df --help** la fel ca la utilitarele **locate**, **mkdir** și **grep**. | + | Putem afla aceste opțiuni prin folosirea comenzii **man df** sau **df <nowiki>--</nowiki>help** la fel ca la utilitarele **locate**, **mkdir** și **grep**. |
Redirectarea rezultatului se face prin operatorul **>**. Astfel: | Redirectarea rezultatului se face prin operatorul **>**. Astfel: | ||
<code bash> | <code bash> | ||
- | student@uso:~/uso.git$ df -h > informatii_sistem | + | student@uso:~/uso-lab$ df -h > informatii_sistem |
- | student@uso:~/uso.git$ cat informatii_sistem | + | student@uso:~/uso-lab$ cat informatii_sistem |
Filesystem Size Used Avail Use% Mounted on | Filesystem Size Used Avail Use% Mounted on | ||
udev 968M 0 968M 0% /dev | udev 968M 0 968M 0% /dev | ||
Line 210: | Line 210: | ||
**[2e]** Repetați redirectarea de mai sus în fișierul **ierarhie_ascii**, dar de data aceasta în format ASCII. | **[2e]** Repetați redirectarea de mai sus în fișierul **ierarhie_ascii**, dar de data aceasta în format ASCII. | ||
- | ==== 3. Compilare automata - Makefile ==== | + | ==== 3. Compilare automata - Makefile ==== |
- | În directorul ''~/uso.git/labs/01-fs/support/need-to-know/3-compile'' avem 2 fișiere: Makefile si hello_world.c. Rolul fișierului Makefile este de a compila sursa hello_word.c. Putem compila și executa fișierul obținut astfel: | + | În directorul ''~/uso-lab/01-fs/support/need-to-know/3-compile'' avem 2 fișiere: Makefile si hello_world.c. Rolul fișierului Makefile este de a compila sursa hello_word.c. Putem compila și executa fișierul obținut astfel: |
<code bash> | <code bash> | ||
Line 222: | Line 222: | ||
- | **[3a]** Intrați în directorul ''uso/labs/01-fs/support/need-to-know/''. Rulați executabilul din calea ''3-compile'' obtinut anterior **din directorul curent**. Hint: puteti vedea opțiunile utilitarului **make** folosind **man make** sau **make --help** la fel ca utilitarele folosite precedent. | + | **[3a]** Intrați în directorul ''uso/labs/01-fs/support/need-to-know/''. Rulați executabilul din calea ''3-compile/'' obtinut anterior **din directorul curent**. Rămânând în directorul ''uso/labs/01-fs/support/need-to-know/'', ștergeți executabilul ''hello-world'' din directorul ''3-compile/''. |
- | **[3b]** Rămâneți în directorul ''uso/labs/01-fs/support/need-to-know/''. Copiați ''3-compile/Makefile'' in directorul curent, rulați Makefile și executați binarul obținut. | + | **[3b]** Rămâneți în directorul ''uso/labs/01-fs/support/need-to-know/''. Fără a schimba directorul, folosiți comanda ''make'' pentru a compila fișierul din directorul ''3-compile/''. **Hint**: Folosiți ''man make'' sau ''%%make --help%%'' pentru a vedea documentația comenzii ''make'' și urmăriți (și folosiți) opțiunea ''-C''. |
- | **[3c]** Creați un nou director numit ''nu_intrati'' și în cadrul acestuia un fișier sursă ''manele_2018.c'' în care să afișați un text la alegere. Copiați Makefile-ul folosit anterior și adaptați-l pentru cazul vostru. Compilați executabilul folosind Makefile și rulați executabilul. ''Hint: Pentru a crea un fișier puteți folosi utilitarul vim care primește ca argument un nume de fișier/o cale. În cazul în care fișierul există, se continuă editarea acestuia din starea în care se află, altfel este creat un nou fișier cu acel nume.'' | + | **[3c]** Creați un nou director numit ''nu_intrati'' și în cadrul acestuia un fișier sursă ''manele_2018.c'' în care să afișați un text la alegere. Copiați Makefile-ul folosit anterior și adaptați-l pentru cazul vostru. Compilați executabilul folosind Makefile și rulați executabilul. **Hint**: Pentru a crea un fișier puteți folosi utilitarul vim care primește ca argument un nume de fișier/o cale. În cazul în care fișierul există, se continuă editarea acestuia din starea în care se află, altfel este creat un nou fișier cu acel nume. |
- | ==== 4. Arhive (X puncte) ==== | + | ==== 4. Arhive ==== |
Putem crea archive folosind diferite extensii. E bine să știm să creăm diferite tipuri de arhive deoarece fiecare are beneficiul ei. Astfel, pentru arhiva.zip folosim: | Putem crea archive folosind diferite extensii. E bine să știm să creăm diferite tipuri de arhive deoarece fiecare are beneficiul ei. Astfel, pentru arhiva.zip folosim: | ||
<code bash> | <code bash> | ||
- | student@uso:~/uso.git$ zip backup.zip -r * | + | student@uso:~/uso-lab$ zip backup.zip -r * |
adding: README.md (deflated 18%) | adding: README.md (deflated 18%) | ||
adding: TW Warhammer/ (stored 0%) | adding: TW Warhammer/ (stored 0%) | ||
Line 244: | Line 244: | ||
<code bash> | <code bash> | ||
- | student@uso:~/uso.git$ tar -zcvf backup.tar.gz * | + | student@uso:~/uso-lab$ tar -zcvf backup.tar.gz * |
README.md | README.md | ||
TW Warhammer/ | TW Warhammer/ | ||
Line 254: | Line 254: | ||
Pentru arhiva.tar.bz2: | Pentru arhiva.tar.bz2: | ||
<code bash> | <code bash> | ||
- | student@uso:~/uso.git$ tar -cvjSf backup.tar.bz2 * | + | student@uso:~/uso-lab$ tar -cvjSf backup.tar.bz2 * |
README.md | README.md | ||
TW Warhammer/ | TW Warhammer/ | ||
Line 265: | Line 265: | ||
Putem observa rezultatul: | Putem observa rezultatul: | ||
<code bash> | <code bash> | ||
- | student@uso:~/uso.git$ ls -l | + | student@uso:~/uso-lab$ ls -l |
total 91124 | total 91124 | ||
drwxr-xr-x 15 student student 4096 aug 23 00:58 ./ | drwxr-xr-x 15 student student 4096 aug 23 00:58 ./ | ||
Line 284: | Line 284: | ||
**[4c]** Dezarhivați arhiva într-un director numit **backup**. | **[4c]** Dezarhivați arhiva într-un director numit **backup**. | ||
+ |