Linux和其他类似UNIX的操作系统的定义特性之一是“一切都是一个文件”。这是一个过于简单化的说法,但理解它的含义将有助于理解Linux的工作原理。
Linux上的许多东西都出现在文件系统中,但它们实际上不是文件。它们是表示硬件设备、系统信息和其他内容(包括随机数生成器)的特殊文件。
这些特殊文件可能位于伪文件或虚拟文件系统中,例如/dev,其中包含表示设备的特殊文件,以及/proc,其中包含表示系统和进程信息的特殊文件。
例如,假设您想查找有关CPU的信息。/proc目录包含一个特殊文件–/proc/cpuinfo–其中包含此信息。
你不需要一个特殊的命令来告诉你你的CPU信息-你可以用任何标准的命令来读取这个文件的内容,这个命令可以处理纯文本文件。例如,您可以使用cat/proc/cpuinfo命令将此文件的内容打印到终端,将CPU信息打印到终端。您甚至可以在文本编辑器中打开/proc/cpuinfo来查看其内容。
请记住,/proc/cpuinfo实际上不是包含此信息的文本文件—Linux内核和proc文件系统将此信息作为一个文件公开给我们。这允许我们使用熟悉的工具来查看和处理信息。
/proc目录还包含其他类似的文件,例如:
在/dev目录中,您将找到表示设备的文件,以及表示其他特殊事物的文件。例如,/dev/cdrom是您的CD-ROM驱动器。/dev/sda表示第一个硬盘驱动器,而/dev/sda1表示第一个硬盘驱动器上的第一个分区。
想装光盘吗?运行mount命令并指定/dev/cdrom作为要装载的设备。要对第一个硬盘分区吗?运行磁盘分区实用程序并指定/dev/sda作为要编辑的硬盘。要格式化第一个硬盘上的第一个分区吗?运行格式化命令并告诉它格式化/dev/sda1。
如您所见,将这些设备作为文件系统的一部分公开有其优点。文件系统提供了一个一致的“名称空间”,所有应用程序都可以使用它来寻址和访问设备。
/dev文件系统不仅仅包含表示物理设备的文件。以下是其中最著名的三种特殊装置:
如果你把这三个看作文件,你就看不到它们的用处了。相反,把它们当作工具。
例如,默认情况下,Linux命令会生成错误消息和其他输出,并打印到标准输出(通常是终端)上。如果您想运行一个命令而不关心它的输出,可以将该输出重定向到/dev/null。将命令的输出重定向到/dev/null会立即丢弃它。您可以将此方法用于任何命令,而不是让每个命令都实现自己的“安静模式”。
command > /dev/null
如果你想要一个随机性的来源,比如说,为了生成一个加密密钥,你不需要编写你自己的随机数生成器,你可以使用/dev/random。
要通过向硬盘写入0来擦除硬盘的内容,您不需要专用于归零驱动器的特殊实用程序—您可以使用标准实用程序和/dev/zero。例如,dd命令从一个位置读取数据,然后写入另一个位置。下面的命令将从/dev/zero读取零,并将它们直接写入系统上的第一个硬盘分区,从而完全擦除其内容。
(警告:如果运行此命令,它将删除第一个分区上的所有数据。仅当要销毁数据时才运行此命令。)
dd if=/dev/zero of=/dev/sda1
这里我们将dd用于特殊文件(/dev/zero和/dev/sda1),但是我们也可以使用dd来读取和写入实际文件。同一命令既适用于直接操作设备,也适用于处理文件。
实际上,说“一切都是字节流”比说“一切都是文件”更准确,/dev/random不是文件,但它肯定是字节流。而且,虽然从技术上讲,这些东西不是文件,但它们在文件系统中是可以访问的——文件系统是一个通用的“名称空间”,所有东西都可以访问。要访问随机数生成器还是直接从设备读取?您可以在文件系统中找到这两者;不需要其他形式的寻址。
当然,有些东西实际上并不是文件——系统上运行的进程并不是文件系统的一部分。“每件事都是一个文件”是不准确的,但很多事情确实表现为文件。
... 上面列出的课程都是精心挑选的,通常给初学者和有经验的专业人士提供全面的知识布局。你所需要的只是学习的意愿、毅力,以及几乎所有可用的免费Linux操作系统。 ...
...司为了发财而开始对软件进行版权保护之前,大多数软件都是由研究人员和学者使用的。计算机代码被公开共享,人们可以自由地用程序做任何他们想做的事情。现在限制已经到位,继续做过去的事情变得违法了。 ...
... 编写和编辑文档(文件类型,如电子表格的ODS、文档的ODT等,无所谓), 在云端。 ...
... 有数百个Linux发行版。它们中的绝大多数都是在相对默默无闻的环境中游荡,而且很多都是为少数人的个人娱乐而**的,你可以打赌,其中有相当一部分的名字听起来很搞笑。所以名单绝不止于此。 ...
LinuxMint和初级操作系统都是Ubuntu的流行替代品,但它们也是基于Ubuntu的。如果您是Linux新手,这可能会让人困惑。让我们试着弄清楚这意味着什么以及为什么它对你很重要。 ...
...我们全面的Ubuntu和Linux初学者指南,它会教你入门所需的一切知识,熟悉到让你感到舒服。 ...
... 下面您将发现的基本Linux命令对于几乎所有Linux发行版都是通用的,从Ubuntu命令行到Kali Linux。您的终端可能与下面图片中的不同,但请放心,这些将对您有用。 ...
...终端仿真器绝对是两个不同的应用程序。那么Bash到底是什么呢?在这篇短文中,我们将探讨Bash是什么,它做什么,以及如何开始使用它。 ...
... Linux拥有不同的操作系统,都是基于Linux内核的。我们不建议初学者使用它,因为它的复杂性和缺乏软件兼容性。但是如果你是一个技术爱好者,你会喜欢Linux强大的特性和灵活性。 ...