コピー・移動・削除
前提:1-2が完了し、ホームディレクトリにいる状態から始めます。~/practiceの中には、1-2で作ったmemoディレクトリ(todo.txt・idea.txt入り)と、uni/report/2024/economics.txtというファイルが残っています。このページではcpでファイルやディレクトリをコピーし、mvで移動したり名前を変えたりし、rmで削除します。Linuxのrmにはゴミ箱がありません。削除したファイルは基本的に復元できないので、この感覚をこのページでしっかり体に入れておきましょう。
このページではSET 1〜3、合計30行のコマンドを上から順に叩きます。すべて~/practiceの中だけで完結する、安全な練習です。手打ち推奨(コピーは確認用)で、ページの最後には練習で作ったものをきれいに片付けます。
SET 1 ― cpでコピーする
- $cd ~/practice
- $ls -R
- $cp uni/report/2024/economics.txt memo/
- $ls memo
- economics.txt idea.txt todo.txt
- $ls -l memo/economics.txt
- -rw-rw-r-- 1 ubuntu ubuntu 0 Jul 3 10:20 memo/economics.txt
- $cp memo/economics.txt memo/economics_bk.txt
- $ls memo
- economics.txt economics_bk.txt idea.txt todo.txt
- $cp uni memo
- cp: -r not specified; omitting directory 'uni'
- $cp -r uni memo/uni_copy
- $ls -R memo
1行目で~/practiceに移動し、2行目のls -Rで1-2から引き継いだ構造を確認します。3行目のcp(copyの略)は「コピー元」「コピー先」の順に指定します。cp uni/report/2024/economics.txt memo/で、深い階層にあったファイルをmemoディレクトリの直下にコピーしました。4行目のls memoで、確かにコピーされたことが確認できます。memoには1-2で作ったtodo.txt・idea.txtもそのまま残っているので、コピーしたeconomics.txtと合わせて3つ表示されます。
5行目のls -l memo/economics.txtは、コピーしたファイル1つだけを指定して詳細を見る使い方です。ls -lはディレクトリだけでなく、ファイルを直接指定してもその1件の詳細情報を表示できます。コピー直後なのでサイズは元のファイルと同じ0バイトのままです。
6行目のcp memo/economics.txt memo/economics_bk.txtのように、コピー先に新しい名前を指定すると、同じディレクトリ内に別名でコピー(いわゆるバックアップ)を作ることもできます。7行目のls memoで、economics_bk.txtが増えているのがわかります。
8行目でcp uni memoとディレクトリをそのままコピーしようとすると、出力例のように-r not specified; omitting directoryというエラーになります。cpは標準ではファイル1つ1つしかコピーできず、ディレクトリごとコピーするには9行目のように-r(recursive※1、再帰的の意味)を付ける必要があります。cp -r uni memo/uni_copyで、uniフォルダを中身ごとmemo/uni_copyという名前でコピーできました。10行目のls -R memoで、report/2024/economics.txtまで階層ごと複製されていることを確認します。
「ディレクトリを丸ごと扱いたいのにエラーになる」ときは、大抵-rの付け忘れです。cpだけでなく、この先出てくるrm -rでも同じルールが登場します。

レポート提出前に_bkとか_backupって名前でコピーを取っておくの、あたしも大学時代よくやってた! cp元ファイル 元ファイル名_bk.拡張子 の形、覚えておくと地味に安心感あるよ。
SET 2 ― mvで移動・改名する
- $pwd
- /home/ubuntu/practice
- $ls memo
- economics.txt economics_bk.txt idea.txt todo.txt uni_copy
- $mv memo/economics_bk.txt memo/economics_old.txt
- $ls memo
- economics.txt economics_old.txt idea.txt todo.txt uni_copy
- $mkdir archive
- $mv memo/economics_old.txt archive/
- $ls archive
- economics_old.txt
- $ls memo
- economics.txt idea.txt todo.txt uni_copy
- $mv memo/uni_copy archive/uni_backup
- $ls -R archive
1行目のpwdで、SET 1に引き続き~/practiceにいることを確認してから始めます。3行目のmv(moveの略)はcpと同じ「元」「先」の順で指定しますが、コピーではなく実体を移動させます。mv memo/economics_bk.txt memo/economics_old.txtのように、同じ場所のまま名前だけを変える使い方をすると、それは「改名」になります。Linuxには専用のリネームコマンドはなく、mv1つで移動と改名の両方をこなします。
5行目でarchiveという保管用ディレクトリを作り、6行目のmv memo/economics_old.txt archive/で、今度は別の場所へ実体を移す使い方をしています。cpと違い元の場所にはファイルが残らないため、8行目のls memoを実行するとeconomics_old.txtはもう表示されません(todo.txt・idea.txtはまだ触っていないのでそのまま残っています)。
9行目のmv memo/uni_copy archive/uni_backupのように、移動と改名は1回のコマンドで同時に行うこともできます。memoにあったuni_copyディレクトリが、archiveの中にuni_backupという新しい名前で移動しました。10行目のls -R archiveで、ディレクトリごと中身も一緒に移動していることが確認できます。mvはディレクトリの移動に-rを必要としない点もcpとの違いです。
mvは「行き先を同じ場所にすれば改名、別の場所にすれば移動」という1つのルールで動いています。コピーではなく実体そのものが動くため、元の場所には何も残らない点を意識してください。
SET 3 ― rmで削除する(ゴミ箱はない)
- $ls memo
- economics.txt idea.txt todo.txt
- $rm memo/economics.txt
- $ls memo
- idea.txt todo.txt
- $rm memo/todo.txt memo/idea.txt
- $rmdir memo
- $rm -i archive/economics_old.txt
- rm: remove regular file 'archive/economics_old.txt'? y
- $rm -r archive
- $rm -r uni
- $ls -R ~/practice
- $cd ~
1行目のls memoで確認すると、memoの中には1-2でtouchで作ったtodo.txt・idea.txtと、SET 1でコピーしたeconomics.txtの3つが残っています。2行目のrm(removeの略)でまずeconomics.txtを削除します。実行しても何も表示されず、3行目のls memoで確認するとファイルが消えています。ここが重要な点ですが、Windowsやスマホと違い、Linuxのrmには「ゴミ箱」がありません。削除した瞬間にデータは失われ、原則として元に戻せません。
4行目のrm memo/todo.txt memo/idea.txtで、memoの中に最後まで残っていたtodo.txtとidea.txtもまとめて削除します。rmもスペース区切りで複数のファイルを一度に指定できます。これでmemoの中身は完全に空になったので、5行目のように1-2で習ったrmdirでmemo自体を削除できます。rmdirは空のディレクトリしか消せないというルールを覚えていれば、「先に中身を空にしてからrmdir」という順番が自然に理解できるはずです。
6行目のrm -iの-iはinteractive※2(対話的)の意味で、削除する前に「本当に消していいですか」と1件ずつ確認してくれるオプションです。出力例のようにremove regular file '...'?と聞かれるので、消してよければy(yes)、やめるならnを入力してEnterを押します。取り返しがつかないrmだからこそ、慣れないうちは-iを付ける習慣をおすすめします。
7〜8行目のrm -rは、cp -rと同じ考え方で、ディレクトリを中身ごと再帰的に削除します。rmdirと違い、中に何が入っていても問答無用で消えるため、-rを付けるときは対象のパスを打ち間違えていないか、実行前に指差し確認する癖をつけてください。9行目のls -R ~/practiceで中身が空になったことを確認し、10行目のcd ~でホームディレクトリへ戻ってこのページを締めくくります。~/practice自体は次のページ以降も使い続けるので、削除せずに空のまま残しておきます。

あたし最初のころ、rm -rで消すディレクトリ名を打ち間違えて、消したくなかったフォルダを消しかけたことあるよ……ゴミ箱ないから本当に焦った! それ以来rm -rを打つ前は必ずlsで「今から消すのはこれで合ってる?」って指差し確認するようにしてる。地味だけどこれ一番大事なコツだよ。
rmにゴミ箱はありません。特にrm -rは取り返しがつかないので、実行前に「今の場所はどこか(pwd)」「消す対象は何か(ls)」を確認する習慣をつけましょう。迷ったらrm -iやrm -riで確認しながら消すのも安全な手です。
まとめ
1-3では、~/practiceの中でファイルとディレクトリをコピー・移動・改名・削除する一連の操作を体験しました。ページの最後には練習ファイルをすべて片付け、~/practiceは空のディレクトリとして残しています。このページで叩けるようになったコマンドを一覧にまとめます。
| コマンド | 何をするか | 覚え方 |
|---|---|---|
cp <元> <先> | ファイルをコピーする | copy(コピー) |
cp -r <元> <先> | ディレクトリを中身ごとコピーする | recursive(再帰的に丸ごと) |
mv <元> <先> | ファイル/ディレクトリを移動する、または改名する | move(動かす。行き先が同じ場所なら改名) |
rm <名前> | ファイルを削除する(ゴミ箱なし) | remove(消す。復元不可) |
rm -r <名前> | ディレクトリを中身ごと削除する | recursive(再帰的に丸ごと消す) |
rm -i <名前> | 1件ずつ確認しながら削除する | interactive(対話的に聞いてくれる) |
次のページ「1-4. ファイルの中身を見る」では、既存の設定ファイルを~/practiceにコピーして、cat・less・head・tailで中身をのぞく練習をします。