centos linux 因別名問題引起的麻煩及解決技巧

原創作品,允許轉載,轉載時請務必以超鏈接形式標明文章 原始出處 、作者信息和本聲明。否則將追究法律責任。http://oldboy.blog.51cto.com/2561410/699046 

實例:老男孩linux實戰培訓第9期(1022)入學考試題第10題:

10.已知/tmp下已經存在test.txt文件,如何執行命令才能把/mnt/test.txt覆蓋掉/tmp/test.txt而讓系統不提示是否覆蓋(root權限下)。

wKiom1c2-kbyD0_XAADp9WbWLh4248.jpg

簡要解釋:爲了防止用戶誤操作,所以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兩命令的用法。

學生解答及老師批改評價案例:

wKiom1c2-qDTytlwAABhdVmXCTA495.jpg

提示:

同樣命令還有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培訓” 博客,請務必保留此出處http://oldboy.blog.51cto.com/2561410/699046

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章