Como colar comandos em um TTY?

21

Eu tenho alguns comandos bastante longos e caminhos de arquivo que copiei para a área de transferência e preciso executar em um TTY, mas os caminhos de arquivo são muito longos para digitar novamente e gostaria de apenas colá-los depois de $ ( Eu posso redigitar os comandos antes deles, então, existe uma maneira de fazer isso?

Então eu gostaria de executar um comando e tê-lo na próxima linha começando com $ colocando o texto copiado para a área de transferência da seguinte forma:

$ specialCommandToPasteText
$ pastedText

Estou executando o Ubuntu GNOME 16.04 com o GNOME 3.20.

    
por Great Uncle Bulgaria 19.06.2016 / 15:28
fonte

3 respostas

28

É simples, mas você precisa de uma ferramenta adicional.

  1. Instale o pacote xsel , que fornece um comando fácil para acessar a área de transferência:

    sudo apt-get install xsel
    
  2. Descubra quais $DISPLAY sua área de trabalho está usando. Geralmente, deve ser :0 , mas você pode verificar isso executando este comando em um emulador de terminal na área de trabalho da GUI:

    echo $DISPLAY
    

    Assumirei que a saída é :0 , substitua essa com a sua saída real nos seguintes comandos, se for diferente.

  3. Copie o comando que você gostaria de executar no TTY, por exemplo usando Ctrl + C .

  4. Mude para o TTY que você deseja usar, por exemplo to TTY1 usando Ctrl + Alt + F1 .
    Faça o login digitando seu nome de usuário e senha.

  5. Digite o comando completo que você deseja executar, mas substitua a parte que deseja inserir da área de transferência com $(DISPLAY=:0 xsel -ob) .

    Por exemplo, se você copiou uma grande lista de pacotes para instalar, você pode digitar isso no TTY:

    sudo apt-get update && sudo apt-get install $(DISPLAY=:0 xsel -ob)
    

    O snippet da área de transferência não precisa necessariamente estar no final do seu comando, mas pode aparecer em qualquer lugar.

Para simplificar ainda mais as coisas, vamos continuar com isso um pouco complicado DISPLAY=:0 xsel -ob para um script. Vou citar PASTE (porque paste já está sendo usado), mas você também pode chamar de forma diferente.

Para criar o arquivo de script em um local onde cada usuário possa executá-lo sem precisar especificar o caminho completo (eu recomendo /usr/local/bin para isso) e para torná-lo executável, basta executar esses dois comandos:

( echo '#!/bin/bash' && echo 'DISPLAY=:0 xsel -ob' ) | sudo tee /usr/local/bin/PASTE
sudo chmod +x /usr/bin/PASTE

Agora você pode simplesmente incorporar $(PASTE) em seus comandos em um TTY para inserir o conteúdo da área de transferência de sua área de trabalho.

    
por Byte Commander 19.06.2016 / 15:46
fonte
19

Pessoalmente, uso apenas arquivos de texto:

  1. No seu ambiente de área de trabalho, abra um terminal e

    echo "whatever long text you have copied" > file
    
  2. Gota para o tty e

    $(cat file)
    
por terdon 19.06.2016 / 16:14
fonte
4

Outra solução possível não listada acima envolve o uso de vim , colando e executando :!unix_command no modo de comando:

  1. copie os comandos e o caminho para a área de transferência
  2. abra vim , vá para o modo de comando Esc , digite o prompt :
  3. digite um estrondo ! e depois cole Ctrl + Deslocamento + V o comando que você copiou anteriormente no solicitar e executar
por Marcellinov 19.06.2016 / 16:12
fonte