Path: utzoo!utgpu!attcan!uunet!husc6!think!ames!haven!ncifcrf!nlm-mcs!adm!xadmx!wmartin@almsa-1.arpa From: wmartin@almsa-1.arpa (Will Martin -- AMXAL-RI) Newsgroups: comp.unix.questions Subject: * Question Message-ID: <17661@adm.BRL.MIL> Date: 29 Nov 88 21:22:53 GMT Sender: news@adm.BRL.MIL Lines: 45 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. Under "csh", if "bar" doesn't exist, I get: "/data/sa*/bar: No match", but, if "bar" DOES exist, and I do either: cat foo > /data/sa*/bar or cat foo >> /data/sa*/bar it will work OK! So "csh" expands the wildcard * correctly in this case. My query: Is this just a case where "sh" was broken and "csh" fixed it? Or is there something else going on here? And, if "csh" lets this work as shown, why does it NOT work when creating the file initially? What I don't understand is why the expansion doesn't work under "sh". You are sitting at the shell at this point. If the command was an "ls", the "*" WOULD expand OK. Why doesn't it expand in this case? Puzzled, Will Martin "wmartin@almsa-1.arpa"