>

每天一个linux命令

- 编辑:澳门新葡亰平台游戏 -

每天一个linux命令

每一日贰个linux命令(36):diff命令

diff 命令是 linux上非常主要的工具,用于相比较文件的剧情,特别是相比较七个版本分裂的文本以找到改造的地点。diff在指令行中打字与印刷每多个行的改换。最新版本的diff还协助二进制文件。diff程序的出口被称呼补丁 (patch),因为Linux系统中还会有一个patch程序,能够依照diff的出口将a.c的公文内容更新为b.c。diff是svn、cvs、git等版本调控工具不可或缺的一部分。

时间:2016-11-28 17:17

 

1.命令格式:

diff命令:

diff命令在最简单易行的情状下,比较给定的七个文本的两样。diff命令是以逐行的办法,相比较文本文件的异同处。假如该命令钦赐实行目录的相比较,则将会相比该目录中负有同等文件名的公文,而不会对其子目录文件举办别的比较操作。

相关链接:

diff[参数][文件1或目录1][文件2或目录2]

语法:

diff(选项)(参数)

每天二个linux命令(1):ls命令

2.限令效能:

参数:

文本1:钦命要比较的首先个文件;

文件2:钦赐要比较的第贰个文件。

;

diff命令能比较单个文件可能目录内容。要是钦赐比较的是文件,则唯有当输入为文本文件时才有效。以逐行的措施,相比文本文件的异同处。假如钦定相比较的是目录的的时候,diff 命令会比较八个目录下名字一模一样的文本文件。列出不一致的二进制文件、公共子目录和只在贰个索引现身的文件。

选项:

雄起雌伏逐步补充,一伊始用的就是归纳的文书比较

天天三个linux命令(2):cd命令

3.发令参数:

实例:

;

-  钦命要展现多少行的文书。此参数必须与-c或-u参数一并动用。

天天三个linux命令(3):pwd命令

 -a或--text  diff预设只会逐行相比较文本文件。

-b或--ignore-space-change  不反省空格字符的分化。

每一天贰个linux命令(4):mkdir命令

-B或--ignore-blank-lines  不检查空白行。

-c  展现全数内文,并表明不一致之处。

每日三个linux命令(5):rm命令

-C或--context  与试行"-c-"指令同样。

-d或--minimal  使用分裂的演算法,以异常的小的单位来做相比较。

每日一个linux命令(6):rmdir命令

-D或ifdef  此参数的输出格式可用于放置管理器巨集。

-e或--ed  此参数的出口格式可用于ed的script文件。

每一天八个linux命令(7):mv命令

-f或-forward-ed  输出的格式类似ed的script文件,但依据原本文件的各种来显示不一致处。

-H或--speed-large-files  非常大文件时,可加急迅度。

天天多个linux命令(8):cp命令

-l或--ignore-matching-lines  若八个公文在某几行有所分裂,而这几行同临时候都带有了增选中内定的字符或字符串,则不显得那七个文本的差别。

-i或--ignore-case  不检查大小写的不等。

天天二个linux命令(9):touch命令

-l或--paginate  将结果交由pr程序来分页。

-n或--rcs  将比较结实以RCS的格式来呈现。

每一天二个linux命令(10):cat命令

-N或--new-file  在相比较目录时,若文件A仅出现在有个别目录中,预设会显得:Only in目录:文件A若使用-N参数,则diff会将文件A与三个空白的公文相比。

-p  若比较的公文为C语言的程序码文件时,显示差别所在的函数名称。

天天叁个linux命令(11):nl命令

-P或--unidirectional-new-file  与-N类似,但唯有当第叁个目录包蕴了二个先是个目录所未有的文件时,才会将以此文件与空白的文书做相比。

-q或--brief  仅展示成没有差异,不显得详细的信息。

每一天八个linux命令(12):more命令

-r或--recursive  比较子目录中的文件。

-s或--report-identical-files  若未有发觉别的差距,仍旧展现新闻。

每一天三个linux命令(13):less命令

-S或--starting-file  在相比较目录时,从钦定的公文发轫比较。

-t或--expand-tabs  在输出时,将tab字符打开。

天天贰个linux命令(14):head命令

-T或--initial-tab  在每行前边加上tab字符以便对齐。

-u,-U或--unified=  以统一的方法来呈现文件内容的例外。

每一天一个linux命令(15):tail命令

-v或--version  呈现版本音信。

-w或--ignore-all-space  忽略任何的空格字符。

天天一个linux命令(16):which命令

-W或--width  在采纳-y参数时,内定栏宽。

-x或--exclude  不及较挑选中所钦点的文本或目录。

天天二个linux命令(17):whereis命令

-X或--exclude-from  您能够将文件或目录项目存成文本文件,然后在=中钦点此文件文件。

-y或--side-by-side  以并列的点子彰显文件的争论之处。

每一日三个linux命令(18):locate命令

--help  显示扶助。

--left-column  在选择-y参数时,若多个文件某一行内容一律,则仅在左手的栏位突显该行内容。

每日二个linux命令(19):find命令概览

--suppress-common-lines  在利用-y参数时,仅显示分化之处。

4.用到实例:

天天叁个linux命令(20):find命令之exec

实例1:相比五个文本

命令:

每一日二个linux命令(21):find命令之xargs

输出:

[root@localhost test3]# diff log2014.log log2013.log 

每一天贰个linux命令(22):find命令的参数详解

3c3

< 2014-03

每天多少个linux命令(23):Linux目录结构


> 2013-03

每一天八个linux命令(24):Linux文件类型与庞大名

8c8

< 2013-07

每天三个linux命令(25):linux文件属性详解


> 2013-08

每一日三个linux命令(26):用SecureCRT来上传和下载文件

11,12d10

< 2013-11

每一天叁个linux命令(27):linux chmod命令

< 2013-12

说明:

天天一个linux命令(28):tar命令

下边包车型地铁“3c3”和“8c8”表示log二零一五.log和log二〇一四3log文件在3行和第8行内容有所不相同;"11,12d10"表示第一个公文比第一个公文多了第11和12行。

diff 的normal 彰显格式有二种提醒:

每一日一个linux命令(29):chgrp命令

a - add

c - change

天天一个linux命令(30):chown命令

d - delete 

实例2:并排格式输出

每一天二个linux命令(31):/etc/group文件详解

命令:

diff log2013.log log2014.log  -y -W 50

每天三个linux命令(32):gzip命令

输出:

[root@localhost test3]# diff log2014.log log2013.log  -y -W 50

每一天一个linux命令(33):df命令

2013-01                 2013-01

2013-02                 2013-02

天天四个linux命令(34):du命令

2014-03               | 2013-03

2013-04                 2013-04

每一日二个linux命令(35):ln命令

2013-05                 2013-05

2013-06                 2013-06

 

2013-07                 2013-07

diff 命令是 linux上特别重大的工具,用于比较文件的原委,特别是相比七个版本不一致的文件以找到退换的地方。diff在指令行中打字与印刷每二个行的转移。最新版本的diff还扶助二进制文件。diff程序的出口被称作补丁 (patch),因为Linux系统中还或者有贰个patch程序,能够依照diff的输出将a.c的文书内容更新为b.c。diff是svn、cvs、git等版本控制工具至关重大的一部分。  www.2cto.com  

2013-07               | 2013-08

1.命令格式:

2013-09                 2013-09

diff[参数][文件1或目录1][文件2或目录2]

2013-10                 2013-10

2.命令功用:

2013-11               <

diff命令能比较单个文件大概目录内容。假若钦赐相比较的是文本,则独有当输入为文本文件时才使得。以逐行的主意,比较文本文件的异同处。倘若钦点比较的是目录的的时候,diff 命令会比较五个目录下名字同样的文本文件。列出不一样的二进制文件、公共子目录和只在四个目录出现的文件。

2013-12               <

3.命令参数:

[root@localhost test3]# diff log2013.log log2014.log  -y -W 50

-  钦点要出示多少行的公文。此参数必得与-c或-u参数一并采纳。

2013-01                 2013-01

 -a或--text  diff预设只会逐行相比较文本文件。

2013-02                 2013-02

-b或--ignore-space-change  不检查空格字符的两样。

2013-03               | 2014-03

-B或--ignore-blank-lines  不检讨空白行。

2013-04                 2013-04

-c  突显任何内文,并申明差异之处。

2013-05                 2013-05

-C或--context  与施行"-c-"指令一样。

2013-06                 2013-06

-d或--minimal  使用分歧的演算法,以极小的单位来做比较。

2013-07                 2013-07

-D或ifdef  此参数的出口格式可用于放置管理器巨集。

2013-08               | 2013-07

-e或--ed  此参数的输出格式可用于ed的script文件。

2013-09                 2013-09

-f或-forward-ed  输出的格式类似ed的script文件,但依据原本文件的各种来呈现不一致处。

2013-10                 2013-10

-H或--speed-large-files  十分大文件时,可加迅速度。

                      > 2013-11

-l或--ignore-matching-lines  若多个公文在某几行有所分歧,而这几行同一时候都满含了增选中钦点的字符或字符串,则不显得那七个公文的歧异。

                      > 2013-12

-i或--ignore-case  不反省大小写的分化。  www.2cto.com  

说明:

-l或--paginate  将结果交由pr程序来分页。

“|”表示前后2个公文内容有例外

-n或--rcs  将相比较结实以RCS的格式来展现。

“<”表示后边文件比前边文件少了1行内容

-N或--new-file  在可比目录时,若文件A仅出现在有些目录中,预设会展现:Only in目录:文件A若选取-N参数,则diff会将文件A与八个空荡荡的文本相比。

“>”表示前面文件比前边文件多了1行内容

-p  若相比的文件为C语言的程序码文件时,显示差别所在的函数名称。

实例3:上下文输出格式

-P或--unidirectional-new-file  与-N类似,但独有当第1个目录包罗了三个率先个目录所未曾的文书时,才会将那几个文件与空白的文本做比较。

命令:

-q或--brief  仅体现成未有差距,不出示详细的音信。

diff log2013.log log2014.log  -c

-r或--recursive  比较子目录中的文件。

输出:

-s或--report-identical-files  若未有意识任何差距,如故呈现音讯。

[root@localhost test3]# diff log2013.log log2014.log  -c

-S或--starting-file  在比较目录时,从钦定的公文最先相比。

*** log2013.log 2012-12-07 16:36:26.000000000 +0800

-t或--expand-tabs  在输出时,将tab字符张开。

--- log2014.log 2012-12-07 18:01:54.000000000 +0800

-T或--initial-tab  在每行前面加上tab字符以便对齐。

***************

-u,-U或--unified=  以联合的办法来展现文件内容的不及。

*** 1,10 ****

-v或--version  展现版本新闻。

  2013-01

-w或--ignore-all-space  忽略任何的空格字符。

  2013-02

-W或--width  在选拔-y参数时,内定栏宽。

! 2013-03

-x或--exclude  不如较挑选中所钦命的文本或目录。

  2013-04

-X或--exclude-from  您能够将文件或目录项目存成文本文件,然后在=中钦定此文件文件。

  2013-05

-y或--side-by-side  以并列的不二法门突显文件的纠纷之处。

  2013-06

--help  显示帮忙。

  2013-07

--left-column  在选取-y参数时,若三个文本某一行内容同样,则仅在左边包车型客车栏位呈现该行内容。

! 2013-08

--suppress-common-lines  在选取-y参数时,仅彰显不一致之处。

  2013-09

4.运用实例:

  2013-10

实例1:比较三个文本

--- 1,12 ----

命令:

  2013-01

输出:

  2013-02

[[email protected] test3]# diff log2014.log log2013.log 

! 2014-03

3c3

  2013-04

< 2014-03

  2013-05


  2013-06

> 2013-03

  2013-07

8c8

! 2013-07

< 2013-07

  2013-09


  2013-10

> 2013-08

+ 2013-11

11,12d10

+ 2013-12[root@localhost test3]# diff log2014.log log2013.log  -c

< 2013-11

*** log2014.log 2012-12-07 18:01:54.000000000 +0800

< 2013-12

--- log2013.log 2012-12-07 16:36:26.000000000 +0800

说明:

***************

地点的“3c3”和“8c8”表示log2015.log和log二零一六3log文件在3行和第8行内容有所不一致;"11,12d10"表示第贰个文本比第一个文本多了第11和12行。

*** 1,12 ****

diff 的normal 呈现格式有两种提示:

  2013-01

a - add

  2013-02

c - change

! 2014-03

d - delete 

  2013-04

实例2:并排格式输出

  2013-05

命令:

  2013-06

diff log2013.log log2014.log  -y -W 50

  2013-07

输出:

! 2013-07

[[email protected] test3]# diff log2014.log log2013.log  -y -W 50

  2013-09

2013-01                 2013-01

  2013-10

2013-02                 2013-02

- 2013-11

2014-03               | 2013-03

- 2013-12

2013-04                 2013-04

--- 1,10 ----

2013-05                 2013-05

  2013-01

2013-06                 2013-06

  2013-02

2013-07                 2013-07

! 2013-03

2013-07               | 2013-08

  2013-04

2013-09                 2013-09

  2013-05

2013-10                 2013-10

  2013-06

2013-11               <

  2013-07

2013-12               <

! 2013-08

[[email protected] test3]# diff log2013.log log2014.log  -y -W 50

  2013-09

2013-01                 2013-01

  2013-10[root@localhost test3]#

2013-02                 2013-02

说明:

2013-03               | 2014-03

这种艺术在初始两行作了比较文件的印证,这里有三中特殊字符:

2013-04                 2013-04

“+” 相比的公文的继任者比前着多一行

2013-05                 2013-05

“-” 比较的文本的后代比前着少一行

2013-06                 2013-06

“!” 相比较的文书两个大有径庭的行

2013-07                 2013-07

实例4:统一格式输出

2013-08               | 2013-07

命令:

2013-09                 2013-09

diff log2014.log log2013.log  -u

2013-10                 2013-10

输出:

                      > 2013-11

[root@localhost test3]# diff log2014.log log2013.log  -u

                      > 2013-12

--- log2014.log 2012-12-07 18:01:54.000000000 +0800

说明:

+++ log2013.log 2012-12-07 16:36:26.000000000 +0800

“|”表示前后2个文本内容有两样

@@ -1,12 +1,10 @@

“<”表示前面文件比前面文件少了1行内容

 2013-01

“>”表示后边文件比前边文件多了1行内容

 2013-02

实例3:上下文输出格式

-2014-03

命令:

+2013-03

diff log2013.log log2014.log  -c

 2013-04

输出:

 2013-05

[[email protected] test3]# diff log2013.log log2014.log  -c

 2013-06

*** log2013.log 2012-12-07 16:36:26.000000000 +0800

 2013-07

--- log2014.log 2012-12-07 18:01:54.000000000 +0800

-2013-07

***************

+2013-08

*** 1,10 ****

 2013-09

  2013-01

 2013-10

  2013-02

-2013-11

! 2013-03

-2013-12

  2013-04

说明:

  2013-05

它的首先部分,也是文本的大旨音讯:

  2013-06

--- log2014.log 2012-12-07 18:01:54.000000000 +0800

  2013-07

+++ log2013.log 2012-12-07 16:36:26.000000000 +0800

! 2013-08

"---"表示变动前的文件,"+++"表示变动后的文书。

  2013-09

其次有些,变动的职位用四个@作为开场和终结。

  2013-10

   @@ -1,12 +1,10 @@

--- 1,12 ----

前方的"-1,12"分成五个部分:减号表示第三个公文(即log二〇一六.log),"1"表示第1行,"12"表示接二连三12行。合在一同,就表示上边是率先个文本从第1行开首的连年12行。同样的,"+1,10"表示变动后,成为第二个文件从第1行发轫的接连10行。

  2013-01

实例5:比较文件夹不一样

  2013-02

命令:

! 2014-03

diff  test3 test6

  2013-04

输出:

澳门新葡亰平台游戏,  2013-05

[root@localhost test]# diff test3 test6

  2013-06

Only in test6: linklog.log

  2013-07

Only in test6: log2012.log

! 2013-07

diff test3/log2013.log test6/log2013.log

  2013-09

1,10c1,3

  2013-10

< 2013-01

+ 2013-11

< 2013-02

+ 2013-12[[email protected] test3]# diff log2014.log log2013.log  -c

< 2013-03

*** log2014.log 2012-12-07 18:01:54.000000000 +0800

< 2013-04

--- log2013.log 2012-12-07 16:36:26.000000000 +0800

< 2013-05

***************

< 2013-06

*** 1,12 ****

< 2013-07

  2013-01

< 2013-08

  2013-02

< 2013-09

! 2014-03

< 2013-10

  2013-04


  2013-05

> hostnamebaidu=baidu.com

  2013-06

> hostnamesina=sina.com

  2013-07

> hostnames=true

! 2013-07

diff test3/log2014.log test6/log2014.log

  2013-09

1,12d0

  2013-10

< 2013-01

- 2013-11

< 2013-02

- 2013-12

< 2014-03

--- 1,10 ----

< 2013-04

  2013-01

< 2013-05

  2013-02

< 2013-06

! 2013-03

< 2013-07

  2013-04

< 2013-07

  2013-05

< 2013-09

  2013-06

< 2013-10

  2013-07

< 2013-11

! 2013-08

< 2013-12

  2013-09

Only in test6: log2015.log

  2013-10[[email protected] test3]#

Only in test6: log2016.log

说明:  www.2cto.com  

Only in test6: log2017.log

这种方法在开班两行作了相比文件的认证,这里有三中特殊字符:

[root@localhost test]# 

“+” 比较的文本的后任比前着多一行

说明:

“-” 比较的文书的子孙后代比前着少一行

实例6:比较七个公文分化,并生育补丁

“!” 比较的公文两者有反差的行

命令:

实例4:统一格式输出

diff -ruN log2013.log log2014.log >patch.log

命令:

输出:

diff log2014.log log2013.log  -u

[root@localhost test3]# diff -ruN log2013.log log2014.log >patch.log

输出:

[root@localhost test3]# ll

[[email protected] test3]# diff log2014.log log2013.log  -u

总计 12

--- log2014.log 2012-12-07 18:01:54.000000000 +0800

-rw-r--r-- 2 root root  80 12-07 16:36 log2013.log

+++ log2013.log 2012-12-07 16:36:26.000000000 +0800

-rw-r--r-- 1 root root  96 12-07 18:01 log2014.log

@@ -1,12 +1,10 @@

-rw-r--r-- 1 root root 248 12-07 21:33 patch.log

 2013-01

[root@localhost test3]# cat patc.log

 2013-02

cat: patc.log: 没有丰硕文件或目录

-2014-03

[root@localhost test3]# cat patch.log 

+2013-03

--- log2013.log 2012-12-07 16:36:26.000000000 +0800

 2013-04

+++ log2014.log 2012-12-07 18:01:54.000000000 +0800

 2013-05

@@ -1,10 +1,12 @@

 2013-06

 2013-01

 2013-07

 2013-02

-2013-07

-2013-03

+2013-08

+2014-03

 2013-09

 2013-04

 2013-10

 2013-05

-2013-11

 2013-06

-2013-12

 2013-07

说明:

-2013-08

它的率先有些,也是文本的中坚音信:

+2013-07

--- log2014.log 2012-12-07 18:01:54.000000000 +0800

 2013-09

+++ log2013.log 2012-12-07 16:36:26.000000000 +0800

 2013-10

"---"表示变动前的文本,"+++"表示变动后的公文。

+2013-11

其次局地,变动的岗位用四个@作为开局和告竣。

+2013-12[root@localhost test3]#

   @@ -1,12 +1,10 @@

说明:

面前的"-1,12"分成七个部分:减号表示第八个文件(即log二零一六.log),"1"表示第1行,"12"表示接二连三12行。合在一同,就意味着上边是第叁个公文从第1行开头的三回九转12行。一样的,"+1,10"表示变动后,成为第叁个文本从第1行开头的连日10行。

实例7:打补丁

实例5:相比文件夹分歧

命令:

命令:

输出:

diff  test3 test6

[root@localhost test3]# cat log2013.log

输出:

2013-01

[[email protected] test]# diff test3 test6

2013-02

Only in test6: linklog.log

2013-03

Only in test6: log2012.log

2013-04

diff test3/log2013.log test6/log2013.log

2013-05

1,10c1,3

2013-06

< 2013-01

2013-07

< 2013-02

2013-08

< 2013-03

2013-09

< 2013-04

2013-10[root@localhost test3]# patch log2013.log patch.log 

< 2013-05

patching file log2013.log

< 2013-06

[root@localhost test3]# 

< 2013-07

[root@localhost test3]# cat log2013.log 

< 2013-08

2013-01

< 2013-09

2013-02

< 2013-10

2014-03


2013-04

> hostnamebaidu=baidu.com

2013-05

> hostnamesina=sina.com

2013-06

> hostnames=true

2013-07

diff test3/log2014.log test6/log2014.log

2013-07

1,12d0

2013-09

< 2013-01

2013-10

< 2013-02

2013-11

< 2014-03

2013-12[root@localhost test3]#

< 2013-04

说明:

< 2013-05

< 2013-06

< 2013-07

< 2013-07

< 2013-09

< 2013-10

< 2013-11

< 2013-12

Only in test6: log2015.log

Only in test6: log2016.log

Only in test6: log2017.log

[[email protected] test]# 

说明:

实例6:相比四个文件分化,并生育补丁

命令:

diff -ruN log2013.log log2014.log >patch.log

输出:

[[email protected] test3]# diff -ruN log2013.log log2014.log >patch.log

[[email protected] test3]# ll

总计 12

-rw-r--r-- 2 root root  80 12-07 16:36 log2013.log

-rw-r--r-- 1 root root  96 12-07 18:01 log2014.log

-rw-r--r-- 1 root root 248 12-07 21:33 patch.log

[[email protected] test3]# cat patc.log

cat: patc.log: 未有极其文件或目录

[[email protected] test3]# cat patch.log 

--- log2013.log 2012-12-07 16:36:26.000000000 +0800

+++ log2014.log 2012-12-07 18:01:54.000000000 +0800

@@ -1,10 +1,12 @@

 2013-01

 2013-02

-2013-03

+2014-03

 2013-04

 2013-05

 2013-06

 2013-07

-2013-08

+2013-07

 2013-09

 2013-10

+2013-11

+2013-12[[email protected] test3]#

说明:

实例7:打补丁

命令:

输出:

[[email protected] test3]# cat log2013.log

2013-01

2013-02

2013-03

2013-04

2013-05

2013-06

2013-07

2013-08

2013-09

2013-10[[email protected] test3]# patch log2013.log patch.log 

patching file log2013.log

[[email protected] test3]# 

[[email protected] test3]# cat log2013.log 

2013-01

2013-02

2014-03

2013-04

2013-05

2013-06

2013-07

2013-07

2013-09

2013-10

2013-11

2013-12[[email protected] test3]#  

相关链接: 天天二个linux命令(1):ls命令 ; 天天七个linux命令(2):cd命令...

本文由操作系统发布,转载请注明来源:每天一个linux命令