Je suis un utilisateur d'Ubuntu avec peu d'expérience et que j'utilise sudo
.
Que fait sudo !!
et comment?
command-line
sudo
RamHS
la source
la source
!!
partie de la commande.!!
fait et comment. L'autre veut une méthode pour le faire.sudo !!
fait, et il y a deux réponses qui expliquent spécifiquement ce qui!!
fait.Réponses:
!!
in bash est un alias pour la commande précédente (voir Indicateurs d'événement ). Donc, il réexécute la commande précédente avec dessudo
autorisations.la source
!
commandes ne sont généralement pas disponibles dans les scripts bash (uniquement dans les sessions interactives). Ils peuvent être désactivés avecset +o histexpand
.sudo bang bang
est une commande très utile lorsque vous travaillez dans l'interface de ligne de commande.Certaines distributions Linux vous permettent de vous connecter en tant qu'utilisateur plutôt qu'en tant qu'administrateur.
Donc, pour faire quelque chose d'administrateur, vous devez exécuter la commande avec
sudo
(super-utilisateur DO), qui indique au système "vous allez le faire, parce que je l'ai dit." / bang-bang (! = bang) est un raccourci que vous pouvez utiliser pour répéter la commande précédente.Ainsi, le scénario typique est que vous essayez une commande et que cela réapparaisse un message disant que vous devez être un administrateur pour le faire. Ainsi, vous pouvez taper
sudo
pour exécuter cette commande en tant que super-utilisateur / admin ou vous pouvez tapersudo !!
où!!
indique au système d'utiliser la commande précédente tentée. UfHIl y a beaucoup d'autres commandes de bang. Pour obtenir une liste d’entre eux et des explications sur ce qu’ils sont, consultez les commandes Bang de Linux , voir aussi Historique Bash et commandes Bang.
la source
sudo
et regardez la ligne de commande.sudo
quelque chose et obtenez une erreur, vous voulez immédiatementsudo
ilsudo
ne veut pas dire "super utilisateur", il va comme faire une commande comme si je l'avais faitsu
(su signifie changer d' utilisateur [et non super utilisateur]); c'est-à-dire que vous pouvez utiliser les commandes sudo comme n'importe quel utilisateur, pas seulement root (-u
switch); il en va de mêmesu [user] [-c command]
su
ne signifie pas une telle chose. Voir linux.die.net/man/1/su , gnu.org/software/coreutils/manual/html_node/su-invocation.html , linfo.org/su.html . Cela devrait signifier utilisateur substitut .La
bang bang (!!)
commande est un raccourci pour répéter et exécuter la commande précédente que vous avez entrée dans votre terminal. Cette commande est très utile lorsque vous oubliez que vous avez besoin des droits d’administrateur pour effectuer une action donnée et vous permet de la répéter avec les droits de super-utilisateur en tapant simplement le bouton,!!
saisit la dernière commande.Par exemple:
La sortie sera,
Après cela, si nous exécutons la
sudo !!
commande, la sortie seraCe qui signifie
!!
qu'une partie saisit la commandeapt-get update
précédente et que lasudo
partie précédente fait en sorte que la commande s'exécute avec les droits de superutilisateur.Et comment les
sudo !!
exécute la commande précédente avec les privilèges de super - utilisateur signifie, normalement toutes les commandes que nous entrâmes sur le terminal sont stockés dans lacommand history
.Run lahistory
commande sur le terminal, il affiche toutes les commandes que vous entered.The!!
partie dans lessudo !!
grappins la dernière commande enregistrée dans l'historique des commandes et le toutsudo !!
exécute la dernière commande avec les privilèges d'administrateur.Certaines autres commandes sont expliquées dans cet article de blog .
la source
mkdir LongDirectoryName
etcd !$
doivent être émis séparément au travail, à moins que ceLongDirectoryName
ne soit le dernier mot de la commande précédente. Pour les besoins de l'historique du shell, utilisezmkdir LongDirectoryName; cd !$
une seule commande. Interaction de l'historique avec!!
,!^
et!$
utilise la dernière commande que le shell a réellement traitée avant d'être visualisée!
. Voici un exemple. Si vous exécutez,history
vous verrez que les commandes d'une ligne jointe;
sont mémorisées comme une seule commande.La réponse comporte deux parties:
!!
etsudo
!!
fait partie des fonctionnalités du shell (dans le cas d’Ubuntu, il s’agit probablement de bash, mais d’autres shells comme zsh ou csh le supportent également) appelé "développement de l’historique". Il se comporte de la même manière que les autres extensions en ce sens que le shell étend le "espace réservé" à un ensemble de mots. Whilefoo*
serait étendu à une liste de tous les fichiers commençant par «foo», puis!!
étendu au contenu de la ligne de commande précédente.Comme d'autres extensions, cela est entièrement fait par le shell, donc si vous tapez
!!
après une autre commande, cette commande n'est pas consciente de l'existence d'un!!
, mais ne verra que la ligne de commande précédente. (Contrairement aux autres extensions, l’extension de l’historique se produit avant l’enregistrement d’une commande dans l’historique, c’est-à-dire que!!
la ligne de commande remplacée sera enregistrée dans l’historique.)La
sudo
commande permet d'exécuter des commandes en tant qu'autre utilisateur, à condition que les autorisations soient accordées par la politique de sécurité (celle-ci est configurée par défaut/etc/sudoers
).Par défaut, le mot de passe root reste non défini dans Ubuntu. Pour effectuer des tâches d'administration système, l'utilisateur créé lors de l'installation dispose des droits sudo. Cet utilisateur peut maintenant exécuter n'importe quelle commande du shell en tant que root, par simple ajout de préfixe
sudo
. Certains programmes graphiques utilisent également le mécanisme sudo, par exemple la gestion des paquets.La raison pour laquelle vous
sudo
pouvez exécuter d'autres commandes en tant que root (ou un autre utilisateur) est que sudo binary (/usr/bin/sudo
) a le bit setuid défini dans son autorisation et appartient à root. Tout exécutable (binaire) avec le bit setuid est exécuté avec les autorisations de son propriétaire. Cela signifie que sudo fonctionne efficacement avec les autorisations root, quel que soit l'utilisateur qui l'a appelé. Seules les politiques de sécurité internes de sudo gèrent quel utilisateur est autorisé et empêchent les utilisateurs arbitraires de faire des choses arbitraires.Donc, dans le cas de
sudo !!
cela signifieest fondamentalement identique à
juste moins en tapant. Dans les deux cas, sudo voit juste
mount /dev/sdb1 /mnt
et l'exécute avec les permissions root.la source
!!
est l'expression la plus simple et probablement la plus courante sur le plan syntaxique pour l'expansion de l'historique .Comme vous l'avez peut-être remarqué, après la substitution de la dernière commande exécutée
!!
, bash fait deux choses (dans sa configuration par défaut):La commande complète avec le texte substitué vous est présentée.
Par exemple, si votre commande était
lshw -c video
et que vous exécutiezsudo !!
ensuite, la commande après le développement de l'historique estsudo lshw -c video
.Cette commande est exécutée.
Normalement, ces deux étapes se déroulent sans interruption et sans possibilité d'interaction de l'utilisateur, car
shopt histverify
non défini par défaut (shopt -u histverify
).Cependant, si vous activez
shopt histverify
(shopt -s histverify
), l'expansion de l'historique fonctionne différemment:(Notez que l'
histverify
option shell ne prend effet que si la bibliothèque readline est utilisée - mais lorsque vous utilisez bash de manière interactive sur un système Ubuntu ou un autre système GNU / Linux, c'est essentiellement le cas.)Que l'
histverify
option shell soit activée ou non , l'expansion de l'historique est différente de celle de nombreuses autres extensions du shell. Les autres extensions du shell ne vous montrent pas la commande développée avant son exécution. Contrairement aux autres extensions, destinées à être utilisées de manière interactive et non interactive (par exemple, dans un script shell), le développement de l'historique est presque toujours utilisé de manière interactive.la source
! est utilisé sous Linux pour les raccourcis liés à l’histoire. Alors, !! exécutera simplement la commande précédente que vous avez exécutée.
C'est très utile dans les cas où vous oubliez de mettre sudo avant une commande qui l'exige ou vous obtenez une autorisation refusée ou quelque chose du genre que vous faites.
et tu as fini.la source
!! répétera et exécutera la commande précédente, et avec sudo, il donnera le privilège root à la commande. (Ce n'est pas dans la page de manuel? !! Je ne peux pas le voir là.)
la source
man --pager='less -p "Event Designators"' bash