Это старая версия документа!
Содержание
Всякие хитрости в shell
сбор сетевой информации о системе
- get_net_info.sh
#!/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
Всякие хитрости в shell
получить список каталогов в текущей папке
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 ^
позволяет выводить все строки (не отфильтровывая), так как совпадает с любой строкой