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