【Linux】ls と cat の違いとは？

# はじめに
今回は、自分がLinuxを始めて一番最初につまづいた `lsコマンド`と `catコマンド`の違いについて説明したいと思います。

拙い説明ではありますが、Linuxを始めたばかりの方の勉強の助けになれればと思います。:penguin:

# 結論
まず最初に簡単に結論を書いてしまいます。
「うーん、わからん」となった方は、さらに先で細かく説明しているのでそちらを参照してください。

### lsコマンド
ファイルやディレクトリ（フォルダ）の情報を表示するコマンド。
ディレクトリを対象にすることで、そのディレクトリが持っているファイルや、ディレクトリの情報も取得できる。

### catコマンド
ファイルの中身(ファイルに何が書かれているか)を見るために使われることが多い。
ディレクトリに対して使用するとエラーが発生する。

# ファイル と ディレクトリ（フォルダ）の違い

lsコマンドと catコマンドの違いを理解する上で一番大切なのは「ファイル」と「ディレクトリ（フォルダ）」の違いです。

1. 「<font color="Orange">ファイル</font>」は一枚の紙のようなものであり、情報が書き込まれています。
中に何かを入れることはできません。

2. 「<font color="LimeGreen">ディレクトリ</font>」は「<font color="Orange">ファイル</font>」を入れるための入れ物で、直接何かを書き込むことはできません。

![ファイルとフォルダ.PNG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1631699/ba040939-a87e-ac01-573a-6a831fe01843.png)

#ファイルとディレクトリ（フォルダ）についてのまとめ
* <font color="Orange">ファイル</font>は`書類`
* <font color="LimeGreen">ディレクトリ</font>は書類等のものを入れる`入れ物`

※ ちなみに「フォルダ」と「ディレクトリ」は**基本的には呼び方が違うだけで、同じ意味**と考えて問題ないでしょう。


# ls コマンドにできること

ls コマンドができるのは**①<font color="LimeGreen">入れ物（ディレクトリ）</font>の中身を覗くこと**と、**②<font color="Orange">書類（ファイル）</font>自体を見ること**です。

### ディレクトリに対して ls コマンドを実行
実際にコマンドを実行してみます。

```
[qiita@localhost ~]$ ls test
a.txt  b.txt  c_directory
```

<br>
これをWindowsのイメージにしてみると ↓ のようになります。
![ls結果5.PNG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1631699/7e55ed1d-78ca-50d9-8c27-c0a00fc6b232.png)


「<font color="LimeGreen">testディレクトリ</font>」の中に入っているものをlsコマンドで覗いていることがわかると思います。

また、「<font color="LimeGreen">testディレクトリ</font>」の中には

* a.txt
* b.txt
* c_directory

の3つが入っていることが確認できます。

### ファイルに対して ls コマンドを実行
次にファイルに対してlsコマンドを実行します。

```
[qiita@localhost test]$ ls a.txt
a.txt
```

<br>
これをWindowsのイメージにしてみると ↓ のようになります。

![cat結果5.PNG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1631699/3e36cd61-2915-65dd-582a-06e883e4332c.png)


「<font color="Orange">a.txt(ファイル)</font>」自体を見ていることがわかると思います。

「<font color="Orange">a.txt(ファイル)</font>」は入れ物ではないので、中身はありません。
また、ls コマンドは`何が書かれているか`まで見ることはできません。

※ ls コマンドはオプションを付けることで入れ物自体を見ることもできます。

# cat コマンドにできること

catコマンドは**<font color="Orange">書類（ファイル）</font>に何が書かれているかを見ること**ができます。

### ファイルに対して cat コマンドを実行
実際にコマンドを実行してみます。

```
[qiita@localhost test]$ cat a.txt
Hello World!!!
Good Bye!!!
```

<br>
これをWindowsのイメージにしてみると ↓ のようになります

![cat結果4.PNG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1631699/36f19dca-8e2c-1c70-ad54-1c1e2832d39e.png)


### ディレクトリに対して cat コマンドを実行

<font color="LimeGreen">入れ物（ディレクトリ）</font>に対してcatコマンドをすることはできません。

<font color="LimeGreen">入れ物（ディレクトリ）</font>には`テキストファイルのように何かを書くことができない`からです。

実際にコマンドを実行してみます。

```
[qiita@localhost test]$ cat c_directory/
cat: c_directory/: ディレクトリです
```

**このようにエラーが発生してしまいます。**

これをWindowsのイメージにしてみると ↓ のようになります。

![cat3.PNG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1631699/31aba040-6dda-2504-c4cf-eb9e11916dee.png)



# まとめ
### lsコマンドにできること

**①<font color="LimeGreen">入れ物（ディレクトリ）</font>の中身を覗くこと**
　→ls コマンドの結果は「`入れ物の中身`」
**②<font color="Orange">書類（ファイル）</font>自体を見ること**
　→ls コマンドの結果は「`書類自体`」

### cat コマンドにできること
**<font color="Orange">書類（ファイル）</font>に何が書かれているかを見ること**
　→cat コマンドの結果は「`書類に書き込まれている文章`」
※**<font color="LimeGreen">入れ物（ディレクトリ）</font>にcatコマンドはできない**
　　→cat コマンドの結果は「`エラー`」

# おわりに

最後まで読んでいただきありがとうございました。
今回のような素朴な疑問に答えることの難しさを痛感しました...。

説明するための無理やりな解釈等が入ってしまい、我ながらとても残念です。
良い説明方法等ありましたら、コメント等でご教授いただけると幸いです。

Twitter([@IT_no_mushi](https://twitter.com/IT_no_mushi))もやっていますので、こちらでもコメントやフォローをお待ちしております。