jes5199 Asked: 2010-02-24 10:29:10 +0800 CST2010-02-24 10:29:10 +0800 CST 2010-02-24 10:29:10 +0800 CST 一个unix单行编辑器/提示? 772 我有一个 bash 脚本,如果当我提示用户时,它会更好,而不仅仅是要求输入,如果它提供了用户可以编辑的行(但是全文编辑器会过大,它只有一行) 什么工具提供这个? dialog的输入框几乎是正确的,但我宁愿它没有绘制整个屏幕。 command-line-interface prompt 4 个回答 Voted Best Answer Peter Westlake 2010-02-24T10:57:30+08:002010-02-24T10:57:30+08:00 如果您给它“-e”标志,则“read”内置可以使用 Readline 库进行编辑: read -e foo Paul 2010-02-24T10:57:34+08:002010-02-24T10:57:34+08:00 如果你不介意使用 perl,你可以使用 Term::Readline C 中还有一个 readline() 实现;可能还有其他语言。我不知道 bash 的 readline 接口 perldoc 术语::Readline 转载如下,注意示例脚本 > Term::ReadLine(3) User Contributed > Perl Documentation > Term::ReadLine(3) > > > > NAME > Term::ReadLine - Perl interface to various "readline" packages. If no > real package is found, substitutes stubs instead of basic > functions. > > SYNOPSIS > use Term::ReadLine; > my $term = new Term::ReadLine 'Simple Perl calc'; > my $prompt = "Enter your arithmetic expression: "; > my $OUT = $term->OUT || \*STDOUT; > while ( defined ($_ = $term->readline($prompt)) ) { > my $res = eval($_); > warn $@ if $@; > print $OUT $res, "\n" unless $@; > $term->addhistory($_) if /\S/; > } > > DESCRIPTION ... Phil P 2010-03-08T20:30:05+08:002010-03-08T20:30:05+08:00 在 zsh 中,您有vared: % foo=wibble % vared foo wibble 然后光标位于 wibble 的末尾,您可以根据需要进行编辑,当您按下回车键时,您已经定义了foo. user41571 2010-04-28T01:34:03+08:002010-04-28T01:34:03+08:00 在 bash 中, 输入=“编辑这个” echo -en "$input\r"; 阅读回复; 回声 $reply${input:${#reply}} 注意回声中的 \r (回车)。最后一行中的括号中的伏都教打印了回复以及您没有删除的输入的剩余部分。 它并不理想 - 你基本上覆盖了输入变量,你并没有真正编辑它。 $2c, *-派克
如果您给它“-e”标志,则“read”内置可以使用 Readline 库进行编辑:
如果你不介意使用 perl,你可以使用 Term::Readline
C 中还有一个 readline() 实现;可能还有其他语言。我不知道 bash 的 readline 接口
perldoc 术语::Readline
转载如下,注意示例脚本
在 zsh 中,您有
vared
:然后光标位于 wibble 的末尾,您可以根据需要进行编辑,当您按下回车键时,您已经定义了
foo
.在 bash 中,
注意回声中的 \r (回车)。最后一行中的括号中的伏都教打印了回复以及您没有删除的输入的剩余部分。
它并不理想 - 你基本上覆盖了输入变量,你并没有真正编辑它。
$2c, *-派克