GNU 核心實用程序簡介
許多 Linux 系統管理員最基本和常用的工具主要包括在兩套實用程序中:GNU 核心實用程序(coreutils)和 util-linux。它們的基本功能允許系統管理員執行許多管理 Linux 系統的任務,包括管理和操作文本文件、目錄、數據流、存儲介質、進程式控制制、文件系統等等。
這些工具是不可缺少的,因為沒有它們,就不可能在 Unix 或 Linux 計算機上完成任何有用的工作。鑒於它們的重要性,讓我們來研究一下它們。
GNU coreutils
要了解 GNU 核心實用程序的起源,我們需要乘坐時光機進行一次短暫的旅行,回到貝爾實驗室的 Unix 早期。編寫 Unix 是為了讓 Ken Thompson、Dennis Ritchie、Doug McIlroy 和 Joe Ossanna 可以繼續他們在大型多任務和多用戶計算機項目 Multics 上的工作:開發一個叫做《太空旅行》遊戲的小東西。正如今天一樣,推動計算技術發展的似乎總是遊戲玩家。這個新的操作系統比 Multics(LCTT 譯註:multi- 字頭的意思是多數的)的局限性更大,因為一次只能有兩個用戶登錄,所以被稱為 Unics(LCTT 譯註:uni- 字頭的意思是單獨的)。後來這個名字被改成了 Unix。
隨著時間的推移,Unix 取得了如此巨大的成功,開始貝爾實驗室基本上是將其贈送給大學,後來送給公司也只是收取介質和運輸的費用。在那個年代,系統級的軟體是在組織和程序員之間共享的,因為在系統管理這個層面,他們努力實現的是共同的目標。
最終,AT&T 公司的老闆們決定,他們應該在 Unix 上賺錢,並開始使用限制更多的、昂貴的許可證。這發生在軟體變得更加專有、受限和封閉的時期,從那時起,與其他用戶和組織共享軟體變得不可能。
有些人不喜歡這種情況,於是用自由軟體來對抗。Richard M. Stallman(RMS),他帶領著一群「反叛者」試圖編寫一個開放的、自由的可用操作系統,他們稱之為 GNU 操作系統。這群人創建了 GNU 實用程序,但並沒有產生一個可行的內核。
當 Linus Torvalds 開始編寫和編譯 Linux 內核時,他需要一套非常基本的系統實用程序來開始執行一些稍微有用的工作。內核並不提供命令或任何類型的命令 shell,比如 Bash,它本身是沒有任何用處的,因此,Linus 使用了免費提供的 GNU 核心實用程序,並為 Linux 重新編譯了它們。這讓他擁有了一個完整的、即便是相當基本的操作系統。
你可以通過在終端命令行中輸入命令 info coreutils
來了解 GNU 核心實用程序的全部內容。下面的核心實用程序列表就是這個信息頁面的一部分。這些實用程序按功能進行了分組,以方便查找;在終端中,選擇你想了解更多信息的組,然後按回車鍵。
* 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 核心實用程序中的命令可以在 util-linux 中找到。
util-linux
util-linix 實用程序包中包含了許多系統管理員常用的其它命令。這些實用程序是由 Linux 內核組織發布的,這 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
這些實用程序中的一些已經被淘汰了,很可能在未來的某個時候會從集合中被踢出去。你應該看看維基百科的 util-linux 頁面來了解其中許多實用程序的信息,而 man 頁面也提供了關於這些命令的詳細信息。
總結
這兩個 Linux 實用程序的集合,GNU 核心實用程序和 util-linux,共同提供了管理 Linux 系統所需的基本實用程序。在研究這篇文章的過程中,我發現了幾個有趣的實用程序,這些實用程序是我從不知道的。這些命令中的很多都是很少需要的,但當你需要的時候,它們是不可缺少的。
在這兩個集合里,有 200 多個 Linux 實用工具。雖然 Linux 的命令還有很多,但這些都是管理一個典型的 Linux 主機的基本功能所需要的。
via: https://opensource.com/article/18/4/gnu-core-utilities
作者: David Both 選題者: lujun9972 譯者: wxy 校對: wxy
本文轉載來自 Linux 中國: https://github.com/Linux-CN/archive