回復(fù) 麗貝卡·舒格 : 本文來自微信公號:低并發(fā)編程 (ID:dibingfa),作者:閃客之前在朋圈求助過,如何速制作一款 CLI 工具,就是命令行工具,比如 echo 這種。票圈大神們貢獻(xiàn)一大波方法,我進(jìn)行一波總結(jié)。如 Java 語言的 Spring Shell,可以和 SpringBoot 一起制作一款命令工具,比如以下法。@ShellComponent?public?class?SSHCommand?{????????@ShellMethod(value?=?"connect?to?remote?server")????????public?void?ssh(@ShellOption(value?=?"-s")?String?host)?{???????????System.out.println(host);?????}?}即可支持一條 ssh 命令,并附帶 -s 參數(shù)。shell:?ssh?-s?192.168.0.3192.168.0.3用 java 給自己做一款這樣的小工集,還是非常方的。當(dāng)然如果你想使用 Spring,也有 JCommander 這樣的工具,不依賴 Spring 套件,只不過寫法就會比較丑。除了 java 語言,大家推薦最多的還是 Go 語言的 Cobra 庫,官網(wǎng) cobra.dev 非常簡潔。具體大家去官網(wǎng)看,都是非常直觀了的 demo,非常舒服。其他我還沒有詳細(xì)調(diào)過,這里把票圈饋都說下:dpdkpython 的 clickC++ 的 boostrust clapnodejsjava common-cli 包urfave/clixterm.jscpp 的 boost不過沒有提到 C 語言的,倒是有讀者提到了 getopt 系列函數(shù),這個是什么?先不說這個函是什么,你知道常用的那些命令像 echo,cp,mv 這些,都是由誰提供的?這些都屬于 coreutils 工具類,比如 cp --version 就可以看到具體的版本息。既然這些 CLI 工具類都是 coreutils 里的代碼,那我們看看這里實現(xiàn)方式,一定比較優(yōu)雅的。打 coreutils 的源碼,隨便找個命令,比 basename.c 找到它的 main 方法,可以看到就是用了 getopt_long 來解析的命令行參。那要說實現(xiàn)的雅度,我們和 coreutils 里的實現(xiàn)方式一樣,總歸是沒有的。不過 getopt_long 具體怎么使用呢?我們 man 一下它,就可以到非常詳細(xì)的介,下面還有特別單的 demo,可以直接編譯運的。對比發(fā)現(xiàn), demo 和 coreutils 里的用法大體結(jié)構(gòu)是一樣的,是 while 循環(huán)里不斷調(diào)?getopt_long 函數(shù)解析 - 或者 -- 的參數(shù),然后通過 switch?判斷返回值 c 的值,來執(zhí)行不同的操作。同時將 long_options 也是就 -- 參數(shù)列表放在一個數(shù)中,使用?required_argument 表示需要參數(shù),no_argument 表示無需參數(shù)。這時我有個想,如果自己實現(xiàn)套 coreutils,不但能學(xué)習(xí)到使用 C 語言制作一款優(yōu)雅 CLI 工具的方法,還能對常 shell 命令有一個深入源式的了解,同時們也可以改造這命令使其具有我自己的特性,還以為今后增加自的新命令打下基。同時,coreutils 里很多命令的底層,是需要調(diào)用?Linux 系統(tǒng)庫的,我們也可以對些系統(tǒng)庫函數(shù)有多的了解。一舉多的呀!開干!coreutils 中有個特別有趣且簡單的命令,yes,你在 Linux 命令行里輸入 yes 按下回車,會發(fā)現(xiàn)持續(xù)不斷輸出 y 在命令行中,非??欤褪沁@效。我是不是可以己實現(xiàn)一套,并其進(jìn)行改造,讓可以輸出行號,且控制輸出的時間隔,別那么快說干就干,一款 dbf-yes 工具就做出來了它可以支持用 -n 參數(shù)表示輸出行號,用 -s 參數(shù)表示時間間秒數(shù),最后跟一參數(shù)?hehe 表示要輸出的字是什么。感覺這學(xué)習(xí)方式還是非不錯的,涉及到知識點不少,而又非常有成就感像闖關(guān)一樣把 coreutils 里面的全部工具都實現(xiàn)一遍,增自己的特性?
回復(fù) Myshkin : 感謝IT之家網(wǎng)友 航空先生、東風(fēng)快遞 的線索投遞!IT之家 1 月 2 日消息,比亞迪股份現(xiàn)發(fā)最新產(chǎn)銷快報:2022 年全年累計銷量 1,863,494 輛,同比增長 208.64%。比亞迪 2022 年 12 月新能源汽車銷量 235,197 輛,上年同期 93,945 輛。2022 年全年累計銷量 1,863,494 輛,同比增長 208.64%。比亞迪 12 月海外銷售新能源乘用車周易計 11,320 輛,2022 年全年累計出口 55916 輛,同比增長 307.2%。相比之下,比亞迪 11 月海外銷售新能源乘用車合計?12318 輛。IT之家了解到,比亞迪還宣布 2022 年 12 月新能源汽車動力電池及能電池裝機(jī)總量約為 11.152 GWh,2022 年累計裝機(jī)總量約為 89.836 GWh。DM 車型全年累計銷售 946239 輛,EV 車型全年累計銷售 911140 輛。分類來看,比亞迪品牌王朝、海比翼 2022 年全年累計銷售 1852625 輛,12 月銷售 228596 輛同比增長 130.6%;騰勢 12 月銷售 6002 輛環(huán)比增長 73.9%。
回復(fù) 豪爾赫·迪亞斯 : IT之家 1 月 9 日消息,根據(jù)網(wǎng)友 @tarunvats33 爆料,三星正在印度為款 Galaxy S20 機(jī)型測試 OneUI 5.1 版本更新,在固件服務(wù)器上發(fā)現(xiàn)了 One UI 5.1 測試固件 G980FXXUFHWA1。IT之家了解到,三星 Galaxy S20 系列已經(jīng)于去年 11 月獲得安卓 13 / OneUI 5.0 系統(tǒng)更新推送,此前推測該系列法再獲得 OneUI 5.1 等后續(xù)更新。不過現(xiàn)在來看,堵山星還是定提供 5.1 更新。OneUI 5.1 同樣基于安卓 13 系統(tǒng),但會進(jìn)一步優(yōu)化系統(tǒng)能提高運行穩(wěn)定性。在 SDC 2022 上,三星展示了各種新功能個性化工具。由于未知因,很多功能在 One UI 5.0 更新中并未上線,而在 OneUI 5.1 中會提供包括全新鎖窺窳工具等諸新特性。Galaxy S20 在上線初期搭載的是基于安卓 10 的 OneUI 2.1 系統(tǒng)。三星承諾將會為機(jī)提供 3 大版本更新,因此 OneUI 5.1 可以說是錦上添花的一諸犍更新?