核心工具

出自 Arch Linux 中文维基

核心工具GNU/Linux 系統基本、基礎的工具。本文提供對它們不完整的概覽、鏈接文檔並描述有用的替代品。本文的範圍包括,但不限於 GNU coreutils。大多數核心工具都是傳統的 Unix 工具,它們中的許多已由 POSIX 標準化,但已進一步發展,從而提供更多功能。

大多數命令行界面的文檔都在 man page 中,來自 GNU 項目 的工具的文檔主要在 Info 手冊 中,一些 shell 為內置命令提供了 help 命令。另外,大多數命令在使用 --help 標誌運行時會顯示自身的使用說明。

基礎[編輯 | 編輯原始碼]

下表列出了一些 Arch Linux 用戶應當熟悉的重要的工具。另請參見 intro(1)

工具 描述 文檔 替代品
shell 內置 cd 變更目錄 cd(1p) #cd 替代品
GNU coreutils ls 列出目錄 ls(1), info tree, #ls 替代品
cat 將文件拼接到 stdout cat(1), info tac(1), #cat alternatives
mkdir 創建目錄 mkdir(1), info
rmdir 刪除空目錄 rmdir(1), info
rm 刪除文件或目錄 rm(1), info shred unlink(1)
cp 複製文件或目錄 cp(1), info #cp 替代品
mv 移動文件或目錄 mv(1), info
ln 創建硬鏈接或符號鏈接 ln(1), info sln(8) (soname 修復)
chown 改變文件所有者和組 chown(1), info chgrp(1)
chmod 改變文件權限 chmod(1), info
dd 轉換並複製文件 dd(1), info #dd 替代品
df 報告文件系統磁盤空間使用情況 df(1), info #df 替代品
du 估算文件和文件夾占用的空間 du(1), info #du 替代品
GNU tar tar tar 歸檔程序 tar(1), info 歸檔與壓縮
GNU less less 終端分頁程序 less(1) 終端翻頁器
GNU findutils find 搜索文件或目錄 find(1), info, GregsWiki #find 替代品
GNU diffutils diff 逐行比對文件 diff(1), info #diff 替代品
GNU grep grep 打印匹配模式的行 grep(1), info #grep 替代品
GNU sed sed 流編輯器 sed(1), info, one-liners sad
GNU gawk awk 模式掃描和處理語言 gawk(1), info nawk, mawkAUR, goawkAUR
util-linux dmesg print or control the kernel ring buffer dmesg(1) systemd 日誌
lsblk 列出塊設備 lsblk(8)
mount 掛載文件系統 mount(8)
umount 卸載文件系統 umount(8)
su 替換用戶 su(1) sudo, doas
kill 中止進程 kill(1) pkill(1), killall(1)
procps-ng pgrep 根據名稱或屬性查找進程 pgrep(1) pidof(1)
ps 顯示進程信息 ps(1) top(1), 任務管理器
free 顯示已用和可用的內存 free(1)

防止數據損失[編輯 | 編輯原始碼]

rmmvcp 和 shell 重定向無需確認即可刪除或覆蓋文件。rmmvcp 都支持 -i 標誌以在刪除/覆蓋前提醒用戶。一些用戶喜歡通過 alias 默認啟用 -i。依賴這些 shell 選項可能很危險,因為你會習慣於它們,從而在你使用沒有它們的系統或用戶時導致潛在的數據損失。防止數據損失的最好辦法是創建備份

非關鍵[編輯 | 編輯原始碼]

此表格列出了常常很有用的核心工具。

工具 描述 文檔 替代品
shell 內置 alias 定義或顯示別名 alias(1p)
type 打印命令的類型 type(1p) command(1p), whereis(1), which(1)
time 記錄命令執行時間 time(1p)
GNU coreutils tee 讀取 stdin,寫入 stdout 和文件 tee(1), info pee(1)
mktemp 創建臨時文件或目錄 mktemp(1), info
mknod 創建命名管道或設備節點 mknod(1), mkfifo(1), info
truncate 將文件縮小或擴展到指定的大小 truncate(1), info fallocate(1)
basenc 編碼數據並輸出 basenc(1), base64(1), info
cut 打印選中的行 cut(1), info colrm(1), hck, choose
tr 轉換或刪除字符 tr(1), info uconv(1)
od 以 8 進制或其他格式轉儲文件 od(1), info hexdump(1), vim's xxd(1)
sort 給行排序 sort(1), info
uniq 報告或忽略重複的行 uniq(1), info anewer, runiqAUR, huniq-gitAUR
comm 逐行比對兩個有序的文件 comm(1), info zetAUR
head 輸出文件的前一部分 head(1), info
join 將兩個輸入中有相同欄位的行連接起來 join(1), info combine(1) zetAUR
md5sum 根據密碼學計算輸入的哈希值並輸出 sha256sum(1), sha512sum(1), info shasum(1), hashdeep(1), rhash(1)
tail 輸出文件的末尾部分,或者動態跟蹤顯示文件末尾內容 tail(1), info
wc 輸出換行、單詞和字節數 wc(1), info
GNU binutils strings 打印二進制文件中可打印的字符 strings(1), info stringsextAUR
util-linux column 轉化文件為列格式,也可按表格方式美觀地打印 column(1) paste(1), csviewAUR
GNU findutils xargs 從標準輸入組合或按模板構建外部命令並執行 xargs(1) parallel(1) (parallel_alternatives(7))
GNU glibc iconv 轉換字符編碼 iconv(1) recode, uconv(1)
GNU sharutils uudecode 將文件編碼為電子郵件友好的文本格式 uuencode(1), uudecode(1), info uudeview(1)
file file 猜測文件類型 file(1)

moreutils 包提供了 GNU coreutils 中沒有的有用的工具,例如 sponge(1)

替代品[編輯 | 編輯原始碼]

核心工具的替代品由以下包提供:

  • BusyBox — 用於救援系統和嵌入式系統的核心工具。
https://busybox.net || busybox
  • Toybox — 一體化的 Linux 命令行。
https://landley.net/toybox || toyboxAUR
  • uutils — Rust 重構的跨平台的 GNU 核心工具。
https://github.com/uutils/coreutils || uutils-coreutils
  • Heirloom Toolchest — 標準 Unix 工具的傳統實現。
https://heirloom.sourceforge.net || heirloom-shAUR, heirloom-doctoolsAUR
  • 9base — 原版 Plan9 工具在 Unix 的移植。
https://tools.suckless.org/9base || 9base
  • sbase — *nix 核心工具的一個極簡變體。
https://core.suckless.org/sbase || sbase-gitAUR
  • ubase — sbase 工具的一個擴展。
https://core.suckless.org/ubase || ubase-gitAUR

cat 替代品[編輯 | 編輯原始碼]

  • bat — 支持語法高亮和 Git 集成的 cat 克隆。
https://github.com/sharkdp/bat || bat

cd 替代品[編輯 | 編輯原始碼]

  • zoxide — 一個智能化的 cd 命令,可以學習用戶的習慣,只需按幾個鍵即可隨處導航。
https://github.com/ajeetdsouza/zoxide || zoxide
  • autojump — 在命令行中導航到文件的快速方式。
https://github.com/wting/autojump || autojumpAUR

參閱 Bash#輸入路徑自動添加"cd"Zsh#Remembering recent directories

cp 替代品[編輯 | 編輯原始碼]

使用 rsync#作為 cp/mv 的替代 可以斷點續傳、顯示傳輸狀態、跳過已存在的文件並使用校驗和確保目標文件的完整性。

ls 替代品[編輯 | 編輯原始碼]

  • broot — 一種在目錄間瀏覽和導航的新方法。
https://github.com/Canop/broot || broot
  • clifm — 一個像 ls(1) 一樣列出文件的文件管理器,加上了圖標和 RGB 顏色支持。
https://github.com/leo-arch/clifm/wiki/Advanced#files-lister-ls-mode || clifmAUR
  • eza — 另一個 ls 的替代品,具有顏色支持、樹視圖、git 集成和其他功能。基於停止支持的 exa 開發而來。
https://github.com/eza-community/eza || eza
  • lsd — ls 的現代版,具有很多漂亮的顏色和美觀的圖標。
https://github.com/Peltoche/lsd || lsd

find 替代品[編輯 | 編輯原始碼]

  • fd — find 的簡單、快速且易用的替代品。默認忽略隱藏文件和 .gitignore 文件。
https://github.com/sharkdp/fd || fd
  • fuzzy-find — 模糊查找文件。
https://github.com/silentbicycle/ff || ff-gitAUR
  • mlocate — 將 locate 與 updatedb 結合起來的實現。
https://pagure.io/mlocate || mlocate
  • plocate — 一個更快速的 locate 命令。
https://plocate.sesse.net/ || plocate
  • rawhide — 使用 C 語言樣式的表達式查找文件。
https://raf.org/rawhide/ || rawhideAUR

圖形界面的文件搜索工具請參閱 應用程序列表/工具#文件搜索

diff 替代品[編輯 | 編輯原始碼]

diffutils 不提供單詞級別的文本比較,一些其他程序提供了這一功能:

  • git diff 可以加上 --color-words 參數進行單詞級別的比較,使用 --no-index 可以比較 Git 工作樹外的文件。
  • cwdiff — 一個對 GNU wdiff 的包裝,對輸出進行了着色。
https://github.com/junghans/cwdiff || cwdiffAUR
  • git-delta — 一個帶語法高亮功能的分頁器,作用於 git、diff 和 grep 的輸出。
https://dandavison.github.io/delta/ || git-delta
  • dwdiff — diff 程序加上單詞比較功能的前端,支持着色。
https://os.ghalkes.nl/dwdiff.html || dwdiffAUR
  • icdiff — 帶着色的、Python 編寫的 diff 工具。「改進版彩色 diff」用於擴充 diff 的用法。
https://github.com/jeffkaufman/icdiff || icdiffAUR
  • wdiff — GNU diff 加上單詞比較功能的實現,不支持着色。
https://www.gnu.org/software/wdiff/ || wdiff

參閱 應用程序列表/工具#比較,差異,合併

grep 替代品[編輯 | 編輯原始碼]

  • mgrep — 多行 grep。
https://sourceforge.net/projects/multiline-grep/ || mgrepAUR
  • pdfgrep — 在 PDF 文件中搜索文本的工具。
https://pdfgrep.org/ || pdfgrep
  • ripgrep-all — 搜索純文本,包括在 PDF、電子書、Office 文檔、zip、tar.gz 中的文本。
https://github.com/phiresky/ripgrep-all || ripgrep-all

代碼搜索工具[編輯 | 編輯原始碼]

以下 3 個工具旨在在代碼搜索方面替代 grep。它們默認執行遞歸搜索、跳過二進制文件並遵守 .gitignore

  • ack — 基於 Perl 的 grep 替代品,為搜索大量異構的源碼樹而生。
https://beyondgrep.com/ || ack
  • ripgrep (rg) — 結合了 ag 的易用性和 grep 的速度。
https://github.com/BurntSushi/ripgrep || ripgrep
  • The Silver Searcher (ag) — 類似 Ack 的代碼搜索工具,不過更快。
https://github.com/ggreer/the_silver_searcher || the_silver_searcher
  • ugrep (ug) — 超快速的 grep,具備交互式用戶界面、模糊搜索、布爾查詢、十六進制轉儲等功能。
https://github.com/Genivia/ugrep || ugrep

參閱 cscope

交互式過濾器[編輯 | 編輯原始碼]

  • fzf — 通用的命令行模糊查找工具,默認由 find 提供支持。
https://github.com/junegunn/fzf || fzf
  • fzy — 一種簡單快速的文本模糊選擇工具,具有先進的評分算法。
https://github.com/jhawthorn/fzy || fzy
  • peco — 簡單的交互式過濾工具。
https://github.com/peco/peco || peco
  • percol — 為傳統的 UNIX shell 管道概念加上了交互式過濾功能。
https://github.com/mooz/percol || percolAUR
  • skim — 用 Rust 編寫的模糊查找工具,與 fzf 類似。
https://github.com/lotabout/skim || skim

dd 替代品[編輯 | 編輯原始碼]

這篇文章的某些內容需要擴充。

原因: 應該把 ddrescue 加到下面的列表中並進行簡要描述。考慮到名稱相似,最好提及它與 dd_rescue 的差別。 (在 Talk:核心工具 中討論)

參閱 ddddrescue

dd 的替代實現[編輯 | 編輯原始碼]

本小節列舉了 dd 的其他實現,它們的接口和默認行為基本符合 dd(1p) 的 POSIX 規範。

  • ddpt — 由 Linux 內核的 SCSI 子系統維護者對 sg_dd(8) 進行的可移植重寫,具有可選但非常專業的硬件 I/O(SCSI 命令集)支持,還有許多其他功能。
http://sg.danny.cz/sg/ddpt.html || ddptAUR
  • sdd — 可以跨 UNIX 環境使用的 dd 實現,由 Joerg Schilling 開發,可以對複製的數據進行校驗並重新讀取損壞數據。
https://schilytools.sourceforge.net/ || schily-tools-sddAUR
GNU dd 的衍生版[編輯 | 編輯原始碼]

核心工具中的 GNU 實現的 dd 的也符合 POSIX。本小節列出了它的衍生版。

  • dcfldd — GNU dd 的功能增強衍生版,用於取證和安全場景,包括即時哈希、靈活擦除、寫入驗證、同時輸出到多個目標、拆分和管道輸出。
https://dcfldd.sourceforge.net || dcflddAUR
  • dc3dd — GNU dd 的另一個打了補丁的版本,來自美國國防部網絡犯罪中心 (DC3),與 dcfldd 具有相似的目標和功能。
https://sourceforge.net/projects/dc3dd/ || dc3ddAUR

現代化的 dd 仿照版[編輯 | 編輯原始碼]

本小節列舉的 dd 替代方案,在類 JCL 命令行語法和默認行為方面是不符合 POSIX 的。

  • dd_rescue — 功能豐富的現代化 dd 仿照版,適用於日常腳本編寫、磁盤克隆和數據恢復。
http://www.garloff.de/kurt/linux/ddrescue/ || dd_rescue
  • rw — 小型且可移植的 dd 仿照版,具有傳統的命令行參數。
https://sortix.org/rw/ || rwAUR

buffer 的衍生版[編輯 | 編輯原始碼]

本小節列舉了 bufferAUR 的衍生版,buffer 是一個類似於 dd 的通用 I/O 緩衝程序,但具有動態大小的緩衝區。它支持區塊為單位的 I/O,可以用來對 LTO 磁帶進行進/出轉儲,以避免擦鞋 (Shoe Shining) 效應。

  • mbufferbuffer 程序的延續,具有多線程等功能。
https://www.maier-komor.de/mbuffer.html || mbuffer

df 替代品[編輯 | 編輯原始碼]

  • duf — 一個查看磁盤使用情況/剩餘空間的工具。
https://github.com/muesli/duf || duf

du 替代品[編輯 | 編輯原始碼]

  • cdu — du 的包裝,帶有着色和漂亮的直方圖。
http://arsunik.free.fr/prog/cdu.html || cduAUR
  • dust — du 的更直觀版本,用 Rust 編寫。
https://github.com/bootandy/dust || dust
  • ncdu — 基於 ncurses 的簡單磁盤使用分析器。
https://dev.yorhel.nl/ncdu || ncdu
  • gdu — 帶控制台界面的磁盤使用分析器,用 Go 編寫。
https://github.com/Dundee/gdu || gdu

參閱 應用程序列表/工具#磁盤使用情況顯示

參閱[編輯 | 編輯原始碼]