GNU Core Utilities 简介

Linux 系统管理员需要做的大部分事情都可以在 GNU coreutils 或 util-linux 中找到。
288 位读者喜欢这篇文章。
Introduction to the GNU Core Utilities

Bella67 via Pixabay. CC0.

两组实用程序——GNU Core Utilitiesutil-linux——构成了 Linux 系统管理员最基本和最常用的许多工具。它们的基本功能使系统管理员能够执行管理 Linux 计算机所需的许多任务,包括文本文件、目录、数据流、存储介质、进程控制、文件系统等等的管理和操作。

这些工具是不可或缺的,因为没有它们,就不可能在 Unix 或 Linux 计算机上完成任何有用的工作。鉴于它们的重要性,让我们来研究一下它们。

GNU coreutils

要了解 GNU Core Utilities 的起源,我们需要乘坐时光机回到贝尔实验室 Unix 的早期。Unix 的编写是为了让 Ken Thompson、Dennis Ritchie、Doug McIlroy 和 Joe Ossanna 能够继续他们在从事一个名为 Multics 的大型多任务和多用户计算机项目时开始的工作。那件小事是一个名为 Space Travel 的游戏。正如今天仍然如此,似乎总是游戏玩家推动着计算技术的发展。这个新的操作系统比 Multics 更加有限,因为一次只能有两个用户登录,所以它被称为 Unics。这个名称后来改为 Unix。

随着时间的推移,Unix 最终取得了巨大的成功,以至于贝尔实验室开始基本上免费将其赠送给大学,后来又以媒体和运输成本的价格赠送给公司。在那些日子里,系统级软件在组织和程序员之间共享,因为他们努力在系统管理的背景下实现共同目标。

最终,AT&T 的 PHB 决定他们应该从 Unix 中赚钱,并开始使用更严格且更昂贵的许可。这发生在软件变得更加专有、受限和封闭的时期。与其他用户和组织共享软件变得不可能。

有些人不喜欢这样,并用自由软件与之抗争。Richard M. Stallman,又名 RMS,领导了一群试图编写一个开放且免费可用的操作系统的叛逆者,他们称之为 GNU 操作系统。这个小组创建了 GNU Utilities,但没有生成可行的内核。

当 Linus Torvalds 第一次编写和编译 Linux 内核时,他需要一套非常基本的系统实用程序才能开始执行稍微有用的工作。内核不提供命令或任何类型的命令 shell,例如 Bash。它本身是无用的。因此,Linus 使用了免费提供的 GNU Core Utilities,并为 Linux 重新编译了它们。这给了他一个完整的,如果相当基本的操作系統。

您可以通过在终端命令行中输入命令 info coreutils 来了解构成 GNU Utilities 的所有单独程序。以下核心实用程序列表是该信息页面的一部分。这些实用程序按功能分组,以便更容易找到特定的实用程序;在终端中,突出显示您想要更多信息的组,然后按 Enter 键。

* Output of entire files::       cat tac nl od base32 base64
* Formatting file contents::     fmt pr fold
* Output of parts of files::     head tail split csplit
* Summarizing files::            wc sum cksum b2sum md5sum sha1sum sha2
* Operating on sorted files::    sort shuf uniq comm ptx tsort
* Operating on fields::          cut paste join
* Operating on characters::      tr expand unexpand
* Directory listing::            ls dir vdir dircolors
* Basic operations::             cp dd install mv rm shred
* Special file types::           mkdir rmdir unlink mkfifo mknod ln link readlink
* Changing file attributes::     chgrp chmod chown touch
* Disk usage::                   df du stat sync truncate
* Printing text::                echo printf yes
* Conditions::                   false true test expr
* Redirection::                  tee
* File name manipulation::       dirname basename pathchk mktemp realpath
* Working context::              pwd stty printenv tty
* User information::             id logname whoami groups users who
* System context::               date arch nproc uname hostname hostid uptime
* SELinux context::              chcon runcon
* Modified command invocation::  chroot env nice nohup stdbuf timeout
* Process control::              kill
* Delaying::                     sleep
* Numeric operations::           factor numfmt seq

此列表上有 102 个实用程序。它涵盖了在 Unix 或 Linux 主机上执行基本任务所需的许多功能。但是,许多基本实用程序都缺失了。例如,mountumount 命令不在列表中。那些以及许多不在 GNU coreutils 中的其他命令可以在 util-linux 集合中找到。

util-linux

util-linux 实用程序包包含系统管理员使用的许多其他常用命令。这些实用程序由 Linux 内核组织分发,实际上这 107 个命令中的每一个最初都是三个独立的集合——fileutilsshellutilstextutils——它们在 2003 年被合并到单个包 util-linux 中。

agetty          fsck.minix      mkfs.bfs        setpriv 
blkdiscard      fsfreeze        mkfs.cramfs     setsid 
blkid           fstab           mkfs.minix      setterm 
blockdev        fstrim          mkswap          sfdisk 
cal             getopt          more            su 
cfdisk          hexdump         mount           sulogin 
chcpu           hwclock         mountpoint      swaplabel 
chfn            ionice          namei           swapoff 
chrt            ipcmk           newgrp          swapon 
chsh            ipcrm           nologin         switch_root 
colcrt          ipcs            nsenter         tailf 
col             isosize         partx           taskset 
colrm           kill            pg              tunelp 
column          last            pivot_root      ul 
ctrlaltdel      ldattach        prlimit         umount 
ddpart          line            raw             unshare 
delpart         logger          readprofile     utmpdump 
dmesg           login           rename          uuidd 
eject           look            renice          uuidgen 
fallocate       losetup         reset           vipw 
fdformat        lsblk           resizepart      wall 
fdisk           lscpu           rev             wdctl 
findfs          lslocks         RTC Alarm       whereis 
findmnt         lslogins        runuser         wipefs 
flock           mcookie         script          write 
fsck            mesg            scriptreplay    zramctl 
fsck.cramfs     mkfs            setarch

其中一些实用程序已被弃用,并且将来可能会从集合中消失。您应该查看 Wikipedia 的 util-linux 页面 以获取有关许多实用程序的信息,并且手册页也提供了有关命令的详细信息。

总结

这两个 Linux 实用程序集合,GNU Core Utilities 和 util-linux,共同提供了管理 Linux 系统所需的基本实用程序。在研究这篇文章时,我发现了一些我从未听说过的有趣的实用程序。许多这些命令很少需要,但是当您需要它们时,它们是不可或缺的。

在这两个集合之间,有超过 200 个 Linux 实用程序。虽然 Linux 有更多命令,但这些是管理典型 Linux 主机的基本功能所需的命令。

David Both
David Both 是一位开源软件和 GNU/Linux 倡导者、培训师、作家和演讲者。自 1996 年以来,他一直从事 Linux 和开源软件工作,自 1969 年以来一直从事计算机工作。他是“系统管理员的 Linux 哲学”的坚定支持者和传播者。

6 条评论

当我读到这个故事时,我总是想知道,Thompson 和 Ritchie 应该做什么,以至于他们有这么多空闲时间(和影响力)来征用当时相当昂贵的设备,以便实施和玩一些电脑游戏?那真是美好的日子。

文章写得好,也很有帮助。也请写一篇关于您在 IT 行业生活的文章。“关于我”告诉您在 IT 行业工作了 40 年,我认为您可能有很多有趣的冒险和经历可以讲述。

感谢您的评论。我已经为 Opensource.com 写了那篇文章。URL 如下。

https://open-source.net.cn/business/15/1/how-i-landed-job-open-source

我的大部分写作都关于我的经历,所以如果您阅读我在本网站上发布的文章,您应该对我的过去 20 年 - 我从事 Linux 的时间和之前的一些时间有一个很好的了解。我在计算机行业有过一段有趣的职业生涯,而且非常有趣。

回复 作者 Châu (未验证)

“RTC 闹钟”部分清楚地表明您是从维基百科复制粘贴的;)

感谢您提供 GNU Coreutils 指南!

两个建议

* 包名称 “util-linux” 有一次拼写错误(“util-linix”)。

* coreutils 通常也安装在 macOS 上,但它们的名称已更改(以避免与许多现有的 OS 命令发生名称冲突);GNU Coreutils 都以 “g” 开头命名,因此为 “gls”、“gnumfmt” 等。

感谢您的评论。我已经修复了拼写错误。另外,感谢您提供有关 MAC 上核心实用程序的信息。

回复 作者 Ben Finney (未验证)

Creative Commons License本作品根据 Creative Commons Attribution-Share Alike 4.0 International License 许可。
© . All rights reserved.