Differences

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

Link to this comparison view

uso:laboratoare:ac:laborator-02:files [2021/10/14 20:16]
liza_elena.babu
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ă.
  
 <​note>​ <​note>​
-Pentru exercițiile din acest capitol, asigurați-vă că sunteți în directorul ''/​home/​student/​uso_lab02'' ​folosind comanda:+Pentru exercițiile din acest capitol, asigurați-vă că sunteți în directorul ''/​home/​student/​uso_lab02''​. Pentru a face acest lucru, **rulati urmatoarele comenzi**: 
 <code bash> <code bash>
 student@uso:​~$ mkdir /​home/​student/​uso_lab02/​ student@uso:​~$ mkdir /​home/​student/​uso_lab02/​
Line 32: Line 16:
 </​note>​ </​note>​
  
-===== 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:​~$ tree -F -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 ===== ===== Lucrul cu fișiere și directoare =====
Line 107: 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 164: Line 105:
 Acum avem în directorul ''​%%~/​uso_lab02%%''​ 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. Acum avem în directorul ''​%%~/​uso_lab02%%''​ 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:​~/​uso_lab02$ ls -l 
-total 0 
--rw-rw-r-- 1 student student 0 oct 12 01:05  cities 
--rw-rw-r-- 1 student student 0 oct 12 01:05 '​cities in romania'​ 
--rw-rw-r-- 1 student student 0 oct 12 01:05  romania 
-student@uso:​~/​uso_lab02$ touch romania 
-student@uso:​~/​uso_lab02$ ls -l 
-total 0 
--rw-rw-r-- 1 student student 0 oct 12 01:05  cities 
--rw-rw-r-- 1 student student 0 oct 12 01:05 '​cities in romania'​ 
--rw-rw-r-- 1 student student 0 oct 12 01:06  romania 
-</​code>​ 
-În continuare avem tot 3 fișiere în plus în directorul ''​%%~%%''​. Ne uităm la liniile ''​%%-rw-rw-r-- 1 student student 0 oct 12 01:05  romania%%''​ //(de dinainte)// și ''​%%-rw-rw-r-- 1 student student 0 oct 12 01:06  romania%%''​ (**de după**) și vedem că diferă timpul. Este vorba despre timpul la care a fost ultima dată accesat fișierul ''​%%romania%%''​. 
  
 ==== Crearea directoarelor ==== ==== Crearea directoarelor ====
Line 257: 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 284: 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 304: Line 208:
 (...) (...)
 </​code>​ </​code>​
- 
  
 <note important>​ <note important>​
Line 363: 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 408: 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 435: 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 495: 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 624: 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
 (...) (...)
uso/laboratoare/ac/laborator-02/files.1634231817.txt.gz · Last modified: 2021/10/14 20:16 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