原創作品,允許轉載,轉載時請務必以超鏈接形式標明文章 原始出處 、作者信息和本聲明。否則將追究法律責任。http://oldboy.blog.51cto.com/2561410/699046
實例:老男孩linux實戰培訓第9期(10月22日)入學考試題第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)運行。
此處涉及到alias和unalias兩命令的用法,同時大家也想想別名的好處及怎麼樣利用這個特性爲我們服務。
建議:抽時間總結alias和unalias兩命令的用法。
學生解答及老師批改評價案例:
提示:
同樣命令還有mv、rm等。希望大家做事也能儘量的舉一反三,由此及彼,拓寬思路和視野。
特別說明:腳本里直接寫命令也可以逃避別名,但是我們習慣還是用全路徑。例子:
[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培訓” 博客,請務必保留此出處http://oldboy.blog.51cto.com/2561410/699046