linux管道命令源码 Linux 管道命令

如何查看linux命令的源代码

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

创新互联公司-专业网站定制、快速模板网站建设、高性价比牧野网站开发、企业建站全套包干低至880元,成熟完善的模板库,直接使用。一站式牧野网站制作公司更省心,省钱,快速模板网站建设找我们,业务覆盖牧野地区。费用合理售后完善,10余年实体公司更值得信赖。

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中查看各命令对应的源代码了

如何获取linux下命令源码

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

2

在github查看你所需要使用下载源码项目的URL地址,比如我下载的openwrt,在github中搜索该项目,可以查看到相关的URL地址: 复制下该地址,后面需要使用。如下图所示

3

在linux命令行中使用 git clone 命令,对该项目源码clone到本地,等待clone完成。如下图所示(该项目较大,网络不快,还未clone完成,只做参考)

求Linux下命令的源代码,

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管道命令源码 Linux 管道命令
转载来于:http://scyanting.com/article/doddhhj.html