執(zhí)行go clean
命令會(huì)刪除掉執(zhí)行其它命令時(shí)產(chǎn)生的一些文件和目錄,包括:
在使用go build
命令時(shí)在當(dāng)前代碼包下生成的與包名同名或者與Go源碼文件同名的可執(zhí)行文件。在Windows下,則是與包名同名或者Go源碼文件同名且?guī)в小?exe”后綴的文件。
在執(zhí)行go test
命令并加入-c
標(biāo)記時(shí)在當(dāng)前代碼包下生成的以包名加“.test”后綴為名的文件。在Windows下,則是以包名加“.test.exe”后綴為名的文件。我們會(huì)在后面專(zhuān)門(mén)介紹go test
命令。
如果執(zhí)行go clean
命令時(shí)帶有標(biāo)記-i
,則會(huì)同時(shí)刪除安裝當(dāng)前代碼包時(shí)所產(chǎn)生的結(jié)果文件。如果當(dāng)前代碼包中只包含庫(kù)源碼文件,則結(jié)果文件指的就是在工作區(qū)的pkg目錄的相應(yīng)目錄下的歸檔文件。如果當(dāng)前代碼包中只包含一個(gè)命令源碼文件,則結(jié)果文件指的就是在工作區(qū)的bin目錄下的可執(zhí)行文件。
還有一些目錄和文件是在編譯Go或C源碼文件時(shí)留在相應(yīng)目錄中的。包括:“_obj”和“_test”目錄,名稱(chēng)為“_testmain.go”、“test.out”、“build.out”或“a.out”的文件,名稱(chēng)以“.5”、“.6”、“.8”、“.a”、“.o”或“.so”為后綴的文件。這些目錄和文件是在執(zhí)行go build
命令時(shí)生成在臨時(shí)目錄中的。如果你忘記了這個(gè)臨時(shí)目錄是怎么回事兒,可以再回顧一下前面關(guān)于go build
命令的介紹。臨時(shí)目錄的名稱(chēng)以go-build
為前綴。
go clean
命令時(shí)帶有標(biāo)記-r
,則還包括當(dāng)前代碼包的所有依賴(lài)包的上述目錄和文件。我們?cè)僖詆oc2p項(xiàng)目的logging
為例。為了能夠反復(fù)體現(xiàn)每個(gè)標(biāo)記的作用,我們會(huì)使用標(biāo)記n
。使用標(biāo)記-n
會(huì)讓命令在執(zhí)行過(guò)程中打印用到的系統(tǒng)命令,但不會(huì)真正執(zhí)行它們。如果想既打印命令又執(zhí)行命令則需使用標(biāo)記-x
?,F(xiàn)在我們來(lái)試用一下go clean
命令:
hc@ubt:~/golang/goc2p/src$ go clean -x logging
cd /home/hc/golang/goc2p/src/logging
rm -f logging logging.exe logging.test logging.test.exe
現(xiàn)在,我們加上標(biāo)記-i
:
hc@ubt:~/golang/goc2p/src$ go clean -x -i logging
cd /home/hc/golang/goc2p/src/logging
rm -f logging logging.exe logging.test logging.test.exe
rm -f /home/hc/golang/goc2p/pkg/linux_386/logging.a
如果再加上標(biāo)記-r
又會(huì)打印出哪些命令呢?請(qǐng)讀者自己試一試吧。