Golangで、受け付けた標準入力(stdin)を、一時ファイルにコピーしたいことがあったので、備忘として残しておく。 一時ファイル(tmpファイル)については ioutil.TempFile()で、一時ファイルへのコピーについてはio.Copy()で行える。 以下、実行例。
stdinCp.gopackage main import ( "fmt" "io" "io/ioutil" "os" ) func main() { stdinTemp, err := ioutil.TempFile("", "test") if err != nil { panic(err) } fmt.Println(stdinTemp.Name()) io.Copy(stdinTemp, os.Stdin) }
[blacknon@blacknon-ThinkPad-X201]% ~(`・ω・´) < echo aaa | ./stdinCp
/tmp/test765158669
[blacknon@blacknon-ThinkPad-X201]% ~(`・ω・´) < cat /tmp/test765158669
aaa