两组实用程序—— GNU Core Utilities 和 util-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 主机上执行基本任务所需的许多功能。但是,许多基本实用程序都缺失了。例如,mount
和 umount
命令不在列表中。那些以及 GNU coreutils 中没有的许多其他命令都可以在 util-linux
集合中找到。
util-linux
util-linux
实用程序包包含系统管理员使用的许多其他常用命令。这些实用程序由 Linux Kernel Organization 分发,并且这 107 个命令中的几乎每一个最初都是三个独立的集合——fileutils
、shellutils
和 textutils
——它们在 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
页面 以获取有关许多实用程序的信息,并且 man 手册也提供了有关命令的详细信息。
总结
GNU Core Utilities 和 util-linux
这两个 Linux 实用程序集合共同提供了管理 Linux 系统所需的基本实用程序。在研究这篇文章时,我发现了一些我从未听说过的有趣的实用程序。这些命令中的许多命令很少需要,但是当您需要它们时,它们是不可或缺的。
在这两个集合之间,有超过 200 个 Linux 实用程序。虽然 Linux 有更多的命令,但这些是管理典型 Linux 主机的基本功能所需的命令。
6 条评论