Costumo usar ctrl+cpara copiar texto de algum aplicativo GUI e colá-lo no meu emulador de terminal (terminador), usando o botão direito do mouse no menu e colar. Às vezes, esqueço que a área de transferência contém várias linhas, que quando coladas no bash fazem com que cada linha seja "executada"
Existe alguma solução para impedir a colagem de várias linhas por completo?
bash
command-line
x11
clipboard
terminal-emulator
Martin Vegter
fonte
fonte
sleep 999999
e cole se estiver ok. o comando dormir não lê as linhas e elas são descartadas quando você pressionactrl+c
.bash
terá suporte para colar entre colchetes ,zsh
já possui via plug-in de terceiros .printf '\e[?2004h'
na maioria dos emuladores de terminal do tipo xterm, permite um modo de colar entre colchetes, onde o terminal coloca o texto colado entre parênteses, para que os aplicativos possam detectar onde a pasta começa e onde termina. O xterm também suporta outro modo em\e[?2005h
que todos os caracteres colados são prefixados^V
(entendidos por muitos aplicativos e pela disciplina tty line comolitteral-next
).Respostas:
Esta resposta não é a mais específica para a pergunta do usuário. Consulte a minha segunda resposta. Estou deixando isso aqui porque aborda a questão mais geral .
De acordo com os comentários a seu post original, você precisa (1) um emulador de terminal que suporta enquadradas colar e (2) correspondente suporte para o que está em execução no terminal, ou seja,
vim
,bash
,zsh
. Emuladores de terminal com suporte para pasta entre colchetes (lista a ser atualizada com base nos comentários desta postagem):xterm
- Desde a ??gnome-terminal
- Desde a ??putty
- desde 0,63 (data de lançamento de 06/08/2013)Aplicativos com suporte ao modo entre colchetes:
vim
zsh
Por isso
bash
, o StéphaneChazelas montou um script de shell para facilitar a detecção desse modo e tomar as ações apropriadas.Uma resposta mais específica - impedindo que as linhas sejam cortadas - não pode ser respondida sem o conhecimento do programa unix que está sendo executado quando você pressiona colar.
Um gerente da área de transferência talvez seja o que você precisa.
fonte
^V
comoliteral-next
Mas como é que a.^V
Entrar no fluxo de entrada da aplicação?bash
o prompt do readline o verá (e tratará como literal-next)). Se no modo ICANON, a disciplina de linha desse dispositivo tty interior vai tira-lo (desde que olnext
personagem é^V
), assim como quando você digitar Ctrl-V X manualmente ..^V
menos que você use oquoted paste
modo xterm (ativado pelo envio\e[?2005h
). Esseperl
script pode ser adaptado para remover tudo, exceto a primeira linha em uma pasta de várias linhas (embora não seja confiável para pastas grandes), mas como já é, já que cita a nova linha da linha de leitura (como se você tivesse pressionado Ctrl- V Ctrl-J), impede que as linhas sejam executadas (elas são apenas adicionadas ao buffer de edição e você ainda precisa pressionar Enter para executá-las).