Linux基本コマンド入門

入門 | 60分 で読める | 2025.12.02

このチュートリアルで学ぶこと

  • ディレクトリの移動と確認
  • ファイルとディレクトリの操作
  • ファイルの内容表示
  • 基本的なファイル検索

LinuxとUNIXの歴史

なぜLinuxを学ぶのか

Linuxは世界のサーバーの**約96%**で稼働し、スマートフォン(Android)、スーパーコンピュータ、IoTデバイスまで、あらゆる場所で使われています。エンジニアにとって、Linuxのコマンドライン操作は必須スキルです。

UNIXの誕生

現在のLinuxコマンドのルーツは1969年に遡ります。ベル研究所のKen ThompsonとDennis RitchieによってUNIXが開発されました。

「UNIXは、プログラマがプログラマのために作ったOSである」— Brian Kernighan

Linuxの誕生

1991年、フィンランドの大学生Linus Torvaldsが、UNIXに互換性のある無料のOSカーネルを開発しました。彼の有名な投稿:

「こんにちは、minixを使っているみなさん。私は386(486)AT互換機用の(フリーな)OSを作っています」— Linus Torvalds, 1991

UNIX哲学

UNIXの設計思想は現代のソフトウェア開発にも大きな影響を与えています:

  1. 小さなプログラムを組み合わせる: 一つのことをうまくやるプログラムを作り、それらを組み合わせる
  2. テキストストリーム: プログラム間の通信にはテキストを使う
  3. 早期のプロトタイピング: まず動くものを作り、改善していく

「これがUNIXの哲学だ。一つのことをうまくやるプログラムを書け」— Doug McIlroy

ターミナルとシェル

ターミナルとは

ターミナル(端末エミュレータ)は、コマンドラインインターフェースを提供するアプリケーションです。

  • macOS: Terminal.app、iTerm2
  • Windows: Windows Terminal、PowerShell
  • Linux: GNOME Terminal、Konsole

シェルとは

シェルは、ユーザーのコマンドを解釈してOSに伝えるプログラムです。

シェル説明
bash最も一般的。Linux/macOSのデフォルト(旧macOS)
zshmacOS Catalina以降のデフォルト。bash互換
fishユーザーフレンドリーな機能が豊富
shPOSIX標準シェル。移植性が高い
# 現在使っているシェルを確認
echo $SHELL

ディレクトリ操作の基本

pwd - 現在地を確認

pwd(Print Working Directory)で、今いるディレクトリを確認できます。

$ pwd
/home/username

豆知識: UNIXでは、ディレクトリも「ファイル」として扱われます。ディレクトリは「ファイルへのリンクを含む特殊なファイル」です。

ls - ファイル一覧を表示

lsでディレクトリ内のファイルを一覧表示します。

# 基本的な一覧表示
$ ls

# 詳細表示(パーミッション、サイズなど)
$ ls -l

# 隠しファイルも表示
$ ls -a

# 詳細 + 隠しファイル
$ ls -la

# 人間が読みやすいサイズ表示
$ ls -lh

ls -lの出力を読む

-rw-r--r--  1 user group  4096 Jan  1 12:00 file.txt
部分意味
-ファイルタイプ(-:通常, d:ディレクトリ, l:リンク)
rw-r--r--パーミッション(owner/group/others)
1ハードリンク数
user所有者
group所有グループ
4096ファイルサイズ
Jan 1 12:00更新日時

公式ドキュメント: GNU Coreutils - ls

cd - ディレクトリを移動

# 指定ディレクトリに移動
$ cd /var/log

# ホームディレクトリに戻る
$ cd ~
$ cd

# 一つ上のディレクトリに移動
$ cd ..

# 直前のディレクトリに戻る
$ cd -

パスの種類

種類説明
絶対パスルート(/)から始まる完全なパス/home/user/docs
相対パス現在地からの相対的なパス./docs または ../other

特殊なディレクトリ表記:

  • . - 現在のディレクトリ
  • .. - 親ディレクトリ
  • ~ - ホームディレクトリ
  • / - ルートディレクトリ

ファイル・ディレクトリの作成と削除

mkdir - ディレクトリ作成

# ディレクトリを作成
$ mkdir myproject

# 深い階層を一度に作成(-p: parents)
$ mkdir -p myproject/src/components

# 作成と同時にパーミッションを設定
$ mkdir -m 755 secure_dir

ベストプラクティス: 複数階層を作成するときは必ず-pオプションを使う。存在するディレクトリに対してもエラーにならない。

touch - ファイル作成

touchは本来「ファイルのタイムスタンプを更新する」コマンドですが、ファイルが存在しない場合は空のファイルを作成します。

# 空のファイルを作成
$ touch index.html

# 複数ファイルを一度に作成
$ touch style.css script.js

# タイムスタンプを特定の日時に設定
$ touch -t 202501011200 file.txt

公式ドキュメント: GNU Coreutils - touch

rm - ファイル・ディレクトリ削除

# ファイルを削除
$ rm file.txt

# ディレクトリを削除(中身も含めて)
$ rm -r mydir

# 確認なしで削除(注意!)
$ rm -rf mydir

# 削除前に確認を表示
$ rm -i file.txt

警告: rm -rfは確認なしで即座に削除されます。ゴミ箱には入りません。特に/近くでの使用や変数展開(rm -rf $DIR/)には細心の注意を払いましょう。

安全な削除のためのベストプラクティス

# 1. まずlsで確認
ls /path/to/delete

# 2. -iオプションで確認しながら削除
rm -ri /path/to/delete

# 3. エイリアスを設定(~/.bashrcに追加)
alias rm='rm -i'

ファイルのコピーと移動

cp - コピー

# ファイルをコピー
$ cp original.txt copy.txt

# ディレクトリをコピー(-r: recursive)
$ cp -r mydir mydir_backup

# 複数ファイルをディレクトリにコピー
$ cp file1.txt file2.txt destination/

# タイムスタンプとパーミッションを保持
$ cp -p original.txt copy.txt

# 上書き確認
$ cp -i source.txt dest.txt

公式ドキュメント: GNU Coreutils - cp

mv - 移動・リネーム

mvはファイルの移動とリネームの両方に使います。

# ファイルを移動
$ mv file.txt /path/to/destination/

# ファイル名を変更
$ mv oldname.txt newname.txt

# ディレクトリを移動
$ mv mydir /path/to/destination/

# 上書き確認
$ mv -i source.txt dest.txt

ファイル内容の表示

コマンド説明使用例
catファイル全体を表示cat file.txt
head先頭N行を表示(デフォルト10行)head -n 20 file.txt
tail末尾N行を表示tail -f log.txt
lessページャーで表示(スクロール可能)less file.txt
more古いページャーmore file.txt

catの応用

# 行番号を表示
$ cat -n file.txt

# 複数ファイルを結合
$ cat file1.txt file2.txt > combined.txt

# 空行を圧縮
$ cat -s file.txt

lessの操作

lessはファイルを対話的に閲覧できます:

  • Space / f - 1ページ進む
  • b - 1ページ戻る
  • /pattern - 前方検索
  • ?pattern - 後方検索
  • n - 次の検索結果
  • N - 前の検索結果
  • g - ファイル先頭へ
  • G - ファイル末尾へ
  • q - 終了

豆知識: lessという名前は「less is more」(より少ないほうがより多い)から。moreコマンドの改良版です。

tail -f でログ監視

# リアルタイムでログを監視
$ tail -f /var/log/syslog

# 複数ファイルを同時に監視
$ tail -f file1.log file2.log

# 最新の100行から監視開始
$ tail -n 100 -f app.log

パーミッション(権限)の基本

パーミッションの読み方

-rwxr-xr--
部分意味
-ファイルタイプ
rwxowner(所有者): すべて許可
r-xgroup(グループ): 読み取り+実行
r--others(その他): 読み取りのみ
記号数値意味
r4読み取り(read)
w2書き込み(write)
x1実行(execute)
-0権限なし

chmod - パーミッション変更

# 数値で指定(755 = rwxr-xr-x)
$ chmod 755 script.sh

# 記号で指定
$ chmod u+x script.sh    # 所有者に実行権限を追加
$ chmod g-w file.txt     # グループから書き込み権限を削除
$ chmod o=r file.txt     # その他に読み取り権限のみ設定
$ chmod a+r file.txt     # 全員に読み取り権限を追加

公式ドキュメント: GNU Coreutils - chmod

よく使うパーミッション

パーミッション用途
755実行可能スクリプト
644通常のファイル
600機密ファイル(SSHキーなど)
700プライベートディレクトリ

実践: プロジェクト構造を作成

学んだコマンドを使って、Webプロジェクトの基本構造を作成してみましょう。

# プロジェクトディレクトリを作成
mkdir -p mywebsite/{css,js,images}

# 基本ファイルを作成
touch mywebsite/index.html
touch mywebsite/css/style.css
touch mywebsite/js/main.js

# 構造を確認
ls -R mywebsite

# treeコマンドがあればより見やすく表示
tree mywebsite

実践的なプロジェクトセットアップ

# Node.jsプロジェクトの作成例
mkdir -p my-app/{src/{components,utils,styles},tests,docs}
touch my-app/{package.json,README.md,.gitignore}
touch my-app/src/index.js

# 構造確認
tree my-app
# my-app
# ├── README.md
# ├── docs
# ├── package.json
# ├── src
# │   ├── components
# │   ├── index.js
# │   ├── styles
# │   └── utils
# └── tests

よくある間違いとトラブルシューティング

スペースを含むファイル名

# 間違い: ファイル名がスペースで分割される
$ rm my file.txt  # "my" と "file.txt" を削除しようとする

# 正解: クォートで囲む
$ rm "my file.txt"
$ rm 'my file.txt'

# または、バックスラッシュでエスケープ
$ rm my\ file.txt

権限エラー

# Permission denied エラーの場合
$ sudo command  # 管理者権限で実行

# ファイルの権限を確認
$ ls -l file.txt

# 実行権限がない場合
$ chmod +x script.sh

ファイルが見つからない

# ファイルを検索
$ find /path -name "filename"

# 部分一致で検索
$ find . -name "*.txt"

# locateコマンド(データベースを使用、高速)
$ locate filename

便利なショートカットとコツ

ターミナルショートカット

ショートカット説明
Tabコマンドやパスの自動補完
Ctrl + C実行中のコマンドを中断
Ctrl + L画面をクリア(clearと同じ)
Ctrl + A行頭へ移動
Ctrl + E行末へ移動
Ctrl + Uカーソル左側を削除
Ctrl + Kカーソル右側を削除
Ctrl + Rコマンド履歴を検索
/ コマンド履歴を表示
!!直前のコマンドを再実行

コマンドの組み合わせ

# パイプ(|): コマンドの出力を次のコマンドの入力に
$ ls -la | grep ".txt"

# リダイレクト(>): 出力をファイルに保存
$ ls > filelist.txt

# 追記(>>): ファイルに追記
$ echo "new line" >> file.txt

# コマンドの連結
$ mkdir newdir && cd newdir  # 成功時のみ次を実行
$ command1 || command2       # 失敗時に次を実行
$ command1 ; command2        # 順番に実行

次のステップ

基本コマンドをマスターしたら、次はシェルスクリプトを学んで作業を自動化しましょう。

参考リンク

公式ドキュメント

推奨書籍・記事

チートシート・ツール

← 一覧に戻る