====== Bash ====== Useful Bash code, with no particular order ===== Add safeguards on every script ===== At the top of the file, always start your scripts with: set -euo pipefail * ''-e'': The -e option will cause a bash script to exit immediately when a command fails. * ''-o pipefail'': This particular option sets the exit code of a pipeline to that of the rightmost command to exit with a non-zero status, or to zero if all commands of the pipeline exit successfully. * ''-u'': This option causes the bash shell to treat unset variables as an error and exit immediately. More info: https://vaneyckt.io/posts/safer_bash_scripts_with_set_euxo_pipefail/ ===== Read passwords with feedback on a script ===== unset password charcount=0 prompt="Enter your password: " while IFS= read -p "$prompt" -r -s -n 1 char do if [[ $char == $'\0' ]] then break fi if [[ $char == $'\177' ]] ; then # Backspace support if [ $charcount -gt 0 ] ; then charcount=$((charcount-1)) prompt=$'\b \b' password="${password%?}" else prompt='' fi else charcount=$((charcount+1)) prompt='*' password+="$char" fi done