![使用 bash 别名自动执行远程 rsync 命令?](https://linux22.com/image/1324748/%E4%BD%BF%E7%94%A8%20bash%20%E5%88%AB%E5%90%8D%E8%87%AA%E5%8A%A8%E6%89%A7%E8%A1%8C%E8%BF%9C%E7%A8%8B%20rsync%20%E5%91%BD%E4%BB%A4%EF%BC%9F.png)
我处理过许多服务器,这些服务器通常包含不受版本控制的文件和文件夹。这意味着我只能git remote add
在本地计算机上处理文件。
考虑到这一点,当我注意到我需要某个文件夹的副本时,我经常浏览服务器,因此我编写了这个简单的 bash 命令来打印该命令,这样我就可以复制它并在本地机器上运行它。
#!/bin/bash
echo "sudo rsync -av -e ssh $(whoami)@$HOSTNAME:$(pwd) ./"
它输出如下命令,我可以在家用电脑上运行它:
sudo rsync -av -e ssh user@hostname:/opt/lib/folder ./
现在我的问题是,如何将其转变为 bash 别名,以便我可以将其添加到每台服务器上的用户帐户?
答案1
您可以使用函数代替别名。只需将其放入~/.bashrc
文件中即可,如下所示:
print_rsync ()
{
echo "sudo rsync -av -e ssh $(whoami)@$HOSTNAME:$(pwd) ./"
}
函数比别名灵活得多,因为您可以执行任意数量的命令,甚至传递参数。
答案2
据我对 shell 别名的理解,它们是静态的,您不能在其中放置动态的东西,比如变量或命令。
只需将您的脚本复制到 PATH 中的某个位置/usr/local/bin
,或者为您的用户创建一个 bin 文件夹:
mkdir ~/bin
echo 'export PATH="$PATH:$HOME/bin"' >> ~/.bashrc
. .bashrc # or reopen terminal
cp script.sh ~/bin