「cp」を使用してファイルを上書きするにはどうすればよいですか?


10

シェルスクリプトまたはターミナルを使用して、存在するファイルまたは存在しないファイルを上書きする方法を教えてください。cpのmanページを見て、-f引数を使用して強制的に上書きすると述べました。しかし、それは何もしません。

$ cp -f /path/to/source/file.txt /path/to/target

または、OS Xの一般的な組み込みコマンドラインツールを使用してファイルを上書きする別のオプションはありますか?


3
わたしにはできる。試したときに上書きする代わりに何をしますか?
ゴードンデイヴィソン

2
ターゲットファイルを上書きする権限がない場合、これは失敗します。本当にターゲットファイルを上書きする場合sudoは、コマンドの先頭で使用できます。ただし、注意して使用してください!
ダニエル

@Gordon Davisson:どうしたの?何もない。ファイルをターゲットディレクトリにコピーするのは、mvそれらをコピーした場合のみrmです。
ロジャーフェルナン

@Daniel Lawson:使用せずに、またはをsudo使用してファイルを移動または削除できます。使用しても違いはありません。mvrmcpsudo cp
ロジャーフェルナン

好奇心and盛です。
ダニエル

回答:


13

エイリアスが含まれていない場合にcpがこのように動作する理由については困惑しています。ただし、次の正確な状況に対応するためのクイックダーティアンド危険なユーティリティが用意されていますyes。これを使用して、肯定プロンプトの連続ストリームを確認プロンプトを表示するコマンドにパイプすることができます(テキストを送信するために使用できますが、デフォルトは「y」です)。

yes | cp foo bar cpコマンドを実行し、すべての確認プロンプトをバイパスします。


8

コマンドエイリアスが原因である可能性があります。

cp直接呼び出すには、次を使用できます/bin/cp src dest


1
これがなぜ投票されたのかはわかりません。-fを明示的に指定するとエイリアスの-iが上書きされるという印象を受けましたが、確認しましたが、上書きしません。ポスターは、cpエイリアス(タイプalias cp)があるかどうかを確認する必要があります。プロファイルのエイリアスを変更するか、提案どおり/ bin / cpを使用できます。
octern

cpAppleが提供したデフォルトを使用しています。
ロジャーフェルナン

@octern:roger$ alias cp -bash: alias: cp: not found
rogerFernand

/ bin / cpを使用しなければなりませんでした。理由はわかりません。
beingalex 14

1
私は遅すぎるかもしれませんが、検索エンジンから来ている人にとっては、コマンドを実行することでコマンドにエイリアスがあるかどうかを確認できましたtype cp。そして、実際にそうでした。
悲鳴を上げる

2
rm foo/bar/destination && cp source foo/bar/destination

最初にrm宛先を削除()し、成功した場合(&&)コピーを行います。フォルダを削除するときは、必ず()に追加-rしてください。rmrm -r


1

また、-fを台無しにしてエイリアスを作成し、/ binから直接cpを呼び出しても問題ありません。エイリアスが誤って上書き/削除されないようにすることはデフォルトでかなり良いので、削除しないでください。

。#エイリアス

エイリアスcp = 'cp -i'

すでに述べたように、-iフラグは-fに優先します。これにより、以下のコマンドが意図したとおりに実行できなくなります。

。#/ bin / cp -fauv src dst

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.