Differences

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

Link to this comparison view

uso:laboratoare:ac:laborator-02:files [2020/10/19 17:08]
127.0.0.1 external edit
uso:laboratoare:ac:laborator-02:files [2024/10/15 12:45] (current)
ioana_maria.culic [Copierea fișierelor și directoarelor]
Line 1: Line 1:
 ====== Interacțiunea cu fișiere în linia de comandă ====== ====== 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+**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:​ +
- +
-  * 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. +
- +
-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ă.
  
-===== Ierarhie de fișiere =====+<​note>​ 
 +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**:
  
-Un exemplu de ierarhie de fișier este în secțiunea ​//Căi în ierarhia de fișiere//.+<code bash> 
 +student@uso:​~$ mkdir /home/student/uso_lab02/ 
 +student@uso:​~$ cd /​home/​student/​uso_lab02/​ 
 +student@uso:​~/​uso_lab02$ pwd 
 +/​home/​student/​uso_lab02 
 +</​code>​ 
 +</​note>​
  
-Pentru a vedea fișierele sub formă arborescentă,​ folosim comanda ''​%%tree%%''​. 
  
-<code bash> 
-student@uso:​~r$ 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 ===== ===== Lucrul cu fișiere și directoare =====
  
Line 63: Line 26:
   * redenumirea fișierelor și directoarelor;​   * redenumirea fișierelor și directoarelor;​
   * fișiere și directoare ascunse;   * fișiere și directoare ascunse;
 +  * legături (linkuri);
 +  * execuția programelor.
  
 ==== Afișarea conținutului unui director ==== ==== Afișarea conținutului unui director ====
Line 72: Line 37:
 <code bash> <code bash>
 student@uso:​~$ ls student@uso:​~$ ls
-Desktop ​   Downloads ​       ​Music ​    ​Public ​   ​Templates +Desktop ​   Downloads ​ ​Pictures  ​Templates ​ examples.desktop ​ vm-actions-log.txt 
-Documents ​ ​examples.Desktop Pictures ​ snap      ​Videos+Documents ​ Music      Public ​   ​Videos ​    uso.git
 </​code>​ </​code>​
  
-Vedem mai multe detalii despre fișierele și directoarele din directorul ''​%%/​home/​student%%''​ (adică directorul **home** al utilizatorului **student**,​ **~**) folosind comanda ''​%%ls%%'':​+Vedem mai multe detalii despre fișierele și directoarele din directorul ''​%%/​home/​student%%''​ (adică directorul **home** al utilizatorului **student**,​ **~**) folosind comanda ''​%%ls ​-l%%'':​
  
 <code bash> <code bash>
-student@uso:​~$ ls -l +student@uso:​~$ ​student@uso:​~$ ls -l 
-total 48 +total 56 
-drwxr-xr-x ​student student 4096 Oct 13 12:53 Desktop +drwxr-xr-x ​ ​2 ​student student 4096 aug  6  2018 Desktop 
-drwxr-xr-x ​student student 4096 Sep 30 05:03 Documents +drwxr-xr-x ​ ​3 ​student student 4096 aug 20  2018 Documents 
-drwxr-xr-x 2 student student 4096 Sep 30 05:03 Downloads +drwxr-xr-x ​ 2 student student 4096 aug  6  2018 Downloads 
-drwxr-xr-x 2 student student 4096 Sep 30 05:03 Music +drwxr-xr-x ​ 2 student student 4096 aug  6  2018 Music 
-drwxr-xr-x 2 student student 4096 Sep 30 05:03 Pictures +drwxr-xr-x ​ 2 student student 4096 aug  6  2018 Pictures 
-drwxr-xr-x 2 student student 4096 Sep 30 05:03 Public +drwxr-xr-x ​ 2 student student 4096 aug  6  2018 Public 
-drwxr-xr-x 2 student student 4096 Sep 30 05:03 Templates +drwxr-xr-x ​ 2 student student 4096 aug  6  2018 Templates 
-drwxr-xr-x 2 student student 4096 Sep 30 05:03 Videos +drwxr-xr-x ​ 2 student student 4096 aug  6  2018 Videos 
--rw-r--r-- 1 student student 8980 Sep 24 09:00 examples.desktop +-rw-r--r-- ​ 1 student student 8980 aug  6  2018 examples.desktop 
-drwxr-xr-x ​student student 4096 Oct  2 03:11 snap+drwxr-xr-x ​14 student student 4096 aug 20  2018 uso.git 
 +-rw-r--r-- ​ 1 student student 4827 aug 21  2018 vm-actions-log.txt
 </​code>​ </​code>​
- 
-Interpretarea rezultatelor de mai sus o vom discuta într-un laborator viitor. 
  
 === Exerciții - afișarea conținutului directoarelor === === Exerciții - afișarea conținutului directoarelor ===
Line 108: Line 72:
  
 <code bash> <code bash>
-student@uso:​~$ ls cities +student@uso:​~$ cd /​home/​student/​uso_lab02/​ 
-ls: cannot access cities: No such file or directory +student@uso:​~/​uso_lab02$ pwd 
-student@uso:​~$ touch cities +/​home/​student/​uso_lab02 
-student@uso:​~$ ls cities+student@uso:​~/​uso_lab02$ ls cities 
 +ls: cannot access ​'cities': No such file or directory 
 +student@uso:​~/uso_lab02$ touch cities 
 +student@uso:​~/uso_lab02$ ls cities ​
 cities cities
 +
 </​code>​ </​code>​
  
Line 118: Line 86:
  
 <code bash> <code bash>
-student@uso:​~$ touch cities romania +student@uso:​~/uso_lab02$ touch cities romania 
-student@uso:​~$ ls -l +student@uso:​~/uso_lab02$ ls -l 
-(...) +total 0 
--rw-rw-r-- 1 student student ​   Oct 13 13:02 cities +-rw-rw-r-- 1 student student 0 oct 12 01:05 cities 
--rw-r--r-- 1 student student 8980 Sep 24 09:00 examples.desktop +-rw-rw-r-- 1 student student 0 oct 12 01:05 romania
--rw-rw-r-- 1 student student ​   Oct 13 13:02 romania +
-drwxr-xr-x 4 student student 4096 Oct  2 03:11 snap+
 </​code>​ </​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"​%%''​. 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> <code bash>
-student@uso:​~$ touch "​cities in romania"​ +student@uso:​~/uso_lab02$ touch "​cities in romania"​ 
-student@uso:​~$ ls -l +student@uso:​~/uso_lab02$ ls -l 
-(...) +total 0 
--rw-rw-r-- 1 student student ​   Oct 13 13:02  ​cities +-rw-rw-r-- 1 student student 0 oct 12 01:05  ​cities 
--rw-rw-r-- 1 student student ​   Oct 13 13:03 '​cities in romania'​ +-rw-rw-r-- 1 student student 0 oct 12 01:05 '​cities in romania'​ 
--rw-r--r-- 1 student student 8980 Sep 24 09:00  examples.desktop +-rw-rw-r-- 1 student student 0 oct 12 01:05  ​romania 
--rw-rw-r-- 1 student student ​   Oct 13 13:02  ​romania +
-drwxr-xr-x 4 student student 4096 Oct  2 03:11  snap+
 </​code>​ </​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.+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. 
  
 ==== Crearea directoarelor ==== ==== Crearea directoarelor ====
Line 149: Line 115:
  
 <code bash> <code bash>
-student@uso:​~$ mkdir GameOfThrones +student@uso:​~$ cd ~/​uso_lab02/​ 
-student@uso:​~$ mkdir Avengers +student@uso:​~/​uso_lab02$ mkdir GameOfThrones 
-student@uso:​~$ ls -l +student@uso:​~/uso_lab02$ mkdir Avengers 
-total 56 +student@uso:​~/uso_lab02$ ls -l 
-drwxrwxr-x 2 student student 4096 Oct 13 13:17  ​Avengers +total 8 
-(...) +drwxrwxr-x 2 student student 4096 oct 12 01:07  ​Avengers 
-drwxrwxr-x 2 student student 4096 Oct 13 13:17  ​GameOfThrones+drwxrwxr-x 2 student student 4096 oct 12 01:07  ​GameOfThrones
 (...) (...)
 </​code>​ </​code>​
Line 161: Line 127:
  
 === Exerciții - creare fișiere și directoare === === Exerciții - creare fișiere și directoare ===
 +<​note>​ 
 +Pentru următoarele exerciții, asigurați-vă că sunteți în directorul ''/​home/​student/​uso_lab02''​ folosind comanda: 
 +<code bash> 
 +student@uso:​~$ cd /​home/​student/​uso_lab02/​ 
 +student@uso:​~/​uso_lab02$ pwd 
 +/​home/​student/​uso_lab02 
 +</​code>​ 
 +</​note>​
   * Creați un director numit "​WinnieThePooh"​ și unul numit "​TomSiJerry"​.   * Creați un director numit "​WinnieThePooh"​ și unul numit "​TomSiJerry"​.
-  * Creați fișierele "Iron Man", "​Hulk",​ "​Captain America"​ (**cu spațiu**) în directorul "​Avengers";​ afișați fișierele din director; +  * 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" în directorul "​GameOfThrones";​ 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.
  
  
Line 176: Line 149:
  
 <code bash> <code bash>
-student@uso:​~$ cat GameOfThrones/​Arya +student@uso:​~/uso_lab02$ cat GameOfThrones/​Arya 
-student@uso:​~$+student@uso:​~/uso_lab02$
 </​code>​ </​code>​
  
Line 185: Line 158:
  
 <code bash> <code bash>
-student@uso:​~$ echo "A girl has no name" > "​GameOfThrones/​Arya"​ +student@uso:​~/uso_lab02$ echo "A girl has no name" > "​GameOfThrones/​Arya"​ 
-student@uso:​~$ cat "​GameOfThrones/​Arya"​+student@uso:​~/uso_lab02$ cat "​GameOfThrones/​Arya"​
 A girl has no name A girl has no name
 </​code>​ </​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 ==== ==== Ștergerea fișierelor ====
Line 195: Line 170:
  
 <code bash> <code bash>
-student@uso:​~$ ls Avengers/ +student@uso:​~/uso_lab02$ ls Avengers/ 
-Captain America ​ Hulk  Iron Man +Captain America ​ Hulk  Iron Man  Thor 
-student@uso:​~$ rm Avengers/​Hulk +student@uso:​~/uso_lab02$ rm Avengers/​Hulk 
-student@uso:​~$ ls Avengers/ +student@uso:​~/uso_lab02$ ls Avengers/ 
-Captain America ​ Iron Man+Captain America ​ Iron Man  Thor
 </​code>​ </​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%%''​. 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%%''​.
Line 205: 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:​~$ mkdir LordOfTheRings +student@uso:​~/uso_lab02$ ls -l
-student@uso:​~$ 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:​~$ 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 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 232: Line 198:
 </​note>​ </​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. 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:​~$ ls -l +student@uso:​~/uso_lab02$ rm -r Avengers/ 
-total 56 +student@uso:​~/uso_lab02$ ls -l
-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 total 52
 (...) (...)
Line 252: Line 208:
 (...) (...)
 </​code>​ </​code>​
- 
  
 <note important>​ <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ă. 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>​ </​note>​
 +
 ==== Redenumirea și mutarea fișierelor și directoarelor ==== ==== Redenumirea și mutarea fișierelor și directoarelor ====
  
Line 264: Line 220:
  
 <code bash> <code bash>
-student@uso:​~$ ls+student@uso:​~/uso_lab02$ ls
 GameOfThrones GameOfThrones
-student@uso:​~$ mv GameOfThrones ThroneOfGames +student@uso:​~/uso_lab02$ mv GameOfThrones ThroneOfGames 
-student@uso:​~$ ls+student@uso:​~/uso_lab02$ ls
 ThroneOfGames ThroneOfGames
 </​code>​ </​code>​
Line 277: Line 233:
  
 <code bash> <code bash>
-student@uso:​~$ ls+student@uso:​~/uso_lab02$ ls
 Avengers ​ GameOfThrones Avengers ​ GameOfThrones
-student@uso:​~$ mv GameOfThrones/​ /tmp/ +student@uso:​~/uso_lab02$ mv GameOfThrones/​ /tmp/ 
-student@uso:​~$ ls /tmp/+student@uso:​~/uso_lab02$ ls /tmp/
 GameOfThrones ​ ssh-ApUMKI3HSJ GameOfThrones ​ ssh-ApUMKI3HSJ
-student@uso:​~$ ls /tmp/+student@uso:​~/uso_lab02$ ls /tmp/
 GameOfThrones ​ ssh-ApUMKI3HSJ GameOfThrones ​ ssh-ApUMKI3HSJ
-student@uso:​~$ ls+student@uso:​~/uso_lab02$ ls
 Avengers Avengers
 </​code>​ </​code>​
Line 292: Line 248:
  
 <code bash> <code bash>
-student@uso:​~$ mv ../../​../​../​tmp/​GameOfThrones/​ /​home/​student/​ +student@uso:​~/uso_lab02$ mv ../​../​../​tmp/​GameOfThrones/​ /​home/​student/​ 
-student@uso:​~$ ls+student@uso:​~/uso_lab02$ ls
 Avengers ​ GameOfThrones Avengers ​ GameOfThrones
 </​code>​ </​code>​
Line 299: Line 255:
  
 <​note>​ <​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.+Observăm că putem folosi atât căi relativecât și căi absolute ca argumente pentru comanda ''​%%mv%%''​ de mutare / redenumire de fișiere și directoare.
 </​note>​ </​note>​
  
 === Exerciții - redenumire și mutare === === Exerciții - redenumire și mutare ===
  
-  - Creați un director ''​%%Vikings%%''​ în directorul home al vostru+  -  
-  ​- ​Creați fișierele ''​%%Ragnar%%'',​ ''​%%Rollo%%''​ în directorul ''​%%Vikings%%''​. +     ​* ​Creați un director ''​%%Vikings%%''​ în directorul ​de la calea ''/​home/​student/​uso_lab02''​
-  ​- ​Verificați că directorul și fișierele au fost create. +     * Creați fișierele ''​%%Ragnar%%'',​ ''​%%Rollo%%'',​ ''​%%Lagertha%%''​ în directorul ''​%%Vikings%%''​. 
-  ​- ​Mutati directorul (împreună cu întreaga ierarhie de fișiere) la locația ''​%%/​tmp/​%%''​. +     * Verificați că directorul și fișierele au fost create. 
-  ​- ​Verificați că directorul și ierarhia de fișiere au fost mutate+     * Mutati directorul (împreună cu întreaga ierarhie de fișiere) la locația ''​%%/​tmp/​%%''​. 
-  - Redenumiți directorul ''​%%GameOfThrones%%''​ în ''​%%ThronesInTheGame%%''​. +     * Verificați că directorul și ierarhia de fișiere au fost mutate.
-  - 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 ====
  
-Copiem fișierul ''​%%Captain America%%''​ în directorul ''​%%/​tmp/​%%''​ folosind ''​%%cp%%'':​+Copiem fișierul ''​%%Thor%%''​ în directorul ''​%%/​tmp/​%%''​ folosind ''​%%cp%%'':​
  
 <code bash> <code bash>
-student@uso:​~$ cp 'Avengers/Captain America' ​/tmp/ +student@uso:​~/uso_lab02$ cp Avengers/Thor /tmp/ 
-student@uso:​~$ ls /tmp/+student@uso:​~/uso_lab02$ ls /tmp/
 Thor  ssh-ApUMKI3HSJ Thor  ssh-ApUMKI3HSJ
 </​code>​ </​code>​
-Sintaxa este similară comenzii ''​%%mv%%''​. Acum fișierul ''​%%Captain America%%''​ este atât în ''​%%/​home/​student/​Avengers/​Captain America%%'',​ cât și în ''​%%/​tmp/​Captain America%%''​.+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> <code bash>
-student@uso:​~$ cp Avengers/ /tmp/+student@uso:​~/uso_lab02$ cp Avengers/ /tmp/
 cp: omitting directory '​Avengers/'​ cp: omitting directory '​Avengers/'​
 </​code>​ </​code>​
Line 334: Line 287:
  
 <code bash> <code bash>
-student@uso:​~$ cp -r Avengers/ /tmp/ +student@uso:​~/uso_lab02$ cp -r Avengers/ /tmp/ 
-student@uso:​~$ ls -l /tmp/+student@uso:​~/uso_lab02$ ls -l /tmp/
 total 8 total 8
 drwxr-xr-x 2 student student 4096 Sep 29 19:06 Avengers drwxr-xr-x 2 student student 4096 Sep 29 19:06 Avengers
--rw-r--r-- 1 student student ​   0 Sep 29 19:04 Captain America+-rw-r--r-- 1 student student ​   0 Sep 29 19:04 Thor
 drwx------ 2 student student 4096 Sep 29 13:45 ssh-ApUMKI3HSJ drwx------ 2 student student 4096 Sep 29 13:45 ssh-ApUMKI3HSJ
-student@uso:​~$ ls -l /​tmp/​Avengers/​+student@uso:​~/uso_lab02$ ls -l /​tmp/​Avengers/​
 total 0 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 Captain America
Line 347: 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 361: Line 318:
  
 <code bash> <code bash>
-student@uso:​~$ ls -al+student@uso:​~/uso_lab02$ ls -al
 total 56 total 56
 drwxr-xr-x 5 student student 4096 Sep 29 18:41 . drwxr-xr-x 5 student student 4096 Sep 29 18:41 .
Line 374: 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%%'':​ +Directorul ''​%%..%%''​ este în cazul nostru echivalent cu ''​%%/​home/student%%''​.
- +
-<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: Creăm fișiere ascunse punând un punct //(.)// în fața numelui:
  
 <code bash> <code bash>
-student@uso:​~/​Avengers$ ls -l+student@uso:​~/uso_lab02/Avengers$ ls -l
 total 0 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 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 Iron Man
 -rw-r--r-- 1 student student 0 Sep 29 18:20 Thor -rw-r--r-- 1 student student 0 Sep 29 18:20 Thor
-student@uso:​~/​Avengers$ touch .Hulk +student@uso:​~/uso_lab02/Avengers$ touch .Hulk 
-student@uso:​~/​Avengers$ ls -l+student@uso:​~/uso_lab02/Avengers$ ls -l
 total 0 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 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 Iron Man
 -rw-r--r-- 1 student student 0 Sep 29 18:20 Thor -rw-r--r-- 1 student student 0 Sep 29 18:20 Thor
-student@uso:​~/​Avengers$ ls -al+student@uso:​~/uso_lab02/Avengers$ ls -al
 total 8 total 8
 drwxr-xr-x 2 student student 4096 Oct  6 16:44 . drwxr-xr-x 2 student student 4096 Oct  6 16:44 .
Line 411: Line 361:
  
 <code bash> <code bash>
-student@uso:​~$ mkdir .LordOfTheRings +student@uso:​~/uso_lab02$ mkdir .LordOfTheRings 
-student@uso:​~$ ls+student@uso:​~/uso_lab02$ ls
 Avengers ​ GameOfThrones Avengers ​ GameOfThrones
 student@uso:​~$ ls -al student@uso:​~$ ls -al
Line 428: Line 378:
 === Exerciții - creare fișiere/​directoare ascunse === === 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 un director cu numele ''​%%.LordOfTheRings%%''​ în directorul ​de la calea ''/​home/​student/​uso_lab02''​
-  ​- ​Creați 3 fișiere ascunse cu numele ''​%%Aragorn%%'',​ ''​%%Legolas%%'',​ ''​%%Frodo Baggins%%''​. +    ​* ​Intrați în directorul creat. 
-  ​- ​Verificați operațiile de creare (director și fișiere)+    ​* ​Creați 3 fișiere ascunse cu numele ''​%%Aragorn%%'',​ ''​%%Legolas%%'',​ ''​%%Frodo Baggins%%''​. 
-  - Afișați **toate** fișierele din director. +    ​* ​Verificați operațiile de creare (director și fișiere).
-  - Afișați fișierele din director care **nu** sunt ascunse.+
  
-==== 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 (''​%%~%%''​).
-  - Creați următoarea ierarhie pornind de la directorul ''​%%/​home/​student/​%%''​ (**Notă: Numele cu extensie din structura sunt __fișiere__,​ restul sunt __directoare__**):​+  - Creați următoarea ierarhie pornind de la directorul ''​%%/​home/​student/​uso_lab02%%''​ (**Notă: Numele cu extensie din structura sunt __fișiere__,​ restul sunt __directoare__**):​
  
 <code bash> <code bash>
Line 469: Line 418:
   - Găsiți parametrii corespunzători ștergerii unui director care nu este gol.   - Găsiți parametrii corespunzători ștergerii unui director care nu este gol.
   - Confirmați ștergerea prin afișarea directorului părinte.   - Confirmați ștergerea prin afișarea directorului părinte.
-  - Ștergeri ​ierarhia de directoare începând cu directorul ''​%%Netflix%%''​.+  - Ștergeți ​ierarhia de directoare începând cu directorul ''​%%Netflix%%''​.
   - Confirmați ștergerea prin afișarea directorului părinte.   - Confirmați ștergerea prin afișarea directorului părinte.
   - Creați ierarhia de directoare de mai jos.   - 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//: +  - Căutați parametrul necesar pentru ''​%%mkdir%%''​ pentru a crea toată ierarhia //dintr-o singură executare a comenzii//:<​code bash> 
- +student@uso:​~/uso_lab02$ tree
-<code bash> +
-student@uso:​~$ tree+
 . .
 └─── Cale └─── Cale
Line 482: Line 429:
               └─── Directoare               └─── Directoare
 </​code>​ </​code>​
- 
   - Mutați ierarhia copiată anterior în ''​%%/​tmp%%''​ în directorul ''​%%Directoare%%''​.   - 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/​uso_lab02/​Avengers/​Thor%%''​ folosind comanda ''​%%ln -s%%'':​
 +
 +<code bash>
 +student@uso:​~/​uso_lab02$ ln -s /​home/​student/​uso_lab02/​Avengers/​Thor thor
 +student@uso:​~/​uso_lab02$ ls -l
 +(...)
 +lrwxrwxrwx 1 student student 28 Oct  6 17:58 thor -> /​home/​student/​uso_lab02/​Avengers/​Thor
 +(...)
 +</​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/​uso_lab02/​Avengers/​Thor%%''​.
 +
 +Scriem textul "​Hello"​ în fișierul ''​%%Avengers/​Thor%%'':​
 +
 +<code bash>
 +student@uso:​~/​uso_lab02$ echo "​Hello"​ > Avengers/​Thor
 +student@uso:​~/​uso_lab02$ cat Avengers/​Thor
 +Hello
 +student@uso:​~/​uso_lab02$ cat thor
 +Hello
 +</​code>​
 +
 +Vedem conținutul fișierului atât folosind o cale (relativă sau absolută), cât și folosind legătura simbolică (shortcutul).
 +
 +Vedem în continuare ce se întâmplă dacă ștergem un fișier.
 +
 +<code bash>
 +student@uso:​~$ cd /tmp
 +student@uso:/​tmp$ touch /​home/​student/​uso_lab02/​test
 +student@uso:/​tmp$ ls -l /​home/​student/​uso_lab02
 +(...)
 +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 test
 +(...)
 +student@uso:/​tmp$ ln -s /​home/​student/​uso_lab02/​test my_link
 +student@uso:/​tmp$ ls -l
 +(...)
 +lrwxrwxrwx 1 student student ​   28 oct 12 01:33 my_link -> /​home/​student/​uso_lab02/​test
 +(...)
 +student@uso:/​tmp$ rm my_link
 +student@uso:/​tmp$ ls
 +student@uso:/​tmp$ ls -l /​home/​student/​uso_lab02
 +(...)
 +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 de la calea ''/​home/​student/​uso_lab02''​ 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%%''​.
 +
 +Creăm un executabil (adică un program) numit ''​%%my_ls%%''​ care face același lucru ca și comanda ''​%%ls%%'':​
 +
 +<code bash>
 +student@uso:​~$ cd /​home/​student/​uso_lab02
 +student@uso:​~/​uso_lab02$ cp /bin/ls my_ls
 +</​code>​
 +
 +Executăm executabilul creat de noi ca mai jos:
 +
 +<code bash>
 +student@uso:​~/​uso_lab02$ ./my_ls
 +(...) my_ls (...) 
 +</​code>​
 +Putem folosi atât calea relativă cât și absolută:
 +
 +<code bash>
 +student@uso:​~/​uso_lab02$ ls -l
 +(...)
 +-rwxr-xr-x 1 student student 133792 Oct 13 14:01  my_ls
 +-rw-rw-r-- 1 student student ​     0 Oct 13 13:05  romania
 +(...)
 +student@uso:​~/​uso_lab02$ ./my_ls
 +GameOfThrones ​ cities my_ls  '​cities in romania' ​  ​romania
 +(...)
 +student@uso:​~$ /​home/​student/​my_ls
 +GameOfThrones ​ cities my_ls  '​cities in romania' ​  ​romania
 +(...)
 +</​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/ac/laborator-02/files.1603116515.txt.gz · Last modified: 2021/10/14 20:16 (external edit)
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