Existe-t-il une ligne de commande Windows avec un historique d'autocomplétion / commande intelligent bash?

21

J'ai récemment commencé à utiliser bash et découvert des fonctionnalités vraiment merveilleuses (pas nécessairement sorties de la boîte, mais pouvant être configurées):

  • Les flèches haut / bas prennent en charge la complétion partielle: tapez "git", appuyez sur la flèche HAUT, et vous pourrez parcourir les commandes récentes qui commencent par "git" (même dans les sessions précédentes!)
  • Ctrl-R recherchera l'historique de vos commandes (appelé reverse-i-search pour une raison quelconque)
  • Beaucoup, beaucoup d'autres que je ne connais pas, j'en suis sûr.

Existe-t-il une bonne alternative à cmd.exe pour Windows qui prend en charge de telles fonctionnalités? J'ai parcouru les principales réponses à cette question , mais je n'ai pas trouvé si l'une des alternatives populaires la supportait.

ripper234
la source
2
Avez-vous déjà essayé F7 dans l'invite de commande?
William Hilsum
Je n'ai pas. Et le premier résultat de Google (depuis 2005 pas moins!) Est une horreur de codage! codinghorror.com/blog/2005/07/stupid-command-prompt-tricks.html Répondez maintenant à l'autre partie de ma question et je serai encore plus ravi.
ripper234
1
Malheureusement, les utilisateurs de Windows utilisent généralement ce que le système est fourni, et il n'y a pas de remplacement populaire de cmd.exe. Cygwin est largement utilisé comme "émulateur" Linux pour Windows, vous pouvez l'essayer. @William: nice ne le savait pas, mais avez-vous déjà essayé bash ? Bash se souvient des commandes des anciennes sessions, pas seulement de la session actuelle. Et filtre également les résultats comme l'indique ripper234, sans parler de la conversion des liens en URL valides, du défilement avec la souris sur les applications de terminal et une longue liste ... Et btw, pourquoi vous ne pouvez toujours pas redimensionner horizontalement la fenêtre d'invite de commande? Cela me rendra toujours perplexe ...
m0skit0
Deux cmdremplacements populaires sont discutés à la fois ci-dessous (par paradroidet RedGrittyBrick) et dans les réponses liées à un lien hypertexte ci-dessus, et votre dernière question est basée sur une prémisse incorrectement observable. Je viens d'utiliser la souris pour redimensionner horizontalement une fenêtre de console moi-même.
JdeBP

Réponses:

22

Téléchargez et installez la console Powershell 2.0 (si vous utilisez Windows 7, elle est déjà installée).

Il prend en charge toutes les commandes héritées ainsi que les alias, les macros et plus encore ...

Voici quelques conseils de base .

boîte de dialogue power-shell

get-history: Affiche une liste des commandes entrées précédemment.

invoke-history 35:Exécute la commande # 35 dans la liste get-history

`: Appuyez sur la touche d'apostrophe vers l'arrière pour insérer un saut de ligne ou comme un caractère d'échappement pour créer un caractère littéral. Vous pouvez également couper une ligne au niveau du caractère pipe (|).

Alt+ Espace + E: affiche un menu de raccourcis d'édition avec les options Marquer, Copier, Coller, Tout sélectionner, Faire défiler et Rechercher . Vous pouvez ensuite appuyer sur Kpour Marquer, Ypour Copier, Ppour Coller, Spour Sélectionner tout, Lpour faire défiler le tampon d'écran ou Fpour rechercher du texte dans le tampon d'écran. Pour copier le tampon d'écran dans le Presse-papiers, appuyez sur Alt+ Espace + E+ S, puis appuyez sur Alt+ Espace + E+ Y.

Alt+ F7: Efface l'historique des commandes.

Ctrl+ C: Sortir du sous-invite ou terminer l'exécution.

Ctrl+ End: Supprime tous les caractères de la ligne après le curseur.

Ctrl+ Left Arrow|| Ctrl+ Right Arrow: Déplacez vers la gauche ou la droite un mot à la fois.

Ctrl+ S: Pause || reprendre l'affichage de la sortie.

Esc Efface la ligne actuelle.

F1Déplace le curseur d'un caractère vers la droite sur la ligne de commande. À la fin de la ligne, insère un caractère dans le texte de votre dernière commande.

F2 Crée une nouvelle ligne de commande en copiant votre dernière ligne de commande jusqu'au caractère que vous tapez.

F3 Complète la ligne de commande avec le contenu de votre dernière ligne de commande, en commençant par la position actuelle du curseur jusqu'à la fin de la ligne.

F4 Supprime les caractères de votre ligne de commande actuelle, en commençant par la position actuelle du curseur jusqu'au caractère que vous tapez.

F5 Analyse en arrière dans l'historique de vos commandes.

F7: Similaire à get-history. Affiche une fenêtre contextuelle avec l'historique de vos commandes et vous permet de sélectionner une commande. Utilisez les touches fléchées pour faire défiler la liste. Appuyez sur Enterpour sélectionner une commande à exécuter, ou appuyez sur Right arrowpour placer le texte sur la ligne de commande.

F8 Utilise le texte que vous avez entré pour parcourir en arrière dans votre historique de commandes les commandes qui correspondent au texte que vous avez tapé jusqu'à présent sur la ligne de commande.

F9Exécute une commande numérotée spécifique à partir de votre historique de commandes. Les numéros de commande sont répertoriés lorsque vous appuyez sur F7ou get-history.

Page Up/ Page Down: Obtient la première / dernière commande de l'historique des commandes.

Cliquez avec le bouton droit de la souris si QuickEdit est désactivé, affiche un menu contextuel d'édition avec les options Marquer, Copier, Coller, Tout sélectionner, Faire défiler et Rechercher. Pour copier la mémoire tampon d'écran dans le Presse-papiers, cliquez avec le bouton droit, choisissez Sélectionner, puis appuyez sur Entrée.

Tab/ Shift+ Tab: Appuyez sur la touche Tab ou appuyez sur Maj + Tab pour accéder à la fonction d'extension des onglets, qui inclut la saisie semi-automatique du dossier ou du nom de fichier.

surfasb
la source
Prend-il en charge la recherche d'historique partielle?
ripper234
1
Oui, tapez la chaîne que vous souhaitez rechercher et appuyez sur F8.
surfasb
C'est un aperçu très complet des commandes du clavier PowerShell.
paradroid
Je ferai une liste des modules Powershell indispensables plus tard. . .
surfasb
1
@surfasb: Vous devez inclure PowerTab, car cela est pertinent pour cette réponse. Tabuler avec, c'est comme IntelliSense.
paradroid
11

Vous n'avez pas besoin de remplacer l'invite de commande! Windows possède bon nombre de ces fonctionnalités intégrées à l'invite de commandes, telles que:

  • Historique des commandes: F7etF9

  • Ajoutez une lettre à la fois à partir de la commande précédente: F1

  • Complétion automatique des répertoires et noms de fichiers: Tab

Il y a encore plus d'astuces, mais vous devrez regarder plus loin sur Google car je ne pourrais pas trouver un site Web avec une liste complète.

Keltari
la source
11

Clink étend la ligne de commande Windows et ajoute les fonctionnalités suivantes

  • Édition de ligne puissante de type Bash à partir de la bibliothèque Readline de GNU
  • Achèvement supérieur du chemin (TAB)
  • Coller depuis le presse-papiers (Ctrl-V)
  • Prise en charge de l'exécution des exécutables / commandes et des variables d'environnement
  • Annuler / Rétablir (Ctrl-_ ou Ctrl-X, Ctrl-U) Amélioration de l'historique de la ligne de commande. Persiste à travers les sessions
  • Consultable (Ctrl-R et Ctrl-S). Extension de l'historique (par exemple !!,! Et! $). Complétion scriptable avec Lua.
thegreendroid
la source
Parfait. Cela rend cmd.exe beaucoup plus utile.
beta
5

Win-Bash ?

Un bash autonome pour Windows

win-bash est un portage Windows du célèbre GNU bash (voir la page d'accueil de GNU Bash).

Contrairement à d'autres ports bash pour Windows (par exemple, le bash cygwin), le win-bash n'a besoin d'aucun environnement spécial ou DLL. Il n'y a qu'un seul binaire et c'est tout.

Je ne sais pas à quel point c'est fonctionnel et fiable.


Il y a aussi la commande take de jpsoftware - mais, oups, cela a été mentionné dans l'autre Q que vous avez mentionné, donc ne fait probablement pas ce que vous voulez.

RedGrittyBrick
la source
En fait, Take Command fait ce que xe veut. Il a un historique de commandes global qui peut être mémorisé même si aucun interpréteur de commandes n'est en cours d'exécution. Il a un filtrage et une modification de liste d'historique . Je suppose que «les meilleures réponses» ne s'étendent pas à la réponse n ° 5. ☺
JdeBP
@JdeBP - Take Command est environ # 12 sur la liste.
ripper234
SuperUser le répertorie comme cinquième réponse lorsqu'il est affiché ici.
JdeBP
1
Vous pouvez trier les réponses par "actif", "le plus ancien" ou "votes". Par "votes" est par défaut et SuperUser semble alors randomiser les réponses avec des votes égaux - Je trouve que le rafraîchissement de la page change l'ordre ..
RedGrittyBrick
1
@ ripper234: De quoi parlez-vous? Win-Bash a été mis à jour en mars dernier.
paradroid
3

Take Command a déjà été mentionné, mais TCC / LE (un sous-ensemble) est unremplacement gratuit CMD avec beaucoup plus de fonctionnalités, de commandes et de personnalisation. Cela permet en quelque sorte de donner une expérience de type bash, en ce qui concerne les raccourcis clavier, les alias et la coloration.

Il peut faire les quelques choses que vous mentionnez, y compris l'achèvement partiel de l'historique avec des Up/Downflèches. CTRL-Brépète le chemin de la commande précédente. Essayez de taper optionpour voir toute une série d'options.

TCC/LEfonctionne également très bien dans Console2 .

De plus, vous pouvez bien sûr utiliser bash sous Windows avec Cygwin .

paradroid
la source
1

L' extension open-source PyCmd Command Prompt fait la plupart de ce que vous demandez.

Son but est d'émuler quelques fonctionnalités de puissance des shells UNIX (fin de tabulation décente, historique persistant, etc.).

image

harrymc
la source