您的位置:首页 > 运维架构 > Linux

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

2016-12-06 12:19 183 查看

文件的管理

查看文件类型

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

复制 cp

cp [-adfilprsu] source destination
cp [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 destination
mv [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权限的文件
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  Linux