shell之不输入该如何输入Golang中Stdin的输入字段

mq0036 阅读:169 2025-06-02 22:19:02 评论:0

所以我是新手,请原谅我的无知。我试图写一个最小的 shell 。为此,我想实现类似于bash或zsh的命令历史记录,其中的向上箭头可以调出最新的命令,并将其放入您的键入字段中,而无需实际输入。

目前,我正在阅读如下输入:

for { 
        // prompter 
        promptColor.Printf(shellPrompt) 
 
        // read string from STDIN until newline 
        input, _ := reader.ReadString('\n') 
        // convert CRLF to LF 
        input = strings.Replace(input, "\n", "", -1) 
 
        // read input tokens 
        tokens := SplitString(input) 
 
        // parse tokens and execute relevant command 
        Parse(tokens) 
    } 

使用bufio.Reader读入。我看了一下,但找不到找到写入该输入的方法。

请您参考如下方法:

大多数要实现此行为的软件包将使用GNU Readline库。甚至Bash shell都在使用此readline库(修改后的副本)。考虑以下两个选项之一:

  • 使用go-readline包-Go编程语言的GNU Readline库的包装。 https://github.com/fiorix/go-readline
  • 对GNU-Readline类库使用pure-GO替换实现。 https://github.com/chzyer/readline

  • 第一条路径将为您提供可靠的ReadLine库,但需要构建“C”代码。您可以根据自己的经验/约束决定要走的路。


    标签:Shell
    声明

    1.本站遵循行业规范,任何转载的稿件都会明确标注作者和来源;2.本站的原创文章,请转载时务必注明文章作者和来源,不尊重原创的行为我们将追究责任;3.作者投稿可能会经我们编辑修改或补充。

    关注我们

    一个IT知识分享的公众号