J'essaie de définir un alias pour sudo !!
Bash. J'ai essayé alias sbb='sudo !!
', mais il interprète cela comme un littéral !!
et imprime
sudo: !!: command not found
Si j'utilise des guillemets doubles, il remplace le double coup dans la chaîne elle-même, de sorte que cela ne fonctionne pas.
Y a-t-il un moyen de faire fonctionner cela? Ou un alias alternatif? `
bash
sudo
alias
command-history
history-expansion
Manishearth
la source
la source
Réponses:
!!
est étendu par bash lorsque vous le tapez. Il n'est pas étendu par la substitution d'alias.Vous pouvez utiliser la fonction
history
intégrée pour faire l’extension:Si la commande est plus qu'une simple commande (par exemple, elle contient des redirections ou des tuyaux), vous devez appeler un shell sous sudo:
la source
man tcsh
et découvert qu'il fait faire l' expansion de l' histoire lors de l' expansion d'alias « comme si la commande initiale était la ligne d'entrée précédente. » Intéressant. Cependant, celaalias sbb 'sudo \!-2
n’a pas fonctionné comme prévu (il a en fait substitué la deuxième entrée précédente);alias sbb 'sudo \!\!'
a fonctionné comme prévu (substituésbb
à!!
); et à la fin il s’est avéré que ce que je voulais, c’étaitalias sbb 'sudo \!-1'
ce à quoi je me serais attendu\!\!
. (tcsh 6.17.06 (Astron) 2011-04-15) YMMV. Bonne chance.sbb
je préféreraisprease
comme alias comme suggéré par @jpschorrEssayer:
J'aime plutôt préférer l'appeler 's'il vous plaît':
Info:
fc
est une commande intégrée dans le shell bash. qui répertorie, édite et réexécute les commandes précédemment entrées dans un shell interactif.la source
please
est définitivement la voie à suivre!please
donne l'impression que le terminal est une entité avec laquelle je dois être gentil pour que tout soit fait. Je préfère quelque chose qui donne un meilleur sens du contrôle - du genrefuck
;)Maintenant, il existe un référentiel à cet effet dans GitHub, il vérifie par magie s'il a besoin des droits de superutilisateur, corrige également les fautes de frappe:
https://github.com/nvbn/thefuck
la source
apt-get install thefuck
ce qui existe, mais cela ne fonctionne pas sur mon Ubuntu 15.10; (Cela a été initialement posté à cette question, mais plus tard, suggéré de poster ici.
Voici comment vous pouvez utiliser
fc
ethistory
avec alias pour des!-
substitutions semblables. Supposons que si vous voulez utiliser!-n
(où n est le chiffre de la nième dernière commande utilisée), vous pouvez utiliserfc
ethistory
avec alias comme suit:Utilisant
history
:Note: Ici
!-n
devrait être inclus avec'
ou''
.Utilisant
fc
:Remarque: ici, les 1 er et 2 e
-n
servent à spécifier la plage de l'historique.Ici, j'ai utilisé l'écho avant d'exécuter une commande d'abattage similaire
!-<n>
.la source
history -p
etfc
. Quelque chose de nouveau ici?-ln -n -n
être extrêmement déroutant; aussi le peu sur'
ou''
(et aussi le peu sur-<n>
).$(fc -ln -1)
la source