忘记密码   免费注册 查看新帖 |

ChinaUnix.net

  平台 论坛 博客 文库 频道自动化运维 虚拟化 储存备份 C/C++ PHP MySQL 嵌入式 Linux系统
最近访问板块 发新帖
查看: 1677 | 回复: 4

[学习共享] 《我赶脚shell的tab补全,跟屎一样》 [复制链接]

论坛徽章:
0
发表于 2018-03-09 16:16 |显示全部楼层
本帖最后由 本友会机友会摄友会 于 2018-03-12 12:14 编辑

======================================================

上篇:《我赶脚shell的tab补全,跟屎一样》  即本篇

上篇别名:《tab键哭诉道:“powershell,别总摸我”》

下篇:《我赶脚shell参数,跟屎一样》  估计一个月内可以写完,敬请期待。

======================================================


大家想过没有?
为什么?linux要有重名的,长短参数。
如:ls -R, --recursive                递归显示子目录
而powreshell不支持【--】,所有参数都用【-】。为什么?
           
假设!有这样一条命令:
mysql -u xxx #linux格式
mysql --username xxx #linux格式
mysql -username xxx #ps格式


因为不论linux命令,还是自己写的linux脚本,都不支持参数补全!!!(只支持命令补全)
那大家当然都想少敲几下键盘,都想用mysql -u xxx了。

而ps没有这个问题。ps中,无论微软开发的ps命令,第三方公司开发的命令,还是自己写的函数,或自己写的脚本。
全部都可以用-u<tab键>,来补全参数-username。或者用:
-<tab键>,来补全参数-username。

而且powershell的补全---》psreadline,

shell的补全---》readline,
强,复杂太多。
因为ps是面向对象的,psreadline【还要】能补全对象的属性,方法。
如(get-process qq).c然后打<tab>




结论:
命令补全,参数补全,是特别老的东西,不是先进的新发明。但,
我赶脚shell的tab补全,跟屎一样。

而powershell能补全的【项目】是:(即psreadline的补全项目是)
命令名:微软开发的powershell命令。第三方公司开发的powershell命令。自己写的ps脚本。cmd外部命令。linux外部命令。
参数名:微软开发的powershell命令。第三方公司开发的powershell命令。自己写的ps脚本。自己写的ps函数。linux命令的参数,无法tab补全。cmd命令的参数,无法tab补全。
属性名:微软开发的powershell命令。第三方公司开发的powershell命令。自己写的ps脚本。自己写的ps函数。
方法名:微软开发的powershell命令。第三方公司开发的powershell命令。自己写的ps脚本。自己写的ps函数。

【靓妹tab】惊叫道:“powershell,拿走你的臭手,你干嘛总摸我”
抠脚大汉powershell道:“我为命令的【参数补全】而痴狂。bash和zsh,没有参数补全功能,不摸你,我能怎么办?”

问:那么说powershell的补全功能,就完美么?
答:我认为也不完美!
但,powershell的补全功能,即psreadline模块,是个人 + 业余时间 + 免费开源作品。不是拿微软工资开发的。
所以,大家应该包容这个【个人业余免费开源作品】。



问:你所知道的,psreadline有什么问题?
答:
psreadline的开发者【lzybkr】,是美国人,天生不擅长处理中文。
对命令行中有中文这个部分,还有不少问题。
linux中的pwsh命令行,有时候会出现中文多行问题。



问:如何解决psreadline上述问题?
答:
1 去github去提交bug。
https://github.com/lzybkr/PSReadLine/issues


2安装最新测试版。据我所知,解决了大部分问题。
以linux + pwsh为例:
Install-Module -Name PSReadLine -AllowPrerelease


论坛徽章:
0
发表于 2018-03-09 17:05 |显示全部楼层
说的太对了,支持楼主。

还是 bash 好。

评分

参与人数 1信誉积分 +5 收起 理由
dorodaloo + 5 说的太对了!

查看全部评分

论坛徽章:
0
发表于 2018-07-02 14:05 |显示全部楼层
同意,还是bash好用。

论坛徽章:
19
程序设计版块每日发帖之星
日期:2015-10-11 06:20:0015-16赛季CBA联赛之浙江
日期:2018-07-14 13:27:4015-16赛季CBA联赛之同曦
日期:2018-04-17 12:43:3415-16赛季CBA联赛之福建
日期:2018-02-09 14:28:3315-16赛季CBA联赛之四川
日期:2017-09-04 12:27:0315-16赛季CBA联赛之青岛
日期:2017-06-26 18:30:0315-16赛季CBA联赛之新疆
日期:2017-04-12 22:55:4715-16赛季CBA联赛之山东
日期:2016-05-28 18:18:5615-16赛季CBA联赛之新疆
日期:2016-05-07 05:05:3215-16赛季CBA联赛之八一
日期:2016-03-14 12:32:06IT运维版块每日发帖之星
日期:2016-02-27 06:20:0015-16赛季CBA联赛之深圳
日期:2016-01-31 10:37:36
发表于 2018-07-03 09:04 |显示全部楼层
是,还是 bash 好用。
linux 也可以安装 bash tab 补全呐
  1. yum -y install epel-release
  2. yum -y install bash-completion
  3. source /etc/profile.d/bash_completion.sh
复制代码

论坛徽章:
0
发表于 2018-07-03 09:44 |显示全部楼层
baby_神 发表于 2018-07-03 09:04
是,还是 bash 好用。
linux 也可以安装 bash tab 补全呐

没错,简易原则和扩展原则,一个软件干好一件事以及面向未来的设计:UNIX几十年的艺术理念,无往不利。

ps想靠“巨石”和“集约化功能”取得竞争优势,根本不可能。


您需要登录后才可以回帖 登录 | 注册

本版积分规则

第67期:Neo4j图数据库平台架构最佳实践
【微学堂】10月18日 20:00(周四)

当下,数据的规模和类型每时每刻都在呈几何级数的增长,仅能够管理大量的数据是不够的,关键是能从海量数据中发掘出有用的信息,特别是数据之间的关联,能高效存储和处理数据之间关联的新型数据库为图数据库。 本讲座将介绍Neo4j图数据库的基本概念、设计特点、架构和经典应用场景实战分享。

进入课堂>>
  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号 北京市公安局海淀分局网监中心备案编号:11010802020122
广播电视节目制作经营许可证(京) 字第1234号 中国互联网协会会员  联系我们:wangnan@it168.com
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP