linux系统命令源代码 linux的源代码在哪个目录

求Linux下命令的源代码,1.ash
(1)简介
ash --a shell
这是由Kenneth Almquist在1989年编写linux系统命令源代码的linux系统命令源代码 , ash是Linux下的许多命令解释器中的一个linux系统命令源代码,它的许多特性接近于SYSTEM V的shell 。
(2)部分参数说明
ash [ -efIijnsxz ] [efIijnsxz ] [ -c命令] [ 参数 ]
-c 命令linux系统命令源代码:若用-c参数,则ash从标准输入中读入命令(在执行完-c带的命令之后) 。
-s:若用-s参数,则ash从标准输入中读入命令(在执行完-c带的命令之后) 。
如果不跟-c -s参数则ash以所跟的第一个参数为文件名,从此文件中读入命令 。如无参数则ash缺省设定-s参数,从标准输入中读入命令 , 直到输入exit 。
如果参数0的第一个字母是"-"则ash确定为login shell,ash将从/etc/profile或用户的根目录中的.profile读入相应的设置和环境变量 。
-e:若用-e参数,则ash执行命令后返回值为非零值时则退出ash 。
-f:若用-f参数,则ash关闭自动产生文件名功能 。
-j:打开伯克利UNIX风格的工作控制 。
-n:读入命令但是并不执行 。
(3)范例
ash -c ls
ash执行ls这个命令后退回原先的目录和shell 。
ash -s
ash执行一个新的shell,现在可以在这个shell中工作 , 按(Ctrl-D)或输入exit后,则退回原先的目录和shell,所设定的环境变量返回原先的值 。
2.at
(1)简介
at,batch,atq , atrm:安排、检查、删除队列中的工作 。
由Thomas Koenig编写 。
(2)部分参数说明
at [-V] [-q队列] [-f文件名] [-mldbv] 时间
at -c 作业 [作业…]
atq [-V] [-q队列] [-v]
atrm [-V] 作业 [作业…]
batch [-V] [-q队列] [-f文件名] [-mv] [时间]
at在设定的时间执行作业 。
atq列出用户排在队列中的作业,如果是超级用户,则列出队列中的所有工作 。
atrm删除队列中的作业 。
batch用低优先级运行作业 , 只要系统的loadavg(系统平均负载)1.5(或者在atrun中设定的值)它就开始执行作业 。
-V:若用-V参数,则显示版本号到标准错误输出 。
-q队列:若用-q参数,则指定可选队列名称,队列名称可以是a到z或A到Z之间的任意字母 。at的缺省队列名是c,batch的缺省队列名是E,队列的字母顺序越高 , 则队列的优先级越低 。如果是大写字母的话则提交给batch,如果atq使用-q参数,则只显示这个队列中的作业 。
-m:执行完作业后即使此作业并没有输也给提交作业的用户发送提示mail 。
-f文件名:从文件中读取作业 。
-l:等于atq 。
-d:等于atrm 。
-b:等于batch 。
时间:这是用户设定的作业开始执行的时间 。时间的格式分成三个部分:时间、日期、偏移量 。可接受的时间形式是HHMM或HH:MM,在一天中指定的时间运行 , 如果时间过去linux系统命令源代码了就在第二天执行 。可以在时间后加入AM或PM使其在上午或下午运行 , 也可以指定在哪一天执行,给出日期的格式应为MMDDYY或MM/DD/YY或MM.DD.YY , 也可以给出偏移量:
时间+计数时间间隔
时间间隔可以是minutes , hours,days , weeks 。
也可以指定today让作业在今天执行 , 指定tommorow让作业在明天执行 。
(3)注意事项
如果没有指定-f选项,是at从标准输入读入所有的命令,所以可以通过管道、重定向或交互输入来输入命令 。
超级用户可以在任何情况下使用at系列的命令 。一般用户使用at系列命令的权利由文件/etc/at.allow,/etc/at.deny控制 。如果/etc/at.allow存在,则只有列在这个文件中的用户才能使用at系列的命令 。如果/etc/at.allow文件不存在,则检查/etc/at.deny这个文件 。只要不列在这个文件中的用户都可以使用at系列的命令 。缺省的配置是/etc/at.deny,是一个空文件,这表明所有的用户都可以使用at系列的命令 。
(4)范例
at -f work 4pm3 days
在三天后下午4点执行文件work中的作业 。
at -f work 10am Jul 31
在七月31日上午10点执行文件work中的作业 。
3.banner
banner:打印大标题 。
banner在标准输出上打印高质量的标题,如果没有输入要打印的文字,则其等待从标准输入输入一行文字 。其标题由"*"组成 。由Mark Horton编写 。
(2)部分参数说明
/usr/bin/banner [ -wn ]信息
-w宽度 输出宽度从131到n,n缺省为80列 。
(3)注意事项
不能打印字符:,,[,],\,^,_,{,} , |,- 。信息长度为10个英文字符,如果用空格分开字符串 , 还是连续打印字符串,两个字符串可以被括在引号(")中 。这命名banner把这些字任串置于同一行中 。
4.bash
(1)简介
bash:GNU Bourne-Again Shell
自由软件基金会(Free Software Foundation Inc)拥有bash版权 。
bash是Linux下的许多命令解释器中的一个 , 同sh兼容,并且包含了ksh和csh中一些有用的特性 。遵从IEEE Posix Shell and Tools specification(IEEE Working Group 1003.2) 。
如何查看linux系统源码一般在Linux系统中的/usr/src/linux*.*.*(*.*.*代表的是内核版本,如2.4.23)目录下就是内核源代码(如果没有类似目录,是因为还没安装内核代码) 。另外还可从互连网上免费下载 。注意,不要总到去下载 , 最好使用它的镜像站点下载 。请在里找一个合适的下载点,再到pub/linux/kernel/v2.6/目录下去下载2.4.23内核 。
代码目录结构
在阅读源码之前 , 还应知道Linux内核源码的整体分布情况 。现代的操作系统一般由进程管理、内存管理、文件系统、驱动程序和网络等组成 。Linux内核源码的各个目录大致与此相对应,其组成如下(假设相对于Linux-2.4.23目录):
1.arch目录包括了所有和体系结构相关的核心代码 。它下面的每一个子目录都代表一种Linux支持的体系结构,例如i386就是Intel CPU及与之相兼容体系结构的子目录 。PC机一般都基于此目录 。
2.include目录包括编译核心所需要的大部分头文件 , 例如与平台无关的头文件在include/linux子目录下 。
3.init目录包含核心的初始化代码(不是系统的引导代码),有main.c和Version.c两个文件 。这是研究核心如何工作的好起点 。
4.mm目录包含了所有的内存管理代码 。与具体硬件体系结构相关的内存管理代码位于arch/*/mm目录下 。
5.drivers目录中是系统中所有的设备驱动程序 。它又进一步划分成几类设备驱动,每一种有对应的子目录,如声卡的驱动对应于drivers/sound 。
6.ipc目录包含了核心进程间的通信代码 。
7.modules目录存放了已建好的、可动态加载的模块 。
8.fs目录存放Linux支持的文件系统代码 。不同的文件系统有不同的子目录对应,如ext3文件系统对应的就是ext3子目录 。
Kernel内核管理的核心代码放在这里 。同时与处理器结构相关代码都放在arch/*/kernel目录下 。
9.net目录里是核心的网络部分代码,其每个子目录对应于网络的一个方面 。
10.lib目录包含了核心的库代码,不过与处理器结构相关的库代码被放在arch/*/lib/目录下 。
11.scripts目录包含用于配置核心的脚本文件 。
12.documentation目录下是一些文档,是对每个目录作用的具体说明 。
一般在每个目录下都有一个.depend文件和一个Makefile文件 。这两个文件都是编译时使用的辅助文件 。仔细阅读这两个文件对弄清各个文件之间的联系和依托关系很有帮助 。另外有的目录下还有Readme文件,它是对该目录下文件的一些说明,同样有利于对内核源码的理解 。
在阅读方法或顺序上,有纵向与横向之分 。所谓纵向就是顺着程序的执行顺序逐步进行;所谓横向 , 就是按模块进行 。它们经常结合在一起进行 。对于Linux启动的代码可顺着Linux的启动顺序一步步来阅读;对于像内存管理部分 , 可以单独拿出来进行阅读分析 。实际上这是一个反复的过程,不可能读一遍就理解 。
如何获取Linux中某个命令的源代码用linux一段时间了 , 有时候想看看ls、cat、more等命令的源代码,在下载的内核源码中用cscope没能找到,在网上搜索了一下 , 将方 法总结如下:以搜索ls命令源码为例,先搜索命令所在包 , 命令如下: lpj@lpj-linux:~$ which ls /bin/ls用命令搜索该软件所在包,代码如下: lpj@lpj-linux:~$ dpkg -S /bin/ls coreutils: /bin/ls从上一步中可以知道ls命令的实现在包coreutils中,用apt安装(说安装有些歧义,主要是区分apt-get -d)该包的源代码然后解压,代码如下: sudo apt-get source coreutils cd /usr/src/coreutils-XXX #XXX表示版本号 sudo tar zxvf coreutils-XXX.tar.gz 或者只下载源码,然后手动打补丁再解压,代码如下: sudo apt-get -d source coreutils cd /usr/src tar zxvf coreutils-XXX.tar.gz gzip -d coreutils-XXX.diff.gz #这一步会生成coreutils-XXX.diff文件 patch -p0coreutils-XXX.diff cd coreutils-XXX tar zxvf coreutils-XXX.tar.gzOK , 这几步执行完后,就可以进入/usr/src/coreutils-XXX/coreutils-XXX/src中查看各命令对应的源代码了
linux命令的源代码怎么获取1. 以搜索ls命令源码为例linux系统命令源代码,先搜索命令所在包,命令如下linux系统命令源代码:lpj@lpj-linux:~$ which ls/bin/ls2. 用命令搜索该软件所在包,代码如下linux系统命令源代码:lpj@lpj-linux:~$ dpkg -S /bin/lscoreutils: /bin/ls3. 从上一步中可以知道ls命令linux系统命令源代码的实现在包coreutils中,用apt安装(说安装有些歧义,主要是区分apt-get -d)该包的源代码然后解压 , 代码如下:sudo apt-get source coreutilscd /usr/src/coreutils-XXX #XXX表示版本号sudo tar zxvf coreutils-XXX.tar.gz或者只下载源码,然后手动打补丁再解压 , 代码如下:sudo apt-get -d source coreutilscd /usr/srctar zxvf coreutils-XXX.tar.gzgzip -d coreutils-XXX.diff.gz #这一步会生成coreutils-XXX.diff文件patch -p0coreutils-XXX.diffcd coreutils-XXXtar zxvf coreutils-XXX.tar.gzOK,这几步执行完后,就可以进入/usr/src/coreutils-XXX/coreutils-XXX/src中查看各命令对应的源代码linux系统命令源代码了
【linux系统命令源代码 linux的源代码在哪个目录】linux系统命令源代码的介绍就聊到这里吧 , 感谢你花时间阅读本站内容,更多关于linux的源代码在哪个目录、linux系统命令源代码的信息别忘了在本站进行查找喔 。

    推荐阅读