Linux之文件与目录管理
1. 文件权限
1. 查看文件权限
ls -al
总用量 116356 dr-xr-x---. 8 root root 4096 9月 3 18:20 . dr-xr-xr-x. 19 root root 1212416 9月 1 21:43 .. -rw-------. 1 root root 1447 5月 15 01:44 anaconda-ks.cfg -rw-------. 1 root root 16208 10月 9 10:02 .bash_history -rw-r--r--. 1 root root 18 12月 29 2013 .bash_logout -rw-r--r--. 1 root root 176 12月 29 2013 .bash_profile -rw-r--r--. 1 root root 254 7月 7 16:06 .bashrc drwxr-xr-x 3 root root 21 9月 1 21:40 bin -rw-r--r--. 1 root root 100 12月 29 2013 .cshrc -r--------. 1 root root 20 7月 8 00:00 .erlang.cookie -rw-r--r--. 1 root root 50 7月 7 09:30 .gitconfig
共七个字段。
1. 第一个字段(类型与权限)
-rw-r--r-- 共有十个字符。
第一个字符代表类型。
- 文件
d 目录
l 链接文件
b 设备文件里的可供存储的接口设备
c 设备文件里的串行端口设备,如:键盘鼠标
剩下的三个为一组,分别代表属主的权限,属组的权限,其他人的权限
2. 第二个字段(多少文件名链接到此节点)
3. 第三个字段(属主)
4. 第四个字段(属组)
5. 第五个字段(文件大小)
默认单位为B
6. 第六个字段(创建文件日期或修改日期与时间)
查看完整时间ls -l --full-time
7. 第七个字段(文件目录名称)
2. 修改文件权限
1. chgrp 改变文件属组
chgrp 组名 文件名称或目录名称
-R 递归
2. chown 改变文件属主
chown 用户名:组名 文件名称或目录名称
-R 递归
3. chmod 改变文件权限
chmod 777 文件名
chmod u+x 文件名
chmod g+x 文件名
chmod o+x 文件名
chmod a+x 文件名
chmod a-x 文件名
2. 目录与文件的权限意义
| 类型 | r读 | w写 | x执行 |
| 文件 | 读取文件内容 | 编辑、修改文件内容,不能删除文件本身 | 可以执行文件 |
| 目录 | 列出该目录的所有内容 | 新建文件或目录;删除已存在的文件或目录;重命名已存在的文件或目录;移动目录下的所有文件或目录的位置 | 用户可以进入该目录 |
3. 目录与文件的管理命令
1. cd 切换目录
cd 什么参数都没有,切换到用户家目录
cd . 到当前目录
cd .. 到父目录
cd - 到上一个目录
cd ~ 到用户家目录
cd ~account 到指定用户的家目录
2. pwd 显示目前所在的目录
-P 获得真正的目录,而不是链接文件所在的目录
3. mkdir 新建目录
-p 递归创建目录
-m 为目录配置权限,而不是使用umask.
mkdir -m 711 test
4. rmdir 删除空目录(非空目录删不掉)
5. ls 查看文件与目录
-a 列出所有
-d 仅列出目录本身,而不是目录下的文件
-h 将文件容量以人类可读的方式列出
-i 列出inode号码
-l 列出长数据,包含文件的属性与权限等数据
--full-time 以完整时间列出文件与目录
-t 以修改时间倒序列出所有文件与目录
--time=atime 列出所有文件的访问时间
--time=ctime 列出所有文件状态被修改的时间
-r 将排序结果反向输出,例如:原本文件名由小到大,反向则由大到小
-S 按照文件大小排序
-F 在文件名称后面,添加提示符
对 可执行文件 添加一个 * 对 目录文件 添加一个 / 对 符号链接文件 添加一个 @
对 普通文件 什么都不添加
-p 对目录添加/
6. cp 复制文件与目录
-a 拷贝文件与目录的所有属性,相当于-p -d -r的和
-r 递归复制,用于复制目录
-p 连同文件的属性一起复制过去,而非使用默认属性,备份常用
-d 若源文件为链接文件,带这个参数表示复制链接属性,而不是复制源文件
-i 若目标文件与目录已存在,则使用这个参数有询问,默认带有-i
7. rm 删除文件与目录
-r 递归删除
-f 强制删除
-i 删除并询问
\rm 删除不询问,当有-f参数的时候,不生效
实例:
误操作删除文件,如何恢复?
恢复看是否磁盘有写入,如果没有写入恢复的几率还是很高的
yum install -y https://forensics.cert.org/centos/cert/7/x86_64/foremost-1.5.7-27.el7.x86_64.rpm
误删了jpg文件,恢复命令:
foremost -t jpg -i /dev/sda1 -o /tmp/restore
-t 文件类型
-i 指定哪个分区
-o 恢复到哪个位置
8. mv 移动文件与目录,或更名
9. basename 取路径的文件名
10. dirname 取路径的目录名
11. touch 创建文件
4. 文件内容查阅
1. cat
-A 相当于-vET的整合选项,可列出一些特殊字符而不是空白而已
linux以$作为断行字符,windows以^M$作为断行字符
[tab]以^I表示
-n 打印出行号,连同空白行也会有行号
-b 列出行号,仅针对非空白行做行号显示,空白行不标行号
2. tac
反向列出文件内容,从最后一行到第一行
3. nl
-b a 类似于cat -n,不论是否为空行,也同样列出行号
-b t 如果有空行,空的那一行不要列出行号(默认值)
4. more
空格 翻一页
回车 翻一行
/字符串 向下搜寻字符串
:f 显示文件名和当前所在行数
q 退出,不再显示该文件内容
b 往回翻页,只对文件有用,管道无效
5. less
空格 向下翻一页
pagedown 向下翻一页
pageup 向上翻一页
/ 向下搜寻字符串
? 向上搜寻字符串
n 重复搜寻前一个字符串
N 反向搜寻前一个字符串
-N 打印出行号
6. head
-n 获得前几行
-n 后面的数为负数,-n -100表示100行以后的都不要
7. tail
-n 获取后几行
-n 后面的数为正数,-n +100表示100行以后的取出
-f 实时打印出文件内容
8. od
查看执行文件,使用这个命令
5. 文件目录时间
1. atime access time访问时间
2. ctime status time 文件目录权限与属性发生改变
3. mtime modification time文件内容修改
6. 文件预设权限
1. umask
1. 查看
直接使用umask命令,显示的数字化
使用-S参数,显示的是u,g,o
2. 新建文件
如果umask是0022,那么新建文件就是666-022=644.
3. 新建目录
如果umask是0022,那么新建目录就是777-022=755
4. 设置新的预设权限
umask 0002
5. root用户与一般用户
root的umask为0022
一般用户的umask为0002
7. 文件隐藏属性
1. 设置隐藏权限
+ 增加一个隐藏参数,原有的权限不动
- 减去一个隐藏参数,原有的权限不动
= 只设定后面接的参数
a 文件只能增加数据,不能删除文件,不能修改文件内容
i 文件不能增加数据,不能删除,不能修改,不能改名
2. 查看隐藏权限
-a 列出所有的文件的隐藏权限(包括隐藏文件)
-d 如果接的是目录,列出的是目录本身的属性而不是目录下的文件名
-R 连同子目录的数据也列出来
8. 查看文件类型
1. file
file /usr/bin/passwd
可以看是数据文件,还是执行文件,还是一个目录
9. 查找命令与文件
1. which
查询环境变量PATH的路径的所有指令的完整名

2. whereis
查看特定的一些目录,查找指令文件和指令说明文档和目录等。
3. find
find [PATH] [option] [action]
1. 与时间有关的参数
例如:find /var –mtime +4

find /var –mtime +4 : 大于等于5天前的修改文件内容的所有文件
find /var –mtime 4 : 四天前那一天的修改文件内容的文件
find /var –mtime -4: 小于等于4天内的修改文件内容的文件
find /var –newer /etc/passwd: 列出比/etc/passwd新的文件
2. 与使用者或组名有关的参数
find /var –uid ID号:查找/var下uid为***的文件
find /var –gid ID:查找/var下gid为***的文件
-user name
-group name
-nouser
-nogroup
3. 与文件权限及名称有关的参数
-name 文件名: 搜寻文件名为***的文件
-size [+-]SIZE : 搜寻比SIZE大或小的文件, -size +50k
-type TYPE: 搜寻类型
4. find的特殊功能:
find /var –name yangjianbo -exec ls -l {} \;


5. find通配符的使用




6. find 也可以与xargs结合使用。
find ./ -name '*.bak' | xargs rm -rf
4. locate
1. linux系统中有个叫mlocate.db的数据库文件,这个包含系统文件的文件名及对应的路径信息。
配置文件/etc/updatedb.conf
locate命令直接找这个库,而不用遍历整个硬盘。
在使用这个命令之前,要updatedb一下,更新一下这个数据库文件。
2. 语法:
locate [option] 文件名
-c 不显示匹配的内容,只显示行数
-r 支持正则表达式匹配
-i 匹配时忽略大小写
--regex 支持扩展正则匹配
3. 例子:
locate pwd 会找出所有包含pwd字符串的文件名和路径
locate /etc/sh 包含/etc/sh的都会找出来
locate /etc/sh* 也可以使用通配符
4. 安装locate
sudo yum install mlocate
安装完以后,使用updatedb更新库

浙公网安备 33010602011771号