Syntax highlighting of linux/bash

[TOC]

# Bash Scripting

[Linux Wiki](https://moin.onrails.ru/Linux%20Wiki)

## Статьи

[BASH, основы навигации](https://habrahabr.ru/post/99041/)

[Управление файлами и директориями](https://habrahabr.ru/post/99291/)

[Ссылки, а также удаление файлов и директорий](https://habrahabr.ru/post/99653/)

[Glob-подстановки](https://habrahabr.ru/post/99827/)

[Advanced Bash Scripting](http://www.tldp.org/LDP/abs/html/)

[Цикл статей на habr](https://habr.com/ru/company/ruvds/blog/325522/)

[Книга](http://rus-linux.net/MyLDP/BOOKS/abs-guide/flat/abs-book.html)

[Colors and formatting](https://misc.flogisoft.com/bash/tip_colors_and_formatting)


## .bashrc

```bash
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`
```bash
#!/usr/bin/env bash
# комментарий
command arg1 arg2 arg3  "$@"
```
Назначаем режим исполнения
```bash
chmod 755 foo.sh
```
Запускаем
```bash
foo.sh arg4 arg5
#=> command arg1 arg2 arg3 arg4 arg5
```

### Substring

```bash
FOO=release-1.2.3
echo ${FOO#release-}
#=> 1.2.3
```

### Change String

```bash
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

```bash
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

```bash
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](https://stackedit.io/).