核心工具

来自 Arch Linux 中文维基
(重定向自Core utilities

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

参阅 应用程序列表/工具#磁盘使用情况显示

参阅[编辑 | 编辑源代码]