<Предыдущая | Содержание: | Следующая>
Подведение итогов
С нашим знанием для теперь мы применим последние улучшения к нашему sys_info_page сценарий. В настоящее время report_home_space функция выглядит так:
отчет_домашнее_пространство () {
если [[$ (id -u) -eq 0]]; затем cat << - _EOF_
Использование домашнего пространства (все пользователи)
$ (du -sh / home / *)
_EOF_
еще
кошка << - _EOF_
Использование домашнего пространства ($ USER)
$ (du -sh $ HOME)
_EOF_
fi возвращение
}
отчет_домашнее_пространство () {
если [[$ (id -u) -eq 0]]; затем cat << - _EOF_
Использование домашнего пространства (все пользователи)
$ (du -sh / home / *)
_EOF_
еще
кошка << - _EOF_
Использование домашнего пространства ($ USER)
$ (du -sh $ HOME)
_EOF_
fi возвращение
}
Затем мы перепишем его, чтобы предоставить более подробную информацию о домашнем каталоге каждого пользователя и включить общее количество файлов и подкаталогов в каждом:
отчет_домашнее_пространство () {
отчет_домашнее_пространство () {
local format = "% 8s% 10s% 10s \ n"
local i dir_list total_files total_dirs total_size имя_пользователя
если [[$ (id -u) -eq 0]]; затем dir_list = / home / * user_name = "Все пользователи"
еще
dir_list = $ HOME имя_пользователя = $ USER
fi
эхо " Использование домашнего пространства ($ user_name) "для 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" "Размер" 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 имя_пользователя
если [[$ (id -u) -eq 0]]; затем dir_list = / home / * user_name = "Все пользователи"
еще
dir_list = $ HOME имя_пользователя = $ USER
fi
эхо " Использование домашнего пространства ($ user_name) "для 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" "Размер" printf "$ format" "----" "-----" "----"
printf "$ format" $ total_dirs $ total_files $ total_size echo " "
сделано возвращение
}
Это переписывание применяет многое из того, что мы узнали до сих пор. Мы по-прежнему тестируем суперпользователя, но вместо того, чтобы выполнять полный набор действий как часть if, мы устанавливаем некоторые переменные, которые позже будут использоваться в цикле for. Мы добавили в функцию несколько локальных переменных и использовали Printf для форматирования части вывода.