Tips от Madskull’a: bash

Ожидание запущенных в фоне задач

прерывание по таймеру (SIGALRM)

параметры в скриптах и функциях

массивы

trap: ловим прерывания (updated)

Прогрессбар в bash-скриптах

Чтение конфигов в скрипте

Работа со строками

Длина строки

Извлечение подстроки

Удаление части строки

Замена подстроки

Подстановка параметров

Символ : имеет значение только когда parameter инициализирован «пустым» значением.

getopts

Переменные

$# — количество переданных параметров
обращение к последнему параметру:

! — косвенное обращение к переменным

$- Список флагов, переданных сценарию (командой set).
$_ Специальная переменная, содержит последний аргумент предыдущей команды.
$! PID последнего, запущенного в фоне, процесса
$$ PID самого процесса-сценария.
$? код завершения.
$FUNCNAME имя текущей функции
$LINENO Номер строки исполняемого сценария.
$OLDPWD прежний рабочий каталог («OLD-Print-Working-Directory»)
$PIPESTATUS Код возврата канала (конвейера).
Переменная $PIPESTATUS может давать неверные значения при вызове из командной строки.

$PPID Переменная $PPID хранит PID (идентификатор) родительского процесса.
$PWD рабочий (текущий) каталог

Цвета ECHO

Спецсимволы

- предыдущий рабочий каталог. Соответствует содержимому внутренней переменной $OLDPWD.
~+ текущий рабочий каталог. Соответствует содержимому внутренней переменной $PWD.
: символ заполнитель в операция с двумя операндами создать пустой файл

ввод одинарной кавычки в строку в одинарных кавычках:

Специальное назначение некоторых экранированных символов используемых совместно с echo и sed
\n перевод строки (новая строка)
\r перевод каретки
\t табуляция
\v вертикальная табуляция
\b забой (backspace)
\a «звонок» (сигнал)
\0xx ASCII-символ с кодом 0xx в восьмеричном виде)

Некоторые команды

shopt -s expand_aliases
Дает возможность использовать алиасы в скриптах

expand, unexpand
Команда expand преобразует символы табуляции в пробелы. Часто используется в конвейерной обработке текста.
Команда unexpand преобразует пробелы в символы табуляции. Т.е. она является обратной по отношению к команде expand.

fold
Выравнивает текст по ширине, разрывая, если это необходимо, слова. Особый интерес представляет ключ -s, который производит перенос строк по пробелам, стараясь не разрывать слова.

column
Форматирование по столбцам. Эта утилита преобразует текст, например какой либо список, в табличное, более «удобочитаемое», представление, вставляя символы табуляции по мере необходимости.

colrm
Утилита удаления колонок. Удаляет колонки (столбцы) сиволов из файла и выводит результат на stdout. Например,

удалит символы со 2-го по 4-й включительно, в каждой строке в файле filename.

readlink
Возвращает имя файла, на который указывает символическая ссылка.

od
Команда od (octal dump) производит преобразование ввода (или файла) в один или несколько форматов, в соответствии с указанными опциями.

join
Слияние двух файлов по ключам.

https://github.com/jlevy/the-art-of-command-line/blob/master/README-ru.md