I find myself using a handful of long commands over and over again with slightly different arguments. For example:
rsync -havu --progress --rsh='ssh -l mylogin' some.machine.somewhere:/some/path /some/local/path
I'd like to be able to easily insert that command at my zsh
prompt, and then navigate the command line to make the necessary changes to paths, hosts, and logins. I set up a zsh parameter:
FOO="rsync -havu --progress --rsh='ssh -l mylogin' some.machine.somewhere:/some/path /some/local/path"
Then I can expand $FOO
at the prompt. However, the expanded command has all its spaces and quotations escaped with backslashes. Is there a way to make zsh
not put the escape characters in the expansion?
I know I can search my history for similar commands and then edit those -- I'd still have to type the long thing out once in each new shell though. I'm also open to other ways I could accomplish my purpose... I could write a python script or something but that seems like a lot of overhead for a fairly simple task.
FOO=(rsync -havu --progress --rsh=\'ssh -l mylogin\' some.machine.somewhere:/so\ me/path /some/local/path)
– harish.venkat Jan 13 '13 at 02:53--rsh
. It's rare to specify a username explicitly when connecting with ssh. Usually, you would define an alias with the right username in your~/.ssh/config
. See ssh remote server on some port other than 22 without password for an example. – Gilles 'SO- stop being evil' Jan 14 '13 at 00:48