TL; DR
Você pode bloquear a entrada de copiar e colar no terminal enquanto o sudo está solicitando uma senha?
Mais informações
Às vezes, você deseja copiar e colar uma longa série de comandos no terminal e executá-los sequencialmente. Se sudo
fizer parte de qualquer um dos comandos, isso impedirá que o comando seja executado.
Um exemplo disso seria a instalação do Spotify usando os comandos do terminal fornecidos em seu site:
# 1. Add the Spotify repository signing key to be able to verify downloaded packages
sudo apt-key adv --keyserver hkp://keyserver.ubuntu.com:80 --recv-keys BBEBDCB318AD50EC6865090613B00F1FD2C19886
# 2. Add the Spotify repository
echo deb http://repository.spotify.com stable non-free | sudo tee /etc/apt/sources.list.d/spotify.list
# 3. Update list of available packages
sudo apt-get update
# 4. Install Spotify
sudo apt-get install spotify-client
Copiar e colar isso no terminal produz o seguinte resultado:
user:~$ # 1. Add the Spotify repository signing key to be able to verify downloaded packages
user:~$ sudo apt-key adv --keyserver hkp://keyserver.ubuntu.com:80 --recv-keys BBEBDCB318AD50EC6865090613B00F1FD2C19886
[sudo] password for user:
Sorry, try again.
[sudo] password for user:
O que acontece é que o terminal interpreta a linha "# 2. Adicione o repositório Spotify" como a senha fornecida (ou possivelmente até "" como uma senha, pois há uma quebra de linha entre o comando sudo e essa linha), bloqueia alguns segundos enquanto o copy-paste ainda está sendo inserido no terminal, e depois destrava novamente por uma segunda tentativa na senha.
Isso é ruim se você tiver muitos comandos que deseja executar em série, desde então alguns dos comandos não-sudo serão executados enquanto os comandos do sudo são negados.
Uma solução rápida para corrigir isso é escrever manualmente um comando sem sentido primeiro, como $ sudo whatever
, depois digitar a senha e, em seguida, colar a série de comandos, da seguinte forma:
user:~$ sudo whatever
[sudo] password for user:
sudo: whatever: command not found
user:~$ # 1. Add the Spotify repository signing key to be able to verify downloaded packages
user:~$ sudo apt-key adv --keyserver hkp://keyserver.ubuntu.com:80 --recv-keys BBEBDCB318AD50EC6865090613B00F1FD2C19886
Executing: /tmp/tmp.JQ3ntmdbnL/gpg.1.sh --keyserver
hkp://keyserver.ubuntu.com:80
--recv-keys
BBEBDCB318AD50EC6865090613B00F1FD2C19886
...
...
...
Isso funciona porque a instância do terminal não solicitará uma senha novamente.
Existe uma maneira mais inteligente de fazer isso? Você pode, por exemplo, bloquear a entrada de copiar e colar até que uma senha válida tenha sido fornecida?