Linux

研究生活はLinuxと共にあるようなのでまず勉強します。
10日もかかってしまったけど、とりあえず色々できるようになったはず。

まずはLinuxは何が違うのか?

スーパーユーザーと一般ユーザーがいる。

要するに、管理者と利用者といった感じ。

大学のパソコンを使うときは、大学の管理者がスーパーユーザー。
学生は一般ユーザー。

一般ユーザーの学生はあまりめちゃくちゃなことができない。
たとえば、パスワードを忘れてしまったときには、窓口まで行ってスーパーユーザーに手伝ってもらわないといけない。

1台のコンピュータを使う場合は、自分で二役をやる。
この場合も普段は一般ユーザーで使っていた方が、うっかりシステムをぶっ壊す心配がない。

ファイルシステムが実にシンプル

テキストなどの一般的なファイルも、ディレクトリも、ハードディスクも、CD-ROMも全部ファイルとして扱う。
ディレクトリは、その中にどのファイルが入っているかというファイルと言える。
更には画面もキーボードもファイルっていう噂。

ハードウェアはマウント、アンマウントという処理が必要。
だが、現在は自動化されていてあまり意識されない。

ファイルはデータ本体とinode番号からなる

ファイル名はファイルの中に保存されているわけではない。
ファイル自体がもつ識別子はinode番号。

ファイル名はディレクトリの方が持っている。
言い換えると、ディレクトリはファイル名とinode番号を対応させている。
一つのinode番号に対して複数のファイル名を付けることもできる。

リンクにはハードリンクとシンボリックリンクがある
inode番号とファイル名の関連をハードリンクという。
このハードリンクの数は「ls -l」コマンドでも実は表示されている。

対して、ファイル名に別名をつけるのがシンボリックリンク。
Windowsでいうところのショートカット?

シェルという存在
Linuxカーネルとユーザーの間にはシェルという仲介役がいる。
たぶん、プロキシサーバとか通訳みたいなもんでしょう。

大学のパソコンで実験しているのだけど、ここで使われているシェルはcshというものです。
どうやら。
そして、読んでいる本で使っているのはbashというものです。
でも、大きな違いはありません。

不自由だという場合は、csh上でbashを起動してやれば良し。
大学側が親切で設定してくれているエイリアスとかが無効になります。

シェルスクリプトというやつ
Windowsだとあまり使われないシェルスクリプトなる存在。
これがたぶんCUIの良さであり、CUIを残しているLinuxの良さであるような気もする。
処理が文章で保存できるということ。
Windowsにもコマンドプロンプトがあるけど、役に立たない。

たとえば、GUIでの処理はあくまでマウスを使ってゴタゴタやらないといけない。
自動化しようと思えば、マウスを自動的に動かして・・・とかできないことはないけど。
それはむしろ面倒くさい。

それに対してCUIで動かせるLinuxは、処理の自動化が簡単。
やるべきことを文章(シェルスクリプト)に書いておけば、それを実行するだけ。

たとえば、友人のパソコンの設定を手伝ってあげないといけないとする。
GUIだと事細かにプリントスクリーンなんかを送りつつ説明しなきゃならない。
CUIだとシェルスクリプト化して、「これを実行したら設定できるから」と伝えるだけ。

bashとPerlとC言語の違い
bashが他の言語と違うのは、プログラミング言語というよりコマンドだということ。
コマンドは、コマンド名と引数だけという簡単な構成でできている。
これを無理やりに言語っぽくしているから、かえって分かりにくい。

たとえば演算子なんて概念はないから引数として演算子を与える。
そして、カッコという概念がないのが痛い。
入れ子にしたりっていうことが、なかなかできない。

そういう意味ではC言語はなんて理解しやすいんだろう。
ただし、こいつはコンパイルが必要。
エラーがあると、そもそも実行ができない。

Perlはこれらの中間といった感じ。
インタプリタなので、コンパイル不要。
でも、プログラミング言語としての形は整ってる。

というわけで、Linuxの処理を書くならPerlが便利だね。
・・・という自分の中での結論。

コメント

タイトルとURLをコピーしました