我希望能够看到每次在终端中输入“ls”或“cd”时执行的代码。这样我就可以修改现有程序并编写新程序。这些程序是用什么语言编写的?
答案1
在哪里可以找到终端命令的代码?
在哪里找到它取决于命令。有多个位置。
关于你提到的两个:
GNU 核心实用程序
ls
是 GNU Coreutils 的一部分。您可以获得所有 GNU 核心实用程序的源代码(因此不仅限于ls
:维基百科核心实用程序列表) 在gnu.org. 从命令行使用 git (git
需要安装):
git clone git://git.sv.gnu.org/coreutils
ls
也可以在网上找到git.savannah.gnu.org。所有其他命令也都可以在那里访问。
- Shell 内建命令
cd
是 shell 的内置函数,因此是 的一部分bash
。您可以在以下位置找到 bash 的源代码:ftp.gnu.org。这也将是所有内置函数的源代码。
bash 定义了以下内置命令::、.、[、alias、bg、bind、break、builtin、case、cd、command、compgen、complete、continue、declare、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、suspend、test、times、trap、type、typeset、ulimit、umask、unalias、unset、until、wait、while。
这些程序是用什么语言编写的?
因此,我想修改现有的程序并编写新的程序
最好使用现有工具并对其进行添加:创建一个名为的脚本ls2
,然后向该脚本添加功能以模仿ls
+ 您的添加。您的添加可以是作为触发函数的参数的额外字母。最大的优势:您可以用您喜欢的语言编写它。更安全,因为您不会弄乱正常命令,如果您打算为这些工具编写新功能,您应该加入它们各自的邮件列表。