Tech × Books plus [改訂新版]macOS×コマンド入門 ターミナルとコマンドライン、基本の力

「[改訂新版]macOS×コマンド入門 ターミナルとコマンドライン、基本の力」のカバー画像
著者
西村めぐみにしむらめぐみ 著
新居雅行にいまさゆき 技術監修
定価
2,970円(本体2,700円+税10%)
発売日
2026.4.15
判型
A5
頁数
432ページ
ISBN
978-4-297-15579-7 978-4-297-15580-3

概要

初学者の方々に向けた「macOS×コマンドライン」の解説書。最新版macOS&Appleシリコン環境を想定し、解説を刷新しました。

本書では、macOSベースでOSの基礎知識とコマンドラインのテクニックを丁寧に解説。macOSの源流にあるUnix系OSのコンセプトを押さえつつ、ファイルやファイルシステム、ユーザやプロセスの概念、シェル、ターミナル.appなど、コマンド実行に役立つOS&関連知識を丁寧に取り上げます。昨今のOS学習で欠かせないセキュリティやクラウド(iCloud)も押さえつつ、独学でも楽しみながら学べるように、ポイントを押さえた図解や実例も満載です。

改訂新版では、見返しに主要なコマンド&オプションが一覧できる「Quickリファレンス」を収録。巻末では「コマンドラインで広がる世界」と題し、学生の方々等の研究・開発およびパーソナルユースを想定した「Docker」「Python」「Git&GitHub」「Raspberry Pi」の解説も強化しました。

コマンドラインは、一度学ぶと長く役立つ技術知識の一つです。AIが身近になり、コンピュータへの関わり方が劇的に変わってきた今、「変わる基本」を正しく扱い、「変わらない基本」を自分の力にするために。macOSをきっかけに技術力のたしかな土台を固めたい方々へ向けて、充実の解説をお届けします。

関連サイト

著者の西村めぐみ氏によるサポートページは、次のとおりです。

https://nisim-m.github.io/macoscmdbook3/

こんな方にオススメ

  • コマンドをこれから使ってみたい方々
  • macOSの、GUIとは別の一面に興味をお持ちの方々
  • OSの基本を実機で試しながら学習してみたい方々

目次

[特別収録]macOS&コマンドラインQuickリファレンス (前見返し・後見返し)

ターミナルとプロファイルについて

[基礎知識]macOSの「アカウント名」と本書で扱う「ユーザ名」について

1章 [入門]macOSとコマンドライン

1.1 はじめてのコマンドライン まずは試してみよう

コンピュータを「文字」で操作する コマンドとコマンドライン
ターミナル コマンド入力に使うアプリケーション
プロンプトとカーソル
コマンドの入力
コマンドラインの表記方法
コマンドのオプションと引数
ターミナルとシェルの関係

1.2 macOSの特徴 OSの基礎、Unix系OSという一面、macOSの変遷

基本となるソフトウェア「OS」
  • OSの中心部分は「カーネル」
  • macOSのベースは「Darwin」
  • Unix系OSの特徴
Unix系OSの歴史
  • UNIXは研究所で誕生し、無償公開されていた
  • Unixの系統の1つが「BSD系」
  • 商用UNIXの登場とUnix系OSの進化
  • さまざまなディストリビューション
  • POSIX、商標UNIXとSUS UNIXの標準規格
Unix系OS間の違い 系統の違いはコマンドラインに影響する?
Unix系OSと操作環境 ウィンドウを使うかどうかは設定で決める
macOSの歴史
  • Classic Mac OS
  • 新しいOS「Mac OS X」の誕生
  • ハードウェアの変化 PowerPCからIntel Macへ
  • Mac OS Xから「OS X」へ名称変更
  • OS Xから「macOS」へ名称変更
  • M1チップの登場とAppleシリコンへの移行
  • Darwinの歴史
  • バージョンと名称の変遷
macOSとX Window System Darwin用のXは「XQuartz」

2章 ターミナルとFinderの基本

2.1 ターミナルの基本 起動と終了、設定の確認

ターミナルの起動と終了
  • 複数のターミナルを起動して使う
  • ターミナルを終了させる
ターミナルの設定
  • プロファイルで見た目をカスタマイズ
  • ウィンドウタイトルに表示する内容
  • ターミナルで使用するシェルの設定
  • テキストエンコーディングの設定
  • 「\」(バックスラッシュ)の基礎知識
  • 「\」の表示を確認
いろいろな地域の言語を使えるようにするしくみ
  • テキストエンコーディングと文字コード
  • 日本語環境で使われているテキストエンコーディング
  • 世界中の文字を表すことを目指して作られた「Unicode」
  • [言語と地域]の設定

2.2 Finderとコマンドライン フォルダとディレクトリ、openコマンド

Finderの基本 フォルダとディレクトリ
  • フォルダはディレクトリを視覚化したもの
  • フォルダとディレクトリはどう対応しているか
  • ホームディレクトリ
Finderとターミナルとの連携
  • ドラッグ&ドロップでファイル名を簡単に入力する
  • [プライバシーとセキュリティ]-[フルディスクアクセス]の設定
  • Finderからターミナルを開く
Finderにパスを表示する設定
  • パスバーを表示する
  • ウィンドウのタイトルにパスを表示する
ターミナルからアプリケーションを起動する3つの方法 openコマンド
1 ターミナルからFinderのウィンドウを開く
2 ターミナルからデータファイルを開く
  • テスト用ファイルの作成
  • openコマンドで開いてみよう
3 ターミナルから好きなアプリケーションを起動する
  • macOSアプリケーションの実行 open

3章 シェル&コマンドラインの基礎

3.1 シェル概論 コマンドラインを担う「シェル」を知る

シェルの役割 コマンド入力をカーネルに伝える
  • コマンドラインでのあれこれはシェルが受け持っている
  • シェルでできることは「シェルスクリプト」で自動化できる
  • シェルは環境の設定にも使われている
シェルの種類 macOSの標準シェルはzsh
  • シェルによる違い コマンドは共通、コマンドラインの機能は異なる
  • プロンプトで使われている記号の意味
シェルスクリプトの基礎知識
  • シェルスクリプト以外のスクリプト macOSにインストールされているスクリプト言語

3.2 [速習]コマンドライン入力 効率の良い方法をマスター

コマンドラインの編集と履歴の活用
  • コマンドラインの編集
  • コマンドラインの履歴
補完機能の活用
  • コマンド名の補完
  • ファイル名の補完
  • 複数の候補がある場合
ファイルをまとめて指定
  • 「*」にはすべてがあてはまる
  • 「?」は何か1文字を表す
  • 「パス名展開」はシェルの仕事
パイプとリダイレクトの活用
  • パイプでコマンドの出力をほかのコマンドに渡す
  • リダイレクトで出力結果をファイルに保存する
  • リダイレクトで既存ファイルに「追加」する
画面のクリア

3.3 コマンドの基礎知識 コマンドの使い方&調べ方

環境変数PATHとコマンドの優先順位 コマンドを動かす前に
  • コマンドを実行するにはパスが必要
  • PATHの役割 「パスが通って」いれば省略できる
  • PATHの確認 PATHに登録されているディレクトリ
  • PATHに登録されているディレクトリの使い分け
シェルに組み込まれているコマンド ビルトインコマンド
コマンドの優先順位 ①エイリアス、②ビルトインコマンド、③PATH
  • 「何」が実行されているのかを知るには type、which、where、whence
コマンドのルール オプション、引数、サブコマンド
  • ショートオプションとロングオプション
  • オプションの組み合わせ方
  • 引数があるオプション
  • ヘルプやバージョンを表示するオプション
  • サブコマンド
  • オプションやサブコマンドと引数の区別を明示する
  • コマンドのマニュアルを確認 man
  • manコマンドでマニュアルを表示する
  • ターミナルのメニューでマニュアルを参照する
  • manで表示されるマニュアルの構成
SYNOPSIS(書式)の読み方
  • SYNOPSIS内の[ ]は省略可能であることを表す
  • 「...」は複数指定可能であることを表す
  • 「|」はどちらかを選択することを示す
マニュアルの章番号
ビルトインコマンドのマニュアル

3.4 管理者よりも強力なユーザ「root」 sudo/SIP

ユーザの種類と権限
  • そもそも自分は誰だろう whoami、groups、id、logname
  • 「root」って何だろう
  • rootの権限を使えるsudoコマンド sudo
  • rootでシェルを使う
rootでも越えられない壁「SIP」 sudoの先にある保護機構
  • ディレクトリが保護されているかを確認する 拡張属性「com.apple.rootless」
  • システムボリュームを読み取り専用にする「SSV」 改ざんと書き換えを許さないしくみ

4章 ファイルシステム

4.1 ファイルシステムの基礎知識 APFS/フォーマット/パーティション/マウント

ファイルシステムの基礎知識
  • ファイルシステムの種類 macOS、Windows、Unix系OS
  • 新しいファイルシステム「APFS」
  • APFSとHFS+の選択のバリエーション 暗号化、大文字/小文字、ジャーナリング
  • ファイルシステムとコマンドラインの関係 ファイル操作系のコマンドは共通
フォーマット 記憶媒体を特定のファイルシステム用に準備
  • パーティション 記憶媒体はパーティションを作って管理
  • ボリューム フォーマットされた領域には名前を付けて管理
マウント 記憶媒体をOSからアクセスできるようにする
  • /Volumes macOSのマウントポイント
  • APFSの「コンテナ」と「ボリューム」

4.2 ファイルシステムの操作 [ディスクユーティリティ]/diskutil/デバイスノード/df/mount

[ディスクユーティリティ]と情報の表示
  • [ディスクユーティリティ]でコンテナも表示する
ディスクの情報の調査/マウント/修復 diskutil
接続されているディスクの確認と情報表示 diskutil list
  • デバイスノード デバイス単位の操作時に、ディスクやボリュームの指定に用いる
  • マウント状況や使用量などの確認 diskutil info
  • ボリュームのマウント/マウント解除/イジェクト diskutil mount/umount/eject
ディスクの空き領域の表示 df
マウント状況とファイルシステムの確認 mount
  • mount/umountコマンドによるマウントとマウント解除

5章 ファイル&ディレクトリの探検

5.1 ディレクトリ 「/」(ルート)、「~(ホーム)、「.」(カレント)、「..」(親)、絶対パス&相対パス

macOSのディレクトリツリー ファイルはディレクトリによって整理されている
ルートディレクトリを見てみよう 「/」
  • ルートディレクトリの下にあるディレクトリを見る場合
ホームディレクトリを見てみよう 「~」
  • ホームディレクトリの下にあるディレクトリを見る場合
  • 自分以外のユーザのホームディレクトリを表示する
カレントディレクトリは「現在の作業場」
  • カレントディレクトリの下にあるディレクトリを確認する
  • 違うディレクトリをカレントディレクトリにする cd、pwd
パスの基本 パスの表し方
  • 絶対パス(フルパス)と相対パス、親ディレクトリを表す「..」
  • 相対パスと絶対パスを使ったコマンド操作
  • カレントディレクトリを表す 「.」
  • 「~」と組み合わせて指定する
  • 「~」はシェルが展開している
ディレクトリを表す記号のまとめ

5.2 ドットファイル 普通のファイルなのに見えないファイル(!?)

見えないファイル「ドットファイル」
  • ドットファイルを表示してみよう ls -a、-A
  • ワイルドカードでドットファイルを指定する
ドットファイルは「隠れている」ファイル

5.3 コマンドによるファイルとディレクトリの操作 mkdir/rmdir/rm/mv/cp

ディレクトリの作成 mkdir
空のディレクトリの削除 rmdir
  • ディレクトリが削除できない場合
ファイルやディレクトリの削除 rm
  • ディレクトリの削除 -R(-r)
  • 確認メッセージを表示せずに削除する -f
  • -R(-r)オプションを使用する際の注意点
ファイルやディレクトリの移動/名前の変更 mv
  • mvでディレクトリの移動/名前の変更をする場合
  • mvでファイル名を変更する際の注意点
ファイルやディレクトリのコピー cp
  • コピー先にディレクトリを指定する 補完機能を使う習慣をつけてミス防止
  • ディレクトリのコピー -R
  • コピー先のディレクトリがある場合の注意点

5.4 シンボリックリンク ハードリンクとinode/ln/エイリアスとの違い

ハードリンク&シンボリックリンク
  • ハードリンクとinode ファイルやディレクトリには固有の番号がある
  • 「ハードリンク数」の意味 サブディレクトリの数+2
  • ハードリンク数の変化を見てみよう
  • シンボリックリンク ファイルやディレクトリへのリンク
シンボリックリンクの作成 ln
  • シンボリックリンクの削除
  • リンク先の削除
  • ディレクトリのシンボリックリンクの作成 作り方はファイルのときと同じ
  • Finderの「エイリアス」との違い

6章 ファイルの属性とパーミッション

6.1 ファイル&ディレクトリの属性 パーミッション/ファイルフラグ/ACL/拡張属性

ファイルの情報を眺めてみよう  属性
読み/書き/実行の許可を管理する「パーミッション」 パーミッションは3種類×3組
  • ファイルの「読み/書きの許可」 r/w
  • ファイルの「実行許可」 x
  • ディレクトリのパーミッションはどう働くか
  • ホームディレクトリのパーミッション
このほかの属性 ファイルフラグ、ACL、拡張属性
  • ファイルフラグ Finderの表示や変更可能かを決める
  • ACL アクセス制限を細かく定義する
  • 拡張属性 Finderでの表示方法などを保存する
  • 拡張属性の表示と変更 xattr

6.2 ファイル情報の表示 ls/stat

ファイルリストの表示 ls
  • 詳細情報を表示する -l
  • ディレクトリやシンボリックリンクの情報を表示する -l、-d
  • ドットファイルを表示する -a、-A
  • ファイルの種類を表示する -F、-G
  • サブディレクトリの中も表示する -R
  • ファイルの更新日や作成日を表示する -l、-lT、-lc、-lu、-lU
  • ファイルの更新日で並べ替える -t
ファイルの属性情報の表示 stat
ファイルの種類を調べる file

6.3 ファイルの所有者やパーミッションの変更 chmod/chflags/chown/touch

パーミッションの変更 chmod
  • パーミッションを表すアルファベットと数値
  • パーミッションとマスク値
  • デフォルトのパーミッション
  • chmodとデフォルトのパーミッション
  • ACL情報の操作
ファイルフラグの変更 chflags
  • ファイルを「変更禁止」にする uchg属性
ファイルの所有者とグループの変更 chown
  • 所有グループの変更 chown、chgrp
グループはどのように利用されているか
ファイルなどの更新日や最終アクセス日の変更&新規ファイルの作成 touch

6.4 ファイルの検索/圧縮/同期 find/zip/unzip/tar/gzip/guzip/rsync/du

ファイルの検索 find
  • 検索するディレクトリの階層を指定するには -maxdepth
  • 検索対象外とする条件を加えるには -prune
  • ファイルを検索して削除 -exec、-ok
ZIP形式による圧縮と展開 zip、unzip
  • リソースフォークや拡張属性は含めず圧縮できる 他OSとやりとりする際に便利
  • パス名展開を使用した場合の注意点
  • サブディレクトリも含めて圧縮する
  • 条件に合うファイルを探してZIPファイルにする -i
  • findコマンドと組み合わせてZIPファイルにする -@
  • ZIPファイルを作成して元のファイルを削除する -m
  • ZIP形式のファイルを展開する unzip
  • 一部のファイルだけを展開する
アーカイブの作成/展開 tar
ファイルの圧縮と伸張 gzip、gunzip
ディレクトリの同期 rsync
  • ファイルの削除も同期する --delete
  • ドットファイルを除外する --exclude
ディレクトリのディスク使用量の集計 du
  • 指定したディレクトリの集計のみを表示
  • シンボリックリンクの注意点
  • ドットファイルの注意点
  • iCloudと同期しているファイルの場合

7章 シェルの世界[zsh/bash対応]

7.1 [入門]コマンドの組み合わせ&実行 入出力/パイプ/リダイレクト/Nullデバイス/コマンド置換/サブシェル

パイプとリダイレクト | > >> 2> <
  • 入出力を変更するパイプとリダイレクト
  • 「標準入力」と「標準出力」
  • 2の出力「標準エラー出力」
  • パイプは何をしているのか
  • フィルターコマンド 標準入力から受け取った内容を加工して標準出力へ出力
  • リダイレクトは何をしているのか
  • 標準入力のリダイレクト <
  • 標準出力と標準エラー出力を保存する > 1> 2> &>
  • リダイレクトでファイルに追加する >> 1>> 2>>
  • 出力を「捨てる」 Nullデバイス(/dev/null)
  • すべての出力をパイプする
  • パイプとリダイレクトを組み合わせる マルチIO(zsh)、tee
  • パイプとリダイレクトのまとめ
複数コマンドを1行で実行 ; && || &
  • 複数のコマンドを1行のコマンドラインで実行する ;
  • 1行で実行できるとなぜ便利なのか ヒストリやエイリアスで活用しやすくなる
  • 先に実行したコマンドの結果によって処理を変える && ||
  • 先に実行したコマンドが終わるのを待たずに次の処理をする &
コマンド置換 ` ` $( )
  • コマンドの実行結果を引数にする
  • コマンドの実行結果を引数の一部として使用する
  • コマンド置換の「ネスト」
サブシェル ( )
  • サブシェルを使って標準エラー出力をパイプに渡す

7.2 コマンドライン入力の省力化 ヒストリ/エイリアス/各種展開/ショートカット

ヒストリ(コマンド履歴)の活用
  • コマンド履歴を一覧表示する history
  • ヒストリ番号を使って実行する ! !! r
  • ヒストリを編集して実行する fc
  • ヒストリの検索 control+R、fc -s
エイリアス(コマンドエイリアス)の設定と活用 alias/unalias
  • コマンドエイリアスを設定/表示  alias
  • エイリアスを定義する alias
  • 定義済みのエイリアスを確認する
  • 定義済みのエイリアスを削除する unalias
  • グローバルエイリアス 引数にエイリアスを使う
  • 接尾辞エイリアス 拡張子ごとのエイリアス
パス名展開(グロビング) * ? [ ]
  • パス名展開(グロビング)で使用される記号
  • 「*」は任意の文字列、「?」は任意の1文字 * ?
  • 文字を限定した指定をする [ ]
  • 数値の範囲を指定する < >
このほかの展開
  • ブレース展開 { }
  • チルダ展開 ~
各種展開を組み合わせてみよう
  • 「.*」でドットファイルを表示する
  • echoコマンドで展開の結果を確認 echo
パス名展開ができなかった場合 シェルによる違い
  • zshの場合 パス名展開に失敗すると、コマンドが実行されない
  • bashの場合 パス名展開されないままの文字列を引数にしてコマンドが実行される
記号の意味を打ち消す \ ' ' " "
  • 「\」と「' '」と「" "」の違い
ターミナルで使えるキーボードショートカット よく使う操作を簡単に
  • ターミナルウィンドウ関係の操作
  • 表示や実行を制御する操作
  • ヒストリと行内編集関係

7.3 zshの設定 環境変数、シェル変数、設定ファイル

環境変数とシェル変数 シェルやコマンドの動作を変える
  • 「変数」って何? 変数の役割、参照方法
  • シェル変数は、環境変数とどう違う?
シェル変数と環境変数の定義と値の表示 export、echo、env、printenv
  • 定義されている環境変数の値を変更する
  • 環境変数を設定してコマンドを実行する
zshの設定ファイル
  • システム全体用の設定ファイルと個人用/ユーザ固有の設定ファイル
  • 「~/.zshrc」の作成と編集
テキストエディットを使う際の注意
  • [注意❶]標準テキストで保存する
  • [注意❷]スマート引用符をOFFにする
設定ファイルの動作確認 source
zshの設定ファイルはどう読み込まれる?
シェルの起動方法と設定ファイルの使い分け インタラクティブシェル、ログインシェル、ノンインタラクティブシェル
  • シェルの設定ファイルと実行順 設定ファイルは起動方法によって異なる
  • なぜ異なる設定ファイルを使用するのか 人間向けの処理を行うかどうかがポイント
zshの設定例 エイリアス、プロンプトの表示、シェルオプション
  • エイリアスを設定する
  • プロンプトの表示内容を変更する
シェルオプションによるシェルの動作設定
  • シェルオプションの有効化/無効化 set、setopt、unsetopt
  • コマンド実行時にディレクトリ末尾の「/」を削除しない AUTO_REMOVE_SLASH
  • 補完候補の表示をbashと同様にする BASH_AUTO_LIST
  • コマンド入力を補正する CORRECT

7.4 bashの設定 設定ファイルと設定例

bashの設定ファイル ユーザ設定は「~/.bash_profile」へ
  • システム全体用の設定ファイルと個人用/ユーザ固有の設定ファイル
  • 「~/.profile」と「~/.bash_profile」の違い
  • シェルオプションによるシェルの動作設定

8章 テキスト処理とフィルター

8.1 テキストの表示 more/less/head/tail/cat/say

1画面ごとの表示 more/less
  • コマンドの実行結果を表示しながらファイルにも保存する
  • 表示開始位置を指定する
  • 表示内容を検索する
先頭と末尾の表示 head、tail
  • headでコマンドの実行結果を素早く確認
ファイルの表示と連結 cat
  • キーボードから入力した内容をファイルに保存する
テキストの読み上げ say
  • ほかの話者(ほかの言語)を指定する -v

8.2 テキストの加工 sort/cut/tr/iconv/wc/diff

テキストの並べ替え sort
  • 数の大小で並べ替える -n
  • フィールドを指定して並べ替える -k
重複行の除去/抽出 uniq
文字の切り出し cut
  • CSVファイルから必要な部分だけを取り出す
文字の置き換え tr
  • 特定の文字や制御文字を削除する
  • 固定長のデータをCSVやタブ区切りにする
テキストエンコーディング(文字コード)の変換 iconv
  • 使用できるテキストエンコーディングを確認する -l
テキストファイルの行数/単語数/文字数 wc
  • 実行結果の件数を数える -l
テキストファイルの比較 diff
  • context形式
  • unified形式

8.3 高度なテキスト処理 grep/sed/awk/vi(vim)

文字列の検索 grep
  • 検索パターンに正規表現を使用する シンボリックリンクをリストアップする2つの例
  • 複数のパターンで検索する -e
  • 前後関係やファイル中の位置がわかるようにする -n、--context、--color
  • 基本正規表現と拡張正規表現
コマンドによるテキスト編集 sed
  • sedによる処理の基本
  • 行番号で処理を行う
  • 検索パターンで処理を行う
  • 行を指定する方法
  • 置き換えコマンド
  • 正規表現で文字の一部を取り出す
  • パターン全体を取り出す
パターン処理によるテキスト操作 awk
  • パターンとアクション
  • パターン(条件)の指定方法
  • BEGINとEND
  • 出力を加工する
  • 区切り文字を変更する
テキストエディタ vi(vim)

9章 プロセスとコマンドの関係

9.1 プロセスとシグナル [アクティビティモニタ]/top/ps/killall/kill

プロセスの基礎知識
  • コマンドの実行≒プロセスの開始
  • プロセスを表示する top
  • topでコマンドが実行されている様子を見てみよう
実行中のプロセスの表示 ps
  • プロセスID プロセスにはIDがある
プロセスと端末 「端末と結び付けられているプロセス」の存在
親プロセスと子プロセス プロセスには親子関係がある
  • 親プロセスを辿る 親プロセスのIDを調べる
プロセスに「シグナル」を送る
  • 「killall Finder」はFinderにシグナルを送っている
  • シグナル送信前後の「PID」の変化を見る
  • プロセスIDを指定してシグナルを送る kill
  • シグナルの種類
  • シグナルに対しどう動くかは受け取り手次第
プロセスの親子関係と起動/終了
  • 終了しているはずなのに存在している「ゾンビプロセス」

9.2 ジョブの役割 ジョブコントロール/jobs/fg/bg/nohup

ジョブコントロールの基礎知識
  • プロセスはカーネルが、ジョブはシェルが管理している
  • control+Zでジョブを一時停止する zshの例
  • ジョブの再開 fg、bg
フォアグラウンドジョブとバックグラウンドジョブ
  • バックグラウンドジョブのメリット
  • バックグラウンドジョブとして起動する findコマンドをバックグラウンドで実行する例
  • 複数のジョブを切り替える
  • control+Cでジョブを終了させる
  • バックグラウンドジョブと親プロセスの終了 nohup

9.3 システムの再起動とシャットダウン reboot/halt/shutdown

システムの再起動とシャットダウン reboot、halt
タイミングを指定した再起動とシャットダウン shutdown
  • シャットダウンや再起動のタイミングを指定する
  • シャットダウンや再起動を中止する

10章 システムとネットワーク

10.1 システム設定 [システム情報]/system_profiler/systemsetup/defaults

システムのバージョン情報の表示 sw_vers、uname
システムの詳細情報の表示 system_profiler
  • インストールされているアプリケーションの名前、バージョン、場所の表示
システムの環境設定の変更 systemsetup
アプリケーション設定の一覧表示/操作 defaults
  • ドメインを一覧表示する defaults domains
  • ドメインのキーを一覧表示する defaults read
プロパティリストの表示/操作 plutil
  • アプリケーションの設定をデフォルトに戻す
自動起動や定期実行の設定 launchctl
  • 現在ロードされているサービスを表示する❶ launchctl list
  • 現在ロードされているサービスを表示する❷ launchctl print
  • システムのサービスを表示する
  • ユーザのサービスを表示する
  • 詳細情報から設定ファイルと実行コマンドを探す

10.2 ネットワーク設定 [ネットワーク]/ifconfig/networksetup/scutil/hostname/ping

ネットワーク設定とインターネット接続の基礎知識
  • ネットワークインターフェイス
  • IPv4とIPv6
  • ローカルIPアドレスとグローバルIPアドレス
  • グローバルIPアドレスを確認する
ネットワーク設定の表示/変更 ifconfig、scutil、networksetup
ホスト名の表示と設定 scutil、hostname
  • macOSの3つの名前
  • hostnameによるホスト名の表示と設定
接続相手の確認 ping、ping6
  • pingで応答がない/応答までに時間がかかる場合
  • 接続先のIPアドレスを調べる/ドメインとIPアドレスを結び付ける nslookup、host
  • ネットワークの「経路」を表示する route、traceroute、traceroute6
  • IPアドレスとMACアドレスの対応を調べる arp、ndp
  • 現在の通信状態を調べる netstat

10.3 リモート接続とダウンロード [共有]/ssh/ssh-keygen/ssh-copy-id/ssh-add/scp/curl

リモート接続 ssh
  • SSH接続用の公開鍵と秘密鍵の作成 ssh-keygen、ssh-copy-id、ssh-add
  • GitHubにSSH接続するための例
ファイルの転送 scp
ファイルのダウンロード curl
  • リダイレクトされている場合
  • ファイルを連番で指定する

10.4 システムのメンテナンス [Spotlight]/mdutil/mdworker/tmutil/softwareupdate

Spotlight検索のインデックスの管理 mdutil
  • Spotlight検索&登録情報のメタデータの表示 mdfind、mdls
  • インデックス構築を行う mdworker
Time Machineの操作 tmutil
  • バックアップ先とバックアップ状況を確認する
  • バックアップからファイルを復元する
  • ローカルスナップショットを削除する
ソフトウェアアップデート softwareupdate

11章 Homebrew×パッケージ管理

11.1 [入門]パッケージ管理システム パッケージ管理の役割と主要な選択肢

パッケージ管理システムの役割
  • インストール
  • アップデート(更新)
  • アンインストール
どのようなパッケージ管理システムがあるか

11.2 Homebrewのセットアップ インストール/主要ディレクトリ/基本用語

Homebrewのインストール
  • インストールコマンドの実行
  • Homebrewの実行コマンド
  • Homebrewの更新とメンテナンス
  • Homebrewのアンインストール
Homebrewのディレクトリと用語
  • Homebrewのディレクトリ
  • Formula
  • Cellar
  • Cask
Homebrewのリポジトリ
Homebrewのマニュアル

11.3 パッケージのインストール/更新/アンインストール brew install/list/outdated/upgrade/uninstall/unlink/cleanup

パッケージのインストールと更新 brew install
  • パッケージはどのようにインストールされているか
  • パッケージはどこにダウンロードされているか
パッケージの更新 brew outdated、brew upgrade
パッケージのアンインストール brew uninstall
  • [参考]コマンドを一時的に使用不可にしたい場合 brew unlink/link
  • [参考]同名のコマンドがある場合
キャッシュファイルの削除 brew cleanup
ウィンドウアプリケーションのインストールとアンインストール
  • Caskのパッケージはどのようにインストールされているか

11.4 パッケージの検索と情報の確認 brew search/info/cat/home

パッケージ(Formula)の検索 brew search
パッケージ情報の確認 brew info/cat/home

Appendix コマンドラインで広がる世界 開発に役立つさまざまなツール

A.1 macOSで始めるDocker超入門 「どこでも同じ開発環境」をmacOSで体験してみよう

Dockerの基礎知識
  • 仮想OSとの違い
  • macOSにおけるDockerサーバの役割
  • コンテナとDockerイメージ
  • Docker Hubではさまざまなイメージが配布されている
Dockerのインストール
  • Docker Desktopの起動
  • Docker Desktopの終了
  • [参考]Colimaのインストールと起動
最初のコンテナを動かしてみよう docker run
コンテナでコマンドを実行してみよう docker run -it
  • コンテナを一覧表示する docker ps -a
  • 既存のコンテナを使用する docker start、docker exec
  • コンテナの名前は自由につけることができる
  • Docker Desktopで表示する
  • コンテナを削除する docker rm、docker container prune
  • コンテナを自動で削除する docker run --rm
  • ダウンロードされているイメージの確認と削除 docker images、docker rmi
DockerでWebサーバを動かしてみよう
  • ポートを割り当てて実行する docker run -p
  • HTMLファイルの準備
  • ホストOSのファイルをコンテナから使用する docker run --mount、-v
  • コンテナ用のボリュームを用意する docker create volume

A.2 macOSで始めるGit/GitHub超入門 gitコマンドと「バージョン管理」を学ぼう

Gitの基礎知識
  • Gitは履歴をリポジトリで管理する
  • リモートリポジトリをどこに作るか
  • GitHubはGit用のWebサービス
  • GitHubの便利な機能
Gitのインストール
gitコマンド最初の一歩
  • ユーザ情報の設定 git config
  • git initでローカルリポジトリを作成する git init
  • リポジトリとワークツリー
  • Gitの管理対象となるファイル
  • ステージング(インデックス)とコミット git add、git commit
  • 現在の状態を確認する git status
  • 作業内容の分岐と合流 git branch、git switch、git merge
  • コミットの履歴を確認する git log
  • 内容を比較する・検索する git diff
  • ファイルを元に戻す git restore、git reset
GUIで表示する
GitHubを利用してみよう
  • A git cloneでパブリックリポジトリを取得する
  • B [準備❶]アカウントを作成して公開鍵を登録する
  • B [準備❷]ユーザ情報の設定
  • B [準備❸]ssh-agentへの秘密鍵の登録
  • B [準備❺]GitHubへの接続確認
  • GitHubのプライベートリポジトリを取得する
  • ファイルを編集してリモートリポジトリに反映させる git push
  • ファイルを編集してローカルリポジトリに反映させる git fetch、git pull

A.3 Python環境の構築超入門 目的に合わせて選べるPython環境の作り方を知ろう

macOSとPython
  • Pythonのバージョン
  • Pythonの「仮想環境」
仮想環境を作ってライブラリをインストールしてみよう
  • venvで仮想環境を作る python3 -m venv
  • 仮想環境の使用を開始する source 〈環境名〉/bin/activate
  • ライブラリをインストールする pip install
  • Plotlyで円グラフを描いてみよう
  • 仮想環境の使用を終了する deactivate
venvによる仮想環境を削除するには
Homebrew版Pythonで複数バージョンを切り替えてみよう
  • どのバージョンを使用すべきか
  • Homebrewでバージョン番号付きのPythonをインストール brew install
  • バージョン番号付きのPythonで仮想環境を作成する python3.xx -m venv
  • バージョン番号なしのPythonで仮想環境を作成する python3 -m venv
  • Homebrew版「python3」の利用を停止する brew unlink
仮想環境でスクリプトファイルを実行する
  • スクリプトファイルをどこに保存すべきか
  • venv仮想環境でスクリプトを実行する
DockerのPython環境を試してみよう
  • Dockerイメージのタグ
  • 1 Pythonイメージを対話モードで使用する
  • コンテナ内のファイルを確認する
  • 2 ホストOSのスクリプトを実行しホストOSに保存する
  • コンテナの起動と同時にスクリプトを実行する
  • 3 自分用の「ライブラリ入りDockerイメージ」を作る

A.4 macOSで簡単接続! Raspberry Pi 「macOSからLinuxマシンを操作」を体験してみよう

Raspberry Piの基礎知識
  • Raspberry Pi用のOS
Raspberry PiへのOSのインストール
Raspberry PiにSSHでリモート接続
  • SSHによる接続
  • SSH接続時のWARNING(警告)が表示された場合
VNCによる接続のための設定 raspi-config
  • Raspberry PiのIPアドレスを確認する
  • VNCクライアントでVNC接続
sudoでパスワードの入力を求める設定
[参考]suコマンドでrootユーザになる設定 passwd
コマンドを使って起動用SDカードをつくるには?
1 インストールイメージのダウンロード curl
  • [参考]ダウンロードが中断された場合
2 ダウンロードファイルの照合 shasum
3 ダウンロードしたZIPファイルの伸張 unxz
4 デバイス番号の確認とデバイス間のファイルの転送 diskutil list、dd
  • diskutil listによるデバイス番号の確認
  • ddコマンドによる転送
  • ddの途中経過を確認する
  • どのような状態で書き込まれているか
5 SDカードのイジェクト diskutil eject

Column

  • 「Mac」と「macOS」について
  • 分割パネル ターミナルを見やすく使う
  • macOSとiOSの関係は?
  • Macで、ほかのOSも使ってみたい
  • ターミナルの「マーク」と「ブックマーク」
  • Finderでもタブ補完を使いたい!
  • [概観]macOSとUnix系OSのルートにあるディレクトリ
  • AppleScriptをコマンドラインで動かそう
  • 補完機能を積極的に使おう 入力ミスの削減、指定ミスの発見
  • ワイルドカードと正規表現
  • macOS独自のコマンドを探す
  • sudoコマンドとsuコマンド
  • ファイル名やディレクトリ名の大文字/小文字
  • フォルダではない姿で表示されるディレクトリ バンドル
  • Firmlinks アプリケーションフォルダの内容とlsの結果が異なる理由
  • カレントディレクトリとプロンプト
  • Visual Studio Code❶ 「拡張機能」でほしい機能を自由に追加できるエディタ
  • 「.DS_Store」って何だろう おなじみのドットファイル(!?)
  • フォルダ名のローカライゼーション
  • iCloudのファイルはコマンドラインではどのように見えるか
  • 特別なパーミッション
  • 実ユーザ/実グループと実効ユーザ/実効グループ id
  • ファイル名を指定するオプション、動作を決定づけるオプションの指定
  • 圧縮/伸張だけを行うコマンド
  • リソースフォーク
  • デバイスファイルへのリダイレクト キャラクタスペシャルファイル、ブロックスペシャルファイル
  • dateコマンドで日時を表示 date
  • 「**/」による再帰
  • ディレクトリ名だけで移動する AUTO_CD
  • デフォルトのシェルの変更 chsh
  • ユーザIDとグループID
  • コマンドによるコピー&ペースト pbcopy/pbpaste
  • 文字の置き換えと文字列の置き換え
  • タブとスペース expand、unexpand
  • GNU版awkによるCSVの加工
  • リッチテキスト textutilコマンドで標準テキストに変換
  • Visual Studio Code❷ コマンドラインからも使いやすくしよう
  • psコマンドのオプション -aとa
  • 実行中のシェルの切り替え exec
  • プロセス、スレッド、プロセスグループ、セッション、ジョブ、そしてタスク
  • ウィンドウアプリケーションとバックグラウンドジョブ
  • 「サービスプロセス」とlaunchdの役割
  • MACアドレス ネットワークのハードウェアアドレス
  • wget Webサイトをまるごとダウンロードする
  • GPLとBSDライセンス
  • 「ライブラリ」と「依存関係」
  • Homebrewの用語 Cellar、Formula、Cask
  • ソースコードからのインストール

プロフィール

西村めぐみにしむらめぐみ

生産管理のパッケージソフトウェア開発およびサポートに携わる中、Linux関連の書籍および雑誌での執筆活動を経て㈱マックス・ヴァルト研究所に入社し、マーケティングリサーチの企画および実査を担当。その後、PCおよびMicrosoft Officeのeラーニング教材作成・指導、新人教育にも携わる。現在は会計分野を中心に、kintoneやExcelを用いたデータ加工・業務改善に従事。おもな著書は『図解でわかるLinuxのすべて』(日本実業出版社)、『シェルの基本テクニック』(IDGジャパン)、『Linux+コマンド入門』『TCP/IP&ネットワークコマンド入門』『標準SQL+データベース入門』(技術評論社)など。

新居雅行にいまさゆき

フリーランスとして、システム開発、コンサルティングを主業務とする。iOS、macOS、サーバ、データベース、FileMaker、Webアプリケーションがおもなフィールド。DB連動Webアプリケーション向けのフレームワーク「INTER-Mediator」の開発者。代表的な著作は1990年代の『Macintoshアプリケーションプログラミング』(上下巻、ディ・アート)など。国立情報学研究所特任研究員。電気通信大学大学院修了。博士(工学)。