Historique des commandes sélectives dans le terminal?

9

Dans un terminal, lorsque vous appuyez sur votre clavier, vous pouvez voir dans l'ordre les commandes passées que vous lui avez déjà fournies. Je me demandais s'il y avait un moyen de ne voir que les commandes dans le passé commençant par -par exemple, "ls -l". De cette façon, si la liste des commandes est:

  1. ls -l -a
  2. cmake
  3. cd ~ / Bureau
  4. cmake

Un moyen d'écrire simplement "ls" et tab ou n'importe quelle combinaison de frappes de touches nécessaires pour faire apparaître la dernière commande cédant au terminal commençant par "ls"

Merci,

jlo
la source

Réponses:

14

Il ne montrera pas les choses en commençant par ls, mais vous pouvez Ctrl-R lsfaire une recherche en arrière dans l'historique. Répétez Ctrl-Rpour trouver le match suivant.

poolie
la source
Merci pour la CTRL+Rcommande de raccourci.
Kleber S.
8

Parfois, c'est utile d'avoir ça ...

Exemple

Connexion à une autre machine à l'aide de ssh:

commencer à écrire

ssh

Utilisez la PgUptouche et votre ssh se retrouve avec votre dernier utilisé ... appuyez à PgUpnouveau et il vous donnera le suivant et ainsi de suite. J'aime ça?

Vous pouvez utiliser ceci:

Modifiez votre .bashrc ( vi /home/<yourfolder>/.bashrc) et ajoutez ceci:

$if Bash
    # Search history back and forward using page-up and page-down
    "\e[5~": history-search-backward
    "\e[6~": history-search-forward

    # Completion
    set match-hidden-files off
    set page-completions off
    set completion-query-items 350
    set show-all-if-ambiguous on

$endif

Cela ajoute uniquement au terminal de votre utilisateur cette fonction. Vous devrez également éditer celui de la racine pour avoir le même: vous pouvez suivre ce tutoriel à partir du wiki, il n'y a aucun moyen de le faire mal, il y a aussi beaucoup de choses supplémentaires pour améliorer votre expérience de terminal ...

maniat1k
la source
Vous pouvez même le lier aux touches fléchées Haut / Bas: bind '"\e[A": history-search-backward'; bind '"\e[B": history-search-forward'ce qui le rend encore plus intuitif.
Fritz
5

Pour voir l'historique des commandes, use peut utiliser:

$ history

Si vous voulez seulement voir la commande passée commencer par exemple par "ls", à mon avis j'utilise:

$ history | grep ls

Certes, la sortie contiendra quelque chose pas une commande mais contiendra des caractères "ls", mais je pense que cela peut aider.

neo0
la source
2

Le moyen le plus simple de réaliser ce que vous voulez est de le faire !<whatever-command>. Par exemple, pour exécuter la lsdernière exécution, vous pouvez effectuer une !ls. Jetez un œil au journal suivant pour voir si c'est ce dont vous avez besoin:

nits@nits-excalibur:~$ ls /mnt/Storage_1/Music/
Music I  Music II  Music III  Music IV  Music V  Music_VI
nits@nits-excalibur:~$ cd Documents/
nits@nits-excalibur:~/Documents$ top
nits@nits-excalibur:~/Documents$ !ls
ls /mnt/Storage_1/Music/
Music I  Music II  Music III  Music IV  Music V  Music_VI
Nitin Venkatesh
la source
1
Cela exécute la commande sans l'afficher, existe-t-il une alternative qui l'affiche comme l'OP demandé?
Bruno Pereira
Dans zsh, vous pouvez setopt HIST_VERIFYet la commande sera placée dans votre tampon d'entrée, où vous pouvez soit appuyer sur entrée pour l'accepter, soit la modifier.
poolie
1

L'historique est situé ~ / .bash_history Aussi, pour une astuce pour rechercher votre historique bash appuyez sur ctrl + r puis tapez le début de la commande que vous recherchez.

et http://ubuntuforums.org/showthread.php?t=204382 pour les alias et astuces de ligne de commande pratiques

Ringtail
la source