escaping directory name space

  • Follow


using ditto for a targeted backup which has a directory with a space in 
directory name (FileMaker Server). Mac OS/server 10.6.4

What is the preferred syntax/escape for handling the space: quoting the 
offending name or backslashing prior to the space?


#!/bin/sh
ditto -c -k -rsrc /Library/"FileMaker 
Server"/Data/Backups/Hourly/Volumes/xsrv/Users/Shared/fms_backups/`date 
+%y-%m-%d`_test.zip


or:

#!/bin/sh
ditto -c -k -rsrc /Library/FileMaker\ Server/Data/Backups/Hourly 
/Volumes/xsrv/Users/Shared/fms_backups/`date +%y-%m-%d`_test.zip


0
Reply cortical (47) 6/30/2010 11:43:04 PM

On Thu, 01 Jul 2010 09:13:04 +0930, 105 <cortical@internode.on.net>
wrote:

>using ditto for a targeted backup which has a directory with a space in 
>directory name (FileMaker Server). Mac OS/server 10.6.4
>
>What is the preferred syntax/escape for handling the space: quoting the 
>offending name or backslashing prior to the space?
>
>
>#!/bin/sh
>ditto -c -k -rsrc /Library/"FileMaker 
>Server"/Data/Backups/Hourly/Volumes/xsrv/Users/Shared/fms_backups/`date 
>+%y-%m-%d`_test.zip
>
>or:
>
>#!/bin/sh
>ditto -c -k -rsrc /Library/FileMaker\ Server/Data/Backups/Hourly 
>/Volumes/xsrv/Users/Shared/fms_backups/`date +%y-%m-%d`_test.zip

In my shell (bash), both methods seem to work.  So if that's your shell
too, I suppose you can use either.

OTOH, if you're fanatic about minimalism, the backslash only requires
one character, whereas the quote pair requires two.



-- 
Web mail, POP3, and SMTP
http://www.beewyz.com/freeaccounts.php
 
0
Reply John 7/1/2010 12:03:00 AM


On 1/07/10 9:33 AM, John Kelly wrote:
> On Thu, 01 Jul 2010 09:13:04 +0930, 105<cortical@internode.on.net>
> wrote:
>
>> using ditto for a targeted backup which has a directory with a space in
>> directory name (FileMaker Server). Mac OS/server 10.6.4
>>
>> What is the preferred syntax/escape for handling the space: quoting the
>> offending name or backslashing prior to the space?
>>
>>
>> #!/bin/sh
>> ditto -c -k -rsrc /Library/"FileMaker
>> Server"/Data/Backups/Hourly/Volumes/xsrv/Users/Shared/fms_backups/`date
>> +%y-%m-%d`_test.zip
>>
>> or:
>>
>> #!/bin/sh
>> ditto -c -k -rsrc /Library/FileMaker\ Server/Data/Backups/Hourly
>> /Volumes/xsrv/Users/Shared/fms_backups/`date +%y-%m-%d`_test.zip
>
> In my shell (bash), both methods seem to work.  So if that's your shell
> too, I suppose you can use either.
>
> OTOH, if you're fanatic about minimalism, the backslash only requires
> one character, whereas the quote pair requires two.
>
>
>

thanks John

Yes both methods work. I did notice that Smultron (text editor) red 
flags the quoted string.

I knew that drag/dropping  the directory onto a terminal loaded the path 
at the prompt, I just recognized during some testing that the loaded 
path uses the backslash syntax, so I'll take that as a anointment from 
the demigods of unix coding past  :-)

0
Reply 105 7/1/2010 12:48:31 AM

105 wrote:
^^^
Something is borken there.

> using ditto for a targeted backup which has a directory with a space in
> directory name (FileMaker Server). Mac OS/server 10.6.4
> 
> What is the preferred syntax/escape for handling the space: quoting the
> offending name or backslashing prior to the space?
> 
> #!/bin/sh
> ditto -c -k -rsrc /Library/"FileMaker
> Server"/Data/Backups/Hourly/Volumes/xsrv/Users/Shared/fms_backups/`date
> +%y-%m-%d`_test.zip

I would not do this, but instead

  ditto -c -k -rsrc "/Library/FileMaker
Server/Data/Backups/Hourly/Volumes/xsrv/Users/Shared/fms_backups/$(date
+%y-%m-%d)_test.zip"

I would want quote the entire positional argument so that it is clear what 
the argument is.  Also makes refactoring easier, like

  base='/Library/FileMaker Server/Data/Backups'
  dir="$base/Hourly/Volumes/xsrv/Users/Shared/fms_backup"
  today=$(date +%y-%m-%d)
  ditto -c -k -rsrc "${dir}/${today}_test.zip"

And I tend to use $(…) instead of `…` because it is less ambiguous (consider
e.g. x=`ls -l `which acroread`` vs. x=$(ls -l $(which acroread)) and allows 
for more complex expressions inside (especially other `…`).  Depends on the 
shell, though; must be a POSIX-compliant one, the original Bourne shell 
(1978 CE) supported only backticks for command substitution.

> or:
> 
> #!/bin/sh
> ditto -c -k -rsrc /Library/FileMaker\ Server/Data/Backups/Hourly
> /Volumes/xsrv/Users/Shared/fms_backups/`date +%y-%m-%d`_test.zip

This should be used automatically with Tab completion on the command line.  
I would want to avoid it in a shell script, the savings are not worthwhile.

HTH
-- 
PointedEars
0
Reply Thomas 7/1/2010 6:43:50 AM

thanks Thomas


testing locally for simplicity

this works:
src='/Library/AAABBB/CCC/'
dst='/Users/Shared/fms_backups/'
today=$(date +%y-%m-%d)
ditto -c -k -rsrc ${src} ${dst}${today}_test.zip


but when the source path has an escape requirement this is required:
src='/Library/AAA BBB/CCC/'
dst='/Users/Shared/fms_backups/'
today=$(date +%y-%m-%d)
ditto -c -k -rsrc "${src}"  ${dst}${today}_test.zip


or with uniform syntax:
src='/Library/AAA BBB/CCC/'
dst='/Users/Shared/fms_backups/'
today=$(date +%y-%m-%d)
ditto -c -k -rsrc  "${src}" "${dst}${today}_test.zip"



with src = AAA BBB
quoting the last:  ditto -c -k -rsrc "${src}  ${dst}${today}_test.zip"
returns ditto: no destination

with src = AAA BBB
quoting the last:  ditto -c -k -rsrc ${src}  ${dst}${today}_test.zip
returns ditto: Can't archive multiple sources


so the moral is double quote the from to ditto components individually
0
Reply 105 7/1/2010 1:05:22 PM

4 Replies
704 Views

(page loaded in 0.085 seconds)

Similiar Articles:




7/20/2012 9:17:16 PM


Reply: