Eu gostaria de produzir isso na conclusão do meu script bash.
/\_/\
( o.o )
> ^ <
Eu tentei o seguinte, mas todos retornam erros.
echo /\\_/\\\n\( o.o \)\n > ^ <
echo \/\\_\/\\\r\n( o.o )\r\n > ^ <
echo /\\_/\\\n\( o.o \)\n \> ^ <
Como faço para escapar desses caracteres para que o bash os renderize como uma string?
Nesse caso, eu usaria
cat
com um documento aqui (citado):Esta é a melhor maneira de garantir que a arte ASCII seja produzida da maneira pretendida, sem que o shell "atrapalhe" (expandindo variáveis etc., interpretando sequências de escape de barra invertida ou fazendo redirecionamentos, tubulação etc.)
Você também pode usar uma string de várias linhas com
printf
:Observe o uso de aspas simples em torno da string estática que queremos gerar. Usamos aspas simples para garantir que a arte ASCII não seja interpretada de forma alguma pelo shell. Observe também que a string que geramos é o segundo argumento para
printf
. O primeiro argumento paraprintf
é sempre uma única string de formatação entre aspas, onde as barras invertidas estão longe de serem inativas.Ou várias strings com
printf
(uma por linha):Ou, com
echo
(mas veja Por que printf é melhor que echo? ; basicamente, dependendo do shell e de suas configurações atuais, existem possíveis problemas com certas sequências de escape que podem não funcionar bem com desenhos ASCII),Mas, novamente, apenas a saída de um documento aqui com
cat
seria mais conveniente e direto, eu acho.Cite-o com
''
aspas simples ou duplas""
para evitar que<>()
sejam tomados como operadores. Então, se você quiser em uma linha, useecho -e
ou$' '
no Bash, marque as novas linhas como\n
e escape das barras invertidas com outra barra invertida. Ou melhor, useprintf
para evitar problemas com as diferenças entreecho
em vários ambientes.Então:
Veja também: