ターミナル 基本操作

シュル起動しコマンド操作するアプリケーション
ヒーローイメージ

目次
  1. ターミナルとは
  2. ターミナル起動方法
  3. ターミナル画面の見方
  4. ターミナル基本コマンド
  5. ターミナルTIPS
  6. 参考情報

ターミナルとは

  • ターミナルは、macOSに標準搭載されているアプリケーションテキストコマンドを入力してシステム操作することができます。
    • 例えば、ファイルやディレクトリを作成、削除、移動、コピーなどがコマンド操作で実行可能です。
  • ターミナルを使いこなすと、単純操作はもちろんのこと複雑な操作も自動化することが可能です。

ターミナル
図0. ターミナル画面イメージ(背景色は黒に変更しています)

ターミナルとシェルの関係

  • ターミナルは、シェルを起動するアプリで、入力したコマンドをシェルが解釈してOS(オペレーティングシステム)の機能を制御します。
  • ターミナルシェルは密接に関係しており、シェルを使うためには、ターミナルが必要不可欠です。
  • ターミナルは、複数のシェル(zshbash、など)を切り替えて使用することができます。
    • macOS 10.15 Catalina以降、デフォルトで起動するシェルは「zsh」です。それ以前までは「bash」がデフォルトシェルでした。

ターミナル起動方法

  • ターミナルの起動方法について説明します。
  1. いくつか方法はありますが、今回は「spotlight検索」から起動する手順で説明します。

  2. command+spaceを同時に押すと「spotlight検索」が表示されますのでターミナルと入力します。
    すると「ターミナル.app」と表示されるので選択します。

    spotlightでターミナルが表示される
  3. 以下のようにターミナルが起動します。

    • デフォルト設定の背景色は白で、本イメージは背景色、文字色を変更しています。
    ターミナル起動

ターミナル画面の見方

  • ターミナル画面の見方ターミナルの操作方法について説明します。
  1. まず画面の見方についてですが、ターミナルからコマンドを実行するときに見るべき場所は赤枠部分です。

    ターミナルの見方1
    • %より左部分は現在の状態を表示するエリアです。ユーザ名@ホスト名 カレントディレクトリ名の表示形式になっています。

      • %より左部分はプロンプト文字列と呼ばれます。
      • ユーザ名とは、現在のログイン中のユーザ名のことです。
      • ホスト名とは、Macで設定したコンピュータの名前のことです。
      • カレントディレクトリとは、現在のディレクトリのことです。
      Note
      カレントディレクトリの表記が~になっていますが、これは (ログインユーザの)ホームディレクトリ であることを示しています。
    • %より右部分は入力したコマンドを表示するエリアです。

  2. 試しにコマンドを実行してみます。コマンドを実行するためには、コマンド内容を入力returnキーを押してコマンド実行 です。
    ここでは、cd ..と入力しreturnキーを押します。すると以下のイメージ通りに表示内容が変わったと思います。

    • cd ..コマンドの意味については後述します。
    ターミナルの見方2
  3. 赤枠部分が現在行で、ここに再度コマンドを入力することができます。

    • %より左部分のを見てください。カレントフォルダパスが変更されています。
      これは1つ前の手順でコマンドを実行した結果、カレントフォルダパスが変更されたことを意味しています。
    ターミナルの見方3
  4. 次にsw_versと入力しreturnキーを押します。すると以下のとおりの表示になったかと思います。

    ターミナルの見方4
  5. 以下の赤枠部分がsw_versコマンドの実行結果です。

    • sw_versコマンドは「Macのバージョンを表示する」コマンドです。
    ターミナルの見方5
  6. コマンドを実行する場合、コマンドに対してパラメータを指定することができます。
    実は前手順で実行したcd ....部分こそがパラメータになります。つまりcd ..は「cdコマンドに..というパラメータを指定して実行している」ことになります。

  7. ターミナル画面の見方とコマンドを実行する流れについての説明は以上です。

    • ターミナル上の表示を消したい場合はclearコマンドを実行することで消すことができます。

ターミナル基本コマンド

  • 本章の内容は、以下の環境で動作確認をしています。

    • Apple M2 / macOS 13.0 Ventura
    • zsh
  • ターミナルでコマンド操作する上で最低限把握しておくべきコマンドについて解説します。

    • この後の説明で出てくるパラメータについてですが、本章では基本的な内容に絞って説明しています。
Note

本章の内容は、ターミナルから起動されたシェルの基本コマンドに関する解説になります。
今回はターミナルのデフォルトシェルである「zsh」にて動作確認を実施しています。
現在起動中のシェルを確認する場合は、以下のコマンドの実行結果から確認可能です。/bin/zshと表示されていれば現在のシェルは「zsh」であることを意味しています。

実行内容
echo $SHELL
実行結果
/bin/zsh

pwd : カレントディレクトリパス表示

  1. pwdコマンドは、カレントディレクトリのパスを表示するコマンドです。

    コマンド書式
    pwd
  2. 実行するとカレントディレクトリのパスが表示されます。

    実行内容
    pwd
    実行結果
    /Users/username
    Note
    ここでは/Users/username(=ホームディレクトリ)がカレントディレクトリのパスになります。

cd : カレントディレクトリ変更

  1. cdコマンドは、カレントディレクトリを変更するコマンドです。

    コマンド書式
    cd ディレクトリパス
  2. ディレクトリのパス」を指定し実行するとカレントディレクトリが指定したディレクトリに変更されます。

    • cdコマンドの実行後のpwdコマンドでもカレントディレクトリが指定したディレクトリに変更されていることが確認できます。
    実行内容/実行結果
    username@mac ~ % cd /Users/Users
    
    username@mac /Users % pwd
    /Users
    
    
  3. ..を指定すると、(1つ上の)親ディレクトリにカレントディレクトリが変更されます。

    • 直後のpwdコマンドでもカレントディレクトリが1つ上の親ディレクトリに変更されていることが確認できます。
    実行内容/実行結果
    username@mac /Documents/work % cd ../Documents
    
    username@mac /Documents % pwd
    /Documents
    

ls : ファイル・ディレクトリ一覧表示

  1. lsコマンドは、指定したディレクトリ内のファイルやディレクトリを一覧表示するコマンドです。 ディレクトリのパスの指定を省略するとカレントディレクトリ内のファイルやディレクトリを一覧表示します。

    コマンド書式
    ls [オプション] [ディレクトリパス]
    オプション 説明
    -a 隠しファイル・ディレクトリも含めてすべて表示します。
    -l 一覧が縦のリスト形式で表示します。所有者名、グループ名、サイズ、タイムスタンプ、などの情報も併せて表示します。
    -r ソートの順序を逆順にする。
    -t 一覧をタイムスタンプの降順でソートする。
  2. ディレクトリのパス」を指定して実行すると指定したディレクトリ内のファイルやディレクトリの一覧が表示されます。

    実行内容
    ls sample
    実行結果
    temp.txt	temp2.txt
    Note
    上記より「sampleディレクトリ」内に「temp.txt」「temp2.txt」の2つのファイルが格納されていることが確認できます。
  3. オプションに-lを指定すると、以下の通りファイルやディレクトリの一覧が縦に並んで表示されるため、非常に見やすくなります。

    • 筆者の経験上、lsコマンドを利用する場合は-lを指定するケースがほとんどです。
    実行内容
    ls -l
    実行結果
    total 8
    drwxr-xr-x   4 username  staff   128  1  4 22:15 Code
    drwx------+  8 username  staff   256  1  4 22:51 Desktop
    drwx------+  3 username  staff    96 12 31 21:21 Documents
    drwx------+  5 username  staff   160  1  5 07:53 Downloads
    drwx------@ 81 username  staff  2592  1  3 20:22 Library
    drwx------   3 username  staff    96 12 31 21:21 Movies
    drwx------+  4 username  staff   128  1  1 08:03 Music
    drwx------+  4 username  staff   128 12 31 21:22 Pictures
    drwxr-xr-x+  4 username  staff   128 12 31 21:21 Public
    -rwxr-xr-x   1 username  staff   172  1  4 22:31 resize
    
    
  4. オプションに-aを指定すると、隠しファイルや隠しディレクトリも含めて一覧表示されます。

    実行内容
    ls -a
    実行結果
    .      .config      .pyenv      .zcompdump    Code      Movies
    ..      .lesshst    .python_history    .zprofile    Desktop      Music
    .CFUserTextEncoding  .local      .ssh      .zsh_history    Documents    Pictures
    .DS_Store    .npm      .viminfo    .zsh_sessions    Downloads    Public
    .Trash      .nvm      .vscode      .zshrc      Library      resize
    
    
  5. オプションは複数同時に指定することができます。例えば-a-lを同時に指定したい場合は-alと指定します。

    実行内容
    ls -al
    実行結果(一部)
    total 208
    drwxr-x---+ 30 username  staff    960  1  5 09:48 .
    drwxr-xr-x   5 root      admin    160 12 31 21:21 ..
    -r--------   1 username  staff      7 12 31 21:21 .CFUserTextEncoding
    -rw-r--r--@  1 username  staff  14340  1  5 09:49 .DS_Store
    drwx------+ 10 username  staff    320  1  4 22:51 .Trash
    drwx------   4 username  staff    128  1  5 07:53 .config
    -rw-------   1 username  staff     20  1  5 08:49 .lesshst
    drwx------@  3 username  staff     96  1  3 20:57 .local
    (以下省略)
    
    
  6. 前手順の結果に対して、表示の並び順を「タイムスタンプの降順」にしたい場合は-altと指定します。

    実行内容
    ls -alt
    実行結果(一部)
    total 208
    -rw-r--r--@  1 username  staff  14340  1  5 09:49 .DS_Store
    drwxr-x---+ 30 username  staff    960  1  5 09:48 .
    -rw-------   1 username  staff     20  1  5 08:49 .lesshst
    -rw-------   1 username  staff   3952  1  5 08:00 .zsh_history
    drwx------   4 username  staff    128  1  5 07:53 .config
    drwx------+  5 username  staff    160  1  5 07:53 Downloads
    drwx------  23 username  staff    736  1  5 07:52 .zsh_sessions
    drwx------+  8 username  staff    256  1  4 22:51 Desktop
    (以下省略)
    
    
  7. 前手順の結果に対して、表示の並び順を「タイムスタンプの昇順」に表示したい場合は-altrと指定します。

    実行内容
    ls -altr
    実行結果(一部)
    total 208
    drwxr-xr-x   5 root      admin    160 12 31 21:21 ..
    drwxr-xr-x+  4 username  staff    128 12 31 21:21 Public
    drwx------   3 username  staff     96 12 31 21:21 Movies
    drwx------+  3 username  staff     96 12 31 21:21 Documents
    -r--------   1 username  staff      7 12 31 21:21 .CFUserTextEncoding
    drwx------+  4 username  staff    128 12 31 21:22 Pictures
    drwx------@  3 username  staff     96  1  3 20:57 .local
    (以下省略)
    
    

touch : ファイル新規作成

  1. touchコマンドは指定したファイルのタイムスタンプ情報を変更するためのコマンドです。なのですが、touchコマンドにはもう1つの動作があり、指定したファイルが存在しない場合は空ファイルを新規作成します。経験上、後者の動作を利用するケースの方が多いです。

    コマンド書式
    touch ファイルパス
  2. 存在しないファイルパス」を指定すると指定したファイルが新規作成されています。

    • touchコマンド実行前後のls -lコマンドでファイルが新規作成されていることが確認できます。
    実行内容/実行結果
    username@mac work % ls -l
    total 0
    
    username@mac work % touch sample.txt
    username@mac work % ls -l
    total 0
    -rw-r--r--  1 username  staff  0  1 05 10:00 sample.txt
    
    

cat : ファイル中身表示

  1. catコマンドは、ファイルの内容を表示するコマンドです。

    コマンド書式
    cat ファイルパス
  2. ファイルパス」を指定し実行すると指定したファイルの内容が表示されます。

    実行内容
    cat sample.txt
    実行結果
    これはサンプルです。

echo : 文字列や変数の内容を表示

  1. echoコマンドは、指定した文字列や変数の中身を表示するコマンドです。

    コマンド書式
    echo パラメータ
  2. 文字列」を指定し実行すると文字列が表示されます。

    実行内容
    echo sampletext
    実行結果
    sampletext
  3. 変数」を指定し実行すると変数の内容が表示されます。

    実行内容
    echo #SHELL

    実行結果
    /bin/zsh

    
    
  4. echoコマンドはよく>(リダイレクト)と同時に用いることが多いです。

    • 1行目のtouchコマンドで「temp.txt」という空ファイルを作成しています。
    • 3行目のechoコマンドで表示したテキストを>を使って「temp.txt」に「test」という文字を書き込んでいます。
    • 5行目のcatコマンドで「temp.txt」の中身を表示しています。「test」という文字が書き込まれれていることが確認できます。
    実行内容/実行結果
    username@mac work % touch temp.txt
    username@mac work % echo test > temp.txt
    username@mac work % cat temp.txttest
    
    
    Note
    >(リダイレクト)についてはここでは詳しく説明しません。「echoコマンドの内容をファイルに書き込むために利用されるもの」ぐらいの理解で一旦は留めてもらえればと思います。

open : ファイルを開く

  1. openコマンドは、指定したファイルパスに関連付けされたソフトウェアでファイルを開くコマンドです。

    • 例えば、指定したパスが「テキストファイルのパス」ならば「テキストエディタ」が起動します。
      指定したパスが「ディレクトリのパス」ならば「Finder」が起動します。
    コマンド書式
    open ファイルパス・ディレクトリパス
  2. コマンドに慣れていない方が、コマンド操作の中でテキストファイルを編集したい場合には、openコマンドを使ってテキストエディタから編集するのがおすすめです。

    実行内容
    open sample.txt
    openコマンドから起動されたテキストエディット
    図1. openコマンドから起動されたテキストエディット

mkdir : ディレクトリ作成

  1. mkdirコマンドは、指定したディレクトリのパスにディレクトリを作成するコマンドです。

    コマンド書式
    mkdir ディレクトリパス
  2. 相対パスでディレクトリ」を指定し実行すると指定したディレクトリが作成されます。

    • mkdirコマンドの実行前後のcdコマンドで、ディレクトリが作成されていることが確認できます。
    実行内容/実行結果
    username@mac work % cd sample
    cd: no such file or directory: sample
    
    username@mac work % mkdir sample
    username@mac work % cd sample
    username@mac sample %
    
    
  3. 絶対パスでディレクトリ」を指定し実行しても指定したディレクトリが作成されます。

    • mkdirコマンドの実行前後のcdコマンドで、ディレクトリが作成されていることが確認できます。
    実行内容/実行結果
    username@mac work % pwd
    /Users/username/work
    
    username@mac work % cd sample
    cd: no such file or directory: sample
    
    username@mac work % mkdir /Users/username/work/sample
    username@mac work % cd sample
    username@mac sample %
    
    

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

  1. rmコマンドは、指定したパスのファイルやディレクトリを削除するコマンドです。

    コマンド書式
    rm [オプション] ファイルパス・ディレクトリパス
    オプション 説明
    -d ディレクトリを削除します。
    -i 削除前に削除確認をします。
    -r 空ではないディレクトリも削除する。
  2. ファイルパス」を指定し実行すると指定したファイルが削除されます。

    • rmコマンドの実行前後の``ls -l`コマンドでファイルが削除されていることが確認できます。
    実行内容/実行結果
    username@mac work % ls -l
    total 0
    -rw-r--r--  1 username  staff  0  1  5 10:00 sample.txt
    
    username@mac work % rm sample.txt
    username@mac work % ls -l
    total 0
    
    
  3. ディレクトリを削除したい場合は-dオプションをつけます。

    • rmコマンドの実行前後のcdコマンドの結果でディレクトリが削除できていることが確認できます。
    • -dオプションなしだとsample: is a directoryと表示され削除に失敗しています。
    実行内容/実行結果
    username@mac work % cd sample
    username@mac sample % cd ..
    
    username@mac work % rm sample
    rm: sample: is a directory
    
    username@mac work % rm -d sample
    username@mac work % cd sample
    cd: no such file or directory: sample
    
    
  4. -dオプションでは空ディレクトリは削除できますが、空ではないディレクトリは削除できません。
    空ではないディレクトリを削除する場合は-rオプションを利用します。

    • rmコマンドの実行前後のls -lコマンドの結果でディレクトリが削除できていることが確認できます。
    • -dオプションだとrm: sample: Directory not emptyと表示されディレクトリ削除に失敗しています。
    実行内容/実行結果
    username@mac work % ls -l sample
    total 0
    -rw-r--r--  1 username  staff  0  1  5 20:00 temp.txt
    -rw-r--r--  1 username  staff  0  1  5 20:00 temp2.txt
    
    username@mac work % rm -d sample
    rm: sample: Directory not empty
    
    username@mac work % rm -r sample
    username@mac work % ls -l sample
    ls: sample: No such file or directory
    
    

cp : ファイル・ディレクトリコピー

  1. cpコマンドは、ファイルやディレクトリをコピーするコマンドです。

    コマンド書式
    copy コピー元ファイルパス コピー先ファイルパス
    オプション 説明
    -i コピーする前に確認をします。
    -r ディレクトリ(とディレクトリの中身)をコピーします。
  2. コピー元ファイルパス」と「コピー先ファイルパス」を指定し実行すると指定したファイルがコピーされます。

    • cpコマンドの実行前後のls -lコマンドの結果でファイルがコピーされていることが確認できます。
    実行内容/実行結果
    username@mac work % ls -l
    total 0
    -rw-r--r--  1 username  staff  0  1  5 20:44 temp.txt
    
    username@mac work % cp temp.txt temp2.txt
    username@mac work % ls -l
    total 0
    -rw-r--r--  1 username  staff  0  1  5 20:44 temp.txt
    -rw-r--r--  1 username  staff  0  1  5 20:45 temp2.txt
    
    
  3. -rオプションを指定し実行すると指定したディレクトリとその中身も含めてコピーされます。

    • cpコマンドの実行前後のls -lコマンドの結果で「sampleディレクトリがその中身(temp.txt)も含めてコピーされている」ことが確認できます。
    実行内容/実行結果
    username@mac work % ls -l
    total 0
    drwxr-xr-x  3 username  staff  96  1  5 21:10 sample
    
    username@mac work % ls -l sample
    total 0
    -rw-r--r--  1 username  staff  0  1  5 21:10 temp.txt
    
    username@mac work % cp -r sample sample2
    username@mac work % ls -l
    total 0
    drwxr-xr-x  3 username  staff  96  1  5 21:10 sample
    drwxr-xr-x  3 username  staff  96  1  5 21:13 sample2
    
    username@mac work % ls -l sample2
    total 0
    -rw-r--r--  1 username  staff  0  1  5 21:13 temp.txt
    
    

history : コマンド履歴表示

  1. historyコマンドは、コマンドの実行履歴を表示するコマンドです。

    コマンド書式
    history
  2. 実行するとコマンドの実行履歴が表示されます。

    実行内容
    history
    実行結果
    496  ls -l
    497  rm -r sample2
    498  clear
    499  ls -l
    500  ls -l sample
    501  cp -r sample sample2
    502  ls -l
    503  ls -l sample2
    504  man
    505  man cp
    506  man cp
    507  man cp
    508  clear
    509  ls -l
    510  cd sample
    511  clear

man : マニュアル表示

  1. manコマンドは、指定したコマンドのマニュアル情報を表示するコマンドです。

    コマンド書式
    help コマンド名
  2. マニュアル情報が見たいコマンド名」を指定し実行するとコマンドのマニュアル情報が表示されます。

    • マニュアル表示を終了したい場合はqを押下します。

ターミナルTIPS

TABキー : パス入力補完

  1. cdコマンドなどでパラメータにディレクトリのパスやファイルのパスを指定する場合、TABキーを押すことで(存在するディレクトリ名・ファイル名であれば)入力補完機能が働きます。具体的には以下のような挙動をします。

    • 入力途中のsaが入力補完されsampleまで入力された状態になっていることが確認できます。
    TABキー押下前
    username@mac work % ls -l
    total 0
    drwxr-xr-x  3 username  staff  96  1  5 21:10 sample
    drwxr-xr-x  3 username  staff  96  1  5 21:13 sample2
    
    username@mac work % cd sa
    
    TABキー押下後
    username@mac work % ls -l
    total 0
    drwxr-xr-x  3 username  staff  96  1  5 21:10 sample
    drwxr-xr-x  3 username  staff  96  1  5 21:13 sample2
    
    username@mac work % cd sample
    

!数字 : コマンド履歴から再実行

  1. !数字を実行すると、コマンド履歴の番号からコマンドを再実行することができます。番号の確認にはhistoryコマンドを利用します。

    実行内容/実行結果
    username@mac sample % history
    496  ls -l
    497  rm -r sample2
    498  clear
    499  ls -l
    500  ls -l sample
    501  cp -r sample sample2
    502  ls -l
    503  ls -l sample2
    504  man
    505  man cp
    506  man cp
    507  man cp
    508  clear
    509  ls -l510  cd sample
    511  clear
    
    username@mac sample % !509ls -l
    total 0
    -rw-r--r--  1 username  staff  0  1  5 21:10 temp.txt
    
    
    Note
    上記ではhistoryコマンドの結果から「509番がls -lであること」が確認できます。

参考情報

Zsh
Zsh 公式サイト
www.zsh.org
リンクカード

コメント


Palette Codeなるべく丁寧にプログラミング関連技術を解説するサイト