web-dev-qa-db-ja.com

シェルコマンドのソースコードを読むにはどうすればよいですか?

Linuxコマンドが書かれている実際のソースコードを読みたいです。それらを使用した経験がいくつかありましたが、今は、マシンをより深いレベルで操作する時が来たと思います。

ここにいくつかのコマンドがあります http://directory.fsf.org/wiki/GN 。残念ながら、「ls」などの基本的なコマンドを見つけることができませんでした。

「ls」のような単純なシェルコマンドのソースコードを正確に読み取るにはどうすればよいですか? Ubuntu 12.04で実行しています

140
Luigi Tiburzi

これらの基本的なコマンドはすべて、coreutilsパッケージの一部です。

必要なすべての情報をここで見つけることができます。

http://www.gnu.org/software/coreutils/

最新のソースをダウンロードする場合は、gitを使用する必要があります。

git clone git://git.sv.gnu.org/coreutils

Ubuntuマシンにgitをインストールするには、apt-getを使用する必要があります(gitは標準のUbuntuインストールには含まれていません)。

Sudo apt-get install git

真実は、ここでlsコマンドの特定のソースを見つけることができます:

http://git.savannah.gnu.org/cgit/coreutils.git/tree/src/ls.c

ls...のように「簡単」なコマンドの4984コード行のみ、まだ読みたいですか??がんばろう! :D

155
Zagorax

coreutils の人気のあるプログラムのソースへの直接リンク:

全リストはこちら

111
Drew Noakes

lsはcoreutilsの一部です。 gitで取得できます:

git clone git://git.sv.gnu.org/coreutils

このページ に、他のパッケージとともにリストされているcoreutilsがあります(下にスクロール)。

6
Denys Séguret

実際には、より適切なソースが http://suckless.org によって提供されています。sbaseリポジトリを見てください:

git clone git://git.suckless.org/sbase

それらはより明確で、よりスマートで、よりシンプルで、サックレスです。例えば、ls.cのLOCはわずか369です

その後、より複雑なGNUコードを理解しやすくなります。

5
hurufu

次のコマンドを使用してgithubで使用できます

git clone https://github.com/coreutils/coreutils.git

すべてのソースコードは、srcフォルダーにあります。

git がインストールされている必要があります。

2012年以降、物事は変わりました。lsソースコードは5309行になりました

1
RMPR

他の投稿で言及されているCoreUtilsは、私があなたが探していると思うほとんどの機能の実際の実装を示していません。ほとんどの場合、データを取得する実際の関数のフロントエンドを提供します。これは次の場所にあります。

Gnulib に基づいて構築され、実際のソースコードは lib-subdirectory

1
slashmais