Bash F.A.Q
Для обработки строк в bash
'е имеется много мощных утилит, как то grep
, wc
, sed
, awk
, cut
. В данной статье я рассмотрю основные задачи, которые будут возникать перед вами при написании bash
скриптов. Статья не претендует на полное руководство по каждой утилите, однако задает вектор и начальное понимание того, как можно использовать эти инструменты.
F.A.Q
Найти файлы *.png в текущем каталоге:
find . -maxdepth 1 -name '*.png'
Найти файлы содержащие текст (в текущем каталоге и во всех подкаталогах):
grep -r MY_TEXT *
Обработать список файлов:
for f in *.php; do echo "Processing file: $f"; done
Заменить символ или подстроку:
echo "in_array" | tr _ -
Запомнить подстроку по регулярному выражению (RegExp
):
grep -E -o "(Xmodmap.*)"
Отфильтровать директории из списка:
grep ^d
Подсчитать количество отфильтрованных строк:
grep -Rl "SOME STRING" ./ | wc -l
Вывести последние N строк из .log
файла:
tail -n 20 file.log
tail -n 20 -F file.log # автоматически следить (мониторить) за изменениями
Вырезать / запомнить последние символы из переменной:
str='latest';
result=${str:(-4)};
echo $result # test
Определить интерпретатор который выполняет скрипт:
$(ps -ef | grep $$ | awk '{print $8}' | grep -Po '[a-z]+' | sed -n 2p) # sh,bash,zsh
#regexp, #grep, #tail