技术解析

Linux 命令的 tab 补全, powershell 的 tab 补全,对比大讨论!
0
2021-06-21 05:29:24
idczone
问:如何给 powershell 脚本起名? xxx.ps1
问:powershell 脚本名,如何 tab 补全?
答:
建议用 2---3 个字母打头,剩下用中文文件名。即 [ bf 备份所有旧文件_并删除 10 天前的.ps1 ]
这样先打 [ bf ] ,然后再打 tab 即可补全脚本名。






问:自己编写的 powershell 脚本的参数名,如何 tab 补全?
问:powershell 参数名,如何 tab 补全?
答:
打脚本名 -<打 tab>即可补全(含中文参数)
再打 tab 即可补全第二个参数。

例子:
-------a.ps1 开始-------
param
(
$君不见黄河之水天上来_飞流直下 3333 千尺
)
echo $君不见黄河之水天上来_飞流直下 3333 千尺
-------a.ps1 结束-------

运行:
./a.ps1 -<打 tab>
即可出现:
./a.ps1 -君不见黄河之水天上来_飞流直下 3333 千尺











问:powershell 方法名,如何 tab 补全?
答:
目的:把字符 a 通过 toupper()方法,变成大写。

'a'.toup
返回:
'a'.ToUpper(









问:powershell 属性名,如何 tab 补全?
答:
例子
1 运行 qq。
2 输入(get-process qq).w
3 打 tab
返回
(get-process qq).WorkingSet






问:如何评价 powershell 的 tab 补全?
问:powershell 的 tab 补全,你有啥结论?
答:
通过上面的学习我们看到,powershell 可以补全:
1 powershell 命令名,(含 cmd 命令,第三方命令)
2 系统文件名,
3 powershell 参数名,
4 你自己编写的 powershell 脚本的参数名,100%可以补全。
5 powershell 方法名,
6 powershell 属性名,
这些内容中,完全可以含有中文。






问:如何评价 bash 的 tab 补全?
问:bash 的 tab 补全,你有啥结论?
答:
bash 可以补全:
1 外部命令名,(含第三方命令)
2 系统文件名,

3 99% 的 [ linux 命令参数名] 无 tab 补全!
或者说,大家都不装,都不用 linux 命令的参数补全。

理由如下:

3.1 虽然有写好的 linux 命令参数补全包,但不是默认安装。这导致了:
只有 1%的人安装使用了参数名补全。剩下 99%的人不用参数名补全,他们用手输单个字母参数名。
单个字母参数名,没有全单词,没有驼峰命名,这又导致了参数名不好记。

3.2 “第三方的 [ linux 命令参数名] 无法 tab 补全!”

这导致了“第三方的 [ linux 命令参数名] 的 tab 补全,需要其他方法,额外安装”


4 99.99% [你自己编写的 shell 脚本参数名] 无法 tab 补全!

[你自己编写的 shell 脚本参数名] ,想要有参数补全,必须单独编写补全脚本。
并存放在 bash 插件目录,这导致了“ 99.99% [你自己编写的 shell 脚本参数名] 无法 tab 补全”
powershell 不需要单独编写补全脚本。所以“你自己编写的 powershell 脚本的参数名,100%可以补全。”而且非常简单。






问:bash 的 tab 补全,和 powershell 的 tab 补全,有何不同?
答:
1 bash 没有属性和方法,所以上数第 5,6 条差异,大家应该没有异议。

2 当命令名,参数名,属性名,方法名中,有中文的时候,
powershell 中文补全好,bash 中文补全差,或者无法补全。这一点大家有异议么?





问:安装 [命令参数名 tab 补全] 后的 bash 更慢?还是 powershell 补全更慢?
答:
我不知道。我只知道 powershell 这边默认带有所有补全。bash 这边默认不带。




bash 这边,最终结论:
假如说补全是灯。那么 bash 这边一边漆黑。powershell 这边一片光明。
一副好牌让 bash 打烂了。
bash 人几乎不用 [参数名 tab 补全] ,他们用 [手动输入单个字母参数名] ,如 ps -e -f



powershell 这边,最终结论:
英文大小写并不是问题。
powershell 命令更长,powershell 参数更长,更容易理解。
powershell 补全比 bash 好。但由于 powershell 命令更长,参数更长,所以 powershell 更依赖 tab 补全。
毕竟要对得起 50M 的安装包大小
一个 jre 也就 40M 吧

jre8=68mb,已经淘汰。没有 jre11,jre12,只有 jdk,jdk 更大。

如果你用过 zsh 大概就不会这么说了
如果你用过 zsh,并且再稍微安装过几个常用的插件,就更不会这么说了

oh-my-zsh + zsh-autosuggestions 爽到飞起,虽然没有参数补全,但只要打过一次那个命令就会有自动补全,基本够用了

亚马逊的 jre8
https://d2znqt9b1bc64u.cloudfront.net/amazon-corretto-8.202.08.2-windows-x86-jre.zip

头号 PowerShell 吹你来了。
Bash 的补全至少可以通过拓展来补全奇怪的东西,比如 apt install ,可以补全包名
但 choco install 不行,只能补全当前文件夹下的文件。
apt i 可以补全 install,而 choco i 不行

莫名想起 https://github.com/nvbn/thefuck

数据地带为您的网站提供全球顶级IDC资源
在线咨询
专属客服