【Linux入門】cp・mv・rmの使い方 - ファイル操作を安全に行う方法

はじめに

リナ: ライニー先輩、ファイルをコピーしようとしたら、なんか上書きしちゃったみたいで...
ライニー先輩: あらら、それは焦るよね。Linuxのファイル操作は便利だけど、ちょっとしたミスで大事なファイルを消しちゃうこともあるんだ。
リナ: え、怖い...どうすれば安全に操作できるんですか?
ライニー先輩: 大丈夫、ポイントを押さえれば安全に使えるよ。今日はcpmvrmの3つのコマンドを、事故を防ぐ方法と一緒に覚えていこう。

目次

  1. 練習環境を用意しよう
  2. cp:ファイルをコピーする
  3. mv:ファイルを移動・リネームする
  4. rm:ファイルを削除する
  5. ミニ課題
  6. 振り返り
  7. 今日の3行まとめ

練習環境を用意しよう

ライニー先輩: まずは練習用のディレクトリを作ろう。大事なファイルを間違って消さないように、専用の場所で練習するのが基本だよ。
$ mkdir -p ~/practice/file-ops
$ cd ~/practice/file-ops
$ pwd
/home/user/practice/file-ops
リナ: mkdir -p-pって何ですか?
ライニー先輩: 途中のディレクトリがなくても、まとめて作ってくれるオプションだよ。practiceディレクトリがなくても、一気にpractice/file-opsを作れるんだ。

cp:ファイルをコピーする

ライニー先輩: cpは「copy」の略で、ファイルをコピーするコマンドだよ。

基本の使い方

$ echo "Hello Linux" > original.txt
$ cp original.txt copy.txt
$ ls
copy.txt  original.txt
リナ: お、copy.txtができました!
ライニー先輩: cp コピー元 コピー先の順番だね。元のファイルはそのまま残るよ。

上書き事故を防ぐ:-i オプション

ライニー先輩: ここからが大事。cpは同じ名前のファイルがあると、確認なしで上書きしちゃうんだ。
リナ: え、それで私のファイルが...!
ライニー先輩: そう、だから-iオプションをつける習慣をつけよう。「interactive(対話的)」の略で、上書き前に確認してくれるよ。
$ cp -i original.txt copy.txt
cp: overwrite 'copy.txt'? 
リナ: おお、聞いてくれた!yで上書き、nでキャンセルですね。
ライニー先輩: その通り。常にcp -iを使うのが安全だよ。

ディレクトリをコピーする:-r オプション

ライニー先輩: ディレクトリをコピーするときは-rオプションが必要だよ。「recursive(再帰的)」の略で、中身ごとコピーしてくれる。
$ mkdir mydir
$ touch mydir/file1.txt mydir/file2.txt
$ cp -r mydir mydir-backup
$ ls mydir-backup
file1.txt  file2.txt

cpコマンドのポイント

  • cp コピー元 コピー先 - 基本形
  • cp -i - 上書き確認(安全のため常に使う)
  • cp -r - ディレクトリをコピー

mv:ファイルを移動・リネームする

ライニー先輩: mvは「move」の略。ファイルの移動と名前変更、両方に使えるよ。

ファイル名を変更する

$ mv copy.txt renamed.txt
$ ls
mydir  mydir-backup  original.txt  renamed.txt
リナ: copy.txtrenamed.txtになりました!
ライニー先輩: mvは移動先がファイル名なら「リネーム」、ディレクトリなら「移動」になるんだ。

ファイルを移動する

$ mv renamed.txt mydir/
$ ls mydir
file1.txt  file2.txt  renamed.txt
リナ: renamed.txtmydirの中に移動しました。

上書き事故を防ぐ:-i オプション

ライニー先輩: mvcpと同じく、同名ファイルがあると上書きしちゃう。だから-iオプションをつけよう。
$ mv -i original.txt mydir/

mvの注意点

mvは「移動」なので、元の場所からファイルがなくなります。「消えた!」と焦る前に、移動先を確認しましょう。

mvコマンドのポイント

  • mv 元 先 - 移動またはリネーム
  • mv -i - 上書き確認(安全のため常に使う)
  • 移動先がディレクトリなら移動、ファイル名ならリネーム

rm:ファイルを削除する

ライニー先輩: rmは「remove」の略で、ファイルを削除するコマンドだよ。これが一番注意が必要
リナ: どうしてですか?
ライニー先輩: Linuxには「ゴミ箱」がないんだ。rmで消したファイルは、基本的に復元できない。
リナ: ひえっ...慎重にやります。

基本の使い方

$ touch delete-me.txt
$ ls
delete-me.txt  mydir  mydir-backup
$ rm delete-me.txt
$ ls
mydir  mydir-backup

削除前に確認:-i オプション

ライニー先輩: rmこそ-iオプションが大事。削除前に確認してくれるよ。
$ touch test.txt
$ rm -i test.txt
rm: remove regular empty file 'test.txt'? 
リナ: yで削除、nでキャンセルですね。
ライニー先輩: うん。初心者のうちは常にrm -iを使おう

ディレクトリを削除する:-r オプション

$ rm -r mydir-backup
$ ls
mydir
リナ: ディレクトリも消えました。
ライニー先輩: -rは中身ごと削除するから、使う前にlsで中身を確認するのがおすすめだよ。

危険:rm -rf は使わない

rm -rfは確認なしで強制削除するコマンドです。初心者は絶対に使わないでください。間違ったディレクトリを指定すると、大事なファイルがすべて消えてしまいます。

rmコマンドのポイント

  • rm ファイル名 - ファイルを削除
  • rm -i - 削除前に確認(常に使う)
  • rm -r - ディレクトリを中身ごと削除
  • rm -rfは使わない

ミニ課題

ライニー先輩: じゃあ、今日学んだことを実際に試してみよう!

課題1:ファイルを安全にコピーしよう

やることmemo.txtというファイルを作成し、memo-backup.txtという名前でコピーしてください。上書き確認オプションをつけること。

ヒントを見る

echoでファイルを作成し、cp-iオプションを使ってコピーしよう。

解答例を見る
$ echo "大事なメモ" > memo.txt
$ cp -i memo.txt memo-backup.txt
$ ls
memo-backup.txt  memo.txt  mydir

課題2:ファイルを移動してリネームしよう

やることmemo.txtmydirディレクトリに移動し、さらにimportant.txtという名前に変更してください。

ヒントを見る

mvコマンドを2回使うか、移動とリネームを組み合わせて1回で行う方法もあるよ。

解答例を見る
$ mv -i memo.txt mydir/
$ mv -i mydir/memo.txt mydir/important.txt
$ ls mydir
file1.txt  file2.txt  important.txt  original.txt  renamed.txt

または1回で:

$ mv -i memo.txt mydir/important.txt

課題3:不要なファイルを安全に削除しよう

やることmemo-backup.txtを削除してください。削除前に確認が出るようにすること。

ヒントを見る

rm-iオプションを使おう。確認が出たらyで削除、nでキャンセルできるよ。

解答例を見る
$ rm -i memo-backup.txt
rm: remove regular file 'memo-backup.txt'? y
$ ls
mydir

振り返り

リナ: なるほど、-iオプションをつければ、上書きや削除の前に確認が出るんですね!
ライニー先輩: そう、それが一番大事なポイント。cp -imv -irm -iを習慣にすれば、ほとんどの事故は防げるよ。
リナ: あと、rmはゴミ箱がないから特に注意、ですね。
ライニー先輩: うん。操作前にlsで確認する習慣もつけると、さらに安全だね。

今日の3行まとめ

  1. cp -iでファイルをコピー、-rでディレクトリをコピー
  2. mv -iでファイルを移動・リネーム
  3. rm -iで削除(rm -rfは使わない)

実践でファイル操作をマスターしよう

今日学んだコマンドを、Penguin Gym Linuxの実践課題で手を動かして定着させましょう。