在Linux下寫一個(gè)自己的命令
大家好,我是情報(bào)小哥!
01什么是命令?
很多朋友對(duì)Linux的一個(gè)印象就是各種各樣的命令行,在圖形化界面不夠成熟的時(shí)期,Linux系統(tǒng)開發(fā)人員都是通過命令行直接操控OS,其實(shí)和DOS系統(tǒng)差不多,幾乎可以通過鍵盤搞定所有的事情,不要和鍵盤俠混談哦。
然而現(xiàn)在的ubuntu等等Linux的桌面版本僅僅只是為了讓更多的人去接觸Linux這款優(yōu)秀的開源操作系統(tǒng),像同期發(fā)布的Linux服務(wù)器版本還是一直以命令行為主,其實(shí)大多數(shù)的圖形操作僅僅只是一些命令的封裝罷了。
windows為什么這么廣泛使用,其圖形化界面操作是重要的因素,同時(shí)圖形傻瓜式操作來滿足更多不同層次的人使用該操作系統(tǒng),而就因?yàn)樯倒鲜降牟僮鞅容^多,大部分工作丟給圖形交互和操作系統(tǒng)了,所以往往功能都比較單一且效率較低;而Linux操作系統(tǒng)更多的是發(fā)展命令行,命令行會(huì)把更多的功能選擇權(quán)交給用戶,且一次還可以同時(shí)完成多項(xiàng)事務(wù),所以操作效率上Linux肯定是穩(wěn)勝的,但是諸多的命令行往往叫很多人望而生畏。
命令并沒有那么可怕,只是大部分人習(xí)慣了windows環(huán)境下的傻瓜式操作,而不太適應(yīng)Linux下枯燥的命令罷了。
所謂的命令不是什么神器的東西,它僅僅也只是一個(gè)應(yīng)用程序罷了,你可以把命令行+回車看成windows下雙擊應(yīng)用程序,但是通過簡(jiǎn)單的敲擊命令并傳遞參數(shù)的就比圖形化雙擊應(yīng)用程序要靈活多了。
02自己寫一個(gè)命令
既然前面我們講到命令就是程序,那這里寫個(gè)程序編譯成可執(zhí)行程序看是否可以執(zhí)行。
- #include <stdio.h>
 - int main(int argc, char *argv[])
 - {
 - int i = 0;
 - printf("execute my command!\n");
 - for(i = 0 ;i < argc;i++)
 - {
 - printf("input param:%d - %s\n",i,argv[i]);
 - }
 - return 1;
 - }
 
上面是非常簡(jiǎn)單的一個(gè)C程序,主要的功能就是打印外部調(diào)用傳入的參數(shù)。
然后采用GCC編譯器,編譯執(zhí)行得到如下結(jié)果:
我們采用"./應(yīng)用程序"的形式來執(zhí)行一切正常,但當(dāng)我們直接輸入執(zhí)行程序命令,卻沒有得到滿意的結(jié)果,如下圖所示:
首先我們應(yīng)該理解shell,Linux下常用shell就屬于bash了,當(dāng)然還有很多其他種類,shell你可以認(rèn)為它就是一個(gè)命令解析器,當(dāng)你輸入這些命令行并回車的時(shí)候,首先其會(huì)經(jīng)過shell進(jìn)行解析以后,再由操作系統(tǒng)執(zhí)行,大致過程如下:
從上面shell的大致運(yùn)行情況可以了解到,當(dāng)shell找不到對(duì)應(yīng)的命令便會(huì)去環(huán)境變量中設(shè)置的路徑中進(jìn)行查找相應(yīng)的可執(zhí)行程序來執(zhí)行。
那么是不是我們把當(dāng)前路徑加入到環(huán)境變量中就可以了呢?下面來簡(jiǎn)單驗(yàn)證一下 :
臨時(shí)采用export命令把當(dāng)前mycommand應(yīng)用程序路徑加入到環(huán)境變量PATH中,然后直接運(yùn)行mycommand 參數(shù),便可以獲得對(duì)應(yīng)的應(yīng)用程序輸出信息。
這樣就實(shí)現(xiàn)了一個(gè)簡(jiǎn)單的命令~
最 后
好了,這里小哥就介紹了一下Linux下命令的基本原理以及shell的相關(guān)知識(shí),希望本文能夠?qū)δ阌袔椭?



















 
 
 





 
 
 
 