linux 中文 extern,Linux 系統的內部(Internal)指令與外部(External)指令

這裡介紹 UNIX/Linux 系統中內部(internal)指令與外部(external)指令的差異所在。

一般的 UNIX 或 Linux 系統中的指令可分為兩種,分別為內部(internal)指令與外部(external)指令,對於一般的 Linux 新手而言,可能很少注意到這個問題,而了解它們之間的差異對於撰寫指令搞會有一些幫助。以下我們會說明這兩種指令的定義與其中的差別。

所謂的內部指令就是指內建在 shell 中的指令,也就是說當你執行這類的指令時,系統並不會因為要執行這個指令而產生額外的行程(process),所以內部指令的執行效率非常高,例如最常用的更換工作目錄指令 cd 就是一個典型的內部指令,執行這個指令時,不會產生任何額外的行程,只會單純變更工作目錄而已。除了 cd 之外,也有很多指令都是屬於內部指令,如:source、bg、fg 與 pwd 等。

外部指令就是指那些不是內建於 shell 中的指令,這類的指令通常是一個二進位的執行檔或是一個可執行的指令稿(script),在執行這類的指令時,系統就會產生而外的行程,所以執行效率也就會比較低一些。一些常見的外部指令有:cat、mv、sed 與 perl 等。

如果想要知道一個指令是屬於哪一種,可以只用 type command 來判斷,其中 command 就是想要檢查的指令名稱。例如若要檢查 cd 這個指令,就用:

type cd

輸出為

cd is a shell builtin

這就表示 cd 是內建於 shell 中的指令,也就是內部指令。如果是外部指令,就會直接顯示該指令的絕對路徑,例如:

type cat

輸出為

cat is /bin/cat

根據上面的說明,你應該就會了解在撰寫指令稿時可以盡量使用內部指令,以增加執行效率,但是大部分的人其實都很少會去注意自己所使用的是內部指令還是外部指令,因為如果指令稿根本就沒幾行,你可能根本看不出內部指令與外部指令的差異,這個差異大概只有在指令稿很大的時候才會比較明顯。

另外,在撰寫指令稿時也不見得常常有機會可以使用內部指令來代替外部指令,而且這也要自己對於 shell 的程式設計功力夠強才有辦法。

舉例來說,如果要算兩個數值相加可以使用

n=`expr $i+$j`

其中的 expr 就是一個外部指令,這時候就可以用

let n=i+j

這個內部的指令來代替,這樣執行效率就可以提升,而其效果是一樣的。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值