【まとめ】コマンドプロンプトやターミナルの違い!CUIの種類を解説!
この記事からわかること
- コマンドラインとは?
- コマンドプロンプトとターミナルの違い
- シェルやCUIなど関連する言葉の意味
index
[open]
\ アプリをリリースしました /
友達や家族の誕生日をメモ!通知も届く-みんなの誕生日-
posted withアプリーチ
パソコンの操作方法には種類があり誰もが使うアイコンなどをマウスでクリックする方法と知識がないと触れない文字(コマンド)のみで操作する2種類があります。
後者をCUI(コマンドライン)と言いWindowsやMacに搭載されたアプリケーションで操作できます。
今回はその細かい違いと言葉が指し示す意味をまとめていきたいと思います。
コマンドラインとは
コマンドラインとはコンピューターのシステムを制御しているソフトウェアであるOS(オペレーティングシステム)に命令を送るための機能のことです。
コンピューター側とユーザー側を繋ぐ仲介のような存在で、コンピューター側の内部的なところをユーザー側から隠蔽してくれています。
この機能を殻で守られているように見えることから「シェル」と言ったりします。
シェルの種類の1つがコマンドラインになります。
CUIとGUIの違い
ユーザーがコンピューターを操作する方法は大きく分けると「GUI」と「CUI」に分かれます。
ここでいう操作方法は内部的な処理を隠蔽してくれるシェル機能を持った操作方法のことです。
GUI:Graphical User Interface
アイコンやボタン、マウスポインターなどグラフィカル(絵画的)にパソコンを操作するインターフェースです。いわゆる普段見るデスクトップ部分がそれに当たります。
インターフェースとは機器同士や機器と人の間でやり取りをしやすくするソフトウェアのことを指します。
専門知識がなくても感覚的に操作を行えるのが最大のメリットです。
CUI:Character User Interface
CUIはグラフィカルではなく単語の通りcharacter(文字)を使ったインターフェースです。
CUIの中の1つがまさしくコマンドラインという機能になります。
コマンドラインはユーザーが、入力したコマンド(命令文字)をライン(行)ごとに読み込み実行してくれます。
コマンドラインを実行できるアプリとしてWindowsならコマンドプロンプト、Macならターミナルが用意されています。
用語のまとめ
- シェル→OSとユーザーを仲介してくれるシステムの総称
- GUI→ボタンなどでパソコンを操作する方法
- CUI→文字でパソコンを操作する方法
- コマンドライン→シェルの中のCUIの1つ、コマンドをラインごとに読み込んで実行させる機能
- コマンドプロンプト→Windowsでのコマンドラインを実現しているアプリ名称
- ターミナル→Macでのコマンドラインを実現しているアプリ名称
コマンドラインで出来ることとメリット
同じインターフェースならGUIのが専門知識がいらないことや操作性から軍配が上がります。
ではCUI(コマンドライン)で出来ることやメリットは何でしょうか?
CUI(コマンドライン)で出来ることとメリット
- ローカルなWebサーバーの構築
- SSHによるリモート接続
- PHPやRubyなどのプログラミング言語の開発環境
GUIで出来るファイル操作(ファイルを開く、作成する)などもCUIで可能ですが、ローカルなWebサーバーの構築などGUIにはできないことが数多く可能になります。
ローカルなWebサーバーの構築
Webサーバーは通常ネットワークに公開されどこからでもアクセスすることができます。例えばこのサイトもレンタルサーバーを借り、そこにファイルをアップロードすることで色んな人が、自由に閲覧することができます。
しかしサイトのデザインや構成を変更する時にいちいち公開しているファイルを変更してアップロードして確認していては非効率です。
そこでPC内にローカルのWebサーバーを立ち上げそこでWebページの確認作業や編集結果を表示させることで効率的に変更が可能になります。
要するにテスト環境を構築出来るということです。
SSHによるリモート接続
SSH:secure shellとは他のPCをリモートで安全に接続するためのソフトウェアのようなものです。
自分のPCで他の人のPCをリモートで操作出来るので離れていても操作が可能になる優れた機能です。
GUIでも実現可能な機能ですが、セキュリティ面から見てもSSHを使った方が安全に接続することができます。
プログラミング開発
プログラミング言語の中でもPHPやRubyなどの言語は開発環境を必要とします。
GUIでの開発環境も多数出ていますが、Macには標準でPHPなどがインストールされているので前作業なしに学習やテストすることができます。
ターミナルとは?
ターミナルはMacの中に標準装備されているコマンドライン操作が出来るアプリケーションのことです。
ターミナルを起動すると内部で「シェル」が動作します。ここら辺がややこしいですがターミナルを起動することでPC内部のシェル(コマンドライン)が動作してくれるということですかね。
シェルにはbashやzshなどの種類が分かれています。
Macのデフォルトのシェルはbashになっています。zshの方が高機能なのでこだわりがなければzshを使うことをオススメします。
シェルの種類の違いによって操作方法や操作性が若干異なってきますので自分に合ったシェルを使いこなせるようになるのが一番です。
ターミナルの起動方法
ターミナルはMacに予めインストールされているのでFinderで「ターミナル」と検索すれば出てきます。出てこない場合は「アプリケーション」→「ユーティリティ」の中に入っていますので探してみてください。
ターミナルを起動したら設定されているシェルを確認してみましょう。確認するにはターミナルに以下のコードを入力してEnterを押せばOKです。
echo $SHELL;
// 結果:/bin/bash
/bin/
の後に記述されているのが現在設定されているシェルの種類です。
現在のシェルがbashになっている場合はzshに変更してみましょう!
シェルの変更方法
デフォルトのターミナルのシェルを変更するにはターミナルを開いた状態で上部メニューの「ターミナル」→「環境設定」→「一般」の中の「開くシェル」部分を/bin/zsh
に変更すればOKです。
これでターミナルを再度立ち上げればデフォルトのシェルがzshに変更されています。
ターミナルの基本構文と操作方法
まずはターミナルでの基本構文をまとめていきたいと思います。注意すべきことは以下の通りです。
- コマンド文字は半角で入力
- コマンドの終わりは「;」で区切る
- コマンドのオプションは「-」の後に指定(open -a)
- Enterでコマンド実行
- 「 * 」「 ? 」(ワイルドカード)は使用可能
- 特殊文字(空白など)を含む文字列は「""」or「''」で囲む
- 「""」or「''」を使う時は\(バックスラッシュ)でエスケープ
他のプログラミング言語ともそれほど遜色はないように思います。
コマンドの種類
ターミナルを操作するには先程のechoのような予め定められたコマンドを入力していきます。
カレントディレクトリとは現在自分の開いているファイル(ディレクトリ)のことです。
echo 出力したい文字列 :画面に表示する
echo "文字を出力"; // 結果:文字を出力
cd :カレントディレクトリを移動
cd Desktop; // 結果:カレントディレクトリをDesktopに移動
cat :ファイルの中身を表示
cat test.txt; // 結果:これはテストテキストファイルです。
-n :ファイルの行番号を表示
pwd :カレントディレクトリのパスを表示
pwd; // 結果:/Users/name/Desktop
ls :カレントディレクトリ以下の一覧を表示する
ls; // 結果:一覧を表示
-F :ファイルとディレクトリを区別して表示
-a :隠しファイルを表示
cp コピー元のファイルパス コピー先のファイルパス:ファイルやディレクトリをコピー
cd test.txt update.txt; // 結果:test.txtの中身をupdate.txtにコピー
-i:ファイルを確認しながらコピー コピーなら「y」しないなら「n」を入力
-r:指定したディレクトリを全てコピー
mv 移動前のファイルパス 移動後のファイルパス:ファイルを移動
mv test.txt sample/test.txt; // 結果:test.txtがパス(sample/test.txt)に移動
rm 削除するファイルのパス :ファイルを削除
rm sample/test.txt; // 結果:sample/test.txtが削除される
-i:ファイルを確認しながら削除 削除なら「y」しないなら「n」を入力
-r:指定したディレクトリ以下を全て削除
open ファイルのパス:アプリを開く
open demo.png; // 結果:demo.pngを開く
-a アプリケーション:指定したアプリケーションでファイルを開く
open -a "Google Chrome" demo.png; // 結果:demo.pngを"Google Chrome"で開く
使用頻度の高そうはものを何個かまとめておきました。
まだまだ勉強中ですので間違っている点や至らぬ点がありましたら教えていただけると助かります。
ご覧いただきありがとうございました。