Linux 新手村Linux 新手村
🏠 首页
📖 教程
  • Linux 官网
  • Ubuntu 官网
  • CentOS 官网
🏠 首页
📖 教程
  • Linux 官网
  • Ubuntu 官网
  • CentOS 官网
  • 🚀 入门篇 - 欢迎来到 Linux 世界

    • 📚 长安的教程导航
    • 🐧 什么是 Linux?
    • 💿 安装 Linux
    • 🎉 首次开机
  • 🎯 基础篇 - 必备生存技能

    • ⌨️ 基础命令
    • 🗂️ 文件系统
    • 📝 文件操作
    • 👥 用户与权限
  • ⚔️ 进阶篇 - 成为高手之路

    • ⚔️ Vim 编辑器
    • 🤖 Shell 脚本
    • ⚙️ 进程与服务
    • 🌐 网络基础
  • 🏆 高级篇 - 突破自我

    • 💡 高级技巧
    • 🔧 故障排查
    • 🎭 日常案例与血泪教训

💡 高级技巧

大家好,我是长安!这一章是长安压箱底的效率技巧,学会这些让你在终端里如鱼得水。

🎯 本章目标

跟着长安读完这一章,你将学会:

  • 命令行效率技巧
  • 环境变量配置
  • 别名和函数
  • 终端美化

⚡ 命令行效率技巧

快捷键大全

快捷键功能
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磁盘分析

🚀 下一步

学会了这些高级技巧,最后跟着长安来看看 故障排查,遇到问题不再慌!

—— 编程指南社区 · 长安

最后更新: 2025/12/1 15:56
Next
🔧 故障排查