Bash One-Liners --------------- Histogram in bash ~~~~~~~~~~~~~~~~~ Create a nice looking histogram based on the number of elements found when counting with ``uniq``. :: $ cat somefile | sort | uniq -c | perl -lane 'print $F[1], "\t", $F[0], "\t", "=" x ($F[0] / 3 + 1)' 2003 1 = 2004 1 = 2008 1 = 2009 10 ==== 2010 3 == 2011 4 == 2012 2 = 2013 9 ==== 2014 19 ======= 2015 16 ====== 2016 33 ============ 2017 32 =========== 2018 91 =============================== 2019 75 ========================== 2020 14 ===== Install if needed ~~~~~~~~~~~~~~~~~ Test if a command is available and if not, install it.:: [ ! -x "$(command -v docker)" ] && apt install docker Exit if command not found ~~~~~~~~~~~~~~~~~~~~~~~~~~ Check if a given command is available in the path, otherwise exit:: command -v mybin >/dev/null 2>&1 || echo "mybin is not available in your PATH." && exit 1 Check if file exists ~~~~~~~~~~~~~~~~~~~~ Check if a given file exists, printing a message and exiting if not:: [ ! -f $FILE ] && echo "$FILE does not exist." && exit 1 Check ping result ~~~~~~~~~~~~~~~~~ Execute command if host / down according to ping result:: ping -c 1 192.168.1.1 &> /dev/null && echo "up" || echo "down" Operations on diectories ~~~~~~~~~~~~~~~~~~~~~~~~ Compute md5sum of directory content:: find . -type f -exec md5sum {} \; | tee md5res.txt Move every file in the current folder to a new folder having the same name, without extension:: for f in $(find . -type f); do mkdir "${f%.*}"; mv "$f" "${f%.*}"; done Replace spaces in file name by .:: for f in $(find . -type f); do mv "$f" "${f// /.}"; done Find all files modified after a a date:: find . -newermt '2021-04-05' -print Find all files modified after another file:: find . -newer /var/reference-file -print