Mac 终端命令使用

Shell(壳):和操作系统内核(Kernel)相对,Shell 是面向用户的命令行交互程序,属于命令解析器。接收用户输入的指令,调用系统程序完成对应的工作。

版本提示:macOS 10.15(Catalina)之前默认 Shell 为 Bash;从 Catalina 版本起系统默认 Shell 切换为 Zsh。绝大多数日常命令二者完全兼容。

Bash(Bourne‑Again Shell):Bourne Shell 的开源增强兼容版本,语法是 Bourne Shell 的超集,完全向后兼容,扩展大量实用特性。

在 Mac 终端 Shell 环境下,可以执行绝大多数 Unix / Linux 风格命令,例如 lscdcat 等。但部分工具(sedpstop)属于 BSD 版本,和 GNU‑Linux 参数存在差异,编写跨平台脚本时需要注意。

macOS、Linux、Unix 的关系

通俗理解:Unix 是鼻祖Linux 遵循 POSIX 标准从零实现的类 Unix 内核;macOS 的 Darwin 内核基于 BSD(Unix 的分支)二次开发,属于经过认证的正统 Unix 系统。

Unix

1969 年,贝尔实验室 Ken Thompson 在 PDP‑7 机器启动开发,后续 Dennis Ritchie 加入合作,诞生最早的 Unix。早期使用汇编语言,第三版改用 C 语言完成重写,因此获得硬件可移植能力。

Unix 是多用户、多任务商业操作系统,可运行在巨型机、小型机、PC 等多种硬件平台。 主流商业 Unix 产品:

  • Solaris(Sun)
  • AIX(IBM)
  • HP‑UX(HP)
  • SCO Unix / Unixware(x86 平台)

备注:Unix 源码闭源,大多和厂商硬件深度绑定。

Linux

Linus Torvalds 大学期间受教学操作系统 Minix 的启发,在 Intel 386 PC 上从零开发内核。Linux 没有复用任何 Unix 源码,遵循 POSIX 标准独立实现,大量搭配 GNU 项目工具链组成完整操作系统。

严格定义:Linux 仅指代内核;我们口中的 Linux 系统 = Linux内核 + GNU工具链 + 各类应用程序,属于类Unix开源操作系统。

主流商业发行版:RedHat、SUSE、Slackware、Turbo Linux、红旗Linux。

macOS

macOS 的内核为 Darwin(达尔文),底层基于 XNU(Mach微内核 + BSD子集) 开发,是通过官方认证的正统 Unix 系统。

层级关系:macOS 系统 → Darwin内核 → XNU(Mach + BSD) → BSD(Unix分支)

Unix 与 Linux 核心差异

  • 授权与源码:Unix 商业闭源;Linux 内核完全开源免费。
  • 硬件绑定:Unix 大多绑定对应厂商硬件;Linux 可跨多种硬件平台运行。
  • 历史渊源:Unix 诞生更早;Linux 设计思想借鉴 Unix,但源码完全独立。

Linux 与 macOS 的核心差异

  • 二者都属于类 Unix;macOS 是经过认证正统 Unix;Linux 属于类 Unix。
  • 内核架构:Linux 采用宏内核;macOS Darwin 是混合内核(XNU)
  • 代码起源:Linux 由 Linus 从零开发;Darwin 基于 Mach + BSD 源码二次修改而来。
  • 工具差异:macOS 自带 BSD 系工具,Linux 大多是 GNU 工具,部分命令参数不一样。

Mac 终端快捷键

Tab         # 命令、文件/文件夹自动补全
Ctrl + A    # 光标跳转到当前命令行开头
Ctrl + E    # 光标跳转到当前命令行末尾
Ctrl + L    # 清空终端屏幕(等价 clear)
Ctrl + U    # 删除光标位置到行首全部字符
Ctrl + K    # 删除光标位置到行尾全部字符
Ctrl + W    # 删除光标前一个单词

Mac 终端常用命令大全

Mac 和 Linux 绝大多数命令用法一致,但部分底层工具是 BSD 实现,参数会有区别。

目录操作

命令 功能描述 使用示例
cd 切换工作目录 cd ~cd ..cd /usr/local
ls 列出目录下文件与文件夹 ls -alh
pwd 打印当前所在目录的绝对路径 pwd
mkdir 创建目录,‑p 递归创建多级目录 mkdir demomkdir -p a/b/c
rmdir 仅删除空目录,目录有文件会报错 rmdir demo

文件操作

命令 功能描述 使用示例
cat 读取文件全部内容输出到标准输出,也可拼接文件 cat test.txt
more 老式分页查看大文件 more app.log
od 八进制/十六进制查看原始二进制字节 od demo.bin
cp 复制文件/目录;‑r递归复制目录 cp src.txt dest.txtcp -r dir1 dir2
rm 删除文件/目录;‑r递归删除目录,‑f强制删除 rm test.txtrm -rf dir
mv 移动文件,同时可实现重命名 mv old.txt new.txtmv file ~/Desktop
ln 创建硬链接 / 软链接(符号链接),‑s 创建软链接 ln src hardlinkln -s src softlink
find 递归遍历目录,按条件查找文件 find . -name "*.js"
file 探测识别文件真实类型 file demo.zip
open Mac 特有命令,调用系统默认程序打开文件/文件夹 open .open demo.pdf

文本处理操作

命令 功能描述 使用示例
head 读取文件开头N行 head -20 test.txt
tail 读取文件末尾N行;‑f 实时跟踪文件新增日志 tail -15 test.txttail -f app.log
cut 按列、分隔符截取文本内容 cut -d ':' -f1 /etc/passwd
colrm 删除标准输入指定列范围的字符 colrm 2 5 < test.txt
paste 将多个文件按列合并输出 paste file1.txt file2.txt
diff 对比两个文件的差异 diff a.txt b.txt
sed 流编辑器,完成文本替换、删除、修改 sed 's/red/green/g' test.txt
grep 文本模式匹配搜索,支持正则表达式 grep "error" app.log
awk 强大文本脚本处理工具,适合解析结构化文本 awk '{print $1}' test.txt
sort 对文本行进行排序 sort file.txt
uniq 去除文件重复行,建议先 sort 再 uniq `sort file.txt
comm 对比已经排好序的两个文件,输出交集、差集 comm sorted1.txt sorted2.txt
wc 统计文件行数、单词数、字节数 wc -l test.txt
nl 为文本内容增加行号输出 nl test.txt

权限与安全操作

命令 功能描述 使用示例
passwd 修改当前用户登录密码 passwd
chmod 修改文件/目录读写执行权限 chmod u+x run.sh
umask 设置新建文件、目录的默认权限掩码 umask 027
chown 修改文件/目录的所有者用户,修改系统文件需要 sudo sudo chown admin demo.txt
chgrp 修改文件/目录的所属用户组 sudo chgrp staff demo.txt

备注xlock 命令现代 macOS 已经废弃,不再用于终端锁屏。

编译开发操作

命令 功能描述 使用示例
make 读取 Makefile,编译构建项目 makemake install
touch 修改文件时间戳;文件不存在时创建空文件 touch demo.txt

进程管理

命令 功能描述 使用示例
ps 查看进程快照;ps aux 查看系统全部进程 ps aux
kill 向进程发送信号;‑9 发送SIGKILL强制杀死进程 kill 1234kill -9 1234
nice 设置新启动进程的调度优先级 nice -n 10 ./app
renice 修改已经在运行进程的调度优先级 renice +20 32768

时间日期操作

命令 功能描述 使用示例
date 输出系统当前日期时间,也可用于格式化时间 date
cal 输出日历 cal 8 2025
time 统计一条命令的执行耗时 time ls -l

网络与通信操作

注意:现代 macOS 已经移除 rloginrsh,明文不安全,远程优先使用 ssh

命令 功能描述 使用示例
telnet 老式远程登录;现在多用于简单端口探测 telnet baidu.com 80
ftp 传统明文ftp客户端 ftp ftp.example.com
ping ICMP 探测网络连通性 ping www.baidu.com
mail 读取、发送系统邮件 mail
write 向本机其他登录终端发送消息 write username ttys001
mesg 开启/关闭接收 write 消息 mesg n

Shell 内置工具(历史、别名)

r 是 Ksh 内置命令,macOS 默认 Zsh/Bash 没有 r 命令

命令 功能描述 使用示例
history 输出终端执行过的全部命令历史 history
alias 创建命令别名,简化输入 alias ll='ls -alh'
unalias 删除已定义的命令别名 unalias ll

其他综合命令

命令 功能描述 使用示例
uname 查看系统内核信息,‑a输出完整信息 uname -a
clear 清空终端屏幕 clear
env 打印全部当前环境变量 env
who 列出当前系统所有登录用户 who
whoami 打印当前终端登录用户名 whoami
tty 打印当前终端设备文件名 tty
stty 查看、修改终端设备控制参数 stty -a
du 统计目录磁盘占用大小,‑sh人类可读格式 du -sh *
df 查看磁盘分区总容量、剩余空间 df -h
w 输出登录用户信息 + 系统负载综合信息 w

常见问题

cd、pushd、popd、dirs 的区别

Shell 维护一块目录栈,以栈结构保存访问过的目录,dirs 可以打印栈内全部记录。

  • cd:普通切换目录,不会修改目录栈
  • pushd 目录:将目标目录压入目录栈栈顶,同时切换到该目录;不带参数时,交换栈顶两条目录记录。
  • popd:弹出目录栈栈顶记录,切换到新的栈顶目录。
  • dirs:查看完整目录栈。
pushd ~/Documents
pushd ~/Desktop
dirs
popd
pwd
popd
pwd

如何查找并杀死进程

开发中经常需要杀掉占用端口的进程:

# 查看系统全部进程快照
ps aux

# Mac 根据端口查找进程
lsof -i :8080

# -9 代表 SIGKILL,强制杀死进程,谨慎使用
kill -9 <PID>

参考资料

详解Linux与Unix系统的区别与联系

C语言中文网 - Linux学习教程,Linux入门教程(超详细)

runoob.com Linux 命令大全

Linux/Mac find 命令详解

© lizhao all right reserved,powered by Gitbook文件修订时间: 2026-09-02 22:16:58

results matching ""

    No results matching ""