Linuxファイル操作入門【基礎編】
Linuxでの実務作業において、ファイル操作は最も頻繁に使用するスキルです。この基礎編では、cp、mv、rm、catといった基本コマンドを、危険な落とし穴や間違えやすいポイントと併せて安全に学習できます。
⚠️ 重要な注意
この記事で扱うコマンドにはデータを完全に削除する危険な操作が含まれます。実環境での作業前に、必ず安全な練習環境で十分に練習してください。
1. cp - 安全で確実なファイルコピー術
cpコマンドは「copy」の略で、ファイルやディレクトリをコピーします。実務ではバックアップ作成や環境構築で頻繁に使用される重要なコマンドです。
基本構文
cp [オプション] コピー元 コピー先
📄 基本的なファイルコピー
$ cp original.txt backup.txt
original.txtをbackup.txtという名前でコピー
📁 ディレクトリへのコピー
$ cp document.pdf ~/Documents/
document.pdfをDocumentsディレクトリにコピー
⭐ 実務で必須のオプション
🔒 -i(interactive):上書き確認
実務では必須のオプション。既存ファイルを上書きする前に確認を求めます。
$ cp -i source.txt target.txt overwrite target.txt? (y/n)
💡 プロのコツ:aliasでcp='cp -i'と設定し、常に確認されるようにする
📂 -r(recursive):ディレクトリの再帰コピー
ディレクトリとその中身をすべてコピーします。
$ cp -r project_folder/ backup_folder/
注意:大きなディレクトリをコピーする場合は時間がかかります。事前にサイズを確認しましょう。
$ du -sh project_folder/
📊 -v(verbose):詳細表示
コピー処理の詳細を表示。何がコピーされているか確認できます。
$ cp -v *.txt backup/ 'file1.txt' -> 'backup/file1.txt' 'file2.txt' -> 'backup/file2.txt'
🕒 -p(preserve):属性保持
タイムスタンプや権限を保持してコピー。バックアップ時に重要。
$ cp -p important.log backup_important.log
🎯 実務でよく使う組み合わせ
📄 安全なファイルバックアップ
$ cp -ivp config.conf config.conf.backup
解説:確認(-i)、詳細表示(-v)、属性保持(-p)で安全にバックアップ
📁 プロジェクト全体の複製
$ cp -rvp project/ project_backup/
解説:再帰(-r)、詳細(-v)、属性保持(-p)でプロジェクト全体をコピー
🎯 設定ファイルのテンプレート作成
$ cp sample.conf.template actual.conf
解説:テンプレートから実際の設定ファイルを作成
⚠️ よくある間違いと落とし穴
❌ 間違い:ディレクトリコピーで-rを忘れる
$ cp folder/ backup/ cp: -r not specified; omitting directory 'folder/'
正解:cp -r folder/ backup/
❌ 間違い:上書き確認なしで重要ファイルを破壊
$ cp temp.txt important.txt # important.txtが上書きされる!
正解:cp -i temp.txt important.txt
2. mv - ファイル移動・リネームの実践テクニック
mvコマンドは「move」の略で、ファイルの移動とリネームを行います。cpと違い、元ファイルは削除されるため、より注意深い操作が求められます。
基本構文
mv [オプション] 移動元 移動先
🏷️ ファイルのリネーム
$ mv old_name.txt new_name.txt
ファイル名をold_name.txtからnew_name.txtに変更
📁 ファイルの移動
$ mv document.pdf ~/Documents/
document.pdfをDocumentsディレクトリに移動
⭐ 実務で重要なオプション
🔒 -i(interactive):上書き確認
mvでも上書き確認は必須。移動先にファイルが存在する場合の事故を防げます。
$ mv -i source.txt target.txt overwrite target.txt? (y/n)
📊 -v(verbose):詳細表示
何が移動されたかを確認。特に複数ファイルを扱う時に便利。
$ mv -v *.log archive/ 'access.log' -> 'archive/access.log' 'error.log' -> 'archive/error.log'
🚫 -n(no-clobber):上書き禁止
既存ファイルを絶対に上書きしたくない場合に使用。
$ mv -n temp.txt important.txt # important.txtが存在する場合は何もしない
🎯 実務でよく使うパターン
🗂️ ファイルの整理・分類
# 拡張子別にファイルを分類 $ mv *.jpg images/ $ mv *.pdf documents/ $ mv *.txt text_files/
📅 日付付きファイル名への変更
$ mv report.txt report_$(date +%Y%m%d).txt
結果:report.txt → report_20250111.txt
🔄 バックアップファイルの作成・移動
# 現在の設定をバックアップしてから新しい設定に置換 $ mv config.conf config.conf.old $ mv new_config.conf config.conf
🛡️ mv使用時の安全対策
1. 事前確認の習慣
# 移動前に対象ファイルを確認 $ ls -la source_files/ $ ls -la destination/ # 移動実行 $ mv -iv source_files/* destination/
2. 重要ファイルのバックアップ
# 重要ファイルは移動前にバックアップ $ cp -p important.txt important.txt.backup $ mv important.txt new_location/
3. 重要操作は段階実行
# 一度に大量移動せず、少しずつテスト $ mv -v file1.txt backup/ # まず1つだけ $ mv -v file*.txt backup/ # 成功したら残り
3. rm - 削除の基本とrm -rfの恐怖
rmコマンドは「remove」の略で、ファイルやディレクトリを削除します。一度削除すると基本的に復元不可能なため、Linuxで最も危険なコマンドの一つです。
基本構文
rm [オプション] ファイル/ディレクトリ
📄 基本的なファイル削除
$ rm file.txt
ファイルを削除(通常は確認なし)
🚨 rm -rf : システム破壊級の危険コマンド
rm -rf は「核兵器」レベルの危険性があります。1つの間違いでシステム全体を破壊可能です。
💀 実際に起きた災害事例
- GitLabの12時間データ消失事件:管理者のrm -rf誤実行
- Pixar社のトイストーリー2消失:rm -rf * の誤実行
- 多数の企業でのDB全削除:スクリプトの変数ミス
⚡ 特に危険なパターン
$ rm -rf / # システム全体を削除 $ rm -rf /* # ルート配下をすべて削除 $ rm -rf $HOME # ホームディレクトリ全削除 $ rm -rf ./* # 現在のディレクトリ全削除
🛡️ 安全なrm使用法
🔒 -i(interactive):削除前確認
rm使用時は必須。各ファイル削除前に確認を求めます。
$ rm -i file.txt remove file.txt? (y/n)
📂 -r(recursive):ディレクトリ削除
ディレクトリとその中身を削除。必ず-iと組み合わせる。
$ rm -ri old_project/
絶対に避けるべき:rm -rf(確認なし再帰削除)
📊 -v(verbose):削除内容表示
何が削除されているかを表示。安全確認に重要。
$ rm -iv *.tmp removed 'temp1.tmp' removed 'temp2.tmp'
🚨 rm使用前の必須チェック
削除前の安全確認手順
- 現在の場所を確認
$ pwd
- 削除対象を明確に確認
$ ls -la target_files*
- 重要ファイルの存在確認
# 重要ファイルが含まれていないか確認 $ ls -la | grep important
- バックアップの存在確認
$ ls -la *.backup
- 段階的削除の実行
# まず1つだけテスト削除 $ rm -iv test_file.txt # 問題なければ残りを削除 $ rm -iv other_files*
💡 rmより安全な代替手段
🗑️ ゴミ箱への移動(trash-cli)
完全削除ではなく、ゴミ箱に移動。復元可能。
# trash-cliのインストール(Ubuntu/Debian) $ sudo apt install trash-cli # ファイルをゴミ箱に移動 $ trash file.txt # ゴミ箱の内容確認 $ trash-list # ゴミ箱から復元 $ trash-restore
📁 削除用ディレクトリへの移動
削除前に専用ディレクトリに移動。手動確認後に削除。
# 削除用ディレクトリの作成 $ mkdir ~/.to_delete # ファイルを削除用ディレクトリに移動 $ mv unwanted_files* ~/.to_delete/ # 後で確認してから実際に削除 $ rm -ri ~/.to_delete/*
🛡️ システム保護のための追加対策
エイリアス設定で安全性向上
# ~/.bashrcに追加 alias rm='rm -i' alias cp='cp -i' alias mv='mv -i'
重要ディレクトリの保護
# 重要ディレクトリを読み取り専用に $ chmod -w important_directory/
4. cat・less・more - ファイル内容表示の使い分け
ファイル内容を表示するコマンドは複数ありますが、それぞれ異なる特性と適切な使用場面があります。実務ではファイルサイズや目的によって適切に使い分けることが重要です。
cat - シンプルな全内容表示
catは「concatenate」の略で、ファイルの内容を連結して表示します。
📄 基本的なファイル表示
$ cat config.txt
ファイルの全内容を一気に表示
⚠️ cat使用時の注意点
大きなファイルにはcatを使わない!
$ cat huge_log.txt # 危険!ターミナルがフリーズ
数MB以上のファイルでは、ターミナルがフリーズしたり、システムが重くなる可能性があります。
less - プロが愛用する高機能ビューア
lessは、ファイルをページ単位で閲覧できる高機能なコマンドです。
📊 大きなファイルの安全な閲覧
$ less large_file.log
ページ単位で内容を表示、メモリ効率が良い
less内での操作キー
| キー | 動作 | 実務での使用頻度 |
|---|---|---|
Space または f |
次のページ | ★★★ |
b |
前のページ | ★★★ |
/文字列 |
前方検索 | ★★★ |
?文字列 |
後方検索 | ★★ |
n |
次の検索結果 | ★★★ |
N |
前の検索結果 | ★★ |
g |
ファイルの先頭 | ★★ |
G |
ファイルの末尾 | ★★★ |
q |
終了 | ★★★ |
使い分けのガイドライン
📝 catを使う場合
- 小さな設定ファイル(100行以下)
- ファイルの全内容を他のコマンドに渡したい場合
- 複数ファイルを連結したい場合
$ cat small_config.txt $ cat file1.txt file2.txt > combined.txt
📊 lessを使う場合
- 大きなログファイルの閲覧
- ファイル内で検索したい場合
- メモリを節約したい場合
- viのような操作感が欲しい場合
$ less /var/log/system.log $ less +G access.log # 末尾から表示
🗺️ moreは使う必要なし
moreはlessの下位互換で、現在ではほぼ使用されていません。常にlessを使用しましょう。
💡 ファイル閲覧のプロテクニック
ファイルサイズの事前確認
# catする前にサイズを確認 $ ls -lh large_file.txt -rw-r--r-- 1 user group 50M Jan 11 10:00 large_file.txt # 50MBなのでlessを使用 $ less large_file.txt
リアルタイムログ監視との組み合わせ
# 最新のログをlessで確認後、tail -fで監視 $ less +G /var/log/app.log # 末尾から表示 # qで終了後 $ tail -f /var/log/app.log # リアルタイム監視