Ne propunem să folosim comenzi și înlănțuirea comenzilor pentru a realiza funcționalități practice la niveul liniei de comandă.
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.
stat
pentru a afișa doar numele și dimensiunea fișierului. Adică o construcție de forma
stat -c ... $(find ...)
Apoi filtrați output-ul comenzii de mai sus cu ajutorul comenzii sort
pentru a sorta numeric în funcție de dimensiunea fișierului. Adică o construcție de forma:
stat -c ... $(find ...) | sort ...
Apoi filtrați output-ul prin comanda tail
pentru a extrage doar primele 10
fișiere, în ordinea dimensiunii. Adică o construcție de forma:
stat -c ... $(find ...) | sort ... | tail
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
.
split
.
Nu este nevoie de for
, seq
sau touch
.
100
de fișiere a câte 100
de octeți va trebui să generați cu comanda dd
conținut de 100 x 100 = 10000
(zece mii) de octeți.
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.
Adică veți trece output-ul comenzii dd
în input-ul comenzii split
.
Adică trebuie să aveți o construcție de forma
dd if=/dev/urandom bs=... count=... | split ... - <prefix>
Folosiți ca ultimele două argumente pentru comanda split
construcția -
(semnul minus) însemnând că citește de la standard input și <prefix>
reprezentând prefixul pe care vreți să îl puneți fișierelor nou create, adică șirul part
.
Pentru split
trebuie să folosiți opțiunile care:
part
).dat
XYZ
este numeric)XYZ
are trei caractere)
Folosiți conținutul fișierului /dev/urandom
pentru a genera o parolă aleatoare de 16 caractere.
tr
cu opțiunile -d
și -c
pentru a extrage doar caractere tipările (litere mici, litere mari, numere).
Folosiți comanda head
cu opțiunea -c
pentru a extrage doar 16
caractere din output-ul anterior.
Actualizați comanda de mai sus pentru a genera 20
de parola a câte 16
caractere.
fold
.
Comanda fold
împarte informațiile primite la intrarea standard în linii pe care le afișează la ieșirea standard. Poate să extragă linii de dimensiune dată. Uzual se folosește în forma
<command> | fold
unde <command>
este o comandă care generează informații pe care apoi să le prelucreze comanda fold
.
Extrageți 20*16 = 320
caractere aleatoare și apoi folosiți comanda fold
cu opțiunea -w
pentru a le grupa în seturi de câte 16
. Adică o construcție de forma
cat /dev/urandom | ... | fold -w 16
tar -c -j -f top-files.tar.bz2 $(stat -c "%n %s" $(find /usr/share/man -type f) | sort -k 2n | tail -20 | cut -d ' ' -f 1) $(stat -c "%n %s" $(find /etc -type f) | sort -k 2n | tail -30 | cut -d ' ' -f 1)