参考实验楼课程Linux命令实例练习
comm命令
通常比较文本文件的内容很有帮助。对于系统管理员和软件开发者来说,这个尤为重要。一名系统管理员可能,例如,需要拿现有的配置文件与先前的版本做比较,来诊断一个系统错误。同样的,一名程序员经常需要查看程序的修改。
comm 命令将逐行比较已经排序的两个文件。显示结果包括 3列:第 1 列为只在第一个文件中找到的行,第 2列为只在第二个文件中找到的行,第 3 列为两个文件的共有行。
注意,comm命令和 join、uniq命令一样,只能用于已经排过序的数据。
命令格式:
comm [选项]文件 1 文件 2
常用参数:
参数 | 描述 |
-1 | 不输出文件 1 特有的行 |
-2 | 不输出文件 2 特有的行 |
-3 | 不输出两个文件共有的行 |
diff命令
类似 comm命令,diff 命令被用来监测文件之间的差异。然而,diff是一款更加复杂的工具,它支持许多输出格式,并且一次能处理许多文本文件。软件开发员经常使用 diff程序来检查不同程序源码版本之间的更改,diff能够递归地检查源码目录,经常称之为源码树。diff程序的一个常见用例是创建 diff文件或者补丁,它会被其它程序使用,例如 patch程序(我们后面会讲到),来把文件从一个版本转换为另一个版本。
diff 在命令行中打印每一个行的改动,并且 diff是 svn、cvs、git等版本控制工具不可或缺的一部分。
diff 命令是 differential的缩写。
命令格式:
diff [选项]文件
常用参数:
参数 | 描述 |
-c | 上下文模式,显示全部内文,并标出不同之处 |
-u | 统一模式,以合并的方式来显示文件内容的不同 |
-a | 只会逐行比较文本文件 |
-N | 在比较目录时,若文件 A 仅出现在某个目录中,预设会显示:Only in 目录。若使用-N 参数,则 diff 会将文件 A 与一个空白的文件比较 |
-r | 递归比较目录下的文件 |
patch命令
patch 命令被用来把更改应用到文本文件中。它接受从 diff程序的输出,并且通常被用来把较老的文件版本转变为较新的文件版本。让我们考虑一个著名的例子。Linux内核是由一个大型的,组织松散的贡献者团队开发而成,这些贡献者会提交固定的少量更改到源码包中。这个 Linux内核由几百万行代码组成,虽然每个贡献者每次所做的修改相当少。对于一个贡献者来说,每做一个修改就给每个开发者发送整个的内核源码树,这是没有任何意义的。相反,提交一个 diff文件。一个 diff 文件包含先前的内核版本与带有贡献者修改的新版本之间的差异。然后一个接受者使用 patch程序,把这些更改应用到他自己的源码树中。使用 diff/patch组合提供了两个重大优点:
1. 一个 diff文件非常小,与整个源码树的大小相比较而言。
2. 一个 diff文件简洁地显示了所做的修改,从而允许程序补丁的审阅者能快速地评估它。
当然,diff/patch能工作于任何文本文件,不仅仅是源码文件。它同样适用于配置文件或任意其它文本。
准备一个 diff文件供 patch 命令使用,GNU 文档建议这样使用 diff命令:
diff-Naur old_file new_file > diff_file
old file 和 new file部分不是单个文件就是包含文件的目录。这个 r选项支持递归目录树。
命令格式:
diff [选项]补丁文件
常用参数:
参数 | 描述 |
-p num | 忽略几层文件夹 |
-E | 如果发现了空文件,那么就删除它 |
-R | 取消打过的补丁 |
df命令
linux 中 df命令的功能是用来检查 linux 服务器的文件系统的磁盘空间占用情况。可以利用该命令来获取硬盘被占用了多少空间,目前还剩下多少空间等信息。
df 命令是 disk free的缩写。
命令格式:
df [选项]文件
常用参数:
参数 | 描述 |
-a | 全部文件系统列表 |
-h | 方便阅读方式显示 |
-i | 显示 inode 信息 |
-T | 文件系统类型 |
-t<文件系统类型> | 只显示选定文件系统的磁盘信息 |
-x<文件系统类型> | 不显示选定文件系统的磁盘信息 |
du命令
linux 中 du命令也是查看使用空间的,但是与 df 命令不同的是 Linux du命令是对文件和目录磁盘使用的空间的查看。
du 命令是 disk usage的缩写。
命令格式:
du [选项]文件
常用参数:
参数 | 描述 |
-a | 显示目录中个别文件的大小。 |
-b | 显示目录或文件大小时,以 byte为单位。 |
-c | 除了显示个别目录或文件的大小外,同时也显示所有目录或文件的总和。 |
-k | 以 KB(1024bytes)为单位输出。 |
-m | 以 MB 为单位输出。 |
-s | 仅显示总计,只列出最后加总的值。 |
-h | 以 K,M,G为单位,提高信息的可读性 |
time命令
time 命令常用于测量一个命令的运行时间,包括实际使用时间(real time)、用户态使用时间(the process spent in user mode)、内核态使用时间(the process spent in kernel mode)。
实际时间:从 command 命令行开始执行到运行终止的时间。
用户态使用时间:命令执行完成花费的用户 CPU时间,即命令在用户态中执行时间总和。
内核态使用时间:命令执行完成花费的系统 CPU时间,即命令在核心态中执行时间总和。
命令格式:
time 命令
常用范例:
time date运行的时间
{time date; } 2>1.txt将 time命令的执行结果保存到文件中
(timedate) 2>2.txt将 time命令的执行结果保存到文件中