常用命令“模板”:去除参数扩展转义字符

常用命令“模板”:去除参数扩展转义字符

我发现自己一遍又一遍地使用一些长命令,参数略有不同。例如:

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

相关内容