LoginSignup
1
4

More than 5 years have passed since last update.

scpでホスト名を必須にする

Posted at

誰もが一度は、scpで次のようなミスをしたことがあるかと思います。

1.gif

リモートホストに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 コマンドを呼び出し、含まれないならエラーを表示します。これでうっかりローカル同士のコピーをしてしまうストレスを回避できます。

2.gif

1
4
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
4