第3章 文件系统

Posted 晴歌。

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了第3章 文件系统相关的知识,希望对你有一定的参考价值。

第3章 文件系统


3.1 文件

  • 文件分为:
    • 普通文件(简称文件)
    • 目录文件
    • 设备文件
  • 目录文件包含其中每个文件盒子目录的一个条目,每个条目由两部分组成:
    • 文件名
    • 唯一识别码(inode号)(读作eye-node)

3.2 文件名

  • 由于shell会对$`?*& 等字符进行特殊处理,所以建议仅在文件名中使用:
    • 字母
    • 数字
    • 句点(.)、 连字符(-)、下划线 (_)

3.3 UNIX文件系统

  1. 系统安装期间提供的文件:

    • /bin和/usr/bin:
      所有常用UNIX命令都在这些目录里(bin源于"二进制"binary).PATH变量总会在其列表中显示这些目录
    • /sbin和/usr/sbin:
      包含系统管理员的命令,只有系统管理员的PATH会显示
    • /etc:
      包含系统配置文件
    • /dev:
      包含所有设备文件,这些文件不占磁盘空间
    • /lib和/usr/lib:
      包含所有二进制形式的库文件
    • /usr/include:
      包含C程序的标准头文件
    • /usr/share/man:
      man页的存储位置
  2. 用户的文件:

    • /tmp:
      允许用户创建临时文件的目录,系统会定期清除这些文件
    • /var:
      系统的可变部分,包含所有打印作业和传出传入邮件
    • /home:
      包含用户目录

3.4 绝对路径和相对路径

  1. 绝对路径:
    /开头的路径即绝对路径,如:/etc/passwd
  2. 相对路径:
    不以/开头的路径,相对路径从当前目录出发,.表示当前目录,..表示父目录

3.5 主目录

  • 主目录为/home/username,其中username为用户名
  • 主目录可用$HOME变量或者~表示
  • 在shell脚本中应避免使用~而尽量使用$HOME,以便脚本移植到不同主目录的系统中(如从/home/romeo/u2/romeo),
    因为$HOME~的求值过程不同

3.6 有关文件的常用命令

3.6.1 cd

  • cd = change directory
  • cd后跟路径名可跳转至目标目录
  • cd后不跟参数跳转至主目录

3.6.2 pwd

  • pwd = print working directory

3.6.3 mkdir

  • mkdir = make directory
  • mkdir后可跟多个参数,但要确保每个目录的父目录在它自己之前创建
  • -p 选项可以将参数提供的路径上缺少的目录全部创建,
    mkdir -p progs/include/stdio.h可以将三个目录全部创建

3.6.4 rmdir

  • rmdir = remove directory
  • mkdir类似,跟多个参数,也有-p选项,不过是反过来了
  • 只能删除空目录,且当前目录必须位于要删除的目录上层,想要删除非空目录需要用rm -rrm -R

3.6.5 ls

  • ls = list
  • ls不跟参数列出当前目录包含的所有(非隐藏)的文件,默认为ASCII排列顺序
  • ls跟参数时
    • 跟普通文件: 可查看文件是否存在
    • 跟目录可列: 出目标目录包含的所有(非隐藏)文件
  • ls的常用选项:
    • -d 只显示目录名称而不列出其内容
    • -F--classify*标记可执行文件,/标记目录,@标记符号链接
    • -R 递推列出文件(-r功能不同)
    • -a--all 显示隐藏文件(.开头以及..开头的文件)
  • linux中调用ls不同文件类型的颜色不同,
    输入alias可以看到alias ls=‘ls --color=auto

3.6.6 cp

  • cp = copy
  • 默认忽略目录而只复制文件
  • 参数分为两部分,第二部分为最后一个参数,第一部分为其之前的全部参数(简称第二参数与第一参数)
  • 第一参数为多个文件时,第二参数必须为已存在的目录,结果是将第一参数的那些文件复制到第二参数的目录中去
  • 第一参数为单个文件时,第二参数可以为已存在的目录,或任意文件(无论是否存在)
    • 第二参数为已存在的目录: 同上
    • 第二参数为文件:
      • 不存在的文件: 复制第一参数,新建第二参数
      • 已存在的文件: 复制第一参数,覆盖第二参数
  • 第一参数为单个目录时,需要选项-r-R,第二参数必须为目录
    • 第二参数为不存在的目录: 复制第一参数,新建第二参数
    • 第二参数为已存在的目录: 复制第一参数到第二参数的目录下
  • 第一参数为多个目录时,需要选项‘-r‘或‘-R‘,第二参数必须为已存在目录,即通过同上

3.6.7 mv

  • mv = move or rename
  • 不加选项时参数就可以是文件或目录
  • 结果与cp类似,只不过第一参数会被删掉
  • linux可以用rename .a .b *.a把当前目录所有.a后缀的文件改为.b后缀(POSIX并不支持)

3.6.8 rm

  • rm = remove
  • 需要-r-R选项才能删除目录
  • 常与*一起使用,比如xxx*表示所有名字前3个字符为"xxx"的文件目录, *表示所有文件目录
  • rm *: 删除当前目录所有非隐藏文件
  • rm -r *: 删除当前目录所有非隐藏文件和目录
  • rm -rf *: 删除当前目录所有内容(-f表示强制删除)
  • cpmvrm都有-i选项以开启交互模式,在删除或覆盖时会有提示要求用户确认
  • KornBash中可以输入alias cp="cp -i"来默认开启交互模式

以上是关于第3章 文件系统的主要内容,如果未能解决你的问题,请参考以下文章

编写高质量代码:改善Java程序的151个建议(第3章:类对象及方法___建议36~40)

第3章-动态基础分析实验

第3章 NFS基本应用

计算机操作系统实验指导 (第3版) 第四篇 操作系统学习指导和习题解析 第23章:文件管理 习题和答案

《Java从小白到大牛精简版》之第3章 第一个Java程序

第3章 学生管理系统案例