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 fazer buscas no grupo por mensagens antigas.

Mensagens

  Ajuda
Avançado
Fw: [Dicas-L]SED HOWTO   Lista de mensagens  
Responder | Encaminhar Mensagem #430 de 30422 |
[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
}


Encaminhar Mensagem #430 de 30422 |
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 © 2009 Yahoo! do Brasil Internet Ltda. Todos os direitos reservados.
Política de Privacidade - Termos do Serviço - Diretrizes - Ajuda