Linux 下如何使用 alias 命令

359 阅读3分钟

有时我们会重复多次的进入项目的目录,如果目录很深的话,每次都需要输入很长的命令,而且有时候路径错了一个字母,就需要修改出错的位置,完全正确之后才会进入正确的目录。

现在有一种方法可以很便捷的解决重复输入以及输入错误的问题,那就是 alias 命令,简单来说, alias 就是把一些长的繁琐的命令变成一个短的便于记忆的命令

语法

alias [-p] [name='value']

-p : 查看已添加了哪些别名

name='value': 把 'value' 的别名设置为 name

用途1:缩短输入命令的长度

例如: 项目目录是 /home/tt/project/branches/release/code/server 每次进入都需要输入 cd /home/tt/project/branches/release/code/server 命令,通过 alias pr_code='cd /home/tt/project/branches/release/code/server'把上面很长的命令设置成一个简短的命令,后面进入项目目录的话只需要执行 pr_code命令即可,下面是具体的过程

[tt@ecs-centos-7 ~]$ alias pr_code='cd /home/tt/project/branches/release/code/server/'
[tt@ecs-centos-7 ~]$ pwd
/home/tt
[tt@ecs-centos-7 ~]$ pr_code
[tt@ecs-centos-7 server]$ pwd
/home/tt/project/branches/release/code/server

从上面的结果可以看出,执行 pr_code 命令,相当于执行了 cd /home/tt/project/branches/release/code/server/ 命令,对于一些很长的又常用命令可以通过 alias 设置成短的命令,使用起来更便捷

用途2:内置命令设置默认选项

例如:df 是查看系统磁盘信息的命令,但是默认结果显示不是按照人类习惯的方式,可以把 -h 选项设置为 df 的默认选项,具体命令结果如下:

[root@ecs-centos-7 ~]# df
Filesystem     1K-blocks     Used Available Use% Mounted on
devtmpfs         1929572        0   1929572   0% /dev
tmpfs            1939936        0   1939936   0% /dev/shm
tmpfs            1939936    33316   1906620   2% /run
tmpfs            1939936        0   1939936   0% /sys/fs/cgroup
/dev/vda1       41152736 20456832  18582420  53% /
tmpfs             387988        0    387988   0% /run/user/0
[root@ecs-centos-7 ~]# alias df='df -h'
[root@ecs-centos-7 ~]# df
Filesystem      Size  Used Avail Use% Mounted on
devtmpfs        1.9G     0  1.9G   0% /dev
tmpfs           1.9G     0  1.9G   0% /dev/shm
tmpfs           1.9G   33M  1.9G   2% /run
tmpfs           1.9G     0  1.9G   0% /sys/fs/cgroup
/dev/vda1        40G   20G   18G  53% /
tmpfs           379M     0  379M   0% /run/user/0

用途3:命令交互提高安全性

修改命令的交互选项,可以强制用户二次确认希望执行的命令,避免误用或滥用了一些命令,造成不可挽回的损失。

例如:rm 命令默认是直接删除,没有二次确认的,这样很容易误删一些重要的资料,可以把 -i 选项作为 rm 的默认选项,具体的命令结果如下:

  • rm 没有设置默认选项
[root@ecs-centos-7 ~]# ls
a.txt  lrzsz-0.12.20  lrzsz-0.12.20.tar.gz  tmp
[root@ecs-centos-7 ~]# rm a.txt 
[root@ecs-centos-7 ~]# ls
lrzsz-0.12.20  lrzsz-0.12.20.tar.gz  tmp
[root@ecs-centos-7 ~]# 
  • rm 设置了默认选项
[root@ecs-centos-7 ~]# ls
a.txt  lrzsz-0.12.20  lrzsz-0.12.20.tar.gz  tmp
[root@ecs-centos-7 ~]# alias rm='rm -i'
[root@ecs-centos-7 ~]# rm a.txt 
rm: remove regular file ‘a.txt’? y
[root@ecs-centos-7 ~]# 

从上面例子可以看出,rm 命令设置了 -i 默认选项以后每次执行 rm filename 时都会有一个二次确认,通过这种方式,可以避免一些误删除的操作

注意

  • 定义的别名只针对当前SSH连接有效,如果需要针对当前用户有效,需要把alias pr_code='cd /home/tt/project/branches/release/code/server/' 加入到 ~/.bashrc配置中,如果需要针对所有用户有效,需要把 alias pr_code='cd /home/tt/project/branches/release/code/server/'加入到/etc/bashrc 配置中
  • 编辑过的配置不会立即生效,需要执行 source ~/.bashrc命令或者重新连接SSH
  • 撤销别名, unalias -a插销全部别名,unalias 别名 撤销指定的别名