Date: Sun, 19 May 2002 00:07:58 -0700 From: Bakul Shah <bakul@bitblocks.com> To: Dima Dorfman <dima@trit.org> Cc: Paul Herman <pherman@frenchfries.net>, Giorgos Keramidas <keramida@FreeBSD.ORG>, current@FreeBSD.ORG Subject: Re: mergemaster(8) broken -- uses Perl Message-ID: <200205190707.DAA27939@marlborough.cnchost.com> In-Reply-To: Your message of "Sun, 19 May 2002 06:26:12 -0000." <20020519062613.04B153E1A@turbine.trit.org>
next in thread | previous in thread | raw e-mail | index | archive | help
> Paul Herman <pherman@frenchfries.net> 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 majordomo@FreeBSD.org
with "unsubscribe freebsd-current" in the body of the message
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?200205190707.DAA27939>
