Par exemple:
[root@ip-10-0-7-125 ~]# history | grep free
594 free -m
634 free -m | xargs | awk '{print "free/total memory" $17 " / " $ 8}'
635 free -m
636 free -m | xargs | awk '{print "free/total memory" $9 " / " $ 10}'
736 df -h | xargs | awk '{print "free/total disk: " $11 " / " $9}'
740 df -h | xargs | awk '{print "free/total disk: " $11 " / " $8}'
741 free -m | xargs | awk '{print "free/total memory: " $17 " / " $8 " MB"}'
Je me demande simplement s’il est possible d’exécuter la commande 636 sans la retaper, il suffit de taper quelque chose en plus du numéro, comme l’historique 636 ou quelque chose du genre.
bash
command-history
Celui
la source
la source
ctrl-r
?Réponses:
En bash, tout
!636
ira bien.la source
In Linux
- Cela a plus à voir avec le shell (bash, zsh, etc.) une personne est en cours d'exécution, puis le système d'exploitation sur lequel vous l'exécutez. Il y a des shells sur linux sans support pour l'histoire.:p
pour imprimer la commande sans l'exécuter,!636:p
par exemple. Ce qui signifie que vous pouvez facilement le sélectionner à nouveau dans votre historique en appuyant sur la flèche vers le haut et enOui, cela s'appelle "l'expansion de l'histoire". Voir
pour plus de détails.
L'utilisation d'un point d'exclamation suivi d'un nombre est sans doute la plus simple des utilisations:
Toutefois, vous pouvez également exécuter directement la dernière commande exécutée sans connaître son numéro d’historique:
Ou vous pouvez exécuter deux commandes:
Le formulaire que j’utilise le plus souvent consiste toutefois à répéter le dernier argument de la dernière commande:
Ou, disons que j'inspecte un fichier. En utilisant la complétion par tabulation, je pourrais procéder comme suit:
Encore une fois, lisez la page de manuel pour plus de détails:
la source
Alt-.
peut être plus pratique que!$
. Il insère le dernier argument de la dernière commande mot pour mot dans la ligne.!$
, mais jamais à ma connaissanceAlt-.
)? Voulez-vous poster un lien, s'il vous plaît?LESS="+/DEFAULT KEY BINDINGS" man 3 readline
,/etc/inputrc
,~/.inputrc
. De nombreux programmes en plus de bash utilisent libreadline; pour ceux qui le font, vous bénéficiez des mêmes fonctionnalités telles queAlt-.
,Ctrl-X-U
(annuler),Ctrl-/
(décrire le raccourci), compléter la tabulation, etc. - gratuitement. Par exemple, avec seulement trois lignes d’PYTHONSTARTUP
une ligne, vous pouvez activer l’achèvement de la tabulation et l’historique dans le stock REPL python . Ce qui fonctionnera (principalement) comme dans bash, puisque c’est la bibliothèque GNU Readline qui fait le travail. La page de manuel de readline décrit les fonctionnalités en détail.echo {1..5}
suivi partouch !$
touchera cinq fichiers, pas un seul. Donc, à proprement parler, ce n'est pas le dernier argument mais le dernier mot shell de cette ligne. (Essayez égalementecho hello >temp
suivi deecho goodbye !$
.) Si vous pouvez trouver un moyen de le dire plus clairement, n'hésitez pas à suggérer une modification.Un bon, si vous ne voulez pas d'abord l'histoire, notez le numéro, etc:
en bash (et peut-être d'autres):
(
ctrl-r
= "recherche inversée interactive") (something
= partie d'une commande précédente)Cela vous montrera la dernière ligne d'historique contenant
something
. Pour obtenir celui qui précède, faites à nouveau ctrl-r (seul), à chaque fois qu'il obtient une ligne précédente.ex:
pour afficher la dernière ligne d'historique contenant '10' (par exemple, la ligne avec
$10
, dans votre exemple), et dectrl-r
nouveau jusqu'à ce que vous récupériez la ligne d'historique que vous recherchiezLorsque la ligne que vous voulez apparaître, juste
Enter
pour l' exécuter (ou vous pouvez également le modifier, en utilisant learrow keys
,backspace
etctrl-a
d'aller au début de la ligne,ctrl-e
pour se rendre à la fin,ctrl-k
: « tuer » du curseur jusqu'à la fin de la ligne (= supprime + l'enregistre dans un tampon),:ctrl-y
pour restaurer, à partir du tampon, un bit précédemment tué, etc.)Si vous souhaitez effectuer une recherche en avant (ctrl-s), vous devez d’abord désactiver XON : voir https://stackoverflow.com/a/791800/1841533 :
"juste pour désactiver XON / XOFF en lançant
"(et vous pourrez alors utiliser ctrl-s, sans que cela gèle le terminal)
la source
Vous pouvez utiliser le shell intégré fc :
la source
-s
pour obtenir les avantages. Si vous exécutez,fc 636
vous ouvrez un éditeur avec la commande 636 de votre historique dans la mémoire tampon. Lorsque vous enregistrez et quittez la commande, celle-ci (modifiée ou non) sera exécutée. Et encore mieux, celui-ci est compatible POSIX .help
n'est pas POSIX - pourrait avoir à faireman dash
ou similairehelp
existe. Un autre shell intégré. Et déroutant pour les utilisateurs non avertis qui pourraient demander de l’aide pour un nouveau système, mais qui sont au contraire confrontés à un flot de charabia. :-(Il existe
HSTR
-hh
commande pourbash
etzsh
sélection de commande interactive, meilleure que la recherche inversée Ctrl-R:interactive, vous pouvez donc rechercher et modifier la commande avant de l’exécuter.
Sur Ubuntu, vous pouvez installer
hh
avec le one-liner suivant:ou pas à pas:
Installer
hh
sur Fedora, RHEL ou CentOS:Sur macOS avec
homebrew
:... puis configurez-le avec:
Cela remplacera le comportement par défaut Ctrl-R.
Exécuter
hh --show-configuration
pour déterminer ce qui sera ajouté à votre profil Bash.Plus d'options de configuration disponibles sur la page d'accueil du projet sur Github: https://github.com/dvorka/hstr
la source