鸟哥的linux私房菜——第7章 Linux的文件与目录管理
一、目录
1. 特殊目录
- . :当前目录
- .. :上一层目录
- - :前一个工作目录
- ~ :“当前用户”的主文件夹
- ~account:账号名称为account的用户的主文件夹
2. 常用命令
(1)cd:切换目录 //change directory
用法:cd [相对路径或绝对路径] // 如cd ..
(2)pwd:显示目前所在的目录 //print working directory
用法:pwd [-P] //参数-P表示显示当前的路径,而非使用连接路径(link),即显示被连接指向的目录的完整路径
(3)mkdir:新建目录 //make directory
用法:mkdir [-mp] 目录名称
-m:强制配置目录的权限(不考虑默认权限umask)
-p:递归地创建目标目录(当不存在上层目录时自动创建)
(4)rmdir:删除“空”目录 //被删除的目录中不能存在其他的目录或文件
用法:rmdir [-p] 目录名称 //参数-p连同上层的“空”目录一起删除
3. 环境变量$PATH //echo $PATH
在执行命令时,系统会依照PATH的设置去每个PATH定义的目录下查询相应的可执行文件名,先查到的命令先被执行
- 不同用户的默认PATH不同
- PATH可以被修改:PATH="$PATH":新添加搜索路径
二、文件与目录管理
1. 查看文件与目录:ls // -a, -d, -l
2. 复制、删除与移动:cp, rm, mv
(1)cp:复制文件或目录
- 默认情况下,cp的源文件和目的文件的权限有所变化,目的文件的所有者一般为命令操作用户,可以利用-a实现完整的数据特性复制(用于备份情况)
- -l为硬连接(hard link);-s为软连接(symbolic link)
- -i:需确认是否覆盖;-r:递归复制目录
(2)rm:删除文件或目录 //可以删除非空目录
(3)mv:移动文件或目录;或重命名
重命名:直接将文件以新的名称mv到当前文件下,mv myfile myfilename_new //针对多个文件同时重命名:man rename
(4)取得文件名和目录名
- basename:取得文件名 basename /etc/sysconfig/network 输出“network”
- dirname:取得目录名 dirname /etc/sysconfig/network 输出“/etc/sysconfig”
三、文件内容查阅
- cat 由第一行开始显示文件内容
- tac 从最后一行开始显示,可以看出 tac 是 cat 的倒写形式!
- nl 显示的时候,顺道输出行号!
- more 一页一页的显示文件内容
- less 与 more 类似,但是比 more 更好的是,他可以往前翻页!
- head 只看头几行
- tail 只看尾巴几行
- od 以二进制的方式读取文件内容!
1. 直接查看文件内容:cat, tac, nl
2. 翻页查看:more, less
3. 数据选取:head, tail
tail -f 文件名:文件有数据写入时就立刻显示到屏幕上 //持续检测文件的数据内容,直至按下“Ctrl + c”
4. 非纯文本文件:od
5. 修改文件时间或创建新文件:touch
- 内容修改时间:modification time, mtime //默认显示
- 状态变更时间:status time, ctime //如修改权限后
- 文件读取时间:access time, atime //如cat文件后
- ls -l --time=ctime/atime .... //默认显示mtime
四、文件与目录的默认权限和隐藏权限
1. 文件默认权限:umask [-S] //目前用户新建文件或目录时的权限默认值,umask在/etc/bashrc中设置
umask的分数指的是:默认值需要减掉的权限,其中文件默认值为666(rw),目录默认值为777(rwx)
2. 文件隐藏属性chattr, lsattr //与系统安全相关 +a、+i
3. 文件特殊权限:SUID、SGID、SBIT
(1)文件具有SUID的特殊权限时,代表当用户执行此二进制程序时,在执行过程中用户会暂时具有程序所有者的权限
(2)目录具有SGID的特殊权限时,代表用户在这个目录下面新建的文件用户组都会与该目录的用户组名相同
(3)目录具有SBIT的特殊权限时,代表在该目录下用户创建的文件只有自己与root能够删除
4. 查看文件类型:file 文件名
五、命令与文件的查询
1. 脚本文件名的查询 //查找命令的完整文件名,which或type
用法:which [-a] 命令 //如which ifconfig
其中,-a 参数列出PATH路径中所有相应命令,而不是第一个
2. 文件名的查找 //查找文件的完整文件名
whereis和locate是利用数据库查找数据(快速),find直接查找硬盘(较慢)
(1)whereis [-bmsu] 文件或目录名
(2)locate [-ir] keyword(关键词) //-i:忽略大小写;-r:可接正则表达式
- 从/var/lib/mlocate/中已创建的数据库查找,速度较快
- updatedb命令:根据/etc/updatedb.conf的设置去查找系统硬盘内的文件名,并更新/var/lib/mlocate内的数据库文件
(3)find命令 //直接在硬盘文件系统中查询
六、权限与命令之间的关系
1. 用户能够进入某目录的基本权限要求
- 可以使用 cd 等切换工作目录的命令
- 对目标目录具有 x 权限
- 如果想要利用 ls 查看目录,需要对目录有 r 权限
2. 用户读取某目录内文件的基本权限要求
- 可以使用cat, more, less等命令
- 对目标目录有 x 权限
- 对文件有 r 权限
3. 修改目录内文件的基本权限要求
- 可以使用nano或者vi等
- 对目标目录具有 x 权限
- 对文件有 r 和 w 权限
4. 创建文件的基本权限要求
- 对目标目录具有 w 和 x 权限
5. 进入某个目录并执行该目录下的某个命令的基本权限要求
- 对目录具有 x 权限
- 对文件有 x 权限