در این درس، برخی از توابع پوسته خود را برای تولید مقداری اطلاعات سودمند گسترش میدهیم.
تابع show_uptime خروجی فرمان uptime را نمایش خواهد داد. فرمان uptime چند نکته مهم در مورد سیستم، از جمله طول مدت زمانی که سیستم از آخرین راهاندازی (up)در حال اجرا بوده است، تعداد کاربران و بارگیری اخیر سیستم را بیرون میدهد.
[me@linuxbox me]$ uptime
9:15pm up 2 days, 2:32, 2
users, load average: 0.00, 0.00, 0.00
برای به دست آوردن خروجی فرمان uptime در صفحه HTML خود، ما تابع پوستهمان را با تعویض کد stub موقت با نگارش تکمیل شده به این صورت مینویسیم:
show_uptime() { echo "<h2>System uptime</h2>" echo "<pre>" uptime echo "</pre>" }
همانطور که میتوانید مشاهده نمایید، این تابع جریانی از متن شامل یک مخلوطی از برچسبهای HTML و خروجی فرمان را بیرون میدهد. هنگامیکه در بدنه اصلی برنامه ما جایگزینی فرمان صورت بگیرد، خروجی تابع ما قسمتی از
تابع drive_space فرمان df را برای فراهم نمودن خلاصهای از فضای تمام سیستم فایلهای متصل شده استفاده خواهد نمود.
[me@linuxbox me]$ df
Filesystem 1k-blocks Used Available Use% Mounted on
/dev/hda2 509992 225772 279080 45% / /dev/hda1 23324 1796 21288 8% /boot /dev/hda3 15739176 1748176 13832360 12% /home /dev/hda5 3123888 3039584 52820 99% /usr
از لحاظ ساختار، تابع drive_space بسیار مشابه تابع show_uptime است:
drive_space() { echo "<h2>Filesystem space</h2>" echo "<pre>" df echo "</pre>" }
تابع home_space مقدار فضایی را که هر کاربر در دایرکتوری خانگیاش استفاده میکند نمایش خواهد داد. این اطلاعات را به صورت یک لیست نمایش میدهد، که به طور نزولی بر حسب مقدار فضای مورد استفاده مرتب شده است.
home_space() { echo "<h2>Home directory space by user</h2>" echo "<pre>" echo "Bytes Directory" du -s /home/* | sort -nr echo "</pre>" }
توجه نمایید که برای اینکه این تابع به طور موفق اجرا گردد، اسکریپت باید توسط کاربر ارشد اجرا گردد، چون فرمان du برای بررسی محتویات دایرکتوری
ما هنوز برای تمام کردن تابع system_info آماده نیستیم. تا آن هنگام، کد stubbing را به طوریکه HTML معتبری تولید کند بهینهسازی مینماییم:
system_info() { echo "<h2>System release info</h2>" echo "<p>Function not yet implemented</p>" }