У Курячего сегодня была интересная, но совершенно бесполезная лекция о лицензировании. Не досмотрел, пошёл искать что-то еще. Набрёл на яндекс.китовскую восхитительнейшую лекцию на которой прямо у меня на глазах Виктор Ашик собрал из кусочков ArchLinux.
Еще разобрался сегодня с поиском и заменой текста в файлах, когда нужно было поменять везде на сайте телефон.
find -type f -name *.tpl -exec sed -i -r 's/73472463856/73472466758/g' {} ;
find -type f -name *.tpl -exec sed -i -r 's/246-38-56/266-67-58/g' {} ;
Пояснение для себя на будущее:
find -type f -name *.tpl -exec sed -i -r ‘s/чтоменяем/начто/g’ {} ;
(не копируй отсюда — WP извращает кавычки) копирую отсюда:
find -type f -name *.tpl -exec sed -i -r 's/чтоменяем/начто/g' {} ;
Не совсем понимаю что делает аттрибут -i у sed. Кажется он говорит, что вносим изменения прямо в файле, не создавая его копии.
-r значит что использует регулярные выражения.
Не понимаю что значат s/ и /g в начале и в конце строки. Man прочитал. Русский ман прочитал. Все равно не понял. Что-то связанное с регулярками…
Не понимаю что за ерунда в конце {} ; надо поэкспериментировать на учебном сервере, но пока было не до экспериментов.
Надо выучить регекспы и пройти по ним какой-то проверочный тест.
p.s. задумался что Arch это не Арч, как я привык, а возможно Арх
{} подставляет имя файла, которое нашел find
; это экранированная ; которая тоже относится к find
мне больше импонирует немного другой вариант, он нагляднее и проще для запоминания, но имеет лимит на количество файлов к сожалению
sed -i -e ‘s/чтоменяем/начто/g’ $(find -type f -name *.tpl)
можно также написать простенький однострочник на баше в таком стиле
find -type f -name *.tpl | while read file; do; sed -i -e ‘s/чтоменяем/начто/g’ $file; done
Какой лимит? Почему?
и что такое s/ и /g?
Лимит на количество символов в аргументах. На разных ОС и интерпретаторах он разный. Может быть 32 тысячи, может быть 2 миллиона. Проверяется с помощью getconf ARG_MAX.
Про s и g читай в мануалах про регулярки.