Добавить текст ко всем файлам в указанной папке c - PullRequest
0 голосов
/ 27 января 2020

Мне нужно добавить текст в конец файлов в файлы .htaccess в каталоге / home для всего веб-сайта моего клиента.

RewriteEngine On
RewriteCond %{HTTPS} off
RewriteRule (.*) https://%{HTTP_HOST}%{REQUEST_URI}`

Я уже пытался echo 'code' >> .htaccess, но не смог, потому что он содержит новая строка, я также безуспешно пробовал \n или \r, и я использую printf; Я могу добавить новую строку, но там написано

bash: printf: `}': invalid format character

Обновление ..

Я успешно исправил неверный символ формата, следуя коду tripleee, но, к сожалению, он не добавляет все мои файлы .htaccess

Это код

for file in /home/*/public_html/.htaccess; do
    printf '%s\n' '# Redirect to https' \
        'RewriteEngine On' \
        'RewriteCond %{HTTPS} off' \
        'RewriteRule (.*) https://%{HTTP_HOST}%{REQUEST_URI}' >>".htaccess"
done

Я смог решить проблему, используя этот код

printf '%s\n' '# Redirect to https' \
        'RewriteEngine On' \
        'RewriteCond %{HTTPS} off' \
        'RewriteRule (.*) https://%{HTTP_HOST}%{REQUEST_URI}'  |
tee -a /home/*/public_html/.htaccess

Благодаря tripleee

1 Ответ

2 голосов
/ 27 января 2020

Вам нужно удвоить %, чтобы получить буквенный символ процента в строке формата printf. Или передайте явную строку формата в printf и передайте отдельные строки в качестве аргументов.

printf '%s\n' 'RewriteEngine On' \
        'RewriteCond %{HTTPS} off' \
        'RewriteRule (.*) https://%{HTTP_HOST}%{REQUEST_URI}' |
tee -a /home/*/public_html/.htaccess >/dev/null

Нет причин, по которым вы тоже не могли бы использовать echo, хотя это немного тяжело для глаз.

echo 'RewriteEngine On
RewriteCond %{HTTPS} off
RewriteRule (.*) https://%{HTTP_HOST}%{REQUEST_URI}' |
tee -a /home/*/public_html/.htaccess >/dev/null

Вы можете получить что-то похожее с echo -e, но оно менее портативно и менее элегантно, чем printf.

Вы также можете просто использовать здесь документ:

tee -a /home/*/public_html/.htaccess<<-'____HERE' >/dev/null
    RewriteEngine On
    RewriteCond %{HTTPS} off
    RewriteRule (.*) https://%{HTTP_HOST}%{REQUEST_URI}
____HERE

Помещение da sh (минус) перед разделителем здесь-документа позволяет использовать табуляции (но не пробелы!) Для отступа; ведущие вкладки будут удалены из текста. Размещение кавычек вокруг разделителя приводит к тому, что оболочка цитирует документ (т. Е. Знаки доллара или обратные кавычки в документе не будут оцениваться).

...