パソコンのOSを、WindowsからLinuxに変えようとしたら、
「Linuxはコマンドを知らないと使えないよ」
と言われたことはないだろうか?
そんなことはない。
現在はGUI(グラフィカルユーザインターフェイス)が発達し、ほとんどのLinuxディストリビューションは、コマンドを打つ必要なく簡単にパソコンを操作できる。
それなのに、Linuxを知っている人は、コマンド操作が必要だという。このように、一種の脅しとも思われる「コマンドの呪い」こそが、Linuxが普及しない要因の一つかもしれない。
ならば、「コマンドがなんなのか」くらい知っておけば問題ないだろうと思い、初心者が初心者に向けて「ざっくりと」コマンドについて書いてみた。
なぜコマンドは必要か
試しに、Googleで「Linux」と検索しようとすると、第2検索ワードで真っ先に出てくるのは「コマンド」だ。その後、「find」「grep」「ファイル削除」と続く。
これほど、世間ではLinuxのコマンドについて、検索しているのかと実感する。
なぜ、これから気軽にLinuxを始めようとする人に、WindowsやMacではほとんど使うことがない、コマンドを強要するのか?
それを調べていたら、興味あるコラム記事を見つけた。
この記事の筆者によると、Linuxが生まれた頃はまだGUIがなかったから、CUI(キャラクタユーザインターフェイス、コマンドラインインターフェイスまたはコンソールユーザインターフェイス)で操作するしかなかった、あるいはプログラマーにとってGUIは必要なかった、とのこと。対して、ユーザーはいつの時も、GUIの方が使いやすいと考える。
そのユーザーの利便性を考え、徹底的にCUIを隠したのがWindowsだった。しかし、時が経ち、各LinuxディストリビューションもGUI環境を整えてきた。
そして、この記事では最終的に「無くても困らないかもしれない、しかしコマンドを使わないならLinuxを使う意味は無い」と結論づけている。
当ブログ内で、さまざまなディストリビューションを試しては記事を書き続けてきた筆者も、実はコマンドのことをよく知らず、プログラマーやITエンジニアから見たら初級者レベルだ。
しかし、自分のパソコンにどのようなLinuxディストリビューションをインストールしても、コマンドを使う必要もなく使うことができる。
おそらくこの議論は、プログラマーレベルの人たちと、Linuxを「パソコンとして」使う人たちとの間では、永遠に平行線だろう。
そして、あえて言うならば、Linuxをベースに、ITエンジニアとしての資格の勉強をするには、コマンドは必須だということ。「Linuxの資格「LPIC」|ざっくりLinux!- 42」でも書いた通り、これからITエンジニアとして働きたい、あるいは副業としたいという人には、コマンドどころか、あらゆるLinuxに関する知識を学ばなければならない。
基本の「き」〜シェルとコマンド
ここからは、LPICというLinuxの資格における初級レベル「Linux Essentials」のドキュメントに沿って、初心者がぶち当たる「コマンドの壁」をひとつづつ解決していこう。
今回の記事内容は、Linux Essentials 2.1「コマンドラインの基本」に沿ったものだ。
あくまで「ざっくりと」なので、必要に応じて引用するドキュメント内で確認して欲しい。
シェル
コマンドと同時によく聞くのが「シェル」。
シェルとは、オペレーティングシステム(OS)とユーザーとの間で、テキストベースのやりとりを行うプログラムのこと。つまり、ソフトウェアのひとつだ。
関連して、よく聞くのが「Cシェル」や「Bash」。
Cシェルは、主にUNIX系OSで用いられるシェルプログラム、また実行プログラムファイル名を指す。MacOSもUnix系だし、Windows NT系(一般的なWindows)もUnix系だ。ということは、Cシェルは、一般的に知られている、どのOSでも使用できるプログラムということになる。
Bashも同じく、Unixにおけるシェルプログラムの一つで、Bourne-again shellの略。そして、このBashこそが、Linuxで最も一般的なシェルプログラムだ。
コマンド
次は「コマンド」。
コマンドは、ユーザーからの入力を読み取ってシステムへ伝える言葉。そういえば、英語の「command」って「命令」という意味だよね。
対話型シェル、いわゆるプロンプトに対して、ユーザーはコマンド(命令)を入力することでさまざまな作業を実行する。
つまり、
「OSに色々なことを命令するための言葉がコマンドで、コマンドはシェルというソフトウェアを使って伝える」
ってこと。これが分かっただけでも、だいぶ肩がほぐれた感じ。
端末(ターミナル)とコマンドの関係
次によく聞く、「端末(ターミナル)」について。
Linux上級者のブログなどを見ると、「端末を開いて、次のコマンドを打ち込む」などという言葉が、ところかしこに書かれている。
端末とは、正式には「端末(ターミナル)エミュレーター」という。単に「端末」あるいは「ターミナル」と呼ばれている。
どのOSにも、端末というアプリケーションはある。これが、シェルと対話するコマンドライン環境にアクセスするためのアプリケーションだ。わかりやすくいうと、
「ユーザーが末端からOSへ命令(コマンド)を行うためのアプリケーション」
ということか。
Ubuntuなど、最近のディストリビューションはGnomeデスクトップ環境が多く、Gnomeにおける端末は「Gnomeターミナル」で、KDEにおける端末は「コンソール」、Xfceデスクトップは「Xterm」というように、端末の呼称はそれぞれだ。
ちなみに「端末」という言葉は、ネット回線上の末端に接続され、他の機器と通信を行う機器のことをいう。パソコンも「端末」だね。
端末は、冒頭画像のように、大体が真っ黒な画面だ。そこには
ユーザー名@ホスト名または使用デバイス名(+作業ディレクトリ名) 種別
が表示されている。筆者がLinuxを使用するときのユーザー名は「Kazy」、使用するパソコンは「Thinkpad X240」なので、UbuntuやDebian系の端末には、
kazy@kazy-ThinkPad-X240:~$
と表示される。
スーパーユーザー(管理者またはroot)の場合、「$」が「#」に変わって、
root@kazy-ThinkPad-X240:~#
となる。
システムに何か重要な変更を指示するときは、必ずスーパーユーザー権限での入力を求められる。単発で、スーパーユーザー権限での入力をしたいときは、「sudo」をコマンドの最初につける。「superuser」+「do」の略だ。
よく聞く「sudo apt update」や「sudo apt upgrade」(「apt」はDebian系のパッケージ管理システム)は、システムやソフトウェアのアップデート及びアップグレードを確認するためのコマンドで、必ずスーパーユーザー権限での入力が必要となる。
スーパーユーザー権限での入力は、パスワードが要求される。パスワードは打っても何も表示されない(あるいは*****で表示される)が、正しいパスワードを入力したのち、Enterで実行される。
また、端末を開いている間中、スーパーユーザー権限での入力をするときは、
sudo su -
と入力する。これで「$」が「#」に変わり、スーパーユーザー権限のまま作業できる。
端末に表示される「$」か「#」によって、「一般ユーザーレベルで使用しているのか、スーパーユーザー権限で使用しているのかがわかる」ということがわかった。
まとめ
この記事で覚えた難解な言葉は、
- シェル:オペレーティングシステム(OS)とユーザーとの間で、テキストベースのやりとりを行うプログラム
- コマンド:ユーザーからの入力を読み取ってシステムへ伝える言葉
- 端末:ユーザーが末端からOSへ命令(コマンド)を行うためのアプリケーション
の3つ。
真っ黒い画面で、何やら記号みたいなアルファベットが羅列する端末と、そこで入力すべきコマンドは、Linux初心者にとって最大の壁かもしれない。だが、こうやってひとつひとつ言葉の意味と使い方を理解すれば、Linuxは難しいものではない。
また、WindowsもMacもLinuxも、もとは同じ「シェル」を用いて動作するオペレーションシステムだ。そう考えたら、WindowsやMacをなんなく使いこなしてきた人なら、Linuxだって使いこなせるはず。
さらに、Linuxならさまざまなディストリビューションを無料で使うことができる、魅力的なオペレーションシステムとも言える。ほとんどは完全にオープンソースで、情報は常に公開され、世界中のシステムエンジニアがバグを見つけては修正することができる。
情報は「独占」ではなく、「共有」で利益を生むもの。その概念に、Linuxはピッタリだ。
【ざっくりLinux!のおすすめ本】
コメント