2020-06-19 云运维linux文件管理基础知识总结
linux=Linux: 命令(基础使用)+文件系统(目录)+服务(配置)
1.路径的分类
绝对路径:由根目录(/)开始写起的文件名或目录名名称;
相对路径:相对于目前路径的文件名写法。
2.常见的目录名称以及相应内容
/bin:bin是Binary的缩写,该目录下存放的是最常用的命令。
/boot:该目录下存放的是启动Linux时使用的一些核心文件,包括一些连接文件以及镜像文件。
/dev:dev是Device(设备)的缩写。该目录下存放的是Linux的外部设备。在Linux中,访问设备的方式和访问文件的方式是相同的。
/etc:该目录下存放的是所有系统管理所需要的配置文件和子目录。
/home:这是用户的主目录。在Linux中,每个用户都有一个自己的目录,一般该目录名是以用户的账号命名的。
/lib和/lib64:这两个目录下存放的是系统最基本的动态连接共享库,其作用类似于Windows里的DLL文件,几乎所有的应用程序都需要用到这些共享库。其中/lib64为64位的软件包的库文件所在目录。
/media:系统会自动识别一些设备(如U盘、光驱等),当识别后,Linux会把识别的设备挂载到该目录下。
/mnt:系统提供该目录是为了让用户临时挂载别的文件系统。我们可以将光驱挂载到/mnt/上,然后进入该目录查看光驱里的内容。
/opt:这是给主机额外安装软件所设置的目录,该目录默认为空。比如你要安装一个ORACLE数据库,可以放到该目录下。
/proc:该目录是一个虚拟的目录,是系统内存的映射,我们可以通过直接访问来获取系统信息。该目录的内容在内存里,我们可以直接修改里面的某些文件。比如可以通过下面的命令来屏蔽主机的ping命令,使其他人无法ping你的机器。后续,在日常工作中,你会经常用到类似的用法。 # echo 1 > /proc/sys/net/ipv4/icmp_echo_ignore_all
/root:该目录是系统管理员的用户主目录。
/run:这个目录其实和/var/run是同一个目录,这里面存放的是一些服务的pid,一个服务启动完后,是有一个pid文件的。至于为什么说是同一个目录,Linux是如何做到的,后续我们再介绍。
/sbin:s就是Super User的意思,该目录存放的是系统管理员使用的系统管理程序。
/srv:该目录存放的是一些服务启动之后需要提取的数据。
/sys:该目录存放的是与硬件驱动程序相关的信息。
/tmp:该目录是用来存放一些临时文件的。
/usr:这是一个非常重要的目录,类似于Windows下的ProgramFiles目录,用户的很多应用程序和文件都存放在该目录下。后面的章节中,我们会多次用到这个目录。
/usr/bin:该目录存放的是系统用户使用的应用程序。
/usr/sbin: 该目录存放的是超级用户使用的比较高级的管理程序和系统守护程序。 /usr/src :该目录是内核源代码默认的放置目录。
/var:该目录存放的是在不断扩充且经常被修改的目录,包括各种日志文件或者pid文件,刚刚提到的/var/run就是在/var目录下面
/etc目录下是系统的配置文件,如果更改了该目录下的某个文件可能会导致系统无法正常启动。
/bin、/sbin、/usr/bin和/usr/sbin目录是系统预设的执行文件的放置目录,其中/bin和/usr/bin目录下是供系统用户使用的指令(除root外的通用账户),而/sbin和/usr/sbin目录下则是供root使用的指令。比如ls指令就存放在/bin/目录下。
/var也是一个非常重要的目录,系统上运行各个程序时所产生的日志都被记录在该目录下(即/var/log目录中),另外mail指令的预设也放置在这里。
3.环境PATH
- PATH = $PATH:目录路径
- echo $PATH 更改环境(临时)
- vim /etc/profile 更改配置文件
4.文件属性及显示信息
第一列:文件类型及权限
d:该文件为目录
-:普通文件
l:链接文件
b:块设备
c:串行端口设备s:套接字文件socket
第二列:表示该文件所占节点
第三列:该文件所有者
第四列:该文件所属组
第五列:表示该文件的大小
第六、七、八列:表示文件修改时间
第九列:表明文件名
5.文件权限
1.更改文件权限:**chmod(选项)(参数)**:用来变更文件或目录的权限。
c或——changes:效果类似“-v”参数,但仅回报更改的部分;
-f或--quiet或——silent:不显示错误信息;
-R或——recursive:递归处理,将指令目录下的所有文件及子目录一并处理;
-v或——verbose:显示指令执行过程;
--reference=<参考文件或目录>:把指定文件或目录的所属群组全部设成和参考文件或目录的所属群组相同;
<权限范围>+<权限设置>:开启权限范围的文件或目录的该选项权限设置;
<权限范围>-<权限设置>:关闭权限范围的文件或目录的该选项权限设置;
<权限范围>=<权限设置>:指定权限范围的文件或目录的该选项权限设置;
权限表示有九位(数字为0时,无此权限):
u User,(前三位)即文件或目录的拥有者;
g Group(中间三位),即文件或目录的所属群组;
o Other(后三位),除了文件或目录拥有者或所属群组之外,其他用户皆属于这个范围;
a All,即全部的用户,包含拥有者,所属群组以及其他用户;
r 读取权限,数字代号为“4”;
w 写入权限,数字代号为“2”;
x 执行或切换权限,数字代号为“1”;
- 不具任何权限,数字代号为“0”;
s 特殊功能说明:变更文件或目录的权限。
2.更改所有者和所属组
**chown(选项)(参数):**改变某个文件或目录的所有者和所属的组,该命令可以向某个用户授权,使该用户变成指定文件的所有者或者改变文件所属的组。
-c或——changes:效果类似“-v”参数,但仅回报更改的部分;
-f或--quite或——silent:不显示错误信息;
-h或--no-dereference:只对符号连接的文件作修改,而不更改其他任何相关文件;
**-R或——recursive**:递归处理,将指定目录下的所有文件及子目录一并处理;
-v或——version:显示指令执行过程;
--dereference:效果和“-h”参数相同;
--help:在线帮助;
--reference=<参考文件或目录>:把指定文件或目录的拥有者与所属群组全部设成和参考文件或目录的拥有者与所属群组相同;
--version:显示版本信息。
## 3.默认权限
**umask(选项)(参数):**用来设置限制新建文件权限的掩码
-p:输出的权限掩码可直接作为指令来执行;
-S:以符号方式输出权限掩码。
默认值022。027.077
目录默认权限:755(777-022)777(421/421/421)
文件默认权限:644(666-022)666(420/420/420)
4.隐藏权限
**chattr(选项):**用来改变文件属性
-R:递归处理,将指令目录下的所有文件及子目录一并处理;
-v<版本编号>:设置文件或目录版本;
-V:显示指令执行过程;
+<属性>:开启文件或目录的该项属性;
-<属性>:关闭文件或目录的该项属性;
=<属性>:指定文件或目录的该项属性。
a:让文件或目录仅供附加用途;
b:不更新文件或目录的最后存取时间;
c:将文件或目录压缩后存放;
d:将文件或目录排除在倾倒操作之外;
i:不得任意更动文件或目录;
s:保密性删除文件或目录;
S:即时更新文件或目录;
u:预防意外删除。
**lsattr(选项)(参数):**用于查看文件的第二扩展文件系统属性。
-E:可显示设备属性的当前值,但这个当前值是从用户设备数据库中获得的,而不是从设备直接获得的。
-D:显示属性的名称,属性的默认值,描述和用户是否可以修改属性值的标志。
-R:递归的操作方式;
-V:显示指令的版本信息;
-a:列出目录中的所有文件,包括隐藏文件。
7.特殊权限
set uid 保证普通用户临时获得所有者的身份
set gid 组
strick bit 对目录有读写权限,但不能删除
6.软链接与硬链接
软链接又叫符号链接,这个文件包含了另一个文件的路径名。可以是任意文件或目录,可以链接不同文件系统的文件。
硬链接(hard link,也称链接)就是一个文件的一个或多个文件名。再说白点,所谓链接无非是把文件名和计算机文件系统使用的节点号链接起来。因此我们可以用多个文件名与同一个文件进行链接,这些文件名可以在同一目录或不同目录。
7.文件操作的基础命令:
**alias(选项)(参数)**:用来设置指令的别名
-p:打印已经设置的命令别名。
**ldd(选项)(参数):**用于打印程序或者库文件所依赖的共享库列表
--version:打印指令版本号;
-v:详细信息模式,打印所有相关信息;
-u:打印未使用的直接依赖;
-d:执行重定位和报告任何丢失的对象;
-r:执行数据对象和函数的重定位,并且报告任何丢失的对象和函数;
--help:显示帮助信息。
**pwd(选项)**:显示用户所处的目录;
--help:显示帮助信息;
--version:显示版本信息。
**cd (选项) (参数)**:用来在不同目录间切换;
-p 如果要切换到的目标目录是一个符号连接,直接切换到符号连接指向的目标目录
-L 如果要切换的目标目录是一个符号的连接,直接切换到字符连接名代表的目录,而非符号连接所指向的目标目录。
- 当仅实用"-"一个选项时,当前工作目录将被切换到环境变量"OLDPWD"所表示的目录。
**ls(选项)(参数)**:显示目标列表 -a:显示所有档案及目录(ls内定将档案名或目录名称为“.”的视为影藏,不会列出);
-A:显示除影藏文件“.”和“..”以外的所有文件列表;
-C:多列显示输出结果。这是默认选项;
-l:与“-C”选项功能相反,所有输出信息用单列格式输出,不输出为多列;
-F:在每个输出项后追加文件的类型标识符,具体含义:“*”表示具有可执行权限的普通文件,“/”表示目录,“@”表示符号链接,“|”表示命令管道FIFO,“=”表示sockets套接字。当文件为普通文件时,不输出任何标识符;
-b:将文件中的不可输出的字符以反斜线“”加字符编码的方式输出;
-c:与“-lt”选项连用时,按照文件状态时间排序输出目录内容,排序的依据是文件的索引节点中的ctime字段。与“-l”选项连用时,则排序的一句是文件的状态改变时间;
-d:仅显示目录名,而不显示目录下的内容列表。显示符号链接文件本身,而不显示其所指向的目录列表;
-f:此参数的效果和同时指定“aU”参数相同,并关闭“lst”参数的效果;
-i:显示文件索引节点号(inode)。一个索引节点代表一个文件;
--file-type:与“-F”选项的功能相同,但是不显示“*”;
-k:以KB(千字节)为单位显示文件大小;
-l:以长格式显示目录下的内容列表。输出的信息从左到右依次包括文件名,文件类型、权限模式、硬连接数、所有者、组、文件大小和文件的最后修改时间等;
-m:用“,”号区隔每个文件和目录的名称;
-n:以用户识别码和群组识别码替代其名称;
-r:以文件名反序排列并输出目录内容列表;
-s:显示文件和目录的大小,以区块为单位;
-t:用文件和目录的更改时间排序;
-L:如果遇到性质为符号链接的文件或目录,直接列出该链接所指向的原始文件或目录;
-R:递归处理,将指定目录下的所有文件及子目录一并处理;
**cat(选项)(参数)**:显示文件的内容
-n或-number:有1开始对所有输出的行数编号;
-b或--number-nonblank:和-n相似,只不过对于空白行不编号;
-s或--squeeze-blank:当遇到有连续两行以上的空白行,就代换为一行的空白行;
-A:显示不可打印字符,行尾显示“$”;
-e:等价于"-vE"选项;
-t:等价于"-vT"选项;
**tree(选项)(参数)**:以树状图列出目录的内容。
-a:显示所有文件和目录;
-A:使用ASNI绘图字符显示树状图而非以ASCII字符组合;
-C:在文件和目录清单加上色彩,便于区分各种类型;
-d:先是目录名称而非内容;
-D:列出文件或目录的更改时间;
-f:在每个文件或目录之前,显示完整的相对路径名称;
-F:在执行文件,目录,Socket,符号连接,管道名称名称,各自 加上"*","/","@","|"号;
-g:列出文件或目录的所属群组名称,没有对应的名称时,则显示群组识别码;
-i:不以阶梯状列出文件和目录名称;
-l:<范本样式> 不显示符号范本样式的文件或目录名称;
-l:如遇到性质为符号连接的目录,直接列出该连接所指向的原始目录;
-n:不在文件和目录清单加上色彩;
-N:直接列出文件和目录名称,包括控制字符;
-p:列出权限标示;
-P:<范本样式> 只显示符合范本样式的文件和目录名称;
-q:用“?”号取代控制字符,列出文件和目录名称;
-s:列出文件和目录大小;
-t:用文件和目录的更改时间排序;
-u:列出文件或目录的拥有者名称,没有对应的名称时,则显示用户识别码;
-x:将范围局限在现行的文件系统中,若指定目录下的某些子目
录,其存放于另一个文件系统上,则将该目录予以排除在寻找范围外。
*mkdir (选项)(参数)**:用来创建目录
-Z:设置安全上下文,当使用SELinux时有效;
-m<目标属性>或--mode<目标属性>建立目录的同时设置目录的权限;
-p或--parents 若所要建立目录的上层目录目前尚未建立,则会一并建立上层目录;
--version 显示版本信息。 eg: rmdir(选项)(参数):用来删除空目录
-p或--parents:删除指定目录后,若该目录的上层目录已变成空目录,则将其一并删除;
--ignore-fail-on-non-empty:此选项使rmdir命令忽略由于删除非空目录时导致的错误信息; powershell
-v或-verboes:显示命令的详细执行过程;
--help:显示命令的帮助信息;
--version:显示命令的版本信息。
**cp(选项)(参数)**:用来将一个或多个源文件或者目录复制到指定的目的文件或目录
-a:此参数的效果和同时指定"-dpR"参数相同;
-d:当复制符号连接时,把目标文件或目录也建立为符号连接,并指向与源文件或目录连接的原始文件或目录;
-f:强行复制文件或目录,不论目标文件或目录是否已存在;
-i:覆盖既有文件之前先询问用户;
-l:对源文件建立硬连接,而非复制文件;
-p:保留源文件或目录的属性;
-R/r:递归处理,将指定目录下的所有文件与子目录一并处理;
-s:对源文件建立符号连接,而非复制文件;
-u:使用这项参数后只会在源文件的更改时间较目标文件更新时或是名称相互对应的目标文件并不存在时,才复制文件;
-S:在备份文件时,用指定的后缀“SUFFIX”代替文件的默认后缀;
-b:覆盖已存在的文件目标前将目标文件备份;
-v:详细显示命令执行的操作。
**mv(选项)(参数)**:用来对文件或目录重新命名,或者将文件从一个目录移到另一个目录中。
-backup=<备份模式>:若需覆盖文件,则覆盖前先行备份;
-b:当文件存在时,覆盖前,为其创建一个备份;
-f:若目标文件或目录与现有的文件或目录重复,则直接覆盖现有的文件或目录;
-i:交互式操作,覆盖前先行询问用户,如果源文件与目标文件或目标目录中的文件同名,则询问用户是否覆盖目标文件。用户输入”y”,表示将覆盖目标文件;输入”n”,表示取消对源文件的移动。这样可以避免误将文件覆盖。
--strip-trailing-slashes:删除源文件中的斜杠“/”;
-S<后缀>:为备份文件指定后缀,而不使用默认的后缀;
--target-directory=<目录>:指定源文件要移动到目标目录;
-u:当源文件比目标文件新或者目标文件不存在时,才执行移动操作。
**rm (选项)(参数)**:可以删除一个目录中的一个或多个文件或目录,也可以将某个目录及其下属的所有文件及其子目录均删除掉。对于链接文件,只是删除整个链接文件,而原有文件保持不变。
-d:直接把欲删除的目录的硬连接数据删除成0,删除该目录;
-f:强制删除文件或目录;
-i:删除已有文件或目录之前先询问用户;
-r或-R:递归处理,将指定目录下的所有文件与子目录一并处理; --preserve-root:不对根目录进行递归操作;
-v:显示指令的详细执行过程。
**which(选项)(参数)**:用于查找并显示给定命令的绝对路径,环境变量PATH中保存了查找命令时需要遍历的目录。
- -n<文件名长度>:制定文件名长度,指定的长度必须大于或等于所有文件中最长的文件名;
- -p<文件名长度>:与-n参数相同,但此处的<文件名长度>包含了文件的路径;
- -w:指定输出时栏位的宽度;
- -V:显示版本信息。
- **man(选项)(参数**):Linux下的帮助指令,通过man指令可以查看Linux中的指令帮助、配置文件帮助和编程帮助等信息。
- -a:在所有的man帮助手册中搜索;
- -f:等价于whatis指令,显示给定关键字的简短描述信息;
- -P:指定内容时使用分页程序;
- -M:指定man手册搜索的路径。
**more(语法)(参数)**:基于vi编辑器文本过滤器,它以全屏幕的方式按页显示文本文件的内容,支持vi中的关键字定位操作
-<数字>:指定每屏显示的行数;
-d:显示“[press space to continue,'q' to quit.]”和“[Press 'h' for instructions]”;
-c:不进行滚屏操作。每次刷新这个屏幕;
-s:将多个空行压缩成一行显示;
-u:禁止下划线;
+<数字>:从指定数字的行开始显示。 快捷键:按Space键:显示文本的下一屏内容。 按Enier键:只显示文本的下一行内容。 按斜线符|:接着输入一个模式,可以在文本中寻找下一个相匹配的模式。
按H键:显示帮助屏,该屏上有相关的帮助信息。
按B键:显示上一屏内容。
按Q键:退出rnore命令
**less(选项)(参数):**与more十分相似,都可以用来浏览文字档案的内容,不同的是less命令允许用户向前或向后浏览文件,而more命令只能向前浏览。
-e:文件内容显示完毕后,自动退出;
-f:强制显示文件;
-g:不加亮显示搜索到的所有关键词,仅显示当前显示的关键字,以提高显示速度;
-l:搜索时忽略大小写的差异;
-N:每一行行首显示行号;
-s:将连续多个空行压缩成一行显示;
-S:在单行显示较长的内容,而不换行显示;
-x<数字>:将TAB字符显示为指定个数的空格字符。
**tail(选项)(参数)**:用于输入文件中的尾部内容。
--retry:即是在tail命令启动时,文件不可访问或者文件稍后变得不可访问,都始终尝试打开文件。使用此选项时需要与选项“——follow=name”连用;
-c<N>或——bytes=<N>:输出文件尾部的N(N为整数)个字节内容;
-f<name/descriptor>或;--follow<nameldescript>:显示文件最新追加的内容。“name”表示以文件名的方式监视文件的变化。“-f”与“-fdescriptor”等效;
-F:与选项“-follow=name”和“--retry"连用时功能相同;
-n<N>或——line=<N>:输出文件的尾部N(N位数字)行内容。
--pid=<进程号>:与“-f”选项连用,当指定的进程号的进程终止后,自动退出tail命令;
-q或——quiet或——silent:当有多个文件参数时,不输出各个文件名;
-s<秒数>或——sleep-interal=<秒数>:与“-f”选项连用,指定监视文件变化时间隔的秒数;
-v或——verbose:当有多个文件参数时,总是输出各个文件名;
--help:显示指令的帮助信息;
--version:显示指令的版本信息。
**cat(选项)(参数)**:连接文件并打印到标准输出设备上,cat经常用来显示文件的内容
-n或-number:有1开始对所有输出的行数编号;
-b或--number-nonblank:和-n相似,只不过对于空白行不编号;
-s或--squeeze-blank:当遇到有连续两行以上的空白行,就代换为一行的空白行;
-A:显示不可打印字符,行尾显示“$”;
-e:等价于"-vE"选项;
-t:等价于"-vT"选项;
**tac(选项)(参数):**用于将文件已行为单位的反序输出,即第一行最后显示,最后一行先显示。
-a或——append:将内容追加到文件的末尾;
-i或——ignore-interrupts:忽略中断信号。
**head(选项)(参数)**:用于显示文件的开头的内容。在默认情况下,head命令显示文件的头10行内容。
-n<数字>:指定显示头部内容的行数;
-c<字符数>:指定显示头部内容的字符数;
-v:总是显示文件名的头信息;
-q:不显示文件名的头信息。
文件查找
**which(选项)(参数):**用于查找并显示给定命令的绝对路径,环境变量PATH中保存了查找命令时需要遍历的目录。
-n<文件名长度>:制定文件名长度,指定的长度必须大于或等于所有文件中最长的文件名;
-p<文件名长度>:与-n参数相同,但此处的<文件名长度>包含了文件的路径;
-w:指定输出时栏位的宽度;
-V:显示版本信息。
**whereis(选项)(参数)**:用来定位指令的二进制程序、源代码文件和man手册页等相关文件的路径。
-b:只查找二进制文件;
-B<目录>:只在设置的目录下查找二进制文件;
-f:不显示文件名前的路径名称;
-m:只查找说明文件;
-M<目录>:只在设置的目录下查找说明文件;
-s:只查找原始代码文件;
-S<目录>只在设置的目录下查找原始代码文件;
-u:查找不包含指定类型的文件。
** whatis +加命令名**:用于查询一个命令执行什么功能,并将查询结果打印到终端上。
**find(选项)(参数):**用来在指定目录下查找文件
-amin<分钟>:查找在指定时间曾被存取过的文件或目录,单位以分钟计算;
-anewer<参考文件或目录>:查找其存取时间较指定文件或目录的存取时间更接近现在的文件或目录;
-atime<24小时数>:查找在指定时间曾被存取过的文件或目录,单位以24小时计算;
-cmin<分钟>:查找在指定时间之时被更改过的文件或目录;
-cnewer<参考文件或目录>查找其更改时间较指定文件或目录的更改时间更接近现在的文件或目录;
-ctime<24小时数>:查找在指定时间之时被更改的文件或目录,单位以24小时计算;
-daystart:从本日开始计算时间;
-depth:从指定目录下最深层的子目录开始查找;
-empty:寻找文件大小为0 Byte的文件,或目录下没有任何子目录或文件的空目录;
-exec<执行指令>:假设find指令的回传值为True,就执行该指令;
-false:将find指令的回传值皆设为False;
-fls<列表文件>:此参数的效果和指定“-ls”参数类似,但会把结果保存为指定的列表文件;
-follow:排除符号连接;
-fprint<列表文件>:此参数的效果和指定“-print”参数类似,但会把结果保存成指定的列表文件;
-fprint0<列表文件>:此参数的效果和指定“-print0”参数类似,但会把结果保存成指定的列表文件;
-fprintf<列表文件><输出格式>:此参数的效果和指定“-printf”参数类似,但会把结果保存成指定的列表文件;
-fstype<文件系统类型>:只寻找该文件系统类型下的文件或目录;
-gid<群组识别码>:查找符合指定之群组识别码的文件或目录;
-group<群组名称>:查找符合指定之群组名称的文件或目录;
-help或——help:在线帮助;
-ilname<范本样式>:此参数的效果和指定“-lname”参数类似,但忽略字符大小写的差别;
-iname<范本样式>:此参数的效果和指定“-name”参数类似,但忽略字符大小写的差别;
-inum<inode编号>:查找符合指定的inode编号的文件或目录;
-ipath<范本样式>:此参数的效果和指定“-path”参数类似,但忽略字符大小写的差别;
-iregex<范本样式>:此参数的效果和指定“-regexe”参数类似,但忽略字符大小写的差别;
-links<连接数目>:查找符合指定的硬连接数目的文件或目录;
-iname<范本样式>:指定字符串作为寻找符号连接的范本样式;
-ls:假设find指令的回传值为Ture,就将文件或目录名称列出到标准输出;
-maxdepth<目录层级>:设置最大目录层级;
-mindepth<目录层级>:设置最小目录层级;
-mmin<分钟>:查找在指定时间曾被更改过的文件或目录,单位以分钟计算;
-mount:此参数的效果和指定“-xdev”相同;
-mtime<24小时数>:查找在指定时间曾被更改过的文件或目录,单位以24小时计算;
-name<范本样式>:指定字符串作为寻找文件或目录的范本样式;
-newer<参考文件或目录>:查找其更改时间较指定文件或目录的更改时间更接近现在的文件或目录;
-nogroup:找出不属于本地主机群组识别码的文件或目录;
-noleaf:不去考虑目录至少需拥有两个硬连接存在;
-nouser:找出不属于本地主机用户识别码的文件或目录;
-ok<执行指令>:此参数的效果和指定“-exec”类似,但在执行指令之前会先询问用户,若回答“y”或“Y”,则放弃执行命令;
-path<范本样式>:指定字符串作为寻找目录的范本样式;
-perm<权限数值>:查找符合指定的权限数值的文件或目录;
-print:假设find指令的回传值为Ture,就将文件或目录名称列出到标准输出。格式为每列一个名称,每个名称前皆有“./”字符串;
-print0:假设find指令的回传值为Ture,就将文件或目录名称列出到标准输出。格式为全部的名称皆在同一行;
-printf<输出格式>:假设find指令的回传值为Ture,就将文件或目录名称列出到标准输出。格式可以自行指定;
-prune:不寻找字符串作为寻找文件或目录的范本样式;
-regex<范本样式>:指定字符串作为寻找文件或目录的范本样式;
-size<文件大小>:查找符合指定的文件大小的文件;
-true:将find指令的回传值皆设为True;
-type<文件类型>:只寻找符合指定的文件类型的文件;
-uid<用户识别码>:查找符合指定的用户识别码的文件或目录;
-used<日数>:查找文件或目录被更改之后在指定时间曾被存取过的文件或目录,单位以日计算;
-user<拥有者名称>:查找符和指定的拥有者名称的文件或目录;
-version或——version:显示版本信息;
-xdev:将范围局限在先行的文件系统中;
-xtype<文件类型>:此参数的效果和指定“-type”参数类似,差别在于它针对符号连接检查。
**chgrp(选项)(参数)**:用来改变文件或目录所属的用户组。
-c或——changes:效果类似“-v”参数,但仅回报更改的部分;
-f或--quiet或——silent:不显示错误信息;
-h或--no-dereference:只对符号连接的文件作修改,而不是该其他任何相关文件;
-R或——recursive:递归处理,将指令目录下的所有文件及子目录一并处理;
-v或——verbose:显示指令执行过程;
--reference=<参考文件或目录>:把指定文件或目录的所属群组全部设成和参考文件或目录的所属群组相同;
8.部分练习代码
1 .[root@coco ~]# cd /tmp/
[root@coco tmp]# pwd
/tmp
[root@coco tmp]# cd
[root@coco ~]# pwd
/root
2. [root@coco ~]# cd /usr/local/lib/
[root@coco lib]# pwd
/usr/local/lib
[root@coco lib]# cd
[root@coco ~]# pwd
/root
3. [root@coco ~]# mkdir -p /tmp/test/123
[root@coco ~]# ls /tmp/tes
123
4. [root@coco ~]# mkdir -p /tmp/test/123
[root@coco ~]# ls -ld /tmp/test/123
drwxr-xr-x. 2 root root 6 Jun 17 12:31 /tmp/test/123
5. [root@coco ~]# rmdir /tmp/test/123
[root@coco ~]# ls /tmp/test
[root@coco ~]#
6 [root@coco ~]# which rm
/usr/bin/rm
[root@coco ~]# which ls
alias ls='ls --color=auto'
/usr/bin/ls
7. [root@coco ~]# echo $PATH
/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/root/.local/bin:/root/bin
[root@coco ~]# PATH = $PATH:/root
-bash: PATH: command not found
[root@coco ~]#
[root@coco ~]# PATH=$PATH:/root
[root@coco ~]# echo $PATH
/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/root/.local/b in:/root/bin:/root
[root@coco ~]# cd /usr/bin
[root@coco bin]# ls
8. [root@coco bin]# cd
[root@coco ~]# mkdir 123
[root@coco ~]# cp 123 456
cp: omitting directory ‘123’
[root@coco ~]# cp -r 123 456
[root@coco ~]# ls -ld 123 456
drwxr-xr-x. 2 root root 6 Jun 17 12:50 123
drwxr-xr-x. 2 root root 6 Jun 17 12:50 456
[root@coco ~]# cd 123
[root@coco 123]# ls
[root@coco 123]# which cp
/usr/bin/cp
9. [root@coco 123]# mkdir /tmp/test_mv
[root@coco 123]# cd
[root@coco ~]# cd /tmp/test_mv
[root@coco test_mv]# mkdir dira dirb
[root@coco test_mv]# ls
dira dirb
[root@coco test_mv]# mv dira dirc
[root@coco test_mv]# ls
dirb dirc
[root@coco test_mv]#
10. [root@coco test_mv]# mv dirc dirb
[root@coco test_mv]# ls
dirb
[root@coco test_mv]# ls dirb
dirc
[root@coco test_mv]#
11.[root@coco test_mv]# touch filed
[root@coco test_mv]# ls
dirb filed
[root@coco test_mv]# mv filed filee
[root@coco test_mv]# ls
dirb filee
[root@coco test_mv]# mv filee dirb
[root@coco test_mv]# ls
dirb
[root@coco test_mv]# ls dirb
dirc filee
[root@coco ~]# ls -l /tmp/test_mv/dirb/
total 0
drwxr-xr-x. 2 root root 6 Jun 17 13:03 dirc
-rw-r--r--. 1 root root 0 Jun 17 13:06 filee
[root@coco ~]# ls -l /etc/rc.local
lrwxrwxrwx. 1 root root 13 Apr 25 13:56 /etc/rc.local -> rc.d/rc.local
[root@coco ~]# groupadd testgroup
[root@coco ~]# mkdir /tmp/4_6
[root@coco ~]# cd /tmp/4_6
[root@coco 4_6]# touch test1
[root@coco 4_6]# ls -l test1
-rw-r--r--. 1 root root 0 Jun 18 17:52 test1
[root@coco 4_6]# ls -l test1
-rw-r--r--. 1 root root 0 Jun 18 17:52 test1
[root@coco 4_6]# mkdir dir2
[root@coco 4_6]# touch dir2/test2
[root@coco 4_6]# ls -ld dir2
drwxr-xr-x. 2 root root 18 Jun 18 17:58 dir2
[root@coco 4_6]# chgrp testgroup dir2
[root@coco 4_6]# ls -ld dir2
drwxr-xr-x. 2 root testgroup 18 Jun 18 17:58 dir2
[root@coco 4_6]# ls -l dir2
total 0
-rw-r--r--. 1 root root 0 Jun 18 17:58 test2
[root@coco 4_6]#
[root@coco 4_6]# chgrp -R testgroup dir2
[root@coco 4_6]# ls -l dir2
total 0
-rw-r--r--. 1 root testgroup 0 Jun 18 17:58 test2
[root@coco 4_6]# ll dir2
total 0
-rw-r--r--. 1 root testgroup 0 Jun 18 17:58 test2
[root@coco 4_6]# mkdir dir3
[root@coco 4_6]# useradd user1
[root@coco 4_6]# touch dir3/test3
[root@coco 4_6]# chown user1 dir3
[root@coco 4_6]# ls -ld dir3
drwxr-xr-x. 2 user1 root 18 Jun 18 18:02 dir3
[root@coco 4_6]# ls -l dir3
total 0
-rw-r--r--. 1 root root 0 Jun 18 18:02 test3
[root@coco 4_6]# chown -R use1:testgroup dir3
chown: invalid user: ‘use1:testgroup’
[root@coco 4_6]# chown -R user1:testgroup dir3
drwxr-xr-x. 2 user1 testgroup 18 Jun 18 18:02 dir3
[root@coco 4_6]# ls -l dir3
total 0
-rw-r--r--. 1 user1 testgroup 0 Jun 18 18:02 test3
[root@coco 4_6]# chmod 750 dir3
[root@coco 4_6]# ls -ld dir3
drwxr-x---. 2 user1 testgroup 18 Jun 18 18:02 dir3
[root@coco 4_6]# ls -l dir3/test3
-rw-r--r--. 1 user1 testgroup 0 Jun 18 18:02 dir3/test3
[root@coco 4_6]# chmod 700 dir3/test3
[root@coco 4_6]# ll dir3/test
ls: cannot access dir3/test: No such file or directory
[root@coco 4_6]# ll dir3/test3
-rwx------. 1 user1 testgroup 0 Jun 18 18:02 dir3/test3
[root@coco 4_6]# ls -ld dir3
drwxr-x---. 2 user1 testgroup 18 Jun 18 18:02 dir3
[root@coco 4_6]# ls -l dir3
total 0
-rwx------. 1 user1 testgroup 0 Jun 18 18:02 test3
[root@coco 4_6]# clear
[root@coco 4_6]# chmod u=rwx,og=rx dir3/test3
[root@coco 4_6]# ls -l dir3/test3
-rwxr-xr-x. 1 user1 testgroup 0 Jun 18 18:02 dir3/test3
[root@coco 4_6]# chmod u-x dir3/test3
[root@coco 4_6]# ls -l dir3
total 0
-rw-r-xr-x. 1 user1 testgroup 0 Jun 18 18:02 test3
[root@coco 4_6]# chmod a-x dir3/test3
[root@coco 4_6]# ll dir3/test3
-rw-r--r--. 1 user1 testgroup 0 Jun 18 18:02 dir3/test3
[root@coco 4_6]# chmod u+x dir3/test3
[root@coco 4_6]# ll dir3/test3
-rwxr--r--. 1 user1 testgroup 0 Jun 18 18:02 dir3/test3
[root@coco 4_6]#
[root@coco 4_6]# umask 002
[root@coco 4_6]# mkdir dir4
[root@coco 4_6]# ls -ld dir4
drwxrwxr-x. 2 root root 6 Jun 18 18:15 dir4
[root@coco 4_6]# touch test4
[root@coco 4_6]# ls -l test44
ls: cannot access test44: No such file or directory
[root@coco 4_6]# ls -l test4
-rw-rw-r--. 1 root root 0 Jun 18 18:16 test4
[root@coco 4_6]# umask 002
[root@coco 4_6]# umask 022
[root@coco 4_6]# touch test5
[root@coco 4_6]# ls -l test5
-rw-r--r--. 1 root root 0 Jun 18 18:17 test5
[root@coco 4_6]#
[root@coco 4_6]# umask 002
[root@coco 4_6]# mkdir dir4
[root@coco 4_6]# ls -ld dir4
drwxrwxr-x. 2 root root 6 Jun 18 18:15 dir4
[root@coco 4_6]# touch test4
[root@coco 4_6]# ls -l test44
ls: cannot access test44: No such file or directory
[root@coco 4_6]# ls -l test4
-rw-rw-r--. 1 root root 0 Jun 18 18:16 test4
[root@coco 4_6]# umask 002
[root@coco 4_6]# umask 022
[root@coco 4_6]# touch test5
[root@coco 4_6]# ls -l test5
-rw-r--r--. 1 root root 0 Jun 18 18:17 test5
[root@coco 4_6]#
[root@coco 4_6]# ls dir2
test2 test5
[root@coco 4_6]# touch test6
[root@coco 4_6]# chattr +a dir2
[root@coco 4_6]# rm -f dir2/test6
[root@coco 4_6]# touch dir2/test7
touch: cannot touch ‘dir2/test7’: Permission denied
[root@coco 4_6]# charttr -a dir2/test7
-bash: charttr: command not found
[root@coco 4_6]# touch dir2/test7
touch: cannot touch ‘dir2/test7’: Permission denied
[root@coco 4_6]# ll dir2
total 0
-rw-r--r--. 1 root testgroup 0 Jun 18 17:58 test2
-rw-r--r--. 1 root root 0 Jun 18 18:19 test5
[root@coco 4_6]# cd ..
[root@coco tmp]# ll tmp
ls: cannot access tmp: No such file or directory
[root@coco tmp]# ll /tmp
total 0
drwxr-xr-x. 5 root root 87 Jun 18 18:22 4_6
drwxr-xr-x. 2 root root 6 Jun 17 12:41 test
drwxr-xr-x. 3 root root 17 Jun 17 13:07 test_mv
[root@coco tmp]# su root
[root@coco tmp]# cd /4_6
bash: cd: /4_6: No such file or directory
[root@coco tmp]# cd 4_6
[root@coco 4_6]# cd dir2
[root@coco dir2]# touch test7
touch: cannot touch ‘test7’: Permission denied
[root@coco dir2]# chattr -i dir2
chattr: No such file or directory while trying to stat dir2
[root@coco dir2]# cd ..
[root@coco 4_6]# chattr -i dir2
[root@coco 4_6]# chattr +a dir2
[root@coco 4_6]# touch dir2/test7
[root@coco 4_6]# chattr +a dir2/test7
[root@coco 4_6]# echo '11111' > dir2/test7
bash: dir2/test7: Operation not permitted
[root@coco 4_6]# echo '11111' >> dir2/test7
[root@coco 4_6]# cat dir2/test7
11111
[root@coco 4_6]# chattr +i dir2/test6
chattr: No such file or directory while trying to stat dir2/test6
[root@coco 4_6]# ls
dir2 dir3 dir4 test1 test4 test5 test6
[root@coco 4_6]# touch dir2/test6
[root@coco 4_6]# chattr +i dir2/test6
[root@coco 4_6]# each '11111' > dir2/test6
bash: dir2/test6: Permission denied
[root@coco 4_6]#
[root@coco 4_6]# each '11111' >> dir2/test6
bash: dir2/test6: Permission denied
[root@coco 4_6]# rm -f dir2/test6
rm: cannot remove ‘d