Linuxコマンド逆引き大全

## 1. 基本コマンド

### 現在の日時を知りたい

```bash
date
```

### カレンダーを見たい（今月、または特定の月・年）

```bash
cal [月] [年]
# 例：2025年6月のカレンダー
cal 6 2025
```

### 画面をキレイにしたい

```bash
clear
```

### 今いるディレクトリのパスを表示したい

```bash
pwd
```

### ディレクトリ内のファイル一覧を見たい

```bash
ls
```

### ディレクトリの階層構造を再帰的に見たい

```bash
ls -R [ディレクトリ]
# 例：ホームディレクトリの階層を表示
ls -R ~
```

---

## 2. ファイル操作

### 新しい空ファイルを作りたい

```bash
touch newfile.txt
```

### ファイルの中身を全部見たい

```bash
cat filename.txt
```

### ファイルをページ送りで読みたい

```bash
less filename.txt
```

* スペース：次ページ
* b：前ページ
* /文字列：検索
* q：終了

### ファイルの最後の数行だけ表示したい

```bash
tail -n 10 logfile.log
```

### ファイルを編集したい

```bash
vi filename.txt
# 保存して終了: :wq
# 保存せず終了: :q!
```

### ファイルをコピーしたい

```bash
cp -i source.txt dest.txt
```

### 複数ファイルをディレクトリにコピーしたい

```bash
cp -i file1.txt file2.txt /backup/
```

### ファイルの名前を変えたい（移動も可能）

```bash
mv -i oldname.txt newname.txt
```

### ファイルを削除したい

```bash
rm -i unwanted.txt
```

### ファイルを検索したい（高速検索）

```bash
locate filename.txt
# ※事前に plocate のインストールと sudo updatedb が必要
```

### findコマンドで細かくファイルを探す

```bash
# ファイル名を指定
find /home/user -name "*.txt"

# ディレクトリだけを指定
find /var -type d

# ファイルだけを指定
find /var/log -type f

# サイズが○MBより大きいファイル
find ~ -size +10M

# ○日以内に更新されたファイル
find ~ -mtime -7
```

---

## 3. ディレクトリ操作

### ディレクトリを作りたい

```bash
mkdir newfolder
```

### 親ディレクトリもまとめて作りたい

```bash
mkdir -p parent/child
```

### 空ディレクトリを削除したい

```bash
rmdir emptyfolder
```

### 中身も含めてディレクトリを削除したい（確認あり）

```bash
rm -ri oldfolder
```

### ディレクトリを移動したい

```bash
cd /var/log
```

---

## 4. データベース更新

ファイル検索のデータベースを最新にしたいとき

```bash
sudo updatedb
```

---

## 5. ファイル権限・所有者管理

### ファイルの権限を確認したい

```bash
ls -l report.txt
# -rw-r--r-- 1 alice developers 2048 Jan 22 10:30 report.txt
```

### ファイル権限を変更したい

```bash
chmod u+x script.sh   # 所有者に実行権限を追加
chmod g-w file.txt    # グループの書き込み権限を削除
chmod o=r file.txt    # その他のユーザーの権限を読み取りのみに設定
```

### 所有者を変更したい

```bash
sudo chown alice report.txt
```

### 所有者とグループを同時に変更したい

```bash
sudo chown alice:developers report.txt
```

### ディレクトリ以下の所有者とグループをまとめて変更したい

```bash
sudo chown -R alice:developers /home/alice
```

### rootユーザーに切り替えたい

```bash
su -
```

### sudoで管理者権限で実行したい

```bash
sudo command
```

### ユーザーにsudo権限を付与したい

```bash
sudo usermod -aG sudo alice
```

---

## 6. ユーザー管理

### ユーザーを作りたい

```bash
sudo useradd bob
```

### ユーザーとホームディレクトリを作成したい

```bash
sudo useradd -m carol
```

### ユーザーを削除したい

```bash
sudo userdel bob
```

### ユーザーとホームディレクトリを削除したい

```bash
sudo userdel -r carol
```

### ホームディレクトリのバックアップを作りたい

```bash
sudo tar czf /backup/alice_home.tar.gz /home/alice
```

### パスワードを設定・変更したい

```bash
sudo passwd alice
```

### パスワードの有効期限を設定したい

```bash
sudo chage -M 90 alice
```

### パスワードの状態を確認したい

```bash
sudo chage -l alice
```

### パスワードを期限切れにしたい

```bash
sudo passwd -e alice
```

### ユーザーアカウントをロック・アンロックしたい

```bash
sudo passwd -l alice   # ロック  
sudo passwd -u alice   # アンロック
```

### ユーザーが所属するグループを見たい

```bash
groups alice
```

### ユーザー情報を確認したい

```bash
id alice
```

---

## 7. グループ管理

### グループを作成したい

```bash
groupadd developers
```

### グループを削除したい

```bash
sudo groupdel developers
```

### グループ名を変更したい

```bash
sudo groupmod -n devs developers
```

### グループにパスワードを設定したい

```bash
sudo gpasswd devs
```

### グループ情報を確認したい

```bash
cat /etc/group
```

### 既存グループにユーザーを追加したい

```bash
sudo usermod -aG devs alice
```

### ユーザーのプライマリグループを変更したい

```bash
sudo usermod -g devs alice
```

### グループからユーザーを削除したい

```bash
sudo gpasswd -d alice devs
```

---

## 8. プロセス管理

### 実行中のプロセスを見たい

```bash
ps
```

### システム全体のプロセスを詳細に見たい

```bash
ps aux
```

### 特定のプロセスを名前で検索したい

```bash
pgrep sshd
```

### プロセスの親子関係を表示したい

```bash
ps f
```

### プロセスを停止したい（PID指定）

```bash
kill 1234
```

### 名前でプロセスを停止したい

```bash
killall firefox
```

### プロセスを一時停止したい

```bash
kill -STOP 1234
```

### 一時停止したプロセスを再開したい

```bash
kill -CONT 1234
```

### 優先度を指定してプロセスを起動したい

```bash
nice -n 10 ./myscript.sh
```

### 実行中のプロセスの優先度を変更したい

```bash
renice 5 1234
```

### コマンドをバックグラウンド実行したい

```bash
./longtask.sh &
```

### 一時停止したジョブをバックグラウンドに移動したい

```bash
bg
```

### バックグラウンドジョブ一覧を見たい

```bash
jobs
```

### バックグラウンドの出力をファイルにリダイレクトしたい

```bash
./longtask.sh > output.log 2>&1 &
```

### シグナル送信ショートカット

* `Ctrl + C`：実行中プロセスに割り込み (SIGINT)
* `Ctrl + Z`：実行中プロセスを一時停止 (SIGTSTP)
* `Ctrl + \`：強制終了＋コアダンプ (SIGQUIT)