Hallo Wolfgang,
habe nachfolgendes Skript gefunden. Wer kennt sich aus um die Ausgabe der Balken an der Länge des grössten Medienname (siehe weiter unten) zu richten.
(gefundenes Skript) df | awk 'headline==0 { printf("%-12s %4s\n", $6, $5); headline=1 }; $1 ~ /^/]*/ { d=int(substr($5,1,length($5)-1)/2); \ b=""; { for(i=1; i<=d; i++) b=b"#" }; { for(i=d; i<=50; i++) b=b"-" }; printf("%-12s %4s %s\n", $6, $5, b ) }'
(Ausgabe) [user1@dex ~]$ df | awk 'headline==0 { printf("%-12s %4s\n", $6, $5); headline=1 }; $1 ~ /^/]*/ { d=int(substr($5,1,length($5)-1)/2); \ b=""; { for(i=1; i<=d; i++) b=b"#" }; { for(i=d; i<=50; i++) b=b"-" }; printf("%-12s %4s %s\n", $6, $5, b ) }' Eingehängt Ben% / 67% #################################------------------ /boot 21% ##########----------------------------------------- /HD500 41% ####################------------------------------- /HD80 22% ###########---------------------------------------- /HD160 42% #####################------------------------------ /media/disk 27% #############-------------------------------------- /media/1.2.9-19-i686-pae 100% ##################################################- /media/HD750 17% ########------------------------------------------- /media/HD750-Part2 44% ######################-----------------------------
Mein Ausgabewunsch: / 67% #################################------------------ /boot 21% ##########----------------------------------------- /HD500 41% ####################------------------------------- /HD80 22% ###########---------------------------------------- /HD160 42% #####################------------------------------ /media/disk 27% #############-------------------------------------- /media/1.2.9-19-i686-pae 100% ##################################################- /media/HD750 17% ########------------------------------------------- /media/HD750-Part2 44% ######################-----------------------------
Vielleicht so:
---------------- df -P | awk 'BEGIN {max=0; n=1};\ { if (length($6) > max) {max=length($6)}; \ mount[n]=$6; cap[n]=$5; n++ \ } \ END {\ N=1; printf("%-"max"s %s\n", mount[N], cap[N]); N++; # headline \ for (N=N; N<n; N++) {\ { d=int(substr(cap[N],1,length(cap[N])-1)/2); b=""; \ { for(i=1; i<=d; i++) b=b"#" }; \ { for(i=d; i<=50; i++) b=b"-" }; printf("%-"max"s %4s %s\n", mount[N], cap[N], b ) \ }\ } \ }' ----------------
Erst mal `df -P`, damit lange Pfadnamen, welche die Zahlen auf die zweite Zeile druecken, keine Probleme verursachen.
Die Eliminierung von nicht-lokalen und speziellen Filesystemen (tmpfs etc.: '$1 ~ /^/]*/') habe ich rausgenommen. Das kann man jederzeit wieder einfuegen.
Dann eine Schlaufe durch alle Ausgabezeilen von `df -P`, wobei ich jeweils Mountpunkt und Kapazitaet in den Arrays mount[] und cap[] speichere, die Laenge des Pfades des Mountpunktes messe und 'max' auf die bisher laengste gemessene Laenge setze. Bisher findet kein Ausgabe statt.
Erst am Ende des Skriptes (END{}) loope ich durch mount[] und cap[] und schreibe die Daten heraus. Die erste Zeile behandle ich speziell, da sie nur die Headerzeile beinhaltet und keine Kapazitaetsangaben.
Das Ganze sieht jetzt so aus:
# df Filesystem 1K-blocks Used Available Use% Mounted on /dev/sda5 108254948 43818664 58848480 43% / tmpfs 1957948 12 1957936 1% /dev/shm home:/home/fthommen 298844160 163278528 135565632 55% /home/fthommen home:/home/xsoft 298844160 163278528 135565632 55% /home/xsoft software:/software 104857600 67136 104790464 1% /g/software structures.embl.de:/struct/software/linux/pymol-1.4.1 209715200 97551552 112163648 47% /g/software/linux/pack/pymol-1.4.1 structures.embl.de:/struct/software/linux/glew-1.4.0 209715200 97551552 112163648 47% /g/software/linux/pack/glew-1.4.0 #
# df -P Filesystem 1024-blocks Used Available Capacity Mounted on /dev/sda5 108254948 43818664 58848480 43% / tmpfs 1957948 12 1957936 1% /dev/shm home:/home/fthommen 298844160 163277696 135566464 55% /home/fthommen home:/home/xsoft 298844160 163277696 135566464 55% /home/xsoft software:/software 104857600 67136 104790464 1% /g/software structures.embl.de:/struct/software/linux/pymol-1.4.1 209715200 97551552 112163648 47% /g/software/linux/pack/pymol-1.4.1 structures.embl.de:/struct/software/linux/glew-1.4.0 209715200 97551552 112163648 47% /g/software/linux/pack/glew-1.4.0 #
# mydf Mounted Capacity / 43% #####################------------------------------ /dev/shm 1% --------------------------------------------------- /home/fthommen 55% ###########################------------------------ /home/xsoft 55% ###########################------------------------ /g/software 1% --------------------------------------------------- /g/software/linux/pack/pymol-1.4.1 47% #######################---------------------------- /g/software/linux/pack/glew-1.4.0 47% #######################---------------------------- #
Gruss
frank