diff → cp のコンボ

$ diff -u -bw -I Id /usr/irori/bin/foo ~/WORKDIR/foo
$ cp ~/WORKDIR/foo /usr/irori/bin/foo

なふうに、ファイルをcpしたりする前にdiffって確認することは日常よくある風景だと思うのですが、diffとcpとで引数が逆になってアレです。並びが同じならば履歴+行編集でいけるのに。。。

diff(1)みてもそれっぽいのがないみたいなので、シェル関数で逃げました。。。

xdiff() {
  declare -a opts
  declare -a files

  optv=("$@")
  optc=${#optv[@]}

  files=(${optv[$optc-2]} ${optv[$optc-1]})
  unset optv[$optc-1]
  unset optv[$optc-2]

  diff "${optv[@]}" "${files[1]}" "${files[0]}"
}

ただ、ファイルの後ろにオプションが指定できなく(diff file1 file2 -uとか)なります。。。
ダサイ。。。
もっといい方法あったら教えてください。。。