tmpfiles.d and spaces in filenames

JD jd1008 at gmail.com
Wed Jun 1 20:39:30 UTC 2011


On 06/01/11 12:30, Mike Williams wrote:
>
>
> On Wed, Jun 1, 2011 at 3:18 PM, JD <jd1008 at gmail.com 
> <mailto: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
>
Nop!
They are not optional for the "use" of the value of the variable, as
I clearly demonstrated above.



More information about the users mailing list