Como usar o comando Echo no Linux
- Dave McKay
@TheGurkha
- 29 de outubro de 2019, 8h00 EDT
O echo
o comando é perfeito para escrever texto formatado na janela do terminal. E não precisa ser texto estático. Ele pode incluir variáveis de shell, nomes de arquivos e diretórios. Você também pode redirecionar o eco para criar arquivos de texto e arquivos de log. Siga este guia simples para descobrir como.
Echo repete o que você diz para repetir
Zeus gostava de deixar o Monte Olimpo para se associar com belas ninfas. Em uma viagem, ele disse a uma ninfa da montanha chamada Echo para atacar sua esposa, Hera, se ela o seguisse. Hera veio procurar por Zeus, e Echo fez tudo que podia para manter Hera conversando. Finalmente, Hera perdeu a paciência e amaldiçoou a pobre Echo para que ela apenas repetisse as últimas palavras que outra pessoa havia dito. O que Hera fez com Zeus quando o alcançou é uma incógnita.
E isso, basicamente, é o que echo
tem na vida. Ele repete o que foi dito para repetir. Essa é uma função simples, mas vital. Sem echo
, não seríamos capazes de obter saída visível de scripts de shell, por exemplo.
Embora não carregada com uma infinidade de sinos e assobios, há uma boa chance de que echo
tenha alguns recursos que você não conhecia ou que você esqueceu.
echo? echo!
A maioria dos sistemas Linux oferece duas versões de echo
. O shell Bash tem seu próprio echo
integrado e também há uma versão executável binária de echo
.
Podemos ver as duas versões diferentes usando os seguintes comandos:
type echo
whereis echo
O type
nos diz se o comando que passamos para ele como seu argumento é um shell embutido, um executável binário, um alias ou uma função. Ele nos informa que echo
é um shell embutido.
Assim que encontrar uma resposta, type
para de procurar outras correspondências. Portanto, não nos diz se existem outros comandos com o mesmo nome presentes no sistema. Mas nos diz qual encontra primeiro. E esse é o que será usado por padrão quando emitirmos esse comando.
O comando whereis
procura o executável binário, o código-fonte e a página do manual para o comando que passamos para ele como seu parâmetro de linha de comando. Ele não procura por builtins de shell porque eles não têm um executável binário separado. Eles são parte integrante do executável Bash.
O comando whereis
relata que echo
é um executável binário localizado no diretório /bin
.
Para usar essa versão de echo
, você precisa chamá-la explicitamente fornecendo o caminho para o executável na linha de comando:
/bin/echo --version
O shell embutido não sabe o que o --version
o argumento da linha de comando é, ele apenas o repete na janela do terminal:
echo --version
Todos os exemplos mostrados aqui usam o padrão versão de echo
, no shell Bash.
Gravando texto no terminal
Para escrever uma string simples de texto na janela do terminal , digite echo
e a string que deseja exibir:
echo My name is Dave.
O texto é repetido para nós. Mas, conforme você experimenta, logo descobrirá que as coisas podem ficar um pouco mais complicadas. Veja este exemplo:
echo My name is Dave and I"m a geek.
A janela do terminal exibe um sinal >
e senta lá, esperando. Ctrl + C o levará de volta ao prompt de comando. O que aconteceu lá?
A aspa simples ou apóstrofo na palavra “I’m” confused echo
. Essa aspas simples é interpretada como o início de uma seção citada de texto. Como não detectou uma aspa simples de fechamento, echo
estava esperando por mais entradas. Esperava que outras entradas incluíssem as aspas simples ausentes.
Para incluir uma aspa simples em uma string, a solução mais simples é envolver toda a string entre aspas duplas:
echo "My name is Dave and I"m a geek."
Empacotando seu texto em aspas duplas é um bom conselho geral. Em scripts, ele delimita claramente os parâmetros que você está passando para echo
. Isso torna a leitura e depuração de scripts muito mais fácil.
E se você quiser incluir um caractere de aspas duplas em sua seqüência de texto?Isso é fácil, basta colocar uma barra invertida \
antes das aspas duplas (sem espaço entre elas).
echo "My name is Dave and I"m a \"geek.\""
Isso envolve a palavra “geek” entre aspas duplas para nós. Veremos mais desses caracteres com escape de barra invertida em breve.
Usando variáveis com echo
Até agora , estivemos escrevendo um texto predefinido na janela do terminal. Podemos usar variáveis com echo
para produzir uma saída mais dinâmica e com valores inseridos para nós pelo shell. pode definir uma variável simples com este comando:
my_name="Dave"
Uma variável chamada my_name
foi criada. Ela foi criada atribuiu o valor do texto “Dave”. Podemos usar o nome da variável nas strings que passamos para echo
, e o valor da variável será escrito na janela do terminal. Você deve colocar um cifrão $
antes do nome da variável para permitir que echo
saiba que é uma variável.
Há uma ressalva. Se você envolveu sua string entre aspas simples, echo
tratará tudo literalmente. Para que o valor da variável seja exibido, e não o nome da variável, use aspas duplas.
echo "My name is $my_name"
echo "My name is $my_name"
Com certa propriedade, vale a pena repetir:
- Usar aspas simples resulta no texto sendo escrito na janela do terminal de uma forma literal.
- Usar aspas duplas resulta em a variável sendo interpretada – também chamada de expansão de variável – e o valor é escrito na janela do terminal.
RELACIONADO: Como trabalhar com variáveis no Bash
Usando comandos com echo
Podemos usar um comando com echo
e incorporar sua saída na string que é escrita na janela do terminal. Devemos usar o cifrão $
como se o comando fosse uma variável e envolver todo o comando entre parênteses.
Vamos usar o comando de data . Uma dica é usar o comando sozinho antes de começar a usá-lo com echo
. Dessa forma, se houver algo errado com a sintaxe do seu comando, você o identifica e corrige antes de incluí-lo no comando echo
. Então, se o comando echo
não fizer o que você espera, você saberá que o problema deve ser com a sintaxe echo
porque você já provamos a sintaxe do comando.
Então, tente isso na janela do terminal:
date +%D
E, estamos satisfeitos que estamos obtendo o que esperamos do comando de data, iremos integrá-lo em um echo
comando:
echo "Today"s date is: $(date +%D)"
Observe que o comando está entre parênteses e o cifrão $
está imediatamente antes do primeiro parêntese.
Formatando texto com echo
A opção -e
(habilitar escapes de barra invertida) nos permite usar alguns caracteres de escape de barra invertida para alterar o layout do texto. Estes são os caracteres de escape com barra invertida que podemos usar:
Vamos usar alguns deles e ver o que fazem.
echo -e "This is a long line of text\nsplit across three lines\nwith\ttabs\ton\tthe\tthird\tline"
O texto é dividido em uma nova linha onde usamos os caracteres \n
e uma guia é inserida onde usamos os caracteres \t
.
echo -e "Here\vare\vvertical\vtabs"
Como os \n
caracteres de nova linha, uma guia vertical \v
move o texto para a linha abaixo. Mas, ao contrário dos \n
caracteres da nova linha, a \v
guia vertical não inicia a nova linha na coluna zero. Ele usa a coluna atual.
Os \b
caracteres de retrocesso movem o cursor um caractere para trás. Se houver mais texto a ser escrito no terminal, esse texto substituirá o caractere anterior.
echo -e "123\b4"
O “3” é substituído pelo ” 4 ”.
O \r
caractere de retorno de carro faz com que echo
retorne ao início da linha atual e para escreva qualquer texto adicional da coluna zero.
echo -e "123\r456"
Os caracteres “123” são substituídos pelos caracteres “456”.
Os \a
caractere de alerta produzirá um “bipe” audível. Ele usa o som de alerta padrão para o seu tema atual.
echo -e "Make a bleep\a"
O -n
A opção (sem nova linha) não é uma sequência com escape de barra invertida, mas afeta a aparência do layout do texto, por isso vamos discuti-la aqui. Ela evita que echo
adicione uma nova linha no final do texto. O prompt de comando aparece diretamente após o texto que é escrito na janela do terminal.
echo -n "no final newline"
Usando echo com arquivos e diretórios
Você pode usar echo
como uma classificação da versão do pobre de ls
. Suas opções são poucas quando você usa echo
dessa forma. Se você precisar de qualquer tipo de fidelidade ou controle fino, é melhor usar ls
e sua legião de opções.
Este comando lista todos os arquivos e diretórios no diretório atual:
echo *
Este comando lista todos os arquivos e diretórios no diretório atual cujo nome começa com “D”:
echo D*
Este comando lista todos os arquivos “.desktop” no diretório atual:
echo *.desktop
Sim. Isso não está jogando com echo
os pontos fortes. Use ls
.
Gravando em arquivos com echo
Podemos redirecionar a saída de echo
e criar arquivos de texto ou gravar em arquivos de texto existentes.
Se usarmos o operador de redirecionamento >
, o arquivo será criado se não existir. Se o arquivo existir, a saída de echo
será adicionada no início do arquivo, sobrescrevendo qualquer conteúdo anterior.
Se usarmos o >>
operador de redirecionamento, o arquivo será criado se não existir. A saída de echo
é adicionada ao final do arquivo e não substitui nenhum conteúdo existente do arquivo.
echo "Creating a new file." > sample.txt
echo "Adding to the file." >> sample.txt
cat sample.txt
Um novo arquivo é criado pelo primeiro comando e o texto é inserido afim disso. O segundo comando adiciona uma linha de texto ao final do arquivo. O comando cat
exibe o conteúdo do arquivo na janela do terminal.
E, claro, podemos incluir variáveis para adicionar algumas informações úteis ao nosso arquivo. Se o arquivo for um arquivo de log, podemos querer ter um timestamp adicionado a ele. Podemos fazer isso com o próximo comando.
Observe as aspas simples ao redor dos parâmetros do comando date
. Eles evitam que o espaço entre os parâmetros seja interpretado como o fim da lista de parâmetros. Eles garantem que os parâmetros sejam passados para date
corretamente.
echo "Logfile started: $(date +"%D %T")" > logfile.txt
cat logfile.txt
Nosso arquivo de registro foi criado para nós e cat
nos mostra que o carimbo de data e hora foram adicionados a ele.
RELACIONADO : O que são stdin, stdout e stderr no Linux?
Esse é o repertório da echo
Um comando simples, mas indispensável. Se não existisse, teríamos que inventá-lo.
As travessuras de Zeus fizeram bem, afinal.