Blog 入門

【新卒向け】コマンドライン入門 - ターミナルの基本操作

GUIで済むのに、なぜエンジニアはCLIを使うのか。再現性・自動化・サーバー運用という理由から始めて、シェルの正体、カレントディレクトリのメンタルモデル、場面別の最小コマンドセット、パイプとリダイレクトまで、概念から順番に解説する新卒向け入門です。

10 min read Updated: 2026.07.08 [AI生成]

なぜ今どき、コマンドラインなのか

黒い画面に文字を打ち込む操作は、一見すると時代遅れに見えます。ファイルのコピーも移動もエクスプローラーやFinderでできるのに、なぜエンジニアはわざわざコマンドライン(CLI)を使うのでしょうか。この疑問には最初に正面から答えておきます。理由は大きく3つあります。

1つ目は、手順がテキストとして残ることです。GUIで行った「このフォルダを開いて、ここを右クリックして……」という操作は、やった本人の記憶にしか残りません。コマンドラインなら、実行した内容がそのまま文字列として残ります。手順書に貼り付けられますし、同僚に送れば相手の環境でも同じ結果を再現できます。この「再現性」が、チームで動く実務では決定的に重要です。

2つ目は、自動化できることです。テキストで書ける手順は、ファイルに並べて書けばそのままプログラム(シェルスクリプト)になります。毎朝繰り返す10回のクリックは明日も10回のままですが、10行のコマンドは1つのスクリプトにまとめて一度で実行できます。

3つ目は、サーバーにはGUIがないことです。Webサービスが動いている本番サーバーの多くは、画面もマウスもない前提で運用されています。デスクトップ環境を動かすこと自体がリソースの無駄であり、攻撃対象を増やすことにもなるからです。エンジニアとして働く以上、サーバーに入って作業する日は必ず来ます。そのときの共通言語がコマンドラインです。

つまりCLIは「GUIの不便な代替品」ではなく、記録・自動化・遠隔操作に最適化された、もう1つのインターフェースです。

シェルとは何か - ターミナルとの違い

コマンドを打つ前に、用語を整理しておきます。

  • ターミナルは「文字を入出力するための窓」です。Windows Terminal、macOSのターミナル.appなどがこれにあたります。
  • シェルは「入力された文字列をコマンドとして解釈し、OSに実行を依頼するプログラム」です。ターミナルの内側で動いています。

ターミナルが画面で、シェルが中身、という関係です。ls と打ってファイル一覧が表示されるのは、シェルが入力を解釈して「ls というプログラムを実行してほしい」とOSに依頼し、返ってきた結果をターミナルに表示しているからです。

代表的なシェルは次の3つです。

  • bash: Linuxの標準。サーバー作業ではほぼ確実に出会います
  • zsh: macOSの標準。基本操作はbashとほぼ同じ感覚で使えます
  • PowerShell: Windowsの標準。設計思想が異なります(後述します)

この記事のコマンド例はbash/zshを前提にします。Windowsの方は後半の対応表を参照してください。

一番大事なメンタルモデル: 自分は常にどこかに「居る」

個々のコマンドを暗記する前に、これだけは押さえてください。シェルを操作している間、自分は常にディレクトリ階層のどこか1点に「居る」という感覚です。この現在地をカレントディレクトリと呼びます。

/                       ← ルート(階層の頂点)
└── home
    └── taro            ← ★いまここ(カレントディレクトリ)
        ├── documents
        │   └── report.txt
        └── projects

場所の指定方法は2通りあります。

  • 絶対パス: ルート / から書き下す住所です。例: /home/taro/documents/report.txt。どこに居ても同じ場所を指します。
  • 相対パス: 現在地から見た道順です。上の図の位置に居るなら documents/report.txt と書けます。現在地が変われば、指す先も変わります。

さらに、2つの特別な記号があります。

  • . はカレントディレクトリ自身
  • .. は1つ上のディレクトリ

cd .. が「上の階層へ移動」を意味するのは、.. が「1つ上」を指す記号だからです。「ドット2つ=上に戻る」と丸暗記するのではなく、記号の意味から理解しておくと ../..(2つ上)のような応用が自然に利きます。

GUIでフォルダを開いていく操作も実は同じ「移動」なのですが、GUIではウィンドウが現在地を常に見せてくれます。CLIでは現在地が見えないぶん、迷ったらまず現在地を確認するのが鉄則になります。

場面で覚える最小コマンドセット

コマンドは辞書のように暗記するものではなく、「〜したい」という場面とセットで覚えるものです。次の5つの場面をカバーすれば、日常のファイル操作は一通り成立します。各コマンドは「何をするか → 実行例 → 結果」の順で見ていきます。

場面1: いまどこに居て、何があるかを知る - pwd / ls

pwd(print working directory)は、カレントディレクトリの絶対パスを表示します。

pwd
/home/taro

ls(list)は、カレントディレクトリの中身を一覧表示します。

ls
documents  projects

ls -l で詳細情報(サイズ・更新日時・権限)付きに、ls -a で隠しファイル(名前が . で始まるファイル)も含めて表示されます。組み合わせて ls -la と書くことが多いです。

場面2: 移動する - cd

cd(change directory)は、カレントディレクトリを変更します。つまり「自分の居場所」を動かすコマンドです。

cd documents      # 相対パス: 現在地の下のdocumentsへ
cd /home/taro     # 絶対パス: どこに居てもこの場所へ
cd ..             # 1つ上へ
cd                # 引数なしはホームディレクトリへ戻る

移動したら pwd で現在地を確かめる癖をつけると、迷子になりません。

場面3: 作る - mkdir / touch

mkdir(make directory)はディレクトリを、touch は空のファイルを作ります。

mkdir practice
touch practice/memo.txt
ls practice
memo.txt

場面4: 中身を見る - cat

cat は、ファイルの中身をターミナルに出力します。

cat practice/memo.txt

長いファイルの場合は less ファイル名 を使うと1画面ずつ読めます(q キーで終了)。

場面5: 消す - rm(ここだけは慎重に)

rm(remove)はファイルを削除します。ディレクトリごと消すには -r(再帰)オプションを付けます。

rm practice/memo.txt
rm -r practice

ここで重要な警告です。CLIの削除にはゴミ箱がありませんrm で消したものは基本的に戻せません。GUIの「間違えたらゴミ箱から戻す」という安全網は存在しない、と考えてください。削除の前には必ず ls で対象を確認します。この習慣については最後の章でもう一度取り上げます。

CLIが真価を発揮する瞬間: パイプとリダイレクト

ここまでの操作は、GUIでもできることの置き換えでした。CLIにしかない強みは、あるコマンドの出力を、別のコマンドの入力に繋げられることです。

各コマンドは「入力を受け取り、出力を返す」小さな部品として設計されています。部品同士を |(パイプ)で繋ぐと、左側の出力が右側の入力へ流れ込みます。

例を見てみます。過去に実行したコマンドの履歴から、git を含むものだけを探したいとします。

history | grep git

history(履歴を全部出力する)の結果を、grep git(gitを含む行だけ通す)に流しています。「膨大な履歴を目で探す」作業が1行で終わります。

出力の行き先を画面からファイルに切り替えるのがリダイレクト > です。

ls -la > filelist.txt   # 一覧を画面ではなくファイルに保存

> は上書き、>> は末尾への追記です。「調査結果をファイルに残す」「ログから特定の行だけ抽出する」といった実務の作業は、この2つの記号と各コマンドの組み合わせでできています。単機能の部品を繋いで大きな仕事をさせる──これがUNIX系CLIの設計思想であり、覚えたコマンドが足し算ではなく掛け算で効いてくる理由です。

Windowsの読者へ: PowerShell対応早見表

WindowsのPowerShellはコマンド体系そのものが異なりますが、主要な操作には同名のエイリアス(別名)が用意されているため、ここまでのコマンドの多くはそのまま打てます。

やりたいことbash/zshPowerShell正式名短縮形
現在地の表示pwdGet-Locationpwd
一覧の表示lsGet-ChildItemls, dir
移動cdSet-Locationcd
ディレクトリ作成mkdirNew-Item -ItemType Directorymkdir
中身の表示catGet-Contentcat, type
削除rmRemove-Itemrm, del

注意点は2つです。第一に、コマンド名が同じでもオプションの書式は別物です(ls -la は通らず、隠しファイル表示は Get-ChildItem -Force になります)。第二に、パイプ | の考え方はPowerShellにもそのまま存在します(流れるのが文字列ではなくオブジェクトという違いはありますが、最初のうちは同じ感覚で使って問題ありません)。なお、仕事でLinuxサーバーを扱う予定があるなら、WSL(Windows Subsystem for Linux)でbashの環境を手元に用意しておくのが近道です。

壊さないための習慣

最後に、CLIで事故を起こさないための習慣を3つ挙げます。コマンドの知識量より、実務ではこちらのほうが大事です。

  1. 消す前に、同じ指定で ls するrm -r 対象 を打つ前に ls 対象 を実行し、何が消えるのかを目で確認します。削除の「ドライラン(予行演習)」として機能します。ツールによっては --dry-run という予行演習専用のオプションを持つものもあり、破壊的な操作の前に結果だけ先に見る、という考え方はCLI全般に通用します。
  2. rm -rf を安易にコピペしない-f は確認をすべて省略する強制オプションです。ネット上の手順に出てきても、対象パスが何を指すのか自分で説明できるまでは実行しないでください。変数の展開ミスやスペースの混入で対象が変わり、無関係なファイルを消してしまう事故は実際に起きています。
  3. Tab補完を常用する。ファイル名を途中まで入力してTabキーを押すと、残りが自動補完されます。入力が楽になるだけでなく、補完されない=そのパスは存在しない、というタイプミス検出の安全装置にもなります。

コマンドラインは暗記科目ではありません。「自分は常にどこかに居る」というメンタルモデルと、「部品を繋いで仕事をさせる」という設計思想さえ掴めば、個々のコマンドは場面ごとに調べながら手が覚えていきます。まずは今日ターミナルを開いて、pwd で自分の現在地を確かめるところから始めてみてください。

※ この記事はAIが自動生成したものです。本記事の内容は執筆時点の情報であり、正確性を保証するものではありません。ご利用の際は免責事項をご確認ください。

Share

Related / 関連記事

関連記事

Comments / コメント

コメント