誰もが一度は、scpで次のようなミスをしたことがあるかと思います。
リモートホストにscpしようとしたが、 :
を付け忘れて、ホスト名のファイルがローカルに出来上がってしまいました。このミスを防ぐために、.bashrc
や .zshrc
に、次のような関数を定義します。
scp() {
(
while test $# != 0; do
case "$1" in
-c|-F|-i|-l|-o|-P|-S) shift ;;
*:*) exit 0 ;;
esac
shift;
done
exit 1;
)
if [ $? = 0 ]; then
command scp "$@"
else
echo >&2 "scp: No host name"
fi
}
scp
シェル関数を定義して、関数側で引数にホスト名 %s:%s
が含まれるかチェックします。ホスト名が引数に含まれるなら scp
コマンドを呼び出し、含まれないならエラーを表示します。これでうっかりローカル同士のコピーをしてしまうストレスを回避できます。