44 lines
861 B
Plaintext
44 lines
861 B
Plaintext
# Traps
|
|
|
|
Traps allow you to execute code on various signals. In `pxltrm` I'm using traps to redraw the user interface on window resize. Another use case is cleaning up temporary files on script exit.
|
|
|
|
These `trap` lines should be added near the start of your script so any early errors are also caught.
|
|
|
|
**NOTE:** For a full list of signals, see `trap -l`.
|
|
|
|
|
|
## Do something on script exit
|
|
|
|
```shell
|
|
# Clear screen on script exit.
|
|
trap 'printf \\e[2J\\e[H\\e[m' EXIT
|
|
```
|
|
|
|
## Ignore terminal interrupt (CTRL+C, SIGINT)
|
|
|
|
```shell
|
|
trap '' INT
|
|
```
|
|
|
|
## React to window resize.
|
|
|
|
```shell
|
|
# Call a function on window resize.
|
|
trap 'code_here' SIGWINCH
|
|
```
|
|
|
|
## Do something before every command.
|
|
|
|
```shell
|
|
trap 'code_here' DEBUG
|
|
```
|
|
|
|
## Do something when a shell function or a sourced file finishes executing
|
|
|
|
```shell
|
|
trap 'code_here' RETURN
|
|
```
|
|
|
|
<!-- CHAPTER END -->
|
|
|