实战
alias ll='ls -lh'
alias la='ls -la'
alias ..='cd ..'
alias ...='cd ../..'
alias gs='git status'
alias gd='git diff'
alias dc='docker compose'
# 看所有
alias
# 看某个
alias ll
# 取消
unalias ll
持久化
写到 ~/.bashrc(bash)或 ~/.zshrc(zsh):
echo "alias ll='ls -lh'" >> ~/.bashrc
source ~/.bashrc # 让当前 shell 生效
实用别名集
# 文件操作(防误删)
alias rm='rm -i' # 删前问
alias cp='cp -i'
alias mv='mv -i'
# ls 系列
alias ll='ls -lh'
alias la='ls -lha'
alias l='ls'
alias lt='ls -ltr' # 按时间排序
# 导航
alias ..='cd ..'
alias ...='cd ../..'
alias ....='cd ../../..'
# git
alias g='git'
alias gs='git status -sb'
alias gd='git diff'
alias gco='git checkout'
alias gl='git log --oneline --graph --decorate'
# 系统
alias df='df -h'
alias du='du -h'
alias free='free -h'
alias mkdir='mkdir -p'
alias h='history'
alias c='clear'
# 网络
alias ports='sudo ss -tlnp'
alias myip='curl -s ifconfig.me'
# 危险命令加确认(root 用)
alias sudo='sudo ' # ★ 让 alias 能跟在 sudo 后展开
sudo + alias 的坑
alias ll='ls -lh'
sudo ll # ❌ 不展开——sudo 不查 alias
解决:
alias sudo='sudo ' # 注意末尾空格——让下一个词也走 alias
sudo ll # ✓ 现在能用
看命令的真实身份
type ls
# ls is aliased to `ls --color=auto'
type -a ls
# ls is aliased to `ls --color=auto'
# ls is /usr/bin/ls
\ls # 临时绕过 alias(前面加反斜杠)
command ls # 同上
/usr/bin/ls # 绝对路径
function(更灵活的"alias")
alias 只能简单替换,不能接参数处理:
# ❌ alias 做不到
alias mkcd='mkdir $1 && cd $1'
# ✓ 用函数
mkcd() {
mkdir -p "$1" && cd "$1"
}
坑
- alias 只在交互式 shell 默认生效——脚本里需要
shopt -s expand_aliases - alias 会覆盖系统命令——
alias ls='ls --color'是常见做法,但深度别名可能让人困惑 - alias 不能传参——要传参用 function