我以前使用CShell(csh),它允许你创建一个带参数的别名.符号是这样的
alias junk="mv \\!* ~/.Trash"
Run Code Online (Sandbox Code Playgroud)
在Bash中,这似乎不起作用.鉴于Bash有许多有用的功能,我会假设这个功能已经实现,但我想知道如何.
我试图按照与此问题中提到的相同的方式执行某些操作:RSync:如何在两个方向上同步?
但是,我无法弄清楚的是我是否应该在文件路径的末尾添加斜杠.基本上我正在尝试创建一个别名命令,该命令同步两个目录的内容,这两个目录名称相同但位于两个不同的服务器上.我不想要的是将一个目录复制到另一个目录中(我知道这可能取决于最后的斜杠是如何完成的).
我现在拥有的是:
alias syncDirectories1 = 'rsync -tvur name@host:/Users/me/directory/ /Users/me/directory/'
alias syncDirectories2 = 'rsync -tvur /Users/me/directory/ name@host:/Users/me/directory/'
Run Code Online (Sandbox Code Playgroud)
对于我想要完成的任务,两个文件路径的末尾是否应该有斜杠?
提前感谢您的帮助.
我有一个文件服务器作为要同步的文件的主存储,我有几个客户端具有主存储的本地副本。每个客户端都可以更改主存储中的文件、添加新文件或删除现有文件。我希望他们通过定期执行同步操作尽可能保持同步,但我在任何地方都可以使用的唯一工具是rsync,我只能在客户端上运行脚本代码,而不能在服务器上运行。
rsync不执行双向同步,所以我必须从服务器同步到客户端以及从客户端到服务器。这对于刚刚通过运行两次rsync操作更改的文件来说是正常的,但是在添加或删除文件时会失败。如果我不使用rsync删除选项,客户端将永远无法删除文件,因为从服务器到客户端的同步会恢复它们。如果我使用删除选项,则从服务器到客户端的同步首先运行并删除客户端添加的所有新文件,或者从客户端到服务器的同步首先运行并删除其他客户端添加到服务器的所有新文件。
显然rsync单独无法处理这种情况,因为它只能使一个位置与另一个位置同步。我当然需要编写一些代码,但我只能依赖 POSIX shell 脚本,这似乎使我无法实现目标。那么它甚至可以完成rsync吗?