核心工具 - Arch Linux 中文维基

跳至內容

# 核心工具

出自 Arch Linux 中文维基
翻譯狀態：

- 本文（或部分內容）譯自 Core utilities，最近一次同步於 2023-11-22，若英文版本有所更改，則您可以幫助同步與翻譯更改的內容。
- 您可以在 ArchWiki 的對應頁面找到本文翻譯的原始修訂歷史。
- 本文可能與英文原文存在出入。

相關文章

- 命令行解釋器
- 用戶和用戶組
- systemd
- pacman
- 建議閱讀

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

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

## 基礎

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

包 | 工具 | 描述 | 文檔 | 替代品
--- | --- | --- | --- | ---
shell 內置 | cd | 變更目錄 | cd(1p) | #cd 替代品
GNU coreutils包 | ls | 列出目錄 | ls(1)、lsGNU 文檔 | tree包, #ls 替代品
cat | 將文件拼接到 stdout | cat(1)、catGNU 文檔 | tac(1), #cat 替代品
mkdir | 創建目錄 | mkdir(1)、mkdirGNU 文檔
rmdir | 刪除空目錄 | rmdir(1)、rmdirGNU 文檔
rm | 刪除文件或目錄 | rm(1)、rmGNU 文檔 | shred unlink(1)
cp | 複製文件或目錄 | cp(1)、cpGNU 文檔 | #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[失效連結 2025-08-15 ⓘ] | sad包, sd包
GNU AWK (gawk包) | awk | 模式掃描和處理語言 | gawk(1), info | AWK#替代方案
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)

### 防止數據損失

`rm`、`mv`、`cp` 和 shell 重定向無需確認即可刪除或覆蓋文件。`rm`、`mv` 和 `cp` 都支持 `-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#記住最近的目錄。

### 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

- 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:核心工具 中討論)

參閱 dd 和 ddrescue。

#### 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) 效應。

- mbuffer — buffer 程序的延續，具有多線程等功能。

  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包

參閱應用程式列表/工具#磁碟使用情況顯示。

## 參閱

- coreutils 手冊GNU 文檔

- GNU Coreutils FAQ
- Coreutils Gotchas: GNU 核心工具的維護者寫的關於核心組件一些奇怪行為的注釋
- POSIX 工具

分類：​

- 命令行
- 軟體列表
- 包含失效連結的頁面

核心工具
新增話題