Skip to content

文件系统

基本概念

  • 整个系统都在根目录/下
    • 一切皆是目录,硬件设备,系统信息(\proc 进程信息也通过目录进行展示)
    • 与 windows 不同的是,windows 中磁盘是最高级,每个磁盘有自己的目录;但是 linux 中所有磁盘也都挂在一个目录里面
  • image.png

    • /dev 包含了所有的设备文件,包含字符设备和块设备,系统像访问文件那样与硬件设备交互,对于这里面的硬盘只是设备的抽象,不顾纳新是否被挂载以及如何使用
    • /mnt 临时挂在文件系统的地方,用于访问点上的文件系统
  • linux 中层级用/表示,windows 用\(//)

  • 此外开头一定会有一个/ 表示根目录
  • 之后的/表示层级关系

  • 文件结构

    • /bin - 基本命令二进制文件
    • /sbin - 基本的系统二进制文件,通常是 root 运行的
    • /dev - 设备文件,通常是硬件设备接口文件
    • /etc - 主机特定的系统配置文件
    • /home - 系统用户的主目录
    • /lib - 系统软件通用库
    • /opt - 可选的应用软件
    • /sys - 包含系统的信息和配置
    • /tmp - 临时文件 ( /var/tmp ) 通常重启时删除
    • /usr/只读的用户数据
    • /usr/bin - 非必须的命令二进制文件
    • /usr/sbin - 非必须的系统二进制文件,通常是由 root 运行的
    • /usr/local/bin - 用户编译程序的二进制文件
    • /var -变量文件像日志或缓存
  • 路径

  • 绝对路径:以根目录为起点
  • 相对路径:以当前路径为起点
  • 特殊路径符
    • . 表示当前目录 cd ./Desktop 等价于 cd Desktop
    • .. 表示上一级目录 cd .. 返回上一级目录 cd../.. 上两级
    • ~ HOME 目录

基本命令

ls [-a -l -h] [linux 路径] - 选项 - -a 列出全部的文件(包含隐藏的文件和文件夹) - -l 以列表的形式展现详细内容 - -h 与 l 一起用,-hl 以 kb/mb 等显示文件大小

  • cd 切换工作目录
  • pwd 输出当前工作目录(查看当前所处的位置)

  • mkdir [-p] linux 路径新建文件夹

  • -p 自动创建不存在的父目录,即连续创建多级目录
  • 创建文件需要修改权限,HOME 文件夹外无法成功

  • touch linux 路径创建路径/文件

  • cat linux 路径 查看文件内容
  • more linux 路径翻页查看
  • 空格下一页
  • q 退出查看

  • cp [-r] 路径 1 路径 2 复制文件(夹)

  • -r 用于复制文件夹
  • 从路径 1 复制到路径 2

  • mv 路径 1 路径 2 移动文件(夹)

  • 可用于重命名 mv test 01. txt test 02. txt

  • rm [-r -f] 路径 1 路径 2 ... 删除

  • -r 用于删除文件夹
  • -f 强制删除,不弹出提示(管理员用户)
  • 一次可以删除多个

  • grep [-n] 关键字文件路径,通过关键字过滤文件行

  • -n 在结果中显示匹配的行号
  • -v 反向匹配
  • -E 参数用于启用扩展正则表达式匹配模式。
  • 关键字,表示过滤的关键字,包含空格等特殊符号时用“”包住
  • 文件路径,要过滤内容的文件,可作为内容输入端口 (可以由管道符输入)
  • -C :获取查找结果的上下文(Context); grep -C 5 会输出匹配结果前后五行。当需要搜索大量文件的时候,使用 -R 会递归地进入子目录并搜索所有的文本文件。
  • rg 更好用

  • wc [-c -m -l -w] 文件路径,统计文件信息

  • -c 统计 bytes 数目
  • -m 统计字符数目
  • -l 统计行数
  • -w 统计单词数目
  • 默认输出行数+单词数+字节数
  • 文件路径,要统计内容的文件,可作为内容输入端口

  • which 要查找的命令(用于查找环境变量下的命令)

  • 命令如 ls 本质上是一个个程序
  • which 用于查看 which 的程序文件在哪里

  • 通配符

  • * 匹配任意内容
  • test* 以 test 开头
  • *test 以 test 结尾
  • *test* 包含 test

  • find 起始路径 -name (查找方式) “名称”(用于查找文件)

  • 可以结合,通配符使用
  • find 起始路径 -size +(-) n[单位] ,按照文件的大小查找
    • +-表示大于和小于
    • n 表示数字
    • 单位:k 表示 kb,M 表示 MB,G 表示 GB
    • 如 find / -size-10 k

# 查找所有名称为src的文件夹(.表示从当前目录开始查找)
find . -name src -type d
# 查找所有文件夹路径中包含test的python文件
find . -path '*/test/*.py' -type f
# 查找前一天修改的所有文件
find . -mtime -1
# 查找所有大小在500k至10M的tar.gz文件
find . -size +500k -size -10M -name '*.tar.gz'
# 删除全部扩展名为.tmp 的文件
find . -name '*.tmp' -exec rm {} \;
# 查找全部的 PNG 文件并将其转换为 JPG
find . -name '*.png' -exec convert {} {}.jpg \;
- . 表示表示从当前路径开始搜索 - fd 就是一个更简单、更快速、更友好的程序,它可以用来作为 find 的替代品。

  • echo 内容(可以用双引号包含)
  • 用于在命令行内输出内容
  • 用反引号 `包含的内容会被作为命令执行
  • 如 echo `ls`

  • 重定向符

  • >将左侧命令结果覆盖写入右侧指定文件
  • >>将左侧命令追加写入右侧文件中
  • 如 echo "xxx" > text. txt
  • >和|都是重定向前一项的输出作为后一项的输入,但是>仍使用前一项作为命令的输出,而|则会使用后一项
  • xargs 将来自管道的输入作为参数传递给指定的命令。
    • rustup toolchain list | grep nightly | grep -vE "nightly-x86" | sed 's/-x86.*//' | xargs rustup toolchain uninstall
  • 更好的阅读模式 | less

    • less ssh.log
  • tail [-f -num] Linux 路径,查看文件尾部内容,跟踪文件最新更改

  • -f 表示持续跟踪
    • 会实时显示文件内容的更改(当此文件在其它终端中被修改时)
  • -num 表示查看尾部多少行,默认为 10
  • ls -l / | tail -n1

文件权限

磁盘管理

  • df 查看磁盘容量
    • image.png|500
    • 通常来说 /dev/sdx 表示物理磁盘
  • du 查看目录的容量
    • 限制查询深度:du -h -d 0 ~ 只查看一级目录
    • -h 更易读的单位
    • -a 显示所有文件的大小
    • -s 仅显示总计
  • dd 命令用于复制文件,但是可以直接与硬件设备进行交互,处理二进制数据流,如直接对硬盘分区进行读写

    • dd if=输入文件 of=输出文件 [选项]
    • 从标准输入读取并输出到标准输出 dd if=/dev/stdin of=/dev/stdout bs=10 count=1
    • bs 指定块的大小,count 指定块的数目
    • 还可以对输入的数据进行一些简单处理,如转化为大写 dd if=/dev/stdin of=test bs=10 count=1 conv=ucase
  • 挂载硬盘

    • (可选)创建虚拟镜像 dd if=/dev/zero of=virtual.img bs=1M count=256
    • 格式化磁盘:sudo mkfs.ex4 virtual.img
    • 挂载磁盘:mount [-o [操作选项]] [-t 文件系统类型] [-w|--rw|--ro] [文件系统源] [挂载点]
      • mount -o loop -t ext4 virtual.img /mnt
      • 只读挂载 mount -o loop --ro virtual.img /mnt
    • 卸载挂载 sudo umount /mnt
  • 磁盘分区

    • 查看分区信息 sudo fdisk -l
    • 为磁盘进行分区 sudo fdisk virtual.img
    • 输入 n 新建分区,之后设置种类大小 id 等信息
    • 输入 p 查看
    • w 执行并退出
  • MBR 分区
    • 主分区是可以包含操作系统的(MBR 分区方案中一块硬盘最多四个主分区),可以被操作系统用于启动
    • 扩展分区不直接存储文件,可以包含一个或多个逻辑分区,硬盘上可以有一个扩展分区
    • 逻辑分区可以用作文件系统
  • GPT 分区:较新,不区分主分区,支持多大 128 个分区,不需要扩展分区以及逻辑分区