<Précédent | Table des matières | Suivant>
résumer
Avec notre connaissance du en commande, nous allons maintenant appliquer les dernières améliorations à notre sys_info_page scénario. Actuellement, le report_home_space la fonction ressemble à ceci :
report_home_space () {
if [[ $(id -u) -eq 0 ]] ; puis chat <<- _EOF_
Utilisation de l'espace domestique (tous les utilisateurs)
$(du -sh /home/*)
_EOF_
d'autre
chat <<- _EOF_
Utilisation de l'espace domestique ($USER)
$(du -sh $HOME)
_EOF_
fi retour
}
report_home_space () {
if [[ $(id -u) -eq 0 ]] ; puis chat <<- _EOF_
Utilisation de l'espace domestique (tous les utilisateurs)
$(du -sh /home/*)
_EOF_
d'autre
chat <<- _EOF_
Utilisation de l'espace domestique ($USER)
$(du -sh $HOME)
_EOF_
fi retour
}
Ensuite, nous allons le réécrire pour fournir plus de détails sur le répertoire personnel de chaque utilisateur et inclure le nombre total de fichiers et de sous-répertoires dans chacun :
report_home_space () {
report_home_space () {
format local="%8s%10s%10s\n"
local i dir_list total_files total_dirs total_size nom_utilisateur
if [[ $(id -u) -eq 0 ]] ; then dir_list=/home/* user_name="Tous les utilisateurs"
d'autre
dir_list=$HOME nom_utilisateur=$USER
fi
écho " Utilisation de l'espace domestique ($user_name) " pour i dans $dir_list ; faire
total_files=$(trouver $i -type f | wc -l) total_dirs=$(trouver $i -type d | wc -l) total_size=$(du -sh $i | cut -f 1)
écho " $i " écho " "
printf "$format" "Répertoires" "Fichiers" "Taille" printf "$format" "----" "-----" "----"
printf "$format" $total_dirs $total_files $total_size echo " "
fait retour
}
format local="%8s%10s%10s\n"
local i dir_list total_files total_dirs total_size nom_utilisateur
if [[ $(id -u) -eq 0 ]] ; then dir_list=/home/* user_name="Tous les utilisateurs"
d'autre
dir_list=$HOME nom_utilisateur=$USER
fi
écho " Utilisation de l'espace domestique ($user_name) " pour i dans $dir_list ; faire
total_files=$(trouver $i -type f | wc -l) total_dirs=$(trouver $i -type d | wc -l) total_size=$(du -sh $i | cut -f 1)
écho " $i " écho " "
printf "$format" "Répertoires" "Fichiers" "Taille" printf "$format" "----" "-----" "----"
printf "$format" $total_dirs $total_files $total_size echo " "
fait retour
}
Cette réécriture applique une grande partie de ce que nous avons appris jusqu'à présent. Nous testons toujours pour le superutilisateur, mais au lieu d'effectuer l'ensemble complet des actions dans le cadre du if, nous définissons certaines variables utilisées plus tard dans une boucle for. Nous avons ajouté plusieurs variables locales à la fonction et utilisé printf pour formater une partie de la sortie.