我发现自己一遍又一遍地使用一些长命令,参数略有不同。例如:
rsync -havu --progress --rsh='ssh -l mylogin' some.machine.somewhere:/some/path /some/local/path
我希望能够在提示符下轻松插入该命令zsh
,然后导航命令行以对路径、主机和登录名进行必要的更改。我设置了一个 zsh 参数:
FOO="rsync -havu --progress --rsh='ssh -l mylogin' some.machine.somewhere:/some/path /some/local/path"
然后我可以$FOO
根据提示进行扩展。但是,扩展命令的所有空格和引号都用反斜杠转义。有没有办法zsh
不将转义字符放入扩展中?
我知道我可以在历史记录中搜索类似的命令,然后编辑它们——不过,我仍然需要在每个新 shell 中输入一次很长的内容。我也愿意接受其他可以实现我的目的的方法...我可以编写一个 python 脚本或其他东西,但这对于一个相当简单的任务来说似乎是很大的开销。
答案1
我建议使用一个函数,该函数接受您经常更改的选项的参数。您可以将其放入 ZSH 配置中并以交互方式执行。这是一个例子:
myrsync() {
username=$1
srchost=$2
srcpath=$3
destpath=$4
rsync -havu --progress --rsh="ssh -l $username" "${srchost}:${srcpath}" "$destpath"
}
myrsync mylogin some.machine.somewhere /some/path /some/local/path