#!/usr/bin/env bash set -e (( $# > 0 )) || exit # Displays the time since $1 in a human readable format (e.g. 4h 25m 55s). If # given a file, the modified time is used. If $1 == "--", then this script acts # as a converter, converting $2 into human a readable format, e.g. since -- 72 # #=> 1m 12s # TODO: A help fallback # TODO: Options parsing? # `date` on OSX does not have the --date parameter date=date if [[ $OSTYPE == darwin* ]]; then date=gdate elif ! command -v $date >/dev/null; then echo "Unsupported system" exit 1 fi # If given a file, give time since last modification (( $# == 1 )) && [[ -f $1 ]] && arg=reference || arg=date if [[ $1 == -- ]]; then t="$2" else now=$($date +%s) then=$($date --$arg="$*" +%s) t=$(( now - then )) fi # Bash doesn't support floating point arithmetic like zsh does, therefore: bc < 0) print weeks, "w " if (days > 0) print days, "d " if (hours > 0) print hours, "h " if (minutes > 0) print minutes, "m " print seconds, "s" EOF