皆様どうも、こんにちは!
こまりのソフトウェアエンジニア、桑木です。
みなさん、CUI(Character User Interface)使ってますか? 黒背景の画面でキーボードからコマンドを入力してコンピュータを操作するアレです。サーバ管理する人はもちろんのこと、コーダーでも作業内容によってはCUIを使うこともあるんじゃないでしょうか。
そんなCUIについて、ちょっとした使い方やTips等を弊社コーダーに向けて書いていきたいと思います。
だが、その前に
CUIを使ったことがない人もいると思うので、今回の記事ではCUIそのものの使い方から説明していきます。CUIにもいくつか種類はありますが、この記事ではLinuxで主に使われているbashに一般的な設定がしてあるものを使います。また、Windowsのコマンドプロンプトとかでも似たような機能はあるので応用はできると思います。
コマンドの実行
さて、そもそもどうやってコマンドを実行するのか。
CUIではコマンドの入力待ちの時に、$
とか>
などの記号が最後に付いた文字列が表示されます。記号の前には現在の状態などを表す文字列などが表示されている場合が多いです。この入力待ちを示す文字列をプロンプトと言います。
表示されているプロンプトに続いて、キーボードから任意のコマンドを打ち込み、最後にEnter
キーを押すことでコマンドは実行されます。
以下はls
コマンドを実行した例です。
$ ls
bin dev home lib64 media opt root sbin sys usr
boot etc lib lost+found mnt proc run srv tmp var
$
コマンドから出力があれば画面に表示されます。コマンドの終了後には再びプロンプトが表示され入力待ちになります。
コマンドの終了
通常、コマンドの処理が終わればそのコマンドプログラムは勝手に終了します。
しかし、想定よりも時間の掛かる処理になってしまったから強制的に終了したいとか、様々な理由で実行中のコマンドを終了したいことがあります。
そんな場合、Ctrl
+C
を入力することで終了信号をコマンドプログラムに送信することができます。Windowsでいうところの✗ボタンですね。
この信号を受け取ったプログラムは、可能な限り速やかにプログラムを終了させます。ファイルを書き換える処理などをしていた場合、処理が途中で終わってしまうので使用には注意が必要です。
コマンドの構造
コマンドには、実行させるコマンド名――実行プログラムのファイル名を最初に記述して半角スペースで区切ってから、コマンドのパラメータを入力します。パラメータに指定する内容とその記述方法はコマンドごとに違うので、まずは実行したいコマンドのマニュアルなどを参照してください。
とはいえ、多くのコマンドでパラメータの記述方法には共通する点もあります。
- 複数パラメータを指定する場合、それぞれのパラメータを半角スペースで区切って記述する
- 半角スペースそのものをパラメータに含めたい場合、そのパラメータを
"
で囲む
などはかなり一般的です。
以下はtouch
コマンドにa
とb
とa b
の3つのパラメータを指定したひどい例です。
$ touch a b "a b"
ワーキングディレクトリの変更
CUIには基本的にワーキングディレクトリ(Working Directory, 作業ディレクトリ)という概念があります。カレントディレクトリ(Current Directory, 現在のディレクトリ)ともいいます。ディレクトリとはフォルダの別の呼び方です。
例えば、Windowsでどこかのフォルダでファイル操作をする時、まずは目的のフォルダを開いてからやりたい作業をしますよね。
これと同じように、CUIでも目的のディレクトリを開いてから作業をすることが多いです。ここで作業対象として開いているディレクトリのことをワーキングディレクトリと呼んでいます。また、このワーキングディレクトリは相対パス指定の基点にもなります。
ワーキングディレクトリはcd
コマンドのパラメータに対象のディレクトリを指定することで変更することができます。また、現在のワーキングディレクトリはpwd
コマンドで出力することができます。(それぞれ、change directory, print working directoryの頭文字といわれています)
以下は、現在のワーキングディレクトリに存在するabc
ディレクトリに、ワーキングディレクトリを変更する例です。
$ pwd
/home/komari
$ cd abc
$ pwd
/home/komari/abc
その2へ続く
今回はなぜか基礎中の基礎といった内容になってしまいましたが、ワーキングディレクトリの概念とコマンドの実行方法がわかればCUIは使えるようになったのではないでしょうか。
やりたいことを実現するにはどういうコマンドがあって、そのコマンドのパラメータには何を指定するのか。そういった事を調べれば、だいたいのことがCUIでできると思います。