linux高级命令篇(尚观学习笔记)

发布时间:2020-03-30编辑:脚本学堂
本文介绍下,linux中的一些高级命令,来自尚观的学习笔记,有需要的朋友参考下。
注释:
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