我在寫一個簡單的命令行實用程序,它向用戶請求一個密碼。我決定使用bufio閱讀用戶輸入內容,但無法弄清楚如何在用戶終端上隱藏密碼。這是Go的標準庫中的功能,還是我需要使用OS級別的功能來完成這個功能? (這可能只會在Linux上運行,但會更喜歡Windows上的某些功能。)在命令行中使用Go,如何隱藏用戶終端的命令行輸入?
3
A
回答
3
您想要的是關閉回顯。這通常通過配置終端驅動程序termios來實現。您最好的選擇是閱讀該驅動程序的Linux文檔(termios(3))。就我而言,在閱讀密碼之前,您需要關閉ECHO
。讀取密碼後,再次打開ECHO
。不要使用bufio,因爲您不希望緩衝區干擾低級終端。您可以從syscall包中訪問需要的系統調用。
termios適用於每個類UNIX平臺。這包括Linux,BSD,OS X和Solaris,但不包括Microsoft Windows。
1
您可以使用termbox,它使用鍵盤輸入而不輸出。到目前爲止,我可以告訴,這在Windows上工作,但我不確定這是否適用於Linux(我想它)。 安裝完成後,會有一個_demos文件夾,該文件夾內有一個名爲keyboard.go的示例。一旦啓動,它將顯示一個鍵盤,並突出顯示按下的按鍵。但是,它在我的電腦上工作,但是當我按空格鍵/輸入/功能鍵或CTRL-(任意)鍵時,程序掛起。也許這是Termbox代碼或內部的錯誤。我還沒有想出來。另外,你需要使用CGO來使用termbox來運行。
截圖:
相關問題
- 1. 隱藏命令行上的輸入
- 2. 如何執行用戶輸入的命令作爲龜命令?
- 3. 執行需要用戶輸入的終端命令
- 4. 通過用戶輸入窗口執行多個命令終端
- 5. 使用Applescript將命令輸入到終端中,但不執行
- 6. 命令行串行終端
- 7. 如何直接從終端/命令行運行Go(lang)代碼?
- 8. 使用NSTask運行終端命令
- 9. 使用PHP執行終端命令
- 10. 使用GLUI時隱藏命令行/ shell
- 11. 在java中使用命令行輸入
- 12. 使用ProcessBuilder執行需要命令行輸入的命令
- 13. 如何隱藏顯示終端命令輸出
- 14. 如何在終端上使用命令行來使用siri?
- 15. 執行終端命令
- 16. PHP - 終端/命令行 - Mac
- 17. 執行終端命令
- 18. 終端命令行python3.3
- 19. 命令行(終端)圖形
- 20. 塔塔:隱藏命令行
- 21. 隱藏進程命令行
- 22. Vim的exec命令在命令行,和Vim:警告:輸入不是從終端
- 23. 禁用命令行工具的終端
- 24. 如何在終端中使用vsim命令運行Modelsim?
- 25. 如何在Go中等待命令行輸入
- 26. 如何使命令行命令適用於任何用戶?
- 27. 如何從終端運行Vim命令
- 28. 如何自動執行終端命令
- 29. java如何執行終端命令?
- 30. 如何使用Boost.Process 0.5運行命令行/終端utils?
我沒有用它自己,所以我將不會發佈一個答案,但是這可能是你想要什麼:http://godoc.org/code.google的.com/p/gopass – 2014-10-27 19:29:57