代码拉取完成,页面将自动刷新
760
fix: shell支持exit退出,完善帮助信息,特殊处理不可见字符
已合并
相关的Issue
#I4OXAK:shell相关代码master分支同步到3.0LTS
原因(目的、解决的问题等)
- shell内建ping命令Usage信息打印后,shell提示符显示在同一行内,建议优化
- mksh执行help,和预期效果不符。当前mksh下键入"help"预期展示shell支持的内建命令和toybox支持的命令,实际展示的是shell支持的内建命令和"toybox help"的usage
- 不支持exit退出交互式shell
- 交互式shell退出后,无法再次进入交互式shell
- 交互式shell对于Ctrl+C等特殊控制字符未做处理
描述(做了什么,变更了什么)
- shell内建ping命令Usage信息打印最后一行后换行
OHOS:/$ shell ping
Ping: require dest ipaddr at least
Usage:
ping
ping [-n cnt] [-w interval] [-l data_len] destination
ping [-t] [-w interval] destination
ping -k
-t means ping forever, user can use -k to stop the forever ping
OHOS:/$
- 更新help的alias,shell的help内核命令列表按照80列的默认值优化打印换行,并添加使用说明
OHOS:/$ help
*******************shell commands:*************************
cat cd chgrp chmod chown cp
cpup date dhclient format free help
ifconfig kill ls mkdir mount netstat
ping pmm pwd reset rm rmdir
shm sync systeminfo task trace_dump trace_mask
trace_reset trace_start trace_stop umount uname
After shell prompt "OHOS # ":
Use `<cmd> [args ...]` to run built-in shell commands listed above.
Use `exec <cmd> [args ...]` or `./<cmd> [args ...]` to run external commands.
*******************toybox commands:************************
chgrp chmod chown cp date du free help ifconfig kill ls mkdir mount
mv ping ps reboot rm rmdir top touch umount uname
Use `toybox help [command]` to show usage information for a specific command.
Use `shell` to enter interactive legacy shell.
Use `alias` to display command aliases.
OHOS:/$
- shell新增对exit的支持
OHOS:/$ shell
OHOS # exit 7
OHOS:/$ echo $?
7
OHOS:/$ shell
OHOS # exit
OHOS:/$ echo $?
0
OHOS:/$ shell
OHOS # exit 7 8
exit: too many arguments
OHOS # exit ?
exit: bad number: ?
OHOS # exit -1
OHOS:/$ echo $?
255
OHOS:/$
- 驱动层注册shellEntry的逻辑添加并行保护,且支持更新shellEntryId,解决shell不能多次进入的问题
- 特殊处理Ctrl+C,打印"^C";Enter的换行在ShellCmdProcess中打印,避免前台程序执行时,多次按下回车或Ctrl+C,提示符"OHOS # "在一行内打印多次;解析普通字符时,屏蔽不可见字符
OHOS #
OHOS # ^C
OHOS # (键入Ctrl+A,Ctrl+S,发送2个不可见字符,被忽略;回车后另起一行,未解析)
OHOS #
OHOS # ^C
OHOS #
OHOS # exec /bin/toybox ping 127.0.0.1
Ping 127.0.0.1 (127.0.0.1): 56(84) bytes.
84 bytes from 127.0.0.1: icmp_seq=0 ttl=0 time=5 ms
84 bytes from 127.0.0.1: icmp_seq=0 ttl=0 time=6 ms(键入Ctrl+C)
OHOS # ^C
OHOS # exec /bin/toybox ping 127.0.0.1
Ping 127.0.0.1 (127.0.0.1): 56(84) bytes.
84 bytes from 127.0.0.1: icmp_seq=0 ttl=0 time=2 ms
84 bytes from 127.0.0.1: icmp_seq=0 ttl=0 time=2 ms(键入Ctrl+C,Enter键,下方多出2个新行)
OHOS # ^C
OHOS #
OHOS #
OHOS # exec /bin/toybox ping 127.0.0.1
Ping 127.0.0.1 (127.0.0.1): 56(84) bytes.
84 bytes from 127.0.0.1: icmp_seq=0 ttl=0 time=0 ms
84 bytes from 127.0.0.1: icmp_seq=0 ttl=0 time=1 ms
84 bytes from 127.0.0.1: icmp_seq=0 ttl=0 time=2 ms(键入Enter键,下方多出1个新行)
84 bytes from 127.0.0.1: icmp_seq=0 ttl=0 time=5 ms
84 bytes from 127.0.0.1: icmp_seq=0 ttl=0 time=2 ms
84 bytes from 127.0.0.1: icmp_seq=0 ttl=0 time=5 ms
--- 127.0.0.1 ping statistics ---
3 packets transmitted, 6 received, 1431655665% packet loss
round-trip min/avg/max = 0/0/2 ms
OHOS #
OHOS #