iiuc >prefixed lines will make it through gmail plain text mode
without getting wrapped, let's see if that's true..

>#  unlike mv, rename will never inadvertently copy files, it errors out if not same filesystem.
>#  rename's weakness is it neither will backup nor warn before replacing pre-existing targets.
>#
># rb  like rename, but if targets exist back them up into <curfs>/~ with unique name
># mb  like mv -vb, but use rb   (which puts backups into <curfs>/~ with unique name)
># cb  like cf,    but if targets exist put backups into <curfs>/~ with unique name
># co  like cP,   but if targets exist put backups into <curfs>/~ with unique name
># -~  like rm, but actually            toss args into <curfs>/~ with unique name
># b~                                  copy args into <curfs>/~ with unique name
># bn                                 ln   args into <curfs>/~ with unique name
># cf  cp -v, preserve dates&modes, sparse, use cp backup facility if target exists
># cu  like cf but ignore if not more recent
># cP  like cf but if target exists retain the owner&inode and copy over/into it
>#
>#  backups as implemented here are all tossed into one flat directory per filesystem with unique
>#  names derived from their original name plus a number injected just before the extension
>
>alias cu='cp -vbau --sparse=always ${reflink=$(cp --reflink=auto --version>/dev/null 2>&1&&echo --reflink=auto)}'
>alias cf='cp -vba  --sparse=always ${reflink=$(cp --reflink=auto --version>/dev/null 2>&1&&echo --reflink=auto)}'
>alias cP='cp -vPR  --sparse=always ${reflink=$(cp --reflink=auto --version>/dev/null 2>&1&&echo --reflink=auto)} --preserve=mode,timestamps'   #preserve=link only works if all faces of the link are copied, else it UNlinks
>alias bn='  bN \~'
>      b~(){ B  \~ "$@";}
>      -~(){ _  \~ "$@";}
>      bN()(h= D="$1";shift;N~ "$@";for a do \~;ln   -- "$a" "$b$h$n$e"||exit;done)
>       _()(h= D="$1";shift;N~ "$@";for a do \~;mb      "$a" "$b$h$n$e"||exit;done)
>       B()(h= D="$1";shift;N~ "$@";for a do \~;{ cmps  "$a" "$c"&&
>                                                l          "$c"||              #if already backed up just ls
>                                                cu -- "$a" "$b$n$e";}||exit;done)
># \~  explode arg into components
>  ~(){ a=${a%%*(/)}                                            #assignment from $1 drops \001 et al characters in older bashes, assign from $a instead
>       d=${a%/*};[ "$d" = "$a" ]&&d=
>       e=${a##*/}                                              #basename
>       b=${e%.*};[ "$b" ]||b=$e                                        #sans extension
>       e=${e#$b};pushd "${d:-/}">/dev/null||exit               #extension, if cd fails exit from () parent
>       b=$(/bin/pwd)/$b;popd    >/dev/null                     #actual location
>      fs=${D%/*}                                               #fs may be specified via the dirname of the first arg to B or _
>      if [ "$fs" = "$D" ];then c=$b;while read -r m m r;do     #if fs not specified find longest match in /proc/mounts
>       r=${b#$m};[ ${#r} -lt ${#c} ]&&c=$r fs=${m%%*(/)};done</proc/mounts;fi
>       D=${D#$fs/}
>       b=${b#$fs/}
>       b=${b##*(/)}
>       b=$fs/$D/${b//\//^}                                     #unique name prefix
>       c=$(ls -tc1Nad "$b$h"~+([0-9])"$e" 2>/dev/null|head -1) #most recent existing
>      md -pm1777 "$fs/$D";}
># N~  survey args and set n= highest backup number +1
>  N~(){ N=();for a do \~;N=("${N[@]}" "$b$h"~+([0-9])"$e");done
>        n=\~$(($(ls -U1Nad "${N[@]}" 2>/dev/null|(echo -1;while read -r b;do b=${b##*[/^]} n=${b%.*};[[ $n ]]||n=$b;n=${n##*~}
>                                    [[ $n =~ ^[0-9]+$ ]]&&echo $n;done)|sort -nr|head -1)+1));}
>
># bq  enumerate a=(sources) b=(targets), error if last arg not a dir and not 2 args
># Bq  filter B=(pre-existing-targets), preserve prior exit status
>funct bq(){ [[ -d ${@:$#} ]]&&a=("${@:1:$#-1}") a=("${a[@]%%*(/)}") b=("${@:$#}/${a[@]##*/}")||{ [[ $# = 2 ]]&&a=("$1") b=("$2");};Bq;}        #NB no switches
>funct Bq(){ r=$? B=();for c in "${b[@]}";do [[ -e $c ]]&&B=("$@" "$c");done;return $r;}
>funct co()(! bq "$@"||b~ "${B[@]}"&&cP "$@")
>funct cb()(! bq "$@"||-~ "${B[@]}"&&cf "$@")
>funct mb()(  bq "$@"&&for((i=0;i<${#a[@]};i++))do rb "${a[i]}" "${b[i]}" "${a[i]}"||exit;done)
>funct rb()(a=("${@:3}") b=("${a[@]/$1/$2}");Bq;bn "${B[@]}"&&if [[ $(type -p rename.ul) ]];then rename.ul -v "$@";else rename "$@"&&echo "(${@:3}) -> (${b[@]})";fi)
>
>function cmps(){ [ -e "$1" ];ir=$?                                                                     #like cmp but..
>                [ -e "$2" ];jr=$?
>                                  [ $ir = 0 -a $jr = 0 ]||{ [  $ir = $jr  ]&&return 0||return 1;}      #return true if both don't exist
>                [ -x /usr/bin/cmp ]&&{ cmp -s "$1"   "$2"                  &&return 0||return 1;}      #use cmp if present
>                cmpsloop                <(cat<"$1") <"$2"                  &&return 0||return 1;}
>function cmpsloop(){ while true;do read -r i  <"$1";ir=$?                                              #read discards leading whitespace with default IFS
>                                  read -r j       ;jr=$?;   [ "$i" = "$j" ]          ||return 1        #return false if different
>                                  [ $ir = 0 -a $jr = 0 ]||{ [  $ir = $jr  ]&&return 0||return 1;};done;}