gpt4 book ai didi

linux - 如果我在 Bash 中创建一个菜单,命令样式历史是可能的

转载 作者:塔克拉玛干 更新时间:2023-11-03 00:15:16 30 4
gpt4 key购买 nike

我创建菜单没问题 - 这不是这个问题的目的。

但是发生的事情是,我从让箭头键有用(上下滚动以访问我在命令行运行的先前命令)到完全无用(^[[A^[[ A^[[A^[[B^[[C^[[D^[[C)

有什么方法可以将该行为封装到菜单中吗?

例如我可以使用向上和向下滚动键来访问我之前选择的选项吗? (这是一个很大的菜单,我有很多选项,例如 dev.client.alphadev.otherclient.beta 等...)

我想我可以将每个文件分解成单独的文件并直接使用命令行或者我可以将扩充传递给菜单以便直接调用:~/menu dev.clint.alpha从命令行。

只是想知道是否还有其他人有过这种痒感,是否有人对此采取过任何措施?

我目前使用的菜单基本上是这样的:

while :
clear
do
echo "$MENU"
read CHOICE ARG1 ARG2 ARG3 ARG4 overflow
case $CHOICE in
command.a)
# do stuff here
;;
command.b)
# do different stuff here
;;
*) # catch all...
continue
;;
esac
done
clear

最佳答案

你可以通过在阅读中启用readline来做你想做的事,并将每个选择回复附加到内部历史记录。你甚至可以节省历史到一个文件,所以当你重新运行脚本时,你有旧的历史。例如:

HISTFILE=/tmp/myhistory
history -r # read old history
while :
do echo "MENU. a b q"
read -e # sets REPLY, enables readline
history -s "$REPLY" # add to history
history -w # save to file
set -- $REPLY
CHOICE=$1; shift
ARG1=$1 ARG2=$2 ARG3=$3 ARG4=$4; shift 4
overflow="$*"
case $CHOICE in
a) echo do stuff here $ARG1 ;;
b) echo do different stuff here ;;
q) exit ;;
*) echo catch all...
continue ;;
esac
done

关于linux - 如果我在 Bash 中创建一个菜单,命令样式历史是可能的,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31140336/

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