画面の見方から基本的なコマンドまでのターミナル解説

プログラム
date 2013.06.02 tag 未設定
最終更新日 2013年6月4日
概要 普段触っていない人にとって、中々取っ付きにくいターミナルについて解説します。画面の見方から基本的なコマンドまで触れてみます。

長い余談 : 知っておくと良いかもしれない知識

ターミナルというもの

「TeraTerm」「PuTTy」「ターミナル」「iTerm」…。
これらはUnix系のOSのコンピュータへログインと操作をするためのソフトウェアで、ターミナルエミュレータと分類されます。
このエントリーではターミナルエミュレータ=ターミナルとして話を進めていきます。

なおWindowsのコマンドプロンプトも、ターミナルと言えるんですがこのエントリーの対象外となってます。WindowsはUnix系OSではないため、エントリー内で紹介している画面の見方やコマンドが適用できないためです。

ターミナルを使うときって?

限定的に言いますと、Web系の人はときにターミナルを使う必要があります。
WebサーバのOSのほとんどがUnix系OSだから「ターミナルでサーバにログインしてファイルを操作をする」というように使われます。
ちなみにサーバは共有資源ということで、複数のターミナルからログインすることができます。1台のサーバに複数のターミナル(端末)が繋がるイメージです。

201305_terminal

また最近だとNode.jsやCompassなどを使うにはターミナルを使う必要があったりします。
これはサーバにログインして使う用途とは違う場合もありますが、いずれせよターミナルの知識は覚えておいて損はないですよ。

ユーザインターフェース

一般的にコンピュータを操作する使い方には「GUI」と「CUI」の2つの分類があります。
これらはUI(ユーザーインターフェース)の種類です。
マウスを使ってカーソルを移動・クリックして操作するのがGUIで、WindowsやMacの画面のことを指します。アイコンやメニューのグラフィックが豊富で直感的な操作が可能です。

201305_gui

対してキーボードでコンピュータを操作するのがCUIで、黒い画面といわれるものはこれです。
ユーザがキーボードで「コマンド」というものを入力することで操作します。入力することで結果が帰ってくるということでコンピュータとの対話的なUIです。

201305_cui
種類 正式名称 主な操作方法
GUI Graphical User Interface マウスによるクリック操作
CUI Character(文字) User Interface コマンドによる操作

補足 : 対話的なユーザインターフェース

少し前に見つけたもので何かの際に紹介したいと思ったのでこの場で。
JS、CSSで作ったフォームの入力UIですがこれはユーザ側から入力があると、OK/NG判定をして次の入力を促す仕組みになっています。対話的なUIというのはまさにこんな感じです。

ダイアログフォーム

カーネルとシェル

CUI、GUIともにコンピュータを操作するためのユーザインターフェース(使い勝手の部分)。
実際にコンピュータ内部の処理をするのはOSの「カーネル」と言われる部分で、それぞれのUIはユーザの操作をカーネルへと伝えます。
なぜこのような仕組みになっているかは割愛しますが、この関係は覚えておくと良いかと思います。

ちなみにCUIとGUI問わず、カーネルに操作等を伝えるソフトウェアをシェルと言います。
GUIのOSではWindowsのExploer、MacのFinderがそれにあたります。
GUIのシェルに種類や名前があるように、CUIのシェルにも「bash」「tcsh」と言ったものがあり、Macに搭載されているターミナル(CUI)ではbashがデフォルトのシェルに設定されています。

201305_shell

画面の見方とコマンドの入力

さて、やっと実践編です。
ターミナルを立ち上げ、ログインした状態から基本的なコマンドの使い方を紹介していきます。

ログイン時

ログインした状態ではこのようになっていると思います。

201305_prompt

下線部のように末尾に白いカーソルがある行は「ブロンプト」と言われる部分で、ユーザからのコマンド入力が可能だと主張しています。
「MacBook-Air:~ user$」というのは「(コンピュータ名):(現在のディレクトリ名) (現在のユーザ名)$」ということを意味してます。ここにある「$」というのはシェルにbashを使用していますよ、ということです。

また現在のディレクトリ名の箇所の「~」というのはユーザのホームディレクトリを指してます。

補足 : プロンプトにある記号の意味

プロンプトでシェルを表す記号にはこのような慣習があります。
ちなみにrootユーザというのは偉い人で、ファイルの削除等なんでも自由にできるユーザだと思ってください。

記号 意味
$ 現在のシェルがbash系
% 現在のシェルがtcsh系
# 現在のユーザがroot

コマンド入力

プロンプトにコマンドを入力してやることでファイルの操作などができます。
コマンドは基本的にこのようなフォーマットで入力します。

201305_howtocommand

例えば現在のディレクトリのディレクトリ、ファイルを「隠しファイル(ファイル名が.から始まる)も表示」「1列ずつ表示」というオプションを付けて実行します。
こんな感じでコマンドの結果が出力されると、最後の行にプロンプトが表示されます。

201305_command

なお上記では使ってませんが引数というのも指定できます。
これにはコマンドで使うファイル名を指定したりします。後述のコマンド紹介のサンプル見たらどんなものか分かると思います。

補足:コマンドに使う特殊記号

先にも書いたんですが「~」は特殊な意味を持っていて、ホームディレクトリを表していています。ホームディレクトリは例えば下記のように違ってくるので記号一つで特定できると便利なんですね。

  • testユーザのホームディレクトリは「/home/test」
  • guestユーザのホームディレクトリは「/home/guest」

コマンドの引数にも使えるので、「cd ~」でホームディレクトリに移動ってこともできます。
「~」の他にも便利な特殊記号があるので興味があれば調べてみてください。

基本的なコマンド

このエントリーの最後に基本的なコマンドを少し紹介します。
他のコマンドや細かいオプション等はググってくださいw

補足:入力補完とヒストリー機能

シェルには入力補完と過去のコマンドのヒストリー機能があったりします。
ちょっと説明は割愛しますが、便利なので調べてくださいまし。

コマンド 用途
pwd 現在自分がいるディレクトリを表示
ls ディレクトリ内のファイルを表示
cd 現在いるディレクトリを変更
cp 指定したファイルやディレクトリをコピー
mv ファイルやディレクトリの移動
rm ファイルやディレクトリの削除

pwd

pwd : Print Working Directory

現在自分のいるディレクトリを表示します。どこにいるか分からなくなったときに。

オプション

オプションは特にありません。

引数

引数は指定できません。

Sample

この表示では自分は今「/Users/user/test」にいることが分かります。
[bash light=”true” highlight=”1″]
$ pwd
/Users/user/test
[/bash]

ls

ls : List Segments

ディレクトリの中身を表示します。

オプション

オプション 意味
-a 隠しファイル(.から始まるファイル)も表示
-l リスト形式で1行ずつ表示
-R 子ディレクトリの内容も表示

引数

引数 説明
第一引数 表示させたいディレクトリのパス。省略すると現在のディレクトリ内容を表示。

表示させたいディレクトリパス。

Sample

現在のディレクトリ直下にある「child」ディレクトリの中身を表示。オプションに「l」「a」を指定して隠しファイルも含めてリスト形式で表示。
[bash light=”true” highlight=”1″]
$ ls -la child
total 288
drwxr-xr-x@ 15 user staff 510 8 15 2010 .
drwxrwxrwx@ 57 user admin 1938 5 21 21:45 ..
-rwxrwxrwx@ 1 user staff 14 8 15 2010 count.log
-rwxr-xr-x@ 1 user staff 5519 8 9 2006 css.php
[/bash]

cd

cd : Change Directory

現在いるディレクトリを変更する。

オプション

オプション 説明
-(ハイフンのみ) 一つ前のディレクトリに戻る(OSの設定でできないことも)

引数

引数 説明
第一引数 移動したいディレクトリのパス

Sample

pwdコマンドを交えながらのサンプル。cdで移動できているかを確認できました。
[bash light=”true” highlight=”3″]
$ pwd
/home/
$ cd ./test
$ pwd
/home/test
[/bash]

cp

cp : Copy

ファイルをコピーする。ディレクトリをコピーする際には「-R」オプションが必要。

オプション

オプション 説明
-R ディレクトリのコピーを行う

引数

引数 説明
第一引数〜 コピー元のファイルパス(複数指定可能)
最終引数 コピー先のファイルパス

Sample

「original.txt」「sample.jpg」を「copyディレクトリ」にコピーする。
[bash light=”true” highlight=”1″]
$ cp original.txt sample.jpg ./copy
$ ls ./copy
original.txt sample.jpg
[/bash]

mv

mv : Move

ファイルの移動、ファイル名の変更にも使用できる

オプション

オプション 説明
-i ファイル名が被るとき上書きするかを確認させる

引数

引数 説明
第一引数〜 移動したいファイルパス
最終引数 移動先のディレクトリパス

移動元のファイル名、移動後のパス(ファイル名を含んだ場合は名前を変更して移動)

Sample

test.txtを一つ上のディレクトリに「rename.txt」に名前を変更して移動。
[php]
$ mv text.txt ../rename.txt
[/php]