Работа с файлами и директориями
📌 Создание сразу нескольких директорий dir1, dir2, dir3:
# mkdir -p -v /home/user/{dir1,dir2,dir3}То же самое, только с файлами. Создаём 3 файла:
# touch file0{1,2,3}Переименовываем файл:
# mv file.{old,new}Удобный приём с оператором { }, можно использовать в различных командах.
📌 Смотрим файл конфигурации без комментариев (начинаются с ; или #) и пустых (^$) строк:
# grep -E -v '^;|^#|^$' /etc/php.iniЭтим постоянно приходится пользоваться, особенно в конфигах php, asterisk, postgresql.
📌 Удаляем комментарии и пустые строки и записываем чистый конфиг в новый файл:
# sed '/^;\|^$\|^#/d' php.ini > php.ini.cleanИзменение параметра в конфиге post_max_size на новое значение:
# sed -i 's/^post_max_size =.*/post_max_size = 16M/g' php.iniСначала запустите команду без ключа -i и проверьте результат. Файл не изменится.
📌 Сравниваем содержимое файлов двух директорий с выводом результата в файл:
# diff -Naur /var/www/site.ru/ /mnt/backup/site.ru/ > ~/site.diffУдобно для поиска изменений в файлах сайта после взлома. Сравниваете с бэкапом и сразу все изменения перед глазами.
📌 Считаем размер всех файлов определённого типа в директории.
# i=0; for n in $(find /mnt/files -type f -name '*.iso' -print \| xargs stat --printf "%s "); do ((i+=n)); done; echo $iРезультат будет в байтах.
Вам было бы интересно увидеть разбор каких-то длинных и на первый взгляд непонятных конструкций на bash? Я хоть и не пишу сам ничего сложного, но всегда понимаю, что реально происходит в выполняемых конструкциях, даже если они очень длинные и кажутся обфусцированными.
#bash