cp --no-target-directory 説明

cp --no-target-directory 説明

質問:の使い方を示すために簡単な例が必要ですcp --no-target-directory

私はそれを理解するのに少し苦労しましたcp --no-target-directory。わかりました。説明mv --no-target-directoryしかし、私はそれを使用する方法を本当に想像することはできませんcp

たとえば、コマンドがmv /tmp/source /tmp/dest成功しても名前が次に変更されるという保証はありません/tmp/source。別のプロセスでディレクトリを作成した場合は、名前が/tmp/dest変更された可能性があります。しかし、成功すれば/tmp/dest`は問題になりません。 (/tmp/dest/source/tmp/destmv -T /tmp/source /tmp/dest/tmp/source was renamed to源泉)

ベストアンサー1

デフォルトでは、cp最後の引数が既存のディレクトリであるかどうかをテストします。これが発生すると、cpそのディレクトリ内にソースのデフォルト名を含むリンクが生成されます。つまり、コマンドが与えられると

cp foo/bar wibble

wibble存在する場合は、cpソースをディレクトリにコピーしますwibble/barwibble存在しない場合は、cpソースをディレクトリにリンクしますwibble

コピーを常に使用できるようにするには、(エイリアス)オプションをwibble指定できます。これにより、成功した場合にコピーが呼び出されたことを確認できます。すでにディレクトリとして存在すると失敗します。--no-target-directory-Tcpwibblewibblecp

表形式:

The target is …             Without -T               With -T
existing directory          copy in the directory    error
existing file (not dir)     overwrite                overwrite
does not exist              create                   create

唯一の違いは、-Tターゲットが既存のディレクトリの場合、コマンドがエラーを返すことです。これは、ディレクトリが存在しないと予想する場合に便利です。予期しないことが発生するのではなく、エラーメッセージが表示されます。

mvにも同様に適用されますln。宛先が既存のディレクトリの場合は、他の操作を-T自動的に実行するのではなくエラー信号を送信します。

の場合はcp状況が異なります。再帰コピーを実行し、ソースがディレクトリの場合、ソースcp -T自体ではなくソースコンテンツがターゲットにコピーされます。言い換えれば、

$ tree source destination 
source
└── foo
destination
└── bar

それから

$ cp -rv source destination
`source' -> `destination/source'
`source/foo' -> `destination/source/foo'

しかし、

% cp -rvT source destination
`source/foo' -> `destination/foo'

おすすめ記事