Question Comment écrire un script dans sudo la dernière commande [dupliquer]


Cette question a déjà une réponse ici:

Habituellement, pour certaines commandes telles que apt-get install xxx, J'oublie d'ajouter sudo D'abord, je dois le ressaisir. Ce que je veux, c'est dans de tels cas, je tape juste une commande simple, par exemple resudo. Il va sudo ma dernière commande sudo apt-get install xxx. Est-ce possible en bash?


3
2018-02-19 14:52


origine


Pour apt-* en particulier, il y a wajig.


Réponses:


Vous pouvez simplement utiliser les bash !!: c'est un raccourci pour réexécuter la dernière commande.

sudo !!

Quoi qu'il en soit, bash propose de nombreux raccourcis pour n'importe quoi, vous pouvez simplement appuyer sur la flèche vers le haut (pour récupérer la dernière ligne tapée), puis appuyer sur ^A ou Home et ajouter sudo Là.

Voici une feuille de calcul utile


18
2018-02-19 14:54



Merci, ça marche super bien. Mais encore une autre question, il semble que !! n'est pas reconnu dans le script bash, pourquoi? Par exemple, je veux obtenir la dernière commande last_command = $ (!!), cela ne fonctionne pas.
@Todd: $() évalue une commande, la remplace par le résultat de la commande. Vous avez juste besoin de faire: last_command=!!, sinon si !! était par exemple echo Hello, last_command=$(!!) sera étendu à last_command=hello. - peoro
@peoro: veuillez tester dans votre bash, last_command = $ (!!) provoque une erreur d'interprétation. Semble !! n'est juste pas reconnu.
@Todd: l'expansion de l'historique est (généralement) désactivée dans les scripts car elle n'a aucun sens. Rappelez-vous que les scripts s'exécutent dans des sous-couches, donc si vous pouviez utiliser !! dans un script, il étendrait à la ligne précédente de ce script, pas la dernière chose que l'utilisateur exécutant le script a fait. Si vous essayez de faire un raccourci pour sudo !!, voir ma réponse ici pour savoir comment créer un alias de shell pour le faire. - Gordon Davisson