The following one-liner prints quotas on a filesystem in human-readable form. The first argument (/home here) should be substituted with the filesystem of which you want the quotas.

The quotas file is usually world-readable on linux, so you can run this as any user.

In a linux user quota file, there are eight fields for every user. These are used/quota/limit blocks (in kilobytes), used/quota/limit inodes, and two other fields that probably do something about grace time, but I'm not sure in their semantics.

Note that this will work only on a filesystem with linux quotas, as quota system in other oses (such as sunos) is completely different. Even on linux, I belive there are two different quota file formats, and this probably work only with one of them.

Use at your own risk.

perl -we '$z = pack("x32"); open $F, "<", "$ARGV[0]/quota.user" or die +; for ($u = 0; 0 < read $F, $s, 32; $u++) { $s eq $z and next; @d = u +npack "L*", $s; $n = getpwuid $u; push @l, "$n($u): blocks $d[2]/$d[1 +]/$d[0], files $d[5]/$d[4]/$d[3], grace $d[6]/$d[7]\n"; push @s, $d[0 +] || 1e999; } print @l[sort { $s[$a] <=> $s[$b] } 0 .. @l - 1];' /hom +e > quotas.txt