已知/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 root2 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 root2 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 root2 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 root2 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
下一篇:vim使用技巧