Linux学习笔记-文件和目录管理

常用的目录处理命令

切换工作目录
# cd [绝对路径或相对路径]
 
显示当前所在目录
# pwd [-P]
参数与选项:
-P : 显示出当前路径,而非使用连接的路径

新建目录
# mkdir [-mp] 目录名称
参数与选项:
-m: 配置文件夹的权限,直接设置,不受默认权限的影响(umask)
-p : 直接将所需要的目录(上层目录)递归创建起来

删除“空”目录
# rmdir [-p] 目录名称
参数与选项:
-p : 连同上层的空目录一同删除

 

常用的文件与目录管理命令

查看文件与目录
# ls [-adl] 目录名称
参数与选项:
-a : 全部文件,连同隐藏文件(开头为.的文件一起列出
-d : 仅列出目录本身,而不是列出目录内的文件数据
-l  : 列出长数据串,包含文件的属性与权限等数据

复制文件或目录
# cp [-adfilprsu] source destination
# cp [options] source1 source2 source3 ... directory
参数与选项: 
-a : 保持数据特性一致,相当于-pdr
-d : 若源文件为连接文件,则复制其属性而非文件本身
-f  : 若目标文件已经存在且无法开启,则删除后再尝试一次
-i  : 若目标文件已经存在,覆盖时会先进行询问操作
-l  : 进行硬连接的连接文件创建,而非复制文件本身
-p : 连同文件的属性一起复制,而非默认属性
-r  : 递归持续复制,用于目录的复制行为
-s : 复制陈伟符号链接文件,即快捷方式文件
-u : 若目标文件比源文件久才更新目标文件 

移除文件或目录
# rm [-fir] 文件或目录
参数与选项:
-f : 忽略不存在的文件,不会出现警告信息
-i : 删除前会先进行询问操作
-r : 递归删除

移动文件或目录、重命名
# mv [-fiu] source destination
#mv [options] source1 source2 source3 ... destination
参数与选项:
-f  : 若目标文件已存在,不会询问直接覆盖
-i  : 若目标文件已经存在,会询问是否覆盖
-u : 若目标文件已经存在,且源文件较新才更新

 

 

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

关于文件的时间属性有三个

  • modification time(mtime) 当文件的内容数据被更改时,更新此时间
  • status time(ctime) 当文件的属性改变时,更新此时间
  • access time(atime) 当文件内容被取用,如cat命令,更新此时间

PS:默认情况下,ls显示的是文件的mtime

# touch [-acdmt] 文件
参数与选项:
-a : 仅修atime
-c : 仅修ctime,若文件不存在则不创建新文件
-d : 后面可以接欲修改时间而不是当前日期,格式为[YYMMDDhhmm]
-m : 仅修改mtime
-t  : 后面可以接欲修改时间而不是当前日期,格式为[YYMMDDhhmm]

 

 

文件默认权限

umask : 目前用户在新建文件或者目录的时候的权限默认值(通过 umask 或者 umask -S 查看),其分数(umask查询)含义是需要减掉的权限

  • 用户新建文件,默认没有可执行(x)权限,即-rw-rw-rw-
  • 用户新建目录,默认开放所有权限,即drwxrwxrwx

若umask为 0022

  • 新建文件 : (-rw-rw-rw-) - (-----w--w-) ==》 -rw-r--r--
  • 新建文件夹 : (drwxrwxrwx) - (d----w--w-) ==》 drwxr-xr-x

 

文件隐藏属性

设置文件的隐藏属性
# chattr [+-=] [aisu] 文件或目录
参数与选项:
+ : 增加某一个特殊参数,其他原本存在的参数不改变
-  : 删除某一个特殊参数,其他原本存在的参数不改变
= : 仅有后面的参数

-a : 文件将只能增加数据,而不能改变和修改数据,仅root可设置
-i  : 文件不能被删除、改名,设置连接也无法写入或添加数据,仅root可设置
-u : 文件被删除,其数据内容仍存在磁盘中

显示文件隐藏属性
# lsattr [-adR] 文件或目录
参数或选项:
-a : 将隐藏文件的属性也列出
-d : 如果接的是目录,仅列出目录本身的属性而非目录内的文件名
-R : 连同子目录的数据也一并列出

 

文件的特殊权限

SetUID,简称SUID

  • 当s出现在owner的x权限上时,即为SUID
  • SUID权限仅对二进制程序有效
  • 执行者对该程序具有x权限
  • 本权限仅在执行该程序过程中有效
  • 执行者将具有本程序owner的权限

Set GID,简称SGID

  • 当s出现在group的x权限上时,即为SGID

SGID可以针对文件或者目录设置

对于文件来说,SGID功能如下

  • SGID对二进制程序有效
  • 执行者对该程序具有x权限
  • 执行者在改程序过程中获得该程序用户组的支持

对于目录来说,SGID功能如下

  • 用户对此目录有用r和x权限
  • 用户在此目录下的有效用户组将会变成该目录的用户组
  • 若用户在此目录下具有w权限,则用户新建的文件的用户组与此目录用户组相同

Sticky Bit,简称SBIT

  • 当t出现在others的x权限上时,即为SBIT
  • 该权限仅对目录有效
  • 用户对此目录有w和x权限
  • 当用户在该目录下新建文件或目录时,仅自己和root有权利删除该文件

特殊权限的设置

  • SUID为4
  • SGID为2
  • SBIT为1

chmod命令中,在原权限参数xyz前加上需要添加的特殊权限的和

或者通过符号处理 chmod [ugo] [+-] [st] 多个表达式之间用逗号分隔

PS:当没有对应的x权限,又赋予特殊权限,对应权限位置上会显示S或者T

 

文件的查询

脚本文件名的查询

# which [-a] command
选项与参数:
-a : 将所有有PATH目录中可以找到的命令列出,而不只是第一个被找到的命令名称

 

文件名的查询

# whereis [-bmsu] dirname\filename
选项与参数:
-b  : 只查找二进制格式的文件
-m : 只查找在说明文件manual路径下的文件
-s  : 只查找source源文件
-u  : 查找不在上面三个选项当中的其他文件

# locate [-ir] keyword
选项与参数:
-i : 忽略大小写的差异
-r : 后面可接正则表达式的显示方式

# find [PATH] [option] [action]

PS: find 命令查询较慢, whereis 和 locate 查询较快同时也是常用的命令。前者是直接查询硬盘的,所以等待时间较慢但结果是实时的;后两者是通过查询 /var/lib/mlocate/ 的数据库结果,但是系统通常相隔一段时间才更新一次数据库,所以查询结果可能滞后,即查到已经删除的文件或者找不到新建的文件

posted @ 2017-11-10 17:20  DeDeDi  阅读(153)  评论(0)    收藏  举报