求Linux下命令的源代码,

作者&投稿:策磊 (若有异议请与网页底部的电邮联系)
求Linux系统命令的源代码,如ls,cp等~

采用linux下的几个系统调用自己写一个就成了。
参考:
ls : opendir() , closedir() , lstat() , readdir() , rewinddir()
cp: open(), read(), write(),close()

1. 以搜索ls命令源码为例,先搜索命令所在包,命令如下:

lpj@lpj-linux:~$ which ls
/bin/ls

2. 用命令搜索该软件所在包,代码如下:

lpj@lpj-linux:~$ dpkg -S /bin/ls
coreutils: /bin/ls

3. 从上一步中可以知道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 -p0 < coreutils-XXX.diff
cd coreutils-XXX
tar zxvf coreutils-XXX.tar.gz

OK,这几步执行完后,就可以进入/usr/src/coreutils-XXX/coreutils-XXX/src中查看各命令对应的源代码了

1.ash
(1)简介
ash --a shell
这是由Kenneth Almquist在1989年编写的,ash是Linux下的许多命令解释器中的一个,它的许多特性接近于SYSTEM V的shell。
(2)部分参数说明
ash [ -efIijnsxz ] [ +efIijnsxz ] [ -c命令] [ 参数 ]
-c 命令:若用-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,在一天中指定的时间运行,如果时间过去了就在第二天执行。可以在时间后加入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 4pm + 3 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)。

h

1.ash
(1)简介
ash --a shell
这是由Kenneth Almquist在1989年编写的,ash是Linux下的许多命令解释器中的一个,它的许多特性接近于SYSTEM V的shell。
(2)部分参数说明
ash [ -efIijnsxz ] [ +efIijnsxz ] [ -c命令] [ 参数 ]
-c 命令:若用-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,在一天中指定的时间运行,如果时间过去了就在第二天执行。可以在时间后加入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 4pm + 3 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系统常用命令有哪些?
安装和登录命令:login 、shutdown 、halt 、reboot 、mount 、umount 、chsh 文件处理命令:file 、mkdir 、grep 、dd 、find 、mv 、ls 、diff 、cat 、ln 网络操作命令:ifconfig 、ip 、ping 、netstat 、telnet 、ftp 、route 、rlogin rcp 、finger 、mail 、nslookup 系统安全相关命令:...

linux命令行下载
如果用浏览器可以查看设置,里面有默认的下载目录,一般在桌面。如果其他下载工具,最好看配置文件,一般都会在/home/用户名/里面的该工具的隐藏目录下或是新建的download。linux下载命令?Linux下载命令为wget,它是一个免费的文件下载工具,用来从指定的URL下载文件到本地主机。它支持HTTP和FTP协议,可以...

linux必学的60个命令
网络操作命令:ifconfig、ip、ping、netstat、telnet、ftp、route、rlogin、rcp、finger、mail、 nslookup。系统安全相关命令:passwd、su、umask、chgrp、chmod、chown、chattr、sudo ps、who。其它命令:tar、unzip、gunzip、unarj、mtools、man、unendcode、uudecode。Linux简介 Linux,全称GNU\/Linux,是一套...

Linux执行的10个最危险的命令是哪些?
Linux命令行佷有用、很高效,也很有趣,但有时候也很危险,尤其是在你不确定你自己在正在做什么时候。这篇文章并不打算引来你对Linux或linux命令行的愤怒。我们只是想让你意识到在你运行某些命令时应该三思而后行。(译注:当然,以下命令通常都是在root权限下才能将愚蠢发挥到无可救药;在普通用户身份...

linux删除路由命令
在Linux系统中,设置路由通常是为了解决以下问题:该Linux系统在一个局域网中,局域网中有一个网关,能够让机器访问Internet,那么就需要将这台机器的IP地址设置为Linux机器的默认路由。要注意的是,直接在命令行下执行route命令来添加路由,不会永久保存,当网卡重启或者机器重启之后,该路由就失效了;可以...

linux下执行xhost命令报错,如何解决?
如果能出现信息说明你已经成功了 这样估计就可以解决linux下安装oracle出现的xhost问题 电脑上下载安装Xshell 5 选择需要连接到哪一个Linux系统 输入用于连接的用户名和密码 输入用于连接的密码 单击这里的确定,开始连接 连接成功 命令startx提示信息 如果以上经验帮到您,麻烦在左下角给点个赞,谢谢!

linux文件下载命令
1.连接ftp服务器 格式:ftp a)在linux命令行下输入:ftp192.168.1.1 b)服务器询问你用户名和密码,分别输入用户名和相应密码,待认证通过即可。2.下载文件 下载文件通常用get和mget这两条命令。a)get 格式:get 将文件从远端主机中传送至本地主机中。3.上传文件 a)put 格式:putlocal-file 将...

Linux中的命令是什么?
linux本身就是拥有强大的shell的一个系统,命令自然是最核心的部分,比如说关机开启或者关闭服务,读写文件,更换文件权限,增加删除用户,用户组管理等等等都可以在纯命令行下进行。就像Windows用鼠标在图形化界面操作,Windows也有命令行叫cmd你可以在开始中运行他,但是它并不是像linux里面那么强大,linux...

Linux常用命令有哪些
常用的命令有好多啊,你刚开始学,不用特意的去记,用到什么学什么就好了。 当然非要列举,下面列举的100条,是来自百度经验上的。 希望对你有帮助。Linux常用命令大全100条:1,echo “aa” 》 test.txt 和 echo “bb” 》》 test.txt \/\/》将原文件清空,并且内容写入到文件中,》》将内容...

如何在linux终端下用命令编辑一个文件并保存
在linux终端下用命令编辑一个文件并保存的具体操作步骤如下:1、首先打开命令控制台找到要编辑的文件,执行命令ls看看下面有几个文件,我这个下面有个index.php文件。2、然后执行命令vi index.php。3、这个时候如果想修改这个文件的内容,按下间键盘上的'i'键,最下方就会变成INSERT,就可以修改了。4、...

丽江市18023404162: linux命令的源代码怎么获取 -
老话肿节: 用linux一段时间了,有时候想看看ls、cat、more等命令的源代e799bee5baa6e59b9ee7ad9431333361306266码,在下载的内核源码中用cscope没能找到,在网上搜索了一下,将方 法总结如下:以搜索ls命令源码为例,先搜索命令所在包,命...

丽江市18023404162: 我想知道linux所有命令源代码,我是说命令的源代码在哪里查看,或是在哪里能够找到命令源代码大全!! -
老话肿节: 一般来说,不同的命令可能隶属于不同的软件包,这样就没有一个地方会有所有命令的源代码.(命令的个数也会与你所安装的软件包有关) 但是,一些常用的命令,例如 basename cat chgrp chmod chown chroot cksum comm cp csplit cut date...

丽江市18023404162: Linux中命令的源码 -
老话肿节: 当然在相应的工具包的源码包中 比如大部分常见命令的源码都包含在 coreutils这个软件包中 总之 先查询该命令属于那个软件包, 再去寻找这个软件包的源码包就行了

丽江市18023404162: 如何获取linux下命令源码 -
老话肿节: 首先在linux命令行中新建一个目录 mkdir github(名字可以按你项目名定义),之后敲git命令,确认git工具已经安装好了,我使用的是Ubuntu14.04,git工具默认安装好了.若没有安装,可以尝试自行安装,安装方法比较简单.如下图所示2 在...

丽江市18023404162: 求Linux系统命令的源代码,如ls,cp等 -
老话肿节: 采用linux下的几个系统调用自己写一个就成了.参考:ls : opendir() , closedir() , lstat() , readdir() , rewinddir() cp: open(), read(), write(),close()

丽江市18023404162: linux系统的源代码哪里可以下载?? -
老话肿节: 如果要下载指定版本的内核源代码,就去官网下载,地址: http://www.kernel.org/如果要查看本机(某个发行版的内核源代码),可以在目录 /usr/src/kernels下面找到.如果要查看某些安装文件的源代码,可以使用命令查看该文件 的安装源,以查看cat源码为例,命令:rpm -qif `which cat` 之后会有相关信息打印出来,访问其源码路径,下载即可. 附本人博客“获取Linux命令源代码的方法”链接如下: http://blog.csdn.net/shallowgrave/article/details/7854548

丽江市18023404162: 如何查看linux种一些命令的源代码 -
老话肿节: linux的命令,实际上都是编译好的程序,一般放在/usr/bin目录下.系统中并不会有源代码.也有些命令是脚本,比如dstat等.这个可以直接看.如果要看linux的命令的源代码,只有在去查找相关linux源码才行,直接在系统中是看不到的.

丽江市18023404162: 求linux 所有指令代码.
老话肿节: 在linux命令行界面,按两次 TAB键就出来了,慢慢看,除了系统自带的上千条,还有许多开源的指令要编译进去才有

丽江市18023404162: 谁能提供LINUX下crontab指令的源代码? -
老话肿节: linux下crontab基本上以vixie-cron为标准 源码下载地址 http://61.135.158.199/distfiles/vixie-cron-4.1.tar.bz2

丽江市18023404162: 那里可以找到linux 命令的源代码,例如命令 useradd -
老话肿节: 在 shadow-utils 这个软件包里面, http://ftp.devil-linux.org/pub/devel/sources/1.2/shadow-4.0.17.tar.bz2 解压后有个 src目录 ,下面即有 useradd的源代码 , 不过要编译成功必须保证 shadow目录的完整性, 里面包含了头文件和makefile ,如果只是参考的话 , 那么就无关紧要了

本站内容来自于网友发表,不代表本站立场,仅表示其个人看法,不对其真实性、正确性、有效性作任何的担保
相关事宜请发邮件给我们
© 星空见康网