# shell

* [Filename](#filename)
* [Pattern Matching](#pattern-matching)
* [Operations on variables](#operations-on-variables)
* [heredoc](#heredoc)

## Filename

| cmd                | result            |
| ------------------ | ----------------- |
| $0                 | ./t.sh            |
| $(basename $0)     | t.sh              |
| $(basename $0 .sh) | t                 |
| `${PWD##*/}`       | parent\_dir\_name |

## Pattern Matching

<https://www.gnu.org/software/bash/manual/html\\_node/Pattern-Matching.html>

## Operations on variables

<https://www.gnu.org/software/bash/manual/html\\_node/Shell-Parameter-Expansion.html#Shell-Parameter-Expansion>

| type                 | example                          | result    | More                                                 |
| -------------------- | -------------------------------- | --------- | ---------------------------------------------------- |
| Length               | echo ${#SHELL}                   | 9         |                                                      |
| `${parameter:-$var}` | `${NULL:-$SHELL}`                | /bin/bash |                                                      |
| ${parameter:-word}   | echo ${SHELL:-ignored}           | /bin/bash | \[ -z "${COLUMNS:-}" ] && COLUMNS=80 ; echo $COLUMNS |
| ${parameter:=word}   | unset a ; echo ${a:=b} ; echo $a | b b       |                                                      |
| ${VAR:OFFSET:KEEP}   | echo ${SHELL:0:4}                | /bin      |                                                      |
| ${VAR/PATTERN/NEW}   | echo ${SHELL/b/}                 | /in/bash  |                                                      |
| ${VAR//PATTERN/NEW}  | echo ${SHELL//b/}                | /in/ash   |                                                      |
| `${VAR#beginning}`   | echo ${SHELL#\*/}                | bin/bash  |                                                      |
| `${VAR##beginning}`  | echo ${SHELL##\*/}               | bash      |                                                      |
| `${VAR%trailing}`    | ${SHELL%/\*h}                    | /bin      |                                                      |

## heredoc

<https://en.wikipedia.org/wiki/Here\\_document#Unix\\_shells>
