The ls -l command, and related commands like , give lots of information about a file (more exactly, about a file's ). The information is printed in a way that's (sort of) nice to look at. But the format might not be exactly what you want. That format can be tough for shell programmers to use: parsing the output with sed, awk, and others is tricky and a pain (article 16.25 has an example). Finally, the ls -l output is different on BSD and System V systems.
|sls||The sls command solves those problems and more. It lets you:|
Make your own output format: pick the information you want to see and the order it's shown.
Sort the output on one or more fields.
Make a consistent date format: numeric or in words, include the seconds if you want to, and more. Best of all, the date format won't change for files more than six months old (unless you use the -u option).
And there's much more.
The manual page on the disc explains sls formatting in detail. Here are a few examples. Let's start with the style of ls -l output that has fixed-width columns and doesn't show group ownership. (The default sls -l is similar, but its date format doesn't change after six months and it doesn't have the total line.)
ls -ltotal 3 -rw-r----- 1 jerry 1641 Feb 29 1992 afile lrwxrwxrwx 1 jerry 8 Nov 18 00:38 bfile -> ../bfile
Here's a more user-friendly format for people who aren't UNIX hackers
(it might be best to put this into an
sls -p '%m"%F %d, 19%y %r" %u %4skK %n'February 29, 1992 03:43:00 PM jerry 2K afile November 18, 1992 00:38:22 AM jerry 1K bfile
How about a simple ls output that shows all three: modification, access, and inode change? We'll use to print a title first:
echo 'modify access inode'; \ sls -p '%m"%D" %a"%D" %c"%D" %n'modify access inode 02/29/92 09/17/92 11/18/92 afile 11/18/92 11/18/92 11/18/92 bfile
Finally, let's ask sls to make a set of UNIX commands that could be used at the end of afile. These commands would recreate the modes, date and owner (with a numeric UID) as the files are extracted from the archive: