6
votes

Alternative à Up arrow + Entrée pour exécuter la commande précédente?

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


2 commentaires

Donc, la dactylographie "prev" est plus rapide que UP + Entrée?


devrait être déplacé à superuser.com


7 Réponses :


23
votes

in Bash, vous pouvez appuyer sur Ctrl p pour aller à la commande précédente - c'est beaucoup mieux que de devoir passer aux touches fléchées.

Voir aussi: https://github.com/fliptheweb/bash-shortcut- Cheat-feuille /


1 commentaires

Et ctrl + n pour reculer à la commande suivante, si vous allez aller trop loin.



1
votes

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.


0 commentaires

7
votes

Utilisez

!!

pour exécuter votre commande précédente. xxx

fonctionne également, pour l'enregistrement.


1 commentaires

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.



4
votes

Au lieu d'exécuter la même commande plusieurs fois de suite, pourquoi pas montre c'est à la place? watch 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.

regarder commande


0 commentaires

2
votes

Êtes-vous un utilisateur EMACS ou VI? Vous pouvez utiliser

set -o vi 
set -o emacs


0 commentaires

4
votes

J'utilise souvent la fonctionnalité "Expansion de l'historique" dans BASH (généralement activée avec CNTL R ) - 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 , et aussi Utilisation de l'historique de manière interactive .


0 commentaires

3
votes

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.


0 commentaires