Sistemul de fișiere reprezintă componenta cea mai vizibilă din cadrul unui sistem de operare. Un utilizator folosește sistemul de fișiere prin operații de creare, ștergere, modificare și investigare a fișierelor. Mai mult, un utilizator poate administra sistemul de fișiere prin configurarea de permisiuni, prin stabilirea de cote de sistem de fișiere și prin acțiuni de formatare și montare de sisteme de fișiere.
find
, stat
, ln
, dd
find
, xargs
ln
, dd
$(...)
versus xargs
ls
vs. find
vs. Bash arrays; for
vs. $(...)
Folosirea comenzii find
cu diverși parametri pentru a parcurge sistemul de fișiere. Afișarea executabilelor cu bitul de setuid activat din directoarele ce conțin executabile (/bin
, /sbin
, /usr/bin
, /usr/sbin
).
Folosirea comenzii dd
pentru a copia chunk-uri de fișiere. Opțiunile bs
, count
, skip
, seek
.
Exemplificarea globbing-ului
Dorim să afișăm fișiere după diferite considerente.
Folosiți find
pentru a afișa toate fișierele din ierarhia /etc/
(adică toate fișierele din /etc/
, din subdirectoarele acestuia, din subdirectoarele subdirectoarelor etc.). Indicație: Folosiți opțiunea -type
a comenzii find
.
Folosiți find
pentru a afișa toate fișierele din ierarhia /etc/
al căror nume începe cu litere între a
și d
. Indicații: Folosiți opțiunea -name
a comenzii find
. Folosiți construcția [a-d]*
pentru a indica un șir care începe cu o literă între a
și d
urmată de orice altceva.
Folosiți find
pentru a afișa toate fișierele din ierarhia /etc/
al căror nume începe cu litere între a
și d
și are extensia .conf
(adică se încheie în șirul .conf
). Indicație: Porniți de la comanda anterioară și extindeți argumentul transmis opțiunii -name
.
Folosiți find
pentru a afișa toate fișierele din ierahia /etc/
care sunt deținute de utilizatorul root
și grupul root
. Indicație: Folosiți optiunea -user
a comenzii find
.
Folosiți find
pentru a a afișa toate fișierele din ierahia /etc/
care sunt deținute de utilizatorul root
și un grup diferit de root
. Indicație: Folosiți !
(semnul exclamării în fața opțiunii necesare pentru a o nega).
Folosiți find
pentru a a afișa toate fișierele din ierahia /etc/
pentru care others
au permisiuni de orice fel (adică others
au oricare dintre permisiunile read, write sau execute). Indicații: Urmăriți opțiunea -perm
în pagina de manual a comenzii find
. Urmăriți și exemplele de folosire căutând după șirul EXAMPLES
.
Folosiți find
pentru a a afișa toate fișierele din ierahia /etc/
pentru care others
nu au nici un fel de permisiuni (de orice fel: read, write sau execute). Indicație: Folosiți !
(semnul exclamării în fața opțiunii necesare pentru a o nega).
Listați primele 10 fișiere obișnuite (regular files) din ierarhia /etc
(adică din toate directoarele, subdirectoarele și subdirectoarele acestora etc.) sortate în ordinea dimesiunii ocupate de fiecare fișier.
find
cu opțiunea -exec
, stat
(cu opțiunea -c
și formatul necesar pentru afișarea dimensiunii și numelui ca argument către opțiunea -exec
a lui find
), sort
și head
.
Exemplu de rulare pentru find
cu -exec
este
find /etc/ -type f -exec ls -l {} \;
Creați un fișier care să conțină 2048 de octeți de zero (din /dev/zero
) urmați de 2048 de octeți aleatori (din /dev/urandom
) urmați de 2048 de octeți de zero și apoi urmați de 2048 de octeți din fișierul /bin/false
de la offsetul 4096 al fișierului.
skip
și seek
ale comenzii dd
este dat în număr de blocuri, nu în număr de octeți.
Folosiți /dev/urandom
, dd
și split
pentru a genera, într-un one liner, 100 de fișiere a câte 100 de octeți aleatori cu numele partXYZ.dat
unde XYZ
sunt valorile 000, 001, …, 099. Adică part000.dat
, part001.dat
, …, part099.dat
.
dd
poate scrie la standard output în absența opțiunii of
.
split
poate citi de la standard input dacă se folosește construcția -
(semnul minus) pentru numele fișierului.
Am văzut în secțiunea de Demo că putem folosi anumite caractere ce țin locul unor bucăți de text, de exemplu caracterul *
. De exemplu, dacă dorim să listăm toate fișierele din /etc
care încep cu stringul ssh
putem folosi comanda:
training@box:~$ ls /etc/ssh*
După cum observați, caracterul *
ține loc pentru "oricâte și orice caractere". Procedați asemănător și afișați fișierele sau directoarele din /etc
cu extensia .conf
.
Realizați o arhivă de tipul zip
în directorul home
al utilizatorului training
(/home/training
) care să conțină toate fișierele și directoarele din /etc/
care conțin stringul conf
în numele lor.
zip
. Căutați în output-ul comenzii
zip --help
după opțiunea care trece recursiv prin directoare (recurse into directories).
Comanda unzip
dezarhivează o arhivă .zip
dar are și o opțiunea de listare a conținutului acelei arhive fără a o dezarhiva însă. Identificați acea opțiune.