web-dev-qa-db-ja.com

端末コマンドのコードはどこにありますか?

端末で「ls」または「cd」と入力するたびに実行されるコードを確認したいのですが。それで私は既存のプログラムを修正して新しいものを書きたいと思います。それらのプログラムはどの言語で書かれていますか?

13
Paul Erlenmeyer

端末コマンドのコードはどこにありますか?

どこにあるかはコマンドによって異なります。いくつかの場所があります。

あなたが言及する2つについて:

GNU coreutils

lsはGNU Coreutilsの一部です。すべてのGNUコアユーティリティのソースコードを取得できるため、lswikipedia list of core Utilities )on www.gnu.org 。コマンドラインからgitを使用して(gitをインストールする必要があります):

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

lsのソースは git.savannah.gnu.org でもオンラインで確認できます。他のすべてのコマンドにもアクセスできます。

  • Shell builtins

cdはシェルに組み込まれているため、bashの一部です。 bashのソースコードは ftp.gnu.org にあります。これは、すべてのビルトインのソースコードにもなります。

bashは、次の組み込みコマンドを定義します。:、。、[、エイリアス、bg、バインド、ブレーク、組み込み、ケース、cd、コマンド、compgen、完全、続行、宣言、dirs、disown、echo、enable、eval、exec 、exit、export、fc、fg、getopts、hash、help、history、if、jobs、kill、let、local、logout、popd、printf、pushd、pwd、read、readonly、return、set、shift、shopt、source 、サスペンド、テスト、時間、トラップ、タイプ、タイプセット、ulimit、umask、unalias、unset、until、wait、while。


それらのプログラムはどの言語で書かれていますか?

[〜#〜] c [〜#〜] または C++

それで私は既存のプログラムを修正して新しいものを書きたいと思います

既存のツールを使用して追加するほうがよいでしょう。ls2というスクリプトを作成し、そのスクリプトに機能を追加してls +追加を模倣します。あなたの追加は、機能をトリガーするパラメーターとして余分な文字である可能性があります。最大の利点:好みの言語で記述できます。これらのツールの新しい機能をコーディングするつもりであれば、通常のコマンドをいじらないので、より安全です。それぞれのメーリングリストに参加する必要があります。

15
Rinzwind