This is the mail archive of the cygwin mailing list for the Cygwin project.

Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

Re: Simple rm question, removing files that end with a tilde even if they start with a dot

Eric Lilja wrote:

> Why doesn't this work? I want to remove .bashrc~ (ls has been aliased to
> include -AF):
> hivemind@mindcooler ~
> $ ls
> .bash_history   .bashrc*   .emacs*    .emacs.elc*  .ssh/
> .bash_profile*  .bashrc~*  .emacs.d/  .inputrc*    coding/
> hivemind@mindcooler ~
> $ rm *~
> rm: cannot remove `*~': No such file or directory
> Obviously I can remove it by naming the file explicitly but I want to
> know why the lines I pasted above doesn't work so I learn something. :-)
> rm has not been aliased

By default, the shell does not include filenames beginning with '.'
during glob-expansion.  The reason it is listed with 'ls' is because in
that case, there is no glob being expanded, but rather you've supplied
no filenames to 'ls' and told it explicitly to list the entire contents
of the directory with -A.  If you had used a glob instead (such as by
typing "ls -A *" or more usefully "ls -Ad *") you would not have seen
the filenames beginning with dot, because in this case it is the shell
that determines which files get listed, not 'ls', so the -A would have
been irrelevant.

If you want globbing to match filenames beginning with . you need to
either set the dotglob shopt (see man bash) or you need to use a glob
such as .*~ instead of *~.

This is all generic shell behavior and is not specific to Cygwin in any


Unsubscribe info:
Problem reports:

Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]