【Linux常见命令】diff命令
diff - compare files line by line
diff命令用于比较文件的差异。
diff以逐行的方式,比较文本文件的异同处。
如果指定要比较目录,则diff会比较目录中相同文件名的文件,但不会比较其中子目录。
语法:
diff [OPTION]... FILES
diff [-abBcdefHilnNpPqrstTuvwy][-<行数>][-C <行数>][-D <巨集名称>][-I <字符或字符串>][-S <文件>][-W <宽度>][-x <文件或目录>][-X <文件>][--help][--left-column][--suppress-common-line][文件或目录1][文件或目录2]
参数:
- -<行数> 指定要显示多少行的文本。此参数必须与-c或-u参数一并使用。
- -a或--text diff预设只会逐行比较文本文件。
- -b或--ignore-space-change 不检查空格字符的不同。
- -B或--ignore-blank-lines 不检查空白行。
- -c 显示全部内文,并标出不同之处。
- -C<行数>或--context<行数> 与执行"-c-<行数>"指令相同。
- -d或--minimal 使用不同的演算法,以较小的单位来做比较。
- -D<巨集名称>或ifdef<巨集名称> 此参数的输出格式可用于前置处理器巨集。
- -e或--ed 此参数的输出格式可用于ed的script文件。
- -f或-forward-ed 输出的格式类似ed的script文件,但按照原来文件的顺序来显示不同处。
- -H或--speed-large-files 比较大文件时,可加快速度。
- -l<字符或字符串>或--ignore-matching-lines<字符或字符串> 若两个文件在某几行有所不同,而这几行同时都包含了选项中指定的字符或字符串,则不显示这两个文件的差异。
- -i或--ignore-case 不检查大小写的不同。
- -l或--paginate 将结果交由pr程序来分页。
- -n或--rcs 将比较结果以RCS的格式来显示。
- -N或--new-file 在比较目录时,若文件A仅出现在某个目录中,预设会显示:
- Only in目录:文件A若使用-N参数,则diff会将文件A与一个空白的文件比较。
- -p 若比较的文件为C语言的程序码文件时,显示差异所在的函数名称。
- -P或--unidirectional-new-file 与-N类似,但只有当第二个目录包含了一个第一个目录所没有的文件时,才会将这个文件与空白的文件做比较。
- -q或--brief 仅显示有无差异,不显示详细的信息。
- -r或--recursive 比较子目录中的文件。
- -s或--report-identical-files 若没有发现任何差异,仍然显示信息。
- -S<文件>或--starting-file<文件> 在比较目录时,从指定的文件开始比较。
- -t或--expand-tabs 在输出时,将tab字符展开。
- -T或--initial-tab 在每行前面加上tab字符以便对齐。
- -u,-U<列数>或--unified=<列数> 以合并的方式来显示文件内容的不同。
- -v或--version 显示版本信息。
- -w或--ignore-all-space 忽略全部的空格字符。
- -W<宽度>或--width<宽度> 在使用-y参数时,指定栏宽。
- -x<文件名或目录>或--exclude<文件名或目录> 不比较选项中所指定的文件或目录。
- -X<文件>或--exclude-from<文件> 您可以将文件或目录类型存成文本文件,然后在=<文件>中指定此文本文件。
- -y或--side-by-side 以并列的方式显示文件的异同之处。
- --help 显示帮助。
- --left-column 在使用-y参数时,若两个文件某一行内容相同,则仅在左侧的栏位显示该行内容。
- --suppress-common-lines 在使用-y参数时,仅显示不同之处。
示例:
# 准备两个完全相同的文件
[root@oldboy new]# ls
passwd_file_1.txt passwd_file_2.txt
[root@oldboy new]# diff passwd_file_1.txt passwd_file_2.txt # 在2文件中添加一行内容,再比较
[root@oldboy new]# echo "new line">>passwd_file_2.txt
[root@oldboy new]# diff passwd_file_1.txt passwd_file_2.txt
72a73
> new line
说明:上面的“72a73”表示password_file_1.txt和password_file_2.txt文件,passwd_file_2.txt文件比第一个文件多了一行,符号>表示的是第二个文件的内容,显示的是比第一个文件多一行的行内容。
字母acd的意思:
- c就是 change改变 的意思
- a是 add添加 的意思
- d是 delete删除 的意思
符号<, >, ---的意思:
- < 开头的行,表示来自第一个文件
- > 开头的行,表示来自第二个文件
- --- 三个横杠,仅仅表示分隔开文件1和文件2的这些行。
更多的示例说明:
[root@oldboy new]# echo aaa>>passwd_file_1.txt
[root@oldboy new]# diff passwd_file_1.txt passwd_file_2.txt
73c73
< aaa
---
> new line
说明:表示第一个文件和第二个文件的第73行不同,分别为aaa和new line。
[root@oldboy new]# echo "add more lines to file1">>passwd_file_1.txt
[root@oldboy new]# diff passwd_file_1.txt passwd_file_2.txt
73,74c73
< aaa
< add more lines to file1
---
> new line
说明:表示第一个文件和第二个文件的73行都不同,且分别显示了其内容;一个文件比第二个文件多了第74行,并未用74a73的方式显示,而是用输出内容的方式显示。
# 手动删除第二个文件的第一行,再比较
[root@oldboy new]# ls
passwd_file_1.txt passwd_file_2.txt
[root@oldboy new]# diff passwd_file_1.txt passwd_file_2.txt
1d0
< root:x:0:0:root:/root:/bin/bash
73,74c72
< aaa
< add more lines to file1
---
> new line
说明:1d0,说明第一个文件的第一行和第二个文件的第0行,第0行的内容仅在第一个文件中存在。即表示第一个文件需要删除第一行,然后再和第二个文件进行比较。
比较目录内的文件:
[root@oldboy new]# diff /etc/rc3.d /etc/rc1.d
Only in /etc/rc1.d: K25sshd
Only in /etc/rc1.d: K36mysqld
Only in /etc/rc1.d: K60crond
Only in /etc/rc3.d: K75blk-availability
Only in /etc/rc3.d: K75udev-post
Only in /etc/rc1.d: K88rsyslog
Only in /etc/rc1.d: K90network
Only in /etc/rc3.d: K99cpuspeed
Only in /etc/rc3.d: K99lvm2-monitor
Only in /etc/rc1.d: S02lvm2-monitor
Only in /etc/rc3.d: S10network
Only in /etc/rc3.d: S12rsyslog
Only in /etc/rc1.d: S13cpuspeed
Only in /etc/rc1.d: S25blk-availability
Only in /etc/rc1.d: S26udev-post
Only in /etc/rc3.d: S55sshd
Only in /etc/rc3.d: S64mysqld
Only in /etc/rc3.d: S90crond
Only in /etc/rc3.d: S99local
Only in /etc/rc1.d: S99single
[root@oldboy new]# diff /etc/rc3.d /etc/rc5.d
Only in /etc/rc5.d: K36mysqld
Only in /etc/rc3.d: S64mysqld
【Linux常见命令】diff命令的更多相关文章
- Linux 文本对比 diff 命令详解(整理)
diff 命令详解 1.概述 windows系统下面就有不错的文本对比工具可以使用,例如常用的Beyond Compare,WinMerge都是图形界面的比较工具而且使用非常方便,如果你仅仅是在win ...
- Linux常见的Shell命令
1.具体的shell命令用法可以通过help或man命令进入手册来查询其具体的用法.2.终端本质上对应着linux上的/dev/tty设备,linux的多用户登录就是通过不同的/dev/tty设备完成 ...
- Linux常见目录及命令介绍
一.Linux中常用的目录介绍: / -根目录 /bin -命令保存目录(普通用户亦可读取的命令) /boot -启动目录,启动相关文件 /d ...
- linux 常见名词及命令(三)
tar 用于对文件打包压缩或解压. 示例: 打包并压缩文件:tar -czvf 压缩包名.tar.gz 文件名 解压并展开压缩包:tar -zxvf 压缩包名.tar.gz -c 创建压缩文件 -x ...
- linux中的diff命令
今天在公司的代码中看到了一个用的不是很多的命令diff,一开始以为不是,后来一查发现还真有这个命令,有关它的详细资料在这个网址中查看[http://blog.chinaunix.net/uid-253 ...
- 性能工具之linux常见日志统计分析命令
引言 我前几天写过的性能工具之linux三剑客awk.grep.sed详解,我们已经详细介绍 linux 三剑客的基本使用,接下来我们看看具体在性能测试领域的运用,本文主要介绍的是在 Tomcat 和 ...
- linux 常见名词及命令(一)
linux PK wondows 稳定且有效率.免费或少许费用.漏洞少且修补快.多任务多用户. 安全的用户及文件权限策略.适合小内核程序的嵌入系统.相对不耗资源. 热门的开源系统 红帽企业系统(R ...
- linux 常见名词及命令(五)
计划任务服务之一次性任务: at <时间> 安排一次性任务 atq 或at -l 查看任务列表 at -c 序号 预览任务与设置环境 atrm 序号 删除任务 安排任务示例: 在23:30 ...
- linux 常见名词及命令(二)
pwd 用于显示当前的工作目录. cd 用于切换工作路径 cd - 切换到上一次的目录 cd ~ 切换到家目录 cd ~username 切换到其他用户的家目录 cd .. 切换到上级目录 ls 用于 ...
- linux 常见名词及命令(六)
查看软件安装位置 : dpkg -L 软件包名字 ubuntu环境的apache相关命令: 查看是否启动:ps -aux | grep httpd 或者 netstat -an | grep :80 ...
随机推荐
- Elasticsearch 核心术语概念
Elasticsearch 相当于一个关系型数据库 索引 index 类型 type 文档 document 字段 fields 跟关系型数据库对比 Elasticsearch 相当于一个数据库 索引 ...
- MTK Android Camera新增差值
一. 计算需要的插值 如果原有的插值列表没有我们需要的插值的时候,要通过计算算出符合需求的插值,比如2700W的插值. 具体计算方法如下: 假设像素的长宽分别为X,Y,则插值为XY.由于MTK规定各参 ...
- 详解java访问修饰符
详解java访问修饰符 为了防止初学者看到因为专业的术语而感觉晦涩难懂,我接下来尽量用生动比喻的说法来解释!首先第一点,我们来讲讲什么叫修饰符!看看这个名称,想想他的意思.修饰符!修饰符!,就是用来修 ...
- postman 工具接口测试
一.get:请求多个参数时,需要用&连接 eg:http://api.***.cn/api/user/stu_info?stu_name=小黑&set=女 eg:接口请求参数放在b ...
- Array(数组)对象-->reverse() 方法
1.定义和用法 reverse() 方法用于颠倒数组中元素的顺序:倒序. 语法: array.reverse() 举例: var arr = [1,2,3,4,5]; console.log(arr. ...
- spring singleton实例中的变量怎么保证线程安全
pring中管理的bean实例默认情况下是单例的[sigleton类型],就还有prototype类型按其作用域来讲有sigleton,prototype,request,session,global ...
- 一个不错的spring 学习博客
http://www.iteye.com/blogs/subjects/spring-tittle-tattle
- 数据结构和算法(Golang实现)(8.2)基础知识-分治法和递归
分治法和递归 在计算机科学中,分治法是一种很重要的算法. 字面上的解释是分而治之,就是把一个复杂的问题分成两个或更多的相同或相似的子问题. 直到最后子问题可以简单的直接求解,原问题的解即子问题的解的合 ...
- R - Cow and Message CodeForces - 1307C
思路对了,但是不会写. 等差数列长度不是1就是2,所以不是一个字母就是俩字母,一开始写的时候直接枚举两个字母,然后让次数相乘.这样是不对的,比如abaabb,字母ab的个数应该是3+2+2,因该是每一 ...
- C - Long Beautiful Integer codeforces 1269C 构造
题解: 这里的m一定是等于n的,n为数最大为n个9,这n个9一定满足条件,根据题目意思,前k个一定是和原序列前k个相等,因此如果说我们构造出来的大于等于原序列,直接输出就可以了,否则,由于后m-k个一 ...