Mac 终端常用操作
终端是输入命令的窗口,Shell 负责解释并执行命令。macOS 默认 Shell 通常是 zsh;下面的命令适用于日常使用。
⌨️ 常用快捷键
| 操作 | 快捷键 | 说明 |
|---|---|---|
| 拷贝 / 粘贴 | ⌘ Command + C / ⌘ Command + V | 与 Mac 其他应用一致 |
| 中断当前命令 | ⌃ Control + C | 常用于停止前台运行的程序 |
| 补全命令或路径 | Tab | 输入一部分后按下;补全效果取决于 Shell 配置 |
| 查看上一条 / 下一条命令 | ↑ / ↓ | 浏览命令历史 |
| 搜索历史命令 | ⌃ Control + R | 输入关键字;再次按下继续向前搜索,回车执行 |
| 光标移到行首 / 行尾 | ⌃ Control + A / ⌃ Control + E | 默认 zsh Emacs 编辑模式下可用 |
| 删除光标前 / 后的内容 | ⌃ Control + U / ⌃ Control + K | 默认 zsh Emacs 编辑模式下可用 |
| 刷新屏幕显示 | ⌃ Control + L | 当前输入通常保留;历史命令仍可查看 |
| 新建标签页 / 窗口 | ⌘ Command + T / ⌘ Command + N | 适用于 macOS 自带“终端”App |
Command + C 和 Control + C 的区别
Command + C用来拷贝选中的文字;Control + C用来请求中断当前前台命令。
📁 查看和切换目录
| 命令 | 用途 |
|---|---|
pwd | 显示当前所在目录 |
ls | 列出当前目录内容 |
ls -lah | 显示隐藏文件、权限和便于阅读的文件大小 |
cd ~/Downloads | 进入下载目录 |
cd .. | 返回上一级目录 |
cd ~ 或 cd | 返回用户主目录 |
cd - | 返回上一次所在目录 |
open . | 在 Finder 中打开当前目录 |
~表示用户主目录,例如/Users/你的用户名。.表示当前目录,..表示上一级目录。- 路径包含空格时,用引号包起来,例如
cd "我的项目"。 - 也可以将 Finder 中的文件或文件夹拖入终端,填入其路径。
📄 文件与文件夹操作
以下示例中的文件名和路径需要按实际情况替换。
| 命令 | 用途 |
|---|---|
mkdir demo | 新建 demo 文件夹 |
mkdir -p demo/logs | 创建多级文件夹,已有目录不会报错 |
touch notes.txt | 文件不存在时创建空文件;已存在时更新时间戳 |
cp notes.txt notes-backup.txt | 复制文件 |
cp -R demo demo-backup | 复制整个文件夹 |
mv notes.txt todo.txt | 重命名文件 |
mv todo.txt demo/ | 将文件移动到 demo 文件夹 |
rm -i notes-backup.txt | 删除文件前询问确认 |
rmdir empty-folder | 删除空文件夹 |
删除与覆盖
rm删除的文件通常不会进入废纸篓;cp、mv也可能覆盖同名文件。操作前检查路径,复制或移动时可加-i,例如mv -i todo.txt demo/。
🔎 查看文件和查找内容
| 命令 | 用途 |
|---|---|
cat notes.txt | 一次性显示较短文件的内容 |
less app.log | 分页查看文件;按 q 退出,输入 /关键字 搜索 |
head -n 20 app.log | 查看前 20 行 |
tail -n 50 app.log | 查看最后 50 行 |
tail -f app.log | 持续查看文件新增内容,按 Control + C 停止 |
grep -n 'error' app.log | 查找包含 error 的行并显示行号,区分大小写 |
grep -in 'error' app.log | 忽略大小写查找 |
find . -name '*.md' | 在当前目录及子目录查找 Markdown 文件 |
通配符加引号
find示例中的'*.md'加引号,是让 find 自己匹配文件名,避免 Shell 提前展开它。
🧭 查询命令所在路径
which npm查看当前终端解析到的 npm 位置。若涉及别名或函数,输出可能不只是文件路径。
command -v npm
type npmcommand -v 查询命令如何被解析,type 进一步说明它是外部程序、Shell 内建命令、别名还是函数。
print -l $path在 zsh 中逐行查看 PATH 的搜索目录。系统寻找外部命令时,会按这些目录的顺序查找。
🕘 历史命令与帮助
| 命令 | 用途 |
|---|---|
history | 查看当前 Shell 的命令历史 |
history | grep 'npm' | 筛选包含 npm 的历史记录 |
man ls | 查看 ls 的手册;按 q 退出 |
命令 --help | 许多工具支持此帮助参数;macOS 部分自带命令需使用 man |
clear | 刷新终端屏幕显示 |
exit | 退出当前 Shell 会话 |
🔌 查看进程和端口
| 命令 | 用途 |
|---|---|
ps aux | 查看当前进程列表 |
top | 动态查看 CPU、内存和进程;按 q 退出 |
lsof -nP -iTCP:3000 -sTCP:LISTEN | 查看谁在监听本机 TCP 3000 端口 |
kill 12345 | 向指定 PID 发送终止信号,请求程序退出 |
开发服务提示“端口被占用”时,先用 lsof 确认程序和 PID,再决定是否结束。优先在启动服务的终端中按 Control + C;kill 示例中的 PID 必须替换为实际值。部分进程信息可能受权限限制。
🧩 管道与输出重定向
# 把前一个命令的输出交给后一个命令,筛选包含 error 的行
tail -n 100 app.log | grep -i 'error'
# 将标准输出保存到文件:覆盖原有内容
ls > files.txt
# 将标准输出追加到文件末尾
pwd >> files.txt| 用来连接命令,> 覆盖写入,>> 追加写入。使用 > 前确认目标文件可以覆盖;错误信息默认不会随标准输出一起写入。
🚀 一个日常练习
# 在下载目录中新建练习文件夹
cd ~/Downloads
mkdir -p terminal-demo
cd terminal-demo
# 新建文件并检查位置和目录内容
touch notes.txt
pwd
ls -lah
# 在 Finder 中打开当前目录
open .相关笔记:快捷键。