[go] 명령 실행 출력 파이프
이번 글에서는 Go 언어를 사용하여 외부 명령을 실행하고 그 출력을 파이프하여 처리하는 방법에 대해 알아보겠습니다.
외부 명령 실행
Go에서 외부 명령을 실행하기 위해서는 os/exec
패키지를 사용합니다. 아래는 간단한 예제 코드입니다.
package main
import (
"bytes"
"fmt"
"os/exec"
)
func main() {
cmd := exec.Command("ls", "-l")
output, err := cmd.Output()
if err != nil {
fmt.Println(err)
return
}
fmt.Println(string(output))
}
위 예제는 ls -l
명령을 실행하고 그 결과를 출력하는 코드입니다.
출력 파이프
외부 명령의 출력을 다른 명령이나 Go 프로그램으로 파이프하여 처리할 수 있습니다. 아래는 이를 수행하는 예제 코드입니다.
package main
import (
"bytes"
"fmt"
"os/exec"
)
func main() {
cmd1 := exec.Command("ls", "-l")
cmd2 := exec.Command("wc", "-l")
reader, writer := io.Pipe()
cmd1.Stdout = writer
cmd2.Stdin = reader
var cmd2Output bytes.Buffer
cmd2.Stdout = &cmd2Output
cmd1.Start()
cmd2.Start()
cmd1.Wait()
writer.Close()
cmd2.Wait()
fmt.Println(cmd2Output.String())
}
위의 예제에서는 ls -l
명령의 출력을 wc -l
명령으로 파이프하여 라인 수를 세는 방법을 보여줍니다.
이렇게 하면 Go 언어에서 외부 명령을 실행하고 그 출력을 파이프하여 효과적으로 처리할 수 있습니다.
결론
Go 언어의 os/exec
패키지를 사용하면 외부 명령을 실행하고 그 출력을 파이프하는 작업을 쉽게 처리할 수 있습니다. 이를 통해 Go 언어로 다양한 시스템 관리 및 자동화 작업을 보다 효율적으로 수행할 수 있습니다.
참고 문헌: