第七章 档案与目录管理
目录的相关操作
- . 当前目录
- .. 上一层目录
- - 上一个工作目录
- ~ 用户所在的家目录
- ~acount acount所在的家目录
-
pwd [-P]: 显示当前目录
-P:显示出确实的路径,而非链接路径
-
mkdir [-mp]: 建立新目录
-m:设置目录权限 mkdir -m 711 test2
-p:建立多层目录 mkdir -p test1/test2/test3
-
rmdir [-p]: 删除一个空目录, 目录中又其他档案时不能删除
-p:连同上层的空目录一并删除
rmdir 仅能删除空目录,要删除非空目录需使用『 rm -r 』指令;
关于执行文件路径的变量:$PATH
环境变量:PATH(原来linux下面也有这货)
用户能使用的指令是依据 PATH 变量所规定的目录去搜寻的;
echo $PATH
: 显示目前的PATH
echo有显示,打印的意思 $表示后面接的是变量
添加PATH: PATH="$PATH":/xxxx
(这个类似于字符串拼接Y^o^Y )
不同身份使用者预设的PATH不同,默认能够随意执行的指令也不同
本目录 . 最好不要放到PATH中
档案与目录管理
查看 ls
显示经过排序的档案,蓝色显示目录,白色显示文件
选项:
- a : 列出全部档案,包括隐藏档
- l : 档案的详细信息,包括属性和权限等数据,
ls -l
=ll
- t : 依时间排序,而不是ABCD
- d : 仅列出目录本身,而不列出目录内的档案数据
复制、删除与移动
复制cp
默认情况下,目的档案的拥有者为指令操作者; 对于连接档,复制他指向的原文件
选项:
- a:复制一个与源文件一模一样的东西(完全辨别不出真假,除了名字不同以外)
- i: 询问是否覆盖原文件(哎呀,一个不小心,另外一个相同文件名的东西就没有了)
- u: 备份时常用,当源文件与目标文件有差异是才执行复制操作
复制档案给其他人使用时,注意修改文件权限
可以将多个数据一次性复制到同一个目录下
由于一般用户并不能随意更改档案的拥有者与群组,即使加上-a选项,也无法达成完整复制权限
复制文件时考虑的四件事情:
- 是否需要完整的保留来源当的信息? -a
- 来源档是否为连接档? ll -d
- 来源档是否为特殊的档案?
- 来源文件是否是目录?
删除rm
rm bashrc*: 开头为bashrc的档名通通删除
*通配符
rm -r xxx
递归删除目录下地所有文件、目录
命令简单,数据无价,且行且珍惜
移动/更名 mv
查阅档案内容
直接检视档案内容 cat
- cat -A xxx: 显示制表符,换行符等特殊字符
- cat -n xxx: 显示行号(包括空白行)
- cat -b xxx: 显示行号(不包括空白行)
反向检视 tac
与cat相反的顺序,从最后一行到第一行
一页一页翻动 less
与man page类似
- 空格键&pagedown:向下翻页
- pageup: 向上翻页
- /字符串: 向下搜寻字符串
- ?字符串: 向上搜寻字符串
- n / N: 重复前一个搜寻
- q : 离开
资料截取 head/tail
以行为单位进行数据截取
默认情况下显示10行
head -n xxx
两个命令可以结合起来一起使用,如获取第11行到第20行
head -n -20 xxx | tail -n 10
以上读取命令只使用于纯文本文档
非纯文本文档
od [-t TYPE] xx
od -t c xx
:将数据内的字符以ASCII类型的字符来显示
好复杂,以后用到的时候再来看吧
修改档案时间或建立空档案:touch
查看/修改默认情况下建立的档案的权限:umask
档案隐藏属性
对于强烈地需求系统安全的人来说非常重要
档案特殊权限SUID,SGID,SBIT
(略,o(╯□╰)o,太复杂了,以后再看)
观察文件类型file
ASCII、binary或data档案,有没有使用share library
指令与档案的搜寻
指令搜寻which
which:绝对路径
which -a command
which根据用户设定的PATH变量内的目录去搜寻可执行文件,所以不同的PATH设定内容找到的指令不一样
档案搜寻whereis, locate, find
如果找不到某个指令时,可以用档案搜寻试试
whereis,locate利用数据库来搜寻数据,速度快。
find搜寻硬盘,速度慢。使用whereis,locate找不到时使用find搜索。
whereis [-bmsu] xxx
- b: 只找binary格式的文档
- m: 只找说明文件
- s: 只找source来源的档案
- u: 除以上三种以外的其他档案
locate keyword
Linux将系统内的所有档案都记录在一个数据库档案里面。当使用 whereis 或者locate 时,都会以此数据库档案的内容为准。
因此,有的时后你还会发现使用这两个执行档时,会找到已经被杀掉的档案! 而且也找不到最新的刚刚建立的档案呢!这就是数据库还没有更新!
数据库的建立默认是每天执行一次,更新locate数据库只需要输入updatedb就可以了,可能会等待数分钟的时间。
- updatedb:根据 /etc/updatedb.conf 的设定去搜寻系统硬盘内的文件名,并更新 /var/lib/mlocate 内的数据库档案;
- locate:依据 /var/lib/mlocate 内的数据库记载,找出用户输入的关键词文件名。
find [PATH] [option] [action]
选项与参数:
-
与时间有关的选项:
find / -mtime 0 : 从现在开始到24小时前,有变动过的内容
find / -mtime 3 : 三天前的24小时内,有变动过的内容
-
与使用者或组名有关的参数
-
与档案权限及名称有关的参数
-
额外可进行的操作
find可以根据属性搜寻指定的文件,可选的参数相当复杂
看到这章的结尾部分,特殊权限似乎很重要,过两天补上吧