This is the mail archive of the
cygwin
mailing list for the Cygwin project.
Re: Simple rm question, removing files that end with a tilde even if they start with a dot
- From: Brian Dessent <brian at dessent dot net>
- To: cygwin at cygwin dot com
- Date: Fri, 03 Nov 2006 12:37:09 -0800
- Subject: Re: Simple rm question, removing files that end with a tilde even if they start with a dot
- References: <eig8lc$ugb$1@sea.gmane.org>
- Reply-to: cygwin at cygwin dot com
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
way.
Brian
--
Unsubscribe info: http://cygwin.com/ml/#unsubscribe-simple
Problem reports: http://cygwin.com/problems.html
Documentation: http://cygwin.com/docs.html
FAQ: http://cygwin.com/faq/