On 07/26/2012 04:43 PM, Bernhard Voelker wrote: > On 07/26/2012 04:23 PM, Pádraig Brady wrote: >> On 03/01/2012 10:56 AM, Voelker, Bernhard wrote: >>> >>> What about a more general --fmt (or --format) option to >>> just get the columns you want in the order you want? >>> E.g. >>> >>> df --format=size,free%,mnt,fs >>> or >>> df --format=size-h,mnt # <column name>-h or >>> df --format=Size,mnt # uppercase Size meaning -h >> >> This is a border line feature, but I'm 60:40 for implementing it. >> >> Note something similar I noticed is: >> >> findmnt -l -o FSTYPE,SOURCE,TARGET >> >> It would make sense to align as closely to that as possible. >> So a full --output list supported by df could be >> FSTYPE,SOURCE,TARGET,SIZE,USED,AVAIL,FREEPCT
Oh right the last 4 items above should also have I... variants to cater for inodes. >> It's probably sufficient to use this to just order fields, >> and leave other formatting to existing modifiers. > > Implementing --output=<field-list> is of course much simpler > than what Jim proposed [1]: > he suggested a stat-like --format option which takes %-directives. > > That would be much more flexible for the user, and the existing > output formats would just be a pre-defined format strings. > We could for the first time have blocks and inodes statistics > in one command: Good point, but that could be allowed too with --output > > %i inodes > %I inodes in percent > %a AVAIL > %A AVAIL in percent > %u unused > %U unused percentage > %t total size > %T FSTYPE > %s SOURCE > %m TARGET (mount point) > ... > > df --format="%u:%i:%T:%m" > > And some directives could have mixed SIZE modifiers, e.g. > > %{SIZE}u used blocks with SIZE like KMGTPEZY. > %{SIZE}i inode number > > df --format="%Tt %Gu %Ki %m" T overlaps, but I see what you mean. > Scripts could parse the output of --format (or --printf) much > safer (SOURCE and TARGET can include almost any characters like > '\n', '\t', etc. but never e.g. NULL) They can't actually. mbsalign replaced non printable chars in all but the last field, and there was a patch last week to replace control chars in the last field with '?' Would you still want to apply mbsalign to all fields but the last when using a specific format like this? > df --printf="%U\0%s\0%m\0\n" > > As already said, this would be a greater change in df.c, > but some code could surely be shared with stat.c and maybe > in future with "ls --format=..." ;-) > > I'm not against --output, but the advantage of a more > flexible --printf is unbeatable IMO. 60:40 for --output as ordering/selection is needed by some 40:60 against --printf as detailed formatting is neede by few cheers, Pádraig.