Powershell equivalente de Ctrl + R?

13

En bash puedo hacer Ctrl+ Ry comenzar a escribir un comando para que busque en mi historial.

¿Cómo hago eso en powershell?

¿Hay alguna manera de vincular una clave a algo así?

function GH($str) {get-history | select-string $str}

Pero necesitaría volver a leer la cadena para cada entrada de caracteres o eliminarla para generar comandos coincidentes como Ctrl+ Rhace.

es posible?

red888
fuente

Respuestas:

11

Puede solucionar esto adoptando el módulo PSReadLine .

¡Vea un artículo sobre Hey, Scripting Guy! blog sobre esta implementación de línea de lectura inspirada en bash para PowerShell.

En particular, el uso de Ctrl+ Alt+ ( Shift) +? para mostrar todas las combinaciones de teclas.

PS C:\> $PSVersionTable

Name                           Value
----                           -----
PSVersion                      5.0.10240.16384
WSManStackVersion              3.0
SerializationVersion           1.1.0.1
CLRVersion                     4.0.30319.42000
BuildVersion                   10.0.10240.16384
PSCompatibleVersions           {1.0, 2.0, 3.0, 4.0...}
PSRemotingProtocolVersion      2.3

Ctrl+R

PS C:\> Get-Module -ListAvailable
bck-i-search: mo_

Ctrl+ Alt+ ( Shift) +S

Key                  Function                 Description
---                  --------                 -----------
Ctrl+r               ReverseSearchHistory     Search history backwards interactively
Ctrl+s               ForwardSearchHistory     Search history forward interactively

En resumen: instale este módulo a mano o actualice a Windows PowerShell v5.

MM
fuente
5

Escriba su término de búsqueda y luego presione F8, esto buscará en su historial de comandos.

Hay una lista muy útil de atajos PowerShell aquí .

Sam Cogan
fuente
¿Lo has intentado tú mismo? Realmente nunca funcionó para mí o solo la mitad del tiempo. Por ejemplo, escribo un montón de comandos get- <whatever>. Luego escriba get- <F8> y solo se desplazará por uno o dos comandos aleatorios de mi historial. No sé qué demonios está haciendo. Por ejemplo, simplemente escribí get-childitem y lo ejecuté inmediatamente después de escribir get-c <f8> y no obtengo nada. Tal vez mi sesión está en mal estado?
red888
Funciona el 100% del tiempo para mí, esto es con WMF 5 instalado
Sam Cogan
5

No sé cuándo se agregó esto, pero en mi Windows 10 no personalizado y actualizado, está integrado. Presiona Ctrl + R para la búsqueda de historial inverso, funciona muy bien.

ingrese la descripción de la imagen aquí

skrebbel
fuente
También trabajo en win10. Ctrl + R funciona en PowerShell, pero no funciona en la ventana cmd.
dudu
Claro, pero ¿por qué necesitarías usar cmd.exe?
Raúl Salinas-Monteagudo
0

También hay búsqueda gráfica bajo la tecla F7. Cuando se presiona, mostrará una ventana emergente que puede desplazar para buscar el comando que se ejecutó anteriormente. Al presionar Intro mientras el cursor se desplaza, la línea volverá a ejecutarlo.

termil0r
fuente
0

También puede iniciar su comando colocando un carácter # delante del texto de búsqueda parcial del comando que está buscando, luego presione tocar después (varias veces si es necesario) para buscar en el historial de la sesión.

Tolga
fuente