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


はじめに

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

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

結論

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

lsコマンド

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

catコマンド

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

ファイル と ディレクトリ(フォルダ)の違い

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

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

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

ファイルとディレクトリ(フォルダ)についてのまとめ

  • ファイル書類
  • ディレクトリは書類等のものを入れる入れ物

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

ls コマンドにできること

ls コマンドができるのは入れ物(ディレクトリ)の中身を覗くことと、書類(ファイル)自体を見ることです。

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

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

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



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

testディレクトリ」の中に入っているものをlsコマンドで覗いていることがわかると思います。

また、「testディレクトリ」の中には

  • a.txt
  • b.txt
  • c_directory

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

ファイルに対して ls コマンドを実行

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

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



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

a.txt(ファイル)」自体を見ていることがわかると思います。

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

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

cat コマンドにできること

catコマンドは書類(ファイル)に何が書かれているかを見ることができます。

ファイルに対して cat コマンドを実行

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

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



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

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

入れ物(ディレクトリ)に対してcatコマンドをすることはできません。

入れ物(ディレクトリ)にはテキストファイルのように何かを書くことができないからです。

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

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

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

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

まとめ

lsコマンドにできること

入れ物(ディレクトリ)の中身を覗くこと
 →ls コマンドの結果は「入れ物の中身
書類(ファイル)自体を見ること
 →ls コマンドの結果は「書類自体

cat コマンドにできること

書類(ファイル)に何が書かれているかを見ること
 →cat コマンドの結果は「書類に書き込まれている文章
入れ物(ディレクトリ)にcatコマンドはできない
  →cat コマンドの結果は「エラー

おわりに

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

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

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