Listing 1

#!/usr/local/bin/perl
eval "exec /usr/local/bin/perl -S $0 $*"
   if $running_via_sh;
# A cute Berkeley style df formatter for those running USG df
# Do what you want with it; it's yours.
# R. Craig Peterson, N8INO
$fs=join(' ',@ARGV);
open(Df, "df -t $fs | ")  | | die "Can't run df.";

format top =
Filesystem       kbytes  used avail capacity iused ifree %iused Device
format STDOUT =
@<<<<<<<<<<<<<< @>>>>>> @>>>>>> @>>>>> @>% @>>>>> @>>>>> @>% @<<<<<<<<<<<<<<
$fs         $kbytes $used $avail $capacity $iused $inodes $piused $name

while (<Df>) {
   if (/total blocks/) {
      ($d,$tblocks,$d,$d,$tinodes,$d) = split(' ');
      $tinodes *= 8;
      $kbytes = $tblocks / 2;
      $used = ($tblocks - $blocks) / 2;
      $avail = $blocks / 2;
      $capacity = int(100 - ($blocks / $tblocks * 100));
      $iused = $tinodes - $inodes;
      $piused = int($iused / $tinodes * 100);
      write;
      $tot_kbytes += $kbytes;
      $tot_used += $used;
      $tot_avail += $avail;
      $tot_iused += $iused;
      $tot_inodes += $inodes;
      $tot_tinodes += $tinodes;
   } else {
      s/\(\s*/ \(/;
      s/\s*\)/\)/;
      ($fs,$name,$blocks,$d,$inodes,$d) = split;
      $name =~ s![(): \t] | /dev/dsk/!!g;
   }
}
if ($#ARGV < 0) {
   $kbytes = $tot_kbytes;
   $used = $tot_used;
   $avail = $tot_avail;
   $capacity = int(100 - ($avail / $kbytes * 100));
   $iused = $tot_iused;
   $inodes = $tot_inodes;
   $tinodes = $tot_tinodes;
   $piused = int($iused / $tinodes * 100);
   $fs = 'Totals:';
   $name= '';
   write;
}