Class5-命令行环境 by The Missing Semester of Your CS Education
目录
- 任务控制
- 终端多路复用
- 别名与配置文件
- 远程设备操作
- 进阶工具推荐
任务控制
信号机制
- SIGINT (Ctrl+C):请求中断进程
- SIGQUIT (Ctrl+):强制终止进程
- SIGTSTP (Ctrl+Z):暂停进程
- SIGCONT:恢复进程
import signal, timedef handler(signum, time):print("\nReceived SIGINT but ignoring")signal.signal(signal.SIGINT, handler)
i = 0
while True:time.sleep(0.1)print(f"\r{i}", end="")i += 1
进程管理命令
命令 | 功能 |
---|
jobs | 查看后台任务 |
fg %n | 恢复第n个任务到前台 |
bg %n | 后台继续运行任务 |
kill -STOP | 暂停进程 |
nohup | 忽略 SIGHUP 信号保持进程运行 |
$ sleep 1000
^Z
[1] + suspended sleep 1000
$ bg %1
$ jobs
[1] + running sleep 1000
终端多路复用(tmux)
核心概念
- 会话:独立的工作环境
- 窗口:类似浏览器标签页
- 面板:窗口内的分屏
常用快捷键
快捷键 | 功能 |
---|
Ctrl+b d | 分离当前会话 |
Ctrl+b c | 新建窗口 |
Ctrl+b " | 水平分割面板 |
Ctrl+b % | 垂直分割面板 |
Ctrl+b z | 最大化/恢复当前面板 |
Ctrl+b [ | 进入滚动模式 |
tmux new -s mysession
tmux ls
tmux a -t mysession
别名与配置文件
高效别名配置
alias ll="ls -lh"
alias gs="git status"
alias vim="nvim"
alias dc="cd"
alias rm="rm -i"
alias cp="cp -i"
alias mv="mv -i"
Dotfiles 管理技巧
- 使用 Git 进行版本控制
- 符号链接统一配置
- 条件判断适配不同系统
if [[ "$(uname)" == "Linux" ]]; thenalias open="xdg-open"
elif [[ "$OSTYPE" == "darwin"* ]]; thenalias ls="ls -G"
fi
远程设备操作
SSH 高级配置
Host myserverHostName 192.168.1.100User adminPort 2222IdentityFile ~/.ssh/id_ed25519LocalForward 9999 localhost:8888
密钥管理
ssh-keygen -t ed25519 -a 100
ssh-copy-id -i ~/.ssh/id_ed25519.pub user@host
端口转发类型
类型 | 命令示例 | 应用场景 |
---|
本地转发 | ssh -L 9999:localhost:8888 | 访问远程服务 |
远程转发 | ssh -R 9000:localhost:3000 | 暴露本地服务到外网 |
进阶工具推荐
性能工具
- Mosh:支持漫游的 SSH 替代方案
- rsync:高效文件同步
- sshfs:挂载远程目录到本地
Shell 增强
工具 | 特点 |
---|
oh-my-zsh | 丰富的主题和插件 |
fish shell | 自动建议和语法高亮 |
Alacritty | GPU 加速的终端模拟器 |
sh -c "$(curl -fsSL https://raw.github.com/ohmyzsh/ohmyzsh/master/tools/install.sh)"
最佳实践提示
- 定期备份 dotfiles 配置
- 使用 SSH 密钥代替密码认证
- 为长期任务搭配使用
nohup
和 tmux
- 在脚本中添加
set -eo pipefail
增强错误处理