Contents[+]
Bash Scripting
Статьи
Управление файлами и директориями
Ссылки, а также удаление файлов и директорий
.bashrc
alias is='docker images' alias cs='docker ps' alias csa='docker ps -a' alias rmcs='docker rm $(docker ps -a -q)' alias rmis="docker rmi $(docker images | grep '<none>' | awk '{print $3}')"
test
Предназначена для проверки типа файла и сравнения чисел и строк. Возвращает код возврата 0 (истина) или 1 (ложь) в зависимости от вычисления выражения. Выражения могут быть как унарными, так и бинарными.
Проверка типа файла
test expression # test -d file — истина, если file существует и является каталогом # . -e file — истина, если file существует # . -f file — истина, если file существует и является обычным файлом # . -r file — истина, если file существует и доступен для чтения # . -s file — истина, если file существует и имеет размер больше, чем ноль # . -w file — истина, если file существует и доступен для записи # . -x file — истина, если file существует и доступен для выполнения # . -L file — истина, если file существует и является символьной ссылкой # . file1 -nt file2 — истина, если file1 новее (дата модификации), чем file2 # . file1 -ot file2 — истина, если file1 старее, чем file2 if [ -f "$HOME/.bashrc" ]; then echo "Файл существует!" else echo "Файл не существует!" fi
Сравнение строк
# . -z string — истина, если длина string равна нулю
# . -n string — истина, если длина string не ноль
# . string1 = string2 — истина, если строки равны
# . string1 != string2 — истина, если строки не равны
Сравнение целых чисел
# . число1 -eq число2 — истина, если число1 равно число2 # . число1 -gt число2 — истина, если число1 больше число2 # . число1 -ge число2 — истина, если число1 больше или равно число2 # . число1 -lt число2 — истина, если число1 меньше число2 # . число1 -le число2 — истина, если число1 меньше или равно число2 # . число1 -ne число2 — истина, если число1 не равно число2 if [ 3 -lt 6 ]; then echo "Истина" else echo "Ложь" fi
Операции AND и OR
# . expr1 -a expr2 — истина, если оба выражения expr1 и expr2 истина (операция AND)
# . expr1 -o expr2 — истина, если хотя бы одно из выражений expr1 или expr2 истина (операция OR)
# . ! expr — истина, если выражение expr ложно
Recipes
Script Example
Небольшой сценарий - псевдоним
Создаем файл foo.sh
#!/usr/bin/env bash # комментарий command arg1 arg2 arg3 "$@"
Назначаем режим исполнения
chmod 755 foo.sh
Запускаем
foo.sh arg4 arg5 #=> command arg1 arg2 arg3 arg4 arg5
Substring
FOO=release-1.2.3 echo ${FOO#release-} #=> 1.2.3
Change String
export SRC_FILE=kube-linter/config.yaml export ENCODED_SRC_FILE=$(echo $SRC_FILE | awk '{gsub("/", "%2F"); print}' | awk '{gsub("\.", "%2E"); print}') echo $ENCODED_SRC_FILE # kube-linter%2Fconfig%2Eyaml
Join search result
export FOO=$(find . -name 'jacoco*.xml' | paste -s -d ',' -) echo $FOO # ./calc-impl/build/reports/jacoco/test/jacocoTestReport.xml,./calc-api/build/reports/jacoco/test/jacocoTestReport.xml export BAR=$(find . -not -regex '.*/tmp/.*' -name '*.jar' | paste -s -d ',' -) echo $BAR # ./calc-impl/build/libs/calc-impl.jar,./calc-library/build/libs/calc-library.jar,./buildSrc/build/libs/buildSrc.jar,./calc-api/build/libs/calc-api.jar