파이프를 받아들이다
standard-in에서 입력을 읽고 standard-out에 출력을 쓰도록 응용 프로그램을 작성하는 한 수천 개의 다른 도구로 cli 도구를 구성할 수 있습니다.
스캐너
한 번에 한 줄씩 읽으려면 bufio.NewScanner을 사용하는 것을 좋아합니다. 이것은 bufio.ScanLines을 사용하여 판독기를 새 줄로 분할합니다.
in := bufio.NewScanner(os.Stdin)
// Scan returns false when its out of lines
for in.Scan() {
// line is a string
line := in.Text()
// if you want bytes in.Bytes() exists too
}
도구를 만들 수 있습니다
예를 들어 이미지의 URL을 읽고 터미널에 ascii 아트 이미지로 표시하기 위해 작성한 작은 명령줄 도구가 있습니다.
전체 소스https://gist.github.com/trashhalo/6154a690bd2612ae33c8252d8051eb9f
func main() {
in := bufio.NewScanner(os.Stdin)
for in.Scan() {
line := in.Text()
err := convertLineToArt(line)
if err != nil
}
}
func convertLineToArt(line string) error {
fmt.Println(line)
resp, err := http.Get(line)
if err != nil {
defer resp.Body.Close()
img, _, err := image.Decode(resp.Body)
convertOptions := convert.DefaultOptions
convertOptions.FixedWidth = 50
convertOptions.FixedHeight = 50
converter := convert.NewImageConverter()
for _, row := range converter.Image2ASCIIMatrix(img, &convertOptions) {
fmt.Print(row)
}
return nil
}
파이프 사용
이제 몇 가지 도구를 결합해 보겠습니다.
curl -A "test" https://www.reddit.com/r/cats.json | jq -r '.data.children[] | .data.url'|go run .|less
이것은 다음과 같이 말합니다.
curl - 고양이에 대한 reddit 게시물용 json을 다운로드합니다. reddit이 curl 사용자 에이전트를 싫어하기 때문에 -A "테스트"를 변경해야 합니다.
jq -r 'xyz' - reddit json에서 이미지의 URL을 추출합니다.
less - 위아래로 스크롤할 수 있는 작은 뷰어에 출력을 넣습니다.
Reference
이 문제에 관하여(파이프를 받아들이다), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://dev.to/trashhalo/embrace-the-pipe-4l8b텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)