#!/usr/bin/env bash # vim:ts=4:sts=4:sw=4:et # # Author: Hari Sekhon # Date: 2012-06-25 15:20:39 +0100 # # https://github.com/HariSekhon/DevOps-Bash-tools # # License: see accompanying Hari Sekhon LICENSE file # # If you're using my code you're welcome to connect with me on LinkedIn and optionally send me feedback to help steer this or other code I publish # # https://www.linkedin.com/in/HariSekhon # # ============================================================================ # # W e l c o m e # ============================================================================ # # Original version was in Perl many years ago, but defaulting to Python version now # Bash version further down is for interest of if you don't have the other repos # welcome should be found in $PATH from DevOps-Golang-Tools repo # welcome.py should be found in $PATH from DevOps-Python-Tools repo welcome(){ if type -P welcome &>/dev/null; then command welcome elif type -P welcome.py &>/dev/null; then welcome.py fi } # set this instead to use bash only version if you don't have the other repos #alias welcome=bash_welcome bash_welcome(){ local msg msg="Welcome Hari - your last access was $(last|head -n2|tail -n1|sed 's/[^ ]\+ \+[^ ]\+ \+[^ ]\+ \+//;s/ *$//')" #local msg="Welcome Hari" # generated by for x in {A..z}; do printf "%s" $x; done #charmap="ABCDEFGHIJKLMNOPQRSTUVWXYZ[]^_\`abcdefghijklmnopqrstuvwxyz" # generated by: for x in {1..128}; do printf \\$(printf '%03o' $x); done # shellcheck disable=SC1117 charmap="!\"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_\`abcdefghijklmnopqrstuvwxyz{|}~ \t\n" for ((i=0; i<"${#msg}"; i++)); do local x="${msg:i:1}" #echo "x == $x" printf " " local j=0 while true; do #for ((j=0; j<"${#charmap}"; j++)); do #while true; do #set -x if [ $j -gt 2 ]; then local y=$x else local y=${charmap:$((RANDOM%${#charmap})):1} fi #local y="${charmap:j:1}" printf "\\b%s" "$y" # This does not have enough precision, re-implement in Perl # This is because it's an external being called, otherwise pure bash # is so fast that you don't see any effect... sleep 0.000000000001 #perl -e 'sleep 0.0000000000000000000000000001' [ "$y" = "$x" ] && break ((j+=1)) #set +x done done #printf "\\n" printf "\\n" }