tmpfiles.d and spaces in filenames

Mike Williams dmikewilliams at gmail.com
Wed Jun 1 19:30:49 UTC 2011


On Wed, Jun 1, 2011 at 3:18 PM, JD <jd1008 at gmail.com> wrote:

> On 06/01/11 12:05, Patrick O'Callaghan wrote:
> > On Wed, 2011-06-01 at 09:59 -0700, JD wrote:
> >> Since a space is Unix's and Linux's chosen field separator,
> >> I think having a space in filenames should be avoided. there
> >> are many situations where spaces in filenames cause problems.
> >> A simple example:
> >>
> >> for i in *; do
> >> [ -f $i ]&&  echo $i is a file
> >> done
> >>
> >> you will see that the file with spaces in it's name
> >> will not be recognized as a file because each
> >> space-separated member of that file name
> >> becomes a separate argument
> >> when * is expanded by the shell.
> >
> > No, each filename counts as one argument, even if it has spaces in it.
> > The problem arises when you *use* the argument. The above should read:
> >
> > for i in *; do
> > [ -f "$i"]&&  echo "$i" is a file
> > done
> >
> > (the quotes are optional in the echo case obviously).
> >
> > poc
> >
> The quotes are not optional.


I think he meant that the quotes are optional for the echo $i - which is
correct.

Personally I avoid spaces in filenames and usually use a perl one liner to
substitute an underscore for spaces when I don't have to keep the original
name for someone else.

zsh works without any quotes, the first example works fine for files with
spaces in the names with zsh.

Mike
-------------- next part --------------
An HTML attachment was scrubbed...
URL: http://lists.fedoraproject.org/pipermail/users/attachments/20110601/33cedfd4/attachment.html 


More information about the users mailing list