我一直在尝试从我最喜欢的4NT切换到PowerShell。在过去的20年中,我错过了4NT所添加的许多优点(我是4DOS的老用户)。
例如,在4NT中,如果您键入几个字母然后按上/下键,则历史记录列表将按您键入的内容进行过滤。向上/向下翻页会弹出所有匹配项,您可以在它们之间进行游标。全部在控制台窗口空间中,没有GUI。我很想节省时间。 powershell.exe中缺少许多其他类似的东西。
powershell.exe是否有其他替代品,这些替代品也许具有真正利用控制台环境的功能?我意识到有很多基于GUI的工具将PowerShell嵌入到 Pane 中,但是我对cmd.exe/4nt.exe替换仍然很感兴趣,而该替换仍可作为100%控制台应用程序使用(也许有一个选项对话框或任何)。
最佳答案
约书亚已经提到F7。您还可以在Powershell.exe中执行部分历史记录匹配,方法是键入一些命令并按F8键-重复按F8键以循环进行匹配(请参见about_history)。行编辑功能还比人们通常所了解的要多。这些内容记录在about_line_editing帮助主题中。尽管如此,在PowerShell控制台主机中进行行编辑仍需要进行一些操作。 FWIW我知道的所有其他主机都是基于GUI的。
顺便说一句,我曾经是4NT用户(以及Korn Shell用户)。即使4NT中缺少一些便利设施,我仍认为PowerShell是功能更强大的Shell,并且作为开发人员,所有“语言”位都非常容易适应和使用。我从未真正喜欢过Korn shell的if / fi
和case / esac
语句-只是以错误的方式擦了我的审美意识。 :-)另外,在PowerShell中,您可以根据自己的历史记录做一些很酷的事情,例如:
# Search history using regex
PS> get-history -count 999 | select-string '\b(fl|ft)\b'
# Look at your shell usage pattern by hour of day - Name column is hour of day
PS> ghy | group {$_.StartExecutionTime.Hour}
Count Name Group
----- ---- -----
30 21 {$allargs, echoargs -arg $allArgs, echoargs $a
2 22 {ghy | group {$_.StartExecutionTime.Hour}, ls}
# Look at commands in terms of execution time (sorted descending)
PS> ghy | Select CommandLine,Id,`
@{n='ExecutionTime';e={$_.EndExecutionTime - $_.StartExecutionTime}} |
Sort ExecutionTime -Desc
CommandLine Id ExecutionTime
----------- -- -------------
ls C:\Windows\System32 ... 94 00:00:06.0233445
ls C:\Windows\System32\... 93 00:00:01.1360650
gps | fl 89 00:00:00.5780330
dir 80 00:00:00.0950054
ls 83 00:00:00.0870050
ghy | Select CommandLin... 92 00:00:00.0810046
dir 67 00:00:00.0750042
ghy | Select CommandLin... 95 00:00:00.0580034
ghy | Select CommandLin... 96 00:00:00.0570032
ghy | Select CommandLin... 97 00:00:00.0540031
dir 76 00:00:00.0500029
get-history -count 999 ... 88 00:00:00.0420024
关于powershell - 比powershell.exe更好的PowerShell主机?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2130189/