Rails Tutorial 0章：事前基礎知識学習3

#事前基礎知識編 Unixコマンド

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/808789/3bc04290-f3a4-7c5f-4911-d6149e6a9d3f.png)

#####Unixコマンドとは？
ターミナルにコマンド打つことでコマンドラインでOSを操作する為のコマンド群です。
実は学生時代にUNIXコマンドを少し学びました。
正直言って使う機会があまりなかったので簡単なコマンド以外はほぼ全て忘れてました。

まず最初に[UNIXコマンド入門講座](https://www.youtube.com/playlist?list=PLjw-30bsJNVWvKT9G3n43GoeqOMmdweuQ)の動画を見ながら復習しました。

アウトプットとして簡単に基礎的な内容をつらつらと書いていきますが、
私の日記を見るよりも[UNIXコマンド入門講座](https://www.youtube.com/playlist?list=PLjw-30bsJNVWvKT9G3n43GoeqOMmdweuQ)を見た方がベターです。

Rails Tutorialの学習をコツコツと10章までオンラインテキストで進めていますが、
正直言って基礎的なコマンドしかあまり使っていないです。
最低限、Rails Tutorialをやる為だけだったら4つのコマンドを覚えておけば十分な気がします。

#####最低限覚えておくと良いコマンド

```terminal
cd　　 　移動
ls　　　 フォルダ内のファイルを確認
touch　  ファイルの作成
c9　 　  cloud9のエディタを開く
```


<strong>上の4つのコマンドの中でc9だけは自分でインストールする必要があります。</strong>

```terminal
npm install -g c9
このコマンドでインストールするとc9コマンドを使えるようになります。
c9 <ファイル>　
c9のテキストエディターでファイルが開かれます。
```

#####ここから下は学習した内容の簡単なアウトプットの一部です。

```terminal
ubuntu:~/environment $ pwd
/home/ubuntu/environment

$以降がUNIXコマンドです。　
例えばpwd(present working directoryの略)と打つと自分が今いる場所を教えてくれます。
私はパソコンの中で/home/ubuntu/environmentという場所にいるという事です。
```

```terminal
ubuntu:~/environment $ cd /
ubuntu:/ $ 

cd (change directoryの略)をコマンドで別の場所に移動できます。
/というのはルートディレクトリと呼ばれ、一番上にあるディレクトリ(フォルダ)という意味です。

cd /　はルートディレクトリに移動しなさいという意味になります。
```

```terminal
ubuntu:/ $ ls
bin  boot  dev  etc  home  initrd.img  initrd.img.old  lib  lib64  lost+found  media  mnt  opt  proc  root  run  sbin  snap  srv  sys  tmp  usr  var  vmlinuz  vmlinuz.old

ls(list segmentsの略)コマンドでフォルダの中に何があるのかを見る事が出来ます。
```

```terminal
$ ls -l
total 88
drwxr-xr-x   2 root root  4096 Sep 24 06:36 bin
drwxr-xr-x   3 root root  4096 Oct 15 06:25 boot
.
.
.
各コマンドにはオプションを付ける事が出来ます。　-l がオプションです。
```

```terminal
lsコマンドではどんなオプションが利用できるかは --helpオプションで調べられます。

$ ls --help　
.
.
-a, --all                  do not ignore entries starting with .
  -A, --almost-all           do not list implied . and ..
      --author               with -l, print the author of each file
  -b, --escape               print C-style escapes for nongraphic characters
      --block-size=SIZE      scale sizes by SIZE before printing them; e.g.,
                               '--block-size=M' prints sizes in units of
                               1,048,576 bytes; see SIZE format below
.
.
.
```

UNIXコマンドを制する者はOSを制す
映画でかっこよく黒画面に文字を打ってパソコン操作するhackerみたくなれるかも？
私はそんなの目指してないので基礎だけで充分（　＾ω＾）・・・。 
<font color="pink" ><strong>I love Graphical User Interfaceです。</strong></font>

動画を見た後に[Rails Tutorial 基本を学ぶ！前提知識シリーズ『開発基礎編』(980円)](https://railstutorial.jp/dev_basics)を購入して学習しました。

動画は分かりやすいので理解できたような錯覚に陥りますが、実際にコマンドを打って実践してみると身についてなかったりします。『動画を見る⇒止めて実践』を繰り返すと本よりも時間がかかるような・・・。

私は[Rails Tutorial 基本を学ぶ！前提知識シリーズ『開発基礎編』(980円)](https://railstutorial.jp/dev_basics)で学ぶ方がオススメです。


#####基本的なコマンドを紹介

```terminal
pwd 　　 場所を表示
cd　　 　移動
ls　　　 フォルダ内のファイルを確認
cat　 　 ファイルの中身を閲覧
touch　  ファイルの作成
mkdir　　フォルダを作成
rm　　　 ファイル削除
rmdir　　空のフォルダを削除
curl　　 コンテンツをインターネット上からダウンロード
gunzip　 ファイルの圧縮・解凍
```

#####番外編: 疑問に思ったコマンド達
Rails Tutorialやってるとなんかインストールするときに使うコマンドいっぱいあるんですよね。

```terminal
gem  
yum  
rpm　
npm  
yarn 
pip　
apt
などなど...
```
[@chihiroさんのQiita記事](https://qiita.com/chihiro/items/e522f9be6115a7fc197d)で少し説明されていました。

>OSに何らかのソフトウェアをインストールする場合。Windowsだとインストーラーをダウンロードし、
そのインストーラーを使ってソフトウェアをインストールします。Linuxではインストーラーではなく、パッケージ管理システムでパッケージ(ソフトウェア)をインストールします。yumはRedHat系ディストリビューションのパッケージ管理システムで使用されるツール(コマンド)です。

>パッケージとは
ソフトウェアに関わるファイル一式がまとまったものをパッケージといいます。「ソフトウェアに関わるファイル」には、設定ファイルやドキュメント、プログラム本体、プログラムが動くために必要なライブラリなどが含まれます。パッケージには形式があり、その形式はディストリビューション毎に異なります。

* yumとapt

>Windowsで例えるとWindows Update、rpm/deb形式で提供されているアプリのインストールで使う。
引用:https://oshiete.goo.ne.jp/qa/9647351.html 


ディストリビューション| OS| パッケージ|インストール用ツール|
|:-----------|:------------|:------------|:------------|
| Redhat系     |Cent OS/Fedora |rpm|RPM/yum/dnf| 
| Debian系     |Ubuntu |deb|dpkg/dselect/apt|



* pip/gem/npmなど・・

>gem は ruby で書かれたプログラムのために、パッケージを管理するコマンドです。
引用:https://oshiete.goo.ne.jp/qa/9647351.html

[@kitsuyuiさんのQiita記事](https://qiita.com/kitsuyui/items/578b07d6797eafb4c153)

|言語|パッケージ|インストール用ツール|
|:-----------|:------------|:------------|
|Python|wheel/egg|pip/pipenv|
|Ruby|gem|gem/bundler|
|Go|-|go get/godep|
|Node.js|-|npm/bower|
|perl|-|cpan/cpanminus|
|PHP|phar|pear/composer|
|Java|jar|maven|

整理できて少しだけスッキリしました。