Mac 上“终端”中的键盘快捷键

Mac 上“终端”中的键盘快捷键 在 Mac 上的“终端” App 中,你可以使用键盘快捷键快速完成许多任务。请参阅下方的快捷键,以及在菜单栏的“终端”菜单中显示的快捷键。在 App 菜单中,键盘快捷键显示为符号。 【注】App 中的键盘快捷键因你在 Mac 上使用的语言和键盘布局而异。如果下方的快捷键未按预期正常工作,请在菜单栏的 App 菜单中查找以查看正确的快捷键。你还可以使用虚拟键盘查看当前键盘布局,称为输入法。 使用“终端”窗口和标签页 操作 快捷键 新建窗口 Command-N 使用相同命令新建窗口 Control-Command-N 新建标签页 Command-T 使用相同命令新建标签页 Control-Command-T 显示或隐藏标签页栏 Shift-Command-T 显示所有标签页或退出标签页概览 Shift-Command-反斜杠 () 新建命令 Shift-Command-N 新建远程连接 Shift-Command-K 显示或隐藏检查器 Command-I 编辑标题 Shift-Command-I 编辑背景颜色 Option-Command-I 放大字体 Command-加号键 (+) 缩小字体 Command-减号键 (–) 下一个窗口 Command-重音符键 (`) 上一个窗口 Command-Shift-波浪符号 (~) 下一个标签页 Control-Tab 上一个标签页 Control-Shift-Tab 将窗口拆分为两个面板 Command-D 关闭拆分面板 Shift-Command-D 关闭标签页 Command-W 关闭窗口 Shift-Command-W 关闭其他标签页 Option-Command-W 全部关闭 Option-Shift-Command-W 滚动到顶部 Command-Home 滚动到底部 Command-End 上一页 Command-Page Up 下一页 Command-Page Down 上一行 Option-Command-Page Up 下一行 Option-Command-Page Down 编辑命令行 操作 快捷键 重新定位插入点 在按住 Option 键的同时将指针移到新的插入点 将插入点移到行的开头 Control-A 将插入点移到行的结尾 Control-E 将插入点前移一个字符 右箭头键 将插入点后移一个字符 左箭头键 将插入点前移一个字词 Option-右箭头键 将插入点后移一个字词 Option-左箭头键 删除行 Control-U 删除到行的结尾 Control-K 向前删除到字词的结尾 Option-D(选中将 Option 键用作 Meta 键后可用) 向后删除到字词的开头 Control-W 删除一个字符 Delete 向前删除一个字符 向前删除(或使用 Fn-Delete) 转置两个字符 Control-T 在“终端”窗口中选择和查找文本 操作 快捷键 选择完整文件路径 按住 Shift-Command 键并连按路径 选择整行文本 点按该行三下 选择一个词 连按该词 选择 URL 按住 Shift-Command 键并连按 URL 选择矩形块 按住 Option 键并拖移来选择文本 剪切 Command-X 拷贝 Command-C 不带背景颜色拷贝 Control-Shift-Command-C 拷贝纯文本 Option-Shift-Command-C 粘贴 Command-V 粘贴所选内容 Shift-Command-V 粘贴转义文本 Control-Command-V 粘贴转义的所选内容 Control-Shift-Command-V 查找 Command-F 查找下一个 Command-G 查找上一个 Command-Shift-G 使用选定的文本查找 Command-E 跳到选定的文本 Command-J 全选 Command-A 打开字符检视器 Control-Command-Space 使用标记和书签 操作 快捷键 标记 Command-U 标记为书签 Option-Command-U 取消标记 Shift-Command-U 标记命令行并发送返回结果 Command-Return 发送返回结果但不标记 Shift-Command-Return 插入书签 Shift-Command-M 插入包含名称的书签 Option-Shift-Command-M 跳到上一个标记 Command-上箭头键 跳到下一个标记 Command-下箭头键 跳到上一个书签 Option-Command-上箭头键 跳到下一个书签 Option-Command-下箭头键 清除到上一个标记 Command-L 清除到上一个书签 Option-Command-L 清除到开头 Command-K 在标记之间选择 Shift-Command-A 其他快捷键 操作 快捷键 进入或退出全屏幕 Control-Command-F 显示或隐藏颜色 Shift-Command-C 打开“终端”设置 Command-逗号键 (,) 中断 键入 Command-句点键 (.) 等于在命令行上输入 Control-C 打印 Command-P 软重置终端仿真器状态 Option-Command-R 硬重置终端仿真器状态 Control-Option-Command-R 打开 URL 按住 Command 键并连按 URL 添加至文件的完整路径 从“访达”将文件拖移到“终端”窗口中 将文本导出为 Command-S 将选定的文本导出为 Shift-Command-S 反向搜索命令历史 Control-R 开关“允许鼠标报告”选项 Command-R 开关“将 Option 键用作 Meta 键”选项 Command-Option-O 显示备用屏幕 Shift-Command-下箭头键 隐藏备用屏幕 Shift-Command-上箭头键 打开所选内容的 man 页面 Control-Shift-Command-问号键 (?) 搜索所选内容的 man 页面索引 Control-Option-Command-斜杠 (/) 完整的目录或文件名称 在命令行上,键入一个或多个字符,然后按下 Tab 键 显示可能的目录或文件名称补全列表 在命令行上,键入一个或多个字符,然后按下 Tab 键两次

2026年5月19日 · 2 分钟 · Yancey

markdown小抄表

2026年5月19日 · 0 分钟 · Yancey

Nginx 配置与实战

Nginx 是开源、高性能、高可靠的 Web 和反向代理服务器,而且支持热部署,几乎可以做到 7 * 24 小时不间断运行,即使运行几个月也不需要重新启动,还能在不间断服务的情况下对软件版本进行热更新。性能是 Nginx 最重要的考量,其占用内存少、并发能力强、能支持高达 5w 个并发连接数,最重要的是, Nginx 是免费的并可以商业化,配置使用也比较简单。 Nginx特点: 高并发、高性能; 模块化架构使得它的扩展性非常好; 异步非阻塞的事件驱动模型这点和 Node.js 相似; 相对于其它服务器来说它可以连续几个月甚至更长而不需要重启服务器使得它具有高可靠性; 热部署、平滑升级; 完全开源,生态繁荣; 更多内容查看这篇:《 Nginx 离线安装与介绍 》 一、配置(nginx.conf) nginx.conf 配置文件的语法规则: 配置文件由 指令 与 指令块 构成; 每条指令以 ; 分号结尾,指令与参数间以空格符号分隔; 指令块以 {} 大括号将多条指令组织在一起; include 语句允许组合多个配置文件以提升可维护性; 通过 # 符号添加注释,提高可读性; 通过 $ 符号使用变量; 部分指令的参数支持正则表达式,例如常用的 location 指令. Nginx 的典型配置示例: main 全局配置,对全局生效; events 配置影响 Nginx 服务器与用户的网络连接; http 配置代理,缓存,日志定义等绝大多数功能和第三方模块的配置; server 配置虚拟主机的相关参数,一个 http 块中可以有多个 server 块; location 用于配置匹配的 uri ; upstream 配置后端服务器具体地址,负载均衡配置不可或缺的部分; #1. main段配置信息 user nginx; 运行用户,默认即是nginx,可以不进行设置 worker_processes auto; 进程数,一般设置为和 CPU 核数一样 error_log /var/log/nginx/error.log warn; 的错误日志存放目录 pid /var/run/nginx.pid; 服务启动时的 pid 存放位置 #2. events段配置信息 events { use epoll; 使用epoll的I/O模型(缺省会自动选择一个最适合你操作系统的) worker_connections 1024; 每个进程允许最大并发数 } #3. http段配置信息 #配置使用最频繁的部分,代理、缓存、日志定义等绝大多数功能和第三方模块的配置都在这里设置 http { 设置日志模式 log_format main '$remote_addr - $remote_user [$time_local] "$request" ' '$status $body_bytes_sent "$http_referer" ' '"$http_user_agent" "$http_x_forwarded_for"'; access_log /var/log/nginx/access.log main; 访问日志存放位置 sendfile on; 开启高效传输模式 tcp_nopush on; 减少网络报文段的数量 tcp_nodelay on; keepalive_timeout 65; 保持连接的时间,也叫超时时间,单位秒 types_hash_max_size 2048; include /etc/nginx/mime.types; 文件扩展名与类型映射表 default_type application/octet-stream; 默认文件类型 . server段配置信息 server { listen 80; 配置监听的端口 server_name localhost; 配置的域名 . location段配置信息 location / { root /usr/share/nginx/html; 网站根目录 index index.html index.htm; 默认首页文件 deny 172.168.22.11; 禁止访问的ip地址,可以为all allow 172.168.33.44; 允许访问的ip地址,可以为all } error_page 500 502 503 504 /50x.html; 默认50x对应的访问页面 error_page 400 404 error.html; 同上 } 加载子配置项 include /etc/nginx/conf.d/*.conf; } ### 1.1 内置变量 nginx 常用的内置全局变量,你可以在配置中随意使用,点此查看效果: [内置变量实例演示](https://www.cnblogs.com/librarookie/p/#%E5%86%85%E7%BD%AE%E5%8F%98%E9%87%8F%E5%AE%9E%E4%BE%8B%E6%BC%94%E7%A4%BA "实例传送阵") | 变量 | 说明 | | --- | --- | | $args | 请求中的参数,例: baidu.com/?a=1&b=1 中的a和b | | $content\_length | HTTP 请求信息里的"Content-Length" | | $content\_type | HTTP 请求信息里的"Content-Type" | | $document\_root | nginx 虚拟主机配置文件中的 root 参数对应的值 | | $document\_uri | 当前请求中不包含指令的 URI | | $host | 主机头,也就是域名 | | $http\_user\_agent | 客户端的详细信息,也就是浏览器的标识 | | $http\_cookie | 客户端的 cookie 信息 | | $limit\_rate | 如果 nginx服务器使用limit\_rate 配置了显示网络速率,则会显示,如果没有设置,则显示0 | | $remote\_addr | 客户端的公网ip | | $remote\_user | 如果 nginx有配置认证,该变量代表客户端认证的用户名 | | $request\_body\_file | 做反向代理时发给后端服务器的本地资源的名称 | | $request\_method | 请求资源的方式,GET /PUT /DELETE等 | | $request\_filename | 当前请求的资源文件的路径名称 | | $request\_uri | 请求的链接,包括$document\_uri 和$args | | $scheme | 请求的协议,如ftp, http, https | | $server\_addr | 服务器IP地址 | | $server\_name | 服务器的主机名 | | $server\_port | 服务器的端口号 | ### 1.2 全局配置 #### 1.2.1 main 段核心参数 #1. user: 指定运行 Nginx 的 woker 子进程的属主和属组,其中组可以不指定。 ...

2026年5月19日 · 13 分钟 · Yancey

Nginx日志按天切割、压缩,并自动清理 30 天前的旧日志文件

以下是一个完整的 Shell 脚本,用于实现 Nginx 日志按天切割、压缩,并自动清理 30 天前的旧日志文件。 脚本内容 #!/bin/bash # 定义日志目录 LOG_DIR="/var/log/nginx" Nginx 日志目录 DAYS_TO_KEEP=30 保留最近多少天的日志 # 检查日志目录是否存在 if [ ! -d "$LOG_DIR" ]; then echo "错误:日志目录 $LOG_DIR 不存在!" exit 1 fi # 获取昨天的日期(用于日志切割) YESTERDAY=$(date -d "yesterday" +%Y-%m-%d) # 切割日志文件 if [ -f "$LOG_DIR/access.log" ]; then mv "$LOG_DIR/access.log" "$LOG_DIR/access_$YESTERDAY.log" fi if [ -f "$LOG_DIR/error.log" ]; then mv "$LOG_DIR/error.log" "$LOG_DIR/error_$YESTERDAY.log" fi # 向 Nginx 主进程发送 USR1 信号,重新打开日志文件 if [ -f /var/run/nginx.pid ]; then kill -USR1 $(cat /var/run/nginx.pid) fi # 压缩昨天的日志文件 if [ -f "$LOG_DIR/access_$YESTERDAY.log" ]; then gzip "$LOG_DIR/access_$YESTERDAY.log" fi if [ -f "$LOG_DIR/error_$YESTERDAY.log" ]; then gzip "$LOG_DIR/error_$YESTERDAY.log" fi # 清理 30 天前的旧日志文件 find "$LOG_DIR" -type f -name "access_*.log.gz" -mtime +$DAYS_TO_KEEP -exec rm -f {} \; find "$LOG_DIR" -type f -name "error_*.log.gz" -mtime +$DAYS_TO_KEEP -exec rm -f {} \; # 记录操作日志 echo "$(date '+%Y-%m-%d %H:%M:%S') - 日志已切割、压缩并清理完成。" >> "$LOG_DIR/nginx_log_cleanup.log" 脚本说明 日志目录 LOG_DIR 定义了 Nginx 日志文件的存储目录,默认是 /var/log/nginx 。你可以根据实际路径修改。 日志切割 脚本会将当前的 access.log 和 error.log 文件重命名为 access_YYYY-MM-DD.log 和 error_YYYY-MM-DD.log ,其中 YYYY-MM-DD 是前一天的日期。 通过向 Nginx 主进程发送 USR1 信号,通知 Nginx 重新打开日志文件。 日志压缩 使用 gzip 命令将切割后的日志文件压缩为 .gz 格式,以节省磁盘空间。 日志清理 使用 find 命令查找并删除 30 天前的旧日志文件(文件名格式为 access_*.log.gz 和 error_*.log.gz )。 操作日志 每次运行脚本时,会将操作记录到 nginx_log_cleanup.log 中,方便后续查看。 使用方法 将脚本保存为文件,例如 /usr/local/bin/rotate_compress_clean_nginx_logs.sh 。 赋予脚本执行权限: chmod +x /usr/local/bin/rotate_compress_clean_nginx_logs.sh 3. 手动运行脚本测试: ```bash /usr/local/bin/rotate_compress_clean_nginx_logs.sh 如果需要每天自动运行,可以将脚本添加到 crontab 中。例如,每天凌晨 0 点运行: crontab -e 添加以下内容: ```bash 0 0 * * * /usr/local/bin/rotate_compress_clean_nginx_logs.sh 注意事项 权限问题 确保脚本以具有足够权限的用户(如 root )运行,否则可能无法删除、重命名或压缩日志文件。 测试 在生产环境中运行之前,建议先在测试环境中验证脚本的正确性。 日志轮换 如果已经配置了 logrotate 来管理 Nginx 日志,请确保脚本与 logrotate 的配置不冲突。 备份 如果需要保留某些重要日志,可以在删除前备份到其他位置。 压缩文件格式 脚本使用 gzip 压缩日志文件,压缩后的文件格式为 .gz 。如果需要其他格式(如 .zip ),可以修改脚本中的压缩命令。 通过这个脚本,你可以实现 Nginx 日志按天切割、压缩并自动清理旧日志,有效管理磁盘空间并保留必要的日志记录。

2026年5月19日 · 2 分钟 · Yancey

obsidian markdown 语法

所谓跨行 就是可以有很多行 这里是跨行注释: ### 图表 Obsidian 通过 [Mermaid](https://mermaid-js.github.io/) 及其所提供的[编译器](https://mermaid-js.github.io/mermaid-live-editor)来为用户提供图表的绘制功能。 <pre><code>```mermaid sequenceDiagram Alice->>+John: 嗨,John,最近怎样? Alice->>+John: John,听得到我说话吗? John-->>-Alice: 嗨,Alice,我能听到! John-->>-Alice: 最近不错! sequenceDiagram Alice->>+John: 嗨,John,最近怎样? Alice->>+John: John,听得到我说话吗? John-->>-Alice: 嗨,Alice,我能听到! John-->>-Alice: 最近不错! 开发小记 总的来说,我们在努力让 Obsidian 的语法不偏离正统的 Markdown 语法太多。总的来看,Obsidian 的语法大多还是基于 CommonMark,包括了一些 GitHub Flavored Markdown(GFM)和 LaTeX,以及我们特有的嵌入文件语法。

2026年5月19日 · 1 分钟 · Yancey

Openwrt opkg 批量更新软件

2026年5月19日 · 0 分钟 · Yancey

rclone 如何通过WebDAV 链接synology - Google Search

原文链接:https://www.google.com.hk/search?q=rclone+%E5%A6%82%E4%BD%95%E9%80%9A%E8%BF%87WebDAV+%E9%93%BE%E6%8E%A5synology&sca_esv=83052c8b1ac74795&sxsrf=ANbL-n5BC4hPxpV1mOeOmPy8duv6Y33HYA%3A1768261347558&source=hp&ei=44ZlaYezIPuwkPIP69j9-A4&iflsig=AFdpzrgAAAAAaWWU826MN4C3b7hbxJ2hfcqoNQwW4Ial&aep=22&udm=50&ved=0ahUKEwjHsPXrloeSAxV7GEQIHWtsH-8QteYPCBo&oq=&gs_lp=Egdnd3Mtd2l6IgBIAFAAWABwAHgAkAEAmAEAoAEAqgEAuAEByAEAmAIAoAIAmAMAkgcAoAcAsgcAuAcAwgcAyAcAgAgA&sclient=gws-wiz&mstk=AUtExfBNnod1Fl3lhxi24qi1VlhNecEVlzdnppauum_IMIQPAl_-iiXOX0dV3SAO9hq2vL-3KMCtZqVYOCQVmm8YFqKJV-LZ0hldX63pKz6rZO2LY9Cu3xfedbS67xB3mw4RfLHRZEaQJjh5Y-aUJys-75TYc1PmPt-O2kaDgswvzz_-goLSU72rgBjEyic4i-1EV_b-jdLFpQLSifJZTZNkDHOiEzLJ88pYSH_t-76pZOxLEReFa1ouvLdjltKW37o1v5vJJQvWCnGmIwbhW–uwOarA80kcPMJNnY&csuir=1&mtid=A4dlad3_IfDcptQPycflsAc rclone 如何通过WebDAV 链接synology 在 2026 年,使用 rclone 通过 WebDAV 连接 Synology (群晖) NAS 的过程主要分为两步:在 NAS 上启用服务以及在 rclone 中进行配置。 第一步:在 Synology NAS 上启用 WebDAV 安装套件 :登录 DSM,在 套件中心 (Package Center) 搜索并安装 WebDAV Server 。 启用端口 :打开 WebDAV Server 应用程序。 勾选 启用 HTTP (默认端口 5005) 或 启用 HTTPS (默认端口 5006,推荐使用 HTTPS 以保证数据安全)。 点击 应用 保存设置。 设置权限 : 前往 控制面板 > 用户账号 (或用户与群组) ,选择目标用户并点击 编辑 。 在 应用程序 选项卡中,确保该用户对 WebDAV Server 的访问权限为 允许 。 确保该用户对需要访问的 共享文件夹 拥有读写权限。 第二步:在 rclone 中配置连接 ...

2026年5月19日 · 4 分钟 · Yancey

sing-box 基础教程:sing-box 的配置方法和使用教程

sing-box 是什么 sing-box 是新一代超强通用代理工具,对标 *ray core 与 clash,而且它的性能以及支持的协议类型已经超过了 *ray core 与 clash。目前支持以下协议: 入站: Shadowsocks(including shadowsocks2022) Vmess Trojan Naive Hysteria ShadowTLS Vless Tuic Tun Redirect TProxy Socks HTTP 出站: Shadowsocks(including shadowsocks2022) Vmess Trojan Wireguard Hysteria ShadowTLS ShadowsocksR VLESS Tuic Hysteria2 Tor SSH DNS 除了命令行客户端以外,还提供了图形界面客户端,图形界面支持 Android、iOS、macOS 以及 Apple tvOS,Windows 暂时不支持,还在施工中 🚧 这简直就是魔法上网界的瑞士军刀啊!而且所有的客户端都是免费的,iOS 端也不用再买 Shadowrocket 小火箭等付费 App 了。再看看隔壁 Surge 的价格: 你玩我呢?? 还是 sing-box 香。本文将会手把手教大家如何使用 sing-box 来实现任意机器的全局透明代理。 sing-box 客户端下载 第一步先解决客户端下载的问题。 Android Android 客户端可以到 Play Store 中去下载: ...

2026年5月19日 · 11 分钟 · Yancey

Tmux 使用教程

2026年5月19日 · 0 分钟 · Yancey

记账神器Beancount教程

记账神器 Beancount 教程 记了几年账,工具用过随手记、Excel 甚至 Evernote。通常只记收支,不记收支对应的账户变化。其实知道这种方式很粗浅,容易错记、漏记,并且只能分析收支,无法跟踪个人财务现状。结果则是,虽然记了几年,却很少分析,个人财务状态也没有实质改善。 几个月前看到 byvoid 分享 Beancount,发现是一款记账神器。我从 7 月 1 日正式使用,如今也有 3 个多月,分享一些经验心得。 一、普通记账 vs 复式记账 Beancount 记账方法叫复式记账。 把只记录收支的方法称为普通记账(估计是多数人在用的方法)。那么复式记账,除了记录收支,还需记录账户(支付宝、银行卡等)的变动。以一个最简单的例子感受二者的区别: 假设:7 月 1 日,打车花费 30 元,使用银行卡支付。 普通记账一般包括日期、收支分类和金额,如下: 2019-08-28: 交通-打车 -200元 复式记账把账户变化也一并记账,如下: 2019-08-28: 交通-打车 200元 银行卡 -200元 复式记账会记录每笔交易的资金流动,各账户变化「有正有负,正负相等」。这便是复式记账的基本原理,称之为「会计恒等式」。这种方式能够保证记账准确无误,也能提供更详细的财务分析。 这句话中的账户是广义的,也可理解为分类,「银行卡」和「交通 - 打车」都是账户。下文中出现账户,若无特别说明,均指广义的账户。 二、Beancount 入门 复式记账是方法论,而 Beancount 则是支持复式记账的工具,Beancount 有以下三个优点: 完整个人财务数据比较敏感,Beancount 本地存储,不用担心数据泄露。 纯文本账本,不依赖特定软件,便于数据迁移。 Beancount 是开源软件。 接下来介绍 Beancount 的基础使用。 安装 beancount 是个 Python 项目,安装好 python 后,执行: pip install beancount pip install fava Fava 是关联软件,为 Beancount 提供一个更漂亮的 Web 界面(如图 1/2/3),建议同时安装。 ...

2026年5月19日 · 4 分钟 · Yancey