简介
设置指令的别名,用户可利用alias,自定指令的别名。若仅输入alias,则可列出目前所有的别名设置。
alias的效力仅及于该次登入的操作。若要每次登入是即自动设好别名,可在/etc/profile或自己的~/.bashrc中设定指令的别名。
还有,如果你想给每一位用户都生效的别名,请把alias la=‘ls -al’ 一行加在/etc/bashrc最后面,bashrc是环境变量的配置文件 /etc/bashrc和~/.bashrc 区别就在于一个是设置给全系统一个是设置给单用户使用
如果你想给每一位用户都生效的别名,请把alias la=‘ls -al’ 一行加在/etc/bashrc最后面,bashrc是环境变量的配置文件 /etc/bashrc和~/.bashrc 区别就在于一个是设置给全系统一个是设置给单用户使。
语法
语法:alias [-p] [name=value ]
alias [别名] = [指令名称]
查看系统自带的别名
好多命令都是带-i的
比如mv、rm、cp
-i的意思就是提示的意思,比如你删除一个文件,他会提示你要不要删除
移动一个文件询问你会不会覆盖
[root@shell ~ 1]# alias
alias cp='cp -i'
alias egrep='egrep --color=auto'
alias fgrep='fgrep --color=auto'
alias grep='grep --color=auto'
alias l.='ls -d .* --color=auto'
alias ll='ls -l --color=auto'
alias ls='ls --color=auto'
alias mv='mv -i'
alias rm='rm -i'
alias which='alias | /usr/bin/which --tty-only --read-alias --show-dot --show-tilde'
接下来来测试一下别名
提示是否删除
[root@shell ~ 3]# rm zheng-error.txt
rm: remove regular file ‘zheng-error.txt’?
但是加一个\就不会提示了
原因是前面加上这个就是不使用别名,就忽略掉之前别名的 rm -i提示了
[root@shell ~ 4]# \rm zheng.txt
临时修改
把rm这个命令修改成
输出到屏幕找不到命令
当做恶作剧玩,可以玩一下别人的虚拟机
[root@shell ~ 6]# alias rm='echo rm command not found'
[root@shell ~ 7]# rm 11
rm command not found 11
但是这个只是临时的,重新登陆以后就没有了
用rm的时候就已经是删除命令了
[root@shell ~ 1]# rm
1.txt .bash_logout .cshrc test-error.txt
anaconda-ks.cfg .bash_profile shell.txt test.txt
.bash_history .bashrc .tcshrc zheng-error.txt
[root@shell ~ 1]# rm 1.txt
rm: remove regular file ‘1.txt’? n
永久修改
把临时修改的语句加入到环境变量中
在最后一行加入,然后source重新加载一下
这次换一个别名以防和之前的混了
能看到rm的时候直接打印test和后面的文件
[root@shell ~ 2]# vi /etc/profile
alias rm='echo test'
"/etc/profile" 79L, 1847C written
[root@shell ~ 3]# source /etc/profile
[root@shell ~ 4]# rm 1.txt
test 1.txt
[root@shell ~ 5]# tail -n1 /etc/profile
alias rm='echo test'
然后还需要测试一下是不是永久生效
重新连接一下
[root@shell ~ 1]# rm 1.txt
rm: remove regular file ‘1.txt’? m^Hn
他还是显示的rm
这里就是个问题,别名修改的坑只限于 rm mv cp 这三个命令
别名的坑
上面说了只限于mv cp rm
来查看一下隐藏文件 ~/.bashrc
[root@shell ~ 3]# vi ~/.bashrc
# .bashrc
# User specific aliases and functions
alias rm='rm -i'
alias cp='cp -i'
alias mv='mv -i'
# Source global definitions
if [ -f /etc/bashrc ]; then
. /etc/bashrc
fi
只需要在在rm哪行前面加上#注释掉就可以了
不要删了,然后保存退出
重新连接在测试一下
[root@shell ~ 1]# rm 1.txt
test 1.txt
成功解决
别名就是为了安全和方便
比如grep过滤,会显示颜色,好分辨
设置别名一定要仔细仔细再仔细