esc重复字符的在脚本里面不起效了?

sh/bash/dash/ksh/zsh等Shell脚本
回复
tusooa
帖子: 6548
注册时间: 2008-10-31 22:12
系统: 践兔
联系:

esc重复字符的在脚本里面不起效了?

#1

帖子 tusooa » 2010-10-18 21:45

像shell里面输入esc,数字和某个字符,就给你重复几遍。

代码: 全选

(arg: 3) 
像这样的提示符。像输入\e2e,就是ee。

代码: 全选

● echo "\e2e"
e
这就不对头了。应该是2个e的。光输出了一个。
跟bash,dash之类无关。

代码: 全选

tlcr: 0 庚寅年九月十一日 21:40 ~ 
● l /bin/sh
lrwxrwxrwx 1 root root 4  5月 17 08:38 /bin/sh -> bash
tlcr: 0 庚寅年九月十一日 21:46 ~ 
● 

代码: 全选

] ls -ld //
tusooa
帖子: 6548
注册时间: 2008-10-31 22:12
系统: 践兔
联系:

Re: esc重复字符的在脚本里面不起效了?

#2

帖子 tusooa » 2010-10-25 18:41

居然没人回答。。。

代码: 全选

] ls -ld //
头像
lilydjwg
论坛版主
帖子: 4249
注册时间: 2009-04-11 23:46
系统: Arch Linux
联系:

Re: esc重复字符的在脚本里面不起效了?

#3

帖子 lilydjwg » 2010-10-25 19:04

tusooa 写了:居然没人回答。。。
echo 直接写到终端了,又没交给 bash 处理。。。。
aerofox
帖子: 1453
注册时间: 2008-05-24 8:30

Re: esc重复字符的在脚本里面不起效了?

#4

帖子 aerofox » 2010-10-26 22:12

那个是 readline 的功能吧?
头像
lilydjwg
论坛版主
帖子: 4249
注册时间: 2009-04-11 23:46
系统: Arch Linux
联系:

Re: esc重复字符的在脚本里面不起效了?

#5

帖子 lilydjwg » 2010-10-26 22:41

aerofox 写了:那个是 readline 的功能吧?
bash 里应该是用的 readline,zsh 没有用 readline。
tusooa
帖子: 6548
注册时间: 2008-10-31 22:12
系统: 践兔
联系:

Re: esc重复字符的在脚本里面不起效了?

#6

帖子 tusooa » 2010-10-27 15:45

● bash -c 'echo -e "\e2e"'
e
试验过,不行。

代码: 全选

] ls -ld //
aerofox
帖子: 1453
注册时间: 2008-05-24 8:30

Re: esc重复字符的在脚本里面不起效了?

#7

帖子 aerofox » 2010-10-27 18:50

readline 是在输入时起作用的,并不是 bash 语法分析的一部分。
aerofox
帖子: 1453
注册时间: 2008-05-24 8:30

Re: esc重复字符的在脚本里面不起效了?

#8

帖子 aerofox » 2010-10-28 1:39

lilydjwg 写了:
aerofox 写了:那个是 readline 的功能吧?
bash 里应该是用的 readline,zsh 没有用 readline。
跟 bash 还是 zsh 没有什么关系吧?我的 bash 环境中也没有这个功能,因为我不管是用 bash 还是用 zsh,都使用 vi 模式的。如果设成 emacs,则 zsh 同样有这个功能:

代码: 全选

set -o emacs
只要是使用 emacs 编辑模式,那么不管是什么 shell,或者不是在 shell 命令中,在 bc、mysql 等支持 readline 的命令行编辑模式下,都有这个功能。
头像
lilydjwg
论坛版主
帖子: 4249
注册时间: 2009-04-11 23:46
系统: Arch Linux
联系:

Re: esc重复字符的在脚本里面不起效了?

#9

帖子 lilydjwg » 2010-10-28 12:07

aerofox 写了:
lilydjwg 写了:
aerofox 写了:那个是 readline 的功能吧?
bash 里应该是用的 readline,zsh 没有用 readline。
跟 bash 还是 zsh 没有什么关系吧?我的 bash 环境中也没有这个功能,因为我不管是用 bash 还是用 zsh,都使用 vi 模式的。如果设成 emacs,则 zsh 同样有这个功能:

代码: 全选

set -o emacs
只要是使用 emacs 编辑模式,那么不管是什么 shell,或者不是在 shell 命令中,在 bc、mysql 等支持 readline 的命令行编辑模式下,都有这个功能。
只是关系不大,因为zsh的行为还是很接近readline的。但如果你配置了readline(不是bash)之后,你就会发现在zsh里它不起作用了。

关于readline,还有个很好用的工具,叫rlwrap。
aerofox
帖子: 1453
注册时间: 2008-05-24 8:30

Re: esc重复字符的在脚本里面不起效了?

#10

帖子 aerofox » 2010-10-28 16:55

我试验过了,在 zsh 中,执行 set -o emacs 后,它是起作用的。
头像
lilydjwg
论坛版主
帖子: 4249
注册时间: 2009-04-11 23:46
系统: Arch Linux
联系:

Re: esc重复字符的在脚本里面不起效了?

#11

帖子 lilydjwg » 2010-10-28 21:37

aerofox 写了:我试验过了,在 zsh 中,执行 set -o emacs 后,它是起作用的。
你没发现它的显示是不同的吗?

再说一次,zsh 自己实现了个和readline几乎一样的东西,但它们不是同一个东西。
aerofox
帖子: 1453
注册时间: 2008-05-24 8:30

Re: esc重复字符的在脚本里面不起效了?

#12

帖子 aerofox » 2010-10-28 23:53

确实是显示有些不同,受教了。
功能也有些差别,在 bash 中,按 ESC 后输入两个数字时,这两个数字都会放到 arg: 后面成为重复数,所以 ESC 1 2 a (输入时不带空格),成了 aaaaaaaaaaaa,而在 zsh 中,只认一位数字的重复次数,ESC 1 2 a 的结果成了 2a,ESC 3 3 a 就是 333a。
头像
lilydjwg
论坛版主
帖子: 4249
注册时间: 2009-04-11 23:46
系统: Arch Linux
联系:

Re: esc重复字符的在脚本里面不起效了?

#13

帖子 lilydjwg » 2010-10-29 11:17

aerofox 写了:确实是显示有些不同,受教了。
功能也有些差别,在 bash 中,按 ESC 后输入两个数字时,这两个数字都会放到 arg: 后面成为重复数,所以 ESC 1 2 a (输入时不带空格),成了 aaaaaaaaaaaa,而在 zsh 中,只认一位数字的重复次数,ESC 1 2 a 的结果成了 2a,ESC 3 3 a 就是 333a。
zsh 里多位数字,每个数字都要加 Esc 的。
回复