Архив метки: Bash

Bash скрипты Linux

Среди системных администраторов и обычных пользователей Linux достаточно популярна практика писать Bash скрипты для автоматизации и облегчения выполнения определенных задач в операционной системе. Фактически, вы написали один раз порядок действий, которые нужно выполнить, расписали файлы и так далее, а затем просто пишите одну короткую команду и все действия выполняются как нужно. Можно пойти еще дальше и запланировать автоматическое выполнение скрипта.

В этой небольшой статье мы собрали самые полезные Bash скрипты Linux, которые вы можете использовать в своих системах. Некоторые из них состоят из нескольких строк, некоторые помещаются в одну строку. Здесь есть как небольшие сниппеты, которые вы можете использовать в своих скриптах, так и полноценные интерактивные скрипты, для работы с ними через консоль. Читать

Как найти текст или файл в Linux используя bash

Для поиска текста используем следующую команду:

grep -rnw ‘directory’ -e «pattern»

Пример:
$ grep -rnw ‘/var/www/’ -e «DOCTYPE html»

Если выводится слишко много  информации то можно добавить команду “less”
$ grep -rnw ‘/var/www/’ -e «DOCTYPE html» | less

Читать

Навигация по истории в терминале

Маленький хак упрощающий навигацию в Linux. Размещаем инструкции в ~/bashrc:

bind '"e[A": history-search-backward'
bind '"e[B": history-search-forward'

и навигация по истории учитывает набранные до курсора символы.

Автор: Roman Brovko

Человекочитаемые русскоязычные имена директорий maildir.

Если с англоязычными именами директорий в maildir проблем нет — отображаются они в точно так-же как и в почтовом клиенте, то с русскоязычными именами всё не так просто. Например, директория «Отправленные» в maildir —  &BB4EQgQ,BEAEMAQyBDsENQQ9BD0ESwQ1-. Читать

Исключить из одного файла строки, присутствующие в другом файле

Всё, как обычно, оказалось тривиально. Прямо как говорила наш преподаватель по мат. анализу=) У команды grep есть подходящий для этой задачи набор флагов:

grep -v -x -f except.txt source.txt, где

 

  • -v  отобрать не совпавшие с шаблоном строки
  • -x сравнивать строку целиком
  • -f except.txt файл с набором шаблонов для поиска, разделенных переносом строки
  • source.txt — исходный файл для поиска и исключения вхождений из файла except.txt (естественно, его можно заменить на подачу через пайп)

 

Автор: Василий Иванов

${0%${0##*/}}

Есть небольшой трюк в bash, который мне давно нравился — получение текущей директории запущенного скрипта, используя только $0 и операции над строками bash-а. Это то, что в заголовке. Как вариант, его можно использовать в виде:

cd ${0%${0##*/}}

Исходные данные: $0 — полный путь запущенного скрипта. Понятно, что скрипт надо выполнять по полному пути, иначе использование метода лишено смысла.

Используются последовательно две операции над строками:
${string##substring} — удаление самой длинной, из найденных, подстроки $substring в строке $string. Поиск ведется с начала строки.
${string%substring} — удаление самой короткой, из найденных, подстроки $substring в строке $string. Поиск ведется с конца строки.

${0%${0##*/}} — самая длинная из найденных строк */ — это весь путь до последнего слеша включительно. Если удалить это из полного пути, то получится просто имя файла самого скрипта (без пути).

${0%${0##*/}} — далее, если из $0 («полный путь») удалить «имя файла» (получено выше), то получится как раз «путь без имени файла».

Автор: Dmitry Medvedev