精品国产人成在线_亚洲高清无码在线观看_国产在线视频国产永久2021_国产AV综合第一页一个的一区免费影院黑人_最近中文字幕MV高清在线视频

0
  • 聊天消息
  • 系統消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發帖/加入社區
會員中心
創作中心

完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

3天內不再提示

如何給你的Linux系統添加一個新的Linux命令

嵌入式悅翔園 ? 來源:嵌入式軟件開發交流 ? 作者:嵌入式軟件開發交 ? 2023-02-15 09:40 ? 次閱讀

前言

平時我們在shell命令行上輸入的命令都是應用程序,比如ls,ifconfig,vi等。我們下載的busybox源碼中就包含著這些程序源碼,那接下來我們來看看如何實現一個命令。

如何實現

我們先分析一下其他的命令,比如gcc:

gcc helloworld.c -o helloworld

上面的編譯指令中,gcc就是命令程序,然后后面的三個都是傳給它的參數。程序是如何獲取到參數的呢?我們都知道main函數的定義如下:

int main(int argc, char * argv[])

argc是參數個數,argv是參數值。所以大家應該都知道如何獲取參數了吧。

有了參數,我們就要進行解析了。這就有兩種方法:

對參數進行一個一個的判斷解析

使用getopt函數進行解析

第一種方式工作量非常大,所以我們來使用第二種方式。

getopt函數介紹

#include 
int getopt(int argc, char * const argv[], const char *optstring);

argc:參數個數,直接將main函數中的argc傳給該函數。

argv:參數數組,直接將main函數中的argv傳給該函數。

optstring: 選項字符串。

里面還有幾個額外的全局變量:

extern char *optarg;
extern int optind, opterr, optopt;

optarg: 保存選項參數

optind: 記錄下一個檢索位置

opterr: 是否將錯誤信息輸出到stderr, 為0時表示不輸出

optopt: 不在選項字符串optstring中的選項

選項字符串

getopt函數中有個optstring參數 ,就是選項字符串。用來指定選項,就比如上面gcc命令中的-o,它就是一個選項。

那如何給getopt傳遞選項字符串呢?舉個例子:

a:b:cd::e

這個選項字符串對應命令行就是-a ,-b ,-c ,-d, -e選項。

冒號表示參數,一個冒號就表示這個選項后面必須帶有參數。這個參數可以和選項連在一起寫,也可以用空格隔開。

兩個冒號的就表示這個選項的參數是可選的,既可以有參數,也可以沒有參數,但要注意有參數時,參數與選項之間不能有空格。

實例

#include 
#include 
int main(int argc, char * argv[])
{
    int ch;
    printf("optind:%d,opterr:%d
", optind, opterr);
    printf("--------------------------
");
    while ((ch = getopt(argc, argv, "abde::")) != -1)
    {
        printf("optind: %d
", optind);
        switch (ch) 
        {
           case 'a':
               printf("option: -a

");   
               break;
           case 'b':
               printf("option: -b
"); 
               printf("The argument of -b is %s

", optarg);
               break;
           case 'c':
               printf("option: -c
");
               printf("The argument of -c is %s

", optarg);
               break;
           case 'd':
               printf("option: -d
");
               break;
          case 'e':
               printf("option: -e
");
               printf("The argument of -e is %s

", optarg);
               break;
          case '?':
               printf("Unknown option: %c
",(char)optopt);
               break;
        }
    }


    return 0;
}

運行結果:

0cb2b6a2-ac6f-11ed-bfe3-dac502259ad0.png

-b選項沒有跟參數則報錯!

審核編輯:湯梓紅

聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發燒友網立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規問題,請聯系本站處理。 舉報投訴
  • Linux
    +關注

    關注

    87

    文章

    11229

    瀏覽量

    208931
  • Linux系統
    +關注

    關注

    4

    文章

    591

    瀏覽量

    27356
  • 函數
    +關注

    關注

    3

    文章

    4306

    瀏覽量

    62431
  • 命令
    +關注

    關注

    5

    文章

    678

    瀏覽量

    21984
  • Shell
    +關注

    關注

    1

    文章

    363

    瀏覽量

    23297

原文標題:如何給你的Linux系統添加一個新的Linux命令

文章出處:【微信號:嵌入式悅翔園,微信公眾號:嵌入式悅翔園】歡迎添加關注!文章轉載請注明出處。

收藏 人收藏

    評論

    相關推薦

    Linux系統中unlink命令的使用

    Linux 中刪除文件,我們通常使用 rm 命令。除此以外,還有另外命令,可以用于刪除文件和鏈接,這就是 unlink
    發表于 09-13 14:29 ?2065次閱讀

    介紹些實用的Linux命令

    作為名軟件開發人員,掌握 Linux 命令是必不可少的技能。即使你使用 Windows 或 macOS,你總會遇到需要使用 Linux 命令
    發表于 08-01 16:12 ?344次閱讀
    介紹<b class='flag-5'>一</b>些實用的<b class='flag-5'>Linux</b><b class='flag-5'>命令</b>

    Linux與用戶有關的命令

    Linux與用戶有關的命令 Linux與用戶有關的命令  passwd命令  出于系統安全考慮
    發表于 01-18 12:46 ?764次閱讀

    Linux系統管理命令

    Linux系統管理命令 Linux系統管理命令  wall
    發表于 01-18 12:47 ?801次閱讀

    Linux系統命令指南

    在“Linux 文件命令精通指南”中,我們討論了利用最基礎和最常用 Linux 文件命令所需的基本信息。在本文中,我將對 Linux
    發表于 05-23 10:23 ?955次閱讀

    Linux必學的系統安全命令

    新的挑戰。本文將重點介紹Linux系統安全的命令。 雖然Linux和Windows NT/2000系統一樣是
    發表于 11-02 15:09 ?0次下載

    linux常用命令實例詳解

    ,就必須從Linux命令學起,通過基礎的命令學習可以進步理解Linux系統。不同
    發表于 11-03 10:19 ?5527次閱讀

    你不可不知的11Linux命令

    Linux命令行吸引了大多數Linux愛好者。正常的Linux用戶
    發表于 11-09 12:14 ?1356次閱讀
    你不可不知的11<b class='flag-5'>個</b><b class='flag-5'>Linux</b><b class='flag-5'>命令</b>

    Linux系統管理命令整理及使用方法介紹

    linux命令是對Linux系統進行管理的命令。對于Linux
    的頭像 發表于 09-23 14:55 ?6816次閱讀

    Linux中的35find命令用法

    Linux查找命令Linux系統中最重要和最常用的命令。查找用于根據與參數匹配的文件指定的
    的頭像 發表于 02-02 16:53 ?3639次閱讀
    <b class='flag-5'>Linux</b>中的35<b class='flag-5'>個</b>find<b class='flag-5'>命令</b>用法

    LINUX操作系統的安裝與Linux常用文件命令

    LINUX操作系統的安裝與Linux常用文件命令說明。
    發表于 06-02 17:45 ?3次下載

    6有趣的Linux命令案例講解

    6有趣的Linux命令案例講解
    發表于 08-11 17:49 ?14次下載

    Linux操作必備150命令

    Linux 命令是對 Linux 系統進行管理的命令。對于 Linux
    發表于 11-12 09:19 ?436次閱讀

    常用Linux命令介紹

    linux命令是對Linux系統進行管理的命令。對于Linux
    的頭像 發表于 02-09 14:31 ?1036次閱讀

    shell命令linux命令樣嗎

    結合在起,形成相當于面向過程的程序,即shell script,從而實現些復雜的功能。 而Linux
    的頭像 發表于 11-08 10:51 ?2755次閱讀