第2章 Ubuntuの端末を使う

この章では、Ubuntu を使えるようにして、コマンドで移動したりディレクトリを作ったりします。第3章以降で使う AI 開発エージェントも uv も、すべてこの中で動きます。

本書は Ubuntu を 文字だけで操作します。デスクトップ画面やマウスは使いません。その理由と、そのための環境の作り方から始めます。

2.1 フロントマシンとUbuntu

本書の学習環境は、大きく2つの役割に分かれます。

フロントマシン は、いま使っているパソコンです。Windows でも macOS でもかまいません。ここでは、文字を打つための 端末アプリ を動かします。

Ubuntu は、Python を動かす側です。Windows や macOS と同じ基本ソフト(OS)の仲間で、その中でも Linux と呼ばれる種類のひとつです。無料で使えて、プログラムを動かす場所として広く使われています。

同じパソコンの中に用意することも、別の場所にあるサーバを使うこともできます。どちらの場合も、新しいパソコンを買う必要はありません。

本書が Ubuntu を使う理由は2つあります。ひとつは、AI 開発エージェントも uv も Linux で動かす前提の情報が多く、つまずいたときに調べやすいことです。もうひとつは、Linux が Web のサーバやクラウドで広く使われていて、ここで覚えた操作が先々そのまま使えることです。

図2-1が全体像です。

フロントマシンの端末アプリと Ubuntu のシェルが文字をやりとりし、Ubuntu 側にシェル・Python / uv・AI開発エージェントが置かれていることを示した図。フロントマシン(Windows / macOS)Ubuntu端末アプリシェルPython / uvAI開発エージェント 文字を送る文字を返す

図2-1: フロントマシンとUbuntuの関係

キーボードで打った文字が Ubuntu に届き、そこで処理された結果が文字として手元の画面に返ってきます。やりとりするのは文字だけです。画像も、ウィンドウも、マウスの位置も送りません。

この方式には利点が3つあります。

環境を選ばない。Windows でも macOS でも、手元にある端末アプリから同じ操作ができます。Ubuntu に入ってしまえば、そのあとの手順はフロントマシンの種類によらず同じです。

そのまま記録できる。打ったコマンドと結果は文字なので、コピーして人に渡せますし、AI に貼り付けて相談できます。第1章で決めた進め方は、この性質の上に成り立っています。

離れた場所でも同じ。手元の Ubuntu でも、遠くのサーバでも、つないでしまえば操作は同じです。学習のあとで会社のサーバやクラウドを使うことになっても、ここで覚えた操作がそのまま通用します。

なお、Ubuntu にはデスクトップ画面のある版もあります。本書がそれを使わないのは、上の3つの利点を保つためです。ファイルをマウスで並べ替える操作は、記録もできませんし、遠くのサーバでは使えません。

2.2 3つの用意のしかた

Ubuntu を用意する方法を、3つ紹介します。どれか1つを選んでください。

3つの位置関係を、図2-2に示します。

WSL と OrbStack は同じパソコンの中に Ubuntu を置き、ssh はネットワーク越しに別のサーバの Ubuntu へつなぐという、用意のしかた3通りの違いを並べた図。WSL(Windows)OrbStack(macOS)ssh 接続(どちらでも)同じパソコンの中同じパソコンの中手元のパソコン別のサーバUbuntuUbuntuUbuntu ネットワーク越し

図2-2: Ubuntu をどこに置くかの違い

必要なものと費用の違いを、表2-1にまとめます。

表2-1: Ubuntuを用意する3つの方法

WSL

OrbStack

リモート接続

フロントマシン

Windows

macOS

どれでも

Ubuntu の場所

同じパソコンの中

同じパソコンの中

別のサーバ

必要なもの

Windows 10(2004以降)か 11

OrbStack

接続先とアカウント

費用

無料

個人利用は無料

サーバの費用

本書での節

2.3

2.4

2.5

判断に迷ったら、次のように選んでください。

  • Windows を使っている → 2.3(WSL)

  • Mac を使っている → 2.4(OrbStack)

  • 会社や学校で用意された Ubuntu がある、または VPS を借りている → 2.5(ssh)

3つとも、つないだあとの操作は同じです。2.6 以降は、どれを選んでも共通の内容になります。

先に、画面例の見方だけ決めておきます。本書では、Ubuntu に入ったあとの画面を次のように表記します。

taro@ubuntu:~$

taro は利用者名、ubuntu はコンピュータの名前です。読者の画面では、この部分が自分の環境の名前になります。読み方は 2.6 で詳しく扱います。

Mac で Docker や Lima、Windows で Hyper-V の仮想マシンを使う方法もあります。本書がそれらを扱わないのは、手順を1つに絞るためで、優劣の判断ではありません。既に使い慣れた環境があるなら、それを使ってかまいません。必要なのは「Ubuntu のシェルに入れること」だけです。

2.3 Windows: WSLでUbuntuを用意する

WSL(Windows Subsystem for Linux)は、Windows の中で Linux を動かす仕組みです。Windows に組み込まれている機能なので、追加で買うものはありません。

必要な条件は2つです。

  • Windows 10 バージョン 2004 以降、または Windows 11

  • 管理者権限(インストール時のみ)

2.3.1 インストール

スタートメニューの検索欄に「PowerShell」と入力し、表示された結果を右クリックして「管理者として実行」を選びます。開いた画面に、次のコマンドを入力します。

wsl --install -d Ubuntu-24.04

必要な機能と Ubuntu 24.04 がまとめて入ります。終わったら、案内に従って Windows を再起動してください。

再起動後、スタートメニューに「Ubuntu 24.04」が増えています。最初に起動すると、Ubuntu の中で使う利用者名(Enter new UNIX username)とパスワード(New password)を続けて聞かれます。パスワードは確認のため2回入力します。

利用者名は半角英小文字にしてください。Windows のアカウント名と同じである必要はありません。パスワードは入力しても画面に何も表示されませんが、文字は受け付けられています。このパスワードは、あとで sudo を使うときに必要になります。

設定が終わると、プロンプトが表示されます。ここから先は、2.6 に進んでください。

2.3.2 2回目以降の起動

次のいずれかの方法で、Ubuntu に入れます。

  • スタートメニューの「Ubuntu 24.04」を開く

  • Windows Terminal を開き、タブ右側の下向き矢印から「Ubuntu 24.04」を選ぶ

  • PowerShell やコマンドプロンプトで wsl と入力する

Windows Terminal は Windows 11 に最初から入っています。Windows 10 では、Microsoft Store から入れられます。タブで複数の画面を開けるので、本書の作業には便利です。

2.3.3 状態の確認と終了

入っている Linux の一覧と状態は、PowerShell から確認できます。

wsl -l -v

Running と表示されていれば動いています。

Ubuntu の中で exit と入力すると、Windows の画面に戻ります。完全に止めたいときは、PowerShell から次を実行します。

wsl --shutdown

2.3.4 Windows 側のファイルの扱い

WSL からは、Windows のドライブが /mnt/c のように見えます。

ただし、本書の作業は Linux 側のホームディレクトリで行ってください(ホームディレクトリは 2.6 で説明します)。/mnt/c の下は Windows のファイルシステムなので、読み書きが遅くなり、権限の扱いも変わります。Python のプロジェクトを置く場所としては向きません。

2.4 macOS: OrbStackでUbuntuを用意する

OrbStack は、macOS で Linux のマシンや Docker のコンテナを動かすアプリです。個人利用は無料で、動作が軽いことが特徴です。

2.4.1 インストール

Homebrew(macOS 用のパッケージ管理ツール)を使っている場合は、次のコマンドで入ります。

brew install orbstack

使っていない場合は、orbstack.dev からダウンロードしてください。

インストールしたら、一度 OrbStack を起動しておきます。以降の操作は、macOS の「ターミナル」アプリから行います。

2.4.2 Ubuntu のマシンを作る

macOS のターミナルで、次のコマンドを実行します。

orb create ubuntu:24.04 rpg

rpg は、これから作るマシンの名前です。初回はイメージのダウンロードがあるため、少し時間がかかります。

できたかどうかは orb list で確認できます。

rpg                         running  ubuntu  noble    arm64  686.2 MB  192.168.139.89

左から、マシン名、状態、ディストリビューション、版のコードネーム、CPU の種類、使っている容量、IP アドレスです。running になっていれば使えます。noble は Ubuntu 24.04 のコードネームです。

ほかにマシンを作っていれば、その行も並びます。

2.4.3 Ubuntu に入る

次のコマンドで、Ubuntu のシェルに入ります。

orb -m rpg

-m は machine の頭文字で、どのマシンに入るかの指定です。マシンが1つだけなら orb だけでも入れます。

ここで、OrbStack 特有の動きがあります。

taro@rpg:/mnt/mac/tmp$ pwd
/mnt/mac/tmp
taro@rpg:/mnt/mac/tmp$ cd ~
taro@rpg:~$ pwd
/home/taro

入った直後の場所が /mnt/mac/tmp になっています。これは、macOS のターミナルで /tmp にいる状態から orb -m rpg を実行したためです。OrbStack は、macOS 側でいた場所を引き継いで Linux に入ります。/mnt/mac の下が macOS のファイルシステムです。

本書の作業は Linux 側のホームで行うので、入ったら cd ~ で移動してください。~ は 2.6 で説明するホームディレクトリです。

WSL の /mnt/c と同じ理由で、/mnt/mac の下にプロジェクトを置くことは避けます。

2.4.4 終了と再開

Ubuntu の中で exit と入力すると、macOS のターミナルに戻ります。マシン自体は動いたままなので、orb -m rpg でいつでも戻れます。

止めたいときは次のコマンドを使います。

orb stop rpg

止めても中身は残ります。orb start rpg で元の状態から再開できます。

ここから先は、2.6 に進んでください。

2.5 リモートのUbuntuにsshで接続する

すでに Ubuntu のサーバがある場合や、VPS(インターネット上に借りる仮想サーバ)を借りている場合は、ssh で接続します。

ssh は、離れたコンピュータのシェルを、暗号化した通信で操作する仕組みです。フロントマシンの種類は問いません。Windows 10 以降、macOS、Linux には、ssh のクライアントが最初から入っています。

必要な情報は3つです。

  • 接続先のアドレス(IP アドレスまたはホスト名)

  • 利用者名

  • パスワード、または鍵

2.5.1 接続する

端末アプリで、次のように入力します。

利用者名@アドレス という形です。

初めて接続するときは、次のように確認を求められます。

The authenticity of host '192.168.139.20 (192.168.139.20)' can't be established.
ED25519 key fingerprint is SHA256:157JhKRRp2cg8gj1Y+IZRmYY9JGUgwPqXkhA3JPwDHU.
This key is not known by any other names.
Are you sure you want to continue connecting (yes/no/[fingerprint])? yes
Warning: Permanently added '192.168.139.20' (ED25519) to the list of known hosts.
[email protected]'s password:
Welcome to Ubuntu 24.04.4 LTS (GNU/Linux 7.0.14-orbstack-00380-ga7e0a2dc9535 aarch64)

 * Documentation:  https://help.ubuntu.com
 * Management:     https://landscape.canonical.com
 * Support:        https://ubuntu.com/pro

To run a command as administrator (user "root"), use "sudo <command>".
See "man sudo_root" for details.

taro@ubuntu-server:~$ pwd
/home/taro

最初の質問は「この接続先を初めて見たが、本当につないでよいか」という確認です。初めての接続で表示されるのは正常な動作です。自分で用意した接続先か、管理者から教えられた接続先であれば、yes と入力してかまいません。

yes と入力すると、接続先の指紋が記録され、次回からは聞かれません。2回目以降に同じ質問が出たら、接続先が変わったか、通信の途中に第三者が割り込んでいる(中間者攻撃と呼ばれる状態の)可能性があります。心当たりがなければ、接続せずに管理者に確認してください。

次にパスワードを聞かれます。入力しても画面には何も表示されませんが、打てています。

そのあとに出るのが、Ubuntu の案内文とプロンプトです。プロンプトの ubuntu-server は接続先のコンピュータ名で、pwd の結果からわかるとおり、接続先のホームディレクトリにいます。

案内文の内容は接続先によって変わります。版の番号やカーネルの名前(GNU/Linux に続く部分)は、時期や接続先によって変わるので、同じ文字列が出なくても問題ありません。上の例は手元に用意した Ubuntu へ接続したもので、カーネルの名前にその環境の名前が出ています。

2.5.2 鍵で接続する

パスワードを毎回入力するのは手間ですし、安全でもありません。公開鍵認証 を使うと、鍵のファイルで本人確認ができます。

フロントマシンで鍵を作ります。

ssh-keygen -t ed25519

保存先とパスフレーズを聞かれます。保存先はそのまま Enter でかまいません。パスフレーズは、鍵を使うときの合言葉です。空でも動きますが、設定することをお勧めします。

作った鍵を、接続先に登録します。

ssh-copy-id [email protected]

一度だけパスワードを聞かれ、そのあとは鍵で接続できるようになります。

ssh-copy-id は macOS と Linux には入っていますが、Windows の ssh には付いていません。Windows から接続する場合は、PowerShell で鍵の中身を送り込みます。

type $env:USERPROFILE\.ssh\id_ed25519.pub | ssh taro@192.168.139.20 "mkdir -p ~/.ssh && chmod 700 ~/.ssh && cat >> ~/.ssh/authorized_keys && chmod 600 ~/.ssh/authorized_keys"

やっていることは ssh-copy-id と同じで、公開鍵を接続先の ~/.ssh/authorized_keys に書き足しています。

2.5.3 接続先で ssh が動いていない場合

Connection refused と表示される場合、接続先で ssh の受け付けが動いていません。接続先のコンピュータで、次のコマンドを実行します。

sudo apt install openssh-server
sudo systemctl enable --now ssh

VPS の多くは最初から動いています。自分で用意した Ubuntu では、必要になることがあります。

2.5.4 切断する

exit と入力すると切断されます。

taro@ubuntu-server:~$ exit
logout
Connection to 192.168.139.20 closed.

Connection to … closed. が、フロントマシン側に戻った合図です。

ここから先は、2.6 に進んでください。

ブラウザの中で端末を使う方法

ブラウザだけで端末を使う仕組みも、いくつか公開されています。代表的なものを挙げます。

  • ttyd: 手元の端末をブラウザに映す小さなプログラム

  • Wetty: ブラウザから ssh 接続するためのソフト

  • Shell In A Box: 古くからある同種のソフト。Ubuntu のパッケージにもある

  • Apache Guacamole: ssh のほか RDP や VNC もブラウザから扱えるゲートウェイ

  • Cockpit: Ubuntu のサーバ管理画面。端末のページを持つ

  • code-server: ブラウザで動くエディタ。組み込みの端末が使える

  • クラウド事業者の管理画面(AWS、Google Cloud、Azure など)に付属するブラウザ端末

いずれも、インターネットに直接さらすと危険です。シェルが使えるということは、そのコンピュータを操作できるということです。使う場合は、通信の暗号化(HTTPS)、認証の追加、接続元の制限を必ず行ってください。

本書はこれらを使いません。2.3 から 2.5 の方法のほうが、設定が少なく、安全に始められます。

2.6 プロンプトを読む

ここからは、どの方法で用意した場合でも共通です。

登場するものを整理しておきます。手元で文字を打つ窓が 端末アプリ、その文字を受け取って実行する Ubuntu 側の役目が シェル です。そのシェルが「入力を待っています」と教えてくれる合図が、これから説明する プロンプト です。

3つの登場人物の関係は、図2-3のとおりです。

手元の端末アプリが打った文字をシェルへ送り、シェルが結果を返し、入力待ちをプロンプトで知らせるという3者の関係の図。端末アプリ(手元で文字を打つ窓)シェル(Ubuntu 側で受け取って実行する)プロンプトtaro@ubuntu:~$ 打った文字を送る結果を返す入力待ちを知らせる

図2-3: 端末アプリ・シェル・プロンプトの関係

Ubuntu に入ると、次のような文字が表示されています。

taro@ubuntu:~$

分解すると、次の意味になります。

taro@ubuntu:~$
|    |      |+- 入力を待っている印
|    |      +-- いまいる場所
|    +--------- コンピュータの名前
+-------------- 使っている人の名前

taro は、2.3 から 2.5 で使うことになる利用者名です。ubuntu の部分は環境によって変わります。WSL なら Windows のコンピュータ名、OrbStack ならマシン名、リモート接続ならサーバの名前が入ります。

2.2 で触れたとおり、本書の画面例では taro@ubuntu:~$ と表記します。読者の画面では、この部分が自分の環境の名前になります。

~(チルダ)は ホームディレクトリ を表す記号です。キーボードのどこにあるかは配列によって違います。見つからないときは「チルダ 入力 Windows」「チルダ 入力 Mac」のように検索してみてください。その利用者専用の作業場所で、/home/taro のような場所にあります。Ubuntu に入った直後は、たいていここにいます。OrbStack だけは 2.4.3 のとおり別の場所から始まるので、cd ~ で移動してください。

$ の右側にカーソルがあり、ここに文字を打ちます。本書の画面例では、$ の右側が入力した文字、その下の行が結果です。

2.7 コマンドを入力する

入力するのは $ の右側だけです。taro@ubuntu:~$ の部分は端末が表示しているもので、打ち込む必要はありません。本書の画面例をそのまま写すときは、この点に注意してください。

コマンドを打って Enter を押すと、結果が表示され、次のプロンプトが出ます。試しに2つ打ってみます。

taro@ubuntu:~$ whoami
taro
taro@ubuntu:~$ date
2026年  9月  7日 月曜日 21:58:16 JST

whoami は使っている人の名前を、date は現在の日時を表示します。結果が1行返り、またプロンプトが出ました。これがコマンドの基本の形です。

date の表示が日本時間になっていない場合があります。サーバの時刻設定によるもので、学習には影響しません。

コマンドは、次の3つの部分でできています。

ls -l rpg
|  |  +-- 引数(対象)
|  +----- オプション(動作の指定)
+-------- コマンド名

オプションと引数は、ないこともあります。pwd のように、コマンド名だけで動くものもあります。

打ち間違えたときは、次のように表示されます。

taro@ubuntu:~$ pwdd
bash: pwdd: コマンドが見つかりません

「そんな名前のコマンドはない」という意味です。環境の言語設定によっては bash: pwdd: command not found と英語で表示されますが、意味は同じです。壊れたわけではないので、打ち直せば問題ありません。エラーが出たら、まずメッセージを読む。この習慣は、第13章で Python のエラーを読むときにそのまま使います。

2.8 pwdで現在地を確認する

pwd は、いまいる場所を表示します。print working directory の略です。

taro@ubuntu:~$ pwd
/home/taro

/home/taro が、いまいる場所です。ディレクトリの並びは図2-4のようになっています。

いちばん上の / の下に home があり、その下に taro(~)があるという階層の図。/(いちばん上)hometaro ← いまここ(~)

図2-4: /home/taro はどこにあるか

先頭の / から始まる書き方を 絶対パス といいます。どこから見ても同じ場所を指すので、迷ったときの基準になります。

プロンプトの ~ と、pwd が表示した /home/taro は同じ場所です。~ は短い表示、/home/taro は正式な表示だと考えてください。

作業していると、自分がどこにいるのかわからなくなることがあります。そのときは pwd を打ちます。迷ったら現在地を確認する、というだけの話ですが、この一手間がエラーの半分くらいを未然に防ぎます。

2.9 lsで一覧を表示する

ls は、いまいる場所にあるファイルとディレクトリを一覧します。

taro@ubuntu:~$ ls
taro@ubuntu:~$

何も表示されませんでした。用意したばかりのホームディレクトリには、まだ何もありません。エラーではなく、「表示するものがない」という結果です。

-a を付けると、隠しファイルも表示されます。

taro@ubuntu:~$ ls -a
.  ..  .bash_logout  .bashrc  .profile

名前が . で始まるものが出てきました。Linux では、名前の先頭が . のファイルは、ふだんは表示されません。設定ファイルを目立たせないための決まりです。

.bashrc と .profile は、シェルの設定ファイルです。第4章で uv をインストールしたときに、この .bashrc が書き換わります。

先頭にある . と .. は特別で、それぞれ「いまいるディレクトリ」と「ひとつ上のディレクトリ」を指します。.. は 2.11 で使います。

ls -l と打つと、更新日時や大きさを含む詳しい一覧になります。中身のあるディレクトリで見たほうがわかりやすいので、第5章でプロジェクトのファイルを作ってから確かめます。

2.10 mkdirでディレクトリを作る

mkdir は、新しいディレクトリを作ります。make directory の略です。

本書で使う作業場所を、ここで作っておきます。

taro@ubuntu:~$ mkdir rpg
taro@ubuntu:~$ ls
rpg

rpg ができました。

mkdir は、成功したときは何も表示しません。Linux のコマンドの多くは、うまくいったときは黙っています。結果を確かめたいときは ls を使います。

この ~/rpg が、本書を通じての作業場所です。第5章ではここに Python のプロジェクトを作り、第4部ではここでゲームを組み立てます。

2.11 cdで移動する

cd は、別のディレクトリへ移動します。change directory の略です。

taro@ubuntu:~$ cd rpg
taro@ubuntu:~/rpg$ pwd
/home/taro/rpg

プロンプトの ~ の部分が ~/rpg に変わりました。プロンプトは常に現在地を表示しているので、移動できたかどうかはここでも確認できます。

ひとつ上に戻るには .. を使います。

taro@ubuntu:~/rpg$ cd ..
taro@ubuntu:~$ pwd
/home/taro

cd rpg のように、いまいる場所を基準にした書き方を 相対パス といいます。一方、/ から書く絶対パスなら、どこにいても同じ場所へ移動できます。

taro@ubuntu:~$ cd /
taro@ubuntu:/$ pwd
/

/ は ルートディレクトリ で、すべての出発点です。ホームディレクトリもこの下にあります。位置関係は図2-5のとおりです。

ルート / の下に home・etc・usr が並び、home の下に taro(~)、taro の下に rpg があるディレクトリの木構造。/ (ルート)hometaro (= ~)rpgetcusr

図2-5: ディレクトリの位置関係

ホームディレクトリに戻りたいときは、引数なしの cd で戻れます。

taro@ubuntu:/$ cd
taro@ubuntu:~$ pwd
/home/taro

存在しない場所を指定すると、移動せずにエラーが出ます。

taro@ubuntu:~$ cd work
bash: cd: work: そのようなファイルやディレクトリはありません

work というディレクトリがないからです。打ち間違いか、いる場所が想定と違うかのどちらかなので、pwd と ls で確かめます。

2.12 コマンド履歴とTab補完

打ち込む手間を減らす機能が2つあります。どちらも打ち間違いを減らしてくれるので、早めに覚えておくと快適です。

ひとつが コマンド履歴 です。↑ を押すと、直前に打ったコマンドが出てきます。もう一度押すと、その前のコマンドが出ます。↓ で戻れます。同じコマンドをもう一度実行したいときは、↑ を押して Enter です。

もうひとつが Tab補完 です。ファイル名やディレクトリ名を途中まで打って Tab を押すと、残りを補ってくれます。

taro@ubuntu:~$ cd r        ← ここで Tab を押すと
taro@ubuntu:~$ cd rpg/     ← こうなる

候補が複数あるときは、1回目の Tab では補完されません。もう一度 Tab を押すと、候補の一覧が表示されます。そこまで打てば候補がひとつに決まる、という位置まで打ってから押すのがこつです。たとえば rpg しかないディレクトリなら、r まで打って Tab を押すだけで rpg/ になります。

Tab補完には、打ち間違いを防ぐ効果もあります。Tab を2回押しても候補が出ないなら、その名前のファイルがありません。実行する前に気付けます。

2.13 --helpで調べる

コマンドの使い方は、コマンド自身に聞けます。多くのコマンドは --help を付けると説明を表示します。

taro@ubuntu:~$ mkdir --help
使用法: mkdir [OPTION]... DIRECTORY...
ディレクトリが存在しない場合に、ディレクトリを作成します。

長いオプションで必須となっている引数は短いオプションでも必須です。
  -m, --mode=MODE   ファイルのパーミッションを a=rwx - umask ではなく
                    (chmod のように) MODE に設定する
  -p, --parents     ディレクトリが存在していてもエラーを返さない。
                    必要に応じて親ディレクトリを作成する。

最初の「使用法」の行が、いちばん役に立ちます。[OPTION]... のように角かっこで囲まれた部分は、省略できるという意味です。DIRECTORY... のように囲まれていない部分は、必ず書きます。

mkdir --help は20行ほどですが、コマンドによってはもっと長くなります。ls --help は140行を超えるので、画面から流れてしまいます。そのときは、次のようにすると1画面ずつ表示できます。

ls --help | less

less の中では ↓ で進み、q で終了します。

英語で表示される場合もあります。その場合は、必要な部分を AI に貼り付けて聞くのが早道です。

2.14 AIにコマンドを質問する

コマンドを調べる方法は、--help だけではありません。AI に聞くこともできます。AI 開発エージェントの導入は第3章ですが、質問の仕方はここで決めておきます。

聞き方のこつは、やりたいことと、いまいる場所を書くことです。

Ubuntu の端末で作業しています。
いま /home/taro にいます。
rpg というディレクトリの中に、さらに data というディレクトリを作りたいです。
コマンドと、その各部分の意味を教えてください。

「mkdir の使い方を教えて」と聞くよりも、答えが具体的になります。やりたいことを書けば、コマンド名を知らなくても質問できます。

返ってきたコマンドは、実行する前に必ず読んでください。とくに、次の2つが含まれているときは手を止めます。

  • rm(削除)を含むコマンド

  • sudo(管理者権限で実行)を含むコマンド

この2つは、間違えたときの影響が大きいコマンドです。

とくに rm には注意してください。Linux には、Windows のごみ箱や macOS の「ゴミ箱」にあたる仕組みがありません。rm で消したファイルは、元に戻せないものと考えてください。

意味がわからないまま実行せず、「このコマンドは何を消しますか」と聞き返してください。

本書で扱う範囲では、sudo が必要になる場面はほとんどありません。必要な箇所は本文で明示します。

2.15 接続を終える・再開する

作業を中断するときは exit と入力します。

taro@ubuntu:~$ exit
logout

ssh でつないでいた場合は、このあとに Connection to … closed. が続きます(2.5.4)。

exit が何を終わらせるかは、用意した方法によって少し違います。

表2-2: 終了と再開

方法

exit で起きること

再開のしかた

WSL

Windows の画面に戻る

スタートメニューか wsl

OrbStack

macOS のターミナルに戻る

orb -m rpg

ssh

接続が切れる

ssh 利用者名@アドレス

どの方法でも、作ったファイルは消えません。消えるのは接続だけです。

再開したときは、たいていホームディレクトリから始まります。OrbStack のように別の場所から始まることもあるので、pwd で確かめてください。作業の続きをするときは、cd ~/rpg で作業場所に戻ります。

いまどこにいるかわからなくなったら pwd、何があるかわからなくなったら ls。この2つで、現在地と中身を確かめられます。

exit が効かないときは、プログラムが動いている最中かもしれません。実行中のプログラムを止めるには Ctrl + C を押します。

2つの役割は違います。exit は「シェルとの接続を終える」コマンドで、Ctrl + C は「いま動いているプログラムを止める」操作です。困ったときにいつも Ctrl + C を押すのではなく、何を止めたいのかで使い分けてください。プログラムが止まってプロンプトが戻ってきたら、あらためて exit と入力してください。

実行中のプログラムがあるときに接続が切れると、そのプログラムも終わります。長い時間がかかる処理を動かしたまま切断したい場合の方法もありますが、本書の範囲では必要ありません。

2.16 ハンズオン問題

問題2-1(easy / investigation)作業ディレクトリの中に notes を作る

~/rpg の中に notes というディレクトリを作り、そこへ移動して、現在地が /home/taro/rpg/notes であることを確認してください。taro の部分は、自分の利用者名に読み替えてください。

実行コマンド

cd ~/rpg
mkdir notes
ls
cd notes
pwd

実行例

taro@ubuntu:~$ cd ~/rpg
taro@ubuntu:~/rpg$ mkdir notes
taro@ubuntu:~/rpg$ ls
notes
taro@ubuntu:~/rpg$ cd notes
taro@ubuntu:~/rpg/notes$ pwd
/home/taro/rpg/notes

ヒント

  1. 始める前に pwd で、いまいる場所を確認します。

  2. mkdir は成功しても何も表示しません。ls で確かめます。

  3. ホームディレクトリに戻るときは、引数なしの cd です。

AIに依頼する場合

まず自分でコマンドを打ってみてください。うまくいかないときや、意味を確かめたいときに、次の依頼文を使います。

Ubuntu の端末を使っています。
ホームディレクトリの下の rpg というディレクトリの中に、notes というディレクトリを作りたいです。
作ったあと、そこへ移動して現在地を確認するところまでの手順を、
コマンドを1行ずつ、それぞれの意味を添えて教えてください。

確認

AI が示したコマンドを、1行ずつ自分で打って確かめてください。pwd の表示が /home/taro/rpg/notes になれば正解です。

解答と解説

taro@ubuntu:~$ cd ~/rpg
taro@ubuntu:~/rpg$ mkdir notes
taro@ubuntu:~/rpg$ ls
notes
taro@ubuntu:~/rpg$ cd notes
taro@ubuntu:~/rpg/notes$ pwd
/home/taro/rpg/notes

解説

mkdir は成功したときに何も表示しません。作れたかどうかは ls で確かめます。何も出ないまま次のプロンプトが出たら、それは成功の合図です。

cd の結果は、プロンプトでも確認できます。~/rpg から ~/rpg/notes に変われば移動できています。

cd ~/rpg の ~ はホームディレクトリを指すので、この書き方はどこにいても同じ場所へ移動できます。いまいる場所を基準にする cd rpg は、ホームディレクトリにいるときだけ成立します。迷ったら ~ から書くほうが確実です。

ホームディレクトリに戻るときは、引数なしの cd です。

問題2-2(easy / investigation)ルートディレクトリを見る

ルートディレクトリ(/)へ移動し、そこにあるディレクトリの一覧を表示してください。確認できたら、ホームディレクトリに戻ってください。

実行コマンド

cd /
ls
cd
pwd

実行例

taro@ubuntu:~$ cd /
taro@ubuntu:/$ ls
bin   dev  home  media  opt   root  sbin  sys  usr
boot  etc  lib   mnt    proc  run   srv   tmp  var
taro@ubuntu:/$ cd
taro@ubuntu:~$ pwd
/home/taro

ヒント

  1. / は絶対パスの出発点です。どこにいても cd / で移動できます。

  2. 一覧に出てくる home の下に、自分のホームディレクトリがあります。

  3. 戻るときは cd だけで十分です。

確認

一覧の中に home があることを確認してください。cd home と打ってから ls を実行すると、自分の利用者名のディレクトリが見つかります。そこが ~ の正体です。

並ぶ名前は Ubuntu の用意のしかたで少し変わります。lib64 のように、ここに出ていない名前が増えることもあります。home があれば問題ありません。

解答と解説

taro@ubuntu:~$ cd /
taro@ubuntu:/$ ls
bin   dev  home  media  opt   root  sbin  sys  usr
boot  etc  lib   mnt    proc  run   srv   tmp  var
taro@ubuntu:/$ cd
taro@ubuntu:~$ pwd
/home/taro

解説

/ はすべての出発点で、ここから下にすべてのファイルがぶら下がっています。

home の下に、利用者ごとのディレクトリがあります。cd home してから ls すると、自分の利用者名のディレクトリが見つかります。そこが ~ の正体です。

ほかの名前は Ubuntu 自身が使う場所です。bin にはコマンドの本体、etc には設定ファイルが入っています。本書の作業では触れないので、中身を覚える必要はありません。消したり書き換えたりすると Ubuntu が動かなくなるので、見るだけにしてください。

問題2-3(easy / investigation)接続を切って、つなぎ直す

いったん exit で接続を終え、もう一度入り直してください。入り直したあと、問題2-1で作った notes が残っていることを確認します。

実行コマンド

exit

(再接続したあと)

ls ~/rpg

ヒント

  1. 入り直す方法は、表2-2で自分の環境の行を見てください。

  2. 入り直した直後は、たいていホームディレクトリにいます。pwd で確かめられます。

  3. ls ~/rpg のように、移動せずに別の場所を一覧することもできます。

確認

notes が表示されれば、ファイルが接続とは無関係に残ることを確認できました。第22章では、この性質を使ってゲームの記録を保存します。

解答と解説

taro@ubuntu:~$ exit
logout

入り直したあと、次のように確認します。

taro@ubuntu:~$ ls ~/rpg
notes

解説

exit で終わるのは接続だけです。作ったファイルやディレクトリは、そのまま残ります。

入り直したあとは、たいていホームディレクトリから始まります。OrbStack のように別の場所から始まることもあるので、pwd で確かめてください。作業の続きをするときは cd ~/rpg で戻ります。

ls ~/rpg のように場所を指定すると、移動せずに一覧できます。確認だけしたいときは、こちらのほうが手数が少なくなります。

入り直す方法は環境によって違います(表2-2)。どの方法でも、ファイルが残るという性質は同じです。第22章では、この性質を使ってゲームの記録をファイルに保存します。