Ajuda a interpretar esse comando!

1. Ajuda a interpretar esse comando!

Wagner Loula Dias
wldnet1

(usa aptosid)

Enviado em 13/07/2016 - 10:55h

Bom dia gente, estou começando a estudar Linux um pouco a fundo! Estou com uma Bíblia Linux acho a mesma muito complexa por sinal mais é ótima. Vamos lá estudando um pouco o shell script eu crie um arquivo chamado teste.txt porém tem um comando estou usando metacarcteres como $(comando) ou `comando` lá vai me dúvida, quando executo o comando vi $(find /home/wagner/teste.txt | grep sdasdad) não era pra fazer um filtro do que está dentro do arquivo. Não sei se deu para entender o que eu quis expressar.

Desde já agradeço.


  


2. Ooopss

Tiago Martimiano de Siqueira Uruba
tiagodebian

(usa Debian)

Enviado em 13/07/2016 - 11:02h

Não sei se intendi muito bem,

Mas nesse caso eu usaria este comando

egrep -i sdasdad /home/wagner/teste.txt

abs


3. Re: Ajuda a interpretar esse comando!

marcio mendes mendes
conectadohost

(usa XUbuntu)

Enviado em 13/07/2016 - 11:29h

Olá,
mas se você quer trabalhar em cima do arquivo teste.txt não é necessário usar find
use o mais simples de todos cat

cat /home/wagner/teste.txt | grep sdasdad


Comando FIND normalmente é usado pra procurar ou localizar arquivos tipo o comando locate
normalmente uso FIND quando uma determinada pasta vai ser adicionada arquivos de forma automática
ai como não sei quais arquivos vão ser adicionados eu uso o FIND.


---> A arte de programar consiste na arte de organizar e dominar a complexidade.
---> Dijkstra <---


4. Re: Ajuda a interpretar esse comando!

thinomar
thinomar

(usa Linux Mint)

Enviado em 13/07/2016 - 11:38h

Pelo que entendi, você quer filtrar o termo "sdasdad" no arquivo /home/wagner/teste.txt.
O comando find não se encaixa no contexto, já que serve para localizar arquivos/diretórios. O que você precisa é executar apenas o grep, ou redirecionar a saída de algum comando que exiba conteúdo de um arquivo, como o cat. Exemplos:
Apenas grep (sintaxe: grep [opções] termo_buscado [arquivo]):
grep sdasdad /home/wagner/teste.txt 

cat redirecionado para grep:
cat /home/wagner/teste.txt | grep sdasdad 

Lembrando que o grep é case sensitive, ou seja, ele diferencia maiúsculas de minúsculas. Para ignorar o case, basta adicionar a opção -i ao grep, ficando assim:
grep -i sdasdad /home/wagner/teste.txt 

Para explorar outras opções do grep:
man grep 

--
-I've been talking to the main computer
-And...?
-It hates me


5. Re: Ajuda a interpretar esse comando!

Wagner Loula Dias
wldnet1

(usa aptosid)

Enviado em 14/07/2016 - 10:21h

thinomar escreveu:

Pelo que entendi, você quer filtrar o termo "sdasdad" no arquivo /home/wagner/teste.txt.
O comando find não se encaixa no contexto, já que serve para localizar arquivos/diretórios. O que você precisa é executar apenas o grep, ou redirecionar a saída de algum comando que exiba conteúdo de um arquivo, como o cat. Exemplos:
Apenas grep (sintaxe: grep [opções] termo_buscado [arquivo]):
grep sdasdad /home/wagner/teste.txt 

cat redirecionado para grep:
cat /home/wagner/teste.txt | grep sdasdad 

Lembrando que o grep é case sensitive, ou seja, ele diferencia maiúsculas de minúsculas. Para ignorar o case, basta adicionar a opção -i ao grep, ficando assim:
grep -i sdasdad /home/wagner/teste.txt 

Para explorar outras opções do grep:
man grep 

--
-I've been talking to the main computer
-And...?
-It hates me


Bom dia, consegui entender. Seguindo a sua linha de raciocínio é quase isso, vim $(find /home | grep "alguma coisa") vamos lá, o vim é o editor o cifrão ainda não sei porque usar o mesmo, o uso do parenteses é aritmética uso do pipe é a saída ou redirecionamento e alguma coisa seria no caso as iniciais de algum arquivo que você salvou e não sabe o nome do arquivo se você souber só as iniciais ele abre o arquivo. Esse negócio de shell é complexo mau comecei já dou de cara com isso. Obrigado a todos que me ajudaram.




6. Re: Ajuda a interpretar esse comando!

Marcelo Oliver
msoliver

(usa Debian)

Enviado em 14/07/2016 - 10:56h

wldnet1 escreveu:
Seguindo a sua linha de raciocínio é quase isso, vim $(find /home | grep "alguma coisa") vamos lá,
o vim é o editor OK
o cifrão ainda não sei porque usar o mesmo EXPLICADO ABAIXO
o uso do parenteses é aritmética ERRADO, EXPLICADO ABAIXO
uso do pipe é a saída ou redirecionamento e alguma coisa seria no caso as iniciais de algum arquivo que você salvou e não sabe o nome do arquivo se você souber só as iniciais ele abre o arquivo.
Esse negócio de shell é complexo mau comecei já dou de cara com isso. Obrigado a todos que me ajudaram.


Bom dia.
No caso do comando:
vim $(find /home | grep "alguma coisa")
E indicado ao SHELL que resolva o $(find /home | grep "alguma coisa")
e depois abra o editor vim com o resultado de $(find /home | grep "alguma coisa")
O "$" faz parte da SINTAXE do comando.
DESTRINCHANDO O COMANDO:
find /home => busca tudo no diretório /home (arquivos e diretórios)
|(pipe) => direciona para o comando seguinte
grep "alguma coisa" => filtra os arquivos/diretórios que tiverem a string "alguma coisa"
--------------------------------------------------------------------------
Neste caso o USO de PARÊNTESIS NãO é ARITMéTICA
Aritmética:
echo $((5*2))
10

Comparação:
((2>5)) && echo "VERDADE" || echo "MENTIRA"
MENTIRA

((2<5)) && echo "VERDADE" || echo "MENTIRA"
VERDADE

att
marcelo oliver





7. Re: Ajuda a interpretar esse comando!

Wagner Loula Dias
wldnet1

(usa aptosid)

Enviado em 14/07/2016 - 11:09h

msoliver escreveu:

wldnet1 escreveu:
Seguindo a sua linha de raciocínio é quase isso, vim $(find /home | grep "alguma coisa") vamos lá,
o vim é o editor OK
o cifrão ainda não sei porque usar o mesmo EXPLICADO ABAIXO
o uso do parenteses é aritmética ERRADO, EXPLICADO ABAIXO
uso do pipe é a saída ou redirecionamento e alguma coisa seria no caso as iniciais de algum arquivo que você salvou e não sabe o nome do arquivo se você souber só as iniciais ele abre o arquivo.
Esse negócio de shell é complexo mau comecei já dou de cara com isso. Obrigado a todos que me ajudaram.


Bom dia.
No caso do comando:
vim $(find /home | grep "alguma coisa")
E indicado ao SHELL que resolva o $(find /home | grep "alguma coisa")
e depois abra o editor vim com o resultado de $(find /home | grep "alguma coisa")
O "$" faz parte da SINTAXE do comando.
DESTRINCHANDO O COMANDO:
find /home => busca tudo no diretório /home (arquivos e diretórios)
|(pipe) => direciona para o comando seguinte
grep "alguma coisa" => filtra os arquivos/diretórios que tiverem a string "alguma coisa"
--------------------------------------------------------------------------
Neste caso o USO de PARÊNTESIS NãO é ARITMéTICA
Aritmética:
echo $((5*2))
10

Comparação:
((2>5)) && echo "VERDADE" || echo "MENTIRA"
MENTIRA

((2<5)) && echo "VERDADE" || echo "MENTIRA"
VERDADE

att
marcelo oliver



Falei aritmética entre aspas rsrs pelo o que percebi o que é executado primeiro é o que está entre parenteses e o resto vc está certinho obrigado por me ajudar você me esclareceu ainda mais.



8. Re: Ajuda a interpretar esse comando!

thinomar
thinomar

(usa Linux Mint)

Enviado em 14/07/2016 - 12:29h

(comando) serve, digamos, para abrir um subshell, como se fosse para rodar um comando dentro de um comando. Exemplo:
Exemplo 1:
var=ls

Exemplo 2:
var=$(ls)

No exemplo 1, você está atribuindo o valor ls a variável var. No exemplo 2 você está executando o comando ls (em um subshell) e jogando seu retorno dentro da variável var. Sendo assim, você executou um comando dentro de outro comando. O comando ls dentro do comando de atribuição de valor. Entendeu?
--
-I've been talking to the main computer
-And...?
-It hates me






Patrocínio

Site hospedado pelo provedor RedeHost.
Linux banner

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts