I ran into a strange situation the other day. I was compiling a program that was core dumping ( 52.9 ) . At some point, I decided to delete the object files and the core file, and start over, so I gave the command:
%rm *.o core
It works as expected most of the time, 
except when
 no object files exist. (I don't remember why I did this, but it was probably by using 
!!
 (
11.7
)
 when I knew there weren't any 
.o
's around.) In this case,
 you get 
No match
, and the 
core
 file is 
not
 deleted.
It turns out, for C shell users, that if none of the wildcards can be expanded, you get a 
No match
 error. It doesn't matter that there's a perfectly good match for other name(s). That's because, when 
csh
 can't match a wildcard, it aborts and prints an error - it won't run the command. If you create one 
.o
 file or remove the 
*.o
 from the command line, 
core
 will disappear happily.
On the other hand, if the Bourne shell can't match a wildcard, it just passes the unmatched wildcard and other filenames:
*.o core
to the command (in this case, to 
rm
) and lets the command decide what to do with it. So, with Bourne shell, what happens will depend on what your command does when it sees the literal characters 
*.o
.
You can make csh act a lot like sh by using:
set nonomatch
- ,