[基礎知識+リファレンス]macOSコマンド入門
――ターミナルとコマンドライン,基本の力

[表紙][基礎知識+リファレンス]macOSコマンド入門 ――ターミナルとコマンドライン,基本の力

紙版発売

A5判/400ページ

定価2,860円(本体2,600円+税10%)

ISBN 978-4-7741-9403-5

ただいま弊社在庫はございません。

本書の新版が発行されています。

→学校・法人一括購入ご検討の皆様へ

書籍の概要

この本の概要

macOSとコマンドの基本をまとめた入門書。基礎知識+コマンドリファレンスで,基本がしっかり身につく構成です。前半ではコマンド入力のためのアプリであるターミナル.appの使い方/設定,コマンドにまつわるOSやコマンドラインのしくみや用語をはじめ,知っておきたい知識を丁寧に解説。後半では,初学者の方々に向けて動作がわかりやすいコマンドを厳選収録。利用場面ごとに,気軽に試しやすい順番で登場します。macOSでコマンドを使っていきたい方々へ,スタートに必要な知識とテクニックを一気に押さえられる1冊です。

こんな方におすすめ

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

本書の構成

本書は,コマンドを利用する上で必要となる基本を解説している「基礎知識編」(第1章~第5章)と,基本コマンドを中心に収録した「リファレンス編」(第6章~第11章)で構成されています。リファレンス編ではおもに初学者向けの学習用途を想定し,操作の内容や結果がわかりやすいコマンドを中心になるべく試しやすい順番で並べています。各章のおもな内容は以下の通りです。

基礎知識編
第1章 [入門]macOSとコマンドライン

「コマンド」を入力する場所や入力した内容のことを「コマンドライン」と言います。ここではコマンドラインがどのようなものかを少しだけ試して,コマンドの使い方を理解する上で役立つ知識として,macOSの成り立ちや歴史,Unix系OSとの関係について簡単に紹介しています。

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

コマンド入力に使用するアプリケーションである「ターミナル」の設定や,普段見ている「フォルダ」がターミナルではどのように見えるかなどを確認する章です。後半のFinderとターミナルを連携させる方法は,コマンド入力に少し親しんでから改めて読み返してみてください。

第3章 シェルとroot

コマンドラインの基礎部分を取り上げた章です。入力に楽をする方法やコマンドの組み合わせ方などを扱います。最後に,macOSを操作する上で重要な意味を持つroot(ユーザ)についても解説しています。第3章までを把握すれば,コマンドラインの日常的な利用ができるようになるでしょう。

第4章 ファイルとディレクトリ

コマンドライン操作の中心となるファイル操作の基本事項を取り上げます。ファイルとディレクトリを理解することは,コマンド操作のみならずシステムの管理全般への理解を深めることに役立ちます。ファイルシステムについても,本章で扱います。

第5章 プロセスとジョブコントロール

macOSで現在どのようなプログラムが動作中であるかを調べ,操作するための章です。システムのメンテナンスを行う際に必要となる知識で,OSへの理解も深まります。

リファレンス編
第6章 [実践入門]bashコマンドライン

第6章からはリファレンス編です。第6章は「macOSのコマンドライン担当」であるbashというシェルの,コマンドライン利用におけるリファレンスです。また,コマンド全般を取り扱うための知識として,オプションの扱い方やマニュアルの参照方法についても取り上げています。

第7章 ファイルとディレクトリの操作

ファイル操作の章です。7.1節は既存ファイルの表示や検索,7.2節はファイルの作成や削除で,7.1節と7.2節はサンプルをそのまま入力して試せるようになっています(7.2節末のrsyncコマンドを除く)。7.3節は属性の確認や操作,7.4節はファイルの圧縮や展開を扱います。

第8章 テキスト処理

コマンドラインの得意分野であるテキスト処理の章です。8.1節は表示に関するコマンド,8.2節は並べ替えや比較,8.3節は置換や切り取りなどの簡単な加工を扱い,8.4節では高度なテキスト処理としてgrepと正規表現,sed,awk,vi(vim)コマンドを扱います。

第9章 コマンド実行とプロセス管理

第9章と続く第10章はシステム関連コマンドを取り上げます。9.1節では第3章で紹介したsudoおよびユーザの情報を確認するコマンド,9.2節では第5章のプロセス管理で使用したpsコマンドとその関連コマンドを扱います。9.3節ではシステムの終了や再起動を行うコマンドを取り上げます。

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

10.1節と10.2節でシステムの情報や環境変数の確認,10.3節はネットワークの状況の確認,10.4節はリモート接続とダウンロードを扱います。10.5節はmacOS固有のコマンドで,通常はGUIで行う環境設定やディスク管理などを行うコマンドを扱っています。

第11章 Homebrewによるパッケージ管理

Homebrewはソフトウェアのインストールやアップデートなどを安全に効率良く行うパッケージ管理システムの一つです。パッケージ管理システムの役割と,Homebrewの具体的な利用方法を紹介します。

この書籍に関連する記事があります!

macOSでコマンドを使ってみよう! ――ターミナルから広がる新しい世界
macOSでは,日常的なほとんどの操作をGUIで行うようになっていますが,CUIと呼ばれる「文字で操作するインターフェイス」も備わっています。

目次

本書に寄せて macOS/Macとコマンド

まえがき 使える道具を増やす

本書の構成

本書の読者対象および想定する前提知識

動作確認環境について

本書の補足情報

本書の読み方

macOSの「ユーザ」について コマンドラインの「ユーザ名」と,アカウント名&フルネーム

基礎知識編
第1章 [入門]macOSとコマンドライン

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

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

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

  • 基本となるソフトウェア「OS」
    • OSの中心部分は「カーネル」
Column macOSとiOSの関係は?
    • 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」へ名称変更
    • Darwinの歴史
    • バージョンと名称の変遷
  • macOSとX Window System
    • Darwin用のXは「XQuartz」
Column Boot Campや仮想環境 Macで他のOSも使ってみたい

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

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

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

2.2 Finderとコマンドライン 基本事項と便利な操作

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

第3章 シェルとroot

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

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

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

  • コマンドラインの編集と履歴の活用
    • コマンドラインの編集
    • 前に入力した内容を呼び出す ヒストリ機能
  • 補完機能の活用
    • コマンド名の補完
    • ファイル名の補完
    • 複数の候補がある場合
  • ファイルをまとめて指定する
    • 「*」にはすべてがあてはまる
    • 「?」は何か1文字を表す
    • 「パス名展開」はシェルの仕事
  • パイプとリダイレクトの活用
    • パイプでコマンドの出力を他のコマンドに渡す
Column ワイルドカードと正規表現
    • リダイレクトで出力結果をファイルに保存する
    • リダイレクトで既存ファイルに「追加」する
  • 画面をクリアする clearコマンド
Column コマンドによるコピー&ペースト pbcopy/pbpasteコマンド

3.3 root 管理者よりも強力なユーザ

  • ユーザの種類と権限
    • 「root」って何だろう
    • rootの権限を使えるsudoコマンド
    • rootでシェルを使う
Column sudoコマンドとsuコマンド
  • 新しいセキュリティ機能「rootless」 SIP
    • ディレクトリが保護されているかを確認する 拡張属性「com.apple.rootless」
Column rootの有効/無効

第4章 ファイルとディレクトリ

4.1 ディレクトリ どこに何があるかを示す階層構造

  • macOSのディレクトリツリー
  • ルートディレクトリを見てみよう 「/」
    • ルートディレクトリの下にあるディレクトリの場合
  • ホームディレクトリを見てみよう 「~」
    • ホームディレクトリの下にあるディレクトリの場合
  • 自分以外のユーザのホームディレクトリ
  • カレントディレクトリは現在の作業場
    • カレントディレクトリの下にあるディレクトリを確認する
    • 違うディレクトリをカレントディレクトリにする
  • パスの基本 パスの表し方
    • 絶対パスと相対パス
    • 相対パスと絶対パスを使ったコマンド操作
    • カレントディレクトリを表す 「.」
    • 「~」と組み合わせて指定する
    • 「~」を使った指定も絶対パス
  • ディレクトリを表す記号のまとめ

4.2 ドットファイル 普通のファイルなのに見えないファイル(⁉)

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

4.3 ファイルの属性 ファイルやディレクトリの詳しい情報とその表示

  • ファイルの情報を眺めてみよう
  • ハードリンクとシンボリックリンク
    • ハードリンクとinode
    • 「ハードリンク数」の意味
    • ハードリンク数の変化を見てみよう
    • シンボリックリンクはファイルやディレクトリへのリンク
    • ファイルのシンボリックリンクの作成
    • シンボリックリンクの削除
    • ディレクトリのシンボリックリンクの作成
    • Finderの「エイリアス」との違い
Column 「.DS_Store」って何だろう
  • 読み/書き/実行の許可を管理する「パーミッション」 パーミッションは3種類×3組
Column カレントディレクトリとプロンプト
    • ファイルの「読み/書きの許可」
    • ファイルの「実行許可」
    • ディレクトリのパーミッションはどう働くか
    • ホームディレクトリのパーミッション
  • この他の属性 ファイルフラグ,ACL,拡張属性
    • ファイルフラグ Finderの表示や変更可能かを決める
    • ACL アクセス制限を細かく定義する
    • 拡張属性 Finderでの表示方法などを保存する
Column リソースフォーク

4.4 ファイルシステム 「フォーマットが違う」って何?

  • ファイルシステムの基礎知識
    • ファイルシステムの種類
  • フォーマット 記憶媒体を特定のファイルシステム用に準備
    • 記憶媒体はパーティションを作って管理
    • ボリューム フォーマットされた領域には名前を付けて管理
    • HFS+(Mac OS拡張)のバリエーション
  • マウント 記憶媒体をOSからアクセスできるようにする
    • /Volumes macOSのマウントポイント
  • ファイル操作コマンドはファイルシステムを問わず使用できる
  • 新しいファイルシステム「APFS」
    • 現在のファイルシステムの確認 ディスクユーティリティ,Finder,diskutilコマンド
Column ファイルやディレクトリ名の大小文字

第5章 プロセスとジョブコントロール

5.1 プロセス macOSが「今,何をしているか」を見る

  • プロセスの基礎知識
    • コマンドの実行≒プロセスの開始
    • topコマンドでプロセスを表示する
    • topでコマンドが実行されている様子を見てみよう
    • psコマンドでプロセスを表示する
  • プロセスID プロセスにはIDがある
  • プロセスと端末 端末を持つプロセスとは
  • プロセスには親子関係がある
    • 親プロセスを辿る プロセスの親子関係❶
    • コマンド名の表示 プロセスの親子関係❷
  • プロセスに「シグナル」を送る
    • 「killall Finder」はFinderにシグナルを送っている
    • シグナル送信前後の「PID」の変化を見る
    • 「PID」を指定してシグナルを送るkillコマンド
    • シグナルの種類
    • シグナルに対しどう動くかは受け取り手次第
  • プロセスの親子関係と起動/終了
  • 死んだのに存在している「ゾンビプロセス」
Column プロセス,スレッド,プロセスグループ,セッション,ジョブ,そしてタスク

5.2 ジョブ コマンドラインを「切り替える」?

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

リファレンス編
第6章 [実践入門]bashコマンドライン

6.1 コマンドを組み合わせて実行する 組み合わせ方と使う記号

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

6.2 コマンドライン入力補助 ヒストリ機能やパス名展開で省力入力

コマンド履歴の表示と活用 history
  • コマンド履歴を一覧表示する
  • ヒストリ番号を使って実行する
Column ログインの履歴を確認したい last,ac
エイリアス(コマンドエイリアス)の設定と活用 alias/unalias
  • エイリアスを定義する
  • 定義済みのエイリアスを確認する
  • 定義済みのエイリアスを削除する
  • いつも使うエイリアスを登録しておく
Column エイリアスを保存する
パス名展開 * ? []
  • bashでパス名展開に使用できる記号
  • 「*」は任意の文字列,「?」は任意の1文字
Column ブレース展開 { }
  • 文字を限定した指定をする [ ]
  • 各種展開を組み合わせてみよう
  • 「.*」でドットファイルを表示する
  • パス名展開はシェルが行っている
  • echoコマンドでパス名展開の結果を確認
記号の意味を打ち消す \ ' ' " "
  • \」 と「' '」と 「" "」の違い
ターミナルで使えるキーボードショートカット よく使う操作
  • ターミナルウィンドウ関係の操作
  • 表示や実行を制御する操作
  • ヒストリと行内編集関係

6.3 bashの設定 設定ファイル/環境変数/シェル変数

bashの設定ファイル ユーザ設定は「~/.profile」「~/.bash_profile」へ
  • システム全体用の設定ファイルと個人用/ユーザ固有の設定ファイル
  • 「~/.profile」と「~/.bash_profile」の違い
  • 「~/.bash_profile」の作成と編集
  • テキストエディットを使う際の注意
    • [注意❶]標準テキストで保存する
    • [注意❷]スマート引用符をOFFにする
  • 設定ファイルの動作確認 sourceコマンド
シェルの起動方法と設定ファイルの使い分け インタラクティブシェル,ログインシェル,ノンインタラクティブシェル
  • 設定ファイルは起動方法によって異なる
  • なぜ異なる設定ファイルを使用するのか
  • bashの設定ファイルはどう読み込まれる?
Column リッチテキスト textutilコマンドで標準テキストに変換
bashの設定例 エイリアス,プロンプトの表示と色の例
  • エイリアスを設定する
  • プロンプトの表示内容を変更する
  • プロンプトの色を変更する
  • シェルオプションでリダイレクトによる上書きを禁止する
Column macOS独自のコマンドを探す
環境変数とシェル変数 シェルやコマンドの動作を変える
  • 「変数」って何? 変数の役割,参照方法
  • シェル変数は,環境変数とどう違う?

6.4 コマンドの基礎知識 PATH/オプション/man

環境変数「PATH」とコマンドの優先順位 エイリアス,ビルトインコマンド,外部コマンド
  • コマンドを実行するにはパスが必要
    • PATHの役割
    • PATHの確認 PATHに登録されているディレクトリ
    • PATHに登録されているディレクトリの使い分け
  • シェルに組み込まれているコマンド ビルトインコマンド
  • コマンドの優先順位
  • 「何」が実行されているのかを知るには typeコマンド
オプションと引数 指定のルール
  • ショートオプションとロングオプション
  • オプションの組み合わせ方
  • 引数があるオプション
  • ヘルプやバージョンを表示するオプション
man コマンドのマニュアルを確認
  • manコマンドでマニュアルを表示する
  • ターミナルのメニューでマニュアルを参照する
  • manで表示されるマニュアルの構成
  • SYNOPSIS(書式)の読み方
    • SYNOPSIS内の「[ ]」は省略可能であることを表す
    • 「...」は複数指定可能であることを表す
    • 「¦」はどちらかを選択することを示す
  • ビルトインコマンドのヘルプ helpコマンド
whatis/apropos コマンドの検索
  • コマンドの検索方法
  • 概要で使われている単語で検索する whatisコマンド
  • 単語の一部も含めて検索する aproposコマンド
Column マニュアルの章番号

第7章 ファイルとディレクトリの操作

7.1 カレントディレクトリの移動/検索

pwd カレントディレクトリの表示
    • 物理名と論理名
cd カレントディレクトリの移動
ls ファイルリストの表示
    • 詳細情報を表示する -l
    • ディレクトリやシンボリックリンクの情報を表示する -l -d
    • ファイルの種類を表示する -F
    • 色付きで表示する -G LSCOLORS
    • ドットファイルを表示する -a -A
    • サブディレクトリの中も表示する -R
    • ファイルの更新日で並べ替える -t
find ファイルの検索
    • 検索するディレクトリの階層を指定するには -maxdepth
    • 検索対象外とする条件を加えるには -prune
    • ファイルを検索して削除する -exec -ok
which コマンドの検索
    • 「`」(バッククォート)と組み合わせて実行する
type シェルが実行しているコマンドの検索

7.2 作成/削除/コピー/移動/同期

mkdir ディレクトリの作成
    • ディレクトリ下にディレクトリを作る -p
rmdir 空のディレクトリの削除
rm ファイルやディレクトリの削除
    • ディレクトリを削除する -R
    • 確認メッセージを表示せずに削除する -f
    • -R(-r)オプションを使用する際の注意点
mv ファイルやディレクトリの移動/名前の変更
    • mvでファイル名を変更する際の注意点
    • mvでディレクトリの移動/名前の変更
cp ファイルやディレクトリのコピー
    • コピー先にディレクトリを指定する
    • ディレクトリをコピーする -R
    • コピー先のディレクトリがある場合の注意点
ln シンボリックリンクの作成
Column ディレクトリへのシンボリックリンクの補完方法を変更する
rsync ディレクトリの同期
    • ファイルの削除も同期する

7.3 属性や種類の確認/変更

stat 属性の表示
Column GPLとBSDライセンス
chmod パーミッションの変更
    • パーミッションを表すアルファベットと数値
    • パーミッションとマスク値
    • デフォルトのパーミッション
    • chmodとデフォルトのパーミッション
    • ACLの操作
xattr 拡張属性の表示/変更
Column 特別なパーミッション
chflags ファイルフラグの変更
    • ファイルを「変更禁止」にする
chown 所有者/グループの変更
chgrp 所有グループの変更
touch ファイルやディレクトリの最終更新日と最終アクセス日の変更
    • touchによるファイルの作成
    • 新規ファイルを作りたくない場合
file ファイルの種類の確認
Column さまざまな変換コマンド
sips 画像の情報取得/変換
    • 複数のファイルをまとめて変換する

7.4 圧縮/展開

zip ZIP形式での圧縮
    • パス名展開を使用した場合の注意点
    • サブディレクトリも含めて圧縮する
    • 条件に合うファイルを探してZIPファイルにする -i
    • findコマンドと組み合わせてZIPファイルにする -@
    • ZIPファイルを作成して元のファイルを削除する -m
unzip ZIPファイルの展開
    • 一部のファイルだけを展開する
tar アーカイブの作成/展開
Column ファイル名を指定するオプション
gzip/gunzip ファイルの圧縮/伸張
    • 圧縮/伸張だけを行うコマンド
Column xz(tar.xz)形式の圧縮と展開
Column フォルダ名のローカライゼーション

第8章 テキスト処理

8.1 テキストファイルの表示

cat ファイルの表示/複数ファイルの連結
    • ファイルを連結する
    • キーボードから入力した内容をファイルに保存する
head 先頭部分の表示
tail 末尾部分のみ表示
more/less 1画面ごとの表示
    • コマンドの実行結果を表示しながらファイルにも保存する
    • 表示内容を検索する
strings バイナリファイルの可読部分のみ表示
say テキストの読み上げ
    • 他の話者(他の言語)を指定する -v
Column バイナリファイルを表示する xxdコマンドによる16進ダンプ
wc テキストファイルの行数/単語数/文字数
    • 実行結果を数える
    • 文字数を数える

8.2 並べ替え/重複行の除去/比較

sort テキストの並べ替え
    • 数の大小で並べ替える
    • フィールドを指定して並べ替える
uniq 重複行の除去/抽出
diff テキストファイルの比較
    • context形式
    • unified形式
cmp ファイルの比較
    • バイナリファイルを比較する
Column infoでマニュアルを読む

8.3 テキストの加工

cut 文字の切り出し
    • CSVファイルから必要な部分だけを取り出す
tr 文字列の置き換え
    • 特定の文字や制御文字を削除する
    • 固定長のデータをCSVやタブ区切りにする
expand/unexpand タブ/スペースの置き換え
    • タブの役割
    • タブストップを指定して変換する
    • インデントをタブにする
iconv テキストエンコーディング(文字コード)の変換
    • 使用できるテキストエンコーディングを確認する

8.4 高度なテキスト処理

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

第9章 コマンド実行とプロセス管理

9.1 管理者権限での実行/ユーザ情報の確認

su 実行ユーザの切り替え
sudo コマンドを他のユーザとして実行
    • sudoの設定ファイルを編集する visudo
groups ユーザが所属しているグループを表示
    • システム環境設定でグループを追加した場合
id ユーザの識別情報を表示
    • 実ユーザ/実グループと実効ユーザ/実効グループ
whoami 自分自身の現在のユーザ名を表示
Column ユーザIDとグループID

9.2 プロセス管理/ジョブ管理

ps 実行中のプロセスの表示
    • 表示内容を調整する
    • 全ユーザのプロセスをユーザ名や時刻入りで表示 aux
top 実行中のプロセスの監視/表示
Column launchdとlaunchctlコマンド サービスプロセスを管理する
nice 優先度を指定しながらコマンドを実行
renice 実行中のプロセスの優先度を変更
Column システムの状態を表示するコマンド iostatコマンド
kill プロセスの終了/再起動
    • 終了以外のシグナルを送信する
killall 名前によるプロセスの終了/再起動
exec 実行中のシェルの切り替え
Column プロセスの親子ツリーを表示する pstreeコマンド

9.3 システムの終了/再起動

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

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

10.1 システムの情報の表示

uname OSの名前やバージョンを表示
sw_vers macOSのバージョンの表示
hostinfo システム情報の表示
date システム時刻の表示/変更
cal カレンダーの表示

10.2 環境変数の設定/表示

env/printenv 環境変数の表示/設定
    • 環境変数を設定してコマンドを実行する
echo 変数の値の確認
    • 引用符の扱い " " ' '
    • 引用符の種類による違い
export 環境変数の設定
set シェルの設定の変更
    • シェルオプションの設定内容を一覧表示する
    • シェル変数を一覧表示する
    • grepコマンドでシェル変数を絞り込む
Column コマンドを複数行に分けて入力する 引用符と複数行の入力

10.3 ネットワークの状況の確認

ifconfig ネットワーク設定の表示
    • IPv4とIPv6 304
    • ローカルIPアドレスとグローバルIPアドレス
    • グローバルIPアドレスを確認する
Column さまざまなネットワークコマンド❶ nslookup,route,traceroute
ping 接続相手の確認
    • pingで応答がない/応答までに時間がかかる場合
Column さまざまなネットワークコマンド❷ netstat,wdutil
scutil ホスト名の表示/設定
    • macOSの3つの名前
Column wget Webサイトをまるごとダウンロードする
hostname ホスト名の表示/設定
Column ファイル共有のプロトコル

10.4 リモート接続とダウンロード

ssh セキュアな通信によるリモート接続
    • ssh-keygenコマンドと公開鍵方式 GitHubにSSH接続するための例
curl ファイルのダウンロード
    • ファイルを連番で指定する

10.5 システムのメンテナンス

defaults アプリケーション設定の一覧表示/操作
    • ドメインを一覧表示する
    • ドメインのキーを一覧表示する
Column Macアドレス ネットワークのハードウェアアドレス
plutil プロパティリストの表示/操作
    • アプリケーションのバージョンを表示する
mdutil Spotlightのインデックスの管理
Column Spotlight検索を行うコマンド
tmutil Time Machineの操作
    • バックアップ先とバックアップ状況を確認する
    • バックアップからファイルを復元する
    • ローカルスナップショットを有効/無効にする
diskutil ディスクの状況の確認/修復
    • ボリュームのマウントを解除する
df ディスクの空き領域の確認
Column mount/umountコマンド
du ディレクトリのディスク使用量の確認
    • ディレクトリ全体だけを集計する
    • シンボリックリンクの注意点
    • ドットファイルの注意点
softwareupdate ソフトウェアアップデート
Column AppleScriptをコマンドラインで動かそう

第11章 Homebrewによるパッケージ管理

11.1 パッケージ管理とHomebrewの基礎知識

[入門]パッケージ管理システム 役割とおもな選択肢
  • パッケージ管理システムの役割
    • インストール
    • アップデート
    • アンインストール
  • どのようなパッケージ管理システムがあるか
Column 「ライブラリ」と「依存関係」
Homebrewの基礎知識 インストール,ディレクトリ,基本用語
  • Homebrewのインストール
    • MacPortsのアンインストール
    • インストールコマンドの実行
  • Homebrewの実行コマンド
  • Homebrewのディレクトリと用語
    • Homebrewのディレクトリ
    • Formula
    • Cellar
    • Cask
  • Homebrewのリポジトリ
  • Homebrewのマニュアル
Column Homebrewの用語

11.2 インストール/更新/アンインストール

brew install/brew cask install パッケージのインストール
    • Caskのパッケージをインストールする
    • 他のリポジトリにあるパッケージをインストールする
    • インストールオプションを確認する
    • インストールオプションを指定してインストールする
Column サーバプログラムの導入 brew services
brew list/brew cask list インストールされた内容の確認
    • caskにインストールされたパッケージの場合
Column Cellerの中を見てみよう
brew upgrade パッケージの更新
    • 古いバージョンのファイルを削除する
brew uninstall パッケージのアンインストール
brew unlink/link/switch/prune リンクの操作
    • パッケージを一時的に無効化する brew unlink
    • パッケージを有効化する brew link
    • 使用するバージョンを切り替える brew switch
    • バージョンを元に戻す brew switch
    • デッドリンクを削除する brew prune
Column 同名コマンドをインストールした場合の注意点 hashコマンド

11.3 パッケージの検索/情報の確認

brew search パッケージ(Formula)の検索
brew info/home/cat パッケージの情報の確認
brew deps/brew uses 依存関係の確認
Column GUIベースでHomebrew Cakebrew

11.4 Homebrew全体の管理

brew info/brew list インストールされているパッケージの確認
    • Caskのパッケージを一覧表示する
    • ディレクトリを直接確認する
Column ライブラリ用のパッケージ管理システム Pythonの例
brew cleanup キャッシュファイルの削除
    • 手動でキャッシュを削除する rmコマンドの利用
    • キャッシュファイルを確認してから削除する
Column Homebrew全体をアンインストールする
brew config/update/doctor Homebrew環境の確認とアップデート
Column ソースコードからのインストール

著者プロフィール

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

著者
1990年代,生産管理ソフトウェアの開発およびサポート業務/セミナー講師を担当。書籍および雑誌での執筆活動を経て㈱マックス・ヴァルト研究所に入社,マーケティングリサーチの企画および実査を担当。その後,PCおよびMicrosoft Officeのeラーニング教材作成/指導,新人教育にも携わる。おもな著書は『図解でわかるLinuxのすべて』(日本実業出版社),『シェルの基本テクニック』(IDGジャパン),『Accessではじめるデータベース超入門[改訂2版]』(技術評論社)など。


新居雅行(にいまさゆき)

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