web-dev-qa-db-fra.com

Comment puis-je `alias Sudo !! '?

J'essaie de définir un alias pour Sudo !! dans Bash. J'ai essayé alias sbb='Sudo !! ', mais il interprète cela comme un littéral !! et impressions

Sudo: !!: command not found

Si j'utilise des guillemets doubles, il remplace le double coup dans la chaîne elle-même, donc cela ne fonctionne pas.

Y a-t-il un moyen de faire fonctionner cela? Ou un alias alternatif? "

53
Manishearth

!! est développé par bash lorsque vous le saisissez. Il n'est pas développé par la substitution d'alias.

Vous pouvez utiliser le history intégré pour faire l'expansion:

alias sbb='Sudo $(history -p !!)'

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:

alias sbb='Sudo "$BASH" -c "$(history -p !!)"'
63
rici

Essayer:

alias sbb='Sudo $(fc -ln -1)'

J'aime vraiment le nommer "s'il vous plaît":

alias please='Sudo $(fc -ln -1)'

Info: fc est une commande intégrée dans le shell bash. qui répertorie, modifie et réexécute les commandes précédemment saisies dans un shell interactif.

41
jpschorr

Maintenant, il y a 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

5
Arda

Cela a été initialement publié à this question mais plus tard, a suggéré de poster ici.

Voici comment utiliser fc et history avec un alias pour !- comme des substitutions. Supposons que si vous souhaitez utiliser !-n (où n est le chiffre de ne dernière commande utilisée), vous pouvez utiliser fc et history avec un alias comme suit:

  1. En utilisant history:

    alias xyz='echo $(history -p "!-<n>") ; Sudo $(history -p "!-n")'
    

    Remarque: ici !-n doit être joint à ' ou ''.

  2. En utilisant fc:

    alias xyz='echo $(fc -ln -n -n) ; Sudo $(fc -ln -n -n)'
    

    Remarque: ici 1st et 2dakota du Nord -n sont utilisés pour spécifier la plage de la liste d'historique.

Ici, j'ai utilisé l'écho avant d'exécuter la commande pour abattre comme !-<n>.

0
Pandya