Ubuntu コマンド逆引きチートシート

# Ubuntu コマンド逆引きチートシート

Ubuntuを使っていると、「こういう操作がしたいけど、どのコマンドを使えばいいのだろう？」と思うことが多いかもしれません。  
ここでは、よくある目的ごとに逆引きができるよう、各種コマンドをまとめています。  
基本的なfile操作からエラー対応まで、幅広くカバーしました。  
ぜひ参考にしてみてください。

---

## 目次
1. [fileやfolderを操作したい](#1-fileやfolderを操作したい)  
2. [fileの中身を見たい・編集したい](#2-fileの中身を見たい編集したい)  
3. [packageを管理したい](#3-packageを管理したい)  
4. [networkの状態を調べたい](#4-networkの状態を調べたい)  
5. [processやsystemの状態を見たい](#5-processやsystemの状態を見たい)  
6. [圧縮・解凍したい](#6-圧縮解凍したい)  
7. [storage関連（HDDのmount・容量調査）](#7-storage関連hddのmount容量調査)  
8. [apt関連のerror対応](#8-apt関連のerror対応)  
9. [おまけ：VSCodeを入れたい！](#9-おまけvscodeを入れたい)

---

## 1. fileやfolderを操作したい

### 基本操作
- **ls**: directory内のfileやfolderを一覧表示  
  - `ls -l` … 詳細情報（permissionやsizeなど）を表示  
  - `ls -a` … 隠しfileも含めて表示
- **cd**: directoryを移動  
  - `cd /home/user/Downloads` のようにフルパスで移動  
  - `cd ..` で一つ上のdirectoryに戻る
- **mkdir**: 新しいfolderを作成  
  - `mkdir new_folder` で `new_folder` を作る  
  - `mkdir -p parent/child` で存在しない親folderも同時作成
- **rm**: fileを削除  
  - `rm filename` … 単純にfileを消去  
  - `rm -r foldername` … folderを含め再帰的に削除（中身も全部消える）  
  - `rm -i filename` … 削除確認の対話を挟む
- **cp**: fileやfolderをcopy  
  - `cp file1 file2` … `file1` を `file2` としてcopy  
  - `cp -r dir1 dir2` … folderをまとめてcopy
- **mv**: fileやfolderをmove、またはrename（名前変更）  
  - `mv old_name new_name` … rename  
  - `mv file /path/to/destination/` … 指定場所へmove
- **find**: fileやfolderを検索  
  - `find /path -name "filename"` … 該当名を探す  
  - `find / -type f -size +10M` … size条件などで検索

---

## 2. fileの中身を見たい・編集したい

### 表示系
- **cat**: fileの中身をそのまま表示  
  - `cat filename`
- **less**: pageをめくるように閲覧  
  - `less filename` … 上下キーでスクロール
- **tail** / **head**: 末尾・先頭をチェック  
  - `tail filename` … file末尾10行を表示  
  - `head filename` … file先頭10行を表示  
  - `tail -f filename` … リアルタイムで更新をモニターするのに便利

### 編集系
- **nano**: 簡単なeditor  
  - `nano filename` … 開いて編集  
  - Ctrl+Oで上書き保存、Ctrl+Xで終了
- **vim**: 高機能editor  
  - `vim filename` … fileを開いて編集  
  - iキーで入力モード、`:wq` で保存して終了

---

## 3. packageを管理したい

Ubuntuでsoftwareを導入・管理するときによく使うcommandです。  
標準的には **apt** を使います。

- **apt update**: 利用可能なpackageの一覧（リポジトリ情報）を更新  
- **apt upgrade**: インストール済みのsoftwareを一括で最新versionに更新  
- **apt install**: 新規softwareのインストール  
  - `apt install package_name`
- **apt remove**: 不要になったsoftwareのアンインストール  
- **apt autoremove**: 使われなくなった依存packageをまとめて削除  
- **dpkg**: packageを直接操作する低レベルのcommand  
  - `dpkg -i package.deb` … ダウンロードした`.deb`ファイルをインストール  
  - `dpkg -r package_name` … アンインストール

---

## 4. networkの状態を調べたい

インターネットに接続できない、あるいは通信が遅いなどのtroubleを調べたいときに便利です。

- **ip**: networkインタフェースの状態をチェック  
  - `ip addr show` … IPアドレスやインタフェース情報を表示  
  - `ip route` … ルーティングテーブルを確認
- **ping**: 接続先と疎通テスト  
  - `ping example.com` … 名前解決と応答時間をチェック
- **traceroute**: パケットがどの経路を通って相手サーバへ行くかを表示  
  - インストールには `sudo apt install traceroute`
- **netstat** / **ss**: 接続中や待ち受け中のportなどを見る  
  - `netstat -tuln` … リスニングportを表示  
  - `ss -tuln` … 上記と同様だがより新しいcommand
- **nslookup** / **dig**: DNS名前解決を調べる  
  - `nslookup example.com`  
  - `dig example.com`

---

## 5. processやsystemの状態を見たい

「どのprocessがCPUやmemoryを大量に使っているか知りたい」といった場面で活躍します。

- **top** / **htop**: CPUやmemory使用率をリアルタイム監視  
  - `top` は標準搭載  
  - `htop` は機能が多いが別途インストールが必要
- **ps**: 現在のprocess一覧  
  - `ps aux` … 全processをユーザやCPU利用率と併せて表示
- **kill**: processを終了させる  
  - `kill PID` … 指定したPIDのprocessに終了シグナルを送る  
  - `kill -9 PID` … 強制終了
- **free**: memoryの使用状況を表示  
  - `free -h` … MBやGB単位でわかりやすく表示
- **df**: disk容量の使用状況を表示  
  - `df -h` … 各partitionの空き容量と合計容量を表示
- **uname -a**: OSバージョンやkernel情報を表示  
- **uptime**: システムの稼働時間とロードアベレージ（平均負荷）を表示

---

## 6. 圧縮・解凍したい

大容量のfileをまとめたり、backupを取るときに役立ちます。

- **tar**: 複数fileやfolderをひとまとめにしてarchive  
  - `tar cvf archive.tar folder/` … `folder/`を`archive.tar`に固める  
  - `tar xvf archive.tar` … 解凍  
  - `tar czvf archive.tar.gz folder/` … gzip圧縮でまとめる
- **zip / unzip**: Windows環境でもよく使われる形式  
  - `zip archive.zip file1 file2` … 複数fileをまとめてzip化  
  - `unzip archive.zip` … 解凍

---

## 7. storage関連（HDDのmount・容量調査）

### 容量調査

- **df -h**: 各ファイルシステムの空き容量・使用量を把握  
- **du**: 指定したdirectoryの容量を確認  
  - `du -sh *` … 当該directory配下のfolderやfileサイズをまとめて表示

### mount操作

- **lsblk**: デバイスやpartitionを一覧表示  
- **mount**: デバイスをdirectoryに割り当て（mount）  
  - `sudo mount /dev/sdb1 /mnt/usb` … `/dev/sdb1`を`/mnt/usb`にmount  
- **umount**: mount解除  
  - `sudo umount /mnt/usb` … マウントしていたディレクトリを解除

---

## 8. apt関連のerror対応

apt実行時に「依存関係が壊れています」などのerrorが出る場合があります。  
以下のcommandで解決することが多いです。

- **sudo apt --fix-broken install**  
  - 不足や破損している依存packageを修正しながらinstall
- **sudo dpkg --configure -a**  
  - 途中で中断されたpackage設定などを再実行

ほかにも「リポジトリのキーが期限切れ」などでエラーが起きるケースがあります。  
その際は、表示されるエラーメッセージに沿ってキーを再登録する、リポジトリを再設定するなどを行うと解決しやすいです。

---

## 9. おまけ：VSCodeを入れたい！

ソースコードの編集やテキスト編集に便利なVisual Studio Codeを導入する処理の流れです。  
MicrosoftのGPGキーを取り込み、リポジトリを追加してからインストールします。

```bash
# MicrosoftのGPGキーとリポジトリ追加
wget -qO- https://packages.microsoft.com/keys/microsoft.asc | gpg --dearmor > packages.microsoft.gpg
sudo install -o root -g root -m 644 packages.microsoft.gpg /etc/apt/trusted.gpg.d/
sudo sh -c 'echo "deb [arch=amd64] https://packages.microsoft.com/repos/code stable main" > /etc/apt/sources.list.d/vscode.list'

# 更新とインストール
sudo apt update
sudo apt install code