Как избежать повторения команд sed при добавлении сайтов в лак?

Это мой скрипт для установки Varnish. Я запускаю его каждый раз, когда я поднимаю новую серверную среду на VPS.

cd ~ apt-get update apt-get install varnish -y sed -i 's/Listen 80/Listen 8080/g' /etc/apache2/ports.conf sed -i 's/\*\:80/\*\:8080/g' /etc/apache2/sites-available/000-default.conf sed -i 's/\*\:80/\*\:8080/g' /etc/apache2/sites-available/domain1.tld.conf && a2ensite domain1.tld.conf sed -i 's/\*\:80/\*\:8080/g' /etc/apache2/sites-available/domain2.tld.conf && a2ensite domain2.tld.conf sed -i 's/\*\:80/\*\:8080/g' /etc/apache2/sites-available/domain3.tld.conf && a2ensite domain3.tld.conf sed -i 's/\*\:80/\*\:8080/g' /etc/apache2/sites-available/domain4.tld.conf && a2ensite domain4.tld.conf mkdir -p /etc/systemd/system/varnish.service.d # Be aware! You might not need this in the future. cat <<-'VARNISH' > /etc/systemd/system/varnish.service.d/customexec.conf [Service] ExecStart= ExecStart=/usr/sbin/varnishd -j unix,user=vcache -F -a :80 -T localhost:6082 -f /etc/varnish/default.vcl -S /etc/varnish/secret -s malloc,256m VARNISH systemctl restart apache2.service && systemctl daemon-reload && systemctl restart varnish.service 

Этот сегмент кода кажется довольно «тяжелым», особенно повторяемость sed-операций в отношении domain.tld.

Это получается даже «тяжелее», потому что у меня есть сегмент кода, который похож по длине, который использует для меня удаление лака и возвращает все изменения только в случае желания.

Мой вопрос:

Какую стратегию вы предпримете, чтобы сделать сценарий установки короче в общем (по крайней мере, меньше строк, а может быть и меньше команд) и, в частности, снизить количество операций sed.

Заметки:

  • Я бы предположил, что первое, что нужно сделать, это как-то унифицировать ports.conf, 000-default.conf и каждый .conf-файл каждого сайта, все в одну операцию. Возможно, через цикл for на /etc/apache2/ports.conf/ && /etc/apache2/sites-available/*/ .

  • Команда scp над ssh без пароля в скрипте
  • Как удалить весь набор файлов в случайном порядке?
  • Выравнивание выходного файла скрипта Bash
  • Извлечение почтовых адресов
  • Как я могу использовать несколько операторов if внутри другого if инструкции awk-программы?
  • Команда Grep в сценарии оболочки
  • арифметическая операция с expr
  • Как вставить строку в массив по-разному
  • One Solution collect form web for “Как избежать повторения команд sed при добавлении сайтов в лак?”

    Используя функцию и GNU Parallel, вы заменяете раздел повторения:

     cd ~ apt-get update apt-get install varnish -y sed -i 's/Listen 80/Listen 8080/g' /etc/apache2/ports.conf myfunc() { sed -i 's/\*\:80/\*\:8080/g' /etc/apache2/sites-available/$1 && a2ensite $1 } export -f myfunc parallel myfunc {/} ::: /etc/apache2/sites-available/* mkdir -p /etc/systemd/system/varnish.service.d # Be aware! You might not need this in the future. cat <<-'VARNISH' > /etc/systemd/system/varnish.service.d/customexec.conf [Service] ExecStart= ExecStart=/usr/sbin/varnishd -j unix,user=vcache -F -a :80 -T localhost:6082 -f /etc/varnish/default.vcl -S /etc/varnish/secret -s malloc,256m VARNISH systemctl restart apache2.service && systemctl daemon-reload && systemctl restart varnish.service 
    Linux и Unix - лучшая ОС в мире.