Skip to main content

13 posts tagged with "Terminal"

View All Tags
· 6 min read

grep 搜文件内容、rg 是 grep 的现代升级、glob 匹配文件名——三者名字长得像,但 各管一摊

  1. grep:POSIX 自带文本搜索,-r/-n/-i/-E 是高频选项
  2. rg (ripgrep):Rust 写的现代版,默认跳过 .gitignore 和二进制
  3. glob:shell 通配符(*/?/[...]),没加引号会被 shell 展开
  4. globstarshopt -s globstar 后,** 才递归匹配任意层级
  5. find -name:find 自己的类 glob 语法,不走 shell 展开
  6. 别乱混grep *.js 被 shell 拆成多文件,只搜当前目录
· 6 min read

iTerm2 历史丢失是两套独立机制,默认都是真丢弃

  1. scrollback 输出:默认 ~2000 行,clear/CLI 会发 CSI-3J 主动清空
  2. zsh history:HISTSIZE/SAVEHIST 默认 500/1000,只 exit 时写盘
  3. tmux 独立 history-limit,外层 iTerm scrollback 直接失效
  4. 已丢内容就是真丢,macOS 不留终端文本
  5. 长期任务用 script 录屏,iTerm 崩溃也能找回
  6. 关闭 Tab 自动存盘:Save scrollback to file when window is closed,默认目录 ~/Library/Application Support/iTerm2/Scrollback/
· 3 min read

线上排查端口冲突时,查进程、杀进程、防复活是三个标准动作。

  • 查端口lsof -i :端口 一把梭,比 netstat/ss 更直观。
  • 一行 killkill -9 $(lsof -ti :端口),查 PID 和杀进程一条命令搞定。
  • 一行 killlsof -ti :端口 | xargs kill -9,查 PID 和杀进程一条命令搞定。
  • 杀了又活大概率是守护程序自动拉起,先查 systemd/supervisor/pm2。
  • 根本解法:直接停掉守护服务再操作,从源头控制,不跟重启赛跑
· 4 min read

tree 把一个目录变成终端里的一棵树。日常使用记住两个参数就够了。

  1. -L N 限制展示层级,默认无限制,深层目录直接输出爆炸。
  2. -a 控制隐藏文件可见性,默认不显示 . 开头的文件和目录。
  3. tree -L 2 -a 是覆盖大多数日常开发场景的组合。
  4. -d 只看目录骨架,跳过文件层噪音。
  5. -I 'node_modules|.git' 排除指定目录,tree 输出立刻清爽。
  6. macOS 不自带,brew install tree 一行安装。
· 3 min read

sed 是 Linux / macOS 终端下最常用的 流式文本批量处理工具,不用打开文件就能完成全局修改。

  1. 核心功能:逐行扫描文本,执行查找、替换、删除、插入等操作
  2. 典型场景:批量修改代码/配置文件、日志过滤、文本格式转换
  3. 语法模板:sed -i 's|原字符串|新字符串|g' 文件名,全程无交互
  4. Mac 注意:必须加空参数 '',否则直接报错
· 3 min read

Linux 中有 2 种链接方式,理解它们的区别是掌握文件系统的基础:

  1. 硬链接:同一个文件,多个文件名(共用 inode),删除本体不影响其他链接

  2. 软链接(符号链接):快捷方式,存储路径指向原文件,删本体就失效

硬链接不能跨分区、不能链接目录;软链接可以跨分区、可以链接目录。