99精品伊人亚洲|最近国产中文炮友|九草在线视频支援|AV网站大全最新|美女黄片免费观看|国产精品资源视频|精彩无码视频一区|91大神在线后入|伊人终合在线播放|久草综合久久中文

0
  • 聊天消息
  • 系統(tǒng)消息
  • 評(píng)論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫(xiě)文章/發(fā)帖/加入社區(qū)
會(huì)員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識(shí)你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

一款用rust制作的命令行工具

jf_wN0SrCdH ? 來(lái)源:Rust語(yǔ)言中文社區(qū) ? 2023-05-04 09:56 ? 次閱讀
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

get-host-ip

這是一款用rust制作的命令行工具。其被設(shè)計(jì)用來(lái)從C:WindowsSystem32ipconfig.exe的執(zhí)行結(jié)果內(nèi)提取出指定【網(wǎng)卡】的屬性值。比如,從電腦本的【無(wú)線局域網(wǎng)適配器WLAN】中提取出【IPv4地址】字符串值。

使用場(chǎng)景

Windows Subsystem for Linux(比如,Ubuntu-20.04)讀取其宿主主機(jī)(比如,Windows 11)無(wú)線物理網(wǎng)卡的IP地址。進(jìn)而,將其作為兩項(xiàng)重要功能的配置項(xiàng)入?yún)ⅲ?/p>

  1. 投影WSL2圖形界面至Windows宿主桌面系統(tǒng)顯示。

  • 無(wú)論是將整個(gè)Gnome桌面系統(tǒng)投影作為Windows環(huán)境下的一個(gè)應(yīng)用程序窗口,還僅只是投影某個(gè)Linux GUI應(yīng)用程序,X11 Server都需要借助$DISPLAY環(huán)境變量明確地知曉XSTATA的準(zhǔn)確IP位置。請(qǐng)不要自做聰明地認(rèn)為127.0.0.1可能搪塞過(guò)去。127.0.0.1是指向WSL2子系統(tǒng)自身,而不是宿主主機(jī)。

  • 關(guān)于WSL2桌面投影的更多技術(shù)細(xì)節(jié),可參見(jiàn)我早先的另一篇文章為 Rust+QT 編程搭建【偽】win32 開(kāi)發(fā)環(huán)境。還算是詳細(xì)吧!

  • 使Windows宿主操作系統(tǒng)共享VPN客戶(hù)端給WSL2子系統(tǒng)。

  • 從操作上,執(zhí)行export HTTP_PROXY=***指令要比在Linux系統(tǒng)里安裝與配置另一個(gè)Clash實(shí)例要省心多了。

  • 從后續(xù)維護(hù)上,對(duì)VPN客戶(hù)端的軟件升級(jí)與配置更新僅需要做一遍操作更節(jié)省時(shí)間。

  • 從經(jīng)濟(jì)上,更少的在線客戶(hù)端數(shù)量也更便宜。

曾經(jīng)的糾結(jié)

早先我也曾經(jīng)使用nodejs腳本程序?qū)崿F(xiàn)了相同的功能。但,node虛擬機(jī)首次啟動(dòng)時(shí)間著實(shí)有些長(zhǎng)了。雖然該長(zhǎng)延時(shí)弊端在交互式bash上下文中并不明顯(畢竟咱敲鍵盤(pán)也不快,還時(shí)不時(shí)地敲錯(cuò)字母),但當(dāng)被置于.bashrc內(nèi)執(zhí)行時(shí),其造成的shell會(huì)話初始化阻滯就讓人有點(diǎn)不好接受了(畢竟,每次開(kāi)個(gè)新shell窗口都得明顯黑幕個(gè)把秒鐘,體驗(yàn)著實(shí)有些兒差)。所以,我決心使用rust重構(gòu)此“熱”指令。效果明顯,幾乎一閃便可完成shell初始化。

命令行指令-用法


	

$ get-host-ip --help 獲取 wsl 宿主機(jī)器的物理 IP 地址 Usage: get-host-ip [OPTIONS] Options: -s, --section

ipconfig.exe 返回結(jié)果中的【主分類(lèi)】標(biāo)題 [default: "無(wú)線局域網(wǎng)適配器 WLAN"] -e, --entry ipconfig.exe 返回結(jié)果中的【主分類(lèi)】下各個(gè)條目的標(biāo)簽名 [default: "IPv4 地址"] -h, --help Print help -V, --version Print version

更詳細(xì)圖例

c363230a-e8b5-11ed-ab56-dac502259ad0.png

返回結(jié)果

get-host-ip執(zhí)行輸出就是沒(méi)有結(jié)尾換行符的IP地址字符串。若將該指令添加入$PATH,那么在Shell求值表達(dá)式內(nèi)可以直接


	

export HOST_IP=$(get-host-ip);

鏈接庫(kù)依賴(lài)

因?yàn)?code style="background:rgb(251,241,199);font-family:'Source Code Pro', 'Fira Code', Menlo, Monaco, Consolas, 'DejaVu Sans Mono', Inconsolata, 'Courier New', monospace;">Windows cmd指令輸出文本內(nèi)容的字符集是cp936,而不是UTF-8。所以,get-host-ip需要依賴(lài)操作系統(tǒng)預(yù)置的字符集轉(zhuǎn)換動(dòng)態(tài)鏈接庫(kù)libiconv,來(lái)完成cp936 -> UTF-8的字符集轉(zhuǎn)換。

Linux操作系統(tǒng)

大部分主流Linux OS都包含有libiconv。若你的Linux OS版本比較早或是compact版而缺失了libiconv也不必慌。按如下方式補(bǔ)裝即可:


	

wget http://ftp.gnu.org/pub/gnu/libiconv/libiconv-1.9.1.tar.gz tar -xzvf libiconv-1.9.1.tar.gz cd libiconv-1.9.1.tar.gz ./configure --prefix=/usr/local sudo make -j8 sudo make install sudo ln -s /usr/local/lib/libiconv.so /usr/lib/libiconv.so sudo ln -s /usr/local/lib/libiconv.so.2 /usr/lib/libiconv.so.2

Windows操作系統(tǒng)

要么,從setup直接下載安裝包,并本地安裝之。缺點(diǎn)就是會(huì)“污染”你的PATH環(huán)境變量。

要么,從binary下載預(yù)編譯包。在解壓縮之后,將其下的bin目錄添加到你的編譯環(huán)境變量RUST_FLAGS內(nèi)。比如,


	

set RUST_FLAGS=-L C:libiconv-1.9.2-1-binbin

吐槽

同一款libiconv鏈接庫(kù)怎么對(duì)LinuxWindows操作系統(tǒng)提供了不同名的導(dǎo)出函數(shù)呢?這個(gè)“缺德的”命名差異導(dǎo)致我在【編譯期·動(dòng)態(tài)鏈接】環(huán)節(jié)卡住了好幾天。相對(duì)于Linux版的鏈接庫(kù)導(dǎo)出函數(shù)名,Windows版的每個(gè)導(dǎo)出函數(shù)都有一個(gè)lib前綴 —— 故意的吧?真要命。

審核編輯 :李倩


聲明:本文內(nèi)容及配圖由入駐作者撰寫(xiě)或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場(chǎng)。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問(wèn)題,請(qǐng)聯(lián)系本站處理。 舉報(bào)投訴
  • 命令
    +關(guān)注

    關(guān)注

    5

    文章

    737

    瀏覽量

    22869
  • 腳本
    +關(guān)注

    關(guān)注

    1

    文章

    398

    瀏覽量

    28447
  • Rust
    +關(guān)注

    關(guān)注

    1

    文章

    234

    瀏覽量

    7087

原文標(biāo)題:get-host-ip

文章出處:【微信號(hào):Rust語(yǔ)言中文社區(qū),微信公眾號(hào):Rust語(yǔ)言中文社區(qū)】歡迎添加關(guān)注!文章轉(zhuǎn)載請(qǐng)注明出處。

收藏 人收藏
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

    評(píng)論

    相關(guān)推薦
    熱點(diǎn)推薦

    在STM32實(shí)現(xiàn)命令行

    工作中的開(kāi)發(fā)環(huán)境都是基于linux命令行交互,作為命令行的重度使用者,玩單片機(jī)也要使用命令行工具,百度了
    發(fā)表于 12-09 11:32 ?3087次閱讀

    Linux命令行工具

    Linux 新手往往對(duì)命令行心存畏懼。部分原因是因?yàn)樾枰洃洿罅康?b class='flag-5'>命令,畢竟掌握命令是高效使用命令行的前提不幸的是,學(xué)習(xí)這些命令并無(wú)捷徑,
    發(fā)表于 07-25 08:10

    caxa命令行中的應(yīng)用

    caxa命令行中的應(yīng)用 命令行對(duì)于大多用戶(hù)來(lái)說(shuō)往往只是輸入數(shù)據(jù)的作用,但是其中的奧妙還有很多,下面就給大家
    發(fā)表于 10-18 18:18 ?2421次閱讀

    CMD的命令行高級(jí)教程

    CMD的命令行高級(jí)教程
    發(fā)表于 10-24 08:31 ?30次下載
    CMD的<b class='flag-5'>命令行</b>高級(jí)教程

    監(jiān)控jvm常用的5個(gè)命令行工具

    常用的幾個(gè)命令行工具有jps、jstat、jinfo、jmap、jstack等。這幾個(gè)工具可以安裝openjdk-devel-debug包。
    的頭像 發(fā)表于 02-06 14:47 ?6133次閱讀
    監(jiān)控jvm常用的5個(gè)<b class='flag-5'>命令行</b><b class='flag-5'>工具</b>

    實(shí)用 Linux 命令行使用技巧集錦

    下面介紹的都是命令行工具,這些工具在日常工作中都很有用。
    的頭像 發(fā)表于 03-21 14:42 ?5027次閱讀

    Xilinx軟件命令行工具:XSCT開(kāi)發(fā)和調(diào)試

    了解如何使用XSCT,Xilinx軟件命令行工具進(jìn)行開(kāi)發(fā)和調(diào)試。 該視頻演示了XSCT如何充當(dāng)Xilinx SDK的命令行控制臺(tái)。
    的頭像 發(fā)表于 11-21 06:02 ?1.5w次閱讀

    Xilinx軟件命令行工具進(jìn)行開(kāi)發(fā)和調(diào)試

    了解如何使用XSCT,Xilinx軟件命令行工具進(jìn)行開(kāi)發(fā)和調(diào)試。 該視頻演示了XSCT如何充當(dāng)Xilinx SDK的命令行控制臺(tái)。
    的頭像 發(fā)表于 11-22 06:53 ?7156次閱讀

    Git常見(jiàn)的誤區(qū)和命令行工具等綜述

    Git常見(jiàn)的誤區(qū)和命令行工具等綜述
    發(fā)表于 08-31 09:51 ?0次下載

    Golang基于flag庫(kù)實(shí)現(xiàn)個(gè)命令行工具

    Golang 標(biāo)準(zhǔn)庫(kù)中的 flag 庫(kù)提供了解析命令行選項(xiàng)的能力,我們可以基于此來(lái)開(kāi)發(fā)命令行工具。
    的頭像 發(fā)表于 10-28 09:26 ?1564次閱讀

    新的開(kāi)源命令行工具west

    電子發(fā)燒友網(wǎng)站提供《新的開(kāi)源命令行工具west.zip》資料免費(fèi)下載
    發(fā)表于 11-11 09:25 ?0次下載
    新的開(kāi)源<b class='flag-5'>命令行</b><b class='flag-5'>工具</b>west

    用于解析和操作URL的命令行工具

    curl 作者 Daniel 宣布推出新的開(kāi)源項(xiàng)目:trurl,這是一款用于解析和操作 URL 的命令行工具,主要是面向 shell 腳本作者提供。Daniel 稱(chēng)項(xiàng)目名字中的 'tr' 代表 transla
    的頭像 發(fā)表于 04-11 10:02 ?1384次閱讀

    介紹Go里面經(jīng)常使用到的命令行工具

    優(yōu)秀的工具配合熟練的使用,往往可以讓開(kāi)發(fā)效率大幅度提升,本小節(jié)介紹 Go 里面經(jīng)常使用到的命令行工具
    的頭像 發(fā)表于 05-22 16:58 ?1582次閱讀
    介紹Go里面經(jīng)常使用到的<b class='flag-5'>命令行</b><b class='flag-5'>工具</b>

    PetaLinux工具文檔:命令行參考指南

    電子發(fā)燒友網(wǎng)站提供《PetaLinux工具文檔:命令行參考指南.pdf》資料免費(fèi)下載
    發(fā)表于 09-15 14:52 ?0次下載
    PetaLinux<b class='flag-5'>工具</b>文檔:<b class='flag-5'>命令行</b>參考指南

    HarmonyOS開(kāi)發(fā):【基于命令行(安裝庫(kù)和工具集)】

    使用命令行進(jìn)行設(shè)備開(kāi)發(fā)時(shí),可以通過(guò)以下步驟安裝編譯OpenHarmony需要的庫(kù)和工具。
    的頭像 發(fā)表于 04-25 21:03 ?776次閱讀
    HarmonyOS開(kāi)發(fā):【基于<b class='flag-5'>命令行</b>(安裝庫(kù)和<b class='flag-5'>工具</b>集)】