175

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

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

'ls'のような単純なシェルコマンドのソースコードをどの程度正確に読み取ることができますか?私はUbuntu12.04で実行しています

4

8 に答える 8

189

これらの基本的なコマンドはすべて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

「十分に簡単な」コマンドのコード行は 4984 行だけlsです ... まだ読むことに興味がありますか?? 幸運を!:D

于 2012-07-17T18:08:29.093 に答える
145

のいくつかの一般的なプログラムのソースへの直接リンクcoreutils:

完全なリストはこちら。

于 2014-09-24T20:49:48.607 に答える
6

lscoreutils の一部です。git で取得できます:

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

このページでは、coreutils が他のパッケージ (一番下までスクロール) と一緒にリストされています。

于 2012-07-17T18:05:42.667 に答える
5

実際には、より健全なソースがhttp://suckless.orgによって提供されており、sbaseリポジトリを参照してください。

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

それらはより明確で、よりスマートで、よりシンプルで、無愛想です。たとえば、ls.cLOC は 369 しかありません。

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

于 2015-07-13T19:45:59.797 に答える
1

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

lib-サブディレクトリにある実際のソース コードを使用して、Gnulibに基づいて構築されています。

于 2016-08-18T07:31:55.997 に答える
-1
    cd ~ && apt-get source coreutils && ls -d coreutils*     

ubuntuでこのようなコマンドを使用して、パッケージのソースを収集できるはずsudoです。自分が所有する場所へのダウンロードを想定することは省略できます。

于 2013-02-20T03:53:14.683 に答える