סיכום
עם הידע שלנו על ל פקודה, כעת ניישם את השיפורים האחרונים על שלנו sys_info_page תַסרִיט. נכון לעכשיו, ה report_home_space הפונקציה נראית כך:
report_home_space () {
if [[ $(id -u) -eq 0 ]]; ואז חתול <<- _EOF_
ניצול שטח ביתי (כל המשתמשים)
$(du -sh /home/*)
_EOF_
אחר
חתול <<- _EOF_
ניצול שטח ביתי ($USER)
$(du -sh $HOME)
_EOF_
fi לחזור
}
report_home_space () {
if [[ $(id -u) -eq 0 ]]; ואז חתול <<- _EOF_
ניצול שטח ביתי (כל המשתמשים)
$(du -sh /home/*)
_EOF_
אחר
חתול <<- _EOF_
ניצול שטח ביתי ($USER)
$(du -sh $HOME)
_EOF_
fi לחזור
}
לאחר מכן, נשכתב אותה כדי לספק פרטים נוספים עבור ספריית הבית של כל משתמש, ונכלול את המספר הכולל של קבצים ותת-ספריות בכל אחת מהן:
report_home_space () {
report_home_space () {
local format="%8s%10s%10s\n"
local i dir_list total_files total_dirs total_size user_name
if [[ $(id -u) -eq 0 ]]; ואז dir_list=/home/* user_name="כל המשתמשים"
אחר
dir_list=$HOME user_name=$USER
fi
הד" ניצול שטח ביתי ($user_name) " for i ב-$dir_list; עשה
total_files=$(find $i -type f | wc -l) total_dirs=$(find $i -type d | wc -l) total_size=$(du -sh $i | cut -f 1)
הד" $i "הד" "
printf "$format" "Dirs" "קבצים" "גודל" printf "$format" "----" "-----" "----"
printf "$format" $total_dirs $total_files $total_size echo " "
סיים להחזיר
}
local format="%8s%10s%10s\n"
local i dir_list total_files total_dirs total_size user_name
if [[ $(id -u) -eq 0 ]]; ואז dir_list=/home/* user_name="כל המשתמשים"
אחר
dir_list=$HOME user_name=$USER
fi
הד" ניצול שטח ביתי ($user_name) " for i ב-$dir_list; עשה
total_files=$(find $i -type f | wc -l) total_dirs=$(find $i -type d | wc -l) total_size=$(du -sh $i | cut -f 1)
הד" $i "הד" "
printf "$format" "Dirs" "קבצים" "גודל" printf "$format" "----" "-----" "----"
printf "$format" $total_dirs $total_files $total_size echo " "
סיים להחזיר
}
שכתוב זה מיישם הרבה ממה שלמדנו עד כה. אנחנו עדיין בודקים עבור משתמש העל, אבל במקום לבצע את סט הפעולות השלם כחלק מה- if, הגדרנו כמה משתנים המשמשים מאוחר יותר בלולאת for. הוספנו מספר משתנים מקומיים לפונקציה ועשינו בהם שימוש הדפס כדי לעצב חלק מהפלט.