<Попередній | зміст | Наступна>
Підводячи підсумки
З нашими знаннями про та цінності команди, ми зараз застосуємо останні вдосконалення до нашого сторінка sys_info сценарій. В даний час, домашній_простор звіту функція виглядає так:
report_home_space () {
якщо [[ $(id -u) -eq 0 ]]; потім кіт <<- _EOF_
Використання домашнього простору (всі користувачі)
$(du -sh /home/*)
_EOF_
ще
кіт <<- _EOF_
Використання домашнього простору ($USER)
$(du -sh $HOME)
_EOF_
fi повернення
}
report_home_space () {
якщо [[ $(id -u) -eq 0 ]]; потім кіт <<- _EOF_
Використання домашнього простору (всі користувачі)
$(du -sh /home/*)
_EOF_
ще
кіт <<- _EOF_
Використання домашнього простору ($USER)
$(du -sh $HOME)
_EOF_
fi повернення
}
Далі ми перепишемо його, щоб надати більше деталей для домашнього каталогу кожного користувача та включити загальну кількість файлів і підкаталогів у кожному:
report_home_space () {
report_home_space () {
локальний формат="%8s%10s%10s\n"
local i dir_list total_files total_dirs total_size user_name
якщо [[ $(id -u) -eq 0 ]]; потім dir_list=/home/* user_name="Всі користувачі"
ще
dir_list=$HOME user_name=$USER
fi
луна" Використання домашнього простору ($user_name) " for i в $dir_list; до
total_files=$(знайти $i -тип f | wc -l) total_dirs=$(знайти $i -тип d | wc -l) total_size=$(du -sh $i | cut -f 1)
луна" $i "луна" "
printf "$format" "Dirs" "Files" "Size" printf "$format" "----" "-----" "----"
printf "$format" $total_dirs $total_files $total_size echo " "
зроблено повернення
}
локальний формат="%8s%10s%10s\n"
local i dir_list total_files total_dirs total_size user_name
якщо [[ $(id -u) -eq 0 ]]; потім dir_list=/home/* user_name="Всі користувачі"
ще
dir_list=$HOME user_name=$USER
fi
луна" Використання домашнього простору ($user_name) " for i в $dir_list; до
total_files=$(знайти $i -тип f | wc -l) total_dirs=$(знайти $i -тип d | wc -l) total_size=$(du -sh $i | cut -f 1)
луна" $i "луна" "
printf "$format" "Dirs" "Files" "Size" printf "$format" "----" "-----" "----"
printf "$format" $total_dirs $total_files $total_size echo " "
зроблено повернення
}
Цей перепис застосовує багато з того, що ми навчилися досі. Ми все ще тестуємо для суперкористувача, але замість того, щоб виконувати повний набір дій як частину if, ми встановлюємо деякі змінні, використані пізніше в циклі for. Ми додали кілька локальних змінних до функції та використали їх printf щоб відформатувати частину виводу.