Je sais que je peux utiliser Uppour parcourir les commandes précédentes. L'exécution de la dernière commande implique simplement Up+ Enter. Cependant, je pensais acheter le clavier Happy Hacking car je passais beaucoup de temps là-dedans vim
.
Ce clavier n'a pas de touches fléchées, et la seule façon pour moi d'obtenir ce genre de comportement est d'appuyer sur Ctrl+ Ret de commencer à répéter ma commande précédente.
Existe-t-il un moyen simple d'émuler Up+ Enterdans un terminal UNIX sans les touches de direction?
Réponses:
Avec
csh
ou toute coquille mise en œuvrecsh
-comme la substitution de l' histoire (tcsh
,bash
,zsh
):Puis Enter.
Ou alternativement :
Puis Enter.
Ou Ctrl+ P,Enter
Espace magique
En outre, notez que
!!
et!-1
ne se développeront pas automatiquement pour vous, jusqu'à ce que vous les exécutiez (quand il pourrait être trop tard).Si vous utilisez
bash
, vous pouvez le mettrebind Space:magic-space
dans~/.bashrc
, puis appuyer sur Spaceaprès la commande pour les développer automatiquement en ligne, ce qui vous permettra de les inspecter avant leur exécution. Ceci est particulièrement utile pour le développement de l'historique à partir d'une commande exécutée il y a longtemps, par exemple!echo
, extraira la dernière commande exécutée en commençant parecho
. Avec Magic Space, vous obtenez un aperçu de la commande avant son exécution.C'est l'équivalent de faire
bindkey ' ' magic-space
danstcsh
ouzsh
.la source
magic-space
c'est une option douce!histverify
option permettantshopt
à readline de développer l’historique mais de ne pas exécuter la commande lors du premier appui sur la touche Entrée. Ce qui vous permettra d'évaluer le résultat et de décider si c'est ce que vous voulez exécuter.!!
est l'utilisation de son extension sur place . Par exemplesudo !!
.La plupart des shells dotés d'une fonctionnalité d'édition en ligne de commande prennent en charge les liaisons de clé Emacs. (un petit sous-ensemble)
Vous pouvez également configurer votre shell pour qu'il utilise le mode d'édition de commande vi, en l'ajoutant
set -o vi
à votre fichier de démarrage du shell (par exemple,~/.bashrc
). Ensuite, par exemple, vous pouvez!!
). La touche moins -fonctionne également comme une commande "déplacer vers le haut".!-12
).vi
mode commande, vous devrez utiliser unevi
commande d'édition (par exemple, I, A, C, R, ou un de leurs homologues en minuscules) pour ajouter en fait à la commande de l' histoire.Donc, par exemple, EsckisudoSpaceEnterest équivalent à
sudo !!
.!-2:- !$
. (Malheureusement, il ne semble pas prendre en charge les tampons nommés.)la source
vi
truc était génial !!!delete
Ctl + u dans ZshMon préféré est CTRL+ Palors CTRL+O
Cela fonctionne par défaut, aucune configuration supplémentaire n'est requise. ^ P vous laissera passer à la dernière commande et ^ O vous laissera exécuter la ligne courante
Notez que CTRL+ Opeut être utilisé autant de fois que vous le souhaitez
la source
^J
ls
oupwd
précédemment.Sûr! Puisque vous êtes habitué aux
vi
combinaisons de touches, pourquoi ne pas configurer votre shell pour y répondre? Carbash
, mettez ceci dans votre~/.inputrc
:L'exécution d'instances de bash ne lira pas le fichier. Déconnectez-vous puis reconnectez-vous.
zsh
détectera même ceci pour vous: si aucun de vos scripts de démarrage ne force le mode d’édition dans un sens ou dans l’autre à l’aide debindkey
et si votre$EDITOR
variable d’environnement est supposée la contenirvi
, alors levi
raccourci clavier sera automatiquement activé. Si vous avez besoin de le forcer, mettez ceci dans votre~/.zshrc
:Par la suite, utilisez ESCcomme d'habitude pour entrer en ligne de commande et ket jpour monter et descendre.
ALSO : Les liaisons de shell par défaut dans la plupart des shells sont les liaisons emacs, donc en réalité Crtl-Pet Ctrl-Ndevraient déjà fonctionner sans que vous ayez à changer quoi que ce soit.
la source
Avec un shell POSIX mise en œuvre du Portabilité utilisateur l' option (y compris
ksh
,zsh
,bash
,yash
), vous pouvez également utiliser lafc
commande suivante :Voir un exemple:
Plus d'infos dans Exécutez une gamme de commandes à partir de la réponse de l’histoire de Jonathan Leffler.
la source
Pour tous les utilisateurs Mac iterm2:
Vous pouvez lier ⌘+ Rà
0x0C 0x10 0x0d
. Cela effacera le terminal et exécutera la dernière commande.la source
0x10 0x0d
(c.-à-d. Omettez le0x0C
).Je trouve que j'ai souvent besoin de refaire des commandes en tant que super utilisateur, donc
refait la commande précédente comme si je m'étais souvenu de taper
sudo
à la première place.la source
Le
ksh
shell a un alias par défautr
qui répète la commande la plus récente. Il est lié àfc -s
:Fait intéressant, la
bash
documentation de la commandefc
intégrée (help fc
et également dans le manuel lui-même) mentionne même cela, mais ce n'est pas un alias par défaut dans ce shell:En
bash
, cela fonctionnerait également même si vous avez désactivé les extensions d’histoireset +H
.Dans le
zsh
shell, il y a uner
structure qui est documentée pour être la même chose quefc -e -
.Cet
fc
utilitaire est un utilitaire standard POSIX .la source
Avec
csh
ou toute coquille mise en œuvrecsh
-comme la substitution de l' histoire (tcsh
,bash
,zsh
), vous pouvez également utiliser l'!<beginning of command>
appeler la dernière commande en commençant par<beginning of command>
.par exemple si vous avez couru
!ta
exécuteraittail file.txt
la source
tl; dr
!!
ajoute simplement la dernière commande à votre commande actuelle.<backtick>!!<backtick>
exécute la dernière commande et ajoute le résultat à votre commande actuelle.Il existe actuellement 2 variantes:
Me laisser te montrer 2 exemples:
Exemple 1
Comme vous le voyez ci-dessus, j'exécute une commande et j'ajoute essentiellement la dernière commande.
Une autre variation
Exemple 2
la source
vi `!!`
. Très utileLorsque j'utilise un bon émulateur xterm, par exemple, mastic, ma méthode préférée consiste à sélectionner la commande, y compris le saut de ligne, à la copier dans le Presse-papiers, puis à utiliser le clic droit de la souris pour la coller. Cela répète la commande en un seul clic. Cela fonctionne également très bien pour une séquence de commandes séparées par des points-virgules.
la source
vous pouvez utiliser
!n
pour exécuter la nième commande dans le terminal. où 'n' est la ligne no ofhistory
command.la source
!?
jusqu'à la dernière commande? Êtes-vous sûr de ne pas le mélanger!!
(ce qui a déjà été couvert dans d'autres réponses)?Tapez Historique et notez le numéro devant la commande à exécuter et à utiliser.
!number
Vous pouvez aussi utiliser ! -1 (1 étant la dernière commande que vous avez exécutée, remplacez-la par le nombre que vous obtenez lorsque vous le faites par le bas, en gardant la dernière exécutée comme 1)
la source
Il y a plusieurs couches dans lesquelles vous pouvez demander la dernière commande.
Éditeur de ligne
L'éditeur de ligne (où vous tapez vos commandes) est fourni directement par ksh, par la bibliothèque readline sous bash et par le type de bibliothèque zle. D'autres shells, tels que dash, peuvent ne pas avoir de bibliothèque d'édition pour comprendre ces clés (à moins d'être compilés avec l'
--with-libedit
option activée).Ce travail en ksh, bash, zsh:
Ctrl- PMode # Emacs (précédent)
Ctrl- NMode # Emacs (suivant)
ESC- k Mode # vi ESC pour aller en mode commande et k pour monter
ESC- j Mode # vi ESC pour aller en mode commande et j pour descendre
histoire
Le système d'historique fourni par de nombreux shells permet d'étendre certains raccourcis:
commandes
Certaines commandes permettent de récupérer des commandes d'historique.
Comme la commande assez verbeuse (à imprimer uniquement):
ou la commande plus ancienne et donc généralement plus portable
fc
(directement ré-exécutée):Ou peut-être le plus simple
fc -s -1
, mais zsh n'accepte pas cette option pour fc.Si vous voulez seulement imprimer la commande, utilisez:
fc -nl -1 -1
.Pour modifier, mettre
FCEDIT
à un éditeur de texte (ex, ed, emacs, vi, etc.) et utiliser directement fc:fc -1
.la source