UNPKG

4 kBMarkdownView Raw
1alias
2===
3
4定义或显示别名。
5
6## 概要
7
8```shell
9alias [-p] [name[=value] ...]
10```
11
12## 主要用途
13
14- 简化较长的命令。
15- 定义一个或多个别名。
16- 修改一个或多个已定义别名的值。
17- 显示一个或多个已定义别名。
18- 显示全部已定义的别名。
19
20## 选项
21
22```shell
23-p:显示全部已定义的别名。
24```
25
26## 参数
27
28name(可选):指定要(定义、修改、显示)的别名。
29
30value(可选):别名的值。
31
32### 返回值
33
34alias返回true除非您要显示的别名未定义。
35
36## 例子
37
38```shell
39# 显示全部已定义的别名
40alias
41alias -p
42
43# 显示已定义的别名(假设当前环境存在以下别名)
44alias ls
45alias ls grep
46
47# 定义或修改别名的值
48alias ls='ls --color=auto'
49alias ls='ls --color=never' grep='grep --color=never'
50```
51
52## 知识点
53
54直接在shell里设定的命令别名,在终端关闭或者系统重新启动后都会失效,如何才能永久有效呢?
55
56使用编辑器打开`~/.bashrc`,在文件中加入别名设置,如:alias rm='rm -i',保存后执行`source ~/.bashrc`,这样就可以永久保存命令的别名了。
57
58因为修改的是当前用户目录下的`~/.bashrc`文件,所以这样的方式只对当前用户有用。如果要对所有用户都有效,修改`/etc/bashrc`文件就可以了。
59
60> 请注意,以下内容可能与您实际使用的系统有出入:
61>
62> 在CentOS7下,这个文件是`/etc/bash.bashrc`。此外在CentOS7下,细看`~/.bashrc`文件,会发现有这样一段代码:
63>
64> ```shell
65> if [ -f ~/.bash_aliases ]; then
66> . ~/.bash_aliases
67> fi
68> ```
69>
70> 这个代码的意思就是如果存在那么就加载`.bash_aliases`文件,所以也可以在用户根目录下新建该文件用于单独存放命令别名设置。
71
72
73## 错误用法
74
75- 要显示的别名未定义。
76
77- 当您定义(修改)别名的值的时候,由于值的字符串有空格但您没有用**单引号扩起**,那么会导致严重的问题:
78
79```shell
80# 为方便演示,删除全部别名
81unalias -a
82# 没有用单引号扩起
83alias rm=rm -rf
84# 执行命令后报错 bash: alias: -rf: not found
85# 这时使用alias查看rm的别名时返回 alias rm='rm'
86```
87
88```shell
89# 更具有迷惑性的例子
90# 为方便演示,删除全部别名
91unalias -a
92# 仍然没有用单引号括起
93alias ls=ls --color=never
94# 执行命令后看起来没有报错
95
96# 使用alias查看全部别名会发现运行结果如下:
97# alias --color=never
98# alias ls='ls'
99# alias处理时将它们看成了两组
100```
101
102## Q&A
103
104Q:如果我要显示一到多个别名,但不知道其中是否有未定义的该怎么办?
105
106A:正常执行就是了,alias不会因为有一个未定义的别名就结束对剩余参数的执行。
107
108Q:如果我这么定义`alias cd='ls' ls='cd'`,会有什么后果?
109
110A:运行cd依然会切换目录,运行ls依然会列出文件夹的内容;不要这样定义。
111
112
113### 注意
114
1151. **执行脚本时请注意:**
116
117> 使用`source`命令执行的bash脚本如果执行了`alias`或`unalias`命令,那么有可能会对终端环境的别名设置产生影响;终端环境的别名设置也可能改变运行结果;
118>
119> 通过`sh`方式调用的bash脚本或直接运行当前用户有执行权限的脚本不受终端环境的别名影响。
120
1212. 删除别名,请查看`unalias`命令。
122
1232. 建议您不要对`mv cp rm`等命令的别名设置危险的`-f`选项,比如`alias rm='rm -f'`
124
1253. 需要注意别名是否和其他命令有冲突的情况。
126
1274. 该命令是bash内建命令,相关的帮助信息请查看`help`命令。
128
129### 其他参考链接
130
131[Linux命令详解:\[8\]alias创建自己的命令](https://jingyan.baidu.com/article/ac6a9a5e6738422b653eac01.html)
132
133
134<!-- Linux命令行搜索引擎:https://jaywcjlove.github.io/linux-command/ -->