ping
私が知っている限り、grep
orまたは同じコマンドを実行すると、ls
Linuxオペレーティングシステムはそのコマンド名を見つけるためにディレクトリを検索します/bin
。また、ほとんどのLinuxコマンドがCで書かれていることも知っています。
ping
実際のCでORがどのようにls
書かれているのか見たかったです。ちなみにcat
ファイルを使うとcat /bin/ping
バイナリ形式なのでガベージデータを吐き出します。
それでは、Cで書かれたコマンドを見る方法はありますか?
ベストアンサー1
どのパッケージがコマンドを提供しているかを知ることが役立ちます。たとえば、多くの(すべてではない!)Linuxディストリビューションでは、このls
コマンドはGNUパッケージで提供されていますcoreutils
。次のリンクから、これらのコマンドのソースを見つけることができます。coreutils ウェブページ。
このping
コマンドはパッケージで提供されますiputils
。ソースを見つけることができます。ここ。
ほとんどのディストリビューションは、どのパッケージが特定のファイルを所有しているかを確認するメカニズムを提供します。たとえば、Ubuntuではdpkg-query
次のように使用できます。
$ dpkg-query -S /bin/ls
coreutils: /bin/ls
Red Hat / Fedora / CentOS / etcに対応するコマンドは次のとおりです。
$ rpm -qf /bin/ls
coreutils-8.32-33.fc35.x86_64
興味のあるファイルを提供するパッケージがわかっている場合は、通常、ディストリビューションが提供する適切なソースパッケージを見つけてソースコードを見つけることができます。 Ubuntuの場合は、以下を訪問できます。https://packages.ubuntu.com/名前でパッケージを見つけると、iputils
次のようになります。ここ、パッケージの構築に使用されたソースをダウンロードするためのリンクを見つけることができます。
Fedoraパッケージの場合は、以下をご覧ください。https://packages.fedoraproject.org/パッケージを検索してみてください。この場合、ファイルを読み取る必要がありますspec
(例:これはiputilsからのものです。)ソースをどこで見つけることができるかをご覧ください。
UbuntuまたはFedora以外のシステムを使用している場合は、同様のメカニズムを使用できます。ほとんどのディストリビューションは、名前でソースパッケージをダウンロードするためのコマンドラインツールも提供しています。