cp -r ~/some/folder/ を避ける方法。すべてのファイルを現在のフォルダの最上位レベルにコピーしますか?

cp -r ~/some/folder/ を避ける方法。すべてのファイルを現在のフォルダの最上位レベルにコピーしますか?

修正する:Mac OS Xでこれが起こります。私はMountain Lionを使用しています。 ) 時にはキーストロークを使用してtabパスを完成させるので、コマンドは次のようになります。

cp -r ~/some/folder/ .

しかし、上記の行は異なる動作をしていることがわかりました。

cp -r ~/some/folder .

2行目はフォルダを現在のディレクトリにコピーしますfolderが、1行目は7つのファイル、6つのサブフォルダをすべて現在のディレクトリにコピーして現在のディレクトリを汚染します。特定の現在のディレクトリにgitまたはsvnを使用するソース管理がないため、実際に手動でクリーンアップする必要がありますが、これはかなり痛いです。

これが起こらないようにする方法はありますか?たとえば、関数、エイリアス、またはBash設定を生成しますか?私はこれを覚えることができることを知っていますが、2ヶ月が経過すると実際に誤って同じことをやり直す可能性があるので、これらの行動に注意するのが最善です。 (それが私が本当に欲しいものなら、cp -r ~/some/folder/* .むしろそれを使うべきです。)cp -r ~/some/folder/.* .

ベストアンサー1

これを正しく実行するには、cpのすべてのオプションを再分析する必要がありますが、これは良い考えではありません。しかし、ここに近づくべきことがあります。

# run cp command as-given, unless any argument ends in a slash
safecp() {
  for arg; do
    case $arg in */)
      echo "safecp: trailing slash in cp $*" >&2
      return 1
      ;;
    esac
  done
  cp "$@"
}

または配置してみてください。

set mark-directories off

ディレクトリをタブで完成させるときは、bashがスラッシュを自動的に追加しないようにします~/.inputrc

おすすめ記事