cp コマンドは、コピー元を残したままファイルとディレクトリをコピーします。基本構文は次のとおりです。
cp [OPTIONS] SOURCE DESTINATION
コマンドライン · レッスン 10
上書きと属性の保持を制御しながら、ファイルやディレクトリツリーをコピーする方法を学びます。
cp コマンドは、コピー元を残したままファイルとディレクトリをコピーします。基本構文は次のとおりです。
cp [OPTIONS] SOURCE DESTINATION
1 ファイルを別のパスへコピーする、複数ファイルをディレクトリへコピーする、ディレクトリツリーを再帰的にコピーするといった使い方ができます。
コピー元を先、コピー先を後に置きます。
$ cp mycoolfile /home/pete/Documents/cooldocs
/home/pete/Documents/cooldocs が既存ディレクトリなら、その中に mycoolfile としてコピーが作られます。新しいコピー先ファイル名を指定することもできます。
$ cp mycoolfile /home/pete/Documents/mycoolfile_backup
2 番目の例では、コピーしたデータに mycoolfile_backup という名前が付きます。
draft.txt を残したまま、final.txt というファイルへコピーするコマンドはどれですか?
すべてのコピー元を先に並べ、コピー先ディレクトリを最後に置きます。
$ cp report.txt notes.txt summary.txt /home/pete/Documents/
コピー元が複数ある場合、最後の引数はディレクトリでなければなりません。
a.txt と b.txt を既存の archive/ ディレクトリへコピーするコマンドはどれですか?
シェルはワイルドカードパターンを複数のコピー元パスへ展開できます。
*:任意の文字列に一致する?:任意の 1 文字に一致する[]:ブラケット内のいずれか 1 文字に一致するたとえば、現在のディレクトリで名前が .jpg で終わるファイルを Pictures へコピーします。
$ cp *.jpg /home/pete/Pictures
特にコピー先に重要なデータがある場合、一括コピーの前に一致結果を確認します。
$ ls *.jpg
beach.jpg lunch.jpg profile.jpg
$ cp *.jpg /home/pete/Pictures
*.jpg をコピーする前に、パターンが現在一致する隠しファイル以外の名前を表示するコマンドはどれですか?
ディレクトリとその下のすべてをコピーするには、再帰操作が必要です。-r または -R を使います。
$ cp -r Pumpkin/ /home/pete/Documents
これは Pumpkin ディレクトリとその子孫を Documents へコピーします。
大文字の -R も再帰的なコピーを要求します。
$ cp -R website /home/pete/backups/
アーカイブモードの -a は、バックアップ形式のコピーに便利です。再帰的にコピーしながら、リンクや多数のファイル属性を保持します。
$ cp -a project/ project-backup/
project/ を再帰的にコピーし、リンクと多数の属性を保持するバックアップ形式のコピーには、どのコマンドが適していますか?
既定では、cp は既存のコピー先ファイルを置換できます。上書き前に確認するには -i を使います。
$ cp -i mycoolfile /home/pete/Pictures
cp: overwrite '/home/pete/Pictures/mycoolfile'? n
既存のコピー先を上書きしない場合は -n を使います。
$ cp -n mycoolfile /home/pete/Pictures
-f は GNU cp に対し、既存のコピー先を書き込み用に開けない場合、その削除を試してコピーを再試行するよう指示します。対象を慎重に確認する代わりにはなりません。シェルのエイリアスが -i などのオプションを追加することもあるため、予期しないプロンプトが出たら設定を決めつけず調べてください。
report.txt を backup/ へコピーし、同名のコピー先が存在すれば飛ばすコマンドはどれですか?
-p でコピー元のモード、許可される場合は所有権、タイムスタンプを保持します。
$ cp -p mycoolfile /home/pete/backups/
コピー先が存在しないか、コピー元の方が新しい場合だけコピーするには -u を使います。
$ cp -u *.txt /home/pete/Documents/
そのほかの一般的なオプションには次のものがあります。
-f:必要なら先にコピー先を削除し、上書きを強制する-v:コピーする各ファイルを表示するファイルとディレクトリツリーのコピーを練習するには、次のハンズオンラボを利用してください。
cp、mv、rm でプロジェクト構造を整理し、ファイルを移動して不要なディレクトリを片付けます。レッスン完了
これでコピー先の扱いを制御しながら、ファイルとディレクトリツリーをコピーできるようになりました。
コピー元オペランドをコピー先より前に置く。
一括コピー前にワイルドカードの一致結果を確認する。
ディレクトリツリーを再帰的またはアーカイブモードでコピーする。
既存のコピー先を確認、飛ばす、意図的に置換する。
必要に応じて属性を保持するか、新しいコピー元だけをコピーする。