====== Всякие хитрости в 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 ''^'' позволяет выводить все строки (не отфильтровывая), так как совпадает с любой строкой