UNIX/Linuxについてまとめてみる
半年で自走できるバックエンドエンジニアになるためにアウトプット用のブログを作りました。 一応、数年コーダーやフロントエンドの開発に携わっていたこともあるので、全くの初心者ではありませんが、壊滅的にネットワークやインフラ、バックエンドのスキルがないため、勉強し始めました。
UNIXとは?
- OSの一種である。
- WindowsとUNIXの2つのOSがあるが、大雑把にいうと、違いはGUIがメインかどうか。
- UNIXのOSのベースはCUI
- UNIXの中心にはカーネルがある
- カーネルはCPU、メモリ、ハードウェア割り込みなど、ハードウェアに関することを管理
- カーネルが中心となり、様々なソフトやドライバ、シェルなどが動いている
- ちなみにシェルはコマンドインタプリタともいう
ファイルシステム
- ファイルシステムとは、ディスクのどこに何というファイルがあるかを管理する仕組み
- UNIXのファイル構造はツリー構造になっている(全てルートディレクトリから始まる)
- ディレクトリの表現は
/hoge/fuga
のような形で行われることが多い - ディレクトリを変えるには
cd
コマンドを利用する (下記は現在いるディレクトリからhogeという名前のディレクトリに移動する時に使う)
$ cd hoge
マウント
- UNIXの場合はファイル構造が全てルートディレクトリから始まる
- そのため、CD-ROMなどのファイルを指定する場合、ディレクトリを関連づけることでファイル構造を表現する
- mnt/cdromに対して/develop/romを関連付けるようなイメージ
- Windowの場合はこの概念がない
mnt/cdromに対して/develop/romを関連付けるようなイメージ、という表現はとてもしっくりきた。今までなんとなくみていたものが繋がった感じ。
シェル
- キーボードからの入力を受けてそのコマンドを解釈、実行するプログラム
- ユーザーとカーネルの間に立つ仲介役のようなもの
- bash,zshなど様々な種類がある
- どれを使用すべきというのはない
- 過去に入力したコマンドを記憶するヒストリ機能というものがある
(base) MyMacBookpuro:~ username$ history 5 542 ssh name@100.00.0.10 543 ssh-copy-id -i ~/.ssh/id_rsa.pub name@100.00.0.10 544 ssh-copy-id -i ~/.ssh/id_rsa.pub name@100.00.0.10 545 ssh-copy-id -i ~/.ssh/id_rsa.pub name@100.00.0.10 -p 3000 546 history 5
$ !542
のようにすると一番上に表示されているコマンドを実行できるらしい。こんな機能もあるんだな。
ワイルドカード
$ ls hoge*
こうすると
hoge001 hoge002
のようなファイルを検索することができる
パイプ
- あるコマンドの出力結果を別のコマンドの入力として使う機能
例えば
ls
コマンドで以下のような結果が出る場合
$ ls abcd abbc acdc
dが入っているものを検索したいとしたら
$ ls | grep d abcd acdc
ls
コマンドで出力したものを grep
コマンドに渡すことで絞り込みを行うことができるようになる。
これは ls
の後ろにある |
のおかげでそれができるようになる。
シェル変数と環境変数
- シェル変数は実行中のシェルの中で有効なもので、環境変数は新しいシェルや別のコマンドでも使える
$ HOGE=fuga
のようにするとシェル変数をセットでき、
$ export HOGE=fuga
のようにすると環境変数にセットできる。
なんかいつも何も考えずにexport PATH .... とやっているのもこれだったのだな。なるほど…
ファイルやディレクトリの所有権
chmod
コマンドはそれを設定するためのコマンド
$ chmod [-f] [-R] MODE FILE
のように使う。FILEに指定したファイルやディレクトリへのアクセス権が変更され、変更内容はMODEで受け付けるようになっている MODEは3桁の8進数で表示することができ、一番上の桁から順に、所有者のアクセス権、グループのアクセス権、その他のアクセス権、となっていて
例えばSSH接続する際によく出てくる
$ chmod 600 id_rsa
のような記述は
- 所有者のアクセス権が6=読み込み権と書き込み権がある
- グループ、その他はそれぞれ0=権限なし
- 対象はid_rsa のように指定しているということ。
長くなってしまったので、一旦この辺りで。勉強になった。