6. Extra - Sistemul de fișiere¶
6.1. Căutarea fișierelor în sistemul de fișiere¶
Se poate întâmpla să vrem să aflăm dacă într-o ierarhie de fișiere găsim un anumit fișier și, dacă există, vrem să aflăm unde se află.
Spre exemplu, serviciul ssh
folosește un fișier de configurare numit ssh_config
, dar nu mai ținem minte calea exactă până la acel fișier.
Linux ne oferă două utilitare, locate
și find
, care pot fi de ajutor în situația descrisă mai sus.
6.1.1. Folosirea utilitarului find
¶
În mod obișnuit, numele fișierelor de configurare pentru servicii se termină în extensia conf
.
Găsim toate fișierele de configurare ale serviciului ssh
de pe sistem folosind comanda find
:
student@uso:~/comenzi$ find / -iname "*ssh*conf"
/usr/share/upstart/sessions/ssh-agent.conf
/usr/lib/tmpfiles.d/sshd.conf
/etc/init/ssh.conf
Am căutat în calea /
(root) orice fișier ce conține ssh
și se termină cu conf
.
Utilitarul find
caută în ierarhia de fișiere care începe de la calea dată ca parametru în jos. În cazul nostru, de la /
(root) în jos, adică în tot sistemul de fișiere.
Mai multe informații și exemple de utilizări vom vedea în capitolul #TODOref_capitol_edi
6.1.2. Folosirea utilitarului locate
¶
Atunci când vrem să căutăm într-o ierarhie mare de fișiere, utilitarul find
nu este cea mai bună soluție deoarece este încet.
Utilitarul locate
ne poate ajuta în astfel de situații.
Acesta funcționează în 2 pași:
Crearea și actualizarea unei baze de date folosind comanda
updatedb
. Aceasta conține intrări cu toate fișierele din sistem și locatia acestora.Căutarea folosind
locate
. Această căutare se reduce la interogarea bazei de date create anterior cuupdatedb
.
Performanța utilitarului este foarte bună, superioară lui find
.
Partea negativă este că la fiecare căutare trebuie folosit utilitarul updatedb
.
Încercăm să căutăm fișierul pwd
în sistemul de fișiere folosind locate
:
student@uso:~/comenzi$ sudo updatedb
student@uso:~/comenzi$ locate "*ssh*conf"
/etc/init/ssh.conf
/usr/lib/tmpfiles.d/sshd.conf
/usr/share/upstart/sessions/ssh-agent.conf
Actualizăm baza de date folosind updatedb
și apoi căutăm fișierul de configurare cu utilitarul locate
.
Răspunsul comenzii este instant.
student@uso:~$ locate *.tar
/home/student/inregistrari.tar
/home/student/usr_bin.tar
Am folosit utilitarul locate
să căutăm în tot sistemul orice fișier se termină cu .tar
.
Găsim mai multe informații și exemple în capitolul todo_ref_edi
6.2. Variabila de mediu PATH¶
Până acum am învățat câteva comenzi utile: ls
, cd
, find
, locate
.
Utilitarele sunt de fapt programe (executabile) care se află undeva în sistemul de fișiere.
Shell-ul știe să ruleze utilitarele din orice loc în care ne aflăm (din ierarhia de fișiere).
Se întâmplă acest lucru pentru că shell-ul are o listă de câteva directoare în care se uită după utilitarele pe care le folosim.
Spre exemplu, atunci când rulăm utilitarul ls
, el caută programul ls
în lista pe care o are, îl găsește și îl rulează.
Această listă se găsește în variabila de mediu 1 PATH
.
6.2.1. Afișarea variabilei PATH din sistem¶
Afișăm valoarea variabilei de mediu PATH
a sistemului folosind utilitarul echo
.
$ echo $PATH
/usr/local/bin:/usr/bin:/bin:/usr/games
Variabila PATH
are patru căi din sistem, despărțite de caracterul :
.
Astfel, sistemul verifică dacă utilitarul este prezent în calea /usr/local/bin
; dacă nu-l găsește, merge la următoarea calea /usr/bin
; dacă nu-l găsește, merge la următoarea cale /bin
; dacă nu-l găsește, merge la ultima cale /usr/games
.
Note
Un utilitar poate fi la mai multe căi din PATH, dar va fi executat utilitarul din cea mai din stânga cale (prima, dacă nu a doua, etc.).
6.3. Căutarea utilitarelor în sistemul de fișiere¶
Există cazuri când vrem să găsim locația exactă a unui utilitar: vrem să aflăm ce permisiuni are, cine îl deține sau ce dimensiune are.
6.3.1. Folosirea utilitarului which
¶
Acest utilitar identifică calea programelor din sistem.
Căutăm calea la care se află utilitarul ls
folosind comanda which
:
student@uso:~$ which ls
/bin/ls
student@uso:~$ which pwd
/bin/pwd
student@uso:~$ which man
/usr/bin/man
which
folosește variabila de mediu PATH
pentru a găsi utilitarul cerut și va afișa rezultatele în ordinea directoarelor din PATH
.
Aflăm mai multe detalii despre utilitarul which
în capitolul #TODOtodo_edi_which.
6.3.2. Exerciții¶
Redenumiți utilitarul
pwd
înpwd_backup
. Puteți să mai executați comandapwd
? Darpwd_backup
?
- 1
Variabilele de mediu sunt variabile care descriu mediul în care sunt executate programele. Ele sunt folosite de aplicații pentru a răspunde la întrebări cum ar fi: Care este numele calculatorului pe care sunt instalată? Care este numele contului de utilizator care mă execută? Care este folderul meu de lucru? Unde se află fișierele temporare pe calculator?