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)
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
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.
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
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"
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