<Precedenti | Contenuti | Succ.>
Riassumendo
Con la nostra conoscenza del per comando, ora applicheremo i miglioramenti finali al nostro sys_info_page sceneggiatura. Attualmente, il report_home_space la funzione assomiglia a questa:
report_home_space() {
if [[ $(id -u) -eq 0 ]]; poi gatto <<- _EOF_
Utilizzo dello spazio domestico (tutti gli utenti)
$(du -sh /home/*)
_EOF_
altro
gatto <<- _EOF_
Utilizzo dello spazio domestico ($USER)
$(du -sh $HOME)
_EOF_
fi ritorno
}
report_home_space() {
if [[ $(id -u) -eq 0 ]]; poi gatto <<- _EOF_
Utilizzo dello spazio domestico (tutti gli utenti)
$(du -sh /home/*)
_EOF_
altro
gatto <<- _EOF_
Utilizzo dello spazio domestico ($USER)
$(du -sh $HOME)
_EOF_
fi ritorno
}
Successivamente, lo riscriveremo per fornire maggiori dettagli per la home directory di ciascun utente e includere il numero totale di file e sottodirectory in ciascuna:
report_home_space() {
report_home_space() {
formato locale="%8s%10s%10s\n"
local i dir_list total_files total_dirs dimensione_totale nome_utente
if [[ $(id -u) -eq 0 ]]; quindi dir_list=/home/* user_name="Tutti gli utenti"
altro
dir_list=$HOME nome_utente=$UTENTE
fi
eco " Utilizzo dello spazio domestico ($user_name) " for i in $dir_list; do
total_files=$(trova $i -tipo f | wc -l) total_dirs=$(trova $i -tipo d | wc -l) total_size=$(du -sh $i | taglia -f 1)
eco " $i " eco " "
printf "$formato" "Dirs" "File" "Dimensione" printf "$formato" "----" "-----" "----"
printf "$formato" $dirs_totale $file_totali $dimensione_totale echo " "
fatto ritorno
}
formato locale="%8s%10s%10s\n"
local i dir_list total_files total_dirs dimensione_totale nome_utente
if [[ $(id -u) -eq 0 ]]; quindi dir_list=/home/* user_name="Tutti gli utenti"
altro
dir_list=$HOME nome_utente=$UTENTE
fi
eco " Utilizzo dello spazio domestico ($user_name) " for i in $dir_list; do
total_files=$(trova $i -tipo f | wc -l) total_dirs=$(trova $i -tipo d | wc -l) total_size=$(du -sh $i | taglia -f 1)
eco " $i " eco " "
printf "$formato" "Dirs" "File" "Dimensione" printf "$formato" "----" "-----" "----"
printf "$formato" $dirs_totale $file_totali $dimensione_totale echo " "
fatto ritorno
}
Questa riscrittura applica molto di ciò che abbiamo imparato finora. Testiamo ancora per il superutente, ma invece di eseguire l'insieme completo di azioni come parte del if, impostiamo alcune variabili usate in seguito in un ciclo for. Abbiamo aggiunto diverse variabili locali alla funzione e fatto uso di printf per formattare parte dell'output.