Powershell equivalente di Ctrl + R?


13

In bash posso fare Ctrl+ Re iniziare a digitare un comando per farlo cercare nella mia cronologia.

Come posso farlo in PowerShell?

C'è un modo per associare una chiave a qualcosa del genere?

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

Ma avrei bisogno di rileggere la stringa per ogni input di carattere o rimossa per emettere comandi di corrispondenza come Ctrl+ Rfa.

È possibile?

Risposte:


11

Puoi risolvere questo problema adottando il modulo PSReadLine .

Vedi un articolo su Hey, Scripting Guy! blog riguardante questa implementazione readline ispirata da bash per PowerShell.

In particolare, l'utilizzo di Ctrl+ Alt+ ( Shift) +? per mostrare tutte le combinazioni di tasti.

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

In breve: installare questo modulo manualmente o eseguire l'aggiornamento a Windows PowerShell v5.


5

Digita il termine da cercare, quindi premi F8 per cercare la cronologia dei comandi.

C'è un elenco molto utile di scorciatoie di PowerShell qui .


L'hai provato tu stesso? Non ha mai funzionato davvero per me o solo la metà delle volte. Ad esempio, scrivo un gruppo di comandi get- <whatever>. Quindi digitare get- <F8> e scorre solo uno o due comandi casuali della mia cronologia? Non so che diavolo stia facendo. Ad esempio, ho appena digitato get-childitem e l'ho eseguito subito dopo aver digitato get-c <f8> e non ottengo nulla. Forse la mia sessione è incasinata?
red888

Funziona al 100% delle volte per me, questo è con WMF 5 installato
Sam Cogan

5

Non so quando questo è stato aggiunto, ma sul mio Windows 10 non personalizzato, aggiornato, è integrato. Premi ctrl + r per la ricerca cronologica inversa, funziona benissimo.

inserisci qui la descrizione dell'immagine


Lavoro anche su win10. Ctrl + R funziona in PowerShell, ma non funziona nella finestra cmd.
Dudu,

Certo, ma perché dovresti usare cmd.exe ??
Raúl Salinas-Monteagudo,

0

C'è anche una ricerca grafica sotto il tasto F7. Se premuto, mostrerà un popup che è possibile scorrere per cercare un comando eseguito in precedenza. Premendo Invio mentre il cursore passa con il mouse sulla linea, verrà nuovamente eseguita.


0

È inoltre possibile avviare il comando mettendo un carattere # davanti al testo di ricerca parziale del comando che si sta cercando, quindi premere in seguito toccare (più volte se necessario) per cercare nella cronologia della sessione.

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.