Differences

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

Link to this comparison view

uso:laboratoare:new:01-fs:nice-to-know [2019/09/22 23:55]
vlad_mihai.corneci created
uso:laboratoare:new:01-fs:nice-to-know [2019/10/05 12:40] (current)
cristiana.stan [4. Corectare lucru cu fișier header și Makefile]
Line 4: Line 4:
  
 <note important>​ <note important>​
-Pentru acest set de exerciții trebuie să vă aflați în directorul ''​~/​uso.git/labs/''​. Folosiți comanda:+Pentru acest set de exerciții trebuie să vă aflați în directorul ''​~/​uso-lab/''​. Folosiți comanda:
 <​code>​ <​code>​
-cd ~/uso.git/labs+cd ~/uso-lab
 </​code>​ </​code>​
 </​note>​ </​note>​
Line 25: Line 25:
 Pentru a exemplifica redirectarea în fișierul special ''/​dev/​null''​ vom folosi utilitarul/​comanda ''​strace''​. Comanda ''​strace''​ monitorizează apelurile pe care le face o altă comandă către sistemul de operare (''​strace''​ -- //system call tracing//). Pentru început rulăm comanda de mai jos și obținem rezultatul indicat: Pentru a exemplifica redirectarea în fișierul special ''/​dev/​null''​ vom folosi utilitarul/​comanda ''​strace''​. Comanda ''​strace''​ monitorizează apelurile pe care le face o altă comandă către sistemul de operare (''​strace''​ -- //system call tracing//). Pentru început rulăm comanda de mai jos și obținem rezultatul indicat:
 <​code>​ <​code>​
-student@uso:​~/​uso.git/labs$ strace ls+student@uso:​~/​uso-lab$ strace ls
 execve("/​bin/​ls",​ ["​ls"​],​ 0x7ffdde615410 /* 35 vars */) = 0 execve("/​bin/​ls",​ ["​ls"​],​ 0x7ffdde615410 /* 35 vars */) = 0
 brk(NULL) ​                              = 0x5651b5da3000 brk(NULL) ​                              = 0x5651b5da3000
Line 48: Line 48:
 **[1a]** Ne dorim să afișăm la terminal doar rezultatul comenzii ''​strace'',​ adică apelurile realizate de comanda primită ca argument, fără să ne preocupe rezultatul comenzii. Pentru aceasta redirectăm ieșirea standard la ''/​dev/​null'',​ adică în acel fișier special **gaură neagră**. Rulăm acum fără redirectare și cu redirectare comenzile de mai jos pentru a investiga fișierele deschise de comanda ''​ls'':​ **[1a]** Ne dorim să afișăm la terminal doar rezultatul comenzii ''​strace'',​ adică apelurile realizate de comanda primită ca argument, fără să ne preocupe rezultatul comenzii. Pentru aceasta redirectăm ieșirea standard la ''/​dev/​null'',​ adică în acel fișier special **gaură neagră**. Rulăm acum fără redirectare și cu redirectare comenzile de mai jos pentru a investiga fișierele deschise de comanda ''​ls'':​
 <​code>​ <​code>​
-student@uso:​~/​uso.git/labs$ strace -e openat ls+student@uso:​~/​uso-lab$ strace -e openat ls
 openat(AT_FDCWD,​ "/​etc/​ld.so.cache",​ O_RDONLY|O_CLOEXEC) = 3 openat(AT_FDCWD,​ "/​etc/​ld.so.cache",​ O_RDONLY|O_CLOEXEC) = 3
 openat(AT_FDCWD,​ "/​lib/​x86_64-linux-gnu/​libselinux.so.1",​ O_RDONLY|O_CLOEXEC) = 3 openat(AT_FDCWD,​ "/​lib/​x86_64-linux-gnu/​libselinux.so.1",​ O_RDONLY|O_CLOEXEC) = 3
Line 62: Line 62:
 00-intro ​ 01-fs  02-process ​ 03-user ​ 04-appdev ​ 05-cli ​ 06-hw-boot ​ 07-storage ​ 08-net ​ 09-vm 10-sec 11-ctf strace.out 00-intro ​ 01-fs  02-process ​ 03-user ​ 04-appdev ​ 05-cli ​ 06-hw-boot ​ 07-storage ​ 08-net ​ 09-vm 10-sec 11-ctf strace.out
 +++ exited with 0 +++ +++ exited with 0 +++
-student@uso:​~/​uso.git/labs$ strace -e openat ls > /dev/null+student@uso:​~/​uso-lab$ strace -e openat ls > /dev/null
 openat(AT_FDCWD,​ "/​etc/​ld.so.cache",​ O_RDONLY|O_CLOEXEC) = 3 openat(AT_FDCWD,​ "/​etc/​ld.so.cache",​ O_RDONLY|O_CLOEXEC) = 3
 openat(AT_FDCWD,​ "/​lib/​x86_64-linux-gnu/​libselinux.so.1",​ O_RDONLY|O_CLOEXEC) = 3 openat(AT_FDCWD,​ "/​lib/​x86_64-linux-gnu/​libselinux.so.1",​ O_RDONLY|O_CLOEXEC) = 3
Line 84: Line 84:
 **[1b]** Într-o situație ne interesează să redirectăm rezultatul comenzii ''​strace''​ într-un fișier; adică acea înlănțuire de apeluri efectuate de comanda primită ca argument către sistemul de operare. Pentru aceasta, folosim operatorul ''​2>''​ de redirectare a ieșirii de eroare standard (//standard error//) ca mai jos: **[1b]** Într-o situație ne interesează să redirectăm rezultatul comenzii ''​strace''​ într-un fișier; adică acea înlănțuire de apeluri efectuate de comanda primită ca argument către sistemul de operare. Pentru aceasta, folosim operatorul ''​2>''​ de redirectare a ieșirii de eroare standard (//standard error//) ca mai jos:
 <​code>​ <​code>​
-student@uso:​~/​uso.git/labs$ strace -e openat ls 2> strace.out+student@uso:​~/​uso-lab$ strace -e openat ls 2> strace.out
 00-intro ​ 01-fs  02-process ​ 03-user ​ 04-appdev ​ 05-cli ​ 06-hw-boot ​ 07-storage ​ 08-net ​ 09-vm 10-sec 11-ctf 00-intro ​ 01-fs  02-process ​ 03-user ​ 04-appdev ​ 05-cli ​ 06-hw-boot ​ 07-storage ​ 08-net ​ 09-vm 10-sec 11-ctf
 </​code>​ </​code>​
Line 91: Line 91:
 Verificăm faptul că redirectarea a avut loc cu succes afișând conținutul fișierului ''​strace.out''​ cu ajutorul comenzii Verificăm faptul că redirectarea a avut loc cu succes afișând conținutul fișierului ''​strace.out''​ cu ajutorul comenzii
 <​code>​ <​code>​
-student@uso:​~/​uso.git/labs$ cat strace.out+student@uso:​~/​uso-lab$ cat strace.out
 openat(AT_FDCWD,​ "/​etc/​ld.so.cache",​ O_RDONLY|O_CLOEXEC) = 3 openat(AT_FDCWD,​ "/​etc/​ld.so.cache",​ O_RDONLY|O_CLOEXEC) = 3
 openat(AT_FDCWD,​ "/​lib/​x86_64-linux-gnu/​libselinux.so.1",​ O_RDONLY|O_CLOEXEC) = 3 openat(AT_FDCWD,​ "/​lib/​x86_64-linux-gnu/​libselinux.so.1",​ O_RDONLY|O_CLOEXEC) = 3
Line 109: Line 109:
 **[1c]** Ne poate interesa să redirectăm și rezultatul comenzii ''​strace''​ într-un fișier și rezultatul comenzii primite ca argument. În acest caz folosim atât operatorul ''>''​ de redirectare a ieșirii standard (//standard output//) cât și operatorul ''​2>''​ de redirectare a ieșirii de eroare standard (//standard error//). Pentru aceasta folosim comanda: **[1c]** Ne poate interesa să redirectăm și rezultatul comenzii ''​strace''​ într-un fișier și rezultatul comenzii primite ca argument. În acest caz folosim atât operatorul ''>''​ de redirectare a ieșirii standard (//standard output//) cât și operatorul ''​2>''​ de redirectare a ieșirii de eroare standard (//standard error//). Pentru aceasta folosim comanda:
 <​code>​ <​code>​
-student@uso:​~/​uso.git/labs$ strace -e openat ls 2> strace.out > ls.out+student@uso:​~/​uso-lab$ strace -e openat ls 2> strace.out > ls.out
 </​code>​ </​code>​
 În comanda de mai sus am redirectat ieșirea standard (//standard output//), adică rezultatul comenzii ''​ls'',​ în fișierul ''​ls.out''​ și ieșirea de eroare standard (//standard error//), adică rezultatul comenzii ''​strace'',​ în fișierul ''​strace.out''​. Putem verifica acest lucru prin afișarea conținutului celor două fișiere: În comanda de mai sus am redirectat ieșirea standard (//standard output//), adică rezultatul comenzii ''​ls'',​ în fișierul ''​ls.out''​ și ieșirea de eroare standard (//standard error//), adică rezultatul comenzii ''​strace'',​ în fișierul ''​strace.out''​. Putem verifica acest lucru prin afișarea conținutului celor două fișiere:
 <​code>​ <​code>​
-student@uso:​~/​uso.git/labs$ cat strace.out+student@uso:​~/​uso-lab$ cat strace.out
 openat(AT_FDCWD,​ "/​etc/​ld.so.cache",​ O_RDONLY|O_CLOEXEC) = 3 openat(AT_FDCWD,​ "/​etc/​ld.so.cache",​ O_RDONLY|O_CLOEXEC) = 3
 openat(AT_FDCWD,​ "/​lib/​x86_64-linux-gnu/​libselinux.so.1",​ O_RDONLY|O_CLOEXEC) = 3 openat(AT_FDCWD,​ "/​lib/​x86_64-linux-gnu/​libselinux.so.1",​ O_RDONLY|O_CLOEXEC) = 3
Line 126: Line 126:
 openat(AT_FDCWD,​ "​.",​ O_RDONLY|O_NONBLOCK|O_CLOEXEC|O_DIRECTORY) = 3 openat(AT_FDCWD,​ "​.",​ O_RDONLY|O_NONBLOCK|O_CLOEXEC|O_DIRECTORY) = 3
 +++ exited with 0 +++ +++ exited with 0 +++
-student@uso:​~/​uso.git/labs$ cat ls.out+student@uso:​~/​uso-lab$ cat ls.out
 00-intro 00-intro
 01-fs 01-fs
Line 152: Line 152:
 **[1e]** Utilitarul ''​grep''​ este folosit pentru a căuta un șir de caractere într-un fișier. De exemplu comanda de mai jos caută șirul ''​root''​ în fișierul ''/​etc/​passwd'':​ **[1e]** Utilitarul ''​grep''​ este folosit pentru a căuta un șir de caractere într-un fișier. De exemplu comanda de mai jos caută șirul ''​root''​ în fișierul ''/​etc/​passwd'':​
 <​code>​ <​code>​
-student@uso:​~/​uso.git/labs$ grep root /etc/passwd+student@uso:​~/​uso-lab$ grep root /etc/passwd
 root:​x:​0:​0:​root:/​root:/​bin/​bash root:​x:​0:​0:​root:/​root:/​bin/​bash
 </​code>​ </​code>​
 După rularea unei comenzi putem folosi comanda ''​echo $?''​ pentru a vedea dacă s-a rulat cu succes. De exemplu, dacă după rularea comenzii ''​grep''​ de mai sus, rulăm comanda de verificare a unei rulări cu succes, obținem: După rularea unei comenzi putem folosi comanda ''​echo $?''​ pentru a vedea dacă s-a rulat cu succes. De exemplu, dacă după rularea comenzii ''​grep''​ de mai sus, rulăm comanda de verificare a unei rulări cu succes, obținem:
 <​code>​ <​code>​
-student@uso:​~/​uso.git/labs$ echo $?+student@uso:​~/​uso-lab$ echo $?
 0 0
 </​code>​ </​code>​
Line 164: Line 164:
 Construiți o comanda ''​grep''​ cu redirectare care să nu afișeze **nimic** la terminal (nici //standard output//, nici //standard error//). Iar după rularea acelei comenzi să verificați rularea cu succes. Pentru a verifica faptul că ați construit comanda ''​grep''​ cum trebuie, folosind secvența de comenzi de mai jos: Construiți o comanda ''​grep''​ cu redirectare care să nu afișeze **nimic** la terminal (nici //standard output//, nici //standard error//). Iar după rularea acelei comenzi să verificați rularea cu succes. Pentru a verifica faptul că ați construit comanda ''​grep''​ cum trebuie, folosind secvența de comenzi de mai jos:
 <​code>​ <​code>​
-student@uso:​~/​uso.git/labs$ grep '​a'​ /etc/passwd TODO +student@uso:​~/​uso-lab$ grep '​a'​ /etc/passwd TODO 
-student@uso:​~/​uso.git/labs$ echo $?+student@uso:​~/​uso-lab$ echo $?
 0 0
-student@uso:​~/​uso.git/labs$ grep '​aaa'​ /etc/passwd TODO +student@uso:​~/​uso-lab$ grep '​aaa'​ /etc/passwd TODO 
-student@uso:​~/​uso.git/labs$ echo $?+student@uso:​~/​uso-lab$ echo $?
 1 1
-student@uso:​~/​uso.git/labs$ grep '​aaa'​ /etc/pass TODO +student@uso:​~/​uso-lab$ grep '​aaa'​ /etc/pass TODO 
-student@uso:​~/​uso.git/labs$ echo $?+student@uso:​~/​uso-lab$ echo $?
 2 2
 </​code>​ </​code>​
Line 179: Line 179:
  
 <note important>​ <note important>​
-Pentru acest set de exerciții trebuie să vă aflați în directorul ''​~/​uso.git/labs/​01-fs/''​. Folosiți comanda:+Pentru acest set de exerciții trebuie să vă aflați în directorul ''​~/​uso-lab/​01-fs/''​. Folosiți comanda:
 <​code>​ <​code>​
-cd ~/uso.git/labs/01-fs+cd ~/uso-lab/01-fs
 </​code>​ </​code>​
 </​note>​ </​note>​
  
-**[2a]** Aflându-vă în directorul ''​~/​uso.git/labs/​01-fs'',​ creați o arhivă ''​.zip''​ cu numele ''​support-g.zip''​ și o arhivă ''​.tar.gz''​ cu numele ''​support-g.tar.gz''​ cu toate intrările (fișiere, directoare etc.) care încep cu litera ''​g''​ din directorul ''​support/''​.+**[2a]** Aflându-vă în directorul ''​~/​uso-lab/​01-fs'',​ creați o arhivă ''​.zip''​ cu numele ''​support-g.zip''​ și o arhivă ''​.tar.gz''​ cu numele ''​support-g.tar.gz''​ cu toate intrările (fișiere, directoare etc.) care încep cu litera ''​g''​ din directorul ''​support/''​.
  
 Verificați-vă folosind comanda de afișare a conținutului unei arhive ''​.zip'',​ respectiv comanda de afișare a conținutului unei arhive ''​.tar.gz''​. Verificați-vă folosind comanda de afișare a conținutului unei arhive ''​.zip'',​ respectiv comanda de afișare a conținutului unei arhive ''​.tar.gz''​.
  
-**[2b]** Aflându-vă în directorul ''​~/​uso.git/labs/​01-fs'',​ creați o arhivă ''​.zip''​ cu numele ''​01-fs-g.zip''​ și o arhivă ''​.tar.gz''​ cu numele ''​01-fs-g.tar.gz''​ cu toate intrările (fișiere, directoare etc.) care încep cu litera ''​g''​ din directorul ''​support/''​ **și** toate intrările (fișiere, directoare etc.) care încep cu litera ''​g''​ din directorul ''​wiki/''​.+**[2b]** Aflându-vă în directorul ''​~/​uso-lab/​01-fs'',​ creați o arhivă ''​.zip''​ cu numele ''​01-fs-g.zip''​ și o arhivă ''​.tar.gz''​ cu numele ''​01-fs-g.tar.gz''​ cu toate intrările (fișiere, directoare etc.) care încep cu litera ''​g''​ din directorul ''​support/''​ **și** toate intrările (fișiere, directoare etc.) care încep cu litera ''​g''​ din directorul ''​wiki/''​.
  
 Verificați-vă folosind comanda de afișare a conținutului unei arhive ''​.zip'',​ respectiv comanda de afișare a conținutului unei arhive ''​.tar.gz''​. Verificați-vă folosind comanda de afișare a conținutului unei arhive ''​.zip'',​ respectiv comanda de afișare a conținutului unei arhive ''​.tar.gz''​.
Line 195: Line 195:
 **[2c]** Putem actualiza o arhivă adăugând sau ștergând un fișier din cadrul ei. De exemplu în arhiva de ''​01-fs-g.zip''​ de mai sus putem adăuga fișierul ''​wiki/​recap.wiki''​ folosind comanda **[2c]** Putem actualiza o arhivă adăugând sau ștergând un fișier din cadrul ei. De exemplu în arhiva de ''​01-fs-g.zip''​ de mai sus putem adăuga fișierul ''​wiki/​recap.wiki''​ folosind comanda
 <​code>​ <​code>​
-student@uso:​~/​uso.git/labs/01-fs$ zip 01-fs-g.zip wiki/​recap.wiki+student@uso:​~/​uso-lab/01-fs$ zip 01-fs-g.zip wiki/​recap.wiki
   adding: wiki/​recap.wiki (stored 0%)   adding: wiki/​recap.wiki (stored 0%)
 </​code>​ </​code>​
Line 201: Line 201:
 Putem verifica adăugarea cu succes a fișierului ''​wiki/​recap.wiki''​ folosind comanda Putem verifica adăugarea cu succes a fișierului ''​wiki/​recap.wiki''​ folosind comanda
 <​code>​ <​code>​
-student@uso:​~/​uso.git/labs/01-fs$ unzip -l 01-fs-g.zip+student@uso:​~/​uso-lab/01-fs$ unzip -l 01-fs-g.zip
 Archive: ​ 01-fs-g.zip Archive: ​ 01-fs-g.zip
   Length ​     Date    Time    Name   Length ​     Date    Time    Name
Line 217: Line 217:
 Putem șterge fișiere dintr-o arhivă ''​.zip''​. De exemplu, pentru a șterge fișierul ''​wiki/​get-a-life.wiki''​ din arhiva ''​01-fs-g.zip''​ folosim opțiunea ''​-d''​ a comenzii ''​zip'':​ Putem șterge fișiere dintr-o arhivă ''​.zip''​. De exemplu, pentru a șterge fișierul ''​wiki/​get-a-life.wiki''​ din arhiva ''​01-fs-g.zip''​ folosim opțiunea ''​-d''​ a comenzii ''​zip'':​
 <​code>​ <​code>​
-student@uso:​~/​uso.git/labs/01-fs$ zip -d 01-fs-g.zip wiki/​get-a-life.wiki+student@uso:​~/​uso-lab/01-fs$ zip -d 01-fs-g.zip wiki/​get-a-life.wiki
 updating: wiki/​get-a-life.wiki (stored 0%) updating: wiki/​get-a-life.wiki (stored 0%)
 </​code>​ </​code>​
Line 246: Line 246:
 În mod implicit ''​find''​ afișează recursiv toate intrările din directorul curent, așa cum se vede când rulăm comanda În mod implicit ''​find''​ afișează recursiv toate intrările din directorul curent, așa cum se vede când rulăm comanda
 <​code>​ <​code>​
-student@uso:​~/​uso.git/labs/01-fs$ find+student@uso:​~/​uso-lab/01-fs$ find
 . .
 ./wiki ./wiki
Line 265: Line 265:
 Dacă-i dăm un argument un director, va afișa **recursiv** toate intrările din acel director. De exemplu, comanda de mai jos afișează toate intrările din ierarhia ''/​var/​lib/​apt/'':​ Dacă-i dăm un argument un director, va afișa **recursiv** toate intrările din acel director. De exemplu, comanda de mai jos afișează toate intrările din ierarhia ''/​var/​lib/​apt/'':​
 <​code>​ <​code>​
-student@uso:​~/​uso.git/labs/01-fs$ find /​var/​lib/​apt+student@uso:​~/​uso-lab/01-fs$ find /​var/​lib/​apt
 /​var/​lib/​apt /​var/​lib/​apt
 /​var/​lib/​apt/​mirrors /​var/​lib/​apt/​mirrors
Line 276: Line 276:
 **[3a]** Putem afișa folosind ''​find''​ doar anumite tipuri de intrări, de exemplu doar fișiere. Pentru a afișa doar fișierele din directorul curent folosim opțiunea ''​-type f'',​ la fel ca în comanda de mai jos: **[3a]** Putem afișa folosind ''​find''​ doar anumite tipuri de intrări, de exemplu doar fișiere. Pentru a afișa doar fișierele din directorul curent folosim opțiunea ''​-type f'',​ la fel ca în comanda de mai jos:
 <​code>​ <​code>​
-student@uso:​~/​uso.git/labs/01-fs$ find -type f+student@uso:​~/​uso-lab/01-fs$ find -type f
 ./​wiki/​basics.wiki ./​wiki/​basics.wiki
 ./​wiki/​concepts.wiki ./​wiki/​concepts.wiki
Line 289: Line 289:
 **[3b]** Putem afișa fișierele care corespund unui anumit pattern. De exemplu pentru a afișa toate fișierele cu extensia ''​.tex''​ vom folosi opțiunea ''​-name'',​ la fel în comanda de mai jos: **[3b]** Putem afișa fișierele care corespund unui anumit pattern. De exemplu pentru a afișa toate fișierele cu extensia ''​.tex''​ vom folosi opțiunea ''​-name'',​ la fel în comanda de mai jos:
 <​code>​ <​code>​
-student@uso:​~/​uso.git/labs/01-fs$ find -type f -name '​*.tex'​+student@uso:​~/​uso-lab/01-fs$ find -type f -name '​*.tex'​
 ./​support/​nice-to-know/​fruits/​pear.tex ./​support/​nice-to-know/​fruits/​pear.tex
 ./​support/​get-a-life/​4-rename/​5.tex ./​support/​get-a-life/​4-rename/​5.tex
Line 299: Line 299:
 **[3c]** Putem folosi comanda ''​find''​ pentru a aplica o altă comandă pe intrările găsite. De exemplu dacă dorim să ștergem toate fișierele cu extensia ''​.c''​ vom folosi opțiunea ''​-exec'',​ la fel ca în comanda de mai jos: **[3c]** Putem folosi comanda ''​find''​ pentru a aplica o altă comandă pe intrările găsite. De exemplu dacă dorim să ștergem toate fișierele cu extensia ''​.c''​ vom folosi opțiunea ''​-exec'',​ la fel ca în comanda de mai jos:
 <​code>​ <​code>​
-student@uso:​~/​uso.git/labs/01-fs$ find -type f -name '​*.c'​+student@uso:​~/​uso-lab/01-fs$ find -type f -name '​*.c'​
 ./​support/​nice-to-know/​fruits/​apple.c ./​support/​nice-to-know/​fruits/​apple.c
 ./​support/​get-a-life/​2-passwd/​reader.c ./​support/​get-a-life/​2-passwd/​reader.c
-student@uso:​~/​uso.git/labs/01-fs$ find -type f -name '​*.c'​ -exec rm {} \; +student@uso:​~/​uso-lab/01-fs$ find -type f -name '​*.c'​ -exec rm {} \; 
-student@uso:​~/​uso.git/labs/01-fs$ find -type f -name '​*.c'​ +student@uso:​~/​uso-lab/01-fs$ find -type f -name '​*.c'​ 
-student@uso:​~/​uso.git/labs/01-fs$+student@uso:​~/​uso-lab/01-fs$
 </​code>​ </​code>​
 Dacă la început aveam două fișiere cu extensia ''​.c''​ (''​./​support/​nice-to-know/​fruits/​apple.c''​ și ''​./​support/​get-a-life/​2-passwd/​reader.c''​) după rularea comenzii find acele fișiere dispar. Dacă la început aveam două fișiere cu extensia ''​.c''​ (''​./​support/​nice-to-know/​fruits/​apple.c''​ și ''​./​support/​get-a-life/​2-passwd/​reader.c''​) după rularea comenzii find acele fișiere dispar.
Line 325: Line 325:
 ==== 4. Corectare lucru cu fișier header și Makefile ==== ==== 4. Corectare lucru cu fișier header și Makefile ====
  
-În directorul ''​~/​uso.git/labs/​01-fs/​support/​04-compile/''​ găsiți un set de fișiere și un fișier ''​Makefile''​ pentru compilarea lor. Există o eroare ce ține de căi în sistemul de fișiere, astfel că nu merge compilarea în momentul rulării comenzii ''​make''​.+În directorul ''​~/​uso-lab/​01-fs/​support/​nice-to-know/​4-compile/''​ găsiți un set de fișiere și un fișier ''​Makefile''​ pentru compilarea lor. Există o eroare ce ține de căi în sistemul de fișiere, astfel că nu merge compilarea în momentul rulării comenzii ''​make''​.
  
 Corectați eroarea și obțineți fișierul executabil ''​write_hello''​. Corectați eroarea și obțineți fișierul executabil ''​write_hello''​.
Line 331: Line 331:
 ==== 5. Copiere ierarhie pe un stick USB ==== ==== 5. Copiere ierarhie pe un stick USB ====
  
-Conectați un stick USB pe un port USB al sistemului vostru. Folosiți linia de comandă pentru a copia ierarhia curentă (''​~/​uso.git/labs/​01-fs/​support/​04-compile/''​) pe stick.+Conectați un stick USB pe un port USB al sistemului vostru. Folosiți linia de comandă pentru a copia ierarhia curentă (''​~/​uso-lab/​01-fs/​support/​04-compile/''​) pe stick.
  
 <note important>​ <note important>​
Line 354: Line 354:
 Directoarele în care caută shell-ul executabile aferente unei comenzi se găsesc într-o construcție de tip variabilă de mediu numită ''​PATH''​. Vom vorbi mai multe despre variabile și variabile de mediu la un laborator viitor. Pe moment, este suficient să știm că pentru a afișa valoarea variabilei ''​PATH''​ folosim comanda Directoarele în care caută shell-ul executabile aferente unei comenzi se găsesc într-o construcție de tip variabilă de mediu numită ''​PATH''​. Vom vorbi mai multe despre variabile și variabile de mediu la un laborator viitor. Pe moment, este suficient să știm că pentru a afișa valoarea variabilei ''​PATH''​ folosim comanda
 <​code>​ <​code>​
-student@uso:​~/​uso.git/labs/01-fs$ echo $PATH+student@uso:​~/​uso-lab/01-fs$ echo $PATH
 /​usr/​local/​sbin:/​usr/​local/​bin:/​usr/​sbin:/​usr/​bin:/​sbin:/​bin:/​usr/​games:/​usr/​local/​games:/​snap/​bin /​usr/​local/​sbin:/​usr/​local/​bin:/​usr/​sbin:/​usr/​bin:/​sbin:/​bin:/​usr/​games:/​usr/​local/​games:/​snap/​bin
 </​code>​ </​code>​
Line 361: Line 361:
 Calea către executabilul aferent unei comenzi poate fi afișată folosind comanda ''​which''​ urmată de numele comnezii, ca mai jos: Calea către executabilul aferent unei comenzi poate fi afișată folosind comanda ''​which''​ urmată de numele comnezii, ca mai jos:
 <​code>​ <​code>​
-student@uso:​~/​uso.git/labs/01-fs$ which ls+student@uso:​~/​uso-lab/01-fs$ which ls
 /bin/ls /bin/ls
-student@uso:​~/​uso.git/labs/01-fs$ which find+student@uso:​~/​uso-lab/01-fs$ which find
 /​usr/​bin/​find /​usr/​bin/​find
-student@uso:​~/​uso.git/labs/01-fs$ which zip+student@uso:​~/​uso-lab/01-fs$ which zip
 /​usr/​bin/​zip /​usr/​bin/​zip
 </​code>​ </​code>​
Line 372: Line 372:
 Putem verifica faptul că acele fișiere sunt executabile prin folosirea comenzii ''​file''​ urmată de calea către fișierul executabil, ca mai jos: Putem verifica faptul că acele fișiere sunt executabile prin folosirea comenzii ''​file''​ urmată de calea către fișierul executabil, ca mai jos:
 <​code>​ <​code>​
-student@uso:​~/​uso.git/labs/01-fs$ file /bin/ls+student@uso:​~/​uso-lab/01-fs$ file /bin/ls
 /bin/ls: ELF 64-bit LSB shared object, x86-64, version 1 (SYSV), dynamically linked, interpreter /​lib64/​ld-linux-x86-64.so.2,​ for GNU/Linux 3.2.0, BuildID[sha1]=9567f9a28e66f4d7ec4baf31cfbf68d0410f0ae6,​ stripped /bin/ls: ELF 64-bit LSB shared object, x86-64, version 1 (SYSV), dynamically linked, interpreter /​lib64/​ld-linux-x86-64.so.2,​ for GNU/Linux 3.2.0, BuildID[sha1]=9567f9a28e66f4d7ec4baf31cfbf68d0410f0ae6,​ stripped
-student@uso:​~/​uso.git/labs/01-fs$ file /​usr/​bin/​find+student@uso:​~/​uso-lab/01-fs$ file /​usr/​bin/​find
 /​usr/​bin/​find:​ ELF 64-bit LSB shared object, x86-64, version 1 (SYSV), dynamically linked, interpreter /​lib64/​ld-linux-x86-64.so.2,​ for GNU/Linux 3.2.0, BuildID[sha1]=b920f53e0c67a31d8ef07b84b1344f87a0e82d71,​ stripped /​usr/​bin/​find:​ ELF 64-bit LSB shared object, x86-64, version 1 (SYSV), dynamically linked, interpreter /​lib64/​ld-linux-x86-64.so.2,​ for GNU/Linux 3.2.0, BuildID[sha1]=b920f53e0c67a31d8ef07b84b1344f87a0e82d71,​ stripped
-student@uso:​~/​uso.git/labs/01-fs$ file /​usr/​bin/​zip+student@uso:​~/​uso-lab/01-fs$ file /​usr/​bin/​zip
 /​usr/​bin/​zip:​ ELF 64-bit LSB shared object, x86-64, version 1 (SYSV), dynamically linked, interpreter /​lib64/​ld-linux-x86-64.so.2,​ for GNU/Linux 2.6.32, BuildID[sha1]=c828586e6e7cf929500a5b9c04faece9eceed5cc,​ stripped /​usr/​bin/​zip:​ ELF 64-bit LSB shared object, x86-64, version 1 (SYSV), dynamically linked, interpreter /​lib64/​ld-linux-x86-64.so.2,​ for GNU/Linux 2.6.32, BuildID[sha1]=c828586e6e7cf929500a5b9c04faece9eceed5cc,​ stripped
 </​code>​ </​code>​
Line 384: Line 384:
  
 **Bonus**: De ce fișierele executabile pentru ''​useradd''​ și ''​iotop''​ se găsesc într-un director care conține ''​sbin/''​ pe când ''​tar''​ și ''​gzip''​ se găsesc într-un director care conține ''​bin/''​ (fără ''​s''​)?​ Folosiți Internetul și Google pentru aflarea răspunsului. **Bonus**: De ce fișierele executabile pentru ''​useradd''​ și ''​iotop''​ se găsesc într-un director care conține ''​sbin/''​ pe când ''​tar''​ și ''​gzip''​ se găsesc într-un director care conține ''​bin/''​ (fără ''​s''​)?​ Folosiți Internetul și Google pentru aflarea răspunsului.
 +
uso/laboratoare/new/01-fs/nice-to-know.1569185714.txt.gz · Last modified: 2019/09/22 23:55 by vlad_mihai.corneci
CC Attribution-Share Alike 3.0 Unported
www.chimeric.de Valid CSS Driven by DokuWiki do yourself a favour and use a real browser - get firefox!! Recent changes RSS feed Valid XHTML 1.0