Eu sou um usuário do Ubuntu com pouca experiência e tenho usado sudo
.
O que sudo !!
faz e como?
command-line
sudo
RamHS
fonte
fonte
!!
parte do comando.!!
fazer e como. O outro quer um método para fazer isso.sudo !!
faz, e há duas respostas que explicam especificamente o que!!
faz.Respostas:
!!
no bash é um alias para o comando anterior (consulte Designadores de Eventos ). Portanto, ele executa novamente o comando anterior comsudo
permissões.fonte
!
comandos geralmente não estão disponíveis nos scripts bash (apenas em sessões interativas). Eles podem ser desativados comset +o histexpand
.sudo bang bang
é um comando muito útil ao trabalhar na interface da linha de comandos.Algumas distribuições Linux fazem o login como usuário, em vez de administrador.
Portanto, para fazer algo em termos de administração, você deve prosseguir com o comando
sudo
(Superusuário DO), que informa ao sistema "você fará isso, porque eu disse isso." / bang-bang (! = bang) é basicamente um atalho que você pode usar para repetir o comando anterior.Portanto, o cenário típico é que você tenta um comando e retrocede uma mensagem dizendo que você precisa ser um administrador para fazer isso. Portanto, você pode digitar
sudo
para executar esse comando como superusuário / administrador ou digitarsudo !!
where!!
informa ao sistema para usar o comando anterior que foi tentado. UfHExistem muitos outros comandos de golpe. Para obter uma lista deles e explicações sobre o que são, consulte Linux Bang Commands , consulte também Histórico do Bash e comandos bang
fonte
sudo
e olhar para a linha de comando.sudo
algo e obter um erro, assim que você quer imediatamente parasudo
elesudo
não significa "super-utilizador fazer", ele vai como fazer um comando como se eu tivesse feitosu
(su significa interruptor de utilizador [e não super utilizador]); ou seja, você pode sudo comandos como qualquer usuário, não apenas root (-u
switch); o mesmo acontece comsu [user] [-c command]
su
que não representa tal coisa. Consulte linux.die.net/man/1/su , gnu.org/software/coreutils/manual/html_node/su-invocation.html , linfo.org/su.html . Deve significar usuário substituto .O
bang bang (!!)
comando é um atalho para repetir e executar o comando anterior que você inseriu no seu terminal. Esse comando é muito útil quando você esquece que precisa de direitos de administrador para executar uma determinada ação e permite repeti-lo com direitos de superusuário apenas digitando,!!
agarra o último comando de execução.Por exemplo:
A saída será,
Depois disso, se executarmos o
sudo !!
comando, a saída seráO que significa que a
!!
parte pega o comando de execução anteriorapt-get update
e asudo
parte anterior o executa com direitos de superusuário.E como as
sudo !!
executa o comando anterior com privilégios de superusuário significa, normalmente todos os comandos que entraram no terminal são armazenados nocommand history
.run ohistory
comando no terminal, ele mostra todos os comandos que entered.The!!
parte nassudo !!
garras do último comando armazenado no histórico de comandos e o conjuntosudo !!
executa o último comando com privilégios de administrador.Alguns outros comandos bang são explicados nesta postagem do blog .
fonte
mkdir LongDirectoryName
ecd !$
devam ser emitidas separadamente para funcionar, a menos queLongDirectoryName
aconteça a última palavra do comando anterior. Para propósitos de histórico de shell,mkdir LongDirectoryName; cd !$
é um comando. Interação história com!!
,!^
e!$
usar o último comando do shell realmente totalmente processado antes de ver!
. Aqui está um exemplo. Se você executar,history
verá que os comandos em uma linha unida por;
são lembrados como um comando.Há duas partes na resposta:
!!
esudo
!!
faz parte da funcionalidade do shell (no caso do Ubuntu, isso provavelmente é bash, mas outros shells como zsh ou csh também suportam isso) chamados de "expansão da história". Ele se comporta de maneira semelhante a outras expansões em que o shell expande o 'espaço reservado' para um conjunto de palavras. Emborafoo*
seja expandido para uma lista de todos os arquivos iniciados com 'foo',!!
é expandido para o conteúdo da linha de comando anterior.Como outras expansões, isso é feito inteiramente pelo shell; portanto, se você digitar
!!
após algum outro comando, esse comando não estará ciente de que havia um!!
, mas verá apenas a linha de comando anterior. (Diferentemente de outras expansões, a expansão do histórico ocorre antes que um comando seja salvo no histórico, ou seja, em vez da!!
linha de comando substituída será salva no histórico.)O
sudo
comando permite executar comandos como outro usuário, desde que as permissões sejam concedidas pela política de segurança (o padrão é configurado em/etc/sudoers
).Por padrão, a senha root permanece não definida no Ubuntu. Para executar tarefas de administração do sistema, o usuário criado durante a instalação recebe direitos sudo. Agora esse usuário pode executar qualquer comando no shell como root, apenas acrescentando
sudo
. Alguns programas GUI também usam o mecanismo sudo, por exemplo, gerenciamento de pacotes.A razão pela qual
sudo
pode executar outros comandos como root (ou outro usuário) é que o sudo binary (/usr/bin/sudo
) tem o bit setuid definido em sua permissão e pertence ao root. Qualquer executável (binário) com bit setuid definido é executado com as permissões de seu proprietário. Isso significa que o sudo é executado efetivamente com permissões de root, independentemente do usuário que realmente o chamou. Somente as políticas de segurança interna do sudo gerenciam qual usuário tem permissão para quê e impedem que usuários arbitrários façam coisas arbitrárias.Então, no caso
sudo !!
disso significaé basicamente idêntico ao
apenas menos digitação. Nos dois casos, o sudo apenas o vê
mount /dev/sdb1 /mnt
e executa com permissões de root.fonte
!!
é a expressão sintaticamente mais simples e provavelmente a mais comum para expansão da história .Como você deve ter notado, após substituir o último comando executado
!!
, o bash faz duas coisas (em sua configuração padrão):O comando completo com o texto substituído é mostrado para você.
Por exemplo, se seu comando foi
lshw -c video
e você executa asudo !!
seguir, então o comando após a expansão do histórico ésudo lshw -c video
.Esse comando é executado.
Normalmente, essas duas etapas ocorrem sem interrupção e sem oportunidade de interação com o usuário, porque
shopt histverify
estão desabilitadas por padrão (shopt -u histverify
).No entanto, se você ativar
shopt histverify
(shopt -s histverify
), a expansão do histórico funcionará de maneira diferente:(Observe que a
histverify
opção shell entra em vigor apenas se a biblioteca readline estiver sendo usada - mas quando você usa o bash interativamente em um sistema Ubuntu ou outro sistema GNU / Linux, isso geralmente é sempre o caso.)Independentemente de a
histverify
opção de shell estar ativada ou não , a expansão do histórico é diferente de muitas outras expansões de shell. Outras expansões de shell não mostram o comando expandido antes de ser executado. Diferentemente de outras expansões, que devem ser usadas de maneira interativa e não interativa (por exemplo, em um script de shell), a expansão do histórico é quase sempre usada de maneira interativa.fonte
! é usado no Linux para atalhos relacionados ao histórico. Assim, !! simplesmente executará o comando anterior que você executou.
É muito útil nos casos em que você esquece de colocar o sudo antes de um comando que o exija ou você recebe permissão negada ou algo assim simplesmente
e pronto.fonte
!! repetirá e executará o comando anterior e, com o sudo, dará ao comando o privilégio de root. (Não está na página de manual? !! Não consigo vê-lo lá.)
fonte
man --pager='less -p "Event Designators"' bash