[CentOS-de] df verschönern
Frank Thommen
frank.thommen at embl-heidelberg.de
Do Nov 17 07:27:19 EST 2011
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 at 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