現在,皆さんが普段使うコンピュータで動く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 }
またプログラムを書く作業を行う場合,必要なファイルをCUIからコマンドを実行してインストールする,などの作業が発生することも多いのでざっとでもいいのでCUIの操作を覚えておくと色々役に立ちます.
Windowsでは,コマンドプロンプト,PowerShell,またWindows Subsystem for LinuxなどでCUIを利用できますが,ここではPowerShellを例に使っていきます.
PowerShellの起動方法は様々ですが,検索(Cortana)から起動することもできます.
MacOS,またLinuxではターミナル(Terminal)という名前で用意されています.
GUIでは,複数のファイルをまとめておくものをフォルダと呼ぶことが多いですが,CUIではディレクトリと呼ぶことが多いです.ここでは,同じものと考えて構いません.
CUIの重要な考え方として,「カレントディレクトリ」があります.
たとえばPowerShellを普通に(管理者権限を与えずに)起動すると,カレントディレクトリはログインしているユーザのフォルダとなります.
pwd
コマンドで確認もできますが,PowerShellでは,デフォルトではコマンド入力のところに常にカレントディレクトリが表示されています.
カレントディレクトリは,GUIで例えれば,操作対象のフォルダを開いている状態,と考えることができます.
GUIでは,勝手にフォルダに何があるか表示されますが,CUIではフォルダ(カレントディレクトリ)に何があるか見るには
ls
コマンドを使用します.(エイリアス(フォルダに別名を付ける機能)によって表示名が異なるフォルダもありますが)同じ情報が表示されていることが分かります.
また,GUIでは,開いているフォルダで右クリック,新規作成→フォルダで新しいフォルダを作ることができますが,CUIでは
mkdir 新しく作るフォルダ名
コマンドで作成します.
カレントディレクトリ(フォルダ)をGUIで開くと,実際にフォルダができていることが確認できます.
このようにCUIでは,操作対象のフォルダをカレントディレクトリにする→コマンドを入力して操作する が基本となります.
カレントディレクトリを変更したい場合は,
cd
コマンドを使用します.
例えば,現在のカレントディレクトリ内にあるフォルダDocumentsにカレントディレクトリを変更したいということであれば,
cd ./Documents
で,変更できます.ここで"./"が書かれていますが,CUIにおいて"."はカレントディレクトリを表します."/"はパス区切り文字などと呼ばれ,日本語環境では"¥"も使用できます.
./Documentsは言い換えれば”カレントディレクトリ内のDocuments”と表していることになります.
そしてcdコマンドと組み合わせて,「カレントディレクトリをカレントディレクトリ内のDocumentsに変更しろ」と指示したことになります.
上記のように"."を使ったパス(ドライブ内のフォルダやファイルを指定する文)の書き方を「相対パス」と呼びます.
上記の例では"./"を省略しても同じ結果になります.
一方,ドライブ記号からすべて書いたパスを「絶対パス」と呼びます.
cd C:/Users/moriya/Documents
また,上記の例ではcdコマンドで,カレントディレクトリ内のDocumentsフォルダに移動しましたが,作業を終えて,ユーザフォルダに戻る場合,
cd ..
で戻ることができます.CUIで".."はカレントディレクトリの親のフォルダ(カレントディレクトリ(フォルダ)を格納しているフォルダ)を表します.
「カレントディレクトリを変更するとき,パス(フォルダ名など)を自分で全部打たないといけないの面倒くさい!」
と思われるかもしれませんが,現在,大抵のCUIでは,パス入力途中で[TAB]を押すことで推測して補完してくれます.