核心工具 - 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 工具

分类：​

- 命令行
- 软件列表
- 包含失效链接的页面

核心工具
添加话题