Équivalent Powershell de Ctrl + R?

13

En bash, je peux faire Ctrl+ Ret commencer à taper une commande pour qu'elle recherche mon historique.

Comment faire ça en PowerShell?

Existe-t-il un moyen de lier une clé à quelque chose comme?

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

Mais je devrais relire la chaîne pour chaque entrée de caractère ou supprimée pour produire des commandes correspondantes comme Ctrl+ le Rfait.

Est-ce possible?

red888
la source

Réponses:

11

Vous pouvez résoudre ce problème en adoptant le module PSReadLine .

Voir un article sur Hey, Scripting Guy! blog concernant cette implémentation de ligne de lecture inspirée de bash pour PowerShell.

En particulier, l'utilisation de Ctrl+ Alt+ ( Shift) +? pour afficher toutes les liaisons de touches.

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 bref: installez ce module à la main ou mettez à niveau vers Windows PowerShell v5.

MM
la source
5

Tapez votre terme de recherche, puis appuyez sur F8, cela recherchera l'historique de vos commandes.

Il existe une liste très utile de raccourcis PowerShell ici .

Sam Cogan
la source
L'avez-vous essayé vous-même? Cela n'a jamais vraiment fonctionné pour moi ou seulement la moitié du temps. Par exemple, je tape un tas de commandes get- <wthing>. Tapez ensuite get- <F8> et il ne fait que parcourir une ou deux commandes aléatoires de mon historique? Je ne sais pas ce que ça fait. Par exemple, je viens de taper get-childitem et je l'ai exécuté immédiatement après avoir tapé get-c <f8> et je n'ai rien. Peut-être que ma session est foirée?
red888
Fonctionne 100% du temps pour moi, c'est avec WMF 5 installé
Sam Cogan
5

Je ne sais pas quand cela a été ajouté, mais sur mon Windows 10 non personnalisé et mis à jour, il est intégré. Appuyez sur ctrl + r pour la recherche d'historique inversé, cela fonctionne très bien.

entrez la description de l'image ici

skrebbel
la source
Je travaille également sur win10. Ctrl + R fonctionne dans PowerShell, mais ne fonctionne pas dans la fenêtre cmd.
dudu
Bien sûr, mais pourquoi auriez-vous besoin d'utiliser cmd.exe ??
Raúl Salinas-Monteagudo
0

Il y a aussi une recherche graphique sous la touche F7. Une fois pressé, il affichera une fenêtre contextuelle que vous pouvez faire défiler pour rechercher la commande qui a été exécutée plus tôt. Appuyez sur Entrée pendant que le curseur survole la ligne pour la réexécuter.

termil0r
la source
0

Vous pouvez également démarrer votre commande en plaçant un caractère # devant le texte de recherche partielle de la commande que vous recherchez, puis appuyez ensuite sur (plusieurs fois si nécessaire) pour parcourir l'historique des sessions.

Tolga
la source