Como colar vários comandos Bash em um shell sem perder alguns?

6

É bom copiar e colar uma série de comandos Bash encontrados em um site. Mas dependendo dos comandos, às vezes você perde alguns. Talvez eles sejam engolidos por programas que leiam a partir da entrada padrão, ou talvez haja outra explicação.

Então eu acabo fazendo isso algumas vezes:

$ bash <<EOF
cmd2
...
EOF

Existe uma maneira melhor? Alguma opção de Bash? Uma opção SSH? (Minha configuração é um Bash em execução em um servidor Ubuntu, ao qual eu sou enviado por SSH de um terminal OS X padrão. Não tenho certeza de quanto disso é relevante.)

EDITAR

Exemplo

Em resposta a pedidos de um exemplo concreto, aqui está um. Eu colei as seguintes quatro linhas em um shell SSH (do meu desktop Snow Leopard) conectado a um Ubuntu em estoque Quantal em execução em uma VM OpenStack, no shell Bash.

sudo apt-get install -y r-base gdebi-core
sudo apt-get install -y libapparmor1 # Required only for Ubuntu, not Debian
wget http://download2.rstudio.org/rstudio-server-0.97.314-amd64.deb
sudo gdebi rstudio-server-0.97.314-amd64.deb

Os dois primeiros comandos foram executados (com sucesso), enquanto os dois últimos aparentemente nunca foram recebidos pelo servidor (ou pelo menos, nunca processados pelo Bash).

    
por Steve Bennett 13.05.2013 / 03:50

3 respostas

2

Uma solução rápida e suja é executar isso:

bash -c '<paste commands here>'

Isso funciona mesmo se a pasta contiver caracteres de nova linha. Pode falhar se a pasta contiver aspas simples. Se você está ciente das regras de cotação de bash , você deve ser capaz de modificar este método para os comandos específicos que você está tentando executar.

    
por 13.05.2013 / 17:40
5

Você também pode usar algo como pbpaste | bash . E edit-and-execute-command ( \C-x\C-e ) também funciona com vários comandos.

Se alguns comandos exigirem permissões de root, você poderá usar sudo -v para validar o timestamp por 5 minutos.

    
por 13.05.2013 / 09:49
1

Eu faço esses cortes e pastas em meu editor de texto favorito, nomeado apropriadamente, onde posso procurar cuidadosamente por caracteres estranhos e garantir que estarei executando o que espero estar executando. Sou strongmente adverso ao recortar e colar trechos de código em um shell interativo: quem sabe quais comandos adicionais podem ser captados pelo & colar operação?

Quando o arquivo de texto tiver os comandos verificados salvos, eles poderão ser executados com o comando interno

source <filename>

    
por 13.05.2013 / 05:45