Core utilities (简体中文)
本文涉及 GNU/Linux 系统的所谓的 "核心" 工具,比如 less, ls, 和 grep,包括但不限于以上集成于 GNU coreutils 中的工具。下文提供了关于这些实用工具颇为丰富的技巧和有帮助的其他信息。
大多数命令行工具的文档都存放在 man page 里面,来自 GNU Project 的工具放在 Info manual 里面,一些 shell 为它的内置命令提供了 命令。另外,大多数命令加上 参数时会显示自身的使用说明。
文件管理
| 命令 | 描述 | 手册页名称 | 示例 |
|---|---|---|---|
| cd | 变更目录(shell 内置命令) | cd /etc/pacman.d | |
| mkdir | 创建目录 | mkdir ~/newfolder | |
| rmdir | 删除空目录 | rmdir ~/emptyfolder | |
| rm | 删除文件 | rm(1) | rm ~/file.txt |
| rm -r | 删除目录和目录内文件 | rm -r ~/.cache | |
| ls | 列出文件名称 | ls *.mkv | |
| ls -a | 列出隐藏文件 | ls -a /home/archie | |
| ls -al | 显示隐藏文件和文件属性 | ||
| mv | 移动文件 | mv ~/compressed.zip ~/archive/compressed2.zip | |
| cp | 复制文件 | cp ~/.bashrc ~/.bashrc.bak | |
| chmod +x | 设置文件为可执行文件 | chmod +x ~/.local/bin/myscript.sh | |
| cat | 显示文件内容 | cat(1) | cat /etc/hostname |
| find | 查找文件 | find ~ -name myfile |
ls
ls 可以列出目录中的文件名称。
请参考 Info manual(在线版本)获取更多信息。
exa 相较于 和 是一个更加现代的、人性化的选择。它有更多的特性,例如将 Git 修改和文件名一同显示,在 模式中对每列进行不同的着色,或者在 视图中显示 模式元数据。exa 可以在软件包 中找到。
选项(“长格式”)用于显示文件类型、权限、所有者的用户名和用户组、大小、修改时间等等,具体参阅 info document。
默认情况下,包含空格的文件名和目录名会被单引号引起。要改变这一特性,请使用 或 选项。另外,将 QUOTING_STYLE 环境变量 设置为 也可以。
less
less 是一个对文本文件内容进行分页显示的终端程序,它与其他的分页显示程序如 more 和 已废弃 的 pg 相似,但 less 提供了更高级的界面和更复杂的 功能。
参阅 List of applications#Terminal pagers 查找更多可选方案。
mkdir
mkdir (make directory) 可以创建目录。
若需递归地创建一系列目录,就要用到 参数,否则会出错。
用 选项可直接指定新建目录的访问权限,因此不必使用 chmod 更改权限。
mktemp -d 更好。mv
mv (move) 可以移动或重命名文件和目录。
为了降低使用这个命令带来的风险,请为它添加一个别名:
alias mv='mv -iv'
这个别名可以在覆盖已存在的文件前要求确认,并会显示出正在进行的操作。
rm
rm (remove) 用于删除文件或目录。
为了降低使用这个命令带来的风险,请为它添加一个别名:
alias rm='rm -Iv --one-file-system'
这个别名可以在删除三个以上的文件时要求确认、显示出正在进行的操作、不跨越多个文件系统。如果想在删除一个文件时也获得确认,用 代替 即可。
Zsh 用户可在命令前加上 ,避免隐式扩展。
若要移除空目录,使用 rmdir,若内含文件则命令失败。
find
find 是 软件包的一部分, 它属于 base 软件包组。
你可能希望 find 命令将一个文件名称作为参数,并在文件系统中搜索与该名称匹配的文件。下面的 #locate 程序可以专门做这件事。
相反,find 需要一组目录,并将它们下面的每个文件与一组表达式进行匹配。这种设计为实现一些强大的“单行小程序” ("one-liners") 提供了支持,而这是上述“直观”设计无法实现的。参阅 GregsWiki:UsingFind 来获取使用说明。
文本流处理
grep
grep (global/regular expression/print) 是最初给 Unix 写的命令行文字搜索工具,"grep" 命令在文件或标准输入里搜索符合指定正则表达式的行,并把结果打印到标准输出。
- 要在输出结果中显示行数,加上 选项。
- grep 可以在二进制文件中查找十六进制数值,例如要查找文件中的 ,应该这样写命令:
$ LANG=C grep --text --perl-regexp "\xA1\xF2" ''/path/to/file''
参阅 Color output in console#grep 来启用彩色输出支持。
更多信息请参阅 。
系统管理
| 命令 | 描述 | 手册页名称 | 示例 |
|---|---|---|---|
| mount | 挂载分区 | mount /dev/sdc1 /media/usb | |
| df -h | 显示各个分区上的剩余空间 | ||
| ps -A | 列出所有正在运行的进程 | ||
| killall | 杀死所有运行中的进程实例 | killall(1) | |
| ss -at | 列出所有已打开的 TCP 套接字 |
sudo
参阅 Sudo。
lsblk
命令会显示所有连接到系统的 块设备 和分区状况,例如:
设备名称的开头定义块设备的类型,大部分现代存储设备(如硬盘、SSD 和 USB 闪存设备)都被识别为 SCSI disks ()。类型后面跟着给设备编号的小写字母,第一个设备从 开始 (sda),第二个设备就是 (),以此类推。每个设备上的 现有 分区将用数字编号,从 开始 (sda1),第二个分区就是 (),以此类推。在上面的示例中,只有一个设备可用 (sda),该设备有三个分区 (sda1 到 ),每个分区具有不同的 文件系统。
其它常见的块设备有 (内存卡)或 (NVMe 设备)。不清楚的设备类型可以在这里搜索到:kernel documentation。
ip
ip 显示关于网络设备,IP 地址,路由表和其他 Linux IP 软件栈的对象信息。通过附加各种命令,你可以操纵或配置大多数对象。
| 子命令 | 作用 | 手册页名称 |
|---|---|---|
| ip addr | 协议地址管理 | ip-address(8) |
| ip addrlabel | 协议地址标签管理 | |
| ip l2tp | tunnel Ethernet over IP (L2TPv3) | |
| ip link | 网络设备配置 | |
| ip maddr | 多播地址管理 | |
| ip monitor | 监测 netlink 信息 | |
| ip mroute | 多播路由缓存管理 | |
| ip mrule | 多播路由策略数据库的规则 | |
| ip neigh | 邻居表/ARP 表管理 | ip-neighbour(8) |
| ip netns | process network namespace management | |
| ip ntable | 邻居表配置 | |
| ip route | 路由表管理 | |
| ip rule | 路由策略数据库管理 | ip-rule(8) |
| ip tcp_metrics | 管理 TCP Metrics | |
| ip tunnel | 隧道配置 | |
| ip tuntap | 管理 TUN/TAP 设备 | |
| ip xfrm | 管理 IPsec 策略 |
帮助命令可用于所有子命令。例如,输入 将显示地址对象相关的命令语法。高级用法参见 iproute2 documentation。
Network configuration (简体中文) 中提到了 ip 命令在多种实际任务中的使用方法。
杂项
| 命令 | 描述 | 手册页名称 | 示例 |
|---|---|---|---|
| strings | 显示二进制文件中可打印的字符 | strings /usr/bin/free |
dd
dd 是在 unix 和 类 unix 系统中主要用于转换和拷贝文件的命令。
iconv
iconv 可以转换文本的字符编码。
下列命令将文件 foo 从 ISO-8859-15 转换至 UTF-8,然后保存到 :
$ iconv -f ISO-8859-15 -t UTF-8 foo > foo.utf
查阅 获取更多细节。
seq
seq (sequence) 可以打印一列数字。Shell 内置了该命令的其他替代方案,可以按照 Wikipedia 的说明进行练习。
参考资料
- POSIX Utilities
- GNU Coreutils online documentation
- A sampling of coreutils on Reddit , part 2 , part 3 - Overview of commands in coreutils
- Learn the DD command