Linux学习(5)文件与目录管理

特殊目录:十分重要且常用

.代表此层目录
..代表上一层目录
代表前一个工作目录
~代表目前使用者身份所在的家目录
~account代表account这个使用者的家目录,account是账号名称

常见处理目录的命令

切换目录:cd

格式:1、$ cd 绝对路径或相对路径

2、$ cd ~xxx 进入xxx这个使用者的家目录,即/home/xxx

3、$ cd ~ 或cd 回到自己的家目录

4、$ cd .. 去到目前的上层目录

5、$ cd – 回到刚刚那个目录

显示当前目录:pwd

格式:pwd [-P] -p参数为显示出真正的路径,而不是链接路径。没有选项p则显示工作目录。

建立新目录:mkdir

格式:$ mkdir [-mp] 目录名称 参数-m是设置文件的权限,如mkdir -m 711 test,否则为默认;-p帮助直接在所需要的目录(包含上层目录)递归创建(即一次创建多层目录,如mkdir -p test1/test2/test3。

删除“空”目录

格式:$ rmdir [-p] 目录名称 参数-p同上

ps:如果该目录下有文件或目录,则无法删除

执行文件路径的变量:$PATH

作用,比如ls命令并不存在于所有文件中,但却可以在任何文件中使用,这是因为环境变量PATH的帮助。

code:查看哪些目录被定义出:$ echo$PATH (echo意为显示、打印)。

可以理解为PATH中存储这一些文件的绝对路径,在任何文件中都可以直接调用这些文件的内容或命令。

code:将路径加入到PATH中:$ PATH=”${PATH}:绝对路径“

ps:如果PATH中存在相同命令时,执行时就看谁先被查询到。

ps:不建议把 . 加入PATH中,避免出现安全问题。

文件与目录管理

文件与目录查看:ls

格式:1、ls [aAdfFhilnrRSt] 文件名或目录名称

2、ls [–color={never,auto,always}] 文件名或目录名称

3、ls [–full-time] 文件名或目录名称

选项与参数如下

-a, –all 列出目录下的所有文件,包括以 . 开头的隐含文件
-A 同-a,但不列出“.”(表示当前目录)和“..”(表示当前目录的父目录)。
-c  配合 -lt:根据 ctime 排序及显示 ctime (文件状态最后更改的时间)配合 -l:显示 ctime 但根据名称排序否则:根据 ctime 排序
-C 每栏由上至下列出项目
–color[=WHEN] 控制是否使用色彩分辨文件。WHEN 可以是’never’、’always’或’auto’其中之一
-d, –directory 将目录象文件一样显示,而不是显示其下的文件。
-D, –dired 产生适合 Emacs 的 dired 模式使用的结果
-f 对输出的文件不进行排序,-aU 选项生效,-lst 选项失效
-g 类似 -l,但不列出所有者
-G, –no-group 不列出任何有关组的信息
-h, –human-readable 以容易理解的格式列出文件大小 (例如 1K 234M 2G)
–si 类似 -h,但文件大小取 1000 的次方而不是 1024
-H, –dereference-command-line 使用命令列中的符号链接指示的真正目的地
–indicator-style=方式 指定在每个项目名称后加上指示符号<方式>:none (默认),classify (-F),file-type (-p)
-i, –inode 印出每个文件的 inode 号
-I, –ignore=样式 不印出任何符合 shell 万用字符<样式>的项目
-k 即 –block-size=1K,以 k 字节的形式表示文件的大小。
-l 除了文件名之外,还将文件的权限、所有者、文件大小等信息详细列出来。
-L, –dereference 当显示符号链接的文件信息时,显示符号链接所指示的对象而并非符号链接本身的信息
-m 所有项目以逗号分隔,并填满整行行宽
-o 类似 -l,显示文件的除组信息外的详细信息。
-r, –reverse 依相反次序排列
-R, –recursive 同时列出所有子目录层

-s, –size 以块大小为单位列出所有文件的大小
-S 根据文件大小排序
–sort=WORD 以下是可选用的 WORD 和它们代表的相应选项:
extension -X status -c
none -U time -t
size -S atime -u
time -t access -u
version -v use -u
-t 以文件修改时间排序
-u 配合 -lt:显示访问时间而且依访问时间排序
配合 -l:显示访问时间但根据名称排序
否则:根据访问时间排序
-U 不进行排序;依文件系统原有的次序列出项目
-v 根据版本进行排序
-w, –width=COLS 自行指定屏幕宽度而不使用目前的数值
-x 逐行列出项目而不是逐栏列出
-X 根据扩展名排序
-1 每行只列出一个文件
–help 显示此帮助信息并离开
–version 显示版本信息并离开

复制、删除与移动

复制:cp(也可以建立链接文件,即快捷方式。也可以对比文件的新旧来更新。也可以复制整个目录等)

格式:cp [-adfilprsu] 源文件 目标文件

格式:cp [options] source1 source2 source3 …… directory

选项与参数

-a :相当于 -dr –preserve=all的意思,dr意思如下
-d :若来源文件为连结文件的属性(link file),则复制连结文件属性而非文件本身;
-f :为强制 (force) 的意思,若有重复或其它疑问时,不会询问使用者,而强制复制;
-i :若目标文件(destination)已经存在时,在覆盖时会先询问是否真的动作!
-l :进行硬式连结 (hard link) 的链接文件建立,而非复制文件本身;
-p :连同文件的属性(权限、用户、时间)一起复制过去,而非使默认属性;
-r :递归持续复制,用于目录的复制行为;权限可能会被改变。
-s :复制成为符号连结文件 (symbolic link),即『快捷方式』文件;
-u :若 destination 比 source 旧才更新 destination ,或者destination不存在情况下复制

–preserve=all:除了复制-p权限相关参数,还加入SELinux属性,links,xattr也复制。

ps:硬链接等知识将会在后面介绍。

ps:如果源文件有两个以上,则最后一个目标文件一定要是“目录”才行。

eg $ cp /var/log/tmp . 将前者复制到当前路径。

tips:复制时权限不会改变,所以复制前要先改变权限。

复制注意点:

1、是否要完整保留源文件信息

2、源文件是否为符号链接文件

3、源文件是否为特殊的文件,如FIFO、socket等

4、源文件是否为目录等

删除文件或目录:rm

格式:rm [-fir] 文件或目录

参数或选项:-f:就是强制的意思,即使不存在也不会报警。-I:交互模式,在删除前会询问使用者是否操作。-r:递归删除,常用于目录的删除,非常危险!

tips:通配符*:xxx*即为所有xxx开头的文件,*xxx即为所有xxx结尾的文件。*代表0到无穷个任意字符。

ps:如果直接删除的不是空的目录会报错。

ps:为防止误删,很多都默认加入了-i这个选项。

移动文件与目录或重命名:mv

格式1:$ mv [-fiu] source destination

格式2:$ mv [options] sourcel source1 source2 …… directory

选项与参数:-f:同上,如果已经存在会直接覆盖。-i:如果存在会询问是否覆盖。-u:如果存在且source比较新才会更新。

重命名eg:mv test test1,

ps:Linux也有专门重命名函数:rename,可以用man rename查看

code:获取路径的文件名:basename 路径。获取路径的目录名:dirname 路径。

文件内容查看

格式:$ 命令 文件名

命令有:

cat:从第一行开始显示文件内容

tac:从最后一行开始显示

nl:显示内容的同时显示行号

more:一页一页的显示文件内容

less:与more类似,但可以往前翻页

head:只看前几行

tail:只看后几行

od:以二进制的方式读取文件内容

数据截取:eg 取11-20行:$ head -n 20 文件 | tail -n 10 即先去前20行,再取这20行的后10行

ps:| 为管道的符号,意思是前面命令输出的信息通过管道交给后续命令继续使用。

修改文件实践或者创建新文件

修改时间:当文件的内容数据变更时就会更新这个时间,内容属性是指文件的内容而不是文件的属性或者权限。

状态时间:当文件的状态发生变更时就会更新这个时间,如权限或属性变更。

读取时间:党文件的内容被读取时就会更新读取时间,如使用cat时。

ps:要一次性执行多条命令,命令间用;间隔开,注意换行要用\

改变文件时间:touch

格式:$ touch [-acdmt] 文件

如果文件不存在,则会新建一个,默认值均为当前时间。

ps:复制不会复制文件的ctime即状态时间。

tips:因此touch常用于建立一个空文件和将某文件自定义为目前。

文件与目录的默认权限与隐藏权限

除了基础的r、w、x权限外,在传统的Linux文件系统ext2、ext3、ext4下,还可以设置系统隐藏权限,用chattr设置,lsattr查看。其中最重要的属性是设置其不可修改的特性,连文件拥有者也不可修改。

ps:在centos7.x中是利用xls作为默认文件系统的,所以没有支持全部的chattr参数,仅有部分。

文件默认权限:umask

格式:# umask 输出四个数字,第一个为特殊权限,后三个为前面讲到的权限,如0022

格式2:# uamsk -S 以符号类型输出权限如:u=rwx

ps:umask的值是指需要减掉的权限,如显示2,实际权限时5

设置默认权限格式:uamsk 权限

tips:中括号代表中间有个指定字符,不是任意字符,eg test[34]指test3和test4

文件隐藏属性:

配置文件隐藏属性:chattr

格式:# chattr [-+=] [ASacdistu] 文件或目录名称

显示文件隐藏属性:lsattr

格式:# lsattr [-adR] 文件或目录

文件特殊权限

SUID(Set UID)

这个权限会出现在文件拥有者的x权限上显示s,eg -rwsr-xr-x

限制与功能:

1、SUID权限仅对二进制程序有效

2、执行者对于该程序有x的可执行权限

3、本权限仅在执行该程序的过程中有效

4、执行者将具有该程序拥有者的权限

SGID(Set GID)

这个权限会出现在文件用户组的x权限上显示s

功能:

1、对二进制程序有用

2、程序执行者对于该程序来说,需要具备x的权限

3、执行者在执行过程中会获得该程序用户组的支持

当目录设置SGID后具有功能:

1、若用户具有rx权限,该用户能进入该目录

2、用户在此目录下的有效用户组会变成该目录的用户组

3、若用户在此目录下具有w权限(可以新建文件),则用户所建立的新文件,该新文件的用户组与此目录的用户组相同。

SBIT(Sticky Bit)

只针对目录有效,对文件没效果。

作用:

1、当用户对此目录具有w、x权限,即拥有写入的权限。

2、当用户在该目录下建立文件或目录时,仅有自己与root才有权利删除该文件。

eg /emp的权限是drwxrwxrwt即任何人都能新增和修改文件,但只有文件或目录建立者与root才能删除自己的目录或文件。

特殊权限的设置:

在设置权限时最前面增加一个数字,eg chmod 4755 文件名,4为SUID,2为GUID,1为SBIT。

tips:SUID不是用在目录上,SBIT不用在文件上。

当s、t权限变成大写了说明该文件或目录一开始就没x权限,特殊权限也就无法使用了。

符号法修改:chmod 符号 文件名,u+s为SUID,g+s为SGID,o+t为SBIT。

code:查看文件类型: $ file 文件名

命令查找与文件查找

脚本文件查找:which

格式:$ which [-a] command

该命令是根据PATH环境变量所规范的路径去查找执行文件的文件名。

文件的查找:通常先使用whereis或locate,如果找不到使用find

whereis:只找系统中某些特定目录下面的文件

格式:$ whereis [-bmsu] 文件或目录名

ps:whereis -l可以查看whereis到底查了多少目录

locate/updatedb

格式:locate [-ir] keyword

常用于:忘记文件的完整名称

ps:locate寻找的数据是自己建立的数据库

find

格式:$ find [PATH] [option] [action]

find还可以额外进行特殊操作:如find xxx -exe actionx {} \;

{}代表的是find找到的东西,find的结果会被放到{}处

-exe到\;就是额外操作。ps:;有特殊意义,用\来转义。

tips:find可以使用速配符*

tips:因为find相当消耗资源,因此尽量少用。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值