Differences

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

Link to this comparison view

uso:laboratoare:laborator-01:files [2020/10/13 23:19]
liza_elena.babu [Exerciții - legături (linkuri)]
— (current)
Line 1: Line 1:
-====== Interacțiunea cu fișiere în linia de comandă ====== 
- 
-Fișierul este unitatea de bază folosită pentru a stoca informații. Fie că este vorba despre un document (tema la mate) sau un joc, fie că este vorba de o configurare în sistemul de operare, sau chiar sistemul de operare, folosim fișiere pentru stocare. 
- 
-Putem interacțioa cu fișiere folosind programe specifice: 
- 
-  * Microsoft Word pentru documente; 
-  * browser (de exemplu, Firefox) pentru o pagină web; 
-  * player audio (de exemplu, Winamp) pentu melodii; 
-  * player video (de exemplu, Vlc) pentru filme. 
- 
-Acestea au în comun o interfață grafică. O altă opțiune este să interacționăm cu fișierele în linia de comandă. Acesta este subiectul acestei sectiuni. 
- 
-Folosim linia de comandă pentru interacțiunea cu fișierele în mai multe cazuri: 
- 
-  * Atunci când sistemul pe care ne aflăm are **doar** linie de comandă; 
-  * Atunci când putem să facem anumite operații **mai repede** decât în interfața grafică; putem folosi automatizarea unor sarcini (taskuri): scriem un script (un fișier de automatizare) o dată și îl executăm de fiecare dată când este nevoie. Există un capitol întreg //​Îmbunătățirea lucrului în linia de comandă// unde vom afla mai multe detalii. 
- 
-Un motiv în plus pentru a folosi linia de comandă este că folosește mult mai puține resurse decât interfața grafică. Astfel, putem să facem mai multe cu mai puține resurse. 
- 
-Componenta ce se ocupă de interpretarea comenzilor se numește //shell//. Shellul citește comenzile date de utilizator, le interpretează și comunică sisteemului de operare ce are de făcut. 
- 
-În acest capitol discutăm despre cum interacționăm cu fișierele în linia de comandă. 
- 
-===== Ierarhie de fișiere ===== 
- 
-Un exemplu de ierarhie de fișier este în secțiunea //Căi în ierarhia de fișiere//. 
- 
-Pentru a vedea fișierele sub formă arborescentă,​ folosim comanda ''​%%tree%%''​. 
- 
-<code bash> 
-student@uso:​~/​comenzi/​mkdir$ tree -L 1 / 
-/ 
-|-- bin 
-|-- boot 
-|-- dev 
-|-- etc 
-|-- home 
-|-- initrd.img -> /​boot/​initrd.img-3.16.0-4-586 
-|-- lib 
-|-- lib64 
-|-- libx32 
-|-- lost+found 
-|-- media 
-|-- mnt 
-|-- opt 
-|-- proc 
-|-- root 
-|-- run 
-|-- sbin 
-|-- srv 
-|-- sys 
-|-- tmp 
-|-- usr 
-|-- var 
-``-- vmlinuz -> boot/​vmlinuz-3.16.0-4-586 
-</​code>​ 
-===== Lucrul cu fișiere și directoare ===== 
- 
-În această secțiune vom învăța să lucrăm cu fișierele și directoarele în linia de comandă: 
- 
-  * afișarea conținutului fișierelor și directoarelor;​ 
-  * crearea de fișiere și directoare; 
-  * ștergerea de fișiere și directoare; 
-  * redenumirea fișierelor și directoarelor;​ 
-  * fișiere și directoare ascunse; 
-  * legături (linkuri); 
-  * execuția programelor. 
- 
-==== Afișarea conținutului unui director ==== 
- 
-Așa cum un dosar are mai multe foi în el, la fel și directoarele au mai multe fișiere și directoare în ele. 
- 
-Pentru a afișa conținutul unui director folosim comanda ''​%%ls%%'':​ 
- 
-<code bash> 
-student@uso:​~$ ls 
-Desktop ​   Downloads ​       Music     ​Public ​   Templates 
-Documents ​ examples.Desktop Pictures ​ snap      Videos 
-</​code>​ 
- 
-Vedem mai multe detalii despre fișierele și directoarele din directorul ''​%%/​home/​student%%''​ (adică directorul **home** al utilizatorului **student**,​ **~**) folosind comanda ''​%%ls%%'':​ 
- 
-<code bash> 
-student@uso:​~$ ls -l 
-total 48 
-drwxr-xr-x 3 student student 4096 Oct 13 12:53 Desktop 
-drwxr-xr-x 2 student student 4096 Sep 30 05:03 Documents 
-drwxr-xr-x 2 student student 4096 Sep 30 05:03 Downloads 
-drwxr-xr-x 2 student student 4096 Sep 30 05:03 Music 
-drwxr-xr-x 2 student student 4096 Sep 30 05:03 Pictures 
-drwxr-xr-x 2 student student 4096 Sep 30 05:03 Public 
-drwxr-xr-x 2 student student 4096 Sep 30 05:03 Templates 
-drwxr-xr-x 2 student student 4096 Sep 30 05:03 Videos 
--rw-r--r-- 1 student student 8980 Sep 24 09:00 examples.desktop 
-drwxr-xr-x 4 student student 4096 Oct  2 03:11 snap 
-</​code>​ 
- 
-Interpretăm rezultatele de mai sus: 
- 
-  - Primul caracter ''​%%-%%''​ ne arată că ''​%%examples.desktop%%''​ este un fișier obișnuit. Primul caracter ''​%%d%%''​ ne arată că ''​%%Desktop%%''​ este director. 
-  - Șirurile ''​%%rw-r--r--%%''​ (pentru ''​%%romania%%''​) și ''​%%rwxr-xr-x%%''​ (pentru ''​%%Desktop%%''​) se referă la permisiuni de acces. Vorbim despre permisiuni de acces în capitolul //​Îmbunătățirea lucrului în linia de comandă//. 
-  - Următorul număr îl îgnorăm pentru moment. 
-  - Următoarele două cuvinte, ''​%%student%%'',​ se referă tot la permisiuni și ownership; le vom discuta într-un capitol ulteror. 
-  - Numărul ''​%% 8980%%''​ arată dimensiunea fișierului ''​%%examples.desktop%%''​. Observăm că directorul ''​%%Desktop%%''​ are dimensiunea de 4096 octeți (//​bytes//​);​ 
-  - Urmează 3 coloane ce arată momentul ultimei modificări O accesare poate înseamna creare sau modificare. Citirea nu schimbă această dată. 
-  - La final este afișat numele fișierului sau a directorului. 
- 
-=== Exerciții - afișarea conținutului directoarelor === 
- 
-  * Afișați conținutul directoarelor **/usr**, **/tmp**, **/etc**, **/home**. 
- 
-==== Crearea fișierelor ==== 
- 
-Există situații când vrem să creăm fișiere. De exemplu vrem să scriem cod sau să luăm notițe la un curs. 
- 
-Fișierele se creează folosind utilitarul ''​%%touch%%''​. 
- 
-Creăm un fișier astfel: 
- 
-<code bash> 
-student@uso:​~$ ls cities 
-ls: cannot access cities: No such file or directory 
-student@uso:​~$ touch cities 
-student@uso:​~$ ls cities 
-cities 
-</​code>​ 
- 
-Dacă vrem să creăm un fișier cu numele ''​%%orașe romania%%'',​ adică vrem ca numele fișierului să conțină caracterul //spațiu (space)//, folosim tot comanda ''​%%touch%%''​ ca în exemplul de mai jos: 
- 
-<code bash> 
-student@uso:​~$ touch cities romania 
-student@uso:​~$ ls -l 
-(...) 
--rw-rw-r-- 1 student student ​   0 Oct 13 13:02 cities 
--rw-r--r-- 1 student student 8980 Sep 24 09:00 examples.desktop 
--rw-rw-r-- 1 student student ​   0 Oct 13 13:02 romania 
-drwxr-xr-x 4 student student 4096 Oct  2 03:11 snap 
-</​code>​ 
-Observăm că în comanda de mai sus am încercat să creăm un fișier numit ''​%%cities romania%%'',​ însă au fost create două fișiere. Pentru a crea un fișier cu //spații (space)// inclus în nume este nevoie să folosim ghilimelele la începutul și sfârșitul numelui astfel: ''​%%touch "​cities romania"​%%''​. 
- 
-<code bash> 
-student@uso:​~$ touch "​cities in romania"​ 
-student@uso:​~$ ls -l 
-(...) 
--rw-rw-r-- 1 student student ​   0 Oct 13 13:02  cities 
--rw-rw-r-- 1 student student ​   0 Oct 13 13:03 '​cities in romania'​ 
--rw-r--r-- 1 student student 8980 Sep 24 09:00  examples.desktop 
--rw-rw-r-- 1 student student ​   0 Oct 13 13:02  romania 
-drwxr-xr-x 4 student student 4096 Oct  2 03:11  snap 
-</​code>​ 
-Acum avem în directorul ''​%%~%%''​ 3 fișiere în plus: ''​%%cities%%'',​ ''​%%cities in romania%%'',​ ''​%%romania%%''​. Zero-ul //(0)// din linia ''​%%-rw-r--r-- 1 student student 0 Oct 13 13:02 cities%%''​ ne arată că fișierul cities are 0 bytes, adică este gol. Toate cele 3 fișiere sunt goale. 
- 
-Ce se va întâmpla dacă executăm ''​%%touch%%''​ pe un fișier existent? 
- 
-Creăm un nou fișier cu numele ''​%%romania%%''​ folosind comanda ''​%%touch%%'':​ 
- 
-<code bash> 
-student@uso:​~$ ls -l 
-(...) 
--rw-rw-r-- 1 student student ​   0 Oct 13 13:02  cities 
--rw-rw-r-- 1 student student ​   0 Oct 13 13:03 '​cities in romania'​ 
--rw-r--r-- 1 student student 8980 Sep 24 09:00  examples.desktop 
--rw-rw-r-- 1 student student ​   0 Oct 13 13:02  romania 
-drwxr-xr-x 4 student student 4096 Oct  2 03:11  snap 
-student@uso:​~$ touch romania 
-student@uso:​~$ ls -l 
-(...) 
--rw-rw-r-- 1 student student ​   0 Oct 13 13:02  cities 
--rw-rw-r-- 1 student student ​   0 Oct 13 13:03 '​cities in romania'​ 
--rw-r--r-- 1 student student 8980 Sep 24 09:00  examples.desktop 
--rw-rw-r-- 1 student student ​   0 Oct 13 13:05  romania 
-drwxr-xr-x 4 student student 4096 Oct  2 03:11  snap 
-</​code>​ 
-În continuare avem tot 3 fișiere în plus în directorul ''​%%~%%''​. Ne uităm la liniile ''​%%-rw-r--r-- 1 student student 0 Oct 13 13:02 romania%%''​ //(de dinainte)// și ''​%%-rw-r--r-- 1 student student 0 Oct 13 13:05 romania%%''​ (**de după**) și vedem că diferă timpul. Este vorba despre timpul la care a fost ultima dată accesat fișierul ''​%%romania%%''​. 
- 
-==== Crearea directoarelor ==== 
- 
-Este util să creăm directoarele atunci când vrem să păstrăm fișierele din sistem într-un mod organizat. De exemplu, putem crea câte un director pentru fiecare an de licență. Pentru fiecare an/​director,​ cream câte un director pentru fiecare materie si pentru fiecare materie putem să facem directoare pentru teme, laboratoare,​ cursuri etc. 
- 
-Creăm directoarele folosind utilitarul ''​%%mkdir%%''​. Etimologia comenzii provine din limba engleză - //make directory//​. 
- 
-Creăm un directoarele ''​%%GameOfThrones%%''​ și ''​%%Avengers%%''​ în directorul ''​%%~%%''​ ca în exemplul de mai jos: 
- 
-<code bash> 
-student@uso:​~$ mkdir GameOfThrones 
-student@uso:​~$ mkdir Avengers 
-student@uso:​~$ ls -l 
-total 56 
-drwxrwxr-x 2 student student 4096 Oct 13 13:17  Avengers 
-(...) 
-drwxrwxr-x 2 student student 4096 Oct 13 13:17  GameOfThrones 
-(...) 
-</​code>​ 
-Am creat 2 directoare noi: ''​%%Avengers%%''​ și ''​%%GameOfThrones%%''​. 
- 
-=== Exerciții - creare fișiere și directoare === 
- 
-  * Creați un director numit "​WinnieThePooh"​ și unul numit "​TomSiJerry"​. 
-  * Creați fișierele "Iron Man", "​Hulk",​ "​Thor",​ "​Captain America"​ (**cu spațiu**) în directorul "​Avengers";​ afișați fișierele din director; 
-  * Creați fișierele "​Arya",​ "​Daenerys Targaryen"​ (**cu spațiu**), "Jon Snow", "​Tyrion Lannister"​ în directorul "​GameOfThrones";​ afișați fișierele din director. 
- 
- 
-<note important>​ 
-Este important de reținut: orice comandă executați, aceasta trebuie succedată de o verificare. De exemplu, la crearea unui fișier (''​%%touch%%''​) sau director (''​%%mkdir%%''​),​ executăm comanda de verificare ''​%%ls%%''​. 
-</​note>​ 
- 
-==== Afișarea conținutului unui fișier ==== 
- 
-Afișăm rapid conținutul fișierului ''​%%Arya%%''​ din directorul ''​%%GameOfThrones%%''​ folosind comanda ''​%%cat%%'':​ 
- 
-<code bash> 
-student@uso:​~$ cat GameOfThrones/​Arya 
-student@uso:​~$ 
-</​code>​ 
- 
-Comanda ''​%%cat%%''​ nu a afișat nimic pentru că fișierul ''​%%Arya%%''​ este gol. 
- 
-Scriem textul ''​%%A girl has no name%%''​ în fișierul ''​%%Arya%%''​ folosind comanda ''​%%echo%%'':​ 
- 
-<code bash> 
-student@uso:​~$ echo "A girl has no name" > "​GameOfThrones/​Arya"​ 
-student@uso:​~$ cat "​GameOfThrones/​Arya"​ 
-A girl has no name 
-</​code>​ 
- 
-O altă metodă este de a folosi un editor de text: **vim**, **gedit**, **emacs**, **nano**, **sublime**,​ etc. Vom detalia utilizarea unui editor de text în subsectiunea //Editor de text//. 
- 
-==== Ștergerea fișierelor ==== 
- 
-Ștergem fișierul "​Hulk"​ din directorul "​Avengers"​ folosind utilitarul ''​%%rm%%'':​ 
- 
-<code bash> 
-student@uso:​~$ ls Avengers/ 
-Captain America ​ Hulk  Iron Man  Thor 
-student@uso:​~$ rm Avengers/​Hulk 
-student@uso:​~$ ls Avengers/ 
-Captain America ​ Iron Man  Thor 
-</​code>​ 
-La prima comandă am afișat ce fișiere sunt în directorul ''​%%Avengers%%''​. Am folosit utiltarul ''​%%rm%%''​ pentru a șterge fișierul ''​%%Hulk%%''​ din directorul ''​%%Avengers%%''​. În final am verificat că fișierul ''​%%Hulk%%''​ nu mai există în directorul ''​%%Avengers%%''​. 
- 
-==== Ștergerea directoarelor ==== 
- 
-Directoarele se șterg folosind comanda ''​%%rmdir%%''​. Etimologia comenzii provine din engleză - //remove directory//​. 
- 
-Creăm directorul "​LordOfTheRings"​ folosind comanda ''​%%mkdir%%''​ după care îl ștergem folosind comanda ''​%%rmdir%%'':​ 
- 
-<code bash> 
-student@uso:​~$ mkdir LordOfTheRings 
-student@uso:​~$ ls -l 
-total 60 
-drwxr-xr-x 2 student student 4096 Sep 29 18:02 Avengers 
-(...) 
-drwxr-xr-x 2 student student 4096 Sep 29 17:44 GameOfThrones 
-drwxr-xr-x 2 student student 4096 Sep 29 18:09 LordOfTheRings 
-(...) 
-student@uso:​~$ rmdir LordOfTheRings 
-student@uso:​~$ ls -l 
-total 56 
-drwxr-xr-x 2 student student 4096 Sep 29 18:02 Avengers 
-(...) 
-drwxr-xr-x 2 student student 4096 Sep 29 17:44 GameOfThrones 
-(...) 
-</​code>​ 
-Am creat un director ''​%%LordOfTheRings%%''​ folosind utilitarul ''​%%mkdir%%''​. Am verificat crearea acestuia. În final l-am șters folosind utilitarul ''​%%rmdir%%''​ și am verificat că a fost șters. 
- 
-<note important>​ 
-Comanda ''​%%rmdir%%''​ pe un director care nu este gol (care conține cel puțin un alt fișier sau director) nu funcționează. 
-</​note>​ 
- 
-<code bash> 
-student@uso:​~$ rmdir Avengers/ 
-rmdir: failed to remove '​Avengers/':​ Directory not empty 
-</​code>​ 
-Pentru a șterge un director care **nu** este gol, adică un director care are cel puțin un fișier sau director în el, folosim utilitarul ''​%%rm%%''​ cu opțiunea de recursivitate ''​%%-r%%'':​ ''​%%rm -r%%''​. Aceasta permite ștergerea întregii ierarhii de fișiere din director, pe scurt: ștergerea întregului director. 
- 
-<code bash> 
-student@uso:​~$ ls -l 
-total 56 
-drwxr-xr-x 2 student student 4096 Sep 29 18:02 Avengers 
-(...) 
-drwxr-xr-x 2 student student 4096 Sep 29 17:44 GameOfThrones 
-(...) 
-student@uso:​~$ rm -r Avengers/ 
-student@uso:​~$ ls -l 
-total 52 
-(...) 
-drwxr-xr-x 2 student student 4096 Sep 29 17:44 GameOfThrones 
-(...) 
-</​code>​ 
- 
- 
-<note important>​ 
-După executarea comenzii, verificăm corectitudinea operației. Trebuie să verificăm și să nu presupunem că o comandă s-a executat. Lipsa unei verifică poate duce la erori și mult timp pierdut din partea noastră. 
-</​note>​ 
-==== Redenumirea și mutarea fișierelor și directoarelor ==== 
- 
-Fișierele și directoarele se redenumesc în mod similar, folosind comanda ''​%%mv%%''​ astfel: ''​%%mv nume_actual nume_nou%%''​. 
- 
-Redenumim fișierele si directoarele folosind comanda ''​%%mv%%'':​ 
- 
-<code bash> 
-student@uso:​~$ ls 
-GameOfThrones 
-student@uso:​~$ mv GameOfThrones ThroneOfGames 
-student@uso:​~$ ls 
-ThroneOfGames 
-</​code>​ 
-Am redenumit fișierul ''​%%GameOfThrones%%''​ în ''​%%ThroneOfGames%%''​. 
- 
-Un alt rol al comenzii ''​%%mv%%''​ este de a muta fișierele și directoarele,​ în ierarhia de fișiere, dintr-un loc în altul. 
- 
-Mutăm directorul ''​%%GameOfThrones%%''​ (cu tot conținutul acestuia) la calea ''​%%/​tmp/​%%''​ folosind comanda ''​%%mv%%'':​ 
- 
-<code bash> 
-student@uso:​~$ ls 
-Avengers ​ GameOfThrones 
-student@uso:​~$ mv GameOfThrones/​ /tmp/ 
-student@uso:​~$ ls /tmp/ 
-GameOfThrones ​ ssh-ApUMKI3HSJ 
-student@uso:​~$ ls /tmp/ 
-GameOfThrones ​ ssh-ApUMKI3HSJ 
-student@uso:​~$ ls 
-Avengers 
-</​code>​ 
-Acum directorul ''​%%GameOfThrones%%''​ se află în calea ''​%%/​tmp/​GameOfThrones%%''​. Am verificat folosind ''​%%ls%%''​ că nu se mai află în directorul curent și că există în directorul ''​%%/​tmp/​%%''​. 
- 
-Mutăm înapoi directorul ''​%%GameOfThrones%%''​ (cu tot conținutul acestuia) folosind cale relativă, pentru a indica directorul, și cale absolută, pentru a indica locul unde vrem să ajungă directorul folosind ''​%%mv%%'':​ 
- 
-<code bash> 
-student@uso:​~$ mv ../​../​../​../​tmp/​GameOfThrones/​ /​home/​student/​ 
-student@uso:​~$ ls 
-Avengers ​ GameOfThrones 
-</​code>​ 
-Am verificat că directorul ''​%%GameOfThrones%%''​ se află la calea indicată (calea curentă). 
- 
-<​note>​ 
-Observăm că putem folosi atât căi relative cât și căi absolute ca argumente pentru comanda ''​%%mv%%''​ de mutare / redenumire de fișiere și directoare. 
-</​note>​ 
- 
-=== Exerciții - redenumire și mutare === 
- 
-  - Creați un director ''​%%Vikings%%''​ în directorul home al vostru. 
-  - Creați fișierele ''​%%Ragnar%%'',​ ''​%%Rollo%%'',​ ''​%%Lagertha%%''​ în directorul ''​%%Vikings%%''​. 
-  - Verificați că directorul și fișierele au fost mutate. 
-  - Mutati directorul (împreună cu întreaga ierarhie de fișiere) la locația ''​%%/​tmp/​%%''​. 
-  - Verificați că directorul și ierarhia de fișiere au fost mutate. 
-  - Creați un director ''​%%NBA%%''​ în directorul home al vostru. 
-  - Creați fișierele ''​%%MichaelJordan%%'',​ ''​%%LeBronJames%%'',​ ''​%%DwayneWade%%''​ și ''​%%KobeBryant%%''​ în directorul ''​%%NBA%%''​. 
-  - Verificați că directorul și fișierele au fost mutate. 
-  - Mutați directorul ''​%%NBA%%''​ (împreună cu întreaga ierarhie de fișiere) în directorul ''​%%Vikings%%''​. 
-  - Verificați că directorul și ierarhia de fișiere au fost mutate. 
-  - Redenumiți directorul ''​%%GameOfThrones%%''​ în ''​%%ThronesInTheGame%%''​. 
-  - Mutați fișierele din interiorul directorului ''​%%ThronesInTheGame%%''​ în ''​%%/​tmp%%''​. 
-  - Verificați operațiile. 
-  - Mutați directorul înapoi la locatia inițială folosind atât căi relative cât și căi absolute. 
- 
-==== Copierea fișierelor și directoarelor ==== 
- 
-Copiem fișierul ''​%%Thor%%''​ în directorul ''​%%/​tmp/​%%''​ folosind ''​%%cp%%'':​ 
- 
-<code bash> 
-student@uso:​~$ cp Avengers/​Thor /tmp/ 
-student@uso:​~$ ls /tmp/ 
-Thor  ssh-ApUMKI3HSJ 
-</​code>​ 
-Sintaxa este similară comenzii ''​%%mv%%''​. Acum fișierul ''​%%Thor%%''​ este atât în ''​%%/​home/​student/​Avengers/​Thor%%'',​ cât și în ''​%%/​tmp/​Thor%%''​. 
- 
-<code bash> 
-student@uso:​~$ cp Avengers/ /tmp/ 
-cp: omitting directory '​Avengers/'​ 
-</​code>​ 
-Observăm că nu se poate copia un director ce conține alte fișiere sau directoare. 
- 
-Pentru a copia în altă parte un director care nu este gol, trebuie să folosim comanda ''​%%cp -r%%'':​ 
- 
-<code bash> 
-student@uso:​~$ cp -r Avengers/ /tmp/ 
-student@uso:​~$ ls -l /tmp/ 
-total 8 
-drwxr-xr-x 2 student student 4096 Sep 29 19:06 Avengers 
--rw-r--r-- 1 student student ​   0 Sep 29 19:04 Thor 
-drwx------ 2 student student 4096 Sep 29 13:45 ssh-ApUMKI3HSJ 
-student@uso:​~$ ls -l /​tmp/​Avengers/​ 
-total 0 
--rw-r--r-- 1 student student 0 Sep 29 19:06 Captain America 
--rw-r--r-- 1 student student 0 Sep 29 19:06 Iron Man 
--rw-r--r-- 1 student student 0 Sep 29 19:06 Thor 
-</​code>​ 
-Am copiat directorul ''​%%Avengers%%''​ și conținutul acestuia din calea curentă în directorul ''​%%/​tmp%%''​. Observăm că s-a copiat întreaga ierarhie de fișiere/​directoare de sub directorul ''​%%Avengers%%''​. Acesta se află acum în ambele locuri. 
- 
-==== Fișiere și directoare ascunse ==== 
- 
-Un fișier sau director este ascuns atunci când nu apare în mod normal în ierarhia de fișiere. De exemplu, atunci când executăm într-un director comanda ''​%%ls%%'',​ acesta nu apare. 
- 
-Există câteva motive pentru care vrem să ascundem un fișier sau director: 
- 
-  * Există fișiere pe care nu vrem să le vedem în mod normal (fișiere de configurare;​ ex: ''​%%.profile%%''​);​ 
-  * Există comenzi care șterg toate fișierele dintr-un director fără a șterge directorul (''​%%rm Avengers/​*%%''​). Acestea nu au efect asupra fișierelor ascunse; 
-  * Vrem să facem anumite fișiere puțin mai greu de găsit. 
- 
-Vedem fișiere și directoare ascunse folosind comanda ''​%%ls -a%%'':​ 
- 
-<code bash> 
-student@uso:​~$ ls -al 
-total 56 
-drwxr-xr-x 5 student student 4096 Sep 29 18:41 . 
-drwxr-xr-x 4 student student 4096 Sep 29 18:35 .. 
-drwxr-xr-x 2 student student 4096 Sep 29 18:20 Avengers 
-(...) 
-drwxr-xr-x 2 student student 4096 Sep 29 17:44 GameOfThrones 
-(...) 
-</​code>​ 
-Opțiunea ''​%%-a%%''​ vine de la //all//, adică vrem să vedem toate fișierele: și cele vizibile și cele ascunse. 
- 
-Observăm două directoare noi ''​%%.%%''​ și ''​%%..%%''​. Directorul ''​%%.%%''​ este o referință la directorul curent, iar ''​%%..%%''​ este o referință la directorul părinte. 
- 
-Afișăm conținutul directorului părinte folosind ''​%%ls -l%%'':​ 
- 
-<code bash> 
-student@uso:​~$ ls -l .. 
-total 56 
-drwxr-xr-x 20 student ​ student ​ 4096 Oct 13 13:38 student 
-</​code>​ 
-Directorul ''​%%..%%''​ este în cazul nostru echivalent cu ''​%%/​home%%''​. 
- 
-Creăm fișiere ascunse punând un punct //(.)// în fața numelui: 
- 
-<code bash> 
-student@uso:​~/​Avengers$ ls -l 
-total 0 
--rw-r--r-- 1 student student 0 Sep 29 18:20 Captain America 
--rw-r--r-- 1 student student 0 Sep 29 18:20 Iron Man 
--rw-r--r-- 1 student student 0 Sep 29 18:20 Thor 
-student@uso:​~/​Avengers$ touch .Hulk 
-student@uso:​~/​Avengers$ ls -l 
-total 0 
--rw-r--r-- 1 student student 0 Sep 29 18:20 Captain America 
--rw-r--r-- 1 student student 0 Sep 29 18:20 Iron Man 
--rw-r--r-- 1 student student 0 Sep 29 18:20 Thor 
-student@uso:​~/​Avengers$ ls -al 
-total 8 
-drwxr-xr-x 2 student student 4096 Oct  6 16:44 . 
-drwxr-xr-x 5 student student 4096 Sep 29 19:14 .. 
--rw-r--r-- 1 student student ​   0 Oct  6 16:44 .Hulk 
--rw-r--r-- 1 student student ​   0 Sep 29 18:20 Captain America 
--rw-r--r-- 1 student student ​   0 Sep 29 18:20 Iron Man 
--rw-r--r-- 1 student student ​   0 Sep 29 18:20 Thor 
-</​code>​ 
-Am creat fișierul ascuns ''​%%.Hulk%%''​. Observăm că acesta nu apare la execuția ''​%%ls -l%%'',​ dar apare la execuția comenzii ''​%%ls -al%%''​. 
- 
-Similar, creăm directoare ascunse punând un //(.)// în fața numelui: 
- 
-<code bash> 
-student@uso:​~$ mkdir .LordOfTheRings 
-student@uso:​~$ ls 
-Avengers ​ GameOfThrones 
-student@uso:​~$ ls -al 
-total 20 
-drwxr-xr-x 5 student student 4096 Sep 29 18:41 . 
-drwxr-xr-x 4 student student 4096 Sep 29 18:35 .. 
-drwxr-xr-x 2 student student 4096 Sep 29 18:41 .LordOfTheRings 
-drwxr-xr-x 2 student student 4096 Sep 29 18:20 Avengers 
-(...) 
-drwxr-xr-x 2 student student 4096 Sep 29 17:44 GameOfThrones 
-(...) 
-</​code>​ 
-Am creat directorul ascuns ''​%%.LordOfTheRings%%''​. 
- 
-=== Exerciții - creare fișiere/​directoare ascunse === 
- 
-  - Creați un director cu numele ''​%%.LordOfTheRings%%''​ în directorul vostru home. 
-  - Intrați în directorul creat. 
-  - Creați 3 fișiere ascunse cu numele ''​%%Aragorn%%'',​ ''​%%Legolas%%'',​ ''​%%Frodo Baggins%%''​. 
-  - Verificați operațiile de creare (director și fișiere). 
-  - Creați un director cu numele ''​%%stiri%%''​ în directorul vostru home. 
-  - Creați fișierele ''​%%hotnews%%'',​ ''​%%biziday%%'',​ ''​%%digi24%%''​. 
-  - Creați fișierul ascuns ''​%%.cancan%%''​. 
-  - Afișați **toate** fișierele din director. 
-  - Afișați fișierele din director care **nu** sunt ascunse. 
-  - Creați un director ''​%%tv%%''​ în directorul vostru home. 
-  - Creați fișierele ''​%%ProTV%%'',​ ''​%%Digi24%%'',​ ''​%%Eurosport%%''​. 
-  - Creați fișierele ascunse ''​%%Antena3%%'',​ ''​%%Romania24%%''​. 
-  - Afișați **toate** fișierele din director. 
-  - Afișați fișierele din director care **nu** sunt ascunse. 
-  - Copiați directorul ''​%%stiri%%''​ împreună cu fișierele de sub acesta în directorul ''​%%tv%%''​. 
-  - Mutați fișierele ''​%%.Antena3%%''​ și ''​%%.Romania24%%''​ în directorul ''​%%/​tmp%%''​. 
- 
- 
-==== Exerciții - ierarhii de fișiere și directoare ==== 
- 
-  - Afișați ierarhia de fișiere pornind de la directorul vostru home (''​%%~%%''​). 
-  - Creați următoarea ierarhie pornind de la directorul ''​%%/​home/​student/​%%'':​ 
- 
-<code bash> 
-student@uso:​~$ tree 
-. 
-├── prime_video 
-├── Hulu 
-│   ​└── Favorite 
-├── Netflix 
-│   ​├── Filme 
-│   ​│ ​  ​├── filme_2020.txt 
-│   ​│ ​  ​├── filme_2019.txt 
-│   ​│ ​  ​├── filme_vechi 
-│   ​└── Seriale 
-│       ​├── seriale_2020 
-│       ​├── seriale_2019.txt 
-│       ​└── seriale_vechi 
-├── HBO_GO 
-│   ​├── Modern_Family.txt 
-│   ​└── Harry_Potter 
-└── YouTubeTV 
-</​code>​ 
- 
-  - Copiați întreaga ierarhie în calea ''​%%/​tmp%%''​. Folosiți comanda ''​%%cp%%''​. (Hint: recursivitate). 
-  - Confirmați copierea prin afișarea directorului părinte. 
-  - Ștergeți fișierul ''​%%Favorite%%''​ din directorul ''​%%Hulu%%''​. Confirmați ștergerea prin afișarea directorului părinte. 
-  - Ștergeți directorul ''​%%prime video%%''​. 
-  - Confirmați ștergerea prin afișarea directorului părinte. 
-  - Ștergeți directorul ''​%%HBO GO%%''​. 
-  - Găsiți parametrii corespunzători ștergerii unui director care nu este gol. 
-  - Confirmați ștergerea prin afișarea directorului părinte. 
-  - Ștergeri ierarhia de directoare începând cu directorul ''​%%Netflix%%''​. 
-  - Confirmați ștergerea prin afișarea directorului părinte. 
-  - Creați ierarhia de directoare de mai jos. 
-  - Căutați parametrul necesar pentru ''​%%mkdir%%''​ pentru a crea toată ierarhia //dintr-o singură executare a comenzii//: 
- 
-<code bash> 
-student@uso:​~$ tree 
-. 
-└─── Cale 
-    └─── Lungă 
-         ​└─── De 
-              └─── Directoare 
-</​code>​ 
- 
-  - Mutați ierarhia copiată anterior în ''​%%/​tmp%%''​ în directorul ''​%%Directoare%%''​. 
- 
-===== Legături (Links) ===== 
- 
-O legătură este o scurtătură către un fișier sau un director. Acestea sunt necesare atunci când nu vrem să parcurgem toată ierarhia de fișiere. De exemplu, punem executabilul jocului //​Warcraft3//​ pe Desktop pentru a-l accesa rapid. Mai multe legături pot referi același director/​fișier. 
- 
-Caracteristici:​ 
- 
-  * Similar //​Shortcut//​ din Windows; 
-  * Orice modificare în fisierul țintă, se vede și în fișierul legătură; 
-  * Este o legătură către numele fișierului și nu către conținut; 
-  * Dacă fișierul este mutat sau redenumit, legătura se pierde; 
-  * Putem crea legături către directoare. 
- 
-Creăm o legătură simbolică către directorul ''​%%/​home/​student/​%%''​ folosind comanda ''​%%ln -s%%'':​ 
- 
-<code bash> 
-student@uso:​~/​comenzi/​ls$ ln -s ~/ . 
-student@uso:​~/​comenzi/​ls$ ls -l 
-total 0 
-lrwxrwxrwx 1 student student 28 Oct  6 17:58 mkdir -> /​home/​student/​ 
-</​code>​ 
-Observăm că fișierul creat este //link// (are primul caracter ''​%%l%%''​). Mai mult, observăm că acest link este o scurtătură către calea ''​%%/​home/​student/​%%''​. 
- 
-<code bash> 
-student@uso:​~/​comenzi/​ls$ ls -l mkdir/ 
-total 8 
-drwxr-xr-x 2 student student 4096 Oct  6 16:44 Avengers 
-drwxr-xr-x 2 student student 4096 Oct  6 16:50 GameOfThrones 
-student@uso:​~/​comenzi/​ls$ ls -l mkdir/​Avengers/​ 
-total 0 
--rw-r--r-- 1 student student 0 Sep 29 18:20 Captain America 
--rw-r--r-- 1 student student 0 Sep 29 18:20 Iron Man 
--rw-r--r-- 1 student student 0 Sep 29 18:20 Thor 
-</​code>​ 
-Observăm că putem accesa întreaga ierarhie de fișiere și directoare. 
- 
-Vedem în continuare ce se întâmplă dacă ștergem un fișier. 
- 
-<code bash> 
-student@uso:/​tmp$ ls -l /​home/​student/​ 
-total 8 
-drwxr-xr-x 2 student student 4096 Sep 29 18:20 Avengers 
-drwxr-xr-x 2 student student 4096 Sep 29 17:44 GameOfThrones 
--rw-r--r-- 1 student student ​   0 Sep 29 19:04 Thor 
-student@uso:/​tmp$ ls 
-mkdir  ssh-ApUMKI3HSJ 
-student@uso:/​tmp$ rm mkdir/Thor 
-student@uso:/​tmp$ ls mkdir/ 
-Avengers ​ GameOfThrones 
-student@uso:/​tmp$ ls -l /​home/​student/​ 
-total 8 
-drwxr-xr-x 2 student student 4096 Sep 29 18:20 Avengers 
-drwxr-xr-x 2 student student 4096 Sep 29 17:44 GameOfThrones 
-</​code>​ 
-Observăm că dacă am șters un fișier accesându-l prin legătura, s-a șters și la destinație. 
- 
-==== Exerciții - legături (linkuri) ==== 
- 
-  * Creați o legătură simbolică în directorul vostru ''​%%home%%''​ către directorul ''​%%Netflix%%''​. 
-  * Verificați crearea legăturii prin afișarea conținutului directorului părinte. 
-  * Afișați conținutul legăturii. 
-  * Ștergeți directorul ''​%%Netflix%%''​. 
-  * Afișați conținutul legăturii. 
- 
- 
-===== Execuția programelor ===== 
- 
-Execuția unui fișier/​program se face folosind calea către fișier în locul unei comenzi pe care am rula-o în mod normal. Putem rula un executabil folosind o care relativă cum ar fi ''​%%./​executabil%%''​ sau ''​%%./​director/​executabil%%'',​ ori folosind o cale absoluta cum ar fi ''​%%/​usr/​bin/​firefox%%''​. 
- 
-Avem un executabil ''​%%my_ls%%''​ care face același lucru ca și comanda ''​%%ls%%'':​ 
- 
-<code bash> 
-student@uso:​~/​comenzi$ ./my_ls 
-executie ​ mkdir  my_ls  touch 
-</​code>​ 
-Putem folosi atât calea relativă cât și absolută: 
- 
-<code bash> 
-student@uso:​~/​comenzi$ ls -l 
-total 132 
-drwxr-xr-x 2 student student ​  4096 Sep 29 19:25 executie 
-drwxr-xr-x 5 student student ​  4096 Sep 29 19:14 mkdir 
--rwxr-xr-x 1 student student 121032 Sep 29 19:25 my_ls 
-drwxr-xr-x 2 student student ​  4096 Sep 29 17:25 touch 
-student@uso:​~/​comenzi$ ./my_ls 
-executie ​ mkdir  my_ls  touch 
-student@uso:​~/​comenzi$ /​home/​student/​comenzi/​my_ls 
-executie ​ mkdir  my_ls  touch 
-</​code>​ 
-Observăm cum se rulează un executabil atât cu cale relativă (în primul caz) cât și cu cale absolută (în al doilea caz). 
  
uso/laboratoare/laborator-01/files.1602620375.txt.gz · Last modified: 2020/10/13 23:19 by liza_elena.babu
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