Code of Poem
Unknown programmer's programming note.

必要最低限のUNIXコマンド

FreeBSDのインストールができて、ログインすることができました。しかし、もしWindowsやmacOSを使っていて、それらでコマンドラインの操作がしたことがなければ、何をしたらいいのか見当がつかないのではないかと思います。

FreeBSDが起動すると、真っ黒な画面に白い文字で意味不明な文字がずらずらと並んで、いかにも恐ろしげな雰囲気を漂わせています。勇敢にもこの恐ろしい画面と向き合って、最初の目標であるHello Worldのプログラムを実行させるために必要な最低限のコマンドを紹介します。

まずは起動直後の画面をもう一度見てみます。

…とその前に、VirtualBoxで作成したFreeBSDの仮想マシンのクローンを作成して置きましょう。そうすればいつでもクローンを作成した時点の状態に戻すことができます。

仮想マシンのクローン

仮想マシンのクローンとは、作成済みの仮想マシンからまったく同じ状態の仮想マシンを複製することです。

クローンはVirtualBoxマネージャーから行えます。

この画面の画像はLinuxのもので、Windowsとはちょっと違う感じがするかもしれません。しかし、表示されている項目や操作は同じです。

まずメニューからクローンを選択します。

VirtualBox colne menu

愛らしい羊のダイアログが表示されます。基本的に名前だけ適当に設定したら、あとは「次へ」をクリックすればOKです。

VirtualBox colne page 1

さらに2ページ目のダイアログが表示されます。何も変更せずにそのまま「クローン」をクリックします。

VirtualBox colne page 2

するとVirtualBoxマネージャに戻ります。左側に作成した仮想マシンが追加されます。

VirtualBox colne completed

これから使用していく仮想マシンはどちらでも好きな方でいいです。こちらでは元の(最初に作成した)ものを利用していくことにします。

ログインとシャットダウン

まずはFreeBSDを起動して、システムにログインしてシャットダウンする方法を覚えます。

一度VirtulBoxのインストールのページでスクリーンショットを付けて手順を示したので、再度スクリーンショットを載せるのは止めておきます。流れだけ再度書いておきます。

FreeBSDを起動させるまでの流れは以下の通りです。

  1. VirtualBoxマネージャの左側で起動するOSを選択します。
  2. VirtualBoxマネージャの右側の「起動」ボタンをクリックします。あるいは、左側で起動するOSをダブルクリックしても良いです。
  3. VirtualBoxのロゴが表示された後、FreeBSDの起動メニューが表示されます。
  4. いくつか項目があるのですが、通常は「1. Boot Multi user」で起動します。そのためには単にEnterを押せばOKです。
  5. しばらくずらずらと起動プロセスのログが流れていきます。ここは待つしかないです。
  6. FreeBSDの起動が完了すると、login: と表示された状態で止まります。

これでログインが可能な状態になりました。

最初のコマンド?: login

混乱させてしまうかもしれませんが、loginはあまり直接ユーザーが使うコマンドではありません。しかし、FreeBSDを起動したあとlogin: と表示させているのはloginという名前のプログラムであり、システムを利用するためには必ず経由します。なのでここではあえてコマンドとして扱います。

このコマンドに対して覚えることはlogin: に続けてユーザー名とパスワードを入力するということだけです。普通のケースだとシステムに登録されたユーザーにはパスワードが設定されているのですが、FreeBSDの公式の仮想マシンイメージを利用しているのなら、rootというユーザーのみが登録された状態でこのユーザーに対するパスワードは設定されていません。これは仮想マシンで試験的な利用を目的として簡単に扱えるにようにするためであり、実用的に、日常的に使う本物のシステムでは必ずパスワードを設定するべきです。

今のところ、このシステムにはrootというユーザーしか存在しないので、rootでログインします。

login: root⏎

⏎はEnterを押すことを意味しています。つまり、login: という表示されているところに続けて、rootとタイプしてEnterを押すことを意味しています。

本来ならその後にパスワードを入力するようになるのですが、デフォルトではrootユーザーにはパスワードは設定されていないので、即座にログインが試行されます。

ログインに成功すると次のようなメッセージが表示されます。

Last login: Mon Dec 27 02:13:58 on ttyv0
Dec 27 02:27:15 freebsd login[1148]: ROOT LOGIN (root) ON ttyv0
FreeBSD 13.0-RELEASE (GENERIC) #0 releng/13.0-n24433-ea31abc261f: Fri Apr   9 04:24:09 UTC 2021

Welcome to FreeBSD!

...何か色々続く

root@freebsd:~ # ▋

先頭の部分は前回、最後にログインしたときの日時が表示されています。それに続いて2行目は現在ログインした日時、3行目はこのFreeBSDのバージョンが表示されています。

その次の Welcome to FreeBSD! に続いてウェルカムメッセージが色々と表示されます(ここでは省略してます)。

そして最後の行は root@freebsd:~ # となっています。これはプロンプトと呼ばれ、現在コマンドの入力を受け付け中であることを示しています。▋が現在のカーソルの位置で、キーボードで何かタイプするとこの位置に文字が挿入されます。

プロンプトにはいくつかの情報が含まれています。@より前のrootの部分は現在ログインしているユーザー名を示しています。@から:までの部分のfreebsdは、この現在ログインしているホスト名を示しています。ホスト名とは、このシステムに割り当てられた名前です。主にネットワークを利用するときにこのマシンを識別するために使います。:の次の部分~も重要な情報です。これは現在作業中のディレクトリを示してて、~ (チルダ)はホームディレクトリを意味します。ディレクトリはWindowsにおけるフォルダのようなものです。ディレクトリは重要なので別のところでまた取り上げます。

実験: 適当に何かタイプしてみる

プロンプトに続けてカーソルが表示されている状態のときは、キーボードをタイプすることで文字を入力することができます。試しに、キーボードのabcdと順番にタイプしてみましょう。

root@freebsd:~ # abcd▋

画面には上のようになったかと思います。ここでEnterをタイプしてみます。

root@freebsd:~ # abcd⏎
abcd: Command not found.
root@freebsd:~ # ▋

Enterを押すと、「abcd: コマンドが見つからない」と表示され、続けて再びプロンプトが表示され、入力受付け中の状態に戻りました。このように、プロンプトに続けてテキストを打ち込むと、それはコマンドとして解釈されます。abcdという名前のコマンドは存在しないので、そのまま「コマンドが見つからない」というメッセージを返して来たということです。そして何事もなかったかのように元のプロンプトを表示して再びコマンドを受け付けるようになります。このように、コマンドラインでの作業は、

コマンド受け付け ⇒ コマンドを入力 ⇒ コマンドを処理 ⇒ 結果を表示 ⇒ コマンドを受け付け...

というサイクルを繰り返すのが基本です。

シャットダウンするコマンド: poweroff

次に試すのはシステムをシャットダウンするコマンドpoweroffです。このコマンドを実行すると、即座にシャットダウンのプロセスが開始され、正常にOSを終了することができたら、マシンの電源もOFFにしてくれます。仮想マシンの場合はウィンドウが閉じられて、VitualBoxマネージャーのリストのステータス表示が「実行中」から「電源オフ」と変化します。

「即座に」といっても、強制終了するのではありません。正当な手順で、安全にOSを終了させて、マシンの電源をOFFにしてくれます。初めてパソコンに触ったときに注意されたように、いきなり電源ボタンでパソコンを終了させるのではなく、ちゃんと手順を踏んで終了させるのが望ましいです。FreeBSDではpoweroffコマンドがそれをやってくれます。

試しに実行してみましょう。

root@freebsd:~ # poweroff⏎

シャットダウンのプロセスが始まり、ログメッセージがずらずらと流れていきます。

FreeBSD poweroff

おそらく処理が速すぎて目を通している暇はないでしょう。

これで本当の意味で初めてUNIXのコマンドを実行したことになるでしょう。

ところで、シャットダウンをするためにpoweroffというコマンドはやや覚えにくくはないでしょうか。shutdownとタイプできた方が脳にやさしくはないでしょうか。実はshutdownというコマンドも存在しています。shutdownコマンドはシャットダウンをどのように行なうか、例えば、1時間後にシャットダウンして、ログインしているユーザーにその旨を通知するとか、細かに指定できるようになっています。UNIXのシステムは、ユーザーが自分一人ではなく多くのユーザーが同時にログインして使用したり、サーバーとして使用されることも前提として考えられているので、即座にシャットダウンしては都合が悪いことがあるからです。そういう事情があるもののやはり、単に即座にシャットダウンするというのはよく行われるので、別名としてpoweroffという名前のコマンドが存在している訳です。poweroffはshutdown -h nowとまったく同じです。どちらを使ってもまったく構いません。個人的にはpoweroffの方が好みです。

まだやることがあるので、VirtualBoxマネージャーからもう一度FreeBSDを起動して戻ってきて下さい。

合わせて覚えておく (1): logout

loginと対になるコマンドとして覚えておきたいのがlogoutです。まずOSが起動したら、最初と同じようにrootでログインします。

login: root⏎
...色々表示される
root@freebsd:~ # ▋

システムにログインしている状態から、やることを終えて、そのログインの状態(これをセッションと呼ぶことにします)を抜けるにはログアウトします。シャットダウンと違いOSやマシンは起動したままの状態を維持できます。ログアウトするにはlogoutというコマンドを使います。上のプロンプトに続けて入力してみましょう。

root@freebsd:~ # logout⏎

FreeBSD/amd64 (freebsd) (ttyv0)

login: ▋

このように、セッションから抜けて再びログイン待ちの状態に戻りました。

ロウグアトするには別の方法もあります。キーボードでCtrl+Dを押すことです。これはCtrlキーを押し続けたままDキーを押す、という意味です。手っ取り早くログアウトしたいときには便利なのですが、最初の内は間違って押してしまいびっくりすることになるかもしれません。無効にする方法もあります。今の段階ではちょっとややこしくなるのでやらないでおきます。

本当はCtrl+Dによってlogoutコマンドが実行されるわけではありません。Ctrl+DはEOFという特殊な文字を送信します。シェルはEOFを受け取ると終了します。ログインシェルを終了するとログアウトすることになるので、結果としてlogoutと同じことになるという訳です。シェルとは何かをまだ解説していないので、このことは理解できなくても問題ありません。念のため補足しておきました。

合わせて覚えておく (2): reboot

もうひとつ、poweroffと合わせて覚えておきたいのが、rebootです。rebootは即座にシステムの再起動を実行します。「即座に」といっても強制終了するのではありません。正当な手続きを行って、安全に終了させ、再びマシンを起動させます。

root@freebsd:~ # reboot⏎

実際に試して、本当に再起動されるのか確認されることをお勧めします。

まとめ

当初はファイルとディレクトリに関するコマンドも合わせてやってしまおうと思っていたのですが、長くなってきたため別ページにすることにします。このページではログインとログアウト、システムの終了と再起動をやっただけになってしまいました。まだFreeBSDを使って意味のあることはできません。次回にファイルとディレクトリの操作を覚えることで、何か意味のあることができるようになります。

このページでは以下のことを紹介しました。