Itt*_*ayD 12 productivity powershell history readline
我喜欢在 Bash 中做的一些事情,并且很想知道如何在 PowerShell 中做:
在 Bash 中,我设置了历史滚动,以便它只滚动与当前行具有相同前缀的命令。如果我想查看我的最新提交(例如重用部分评论),我会先写 'git' 然后写?.
相关当然是历史搜索Ctrl+R
为了找到其他东西,我写道:
h | grep foo
Run Code Online (Sandbox Code Playgroud)
在 PowerShell 中,我使用:
h -c 1000 | where {$_.commandline.contains("foo")}
Run Code Online (Sandbox Code Playgroud)
(显然我是新手,必须有更短的方法)
像:
mv file.txt{,.bak}
Run Code Online (Sandbox Code Playgroud)
或者
mv file.txt !#$.bak
Run Code Online (Sandbox Code Playgroud)魔法空间(!$内联扩展)
PowerShell 中有哪些替代方案?
Ryn*_*ant 15
1 - 您可以F8从 Windows 控制台使用循环浏览与当前行开头匹配的命令。这是区分大小写的匹配。
2 - 您可以#用来匹配以前的命令。使用#<partial match><tab>不区分大小写,并将匹配前面命令中任何位置的文本。
如果您有以下命令历史记录:
# 1
$np = Start-Process notepad -PassThru
# 2
$np| get-process
# 3
$np| Stop-Process
Run Code Online (Sandbox Code Playgroud)
#pr然后tab重复键入将循环显示 1、2 和 3。
#st然后tab重复键入将循环显示 1 和 3。
仅使用 # 将匹配所有历史记录。
#也可以在输入部分命令后使用。如果你的历史是:
'notepad'
select *
Run Code Online (Sandbox Code Playgroud)
您可以输入Get-Process #n<tab>| #s<tab>以获取Get-Process 'notepad'| select *
3 - 您可以使用Select-String. 为其创建别名以使其易于使用(PowerShell v3 添加了别名sls)。那你就可以了。
h| sls foo
Run Code Online (Sandbox Code Playgroud)
4 - 您可以执行以下操作:
gci *a.txt| ren -n {$_.Name + '.bak'}
Run Code Online (Sandbox Code Playgroud)
5 -$$匹配最后一个命令的最后一个标记,但我不知道如何内联扩展它。
对于 (3),您可以将其编写为配置文件中的函数(例如%USERPROFILE%\My Documents\WindowsPowerShell\profile.ps1):
function hh ([string] $word) {
Get-History -c 1000 | where {$_.commandline.contains($word)}
}
Run Code Online (Sandbox Code Playgroud)
然后:
hh foo
Run Code Online (Sandbox Code Playgroud)
但 Powershell 最好被视为一种脚本语言,而不是交互式 shell,因为底层控制台仍然是 cmd.exe,但有其所有限制。
因此,F7 用于交互历史记录,F3 用于复制上一个命令,F1 用于复制单个字符,F2 用于将上一个命令复制到特定字符,等等。
| 归档时间: |
|
| 查看次数: |
2924 次 |
| 最近记录: |