====== Всякие хитрости в shell ======
===== сбор сетевой информации о системе =====
#!/bin/bash
log="$(basename $0).$(date +%Y%m%d%H%M%S).log"
:>$log
(
echo "ip a"
ip a
echo "ip r list table all"
ip r list table all
echo "ip ru"
ip ru
echo "iptables -S"
iptables -S
echo "iptables -S -t nat"
iptables -S -t nat
echo "iptables -S -t mangle"
iptables -S -t mangle
) >>$log 2>&1
===== получить список каталогов в текущей папке =====
ls -d */|sed 's/\/$//'|xargs
===== полный путь к каталогу скрипта =====
dir="$(cd "$(dirname "$0")"; pwd)"
===== имя текущего скрипта =====
basename $0
То же самое, но еще отрезаем от имени расширение файла
basename $0|sed 's/\.[^.]*$//'
То же самое, но еще отрезаем от имени все расширения файла
basename $0|sed 's/\..*$//'
===== pipefail =====
Если опция pipefail включена — статус выхода из конвейера является значением последней (самой правой) команды, завершённой с ненулевым статусом, или ноль — если работа всех команд завершена успешно.
set -o pipefail
===== получить список каталогов в текущей папке =====
ls -d */|sed 's/\/$//'|xargs
===== полный путь к каталогу скрипта =====
dir="$(cd "$(dirname "$0")"; pwd)"
===== имя текущего скрипта =====
basename $0
То же самое, но еще отрезаем от имени расширение файла
basename $0|sed 's/\.[^.]*$//'
То же самое, но еще отрезаем от имени все расширения файла
basename $0|sed 's/\..*$//'
===== pipefail =====
Если опция pipefail включена — статус выхода из конвейера является значением последней (самой правой) команды, завершённой с ненулевым статусом, или ноль — если работа всех команд завершена успешно.
set -o pipefail
===== tail с подсветкой слов =====
tail -F /path/to/file | grep -E --color=always '^|word1|string 1'
Команда будет выводить на экран файл как обычный tail, но при этом подсвечивая строки 'word1' и 'string 1'.
Ключ -E для grep включает расширенные регулярные выражения. Это даст возможность использования пайпа ''|'' как элемента ''или''. Первая часть строки для grep ''^'' позволяет выводить все строки (не отфильтровывая), так как совпадает с любой строкой