草庐IT

terminal

全部标签

go - CLI 应用程序中的控制箭头键

我想构建一个(golang)库,为用户提供多种选择。我的想法是打印选项的名称并将其中一个突出显示为“事件”。按下箭头键(左右或上下)后,我想在内部和可见地更新“选定”答案。我知道termbox和tcell我还检查了像peco和rat这样的项目.它们似乎都建立在某种屏幕的基本概念之上。理想情况下,我希望将控件保持在用户正在其终端中编辑的行中,而不创建全屏交互。有什么办法可以实现吗? 最佳答案 ncurses是Linux中一个流行的终端控制库,它有Gobindings(也支持OSX和Windows)。我从来没有使用过它们,所以我不能保证

go - 关闭终端中的回显 - Golang

我正在尝试关闭Golang终端中的回显代码:funcmain(){STDINFILE:=os.StdinSTDINFILENO:=0raw,err:=unix.IoctlGetTermios(STDINFILENO,unix.TCGETA)iferr!=nil{panic(err)}rawState:=*rawrawState.Lflag&^=unix.ECHOerr=unix.IoctlSetTermios(STDINFILENO,unix.TCSAFLUSH,&rawState)iferr!=nil{panic(err)}varcharValuebytereader:=bufio.

linux - 无法运行在/etc/inittab 中配置的 tview 应用程序

我正在尝试使用tview运行一个应用程序来显示一些遥测数据。当正常从cmdline调用时,应用程序运行良好。当我更新我的inittab以运行应用程序时:c1:2345:respawn:/usr/sbin/systatus38400tty1linux那是当我看到无法打开/dev/tty时,没有这样的设备或地址,引用了我调用tview.Application.Run的行号。文件/设备确实存在。关于如何解决这个问题有什么想法吗?我引用这个:GoLang-termbox:panic:open/dev/tty:nosuchdeviceoraddress即使我没有使用termbox,问题也是一样的

macos - 删除了 golang 但 go 命令仍然有效?

我正在运行MacOSXYosemite。我正在尝试从golang1.4更新到golang1.6。我卸载了golang,但我注意到我仍然可以运行go命令goversion=go1.4.2darwin/amd64。为什么会这样?IMO的指示不是很清楚。他们说删除现有的Go安装这通常是/usr/local/go(完成)删除etc/paths.d/go我通过运行goversiongo1.4.2darwin/amd64编辑了bash 最佳答案 我遇到了同样的问题。我最终得到了这个解决方案:cd/usr/local/binrmgo删除“go”命

go - -bash : set: -g: invalid option when I setting GOPATH

当我设置GOPATH时,使用:set-gxGOPATH/usr/local/Cellar/go/1.8.1我遇到了这个问题:-bash:set:-g:invalidoptionset:usage:set[--abefhkmnptuvxBCHP][-ooption][arg...] 最佳答案 bash命令set不支持g选项。此外,此命令不用于一起设置环境变量-您的代码段可能适用于不同的shell(fishshell?)。在bash中,按照建议使用export:exportGOPATH/usr/local/Cellar/go/1.8.1

docker - 如何让 vim 不要求确认交互?

如果我在Dockerfile中运行以下命令:vim-c"GoUpdateBinaries"它可以工作,但最终会卡在以下构建中:PressENTERortypecommandtocontinue我怎样才能避免这种情况?我试过:RUNvim-c"execute'GoUpdateBinaries'|execute'redraw'"当我从我的终端尝试它时,它起作用了,但不是从Dockerfile构建一个新图像,因为它在屏幕上引入了--more--(不知道为什么?)然后我不能'侧步要么 最佳答案 所以我找到了解决方案...RUNvim-c"e

macos - 如何使用 GoLang 以编程方式禁用来自 Mac 终端的回显

我正在尝试使用GoLang禁用来self的Mac终端的回显。我尝试使用exec.Command("stty","-F","/dev/tty","-echo").Run()它适用于linux终端,但不适用于Mac和Windows。在Mac中,在bash和zsh中,我手动尝试使用stty-echostty-echoctl两者均无效。有人可以帮忙吗?谢谢! 最佳答案 虽然这不能直接回答为什么您的示例不起作用的问题,但这里是如何从终端读取secret而不回显它(这里是签名和文档的链接-link):packagemainimport("fmt

macos - 在 golang 中使用 exec.Command,如何打开一个新终端并执行命令?

当我在终端中直接输入命令时,我能够得到以下命令来打开一个新终端并执行命令,但是当我在go中使用exec.Commmand函数时,我无法让它工作。osascript-e'tellapplication"Terminal"todoscript"echohello"'我认为问题出在双引号和单引号中,但我不确定是什么导致了错误。c:=exec.Command("osascript","-e","'tell","application",`"Terminal"`,"to","do","script",`"echo`,`hello"'`)iferr:=c.Run();err!=nil{fmt.Pr

linux - 捕获中断时抑制终端输出中的 '^C' 字符串

我正在拦截我的Go程序中的中断,并且我正在尝试在发生这种情况时打印出一条日志消息,例如:log.Printf("在终端中按下\rCtrl+C")问题是,这样log.Println的日期部分就丢失了。当没有回车时,像这样:log.Printf("在终端中按下Ctrl+C")然后日期被打印出来,但它被^C字符串前置。有没有办法抑制终端上的^C字符串输出,同时在日志字符串中包含日期? 最佳答案 fmt.Print("\r")log.Println("Ctrl+CpressedinTerminal")

go - 控制台中的多行输入

到处都在寻找这个问题,但没有任何答案。我可以通过扫描或bufio.readstring循环使用Go在控制台中创建多行提示输入,并检查输入结束字符以结束输入。或者我什至可以将任何字符传递给bufio.readstring,这样我可以在输入\n后继续阅读。但在这两种情况下,用户都无法退格到前一行,因为前一行已经输入并经过验证。如何让用户退格到上一行,或者在控制台输入的行之间自由移动光标?我可以想象清除终端和重新绘制的东西。这是唯一的方法吗? 最佳答案 您可以使用readline库,如该演示所示packagemainimport("git