当前位置: 技术问答>linux和unix
如何查看linux种一些命令的源代码
来源: 互联网 发布时间:2017-05-27
本文导语: 1. 学习linux的时候,对一些命令如何完成其功能很好奇。比如more命令。 2. 于是输入:whereis more,显示在/bin/more下面,但是打开是乱码,查了一些,一般的系统是不会有源代码的,都是编译过用来运行的,more这里是...
1. 学习linux的时候,对一些命令如何完成其功能很好奇。比如more命令。
2. 于是输入:whereis more,显示在/bin/more下面,但是打开是乱码,查了一些,一般的系统是不会有源代码的,都是编译过用来运行的,more这里是一个命令而不是一个源代码。
3. 于是我下载了linux的源代码。但是我如何知道more命令在哪个文件夹?
我下载的linux文件为:linux-3.16.1
2. 于是输入:whereis more,显示在/bin/more下面,但是打开是乱码,查了一些,一般的系统是不会有源代码的,都是编译过用来运行的,more这里是一个命令而不是一个源代码。
3. 于是我下载了linux的源代码。但是我如何知道more命令在哪个文件夹?
我下载的linux文件为:linux-3.16.1
|
GNU coreutils covers quite a few commands that you might be interested
git clone git://git.sv.gnu.org/coreutils
git clone git://git.sv.gnu.org/coreutils
|
到GNU的官网找到并下载“coreutils”包,里面的“src”文件下是常用的Shell命令的C语言源代码
http://ftp.gnu.org/gnu/coreutils/
http://ftp.gnu.org/gnu/coreutils/
|
1、对楼主对Linux的好奇及兴趣赞一个!(我当初学的时候没这个想法,直到后来才去找)
2、楼主下载的那个是linux内核代码,命令源码不在那里。楼上已经给出了部分命令的源码。
3、建议楼主看看LFS,手册里有详细的介绍。参考地址:http://oss.org.cn/ossdocs/gnu_linux/lfs/lfs-6.1-cn/index.html
举例:
2、楼主下载的那个是linux内核代码,命令源码不在那里。楼上已经给出了部分命令的源码。
3、建议楼主看看LFS,手册里有详细的介绍。参考地址:http://oss.org.cn/ossdocs/gnu_linux/lfs/lfs-6.1-cn/index.html
举例:
6.15.2. Contents of Coreutils
安装的程序: basename, cat, chgrp, chmod, chown, chroot, cksum, comm, cp, csplit, cut, date, dd, df, dir, dircolors, dirname, du, echo, env, expand, expr, factor, false, fmt, fold, groups, head, hostid, hostname, id, install, join, link, ln, logname, ls, md5sum, mkdir, mkfifo, mknod, mv, nice, nl, nohup, od, paste, pathchk, pinky, pr, printenv, printf, ptx, pwd, readlink, rm, rmdir, seq, sha1sum, shred, sleep, sort, split, stat, stty, sum, sync, tac, tail, tee, test, touch, tr, true, tsort, tty, uname, unexpand, uniq, unlink, users, vdir, wc, who, whoami, yes
简要描述
basename
去掉文件名中的目录和后缀。
cat
把文本文件的内容发送到标准输出。
chmod
改变文件和目录的权限,权限可以使用符号或者八进制两种表达方式。
chown
改变文件和目录的所有权(包括用户和/或组)。
chroot
使用特定的目录作为执行某个命令或者交互 shell 的根目录。在多数系统中,只有 root 用户能运行这个命令。
cksum
输出指定的每个文件的CRC(循环冗余校验)和字节数。
comm
一行一行对两个已经排序的文件进行比较。
cp
复制文件。
csplit
把一个文件按照给定的模式或者行号分成几块。
cut
从指定的文件中提取特定的列送到标准输出。
date
以特定的格式显示当前时间,或者设置系统日期。
dd
以可选块长度复制文件,默认情况下从标准输入设备输出到标准输出设备。复制过程中,还可以对文件进行一些转换。
df
显示参数中的文件所在分区磁盘空间的使用情况,如果没有给出文件参数就显示所有已经安装的文件系统的可用空间数量。
dir
同ls
dircolors
输出设置 LS_COLOR 环境变量的命令。 LS_COLOR 环境变量用来改变 ls 及相关工具默认的颜色组合。
dirname
显示从文件名去掉不是目录的后缀后的内容。
du
显示参数使用的磁盘空间的数量,对于参数为目录还会列出每个子目录磁盘空间占用情况。
echo
显示给定字符串。
|
有一些命令的源码可以到sourceforge 或者github上找。
|
楼上已经回答了
我说一点小技巧吧
如果用的是Ubuntu,可以用apt-get source [软件包名]来获取源码
如果单纯是读这些命令的实现方法,看FreeBSD的也不错。我觉得FreeBSD的这些命令较GNU的质(简)朴(单)。没有太多为了适配各种平台而夹杂的丑陋的宏。
可以用svn check FreeBSD的代码看:
svn://svn.freebsd.org/base/head
我说一点小技巧吧
如果用的是Ubuntu,可以用apt-get source [软件包名]来获取源码
如果单纯是读这些命令的实现方法,看FreeBSD的也不错。我觉得FreeBSD的这些命令较GNU的质(简)朴(单)。没有太多为了适配各种平台而夹杂的丑陋的宏。
可以用svn check FreeBSD的代码看:
svn://svn.freebsd.org/base/head