<Anterior | Conteúdo | Próxima>
Resumindo
Com nosso conhecimento do for comando, vamos agora aplicar as melhorias finais ao nosso sys_info_page roteiro. Atualmente, o report_home_space função se parece com isto:
report_home_space () {
if [[$ (id -u) -eq 0]]; então gato << - _EOF_
Utilização do espaço doméstico (todos os usuários)
$ (du -sh / home / *)
_EOF_
outro
gato << - _EOF_
Utilização do espaço doméstico ($ USER)
$ (du -sh $ HOME)
_EOF_
fi voltar
}
report_home_space () {
if [[$ (id -u) -eq 0]]; então gato << - _EOF_
Utilização do espaço doméstico (todos os usuários)
$ (du -sh / home / *)
_EOF_
outro
gato << - _EOF_
Utilização do espaço doméstico ($ USER)
$ (du -sh $ HOME)
_EOF_
fi voltar
}
A seguir, iremos reescrevê-lo para fornecer mais detalhes para o diretório inicial de cada usuário e incluir o número total de arquivos e subdiretórios em cada um:
report_home_space () {
report_home_space () {
formato local = "% 8s% 10s% 10s \ n"
local i dir_list total_files total_dirs total_size nome_do_usuário
if [[$ (id -u) -eq 0]]; então dir_list = / home / * user_name = "Todos os usuários"
outro
dir_list = $ HOME user_name = $ USER
fi
echo " Utilização do espaço doméstico ($ user_name) "para i em $ dir_list; faça
total_files = $ (encontrar $ i -tipo f | wc -l) total_dirs = $ (encontrar $ i -tipo d | wc -l) total_size = $ (du -sh $ i | cut -f 1)
echo " $ i "echo" "
printf "$ format" "Dirs" "Arquivos" "Tamanho" printf "$ format" "----" "-----" "----"
printf "$ format" $ total_dirs $ total_files $ total_size echo " "
pronto retorno
}
formato local = "% 8s% 10s% 10s \ n"
local i dir_list total_files total_dirs total_size nome_do_usuário
if [[$ (id -u) -eq 0]]; então dir_list = / home / * user_name = "Todos os usuários"
outro
dir_list = $ HOME user_name = $ USER
fi
echo " Utilização do espaço doméstico ($ user_name) "para i em $ dir_list; faça
total_files = $ (encontrar $ i -tipo f | wc -l) total_dirs = $ (encontrar $ i -tipo d | wc -l) total_size = $ (du -sh $ i | cut -f 1)
echo " $ i "echo" "
printf "$ format" "Dirs" "Arquivos" "Tamanho" printf "$ format" "----" "-----" "----"
printf "$ format" $ total_dirs $ total_files $ total_size echo " "
pronto retorno
}
Essa reescrita aplica-se a muito do que aprendemos até agora. Ainda testamos para o superusuário, mas em vez de realizar o conjunto completo de ações como parte do if, definimos algumas variáveis usadas posteriormente em um loop for. Adicionamos várias variáveis locais à função e usamos printf para formatar parte da saída.