Posso tratar tudo o que eu digitei depois de um comando como string raw?

0

Eu fiz um bash func para mim mesmo assim eu posso através de algumas palavras em um arquivo tree_hole, parece com isso em bashrc:

function th { echo -e "\n$@" >> /Users/zen1/zen/pythonstudy/tree_hole; }
export -f th

Assim, posso fazer th Tom, I like your new laptop para passar a frase inteira "Tom ..." para o final do arquivo tree_hole.

Mas há um problema. Esta função parece não converter toda a parte das variáveis em string raw. Então, th "hi, Tom" terá hi Tom em vez do pretendido "hi, Tom" , o " está ausente. Além disso, eu não posso digitar um único ' ou " ou ', que será mal interpretado pelo bash e requer mais entrada.

Então, existe uma maneira que eu possa digitar qualquer coisa seguindo um comando como string raw? Ou como devo melhorar minha função para que o problema especial " , ' 'possa ser resolvido?

    
por Zen 04.02.2015 / 10:26

1 resposta

3

O que você quer não é possível. Você não gosta do comportamento do shell, mas essa parte do comportamento do shell não pode ser alterada.

Acho que isso funcionaria melhor para você:

function th { { echo; cat; } >> /Users/zen1/zen/pythonstudy/tree_hole; }

Sua função seria chamada sem parâmetros. cat leria da entrada padrão e anexaria ao arquivo. Você pode digitar tudo o que o terminal permite (ou seja, sem problemas com " , ' , nova linha e assim por diante). Você terminaria a entrada com Ctrl - D .

    
por 04.02.2015 / 10:42