注解版 UNIX Magic 海报

准备好见证一些 UNIX 魔法吧... 🪄 github 关于 Unix Magic Poster 1 15 18 7 40 21 19 32 8 26 33 38 13 24 5 30 22 2 29 4 10 11 36 3 28 25 14 35 39 23 31 9 12 37 6 34 17 16 20 27 ✖ 1 Shell 控制系统的入口 在 UNIX Magic 海报中,Shell 占据着显著的位置,这反映了它在 UNIX 系统中的核心作用。Shell 过去(现在仍然是)是与内核交互的主要界面,是 UNIX 用户的工作台。它是一个非常强大的工具,允许用户启动和协调进程、执行复杂的计算,并直接与操作系统交互。

Shell 不仅仅是一个界面,它也是一种完整的编程语言。用户可以编写脚本来自动化任务、控制进程,并构建管道来有效地处理数据。这使得 Shell 既具有交互性又具有可编程性——这与当时的其他操作系统截然不同。

虽然现在存在许多 Shell,但最初的是 Bourne shell (sh),它为之后的一切奠定了基础。

最后,我想强调的是,Shell 是通往 UNIX 力量的入口。它是学习 UNIX 时的第一个接触点,掌握它就能释放系统的全部潜力。我认为海报完美地捕捉到了这一点——Shell 位于巫师魔法的核心,因为它控制系统的入口。 ✖ 15 AWK 一种为文本处理设计的语言 AWK 是一种特定领域的语言,专为文本处理而设计,可以直接在文件上运行,也可以用作管道的一部分。

AWK 于 20 世纪 70 年代在贝尔实验室创建,其名称源于其作者的姓氏:Alfred Aho、Peter Weinberger 和 Brian Kernighan。 ✖ 18 B 一种早期编程语言,用于早期的 Multics 项目。 B 是一种为递归、非数值、机器无关的应用设计的编程语言。B 来源于 BCPL,其名称可能来自 BCPL 的缩写。B 是一种几乎已经灭绝的编程语言,已被更现代的 C 语言所取代。

B 由 Ken Thompson 和 Dennis Ritchie 于 1969 年左右在贝尔实验室开发。 ✖ 7 Backpressure 告诉生产者停止发送数据,因为消费者无法跟上 当两个进程通过管道进行通信时,发送数据的进程是生产者,接收数据的进程是消费者。如果生产者发送数据的速度快于消费者处理数据的速度,操作系统会维护一个缓冲区来临时存储数据。但是,如果缓冲区已满,操作系统将阻止生产者,直到有可用空间为止。

这是艺术家的意图吗?你来决定——管道中的阀门手柄是对 UNIX 反压的一个巧妙参考,还是有点牵强? ✖ 40 banner 一个输出 ASCII 艺术字的程序 海报的标题出现在 banner 中,这难道是巧合吗?这个 UNIX 程序旨在将普通文本转换为大型 ASCII 字符以供显示。 ✖ 21 boot (或 sock?) 启动过程(或 UNIX 网络 Sockets) 我必须承认,这个物体看起来更像靴子而不是袜子,但我很难相信作者会忽略对 sockets 的引用,考虑到它们的重要性——不仅在 UNIX 中,而且在操作系统的历史上也是如此。

因此,我认为有两种可能性:

有关 BSD sockets 历史的更多信息,请参见 Berkeley Sockets – Wikipedia,或阅读 socket() 的官方 Linux 手册页 。 ✖ 19 cat 一个标准的 Unix 实用程序,用于顺序读取文件,并将它们写入标准输出。 cat 的名称来源于它连接 (con)cat 文件的功能。

cat 的原始版本是 Unix 版本 1 的一部分,由 Ken Thompson 和 Dennis Ritchie 编写。 ✖ 32 curses 一个终端控制库,用于辅助创建文本用户界面 (TUI) curses 编程库提供了一个抽象层,用于直接发送图形和定位数据,从而允许在 Unix 终端中进行图形元素和光标定位。这个名字是“光标优化” (cursor optimization) 一词的双关语。

第一个 curses 库由 Ken Arnold 编写,最初与 BSD UNIX 一起发布。 ✖ 8 Daemons 在后台运行并监督系统或为其他进程提供功能的服务进程 Daemons 是在后台运行的程序,通常在系统启动时启动。它们通过执行某些任务来响应网络请求、硬件活动或其他程序。诸如 cron 之类的 daemons 也可以在计划的时间执行定义的任务。

这个术语是由麻省理工学院 Project MAC 的程序员创造的。它受到麦克斯韦妖和希腊神话的启发,作为在后台工作的超自然生物的隐喻。 ✖ 26 dates 一个显示和设置系统日期的命令 date 是一个显示和设置 UNIX 系统日期的命令。

Unix 时间当前定义为自 1970 年 1 月 1 日星期四 00:00:00 UTC 以来经过的非闰秒数,这被称为 Unix 纪元。

最早版本的 Unix 时间具有一个以 60 Hz 的速率递增的 32 位整数,这是早期 Unix 系统硬件上的系统时钟速率。以这种方式存储的时间戳只能表示两年多一点的范围。

Unix 工程师任意选择了当前的 1970 年 1 月 1 日 00:00:00 UTC 纪元,因为他们认为这是一个方便使用的日期。 ✖ 33 diff 一个用于查找文件内容之间差异的实用程序 diff 是一种数据比较工具,用于计算和显示文件内容中的差异。diff 是面向行的,通常用于确定同一文件的两个版本之间的更改。例如,diff 可用于查找源文件中已更改的行,从而仅传输更改而不是整个文件。

diff 是在 20 世纪 70 年代初在贝尔实验室开发的。 ✖ 38 Filesystem hierarchy 导航文件系统 巫师正在操作的液体的树状形状可能指的是 UNIX 文件系统层次结构。UNIX 将文件和目录组织成树状结构,从根目录 (/) 开始并分支到子目录。

导航此结构是使用 UNIX 的一个基本部分,通常通过 shell 使用诸如 cdlspwd 之类的命令来完成。树的形状可以象征这个概念,以直观的方式表示用户如何在目录中移动、访问文件和执行命令。

或者,分支形式可以表示递归操作或进程树中的父子关系,这两个都是 UNIX 系统中的关键概念。

一些现代读者可能会将树形形状与诸如 Git 之类的版本控制系统相关联,在这些系统中,分支是一种常见的视觉隐喻。但是,这可能不是预期的引用,因为在创建海报时,分支版本控制工作流程在 UNIX 世界中并不像现在这样普遍。诸如 SCCS (1972) 和 RCS (1982) 之类的工具是可用的,但是它们更多地关注线性版本控制和文件锁定,而不是今天流行的分支模型。 ✖ 13 fork 一种进程创建自身副本的操作 在多任务操作系统中,进程需要一种创建新进程的方式。在类 Unix 系统中,Forking 一个进程通常是执行此操作的唯一方法。

最早对 fork 概念的引用之一出现在 Melvin Conway 于 1962 年发表的《A Multiprocessor System Design》中。 ✖ 24 Jfo nroff 一个文本格式化程序,为打印机和终端生成固定宽度的输出 nroff,是 "new roff" 的缩写,是一个文本格式化程序,可以生成适合简单固定宽度打印机和终端窗口的输出。它是 Unix 帮助系统的组成部分,用于格式化 man pages 以供显示。

字母 Jfo 代表 Joseph Frank Ossanna,他为 Unix 版本 2 创建了 nroff 的原始版本。 ✖ 5 Legendary figures Unix 历史中的传奇人物 在 Unix 历史的背景下,这三组首字母代表了 Unix 创建和发展中的传奇人物: dmr:Dennis M. Ritchie,Unix 的共同创建者和 C 编程语言的创建者。 kt:Ken Thompson(在历史上的 Unix 参考中通常简称为“ken”),与 Ritchie 一起成为 Unix 的共同创建者。 bwk:Brian W. Kernighan,多本有影响力的 Unix 程序和书籍的合著者(包括《The C Programming Language》和《The UNIX Programming Environment》)。 ✖ 30 login 进入系统的入口 login 是进入系统的入口。它验证用户身份,通过更改为用户的 home 目录来初始化环境,并生成一个以用户身份(具有其 uidgid)运行的进程,使用他们选择的 shell。

此外,标准输入和输出需要连接到终端:这可以是伪终端(如果您在图形界面或使用 ssh),也可以是物理终端(当时很常见)。 ✖ 22 make 一种软件开发工具,用于执行有序操作和管理依赖关系 Make 是一个命令行界面,可以读取配置文件 Makefile,该文件通常用于代码可执行文件的编译和自动化。在 Make 之前,在 Unix 上构建主要包括为每个程序的代码库编写的 shell 脚本。Make 的依赖项排序和过时检查使构建过程更加健壮和高效。

Stuart Feldman 是 Make 的原始作者,于 1976 年 4 月在贝尔实验室完成了早期版本。 ✖ 2 man 用于获取不同 Unix 组件(包括其他 cmds)的详细文档的命令。 man(1) 命令(manual 的缩写)用于显示命令、系统调用、配置文件和系统其他方面的在线参考手册 (man pages)。man 提供了有关如何使用命令的详细文档,包括其选项、用法示例、相关文件和其他相关详细信息。

对于窗口中 man 的解释,存在一些歧义。这个人拿着一把大镰刀,这可能代表 reaping a process。在类似 Unix 的系统中,进程 reaping 是指父进程读取生成的子进程的退出状态,从而允许将子进程从进程表中删除。

其他人则认为,这个人可能代表 hacker,该术语过去表示熟练或聪明的程序员。 ✖ 29 mbox 邮件系统格式 mbox 是对早期 UNIX 邮件格式的引用。UNIX 是最早配备内置电子邮件功能的操作系统之一,它在这样做的同时,仍然忠于其信条:“一切皆文件”。在 mbox 格式中,所有电子邮件消息都存储在一个文件中,新消息只需附加到末尾即可。默认情况下,用户的邮件存储在 /usr/mail/<username> 中。这种设计自然使得可以通过电子邮件发送系统日志和通知,从而进一步将电子邮件嵌入为 UNIX 体验的核心部分。 ✖ 4 Memory leaks 计算机程序对内存的不当管理 当计算机程序不正确地管理内存分配时,就会发生内存泄漏,从而无法释放不再需要的内存。随着时间的推移,这些未释放的分配会累积,从而减少了其他进程可用的内存量,并可能导致速度减慢或崩溃。 ✖ 10 null null 设备是一个设备文件,它会丢弃所有写入其中的数据,但报告写入操作已成功。 Null device 是一个设备文件,它会丢弃所有写入其中的数据,但报告写入操作已成功。此设备在 Unix 和类 Unix 系统上称为 /dev/null。null 设备通常用于处理进程不需要的输出流,或作为输入流的方便空文件。 ✖ 11 Oregano 牛至事件 来自 Sarah Groves Hobart

据说牛至是指一个事件,其中一个与 BSD 相关的原始人员因携带一袋被认为是违禁品的物品越过加拿大/美国边境而受到骚扰,结果证明是牛至。 ✖ 36 Overflows Buffer overflows 这可能有点牵强,但考虑到缓冲区溢出在 UNIX 历史中是多么普遍,这种图像可能是故意的。从 shell 溢出的液体可能是对缓冲区溢出的视觉参考。

当程序将比它可以容纳的更多的数据写入缓冲区(固定内存块)时,会发生缓冲区溢出。多余的数据“溢出”到相邻的内存中,通常会覆盖关键信息(例如返回地址),这可能导致崩溃或打开安全漏洞。缓冲区溢出曾经(并且现在仍然是)UNIX 系统上 C 编程中的一种经典利用类型。

有关更多信息,请参见 Buffer overflow – Wikipedia。 ✖ 3 Pipes 连接 cmd 输出到 cmd 输入以创建复杂的 pipelines Pipes 是 Unix 中的一项基本功能,使您可以将简单的实用程序组合成更强大的工作流程。通过将数据从一个命令的输出传递到另一个命令的输入,管道使您可以直接在命令行快速创建灵活、高效且可维护的解决方案。它们在 shell 中用竖线字符 (|) 表示。 ✖ 28 pwd 一个用于确定您在文件系统中的位置的 cmd pwd 是一个简单的命令,用于显示您在文件系统中的当前位置。pwd 在视觉上呈现在一个框中是巧合吗?也许。但也许这是一个视觉线索,表明 pwd 是一个小型的自包含工具,就像许多经典的 UNIX 命令一样。 ✖ 25 root UNIX 系统上的管理员帐户 root 用户通常是在 UNIX 系统上授予管理员或超级用户帐户的名称。在类 Unix 系统中,root 是用户的常规名称,该用户对所有模式(例如,单用户或多用户)下的所有文件和程序具有所有权利或权限。root 用户可以执行普通用户无法执行的许多操作,例如更改文件的所有权以及绑定到编号低于 1024 的网络端口。 ✖ 14 Shell script 一种进程创建自身副本的操作 shell script 是一种设计为由 Unix shell 运行的计算机程序。该术语也更广泛地用于表示运行操作系统 shell 的自动模式。 ✖ 35 Shell's symbols shell 的符号

巫师斗篷上的 Shell 符号

巫师的斗篷上装饰着一些符号,这些符号代表 UNIX shell 中使用的一些最重要的特殊字符。这些符号是 UNIX 力量的“符文”,允许用户组合命令、重定向输入和输出,并精确地控制进程。掌握这些符号是将普通用户转变为“UNIX 巫师”的一部分。

% – 作业控制

用于引用 shell 中的后台作业

$ – 变量扩展和 Shell 提示符

表示变量和参数替换

也经常作为 shell 提示符出现在普通用户

> – 输出重定向

标准输出重定向到文件

< – 输入重定向

文件重定向标准输入

* – 通配符 (Glob)

匹配文件名中的任意数量的字符

! – 历史记录扩展

扩展为先前执行的命令

[ ] – 测试/条件表达式

用于 shell 条件if 语句

if [ -f file.txt ]; then
  echo "File exists!"
fi

✖ 39 skull 重定向到 stdout/stdin 连接到 shell 的头骨可能象征着 /dev/null,这是一种特殊的 UNIX 设备,它会丢弃所有写入其中的数据。在 UNIX 中,将输出重定向到 /dev/null 会有效地将其发送到“黑洞”,在那里它永远丢失。输出重定向是更广泛的 standard stream UNIX 概念的一部分,该概念允许将一个进程的输出重定向到另一个进程的输入。

另一种解释是,活栓让人联想到滴水嘴兽,可能引用了 UNIX daemon 进程。

参见 (/dev/null) 标记。 ✖ 23 spawn 一种创建新子进程的操作 Spawning 是加载和执行新子进程的过程。密切相关的是 forkexec 的概念,它们可以通过 fork 一个进程、让父进程终止并将子进程 exec 到所需的 spawn 进程中来模拟 spawning。

POSIX 允许 spawning 本身的概念,这可以比 forkexec 更有效。

spawn 隐喻早在 1977 年就在 VMS 操作系统中使用。 ✖ 31 spells 一个检查拼写的命令 spell 是 Unix 和其他类 Unix 操作系统的标准英语拼写检查器。

原始版本由 Stephen C. Johnson 为贝尔实验室的 Version 6 UNIX 编写,于 1976 年编写。 ✖ 9 su 用于切换身份的命令 su 命令(“substitute user”或“switch user”的缩写)用于在其他用户帐户下启动 shell。通常,su 最常见的用途之一是切换到超级用户(root)帐户以获得管理权限。 ✖ 12 tar 一种用于将多个文件收集到单个存档文件中的软件实用程序。 Tar 是一种软件工具,用于将多个文件收集到单个存档文件中,通常称为 tarball。该名称来源于 “tape archive”,因为它最初是为将数据写入没有自己的文件系统的顺序 I/O 设备而开发的,例如使用磁带的设备。

该命令行实用程序于 1979 年 1 月在 Version 7 Unix 中首次引入,取代了 tp 程序(后者又取代了 tap)。 ✖ 37 tee 管道中的 T 形接头,可能指的是 tee 命令。 管道的 T 形也可能引用 tee 命令,这是 UNIX 中的经典实用程序。tee 命令用于拆分命令的输出,将其同时发送到文件和管道中的下一个命令。 ✖ 6 The c programming language 在 Unix 创建中的关键编程语言 C 与 Unix 操作系统的历史和发展密切相关。C 由 Dennis M. Ritchie 于 20 世纪 70 年代初在贝尔实验室创建,用于将 Unix 从低级汇编重写为更高级的语言。这种转变使 Unix 在不同的硬件平台上更具可移植性,从而推动了其在学术界和工业界的迅速采用。随着时间的推移,C 发展成为历史上最具影响力和广泛使用的编程语言之一。 ✖ 34 traps 发送到正在运行的程序的进程间消息 Traps,或 signals,从内核发送到进程,通知进程发生了一个事件。常见的信号是中断、终止或杀死,一些信号处理对于进程间通信和协调很有用。 ✖ 17 troff 一个用于格式化文档处理系统文档的程序。 Troff 是贝尔实验室为 Unix 操作系统开发的文档处理系统的主要组件。Troff 代表 "typesetter roff",其中 roff 是一种排版标记语言。troff 的典型发行版包括许多文档样式的宏,包括 Unix man 页面。

Troff 由贝尔实验室在 20 世纪 70 年代开发,Joseph Ossanna 通过修改 nroff 以支持多种字体和比例间距来创建 troff。 ✖ 16 usr 一个包含用户 home 目录的目录。 “用户文件系统” (/usr ) 是一个包含用户 home 目录的目录,包括可执行文件、库和共享资源。

线程的线轴也可能是对 Unix 线程 的引用,线程是轻量级进程。进程 是正在运行的程序的实例,具有自己独立的内存空间。另一方面,线程进程中更轻量级的执行单元。线程 共享与进程相同的内存空间,但 可以独立运行,从而实现:

这使得线程成为 Unix 系统中 并发编程 的强大工具。 ✖ 20 uucp 一个用于文件复制请求的 Unix 程序。 uucp 是 Unix-to-Unix Copy 程序套件中的程序之一。

UUCP 最初由 Mike Lesk 在 AT&T 贝尔实验室编写。 ✖ 27 whoami 一个提供当前用户的有效用户名的命令 UNIX 系统上的用户可能想要切换到其他帐户,从而允许切换角色、升级或降级权限,或者可能跨网络登录到多台机器。whoami 是一个命令,告诉调用者他们以哪个用户身份登录。

最早的版本是在 2.9 BSD 中创建的。

这是 UNIX Magic 海报,最初由 Gary Overacre 在 20 世纪 80 年代中期创作,并由 UniTech Software 出版。后来在 USENIX Conference 上展出,反映了它在 UNIX 文化中的持久影响力。如果您想贡献力量,请访问 repo

UNIX 从一开始就对我的职业生涯产生了重大影响。我第一次接触 UNIX 是在大学期间,当时我必须在连接到 HP-UX 主服务器的终端上编写我的大部分一年级编程作业。我立即被 UNIX 提供的简单性和强大功能所吸引——尤其是与我以前使用过的操作系统(例如 DOS 和 Windows)相比。

那次经历改变了我对计算机的看法。从那时起,我就再也没有回头——UNIX 一直是我在计算旅程中的忠实伴侣。这个项目是我谦卑的演绎——对 UNIX 及其对我的持久影响的庆祝。

          $ ./enjoy
          -drio
        

UNIX Magic 海报注解

准备好见证一些 UNIX 魔法吧... 🪄 github 关于 Unix Magic Poster 1 15 18 7 40 21 19 32 8 26 33 38 13 24 5 30 22 2 29 4 10 11 36 3 28 25 14 35 39 23 31 9 12 37 6 34 17 16 20 27 ✖ 1 Shell 控制系统的入口 在 UNIX Magic 海报中,Shell 占据着显著的位置,这反映了它在 UNIX 系统中的核心作用。Shell 过去(现在仍然是)是与内核交互的主要界面,是 UNIX 用户的工作台。它是一个非常强大的工具,允许用户启动和协调进程、执行复杂的计算,并直接与操作系统交互。

Shell 不仅仅是一个界面,它也是一种完整的编程语言。用户可以编写脚本来自动化任务、控制进程,并构建管道来有效地处理数据。这使得 Shell 既具有交互性又具有可编程性——这与当时的其他操作系统截然不同。

虽然现在存在许多 Shell,但最初的是 Bourne shell (sh),它为之后的一切奠定了基础。

最后,我想强调的是,Shell 是通往 UNIX 力量的入口。它是学习 UNIX 时的第一个接触点,掌握它就能释放系统的全部潜力。我认为海报完美地捕捉到了这一点——Shell 位于巫师魔法的核心,因为它控制系统的入口。 🔝 2 man 用于获取不同 Unix 组件(包括其他 cmds)的详细文档的命令。 man(1) 命令(manual 的缩写)用于显示命令、系统调用、配置文件和系统其他方面的在线参考手册 (man pages)。man 提供了有关如何使用命令的详细文档,包括其选项、用法示例、相关文件和其他相关详细信息。

对于窗口中 man 的解释,存在一些歧义。这个人拿着一把大镰刀,这可能代表 reaping a process。在类似 Unix 的系统中,进程 reaping 是指父进程读取生成的子进程的退出状态,从而允许将子进程从进程表中删除。

其他人则认为,这个人可能代表 hacker,该术语过去表示熟练或聪明的程序员。 🔝 3 Pipes 连接 cmd 输出到 cmd 输入以创建复杂的 pipelines Pipes 是 Unix 中的一项基本功能,使您可以将简单的实用程序组合成更强大的工作流程。通过将数据从一个命令的输出传递到另一个命令的输入,管道使您可以直接在命令行快速创建灵活、高效且可维护的解决方案。它们在 shell 中用竖线字符 (|) 表示。 🔝 4 Memory leaks 计算机程序对内存的不当管理 当计算机程序不正确地管理内存分配时,就会发生内存泄漏,从而无法释放不再需要的内存。随着时间的推移,这些未释放的分配会累积,从而减少了其他进程可用的内存量,并可能导致速度减慢或崩溃。 🔝 5 Legendary figures Unix 历史中的传奇人物 在 Unix 历史的背景下,这三组首字母代表了 Unix 创建和发展中的传奇人物: dmr:Dennis M. Ritchie,Unix 的共同创建者和 C 编程语言的创建者。 kt:Ken Thompson(在历史上的 Unix 参考中通常简称为“ken”),与 Ritchie 一起成为 Unix 的共同创建者。 bwk:Brian W. Kernighan,多本有影响力的 Unix 程序和书籍的合著者(包括《The C Programming Language》和《The UNIX Programming Environment》)。 🔝 6 The c programming language 在 Unix 创建中的关键编程语言 C 与 Unix 操作系统的历史和发展密切相关。C 由 Dennis M. Ritchie 于 20 世纪 70 年代初在贝尔实验室创建,用于将 Unix 从低级汇编重写为更高级的语言。这种转变使 Unix 在不同的硬件平台上更具可移植性,从而推动了其在学术界和工业界的迅速采用。随着时间的推移,C 发展成为历史上最具影响力和广泛使用的编程语言之一。 🔝 7 Backpressure 告诉生产者停止发送数据,因为消费者无法跟上 当两个进程通过管道进行通信时,发送数据的进程是生产者,接收数据的进程是消费者。如果生产者发送数据的速度快于消费者处理数据的速度,操作系统会维护一个缓冲区来临时存储数据。但是,如果缓冲区已满,操作系统将阻止生产者,直到有可用空间为止。

这是艺术家的意图吗?你来决定——管道中的阀门手柄是对 UNIX 反压的一个巧妙参考,还是有点牵强? 🔝 8 Daemons 在后台运行并监督系统或为其他进程提供功能的服务进程 Daemons 是在后台运行的程序,通常在系统启动时启动。它们通过执行某些任务来响应网络请求、硬件活动或其他程序。诸如 cron 之类的 daemons 也可以在计划的时间执行定义的任务。

这个术语是由麻省理工学院 Project MAC 的程序员创造的。它受到麦克斯韦妖和希腊神话的启发,作为在后台工作的超自然生物的隐喻。 🔝 9 su 用于切换身份的命令 su 命令(“substitute user”或“switch user”的缩写)用于在其他用户帐户下启动 shell。通常,su 最常见的用途之一是切换到超级用户(root)帐户以获得管理权限。 🔝 10 null null 设备是一个设备文件,它会丢弃所有写入其中的数据,但报告写入操作已成功。 Null device 是一个设备文件,它会丢弃所有写入其中的数据,但报告写入操作已成功。此设备在 Unix 和类 Unix 系统上称为 /dev/null。null 设备通常用于处理进程不需要的输出流,或作为输入流的方便空文件。 🔝 11 Oregano 牛至事件 来自 Sarah Groves Hobart

据说牛至是指一个事件,其中一个与 BSD 相关的原始人员因携带一袋被认为是违禁品的物品越过加拿大/美国边境而受到骚扰,结果证明是牛至。 🔝 12 tar 一种用于将多个文件收集到单个存档文件中的软件实用程序。 Tar 是一种软件工具,用于将多个文件收集到单个存档文件中,通常称为 tarball。该名称来源于 “tape archive”,因为它最初是为将数据写入没有自己的文件系统的顺序 I/O 设备而开发的,例如使用磁带的设备。

该命令行实用程序于 1979 年 1 月在 Version 7 Unix 中首次引入,取代了 tp 程序(后者又取代了 tap)。 🔝 13 fork 一种进程创建自身副本的操作 在多任务操作系统中,进程需要一种创建