This shows you the differences between two versions of the page.
info1:laboratoare:02 [2020/10/20 11:18] alexandru.vochescu |
info1:laboratoare:02 [2020/10/20 11:32] (current) alexandru.vochescu |
||
---|---|---|---|
Line 3: | Line 3: | ||
{{page>uso:laboratoare:ac:laborator-01:paths&nofooter&noeditbutoon}} | {{page>uso:laboratoare:ac:laborator-01:paths&nofooter&noeditbutoon}} | ||
- | {{page>uso:laboratoare:ac:laborator-01:files&nofooter&noeditbutoon}} | ||
- | {{page>uso:laboratoare:ac:laborator-01:cheatsheet&nofooter&noeditbutoon}} | ||
- | ==== Cuprins ==== | + | ====== Interacțiunea cu fișiere în linia de comandă ====== |
- | {{page>uso:laboratoare:ac:laborator-01:nav&noheader&nofooter&noeditbutton}} | + | 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ă. | ||
+ | |||
+ | ===== 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:~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 ===== | ||
+ | |||
+ | În această secțiune vom învăța să lucrăm cu fișierele și directoarele în linia de comandă: | ||
+ | |||
+ | * afișarea conținutului fișierelor și directoarelor; | ||
+ | * crearea de fișiere și directoare; | ||
+ | * ștergerea de fișiere și directoare; | ||
+ | * redenumirea fișierelor și directoarelor; | ||
+ | |||
+ | ==== Afișarea conținutului unui director ==== | ||
+ | |||
+ | Așa cum un dosar are mai multe foi în el, la fel și directoarele au mai multe fișiere și directoare în ele. | ||
+ | |||
+ | Pentru a afișa conținutul unui director folosim comanda ''%%ls%%'': | ||
+ | |||
+ | <code bash> | ||
+ | student@uso:~$ ls | ||
+ | Desktop Downloads Music Public Templates | ||
+ | Documents examples.Desktop Pictures snap Videos | ||
+ | </code> | ||
+ | |||
+ | Vedem mai multe detalii despre fișierele și directoarele din directorul ''%%/home/student%%'' (adică directorul **home** al utilizatorului **student**, **~**) folosind comanda ''%%ls%%'': | ||
+ | |||
+ | <code bash> | ||
+ | student@uso:~$ ls -l | ||
+ | total 48 | ||
+ | drwxr-xr-x 3 student student 4096 Oct 13 12:53 Desktop | ||
+ | drwxr-xr-x 2 student student 4096 Sep 30 05:03 Documents | ||
+ | drwxr-xr-x 2 student student 4096 Sep 30 05:03 Downloads | ||
+ | drwxr-xr-x 2 student student 4096 Sep 30 05:03 Music | ||
+ | drwxr-xr-x 2 student student 4096 Sep 30 05:03 Pictures | ||
+ | drwxr-xr-x 2 student student 4096 Sep 30 05:03 Public | ||
+ | drwxr-xr-x 2 student student 4096 Sep 30 05:03 Templates | ||
+ | drwxr-xr-x 2 student student 4096 Sep 30 05:03 Videos | ||
+ | -rw-r--r-- 1 student student 8980 Sep 24 09:00 examples.desktop | ||
+ | drwxr-xr-x 4 student student 4096 Oct 2 03:11 snap | ||
+ | </code> | ||
+ | |||
+ | Interpretarea rezultatelor de mai sus o vom discuta într-un laborator viitor. | ||
+ | |||
+ | === Exerciții - afișarea conținutului directoarelor === | ||
+ | |||
+ | * Afișați conținutul directoarelor **/usr**, **/tmp**, **/etc**, **/home**. | ||
+ | |||
+ | ==== Crearea fișierelor ==== | ||
+ | |||
+ | Există situații când vrem să creăm fișiere. De exemplu vrem să scriem cod sau să luăm notițe la un curs. | ||
+ | |||
+ | Fișierele se creează folosind utilitarul ''%%touch%%''. | ||
+ | |||
+ | Creăm un fișier astfel: | ||
+ | |||
+ | <code bash> | ||
+ | student@uso:~$ ls cities | ||
+ | ls: cannot access cities: No such file or directory | ||
+ | student@uso:~$ touch cities | ||
+ | student@uso:~$ ls cities | ||
+ | cities | ||
+ | </code> | ||
+ | |||
+ | Dacă vrem să creăm un fișier cu numele ''%%orașe romania%%'', adică vrem ca numele fișierului să conțină caracterul //spațiu (space)//, folosim tot comanda ''%%touch%%'' ca în exemplul de mai jos: | ||
+ | |||
+ | <code bash> | ||
+ | student@uso:~$ touch cities romania | ||
+ | student@uso:~$ ls -l | ||
+ | (...) | ||
+ | -rw-rw-r-- 1 student student 0 Oct 13 13:02 cities | ||
+ | -rw-r--r-- 1 student student 8980 Sep 24 09:00 examples.desktop | ||
+ | -rw-rw-r-- 1 student student 0 Oct 13 13:02 romania | ||
+ | drwxr-xr-x 4 student student 4096 Oct 2 03:11 snap | ||
+ | </code> | ||
+ | Observăm că în comanda de mai sus am încercat să creăm un fișier numit ''%%cities romania%%'', însă au fost create două fișiere. Pentru a crea un fișier cu //spații (space)// inclus în nume este nevoie să folosim ghilimelele la începutul și sfârșitul numelui astfel: ''%%touch "cities romania"%%''. | ||
+ | |||
+ | <code bash> | ||
+ | student@uso:~$ touch "cities in romania" | ||
+ | student@uso:~$ ls -l | ||
+ | (...) | ||
+ | -rw-rw-r-- 1 student student 0 Oct 13 13:02 cities | ||
+ | -rw-rw-r-- 1 student student 0 Oct 13 13:03 'cities in romania' | ||
+ | -rw-r--r-- 1 student student 8980 Sep 24 09:00 examples.desktop | ||
+ | -rw-rw-r-- 1 student student 0 Oct 13 13:02 romania | ||
+ | drwxr-xr-x 4 student student 4096 Oct 2 03:11 snap | ||
+ | </code> | ||
+ | Acum avem în directorul ''%%~%%'' 3 fișiere în plus: ''%%cities%%'', ''%%cities in romania%%'', ''%%romania%%''. Zero-ul //(0)// din linia ''%%-rw-r--r-- 1 student student 0 Oct 13 13:02 cities%%'' ne arată că fișierul cities are 0 bytes, adică este gol. Toate cele 3 fișiere sunt goale. | ||
+ | |||
+ | ==== Crearea directoarelor ==== | ||
+ | |||
+ | Este util să creăm directoarele atunci când vrem să păstrăm fișierele din sistem într-un mod organizat. De exemplu, putem crea câte un director pentru fiecare an de licență. Pentru fiecare an/director, cream câte un director pentru fiecare materie si pentru fiecare materie putem să facem directoare pentru teme, laboratoare, cursuri etc. | ||
+ | |||
+ | Creăm directoarele folosind utilitarul ''%%mkdir%%''. Etimologia comenzii provine din limba engleză - //make directory//. | ||
+ | |||
+ | Creăm un directoarele ''%%GameOfThrones%%'' și ''%%Avengers%%'' în directorul ''%%~%%'' ca în exemplul de mai jos: | ||
+ | |||
+ | <code bash> | ||
+ | student@uso:~$ mkdir GameOfThrones | ||
+ | student@uso:~$ mkdir Avengers | ||
+ | student@uso:~$ ls -l | ||
+ | total 56 | ||
+ | drwxrwxr-x 2 student student 4096 Oct 13 13:17 Avengers | ||
+ | (...) | ||
+ | drwxrwxr-x 2 student student 4096 Oct 13 13:17 GameOfThrones | ||
+ | (...) | ||
+ | </code> | ||
+ | Am creat 2 directoare noi: ''%%Avengers%%'' și ''%%GameOfThrones%%''. | ||
+ | |||
+ | === Exerciții - creare fișiere și directoare === | ||
+ | |||
+ | * Creați un director numit "WinnieThePooh" și unul numit "TomSiJerry". | ||
+ | * Creați fișierele "Iron Man", "Hulk", "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. | ||
+ | |||
+ | |||
+ | <note important> | ||
+ | Este important de reținut: orice comandă executați, aceasta trebuie succedată de o verificare. De exemplu, la crearea unui fișier (''%%touch%%'') sau director (''%%mkdir%%''), executăm comanda de verificare ''%%ls%%''. | ||
+ | </note> | ||
+ | |||
+ | ==== Afișarea conținutului unui fișier ==== | ||
+ | |||
+ | Afișăm rapid conținutul fișierului ''%%Arya%%'' din directorul ''%%GameOfThrones%%'' folosind comanda ''%%cat%%'': | ||
+ | |||
+ | <code bash> | ||
+ | student@uso:~$ cat GameOfThrones/Arya | ||
+ | student@uso:~$ | ||
+ | </code> | ||
+ | |||
+ | Comanda ''%%cat%%'' nu a afișat nimic pentru că fișierul ''%%Arya%%'' este gol. | ||
+ | |||
+ | Scriem textul ''%%A girl has no name%%'' în fișierul ''%%Arya%%'' folosind comanda ''%%echo%%'': | ||
+ | |||
+ | <code bash> | ||
+ | student@uso:~$ echo "A girl has no name" > "GameOfThrones/Arya" | ||
+ | student@uso:~$ cat "GameOfThrones/Arya" | ||
+ | A girl has no name | ||
+ | </code> | ||
+ | |||
+ | ==== Ștergerea fișierelor ==== | ||
+ | |||
+ | Ștergem fișierul "Hulk" din directorul "Avengers" folosind utilitarul ''%%rm%%'': | ||
+ | |||
+ | <code bash> | ||
+ | student@uso:~$ ls Avengers/ | ||
+ | Captain America Hulk Iron Man | ||
+ | student@uso:~$ rm Avengers/Hulk | ||
+ | student@uso:~$ ls Avengers/ | ||
+ | Captain America Iron Man | ||
+ | </code> | ||
+ | La prima comandă am afișat ce fișiere sunt în directorul ''%%Avengers%%''. Am folosit utiltarul ''%%rm%%'' pentru a șterge fișierul ''%%Hulk%%'' din directorul ''%%Avengers%%''. În final am verificat că fișierul ''%%Hulk%%'' nu mai există în directorul ''%%Avengers%%''. | ||
+ | |||
+ | ==== Ștergerea directoarelor ==== | ||
+ | |||
+ | Directoarele se șterg folosind comanda ''%%rmdir%%''. Etimologia comenzii provine din engleză - //remove directory//. | ||
+ | |||
+ | Creăm directorul "LordOfTheRings" folosind comanda ''%%mkdir%%'' după care îl ștergem folosind comanda ''%%rmdir%%'': | ||
+ | |||
+ | <code bash> | ||
+ | student@uso:~$ mkdir LordOfTheRings | ||
+ | student@uso:~$ ls -l | ||
+ | total 60 | ||
+ | drwxr-xr-x 2 student student 4096 Sep 29 18:02 Avengers | ||
+ | (...) | ||
+ | drwxr-xr-x 2 student student 4096 Sep 29 17:44 GameOfThrones | ||
+ | drwxr-xr-x 2 student student 4096 Sep 29 18:09 LordOfTheRings | ||
+ | (...) | ||
+ | student@uso:~$ rmdir LordOfTheRings | ||
+ | student@uso:~$ ls -l | ||
+ | total 56 | ||
+ | drwxr-xr-x 2 student student 4096 Sep 29 18:02 Avengers | ||
+ | (...) | ||
+ | drwxr-xr-x 2 student student 4096 Sep 29 17:44 GameOfThrones | ||
+ | (...) | ||
+ | </code> | ||
+ | Am creat un director ''%%LordOfTheRings%%'' folosind utilitarul ''%%mkdir%%''. Am verificat crearea acestuia. În final l-am șters folosind utilitarul ''%%rmdir%%'' și am verificat că a fost șters. | ||
+ | |||
+ | <note important> | ||
+ | Comanda ''%%rmdir%%'' pe un director care nu este gol (care conține cel puțin un alt fișier sau director) nu funcționează. | ||
+ | </note> | ||
+ | |||
+ | <code bash> | ||
+ | student@uso:~$ rmdir Avengers/ | ||
+ | rmdir: failed to remove 'Avengers/': Directory not empty | ||
+ | </code> | ||
+ | Pentru a șterge un director care **nu** este gol, adică un director care are cel puțin un fișier sau director în el, folosim utilitarul ''%%rm%%'' cu opțiunea de recursivitate ''%%-r%%'': ''%%rm -r%%''. Aceasta permite ștergerea întregii ierarhii de fișiere din director, pe scurt: ștergerea întregului director. | ||
+ | |||
+ | <code bash> | ||
+ | student@uso:~$ ls -l | ||
+ | total 56 | ||
+ | drwxr-xr-x 2 student student 4096 Sep 29 18:02 Avengers | ||
+ | (...) | ||
+ | drwxr-xr-x 2 student student 4096 Sep 29 17:44 GameOfThrones | ||
+ | (...) | ||
+ | student@uso:~$ rm -r Avengers/ | ||
+ | student@uso:~$ ls -l | ||
+ | total 52 | ||
+ | (...) | ||
+ | drwxr-xr-x 2 student student 4096 Sep 29 17:44 GameOfThrones | ||
+ | (...) | ||
+ | </code> | ||
+ | |||
+ | |||
+ | <note important> | ||
+ | După executarea comenzii, verificăm corectitudinea operației. Trebuie să verificăm și să nu presupunem că o comandă s-a executat. Lipsa unei verifică poate duce la erori și mult timp pierdut din partea noastră. | ||
+ | </note> | ||
+ | ==== Redenumirea și mutarea fișierelor și directoarelor ==== | ||
+ | |||
+ | Fișierele și directoarele se redenumesc în mod similar, folosind comanda ''%%mv%%'' astfel: ''%%mv nume_actual nume_nou%%''. | ||
+ | |||
+ | Redenumim fișierele si directoarele folosind comanda ''%%mv%%'': | ||
+ | |||
+ | <code bash> | ||
+ | student@uso:~$ ls | ||
+ | GameOfThrones | ||
+ | student@uso:~$ mv GameOfThrones ThroneOfGames | ||
+ | student@uso:~$ ls | ||
+ | ThroneOfGames | ||
+ | </code> | ||
+ | Am redenumit fișierul ''%%GameOfThrones%%'' în ''%%ThroneOfGames%%''. | ||
+ | |||
+ | Un alt rol al comenzii ''%%mv%%'' este de a muta fișierele și directoarele, în ierarhia de fișiere, dintr-un loc în altul. | ||
+ | |||
+ | Mutăm directorul ''%%GameOfThrones%%'' (cu tot conținutul acestuia) la calea ''%%/tmp/%%'' folosind comanda ''%%mv%%'': | ||
+ | |||
+ | <code bash> | ||
+ | student@uso:~$ ls | ||
+ | Avengers GameOfThrones | ||
+ | student@uso:~$ mv GameOfThrones/ /tmp/ | ||
+ | student@uso:~$ ls /tmp/ | ||
+ | GameOfThrones ssh-ApUMKI3HSJ | ||
+ | student@uso:~$ ls /tmp/ | ||
+ | GameOfThrones ssh-ApUMKI3HSJ | ||
+ | student@uso:~$ ls | ||
+ | Avengers | ||
+ | </code> | ||
+ | Acum directorul ''%%GameOfThrones%%'' se află în calea ''%%/tmp/GameOfThrones%%''. Am verificat folosind ''%%ls%%'' că nu se mai află în directorul curent și că există în directorul ''%%/tmp/%%''. | ||
+ | |||
+ | Mutăm înapoi directorul ''%%GameOfThrones%%'' (cu tot conținutul acestuia) folosind cale relativă, pentru a indica directorul, și cale absolută, pentru a indica locul unde vrem să ajungă directorul folosind ''%%mv%%'': | ||
+ | |||
+ | <code bash> | ||
+ | student@uso:~$ mv ../../../../tmp/GameOfThrones/ /home/student/ | ||
+ | student@uso:~$ ls | ||
+ | Avengers GameOfThrones | ||
+ | </code> | ||
+ | Am verificat că directorul ''%%GameOfThrones%%'' se află la calea indicată (calea curentă). | ||
+ | |||
+ | <note> | ||
+ | Observăm că putem folosi atât căi relative cât și căi absolute ca argumente pentru comanda ''%%mv%%'' de mutare / redenumire de fișiere și directoare. | ||
+ | </note> | ||
+ | |||
+ | === Exerciții - redenumire și mutare === | ||
+ | |||
+ | - Creați un director ''%%Vikings%%'' în directorul home al vostru. | ||
+ | - Creați fișierele ''%%Ragnar%%'', ''%%Rollo%%'' în directorul ''%%Vikings%%''. | ||
+ | - Verificați că directorul și fișierele au fost create. | ||
+ | - 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. | ||
+ | - Redenumiți directorul ''%%GameOfThrones%%'' în ''%%ThronesInTheGame%%''. | ||
+ | - Mutați fișierele din interiorul directorului ''%%ThronesInTheGame%%'' în ''%%/tmp%%''. | ||
+ | - Verificați operațiile. | ||
+ | - Mutați directorul înapoi la locatia inițială folosind atât căi relative cât și căi absolute. | ||
+ | |||
+ | ==== Copierea fișierelor și directoarelor ==== | ||
+ | |||
+ | Copiem fișierul ''%%Captain America%%'' în directorul ''%%/tmp/%%'' folosind ''%%cp%%'': | ||
+ | |||
+ | <code bash> | ||
+ | student@uso:~$ cp 'Avengers/Captain America' /tmp/ | ||
+ | student@uso:~$ ls /tmp/ | ||
+ | Thor ssh-ApUMKI3HSJ | ||
+ | </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%%''. | ||
+ | |||
+ | <code bash> | ||
+ | student@uso:~$ cp Avengers/ /tmp/ | ||
+ | cp: omitting directory 'Avengers/' | ||
+ | </code> | ||
+ | Observăm că nu se poate copia un director ce conține alte fișiere sau directoare. | ||
+ | |||
+ | Pentru a copia în altă parte un director care nu este gol, trebuie să folosim comanda ''%%cp -r%%'': | ||
+ | |||
+ | <code bash> | ||
+ | student@uso:~$ cp -r Avengers/ /tmp/ | ||
+ | student@uso:~$ ls -l /tmp/ | ||
+ | total 8 | ||
+ | drwxr-xr-x 2 student student 4096 Sep 29 19:06 Avengers | ||
+ | -rw-r--r-- 1 student student 0 Sep 29 19:04 Captain America | ||
+ | drwx------ 2 student student 4096 Sep 29 13:45 ssh-ApUMKI3HSJ | ||
+ | student@uso:~$ ls -l /tmp/Avengers/ | ||
+ | total 0 | ||
+ | -rw-r--r-- 1 student student 0 Sep 29 19:06 Captain America | ||
+ | -rw-r--r-- 1 student student 0 Sep 29 19:06 Iron Man | ||
+ | -rw-r--r-- 1 student student 0 Sep 29 19:06 Thor | ||
+ | </code> | ||
+ | Am copiat directorul ''%%Avengers%%'' și conținutul acestuia din calea curentă în directorul ''%%/tmp%%''. Observăm că s-a copiat întreaga ierarhie de fișiere/directoare de sub directorul ''%%Avengers%%''. Acesta se află acum în ambele locuri. | ||
+ | |||
+ | ==== Exerciții - ierarhii de fișiere și directoare ==== | ||
+ | |||
+ | - Afișați ierarhia de fișiere pornind de la directorul vostru home (''%%~%%''). | ||
+ | - Creați următoarea ierarhie pornind de la directorul ''%%/home/student/%%'' (**Notă: Numele cu extensie din structura sunt __fișiere__, restul sunt __directoare__**): | ||
+ | |||
+ | <code bash> | ||
+ | student@uso:~$ tree | ||
+ | . | ||
+ | ├── prime_video | ||
+ | ├── Hulu | ||
+ | │ └── Favorite.txt | ||
+ | ├── Netflix | ||
+ | │ ├── Filme | ||
+ | │ │ ├── filme_2020.txt | ||
+ | │ │ ├── filme_2019.txt | ||
+ | │ │ ├── filme_vechi | ||
+ | │ └── Seriale | ||
+ | │ ├── seriale_2020 | ||
+ | │ ├── seriale_2019.txt | ||
+ | │ └── seriale_vechi | ||
+ | ├── HBO_GO | ||
+ | │ ├── Modern_Family.txt | ||
+ | │ └── Harry_Potter | ||
+ | └── YouTubeTV | ||
+ | </code> | ||
+ | |||
+ | - Copiați întreaga ierarhie în calea ''%%/tmp%%''. Folosiți comanda ''%%cp%%''. (Hint: recursivitate). | ||
+ | - Confirmați copierea prin afișarea directorului părinte. | ||
+ | - Ștergeți fișierul ''%%Favorite.txt%%'' din directorul ''%%Hulu%%''. Confirmați ștergerea prin afișarea directorului părinte. | ||
+ | - Ștergeți directorul ''%%prime video%%''. | ||
+ | - Confirmați ștergerea prin afișarea directorului părinte. | ||
+ | - Ștergeți directorul ''%%HBO GO%%''. | ||
+ | - Găsiți parametrii corespunzători ștergerii unui director care nu este gol. | ||
+ | - Confirmați ștergerea prin afișarea directorului părinte. | ||
+ | - Ștergeri ierarhia de directoare începând cu directorul ''%%Netflix%%''. | ||
+ | - Confirmați ștergerea prin afișarea directorului părinte. | ||
+ | - Creați ierarhia de directoare de mai jos. | ||
+ | - Căutați parametrul necesar pentru ''%%mkdir%%'' pentru a crea toată ierarhia //dintr-o singură executare a comenzii//: | ||
+ | |||
+ | <code bash> | ||
+ | student@uso:~$ tree | ||
+ | . | ||
+ | └─── Cale | ||
+ | └─── Lungă | ||
+ | └─── De | ||
+ | └─── Directoare | ||
+ | </code> | ||
+ | |||
+ | - Mutați ierarhia copiată anterior în ''%%/tmp%%'' în directorul ''%%Directoare%%''. | ||
+ | |||
+ | |||
+ | ====== Sumar - Cheatsheet ====== | ||
+ | |||
+ | ===== Căi în ierarhia de fișiere ===== | ||
+ | |||
+ | ==== Calea curentă ==== | ||
+ | |||
+ | <code bash> | ||
+ | student@uso:~$ pwd | ||
+ | /home/student | ||
+ | </code> | ||
+ | ==== Cale relativă și cale absolută ==== | ||
+ | |||
+ | Cale relativă: | ||
+ | |||
+ | <code bash> | ||
+ | student@uso:~$ ls -l snap/spotify/ | ||
+ | total 8 | ||
+ | drwxr-xr-x 5 student student 4096 Oct 2 03:11 42 | ||
+ | drwxr-xr-x 3 student student 4096 Oct 2 03:10 common | ||
+ | lrwxrwxrwx 1 student student 2 Oct 2 03:10 current -> 42 | ||
+ | </code> | ||
+ | Cale absolută: | ||
+ | |||
+ | <code bash> | ||
+ | student@uso:~$ ls -l /home/student/snap/spotify | ||
+ | total 8 | ||
+ | drwxr-xr-x 5 student student 4096 Oct 2 03:11 42 | ||
+ | drwxr-xr-x 3 student student 4096 Oct 2 03:10 common | ||
+ | lrwxrwxrwx 1 student student 2 Oct 2 03:10 current -> 42 | ||
+ | </code> | ||
+ | ==== Schimbarea căii curente ==== | ||
+ | |||
+ | <code bash> | ||
+ | student@uso:/etc$ pwd | ||
+ | /etc | ||
+ | student@uso:/etc$ cd /usr | ||
+ | student@uso:/usr$ pwd | ||
+ | /usr | ||
+ | </code> | ||
+ | ==== Scurtături de căi ==== | ||
+ | |||
+ | Caracterul ''%%-%%'': | ||
+ | |||
+ | <code bash> | ||
+ | student@uso:~$ pwd | ||
+ | /home/student | ||
+ | student@uso:~$ cd /usr/bin/ | ||
+ | student@uso:/usr/bin$ pwd | ||
+ | /usr/bin | ||
+ | student@uso:/usr/bin$ cd - | ||
+ | /home/student | ||
+ | student@uso:~$ cd - | ||
+ | /usr/bin | ||
+ | student@uso:/usr/bin$ cd - | ||
+ | /home/student | ||
+ | student@uso:~$ cd - | ||
+ | /usr/bin | ||
+ | </code> | ||
+ | Caracterul ''%%~%%'': | ||
+ | |||
+ | <code bash> | ||
+ | student@uso:/usr/bin$ cd /tmp/ | ||
+ | student@uso:/tmp$ pwd | ||
+ | /tmp | ||
+ | student@uso:/tmp$ cd ~ | ||
+ | student@uso:~$ pwd | ||
+ | /home/student | ||
+ | student@uso:~$ cd /usr/bin/X11/ | ||
+ | student@uso:/usr/bin/X11$ pwd | ||
+ | /usr/bin/X11 | ||
+ | student@uso:/usr/bin/X11$ cd ~ | ||
+ | student@uso:~$ pwd | ||
+ | /home/student | ||
+ | </code> | ||
+ | ===== Interacțiunea cu fișiere în linia de comandă ===== | ||
+ | |||
+ | ==== Ierarhie de fișiere ==== | ||
+ | |||
+ | <code bash> | ||
+ | student@uso:~$ 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> | ||
+ | ==== Afișarea conținutului unui director ==== | ||
+ | |||
+ | <code bash> | ||
+ | student@uso:~/Avengers$ ls | ||
+ | Captain America Iron Man Thor | ||
+ | </code> | ||
+ | <code bash> | ||
+ | student@uso:~$ ls -l | ||
+ | (...) | ||
+ | -rw-rw-r-- 1 student student 0 Oct 13 13:02 cities | ||
+ | -rw-rw-r-- 1 student student 0 Oct 13 13:03 'cities in romania' | ||
+ | -rw-r--r-- 1 student student 8980 Sep 24 09:00 examples.desktop | ||
+ | -rw-rw-r-- 1 student student 0 Oct 13 13:02 romania | ||
+ | drwxr-xr-x 4 student student 4096 Oct 2 03:11 snap | ||
+ | </code> | ||
+ | ==== Crearea fișierelor ==== | ||
+ | |||
+ | <code bash> | ||
+ | student@uso:~$ ls cities | ||
+ | ls: cannot access cities: No such file or directory | ||
+ | student@uso:~$ touch cities | ||
+ | student@uso:~$ ls cities | ||
+ | cities | ||
+ | </code> | ||
+ | ==== Crearea directoarelor ==== | ||
+ | |||
+ | <code bash> | ||
+ | student@uso:~$ mkdir GameOfThrones | ||
+ | student@uso:~$ mkdir Avengers | ||
+ | student@uso:~$ ls -l | ||
+ | (...) | ||
+ | drwxr-xr-x 2 student student 4096 Sep 29 17:43 Avengers | ||
+ | (...) | ||
+ | drwxr-xr-x 2 student student 4096 Sep 29 17:43 GameOfThrones | ||
+ | (...) | ||
+ | </code> | ||
+ | ==== Afișarea conținutului unui fișier ==== | ||
+ | |||
+ | <code bash> | ||
+ | student@uso:~$ cat GameOfThrones/Arya | ||
+ | A girl has no name | ||
+ | </code> | ||
+ | ==== Ștergerea fișierelor ==== | ||
+ | |||
+ | <code bash> | ||
+ | student@uso:~$ ls Avengers/ | ||
+ | Captain America Hulk Iron Man Thor | ||
+ | student@uso:~$ rm Avengers/Hulk | ||
+ | student@uso:~$ ls Avengers/ | ||
+ | Captain America Iron Man Thor | ||
+ | </code> | ||
+ | ==== Ștergerea directoarelor ==== | ||
+ | |||
+ | <code bash> | ||
+ | student@uso:~$ mkdir LordOfTheRings | ||
+ | student@uso:~$ ls -l | ||
+ | total 12 | ||
+ | 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 8 | ||
+ | drwxr-xr-x 2 student student 4096 Sep 29 18:02 Avengers | ||
+ | drwxr-xr-x 2 student student 4096 Sep 29 17:44 GameOfThrones | ||
+ | </code> | ||
+ | ==== Redenumirea și mutarea fișierelor și directoarelor ==== | ||
+ | |||
+ | <code bash> | ||
+ | student@uso:~$ ls | ||
+ | GameOfThrones | ||
+ | student@uso:~$ mv GameOfThrones ThroneOfGames | ||
+ | student@uso:~$ ls | ||
+ | ThroneOfGames | ||
+ | </code> | ||
+ | ==== Copierea fișierelor și directoarelor ==== | ||
+ | |||
+ | <code bash> | ||
+ | student@uso:~$ cp Avengers/Thor /tmp/ | ||
+ | student@uso:~$ ls /tmp/ | ||
+ | Thor ssh-ApUMKI3HSJ | ||
+ | </code> |