package main
import (
"fmt"
"golang.org/x/crypto/ssh/terminal"
"os"
"strings"
"syscall"
)
var (
oldTermState *terminal.State
)
const prompt = "LBS> "
func main() {
fmt.Printf("\nLBS CLI - version 1.0\n\n")
var err error
oldTermState, err = terminal.MakeRaw(syscall.Stdin)
if err != nil {
fmt.Println(err)
return
}
term := terminal.NewTerminal(os.Stdin, prompt)
rawState, err := terminal.GetState(syscall.Stdin)
if err != nil {
fmt.Println(err)
return
}
for {
cmdline, err := term.ReadLine()
if err != nil {
break
}
cmdline = strings.TrimSpace(cmdline)
if cmdline == "" {
continue
}
terminal.Restore(syscall.Stdin, oldTermState)
fmt.Println("oooooo:", cmdline)
terminal.Restore(syscall.Stdin, rawState)
}
terminal.Restore(syscall.Stdin, oldTermState)
fmt.Println("")
//fmt.Println("Terminal Over !!!!")
}
go 实现交互终端
最新推荐文章于 2023-04-24 13:56:24 发布