-
bzip2 „$fișier”
Aceasta va rula bzip2 pe numele fișierului salvat într-o variabilă „$file”. bzip2 va comprima fișierul într-un fișier nou numit $file.bz2.
-
stat -c %s „$file.bz2”
Aceasta rulează stat pe compresa nou creată $file.bz2:
Din om stat:
stat - afișează starea fișierului sau a sistemului de fișiere
-c --format=FORMAT
utilizați FORMATUL specificat în loc de cel implicit
%s dimensiune totală, în octeți
Deci asta stat comanda va returna dimensiunea fișierului în octeți a noului fișier.
-
$(some_command)
Aceasta se numește înlocuirea comenzii
Bash efectuează extinderea executând comanda într-un mediu subshell și înlocuind înlocuirea comenzii cu ieșirea standard a comenzii.
Asa de, var=$(some_command) salvează ieșire de some_command într-o variabilă var.
In total:
compress_size_bzip2=$(bzip2 „$fișier” ; stat -c %s „$fișier.bz2”)
Aceasta rulează bzip2 și stat într-un subshell. Ieșirea subshell-ului este dimensiunea fișierului comprimat în octeți, care va fi salvat într-o variabilă $compress_size_bzip2.
Cu toate acestea, există loc de îmbunătățire:
Ar trebui să combinați comenzile din subshell cu &&, asa de stat rulează doar când bzip2 a avut succes.
Dacă nu aveți nevoie de un fișier comprimat, ar trebui să spuneți bzip2 pentru a comprima la ieșire standard cu -c steag și folosiți wc -c pentru a-i spune dimensiunea:
compress_size_bzip2=$(bzip2 -c „$fișier” | wc -c)