忘れやすいのでターミナルの基本情報をまとめたいと思います。
普通にMacを使用していたらあまり使う機会はないかもしれませんが、ターミナルでのみ出来る機能もありますので覚えておくとよいかと思います。環境はbashになります。
ターミナルとは
CUI(Character User Interface)を使用して端末に指示を出すアプケーションです。
CUIとはなんぞや?となるかもしれませんが、普段パソコンを使用していてマウスなどでウィンドウからメニューを選択したりアイコンをクリックしたりして指示を出す方法をGUI(Graphical User Interface)と呼びます。
GUIに対してキーボードから「コマンド」(命令)を入力して指示を出す方法をCUIと呼びます。
User Interface(ユーザーインターフェイス)とはユーザーとコンピューターを接続するための仕組みを指します。
状況によってはGUIを利用するよりもCUIで指示を出す方が早く、またCUIでしかできないこともあります。
ターミナル起動方法
⌘ command+spaceのSpotlight検索から「ターミナル」と検索するか、アプリケーション➡︎ユーティリティ➡︎ターミナル.appで起動します。
よく使用する場合はDockに追加しとくと便利です。
Dockを有効活用したいという方は下記の記事を見てみると面白いと思います。
ショートカット
ターミナルで使用できる基本的なショートカットです。
覚えておくと入力が捗ります。
カーソル移動
⌃ control+Aカーソルを行頭に移動
⌃ control+Eカーソルを行末に移動
⌥ option+➡︎または⎋ esc+Fカーソルを1単語右に移動
⌥ option+⬅︎または⎋ esc+Bカーソルを1単語左に移動
削除
⌃ control+Uカーソルの位置から行頭まで切り取り
⌃ control+Kカーソルの位置から行末まで切り取り
⌃ control+Wカーソルの位置の1単語切り取り
⌃ control+Y切り取った内容を貼り付け
履歴
⬆︎1回前のコマンド履歴(続けて押すとさらに前の履歴を表示)
⬇︎1回後のコマンド履歴
⌃ control+R過去に使用したコマンド検索
その他便利なショートカット
⌃ control+L画面をクリア
tab入力補完機能使用(使用方法は下に記載します)
⌃ control+Z実行中のジョブを一時停止(jobsコマンドで停止中のジョブを表示)
⌃ control+D入力を終了(入力待ちの状態を終了するので最後の手段)
tab補完(入力補完機能)
bashにはコマンドやテキストの入力を補完してくれる機能があります。
非常に便利ですので覚えておくと良いかと思います。
使い方としては補完対象が1つの場合は、入力途中でtabを1回入力すれば残りのコマンドもしくはディレクトリ名が自動で入力されます。
補完候補がいくつかある場合はtabを2回入力すると候補が一覧表示されます。下記に例を紹介します。
tab補完機能
wh ⬅︎ここでtabキーを2回入力
what whatis whereis which while who whom whois ⬅︎コマンドの一覧が表示
whatis D ⬅︎ここでtabキーを2回入力
Desktop/ Documents/ Downloads/ Dropbox/ ⬅︎ディレクトリの一覧が表示
whatis Doc ⬅︎ここでtabキーを1回入力すると自動補完される
whatis Documents
このようにtabを使うことによって入力が大幅に省けます。
ルートディレクトリ、ホームディレクトリ、絶対パス、相対パス
コマンド説明の前にホーム/ルートディレクトリ(フォルダ)や絶対/相対パスの相関関係説明をします。
ルートディレクトリとホームディレクトリ
ディレクトリの基本的な構造を説明します。
OS XのディレクトリはMacintosh HD(通常)直下のルートディレクトリを起点として拡がるツリー構造になっています。
ホームディレクトリ(ログインしているユーザーの情報が格納されているディレクトリ)はルートディレクトリのユーザに属しています。
ターミナル内でルートディレクトリは「/」(スラッシュ)で入力します。ホームディレクトリは「~」(チルダ)で入力します。例えば「ホームディレクトリ」内の「デスクトップ」の情報を見たい場合は下記のようにコマンドを入力します。(ホームディレクトリにいない場合)
チルダ展開
ls ~/Desktop
このようにわざわざホームディレクトリ名を入力しなくても良いので便利です。これを「チルダ展開」と呼びます。
「ルートディレクトリ」内のシステムの情報の場合は下記のように入力します。
ls /System
パス
パスはディレクトリやファイルの場所を示す文字列になり、住所と考えてもらえば良いです。
パスには「絶対パス」と「相対パス」があります。
絶対パス
絶対パスはルートディレクトリ(/)から始まる位置の指定方法です。
例えばホームディクトリ(Macuser)のダウンロード内の「Test.txt」というファイルの絶対パスは下記のようになります。
絶対パス
/Users/Macuser/Downloads/Test.txt
相対パス
相対パスは現在いるディレクトリ(カレントディレクトリ)から位置を指定する方法です。階層が深い場合は絶対パスが長くなってしまうので、そんな時は相対パスが便利です。
「.」(ピリオド)がカレントディレクトリ、「..」(ピリオド×2)が一つ上のディレクトリを意味します。
例えばホームディレクトリ(Macuser)のダウンロードがカレントディレクトリの場合、ホームディレクトリ(Macuser)のDropboxにある「Test.txt」と言うファイルへの相対パスは下記のようになります。
相対パス
../Dropbox/Test.txt
ドラッグ&ドロップでパスの入力も可能
ドラッグ&ドロップでパスを入力することができます。
パス入力に不安がある場合は便利かと思います。
コマンド
基本的なコマンドの説明をします。
今回はデフォルト設定であるホームディレクトリに居る(カレントディレクトリ)と仮定して説明します。
macOS Mojave以降ではセキュリティが強化され以前まで使用できたコマンドが実行できないことがあります。
そんな時は「システム環境設定」➡︎「セキュリティとプライバシー」と進み「プライバシー」タブ➡︎「フルディスクアクセス」へターミナルアプリを追加することでコマンドの実行が可能になります。
pwd
現在いるディレクトリ(フォルダ)情報をルートディレクトリからの絶対パスの形で表示します。
pwd
/Users/Macuser
ディレクトリの階層は「/」で区切られ、頭に「/」が付いているのはそこが一番上(ルートディレクトリ)であるということです。
上の例で言うと「User」以下のホームディレクトリ(Macuser)にいる状態を示しています。
cd
指定したディレクトリに移動します。
cd ~/Desktop
pwd
/Users/Macuser/Desktop
上記のようにpwd
で確認するとカレントディレクトリがデスクトップになっていることが確認できます。
ls
現在いるディレクトリの中身をリストアップします。
ls
Applications Documents Library Pictures
一部ですが上記のようにホームディレクトリ内のディレクトリをリストアップします。
下記のように入力するとリストアップしたいディレクトリを指定できます。
ls /Applications
App Store.app Keynote.app Reminders.app
一部になりますが上記のようにアプケーション内のファイルがリストアップされます。
ls -la
rwxr-xr-x+ 25 Macuser staff 850 1 18 17:06 .
drwxr-xr-x 5 root admin 170 10 29 00:49 ..
drwxr-xr-x 5 Macuser staff 170 1 6 16:12 Applications
上記のようにls
コマンドの後に-la
オプションを追加入力するとドットから始まる隠しファイルも表示され、表示されたファイルも詳細な内容になります。-la
のa
の外すと隠しファイルは表示されません。
ls
コマンドのオプションは沢山あります。
ls
コマンドオプションの詳細は下記にまとめていますので興味とお時間がある場合は御確認ください。
df
ディスクの空き容量を調べるコマンドです。
df
Filesystem 512-blocks Used Available Capacity iused ifree %iused Mounted on
/dev/disk2 2176716032 278935488 1897268544 13% 34930934 237158568 13% /
devfs 368 368 0 100% 638 0 100% /dev
map -hosts 0 0 0 100% 0 0 100% /net
map auto_home 0 0 0 100% 0 0 100% /home
現在、13%使用している状態であることがわかります。
df
の後に-g
でギガバイト表示、-m
でメガバイト表示になります。
また-h
を付けると見やすい形で表示してくれるので試してみてください。
mkdir
ディレクトリ(フォルダ)を作成するコマンドです。
デスクトップに「Sample」というフォルダを作成する例です。
mkdir ~/Desktop/Sample
ls ~/Desktop
Sample
cp
ファイルやディレクトリをコピーするコマンドです。
下記では「Sample.txt」を作成してデスクトップにある「Sample」フォルダに「Sample_2.txt」と名前を変更してコピーをするコマンドです。
cp Sample.txt ~/Desktop/Sample/Sample_2.txt
ls ~/Desktop/Sample
Sample_2.txt
デスクトップの「Sample」フォルダに「Sample_2.txt」がコピーされたのが確認できます。
フォルダをコピーする時はcp
の後に-r
を追加します。
cp -r ~/Desktop/Sample ~/Documents/Sample2
これでフォルダ「Sample」はDocuments(書類)に「Sample2」としてコピーされます。
mv
ファイルやディレクトリの移動、または名前の変更を行うコマンドです。
デスクトップの「Sample」フォルダ内「Sample_2.txt」をデスクトップに移動します。
mv Desktop/Sample/Sample_2.txt ~/Desktop
ls ~/Desktop
Sample_2.txt
このようにデスクトップにファイルが移動したのが確認できます。
コピーと同じように、移動先の後に名前を指定するとファイル名を変更して移動できます。
名前を変更するには移動先を同じにしてファイル名を変更すると名前だけが変更になります。
デスクトップに移動した「Sample_2.txt」で試してみます。
mv ~/Desktop/Sample_2.txt ~/Desktop/Sample_3.txt
ls ~/Desktop
Sample_3.txt
このようにデスクトップにあるテキストファイル名が変更されたのが確認できます。
rm
ファイルやディレクトリを削除するコマンドです。
コピーと同じようにディレクトリの場合は-r
を付けます。
rm ~/Desktop/Sample_3.txt
rm -r ~/Desktop/Sample
ターミナルの場合、削除したファイルはゴミ箱に行かないので、消去する前に確認をしたい時は-i
を付けて実行すると削除前に確認できます。
rm -i ~/Desktop/Sample_3.txt
rm -ri ~/Desktop/Sample
examine files in directory desktop/Sample? y
remove desktop/Sample/Sample_3.txt? y
remove desktop/Sample? y
上記のようなメッセージが出るのでy
で削除、n
で削除しないになります。慎重に削除する場合はこのオプションを付けると良いかと思います。
毎回同じオプションを指定して削除する場合はエイリアスを設定するととても便利です。
エイリアスの設定方法は下記をご覧ください。
chmod
ユーザーが所有するファイルやディレクトリのパーミッション(アクセス許可)を設定するコマンドです。
「Sample.txt」を例にして説明します。
ls -l
-rw-r--r-- 1 Macuser staff 7 1 21 10:06 Sample.txt
テキストファイルの詳細を見ると左側に-rw-r--r--
と表示されている部分がファイルのパーミッション(権限)の状態です。詳細はまた別途説明しますが。上記の状態だと該当ファイルに実行権限はありません。
chmod 755 Sample.txt
ls -l
-rwxr-xr-x 1 Macuser staff 7 1 21 10:06 Sample.txt
例として上記のように入力すると「Sample.txt」に実行権限を付与することになります。
詳しく権限付与方法や仕組みを知りたい場合は、下記にまとめていますので御確認ください。
sudo
sudo
は管理者権限でコマンドを実行する際に使います。使用するときは管理者のパスワードが必要になります。
非常に強い権限を持っていますので扱いには注意が必要です。
管理者権限が必要なコマンドをsudo
無しで実行すると、下記のようなメッセージが表示されます。
Operation not permitted
そんな時は下記のコマンドを実行すると断られたコマンドをsudo
付きで実行してくれます。
sudo !!
管理者権限が必要で拒否されたコマンドは再度sudo
を加えてコマンドを入力しなくてはいけなくて、手間なので知っておくと結構便利だったりします。
簡単な使用例は下記のchown
コマンドのように使用します。
chown
ファイルの所有者を変更するコマンドです。
他のユーザーのファイルの所有者を変更することになりますので、変更できるのは「スーパーユーザー」のみになります。
ここで使用できるのは前述したsudo
コマンドです。作成した「Sample.txt」の所有者を変更します。
sudo chown root Sample.txt
Password:
ls -l
-rwxr-xr-x 1 root staff 7 1 21 10:06 Sample.txt
「Sample.txt」ファイルの所有者がルートユーザーになったのを確認できます。
which
コマンドのパスを確認できます。
コマンドをスクリプトなどに組み込む際の確認でよく使用します。
which cp
/bin/cp
man
コマンドの仕組みやオプションの詳細を調べたい時に使用します。
man ls(知りたいコマンド)
英語の表記になりますがコマンド名の由来など詳細が表示されます。
「q」を入力すると終了し、「/」の後に文字を入力するとその文字で検索できます。(検索キーワードが反転表示されます)
以上がターミナルで覚えておきたいショートカットとコマンドです。
また必要なものがあれば追記します。