既存のファイルを上書きする前にtarが要求されないのはなぜですか?

既存のファイルを上書きする前にtarが要求されないのはなぜですか?

私が書いたVimプラグインの何百行も失われ、tar以前のバージョンを含むファイルを抽出したので、しばしばバックアップを続けています。プラグインの作成時に定期的に更新するため、ソース管理を無効にすることにしました。

tarデフォルトでは、既存のファイルを上書きする前に尋ねないのはなぜですか?私たちは通常、速度と利便性よりもセキュリティが必要なので、ファイルを自動的に上書きするデフォルトの動作の背後にはいくつかの理由があると思います。例えば、私たちは一般的に;#ifdef NDEBUG代わりに使用します#ifdef DEBUG。同様に、ファイルを上書きする前に私に尋ねたいのですが、私に尋ねずにファイルを上書きするように指示するtarために使用できるいくつかのフラグがあります。また、tarフラグを指定せずにデフォルトで要求するようにするにはどうすればよいですか?tarこれより安全な基本動作をサポートしている場合は、それ以外のツールを使用することもできます。

時間をいただきありがとうございます!

答え1

tar -kこのオプションは、ファイルがすでに存在することを確認するように要求します。TAR_OPTIONS変数に追加(TAR_OPTIONS="$TAR_OPTIONS -k")するか、エイリアスを作成()してデフォルトで設定できますalias tar="tar -k"

答え2

rm他の多くのユーティリティがこれをやっていないのと同じ理由cp- 当初から、POSIXデザインの哲学は、コンソールの人々が自分がすることを知っていると仮定し、説明がない限り説明を要求しなかったことでした。 。実際の問題。

このような場合は、tarマニュアルページを見て、フラグをTAR_OPTIONS含めるようにenv変数を設定してみることができます--confirmation

答え3

要求されたものではありませんが、上書きするすべてのソースファイルのファイル名に--backup=simple追加されるオプションを使用できます。~

@thinker25のアドバイスに従ってデフォルトを使用するとTAR_OPTIONS効果aliasがあります。

デモは次のとおりですtar --backup=simple

$ ls
hello.txt  my.tar
$ tar --backup=simple --extract -f my.tar
$ ls
hello.txt  hello.txt~  my.tar

関連情報