É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?

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.


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 .


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


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.


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.

En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.