Bash Scripting

Статьи

BASH, основы навигации

Управление файлами и директориями

Ссылки, а также удаление файлов и директорий

Glob-подстановки

Advanced Bash Scripting

Цикл статей на habr

Книга

Colors and formatting

.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}')"

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

Existing

export FOO="123"
if [[ $FOO ]]; then echo 'foo is exists'; else echo 'foo blank'; fi
#=> foo is exists
unset FOO
if [[ $FOO ]]; then echo 'foo is exists'; else echo 'foo blank'; fi
#=> foo blank
export FOO=""
if [[ $FOO ]]; then echo 'foo is exists'; else echo 'foo blank'; fi
#=> foo blank

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

Written with StackEdit.