Comenzile în shell pot fi înlănțuite pentru a obține noi funcționalități. Anumite comenzi în shell pot primi diverse argumenter pentru a le altera funcționarea, în vreme ce altele primesc informații la standard input. Un one liner poate combina funcționalități precum folosirea operatorului |
(pipe) sau expandarea comenzii ($(...)
) pentru a crea rapid noi funcționalități în linia de comandă.
$(...)
)|
grep
, tr
, cut
basename
dd
, split
Folosire head
, tail
, sort
, uniq
, cut
, tr
, wc
Generare parolă random
Exemple de expresii regulate
Câte directive #include
conțin fișierele din /usr/include
? Câte directive #include
conțin fișierele de tip header C++ (.hpp
)?
Afișați fișierele din ierarhia /usr/include
în ordinea numărului de apariții ale cuvântului FILE
.
stat -c "%s" $(find /etc/ -type f -name '*.conf' -size +5k) lsof -p $(pgrep bash | tr '\n' ',')
Dorim să afișăm toate fișierele cu extensia .conf
din /etc
, care încep cu a, b, c, d
sau e
:
ls -l /etc/[a-e]*.conf
Dorim să afișăm fișierele (sau directoarele) cu extensiile .conf
sau .d
din /etc
:
ls -ld /etc/*{.conf,.d}
De ce am folosit parametrul -d
la ls
?
Dorim să afișăm fișierele (sau directoarele) cu extensiile .conf
sau .d
din /etc
care nu încep cu a, b, c
:
ls -ld /etc/[^abc]*{.conf,.d}
Creați o arhivă .tar.gz
cu toate fișierele din /usr/include
mai mari de 10KB
.
Creați o arhivă .zip
cu toate fișierele din /usr/include
mai mari de 10KB
.
Creați o arhivă .zip
cu toate fișierele din /usr/include
mai mari de 10KB
accesate în ultimele 3 zile.
-atime
a comenzii find
.
Pentru dispozitivele de tip caracter din /dev
afișați numele, majorul și minorul.
find
cu opțiunea -type
și parametrul corespunzător pentru a extrage dispozitivele de tip caracter.
Folosiți stat
cu opțiunile de formatare corespunzătoare și expandarea comenzii ($(...)
) în conjuncție cu comanda find
pentru afișarea numelui, majorului și minorului.
Bonus: Sortați-le în funcție de major.
sort
. Va trebui să specificați separatorul de câmpuri (folosind opțiunea -t
) și cheia de sortare (folosind opțiunea -k
). Pentru că avem cheie de sortare un număr va trebui să faceți sortare numerică.
Câte dispozitive de tip caracter se găsesc în fiecare director din ierarhia /dev
?
find
pentru a extrage dispozitivele de tip caracter.
Folosiți dirname
și expandarea comenzii ($(...)
) în conjuncție cu comanda find
de mai sus pentru a extrage doar numele directoarelor.
Prelucrați output-ul de mai sus prin comanda sort
pentru a-l sorta.
Apoi folosiți output-ul astfel prelucrat prin comanda uniq
cu opțiunea -c
pentru a afișa numărul de apariții al fiecărui director.
Afișați numele paginilor de manual din secțiunea 5. Numele sunt partea fără extensie din fișierele existente în directorul /usr/share/man/man5/
. De exemplu, pentru fișierul issue.5.gz
, numele este issue
.
Recomandăm pașii de mai jos.
Construiți glob-ul care să afișeze toate fișierele cu extensia .5.gz
din directorul /usr/share/man/man5/
.
find
, puteți folosi un glob.
Folosiți comanda basename
pentru a extrage doar numele de bază al fișierului.
basename
ca argumente numele fișierulelor. Pentru a elimina extensia folosiți opțiunea -s
a comenzii basename
.
Opțiunea -s
a comenzii basename
primește ca argument extensia ce trebuie scoasă. Trebuie să scoateți extensia 5.gz
.
Din lista de mai sus, extrageți doar comenzile care încep cu o anumită literă. Adică din outputul de mai sus, folosiți o comandă de forma grep '^a
' pentru a extrage liniile care încep cu litera a
folosind grep
.
Afișați procesele al căror proces părinte este init
, procesul cu PID-ul 1
.
Pentru procesele de mai sus afișați doar comanda completă.
Filtrați doar acele comenzi care încep cu /
(adică este calea completă către executabil).
Selectați doar calea către executabil, fără argumente către acesta.
Pentru executabilele de mai sus afișați numele și timpul ultimei schimbării (change time), separate prin virgulă (,
).
stat
.
Sortați executabilele de mai sus în ordinea timpului ultimei schimbări.
stat
permite sortare de orice fel.
Creați 100 de fișiere cu numele myfile-XY.txt
, unde XY
este indexul fișierului între 00
și 99
.
seq
și touch
.
seq -f "%02g" 1 100
Între ghilimele poate apărea un șir complet. Gândiți-vă că trebuie să generați șiruri de forma myfile-XY.txt
.