免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
楼主: 一生有你llx
打印 上一主题 下一主题

[系统管理] Linux基础命令 [复制链接]

论坛徽章:
1
15-16赛季CBA联赛之福建
日期:2018-12-10 14:43:45
41 [报告]
发表于 2018-11-12 17:09 |只看该作者
chmod
      改变文件或者目录的权限,可以用数字或者字母来标识权限。在数字模式下:0,代表没有权限;1,代表可执行;2,代表可读;4,代表可写;多个权限可以相加。在字符模式下:x,代表执行;r,代表读;w,代表写;g,代表组权限;o,代表组内其他用户权限;u,代表用户权限ls命令中,看到的权限分别是:用户权限、组权限、组内其他用户权限。
     此命令的适用范围:RedHat、RHEL、Ubuntu、CentOS、SUSE、openSUSE、Fedora。
1、语法
     chmod [选项]  mode  file
     chmod [选项]  八进制模式  file
     chmod [选项]  –reference=RFILE  file

2、选项列表
选项
说明
--version
显示命令版本信息
--help
显示帮助文档
-c | --changes
和verbose一样,但是只有在发生改变的时候才显示详细信息
--preserve-root
禁止对根目录递归炒作
--no-preserve-root
不特殊对待根目录,默认值
-f | --silent | --quiet
忽略部分错误信息
--reference=file
使用关联文件所属的组
-v | --verbose
显示详细信息
-R | --recursive
用递归的方式改变所有的目录和子目录

3、说明
     chmod根据模式更改每个给定文件的文件模式位,该模式可以是要进行的更改的符号表示,也可以是表示新模式位的位模式的八进制数。符号模式的格式是[ugoa...][[+-=][perms...]...],其中perms为集合rwxXst的零个或多个字母,或来自结合ugo的单个字母。可以给出多种符号模式,用逗号分隔。
     字母ugoa控制哪些用户访问文件的权限将被更改:(u)拥有该文件的用户、(g)文件组中的其他用户、(o)不属于文件组的其他用户或所有用户(A)。如果所有这些都没有给出,那么效果就好像给定了“a”,但是在umask中设置的位不受影响。
     运算符‘+’使所选的文件模式位被添加到每个文件的现有文件模式位中;‘-’使它们被删除;‘=‘使它们被添加,并使未提及的位被删除,除非目录的未提及的设置用户和组ID位不受影响。
     字母“rwxXst”为受影响的用户选择文件模式位:(r)读、(w)写、(x)执行(或搜索目录)、(X)只在文件是目录或已对某些用户具有执行权限、(s)在执行时设置用户或组ID、(t)限制删除标志或粘性位时执行/搜索。您可以指定“ugo”其中的一个或多个字母:(u)授予拥有文件的用户的权限,(g)授予属于文件组的其他用户的权限,(o)授予上述两个类别中任何一个用户的权限。
     数字模式是1到4个八进制数字(0-7),通过将值4、2和1的位相加而得。省略的数字被假定为前导零。第一个数字选择设置用户ID(4)和设置组ID(2),并限制删除或粘贴(1)属性。第二位数为拥有该文件的用户选择权限:读(4)、写(2)和执行(1);第三位数选择文件组中具有相同值的其他用户的权限;第四位数字选择对不属于文件组的其他用户具有相同值的权限。
     chmod从不更改符号链接的权限;chmod系统调用不能更改它们的权限。这不是一个问题,因为符号链接的权限从未被使用过。但是,对于命令行中列出的每个符号链接,chmod会更改指向文件的权限。相反,chmod忽略递归目录遍历过程中遇到的符号链接。

4、设置uid和gid
     如果文件的组ID与用户的有效组ID或用户的辅助组ID不匹配,则chmod将清除常规文件的“set-group-ID”位,除非用户具有适当的权限。附加限制可能导致MODE或RFILE的“set-user-ID”和“set-group-ID”位被忽略.此行为取决于底层chmod系统调用的策略和功能。当有疑问时,检查底层系统行为。
     chmod保留目录的“set-user-ID”和“set-group-ID”位,除非您显式地另外指定。您可以使用“u+s”和“g-s”这样的符号模式设置或清除位,也可以用数字模式设置(但不清楚)这些位。

5、限制删除标志或粘性位
     受限制的删除标志或粘性位是一个位,其解释取决于文件类型。对于目录,它防止非特权用户删除或重命名目录中的文件,除非他们拥有该文件或目录;这称为目录的限制删除标志,通常在/tmp之类的可写目录中找到。对于一些旧系统上的常规文件,这一位将程序的文本映像保存在交换设备上,以便在运行时更快地加载;这称为粘性位。

6、实例
1)修改文件的权限为最大值
[root@localhost weijie]# chmod 777 1.c
You have new mail in /var/spool/mail/root
[root@localhost weijie]# ls -l 1.c
-rwxrwxrwx 1 root weijie 0 9月   7 09:11 1.c
2)设置组和其他用户只读,使用字符模式设置
[root@localhost weijie]# chmod 777 1.c           //改为最大权限
[root@localhost weijie]# ls -l 1.c
-rwxrwxrwx 1 root weijie 0 9月   7 09:11 1.c
[root@localhost weijie]# chmod go+r 1.c          //修改组、其他用户权限
[root@localhost weijie]# ls -l 1.c
-rwxrwxrwx 1 root weijie 0 9月   7 09:11 1.c     //这里没有效果

[root@localhost weijie]# chmod 700 1.c          //组、其他用户权限为0
[root@localhost weijie]# chmod go+r 1.c         //组、其他用户增加读权限
[root@localhost weijie]# ls -l 1.c
-rwxr--r-- 1 root weijie 0 9月   7 09:11 1.c    //成功。可以看到使用字符模式的时候,权限是一种或的算法,而不是直接赋值






论坛徽章:
1
15-16赛季CBA联赛之福建
日期:2018-12-10 14:43:45
42 [报告]
发表于 2018-11-12 20:15 |只看该作者
chown
      改变文件或者目录的所有者,或者所属的群组。如果只给出一个所有者(用户名或数字用户ID),则该用户将成为每个给定文件的所有者,并且文件的组不会被更改。如果所有者后面跟着冒号和组名(或数字组ID),在它们之间没有空格,那么文件的组所有权也会被更改。如果用户名后面有冒号,但没有组名,则使该用户成为文件的所有者,并将文件组更改为该用户的登录组。如果给出冒号和组,但省略了所有者,则只更改文件组;在本例中,Chown执行与chgrp相同的功能。如果只给出冒号,或者整个操作数为空,则所有者和组都不会更改。
      此命令的适用范围:RedHat、RHEL、Ubuntu、CentOS、SUSE、openSUSE、Fedora。

1、语法
      chmod [选项]  [owner:group] | [owner] | [.group]  file
      chmod [选项]  –reference=RFILE  file

2、选项列表
选项
说明
--version
显示命令版本信息
--help
显示帮助文档
-c | --changes
和verbose一样,但是只有在发生改变的时候才显示详细信息
--dereference
修改符号链接所指的对象
-h | --no-dereference
修改符号链接
--from=CURRENT_OWNER:CURRENT_GROUP
仅当每个文件的当前所有者和组匹配此处指定的所有者和组时,才更改其所有者和组。可以省略这两种属性之一,在这种情况下,省略的属性不需要匹配。
--preserve-root
禁止对根目录递归炒作
--no-preserve-root
不特殊对待根目录,默认值
-f | --silent | --quiet
忽略部分错误信息
--reference=file
使用关联文件所属的组
-v | --verbose
显示详细信息
-R | --recursive
用递归的方式改变所有的目录和子目录
-H
如果命令行参数是指向目录的符号链接,请遍历它。配合“-R”使用。
-L
遍历到遇到的目录的每个符号链接,配合“-R”使用。
-P
不要遍历任何符号链接(默认),配合“-R”使用。

3、实例
1)通过名称改变组信息
[root@localhost weijie]# ls -l 1.c                 //当前的组是weijie
-rwxr--r-- 1 rootweijie 0 9月   7 09:11 1.c
[root@localhost weijie]# chown .david 1.c         //把组改为david。注意语法,前面有个点
[root@localhost weijie]# ls -l 1.c
-rwxr--r-- 1 rootdavid 0 9月   7 09:11 1.c
2)通过id修改组信息,id可以从/etc/group中找到
[root@localhost weijie]# ls -l 1.c                 //当前的组是weijie
-rwxr--r-- 1 rootweijie 0 9月   7 09:11 1.c
[root@localhost weijie]# chown .500 1.c         //把组改为500,这个id对应的名称就是david。注意语法,前面有个点
[root@localhost weijie]# ls -l 1.c
-rwxr--r-- 1 rootdavid 0 9月   7 09:11 1.c
3)通过名称改所有者
[root@localhost weijie]# ls -l 1.c                 //当前的所有者,root
-rwxr--r-- 1 rootweijie 0 9月   7 09:11 1.c
[root@localhost weijie]# chown david 1.c         //把所有者改为david
[root@localhost weijie]# ls -l 1.c
-rwxr--r-- 1 davidweijie 0 9月   7 09:11 1.c
4)同时改变所有者和组
[root@localhost weijie]# ls -l 1.c                 //当前的组是weijie
-rwxr--r-- 1 rootweijie 0 9月   7 09:11 1.c
[root@localhost weijie]# chown 500500 1.c         //把组和所有者都改为500,注意语法,中间有个冒号
[root@localhost weijie]# ls -l 1.c
-rwxr--r-- 1 david david 0 9月   7 09:11 1.c

做了一个Linux学习的平台,目前出来一个雏形,各位可以参考使用
链接:https://pan.baidu.com/s/1GOLVU2CbpBNGtunztVpaCQ  密码:n7bk




论坛徽章:
1
15-16赛季CBA联赛之福建
日期:2018-12-10 14:43:45
43 [报告]
发表于 2018-11-15 08:06 |只看该作者
rmdir
      删除一个空目录,可以同时删除途经的父目录,但是要确保父目录中没有其他内容。
      此命令的适用范围:RedHat、RHEL、Ubuntu、CentOS、SUSE、openSUSE、Fedora。

1、语法
      rmdir [选项]  dir

2、选项列表
选项
说明
--version
显示命令版本信息
--help
显示帮助文档
--ignore-fail-on-non-empty
忽略由非空目录造成的错误信息
-p | --parent
删除目录,以及途经的父目录
-v | --verbose
显示详细信息

3、实例
1)简单删除一个目录
[root@localhost weijie]# ls -l test            //查看目录的详细信息
总用量 4
drwxr-xr-x 2 root root 4096 9月  10 21:21 test
[root@localhost weijie]# rmdir testt/test/       //删除目录中的一个子目录
[root@localhost weijie]# ls -l test               //查看目录信息
总用量 0
2)使用-p选项,删除子目录以及途经的父目录,父目录只有当前的一个子目录
[root@localhost weijie]#mkdir test02/test          //test02中创建目录test
You have new mail in /var/spool/mail/root
[root@localhost weijie]# ls test02/                  //查看是否创建成功
test
[root@localhost weijie]# rmdir -p test02/test/     //使用-p选项删除目录test,这样会导致test02一起被删除
[root@localhost weijie]# ls                           //查看当前目录,test02已经不在了
1.c  link  link1  link2  my.iso  test  testt  wj234.q1C  wjtpflR
3)使用-p选项,删除子目录以及途经的父目录,父目录中还有其他内容
[root@localhost weijie]# ls testt/                   //查看目录内容
1.c  test
[root@localhost weijie]# rmdir -p testt/test/       //使用-p选项删除
rmdir: 删除目录 "testt" 失败: 目录非空                    //删除途经的父目录testt出错,因为这个目录下还有其他内容
[root@localhost weijie]# ls testt/                    //查看,子目录已经删除
1.c
4)同时改变所有者和组
[root@localhost weijie]# ls -l 1.c                 //当前的组是weijie
-rwxr--r-- 1 rootweijie 0 9月   7 09:11 1.c
[root@localhost weijie]# chown 500500 1.c         //把组和所有者都改为500,注意语法,中间有个冒号
[root@localhost weijie]# ls -l 1.c
-rwxr--r-- 1 david david 0 9月   7 09:11 1.c


论坛徽章:
1
15-16赛季CBA联赛之福建
日期:2018-12-10 14:43:45
44 [报告]
发表于 2018-11-16 09:39 |只看该作者
ls
      显示当前目录下的所有内容。
      此命令的适用范围:RedHat、RHEL、Ubuntu、CentOS、SUSE、openSUSE、Fedora。

1、语法
      ls [OPTION]... [FILE]...

2、选项列表
选项
说明
--version
显示命令版本信息
--help
显示帮助文档
-a | --all
列出所有的文件
-A | --almost-all
列出所有文件,但是不包含以 . 或者 .. 开头的文件
--author
和“-l”一起使用,打印出每个文件的作者
-b | --escape
将文件名中不可输出的字符,以“\+字符编码”的方式输出。编码为八进制
--block-size=SIZE
设置block的字节
-B | --ignore-backups
不要列出以“~”结尾的隐含条目,其实就是备份文件
-c
和“–lt”一起使用的时候,按照文件状态改变的时间排序;和“-l”一起使用的时候,通过名字排序
-C
多列显示结果,默认选项
--color[=WHEN]
以高亮颜色显示不同文件,值可以是always、never、auto
-d | --directory
只显示目录名,不显示目录下的内容。不显示符号链接指向的目录
-D | --dired
为Emacs的dired模式设计的输出
-f
不排序,使能“-aU”,关闭“-ls -color”
-F | --classify
在每个输出项的后面,追加文件类型标识符。
*,代表具有可执行权限的普通文件。
/,代表目录。
@,代表符号链接。
|,代表有名管道。
=,代表套接字。
--file-type
和“-F”一样,但是不输出*
--format=WORD
跨越-x,逗号-m,水平-x,长-l,单列-1,详细-l,垂直-c
--full-time
显示完整的时间,-l --time-style=full-iso
-g
和“-l”一样,但是不显示拥有者
--group-directories-first
将文件前的目录分组,但是“--sort”的任何使用都会禁用分组。
-G | --no-group
在长列表中,不要打印组名
-h
以更加易读的方式显示,和“-l”一起使用
-si
和“-h”一样,但是以1000位整,而不是1024
-H | --dereference-command-line
遵循命令行中列出的符号链接
--dereference-command-line-symlink-to-dir
遵循指向目录的每个命令行符号链接
--hide=PATTERN
不要列出与shell模式匹配的隐含条目(被-a或-A覆盖)
--indicator-style=WORD
将带有样式字的指示符附加到条目名称:无(默认)、斜杠(-p)、文件类型(-文件类型)、分类(-F)
-i
显示文件的索引节点
-I | --ignore=PATTERN
不要列出与shell模式匹配的隐含条目
-k
等价于“--block-size=1K”
-L | --dereference
当显示符号链接的文件信息时,请显示链接引用文件的信息,而不是链接本身的信息。
-l
以长格式显示
-m
用水平的方式显示,文件之间用“,”和一个空格隔开
-n | --numeric-uid-gid
类似-l,但是列出用户ID和组ID。
-N | --literal
打印原始条目名(不要专门处理控制字符)
-o
和选项“-l”一样,但是不显示组信息
-p | --indicator-style=slash
在目录前面加一个斜杠“/”
-q | --hide-control-chars
无法显示的字符,使用“?”代替
--show-control-chars
按原样显示非图形字符
-Q | --quote-name
用双引号括住条目名
--quoting-style=WORD
对条目名使用引用样式词:literal,locale,shell,shell-always,c,escape
-r | --reverse
排序的时候,以文件名反向排序
-R | --recursive
递归显示子目录
-s | --size
以块为单位显示文件大小。默认一块1024k
-S
以文件大小排序
-t
按文件的修改时间,降序排列
--sort=WORD
按指定要求排序,而不是按名称排序:不排序(-U),扩展名(-X),大小(-S),时间(-t),版本(-v)
--time=WORD
配合“-l”使用,将时间显示为指定的,而不是修改时间:atime(-u),access(-u),use(-u),ctime(-c),或state(-c);如果指定了“--sort=time”,则使用指定的时间作为排序键。
--time-style=STYLE
配合“-l”使用,时间用指定的风格显示:full-iso,long-iso,locale,+FORMAT。FORMAT解释为“日期”;如果格式为FORMAT1<newline>FORMAT2,FORMAT1适用于非最近文件,FORMAT2适用于最近文件;如果样式以“POSIX-”为前缀,则样式仅在POSIX区域设置之外生效。
-T | --tabsize=COLS
指定制表符的大小,默认是8
-u
配合“-lt”使用:按访问时间排序,并显示;配合“-l”使用:显示访问时间,按名称排序;其他情况:按访问时间排序
-U
不要排序;按目录顺序列出条目
-v
文本中自然排序的(版本)数字
-w | --width=COLS
设定屏幕宽度而不是当前值
-x
按行而不是按列出条目
-X
按输入扩展名按字母顺序排序
-1
每行列出一个文件
--lcontext
显示安全上下文。启用“-l”。对于大多数显示器来说,行可能太宽了。
-Z, --context
显示安全上下文,以便适合大多数显示。只显示模式、用户、组、安全上下文和文件名。。
--scontext
只显示安全上下文和文件名。

3、说明
      在默认情况下,使用颜色来区分文件类型是禁用的,并且使用“--color=never“。只有当标准输出连接到终端时,ls才会发出颜色代码。LS_CONERS环境变量可以更改设置,使用dircolors命令来设置。
      大小可以是KB,1000;K,1024,;MB,1000*1000;M,1024*1024

4、实例
1)显示所有文件,并且在后面追加文件类型
[root@localhost weijie]# ls -lF
总用量 1072
-rw-r--r-- 1 root root      0 9月   7 09:11 1.c
-rw-r--r-- 3 root root 358400 9月   7 15:46 link
-rw-r--r-- 3 root root 358400 9月   7 15:46 link1
lrwxrwxrwx 1 root root      6 9月  10 12:13 link2 -> my.iso
-rw-r--r-- 3 root root 358400 9月   7 15:46 my.iso
drwxrwxrwx 2 root root   4096 9月  10 11:33 test/
drwxr-xr-x 2 root root   4096 9月  10 16:10 test02/
drwxr-xr-x 2 root root   4096 9月  10 11:35 testt/
-rw------- 1 root root      0 9月   7 14:55 wj234.q1C
drwx------ 2 root root   4096 9月   7 14:50 wjtpflR/
2)显示目录名称,不显示目录下的内容
[root@localhost /]# ls /weijie/                //列出weijie目录下的所有文件
1.c  link  link1  link2  my.iso  test  test02  testt wj234.q1C  wjtpflR
[root@localhost /]# ls -ld /weijie/          //只显示weijie这个目录本身的信息
drwxr-xr-x 6 root root 4096 9月  10 15:28 /weijie/
[root@localhost /]#


论坛徽章:
1
15-16赛季CBA联赛之福建
日期:2018-12-10 14:43:45
45 [报告]
发表于 2018-11-17 09:36 |只看该作者
find
      在指定的目录下查找文件,并可对找到的文件执行指定的操作。Find指定会从指定的目录向下递归搜索各个子目录。GNUf ind根据优先级规则从左到右计算给定表达式,从而搜索根植于每个给定文件名的目录树,直到找到结果,此时find移到下一个文件名。如果在安全很重要的环境中使用find(例如,如果您使用它搜索其他用户可写的目录),则应阅读findutils文档中的“Security Considerations”一章。
     此命令的适用范围:RedHat、RHEL、Ubuntu、CentOS、SUSE、openSUSE、Fedora。

1、语法
     find [-H]  [-L]  [-P]  [-D debugopts]  [-Olevel]  [path...]  [expression]

2、选项列表
选项
说明
-version | --version
显示命令版本信息
-help | --help
显示帮助文档
-P
找到符号链接的时候,所有的属性都来自符号链接。这是默认选项
-L
找到符号链接的时候,所有的属性来自文件本身,而不是符号链接
-H
找到符号链接的时候,所有的属性都来自符号链接。
-Ddebugoptions
打印诊断信息;这可能有助于诊断问题,为什么查找不做您想做的事情。调试选项列表应以逗号分隔。可以有一下选项:
help,解释调试选项
tree,以其原始和优化的形式显示表达式树
stat,使用stat和lstat系统调用检查作为文件的打印消息。find程序试图将此类调用最小化。
opt,打印有关表达式树优化的诊断信息;请参见-O选项。
rates,打印一个摘要,指示每个谓词成功或失败的频率。
-Olevel
启用查询优化。Find程序重新排序测试以加快执行速度,同时保持总体效果;也就是说,具有副作用的谓词不会相对于其他谓词重新排序。在每个优化级别上执行的优化如下:
0,相当于优化级别1
1,这是默认的优化级别,与传统行为相对应。表达式被重新排序,以便首先执行仅基于文件名(例如-name和-regex)的测试。
2,任何-type或-xtype的测试都是在只基于文件名的任何测试之后,而是在需要inode提供信息的任何测试之前执行的。在许多Unix的现代版本上,readdir()返回文件类型,因此这些谓词比需要先统计文件的谓词计算速度更快
3,在此优化级别上,启用了完全基于成本的查询优化器。对测试顺序进行了修改,以便首先执行廉价(即快速)测试,并在必要时执行更昂贵的测试。在每个成本范围内,谓词将根据它们是否可能成功而更早或更晚地进行评估。对于-o,有可能成功的谓词会更早地进行评估,而对于-a,可能会失败的谓词将更早地进行评估。

3、说明
     -H,-L和-P选项控制符号链接的处,。后面的命令行参数被视为要检查的文件或目录的名称,直到以‘-’或‘(’或‘!’开头的第一个参数为止。该参数和随后的任何参数都被视为描述要搜索的内容的表达式。如果没有提供路径,则使用当前目录。如果没有给出表达式,则使用表达式“-print”。
     这些选项控制find的行为,但在上一个路径名之后立即指定。五个“实”选项-H,-L,-P,-D和-O必须出现在第一个路径名之前,如果有的话。“--”也可以用来表示任何剩余的参数都不是选项(但如果在起始点列表中使用通配符,则确保所有起始点都以“./”或“/”开头通常更安全)。
     如果指定了-H、-L和-P中的一个,最后一个出现在命令行上的操作将生效。由于-P选项是默认的,因此,除非指定了-H或-L,否则-P选项应视为有效。在命令行本身的处理过程中,在搜索开始之前,GNU经常查找stats文件。当-H或-L选项生效时,列出的任何作为-newer参数的符号链接将被取消引用,并且时间戳将从符号链接指向的文件中提取。同样的考虑也适用于-newerxy,-anewer和-cnewer。

4、表达式
     表达式由OPTION(这些选项影响整体操作而不是处理特定文件,并且始终返回true)、TEST(返回真或假值)和ACTION(有副作用并返回真或假值)组成,所有这些选项都由操作符‘-’分隔。如果表达式不包含“-prune”以外的操作,则对表达式为true的所有文件执行“-print”。
     1)OPTION
     所有选项总是返回true。除了-daystart、-follow和-regextype之外,这些选项会影响所有测试,包括在选项之前指定的测试。这是因为这些选项是在分析命令行时处理的,而测试在检查文件之前不会执行任何操作。在这方面,-daystart、-follow和-regextype选项是不同的,并且只对稍后出现在命令行中的测试有影响。因此,为了清晰起见,最好将它们放在表达式的开头。如果不这样做,就会发出警告。
选项
说明
-d
depth的同义词,与FreeBSD、NetBSD、MacOSX和OpenBSD兼容.
-daystart
测量时间(用于-amin,-atime,-cmin,-ctime,-mmin和-mtime)从今天开始,而不是从24小时前开始。此选项仅影响稍后出现在命令行中的测试。
-depth
在目录本身之前处理每个目录的内容。
-follow
使用-L选项代替。解除引用符号链接。“follow”选项只影响在命令行中出现的测试。
-help | --help
打印出帮助信息,并且退出
-ignore_readdir_race
通常情况下,Find将在无法统计文件时发出错误消息。如果您提供了此选项,并且在find从目录中读取文件的名称和它试图统计该文件的时间之间删除了一个文件,则不会发出错误消息。这也适用于命令行中给出其名称的文件或目录。此选项在读取命令行时生效,这意味着您不能在打开此选项的情况下搜索文件系统的一个部分,并在关闭该选项时搜索其中的一部分(如果需要这样做,则需要发出两个find命令,一个带有该选项,另一个没有)。
-maxdepth levels
查找的最大深度,“-maxdepth 0”只对命令行出现的TEST和ACTION有效
-mindepth levels
不要在低于levels的级别上应用任何测试或操作,“-maxdepth 1”意味着处理除命令行参数以外的所有文件。
-mount
不要将目录降到其他文件系统上。-xdev的替代名称,用于与find的其他版本兼容。
-noignore_readdir_race
关闭-ignore_readdir_race.
-noleaf
不要通过假设目录包含的子目录比硬链接数少两个来进行优化。在搜索不遵循Unix目录链接约定的文件系统(如CD-ROM或MS-DOS文件系统或AFS卷挂载点)时,需要此选项。普通Unix文件系统上的每个目录至少有两个硬链接:name和“.”。此外,它的子目录(如果有的话)都有一个“.”链接到该目录的条目。当find检查一个目录时,在它声明了比目录的链接数少两个子目录之后,它知道目录中的其余条目是非目录的(目录树中的“leaf”文件)。如果只需要检查文件的名称,就不需要对它们进行统计;这就大大提高了搜索速度。
-regextype type
更改命令行后面发生的-regex和-iregex测试所理解的正则表达式语法。
-version, --version
打印find命令的版本信息,并且退出
-warn, -nowarn
关闭或者打开警告信息
-xautofs
不要降低autofs文件系统上的目录
-xdev
不要降低其他文件系统上的目录
     2)TEST
     有些测试,例如newerXY和-samefile,允许比较当前正在检查的文件和命令行上指定的引用文件。当使用这些测试时,引用文件的解释由选项H、-L和-P以及前面的任何选项决定,但是在解析命令行时,只检查一次引用文件。如果无法检查引用文件(例如,stat(2)系统调用失败),则会发出错误消息,并查以非0状态退出。
选项
说明
+n
大于n
-n
小于n
n
n
-amin m
查找m分钟之前被访问过的文件
-anewer file
最近被访问的文件,而不是最近被修改的文件
-atime m
最近m天前被访问的文件
-cmin m
查找m分钟之前被修改过文件状态的文件
-cnewer file
最近被未改过文件状态的文件,而不是最近被修改的文件
-ctime m
最近m天前被修改文件状态的文件
-mmin m
查找最近m分钟前被修改过内容的文件
-mtime m
查找最近m天前被修改过内容的文件
-empty
查找大小为0的目录和文件
-executable
查找可以被执行的文件,或者可以被搜索的目录
-fstype type
查找在指定文件系统上的文件
-gid id
查找属于指定组id的文件
-group name
查找属于指定组的文件
-ilnamepattern
和“-lname”一样,但匹配是不区分大小写的。如果-L选项或-follow选项生效,则除非符号链接中断,否则此测试返回false。
-iname pattern
和“-name”一样,但匹配是不区分大小写的
-inum n
文件inode编号n。通常情况下,使用-samefile测试更容易。
-ipath pattern
和“-iwholename”一样,不建议使用
-iregex pattern
和“-regex”一样,但是匹配不区分大小写
-iwholenamepattern
和“-wholename”一样,但是匹配不区分大小写
-links n
有n个链接的文件
-lnamepattern
找找符合指定匹配模式的符号链接文件
-name pattern
文件名的基(删除了前导目录的路径)与shell模式匹配。元字符(“*”、“?”和“[]”)与“.”匹配。
-newer file
比file更近修改的文件
-newerXYreference
将当前文件的时间戳与引用进行比较。引用参数通常是文件的名称(其中一个时间戳用于比较),但也可能是描述绝对时间的字符串。X和Y是其他字母的占位符,这些字母选择属于如何使用引用进行比较的时间。
a,文件的访问时间。
B,文件的产生时间
c,文件inode状态改变的时间
m,文件的修改时间
t,引用被直接解释为时间。
-nogroup
没有组对应于文件的组ID
-nouser
没有用户对应于文件的用户ID。
-path pattern
文件名与shell模式匹配。元字符不处理“/”或‘.’,例如“find  .  -path  ’./sr*sc‘”为名为“./src/misc”的目录打印一个条目。若要忽略整个目录树,请使用-prune而不是检查树中的每个文件。例如,要跳过目录“src/emacs”及其下的所有文件和目录,并打印找到的其他文件的名称,请执行如下操作“find  .  -path  ./src/emacs  -prune  -o  –print
-perm –mode
为文件设置了所有权限位模式。符号模式以这种形式被接受,这通常是想要使用它们的方式。如果使用符号模式,则必须指定“u”、“g”或“o”
-perm /mode
为该文件设置任何权限位模式。符号模式以这种形式被接受。如果使用符号模式,则必须指定“u”、“g”或“o”。有关一些说明性示例,请参见示例部分。如果没有在模式中设置权限位,此测试将匹配任何文件(这里的想法是与-perm-000的行为一致)。
-perm+mode
不推荐使用这种模式集中任何权限位搜索文件的旧方法。你应该改用“-perm /mode”。例如,‘+u+x’是一个有效的符号模式(等效于+u,+x,即0111)。
-size n[cwbkMG]
查找指定大小的文件。文件单位默认是块,512字节。有以下单位:
‘b’,521字节的块,默认
‘c’,bytes
‘w’,2个字节
‘k’,1024字节
‘M’,1048576字节
‘G’,1073741824字节
-type 类型
查找指定类型的文件。c,字符设备;d,目录文件;p,有名管道;f,普通文件;l,符号链接;s,socket文件
-uid n
指定文件的uid
-used n
最后一次访问文件是在最后一次更改状态后的n天。
-user name
查找属于指定用户的文件
-wholenamepattern
等价于“-path”
-writable
匹配可写的文件。
-xtype c
和“-type”相同,除非文件是符号链接。对于符号链接,-xtype检查-type不检查的文件的类型。
-contextpattern
文件的安全上下文与GLOB模式相匹配。
     3)ACTIONS
选项
说明
-delete
删除文件;如果删除成功,则为true。如果删除失败,则发出错误消息。如果“-delete”失败,find的退出状态将为非零
-execcommand
执行命令;如果返回0状态,则为true。以下所有要查找的参数都被视为命令的参数,直到遇到由‘;’组成的参数为止。字符串“{}”被当前文件名替换,当前文件名在命令的参数中出现在任何地方,而不仅仅是在只有它的参数中,就像在find的某些版本中那样。这两个构造可能都需要转义(用‘\’)或引用,以保护它们不受外壳的扩展。有关使用-exec选项的示例,请参阅示例部分。指定的命令对每个匹配的文件运行一次。该命令在启动目录中执行。在使用-exec操作时存在不可避免的安全问题;您应该使用-execdir选项。
-execcommand{} +
-exec操作的这个变体在选定的文件上运行指定的命令,但是命令行是通过在末尾追加每个选定的文件名来构建的;命令的调用总数将比匹配的文件数少得多。命令行的构建方式与xargs构建其命令行的方式大致相同。命令中只允许“{}”的一个实例。命令在起始目录中执行。
-execdircommand;
-execdircommand{} +
类似-exec,但指定的命令是从包含匹配文件的子目录运行的,该子目录通常不是您开始查找的目录。
-fls file
真,类似“-ls”,但是写文件类似“-fprint”。输出文件总是被创建,即使谓词永远不匹配。
-fprint file
真,将完整的文件名打印到文件中。如果运行find时文件不存在,则创建文件;如果文件存在,则截断文件。文件名‘/dev/stdout’和‘/dev/stderr’是专门处理的;它们分别引用标准输出和标准错误输出。输出文件总是被创建,即使谓词永远不匹配
-fprint0 file
真,类似“-print0”,但是写文件类似“-fprint”。输出文件总是被创建,即使谓词永远不匹配。
-fprintf file format
真,类似“-printf”但是写到文件类似“-fprint”。输出文件总是被创建,即使谓词永远不匹配。
-ls
真,在标准输出上以“ls -dils”格式列出当前文件。块计数为1K块,除非设置了环境变量POSIXLY_TRIDER,在这种情况下使用了512字节块。
-ok command;
类似“-exec”,但是先问用户。如果用户同意,运行命令。否则只会返回FALSE。如果运行该命令,它的标准输入将从/dev/null重定向。
-okdircommand;
类似“-execdir”,但是和“-ok”一样先询问用户。如果用户不同意,只需返回false。如果运行该命令,它的标准输入将从/dev/null重定向。
-print
真,在标准输出上打印完整的文件名,然后是换行符。
-print0
真,在标准输出上打印完整的文件名,然后是空字符
-printf format
真,在标准输出上打印格式,解释‘\’转义和‘%’指令。字段宽度和精度可以用“printf  C“函数指定。请注意,许多字段是以%s而不是%d的形式打印的。与-print不同,-printf不会在字符串末尾添加换行符。
-prune
如果该文件是一个目录,则不要下降到它
-quit
马上退出。不会继续运行子进程,但不会处理命令行上指定的路径。
     4)操作符,按优先次序排列
选项
说明
( expr )
强制优先
! expr
取反
-not expr
取反,但不适合POSIX
expr1 expr2
隐含的“与“操作
expr1 -a expr2
和“expr1 expr2“一样
expr1 -and expr2
和“expr1 expr2“一样,但是不适合POSIX
expr1 -o expr2
“或“操作
expr1 -or expr2
“或“操作,不适合POSIX
expr1 , expr2
始终对expr1和expr2进行计算。expr1的值被丢弃;列表的值是expr2的值。逗号运算符对于搜索几种不同类型的东西很有用,但是只遍历文件系统层次结构一次

5、环境变量
     LANG,为未设置或空的全局变量提供默认值。
     LC_ALL,如果设置为非空字符串值,则重写所有其他全局变量的值。
     LC_COLLATE,POSIX标准指定此变量影响用于-name选项的模式匹配。对‘LC_COLLATE’的支持取决于系统库。这个变量还会影响对“-ok“的响应的解释;当‘LC_MESSAGES’变量选择用于将响应解释为”-ok“的实际模式时,模式中任何括号表达式的解释都会受到‘LC_COLLATE’的影响。
     LC_CTYPE,如果系统的fnmatch (3)库函数支持该变量,则此变量将影响正则表达式中使用的字符类的处理以及名称测试。此变量还会影响用于解释“-ok“发出的提示的响应的正则表达式中任何字符类的解释。当打印文件名时,‘LC_CTYPE’环境变量还将影响哪些字符被认为是不可打印的;
     LC_MESSAGES,确定要用于全局消息的区域设置。如果设置了‘POSIXLY_RETERT’环境变量,这还将确定对“-ok“操作所作提示的响应的解释
     NLSPATH,确定全局信息目录的位置。
     PATH,影响搜索以查找-exec、-execdir、-ok和-okdir调用的可执行文件的目录。
     POSIXLY_CORRECT,确定-ls和-fls使用的块大小。如果设置了POSIXLY_RIDERT,则块是512字节的单位。否则,它们是1024字节的单位。
     TZ,影响用于-printf和-fprintf的一些与时间相关的格式指令的时区。

6、返回值
     如果成功,返回0;如果失败,返回大于0的数。

7、例子程序
find  /tmp  -name  core  -type f -print | xargs  /bin/rm  -f
在/tmp目录中或下面查找名为core的文件并删除它们。请注意,如果存在包含换行符、单引号或双引号或空格的文件名,则此操作将不正确。
find  /tmp  -name  core  -type  f  -print0 | xargs  -0 /bin/rm  -f
在目录/tmp中或下面查找名为core的文件,并删除它们,处理文件名,以便正确处理包含单引号或双引号、空格或换行符的文件或目录名称。名称测试出现在-type测试之前,以避免对每个文件调用stat(2)。
find  .  –type f  -exec  file '{}'  \;
对当前目录中或当前目录下的每个文件运行“file”。注意,大括号被用单引号括起来,以保护它们不被解释为shell脚本标点符号。分号同样受到反斜杠的保护,尽管在这种情况下也可以使用单引号。
find  /  \( -perm -4000 -fprintf /root/suid.txt '%#m %u %p\n' \) ,  \( -size +100M -fprintf /root/big.txt '%-10s %p\n' \)
只遍历文件系统一次,将setuid文件和目录列出到/root/suid.txt,并将大型文件列出到/root/big.txt
find  $HOME -mtime 0
在您的主目录中搜索在过去24小时内已经修改的文件。此命令的工作方式是这样的,因为每个文件上次修改后的时间被除以24小时,其余部分被丢弃。这意味着要匹配-mtime 0,文件必须在过去进行修改,而修改时间不到24小时前。
find  /sbin /usr/sbin  -executable  \!  -readable –print
搜索可执行但不可读的文件
find  .  –perm  664
搜索所有者和组有读写权限,但其他用户可以读取但不能写入的文件。满足这些条件但设置了其他权限的文件(例如,如果有人可以执行该文件)将不匹配。
find  .  -perm  -664
搜索所有者和组有读写权限的文件,以及其他用户可以读取的文件,而不考虑是否存在任何额外的权限位(例如可执行位)。例如,这将匹配具有模式0777的文件。
find  .  –perm  /222
搜索可写的文件
find  . -perm  /220
find  . –perm  /u+w,g+w
find  . -perm  /u=w,g=w
所有这三个命令都执行相同的操作,但是第一个命令使用文件模式的八进制表示,另外两个命令使用符号形式。这些命令都搜索其所有者或组可写的文件。文件不必由所有者和组同时写入才能匹配,两者都可以。
find  .  –perm  -220
find  .  -perm  -g+w,u+w
这两个命令执行相同的操作;搜索它们的所有者和组都可以写的文件。
find  .  -perm  -444  -perm /222  !  -perm /111
find  .  –perm  -a+r  -perm /a+w  !  -perm /a+x
这两个命令都搜索每个人都可读的文件(-perm -444或-perm -a+r),至少设置了一个写入位集(-perm /222或-perm /a+w),但任何人都不能执行(!-perm /111和!-perm /a+x)。
cd  /source-dir
find  .  -name  .snapshot  -prune  -o  \( \! -name *~ -print0 \)|
cpio  -pmd0 /dest-dir
此命令将/source-dir的内容复制到/dest-dir,但省略了名为“.snapshot “的文件和目录(以及其中的任何内容)。它还省略了名称以~结尾的文件或目录,而不是其内容。
find  repo/  -exec  test  -d {}/.svn  -o  -d {}/.git  -o  -d {}/CVS  ;  -print  –prune
给定以下项目目录及其相关的SCM管理目录,高效地搜索项目的根
     repo/project1/CVS
     repo/gnu/project2/.svn
     repo/gnu/project3/.svn
     repo/gnu/project3/src/.svn
     repo/project4/.git

8、实例演示
1)在根目录下查找doc后缀的文件
[root@localhost test02]# find / -name *.doc
find: 探测到文件系统循环;“/var/named/chroot/var/named” 是与“/var/named” 相同的文件系统循环的一部分。
/usr/share/cvs/contrib/intro.doc
/usr/lib/python2.6/pdb.doc
/lib/kbd/keymaps/i386/qwerty/no-latin1.doc
2)将查找到的内容输出到res.txt
[root@localhost test02]# find / -name *.doc -fprint res.txt        //找到文件,输出到res.txt
find: 探测到文件系统循环;“/var/named/chroot/var/named” 是与“/var/named” 相同的文件系统循环的一部分。
[root@localhost test02]# cat res.txt                  //查看输出结果
/usr/share/cvs/contrib/intro.doc
/usr/lib/python2.6/pdb.doc
/lib/kbd/keymaps/i386/qwerty/no-latin1.doc
3)查找属于指定用户的文件
[root@localhost test02]# find / -user david -perm 777      //查找属于用户david,并且权利是777的文件
find: 探测到文件系统循环;“/var/named/chroot/var/named”是与 “/var/named” 相同的文件系统循环的一部分。
/wj/._主页logo魏杰it教育.jpg
find: “/proc/7990/task/7990/fd/5”: 没有那个文件或目录
find: “/proc/7990/task/7990/fdinfo/5”: 没有那个文件或目录
find: “/proc/7990/fd/5”: 没有那个文件或目录
find: “/proc/7990/fdinfo/5”: 没有那个文件或目录


论坛徽章:
1
15-16赛季CBA联赛之福建
日期:2018-12-10 14:43:45
46 [报告]
发表于 2018-11-17 09:37 |只看该作者
本帖最后由 一生有你llx 于 2018-11-17 09:39 编辑

做了一个Linux学习的平台,目前出来一个雏形,各位可以参考使用
链接:https://pan.baidu.com/s/1GOLVU2CbpBNGtunztVpaCQ  密码:n7bk






论坛徽章:
1
15-16赛季CBA联赛之福建
日期:2018-12-10 14:43:45
47 [报告]
发表于 2018-11-18 15:34 |只看该作者
mv
      将文件或者目录移动到另一个地方,或者重命名。
      此命令的适用范围:RedHat、RHEL、Ubuntu、CentOS、SUSE、openSUSE、Fedora。

1、语法
      mv [选项]  [-T]  src  dst
      mv [选项]  src  directory
      mv [选项]  -t  directory src

2、选项列表
选项
说明
--version
显示命令版本信息
--help
显示帮助文档
--backup=[control]
为每一个存在的文件创建备份
-b
和“--backup”一样,但是没有参数
-f | --force
强制移动
-i | --interactive
使用交互的方式移动
-n | --no-clobber
不覆盖已经存在的文件。如果同时制定了“-i,-n,-f”中的多个选项,那么只有最后一个选项有效。
--strip-trailing-slashes
从每个源参数中移除任何尾随斜线。
-S | --suffix=SUFFIX
重写通常的备份后缀
-t | --target-directory
将所有源文件移动到目标文件夹
-T |  --no-target-directory
将目标视为正常文件
-u | --update
当目的文件不存在,或者源文件比目的文件新的时候才移动
-v | --verbose
显示详细执行过程

3、说明
      备份后缀为‘~’,除非设置为“--”后缀或者SSIMPLE_BACKUP_SUFFIX。版本控制方法可以通过“--backup”的选项或通过VERSION_CONTROL环境变量来选择。以下是这些值:
      none,off:从不备份,即使给出了“--backup”选项。
      numbered,t:创建编号备份。
      existing,nil:如果有编号备份,则为编号,否则为简单。
      simple,over:总是创建简单备份。

4、实例
1)在同一个目录下移动,即重命名。
[root@localhost weijie]# ls
1.c  link link1  link2  my.iso  test  test01  wj234.q1C wjtpflR
[root@localhost weijie]# mv test01 test02
[root@localhost weijie]# ls
1.c  link link1  link2  my.iso  test  test02  wj234.q1C wjtpflR
2)移动到其他地方
[root@localhost test02]# ls
test
[root@localhost test02]# mv test/ /weijie/testt
[root@localhost test02]# ls
[root@localhost test02]# cd ..
[root@localhost weijie]# ls
1.c  link link1  link2  my.iso  test  test02  testt wj234.q1C  wjtpflR




论坛徽章:
1
15-16赛季CBA联赛之福建
日期:2018-12-10 14:43:45
48 [报告]
发表于 2018-11-19 07:26 |只看该作者
diff
      逐行比较两个文本文件,把文件的差异显示到标准输出。如果要指定要比较目录,那么diff命令会比较目录中相同文件名的文件,不会比较子目录。
      此命令的适用范围:RedHat、RHEL、Ubuntu、CentOS、SUSE、openSUSE、Fedora。

1、语法
      diff [选项]  files

2、选项列表
选项
说明
-v | --version
显示命令版本信息
--help
显示帮助文档
-m | --mode=MODE
设置目录的权限
-i | --ignore-case
比较的时候,忽略大小写
--ignore-file-name-case
在比较文件名的时候,忽略大小写
--no-ignore-file-name-case
比较文件名的时候,不能忽略大小写
-E | --ignore-tab-expansion
不比较tab
-b | --ingore-space-change
不比较空格数
-w | --ignore-all-space
忽略所有的空格
-B | --ignore-blank-lines
不比较空白行
-I res | --ignore-mathcing-lines=res
不比较含有指定字符串res的行
--strip-trailing-cr
出去输入行尾随的东西
-a | --text
将所有的文件都当做文本文件
-c  -C NUM  --context[=NUM]
显示不同之处的前后部分内容,默认是3行
-u  -U NUM  --unified[=NUM]
显示相同之处的前后部分内容,默认是3行
--label LABEL
使用文件的标签,而不是名字
-p | --show-c-function
比较c语言文件的时候,显示不同之处所在的函数
-F RE  |  --show-function-line=RE
显示匹配RE的最近的行
-q | --brief
只显示是否有差异,不显示详细内容
-e | --ed
输出一个ed脚本
--normal
输出一个正常的diff
-n | --rcs
结果以rcs的方式显示
-y | --side-by-side
将两个文件已并列方式显示比较结果
-W num | --width=NUM
使用“-y”选项的时候,指定列宽
--left-column
只输出公共行的左列
--suppress-common-lines
不要输出公共行
-D NAME | --ifdef=NAME
输出合并文件以显示‘#ifdef NAME’的差异
--GTYPE-group-format=GFMT
同上,但用GFMT格式化GTYPE输入组
--line-format=LFMT
同上,但用LFMT格式化GTYPE输入组
--LTYPE-line-format=LFMT
同上,但用LFMT格式化LTYPE输入行
-l | --paginate
将输出传递给pr”以分页
-t | --expand-tabs
将制表符展开为输出中的空格
-T | --initial-tab
通过预置选项卡使制表符对齐
-N | --new-file
将缺席文件视为空文件
--unidirectional-new-file
将缺席的第一批文件视为空文件
-s | --report-identical-files
当两个文件相同时报告
-X FILE | --exclude-from=FILE
排除与文件中任何模式匹配的文件
-S FILE | --starting-file=FILE
从文件开始比较目录时
-r | --recursive
用递归的方式比较子目录下的所有文件
-x path
不比较指定的文件
--from-file=FILE1
将FILE 1与所有操作数进行比较。FILE 1可以是一个目录
--to-file=FILE2
将所有操作数与文件2进行比较。文件2可以是一个目录
--horizon-lines=NUM
保持通用前缀和后缀的NUM行
-d  --minimal
努力找出一组较小的变更
--speed-large-files
假设文件很大,并且有许多零散的小更改。

3、实例
1)比较两个文件,不使用参数 (两个文件只有第一行不同)
[root@localhost test02]# diff 1.c 2.c             //直接比较,这里只输出不同之处
1c1
< 逐行比较两个文本文件,把文件的差异显示到标准输出,adAD文件。
---
> 逐行比较两个文本文件,把文件的差异显示到标准输出。
2)使用选项-y,以分列的方式输出两个文件
[root@localhost test02]# diff -y 1.c 2.c             //使用选项y,这里以列的方式,显示文件全部内容
逐行比较两个文本文件,把文件的差异显示到标准输出,adAD文件。              |    逐行比较两个文本文件,把文件的差异显示到标准输出。
如果要指定要比较目录,那么diff命令会比较目录中相同文件名的文                  如果要指定要比较目录,那么diff命令会比较目录中相同文件名的文
此命令的适用范围:RedHat、RHEL、Ubuntu、CentOS、SUSE、openSUS            此命令的适用范围:RedHat、RHEL、Ubuntu、CentOS、SUSE、openSUS
[root@localhost test02]# diff  1.c 2.c
3)使用选项-W,指定列宽
[root@localhost test02]# diff -y -W 100 1.c 2.c     //这里指定列宽100,并不能完全显示,因此看不到差异之处
逐行比较两个文本文件,把文件的差异显示到标准      |   逐行比较两个文本文件,把文件的差异显示到标准
如果要指定要比较目录,那么diff命令会比较目录         如果要指定要比较目录,那么diff命令会比较目录
此命令的适用范围:RedHat、RHEL、Ubuntu、CentO    此命令的适用范围:RedHat、RHEL、Ubuntu、CentO
4)比较目录
[root@localhost weijie]# diff test01 test02               //这里只比较目录下相同名字的文件
diff test01/1.c test02/1.c
1c1
< 逐行比较两个文本文件,把文件的差异显示到标准输出。
---
> 逐行比较两个文本文件,把文件的差异显示到标准输出,adAD文件。
5)使用选项-q,查看是否不同
[root@localhost weijie]# diff -q test01/1.c test02/1.c     //比较是否不同
Files test01/1.c and test02/1.c differ                         //只显示是否相同,不显示详细不同之处




论坛徽章:
1
15-16赛季CBA联赛之福建
日期:2018-12-10 14:43:45
49 [报告]
发表于 2018-11-20 08:18 |只看该作者
cmp
      用字节的方式,比较两个文件是否存在差异,但是不保存运算结果。Cmp指令只会根据结果设置相关的标志位,这个指令之后往往会跟着一个条件跳转指令。
      此命令的适用范围:RedHat、RHEL、Ubuntu、CentOS、SUSE、openSUSE、Fedora。

1、语法
      cmp [OPTION]... FILE1  [FILE2  [SKIP1  [SKIP2]]]

2、选项列表
选项
说明
-v | --version
显示命令版本信息
--help
显示帮助文档
-b | --print-bytes
输出不同的字节
-i num | --ignore-initial=num
跳过开始的num个字节
-i num1 num2 | --ignore-initial=num1:num2
第一个文件跳过num1个字节,第二个文件跳过num2个字节
-l | --verbose
输出不同之处的字节序号,以及这个字节的值         
-n LIMIT | --bytes=LIMIT
最多比较LIMIT字节
-s | --quiet | --silent
不输出;只输出退出状态

3、实例
1)直接比较
[root@localhost weijie]# diff -y 1.c 2.c      //首先使用diff查看不同之处
asd                            | ase
sdf                            | sdd
dfg                             dfg
[root@localhost weijie]# cmp 1.c 2.c          //开始比较
1.c 2.c differ: byte 3, line 1                 //只显示第一个不同之处,第一行,第3个字节
2)使用选项-b,显示不同之处的字节
[root@localhost weijie]# cmp -b 1.c 2.c  
1.c 2.c differ: byte 3, line 1 is 144 d 145 e        //显示不同的地方,第一个文件是d,第二个文件是e。但是这里还是只有第一个不同之处
3)使用选项-l,显示所有不同之处
[root@localhost weijie]# cmp -lb 1.c 2.c       //同时使用了l b选项
3 144 d    145 e           //第一个不同之处
7 146 f    144 d           //第二个不同之处




论坛徽章:
1
15-16赛季CBA联赛之福建
日期:2018-12-10 14:43:45
50 [报告]
发表于 2018-11-21 15:28 |只看该作者
本帖最后由 一生有你llx 于 2018-11-22 09:16 编辑

comm
      逐行比较两个已经排序过的文件。结果以3列显示:第1列显示只在file1出现的内容,第2列显示只在file2出现的内容,第3列显示同时出现的内容。
      此命令的适用范围:RedHat、RHEL、Ubuntu、CentOS、SUSE、openSUSE、Fedora。

1、语法
comm [OPTION]... FILE1 FILE2

2、选项列表
选项
说明
--version
显示命令版本信息
--help
显示帮助文档
-1
不显示第一个文件中出现的内容
-2
不显示第二个文件出现的内容
-3
不显示同时出现的内容         
--check-order
检查输入是否正确排序,即使所有输入行都已经配对
--nocheck-order
不检查输入是否正确排序
--output-delimiter=STR
使用STR将列分割

3、实例
1)直接比较
[root@localhost weijie]#diff -y 1.c 2.c        //查看两个文件
abc                            | abd
def                            | efg
ghi                            | ghi
[root@localhost weijie]# comm 1.c 2.c          //比较,这两个文件必须已经排序
abc
    abd
def
    efg
       ghi
2)只显示两个文件共同出现的内容
[root@localhost weijie]# comm -12 1.c 2.c
ghi


做了一个Linux学习的平台,目前出来一个雏形,各位可以参考使用
链接:https://pan.baidu.com/s/1GOLVU2CbpBNGtunztVpaCQ  密码:n7bk







您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP