Полезные однострочные скрипты Bash

По мотивам https://t.me/srv_admin/2207

Работа с файлами и директориями

📌 Создание сразу нескольких директорий 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

Результат будет в байтах.

Сравнить два файла и вывести НЕ уникальные значения

sort first-file.txt second-file.txt | uniq -d

Подсветка синтаксиса в less

Устанавливаем пакет souce-highlight, в соответствии с инструкцией на сайте http://www.gnu.org/software/src-highlite/source-highlight.html#Using-source_002dhighlight-with-less добавляем пару переменных окружения в пользовательский (~/.bashrc) или в системный (/etc/bash.bashrc) файл настройки командной оболочки (я использую bash, по крайней мере сейчас, поэтому для него и пишу данную инструкцию):

echo 'export LESSOPEN="| /usr/share/source-highlight/src-hilite-lesspipe.sh %s"' >> ~/.bashrc
echo "export LESS=' -R '" >> ~/.bashrcCode language: PHP (php)

Да, в случае добавления в системный файл, надо добавлять не в конец, как в приведенном примере, а в начало до проверки на интерактивность шела:

# source-highlight
export LESSOPEN="| /usr/share/source-highlight/src-hilite-lesspipe.sh %s"
export LESS=' -R '
# If not running interactively, don't do anything
[ -z "$PS1" ] && return
...
Code language: PHP (php)

Для добавления поддержки синтаксиса, например Arduino *.ino, нужно подправить файл /usr/share/source-highlight/lang.map, а именно внести туда строчку типа:

...
ino = cpp.lang
...