第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號(hào)安全,請及時(shí)綁定郵箱和手機(jī)立即綁定
已解決430363個(gè)問題,去搜搜看,總會(huì)有你想問的

你如何從 Golang 執(zhí)行終端命令?

你如何從 Golang 執(zhí)行終端命令?

Go
蝴蝶刀刀 2022-11-28 10:19:50
我正在 Golang 中創(chuàng)建一個(gè) CLI 工具,我對 Golang 和為終端制作工具都是新手。我需要直接從我的程序(特別是cd)執(zhí)行終端命令。我該怎么做呢?我跟著這篇文章,但它拋出了一個(gè)錯(cuò)誤,說在 %path% 中找不到回聲在此先感謝您的幫助!
查看完整描述

4 回答

?
郎朗坤

TA貢獻(xiàn)1921條經(jīng)驗(yàn) 獲得超9個(gè)贊

cd通過調(diào)用os.Chdir來實(shí)現(xiàn)命令。

由于子進(jìn)程無法更改父進(jìn)程的工作目錄,因此該cd命令沒有單獨(dú)的可執(zhí)行文件。該cd命令內(nèi)置于命令行解釋器。


查看完整回答
反對 回復(fù) 2022-11-28
?
長風(fēng)秋雁

TA貢獻(xiàn)1757條經(jīng)驗(yàn) 獲得超7個(gè)贊

os/exec包幫助你在 Go 中執(zhí)行終端命令。


執(zhí)行系統(tǒng)命令非常簡單。Cmd 保存您的外部命令。


所以在 linux 中假設(shè)你想運(yùn)行“echo hello”命令,你會(huì)寫下面的代碼。


cmdStruct := exec.Command("echo","hello")    

out,err := cmdStruct.Output()

if err != nil {

    fmt.Println(err)

}

fmt.Println(string(out))

這是最基本的方法之一。但是,在 Windows 中,您需要將“echo hello”作為參數(shù)傳遞給命令提示符或 Powershell。


    cmdStruct:= exec.Command("cmd.exe","/c","echo","hello")

為了簡化單個(gè)切片中的傳遞參數(shù),


args:= strings.Split("/c echo hello there how are you"," ")

cmdStruct:= exec.Command("cmd.exe",args...)

查看此答案以獲得更好的理解和此代碼的增強(qiáng)版本。


對于 cd,您可以使用os.Chdir()和os.Getwd()分別更改和查看您的工作目錄。但是如果你需要你的命令在特定目錄中執(zhí)行,你可以設(shè)置Dir你的命令,即


cmdStruct.Dir = "path/to/directory"

或者


cmdStruct.Dir = filepath.Join("path","to","directory")


查看完整回答
反對 回復(fù) 2022-11-28
?
慕仙森

TA貢獻(xiàn)1827條經(jīng)驗(yàn) 獲得超8個(gè)贊

cd 不是外部程序。

命令行解釋器有一個(gè)抽象“當(dāng)前目錄”,它影響所有其他命令。它是一個(gè)狀態(tài)

例如,它用于處理相對路徑。

如果您想從頭開始創(chuàng)建 CLI,則必須定義此階段如何影響一切。

如果您需要與現(xiàn)有 CLI 進(jìn)行交互,則需要在操作系統(tǒng)進(jìn)程中啟動(dòng)它并通過流進(jìn)行交互。

有3個(gè)流:

STDIN - 輸入 STDOUT - 輸出 STDERR - 錯(cuò)誤

您需要捕獲用戶命令并發(fā)送到 CLI 的 STDIN。并讀取 STDIN / STDOUT 以寫入響應(yīng)。

例如,這與 goroutines 有關(guān)


查看完整回答
反對 回復(fù) 2022-11-28
?
眼眸繁星

TA貢獻(xiàn)1873條經(jīng)驗(yàn) 獲得超9個(gè)贊

盡管我問這個(gè)問題已經(jīng)有一段時(shí)間了,但我認(rèn)為回答這個(gè)問題會(huì)很好。簡單來說,沒有辦法。程序基本上在它們自己的小盒子上運(yùn)行,這意味著雖然 os.Chdir() 確實(shí)在技術(shù)上改變了工作目錄,但它之后“恢復(fù)”。



查看完整回答
反對 回復(fù) 2022-11-28
  • 4 回答
  • 0 關(guān)注
  • 217 瀏覽

添加回答

舉報(bào)

0/150
提交
取消
微信客服

購課補(bǔ)貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動(dòng)學(xué)習(xí)伙伴

公眾號(hào)

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號(hào)