package main import ( "fmt" "os" "strings" "syscall" "golang.org/x/crypto/ssh/terminal" ) 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 !!!!") }