この関数をbashで再現できるコマンドはどれですか?
Finderで[ファイル]を選択し、⇧⌥を押してコマンドを表示します(⇧⌥⌘D)。
AppleScriptでは、次のように利用できます。
tell application "Finder" to duplicate selection with exact copy
更新。出生時間を統計で確認しました。
この記事 によると、これと通常の複製(⌘D)関数の主な違いは、ファイルの所有権が保持されることです。通常の複製機能は、ファイルのアクセス許可を保持しますが、所有権は保持しません。
この動作に最もよく相当するのはOSX上は ditto
コマンドです。 _Sudo ditto src dst
_を使用するだけで、デフォルトですべてが保持されます。ファイルの所有権を保持する必要がある場合は、sudoが必要です。ディレクトリをコピーしていて、dst
がすでに存在する場合は、新しいディレクトリ_dst/src
_を作成するのではなく、mergedになることに注意してください。 Dittoは、マンページで説明されているように、cpioまたはZip形式のアーカイブを作成することもできます。
以下の回答は主に他のUNIXシステムに関連しており、OSXの一部のバージョンではリソースフォークまたは他のHFS固有の属性を保持しない場合があります。
まず、これらのコマンドはいずれも、rootとして実行した場合にのみ所有権を保持できることに注意してください(たとえば、システムに応じてSudo
またはsu
を使用します。Sudo
コマンドはOSXに存在します。)。 rootとして実行されていない場合、これらのほとんどは可能な属性を保持しますが、ファイルはユーザーIDによって所有されます。
_cp -a
_コマンドは、権限、所有権(rootの場合)、タイムスタンプ、シンボリックリンクなどを可能な限り保持します。 _-a
_は多くのシステムでサポートされていますが(GNUではハードリンクを保持しますが、OSXでは保持しません)、POSIXではサポートされていません。最も近い同等のPOSIXコマンドは_cp -pPR
_です-アクセス許可と所有権を保持するための関連する標準オプションはp
ですが、シンボリックリンクとP
をコピーするにはR
が必要ですディレクトリをコピーします。
Cpが処理できない可能性のあるハードリンクやその他の拡張属性を保持しながらコピーする最良の方法は、paxコマンド_pax -rwpe src dstdir
_を使用することです。これでは、ソースファイルの名前を変更することはできず、宛先ディレクトリがすでに存在している必要があります。 dstdir/srcとしてコピーが作成されるため、理想的な結果を得るには、ソースファイルが存在するディレクトリからこれを実行する必要があります。
一部のシステムでは、paxが存在しない場合があります。その場合、tar:tar cf - srcfiles | (cd dstdir; [Sudo] tar xf -)
を使用できます。ファイル名、ソースおよび宛先ディレクトリに関する同じアドバイスが、paxの場合と同じように適用されます。