centos linux 因别名问题引起的麻烦及解决技巧

时间:2022-09-16 15:48:09

老男孩儿-19期 L005-13节中分享。自己整理后发到自己微博中留档。

原文:http://oldboy.blog.51cto.com/2561410/699046

 

实例:老男孩linux实战培训第9期(1022)入学考试题第10题:

 

10.已知/tmp下已经存在test.txt文件,如何执行命令才能把/mnt/test.txt覆盖掉/tmp/test.txt而让系统不提示是否覆盖(root权限下)。

centos linux 因别名问题引起的麻烦及解决技巧

为了防止用户误操作,所以centos linux操作系统在设计时,默认执行cp的操作是调用了cp的别名(相当于执行cp -i)。所以提示覆盖。此题的思路就是要屏蔽掉系统别名。

详细说明:

   cp命令默认是不会提示覆盖的,但是cp带-i参数执行时会提示,而Linux的起动文件~/.bashrc中会把cp命名成alias cp='cp -i' 如:

 

[root@student tmp]# alias |grep cp

 

alias cp='cp -i'

实际测试(不过具体合不合规范还有深入学习后验证了,作为一个备选方法吧)

[root@student tmp]# alias cp

 

也同样会显示为alias cp='cp -i'

 

这样在Linux下输入cp命令实际上运行的是cp -i,加上一个”\“;符号或者写cp全路径/bin/cp就是让此次的cp命令不使用别名(cp -i)运行。

此处涉及到alias和unalias两命令的用法,同时大家也想想别名的好处及怎么样利用这个特性为我们服务。

 

 一些特殊的方法:

[root@moban ~]# alias rm='echo "rm does not allow to be exec"'

此方法可以迷惑没用过此服务器的人,使用rm就会提示rm不可以被执行。

自己使用时要在前面加根路径如/bin/rm 可以使用或者\rm,具体看上面。不过此种方法服务器重启后失效,永久的话具体看上面。

补充一下内容:

比如经常需要执行一个长命令,那么可以用别名来定义。

alias oldboy=‘cat etc/sysconfig/network-scripts/ifcfg-eth0’(查看网卡)

此后输入oldboy就可以直接执行cat etc/sysconfig/network-scripts/ifcfg-eth0的命令了,十分方便。