Questions about windows support

H. S. Teoh hsteoh at quickfur.ath.cx
Mon Feb 20 19:31:34 PST 2012


On Tue, Feb 21, 2012 at 04:24:44AM +0100, Adam D. Ruppe wrote:
> On Tuesday, 21 February 2012 at 03:13:10 UTC, H. S. Teoh wrote:
> >for x in *; mv $x dest/$x; done
> >
> >Easy. :)
> 
> And wrong!
> 
> What if the filename has a space in it? You can say "$x", with quotes,
> to handle that.

Argh, you're right. That's one reason I *hate* the implicit
interpolation that shells have the tendency to do. Perl got it right: $x
means the value of x as a *single* value, no secret additional
interpolation, no multiple layers of re-interpretation, and that
nonsense.


> But, worse yet... a leading dash? Another downside with the shell
> expansion is the program can't tell if that is an expanded filename or
> a user option.

Heh. Never thought of this before. I can see some fun times to be had
with it, though!

But you could probably handle it by:

	mv -- "$x" "$dest/$x"


> In this case, the mv simply wouldn't work, but you can get some
> bizarre behavior out of that if you wanted to play with it.
> 
> try this some day as a joke:
> 
> $ mkdir evil-unix # toy directory
> $ cd evil-unix
> $ touch -- -l # our lol file
> $ touch cool # just to put a file in there
> $ ls
> -l  cool
> $ ls * # the lol file is interpreted as an option!
> -rw-r--r-- 1 me users 0 2012-02-20 22:18 cool
> $
> 
> 
> imagine the poor newb trying to understand that!

+1, LOL.


T

-- 
Two wrongs don't make a right; but three rights do make a left...


More information about the Digitalmars-d mailing list