注释:
diff -u选项是统一格式输出.
--- before.txt 2009-06-20 05:21:49.000000000 +0800
--- before.txt是指旧文件
+++ after.txt 2009-06-20 04:03:16.000000000 +0800
+++ after.txt是指新文件.
@@ -1,3 +1,3 @@
@@ -1,3是指第1个文件一共有3行,+1,3 @@是指第2个文件一共有3行.
-This is a line to be deleted
-This is a line that will be changed
是被删除的行
+This is a line that has been changed
是增加的行
This is a line that will be unchanged
没有-号和+号是指该行不变,因为after.txt和before.txt都有这行.
+This is a line that has been added
是增加的行
diff的统一格式比较与输出是按顺序进行的.
4)
diff命令在目录中的应用.
新建old和new目录,old目录包含了初始内容,new目录包含文件的最新版本.
复制代码 代码示例:
mkdir old new
echo "This is one. It's unchanged." | tee old/one new/one
echo "This is two. It will change." > old/two
echo "This is two. It changed.">new/two
echo "This is three. It's new" > new/three
创建修补文件
复制代码 代码示例:
diff -Nur old/ new/ >mypatch.diff
注:-r选项按照文件目录递归创建修补文件.
-u还是统一模式
-N是指当diff遇到一个只存在于两个树中的一个树中的文件时,默认情况下跳过文件并且打印一个警告到stderr.
这个行为可以通过-N选项来更改,这也导致了diff认为丢失的文件实际上是存在的,但它是空的.采用这种方式,
一个修补文件可以包括已经创建的文件.然后应用修补程序创建新的文件.
复制代码 代码示例:
more mypatch.diff
输出:
复制代码 代码示例:
diff -Nur old/three new/three
--- old/three 1970-01-01 08:00:00.000000000 +0800
+++ new/three 2009-06-20 06:55:34.000000000 +0800
@@ -0,0 +1 @@
+This is three. It's new
diff -Nur old/two new/two
--- old/two 2009-06-20 06:55:08.000000000 +0800
+++ new/two 2009-06-20 06:55:21.000000000 +0800
@@ -1 +1 @@
-This is two. It will change.
+This is two. It changed.
#####
复制代码 代码示例:
[root@jbxue tmp]# diff a b > patch.diff 比较不同并产生补丁文件
打补丁:
[root@jbxue tmp]# patch a patch.diff
patching file a
[root@jbxue tmp]# cat a
haha
haha
1111
2222
查找命令:
复制代码 代码示例:
whereis which locate find
[root@jbxue tmp]# whereis ls
ls: /bin/ls /usr/share/man/man1p/ls.1p.gz /usr/share/man/man1/ls.1.gz
[root@jbxue tmp]# which passwd
/usr/bin/passwd
[root@jbxue tmp]# which ls
alias ls='ls --color=tty'
/bin/ls
[root@jbxue tmp]# whatis ls
locate:
[root@jbxue tmp]# touch abcd.txt
[root@jbxue tmp]# locate abcd.txt(关键字)
[root@jbxue tmp]# vim /etc/updatedb.conf locate
数据库配置文件
[root@jbxue tmp]#
[root@jbxue tmp]# locate abcd.txt
[root@jbxue tmp]# updatedb 手动更新数据库
find:
复制代码 代码示例:
#find 路径 条件 动作[-exec(-ok) rm....]
按名称:
[root@jbxue tmp]# find / -name passwd
[root@jbxue tmp]# find / -name *passwd*
[root@jbxue tmp]# find / -name ??passwd
按大小:
[root@jbxue tmp]# find /tmp/ -size 20M
/tmp/suibian1
[root@jbxue tmp]# find /tmp/ -size -20M
[root@jbxue tmp]# find /tmp/ -size +10M -a -size -20M
/tmp/suibian3
[root@jbxue tmp]# find /tmp/ -size +10M -a -name suibian
[root@jbxue tmp]# find /tmp/ -size +10M -a -name suibian3
/tmp/suibian3
根据类型查找:
[root@jbxue tmp]# find /dev -type d
文件类型:
f
d
c
b
s
l
p
[root@jbxue tmp]# find /tmp ! ( -type d -a -name .* )
按时间:
[root@jbxue tmp]# find /tmp -amin -3
[root@jbxue tmp]# atime
[root@jbxue tmp]# ctime
[root@jbxue tmp]# mtime
[root@jbxue tmp]# 后面跟天数
[root@jbxue tmp]# amin
[root@jbxue tmp]# cmin
[root@jbxue tmp]# mmin
[root@jbxue tmp]# 后面跟分钟
按权限:
[root@jbxue b]# find /b -perm 544
/b/a
按链接(硬链接)个数:
[root@jbxue b]# find -links 4
./e
./f
./a
./d
#ln -s a b 软链接 重新创建一个新的inod
#ln a c 硬链接 不重新创建
inod真正存储文件信息
按用户和组:
[root@jbxue b]# find -user user1
[root@jbxue b]# find -group root
查找完了之后作些其他的动作:-exec -0k(会询问)
复制代码 代码示例:
[root@jbxue b]# find -user user1 -exec file {} ;
[root@jbxue b]# find -name b -ok rm {} ;
< rm ... ./b > ?
[root@jbxue b]# find -name b
./b
[root@jbxue b]# find -name b |
xargs rm
[root@jbxue b]# ls