Parfois, je dois exécuter une commande plusieurs fois de suite, par exemple pour voir si un service a commencé, et il devient fastidieux de bouger mes mains de ma position de tapé normale pour appuyer sur la flèche vers le haut et entrez les touches à plusieurs reprises. Existe-t-il un moyen d'exécuter la commande précédente sans la flèche vers le haut et entrez les touches, peut-être avec un script de shell élaboré?
J'ai essayé ce qui suit, mais cela n'est pas satisfaisant, car il ne peut pas exécuter des alias, et c'est un peu lent . P>
history | tail -2 | head -1 | cut -d' ' -f4- | cat > prev_command.txt sleep .01 chmod 777 prev_command.txt eval prev_command.txt rm prev_command.txt
7 Réponses :
in Bash, vous pouvez appuyer sur Ctrl kbd> p kbd> pour aller à la commande précédente - c'est beaucoup mieux que de devoir passer aux touches fléchées. P>
Voir aussi: https://github.com/fliptheweb/bash-shortcut- Cheat-feuille / p>
Et ctrl + n code> pour reculer à la commande suivante, si vous allez aller trop loin.
Selon le terminal que vous utilisez, je sais beaucoup utilisé pour avoir F3 comme une option de répétition, mais c'est toujours en dehors de la plage normale de saisie, à moins que vous n'ayez un clavier spécial avec des touches de fonction plus accessibles. < / p>
Mon clavier permet aux touches de fonction facilement accessibles, mais je ne fais plus grand travail de ligne de commande dans UNIX. Je ne serais donc pas capable de vous dire que c'était toujours possible. P >
Utilisez
pour exécuter votre commande précédente. p> fonctionne également, pour l'enregistrement. p> p> !! code> p>
Y a-t-il un moyen de mettre !! ou la CTRL P dans la réponse ci-dessous dans un alias? J'ai essayé Alias L = '!!', mais ça me donne une erreur "Bash: !!: Commande introuvable" quand je l'exécute.
Au lieu d'exécuter la même commande plusieurs fois de suite, pourquoi pas montre code>
c'est à la place? watch code> exécutera une commande spécifiée à plusieurs reprises et affiche la sortie dans stdout afin que vous puissiez le voir changer dans le temps. P>
regarder code>
commande code> em> p>
Êtes-vous un utilisateur EMACS ou VI? Vous pouvez utiliser
set -o vi set -o emacs
J'utilise souvent la fonctionnalité "Expansion de l'historique" dans BASH (généralement activée avec CNTL KBD> R KBD>) - Il recherche de manière interactive votre historique pour la correspondance la plus proche la plus proche. < / p>
Voir la section manuelle Bash Recherche de commandes de l'historique A>, et aussi Utilisation de l'historique de manière interactive . P>
in Bash:
$ help fc fc: fc [-e ename] [-lnr] [first] [last] or fc -s [pat=rep] [command] Display or execute commands from the history list. fc is used to list or edit and re-execute commands from the history list. FIRST and LAST can be numbers specifying the range, or FIRST can be a string, which means the most recent command beginning with that string. Options: -e ENAME select which editor to use. Default is FCEDIT, then EDITOR, then vi -l list lines instead of editing -n omit line numbers when listing -r reverse the order of the lines (newest listed first) With the `fc -s [pat=rep ...] [command]' format, COMMAND is re-executed after the substitution OLD=NEW is performed. A useful alias to use with this is r='fc -s', so that typing `r cc' runs the last command beginning with `cc' and typing `r' re-executes the last command. Exit Status: Returns success or status of executed command; non-zero if an error occurs.
Donc, la dactylographie "prev" est plus rapide que UP + Entrée?
devrait être déplacé à superuser.com