プロが教える店舗&オフィスのセキュリティ対策術

CentOS7で「ls」などのLinuxコマンドが使用できますが、「ls」「cd」「cat」「less」などは何のプログラミング言語で書かれているのですか?
・Linuxコマンドは、何かのプログラミング言語ですか?
・それとも、何かのスクリプトですか?
・それとも、shell ですか?
・それとも、shell scriptですか?
・それとも、上記とは異なり、カーネルと呼ばれる部分ですか?

Linuxコマンドを説明するとき、何れにカテゴライズされるべきものなのか知りたいです。

A 回答 (5件)

type コマンドを使用すれば、それがシェル組み込み関数なのか、プログラムなのか判別できます。



シェル組み込み関数とプログラムの両方存在する場合もあります。

【 type 】コマンド――シェルがどのコマンドを起動しているかを知る
https://www.atmarkit.co.jp/ait/articles/1605/20/ …


# type -a ls
ls は `ls --color=auto' のエイリアスです
ls は /usr/bin/ls です

# type -a cd
cd はシェル組み込み関数です
cd は /usr/bin/cd です

# type -a cat
cat は /usr/bin/cat です

# type -a less
less は /usr/bin/less です


rpm コマンドで、どのパッケージに入っているかを確認できるので、開発言語が知りたければソースコードを確認すればよいです。

ちなみに、ls コマンドはC言語で書かれています。

# rpm -qf /usr/bin/ls
coreutils-8.22-24.el7.x86_64

# wget http://vault.centos.org/7.7.1908/os/Source/SPack …
# rpmdev-extract coreutils-8.22-24.el7.src.rpm
# cd coreutils-8.22-24.el7.src
# tar xvfJ coreutils-8.22.tar.xz
# less coreutils-8.22/src/ls.c
# less coreutils-8.22/src/ls.h
    • good
    • 0
この回答へのお礼

詳細解説ありがとうございました

>cd はシェル組み込み関数です
・実際に「type -a cd」コマンドを打ってみたら、驚きました
・本当にこの通り日本語で表示されるのですね
・このような機能があったことを初めて知りました

>rpm コマンドで、どのパッケージに入っているかを確認できる
・なるほど、パッケージは一つではないわけですね

>開発言語が知りたければソースコードを確認すればよい
・大変参考になりました

お礼日時:2019/12/02 14:00

大まかには、Linuxコマンドは2つのカテゴリーに分けられます。

一つはシェルに組み込まれたもの、もう一つはシェルに組み込まれていないもの。
前者はシェル(たとえばbashとかcshなど)プログラムの中に直接書かれていて、シェルの一部です。cdはこれに属します。
後者はコマンドという名前を持ってはいますが、早い話、外部プログラムで、シェルには属していません。lsはこのカテゴリーに属します。

組み込みコマンドとそれ以外の見分け方はNo.4で書かれているとおりです。
    • good
    • 0
この回答へのお礼

回答ありがとうございました

>Linuxコマンドは2つのカテゴリーに分けられます。一つはシェルに組み込まれたもの、もう一つはシェルに組み込まれていないもの
>前者はシェル(たとえばbashとかcshなど)プログラムの中に直接書かれていて、シェルの一部
>後者はコマンドという名前を持ってはいますが、早い話、外部プログラムで、シェルには属していません
・初めて知りました
・説明大変分かりやすかったです
・基本的なことが分かっていなかっため、大変参考になりました!

お礼日時:2019/12/02 14:02

>・ということは、「bash」などとは全く異なる、という理解で合っているでしょうか?


??

Linux で使用される、lsは Coreutils という様々な基本的コマンドラインプログラムのパッケージに含まれている。
Coreutils という様々な基本的コマンドラインプログラムのパッケージはC言語で書かれている。
    • good
    • 1
この回答へのお礼

再度の回答ありがとうございました

>Coreutils という様々な基本的コマンドラインプログラムのパッケージ
・なるほど、そういうパッケージがあるのですね

>Coreutils という様々な基本的コマンドラインプログラムのパッケージはC言語で書かれている
・参考になりました

お礼日時:2019/12/02 13:55

>「ls」「cd」「cat」「less」などは何のプログラミング言語で書かれているのですか?


C言語で書かれていると思います
    • good
    • 0
この回答へのお礼

回答ありがとうございました

>C言語で書かれていると思います
・ということは、「bash」などとは全く異なる、という理解で合っているでしょうか?

お礼日時:2019/12/02 13:02

Windows や MacOS が開発されるより前、UNIX という OS がありました。


その UNIX と同じ動きをするように、かつ無償で提供するために開発された OS が LINUX です。
    • good
    • 0
この回答へのお礼

回答ありがとうございました

お礼日時:2019/12/02 13:53

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!