1. ホーム
  2. コース一覧
  3. LinuC Level1 v10.0 対策コース(パート1)
  4. Linuxコマンド [mv/cp編]

中級

LinuC Level1 v10.0 対策コース(パート1)

LinuC Level1 v10.0 対策コース(パート1)15/39

Linuxコマンド [mv/cp編]

Linuxを操作する上で欠かせない「ディレクトリ・ファイル」を取り扱うコマンドについて解説します。

ディレクトリ・ファイルの移動と複製

今回学ぶのはmvcpの2つのコマンドです。これらを学ぶことにより、ディレクトリやファイルの移動と複製ができるようになります。

mvコマンドとは

mvはディレクトリやファイルを別のディレクトリへ移動したり、ディレクトリ名やファイル名を変更する際に使用するコマンドです。

基本的な使い方

mv [オプション] [移動させたいディレクトリ(またはファイル)名] [移動先のディレクトリ名] 

主なオプション

オプション説明
-f移動先に同名のファイルがある場合、強制的に移動(上書き)されます。
-i移動先に同名のファイルがある場合、確認メッセージが表示されます。
-b移動により上書き(削除)されるファイルのバックアップを作成します。
-n移動先に同名のディレクトリ(またはファイル)がある場合は、処理を実行しません。
-v移動処理を行う際の詳細情報を表示します。

mvコマンドはディレクトリやファイルの中身は変更せず、名前だけを変更することもできます。 その際、新しく指定するディレクトリ名(またはファイル名)は、そのディレクトリに存在しない名前でなければなりません。既存の名前を指定してしまうと、そのディレクトリやファイルが対象ディレクトリ・ファイルの内容で上書きされてしまうので注意が必要です。

# ファイル名をファイル1からファイル2へ変更します。
mv [ファイル1] [ファイル2]

ファイルを任意のディレクトリに移動する場合には、移動先のディレクトリ名の後ろに/.をつけることで、より安全に作業を行えます。この/.の指定により、移動先がディレクトリであることを明示的に示すことができ、存在しないディレクトリ名が指定された場合に、予期しないリネーム操作を防ぐことができます。 この/.には「ディレクトリ直下の」という意味があります。もし/.を付けずに上記のコマンドを指示し、且つhogehogeディレクトリが存在していなかった場合、hoge.txtファイルはhogehogeというファイルにリネームされるという挙動をとります。

例:

#hoge.txtをhogehogeディレクトリに移動
mv hoge.txt hogehoge/.

cpコマンドとは

cpは既存のファイルを複製する(コピー)際に使用するコマンドです。

基本的な使い方

cp [オプション] [コピー元ファイル] [コピー先ファイル]

主なオプション

オプション説明
-iコピーによって上書きされるファイルがある場合、確認メッセージを表示します。
-vコピーの実行内容を表示します。
-nコピー先に既に同名のファイルが存在する場合、処理を中断します。
-fコピー先に同名のファイルが存在していても、強制的にコピー(上書き)を実行します。
-bコピー(上書き)時にバックアップファイルが作成されます。
-rディレクトリ内を再帰的にコピーします。
-p所有者・属性・更新日時など元ファイルのものを保持します。

コピー先にディレクトリを指定する場合は、コピー元ファイルの後にコピー先ディレクトリを指定します。

cp [オプション] [コピー元ファイル] [コピー先ディレクトリ]

再帰的にコピーする

-rオプションを使用してディレクトリをコピーすると、その中にある全ての子ディレクトリやファイルを含めてコピーすることが出来ます。

cp -r [コピー元ディレクトリ] [コピー先ディレクトリ]

「再帰的」は、ある条件が満たされた場合に、その処理が自分自身を呼び出し繰り返すことを指します。cpコマンドの場合、-rオプションを使用すると、指定したディレクトリ内のすべてのサブディレクトリやファイルをコピーすることが可能になります。このとき、コピー処理は各ディレクトリやファイルに対して一つずつ実行され、それぞれの処理が終わるごとに、次に処理対象となる要素がコピー対象であるかどうかを判断します。コピー対象であると判断された場合、処理は再度自分自身を呼び出し、これを繰り返すことで全ての要素をコピーします。このような処理のことを「再帰的」と言います。

cpコマンドの場合は-rオプションをつけることで、対象のディレクトリの中身全てをコピーすることが出来ます。この時、対象をコピーをする処理が各ディレクトリもしくはファイルに対して行われるわけですが、処理自体は一つの処理を何度もループします。そして処理が終わるごとに次に対象としている物がコピーする対象であるか判断され、対象だった場合はもう一度自分自身を呼び出します。これを再帰的と言います。

まとめ

Linuxでディレクトリやファイルの移動・複製をする際に使用するコマンドについて学習しました。ここで紹介したコマンド以外にも、各コマンドには様々なオプションや使い方があります。

問題を解くためには、十分な画面サイズのPC環境をご利用下さい。