张登友,张登友的博客,张登友的网站——
冷门但有用
expr:计算表达式或正则匹配m4:简单的宏处理器yes:多次打印字符串cal:漂亮的日历env:执行一个命令(脚本文件中很有用)printenv:打印环境变量(调试时或在写脚本文件时很有用)look:查找以特定字符串开头的单词或行cut,paste和join:数据修改fmt:格式化文本段落pr:将文本格式化成页/列形式fold:包裹文本中的几行column:将文本格式化成多个对齐、定宽的列或表格expand和unexpand:制表符与空格之间转换nl:添加行号seq:打印数字bc:计算器factor:分解因数gpg:加密并签名文件toe:terminfo 入口列表nc:网络调试及数据传输socat:套接字代理,与netcat类似slurm:网络流量可视化dd:文件或设备间传输数据file:确定文件类型tree:以树的形式显示路径和文件,类似于递归的lsstat:文件信息time:执行命令,并计算执行时间timeout:在指定时长范围内执行命令,并在规定时间结束后停止进程lockfile:使文件只能通过rm -f移除logrotate: 切换、压缩以及发送日志文件watch:重复运行同一个命令,展示结果并/或高亮有更改的部分when-changed:当检测到文件更改时执行指定命令。参阅inotifywait和entr。tac:反向输出文件shuf:文件中随机选取几行comm:一行一行的比较排序过的文件strings:从二进制文件中抽取文本tr:转换字母iconv或uconv:文本编码转换split和csplit:分割文件sponge:在写入前读取所有输入,在读取文件后再向同一文件写入时比较有用,例如grep -v something some-file | sponge some-fileunits:将一种计量单位转换为另一种等效的计量单位(参阅/usr/share/units/definitions.units)apg:随机生成密码xz:高比例的文件压缩ldd:动态库信息nm:提取 obj 文件中的符号ab或wrk:web 服务器性能分析strace:调试系统调用mtr:更好的网络调试跟踪工具cssh:可视化的并发 shellrsync:通过 ssh 或本地文件系统同步文件和文件夹wireshark和tshark:抓包和网络调试工具ngrep:网络层的 grephost和dig:DNS 查找lsof:列出当前系统打开文件的工具以及查看端口信息dstat:系统状态查看glances:高层次的多子系统总览iostat:硬盘使用状态mpstat: CPU 使用状态vmstat: 内存使用状态htop:top 的加强版last:登入记录w:查看处于登录状态的用户id:用户/组 ID 信息sar:系统历史数据iftop或nethogs:套接字及进程的网络利用情况ss:套接字数据dmesg:引导及系统错误信息sysctl: 在内核运行时动态地查看和修改内核的运行参数hdparm:SATA/ATA 磁盘更改及性能分析lsblk:列出块设备信息:以树形展示你的磁盘以及磁盘分区信息lshw,lscpu,lspci,lsusb和dmidecode:查看硬件信息,包括 CPU、BIOS、RAID、显卡、USB 设备等lsmod和modinfo:列出内核模块,并显示其细节fortune,ddate和sl:额,这主要取决于你是否认为蒸汽火车和莫名其妙的名人名言是否“有用”
仅限 OS X 系统
以下是仅限于 OS X 系统的技巧。
- 用
brew(Homebrew)或者port(MacPorts)进行包管理。这些可以用来在 OS X 系统上安装以上的大多数命令。 - 用
pbcopy复制任何命令的输出到桌面应用,用pbpaste粘贴输入。 - 若要在 OS X 终端中将 Option 键视为 alt 键(例如在上面介绍的 alt-b、alt-f 等命令中用到),打开 偏好设置 -> 描述文件 -> 键盘 并勾选“使用 Option 键作为 Meta 键”。
- 用
open或者open -a /Applications/Whatever.app使用桌面应用打开文件。 - Spotlight:用
mdfind搜索文件,用mdls列出元数据(例如照片的 EXIF 信息)。 - 注意 OS X 系统是基于 BSD UNIX 的,许多命令(例如
ps,ls,tail,awk,sed)都和 Linux 中有微妙的不同( Linux 很大程度上受到了 System V-style Unix 和 GNU 工具影响)。你可以通过标题为 “BSD General Commands Manual” 的 man 页面发现这些不同。在有些情况下 GNU 版本的命令也可能被安装(例如gawk和gsed对应 GNU 中的 awk 和 sed )。如果要写跨平台的 Bash 脚本,避免使用这些命令(例如,考虑 Python 或者perl)或者经过仔细的测试。 - 用
sw_vers获取 OS X 的版本信息。