[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: [shell-script] Dúvida redirecionamento para alguns comandos.
From: |
Tiago Barcellos Peczenyj |
Subject: |
Re: [shell-script] Dúvida redirecionamento para alguns comandos. |
Date: |
Mon, 29 Oct 2007 19:10:44 -0300 |
Almir Almir...
Quando vc faz
comando1 | comando2
vc esta fazendo isso, só que sem escrever em disco
comando1 > arquivo
comando2 < arquivo
Ou seja, o pipe é vc conectar, com um TUBÃO, a saida padrão do
comando1 na entrada padrão do comando2. Para que isso funcione o
comando2 precisa *ler* os comandos pela entrada padrão.
ex: um comando que le da entrada padrão fica esperando que vc digite
alguma coisa quando vc não informa nenhum arquivo (como o tr, cat,
grep, awk, etc...)
$ cat
opa! eu posso escrever e o cat está lendo! e se eu der um enter?
opa! eu posso escrever e o cat está lendo! e se eu der um enter?
CARACORES! o cat escreveu de volta!!! (Ctrl+D pra sair)
$ ls | cat # isso funciona!
agora um comando como o cp ou o mv não leem nada da entrada padrão
$ cp
cp: missing file operand
Nesses casos vc tem 2 opções
- Veja no man se vc pode forçar que seja lida a entrada padrão através de um -
ex:
$ grep "lua" /etc/passwd - /proc/cpuinfo
nesse caso o grep vai ler primeiro o passwd, depois vai ler a entrada
padrão até um Ctrl+d e depois vai ler o cpuinfo.
Entretanto comandos como o kill, mv, rm... não faz sentido ler nada
pela entrada padrão. Vc precisa recriar o comando através de algum
artificio como o xargs!
tente isso:
ps -A | grep $1 | cut -f2 -d " " | xargs echo kill
sacou como funciona? então tira o echo e manda bala!!
On 10/29/07, almirgomesjr <address@hidden> wrote:
>
> Fala glr, primeiro quero dizer que este é meu primeiro post, cheguei a
> dar uma pesquisada, mas n consegui o q eu queria... Espero não esta
> perguntando besteira.
> Bem... vamos lá.
>
> #!/bin/bash
> #Script para matar processo chato.
> #
> #(sei que esta não é a melhor forma de se fazer isso, mas estou tentando
> #praticar o pouco conhecimento que tenho).
>
> ps -A | grep $1 | cut -f2 -d " " | kill
>
> Não consigo fazer o comando kill receber a saída do comando anterior.
> Tenho percebido que alguns comandos não permitem isso. Alguém poderia
> me explicar pq o grep, por exemplo, usa o stdout e o kill não faz
> isso? (motivos de segurança?)
>
> Desde já, agradeço.
>
>
--
Tiago B Peczenyj
Linux User #405772
http://peczenyj.blogspot.com/