今さら聞けないターミナルの使い方

プログラミングを学習し始めるとターミナルを使う機会が増えます。積極的に使って慣れていこう!

Mac, terminal.app

CUI

コンピューターが世の中に普及しはじめた、MS-DOS、OS2、UNIXなどのOSが主流だった頃、コンピューターを使う時はコマンドと呼ばれる命令文を入力をしていました。

コマンドによりコンピューターの操作や設定などをしていました。

このコンピューターの操作はキャラクタユーザーインタフェース (character user interface)もしくは、コンソールユーザーインタフェース (console user interface)を略して「CUI」と言われています。

現在は、マウスを使ったり画面をタッチして操作するグラフィカルユーザーインターフェース(Graphical User Interface)を略して「GUI」が主流となっていますが、各OSはCUIで使用することもできるようになっています。

それは、画面で操作するには面倒な繰り返し作業を簡単にしたり、画面を用意せずにコマンド入力だけで単純に高速に動作させることができるなどの利点があるからです。プログラミング学習もGUIを用いた統合開発環境(IDE)を使うこともできますが、はじめの頃はコマンド入力でプログラムを実行しながら学習する方が簡単な場合もあります。

SDKを使うときにCUIでの利用方法を提供しているものも多くあります。

CUIを使うことに慣れておいた方が学習を進めていくのに有利になるでしょう。

ターミナル

Mac、Linux、WindowsでCUIを使う時は「ターミナル」を起動します。

WindowsではコマンドプロンプトやPowerShellを使ってCUIで利用しますが、Windows10では「Windows Terminal」が使えるようになっています。

Linuxはターミナルを使って操作することが最も多い作業かもしれません。

以下は、macOSの使い方を例に説明します。

macOSはカーネルがUNIXをベースとしているため、MacのターミナルはUNIXやLinuxのターミナルととてもよく似ています。

なのでターミナルで使うコマンド類もほとんどUNIX系のものと同じとなっています。

ターミナルの起動はランチパッドから[その他]-[ターミナル]をクリックするか、

もしくは、Spotlight検索フィールドに「terminal.app」と入力すると結果に表示されるターミナルをクリックして実行します。

ターミナルを起動すると以下の画面が表示されて、コマンド入力待ちとなります。

起動後はターミナルをDockに追加しておけば次回以降は簡単に起動出来るようになります。

ターミナル起動直後はディレクトリが「〜」となっています。

これはホームディレクトリ「/Users/username」を示しています。

ディレクトリは常にカレントディレクトリ名を表示します。

ターミナルを終了するには、メニューから「ターミナルを終了」を選択するか、⌘Qを入力すると終了します。

よく使うコマンド

ターミナルを利用するときによく使うコマンドをいくつか紹介します。

pwd

現在のディレクトリ(カレントディレクトリ)の場所を確認する

書式

pwd

オプション

※オプションはありますが、オプションなしで使用することがほとんどなので省略します。

例)
$ pwd カレントディレクトリのパスを絶対パスで表示

cd

カレントディレクトリの移動

書式

cd directory

オプション

ディレクトリ

指定したディレクトリに移動。directoryは相対パス,絶対パスのどちらでも指定可能。

記号による表記

/

ルートディレクトリ

.

現在のディレクトリ

..

親ディレクトリ

~/

ホームディレクトリ

例)
$ cd /usr/bin "/usr/bin"ディレクトリに移動 
$ cd ~/ ホームディレクトリに移動

ls

ファイルやディレクトリの一覧表示する

パスを指定せずにlsコマンドだけを実行したときはカレントディレクトリの情報を表示

書式

ls [-al] [name...]

オプション

-a

隠しファイル(ファイル名の先頭にピリオドがあるファイル)を含んだすべてのファイルを表示

-l

ファイルの詳細も同時に表示

name

指定したファイルやディレクトリのみを表示。ワイルド・カードを使用するが可能

※よく使うオプションだけ表記しています。

これら以外にもオプションがあります。

例)
$ ls -al
total 160
drwxr-xr-x+  50 hoge  staff  1720 10 31 17:25 .
drwxr-xr-x    5 root  admin   179  5 23 17:30 ..
-rw-r--r--@   1 hoge  staff   200  5 24 01:20 .bashrc
drwx------+  25 hoge  staff   853 11  1 14:53 Downloads
-rw-rw-r--    1 hoge  staff    20 11 16 17:40 test.txt

cp

ファイルやディレクトリのコピー

書式

cp [-fr] source dest
cp [-fr] source... directory

オプション

-f

コピー先に同名ファイルがあるときも警告せず,上書きを行う

r

ディレクトリを再帰的にコピー(サプディレクトリもコピーする)

source

コピー元のファイルやディレクトリを指定。ワイルド・カードを使用可能

dest

コピー先のファイル名やディレクトリ名を指定。ファイル名を指定した場合は新しい名前でコピーされる

directory

コピー先のディレクトリを指定

※よく使うオプションだけ表記しています。

これら以外にもオプションがあります。

例)
$ cp file1 file2 "file1"を"file2"という名前でコピー 
$ cp -r folder1 folder2 "folder1"の内容をサブフォルダーも含めて全て"folder2"へコピー

mv

ファイルやディレクトリの移動・名前の変更をする

書式

mv [-fu] source dest
mv [-fu] source... directory

オプション

-f

移動先に同名ファイルがあるときも警告なく上書き

-u

同名のファイルが存在した場合,タイム・スタンプを比較し同じまたは新しいときには移動を行わない

source

コピー元のファイルやディレクトリを指定する。ワイルド・カードを使用可能

dest

コピー先のファイル名やディレクトリ名を指定する。ファイル名を指定した場合は新しい名前でコピーされる

directory

コピー先のディレクトリを指定

※よく使うオプションだけ表記しています。これら以外にもオプションがあります。

例)
$ mv file1 file2 "file1"ファイルを"file2"という名前に変更 
$ mv ./sample.txt ./tmp/sample.txt "sample.txt"ファイルを"tmp"フォルダに移動

rm

ファイルやディレクトリを削除する

書式

rm [-fr] name...

オプション

-f

警告メッセージを表示しない

-r

ディレクトリ内を再帰的に削除

name

削除するファイルやディレクトリを指定する。ワイルド・カードを使用可能

※よく使うオプションだけ表記しています。これら以外にもオプションがあります。

例)
$ rm *.txt カレントディレクトリにある拡張子が".txt"のファイルを全て削除 $ rm -rf folder1 "folder1"をサブフォルダーも含めて全て削除

mkdir

ディレクトリの作成

書式

mkdir [-m mode] [-p] directory...

オプション

-m mode

ディレクトリのモードを設定

-p

指定したディレクトリをサブディレクトリごと作成する。ツリー状のディレクトリも作成可能

directory

作成するディレクトリ名を指定

※よく使うオプションだけ表記しています。これら以外にもオプションがあります。

例)
$ mkdir -p ./tmp/scripts サブディレクトリを含めたディレクトリを作成 
$mkdir -m +w tmp 書き込み権限を与えてディレクトリを作成

touch

ファイルを作成、タイムスタンプ変更

書式

touch [name...]

オプション

d日時を指定する
cファイルを新規作成しない
r他のファイルのタイムスタンプに合わせる
例)
$ touch sample.txt

sample.txtファイルを新規に作成します。

最後に

プログラミングを学習する目的以外にもコマンドプロンプトを使うことは多くあります。

何かを開発するようになると必ずといっていいくらいにコマンド入力が必要になってくるのでコマンドプロンプトに慣れておくととても有利です。

普段は使うことがないので億劫になりがちですが、是非積極的に使ってみてください。