Linuxって？

#はじめに
Linuxの知識が乏しかったので自分用にまとめました。後半でパーミッション（権限）に関して詳しく書いています。

#Linuxとは
コンピューターを動かすのに必要なソフトウェア（OS)。Linus Torvalds氏によって開発されたPC-UNIXの一種。Linux自体はオープンソースだが、実際は企業や団体が独自のツールやサポートなどのサービスを付け加えて、パッケージを作っている。これをディストリビューション（配布形態）という。有名なDebian系のUbuntu、RedHat系のCentOSなどがある。

![系統図.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/969534/77a8b5cc-abf0-9099-d4ba-1bf88a6565cf.png)
※代表的なOSのみ記載。

参考：https://eng-entrance.com/unix_linux

#Linuxの主なコマンド

##リダイレクション
標準入出力の入出力先を変更する機能

```
コマンド > sample.txt
```

`>`・・・　上書き保存
`>>`・・・　追加保存

##パイプ
複数のコマンドを組み合わせる機能。コマンドとコマンドをパイプ`|`で繋ぐ。

入力

```
ls / | grep sr
```

`grep sr`は引き渡された内容の中から`sr`という文字を含むディレクトリを検索する。

出力

```
srv
usr
```


##エイリアス


```
//エイリアス作成
alias <エイリアス名> = '<実際のコマンド>'
alias la ='ls -a'   //例

//エイリアス削除
unalias la          //上記の例の場合
```

##リンクを作成

lnコマンド(Link)コマンドは、ファイルやディレクトリに対するリンク（リンクファイル）を作る。リンクにはシンボリックリンクとハードリンクの2種類がある。

```
ln -s /home/shiori/sample.txt sample
```

`-s`　・・・シンボリックリンク
`なし`　・・・ハードリンク

###シンボリックリンク → ファイルへの参照

・リンクを削除しても元のファイルには影響がない
・本体を削除するとリンクが切れる

###ハードリンク → ファイルの実態への参照

・通常のファイルの実態とその名前が1:1の関係
・ハードリンクを作ると1つのファイルを2つの名前で参照できる

##コマンドの種類を調べる

```
type <コマンド名>
```

cdコマンドの場合

```
[○○○○○@localhost ~]$type cd
cdはシェル組み込み関数です
```


touchコマンドの場合

```
[○○○○○@localhost ~]$type touch
touchはハッシュされています
```

aliasで指定していた場合

```
[○○○○○@localhost ~]$type la
la は 'ls -a'のエイリアスです
```
##パーミッション（権限）
ファイルやディレクトリに対してユーザーやグループが持つ権利のこと。保護モード、許可属性、アクセス権限という。パーミッションには`読み込み、書き込み、実行`3つの属性がある。それぞれに可か不可を設定する。（ディレクトリの移動や検索なども含む）

入力

```
[○○○○○@localhost ~]$ls -l
```
出力
![permission.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/969534/37d569b5-7516-0d06-1e82-3f7db6d549dc.png)

出力結果の詳細（ファイルの種類とパーミッション）
![許可.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/969534/91ba8bdc-7fdb-214b-e4ed-c5167c510253.png)
左端のブロックの
・最初の1文字が<font color="red">ファイル種類</font>
・残りの9文字が<font color="blue">パーミッション</font>
・数字が<font color ="green">ハードリンクの数</font>
を示している。
青枠部分の先頭行を例にとると`rwxrwxr-x`は更に3文字づつ分けられ、
・1~3文字目までの`rwx`はUserの設定
・4~6文字目までの`rwx`はGroupの設定
・7~9文字目までの`r-x`はOtherの設定
を示している。この場合、「UserとGroupは読み込み権限・書き込み権限・実行権限があり、Otherは読み込み権限と実行権限はあるが読み込み権限がない」。各記号の意味を下記に示す。

####「ファイルの種類」の意味

|種類|意味|
|:---:|:---:|
|-|通常のファイル|
|d|ディレクトリ|
|l|シンボリックリンク|
|c|キャラクタ型デバイスファイル*|
|d|ブロック型デバイスファイル*|

*周辺機器にアクセスするためのファイル。データの使い方で2種類に分かれる。

####「パーミッション」の意味

|パーミッション|意味|
|:---:|:---:|
|r|読み込み許可<br>(Readable)|
|w|書き込み許可<br>(Writable)|
|x|実行許可<br>(eXecutable)|
|-|不許可|

##パーミッションの設定を変更

```
chmod <ユーザーカテゴリ> '+'or'-' <パーミッションカテゴリ> <ファイル名>
chmod u+r sample.txt //例
```
![スクリーンショット 2021-01-22 13.17.52.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/969534/0e618cfd-15a2-a2c6-35b0-765a1e00a3fb.png)

###数値による設定
パーミッションは数値で設定することも可能で、次の表のように数値が決められている。

|パーミッション|数値|
|---|---|
|r (読み込み許可)|4|
|w (書き込み許可)|2|
|x (実行許可)|1|
|- (不許可)|0|![スクリーンショット 2021-01-22 16.35.45.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/969534/01afef4b-8aa5-5d39-bcb3-6adc5285d648.png)


使用例：UserとGroupは全ての権限をもつが、Otherは書き込み権限のみ持たない場合
![permission.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/969534/3d193822-a8df-55b7-1f63-aa3040353438.png)


##現在稼働中のプロセスをID番号付きで一覧表示

入力

```
ps
```

出力
![ps.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/969534/5e536d09-b6ab-83d1-bd43-79f853685d18.png)
・PID（プロセスID） ー プロセス固有の番号
・TTY　ー　使用している端末の番号
・TIME　ー　CPUの消費時間
・CMD　ー　コマンド名

##プロセスの終了

```
kill <プロセスID>
```

#最後に
次回はもう少し深掘りします。
（もしこの記事に誤りがありましたらご教授いただけると幸いです。）