Golangで、受け付けた標準入力(stdin)を、一時ファイルにコピーしたいことがあったので、備忘として残しておく。 一時ファイル(tmpファイル)については ioutil.TempFile()で、一時ファイルへのコピーについてはio.Copy()で行える。 以下、実行例。

stdinCp.go
package 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