Użycie sed do włączenia plików .htaccess w konfiguracji Apache


13

Próbuję zautomatyzować obsługę administracyjną skrzynki Ubuntu Vagrant za pomocą skryptu Bash. Wszystko jest w porządku, ale mam problemy z konfiguracją Apache, aby zezwalać na zastępowanie .htaccessplików. W moim pliku konfiguracyjnym znajduje się następujący blok:

<Directory /var/www/>
    Options Indexes FollowSymLinks MultiViews
    AllowOverride None
    Order allow,deny
    allow from all
</Directory>

Wszystko muszę zrobić, to wymienić AllowOverride Nonez AllowOverride all. To wydaje się być zadaniem sed, ale <Directory>w tym pliku konfiguracyjnym są inne bloki, w których nie chcę zezwalać na zastąpienie.

Jak mogę użyć sed, aby zastąpić określony ciąg nowym ciągiem, gdy ten określony ciąg występuje między dwoma innymi określonymi ciągami?

Innymi słowy, w jaki sposób mogę zastąpić AllowOverride Nonetylko wtedy, gdy pojawia się pomiędzy <Directory /var/www/>i </Directory>?

Mogę użyć następującego polecenia, aby uzyskać blok, który mnie interesuje:

sed -n '/<Directory \/var\/www\/>/,/<\/Directory>/p' 000-default

Odpowiedzi:


13

sed obsługuje zakresy wzorców w tej formie:

sed '/startpattern/,/endpattern/ <sed-commands>' file

Na przykład:

sed '/<Directory \/var\/www\/>/,/<\/Directory>/ s/AllowOverride None/AllowOverride all/' httpd.conf

Właśnie tego szukałem!
captainblack 11.06.19
Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.