Bash Pagina 9
Linia de comandă (continuare)
- **pwd** - (print working directory) listează calea absolută a directorului curent (directorul în care ne aflăm)
- **cd**
- **cd /another/location** - (change directory) schimbă directorul curent în directorul primit ca parametru. Acesta poate fi de forma:
* nimic - merge în directorul home al utilizatorului ``` $ cd # N-am folosit niciun parametru, deci se preia automat home dir (notat cu ~) $ pwd # Folosesc pwd pentru verificarea directorului curent /home/my_home_directory # Acesta e directorul meu home ```
* cale relativă - directorul respectiv trebuie să fie cuprins în cel curent (nu se folosește niciodată / înaintea căii), altfel primim un mesaj care spune că acel director nu există ``` $ cd /dir1 # această comandă schimbă directorul în dir1 din / bash: cd: /dir1: No such file or directory # care nu există pentru că nu a fost creat $ cd dir1 # aici se preia ca parametru /home/my_home_directory/dir1 $ pwd # Verific directorul curent /home/my_home_directory/dir1 ```
* cale absolută - directorul respectiv se află undeva mai sus decât directorul curent (obligatoriu se folosește / înaintea căii) ``` $ cd /usr/bin $ pwd /usr/bin ```
* **..** - directorul părinte (suntem în /usr/bin de la comanda precedentă) ``` $ cd .. $ pwd /usr ```
* **/** - rădăcină ``` $ cd / $ pwd / ```
NOTĂ: Deplasarea într-un director care are un nume format din mai multe cuvinte se face folosind ghilimele pentru încadrarea acestora sau \ înainte de fiecare spațiu. Exemple: ``` $ cd "multiword named directory" $ cd multiword\ named\ directory ```
- **ls**
- **ls /some/directory** - (list) listează conținutul directorului primit ca parametru. Acesta poate fi de forma:
* nimic - listează conținutul directorului curent (suntem în / de la comanda precedentă) ``` $ ls bin/ etc/ initrd/ live/ media/ opt/ root/ sys/ tmp/ var/ boot/ dev/ home/ lib/ lost+found/ mnt/ proc/ sbin/ usr/ ```
* cale relativă sau absolută - listează conținutul directorului primit ca parametru ``` $ ls /usr bin/ etc/ games/ include/ lib/ libexec/ local/ sbin/ share/ src/ X11R6/ ```
* **../** - listează conținutul directorului părinte ``` $ cd $ pwd /home/my_home_directory $ ls ../ my_home_directory/ ```
Pot fi folosite următoarele opțiuni: - **-a** (all) - listează toate fișierele și directoarele, inclusiv pe cele ascunse
``` $ ls -a Documente/ Fisier Muzica/ .Secret_dir/ .secret_file ```
- **-l** (long) - listează informații suplimentare
``` $ ls -l drwxr-xr-x 2 tiberiu tiberiu 4096 2010-07-13 12:18 Desktop/ -rw-rw-r-- 1 tiberiu tiberiu 0 2010-06-24 09:53 Fisier lrwxrwxrwx 1 tiberiu tiberiu 25 2010-04-17 19:41 Muzica -> /mnt/data/Galerii/Muzica// ```
Acest output conține câte o linie pentru fiecare fișier/director și mai multe coloane pentru separarea informațiilor. Prima coloană este formată din 10 caractere ce reprezintă tipul elementului (- fișier, d director, l link) și apoi permisiunile (r read, w write, x execute), fiind grupate câte 3 pentru owner, group și others. A doua coloană indică numărul de scurtături către acest fișier/director. A treia coloană conține numele ownerului, în timp ce a patra numele grupului. A cincea coloană indică dimensiunea în B (bites). A șasea și a șaptea contin data și ora la care a fost creat sau când s-a efectuat ultima modificare. Ultima coloană reprezintă numele fișierului (nu are / la sfârșit), directorului (are / la sfârșit) sau link-ului care va indica și fișierul sau folderul țintă.
Opțiunile **-l** și **-a** pot fi folosite împreună sub forma **-la** sau **-al** pentru combinarea output-ului celor două; astfel vom avea descriere amănunțită pentru toate fișierele și directoarele. Opțiunea **-h** (human) se folosește în combinație cu **-l** pentru afișarea dimensiunii într-un format mai ușor de citit (KB, MB, GB). NOTĂ: Opțiunile prezentate sunt numai cele folosite frecvent; pentru mai multe informații citiți pagina man a comenzii tastând **$ man numele_comenzii** într-un terminal sau mergeți pe site-ul [linuxmanpages.com](http://linuxmanpages.com/) și introduceți comanda dorită în câmpul Search For.
- **Recapitulare**
- **pwd** - listează calea absolută a directorului curent - **cd director** - merge în directorul indicat - **ls** - listează conținutul directorului
- **Comenzi pentru manipularea fișierelor și directoarelor**
Acestea includ crearea și ștergerea de directoare, fișiere, redenumirea și mutarea lor în altă parte.
- **mkdir**
- **mkdir nume_director** - (make directory) creează un director cu numele indicat. Acesta poate fi sub formă de:
* cale relativă - va fi creat în folderul curent ``` $ mkdir my_dir ``` * cale absolută - va fi creat exact în locația indicată ``` $ mkdir /home/my_home_dir/my_dir ```
NOTĂ: Crearea unui director care are un nume format din mai multe cuvinte se face folosind ghilimele pentru încadrarea acestora sau \ înainte de fiecare spațiu. Exemple: ``` $ mkdir "multiword named directory" $ mkdir multiword\ named\ directory ```
Opțiunile disponibile pentru această comandă sunt: - **-p** (parents) - creează și directoarele părinți, dacă este cazul ``` $ mkdir dir1/dir2 # Această comandă înseamnă crearea lui dir2 în dir1 din directorul curent. mkdir: cannot create directory `dir1/dir2/': No such file or directory # Indică faptul că dir1 nu există în directorul curent. $ mkdir -p dir1/dir2 # Se folosește opțiunea -p la crearea directoarelor ``` ``` $ ls # listăm conținutul directorului curent dir1 # se observă că dir1 a fost creat $ cd dir1; ls # schimbăm în dir1 și listăm din nou dir2 # se observă că dir2 a fost creat ```
- **-v** (verbose) - afișează output pentru fiecare operație ``` $ mkdir -v my_dir mkdir: created directory `my_dir' ```
- **rmdir**
- **rmdir nume_director** - (remove directory) șterge directorul indicat numai dacă este gol. Poate primi ca argument cale relativă sau absolută și are aceleași opțiuni ca **mkdir** (-p, -v); diferența constă în faptul că **-p** va șterge directoarele părinți.
``` $ rmdir -p dir1/dir2 ```
Dacă încerci să ștergi un director care nu este gol, se va genera o eroare. ``` $ rmdir dir1/dir2 rmdir: failed to remove `dir1/dir2': Directory not empty ```
- **rm**
- **rm nume_fișier** - (remove) șterge un fișier. Poate primi argumente de forma:
* **-r** (recursive) - șterge un director și conținutul acestuia (ATENȚIE: trebuie folosită cu mare grijă) ``` $ rm -r dir1 # va șterge tot conținutul din dir1 ```
* **-f** (force) - șterge fișiere fără a întreba (ATENȚIE: trebuie folosită cu mare grijă) ``` $ rm -f file.txt ```
Opțiunea **-i** (interactive) întreabă pentru fiecare fișier care urmează a fi șters (la fel ca în cazul lui **-f** dacă este folosit în combinație cu **-i**). ``` $ rm -i file.txt remove file.txt? y ```
- **mv**
- **mv sursă destinație** - (move) mută fișierele/directoarele sau le redenumește.
Poate primi argumente de forma: * **nume_fișier nume_nou** - schimbă numele fișierului ``` $ mv old_file.txt new_file.txt # Fișierul old_file.txt este redenumit new_file.txt ```
* **fișier director** - mută fișierul în directorul specificat ``` $ mv new_file.txt dir1/ # Mutăm fișierul în dir1 ```
* **director1 director2** - mută tot conținutul din directorul sursă în cel de destinație ``` $ mv dir1 dir2 # Mută directorul dir1 în dir2 ```
NOTĂ: Dacă directorul de destinație nu există, fișierul sau directorul sursă va fi redenumit.
- **cp**
- **cp sursă destinație** - (copy) copiază fișierele/directoarele.
Poate primi argumente de forma: * **nume_fișier nume_nou** - creează o copie a fișierului ``` $ cp file.txt new_file.txt # Creează o copie a lui file.txt cu numele new_file.txt ```
* **fișier director** - copiază fișierul în directorul specificat ``` $ cp new_file.txt dir1/ ```
* **-r** (recursive) - copiază tot conținutul dintr-un director ``` $ cp -r dir1/ dir2/ # Copiază conținutul din dir1 în dir2 ```
- **Recapitulare**
- **mkdir** - creează un director - **rmdir** - șterge un director gol - **rm** - șterge un fișier - **mv** - mută sau redenumește fișiere/directoare - **cp** - copiază fișiere/directoare