为什么要学习终端
终端(Terminal)是开发者最重要的工具之一。掌握终端操作可以:
- 大幅提升工作效率
- 自动化重复任务
- 更好地理解系统运作
- 使用强大的命令行工具
基础导航命令
目录操作
# 查看当前目录
pwd
# 列出文件和目录
ls # 基础列表
ls -la # 显示所有文件(包括隐藏)的详细信息
ls -lh # 人类可读的文件大小
# 切换目录
cd /path/to/directory # 进入指定目录
cd .. # 返回上级目录
cd ~ # 进入用户主目录
cd - # 返回上一个目录
文件操作
# 创建文件和目录
touch file.txt # 创建空文件
mkdir directory # 创建目录
mkdir -p path/to/dir # 创建多级目录
# 复制文件和目录
cp source.txt dest.txt # 复制文件
cp -r source/ dest/ # 递归复制目录
# 移动和重命名
mv old.txt new.txt # 重命名文件
mv file.txt /path/to/ # 移动文件
# 删除文件和目录
rm file.txt # 删除文件
rm -r directory/ # 递归删除目录
rm -rf directory/ # 强制递归删除(慎用)
文件内容查看
# 查看文件内容
cat file.txt # 显示整个文件
less file.txt # 分页查看(q 退出)
head -n 10 file.txt # 显示前 10 行
tail -n 10 file.txt # 显示后 10 行
tail -f log.txt # 实时监控文件变化
# 搜索文件内容
grep "pattern" file.txt # 搜索包含 pattern 的行
grep -r "pattern" directory/ # 递归搜索目录
grep -i "pattern" file.txt # 忽略大小写
grep -n "pattern" file.txt # 显示行号
权限管理
# 查看权限
ls -l file.txt
# 修改权限
chmod 755 script.sh # 设置权限(rwxr-xr-x)
chmod +x script.sh # 添加执行权限
chmod -w file.txt # 移除写权限
# 修改所有者
chown user:group file.txt # 改变文件所有者
进程管理
# 查看进程
ps aux # 显示所有进程
ps aux | grep node # 查找特定进程
top # 实时进程监控
htop # 更好的进程监控(需安装)
# 管理进程
kill PID # 终止进程
kill -9 PID # 强制终止进程
killall process_name # 终止所有同名进程
# 后台任务
command & # 在后台运行命令
jobs # 查看后台任务
fg %1 # 将任务调到前台
bg %1 # 将任务放到后台
网络操作
# 网络请求
curl https://api.example.com # GET 请求
curl -X POST -d "data" url # POST 请求
wget https://example.com/file.zip # 下载文件
# 网络诊断
ping google.com # 测试连接
traceroute google.com # 追踪路由
netstat -tuln # 查看端口占用
lsof -i :3000 # 查看特定端口
环境变量
# 查看环境变量
echo $PATH # 显示 PATH 变量
env # 显示所有环境变量
printenv # 同上
# 设置环境变量
export VAR_NAME=value # 设置临时环境变量
echo 'export VAR=value' >> ~/.bashrc # 永久设置(bash)
echo 'export VAR=value' >> ~/.zshrc # 永久设置(zsh)
source ~/.bashrc # 重新加载配置
常用快捷键
光标移动
Ctrl + A
- 移到行首Ctrl + E
- 移到行尾Alt + ←/→
- 按单词移动Ctrl + U
- 删除到行首Ctrl + K
- 删除到行尾Ctrl + W
- 删除前一个单词
历史记录
↑/↓
- 浏览历史命令Ctrl + R
- 搜索历史命令!!
- 执行上一条命令!$
- 上一条命令的最后一个参数history
- 显示命令历史
进程控制
Ctrl + C
- 终止当前进程Ctrl + Z
- 暂停当前进程Ctrl + D
- 退出终端/EOFCtrl + L
- 清屏(同 clear)
管道和重定向
# 管道(将输出作为下一个命令的输入)
ls -la | grep ".txt" # 列出所有 txt 文件
cat file.txt | wc -l # 统计行数
ps aux | grep node | awk '{print $2}' # 获取进程 ID
# 重定向
command > output.txt # 输出到文件(覆盖)
command >> output.txt # 输出到文件(追加)
command 2> error.txt # 错误输出到文件
command &> all.txt # 所有输出到文件
command < input.txt # 从文件读取输入
实用技巧
命令别名
# 创建别名
alias ll='ls -la'
alias gs='git status'
alias dc='docker-compose'
# 永久保存别名
echo "alias ll='ls -la'" >> ~/.bashrc
批量操作
# 批量重命名
for file in *.txt; do mv "$file" "${file%.txt}.md"; done
# 查找并执行
find . -name "*.log" -exec rm {} \;
find . -type f -name "*.js" | xargs grep "TODO"
# 批量替换
sed -i 's/old/new/g' file.txt # 文件内替换
find . -name "*.txt" -exec sed -i 's/old/new/g' {} \;
SSH 连接
# 基础连接
ssh user@hostname
ssh -p 2222 user@hostname # 指定端口
# SSH 密钥
ssh-keygen -t rsa -b 4096 # 生成密钥对
ssh-copy-id user@hostname # 复制公钥到服务器
推荐工具
Shell 增强
- Oh My Zsh - Zsh 配置框架
- Fish - 友好的交互式 Shell
- Starship - 跨 Shell 的提示符
终端工具
- tmux - 终端复用器
- fzf - 模糊查找工具
- ripgrep (rg) - 更快的 grep
- bat - 更好的 cat
- exa - 更好的 ls
- htop - 更好的 top
开发工具
- git - 版本控制
- docker - 容器化
- nvm - Node 版本管理
- pyenv - Python 版本管理
学习资源
- The Art of Command Line - 命令行艺术
- explainshell.com - 解释 Shell 命令
- tldr.sh - 简化的 man pages
- Linux Command - Linux 命令教程
总结
终端是开发者的利器,掌握基础命令只是开始。随着使用的深入,你会发现终端的强大之处。建议:
- 从基础开始 - 先掌握导航和文件操作
- 多加练习 - 日常工作中尽量使用终端
- 学习脚本 - 编写 Shell 脚本自动化任务
- 定制环境 - 配置适合自己的终端环境
- 持续学习 - 探索新工具和技巧
记住:终端的学习曲线可能较陡,但投入的时间会获得巨大回报。