shell-script-pt
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

RE: [shell-script] Arquivo em bash


From: Julio Cezar Neves - DISB.O
Subject: RE: [shell-script] Arquivo em bash
Date: Thu, 3 Jan 2002 14:13:52 -0300


-----Original Message-----
From:   # aurelio marinho jargas [mailto:address@hidden]
Sent:   Thursday, January 03, 2002 12:52 PM
To:     address@hidden
Subject:        RE: [shell-script] Arquivo em bash

graaaaaaaaaande julio,

@ 3/1, Julio Cezar Neves - DISB.O:
> Pô Gente!!  dd é apelação!!!!!

hehehe, foi ele quem começou!!! num briga com eu.


> Já que tocaram neste assunto, vou mandar uma rotininha que usa dd e é
muito
> útil para os programadores de bourne e korn Shell . Ela serve para ler
> caracter a caracter. O pessoal do Linux não precisa dela, o bash2
incorpora
> uma opção no cmd read que faz este papel. Qual é mesmo esta opção
> Aurélio/Eliphas?

tá no próprio read, a opção é -n, para especificar o número de
caracteres a serem lidos.

-t timeout  e  -d delimiter  tb são show.


aê julião, então temos OUTRA solução pra o problema (bash2):

  read -n1 LETRA < ARQUIVO

Pois é Aurélio, pode também fazer:

getc `cat ARQUIVO`

As soluções são infinitas ...

[ ]s,
Julio


que tal um pegar-primeira-letra-HOWTO? &:)


> getc ()
> {
> stty raw
> eval $1="`dd bs=1 count=1 2>/dev/null | tr '\015' '\012'`"
> stty cooked
> }
>
>
> -----Original Message-----
> > > > > É o seguinte: como é que eu faço em bash para jogar a primeira
letra
> > > > > da primeira linha de um arquivo texto em uma variável??
> > > > LETRA=`sed -n '1 s/^\(.\).*$/\1/p'`
> > > > Essa é simples, vou deixar quem não sabe fazer descobrir sozinho ':)
> > > LETRA=`sed q ARQUIVO | cut -c1`
> > Vou me vingar:
> > LETRA=`awk -F"\n" '{print substr($1,1,1);exit;}' ARQUIVO`
> ah é, então tóma!
> LETRA=`dd if=ARQUIVO bs=1 count=1 2>&-`

-- 
http://verde666.org s/click/^a]/;^[:wq


Sair da lista: address@hidden
Banco Dados:   http://www.egroups.com/group/shell-script 

Seu uso do Yahoo! Grupos é sujeito às regras descritas em:
http://br.yahoo.com/info/utos.html 


From (no email address) Thu Jan 03 08:42:05 2002
Return-Path: <address@hidden>
X-Sender: address@hidden
X-Apparently-To: address@hidden
Received: (EGP: mail-8_0_1_3); 3 Jan 2002 16:42:05 -0000
Received: (qmail 7658 invoked from network); 3 Jan 2002 16:42:05 -0000
Received: from unknown (216.115.97.172)
  by m9.grp.snv.yahoo.com with QMQP; 3 Jan 2002 16:42:05 -0000
Received: from unknown (HELO perninha.conectiva.com.br) (200.250.58.156)
  by mta2.grp.snv.yahoo.com with SMTP; 3 Jan 2002 16:42:04 -0000
Received: from burns.conectiva (burns.conectiva [10.0.0.4])
        by perninha.conectiva.com.br (Postfix) with SMTP id 3DB4F38C3A
        for <address@hidden>; Thu,  3 Jan 2002 13:42:01 -0300 (EST)
Received: (qmail 16735 invoked by uid 0); 3 Jan 2002 16:38:39 -0000
Received: from verde.conectiva (10.0.2.168)
  by burns.conectiva with SMTP; 3 Jan 2002 16:38:39 -0000
Date: Thu, 3 Jan 2002 14:43:07 -0200 (BRST)
X-X-Sender:  <verde@verde.conectiva>
To: "'address@hidden'" <address@hidden>
Subject: Re: sobre o dd
In-Reply-To: <address@hidden>
Message-ID: <Pine.LNX.4.33L.0201031437180.3818-100000@verde.conectiva>
MIME-Version: 1.0
Content-Type: TEXT/PLAIN; charset=iso-8859-1
Content-Transfer-Encoding: 8BIT
From: # aurelio marinho jargas <address@hidden>
X-Yahoo-Group-Post: member; ug194321
X-Yahoo-Profile: verde6666

oi renato,

@ 3/1, Renato Silveira:
> Tá interessante esta "briguinha"  ;-) !

&:)

> Mas vcs "cobras" poderiam dar uma canja pra nos leigos é explicar pra que
> serve e como funciona o dd.

eu também sei quase nada sobre o dd, mas sei que o bichinho é
complicado. basicamente ele lê x bits de um arquivo e grava em
outro.

ele tem o if e of (infile e outfile) pra especificar os arquivos
de entrada e saída, o bs é o blocksize (tamanho da
leitura/escrita) e o count é quantas vezes vai rolar.

então o bs=1 count=1  lê de 1 em 1 bit, apenas uma vez.

se quisesse os 6 primeiros caracteres, poderia ser

bs=1 count=6
bs=2 count=3
bs=3 conut=2
bs=6 count=1

todos estes têm o mesmo efeito.

o padrão é if=/dev/stdin e of=/dev/stdout

isso é tudo que sei  &:)


> > eval $1="`dd bs=1 count=1 2>/dev/null | tr '\015' '\012'`"
> >   LETRA=`dd if=ARQUIVO bs=1 count=1 2>&-`

--
http://verde666.org s/click/^a]/;^[:wq



reply via email to

[Prev in Thread] Current Thread [Next in Thread]