Linux的文件与目录管理

1.目录与路径

1.1.绝对路径与相对路径

在目录的切换之前,需求了解绝对路径相对路径的区别。这个概念还是比较好懂的。举个例子,假设我当前的目录如下所示:

zhangsan@Aliyun:~$

那么我的绝对目录就是**/home/zhangsan**这个目录。假设我的/home目录下还存在用户名为zhengxianjun的用户,当我需要切换目录时,我可以采用两种方式:

zhangsan@Aliyun:~$ cd /home/zhengxianjun(第一种绝对路径)
zhangsan@Aliyun:~$ cd . . /zhengxianjun(第二种相对路径)

在相对路径中,“.” 代表了当前的目录,“. .” 代表了上一级的目录。我们新建一个文件夹,并在文件夹下放置目录,如下所示:
在这里插入图片描述
我们可以看到,虽然我只创建了一个文件夹,但其显示了当前文件夹与上一级的文件夹。

1.2. 目录的相关操作

有几个比较重要的命令

  • . 代表了当前的目录
  • … 代表了上一层的目录
  • -代表了前一个工作目录(可以用来切换的)
  • ~ 代表了用户的家目录

几个常见的处理目录的命令

  1. cd命令(Change Directory)

zhangsan@Aliyun:~$ cd ~zhengxianjun(回到zhengxianjun的家目录)
zhangsan@Aliyun:~$ cd ~ (表示回到主文件夹)
zhangsan@Aliyun:~$ cd … (表示回到上层目录)

  1. pwd 显示当前的文件夹(print working directory)
  2. mkdir创建文件夹的命令
  3. rmdir删除文件夹的命令

zhangsan@Aliyun:~$ mkdir -p test/test1/test1(创建多级)
zhangsan@Aliyun:~$ mkdir -m 777 test (设置权限)

1.3.执行文件的路径变量

linux上存在环境变量PATH,可以帮助查找命令所在的文件夹位置,当用root用户登陆Linux时,可以查看并更改用户的环境变量。首先,打印环境变量

zhangsan@Aliyun:~$ echo $ PATH ($ 代表的是一个变量)
zhangsan@Aliyun:~$ PATH="$PATH": /root (给环境变量增加一个文件夹)

需要注意的几点内容

  1. 在默认状态下,不同的用户的PATH目录是不同的
  2. PATH是可以修改的
  3. 使用绝对路径或者相对路径执行某个命令会比PATH更有效
  4. 命令要放到正确的路径中
  5. 对于本目录(.),不要放到PATH中

1.4. 复制删除与移动 cprmmv

  1. cp (copy)除了单纯的复制外,可以创建连接文件,对比文件的新旧程度以更新,复制整个目录等功能。这里只涉及cp命令的调用。

zhangsan@Aliyun:~$ cp [-adfilprsu] 源文件(source) 目标文件(destination)
zhangsan@Aliyun:~$ cp [options] source1 source2 source3… direction

  1. rm (remove) 删除文件

zhangsan@Aliyun:~$ cp [-fir] 文件或者目录

  1. mv (move)移动文件与目录,或者更名

zhangsan@Aliyun:~$ mv [-fiu] source destination
zhangsan@Aliyun:~$ mv [-fiu] source1 source2 source3… directory

1.5.获取文件的某个路径

zhangsan@Aliyun:~$ basename /etc/sysconfig/network 取得最后的文件名
zhangsan@Aliyun:~$ dirname /etc/sysconfig/network 取得目录名

2.文件内容查阅

2.1.直接查看文件的内容

  • 使用cat(Concatenate)

zhangsan@Aliyun:~$ cat /etc/issue

  • 使用tac(与cat相反,反向输出)

zhangsan@Aliyun:~$ tac /etc/issue

  • 使用nl(添加行号打印)

zhangsan@Aliyun:~$ nl /etc/issue

2.2.可翻页查看

  • 使用more(一页一页翻动)

zhangsan@Aliyun:~$ more /etc/man.config

  • 使用less(一页一页翻动,可以向前翻动)

zhangsan@Aliyun:~$ less /etc/man.config

2.3.数据选择

  • 使用head(取出前面的几行)

zhangsan@Aliyun:~$ head /etc/man.config

  • 使用tail(打印后面几行)

zhangsan@Aliyun:~$ tail /etc/man.config

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

在Linux系统下,每个文件记录着多个时间,并且这个时间是可以修改的。每种时间对文件都比较重要。

  • modification time (mtime)
    在文件的内容被修改时候,这个时间会被更新,因此,对于一个文件来说,其modification time还是非常重要的。我们可以用下列方式来查看,并修改文件的modification time。

zhangsan@Aliyun:~$ ll -l /etc/man.config
zhangsan@Aliyun:~$ touch -mt 1209090909 /etc/man.config

  • status time (ctime)
    当文件的属性和权限被更改时,这个时间会被更新。我们可用下列命令来访问和修改这个时间。

zhangsan@Aliyun:~$ ll -l --time=ctime /etc/man.config
zhangsan@Aliyun:~$ touch -ct 1209090909 /etc/man.config

  • access time (atime)
    当文件的内容被取用时,这个时间会被更新。比如当我们读取某个文件时,这个时间就会被更新。我们可用下列命令来访问和修改这个时间。

zhangsan@Aliyun:~$ ll -l --time=atime /etc/man.config
zhangsan@Aliyun:~$ touch -at 1209090909 /etc/man.config

3.文件的默认权限与隐藏权限

3.1文件的默认权限umask

umask是指用户在新建文件或者目录时的权限的默认值,其相当于一个过滤器。umask的值是可以查看和修改的。

zhangsan@Aliyun:~$ umask
zhangsan@Aliyun:~$ #查看umask值
zhangsan@Aliyun:~$ umask -S
zhangsan@Aliyun:~$ #查看umask值,用权限的方式
zhangsan@Aliyun:~$ umask 0002
zhangsan@Aliyun:~$ #修umask的数值

在默认情况下,一个文件具有rw权限即可,其不需要执行(x)权限。而对于目录来说,执行属性非常重要,因此,对于一个目录文件来说,其需要rwx三个权限。下图可以说明umask是如何实现权限的过滤的
在这里插入图片描述

3.2.文件隐藏属性

文件的特定属性能够让文件的所有者也不能够删除文件,在系统安全上这点非常重要。利用chattr可以给文件添加隐藏的属性,同时,利用lsattr能够显示文件的隐藏属性。

zhangsan@Aliyun:~$ chattr [+ - =][ASacdistu]
zhangsan@Aliyun:~$ lsattr [-adR]

3.3. 文件的特殊权限SUID,SGID,SBIT

3.3.1. SUID

在文件的权限中,除了r、w、x之外,还有很多的权限,比如s与t。简单来说,当s出现在文件的所有者的x权限上时,文件的权限变更为"rwsr-xr-x",那么,执行者对该文件有执行权限,同时,执行者拥有该文件的所有者的权限,该命设置在password这里使用。

  • SUID对于目录是无效的

3.3.2. SGID

拥有SGID的权限,可以有以下功能:

  • 对于文件:
    SGID对二进制程序有用
    程序执行者对该程序来说,需具备x的权限
    执行者在执行过程中将获得该程序用户组的支持
  • 对于目录:
    若用户对目录具有r与x权限,该用户能够进入此目录
    若用户在此目录下具有w权限(可以新建文件),则用户所创建的新文件的用户组与此目录的用户组相同。

3.3.3. SBIT

针对于目录的权限设置。若目录设置了SBIT权限,在该目录下,只有root与自身能够对自己创建的文件进行删除、重命名、移动等操作。

3.3.4. 使用方式

该命令的使用方式为:

zhangsan@Aliyun:~$ chmod 7777 ~/Musics

即在权限前+数字。数字代表的命令为:

  • 4代表SUID
  • 2代表SGID
  • 1代表SBIT

3.4 查看文件的类型

如果想要知道某个文件的基本类型数据,例如是属于ASCII或者是data文件等,使用的命令为:

zhangsan@Aliyun:~$ file ~/Videos

5. 命令与文件的查询

5.1脚本文件的查询

zhangsan@Aliyun:~$ which ls
这个命令是根据PATH这个环境变量规范的路径去查询“执行文件”的位置的

5.2文件名查找

  • whereis (寻找特定的文件)
  • locate (关键词的查找)

zhangsan@Aliyun:~$ whereis [-bmsu] 文件或者目录
zhangsan@Aliyun:~$ locate [-ir] keyword

值得注意的是,这两个命令都会通过查找自己所建立的数据库/var/lib/mlocate,而不通过硬盘查找。但是数据库的数据是一天更新一次的,可以手动更新数据库。updatedb

  • find

zhangsan@Aliyun:~$ find [PATH] [option] [action]
zhangsan@Aliyun:~$ find /var -mtime +4
#代表4天以前的的文件(第5天开始)
zhangsan@Aliyun:~$ find /var -mtime -4
#代表小于等于4天的文件
zhangsan@Aliyun:~$ find /var -mtime +4
#代表4~5 天的文件

6. 权限与命令之间的关系

  • 让用户能够进入某目录成为"可工作目录"的基本权限是什么?

    • 可使用的命令:例如cd
    • 目录所需要的权限: 至少需要具有x权限
    • 额外权限:如果需要对该目录下的文件的名称进行查找,需要r权限
  • 用户在某个目录内读取一个文件的基本权限是什么

    • 可使用的命令,cat,less,more
    • 对该目录需要有可执行的权限x
    • 对目录下的文件具有可度权限r
  • 让用户修改一个文件的基本权限是什么

    • 可使用的命令,如nano
    • 对该目录具有可执行权限
    • 对该文件具有w与r权限
  • 让一个用户可以创建一个文件的基本权限

    • 对目录所需的权限为w与x权限
  • 让用户进入 某个目录并执行该目录下的 某个命令 的基本权限

    • 对于目录需要有执行权限x
    • 对于文件需要有执行权限x
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值