Re: [dev] [sbase] [PATCH v2] ls: List directory contents if file is a symlink to a directory

From: Michael Forney <mforney_AT_mforney.org>
Date: Sun, 7 Dec 2014 16:02:52 -0800

On Sun, Dec 07, 2014 at 03:43:36PM -0800, Eric Pruitt wrote:
> I don't know if this is the correct behavior. Whether or not a symlink
> to a directory has its contents shown with GNU ls depends on whether or
> not there's a slash present and the flags used:
>
> playground$ mkdir AFolder
> playground$ touch AFolder/Horse
> playground$ ln -s AFolder SymbolicLinkToAFolder
> playground$ ls SymbolicLinkToAFolder
> Horse
> playground$ ls -l SymbolicLinkToAFolder
> lrwxrwxrwx 1 ericpruitt ericpruitt 7 Dec 7 15:35 SymbolicLinkToAFolder
> -> AFolder
> playground$ ls -l SymbolicLinkToAFolder/
> total 0
> -rw------- 1 ericpruitt ericpruitt 0 Dec 7 15:34 Horse
>
> Personally, that "-l" made a difference surprised me, but prior to
> actually running the command, I would expect "ls ... $SYMLINK" to show
> the information for the symlink while "ls ... $SYMLINK/" to show the
> contents of the directory. If I recall correctly, historically in things
> like Sys V, whether or not a trailing slash was added to a directory
> used as a command line argument changed the behaviour of various tools.
> Check out http://unix.stackexchange.com/a/50522 which has a few links to
> the POSIX docs.

Actually, POSIX specifies this behavior (contents of symlink without -l,
symlink itself with -l):

  "If one or more of the -d, -F, or -l options are specified, and
   neither the -H nor the -L option is specified, for each operand that
   names a file of type symbolic link to a directory, ls shall write the
   name of the file as well as any requested, associated information. If
   none of the -d, -F, or -l options are specified, or the -H or -L
   options are specified, for each operand that names a file of type
   symbolic link to a directory, ls shall write the names of files
   contained within the directory as well as any requested, associated
   information."

I will update the patch to interact correctly with the -l and -F flags,
and maybe look at adding the -H and -L flags.
Received on Mon Dec 08 2014 - 01:02:52 CET

This archive was generated by hypermail 2.3.0 : Mon Dec 08 2014 - 01:12:07 CET