This shows you the differences between two versions of the page.
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 3 student student 4096 Oct 13 12:53 Desktop | + | drwxr-xr-x 2 student student 4096 aug 6 2018 Desktop |
- | drwxr-xr-x 2 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 4 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 0 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 0 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 0 Oct 13 13:02 cities | + | -rw-rw-r-- 1 student student 0 oct 12 01:05 cities |
- | -rw-rw-r-- 1 student student 0 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 0 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 relative, câ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). | ||