Shell alias:给命令创建别名
alisa 用来给命令创建一个别名。若直接输入该命令且不带任何参数,则列出当前 Shell 进程中使用了哪些别名。现在你应该能理解类似
下面让我们来看一下有哪些命令被默认创建了别名:
在《Shell命令替换》一节中,我们使用
run time: 20s
要想让别名对所有的 Shell 进程都有效,就得把别名写入 Shell 配置文件。Shell 进程每次启动时都会执行配置文件中的代码做一些初始化工作,将别名放在配置文件中,那么每次启动进程都会定义这个别名。不知道如何修改配置文件的读者请猛击《Shell配置文件的加载》《编写自己的Shell配置文件》。
同样,这两种方法都是在当前 Shell 进程中生效的。要想永久删除配置文件中定义的别名,只能进入该文件手动删除。
ll
这样的命令为什么与ls -l
的效果是一样的吧。下面让我们来看一下有哪些命令被默认创建了别名:
[mozhiyan@localhost ~]$ alias
alias cp='cp -i'
alias l.='ls -d .* --color=tty'
alias ll='ls -l --color=tty'
alias ls='ls --color=tty'
alias mv='mv -i'
alias rm='rm -i'
alias which='alias | /usr/bin/which --tty-only --read-alias --show-dot --show-tilde'
使用 alias 命令自定义别名
使用 alias 命令自定义别名的语法格式为:alias new_name='command'
比如,一般的关机命令是shutdown-h now
,写起来比较长,这时可以重新定义一个关机命令,以后就方便多了。alias myShutdown='shutdown -h now'
再如,通过 date 命令可以获得当前的 UNIX 时间戳,具体写法为date +%s
,如果你嫌弃它太长或者不容易记住,那可以给它定义一个别名。
alias timestamp='date +%s'
在《Shell命令替换》一节中,我们使用
date +%s
计算脚本的运行时间,现在学了 alias,就可以简化代码了。
#!/bin/bash alias timestamp='date +%s' begin=`timestamp` sleep 20s finish=$(timestamp) difference=$((finish - begin)) echo "run time: ${difference}s"运行脚本,20 秒后看到输出结果:
run time: 20s
别名只是临时的
在代码中使用 alias 命令定义的别名只能在当前 Shell 进程中使用,在子进程和其它进程中都不能使用。当前 Shell 进程结束后,别名也随之消失。要想让别名对所有的 Shell 进程都有效,就得把别名写入 Shell 配置文件。Shell 进程每次启动时都会执行配置文件中的代码做一些初始化工作,将别名放在配置文件中,那么每次启动进程都会定义这个别名。不知道如何修改配置文件的读者请猛击《Shell配置文件的加载》《编写自己的Shell配置文件》。
使用 unalias 命令删除别名
使用 unalias 内建命令可以删除当前 Shell 进程中的别名。unalias 有两种使用方法:- 第一种用法是在命令后跟上某个命令的别名,用于删除指定的别名。
-
第二种用法是在命令后接
-a
参数,删除当前 Shell 进程中所有的别名。
同样,这两种方法都是在当前 Shell 进程中生效的。要想永久删除配置文件中定义的别名,只能进入该文件手动删除。
# 删除 ll 别名
[mozhiyan@localhost ~]$ unalias ll
# 再次运行该命令时,报“找不到该命令”的错误,说明该别名被删除了
[mozhiyan@localhost ~]$ ll
-bash: ll: command not found