只删除源目录和编译的包文件是安全的。找到下的源目录 $GOPATH/src 和包下的文件 $GOPATH/pkg/<architecture> , 例如: $GOPATH/pkg/windows_amd64 。
$GOPATH/src
$GOPATH/pkg/<architecture>
$GOPATH/pkg/windows_amd64
#!/bin/bash goclean() { local pkg=$1; shift || return 1 local ost local cnt local scr # Clean removes object files from package source directories (ignore error) go clean -i $pkg &>/dev/null # Set local variables [[ "$(uname -m)" == "x86_64" ]] \ && ost="$(uname)";ost="${ost,,}_amd64" \ && cnt="${pkg//[^\/]}" # Delete the source directory and compiled package directory(ies) if (("${#cnt}" == "2")); then rm -rf "${GOPATH%%:*}/src/${pkg%/*}" rm -rf "${GOPATH%%:*}/pkg/${ost}/${pkg%/*}" elif (("${#cnt}" > "2")); then rm -rf "${GOPATH%%:*}/src/${pkg%/*/*}" rm -rf "${GOPATH%%:*}/pkg/${ost}/${pkg%/*/*}" fi # Reload the current shell source ~/.bashrc }
用法:
# Either launch a new terminal and copy `goclean` into the current shell process, # or create a shell script and add it to the PATH to enable command invocation with bash. goclean github.com/your-username/your-repository
您可以删除存档文件和可执行二进制文件 go install (要么 go get 生产包装用 go clean -i importpath... 。这些通常属于 $GOPATH/pkg 和 $GOPATH/bin , 分别。
go install
go get
go clean -i importpath...
$GOPATH/pkg
$GOPATH/bin
一定要包括 ... 在importpath上,因为看起来,如果包中包含可执行文件, go clean -i 只会移除那个而不是子包的存档文件,比如 gore/gocode 在下面的例子中。
...
go clean -i
gore/gocode
然后需要手动删除源代码 $GOPATH/src 。
go clean 有一个 -n 标志为干运行打印将运行而不执行它,所以你可以肯定(见 go help clean )。它也很诱人 -r 标志以递归方式清除依赖项,您可能不希望实际使用它,因为您将从干运行中看到它将删除许多标准库存档文件!
go clean
-n
go help clean
-r
一个完整的示例,如果您愿意,可以将脚本作为基础:
$ go get -u github.com/motemen/gore $ which gore /Users/ches/src/go/bin/gore $ go clean -i -n github.com/motemen/gore... cd /Users/ches/src/go/src/github.com/motemen/gore rm -f gore gore.exe gore.test gore.test.exe commands commands.exe commands_test commands_test.exe complete complete.exe complete_test complete_test.exe debug debug.exe helpers_test helpers_test.exe liner liner.exe log log.exe main main.exe node node.exe node_test node_test.exe quickfix quickfix.exe session_test session_test.exe terminal_unix terminal_unix.exe terminal_windows terminal_windows.exe utils utils.exe rm -f /Users/ches/src/go/bin/gore cd /Users/ches/src/go/src/github.com/motemen/gore/gocode rm -f gocode.test gocode.test.exe rm -f /Users/ches/src/go/pkg/darwin_amd64/github.com/motemen/gore/gocode.a $ go clean -i github.com/motemen/gore... $ which gore $ tree $GOPATH/pkg/darwin_amd64/github.com/motemen/gore /Users/ches/src/go/pkg/darwin_amd64/github.com/motemen/gore 0 directories, 0 files # If that empty directory really bugs you... $ rmdir $GOPATH/pkg/darwin_amd64/github.com/motemen/gore $ rm -rf $GOPATH/src/github.com/motemen/gore
请注意,此信息基于 go Go版本1.5.1中的工具。
go