#author("2018-06-13T12:01:02+09:00","default:kyo-in","kyo-in")
#author("2018-06-13T12:10:57+09:00","default:kyo-in","kyo-in")
**まえがき [#b3fc4daa]
現在,皆さんが普段使うコンピュータで動くOSは大抵GUI(Graphics User Interface)を標準としています.

GUIでは,マウスやタッチ操作を中心に,キーボードなどを併用して操作します.

しかしながら,例えば「Data001〜Data100まで連番のフォルダを100個作る」といった作業が発生した場合,GUIでは,ひたすら右クリック→新規フォルダ作成→名前を入力,という大変な作業になります.

そこでCUI(Character User Interface)の出番です.

例えばWindowsに用意されているCUI,PowerShellでは,以下のようにスクリプトを記述,実行することで上記の作業を実現できます.

 for($i=1; $i -le 100; $i++){ 
   $d = "Data{0:000}" -f $i 
   New-Item $d -ItemType Directory
 }

-PowerShellを使って連番フォルダを作成する方法 : ubichupas.net&br; http://ubichupas.blogspot.com/2010/04/powershell-directory.html

#ref(./testscript.png,85%);

またプログラムを書く作業を行う場合,必要なファイルをCUIからコマンドを実行してインストールする,などの作業が発生することも多いのでざっとでもいいのでCUIの操作を覚えておくと色々役に立ちます.

**各OSのCUI [#g0ea7754]
Windowsでは,コマンドプロンプト,PowerShell,またWindows Subsystem for LinuxなどでCUIを利用できますが,ここではPowerShellを例に使っていきます.

PowerShellの起動方法は様々ですが,検索(Cortana)から起動することもできます.
#ref(./powershell.png,85%);

MacOS,またLinuxではターミナル(Terminal)という名前で用意されています.

**カレントディレクトリ [#x6fa4f8c]
GUIでは,複数のファイルをまとめておくものをフォルダと呼ぶことが多いですが,CUIではディレクトリと呼ぶことが多いです.ここでは,同じものと考えて構いません.

CUIの重要な考え方として,「カレントディレクトリ」があります.

たとえばPowerShellを普通に(管理者権限を与えずに)起動すると,カレントディレクトリはログインしているユーザのフォルダとなります.

 pwd

コマンドで確認もできますが,PowerShellでは,デフォルトではコマンド入力のところに常にカレントディレクトリが表示されています.

#ref(./currentdir.png,85%);

カレントディレクトリは,GUIで例えれば,操作対象のフォルダを開いている状態,と考えることができます.

#ref(./gui-user.png,85%);

GUIでは,勝手にフォルダに何があるか表示されますが,CUIではフォルダ(カレントディレクトリ)に何があるか見るには

 ls

コマンドを使用します.(エイリアス(フォルダに別名を付ける機能)によって表示名が異なるフォルダもありますが)同じ情報が表示されていることが分かります.

#ref(./cui-ls.png,85%);

また,GUIでは,開いているフォルダで右クリック,新規作成→フォルダで新しいフォルダを作ることができますが,CUIでは

 mkdir 新しく作るフォルダ名

コマンドで作成します.

#ref(./cui-mkdir.png,85%);

カレントディレクトリ(フォルダ)をGUIで開くと,実際にフォルダができていることが確認できます.

#ref(./gui-mkdir.png,85%);

このようにCUIでは,操作対象のフォルダをカレントディレクトリにする→コマンドを入力して操作する が基本となります.

カレントディレクトリを変更したい場合は,

 cd

コマンドを使用します.

例えば,現在のカレントディレクトリ内にあるフォルダDocumentsにカレントディレクトリを変更したいということであれば,

 cd ./Documents

で,変更できます.ここで"./"が書かれていますが,CUIにおいて"."はカレントディレクトリを表します."/"はパス区切り文字などと呼ばれ,日本語環境では"¥"も使用できます.

./Documentsは言い換えれば”カレントディレクトリ内のDocuments”と表していることになります.

そしてcdコマンドと組み合わせて,「カレントディレクトリをカレントディレクトリ内のDocumentsに変更しろ」と指示したことになります.

上記のように"."を使ったパス(ドライブ内のフォルダやファイルを指定する文)の書き方を「相対パス」と呼びます.

上記の例では"./"を省略しても同じ結果になります.

一方,ドライブ記号からすべて書いたパスを「絶対パス」と呼びます.

 cd C:/Users/moriya/Documents

#ref(./cd-abspath.png,85%);

また,上記の例ではcdコマンドで,カレントディレクトリ内のDocumentsフォルダに移動しましたが,作業を終えて,ユーザフォルダに戻る場合,

 cd ..

で戻ることができます.CUIで".."はカレントディレクトリの親のフォルダ(カレントディレクトリ(フォルダ)を格納しているフォルダ)を表します.

#ref(./cd-parent.png,85%);

「''カレントディレクトリを変更するとき,パス(フォルダ名など)を自分で全部打たないといけないの面倒くさい!''」

と思われるかもしれませんが,現在,大抵のCUIでは,パス入力途中で[TAB]を押すことで推測して補完してくれます.

#ref(./comp.png,85%);

**「パスを通す」 [#f28c7ee3]
例えばCUIからPythonを利用する場面を考えます.

-https://www.python.org/

インストール後「パスを通す」作業をしていないと,CUIからPythonを起動しようと,

 python

と入力してもエラーになります.

#ref(./python-error.png,85%);

これは,コマンド"python"を入力しても現在のカレントディレクトリにPythonの実行ファイル,python.exeがないためです.

例えばWindows環境でPythonをインストールした場合以下の場所にpython.exeが置かれます(バージョンや環境によって違います)

>C:\Users\ユーザ名\AppData\Local\Programs\Python\Python36

CUIからPythonを使おう,という際に,毎回カレントディレクトリを上記の場所にしてPythonを利用...というのを行っていては非常に不便です.

そこで「パスを通す」という作業を行います.

Windowsでは「環境変数を編集」から行うことができます.検索(Cortana)からも開けます.

#ref(./env.png,85%);

下図の「変数」の「Path」を編集することになります.ユーザ固有の環境変数(下図上段)とシステム環境変数(全ユーザ共通,下図下段)の両方に「Path」がありますが,例えば,上記のPythonのように,ユーザのフォルダにある場所にパスを通したい場合は下図上段,ユーザ固有の環境変数の「Path」を編集した方がよいでしょう.

#ref(./path.png,85%);

「Path」を選択し「編集」をクリックすると,以下の画面がでますので,「新規」でpython.exeがあるフォルダ(ディレクトリ)を追加します.
(以下はWindows10 バージョン1803の場合です,バージョンによって異なります)

#ref(./addpath.png,85%);

''CUIを起動しっぱなしの場合は一旦閉じて,再起動しましょう.''
''Pathの変更を反映させるため,CUIを起動しっぱなしの場合は一旦閉じて,再度起動しましょう.''

再度「python」と入力すると,起動できたことが分かります.

#ref(./python-run.png,85%);

このように「パスを通す」作業を行うことで,CUIから実行ファイル名を入力,実行する際,パスの通っているディレクトリ(フォルダ)も見に行って,該当するファイルがあるか探すようになるので,カレントディレクトリを変更しなくても実行ファイル(コマンド)を実行できるようになります.

CUIに限らず,あるアプリケーションを使用する際,「このアプリケーションはこのアプリケーションの実行ファイルも使うのでパスを通しておけ」など指示される場合もあるので,この「パスを通す」という手順を覚えておきましょう.

また,インストーラを備えたアプリケーションでは,オプションで「パスを通す」かどうか聞かれる場合もあるので注意深くメッセージを確認しましょう.

Pythonの例:
#ref(./installeraddpath.png,85%);

トップ   編集 差分 バックアップ 添付 複製 名前変更 リロード   新規 一覧 検索 最終更新   ヘルプ   最終更新のRSS