GNU 核心實用程序簡介 | Linux 中國

2021-02-14 Linux中國

許多 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      settermblockdev        fstrim          mkswap          sfdiskcal             getopt          more            su cfdisk          hexdump         mount           suloginchcpu           hwclock         mountpoint      swaplabelchfn            ionice          namei           swapoff chrt            ipcmk           newgrp          swapon chsh            ipcrm           nologin         switch_rootcolcrt          ipcs            nsenter         tailfcol             isosize         partx           tasksetcolrm           kill            pg              tunelpcolumn          last            pivot_root      ulctrlaltdel      ldattach        prlimit         umount ddpart          line            raw             unsharedelpart         logger          readprofile     utmpdumpdmesg           login           rename          uuiddeject           look            renice          uuidgenfallocate       losetup         reset           vipwfdformat        lsblk           resizepart      wall fdisk           lscpu           rev             wdctlfindfs          lslocks         RTC Alarm       whereis findmnt         lslogins        runuser         wipefsflock           mcookie         script          write fsck            mesg            scriptreplay    zramctlfsck.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

本文由 LCTT 原創編譯,Linux中國 榮譽推出

相關焦點

  • Linux DNS 查詢剖析(第一部分) | Linux 中國
    不過,有一個標準 C 庫函數調用 getaddrinfo[9],不少程序使用了該調用;但不是所有程序或應用都使用該調用!讓我們看一下兩個簡單的標準程序:ping 和 host:root@linuxdns1:~# ping -c1 bbc.co.uk | head -1PING bbc.co.uk (151.101.192.81) 56(84) bytes of data.
  • 一次搞定 Arm Linux 交叉編譯
    程序的編輯——》編譯——》運行,整個過程都是在一臺 X86 電腦上。當我們開始接觸嵌入式開發後,事情變的不一樣了,你在電腦上寫程序,在電腦上編譯出可執行文件,最後這個可執行文件需要下載到你的開發板上運行。程序最後運行的環境變了,比如你的開發板是基於 Arm 的——程序在 X86 上編輯,編譯,最終運行在另一個和 X86 完全不同的架構的 Arm 晶片上。
  • Android編譯本地C++程序方法
    在Android平臺上程序以Java形式運行在Dalvik模擬器上,但Android作為一個Linux內核系統完全可以執行Navtive C++程序,主要的步驟如下:本文引用地址:http://www.eepw.com.cn
  • Linux系統爭議——是Linux還是GNU/Linux?
    有了這些自由,軟體用戶,無論是個人還是集體,都可以完全掌控所運行的軟體,並決定這些程序如何為自己服務。如果一個軟體令用戶失去了這種控制權,那麼則稱它就是「非自由」的,或「專有」的程序。如果一個軟體被稱為自由軟體,根據https://www.gnu.org/philosophy/free-sw.en.html 的定義, 認為它需要四項基本特徵(自由度):自由度0:無論用戶出於何種目的,必須可以按照用戶意願,自由地運行該軟體。自由度1:用戶可以自由地學習並修改該軟體,以此來幫助用戶完成用戶自己的目的。
  • Linux下diff的操作詳解
    speed-large-files:比較大文件時,可加快速度;-l<字符或字符串>或--ignore-matching-lines<字符或字符串>:若兩個文件在某幾行有所不同,而這幾行同時都包含了選項中指定的字符或字符串,則不顯示這兩個文件的差異;-i或--ignore-case:不檢查大小寫的不同;-l或——paginate:將結果交由pr程序來分頁
  • C程序編程四步走
    本文使用的測試代碼是經典入門程序 "Hello World!"。測試環境為探究預處理,編譯,彙編和連結的功能,我們在 Ubuntu 系統中使用 Gcc 編譯器( version=4.8.4 ),用簡單的也是最經典的入門程序 "Hello World!" 作為測試代碼。
  • GNU系統概覽
    組 成該系統的基本組成包括GNU編譯器套裝(GCC)、GNU的C庫(glibc)、以及GNU核心工具組(coreutils)[14],另外也是GNU調試器(GDB)、GNU二進位實用程序(binutils)[15]的GNU Cash shell中[10] 和GNOME桌面環境。
  • Linux如何調試內存洩漏
    ===============================103==ERROR: LeakSanitizer: detected memory leaksDirect leak of 7 byte(s) in 1 object(s) allocated from: #0 0x7f95b231eb40 in __interceptor_malloc (/usr/lib/x86_64-linux-gnu
  • 嵌入式ARM-Linux平臺上的編譯、配置和運行使用
    /configure配置編譯環境;執行make進行編譯export ARCH=armexport CROSS_COMPILE=arm-linux-gnueabi-.執行make進行編譯,完成後執行make install,編譯好的openssl庫和頭文件等被安裝在目錄/usr/local/ssl下export ARCH=armexport CROSS_COMPILE=arm-linux-gnueabi-.
  • GNU Smalltalk 3.1 版本發布
    更多詳細內容:http://smalltalk.gnu.org/news/gnu-smalltalk-3-1 Smalltalk簡介 Smalltalk 被公認為歷史上第二個面向對象的程序設計語言和第一個真正的集成開發環境
  • linux pwn入門學習到放棄
    ASLR在linux中使用此技術後,殺死某程序後重新開啟,地址就會會改變。/linux_x64_test1測試遠程程序,提權成功。/linux_x64_test2 0x7fa84dc3d390Hello, WorldROP簡介ROP的全稱為Return-oriented programming(返回導向編程),是一種高級的內存攻擊技術可以用來繞過現代作業系統的各種通用防禦(比如內存不可執行DEP和代碼籤名等)。
  • 在Linux右鍵菜單裡添加文件對比快捷方式
    如要獲取Beyond Compare的最新版本,可直接在官網下載最新版本的linux版安裝包,也可在軟體菜單欄【幫助】—【檢查更新】進行軟體版本升級檢查更新2、接下來,在軟體中設置菜單環境啟動Beyond Compare並從菜單欄打開【工具】
  • 用Visual Studio調試Linux程序
    當然如果你說VS2015及以上版本自帶的linux調試插件,那就算了。這些自帶的插件調試一個有簡單的main函數程序還湊合,稍微複雜點的程序,根本無法編譯調試。而本文介紹的主角是VS的另外一款插件Visual GDB,讓我們歡迎主角登場,下面是正文。
  • 日常實用Linux/macOS小技巧(1)
    歡迎訂閱微信公眾號:『氣象學家』閱讀建議比較實用的一些Linux/macOS技巧整理,助於解決日常的一些小問題。後續持續更新!內容目錄0.前言介紹1.wget反爬蟲機器人設置2.安裝和使用screen(普通用戶)安裝screen使用常用快捷鍵3.ssh遠程登錄如何避免頻繁斷開錯誤如下解決辦法圖片源自:https://itsfoss.com/mac-linux-difference/0.前言介紹日常使用技巧整理,主要針對於
  • 基於嵌入式Linux的MapInfo格式地圖顯示
    在硬體環境上,使用一塊AT91rm9200為核心的開發板,32M SDRAM,16M FLASH, LCD顯示,選取嵌入式Linux作為作業系統,為了實現地圖顯示的功能,首先在宿主機上建立交叉編譯環境,移植MiniGUI到開發平臺上,使平臺支持圖形顯示,接著根據MapInfo格式的一系列文件的內部結構和相互關係編程分析,得到基礎圖元數據和類型