DESAFIO: imprimir a string “-n” usando apenas o comando “echo” do Bash [RESOLVIDO]

1. DESAFIO: imprimir a string “-n” usando apenas o comando “echo” do Bash [RESOLVIDO]

Paulo
paulo1205

(usa Ubuntu)

Enviado em 04/02/2023 - 02:00h

Sim, o desafio é esse mesmo: imprimir apenas a string -n (hífen seguido da letra N minúscula), sem nenhum caráter extra (visível, invisível ou de controle, nem mesmo quebra de linha) antes do hífen, após o N minúsculo ou entre eles, usando apenas uma invocação do comando interno echo do Bash.

Regras para soluções válidas:

    • não vale invocar nenhum outro comando interno ou externo, nem fazer qualquer tipo de pipeline;
    • o comando echo só pode ser usado uma vez (logo não vale imprimir somente o hífen com uma invocação do comando, e depois imprimir somente o n com uma segunda invocação);
    • é permitido usar substituição de variáveis e opções que o comando echo oferecer.

Ganha um like e um "melhor resposta" aquela que, além de correta, for a mais curta possível.

Data limite: 2023/02/09 00:00:00 UTC-3 (hora de Brasília).


Podem consultar na Internet. Se o fizerem, informem a fonte, por favor.


[NOTA: A ideia desse desafio não é minha; eu o vi na Internet. Não vou colocar a fonte antes do prazo final, no entanto, para não facilitar a resposta, mas eu fui autor de uma das respostas corretas.]


... Então Jesus afirmou de novo: “(...) eu vim para que tenham vida, e a tenham plenamente.” (João 10:7-10)


  


2. MELHOR RESPOSTA

Marcelo Oliver
msoliver

(usa Debian)

Enviado em 04/02/2023 - 17:18h

Boa tarde Paulo, bastante interessante o desafio....
Veja se é isso:
Com o '-' em octal
echo -en '\055n'
Ou
com o 'n' em hexa.
echo -en '-\x6E'
*o -e interpreta o octal/hexa e o n, não 'quebra a linha'.


______________________________________________________________________
Att.: Marcelo Oliver
______________________________________________________________________


3. Re: DESAFIO: imprimir a string “-n” usando apenas o comando “echo” do Bash

Perfil removido
removido

(usa Nenhuma)

Enviado em 04/02/2023 - 07:32h

Vocês conhecem a história do ECHO?
Meio viajada mas interessante:

O UNIX e o Echo.

Lá morava na terra de Nova Jersey a UNIX, uma bela donzela que os sábios viajavam muito para admirar. Deslumbrados com sua pureza, todos procuravam desposá-la, um por sua graça virginal, outro por sua polida civilidade, ainda outro por sua agilidade na execução de tarefas exigentes raramente realizáveis mesmo em terras muito mais ricas. Tão grande de coração e acolhedora da natureza ela era que a donzela UNIX adotou todos, exceto os seus pretendentes insuportavelmente ricos. Logo, muitos descendentes cresceram e prosperaram e se espalharam até os confins da Terra.

A própria natureza sorria e respondia à UNIX com mais entusiasmo do que a outros seres mortais. Pessoas mais humildes, que conheciam pouco sobre outras maneiras mais corteses, deliciavam-se com seu eco, tão preciso e cristalino que mal acreditavam que ela pudesse ser respondida pelas mesmas rochas e bosques que tanto confundiam seus próprios gritos nas terras selvagens. E a compatível UNIX atendeu com ecos perfeitos de tudo o que lhe foi perguntado. Quando um moleque impaciente perguntou à UNIX, 'Eco nada', a UNIX gentilmente abriu a boca, não ecoou nada e a fechou novamente.

'O que você quer dizer', perguntou o jovem, 'abrindo a boca assim? De agora em diante, nunca abra a boca quando você não tiver que repetir nada!' E a UNIX concordou e se submeteu.

'Mas eu quero uma performance perfeita, mesmo quando você não ecoar nada', implorou um jovem sensível, 'e nenhum eco pode vir de uma boca fechada.' Não querendo ofender nenhum dos dois, a UNIX concordou em dizer coisas diferentes para o jovem impaciente e o jovem inteligente. Ela chamou o nada sensível de '\n.'

No entanto, agora, quando ela dissesse '\n', ela realmente não estava dizendo nada, então ela teve que abrir a boca duas vezes, uma para dizer '\n' e outra para não dizer nada, e assim ela não agradou ao jovem inteligente, que disse imediatamente, 'O \n soa como um nada perfeito para mim, mas o segundo o arruína. Quero que você tome de volta um deles'. Assim, a UNIX, que não suportava ofender, concordou em desfazer alguns ecos e chamou isso de '\c'. Agora o jovem inteligente podia ouvir um eco perfeito do nada pedindo '\n' e '\c' juntos.

Mas dizem que ele morreu de excesso de notação antes mesmo de ouvir um nada.

-- Doug McIlroy


No man echo:

NOTE:  printf(1) is a preferred alternative, which does not have issues
outputting option-like strings.



4. Re: DESAFIO: imprimir a string “-n” usando apenas o comando “echo” do Bash

Perfil removido
removido

(usa Nenhuma)

Enviado em 04/02/2023 - 07:51h

No Zsh funciona:

% echo - -n
-n


Mas esse método não funciona no Bash e nem no Ksh93..

PS: Tá bom, eu achei uma resposta no internet, mas não vou dizer para não acabar com a graça... Boa sorte!


5. Re: DESAFIO: imprimir a string “-n” usando apenas o comando “echo” do Bash [RESOLVIDO]

Alan Souza
Alan-Souza

(usa Slackware)

Enviado em 04/02/2023 - 21:27h


echo -e '\0-n'


6. Re: DESAFIO: imprimir a string “-n” usando apenas o comando “echo” do Bash [RESOLVIDO]

Samuel Leonardo
SamL

(usa XUbuntu)

Enviado em 04/02/2023 - 23:28h

Vou entrar com a minha:
$ echo 'menos ene'
-n
Zueira pessoal, deixo essas pros profissas de verdade hahaha


https://nerdki.blogspot.com/ acessa ai, é grátis
Não gostou? O ícone da casinha é serventia do site!


7. Re: DESAFIO: imprimir a string “-n” usando apenas o comando “echo” do Bash [RESOLVIDO]

Paulo
paulo1205

(usa Ubuntu)

Enviado em 05/02/2023 - 00:33h

Alan-Souza escreveu:

echo -e '\0-n'


Infelizmente, essa está errada. Imprime um caráter nulo antes do texto e uma quebra de linha após ele.
echo -e '\0-n' | hexdump -C
00000000 00 2d 6e 0a |.-n.|
00000004



... Então Jesus afirmou de novo: “(...) eu vim para que tenham vida, e a tenham plenamente.” (João 10:7-10)


8. Re: DESAFIO: imprimir a string “-n” usando apenas o comando “echo” do Bash [RESOLVIDO]

Paulo
paulo1205

(usa Ubuntu)

Enviado em 05/02/2023 - 00:34h

msoliver escreveu:

Boa tarde Paulo, bastante interessante o desafio....
Veja se é isso:
Com o '-' em octal
echo -en '\055n'
Ou
com o 'n' em hexa.
echo -en '-\x6E'
*o -e interpreta o octal/hexa e o n, não 'quebra a linha'.


No caminho certo. Mas dá para ficar mais curto.


... Então Jesus afirmou de novo: “(...) eu vim para que tenham vida, e a tenham plenamente.” (João 10:7-10)


9. Re: DESAFIO: imprimir a string “-n” usando apenas o comando “echo” do Bash [RESOLVIDO]

Perfil removido
removido

(usa Nenhuma)

Enviado em 05/02/2023 - 07:44h


Colocar o nulo eu acho que não pode... Pelo menos no bash, se vc tentar fazer isso:

archhost:~ +$ a=$(echo -e '\0-n')
bash: warning: command substitution: ignored null byte in input
archhost:~ +$ echo $a
archhost:~ +$


O Bash trunca a cadeia de caracteres quando encontra um NULO.


10. Re: DESAFIO: imprimir a string “-n” usando apenas o comando “echo” do Bash [RESOLVIDO]

Renato Carneiro Pacheco
renato_pacheco

(usa Debian)

Enviado em 07/02/2023 - 22:38h


echo -en '\x2dn'


Esse foi o mais próximo que cheguei...


--
http://br.linkedin.com/in/renatocarneirop
http://www.facebook.com/renatocarneirop

"Não acredite no que eu digo, pois é a minha experiência e não a sua. Experimente, indague e busque." - Osho Rajneesh


11. Re: DESAFIO: imprimir a string “-n” usando apenas o comando “echo” do Bash [RESOLVIDO]

Paulo
paulo1205

(usa Ubuntu)

Enviado em 08/02/2023 - 04:01h

Dá para fazer com um caráter a menos.


... Então Jesus afirmou de novo: “(...) eu vim para que tenham vida, e a tenham plenamente.” (João 10:7-10)


12. Re: DESAFIO: imprimir a string “-n” usando apenas o comando “echo” do Bash [RESOLVIDO]

Marcelo Oliver
msoliver

(usa Debian)

Enviado em 08/02/2023 - 16:00h


paulo1205 escreveu:

Dá para fazer com um caráter a menos.


... Então Jesus afirmou de novo: “(...) eu vim para que tenham vida, e a tenham plenamente.” (João 10:7-10)

Com um a caractere a menos. . .
A opção que vejo, apesar de discordar, é:
shopt -s xpg_bash #17 Caracteres
echo -n '\x2dn' #Com "-" ou "n", em octal ou hexa
Ou ainda, um alias para o echo -en:
alias ecen='echo -en'



______________________________________________________________________
Att.: Marcelo Oliver
______________________________________________________________________




01 02



Patrocínio

Site hospedado pelo provedor RedeHost.
Linux banner

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts