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

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

Маленький хак упрощающий навигацию в 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

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

Пример: очень простой скрипт резервного копирования:

#!/bin/bash
SRCD="/home/"                #SRCD - SouRCe Directory - исходный каталог
TGTD="/var/backups/"         #TGTD - TarGeT Directory - конечный каталог
OF=home-$(date +%Y%m%d).tgz  #OF - Output File - выходной файл
tar -cZf $TGTD$OF $SRCD

Читать