* Question

James Logan III logan at vsedev.VSE.COM
Wed Nov 30 14:27:29 AEST 1988


In article <17661 at adm.BRL.MIL> wmartin at almsa-1.arpa (Will Martin -- AMXAL-RI) writes:
#I have a query about filename generation/wildcard expansion. I have looked
#in the man pages and in several UNIX books, and talked about this locally,
#but haven't found an explanation. I've tested it on both Sys V (on a Sperry
#Unisys) and 4.3 BSD (on a VAX 750). It seems to be a consistent difference
#between sh and csh.
#
#Given the situation where you are trying to redirect output to a directory
#in some path structure, where you do have write access, but want to save
#time in typing:
#
#Say my login directory is /usr/wm. I also own a directory in another filesystem:
#"/data/save-backups". I am sitting in /usr/wm and want to put some data into
#that other directory, but want to avoid typing out "save-backups" all the time.
#There is nothing else under /data that begins with "sa".
#
#So I do this:
#
#cat foo > /data/sa*/bar   or    cat foo >> /data/sa*/bar
#
#Under "sh", no matter whether or not "bar" exists in that destination
#directory, this won't work. I get the response:
#
#sh: /data/sa*/bar: cannot create
#
#The shell will not expand that "*" to fill out the directory name. I have to
#type out the full "/data/save-backups/bar" pathname to get it to work.
#

Every version of the Bourne shell that I have seen does not
interpret the filename expansion characters after a redirection
symbol.  I believe this is to prevent 

	cat foobar >/data/sa*/bar

from expanding into

	cat foobar >/data/sally/bar /data/sandy/bar

which would effectively be the same as

	cat foobar /data/sandy/bar >/data/sally/bar

which was probably not intended.

The Korn shell gets this right by expanding the wildcard only if one
file matches.  If more than one file matches, the wildcard is used
literally.

			-Jim

-- 
Jim Logan		logan at vsedev.vse.com
(703) 892-0002		uucp:	..!uunet!vsedev!logan
			inet:	logan%vsedev.vse.com at uunet.uu.net



More information about the Comp.unix.questions mailing list