Skip to content

Bash

Bash

Usage

Run a command N times

seq [N] | xargs -Iz [command]

stackoverflow

Output redirection

  • To redirect both stderr and stdout to /dev/null use:
command > /dev/null 2>&1

stackoverflow

For loop

for arg in [list]; do [command] $arg; done

Until loop

Run a command until the ouptut contains some text
until somecommand | grep -q "Up to date";
do
  sleep 1;
done

Environment variables

Remove an environment variable

To remove an exported environment variable use:

unset VARIABLE
Remove prefix/suffix

You can remove a fixed prefix and/or suffix from an environment variable with ${var#{prefix}} and ${var%{suffix}} as follows

$ string="hello-world"
$
$ foo=${string#hell}
$ foo=${foo%ld}
$
$ echo "${foo}"
o-wor

Arithmetic operations

Use $(( )).

Get min or max from two variables

Use the ternary operator. For example, for MAX(10, $VAR) do:

$((VAR > 10 ? VAR : 10))

Locks

flcok

To ensure only one instance of the script runs some code, you can use flock as follows:

(
  # Wait for lock on /var/lock/.myscript.exclusivelock (fd 200) for 10 seconds
  flock -x -w 10 200 || exit 1

  # Do stuff

) 200>/var/lock/.myscript.exclusivelock

Tips

Beep alert

You can generate a beep alert (if enabled in the system) and a window highlight with:

echo -e "\a"

Configuration

Prompt

Add timestamp

Add \D{%T} to PS1 to display the current time (HH:MM:SS). For example for debian edit /etc/bash.bashrc and add:

PS1='\D{%T} ${debian_chroot:+($debian_chroot)}\u@\h:\w\$'

Reference

Shortcuts

Keyboard syntax