核心工具
核心工具是 GNU/Linux 系統基本、基礎的工具。本文提供對它們不完整的概覽、連結文檔並描述有用的替代品。本文的範圍包括,但不限於 GNU coreutils。大多數核心工具都是傳統的 Unix 工具,它們中的許多已由 POSIX 標準化,但已進一步發展,從而提供更多功能。
大多數命令行界面的文檔都在 man 手冊中,來自 GNU 項目的工具的文檔主要在 Info 手冊中,一些 shell 為內置命令提供了 help
命令。另外,大多數命令在使用 --help
標誌運行時會顯示自身的使用說明。
基礎[編輯 | 編輯原始碼]
下表列出了一些 Arch Linux 用戶應當熟悉的重要的工具。另請參見 intro(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 — 用於救援系統和嵌入式系統的核心工具。
- Toybox — 一體化的 Linux 命令行。
- uutils — Rust 重構的跨平台的 GNU 核心工具。
- Heirloom Toolchest — 標準 Unix 工具的傳統實現。
- 9base — 原版 Plan9 工具在 Unix 的移植。
- sbase — *nix 核心工具的一個極簡變體。
- ubase — sbase 工具的一個擴展。
cat 替代品[編輯 | 編輯原始碼]
- bat — 支持語法高亮和 Git 集成的 cat 克隆。
cd 替代品[編輯 | 編輯原始碼]
- zoxide — 一個智能化的 cd 命令,可以學習用戶的習慣,只需按幾個鍵即可隨處導航。
- autojump — 在命令行中導航到文件的快速方式。
參閱 Bash#輸入路逕自動添加"cd" 和 Zsh#記住最近的目錄。
cp 替代品[編輯 | 編輯原始碼]
使用 rsync#作為 cp/mv 的替代可以斷點續傳、顯示傳輸狀態、跳過已存在的文件並使用校驗和確保目標文件的完整性。
ls 替代品[編輯 | 編輯原始碼]
- broot — 一種在目錄間瀏覽和導航的新方法。
- clifm — 一個像 ls(1) 一樣列出文件的文件管理器,加上了圖標和 RGB 顏色支持。
- eza — 另一個 ls 的替代品,具有顏色支持、樹視圖、git 集成和其他功能。基於停止支持的 exa 開發而來。
- lsd — ls 的現代版,具有很多漂亮的顏色和美觀的圖標。
find 替代品[編輯 | 編輯原始碼]
- fd — find 的簡單、快速且易用的替代品。默認忽略隱藏文件和
.gitignore
文件。
- fuzzy-find — 模糊查找文件。
- mlocate — 將 locate 與 updatedb 結合起來的實現。
- plocate — 一個更快速的 locate 命令。
- rawhide — 使用 C 語言樣式的表達式查找文件。
圖形界面的文件搜索工具請參閱應用程式列表/工具#文件搜索。
diff 替代品[編輯 | 編輯原始碼]
diffutils包 不提供單詞級別的文本比較,一些其他程序提供了這一功能:
- git diff 可以加上
--color-words
參數進行單詞級別的比較,使用--no-index
可以比較 Git 工作樹外的文件。 - cwdiff — 一個對 GNU wdiff 的包裝,對輸出進行了着色。
- git-delta — 一個帶語法高亮功能的分頁器,作用於 git、diff 和 grep 的輸出。
- dwdiff — diff 程序加上單詞比較功能的前端,支持着色。
- icdiff — 帶着色的、Python 編寫的 diff 工具。「改進版彩色 diff」用於擴充 diff 的用法。
- wdiff — GNU diff 加上單詞比較功能的實現,不支持着色。
grep 替代品[編輯 | 編輯原始碼]
- mgrep — 多行 grep。
- pdfgrep — 在 PDF 文件中搜索文本的工具。
- ripgrep-all — 搜索純文本,包括在 PDF、電子書、Office 文檔、zip、tar.gz 中的文本。
代碼搜索工具[編輯 | 編輯原始碼]
以下 3 個工具旨在在代碼搜索方面替代 grep。它們默認執行遞歸搜索、跳過二進制文件並遵守 .gitignore
。
- ack — 基於 Perl 的 grep 替代品,為搜索大量異構的源碼樹而生。
- ripgrep (rg) — 結合了 ag 的易用性和 grep 的速度。
- The Silver Searcher (ag) — 類似 Ack 的代碼搜索工具,不過更快。
- ugrep (ug) — 超快速的 grep,具備交互式用戶界面、模糊搜索、布爾查詢、十六進制轉儲等功能。
參閱 cscope包。
交互式過濾器[編輯 | 編輯原始碼]
- fzf — 通用的命令行模糊查找工具,默認由 find 提供支持。
- fzy — 一種簡單快速的文本模糊選擇工具,具有先進的評分算法。
- peco — 簡單的交互式過濾工具。
- percol — 為傳統的 UNIX shell 管道概念加上了交互式過濾功能。
- skim — 用 Rust 編寫的模糊查找工具,與 fzf 類似。
dd 替代品[編輯 | 編輯原始碼]
dd 的替代實現[編輯 | 編輯原始碼]
本小節列舉了 dd 的其他實現,它們的接口和默認行為基本符合 dd(1p) 的 POSIX 規範。
- ddpt — 由 Linux 內核的 SCSI 子系統維護者對 sg_dd(8) 進行的可移植重寫,具有可選但非常專業的硬件 I/O(SCSI 命令集)支持,還有許多其他功能。
- sdd — 可以跨 UNIX 環境使用的 dd 實現,由 Joerg Schilling 開發,可以對複製的數據進行校驗並重新讀取損壞數據。
GNU dd 的衍生版[編輯 | 編輯原始碼]
核心工具中的 GNU 實現的 dd 的也符合 POSIX。本小節列出了它的衍生版。
- dcfldd — GNU dd 的功能增強衍生版,用於取證和安全場景,包括即時哈希、靈活擦除、寫入驗證、同時輸出到多個目標、拆分和管道輸出。
- dc3dd — GNU dd 的另一個打了補丁的版本,來自美國國防部網絡犯罪中心 (DC3),與 dcfldd 具有相似的目標和功能。
現代化的 dd 仿照版[編輯 | 編輯原始碼]
本小節列舉的 dd 替代方案,在類 JCL 命令行語法和默認行為方面是不符合 POSIX 的。
- dd_rescue — 功能豐富的現代化 dd 仿照版,適用於日常腳本編寫、磁盤克隆和數據恢復。
- rw — 小型且可移植的 dd 仿照版,具有傳統的命令行參數。
- https://sortix.org/rw/ || rwAUR
buffer 的衍生版[編輯 | 編輯原始碼]
本小節列舉了 bufferAUR 的衍生版,buffer 是一個類似於 dd 的通用 I/O 緩衝程序,但具有動態大小的緩衝區。它支持區塊為單位的 I/O,可以用來對 LTO 磁帶進行進/出轉儲,以避免擦鞋 (Shoe Shining) 效應。
- mbuffer — buffer 程序的延續,具有多線程等功能。
df 替代品[編輯 | 編輯原始碼]
- duf — 一個查看磁盤使用情況/剩餘空間的工具。
du 替代品[編輯 | 編輯原始碼]
- cdu — du 的包裝,帶有着色和漂亮的直方圖。
- dust — du 的更直觀版本,用 Rust 編寫。
- ncdu — 基於 ncurses 的簡單磁盤使用分析器。
- gdu — 帶控制台界面的磁盤使用分析器,用 Go 編寫。
參閱[編輯 | 編輯原始碼]
- GNU Coreutils 文檔
- GNU Coreutils FAQ
- Coreutils Gotchas: GNU 核心工具的維護者寫的關於核心組件一些奇怪行為的註釋
- POSIX 工具