<ก่อนหน้านี้ | เนื้อหา | ถัดไป>
ข้อสรุปขึ้น
ด้วยความรู้ของเราเกี่ยวกับ for คำสั่ง ตอนนี้เราจะใช้การปรับปรุงขั้นสุดท้ายของเรา sys_info_page สคริปต์ ปัจจุบัน report_home_space ฟังก์ชั่นมีลักษณะดังนี้:
report_home_space () {
ถ้า [[ $(id -u) -eq 0 ]]; แล้วก็แมว <<- _EOF_
การใช้พื้นที่ในบ้าน (ผู้ใช้ทั้งหมด)
$(du -sh /home/*)
_อีโอเอฟ_
อื่น
แมว <<- _EOF_
การใช้พื้นที่ในบ้าน ($USER)
$(du -sh $HOME)
_อีโอเอฟ_
fi กลับ
}
report_home_space () {
ถ้า [[ $(id -u) -eq 0 ]]; แล้วก็แมว <<- _EOF_
การใช้พื้นที่ในบ้าน (ผู้ใช้ทั้งหมด)
$(du -sh /home/*)
_อีโอเอฟ_
อื่น
แมว <<- _EOF_
การใช้พื้นที่ในบ้าน ($USER)
$(du -sh $HOME)
_อีโอเอฟ_
fi กลับ
}
ต่อไป เราจะเขียนใหม่เพื่อให้รายละเอียดเพิ่มเติมสำหรับโฮมไดเร็กทอรีของผู้ใช้แต่ละราย และรวมจำนวนไฟล์และไดเรกทอรีย่อยทั้งหมดไว้ในแต่ละรายการ:
report_home_space () {
report_home_space () {
รูปแบบท้องถิ่น="%8s%10s%10s\n"
ท้องถิ่น i dir_list total_files total_dirs total_size ชื่อผู้ใช้
ถ้า [[ $(id -u) -eq 0 ]]; จากนั้น dir_list=/home/* user_name="All Users"
อื่น
dir_list=$HOME user_name=$USER
fi
เสียงสะท้อน " การใช้พื้นที่ในบ้าน ($user_name) " สำหรับฉันใน $dir_list; do
total_files=$(ค้นหา $i -type f | wc -l) total_dirs=$(ค้นหา $i -type d | wc -l) total_size=$(du -sh $i | ตัด -f 1)
เสียงสะท้อน " $i "เอคโค่" "
printf "$format" "Dirs" "Files" "ขนาด" printf "$format" "----" "-----" "----"
printf "$format" $total_dirs $total_files $total_size echo " "
กลับมาแล้ว
}
รูปแบบท้องถิ่น="%8s%10s%10s\n"
ท้องถิ่น i dir_list total_files total_dirs total_size ชื่อผู้ใช้
ถ้า [[ $(id -u) -eq 0 ]]; จากนั้น dir_list=/home/* user_name="All Users"
อื่น
dir_list=$HOME user_name=$USER
fi
เสียงสะท้อน " การใช้พื้นที่ในบ้าน ($user_name) " สำหรับฉันใน $dir_list; do
total_files=$(ค้นหา $i -type f | wc -l) total_dirs=$(ค้นหา $i -type d | wc -l) total_size=$(du -sh $i | ตัด -f 1)
เสียงสะท้อน " $i "เอคโค่" "
printf "$format" "Dirs" "Files" "ขนาด" printf "$format" "----" "-----" "----"
printf "$format" $total_dirs $total_files $total_size echo " "
กลับมาแล้ว
}
การเขียนใหม่นี้ใช้สิ่งที่เราได้เรียนรู้ไปมาก เรายังคงทดสอบ superuser แต่แทนที่จะดำเนินการชุดการกระทำทั้งหมดโดยเป็นส่วนหนึ่งของ ifเราตั้งค่าตัวแปรบางตัวที่ใช้ในภายหลังใน for loop เราได้เพิ่มตัวแปรท้องถิ่นหลายตัวให้กับฟังก์ชันและใช้ประโยชน์จาก printf เพื่อจัดรูปแบบเอาต์พุตบางส่วน