GNU Emacs 32.0.50 (9008bf64c3) のマニュアルを PLaMo 翻訳で機械翻訳したものです。誤訳を含むことがあります。原文: https://www.gnu.org/software/emacs/manual/html_node/emacs/Copying-and-Naming.html ・ emacs-doc.conao3.com

20.11 ファイルのコピー、命名、名前変更

Emacsには、ファイルのコピー、命名、リネームを行うためのコマンドがいくつか用意されています。これらのコマンドはいずれも、ミニバッファを使用して2つのファイル名 old(または target)と new を読み込み、それに応じてファイル名をコピーまたは調整します。ワイルドカード形式のファイル名は指定できません。

これらのコマンドすべてにおいて、引数 new が単なるディレクトリ名である場合(Emacs Lisp Reference Manual の Directory Names を参照)、実際の新しい名前はそのディレクトリ内にあり、old と同じ非ディレクトリコンポーネントを持ちます。例えば、コマンド M-x rename-file RET ~/foo RET /tmp/ RET は ~/foo を /tmp/foo にリネームします。GNU やその他の POSIX 系システムでは、ディレクトリ名は ‘/’ で終わります。

これらのコマンドはいずれも、新しいファイル名が既に存在する場合に確認を求めます。

M-x copy-file はファイル old の内容をファイル new にコピーします。

M-x copy-directory は、cp -r シェルコマンドと同様にディレクトリをコピーします。new がディレクトリ名の場合、old ディレクトリのコピーを作成して new に配置します。それ以外の場合は、old のすべての内容を new という名前の新しいディレクトリにコピーします。copy-directory-create-symlink が nil 以外で、old がシンボリックリンクの場合、このコマンドはシンボリックリンクをコピーします。nil の場合、このコマンドはリンクを辿り、代わりにその内容をコピーします。(これがデフォルトです。)

M-x rename-file はファイル old を new にリネームします。ファイル名 new が既に存在する場合は、yes に確認しなければリネームは行われません。これは、リネームによって名前 new の古い意味が失われるためです。old と new が異なるファイルシステム上にある場合、ファイル old はコピーされた後に削除されます。

ファイルがバージョン管理下にある場合(バージョン管理を参照)、M-x rename-fileではなくC-x v Rを使用してファイル名を変更してください。バージョン管理対象ファイルの削除と名前変更を参照してください。

M-x add-name-to-file は、既存のファイル名を削除することなく、そのファイルに別の名前を追加します。新しい名前は、既存のファイルへのハードリンクとして作成されます。新しい名前は、ファイルが配置されているのと同じファイルシステム上にある必要があります。MS-Windows では、このコマンドはファイルが NTFS ファイルシステムにある場合にのみ動作します。MS-DOS および一部のリモートシステムタイプでは、ファイルをコピーすることで動作します。

M-x make-symbolic-link は new という名前のシンボリックリンクを作成し、それが target を指します。これにより、その後ファイル new を開こうとする際、開操作が行われた時点で target という名前のファイルが参照されるか、あるいはその時点で target という名前が存在しない場合はエラーが発生します。このコマンドは引数 target を展開しないため、リンクのターゲットとして相対名を指定できます。ただし、このコマンドは target の先頭にある ‘~’ を展開してホームディレクトリを簡単に指定できるようにし、また先頭の ‘/:’ を除去することで、リテラルの ‘~’ や ‘/:’ で始まる相対名を指定できるようにしています。引用符付きファイル名 を参照してください。MS-Windows では、このコマンドは MS Windows Vista 以降でのみ動作します。new がリモートにある場合は、システムの種類に応じて動作します。