Примечание: В Вашем случае лучшее должно было бы просто отбросить полномочия пользователя root для обновлений и запустить Ваши скрипты с Вашим apache
пользователь:
su apache -c "./update-script"
Иначе использовать chmod g+s /var/www
. Новые файлы и подкаталоги, созданные в этом каталоге, совместно используют того же владельца/группу как родительский каталог по умолчанию. (Это распространяется рекурсивно.)
Согласно coreutils руководству это - расширение выхода GNU, которое не является портативным. Это, кажется, работает только на идентификатор группы, но я думаю, что должно быть достаточно иметь дело с этим общим видом проблемы. (Используя umask 002
когда запущение скрипта могло бы помочь также.)
Измените одинарные кавычки на двойные кавычки. И отбросьте кошку (UUoC):
sed "s:foobar:$MYSTRING:" myfile > myfile-individual
Из страницы справочника для удара:
Enclosing characters in single quotes preserves the literal value of
each character within the quotes. A single quote may not occur between
single quotes, even when preceded by a backslash.
Enclosing characters in double quotes preserves the literal value of
all characters within the quotes, with the exception of $, `, \, and,
when history expansion is enabled, !. The characters $ and ` retain
their special meaning within double quotes. The backslash retains its
special meaning only when followed by one of the following characters:
$, `, ", \, or <newline>. A double quote may be quoted within double
quotes by preceding it with a backslash. If enabled, history expansion
will be performed unless an ! appearing in double quotes is escaped
using a backslash. The backslash preceding the ! is not removed.
sed -i 's|foobar|$MYSTRING' myfile-individual
Это выполнит замену, а также запишет ее в файл
-i
опция в sed. – Arcege 05.04.2012, 20:58sed -i
необходимо изучитьed
также.sed -i
разрывает связи и не является очень портативным, но если Вы не должны волноваться о также, затем это может быть прекрасным. – jw013 05.04.2012, 21:35's:foobar:'$MYSTRING':'
будет также работать.. Это не будет работать если$MYSTRING
содержит последовательность пробела; который оболочка свернет в одиночный пробел... Однако's:foobar:'"$MYSTRING"':'
будет работать в этом случае. – Peter.O 06.04.2012, 09:59's:foobar:'$MYSTRING':'
будет также работать.. Это не будет работать если$MYSTRING
содержит последовательность пробела; который оболочка свернет в одиночный пробел... Однако's:foobar:'"$MYSTRING"':'
будет работать в этом случае. – Peter.O 06.04.2012, 09:59