Entrar
Usuário novo? Cadastre-se
shell-script · Lista brasileira sobre Linux Shell Script
? Você já é um associado? Entre no Yahoo!

Dicas

Você sabia...
Você pode ordenar suas mensagens por data? Basta clicar no link da coluna data. Suas preferências serão lembradas para que você não precise fazer isso novamente sempre que retornar.

Mensagens

  Ajuda
Avançado
Fw: [Dicas-L]SED HOWTO   Lista de mensagens  
Responder Mensagem #430 de 31055 |
[ANUNCIO] funções ZZ


olás.

com o passar do tempo, fui criando uma coleção de pequenos
programinhas pra fazer coisinhas simples e economizar tempo.
acho que geralmente todo usuário de modo texto tem sua coleção
particular de robozinhos...

o que fiz foi transformar todos em funções do bash, enxugando ao
máximo, e os deixando genéricos.

toda função usa apenas variáveis locais, possui amostra de
sintaxe em caso de chamada errada e possui no nome o prefixo zz,
bem como descrição e exemplo de uso.

as variáveis globais do arquivo também têm o prefixo ZZ

assim, as funções ZZ não atrapalharão seu ambiente atual e não
sobreescreverão eventuais funções ou variáveis de mesmo nome.

incluído o arquivo na sua shell atual (com o comando source
ou .), basta:

prompt$ zz<TAB><TAB>

para ver todas as funções disponíveis. são 22 ao todo.
algumas fazem busca na internet então necessitam de conexão.



o arquivo .bashzz com as funções segue em anexo e também tem uma
cópia em:
http://www.conectiva.com.br/~aurelio/programas/bash/funcoesZZ
mais instruções estão no seu cabeçalho.

este é um primeiro anúncio público, embora estas funções já
estejam em uso interno aqui na conectiva a cerca de 6 meses.

críticas e sugestões de melhoria ou de funções novas são
EXTREMAMENTE bem-vindas.

é isso.


--
s·:(·>(·×^a]×http://www.verde666.org×^[:wq


Sex, 15 de Set de 2000 3:55 am

aurelio@...
Enviar e-mail Enviar e-mail

#!/bin/sh
# .bashzz
# também disponível em:
# http://www.conectiva.com.br/~aurelio/programas/bash/funcoesZZ
#
# DESCRIÇÃO:
# funções de uso geral para bash[12], que buscam informações em
# arquivos locais e dicionários/tradutores na internet
#
# INSTALAÇÃO:
# copie este arquivo para seu diretório "home" e inclua-o na sua shell
# [prompt]$ cp .bashzz ~
# [prompt]$ echo . ~/.bashzz >> ~/.bashrc
#
# AS FUNÇÕES:
# [prompt]$ zz<TAB><TAB>
# zzajuda zzdicdict zzkill zzsomahora
# zzbeep zzdicjarg zzlimpalixo zztrocaarquivos
# zzcalcula zzdictodos zzlinux2dos zztrocaextensao
# zzdicabl zzdolar zzramal zztrocapalavra
# zzdicbabel zzdominiopais zzrpmdisco
# zzdicbabi zzdos2linux zzrpmdono
#
# DEMONSTRAÇÃO:
# [prompt]$ zzdicabl estorvo
# estorvo (ô) s.m. cf. estorvo, do v. estorvar
# estorvor (ô) s.m.
# [prompt]$ zzdolar
# compra venda
# LIVRE 1,8360 1,8380
# PARALELO 1,8700 1,9400
# TURISMO 1,7800 1,8600
# EURO 1,5827 1,5868
# [prompt]$ zzdominiopais cx
# CX Christmas Island
# [prompt]$ zzrpmdisco /mnt/cdrom/conectiva/RPMS/vim-*
# 7Mb
# [prompt]$ zzsomahora 12:56 03:31
# 16:27
# [prompt]$ zzcalcula '11*(2^8+sqrt(16))+0.34'
# 2860.34
#
# OBSERVAÇÕES:
# - funções que fazem busca na internet necessitam que o pacote 'lynx'
# esteja instalado, ou redefina o $ZZDUMP
# - não copie e cole as funções com o mouse, pois alguns caracteres
# de controle deixarão de funcionar
#
# AGRADECIMENTOS:
# arnaldo c. de melo, wanderlei cavassin, ademar reis jr., eliphas levy,
# fernando roxo, osvaldo santana neto, rodrigo missiaggia, raul dias
#
# REGISTRO DE MUDANÇAS:
# 20000222 <aurelio@...> ** 1ª versão
# 20000424 <aurelio@...> ++ cores, beep, limpalixo, rpmverdono
# 20000504 <aurelio@...> ++ calcula, jpgi, gifi, trocapalavra
# ++ ajuda, echozz, forzz
# 20000515 <aurelio@...> ++ dominiopais, trocaextensao, kill
# -- jpgi, gifi: o identify já faz
# <> $* > "$@"
# 20000517 <aurelio@...> <> trocapalavra -> basename no $T
# 20000601 <aurelio@...> -- dicbabel: agora com session &:(
# 20000612 <aurelio@...> ++ celulartim, trocaarquivo
# 20000823 <aurelio@...> <> dicjarg: + palavras com
# espaços (valeu wanderlei)
# -- celulartim
# 20000914 <aurelio@...> ++ dicabl, dicdict, dicbabel
# <> nome oficial para .bashzz
# -- dicdic: página fora do ar
# 20000915 <aurelio@...> ++ mini-manual no cabeçalho
# ** 1º anúncio externo


ZZC=1 # colorir mensagens? 1 liga, 0 desliga

ZZDUMP='lynx -dump -nolist'
ZZSEDURL='s| |+|g;s|&|%26|g'
echozz(){ [ "$ZZC" = 1 ] && echo -ne '\033[1m' ; echo -e "$*\033[m" ; }



# ----------------------------------------------------------------------------
# mostra uma tela de ajuda com explicação e sintaxe de todas as funções
# obs.: tátátá, é xunxo. sou preguiçoso sim, e daí &:)
# não se esqueça de mudar o valor da variável $ZZARQ caso dê pau
# uso: zzajuda
# ----------------------------------------------------------------------------

zzajuda(){
local ZZARQ=$HOME/.bashzz # a rota completa e nome deste arquivo
sed -n '1s/.*/*** ajuda das funções ZZ para bash (Q sai)/p;2s/.*/ /p;/^$/,${
s_\(\<zz[a-z_2]*\>\)_\1_;s/^# //p;}' $ZZARQ | uniq | less -r
}



# #### U M A L I N H A / D I V E R S O S

# ----------------------------------------------------------------------------
# procura um ramal num arquivo local
# troque o /wb/ramais.txt pelo arquivo desejado
# uso: zzramal nome-do-cara
# ----------------------------------------------------------------------------

zzramal(){ [ "$1" ] && grep -i "$*" /wb/ramais.txt ; }


# ----------------------------------------------------------------------------
# restaura o 'beep' da máquina
# se por algum motivo o 'beep' da sua máquina parou de funcionar ou mudou a
# freqüência ou duração, essa função o retorna a seu estado original
# uso: zzbeep
# ----------------------------------------------------------------------------

zzbeep(){ echo -ne '\033[10;750]\033[11;100]' ; }


# ----------------------------------------------------------------------------
# retira linhas em branco e comentários
# para ver rapidamente quais opções estão ativas num arquivo de configuração
# ex.: cat /etc/inittab | zzlimpalixo
# ----------------------------------------------------------------------------

zzlimpalixo(){ sed '\§^[ ]*\(#\|$\)§d' | uniq ; }


# ----------------------------------------------------------------------------
# mata os processos que tenham o(s) padrão(ões) especificado(s) no nome do
# comando executado que lhe deu origem
# obs.: se quiser assassinar mesmo o processo, coloque a opção -9 no kill
# uso: zzkill padrão [padrão2 ...]
# ex.: zzkill netscape
# zzkill netsc soffice startx
# ----------------------------------------------------------------------------
zzkill(){ local C P ; for C in "$@" ; do
for P in `ps x --format pid,comm | sed -n "s/^ *\([0-9]\+\) [^ ]*$C.*/\1/p"`
do kill $P ; done ; done
}



# #### A R Q U I V O S (use por seu próprio risco)

# ----------------------------------------------------------------------------
# encontra o pacote que tem um arquivo ou bilioteca qualquer (demora)
# uso: zzrpmdono arquivo [dir-rpms]
# ex.: zzrpmdono libgd
# zzrpmdono lilo.conf /tmp/meus-pacotes/
# ----------------------------------------------------------------------------

zzrpmdono(){
[ "$1" ] || { echo 'uso: zzrpmdono arquivo [dir-rpms]'; return; }
local D=/mnt/cdrom/conectiva/RPMS ; [ "$2" ] && D="$2"
for A in $D/*.rpm ; do rpm -qlp $A | grep "$1" && echozz "@ $A" ; done
}


# ----------------------------------------------------------------------------
# conversão de arquivos texto entre DOS e linux
# obs.: o arquivo original é gravado como arquivo.{dos,linux}
# uso: zzdos2linux arquivo(s)
# zzlinux2dos arquivo(s)
# ----------------------------------------------------------------------------

zzdos2linux(){ local A ; for A in "$@" ; do cp "$A" "$A.dos" && chmod -x $A &&
sed 's/ $//' "$A.dos" > "$A" && echo "convertido $A" ; done ; }
zzlinux2dos(){ local A ; for A in "$@" ; do cp "$A" "$A.linux" &&
sed 's/$/ /' "$A.linux" > "$A" && echo "convertido $A" ; done ; }


# ----------------------------------------------------------------------------
# troca a extensão de um (ou vários) arquivo especificado
# uso: zztrocaextensao antiga nova arquivo(s)
# ex.: zztrocaextensao .doc .txt *
# ----------------------------------------------------------------------------

zztrocaextensao(){
[ "$3" ] || { echo 'uso: zztrocaextensao antiga nova arquivo(s)'; return; }
local A p1="$1" p2="$2" ; shift ; shift ; for A in "$@" ; do
[ "$A" != "${A%$p1}" ] && mv -v "$A" "${A%$p1}$p2" ; done
}


# ----------------------------------------------------------------------------
# troca o conteúdo de dois arquivos, mantendo suas permissões originais
# uso: zztrocaarquivos arquivo1 arquivo2
# ex.: zztrocaarquivos /etc/fstab.bak /etc/fstab
# ----------------------------------------------------------------------------

zztrocaarquivos(){
[ "$2" ] || { echo 'uso: zztrocaarquivos arquivo1 arquivo2'; return; }
local at="$HOME/.zztmp"; cat "$2" > $at; cat "$1" > "$2"; cat "$at" > "$1";
rm $at; echo "feito: $1 <-> $2"
}


# ----------------------------------------------------------------------------
# troca uma palavra por outra em um (ou vários) arquivo especificado
# obs.: se quiser que seja insensível a maiúsculas/minúsculas, apenas
# coloque o modificador 'i' logo após o modificador 'g' no comando sed
# desligado por padrão
# uso: zztrocapalavra antiga nova arquivo(s)
# ex.: zztrocapalavra excessão exceção *.txt
# ----------------------------------------------------------------------------

zztrocapalavra(){
[ "$3" ] || { echo 'uso: zztrocapalavra antiga nova arquivo(s)'; return; }
local A T p1="$1" p2="$2" ; shift ; shift ; for A in "$@" ; do T=/tmp/${A##*/}
cp $A $T && sed "s§$p1§$p2§g" $T > $A && rm -f $T ; echo "feito $A" ; done
}



# #### C Á L C U L O

# ----------------------------------------------------------------------------
# calculadora: + - / * ^ % # mais operadores, ver `man bc`
# uso: zzcalcula número operação número
# ex.: zzcalcula 2 / 3
# zzcalcula '2^2*(4-1)' # 2 ao quadrado vezes 4 menos 1
# ----------------------------------------------------------------------------

zzcalcula(){ [ "$1" ] && echo "scale=2;$*" | bc ; }


# ----------------------------------------------------------------------------
# soma o espaço em disco que um (ou mais) pacote ocupará quando instalado
# uso: zzrpmdisco pacote(s)
# ex.: zzrpmdisco /mnt/cdrom/conectiva/RPMS/vim-*
# ----------------------------------------------------------------------------

zzrpmdisco(){
[ "$1" ] || { echo 'uso: zzrpmdisco pacotes'; return; } ; local T B r
T=0; for r in $*; do B=`rpm -qp --queryformat %{SIZE} $r`; T=$((T+B)) ; done
T=$((T/1024)); [ $T -ge 1000 ] && echo "$(($T/1024))Mb" || echo ${T}Kb
}


# ----------------------------------------------------------------------------
# soma dois horários
# uso: zzsomahora horário1 horário2
# ex.: zzsomahora 12:37 08:45
# ----------------------------------------------------------------------------

zzsomahora(){
[ "$1" ] || { echo "uso: zzsomahora 12:37 08:45"; return; }
local h1 h2 m1 m2 H M
h1=${1%:*}; m1=${1#*:}; h2=${2%:*}; m2=${2#*:} # $h1:$m1 $h2:$m2
h1=${h1#0}; m1=${m1#0}; h2=${h2#0}; m2=${m2#0} # s/^0//
M=$((m1+m2)); H=$((h1+h2+M/60)); M=$((M%60)) # min, hrs, min_sobra
printf "%02d:%02d\n" $H $M
}



#-----------8<------------daqui pra baixo: FUNÇÕES QUE FAZEM BUSCA NA INTERNET
#-------------------------podem parar de funcionar se mudarem nas páginas


# #### C O T A Ç Ã O (internet)

# ----------------------------------------------------------------------------
# http://www.agrural.com.br
# busca a cotação do dia do dólar e do euro
# uso: zzdolar
# ----------------------------------------------------------------------------

zzdolar(){
local URL=http://www.agrural.com.br/indicadores/dolar.htm
echozz " compra venda" ; $ZZDUMP $URL |
sed -n 's/.*\<\([01],[0-9]\{4\}\)\>.*/\1/p' | sed 'N;s/\n/ /' |
sed '1s/^/LIVRE /;2s/^/PARALELO /;3s/^/TURISMO /;4s/^/EURO /'
}



# #### D O M Í N I O S (internet)

# ----------------------------------------------------------------------------
# http://www.professional.org/user-cgi/pse/domain.pl
# busca a descrição de um código de país da internet (.br, .ca etc)
# uso: zzdominiopais código
# ex.: zzdominiopais .br
# zzdominiopais org
# ----------------------------------------------------------------------------

zzdominiopais(){
[ "$1" ] || { echo 'uso: zzdominiopais [.]código'; return; }
local URL=http://www.professional.org/user-cgi/pse/domain.pl
local INI='The domain ' ; $ZZDUMP "$URL?domain=${1#.}" |
sed -n "/$INI/,$ {/$INI\|^ *$/d;s/^ */ /p;}"
}




# #### T R A D U T O R E S e D I C I O N Á R I O S (internet)

# ----------------------------------------------------------------------------
# http://babelfish.altavista.digital.com
# faz traduções de palavras/frases/textos em português e inglês
# uso: zzdicbabel [i] texto
# ex.: zzdicbabel my dog is green
# zzdicbabel i falcão detona!
# ----------------------------------------------------------------------------

zzdicbabel(){
[ "$1" ] || { echo 'uso: zzdicbabel [i] palavra(s)'; return; }
local URL='http://babelfish.altavista.digital.com/raging/translate.dyn'
local L=en_pt INI='^<textarea .* name=q>$' FIM='^<\/textarea>&nbsp;$'
[ "$1" = 'i' ] && { shift; L=pt_en; INI='^ *<textarea .* name=q>$'; }
local TXT=`echo "$*"| sed "$ZZSEDURL"`
lynx -source "$URL?urltext=$TXT&lp=$L" |
sed -n "/$INI/,/$FIM/{/$INI\|$FIM\|^$/d;s/^ */ /p;}"
}


# ----------------------------------------------------------------------------
# http://www.babylon.com
# tradução de palavras em inglês para um monte de idiomas:
# frncês, alemão, japonês, italiano, hebreu, espanhol, holandês e
# português. o padrão é o português, é claro.
# uso: zzdicbabi [idioma] palavra
# ex.: zzdicbabi hardcore
# zzdicbabi jap tree
# ----------------------------------------------------------------------------

zzdicbabi(){
[ "$1" ] || { echo -e "zzdicbabi [idioma] palavra
idioma = fre ger jap ita heb spa dut ptg" && return; }
local L=ptg ; [ "$2" ] && L=$1 && shift
$ZZDUMP "http://www.babylon.com/trans/bwt.cgi?$L$1" |
sed '1,4d;s/^ *//;/^\($\|_\+\)/d;s/^/ /'
}


# ----------------------------------------------------------------------------
# http://www.dictionary.com
# definições de palavras em inglês, com pesquisa em *vários* bancos de dados
# uso: zzdicdict palavra
# ex.: zzdicdict hardcore
# ----------------------------------------------------------------------------

zzdicdict(){
[ "$1" ] || { echo "zzdicdict palavra" && return; }
local URL='http://www.dictionary.com/cgi-bin/dict.pl'
local INI='^ *[0-9]\+ entr\(y\|ies\) found.$' FIM='^ *Try your search'
$ZZDUMP "$URL?db=*&term=$*" | sed -n "/$INI/,/$FIM/{/$INI\|$FIM/d;p;}"
}


## ----------------------------------------------------------------------------
## http://www.dicionario.com.br
## dicionário/tradutor de termos técnicos de informática em inglês
## uso: zzdicdic palavra(s)
## ex.: zzdicdic video card
## ----------------------------------------------------------------------------
#
#zzdicdic(){
#[ "$1" ] || { echo 'uso: zzdicdic palavra'; return; }
#local URL='http://www.dicionario.com.br' INI='Encontrad'
#local FIM='Copyright' TXT=`echo "$*"| sed "$ZZSEDURL"`;
#$ZZDUMP "$URL/cgi-bin/dic.pl?c=$TXT&p=Pesquisa&m=chave" #|
#sed -n "/$INI/,/$FIM/{/$INI\|$FIM/d;s/^ */ /p;}" | sed '1d;$d'
#}


# ----------------------------------------------------------------------------
# http://www.academia.org.br/vocabula.htm
# dicionário da ABL - academia brasileira de letras
# uso: zzdicabl palavra
# ex.: zzdicabl cabeça-de-
# ----------------------------------------------------------------------------

zzdicabl(){
[ "$1" ] || { echo 'uso: zzdicabl palavra'; return; }
local URL='http://www.mtec.com.br/cgi-bin/abl/volta_abl_org.asp'
echo "palavra=$*" | $ZZDUMP -post-data $URL | sed '1,5d;/^ *\./,$d;s/^ */ /'
}


# ----------------------------------------------------------------------------
# http://www.techfak.uni-bielefeld.de/~joern/jargon
# dicionários de jargões de informática, em inglês
# uso: zzdicjarg palavra
# ex.: zzdicjarg vi
# ----------------------------------------------------------------------------

zzdicjarg(){
[ "$1" ] || { echo 'uso: zzdicjarg palavra'; return; }
local TXT=`echo "$*" | sed 's/ /-/g'`
$ZZDUMP http://www.tuxedo.org/~esr/jargon/html/entry/$TXT.html |
sed '1,3d;/ \{5\}_\+/,$d;s/^ */ /'
}


# ----------------------------------------------------------------------------
# usa todas as funções de dicionário e tradução de uma vez
# uso: zzdictodos palavra
# ex.: zzdictodos Linux
# ----------------------------------------------------------------------------
zzdictodos(){
[ "$1" ] || { echo 'uso: zzdictodos palavra'; return; } ; local D
for D in babel babi jarg abl dict ; do echozz "zzdic$D:" ; zzdic$D $1 ; done
}


Mensagem #430 de 31055 |
Expandir mensagens Nome/E-mail Classificar por data

... From: "Rubens Queiroz de Almeida #200503# " <queiroz@...> To: <eriberto@...> Sent: Wednesday, September 13, 2000 1:30 AM Subject:...
Eriberto
eriberto@...
Enviar e-mail
13 de Set de 2000
6:44 pm

olás. com o passar do tempo, fui criando uma coleção de pequenos programinhas pra fazer coisinhas simples e economizar tempo. acho que geralmente todo...
(no author)
 
Enviar e-mail
15 de Set de 2000
3:52 am
Avançado

Copyright © 2010 Yahoo! do Brasil Internet Ltda. Todos os direitos reservados.
Política de Privacidade - Termos do Serviço - Diretrizes - Ajuda