如何使用Go?
删除终端中的回滚在使用终端的OS X中,我可以运行:
$ print '\e[3J'
它将“删除回滚(又名'已保存的线')。”太好了!
但是,在Go中,当我跑步时:
exec.Command("print", `\e[3J`).CombinedOutput()
我收到错误exec: "print": executable file not found in $PATH
,这是有道理的:
$ type -a print
print is a shell builtin
Slack中有用的Gophers提到我应该考虑直接传达终端应用程序(无论是Terminal,iTerm,iTerm2等)。但是,即使看到这个问题,我也不知所措:https://www.iterm2.com/documentation-scripting.html
答案 0 :(得分:2)
fmt.Printf(string([]byte{0x1b,'[', '3', 'J'}))
应该足够了。但是你真的应该使用一个终端库,它根据使用的终端仿真器知道要使用哪些代码。
类似于termbox-go。
对于通常可用的代码及其字节值,您可以 尝试xterm-docu,但是你的 因使用不同的终端仿真器,里程可能会有所不同。
答案 1 :(得分:2)
print
是一个内置的shell,因此无法从go执行。您可以使用/bin/echo
二进制文件,/usr/bin/clear
或仅fmt.Println
转义序列:
seq := "\x1b\x5b\x48"
// option 1
out, _ := exec.Command("/bin/echo", seq).Output()
fmt.Println(string(out))
// option 2
out, _ := exec.Command("/usr/bin/clear").Output()
fmt.Println(string(out))
// option 3 (prefered)
fmt.Println(seq)