ターミナル 基本操作
ターミナルとは
- ターミナルは、macOSに標準搭載されているアプリケーションでテキストコマンドを入力してシステム操作することができます。
- 例えば、ファイルやディレクトリを作成、削除、移動、コピーなどがコマンド操作で実行可能です。
- ターミナルを使いこなすと、単純操作はもちろんのこと複雑な操作も自動化することが可能です。
ターミナルとシェルの関係
- ターミナルは、シェルを起動するアプリで、入力したコマンドをシェルが解釈してOS(オペレーティングシステム)の機能を制御します。
- ターミナルとシェルは密接に関係しており、シェルを使うためには、ターミナルが必要不可欠です。
- ターミナルは、複数のシェル(zsh、bash、など)を切り替えて使用することができます。
- macOS 10.15 Catalina以降、デフォルトで起動するシェルは「zsh」です。それ以前までは「bash」がデフォルトシェルでした。
ターミナル起動方法
- ターミナルの起動方法について説明します。
-
いくつか方法はありますが、今回は「spotlight検索」から起動する手順で説明します。
-
command+spaceを同時に押すと「spotlight検索」が表示されますので
ターミナル
と入力します。
すると「ターミナル.app」と表示されるので選択します。 -
以下のようにターミナルが起動します。
- デフォルト設定の背景色は白で、本イメージは背景色、文字色を変更しています。
ターミナル画面の見方
- ターミナル画面の見方とターミナルの操作方法について説明します。
- Mac
-
まず画面の見方についてですが、ターミナルからコマンドを実行するときに見るべき場所は赤枠部分です。
-
%
より左部分は現在の状態を表示するエリアです。ユーザ名@ホスト名 カレントディレクトリ名
の表示形式になっています。%
より左部分はプロンプト文字列と呼ばれます。- ユーザ名とは、現在のログイン中のユーザ名のことです。
- ホスト名とは、Macで設定したコンピュータの名前のことです。
- カレントディレクトリとは、現在のディレクトリのことです。
Noteカレントディレクトリの表記が~
になっていますが、これは (ログインユーザの)ホームディレクトリ であることを示しています。 -
%
より右部分は入力したコマンドを表示するエリアです。
-
-
試しにコマンドを実行してみます。コマンドを実行するためには、コマンド内容を入力 → returnキーを押してコマンド実行 です。
ここでは、cd ..
と入力しreturnキーを押します。すると以下のイメージ通りに表示内容が変わったと思います。cd ..
コマンドの意味については後述します。
-
赤枠部分が現在行で、ここに再度コマンドを入力することができます。
%
より左部分のを見てください。カレントフォルダパスが変更されています。
これは1つ前の手順でコマンドを実行した結果、カレントフォルダパスが変更されたことを意味しています。
-
次に
sw_vers
と入力しreturnキーを押します。すると以下のとおりの表示になったかと思います。 -
以下の赤枠部分が
sw_vers
コマンドの実行結果です。sw_vers
コマンドは「Macのバージョンを表示する」コマンドです。
-
コマンドを実行する場合、コマンドに対してパラメータを指定することができます。
実は前手順で実行したcd ..
の..
部分こそがパラメータになります。つまりcd ..
は「cdコマンドに..
というパラメータを指定して実行している」ことになります。 -
ターミナル画面の見方とコマンドを実行する流れについての説明は以上です。
- ターミナル上の表示を消したい場合は
clear
コマンドを実行することで消すことができます。
- ターミナル上の表示を消したい場合は
ターミナル基本コマンド
-
本章の内容は、以下の環境で動作確認をしています。
- Apple M2 / macOS 13.0 Ventura
- zsh
-
ターミナルでコマンド操作する上で最低限把握しておくべきコマンドについて解説します。
- この後の説明で出てくるパラメータについてですが、本章では基本的な内容に絞って説明しています。
本章の内容は、ターミナルから起動されたシェルの基本コマンドに関する解説になります。
今回はターミナルのデフォルトシェルである「zsh」にて動作確認を実施しています。
現在起動中のシェルを確認する場合は、以下のコマンドの実行結果から確認可能です。/bin/zsh
と表示されていれば現在のシェルは「zsh」であることを意味しています。
echo $SHELL
/bin/zsh
pwd : カレントディレクトリパス表示
-
pwd
コマンドは、カレントディレクトリのパスを表示するコマンドです。コマンド書式pwd
-
実行するとカレントディレクトリのパスが表示されます。
実行内容pwd
実行結果/Users/username
Noteここでは/Users/username
(=ホームディレクトリ)がカレントディレクトリのパスになります。
cd : カレントディレクトリ変更
-
cd
コマンドは、カレントディレクトリを変更するコマンドです。コマンド書式cd ディレクトリパス
-
「ディレクトリのパス」を指定し実行するとカレントディレクトリが指定したディレクトリに変更されます。
cd
コマンドの実行後のpwd
コマンドでもカレントディレクトリが指定したディレクトリに変更されていることが確認できます。
実行内容/実行結果username@mac ~ % cd /Users/Users username@mac /Users % pwd /Users
-
..
を指定すると、(1つ上の)親ディレクトリにカレントディレクトリが変更されます。- 直後の
pwd
コマンドでもカレントディレクトリが1つ上の親ディレクトリに変更されていることが確認できます。
実行内容/実行結果username@mac /Documents/work % cd ../Documents username@mac /Documents % pwd /Documents
- 直後の
ls : ファイル・ディレクトリ一覧表示
-
ls
コマンドは、指定したディレクトリ内のファイルやディレクトリを一覧表示するコマンドです。 ディレクトリのパスの指定を省略するとカレントディレクトリ内のファイルやディレクトリを一覧表示します。コマンド書式ls [オプション] [ディレクトリパス]
オプション 説明 -a 隠しファイル・ディレクトリも含めてすべて表示します。 -l 一覧が縦のリスト形式で表示します。所有者名、グループ名、サイズ、タイムスタンプ、などの情報も併せて表示します。 -r ソートの順序を逆順にする。 -t 一覧をタイムスタンプの降順でソートする。 -
「ディレクトリのパス」を指定して実行すると指定したディレクトリ内のファイルやディレクトリの一覧が表示されます。
実行内容ls sample
実行結果temp.txt temp2.txt
Note上記より「sampleディレクトリ」内に「temp.txt」「temp2.txt」の2つのファイルが格納されていることが確認できます。 -
オプションに
-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
- 筆者の経験上、
-
オプションに
-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
-
オプションは複数同時に指定することができます。例えば
-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 (以下省略)
-
前手順の結果に対して、表示の並び順を「タイムスタンプの降順」にしたい場合は
-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 (以下省略)
-
前手順の結果に対して、表示の並び順を「タイムスタンプの昇順」に表示したい場合は
-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 : ファイル新規作成
-
touch
コマンドは指定したファイルのタイムスタンプ情報を変更するためのコマンドです。なのですが、touch
コマンドにはもう1つの動作があり、指定したファイルが存在しない場合は空ファイルを新規作成します。経験上、後者の動作を利用するケースの方が多いです。コマンド書式touch ファイルパス
-
「存在しないファイルパス」を指定すると指定したファイルが新規作成されています。
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 : ファイル中身表示
-
cat
コマンドは、ファイルの内容を表示するコマンドです。コマンド書式cat ファイルパス
-
「ファイルパス」を指定し実行すると指定したファイルの内容が表示されます。
実行内容cat sample.txt
実行結果これはサンプルです。
echo : 文字列や変数の内容を表示
-
echo
コマンドは、指定した文字列や変数の中身を表示するコマンドです。コマンド書式echo パラメータ
-
「文字列」を指定し実行すると文字列が表示されます。
実行内容echo sampletext
実行結果sampletext
-
「変数」を指定し実行すると変数の内容が表示されます。
実行内容echo #SHELL
実行結果/bin/zsh -
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
コマンドの内容をファイルに書き込むために利用されるもの」ぐらいの理解で一旦は留めてもらえればと思います。 - 1行目の
open : ファイルを開く
-
open
コマンドは、指定したファイルパスに関連付けされたソフトウェアでファイルを開くコマンドです。- 例えば、指定したパスが「テキストファイルのパス」ならば「テキストエディタ」が起動します。
指定したパスが「ディレクトリのパス」ならば「Finder」が起動します。
コマンド書式open ファイルパス・ディレクトリパス
- 例えば、指定したパスが「テキストファイルのパス」ならば「テキストエディタ」が起動します。
-
コマンドに慣れていない方が、コマンド操作の中でテキストファイルを編集したい場合には、
open
コマンドを使ってテキストエディタから編集するのがおすすめです。実行内容open sample.txt
mkdir : ディレクトリ作成
-
mkdir
コマンドは、指定したディレクトリのパスにディレクトリを作成するコマンドです。コマンド書式mkdir ディレクトリパス
-
「相対パスでディレクトリ」を指定し実行すると指定したディレクトリが作成されます。
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 %
-
「絶対パスでディレクトリ」を指定し実行しても指定したディレクトリが作成されます。
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 : ファイル・ディレクトリ削除
-
rm
コマンドは、指定したパスのファイルやディレクトリを削除するコマンドです。コマンド書式rm [オプション] ファイルパス・ディレクトリパス
オプション 説明 -d ディレクトリを削除します。 -i 削除前に削除確認をします。 -r 空ではないディレクトリも削除する。 -
「ファイルパス」を指定し実行すると指定したファイルが削除されます。
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
-
ディレクトリを削除したい場合は
-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
-
-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 : ファイル・ディレクトリコピー
-
cp
コマンドは、ファイルやディレクトリをコピーするコマンドです。コマンド書式copy コピー元ファイルパス コピー先ファイルパス
オプション 説明 -i コピーする前に確認をします。 -r ディレクトリ(とディレクトリの中身)をコピーします。 -
「コピー元ファイルパス」と「コピー先ファイルパス」を指定し実行すると指定したファイルがコピーされます。
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
-
-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 : コマンド履歴表示
-
history
コマンドは、コマンドの実行履歴を表示するコマンドです。コマンド書式history
-
実行するとコマンドの実行履歴が表示されます。
実行内容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 : マニュアル表示
-
man
コマンドは、指定したコマンドのマニュアル情報を表示するコマンドです。コマンド書式help コマンド名
-
「マニュアル情報が見たいコマンド名」を指定し実行するとコマンドのマニュアル情報が表示されます。
- マニュアル表示を終了したい場合はqを押下します。
ターミナルTIPS
TABキー : パス入力補完
-
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
- 入力途中の
!数字 : コマンド履歴から再実行
-
!数字
を実行すると、コマンド履歴の番号からコマンドを再実行することができます。番号の確認には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
であること」が確認できます。
コメント