Linux系列4-文件目录管理

时间:2021-10-30 17:00:17

摘要

  • Linux的文件系统架构
  • 文件和目录管理的基本操作
  • 更改文件和目录权限
  • 文件类型
  • 重定向和管道

如要下载笔记和代码请到我的github
欢迎访问我的主页查看更多文章。

Linux文件系统架构

  • Linux没有盘符,有的是目录(挂载点)。
  • Linux标识目录使用的是正斜杠/
  • Linux需要先建立一个根’/’文件系统(即“分区”),并且在这个文件系统中建立一系列空目录,然后将其他硬盘分区中的文件系统(如果有的话)挂载到这些目录中,比如在安装系统时,我们先划分一个单独的分区,再将其挂载到/home目录下。
  • 理论上可以为根目录下的每一个目录都划分一个单独的硬盘分区,这样根分区就可以设置的很小(因为子目录都“映射”到了其他分区上,不占据根分区的容量)。
  • 如果子目录没有划分自己的分区,那么其文件内容就自动存储在/根分区下。
  • Linux系统主要目录及内容表格
目 录 内 容
/bin 构建最小系统所需要的命令(最常用的命令)
/boot 内核与启动文件
/dev 各种设备文件
/etc 系统软件的启动和配置文件
/home 用户的主目录
/lib C编译器的库
/media 可移动介质的安装点
/opt 可选的应用程序包
/proc 进程的映像
/root 超级用户root的主目录
/sbin 和系统操作有关的命令
/tmp 临时文件存放点
/usr 非文件的程序和命令
/var 系统专用的数据和配置文件

工作组共享文件

sudo groupadd workgroup
sudo useradd -G workgroup lucy
sudo passwd lucy
sudo chgrp workgroup work/ #将组拥有权交给workgroup
sudo chmod g+rwx work/ # 用户组对目录有读写和执行权限
sudo chmod o-rwx work/ # 其他用户对目录无上述权限
sudo chown lewis work/ # 将目录所有权移交给lewis
su lewis # 切换用户ID

文件和目录管理

基本操作

  • mkdir:一次性建立一个或几个目录。
    • mkdir -p dirname:如果父目录不存在会自动创建。
  • touch:建立新的空文件。
  • mv:重命名是移动同时修改名字(可选择不修改),一般同名时直接覆盖。
    • mv -i:如果同名,询问;
    • mv -b:如果同名,在文件名后面添加~符号。
  • cp:复制文件和目录。
    • cp -i:覆盖前询问;
    • cp -b:同名文件重命名;
    • cp -r:递归式复制(目录及子目录)。
  • rm:永久删除文件和目录。
    • rm -i:删除前询问;
    • rm -f:强制删除,即对所有询问自动yes;
    • rm -r:递归删除所有目录。

更改文件和目录权限

  • chmod:使用格式[ugoa…][[-+=][perms…]…]。
    1. Linux为3种人准备了权限——文件所有者(u),文件所属组(g)和其他人(o),其他人指非前两者也非root用户(因为root拥有完整权限),其他人总是享有最低权限。
    2. 所有人(a)指代上述所有3个用户组;
    3. +表示增加权限,-表示删除权限,=表直接设置权限;
    4. 一般来说,文件创建者自动成为所有者,但是所有权可以转让,手续由root用户实施。
    5. 权限分为3种:读取(r),写入(w)和执行(x)。
      • 对于文件,能否删除和重命名一个文件是由其父目录的权限设置所控制的,要让一个文件可执行,必须设置其执行权限;可执行文件分为两类:
      • (1)可由CPU执行的二进制代码;
      • (2)shell脚本程序;
      • 对于目录
      • (1)执行权限:控制用户能否进入该目录;
      • (2)读取权限:负责确定能否列出该目录的内容;
      • (3)写入权限:在目录中创建、删除和重命名文件。
      • 所以目录和文件的执行权限是最基本的权限
    6. 权限的八进制表示:每组权限rwx用3位二进制数表示(有为1无为0),即可以用1位八进制数表示。所以完整的9位权限位就可以用3个八进制数表示,如chmod 711 prog就可以规定各用户组权限。
  • chown:格式chown [OPTION]… [OWNER][:[GROUP]] FILE将file的[属主]和[属组]改变为owner和group。
    • chown -R:递归式改变所有子目录所有者和组;
    • chgrp:只改变所属组。
  • ls -lls -ld:分别查看文件和目录的属性,属性项依次为:文件类型-3组权限位+链接数目+文件属主+文件属组+文件大小+最后修改日期+最后修改时间+完整路径。

文件类型

  • Linux中一切都表示为文件的形式(包括进程、硬件设备、通信通道等),文件类型(ls -l的显示)包括:
文件类型 符号
普通文件 -
目录 d
字符设备(顺序访问设备)文件 c
块设备(随机访问设备)文件 b
本地域套接口(进程间通信) s
有名管道(进程间通信) p
符号链接(快捷方式) l

- 链接分为两种:
- (1)软连接/符号链接:用ln -s TARGET LINK_NAME创建,通过名称进行引用,删除链接也不影响原文件;
- (2)硬连接:用ln直接创建,直接引用,对其中一者的修改会影响另一者。已很少使用

重定向和管道

  • 输入输出重定向:改变程序获取输入或产生输出的位置。标准输出指向屏幕,标准输入指向键盘。
    • 输入重定向:<;
    • 两种常用输出重定向:
    • >:相当于覆盖。
    • >>:相当于添加。
  • 管道:|将一条命令的输出连接到另一条命令的输入,举例:
    • ls | grep ay:ls的输出送给grep做最后一个输入。

参考文献

Linux从入门到精通 刘忆智 著