echo - alguns exemplos de uso e linha de comando

Atualizado em: 23/07/2006



Sobre este documento

linhas de comando e scripts com uso do echo, incluindo tratamento de dados passados pelo pipe |.

Manipulando string de variável com echo.

echo é um comando (built-in) do bash, pode consultar no manual do bash ou no resumo.

  info echo
  man echo
  man bash

Tem muita aplicação em script, a diversidade de uso é grande, para facilitar, resolvi colocar aqui minhas colinhas com exemplos de comando que uso em script.

Resultados do echo vão para o console padrão (shell, console em uso), pode ser redirecionado para arquivo, ou passar com pipe "|" para outra apliação.

echo "Comando executado em: `date`" >> /tmp/arqlog.txt

echo `date` | cut -d" " -f2

Jul

Copia parcial do manual do Conectiva 10

         echo - mostra uma linha de texto.
  
  SINOPSE
         echo [-ne] [expressão a ser mostrada]
         echo {--help,--version}
  
  DESCRIÇÃO
         Esta documentação não é mais mantida e possivelmente pode ser imprecisa
         ou incompleta. A documentação Texinfo é agora a fonte em rigor.
  
         Esta página manual documenta a versão GNU do  echo.   Note  que  muitos
         interpretadores  de  comandos  têm  um comando embutido de mesmo nome e
         funcionamento similar.
  
         echo escreve cada expressão na a saída padrão, com um espaço entre elas
         e uma nova linha após a última.
  
     OPÇÕES
         -n     Suprime  nova linha ao final da última expressão a ser mostrada.
  
         -e     Habilita a interpretação de barra invertida como saída dos  car-
                acteres na expressão a ser mostrada:
                \a     alerta (sino)
                \b     deleta caracter anterior
                \c     suprime a nova linha
                \f     alimentação de linha
                \n     nova linha
                \r     retorno de linha
                \t     tabulação horizontal
                \v     tabulação vertical
                \\     barra invertida
                \nnn   o caracter o qual o código ASCII é nnn (octal)

mostrar mensagens no console, conteúdo de variáveis e etc..

Mostrar variáveis de ambiente.

Idioma do sistema.

  echo $LANG
  pt_BR

Resultado do comando

Cada comando executado em shell tem um codigo de retorno, útil em script para conferir se falhou ou foi executado com sucesso, este resultado fica armazenado na variavel $?, ele atualizado a cada comando, com echo pode salvar esta informação em arquivo. Codigos de retorno

   0 (zero) significa que o comando anterior foi executado com sucesso.
   1 (um) e qualquer valor diferente de zero ( != 0) indica que ocorreu algum
      erro.
   2  erro nos comandos do script, geralmete erro de sintaxe, digitação,
   127 = command not found, pra quando digita comando não existente.

Exemplos:

  [zago@faqcl10 tmp]$ touch meuteste
  [zago@faqcl10 tmp]$ echo $?
  0
  [zago@faqcl10 tmp]$ ls meusdoc
  ls: meusdoc: Arquivo ou diretório não encontrado
  [zago@faqcl10 tmp]$ echo $?
  1

Variáveis de trabalho e uso em scripts.

Manipulando string de variável com echo, comando (built-in) do bash

formato.

echo ${VARIAVEL:POSICAO:TAMANHO}

Criar a variável MNOME e exibir partes dela com "echo".

  MNOME="Antonio Francisco Zago"
  echo ${MNOME}
  Antonio Francisco Zago
  echo ${MNOME:0:4}
  Anto
  echo ${MNOME:0:10}
  Antonio Fr

echo ${MNOME:0:10} imprime 10 caracteres a partir da posição zero, ou seja os 10 primeiros, no exemplo com (0:4) pega os primeiros 4 caracteres da string.

  echo ${MNOME:5:10}
  io Francis

Informando somente uma posição, corta da posição inicial até a indicada.

  echo ${MNOME:5}
  io Francisco Zago

Obseve que não tem separadores, pega corrido da posição inicial até a final.

Informando faixa fora da string retorna vazio, não retorna erro, portanto fique atento ao tamanho da string, por exemplo

echo ${MNOME:45:54}

Os dados solicitados que estão fora da string, não retorna erro, simplesmente cai na linha seguinte em branco.

Pegar por palavra, use ferramenta que trabalha com delimitador, como cut, awk, sed e outras, no menu sobre scripts tem indicações de tutoriais sobre elas.

echo + cut - pegar os primeiros 10 caracteres.

  echo $MNOME | cut -c0-10
  Antonio Fr

Contar o numero de caracteres (bytes)

  MNOME="Antonio Francisco Zago"
  echo ${#MNOME}
  22

retorna 22 que é o tamanho da string, numero de caracteres.

datas, nomes de dia e mes

Alguns exemplos de linha de comando e resultados.

  echo $(LANG=pt_BR date '+%A')
  sexta
  
  echo `LANG=en_US date '+%A'`
  Friday
  
  MDIA=$(LANG=pt_BR date '+%A')
  echo $MDIA
  sábado
  
  echo `date '+%b'`
  Ago
  
  echo `LANG=en_US date '+%b'`
  Aug
  
  echo `date --date=20050101 +%d%m%Y`
  01012005
  
  echo `date --date=20060101 +%A`
  domingo
  
  
  Salvar a data em arquivo 
  
  echo `date` >> /tmp/arqlog.txt
  Sex Jul  7 00:13:44 BRT 2006
  
  Mensagem mais a data.
  
  echo "Comando executado em: `date`" >> /tmp/arqlog.txt
  Comando executado em: Sex Jul  7 00:13:44 BRT 2006

mensagens no console

Mensagem colorida.

echo -e "\033[38;43mAtenção! apagando arquivos...\033[0m"

Altere a mensagem, a cor altere nos valores 38;43 faça testes, tem diversas opções e alguns resultados interessante.

echo -e "\033[31;42mAtenção! apagando arquivos...\033[0m"

Mensagem colorida e piscando no cosole

echo -e "\033[5;31;42mAtenção! mensagem piscante...\033[0m"

cores no console e muitas dicas relacionadas ao console, tabelas de cores e exemplos de linha de comando.
ANSI Escape Sequences: Colours and Cursor Movement
http://www.64-bit.de/dokumentationen/howto/en/html/Bash-Prompt-HOWTO-5.html

Mensagem em destaque, com linhas em branco e tab

\n insere linha em branco, equivalente a enter.

\t insere um tab, equivalente a tecla tab

  echo -e "Antonio\tFrancisco\tZago\ttestetab"
  
  Antonio Francisco       Zago    testetab
  
  echo -e "Antonio\n\tFrancisco\tZago\n\n\ttestetab"
  
  Antonio
          Francisco       Zago
  
          testet

Quando redirecionado para arquivo salva no mesmo formato do console.

  echo -e "Antonio\n\tFrancisco\tZago\n\n\ttestetab"  >> arqlog.txt
  
  Antonio
          Francisco       Zago
  
          testet

Indicações

Página principal sobre script em geral (FAQ)
http://www.zago.eti.br/script/A-menu-scripts.html

Página principal deste site (FAQ)
http://www.zago.eti.br/menu.html