This shows you the differences between two versions of the page.
uso:laboratoare:ac:laborator-02:files [2021/10/14 20:22] andrei.tivga [Crearea fișierelor] |
uso:laboratoare:ac:laborator-02:files [2024/10/15 12:45] (current) ioana_maria.culic [Copierea fișierelor și directoarelor] |
||
---|---|---|---|
Line 2: | Line 2: | ||
**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. | **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ționa cu fișiere folosind programe specifice: | ||
- | |||
- | * [[https://www.microsoft.com/download/office.aspx | Microsoft Word]] pentru documente; | ||
- | * browser (de exemplu, [[https://www.mozilla.org/ro/firefox/new/ | Firefox]]) pentru o pagină web; | ||
- | * player audio (de exemplu, Winamp) pentu melodii; | ||
- | * player video (de exemplu, [[https://www.videolan.org/vlc/ | 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 secțiuni. | ||
- | |||
- | 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ă sistemului de operare ce are de făcut. | ||
În acest capitol discutăm despre cum interacționăm cu fișierele în linia de comandă. | În acest capitol discutăm despre cum interacționăm cu fișierele în linia de comandă. | ||
Line 75: | Line 58: | ||
-rw-r--r-- 1 student student 4827 aug 21 2018 vm-actions-log.txt | -rw-r--r-- 1 student student 4827 aug 21 2018 vm-actions-log.txt | ||
</code> | </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 ''%%examples.desktop%%'') ș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 === | === Exerciții - afișarea conținutului directoarelor === | ||
Line 207: | Line 180: | ||
==== Ștergerea directoarelor ==== | ==== Ștergerea directoarelor ==== | ||
- | Directoarele se șterg folosind comanda ''%%rmdir%%''. Etimologia comenzii provine din engleză - //remove directory//. | + | Directoarele se șterg folosind comanda ''%%rmdir%%'' sau comanda ''%%rm -r%%''. Etimologia comenzii provine din engleză - //remove directory//. |
- | + | Incercam sa stergem directorul ''%%Avengers%%'' folosind ambele comenzi: | |
- | Creăm directorul "LordOfTheRings" folosind comanda ''%%mkdir%%'' după care îl ștergem folosind comanda ''%%rmdir%%'': | + | |
<code bash> | <code bash> | ||
- | student@uso:~/uso_lab02$ mkdir LordOfTheRings | ||
student@uso:~/uso_lab02$ ls -l | student@uso:~/uso_lab02$ ls -l | ||
total 60 | 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:~/uso_lab02$ rmdir LordOfTheRings | ||
- | student@uso:~/uso_lab02$ 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 18:02 Avengers | ||
(...) | (...) | ||
drwxr-xr-x 2 student student 4096 Sep 29 17:44 GameOfThrones | drwxr-xr-x 2 student student 4096 Sep 29 17:44 GameOfThrones | ||
(...) | (...) | ||
+ | student@uso:~/uso_lab02$ rmdir Avengers/ | ||
+ | rmdir: failed to remove 'Avengers/': Directory not empty | ||
</code> | </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> | <note important> | ||
Line 234: | Line 198: | ||
</note> | </note> | ||
- | <code bash> | ||
- | student@uso:~/uso_lab02$ 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. | 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> | <code bash> | ||
- | student@uso:~/uso_lab02$ 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:~/uso_lab02$ rm -r Avengers/ | student@uso:~/uso_lab02$ rm -r Avengers/ | ||
student@uso:~/uso_lab02$ ls -l | student@uso:~/uso_lab02$ ls -l | ||
Line 254: | Line 208: | ||
(...) | (...) | ||
</code> | </code> | ||
- | |||
<note important> | <note important> | ||
Line 313: | Line 266: | ||
* Mutati directorul (împreună cu întreaga ierarhie de fișiere) la locația ''%%/tmp/%%''. | * 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. | * Verificați că directorul și ierarhia de fișiere au fost mutate. | ||
- | - | ||
- | * Creați un director ''%%NBA%%'' în directorul de la calea ''/home/student/uso_lab02''. | ||
- | * Creați fișierele ''%%MichaelJordan%%'', ''%%LeBronJames%%'', ''%%DwayneWade%%'' și ''%%KobeBryant%%'' în directorul ''%%NBA%%''. | ||
- | * Verificați că directorul și fișierele au fost create. | ||
- | * 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 ==== | ==== Copierea fișierelor și directoarelor ==== | ||
Line 358: | Line 300: | ||
</code> | </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. | 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. | ||
+ | |||
+ | <note> | ||
+ | Vom continua rezolvarea laboratorului săptămâna viitoare. | ||
+ | </note> | ||
==== Fișiere și directoare ascunse ==== | ==== Fișiere și directoare ascunse ==== | ||
Line 385: | Line 331: | ||
Observăm două directoare noi ''%%.%%'' și ''%%..%%''. Directorul ''%%.%%'' este o referință la directorul curent, iar ''%%..%%'' este o referință la directorul părinte. | 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:~/uso_lab02$ student@uso:~/uso_lab02$ ls -l .. | ||
- | total 60 | ||
- | drwxr-xr-x 2 student student 4096 aug 6 2018 Desktop | ||
- | (...) | ||
- | </code> | ||
Directorul ''%%..%%'' este în cazul nostru echivalent cu ''%%/home/student%%''. | Directorul ''%%..%%'' este în cazul nostru echivalent cu ''%%/home/student%%''. | ||
Line 445: | Line 383: | ||
* Creați 3 fișiere ascunse cu numele ''%%Aragorn%%'', ''%%Legolas%%'', ''%%Frodo Baggins%%''. | * Creați 3 fișiere ascunse cu numele ''%%Aragorn%%'', ''%%Legolas%%'', ''%%Frodo Baggins%%''. | ||
* Verificați operațiile de creare (director și fișiere). | * Verificați operațiile de creare (director și fișiere). | ||
- | - | ||
- | * Creați un director cu numele ''%%stiri%%'' în directorul de la calea ''/home/student/uso_lab02''. | ||
- | * 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 de la calea ''/home/student/uso_lab02''. | ||
- | * 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%%''. | ||
- | |||
- | |||
- | ==== Afișarea tipului de fișier ==== | ||
- | |||
- | O ierarhie de fișiere este formată din directoare și fișiere. Fișierele pot fi de mai multe tipuri: text, binare, imagini, arhive, etc. | ||
- | |||
- | Pentru a afla tipul fișierului folosim comanda ''%%file%%'': | ||
- | |||
- | <code bash> | ||
- | student@uso:~$ file examples.desktop | ||
- | examples.desktop: UTF-8 Unicode text | ||
- | student@uso:~$ file /usr/bin/touch | ||
- | /usr/bin/touch: symbolic link to /bin/touch | ||
- | student@uso:~$ file /bin/touch | ||
- | /bin/touch: 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]=788ca30f103a97f230adfaa558210b6df09cb7c8, stripped | ||
- | </code> | ||
- | |||
- | Observăm că fișierul ''%%examples.desktop%%'' este un fișier de tipul //UTF-8// în ciuda extensiei, ''%%/usr/bin/touch%%'' este o //legătură simbolică//, iar ''%%/usr/bin/touch%%'' este un fișier //binar//. | ||
- | |||
- | Vom prezenta mai multe detalii în capitolul //Îmbunătățirea lucrului în linia de comandă//. | ||
- | ==== Exerciții - ierarhii de fișiere și directoare ==== | + | ==== Exerciții suplimentare - ierarhii de fișiere și directoare ==== |
- Afișați ierarhia de fișiere pornind de la directorul vostru home (''%%~%%''). | - Afișați ierarhia de fișiere pornind de la directorul vostru home (''%%~%%''). | ||
Line 574: | Line 478: | ||
-rw-r--r-- 1 student student 0 Sep 29 19:04 test | -rw-r--r-- 1 student student 0 Sep 29 19:04 test | ||
(...) | (...) | ||
- | student@uso:/tmp$ ln -s /home/student/uso_lab02/test | + | student@uso:/tmp$ ln -s /home/student/uso_lab02/test my_link |
student@uso:/tmp$ ls -l | student@uso:/tmp$ ls -l | ||
(...) | (...) |