如何复制所有.conf文件并在ubuntu-apache环境中启用每个文件

时间:2019-01-28 07:00:20

标签: linux bash apache

我需要该脚本的简短版本

cp apache-conf/site1.conf /etc/apache2/sites-available
cp apache-conf/site2.conf /etc/apache2/sites-available
cp apache-conf/site..N.conf /etc/apache2/sites-available
a2ensite site1
a2ensite site2
a2ensite site..N

我可以cp apache-conf/*.conf /etc/apache2/sites-available,但是如何启用它们呢?

2 个答案:

答案 0 :(得分:1)

请使用以下命令

find /etc/apache2/sites-available/ -type f -and -not -name "*default*" -exec a2ensite {} \;

这将查找名称中没有“默认”的所有配置文件并激活它们。

如果遇到任何错误,请查看此主题 积分:https://askubuntu.com/questions/916377/how-to-enable-all-site-confs-with-a2ensite-while-passing-over-000-default-conf/917701

答案 1 :(得分:1)

您可以使用bash中强大的内置实用程序,该实用程序允许遍历文件名部分的数字

# To avoid un-expanded globs being treated as valid entries
shopt -s nullglob

for file in apache-conf/site[0-9]*.conf; do
    cp -- "$file" /etc/apache2/sites-available
done

假设N是静态的,并且在运行时 未知,则可以执行以下操作。考虑一个10

的情况
for file in apache-conf/site{0..10}.conf; do
    cp -- "$file" /etc/apache2/sites-available
done   

,并用于在目标路径上运行命令a2ensite

for file in /etc/apache2/sites-available/*.conf; do
    a2ensite "$(basename -- "$file")"
done