💡 高级技巧
大家好,我是长安!这一章是长安压箱底的效率技巧,学会这些让你在终端里如鱼得水。
🎯 本章目标
跟着长安读完这一章,你将学会:
- 命令行效率技巧
- 环境变量配置
- 别名和函数
- 终端美化
⚡ 命令行效率技巧
快捷键大全
| 快捷键 | 功能 |
|---|---|
Ctrl + A | 移动到行首 |
Ctrl + E | 移动到行尾 |
Ctrl + U | 删除到行首 |
Ctrl + K | 删除到行尾 |
Ctrl + W | 删除前一个单词 |
Ctrl + Y | 粘贴刚删除的内容 |
Ctrl + L | 清屏 |
Ctrl + R | 搜索历史命令 |
Ctrl + C | 终止当前命令 |
Ctrl + Z | 暂停当前命令 |
Ctrl + D | 退出终端 |
Tab | 自动补全 |
Tab Tab | 显示所有补全选项 |
历史命令
# 查看历史命令
history
# 搜索历史(Ctrl+R 后输入关键词)
(reverse-i-search)`keyword':
# 执行上一条命令
!!
# 执行历史中第 n 条命令
!n
!100
# 执行以某字符开头的最近命令
!vim # 执行最近的 vim 命令
# 上一条命令的最后一个参数
!$
# 上一条命令的所有参数
!*
命令替换技巧
# 快速修正上一条命令
vim /etc/nignx/nginx.conf # 打错了
^nignx^nginx^ # 替换后重新执行
# 使用上一条命令的参数
vim /etc/nginx/nginx.conf
cat !$ # cat /etc/nginx/nginx.conf
大括号展开
# 创建多个文件
touch file_{1..5}.txt
# 创建:file_1.txt file_2.txt file_3.txt file_4.txt file_5.txt
# 创建目录结构
mkdir -p project/{src,lib,bin,docs}
# 备份文件
cp config.conf{,.bak}
# 等于:cp config.conf config.conf.bak
# 批量重命名
mv file.{txt,md}
# 等于:mv file.txt file.md
命令组合
# && - 前一个成功才执行后一个
apt update && apt upgrade
# || - 前一个失败才执行后一个
ping -c 1 server || echo "连接失败"
# ; - 无论成功失败都执行
cd /tmp; ls; pwd
# () - 在子 shell 中执行(不影响当前环境)
(cd /tmp && ls)
pwd # 还在原目录
🎨 别名(Alias)
创建别名
# 临时别名
alias ll='ls -la'
alias cls='clear'
alias ..='cd ..'
# 查看所有别名
alias
# 删除别名
unalias ll
永久别名
编辑 ~/.bashrc 或 ~/.bash_aliases:
# 常用别名
alias ll='ls -la'
alias la='ls -A'
alias l='ls -CF'
alias cls='clear'
# 目录导航
alias ..='cd ..'
alias ...='cd ../..'
alias ....='cd ../../..'
# 安全操作
alias rm='rm -i'
alias cp='cp -i'
alias mv='mv -i'
# 快捷命令
alias update='sudo apt update && sudo apt upgrade -y'
alias ports='ss -tlnp'
alias myip='curl ipinfo.io/ip'
# Git 快捷
alias gs='git status'
alias ga='git add'
alias gc='git commit'
alias gp='git push'
alias gl='git log --oneline'
使生效:
source ~/.bashrc
🔧 环境变量
查看环境变量
# 查看所有环境变量
env
printenv
# 查看特定变量
echo $PATH
echo $HOME
echo $USER
设置环境变量
# 临时设置(仅当前终端)
export MY_VAR="hello"
export PATH=$PATH:/new/path
# 永久设置(编辑 ~/.bashrc)
echo 'export MY_VAR="hello"' >> ~/.bashrc
source ~/.bashrc
重要环境变量
| 变量 | 含义 |
|---|---|
$PATH | 命令搜索路径 |
$HOME | 用户主目录 |
$USER | 当前用户名 |
$PWD | 当前目录 |
$SHELL | 当前 Shell |
$LANG | 语言设置 |
$EDITOR | 默认编辑器 |
自定义 PATH
# 在 ~/.bashrc 中添加
export PATH=$PATH:~/bin
export PATH=$PATH:~/.local/bin
# 或者放在最前面(优先查找)
export PATH=~/bin:$PATH
📜 Shell 函数
比别名更强大的是函数:
# 在 ~/.bashrc 中添加
# 创建并进入目录
mkcd() {
mkdir -p "$1" && cd "$1"
}
# 解压万能函数
extract() {
if [ -f "$1" ]; then
case "$1" in
*.tar.bz2) tar xjf "$1" ;;
*.tar.gz) tar xzf "$1" ;;
*.tar.xz) tar xJf "$1" ;;
*.bz2) bunzip2 "$1" ;;
*.gz) gunzip "$1" ;;
*.tar) tar xf "$1" ;;
*.zip) unzip "$1" ;;
*.rar) unrar x "$1" ;;
*.7z) 7z x "$1" ;;
*) echo "不支持的格式: $1" ;;
esac
else
echo "文件不存在: $1"
fi
}
# 快速备份
backup() {
cp "$1" "$1.bak.$(date +%Y%m%d_%H%M%S)"
}
# 查找大文件
findlarge() {
find . -type f -size +${1:-100M} -exec ls -lh {} \;
}
# 查看天气
weather() {
curl "wttr.in/${1:-Beijing}"
}
🎨 终端美化
安装 Zsh
# 安装 zsh
sudo apt install zsh -y
# 设为默认 shell
chsh -s $(which zsh)
# 重新登录后生效
安装 Oh My Zsh
# 安装 oh-my-zsh
sh -c "$(curl -fsSL https://raw.githubusercontent.com/ohmyzsh/ohmyzsh/master/tools/install.sh)"
配置 Oh My Zsh
编辑 ~/.zshrc:
# 主题(推荐)
ZSH_THEME="agnoster"
# 或者更简洁的
ZSH_THEME="robbyrussell"
# 插件
plugins=(
git
docker
sudo
zsh-autosuggestions
zsh-syntax-highlighting
)
安装有用的插件
# 命令自动建议
git clone https://github.com/zsh-users/zsh-autosuggestions ${ZSH_CUSTOM:-~/.oh-my-zsh/custom}/plugins/zsh-autosuggestions
# 语法高亮
git clone https://github.com/zsh-users/zsh-syntax-highlighting ${ZSH_CUSTOM:-~/.oh-my-zsh/custom}/plugins/zsh-syntax-highlighting
美化 Bash(不用 Zsh)
编辑 ~/.bashrc,添加彩色提示符:
# 彩色提示符
PS1='\[\033[01;32m\]\u@\h\[\033[00m\]:\[\033[01;34m\]\w\[\033[00m\]\$ '
# 或者带 Git 分支
parse_git_branch() {
git branch 2> /dev/null | sed -e '/^[^*]/d' -e 's/* \(.*\)/ (\1)/'
}
PS1='\[\033[01;32m\]\u@\h\[\033[00m\]:\[\033[01;34m\]\w\[\033[33m\]$(parse_git_branch)\[\033[00m\]\$ '
🛠️ 实用工具推荐
fzf - 模糊搜索
# 安装
sudo apt install fzf
# 使用:搜索文件
fzf
# Ctrl+R 搜索历史(安装后自动增强)
tldr - 简化版 man
# 安装
sudo apt install tldr
# 使用
tldr tar
tldr rsync
bat - 带语法高亮的 cat
# 安装
sudo apt install bat
# 使用(Ubuntu 中命令是 batcat)
batcat file.py
exa - 更好的 ls
# 安装
sudo apt install exa
# 使用
exa -la
exa --tree
htop - 更好的 top
sudo apt install htop
htop
ncdu - 磁盘使用分析
sudo apt install ncdu
ncdu /home
💾 配置文件备份
创建 dotfiles 仓库
# 创建目录
mkdir ~/dotfiles
# 复制配置文件
cp ~/.bashrc ~/dotfiles/
cp ~/.vimrc ~/dotfiles/
cp ~/.gitconfig ~/dotfiles/
# 初始化 Git
cd ~/dotfiles
git init
git add .
git commit -m "Initial dotfiles"
# 推送到 GitHub
git remote add origin git@github.com:username/dotfiles.git
git push -u origin main
恢复配置
# 克隆仓库
git clone git@github.com:username/dotfiles.git ~/dotfiles
# 创建软链接
ln -sf ~/dotfiles/.bashrc ~/.bashrc
ln -sf ~/dotfiles/.vimrc ~/.vimrc
📝 本章小结
最有用的技巧
| 技巧 | 说明 |
|---|---|
Ctrl + R | 搜索历史命令 |
Tab | 自动补全 |
!! | 重复上一条命令 |
!$ | 上一条命令的最后参数 |
alias | 创建命令快捷方式 |
推荐配置
# ~/.bashrc 中添加
# 别名
alias ll='ls -la'
alias ..='cd ..'
alias update='sudo apt update && sudo apt upgrade -y'
# 函数
mkcd() { mkdir -p "$1" && cd "$1"; }
# 美化
PS1='\[\033[01;32m\]\u@\h\[\033[00m\]:\[\033[01;34m\]\w\[\033[00m\]\$ '
推荐工具
| 工具 | 用途 |
|---|---|
zsh + oh-my-zsh | 更好的 Shell |
fzf | 模糊搜索 |
tldr | 简化版手册 |
htop | 进程监控 |
ncdu | 磁盘分析 |
🚀 下一步
学会了这些高级技巧,最后跟着长安来看看 故障排查,遇到问题不再慌!
—— 编程指南社区 · 长安
