关于Linux文件的那些事情之二

来源:互联网 发布:蛤蟆吃创建不了网络 编辑:程序博客网 时间:2024/05/22 06:27

文件的管理

查看文件类型

       如果想知道某个文件的基本数据,可以利用file这个命令来查看,就能简单的判断文件的格式如何了。

复制 cp

cp [-adfilprsu] source destinationcp [options] source1 source2 source3… directory参数设置:-a 相当于-pdr的意思-d 当源文件为连接文件的属性,则复制连接文件属性而非文件本身-f 若目标文件已经存在且无法开启,则删除后再尝试一次-i 若目标文件已经存在时,在覆盖前会询问操作的进行-l 进行硬连接的连接文件创建,而非复制文件本身-p 连同文件的属性一起复制过去,而非使用默认的属性-r 递归持续复制,用于目录的复制行为-s 复制成为符号连接文件-u 若destination比source旧才更新destination

       在默认的条件中,cp的源文件与目的文件中的权限是不同的,目的文件的所有者通常会是命令操作者本身

移除文件或目录 rm

rm [-fir] filename参数设置:-f 忽略不存在的文件,不会出现警告信息-i 互动模式,在删除前询问用户是否执行操作-r 递归删除子目录下的文件

移动文件与目录或者重命名 mv

mv [-fiu] source destinationmv [options] source1 source2 source3… directory参数设置:-f 如果目标文件已经存在,不会询问而直接覆盖-i 若目标文件已经存在时,就会询问是否覆盖-u 若目标文件已经存在,且source比较新才会更新

文件内容的查阅

  • cat:由第一行开始显示文件内容
  • tac:从最后一行开始显示
  • nl:显示的时候,顺便输出行号
  • more:一页一页地显示文件内容,只能向后翻页
  • less:与more相似,但可以向前翻页
  • head:只看头几行
  • tail:只看结尾几行
  • od:以二进制的方式读取文件内容
    注:以上指令笔者曾做过总结,这里不再详述

修改文件时间或创建新文件 touch

touch [-acdmt] filename参数设置:-a 仅修改访问时间-c 仅修改文件的时间,若该文件不存在则不创建新文件-d 后面可接欲修改的日期而不用目前的日期,也可以使用--date=”日期或时间”-m 仅修改mtime-t 后面可接欲修改的时间而不用当前的时间,格式为[YYMMDDhhmm]

文件的默认权限和隐藏权限

文件默认权限

       用户创建文件默认没有可执行权限,即只有r、w两个选项:-rw-rw-rw-
       umask指定“目前用户在新建文件或目录时候的权限默认值”,该数字表示的含义是指“该默认值需要减掉的权限”

文件隐藏属性

       除了9个文件属性之外,文件还具有一些隐藏属性,这对于系统安全格外重要,可以通过chattr来设置隐藏属性,lsattr来查看隐藏属性。

  • 设置文件的隐藏属性
chattr [+-=] [ASacidstu] filename参数设置:+ 增加某一个特殊参数,其他原本存在参数不动- 删除某一个特殊参数,其他原本存在参数不动= 仅有后面接的参数A 当设置了A这个属性,若你有访问此文件或目录时,它的访问时间atime将不会被修改,可避免I/O较慢的机器过渡访问磁盘,对速度较慢的计算机有帮助S 一般文件是异步写入磁盘的,如果加上S这个属性时,当你进行任何文件的修改,该改动都会同步写入磁盘中a 当设置a之后,这个文件只能增加数据,而不能删除也不能修改数据,只有root才能设置这个属性c 这个属性设置之后,将会自动将此文件压缩,在读取的时候将会自动解压缩,但是在存储的时候,将会先进性压缩后再存储d 当dump程序被执行的时候,设置d属性可将该文件或目录不被dump备份i 设置这个属性可以让一个文件不能被删除、改名,设置连接也无法写入或添加数据。对于系统安全性有相当大的帮助,只有root能设置此属性s 当文件设置了s属性时,如果这个文件被删除,它将会完全从这个硬盘空间中删除u 与s相反,当使用u来配置文件时,如果该文件被删除了,则数据内容其实还存在硬盘中,可以用来找回该文件
  • 显示文件隐藏属性
lsattr [-adR] filename参数设置:-a 将隐藏文件的属性也显示出来-d 如果filename是目录,仅列出目录本身的属性而不是目录内的文件名-R 连同子目录的数据也一并列出来

文件的特殊权限

       有时候我们查看文件权限的时候,一般都是r、w、x三个权限的组合,但是有时候会在其中出现一些别的字符,这些就代表了文件的特殊权限。

SetUID

       当s这个标志出现在文件所有者的x权限上时,称为Set UID,简称SUID的特殊权限,其限制与功能为:

  • SUID权限仅对二进制程序(binary program)有效,不能用在shell script上面;
  • 执行者对于该程序需要具有x的可执行权限;
  • 本权限仅在执行该程序的过程中有效;
  • 执行者将具有该程序所有者的权限。

Set GID

       当s标志出现在用户组x权限上时成为Set GID,简称SGID,与SUID不同,SGID可以针对文件或目录设置,现在仅对文件设置,有如下功能:

  • SGID对二进制程序有用;
  • 程序执行者对于改程序来说,需具备x的权限;
  • 执行者在执行的过程中将会获得该程序用户组的支持。

权限设置

       与r、w、x权限相同,SUID和SGID也能用数字形式来表达,SUID为4,SGID为2,使用chmod指令设置这两个权限,在原来的三个数字前再加上一个数字就能设置文件的特殊权限了。
       有时候我们会注意到设置了特殊权限之后,出现了大写的S字符,这里表示的是原来的文件不具有x的权限,所以设置了特殊权限之后,我们没有实际获得该特殊权限,大写表示为“空的”。

文件名的查找

       Linux下可以使用whereis、locate和find来进行文件的查找。

寻找特定文件whereis

whereis [-bmsu] filename参数设置:-b 只找二进制格式的文件-m 只找说明文件manual路径下的文件-s 只找source源文件-u 查找不在上述三个选项当中的其他特殊文件

locate

locate [-ir] filename参数设置:-i 忽略大小写的差异-r 后面可接正则表达式的显示方式

find

find [PATH] [option] [action]参数设置:[-atime –ctime –mtime] n n为数字,意义为在n天之前的“一天以内”被更改过的文件                    +n 列出在n天之前(不含n天本身)被更改过的文件名                    -n 列出在n天之内(含n天本身)被修改过的文件名-newer file file为一个存在的文件,列出比file还要新的文件名-uid n 列出UID为n的文件名-gid n 列出GID为n的文件名-user name 列出文件所有者为name的文件名-group name 列出用户组为name的文件名-noser 寻找文件的所有者不存在/etc/passwd中文件-nogroup 寻找文件用户组不存在/etc/group中的文件-name filename 查找文件名为filename的文件-size [+-] SIZE 查找比SIZE还要大或小的文件-type TYPE 查找文件的类型为TYPE类型的-perm mode 查找文件权限为mode的文件-perm –mode 查找文件权限包括mode的文件-perm +mode 查找文件权限包含任一mode权限的文件
0 0
原创粉丝点击