Массовое копирование/редактирование файлов в Linux и крон задач всех юзеров

Нудные, однообразные операции мало кому по душе и порой выматывают гораздо больше серьёзной работы. Десяток — другой однотипных операций, отошли покурить, отвлеклись, и вы уже забыли, где уже сделали изменения, где ещё нет, и наша песня хороша — начинай сначала. Заходим в терминал и включаем уровень Бога!)

Массовое копирование файлов в командной строке

Предположим, у нас в каталоге /root есть новый пакет jquery, который нужно обновить на всех сайтах в системе. Одной командой:

for file in $(find /var/www/ -type f -name "jquery.min.js"); do cp /root/jquery.min.js "$file" ; done;

Щелчок по Enter — и готово! Попробуйте, к примеру, из любой панели управления сервером, вручную обновить на полсотни сайтов один и тот же файл или отредактировать его.

Массовое редактирование файлов при помощи sed

Предположим у нас есть масса php файлов, со строкой Hello wrld, которые мы размножили с опечаткой. Исправим это одной командой в терминале:

for file in $(find /var/www/ -type f -name "example.php"); do sed -i 's/Hello wrld/Hello world/g' $file ; done

Но что делать, когда редактировать нужно с некими нюансами и различными условиями? Вряд ли, даже хорошее знание bash спасёт вас, ведь дольше окажется написание кода под различные условия, чем если бы вы последовательно открыли эти файлы по фтп или в панели.

Последовательная массовая правка файлов в текстовом редакторе nano

Раз нам необходимо вычитывать код в редакторе, перед изменением файлов, но мы не хотим путаться и возвращаться к файлам, которые уже сделали, можно использовать для этой цели любой консольный текстовый редактор. Я посоветую освоить vi, а сам выберу nano) Не спрашивайте почему. Просто осваивайте vi, он реально хорош, вы полюбите его.

for file in $(find /var/www/ -type f -name "example.php") ; do nano $file ; done

Файлы будут открываться последовательно и после сохранения или выхода из предыдущего, вы точно ничего не пропустите, не упустите, но в то же время, если отвлечетесь, всегда будете знать на чем остановились.

Открыть несколько файлов в nano можно и так

nano /home/user/* # открыть все файлы в каталоге
nano /home/user/*.php # открыть только php файлы
nano /home/user/*[!php] # открыть все файлы кроме php

Условий выборки может быть масса, ведь это самые простейшие подстановки командной строки.

Просмотр и редактирование cron заданий пользователей

Для просмотра всех крон задач пользователей я использую простую команду

cat /var/spool/cron/crontabs/*

А для того, чтобы видеть кому какие cron задания принадлежат подпишем их. И выведем все cron задания юзеров кроме root пользователя.

for us in $(ls /var/spool/cron/crontabs/[!root]* | cut -d/ -f6) ; do echo -e "---\nUser: $us\n" ; crontab -l -u $us ; done

А вто так можно последовательно открыть и отредактировать все cron задачи пользователей в консольном редакторе nano

for us in $(ls /var/spool/cron/crontabs/* | cut -d/ -f6) ; do crontab -e -u $us ; done

Заметьте, что мы не редактируем файлы задач напрямую, а вызываем команду crontab с параметрами -eu для каждого юзера. Потому что она имеет встроенную проверку синтаксиса и не позволит установить неверную крон задачу. Конечна эта проверка касается лишь синтаксиса cron, она не проверяет саму shell команду, в которой может быть всё что угодно.

Оставить ответ

Ваш адрес email не будет опубликован. Обязательные поля помечены *