sh/bash/dash/ksh/zsh等Shell脚本
-
tusooa
- 帖子: 6548
- 注册时间: 2008-10-31 22:12
- 系统: 践兔
-
联系:
#1
帖子
由 tusooa » 2010-10-18 21:45
像shell里面输入esc,数字和某个字符,就给你重复几遍。
像这样的提示符。像输入\e2e,就是ee。
这就不对头了。应该是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 ~
●
-
tusooa
- 帖子: 6548
- 注册时间: 2008-10-31 22:12
- 系统: 践兔
-
联系:
#2
帖子
由 tusooa » 2010-10-25 18:41
居然没人回答。。。
-
lilydjwg
- 论坛版主
- 帖子: 4249
- 注册时间: 2009-04-11 23:46
- 系统: Arch Linux
-
联系:
#3
帖子
由 lilydjwg » 2010-10-25 19:04
tusooa 写了:居然没人回答。。。
echo 直接写到终端了,又没交给 bash 处理。。。。
-
aerofox
- 帖子: 1453
- 注册时间: 2008-05-24 8:30
#4
帖子
由 aerofox » 2010-10-26 22:12
那个是 readline 的功能吧?
-
lilydjwg
- 论坛版主
- 帖子: 4249
- 注册时间: 2009-04-11 23:46
- 系统: Arch Linux
-
联系:
#5
帖子
由 lilydjwg » 2010-10-26 22:41
aerofox 写了:那个是 readline 的功能吧?
bash 里应该是用的 readline,zsh 没有用 readline。
-
tusooa
- 帖子: 6548
- 注册时间: 2008-10-31 22:12
- 系统: 践兔
-
联系:
#6
帖子
由 tusooa » 2010-10-27 15:45
● bash -c 'echo -e "\e2e"'
e
试验过,不行。
-
aerofox
- 帖子: 1453
- 注册时间: 2008-05-24 8:30
#7
帖子
由 aerofox » 2010-10-27 18:50
readline 是在输入时起作用的,并不是 bash 语法分析的一部分。
-
aerofox
- 帖子: 1453
- 注册时间: 2008-05-24 8:30
#8
帖子
由 aerofox » 2010-10-28 1:39
lilydjwg 写了:aerofox 写了:那个是 readline 的功能吧?
bash 里应该是用的 readline,zsh 没有用 readline。
跟 bash 还是 zsh 没有什么关系吧?我的 bash 环境中也没有这个功能,因为我不管是用 bash 还是用 zsh,都使用 vi 模式的。如果设成 emacs,则 zsh 同样有这个功能:
只要是使用 emacs 编辑模式,那么不管是什么 shell,或者不是在 shell 命令中,在 bc、mysql 等支持 readline 的命令行编辑模式下,都有这个功能。
-
lilydjwg
- 论坛版主
- 帖子: 4249
- 注册时间: 2009-04-11 23:46
- 系统: Arch Linux
-
联系:
#9
帖子
由 lilydjwg » 2010-10-28 12:07
aerofox 写了:lilydjwg 写了:aerofox 写了:那个是 readline 的功能吧?
bash 里应该是用的 readline,zsh 没有用 readline。
跟 bash 还是 zsh 没有什么关系吧?我的 bash 环境中也没有这个功能,因为我不管是用 bash 还是用 zsh,都使用 vi 模式的。如果设成 emacs,则 zsh 同样有这个功能:
只要是使用 emacs 编辑模式,那么不管是什么 shell,或者不是在 shell 命令中,在 bc、mysql 等支持 readline 的命令行编辑模式下,都有这个功能。
只是关系不大,因为zsh的行为还是很接近readline的。但如果你配置了readline(不是bash)之后,你就会发现在zsh里它不起作用了。
关于readline,还有个很好用的工具,叫rlwrap。
-
aerofox
- 帖子: 1453
- 注册时间: 2008-05-24 8:30
#10
帖子
由 aerofox » 2010-10-28 16:55
我试验过了,在 zsh 中,执行 set -o emacs 后,它是起作用的。
-
lilydjwg
- 论坛版主
- 帖子: 4249
- 注册时间: 2009-04-11 23:46
- 系统: Arch Linux
-
联系:
#11
帖子
由 lilydjwg » 2010-10-28 21:37
aerofox 写了:我试验过了,在 zsh 中,执行 set -o emacs 后,它是起作用的。
你没发现它的显示是不同的吗?
再说一次,zsh 自己实现了个和readline几乎一样的东西,但它们不是同一个东西。
-
aerofox
- 帖子: 1453
- 注册时间: 2008-05-24 8:30
#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
-
联系:
#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 的。