臭名昭著aTrust隔离计划1.臭名昭著aTrust隔离计划2.VPN原理与aTrust隔离网络实践3.docker-easyconnect到底做了什么4.TUN(tunnel-隧道-虚拟网卡)模式
个人项目
personal(个人展示)GitHub Actions 自动部署个人展示项目
基于Quartz搭建的个人博客1.Quartz个人博客使用教程2.使用 rsync 增量部署 Quartz 博客3.使用 GitHub Actions 自动部署 Quartz 博客5.域名绑定6.CDN加速7.Google 搜索收录排查:为什么关键词搜得到别人,却搜不到我的网站?Obsidian、双向链接与知识图谱
架构设计
分布式分布式事务RPC原理
旅行
行程攻略青岛三日游行程攻略
前端
NginxNginx配置与反向代理入门
Nodenpm与npx的区别
数据库
mysql01.MySQL基础语法与约束02.MySQL数据库类型03.MySQL多表查询04.MySQL 索引05.MySQL 事务06.MySQL 隔离级别07.MySQL MVCC08.MySQL 锁09.EXPLAIN10.慢查询与 SQL 优化
mysql面试题01.索引问题02.事务与隔离级别03.锁机制04.存储引擎与性能优化05.用户权限、字符集与备份恢复
mysql实战01.EXPLAIN实战02.测试环境菜单误删排查与恢复03.MySQL IN 详解
网络
网络安全1.无线监听网卡苹果M系列虚拟机安装Kali Linux教程3.kali怎么使用RTL8812AU4.kali基础命令
网络基础进程之间怎样通过网络传递数据
网址常用网址
中间键
esElasticsearch 入门
mq
RabbitMQRabbitMQ高级RabbitMQ基础
1. MQ 基础2. MQ 核心角色与代码对应3. MQ Consumer Group 与消费模式4. SOFAMQ 账户变更代码实践5. MQ 可靠性问题6. 消息幂等
redis缓存击穿、穿透与雪崩Redis 分布式锁Redis 缓存问题Redis 数据结构
AI
使用说明
第三方插件&技能简介Archify使用与安装指南geekgeekRun使用OfferFlow使用指南Ponytail使用指南Skills Manager使用指南
CodexCodex CLI与IDE区别及使用指南Codex Hook单独配置与提交通知Codex MCP安装与使用指南Codex第三方插件安装与使用指南
Agent开发0-学习路线1.LLM、Token、上下文窗口与模型参数2.大模型 API、请求参数与响应结构3.Spring AI ChatClient4.Prompt、System Prompt、Prompt 模板6.结构化输出、JSON Schema7.SSE 流式响应8.会话 ID、聊天记录、Redis9.超时、重试、限流、降级10.*完成可运行聊天接口11.Function Calling、Tool Calling 原理12.用 Java 方法定义 Tool13.工具参数设计和校验14.实现订单查询工具15.实现物流查询工具16.实现库存查询工具17.多个工具自动选择18.工具异常、超时、重试
diy主机
主机零件学习1.CPU2.主板3.内存4.显卡5.硬盘6.散热7.风扇8.机箱热门型号价格表
捡垃圾diy-13600kf+5060diy-14600kf+5070
English高频词汇英文基础语法简单句子音标
GitGit常用命令Sublime Merge 使用指南
Java
工具库Caffeine本地缓存Reactor教程
工作实践如何使用@Async线程池使用与排查线上服务 CPU 使用率过高排查压测下RPC接口大量失败排查记录
基础1.HashMap2.ConcurrentHashMap3.HashSet4.final5.static6.volatile7.AtomicInteger8.String动态代理反射锁与线程同步线程注解
面试题1.HashMap 存储在方法内是线程安全的吗2.ArrayList参数传递与引用重新赋值3.== 和 equals 的区别、hashcode4.重载和重写的区别5.String、StringBuffer、StringBuilder区别及使用场景6.接口和抽象类7.ArrayList 与 LinkedList 的区别和扩容机制8.HashMap 和 Hashtable 的区别及底层实现9.Object 和 Objects 的区别10.ThreadLocal的原理和使用场景11.字节码是什么及作用12.Java类加载器有哪些13.双亲委派模型14.Java异常体系15.GC是什么16.GC如何判断对象可以被回收
面试总结0.HR面试模板1.面试一2.面试二3.面试三笔试
网络与 IO(黑马程序员-纯理论)01-网络编程基础02-IO模型与零拷贝03-BIO04-NIO基础与缓冲区05-NIO通道与选择器06-AIO
juc00-目录01-进程与线程02-线程同步与通信03-并发设计模式04-Java内存模型05-CAS与原子类06-ThreadLocal07-阻塞队列08-线程池使用与原理09-任务调度10-ForkJoin与享元模式11-AQS12-ReentrantLock13-读写锁14-并发协作工具15-ConcurrentHashMap16-CopyOnWrite与同步容器17-SkipListMap18-非阻塞队列
juc(工作常见)Java并发编程三个重点拆解
jvm1. JVM运行时数据区
Spring1.Spring IoC、DI与构造方法注入CGLIB、Byte Buddy 与 Spring AOPSpring 常用注解详解Spring Bean 生命周期
Spring MVC异常处理机制
linux常用命令
mac快捷键终端常用操作
python
基础01.Python是什么,为什么要安装Python02.Python项目中.venv是什么03.Python基础语法
基础实战sql替换
HTTPXHRMS员工详情接口调用(Python HTTPX)
windowswindows激活

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 npm

command -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 .

相关笔记:快捷键。