This is an old revision of the document!


Laborator 01: Introducere și procese

Comenzi utile: ls, ls -l, cd, pwd, vi, chown, chmod, recursive, su, tar, zip, sudo, rm, touch, cp, mv, mkdir, stat, ln, ln -s, who, id, apt-get, apt-cache, man, less, cat, find

Folosire man/less cu căutare

Pentru documentarea într-un sistem Linux folosim pagini de manual. De exemplu pentru accesarea paginii de manual a comenzii ls folosim comanda man:

$ man ls

Pentru accesarea paginii de manual a comenzii passwd folosim comanda

$ man passwd

Paginile de manual au secțiuni. Astfel dacă dorim să accesăm pagina de manual a fișierului /etc/passwd folosim comanda

$ man 5 passwd

La fel dacă dorim să accesăm pagina de manual a comenzilor printf și write folosim comenzile

$ man printf
$ man write

pe când dacă dorim să accesăm paginile de manual ale apelurilor de bibliotecă printf și write folosim comenzile

$ man 3 printf
$ man 2 write

O abilitate importantă este căutarea în paginile de manual pentru identificarea unor informații conceptuale sau a unor opțiuni pentru comenzi. Căutarea se face în cadrul pager-ului (utilitarului de afișare). Pager-ul comun pe sistemele Unix/Linux este less.

Pentru căutarea în paginile de manual folosim / (tasta slash) urmată de șirul de căutare și apoi tasta Enter pentru căutarea șirului (de fapt a expresiei regulate) în fișierul curent.

  • Exemplu: /recursive<Enter> (<Enter> denotă apăsarea tastei Enter) înseamnă căutarea în fișierul afișat curent (probabil pagină de manual) a șirului recursive).
    • Puteți testa acest lucru în pagina de manual a comenzii ls.
  • Exemplu: /^ +-s<Enter> înseamnă căutarea în fișierul afișat curent (probabil o pagină de manual) a șirului -s aflat la începutul rândului (precedat de cel puțin un spațiu).
    • Puteți testa acest lucru în pagina de manual a comenzii du.

De multe ori prima potrivire (match) nu este ceea ce căutăm și dorim să ajungem la următoarea. Pentru aceasta folosim tasta n (de la next) pentru următoarea potrivire. Și tot așa. Dacă vrem să găsim potrivirea precedentă folosim tasta N.

Dacă este nevoie să căutăm înapoi un șir sau o expresie folosim tasta ? (semnul întrebării) în locul tastei /. Adică o expresie de genul ?access time<Enter> va conduce la căutarea înapoi în cadrul fișierului curent a șirului access time.

În acest caz tasta n va fi folosită pentru căutarea în continuare (adică înapoi), iar tasta N va fi folosită pentru căutarea în sens invers (adică înainte).

Aceste mecanisme de căutare (folosind /, n, N, ?) sunt folosite și în editorul Vim.

Exerciții

Pentru exercițiile de mai jos, va trebui să investigați în pagina de manual pentru a determina opțiunile necesare pentru comenzile indicate.

Folosiți comanda ls cu opțiunea -l și o altă opțiune (de determinat) pentru a afișa spațiul ocupat de intrările din directorul curent.

Folosiți comanda du cu argumentul potrivit pentru a afla spațiul ocupat de directorul /etc. Indicație: Căutați după opțiune de sumarizare (summarize).

Folosiți comanda stat pentru a afișa doar dimensiunea (în octeți) a fișierului /etc/passwd.

Folosiți comanda stat pentru a afișa doar numele și dimensiunea (în octeți) a fișierelor din directorul /etc.

Folosiți comanda date pentru a afișa data curentă în formatul YYYY-MM-DD_HH:mm.

Folosiți comanda touch pentru a schimba timpii de acces/modificare/schimbare ai unui fișier oarecare în 2010-10-31 12:13.

Folosiți comanda pwgen pentru a genera 3 parole a câte 16 caractere care să conțină cel puțin un caracter special, cel puțin o cifră și cel puțin o literă mare.

Bonus: Folosiți o construcție de tipul stat … | paste … | bc pentru a calcula spațiul ocupat de fișierele cu extensia din directorul /etc cu extensia *.conf. Indicație: Urmăriți și postarea de aici.

Investigarea ierarhiei de fișiere

Ierarhia de fișiere în Unix/Linux este dată de Filesystem Hierarchy Standard. Fiecare director din vârful ierarhiei are un rol predeterminat. Un pachet instalat în sistemul curent, duce la actualizarea sistemului de fișiere în diferite locuri ale ierarhiei.

De exemplu, rularea comenzii

$ dpkg -L pwgen

duce la afișarea componentelor din sistemul de fișiere care aparțin pachetului pwgen. Un pachet ajunge să completeze intrări pentru binare/executabile (în /bin sau, mai des, în /usr/bin), fișiere de configurare (în /etc), fișiere de documentare sau generaliste (în /usr/share), biblioteci (în /lib sau, mai des, în /usr/lib), fișierele de jurnalizare (în /var/log) și așa mai departe.

Putem afla informații despre intrări din sistemul local de fișiere folosind comenzi precum ls -l, stat, file.

Comanda which urmată de o comandă afișează calea completă a comenzii respective.

Exerciții

Identificați componentele din sistemul de fișiere care aparțin pachetului grub-common. Verificați ce tip de fișiere sunt și ce reprezintă.

Investigați care este editorul folosit în mod implicit de shell prin investigarea comenzii editor. Indicație: Porniți de la which și apoi folosiți ls -l sau file.

Folosiți comanda

$ sudo apt-get install zoo

pentru a instala pachetul zoo. Investigați în ierarhia /var unde a fost descărcat pachetul .deb pentru a fi apoi instalat în sistem. Indicație: Porniți de la directorul /var/lib.

Căi relative și absolute

Căile în sistemul de fișiere pot fi abolute (încep de la directorul rădăcină) sau pot fi relative (sunt relative la directorul curent).

Exemple de căi absolute:

  • /etc/apt/sources.lists
  • /usr/bin/pwgen
  • /boot/grub/grub.cfg
  • /var/lib/apt/

Exemple de căi relative:

  • repo.git/cursuri/curs-01/
  • ../../projects/events/message.txt
  • ./a.out

Exerciții

Înainte de orice exercițiu plasați-vă în directorul /tmp folosind comanda

$ cd /tmp

Folosiți o cale absolută și o cale relativă pentru a ajunge în directorul /boot/grub.

Folosiți o cale relativă și o cale absolută pentru a afișa conținutul directorului Downloads/ din directorul home al utilizatorului student.

Folosiți o cale relativă și o cale absolută pentru a afișa ultimele 10 linii din fișierul de jurnalizare a sistemului (syslog). Indicație: Fișierul se găsește în /var/log iar comanda pentru afișarea ultimelor 10 linii este tail.

Globbing, văzut fișiere care corespund unei expresii

Cu ajutorul globbing-ului putem să vedem fișiere care corespund unui șir. De principiu cea mai uzuală folosire este pentru sistemul de fișiere și acolo caracterul cel mai folosit este * (steluță, star) numit și wildcard.

Exerciții

Folosiți un glob pentru a afișa toate fișierele cu extensia .gz din directorul /var/log/.

Folosiți un glob pentru a afișa toate fișierele care se încheie în forma .XY.gz din directorul /var/log/, unde X și Y sunt numere. (este osibil să nu fie nici unul)

Folosiți un glob pentru comanda dpkg -l … pentru a afișa pachetele din sistem care conțin șirul jdk.

Afișați toate fișierele cu extensia .conf din toate primele subdirectoare din /etc (adică din primul nivel de subdirectoare: init/, systemd/, security/.

Vim Sk1llz

Dacă exercițiile de mai jos vă iau mai mult timp decât este indicat, să faceți o trecere prin tutorialul de Vim: adică să porniți comanda vimtutor.

Puteți să ignorați scrierea cu diacritice.

În 30 de secunde, porniți Vim pentru a crea/edita fișierul poveste.txt, scrieți textul "A fost o dată ca niciodată că dacă nu ar fi nu s-ar povesti." și salvați textul și părăsiți editorul.

În 120 de secunde, porniți Vim scrieți textul de mai sus în fișierul capitolul-01.txt și apoi tot în Vim (fără a părăsi editorul scrieți textul "Va urma" în fișierul capitolul-02.txt și textul "Sfârșit" în fișierul capitolul-03.txt.

Descărcați fișierul de mai jos (mesaj.txt) și, în 180 de secunde editați-l în Vim pentru a obține forma de dedesubt (mesaj-modificat.txt). Analizați ce trebuie să faceți înainte de a contoriza editarea.

mesaj.txt
====== Împărțire semigrupe ======
 
Pentru împărțirea orelor de laborator de GSR, vom deschide două thread-uri pe [[http://cs.curs.pub.ro/2015/mod/forum/view.php?id=654|forumul de discuții generale]]. Pe fiecare thread vă veți putea înscrie la unul dintre cele două intervale de laborator:
  * joi, 16:00-18:00, sala EG106
  * joi, 20:00-22:00, sala EG106
 
Vom deschide thread-urile miercuri, 14 octombrie 2015, la ora 12:30 (la prânz).
 
Limita de locuri pe laborator este de 18 persoane. Va fi "first post, first served".
mesaj-modificat.txt
--- Împărțire semigrupe
 
Pentru împărțirea orelor de laborator de GSR, vom deschide două fire de discuție pe forumul de discuții generale. Pe fiecare thread vă veți putea înscrie la unul dintre cele două intervale de laborator:
  * vineri, 16-12, sala EG306
  * vineri, 20-22, sala EG306
 
Vom deschide thread-urile miercuri, 14 noiembrie 2015, la ora 19:30 (pe seară).
 
Limita de locuri pe laborator este de 12 persoane. Va fi "primul venit, primul servit".

În 30 de secunde copiați codul de aici în Vim într-un fișier numit dual-mapping.c și asigurând indentarea codului.

Crearea unei ierarhii locale

Creați ierarhia de mai jos într-un director cu numele music/.

.
|-- ac_dc/
|   |-- angus
|   |-- bon
|   |-- brian
|   |-- chris
|   |-- cliff
|   |-- dave
|   |-- george
|   |-- malcom
|   |-- mark
|   `-- phil
|-- cargo
|-- hammerfall/
|   |-- anders
|   |-- jesper
|   |-- joacim
|   |-- magnus
|   |-- oscar
|   |-- pontus
|   `-- stefan
|-- iris
|-- nightwish
|-- phoenix
`-- slayer

Actualizarea ierarhiei

Actualizați ierarhia de mai sus astfel:

  • Creați un subdirector rock/ și mutați intrările deja existente în acest director.
  • Creați un subdirector numit manele/ și creați câteva intrări în director după preferințele personale.
  • Creați un link simbolic numit preferate care să pointeze la directorul rock/ sau manele/ după preferințele personale.
  • Creați un link simbolic numit preferate-dupa-alcool care să pointeze la directorul rock/ sau manele/ după preferințele personale după un consum suficient de mare.
  • Ștergeți fișierele chris, george, cargo și iris.
  • Ștergeți întreg directorul hammerfall.
  • Schimbați numele directorului ac_dc în AC DC (numele conține spațiu).

Schimbat de permisiuni pe fișiere

Adăugați în sistem utilizatorii ana, bogdan și grupul mayhem și realizați următorele actualizări în ierarhia de mai sus:

  • Fișierul phoenix să fie deținut de ana.
  • Fișierul slayer să fie deținut de bogdan si grupul mayhem.
  • Directorul AC DC și intrările sale (recursiv) să fie deținut de ana și grupul mayhem.
  • Permisiunile pe fișierul mark să permită și lui bogdan citire (fără a modifica ownership).
  • Permisiunile pe fișierul dave sa permită lui bogdan citire și scriere (fără a modifica ownership).
  • Fișierul bon să aiba permisiuni de execuție pentru toți utilizatorii.

Folosirea find

Folosiți comanda find pentru a parcurge ierarhia creată mai sus.

Folosiți comanda find pentru a afișa doar fișierele din ierarhia de mai sus. Folosiți comanda find pentru a afișa doar directoarele din ierarhia de mai sus.

Folosiți comanda find pe ierarhia de mai sus pentru a afișa doar intrările care încep cu litera a.

Scenariu de schimbare permisiuni

Le dăm o arhivă cu mai multe fișiere, o bușesc cu 777 și apoi să repare; un scenariu complet de schimbare de permisiuni și ownership; o arhivă cu DokuWiki deja configurat

Instalat, dezinstalat de pachete

Dezinstalați pachetul zoo instalat anterior. Folosiți opțiunea de purge pentru a șterge și fișierele de configurare.

Folosiți comanda dpkg -l * pentru a identifica 2 pachete neinstalate și instalați-le.

Folosiți comanda dpkg -L ... pentru a afișa conținutul celor 2 pachete proaspăt instalate.

Bonus: find avansat

Folosiți find pentru a identifica fișierele cu drept de execuție care nu au extensia .sh aflate în subdirectoarele directorului din arhiva de aici.

Pași ajutățori:

  1. Folosiți find pentru a afișa ierarhia din subdirectoare. (Hint: -mindepth)
  2. Folosiți find pentru a afișa fișierele din ierarhia din subdirectoare cu extensia .sh. (Hint: -name, -type)
  3. Folosiți find pentru a afișa fișierele din ierarhia din subdirectoare care nu au extensia .sh. (Hint: OPERATORS în pagina de manual)
  4. Folosiți find pentru a afișa fișierele din ierarhia din subdirectoare cu drept de execuție care nu au extensia .sh. (Hint: -perm)

Bonus: dpkg

Afișați din ce pachet face parte utilitarul printf. Aflați întâi calea către utilitar folosind comanda which.

Ce pachet este folosit pentru a putea vizualiza paginile de manual, adică ce pachet conține fișierul /usr/lib/man-db/libman.so.

Bonus: apt-file

Folosiți apt-file pentru a afla ce pachete conțin biblioteca standard C, adică fișierul libc.so.

Folosiți apt-file pentru a afla pachetul/pachetele care conțin header-ul gdk.h.

gsr/laboratoare/laborator-01.1476176931.txt.gz · Last modified: 2016/10/11 12:08 by alexandru.carp
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