Автоматизировать удаленную команду rsync, используя псевдонимы bash?
Я имею дело со многими серверами, которые часто имеют файлы и папки, которые не находятся под контролем версий. Это означает, что я могу просто 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, чтобы я мог добавить его в свою учетную запись на каждом из серверов?
2 ответа
Вы можете использовать функцию вместо псевдонима. Просто поместите это в свой ~/.bashrc
файл как это:
print_rsync ()
{
echo "sudo rsync -av -e ssh $(whoami)@$HOSTNAME:$(pwd) ./"
}
Функции гораздо более гибкие, чем псевдонимы, потому что вы можете выполнять произвольное количество команд и даже передавать параметры.
Из моего понимания псевдонимов оболочки они являются статическими, и вы не можете помещать в них динамические вещи, такие как переменные или команды.
Просто скопируйте ваш сценарий где-нибудь в вашей PATH как /usr/local/bin
или создайте папку bin для вашего пользователя:
mkdir ~/bin
echo 'export PATH="$PATH:$HOME/bin"' >> ~/.bashrc
. .bashrc # or reopen terminal
cp script.sh ~/bin