bash

http://kvz.io/blog/2013/11/21/bash-best-practices/

http://wiki.bash-hackers.org/commands/builtin/printf

https://github.com/dylanaraps/pure-bash-bible

Beállítások

Alapvető hibakezelés:

set -eufo pipefail

...

Use set -o errexit (a.k.a. set -e) to make your script exit when a command fails.

Then add || true to commands that you allow to fail.

Use set -o nounset (a.k.a. set -u) to exit when your script tries to use undeclared variables.

Use set -o xtrace (a.k.a set -x) to trace what gets executed. Useful for debugging.

Use set -o pipefail in scripts to catch mysqldump fails in e.g. mysqldump |gzip. The exit status of the last command that threw a non-zero exit code is returned.

...

Billentyű parancsok

https://ss64.com/bash/syntax-keyboard.html

Hasonlóan az Emacs billentyű parancsokhoz

Argumentumok kompakt kiíratása

printf '"%b"\n' "$0" "$@" | nl -v0 -s": "

Karakter ismétlése sokszor

http://stackoverflow.com/q/5799303/1108919

http://stackoverflow.com/q/5349718/1108919

120 db szóköz:

printf '%120s'

120 db tetszőleges karakter (pl. „=” jel):

printf '%120s' | tr ' ' '='

Alapértelmezett érték

http://stackoverflow.com/a/26899206/1108919

http://www.gnu.org/software/bash/manual/html_node/Shell-Parameter-Expansion.html#Shell-Parameter-Expansion

Ha nincs deklarálva a $parameter változó, akkor legyen lecserélve a „default” szóra:

echo "${parameter='default'}"

Ha nincs deklarálva, vagy üres string a $parameter változó, akkor legyen lecserélve a „default” szóra:

echo "${parameter:='default'}"

Változók, tömbök

http://unix.stackexchange.com/a/122848/21185

http://www.thegeekstuff.com/2010/06/bash-array-tutorial

$param != null	$param == null	unset param
${param:-word}	$param	word	word
${param:=word}	$param	=word	=word
${param:?word}	$param	hiba	hiba
${param:+word}	$param	null	null

Fájl nyitása úgy, hogy az FD-jét elkérjük

exec {out_fd}>/tmp/en_fajlom echo "${out_fd}" #például 10

Pseudo fájlok

http://unix.stackexchange.com/a/64011/21185

http://tldp.org/LDP/abs/html/process-sub.html

Parancs kimenetének használata, mint fájl leíró

cat <( date )
date >( cat )

Mókás példa

https://gist.github.com/andras-tim/f8aebf9243cecf3719d27d020a718ef8

TODO:

Solution:
| Component | Explanation
| ------------- | --------------- | ------ | | Note |
| `echo 2 >a` | Write `2` to file **a**. | Creates **a** file with `2` content |
| `<(echo 3)` | Run `echo 3` command in a sub-shell and get the path of the it's stdout fd (e.g. `/dev/fd/63`). | Creates a subshell |
| `exec {b}< /dev/fd/63` | ??? | ??? |
| `cat -` | `cat` reads from stdin instead of a file and writes everything to stdout ||
| `echo 1 | cat -` | stdout of `echo 1` piped to `cat` | #1 input of `cat` |
| `cat - <a` | Read **a** file into stdin of `cat` | #2 input of `cat` |
| `cat - <&${b}` | ??? | #3 input of `cat` |
| ```
cat - <<-EOF
4
EOF
``` | Read multiline string while `EOF` with removal of <TAB> indents | #4 input of `cat` |
| `cat - <<<5` | Write `5` to stdin of `cat` | #5 input of `cat` |
| `cat 2>&1` | merge stderr of cat into it's stdout |
| `cat >c` | `cat` writes the input data to file **c** | creates **c** file |
| `cat >|d` | `cat` writes the input data to file **d** if the **d** is not existed ??? | creates **d** file |
| `cat >>e` | `cat` appends the input data to file **e** | creates **e** file |

Háttérben futtatás

https://unix.stackexchange.com/questions/3886/difference-between-nohup-disown-and

Háttérben indítás:

# a szülő process megszűnésekor a parancs is leáll command & # a szülő process megszűnésekor a parancs tovább él command &! # == nohup command

Előtérben indított program háttérbe szüneteltetése: Ctrl+Z

Szüneteltetett program kezeléseÉ

# folytatás előtérben fg # folytatás háttérben bg

Háttérben indított program utólagos leválasztás a szülőről:

disown

Escape

https://stackoverflow.com/a/41940626/1108919