旧gaaamiiのブログ

間違ったことを書いている時があります。コメントやTwitter、ブコメなどでご指摘ください

UNIXコマンド ls とか mv とかのソースコードの場所

自分でコマンドラインツール的な何かを作りたい時に参考にするために、ls とか mv とかのソースは手元に置いときたい。

Coreutils - GNU core utilities の Downloads というとこからダウンロードできます。ダウンロードしたものは以下のコマンドで解凍できます。

$ tar Jxvf coreutils-8.25.tar.xz

さて、早速 coreutils-8.25/src/mv.cとか読むぞーとおもむろにタグファイルを作って(ctags -R)中身を読もうとしたところ、オプションをパースする場所を見つけました。getopt_longか〜。中身が見たいぞ〜。と思ってタグジャンプしようとしたら、できないですね。これを見るには getoptというライブラリを見ないとだめですね。というわけで今度は The GNU C Library からglibc をダウンロードします。getopt.c が glibc-2.23/posix 下にありました。getopt_long という関数は同ディレクトリの getopt1.c にありました。めでたしめでたし。 coreutils-8.25/lib/getopt1.c にありました。めでたしめでたし。