用 `scp` 或 `rsync` 中的标志定义目标目录(如 `cp -t`)

Nic*_*lla 0 bash scp cp rsync

由于我经常通过网络将不同数量的特定文件复制到(相当复杂的)目标目录中,如果我可以使用cp's-t标志,我的生活会容易得多:有了它,您可以指定目标目录“在开始”——而不是作为最后的论点。

这样,我可以CTRL-R先复制命令,然后再CTRL-W复制以前复制的文件,而不管之前有多少文件,始终保留(复杂的)设置和目标目标系统和目录。

但是我找不到任何合适的标志,无论是 forscp还是 for rsync。(如果其中一个提供此选项,我会使用其中之一。)

做scp或rsync提供类似的东西cp -t?

在绝望中,我什至玩弄了bash的历史控制,尤其是参数提取机制:不幸的是,似乎不可能以“第x个参数到最后一个参数”的形式指定范围。but-one”,这是我需要的,因为我并不总是有参数的数量(除非我计算......)。

Olo*_*rin 5

也许你可以定义一个环绕的函数scp:

scpt () {
    scp "$@" user@host:/some/convoluted/path
}
Run Code Online (Sandbox Code Playgroud)

然后做

scpt file1
scpt /dir1/file2
Run Code Online (Sandbox Code Playgroud)

此外,通过历史交互,您可以使用 获取上一个scp命令的最后一个参数!scp:$,因此您还可以执行以下操作:

scp /dir1/file2 !scp:$
Run Code Online (Sandbox Code Playgroud)

(因为目标目录通常是最后一个)