速查 04 · 命令行 / Shell
按问题索引。Windows 用户注意:本文以 Git Bash / Linux 语法为主,PowerShell 差异单独标注。
目录
文件与目录
bash
pwd # 当前路径
ls -la # 详细列表(含隐藏文件)
cd /d/path # Git Bash 进入 D 盘路径(重要!不是 D:)
cd ~ # 家目录
cd - # 回到上一个目录
mkdir -p a/b/c # 递归创建
touch file.txt # 创建空文件 / 更新时间戳
cp a.txt b.txt # 复制文件
cp -r dir1 dir2 # 复制目录
mv a.txt b.txt # 移动 / 重命名
rm file.txt # 删除文件
rm -rf dir # 递归强制删除 ⚠️ 危险
# 批量重命名(把 .jpeg 改成 .jpg)
for f in *.jpeg; do mv "$f" "${f%.jpeg}.jpg"; done
# 查看
cat file.txt # 全文
less file.txt # 分页查看(q 退出)
head -20 file.txt # 前 20 行
tail -20 file.txt # 后 20 行
tail -f app.log # 实时跟踪日志(排障神器)
wc -l file.txt # 行数
du -sh dir # 目录大小
df -h # 磁盘剩余查找与搜索
bash
# 按文件名找
find . -name "*.dart" # 当前目录下所有 .dart
find . -name "*.md" -not -path "*/node_modules/*"
# 按内容找(最强工具)
grep -rn "关键词" . # 递归搜索并显示行号
grep -rn "TODO" --include="*.dart" . # 限定文件类型
grep -rn "关键词" . --exclude-dir=node_modules
grep -i "keyword" file # 忽略大小写
grep -v "排除词" file # 反向匹配
grep -A3 -B3 "关键词" file # 显示前后 3 行上下文
# 找大文件(清理磁盘时实用)
find . -type f -size +100M
# 找最近修改的文件
find . -type f -mmin -60 # 60 分钟内改过的文本处理
bash
# sed 替换(批量改内容很常用)
sed -i 's/old/new/g' file.txt # Linux
sed -i '' 's/old/new/g' file.txt # macOS(需空参数)
sed -i 's/old/new/g' $(grep -rl "old" .) # 批量替换目录下所有
# awk 取列
awk '{print $1}' file # 第 1 列
awk -F',' '{print $2}' data.csv # 按逗号分割取第 2 列
# 排序去重统计
sort file | uniq -c | sort -rn # 出现次数排行
cut -d',' -f1 data.csv # 按分隔符取字段
# 管道组合(统计代码行数)
find . -name "*.dart" | xargs wc -l | tail -1
# 编码转换(Windows 常见:GBK → UTF-8)
iconv -f GBK -t UTF-8 file.txt > file_utf8.txt进程与端口
bash
# 查看端口占用(开发最常用)
# Linux / Git Bash:
netstat -ano | grep 5173
lsof -i :5173
# Windows PowerShell:
netstat -ano | findstr 5173
# 杀掉占用端口的进程
# Windows(PID 从上一条命令最后一列拿到):
taskkill /PID 12345 /F
# Linux / Git Bash:
kill -9 12345
# 进程查看
ps aux | grep node # 找进程
top / htop # 实时资源占用
# 后台运行与日志
nohup npm run dev > out.log 2>&1 &Flutter 构建卡住时:
bash
# 常见原因:有僵尸 flutter 进程占用锁
ps aux | grep flutter
kill -9 <PID>
rm -f $FLUTTER_ROOT/bin/cache/lockfile权限
bash
chmod +x script.sh # 加执行权限(脚本跑不了多半是缺这个)
chmod -R 755 dir
chown user:group file # 改所有者
sudo command # 以管理员执行(Linux/macOS)Windows 无 chmod;Git Bash 中脚本若提示 Permission denied,用 bash script.sh 直接调 bash 执行。
压缩与传输
bash
# 打包
tar -czf archive.tar.gz dir/ # 压缩
tar -xzf archive.tar.gz # 解压
tar -tzf archive.tar.gz # 查看内容不解压
zip -r a.zip dir/ / unzip a.zip
# 远程
ssh user@host
scp file.txt user@host:/path/ # 上传
scp user@host:/path/file.txt ./ # 下载
rsync -avz src/ user@host:/dst/ # 增量同步(推荐)Git Bash 与 PowerShell 差异
| 场景 | Git Bash | PowerShell |
|---|---|---|
| 进入 D 盘 | cd /d/project | cd D:\project 或 Set-Location |
| 环境变量 | export VAR=1 | $env:VAR='1' |
| 查看环境变量 | echo $VAR | $env:VAR |
| 命令连接 | && | ;(PS7 支持 &&) |
| 删除 | rm -rf dir | Remove-Item -Recurse -Force dir |
| 找进程 | ps aux | grep | Get-Process |
| 查找文本 | grep | Select-String / findstr |
| 家目录 | ~ | $HOME |
中文处理:PowerShell 默认 GBK,处理 UTF-8 中文易乱码。涉及中文(尤其 git 提交)优先用 Git Bash。
powershell
# 本机 Git Bash 路径(非默认安装位置)
& "D:\sortware\Git\bin\bash.exe"开发常用
bash
# Node / npm
npm install # 装依赖
npm ci # 按 lock 文件精确安装(CI 用)
npm run <script> # 跑脚本
npm outdated # 查看可升级
npx <pkg> # 临时执行(不装到项目)
# Flutter(本项目统一加 fvm 前缀,见 16 篇)
fvm flutter pub get
fvm flutter run
fvm flutter analyze lib
fvm flutter test
fvm dart run build_runner build --delete-conflicting-outputs
# 端口占用导致启动失败
lsof -ti:5173 | xargs kill -9 # 一键杀掉 5173 端口占用
# 查看命令位置与版本
which node
node -v / flutter --version实用的小技巧
bash
# 上一条命令(会忘,务必记住)
sudo !! # 上条命令加 sudo 重跑(Linux/macOS)
!$ # 上条命令的最后一个参数
!! # 上一条命令
# 历史命令搜索
Ctrl + R # 反向搜索历史命令(输入关键词)
history | grep npm
# 别名(写入 ~/.bashrc 永久生效)
alias ll='ls -la'
alias gs='git status'