飞跃高山与大洋的鱼飞跃高山与大洋的鱼
首页
先看
计算机
  • 数学
  • Linux
  • Arch
  • Manjaro
  • Ubuntu
  • CentOS
  • Kubernetes
  • Web
  • JavaScript
  • TypeScript
  • CSS
  • Canvas
  • Vue
  • Vite
  • NuxtJS
  • Webpack
  • Flutter
  • D3
  • Jest
  • WeApp
  • Utils
  • Nodejs
  • Nestjs
  • Golang
  • Nginx
  • Traefik
  • MySQL
  • MongoDB
  • Redis
  • Docker
算法
  • 像素风
  • Git
  • Github
  • VSCode
  • Chrome
  • Google
  • Bookmark scripts
  • 导航 🎉
  • VuePress 侧边栏插件
  • VuePress 官网
🚇 开往
首页
先看
计算机
  • 数学
  • Linux
  • Arch
  • Manjaro
  • Ubuntu
  • CentOS
  • Kubernetes
  • Web
  • JavaScript
  • TypeScript
  • CSS
  • Canvas
  • Vue
  • Vite
  • NuxtJS
  • Webpack
  • Flutter
  • D3
  • Jest
  • WeApp
  • Utils
  • Nodejs
  • Nestjs
  • Golang
  • Nginx
  • Traefik
  • MySQL
  • MongoDB
  • Redis
  • Docker
算法
  • 像素风
  • Git
  • Github
  • VSCode
  • Chrome
  • Google
  • Bookmark scripts
  • 导航 🎉
  • VuePress 侧边栏插件
  • VuePress 官网
🚇 开往
  • LINUX

    • 为什么不试试 Linux 呢
    • 一切皆文件
      • 文件类型
        • 1. 普通文件
        • 2. 目录文件
        • 3. 字符设备文件和块设备文件
        • 4. 套接字文件(socket)
        • 5. 符号链接文件(symbolic link)
        • 6. 管道文件(pipe)
      • 利弊
        • 1. 利
        • 2. 弊
    • Shell 脚本
    • 别名 alias
    • 分发脚本 ansible
    • 归档和压缩
    • 命令选项
    • 命令行快捷键
    • Linux 常用命令
    • 解放双手计划
    • 检测服务器通达
    • Linux 系统目录结构
    • Dnsmasq
    • fail2ban
    • 防火墙 firewalld
    • 花里胡哨且实用的命令
    • 文本三剑客
    • 如何启用硬盘
    • 输入、输出重定向
    • 作业控制
    • Prometheus
    • 磁盘阵列
    • 远程同步文件
    • SSH 让你的服务器更安全
    • 守护系统 systemd
    • 用户管理
    • 查看文本内容
    • 传参 xargs

一切皆文件

Linux 中所有的内容都是以文件的形式保存和管理的,即一切皆文件,普通是文件,目录是文件,硬件设备(显示器、键盘、硬盘、打印机)是文件,就连套接字(socket)、网络通信等资源也都是文件。

文件类型

1. 普通文件

符号:- 。

类似 mp4、pdf、html 这样,可以直接拿来使用的文件都属于普通文件,Linux 用户根据访问权限的不同可以对这些文件进行查看、删除及更改操作。

2. 目录文件

符号:d 。

Linux 系统中,目录文件包含了此目录中各个文件的文件名及指向这些文件的指针,打开目录等同于打开目录文件,只要你有权限,可以访问目录中的任何文件。

3. 字符设备文件和块设备文件

符号:c(字符)、b(块) 。

这些文件通常隐藏在 /dev/ 目录下,当进行设备读取或外设交互才会被使用。Linux 系统中的设备,要么是字符设备文件,要么是块设备文件。

4. 套接字文件(socket)

符号:s 。

套接字文件一般隐藏在 /var/run/ 目录下,用于进程间的网络通信。

5. 符号链接文件(symbolic link)

符号:l 。

类似与 Windows 的快捷方式,是指向另一文件的指针(软连接)。

6. 管道文件(pipe)

符号:p 。

主要用于进程间通信。管道是由内核管理的一个缓冲区,一端链接一个进程的输出,一端链接一个进程的输入。当管道中没有信息的时候,读取进程会等待;当管道中存满信息的时候,输入进程会等待。当两个进程都终结的时候,管道会自动消失。

利弊

1. 利

这需要结合文件这个概念来谈,文件的特性无非是读、写、权限、字符流。这样不管是文件还是硬件资源都使用同一套管理机制。比如几乎所有读取(读文件、读系统状态、读 socket、读 pipe),都可以使用 read 函数来进行;write 函数同理。

2. 弊

弊端在于使用任何硬件设备都必须和根目录下某一目录执行挂载操作,否则无法使用。

挂载,指的就是将设备文件中的顶级目录链接到 Linux 目录下的某一目录,访问此目录就等同于访问设备文件。因为 Linux 具有一个以根目录为树根的文件目录结构,每个设备也同样如此,它们是相互独立的。如果我们想通过 Linux 上的根目录找到设备文件的目录结构,就必须将这两个文件系统目录合二为一。就类似古代的藩国策略吧。

当然,挂载并非随便选一个目录就可以挂载,挂载操作会导致原有目录文件被隐藏,如果你挂载到了系统重要的目录甚至是根目录,那么系统就会造成异常甚至崩溃

编辑文档!
上次更新:
贡献者: shanyuhai123
Prev
为什么不试试 Linux 呢
Next
Shell 脚本