Subject: Re: stat(1)
To: Robert Elz <kre@munnari.OZ.AU>
From: Andrew Brown <atatat@atatdot.net>
List: current-users
Date: 12/29/2001 00:45:05
>  | Mine only puts out the times -- inode and size are easy enough to get 
>  | from ls, as are owner and group.  To me, the important thing is a 
>  | format that's easily parseable by scripts.
>
>Exactly.  No-one really needs an even more verbose "ls" output.  Though
>parsing ls output is never really what one ought to be doing, it is too
>likely to undergo random changes to make it "look better".

what if...what if someone were to use up another option letter for ls
and allow the user to specify a "format" (sort in the same way that
date and ps allow user specified formatting)?  hmm...-O looks unused.  :)

>So mine prints exactly whatever is asked for in whatever format is requested
>(though I've yet to add a way to give it strftime formats for date printing).

i wrote one once so that i could see more stuff.  then i wrote another
today because i read this thread.  then i realized i could emulate my
old script using my new one, and even ls (ls -lfdT actually, with -F
and -L as options, and perhaps without -T).

>Alternatively (to make things really easy for scripts), it prints everything
>in the form of var assignments (eval `stat -g file`) using mostly numeric
>output rather than symbolic.

a reasonable formatting grammar could do that also.  to use myself as
an example:

	% stat stat
	6 164676 100755 1 204 20 669392 5908 1009604500 1009604399 1009604399 8192 12 stat
	% stat -f "set atime=%at;set ctime=%ct;set mtime=%mt" stat
	set atime=1009604407;set ctime=1009604399;set mtime=1009604399
	% eval `./stat -f "set atime=%at;set ctime=%ct;set mtime=%mt" stat`
	% echo $mtime $ctime $atime 
	1009604399 1009604399 1009604425

admittedly, i wrote it in perl (so i don't get all the struct stat
fields), and the format parser is "crude", but it works well enough to
make me happy.

-- 
|-----< "CODE WARRIOR" >-----|
codewarrior@daemon.org             * "ah!  i see you have the internet
twofsonet@graffiti.com (Andrew Brown)                that goes *ping*!"
andrew@crossbar.com       * "information is power -- share the wealth."