CentOS Linux因别名问题引起的麻烦及解决技巧

################################################################

 

本文内容摘录于老男孩linux实战运维培训中心入学考试题(答案原文)

 

如有转载,请务必保留本文链接及版权信息。

 

========================================================

 

 

咨询QQ:41117397  41117483  70271111

电话: 01060747396  18911718229 18600338340
官方群 08群384467551 07群145178854(标明51CTO)

网站地址:http://www.etiantian.org  http://oldboy.me

 

blog:http://oldboy.blog.51cto.com

 

################################################################

 

 

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

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

 

解答参考:

简要解释:

为了防止用户误操作,所以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'

 

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

 

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

 

建议:抽时间总结aliasunalias两命令的用法。

 

学生解答及老师批改评价案例:

 

 

 

 

提示:

 

同样命令还有mvrm等。希望大家做事也能尽量的举一反三,由此及彼,拓宽思路和视野。

 

特别说明:脚本里直接写命令也可以逃避别名,但是我们习惯还是用全路径。例子:

[root@oldboy test]# pwd

 

/root/test

 

[root@oldboy test]# ll

 

total 8

 

-rw-r--r-- 1 root root  2 Jun 19 10:51 oldboy.log

 

-rwxr-xr-x 1 root root 54 Jun 19 10:51 test.sh

 

[root@oldboy test]# cat test.sh

 

cp oldboy.log /tmp

 

rm oldboy.log

 

mv /tmp/oldboy.log .

 

[root@oldboy test]# sh test.sh

 

[root@oldboy test]# sh -x test.sh

 

+ cp oldboy.log /tmp

 

+ rm oldboy.log

 

+ mv /tmp/oldboy.log .

 

[root@oldboy test]# ll

 

total 8

 

-rw-r--r-- 1 root root  2 Jun 19 10:52 oldboy.log

 

-rwxr-xr-x 1 root root 54 Jun 19 10:51 test.sh

 

[root@oldboy test]# ll --full-time

 

total 8

 

-rw-r--r-- 1 root root  2 2012-06-19 10:52:25.000000000 +0800 oldboy.log

 

-rwxr-xr-x 1 root root 54 2012-06-19 10:51:48.000000000 +0800 test.sh

 

[root@oldboy test]# sh test.sh

 

[root@oldboy test]# ll --full-time

 

total 8

 

-rw-r--r-- 1 root root  2 2012-06-19 10:52:41.000000000 +0800 oldboy.log

 

-rwxr-xr-x 1 root root 54 2012-06-19 10:51:48.000000000 +0800 test.sh

 

你可能感兴趣的:(linux,alias,别名)