网页资讯视频图片知道文库贴吧地图采购
进入贴吧全吧搜索

 
 
 
日一二三四五六
       
       
       
       
       
       

签到排名:今日本吧第个签到,

本吧因你更精彩,明天继续来努力!

本吧签到人数:0

一键签到
成为超级会员,使用一键签到
一键签到
本月漏签0次!
0
成为超级会员,赠送8张补签卡
如何使用?
点击日历上漏签日期,即可进行补签。
连续签到:天  累计签到:天
0
超级会员单次开通12个月以上,赠送连续签到卡3张
使用连续签到卡
06月29日漏签0天
powershell吧 关注:1,171贴子:1,798
  • 看贴

  • 图片

  • 吧主推荐

  • 游戏

  • 2回复贴,共1页
<<返回powershell吧
>0< 加载中...

对比bash和powershell的tab补全

  • 只看楼主
  • 收藏

  • 回复
  • pck6636
  • 贡士
    7
该楼层疑似违规已被系统折叠 隐藏此楼查看此楼
为什么说假如没有tab补全,powershell就没法活,而bash啥事没有?
问:如何给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编写带参的脚本,比bash简单10倍,功能强10倍?
答:
1 不需要丑陋的gentopts,gentopt。
2 自动支持所有公共参数。不用编写脚本。
3 支持无限参数别名。
4 支持参数只验证。不用编写脚本。
5 支持try等。
问:powershell方法名,如何tab补全?
答:
目的:把字符a通过toupper()方法,变成大写。
'a'.toup<tab>
返回:
'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的tab补全差】,将影响整个linux?
答:
我脚臭将影响全家,影响老婆、孩子、火车车厢么?会影响的,对吧?
【bash的tab补全差】,连累所有linux程序的补全,含go开发的命令行程序;含py程序;含perl程序。
可以说,【bash的tab补全差】影响【除了linux版powershell】的所有程序。
bash这边,最终结论:
假如说tab补全是灯。那么bash这边一边漆黑。powershell这边一片光明。
一副好牌让bash打烂了。
bash人几乎不用【参数名tab补全】,他们用【手动输入单个字母参数名】,如 ps -e -f
问:powershell区分大小写么?
答:
powershell命令名,powershell参数名,(你在命令行输入时)不区分大小写。但是你输入的参数值,是区分大小写的。
win,linux,中的文件名写入=保留大小写。
win版powershell,的文件名读取=不区分大小写。
linux版powershell,的文件名读取=区分大小写。
问:powershell命令为啥那么长?我很不爽啊。
问:powershell命令会重名吗?
答:
powershell命令太多,超过好几万。微软为了powershell命令不重名,所以把powershell命令搞的很长。
正因为命令长,命令唯一,才让ps基本不需要像python那样,在脚本中import这个库、那个包。
鱼与熊掌而已。唯一的长命令名,不需要学习记忆包名。
但如果使用了第三方模块,还有可能重名。
如:
carbon模块中,有get-schcduletask命令。
内置的ScheduledTasks模块中,也有此命令,
这就尴尬了,命令重名了,你喊声悟空,六耳猕猴跑过来了。你喊声疯子,特朗普跑出来了
不过,人家教我一招:
Microsoft.PowerShell.Management\Get-ChildItem
(这个命令就是dir,在重名的时候才需要这样输入)
即先敲入【模块名】,再敲入【\】,然后再敲【命令名】,当然可以用tab补全。
这招太好了,相当于详细门牌号,两个命令名完全一样(命令冲突)也不怕了。不过命令名就更长了。
install-module -AllowClobber 就是(安装模块时)允许重复的命令名的意思。
powershell这边,最终结论:
powershell命令名更长,powershell参数名更长,更容易理解。
powershell补全比bash好。但由于powershell命令更长,参数更长,所以powershell更依赖tab补全。


  • pck6636
  • 贡士
    7
该楼层疑似违规已被系统折叠 隐藏此楼查看此楼
------【第二章 从【撸串.ps1】开始学习编写【powershell的参数补全】】------
问:powershell的参数补全分哪几种?
答:
分参数【名】补全,和参数【值】补全。
比如:
撸串.ps1 -吃几串 10
-吃几串 是【参数名】
10 是参数值
问:powershell的【参数名】补全,是否需要写脚本?
答:
不需要。
例子:
-------a.ps1开始-------
param
(
$君不见黄河之水天上来_飞流直下3333千尺
)
echo $君不见黄河之水天上来_飞流直下3333千尺
-------a.ps1结束-------
运行:
./a.ps1 -<打tab>
即可出现:
./a.ps1 -君不见黄河之水天上来_飞流直下3333千尺
问:powershell的【参数值】补全,是否需要写脚本?
答:
参数值是用户输入的,基本上是无法补全的,能补全的只有两种特例。
1 补全所有枚举。比如参数名是【-今天是周几】,那么只有7种选择。
2 补全部分常用的枚举。比如参数名是【-吃几串】,而输入值是一个数字,
那么常用的输入值只有:1,10,12。
剩下不常用的2----21亿。不需要补全,让用户自己输入。
问:powershell的【参数值】补全,如何补全【所有枚举】?
答:
-------星期.ps1开始-------
param
(
[ValidateSet('周1','周2','周3','周4','周5','周6','周日')]$今天是周几
)
echo $今天是周几
-------星期.ps1结束-------
使用:
星期.ps1 -<tab>或 shift<tab>
问:powershell的【参数值】补全,如何补全【部分常用的枚举】?
答:
可以一次吃1串,10串,12串。也可以不用补全,手动输入99999串。
-------撸串.ps1开始-------
param
(
[ArgumentCompleter({1,10,12})]$一次吃几串
)
echo $一次吃几串
-------撸串.ps1结束-------
使用:
撸串.ps1 -<tab> 或shift<tab>
问:如何给没有【参数值补全】的ps命令,添加补全?
答:
假设我们想要补全【特定的邮箱账户列表】。或【计算机名列表】。
例子目的:给ps命令【Invoke-Command】的参数值【ComputerName】添加补全。
Register-ArgumentCompleter -CommandName Invoke-Command -ParameterName ComputerName -ScriptBlock {
Get-ADComputer -Filter * | Select-Object -ExpandProperty Name | ForEach-Object {
$Text = $_
if ($Text -match '\s') { $Text = $Text -replace '^|$','"' } [System.Management.Automation.CompletionResult]::new(
$Text,
$_,
'ParameterValue',
"$_"
)
}
}
问:为什么win+powershell5.1,和linux+powershell6.2补全结果不同?
答:
linux人更喜欢按tab出列表,这兼容了bash的习惯。这和win上的习惯并不同。
设定方法如下:
1 升级psreadline版本,确保最新。
2 pwsh -c 'mkdir -p "$env:HOME/.config/powershell" '
pwsh -c 'Add-Content -Value "Set-PSReadlineOption -EditMode Windows" -LiteralPath $profile '


2025-06-29 02:58:43
广告
  • 每天开心abcde
  • 白丁
    1
该楼层疑似违规已被系统折叠 隐藏此楼查看此楼
powershell可以像bash那样一个一个补全吗?而不是乱补全


登录百度账号

扫二维码下载贴吧客户端

下载贴吧APP
看高清直播、视频!
  • 贴吧页面意见反馈
  • 违规贴吧举报反馈通道
  • 贴吧违规信息处理公示
  • 2回复贴,共1页
<<返回powershell吧
分享到:
©2025 Baidu贴吧协议|隐私政策|吧主制度|意见反馈|网络谣言警示