Skip site navigation (1)Skip section navigation (2)
Date:      Sun, 12 Oct 2008 01:49:31 -0700
From:      Jeremy Chadwick <koitsu@FreeBSD.org>
To:        Matthew Seaman <m.seaman@infracaninophile.co.uk>
Cc:        mdh_lists@yahoo.com, Gary Kline <kline@thought.org>, FreeBSD Mailing List <freebsd-questions@freebsd.org>
Subject:   Re: rsync or even scp questions....
Message-ID:  <20081012084931.GA84974@icarus.home.lan>
In-Reply-To: <48F1B87E.6010803@infracaninophile.co.uk>
References:  <7708.70177.qm@web56801.mail.re3.yahoo.com> <48F1B87E.6010803@infracaninophile.co.uk>

next in thread | previous in thread | raw e-mail | index | archive | help
On Sun, Oct 12, 2008 at 09:42:38AM +0100, Matthew Seaman wrote:
> mdh wrote:
>> --- On Sat, 10/11/08, Gary Kline <kline@thought.org> wrote:
>>> 	On the Ubuntu computer I am /home/kline; on my main
>>> computer,
>>> 	my home is /usr/home/kline.   The following sh script
>>> worked
>>> 	perfected when my home on "tao" [FBSD] was
>>> /home/kline:
>>>
>>> P
>>> #!/bin/sh
>>>
>>> PWD=`pwd`;
>>> echo "This directory is [${PWD}]";
>>>
>>> scp -qrp  ${PWD}/* ethos:/${PWD}
>>> ###/usr/bin/scp -rqp -i /home/kline/.ssh/zeropasswd-id
>>> ${PWD}/* \ klin
>>> e@ethos:/${PWD}
>>>
>>> 	Question #1: is there any /bin/sh method of getting rid of
>>> the
>>> 	"/usr"?  I switch off between my two computers
>>> especially when
>>> 	get mucked up, as with my upgrade to kde4.  (Otherwise, I
>>> do
>>> 	backups of ~kline as well as other critical directories.)
>>>
>>> 	Is there a way of automatically using rsync rather that my
>>> 	kwik-and-dirty /bin/shell script?
>>>
>>> 	thanks, people,
>>>
>>> 	gary
>>
>> If what you wish to do is simply get rid of /usr in a string, you can use sed like so:
>> varWithoutUsr=`echo ${varWithUsr} |sed -e 's/\/usr//'`
>> After running this, where $varWithUsr is the variable containing a 
>> string like "/usr/home/blah", the variable $varWithoutUsr will be equal 
>> to "/home/blah".  I create simple scripts like this all the time to 
>> rename batches of files, for example.  
>>
>> The easier way is probably just to not specify a dir to scp's remote 
>> path though, since it defaults to the user's home directory.  
>
> Or, in anything resembling Bourne shell:
>
> varWithoutUsr=${varWithUsr#/usr}

And I'll take a moment to recommend Matthew's method, since it does not
involve fork()ing an additional process.

When writing shell scripts in general, it's best if you can avoid
spawning external processes for things which can be done easily
(keyword: easily!) within Bourne natively.  There's no harm in doing it
for more complex things, but fork() is somewhat expensive, and try to
imagine what will happen to those scripts if the system lacks process
table space, etc...  :-)  Best to try and make everything
"self-contained" if possible.

-- 
| Jeremy Chadwick                                jdc at parodius.com |
| Parodius Networking                       http://www.parodius.com/ |
| UNIX Systems Administrator                  Mountain View, CA, USA |
| Making life hard for others since 1977.              PGP: 4BD6C0CB |




Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?20081012084931.GA84974>