张登友,张登友的博客,张登友的网站——
冷门但有用
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
:以树的形式显示路径和文件,类似于递归的ls
stat
:文件信息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-file
units
:将一种计量单位转换为另一种等效的计量单位(参阅/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 的版本信息。