101 lines
2.0 KiB
Markdown
101 lines
2.0 KiB
Markdown
# Bash Tips
|
|
|
|
- [Bash Tips](#bash-tips)
|
|
- [bashrc](#bashrc)
|
|
- [Eternal History](#eternal-history)
|
|
- [Global bashrc](#global-bashrc)
|
|
- [User Environment](#user-environment)
|
|
- [User Aliases](#user-aliases)
|
|
- [Check if executable exists](#check-if-executable-exists)
|
|
- [Check if file exists](#check-if-file-exists)
|
|
- [Check if last command exit code was zero](#check-if-last-command-exit-code-was-zero)
|
|
|
|
## bashrc
|
|
|
|
### Eternal History
|
|
|
|
```bash
|
|
# Eternal bash history.
|
|
# ---------------------
|
|
# Undocumented feature which sets the size to "unlimited".
|
|
# http://stackoverflow.com/questions/9457233/unlimited-bash-history
|
|
export HISTFILESIZE=-1
|
|
export HISTSIZE=-1
|
|
export HISTTIMEFORMAT="[%F %T] "
|
|
# Change the file location because certain bash sessions truncate .bash_history file upon close.
|
|
# http://superuser.com/questions/575479/bash-history-truncated-to-500-lines-on-each-login
|
|
export HISTFILE=~/.bash_eternal_history
|
|
# Force prompt to write history after every command.
|
|
# http://superuser.com/questions/20900/bash-history-loss
|
|
PROMPT_COMMAND="history -a; $PROMPT_COMMAND"
|
|
```
|
|
|
|
### Global bashrc
|
|
|
|
```bash
|
|
# Source global definitions
|
|
if [ -f /etc/bashrc ]; then
|
|
. /etc/bashrc
|
|
fi
|
|
```
|
|
|
|
### User Environment
|
|
|
|
```bash
|
|
# User specific environment
|
|
if ! [[ "$PATH" =~ "$HOME/.local/bin:$HOME/bin:" ]]; then
|
|
PATH="$HOME/.local/bin:$HOME/bin:$PATH"
|
|
fi
|
|
export PATH
|
|
```
|
|
|
|
### User Aliases
|
|
|
|
Allows custom aliases in ~/.bashrc.d
|
|
|
|
```bash
|
|
# User specific aliases and functions
|
|
if [ -d ~/.bashrc.d ]; then
|
|
for rc in ~/.bashrc.d/*; do
|
|
if [ -f "$rc" ]; then
|
|
. "$rc"
|
|
fi
|
|
done
|
|
fi
|
|
unset rc
|
|
```
|
|
|
|
## Check if executable exists
|
|
|
|
```bash
|
|
if command -v aws 2>&1 >/dev/null
|
|
then
|
|
echo "aws command found"
|
|
else
|
|
echo "aws could not be found"
|
|
fi
|
|
```
|
|
|
|
## Check if file exists
|
|
|
|
```bash
|
|
FILE=/etc/resolv.conf
|
|
if [ -f "$FILE" ]; then
|
|
echo "$FILE exists."
|
|
else
|
|
echo "$FILE does not exist."
|
|
fi
|
|
```
|
|
|
|
## Check if last command exit code was zero
|
|
|
|
```bash
|
|
cat /i/do/not/exit
|
|
|
|
if [ $? -eq 0 ]
|
|
then
|
|
echo "Success."
|
|
else
|
|
echo "Failure." >&2
|
|
fi
|
|
``` |