gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-12-01 20:22:56 24 4
gpt4 key购买 nike

所以我是新手,请原谅我的无知。我试图写一个最小的 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 - 不输入该如何输入Golang中Stdin的输入字段?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62032539/

    24 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com