对于 Linux 的运维人员来说,免不了经常敲一大堆命令,有些命令很长或者选项要经常被用到,重复性的输入很长的命令或选项显得效率十分低下,这时候我们使用命令别名来代替复杂的命令就非常有用了。
如何设置一个别名
我们可以在命令行使用如下格式定义一个别名
1 | alias CMDALIAS='COMMAND [options] [arguments]' |
alias
是一个 shell 内置命令CMDALIAS
是用户为命令设置的自定义别名,可以当做命令来执行COMMAND [options] [arguments]
被别名的命令,即实际要执行的命令及其要用到的选项
每次当输入 CMDALIAS
时,Bash 将会把这个别名替换成实际的命令和相应的选项。
并且这里要注意的是,在 =
等号两边不应该有空格,如果被别名的命令由多个选项或者子命令组成,需要使用引号将其括起来。
在命令行中定义的别名仅在当前 shell 生命周期中有效,作用域仅为当前 shell 进程。也就是说在退出当前 shell 之前别名都是生效的,一旦退出就不会再生效了。因此我们可以在 ~/.bash_profile
、~/.bashrc
这两个文件中使用同样的格式来定义命令别名,一旦定义之后,在下次登录以及以后登录都会永久生效。
如何查看所有的命令别名
直接执行 alias
命令,不加任何参数即可
1 | [user1@study ~]$ alias |
临时禁用命令别名,使用原命令本身
我们对 cat
命令做一个别名,让它自动加上 -n
选项以显示行号
1 | [user1@study ~]$ alias cat='cat -n' |
如果只是临时不想使用这个功能,可以试试下面几种方法
使用 \
1 | [user1@study ~]$ \cat file |
使用单引号 ''
1 | [user1@study ~]$ 'cat' file |
使用双引号 ""
1 | [user1@study ~]$ "cat" file |
使用绝对路径 /path/to/command
1 | [user1@study ~]$ /bin/cat file |
使用 shell 的内置命令 command
1 | [user1@study ~]$ command cat file |
如何移除别名
unalias 是一个 shell 内置的用来去除别名的命令,下面是命令的使用格式:
1 | unalias CMDALIAS |
移除一个别名
1 | [user1@study ~]$ unalias cls |
移除所有别名
1 | [user1@study ~]$ unalias -a |
如果在 ~/.bash_profile
、~/.bashrc
这两个文件中定义了命令别名,想要删除的话使用上述命令行的方式只能在当前 shell 生命周期内有效,下次登录后命令别名依然还在。想要永久移除就需要修改文件并删除。
常用的命令别名范例
使用 vim 打开最近被修改的文件
1 | # Open last modified file in vim |
在当前路径下查找文件大小排列前五名的文件
1 | # Find top 5 big files |
过滤出 bash 相关的进程
1 | # Grep for a bash process |
清空当前 shell 的命令历史,并清屏
1 | # To clear all the history and screen |
清屏并列出文件
1 | # Clear the screen and list file |
解压缩文件老是忘记参数?
1 | alias untar='tar -zxvf ' |
在历史命令过滤关键字
1 | alias histgrep="history | grep" |
下载命令 wget
断点续传
1 | alias wget='wget -c ' |
快速切换到上层目录
1 | alias ..='cd ..' |
为新用户生成 15 位的随机密码
1 | alias getpass="openssl rand -base64 15" |
使用 python3 的模块在当前路径下启动一个 web 服务器
1 | # start web server with python2 |
对下载的文件测试校验和
1 | alias sha='shasum -a 256 ' |
常用的别名函数
在 shell 中命令别名会在函数后被查找到,因此解析速度较慢。虽然命令别名更容易理解,但对于几乎所有的用途, shell 的函数都比别名更受欢迎。
定义的函数也可以像别名一样来使用,为了使用更方便,直接在 ~/.bash_profile
或 ~/.bashrc
文件中添加自定义的函数就可以从下次登录开始永久生效
创建一个目录并进入该目录里
1 | mkcd(){ mkdir -p "$1"; cd "$1";} |
备份文件
1 | bak(){ cp "$1"{,.bak};} |
计算并进行比较文件的 md5 值,用法 md5chk 文件名 校验值
1
md5chk(){ md5sum "$1" | grep "$2";}
针对各种压缩文件的解压函数
1 | # |