> Paul Herman <[EMAIL PROTECTED]> wrote:
> > On Sun, 19 May 2002, Dima Dorfman wrote:
> > 
> > > How about fixing ls(1) to output the numeric mode if asked to?
> > 
> > That's good, but while you're at it you'd probably want to get
> > *everything* out of (struct stat) and print it numerically (device,
> > flags, atime since epoch, etc.)  You could do this in ls(1), but
> > I'll have a patch for fstat(1) soon (working on it) that gives you:
> > 
> > bash$ /usr/obj/usr/src/usr.bin/fstat/fstat -s /tmp /kernel
> > INODE  DEV    SIZE     BLOCKS MODE   FLAGS  LNK UID GID ATIME      MTIME     CTIME 
>     NAME
> > 235    226304 4114305  8096   100555 400000 1   0   0   1021779222 
>10217403541021740354 /kernel
> > 56651  226304 512      4      041777 000000 6   0   0   1021787523 
>10217876571021787657 /tmp
> > 
> > so you can parse it however you like.  Either way, ls(1) or
> > fstat(1), as long as you can get the info you need.  :-)
> 
> This looks much better than my extention.  I look forward to seeing
> this get into the tree.

I have a yet another variation, called `stat'.  It is like
ls(1) except you specify what stat fields you want using a
printf style format string.  I added -n flag to print out
numeric values instead of symbolic ones where it makes sense.
I originally wrote it many years ago because access to stat
fields from shell scripts is such a pain.  Yours for asking.

$ stat -h
Usage: stat [-a | -f format] [-h] [-n] [-L] files...
  where options are:
    -a          print all attributes
    -f format   print using a printf like format
    -h          this help message
    -L          follow symbolic links
    -n          prints numeric values not symbolic values
    The -f format is as follows:
      \ escapes are as in printf
      any other non % char is printed as is, %% prints a single %
      a stat field is printed using %[-][width][.width]<letter> format.
      - for left justification, width[.width] is as for %s format of printf
     <letter> can be one of:
       a  file access time
       b  allocated blocks
       c  inode change time
       d  dev
       f  flags
       g  group
       G  generation
       l  links
       m  file modify time
       n  file name
       p  permissions: r=read w=write x=exec S=suid/sgid s=suid/sgid+x
                       T=sticky t=sticky+x
       r  raw dev
       s  size
       t  type: b=block c=char d=dir -=file p=fifo s=socket l=symlink w=whiteout
       u  user
     The default format is "%t%p %2l %-6u %-6g %9s %m %n\n"
     Format for the -a option is "%a|%b|%c|%d|%f|%g|%G|%i|%l|%m|%p|%r|%s|%t|%u|%n\n"

$ stat stat
-rwxr-xr-x  1 bakul  bakul      22523 May 18 23:46:16 2002 stat
$ stat -a stat

-- bakul

To Unsubscribe: send mail to [EMAIL PROTECTED]
with "unsubscribe freebsd-current" in the body of the message

Reply via email to