Linuxのお勉強



## Linuxのお勉強
エンジニアやっていて絶対関わるLinux
最低限知っておいて欲しい、コマンドと考え方をまとめています
かくいう私もLinuxお勉強中なので、書きながら一緒にお勉強します。

### Linuxとは？？？

いきなりlinuxのコマンド叩いても、そうなんや〜こう出るんや〜　ってなるだけ(実際に触れるのは大事だが)にならないためにも理論、知識も頭の片隅にでもに入れておきましょう

LinuxとはWindows OS、MacOSなどいったOSの種類の一つ。
OS(オペレーティングシステム)とはソフトウェア（アプリなど）とハードウェア（物理装置とか）をつなぐ役割をしている。
Word・Excelなどのソフトウェア・アプリで作成した文書、設定などはハードウェアへ記録。
保存したデータを　読み込む→見る　ということができるのはOSのおかげです。
他にもOSは実行した操作をコンピューターへ正しく伝える役割など、多くの場面でOSが頑張ってくれています。
スマホやPCなどは、このOSがないと役割を果たせないのです。
そしてOSの一種であるLinuxは、ITの基礎を支えてくれている優秀なOSなのです。

### Linuxでできること

●無料なので手軽に使える
優秀なLinuxは無料で使うことができるんです。

●新しいOSを開発できる
無料で公開・配布しているので、Linuxを活用すれば、新たなOSを作ることもできる。

**代表例**
スマホOSのAndroid
→LinuxをベースにしたOSの1つ。
 
●サーバを自由に構築できる
Linuxは自由に改良できるOSS(オープンソースソフトウェア)のOSであるため、必要な分だけサーバを構築できる。Linuxは無料であるため、コストを大幅に抑えてサーバを立てられるのが魅力です。

ほかにもできることはたくさんありますが、一旦ここまで。

### Linuxを導入することで得られるメリット・デメリット

ざっくりではありますがメリットデメリットまとめました。

**メリット**	
導入コストがかからない
低スペックのデバイスでも使える
ディストリビューションが豊富※

※ディストリビューションについてはこちらを参考にしてください。
https://eng-entrance.com/linux%E3%83%87%E3%82%A3%E3%82%B9%E3%83%88%E3%83%AA%E3%83%93%E3%83%A5%E3%83%BC%E3%82%B7%E3%83%A7%E3%83%B3%E3%81%A8%E3%81%AF%EF%BC%9F#i

**デメリット**
トラブルがあった時は自己解決する必要がある
他OSで使えるソフトウェアが使えない
周辺機器が正常に動かないこともある
 
## 実際に手を動かしてみよう

Linuxとは何者なのかなんとなくわかったところで、実際にLinuxを動かしてみよう。
VirtualBoxを利用したRHELの仮想サーバ構築をして、実際にコマンドを実行してみます
仮想サーバ構築については、わかりやすい手順が↓にあるのでこちらを参考にしてください
https://anikitech.com/virtualbox-rhel8-install/

仮想サーバの構築できたら、黒い画面(ログイン画面)がでるはずなのでログインをしましょう。
ログインができたら、コマンドプロンプトが立ち上がるので、これで準備完了です。

## コマンドを実行してみよう

コマンドプロンプトが立ち上がったところで、実際にコマンドを入力して画面にどういう結果が出るかみてみましょう。

### lsコマンド

lsコマンドは現在いるディレクトリにあるファイルやフォルダを表示するコマンドです

```
ls
```
**実行結果**

```
user@USERnoMacBook-Air ~ % ls
Desktop		Documents	Downloads	Library		Movies		Music		Pictures	Public		demo.py
```
現在いるディレクトリにあるファイルやフォルダが表示されます。
僕の環境がMacなので実際の見え方は違うと思いますが似たような結果が出ると思います。

### cdコマンド
```
cd XXX ←XXXに移動したいディレクトリを入れる
```
**実行結果**
```
user@USERnoMacBook-Air ~ % cd desktop
user@USERnoMacBook-Air desktop % 
```
ディレクトリを移動するコマンドです
いまいるディレクトリから別のディレクトリに移動します

移動したディレクトリから１つ前のディレクトリに戻る場合は

```
cd ..
```
**実行結果**
```
user@USERnoMacBook-Air desktop % cd ..
user@USERnoMacBook-Air ~ % 
```

### mkdirコマンド
ディレクトリを作成するコマンド
ディレクトリ名は任意
```
mkdir ディレクトリ名
```
**実行結果**
```
user@USERnoMacBook-Air ~ % mkdir test
user@USERnoMacBook-Air ~ % ls
Desktop		Documents	Downloads	Library		Movies		Music		Pictures	Public		demo.py		test
```
### pwdコマンド
いまいるディレクトリの絶対パス名を出力する

```
pwd
```
**実行結果**
```
user@USERnoMacBook-Air ~ % pwd
/Users/user
```
### touchコマンド
ファイル作成コマンド。ファイル名の拡張子はtxtなどを指定。拡張子なしでの実行も可能
```
touch ファイル名
```
**実行結果**
```
user@USERnoMacBook-Air ~ % touch test.txt
user@USERnoMacBook-Air ~ % ls
Desktop		Documents	Downloads	Library		Movies		Music		Pictures	Public		demo.py		test.txt
```
### rmコマンド
ファイルを消すためのコマンド
```
rm ファイル名
```
**実行結果**
```
user@USERnoMacBook-Air ~ % rm test.txt 
user@USERnoMacBook-Air ~ % ls
Desktop		Documents	Downloads	Library		Movies		Music		Pictures	Public		demo.py
```
### rmdirコマンド
ディレクトリを削除するコマンド
```
rmdir test
```
**実行結果**
```
user@USERnoMacBook-Air ~ % rmdir test
user@USERnoMacBook-Air ~ % ls
Desktop		Documents	Downloads	Library		Movies		Music		Pictures	Public		demo.py
```
### mvコマンド
ファイルを移動するコマンド
```
mv 引数１ 引数２
```
引数１に移動させたいファイル、第２引数に移動先

**実行結果(test.txtファイルを作成してデスクトップへ移動)**
```
user@USERnoMacBook-Air ~ % touch test.txt
user@USERnoMacBook-Air ~ % ls
Desktop		Documents	Downloads	Library		Movies		Music		Pictures	Public		demo.py		test.txt
user@USERnoMacBook-Air ~ % 
user@USERnoMacBook-Air ~ % 
user@USERnoMacBook-Air ~ % mv test.txt desktop
user@USERnoMacBook-Air ~ % cd desktop
user@USERnoMacBook-Air desktop % ls
AWS			test.txt		typescript		web			社			ネタ			宿題.xlsx		手順書の写真
```
## まとめ
いかがでしたでしょうか。基本の基本のコマンドでした。
コマンドにオプションつけたり、管理権限つけたり、できることはたくさんあります。
少しづつ覚えていって実践で活かせるように、腕を磨いていきましょう！