LC
"@(#)README 1.5 2/3/91 Kent Landfield"
This directory contains the source to lc. lc is much like the ls
command except it separates the types of files into groups and then
displays located file names to the user is a columnar fashion.
"lc"'s history goes back to 1978 when it was originally developed at the
University of Waterloo on a Honeywell 66/60 system. It became so popular
that it was ported to Waterloo's V7 Unix systems shortly thereafter.
This version is a complete re-implementation of lc and contains no
University of Waterloo code.
This version of lc was initially implemented by myself after I became
accustomed to the lc command on a Mark Williams Coherent system I was
running back in 1984. When I started moving to different systems I
found that I did not like the lack of information, flexibility and the
general display that ls provided. I have found that I am not the only
one that has become feed up with ls and its jumbled output. All the
people here use lc much more than they use ls. It is a locally well
known fact that when a new machine comes into the house, the first local
software that is put on the machine is lc. It is far from perfect but
it is better than ls on a general use basis.
lc uses three different environment variables COLS, CDPATH, and LC
allowing you to customize how you wish lc to perform on a default
basis. COLS is used to switch the column width between 80 and 132
column display. LC is used to set lc specific options. The command
line options shown in the option list below are available to be used
in setting up how lc is to work for you. Options that you supply on
the command line override options that are specified in the environment.
lc uses CDPATH to locate files that are requested but are not in the
specified location or within the local directory.
lc has incorporated minimal spell checking using slightly modified
routines found in the book, The UNIX Programming Environment, by
Brian Kernighan and Rob Pike.
The following is a quick reference of options to lc. These options
can be specified in the Environment variable LC so that they are
done each time lc is executed.
lc -- categorize files in a directory and list column-wise
Usage: lc [ options ] [ directory ... ]
Options:
-a List dot files as well.
-b List block special files only
-c List character special files only
-d List directories only
-D Do not display singular files
-e Mark executable files with '*'
-f List regular files only
-F List fifo files only
-1 List files one per line instead of in columns
-r Do not sort the file names before displaying.
-m List shared memory name space entry files only
-M List semaphore name space entry files only
-S List socket file only
-s List symbolic links only
-L Display symbolic links
-l Mark symbolic links with '@'
-I Suppress unresolved symbolic link messages.
The "only" options can be combined.
If there is no 'directory' specified, the current directory is used.
Not all options are supported on every system. (e.g. no symbolic links
on your system ? Options -s, -I -L or -l won't be available..)
If your system does not support shared memory name space entry files,
then you cannot use the -m option...
History:
Initially designed on an IBM-XT running Coherent in 1984.
Ported to XENIX on an IBM-AT in 1984.
Ported to System V on AT&T 3Bs in 1985.
Ported to DEC Vax 11/750 running System V in 1986.
Ported to BSD4.2 on a Sequent Balance 8000 in 1986.
Jeff Minnig added the initial support for links.
Ported to SunOS 4.0 on a Sun 3/60 in 1988.
Rick Ohnemus did major surgery to remove static storage
and *greatly* enhanced the link support. Thanks rick!
Tested with Ultrix 3.0 & 3.1 on a DECstation 3100 in 1989.
Tested with Ultrix 3.0 & 3.1 on a VAXstation 3500 in 1989.
Ported to AIX 2.2 on an IBM RT.
Tested with UTek on a Tektronix 4319 in 1989.
Tested with IRIX System V on a Silicon Graphics Iris 4D/210GTX in 1989.
Tested with AmigaDOS 1.3 on an Amiga 1000 in 1989.
Tested with SunOS 4.0.3 on a Sparkstation 1 in 1989.
Tested with UTek on a Tektronix XD8810 in 1989.
Tested with AIX 3.+ on a Risc System/6000 in 1990.
Ivan Fris added the ability to combine "only" options in 1990.
Mike Peterson ported it to the Apollo Domain/OS SR10.2 in 1990.
The following is a todo list that may get done someday...
1. Port to all flavors of unix on all platforms. Lofty goal but
on-going... :-)
2. Need to modify lc so that one environment (or compile) option will
only let you see files you own or have access to.
3. Add spell checking code to CDPATH usage
*PLEASE!*
If you have a problem, there's someone else out there who either has
had or will have the same problem. Please send all "lc" ideas, patches,
etc to
INTERNET: kent@sparky.IMD.Sterling.COM or UUCP: uunet!sparky!kent
so that I can continue to improve the functionality and portability of lc.
Just a note for historical interest: David Tanguay of Software Development
Group, University of Waterloo informs me that LC stands for "list catalog".
GCOS TSS on the Honeywell used the term "catalog", meaning (roughly) the
same thing as a Unix directory. The GCOS file system maintenance program
was called ACCE (short for access), a Swiss Army knife type program, and
one of its sub-functions was LC, which gave the usual baroque display.
A separate LC program was written to give the more commonly wanted structure
info, and CLIS (for catalog listing) to give a more "ls -l" type of display.
-Kent+