Linux目录结构

  • Windows系统中,存储是以盘符和分区为主,因此在经过一段时间的使用后,文件目录会相对混乱。
  • UNIX/Linux则是以目录为主,文件构成树形目录结构。

FHS标准

  • FHS(FileSystem Hierarchy Standard,文件系统层次结构标准)规定了Linux的部分目录结构,其定义了两层规范:
    • 第一层是 /,规定了各文件应该放置的位置,如 /etc应该放置设置文件,/bin应该放置可执行文件。
    • 第二层则是针对 /usr/var两个目录的定义,例如 /var/log用于存放系统日志文件。
      FHS标准

目录路径

  • 在目录中进行切换可以使用 cd命令

    1
    2
    3
    cd <path>/<to>/<dir>
    cd .. # 进入上一级目录
    cd ~ # 进入当前用户home目录
  • 查看当前位置使用 pwd

    image-20230923103108351

  • 如果路径以 /开头,则表示为绝对路径,路径则是从根目录开始查找。否则是相对路径,则是以当前目录作为起点进行查找。

Linux文件的基本操作

新建文件

  • 使用 touch命令创建空白文件,如下,回到用户目录,然后创建 test文件:

    1
    2
    3
    cd ~
    touch test
    ls

    image-20230923103135750

新建目录

  • 使用 mkdir创建一个空白目录,创建多级目录,可以使用 -p参数:

    1
    2
    mkdir mytest
    mkdir -p father/son/grandson

    image-20230923103203314

复制

  • 使用 cp(copy)命令复制一个文件到指定目录下,将之前创建的 test文件复制到刚才创建的多级目录下:

    1
    2
    3
    cp test father/son/grandson
    cd father/son/grandson
    ls

    image-20230923103323402

复制目录

  • 复制目录仍然使用的是 cp命令,但需要加上 -r或者 -R参数,表示递归复制,如下,将father目录移动到新建的 family目录下:

    1
    2
    3
    4
    cd ~
    mkdir family
    cp -r father family
    tree family/

    image-20230923103713970

删除

  • 使用 rm(remove)命令删除文件或目录,删除 test文件:

    1
    rm test

    image-20230923103742690

  • 如果需要删除一些为只读权限的文件,可以使用 -f参数强制删除,强制删除 test文件:

    1
    rm -f test
  • 如果需要删除的是目录,则同样需要加上 -r-R参数,删除family目录:

    1
    rm -r family

移动文件与文件重命名

  • 使用 mv(move)移动文件(剪切操作),将 file1移动到 Documents目录:

    1
    2
    3
    4
    5
    mkdir Documents
    touch file1
    mv file1 Documents
    cd Documents
    tree Documents/

    image-20230923104045186

  • 使用 mv同样可以对文件进行重命名,将文件 file1重命名为 myfile

    1
    2
    3
    cd Documents
    mv file1 myfile
    ls

    image-20230923104134698

  • 如果需要重命名的文件太多,使用 mv则会非常麻烦,此时可以使用 rename进行批量重命名,其参数则使用perl正则表达式:

    1
    2
    3
    4
    5
    6
    7
    cd ~
    # 批量创建5个文件
    touch file{1..5}.txt
    # 批量修改后缀为.c
    rename 's/\.txt/\.c/' *.txt
    # 将文件名称和后缀都改为大写
    rename 'y/a-z/A-Z/' *.c

    image-20230923104411900

查看文件

  • 使用 cat命令正序查看文件,使用 tac倒序查看文件,加上 -n参数则显示行号,使用 cat命令查看 passwd文件:

    1
    2
    3
    cd ~
    cp /etc/passwd passwd
    cat -n passwd

    image-20230923104503707

  • 使用 nl命令与 cat -n相同,都是添加行号并显示,nl命令包括如下参数:

参数 功能
-b 指定添加行号的方式
-b a 无论是否为空行,都列出行号(cat -n
-b t 只列出非空行的编号并显示(默认)
-n 设置行号的样式
-n ln 在行号字段最左边显示
-n rn 在行号字段最右边显示,不补0
-n rz 在行号字段最右边显示,补0
-w 行号字段占用的位数(默认6位)
  • 使用 moreless可以分页查看文件,打开文件后默认只显示一屏的内容,可以使用Enter向下滚动一行,使用Space向下滚动一屏,按下h显示帮助,按下q退出。

    1
    more passwd

    image-20230923104701100

  • 使用 headtail命令查看文件前几行(默认10)或尾几行,使用 -n参数可以指定查看行数:

    1
    2
    3
    head passwd
    # 查看最后一行内容
    tail -n 1 passwd

    image-20230923104730835

  • tail命令还有一个 -f参数,这个参数可以不断读取文件内容并显示,从而达到监控文件的作用

查看文件类型

  • 使用 file可以查看文件类型:

    1
    file /bin/ls

    image-20230923104951833

    说明这是一个可执行文件,运行在 64 位平台,并使用了动态链接文件(共享库)。

编辑文件

  • 可以使用编辑器编辑文件,比如使用vim编辑器:

    1
    vim passwd

实战训练

  1. 创建一个 homework 目录,建立名为 1.txt~10.txt 文件,并删除 1.txt~5.txt 。

    1
    2
    3
    4
    cd ~
    mkdir homework
    touch {1..10}.txt
    rm {1..5}.txt

    image-20230923105312850

  2. Linux 的日志文件在哪个目录?

    日志文件存储在 /var/log目录下

    image-20230923105427851