alias命令用于创建命令别名,可以为常用的复杂命令创建简短易记的别名,提高工作效率。别名只在当前shell会话中有效,除非添加到配置文件中。
# 创建别名
alias 别名='原始命令 [参数]'
# 查看所有别名
alias
# 查看特定别名
alias 别名
# 删除别名
unalias 别名
~/.bashrc或~/.bash_aliases文件中\命令或command 命令可以绕过别名执行原始命令| 命令 | 说明 |
|---|---|
alias |
不带参数时显示所有已定义的别名 |
alias 别名='命令' |
定义一个新别名 |
alias 别名 |
查看指定别名的定义 |
unalias 别名 |
删除指定的别名 |
unalias -a |
删除所有别名 |
为常用命令创建简短别名:
# 为ls -la创建别名ll
$ alias ll='ls -la'
# 使用别名
$ ll
total 100
drwxr-xr-x 5 user user 4096 Mar 10 10:00 .
drwxr-xr-x 18 user user 4096 Mar 9 09:00 ..
-rw-r--r-- 1 user user 220 Mar 10 09:30 .bashrc
-rw-r--r-- 1 user user 3771 Mar 10 09:30 .bash_aliases
# 查看别名定义
$ alias ll
alias ll='ls -la'
创建带固定参数的别名:
# 总是以人类可读格式查看磁盘空间
$ alias df='df -h'
# 总是带颜色显示ls输出
$ alias ls='ls --color=auto'
# 安全删除(总是询问确认)
$ alias rm='rm -i'
# 使用示例
$ df
Filesystem Size Used Avail Use% Mounted on
/dev/sda1 20G 12G 7.2G 62% /
/dev/sda2 50G 25G 22G 54% /home
将多个命令组合成一个别名:
# 更新系统并清理
$ alias update='sudo apt update && sudo apt upgrade -y && sudo apt autoremove -y'
# 查找进程并杀掉
$ alias killps='ps aux | grep $1 | grep -v grep | awk '\''{print $2}'\'' | xargs kill -9'
# 查看前10个内存使用进程
$ alias topmem='ps aux --sort=-%mem | head -11'
# 压缩当前目录
$ alias targz='tar -czvf $(basename $(pwd)).tar.gz .'
使用不带参数的alias命令:
$ alias
alias ll='ls -la'
alias ls='ls --color=auto'
alias rm='rm -i'
alias update='sudo apt update && sudo apt upgrade -y && sudo apt autoremove -y'
alias ..='cd ..'
alias ...='cd ../..'
alias grep='grep --color=auto'
使用unalias命令删除别名:
# 删除ll别名
$ unalias ll
# 验证是否删除
$ alias ll
bash: alias: ll: not found
# 删除所有别名
$ unalias -a
# 验证
$ alias
# 无输出,表示所有别名已删除
将别名添加到配置文件中:
# 编辑bash配置文件
$ nano ~/.bashrc
# 在文件末尾添加别名
alias ll='ls -la'
alias ls='ls --color=auto'
alias grep='grep --color=auto'
alias rm='rm -i'
alias df='df -h'
alias du='du -h'
# 或者使用单独的别名文件
$ echo "alias ll='ls -la'" >> ~/.bash_aliases
# 使配置立即生效
$ source ~/.bashrc
# 或者
$ . ~/.bashrc
当别名覆盖了原始命令时如何执行原始命令:
# 假设设置了别名
$ alias ls='ls --color=auto -la'
# 方法1:使用反斜杠
$ \ls
# 方法2:使用command命令
$ command ls
# 方法3:使用完整路径
$ /bin/ls
# 方法4:使用引号
$ "ls"
一些提高效率的常用别名:
# 导航相关
alias ..='cd ..'
alias ...='cd ../..'
alias ....='cd ../../..'
alias ~='cd ~'
alias -- -='cd -'
# Git相关
alias gs='git status'
alias ga='git add'
alias gc='git commit'
alias gp='git push'
alias gl='git log --oneline --graph --decorate'
# Docker相关
alias dps='docker ps'
alias dls='docker ps -a'
alias dim='docker images'
alias drm='docker rm'
alias drmi='docker rmi'
# 系统监控
alias meminfo='free -m -l -t'
alias psmem='ps auxf | sort -nr -k 4'
alias pscpu='ps auxf | sort -nr -k 3'
alias cpuinfo='lscpu'
alias disk='du -h --max-depth=1'
# 网络相关
alias ports='netstat -tulanp'
alias ipinfo='curl ipinfo.io'
alias myip='curl ifconfig.me'
使用函数创建更复杂的别名:
# 在.bashrc中定义函数
mkcd() {
mkdir -p "$1" && cd "$1"
}
# 或者作为别名
alias mkcd='_(){ mkdir -p "$1" && cd "$1"; }; _'
# 使用
$ mkcd new_directory
# 创建目录并立即进入
# 另一个例子:查找并编辑文件
fe() {
local file
file=$(find . -type f -name "*$1*" | fzf)
[ -n "$file" ] && ${EDITOR:-vim} "$file"
}
alias fe=fe
alias ls='rm -rf /')shopt -s expand_aliases启用alias ls='ls -la')~/.bash_aliases中,然后在~/.bashrc中引用
if [ -f ~/.bash_aliases ]; then
. ~/.bash_aliases
fi
A: 别名更适合简单的命令替换,函数可以处理更复杂的逻辑和参数。别名在解析阶段展开,函数在执行阶段调用。
A: 将别名定义添加到~/.bashrc、~/.bash_profile或~/.bash_aliases文件中。
A: 在非交互式shell(如脚本)中,别名默认是禁用的。可以在脚本开头添加shopt -s expand_aliases启用别名。
A: 使用type 别名或alias 别名查看别名定义。
A: 别名本身不支持参数,但可以在别名定义中使用$1、$2等位置参数,不过更复杂的情况建议使用函数。
unalias - 删除别名type - 显示命令类型(别名、函数、内建命令等)source - 执行脚本文件(用于加载别名配置)bashrc - bash配置文件function - 定义shell函数(用于更复杂的别名)export - 设置环境变量(可用于设置别名)