目录的相关操作

特殊的目录

  • .(一个点) 代表当前目录
  • …(两个点)代表上一层目录
  • - 代表前一个工作目录
  • ~目前使用者身份所在的家目录,如:~account,代表account这个使用者所在的家目录
  • 根目录的上一层目录(…)与当前目录(.)是同一个目录
常见处理目录的命令
  • cd:切换目录
  • pwd [-P]:显示当前目录,-P可选参数,表示显示真正的路径,而非链接路径
  • mkdir [-mp] 目录名称:创建一个新目录,-m:设置目录的权限,不用默认的权限;-p:将所需要的目录(包含上一层目录)直接创建,且如果该目录已经存在也不会打印错误信息。
  • rmdir [-p]:删除一个空目录;-p连同上层的空目录一起删掉;注意:被删除的目录里必定不能存在其他的目录或文件
执行文件路径的变量:$PATH
  • 当我们在执行某条命令的时候,系统会根据PATH(必须大写)设置的路径去查找到相应的命令进行执行,先找到先执行
文件与目录的查看:ls
  • 指令格式:ls [选项或参数] 文件名或目录名。具体参数及其含义见下表:
选项与参数含义
-a全部文件,连同隐藏文件(开头为 . 的文件)一起列出来
-A全部文件,连同隐藏文件一起列出来,但不包括 . 和 … 这两个文件
-d仅列出目录本身,而不列出目录里的文件数据
-f直接列出结果,不进行排序(ls默认情况下会排序)
-F根据文件、目录等信息,给予附加数据结构,如:*:代表可执行文件;/:代表目录;=:代表socket文件;|:代表FIFO文件
-h将文件容量以人类易读的方式列出来(如GB、KB)
-i列出inode号码
-l详细信息显示,包含文件的属性和权限
-n列出UID与GID
-r将排序结果反向输出
-R连同子目录内容一起列出来
-S以文件容量大小排序
-t依照时间排序
–color=never不依据文件特性给予颜色显示
–color=always显示颜色
–color=auto系统自行依据设置来判断是否给予颜色
–full-time以完整时间模式(年、月、日、时、分)输出
–time={atime,ctime}输出access时间或改变权限属性时间(ctime),而非内容修改时间
  • ls默认显示的是非隐藏文件的文件名、以文件名进行排序及文件名代表的颜色显示
复制文件或目录:cp
  • 指令格式:cp [可选参数] 源文件 目标文件。具体参数及其含义见下表:
选项与参数含义
-a相当于 -dr --preserve=all 的意思
-d若源文件为链接文件属性,复制链接文件属性而非文件本身
-f强制,若目标文件已存在且无法开启,则删除后再尝试一次
-p连同文件属性一起复制(用户、权限、时间)
-r递归复制,用于复制目录,目录下的子目录等会被一起复制
-u目标文件和源文件旧,或目标文件不存在情况下才会更新
  • 在默认的条件中,cp的源文件与目标文件的权限是不同的,目标文件的拥有者通常是命令操作者本身。
  • 由于上述特性,因此在对一些特殊权限的文件如密码文件或一些配置文件备份时,需要注意不能单纯的使用cp命令,而是需要加上-a或-p这些参数来完整复制文件权限。除此之外,当复制文件给其他用户时,也要注意文件的权限,否则其他用户依旧不能对复制的文件进行读写等操作。
  • 复制链接文件时,若cp未加任何选项,那么复制的是原始文件,而非链接文件的属性;若要复制链接文件属性,则需要加上-d参数。
  • 例题:使用dmtsai的身份,完整的复制/var/log/wtmp文件到/tmp下面,并更名为dmtsai_wtmp。实际结果如下图,可以看出由于dmtsai的身份不能随意修改所有者和用户组,因此尽管加了-a参数,也不能完整的复制权限。
    在这里插入图片描述
删除文件或目录:rm
  • 指令格式:rm [可选参数] 文件名或目录名
  • 具体参数及含义见下表:
选项与参数含义
-f忽略不存在的文件,不会出现警告信息
-I交互模式,在删除前会询问使用者是否删除
-r递归删除,用于删除目录,目录下的子目录等会被一起删除,谨慎使用
  • 使用 rm 删除时,若删除的是非空目录,则会报错,加上 -r 参数后可以递归删除。
移动文件或目录,或重命名:mv
  • 指令格式:mv [ 可选参数 ] 源文件 目标文件
选项与参数含义
-f若目标文件已存在,不会询问而是直接覆盖
-i若目标文件已存在,会询问是否要覆盖
-u若目标文件已存在,且源文件比目标文件新,才会更新

-重命名指令格式:mv 旧文件名称 新文件名称

文件内容查看

直接查看文件内容:cat、tac、nl
cat:从第一行开始显示文件内容
  • 指令格式:cat [ 可选参数 ] 文件名
  • 具体参数及含义见下表:
选项与参数含义
-A可以列出一些特殊字符
-b对非空白行标上行号
-E将结尾换行符 $ 显示出来
-n打印出行号,包括空白行的行号
-T将 Tab 键以 ^I 显示出来
-v列出一些看不出来的特殊字符
tac:从最后一行开始显示文件内容,可以看出tac是cat的倒写
nl:显示时同时打印行号
  • 指令格式:-nl [ 可选选项] 文件名
  • 具体参数及含义见下表:
参数与选项含义
-b a列出行号,包括空行
-b t列出行号,不包括空行(默认值)
-n ln行号在屏幕最左方显示
-n rn行号在自己栏位的最右方显示,且不加 0
-n rz行号在自己栏位的最右方显示,且加 0
-w设置行号栏位的占用字符数,默认为六位
翻页查看:more、less
more:一页一页的显示文件内容
  • 当文件内容行数大于屏幕输出的行数时,more就会将其分页显示,屏幕的最后一行可以看到当前显示内容的百分比。
操作含义
空格键代表向下翻一页
Enter键代表向下翻一行
/字符串代表在这个显示的内容当中,向下查找字符串这个关键词
:f立刻显示出文件名及目前显示的行数
q代表立刻more,不再显示该文件内容
b或者Ctrl-b代表往回翻页,该操作仅对文件有用,对管道无用
less:一页一页翻动
操作含义
空格键代表向下翻一页
键盘上键代表向下翻一页
键盘下键代表向上翻动一页
/字符串向下查找字符串
?字符串向上查找字符串
n重复前一个查找(与 / 或 ?有关)
N反向重复前一个查找(与 / 或 ?有关)
g前进至第一行
G前进至最后一行
q离开 less
数据截取:head、tail
head:取出前面几行
  • 指令格式:head [-n number] 文件名
  • 参数:-n,后边接数字,代表显示几行的意思,默认显示前面十行。
tail:取出后面几行
  • 指令格式:tail [-n number] 文件名
  • 参数:-n,后边接数字,代表显示几行的意思,默认显示最后十行。
  • 参数:-f,表示持续刷新显示后面所接文件中的内容,按下Ctrl+c结束。
  • tail -n +100 文件,该条指令代表该文件从100行以后的都会列出来。
查看非纯文本文件:od
  • 指令格式:od [-t type] 文件
  • 选项或参数含义见下表:
选项或参数含义
-t a利用默认的字符来输出
-t c使用ASCII字符输出
-t d[size]使用十进制来输出数据,每个整数占用size Bytes
-t f[size]使用浮点数来输出数据,每个数占用size Bytes
-t o[size]使用八进制来输出数据,每个整数占用size Bytes
-t x[size]使用十六进制来输出数据,每个整数占用size Bytes

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

  • 修改时间(mtime):当文件【内容数据】发生变更时,就会更新这个时间
  • 状态时间(ctime):当文件的【状态】比如权限或属性发生改变时,就会更新这个时间
  • 读取时间(atime):当该【文件内容被读取】时,就会更新这个时间
  • 默认情况下,ls显示出来的是该文件的mtime,也就是该文件上次被修改的时间。
  • 指令格式:touch [可选参数] 文件
选项或参数含义
-a仅自定义atime
-c仅修改文件的时间,若文件不存在也不会新建文件
-d其后可跟与自定义的日期而不用当前的日期
-m仅可修改mtime
-t其后可跟欲自定义的时间而不使用当前的时间,格式为[YYYYMMDDhhmm

文件默认权限:umask

  • 指定当前用户在建立文件或目录时的权限默认值
  • umask 其后跟的数字代表的是默认值需要拿掉的权限

配置文件隐藏属性:chattr

  • 指令格式:chattr [±=] [ 可选参数 ] 文件或目录名
选项或参数含义
+增加某一个参数,其余原本存在的参数不动
-删除某一个参数,其余原本存在的参数不动
=直接设置参数,且仅有后面接的参数
A设置该属性后,若再存取此文件,其存取时间 atime 将不会被修改(可避免I/O较慢的机器过度读写磁盘)
S进行任何文件的修改,该修改都会同步写入磁盘(一般修改是非同步写入磁盘)
a设置这个参数后,该文件只能增加数据,不能删除或修改数据,只有root可以设置该属性
d当dump程序被执行时,设置了该属性的文件或目录不会被dump备份
i设置该参数后,文件不能被删除、改名、设置链接也无法写入或新增数据
s设置该属性后,若文件被删除,将是从硬盘被删除,误删无法恢复
u设置该属性后,若文件被删除,但其数据内容其实还在硬盘,所以可以恢复

显示文件隐藏属性:lsattr

  • 指令格式:lsattr [可选参数] 文件/目录
选项或参数含义
-a隐藏文件的属性也显示出来
-d若是目录,仅列出目录本身属性而无需列出其子目录等
-R连同子目录的数据也一并列出

文件特殊权限:SUID、SGID、SBIT

SUID:
  • SUID权限仅对二进制程序有效,不能用在shell脚本上
  • 执行者对于该程序需要有x可执行权限
  • 本权限仅在该程序执行的过程中有效
  • 执行者将具有该程序拥有者的权限
SGID:

对文件而言,SGID具有以下功能:

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

对目录而言,SGID具有以下功能:

  • 用户若对此目录具有 r 和 x 权限时,该用户能够进入此目录
  • 用户在此目录下的有效用户组,将会变成该目录的用户组
  • 若用户在此目录下具有 w 权限,则用户所建立的新文件,该新文件的用户组与此目录的用户组相同
SBIT:
  • 该权限仅对目录有效
  • 当用户对目录具有 w、x 权限,即具有写入的权限
  • 当用户在该目录下建立文件或目录时,仅有自己与root才有权利删除
    在这里插入图片描述
which:(查找执行文件,脚本文件)
  • 指令格式:which -a command
  • -a:将所有由PATH目录中可以找到的命令均列出

查找文件

whereis:由一些特定目录查找文件
  • 指令格式:whereis [可选参数] 文件
参数或选项含义
-l可以列出whereis会查询的几个主要目录
-b只查找二进制格式(可执行)的文件
-m只找在说明文件manual路径下的文件
-s只找源文件
-u查找不在上述三个项目当中的其他特殊文件
locate:
  • 指令格式:locate [可选参数] keyword
参数或选项含义
-i忽略大小写
-c不输出文件名,仅计算找到的文件数量
-l仅输出几行,如输出5行则是:-l 5
-S输出locate所使用的数据库文件的相关信息,包括该数据库记录的文件/目录数量等
-r其后可跟正则表达式的显示方式
  • locate是从数据库中去查找,而数据库默认每天更新一次,所以如果是新建立的文件,有可能查找不到。
  • 使用指令updatedb可以更新数据库。
find:
  • 指令格式:find [PATH] [option] [action]
参数或选项含义
-mtime n列出n天之前【一天之内】被修改过内容的文件
-mtime +n列出n天之前(不含n天)被修改过内容的文件
-mtime -n列出n天之前(含n天)被修改过内容的文件
-newer file列出比file还要新的文件,file是一个已经存在的文件
-uid nn为数字,这个数字是使用者的账号的ID,即UID
-gid nn为数字,这个数字是用户组的名称的ID,即GID
-user namename为拥有者名称
-group namename为用户组名称
-nouser查找文件的拥有者不在/etc/passwd中的文件
-ngroup查找文件的拥有用户组不存在与/etc/group中的文件
-name filename查找文件名称为filename的文件
-size [±SIZE]查找比SIZE还要大(+)或小(-)的文件;SIZE规格有:c(Bytes)k(KB,即1024Bytes)
-type TYPE查找文件类型为TYPE的文件,类型主要有:一般正规文件(f),设备文件(b,c),目录(d),链接文件(l),socket(s),FIFO(p)
-perm -mode查找文件权限【必须要全部囊括mode的权限】的文件;如查找权限-rwxr–r--,即权限0744的文件,使用指令:-perm -0744,当一个文件权限为-rwsr-xr-x,即权限4755时也会被列出来,因为4755囊括了0744权限
-perm /mode查找文件权限【包含任一mode的权限】的文件;如查找权限-rwxr-xr-x,使用指令:-perm /755,当一个文件权限为-rw-------时也会被列出来
-exec commandcommand为其他命令,exec后边跟额外的命令来处理查找到的结果,注意:-exec不支持命令别名
-print将结果打印到屏幕上,这个是默认操作
  • find虽然功能强大,但是使用find查找比较消耗硬盘资源,所以也要依情况使用。

权限与命令之间的关系

让用户能够进入某目录成为可工作目录的基本权限是什么?
  • 可使用的命令:如 cd 等命令变换工作目录;
  • 目录所需权限:用户对这个目录至少要有 x(可执行)的权限;
  • 额外需求:如果用户还想要在这个目录中利用 ls 查看文件名,则还需要 r(可读)的权限;
用户能够在某目录内读取一个文件的基本权限是什么?
  • 可使用的命令:如 cat less more
  • 目录所需权限:至少需要 x(可执行)权限
  • 文件所需权限:至少需要 r(可读)权限
用户可以修改一个文件的基本权限是什么?
  • 目录所需权限:至少需要 x(可执行)权限
  • 文件所需权限:至少需要 r(可读)和 w(可写)的权限
用户可以创建一个文件的基本权限是什么?
  • 用户在该目录要有 w(可写)和 x(可读)的权限,w 权限很重要
用户进入某目录并执行该目录下的命令所需的基本权限是什么?
  • 对目录和文件而言都需要 x(可执行)的权限
  • 1
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值