sexta-feira, 11 de dezembro de 2015

Navegador Mozilla Firefox

-----BEGIN PGP SIGNED MESSAGE-----
Hash: SHA256



Jaboatão dos Guararapes, PE, 10 de dezembro de 2015.

====================
====================

Assunto: navegador Mozilla Firefox

====================
====================


Problema: ao executar o aplicativo, surgiu a seguinte mensagem:

Falhou ao executar o comando "/usr/bin/firefox-bin".

Falha ao executar processo filho "/usr/bin/firefox-bin" (Arquivo ou 
diretório não encontrado)


====================
====================


Executando o aplicativo via terminal de comandos:

Saída do comando </usr/local/firefox/firefox 2> log.txt>:

bash: /usr/local/firefox/firefox: Arquivo ou diretório não encontrado


====================
====================


Saída do comando <stat /usr/local/firefox/firefox>:



  File: “/usr/local/firefox/firefox”
  Size: 164264     Blocks: 328        IO Block: 4096   arquivo comum
Device: 803h/2051d Inode: 133456      Links: 1
Access: (0755/-rwxr-xr-x)  Uid: ( 1000/jamenson)   Gid: ( 1000/jamenson)
Access: 2015-12-10 23:37:31.555764913 -0300
Modify: 2015-10-29 20:34:00.000000000 -0300
Change: 2015-12-10 23:36:36.377659502 -0300
 Birth: -



====================
====================


O diretório de perfil padrão (aquele dentro do diretório de trabalho do 
usuário) não existe; foi deletado.

Como criar manualmente tal diretório?

Existe um gerenciador para criar automaticamente perfis.

Seria essa a causa da falha?

Em pesquisa na rede mundial de computadores, constatou-se que o perfil é 
automaticamente criado quando da primeira execução do aplicativo.


====================
====================


A solução do problema: baixar a versão 64 bits do aplicativo.  O 
problema é que estava-se executando a versão 32 bits em um sistema 
operacional de 64 bits.  Lamentavelmente a mensagem de erro emitida pelo 
aplicativo não dá qualquer pista no sentido da solução do problema. 
Deveria o aplicativo conter uma mensagem mais explicativa!


====================
====================


Jamenson Ferreira Espindula de Almeida Melo
Usuário GNU/Linux nº 166197
https://linuxcounter.net/cert/166197.png

Impressão digital da chave:
234D 1914 4224 7C53 BD13  6855 2AE0 25C0 08A8 6180



-----BEGIN PGP SIGNATURE-----
Version: GnuPG v2.0.26 (GNU/Linux)

iQEcBAEBCAAGBQJWalfeAAoJECrgJcAIqGGAiAoIAKhqLkg2D5qK66pOsjc8ZyEs
y+tJxTtSZYLe50zoYYFN01aXyIwc24H7vILShZErdTYv6Bh2NuTY9qtMTzT/EcBQ
nZJOwmJzDFxiGHo5HHJeCPNgn8egC6FGy+FoH/Nzgc1gLHQe820NsjVMS8KlZYW5
VPlFtD44om1r8XDow2dqBgOGeb8NwpmNzunanxRZKia7ePeZgjsssp3Oy2LEyzkI
mYadGM7QsuuGxcUSS/KM4AJeJc8YmTZGodrn8l5bwh6uDbpcg3445AYIhSt+K3db
Uka1lLm2yW3J37DYGvq47qUnvJdgk01UQ4i9+k1NVB5O8h1fPkvYQfnBRLLqucs=
=HJJj
-----END PGP SIGNATURE-----

segunda-feira, 25 de maio de 2015

35 Exemplos Práticos do Comando Find do Linux

-----BEGIN PGP SIGNED MESSAGE-----
Hash: SHA256




Jaboatão dos Guararapes, PE, Brasil, 25 de maio de 2015.

Assunto: tradução livre de artigo acerca do comando "find"

Abaixo está uma livre tradução da postagem de autoria de Ravi Saive
acerca do comando "find" do GNU/Linux.


- --------------- Início da Tradução ---------------



35 Exemplos Práticos do Comando Find do Linux

   por Ravi Saive - Atualização mais recente: 03 de janeiro de 2015.

Disponível em:
<http://www.tecmint.com/35-practical-examples-of-linux-find-command/>.
Acesso em: 24 maio 2015. 20:04:20 UTC.


   O comando "find" do GNU/Linux é um dos mais importantes e mais
   utilizados comandos em sistemas GNU/Linux.  O comando "find" é
   utilizado para procurar e localizar lista de arquivos e diretórios
   baseados em condições que você especifica para arquivos que conferem
   com os argumentos.  O comando "find" pode ser utilizado em uma
   variedade de condições como encontrar arquivos por permissões,
   usuários, grupos, tipo do arquivo, data, tamanho e outros critérios
   possíveis.



   Ao longo deste artigo se estará compartilhando experiências de
   dia-a-dia com o comando "find" do GNU/Linux e a utilização dele na
   forma de exemplos.  Neste artigo se mostrará os 35 exemplos de
   comandos "find" mais utilizados no GNU/Linux. O artigo foi divido em
   cinco partes, iniciando do básico até a utilização avançada do
   comando "find".
  
   1. Parte I: Comandos "find" básicos para encontrar arquivos por nomes
   2. Parte II: Encontre arquivos baseados nas permissões deles
   3. Parte III: Procure por arquivos baseado em proprietários e grupos
   4. Parte IV: Encontre arquivos e diretórios baseados em data e horário
   5. Parte V: Encontre arquivos e diretórios baseados em tamanho






Parte I: Comandos "find" básicos para encontrar arquivos por nomes




1. Encontre arquivos utilizando nome no diretório atual

   Encontre todos os arquivos cujos nomes são "tecmint.txt" no diretório
   de trabalho atual.

# find . -name tecmint.txt

./tecmint.txt


- ------------------------------
- ------------------------------


2. Encontre arquivos sob o diretório "home"

   Encontre todos os arquivos sob o diretório /home com nome
   "tecmint.txt".

# find /home -name tecmint.txt

/home/tecmint.txt


- ------------------------------
- ------------------------------


3. Encontre arquivos utilizando nome e ignorando a diferença entre
letras maiúsculas e minúsculas

   Encontre todos os arquivos cujos nomes sejam "tecmint.txt" e que
   contenham tanto letras maiúsculas quanto letras minúsculas no
   diretório /home.

# find /home -iname tecmint.txt

./tecmint.txt ./Tecmint.txt


- ------------------------------
- ------------------------------


4. Encontre diretórios utilizando nome

   Encontre todos os diretórios cujos nomes sejam "Tecmint" no diretório
   / (raiz).

# find / -type d -name Tecmint

/Tecmint


- ------------------------------
- ------------------------------


5. Encontre arquivos PHP utilizando nome

   Encontre todos os arquivos php cujos nomes sejam exatamente
   "tecmint.php"

# find . -type f -name tecmint.php

./tecmint.php


- ------------------------------
- ------------------------------


6. Encontre todos os arquivos PHP em um diretório

   Encontre todos os arquivos cujos nomes terminam com ".php" dentro do
   diretório de trabalho atual.

# find . -type f -name "*.php"

./tecmint.php ./login.php ./index.php


- ------------------------------
- ------------------------------



Parte II: Encontre arquivos baseados nas permissões deles




7. Encontre arquivos com permissões 777

   Encontre todos os arquivos cujas permissões sejam 777 no diretório de
   trabalho atual.

# find . -type f -perm 0777 -print


- ------------------------------
- ------------------------------


8. Encontre arquivos sem as permissões 777

   Encontre todos os arquivos cujas permissões não sejam 777 no
   diretório / (raiz).

# find / -type f ! -perm 777


- ------------------------------
- ------------------------------


9. Encontre arquivos SGID com permissões 644

   Encontre todos os arquivos com o bit SGID configurado e cujas
   permissões sejam 644.

# find / -perm 2644


- ------------------------------
- ------------------------------


10. Encontre arquivos com o bit Sticky ativo e com permissões 551

   Encontre todos os arquivos contendo o bit Sticky ativo e cujas
   permissões sejam 551.

# find / -perm 1551


- ------------------------------
- ------------------------------


11. Encontre arquivos SUID

   Encontre todos os arquivos cujos bits SUID estejam ativos.

# find / -perm /u=s


- ------------------------------
- ------------------------------


12. Encontre arquivos SGID

   Encontre todos os arquivos cujos bits SGID estejam ativos.

# find / -perm /g+s


- ------------------------------
- ------------------------------


13. Encontre arquivos somente leitura

   Encontre todos os arquivos com permissão de somente leitura.

# find / -perm /u=r


- ------------------------------
- ------------------------------


14. Encontre arquivos executáveis

   Encontre todos os arquivos com permissão de execução

# find / -perm /a=x


- ------------------------------
- ------------------------------


15. Encontre arquivos com permissão 777 e modifique para 644

   Encontre todos os arquivos cuja permissão seja 777 e utilize o
   comando "chmod" para reconfigurar a permissão para 644.

# find / -type f -perm 0777 -print -exec chmod 644 {} \;


- ------------------------------
- ------------------------------


16. Encontre diretórios com permissões 777 e modifique para 755

   Encontre todos os diretórios cuja permissão de acesso seja 777 e
   utilize o comando "chmod" para reconfigurar tal permissão para 755.

# find / -type d -perm 777 -print -exec chmod 755 {} \;


- ------------------------------
- ------------------------------


17. Encontre e remova um único arquivo

   Para encontrar um único arquivo chamado "tecmint.txt" e removê-lo.

# find . -type f -name "tecmint.txt" -exec rm -f {} \;


- ------------------------------
- ------------------------------


18. Encontre e remova múltiplos arquivos

   Para encontrar e remover múltiplos arquivos tais como ".txt" ou
   ".mp3", utilize:

# find . -type f -name "*.txt" -exec rm -f {} \;

OU

# find . -type f -name "*.mp3" -exec rm -f {} \;


- ------------------------------
- ------------------------------


19. Encontre todos os arquivos vazios

   Para encontrar todos os arquivos vazios sob certo caminho.

# find /tmp -type f -empty


- ------------------------------
- ------------------------------


20. Encontre todos os diretórios vazios

   Para encontrar todos os diretórios vazios sob certo caminho.

# find /tmp -type d -empty


- ------------------------------
- ------------------------------


21. Encontre todos os arquivos ocultos

   Para encontrar todos os arquivos ocultos, utilize o comando abaixo.

# find /tmp -type f -name ".*"


- ------------------------------
- ------------------------------



Parte III: Procure por arquivos baseado em proprietários e grupos




22. Encontre um único arquivo com base no proprietário desse arquivo

   Para encontrar todos ou um único arquivo chamado "tecmint.txt" sob o
   diretório / (raiz) e cujo proprietário desse arquivo seja o usuário
   "root".

# find / -user root -name tecmint.txt


- ------------------------------
- ------------------------------


23. Encontre todos os arquivos baseados no proprietário desses arquivos

   Para encontrar todos os arquivos pertencentes ao usuário "Tecmint"
   sob o diretório /home.

# find /home -user tecmint


- ------------------------------
- ------------------------------


24. Encontre todos os arquivos baseados no grupo desses arquivos

   Para encontrar todos os arquivos pertencentes ao grupo "Developer"
   sob o diretório /home.

# find /home -group developer


- ------------------------------
- ------------------------------


25. Encontre arquivos particulares de um usuário qualquer

   Para encontrar todos os arquivos do tipo ".txt" pertencentes ao
   usuário "Tecmint" sob o diretório /home.

# find /home -user tecmint -iname "*.txt"


- ------------------------------
- ------------------------------



Parte IV: Encontre arquivos e diretórios baseados em data e horário



26. Encontre todos os arquivos modificados nos últimos 50 dias

   Para encontrar todos os arquivos os quais foram modificados nos
   últimos 50 dias.

# find / -mtime 50


- ------------------------------
- ------------------------------


27. Encontre todos os arquivos acessados nos últimos 50 dias

   Para encontrar todos os arquivos os quais foram acessados nos últimos
   50 dias.

# find / -atime 50


- ------------------------------
- ------------------------------


28. Encontre todos os arquivos modificados nos últimos 50 até 100 dias

   Para encontrar todos os arquivos os quais foram modificados
   anteriormente aos últimos 50 dias, porém após os últimos 100 dias.

# find / -mtime +50 –mtime -100


- ------------------------------
- ------------------------------


29. Encontre arquivos modificados na última 1 hora

   Para encontrar todos os arquivos os quais foram modificados na última
   1 hora.

# find / -cmin -60


- ------------------------------
- ------------------------------


30. Encontre arquivos modificados na última 1 hora

   Para encontrar todos os arquivos os quais foram modificados na última
   1 hora.

# find / -mmin -60


- ------------------------------
- ------------------------------


31. Encontre arquivos acessados na última 1 hora

   Para encontrar todos os arquivos os quais foram acessados na última 1
   hora.

# find / -amin -60


- ------------------------------
- ------------------------------



Parte V: Encontre arquivos e diretórios baseados em tamanho



32. Encontre arquivos de tamanho de 50MB

   Para encontrar todos os arquivos cujo tamanho seja de 50MB, utilize:

# find / -size 50M


- ------------------------------
- ------------------------------


33. Encontre arquivos com tamanhos variando entre 50MB e 100MB

   Para encontrar todos os arquivos cujos tamanhos são maiores do que
   50MB e menores do que 100MB.

# find / -size +50M -size -100M


- ------------------------------
- ------------------------------


34. Encontre e delete arquivos com tamanho de 100MB

   Para encontrar todos os arquivos de tamanho de 100MB e deletar todos
   eles utilizando para isso um único comando.

# find / -size +100M -exec rm -rf {} \;


- ------------------------------
- ------------------------------


35. Encontre arquivos específicos e delete eles

   Para encontrar todos os arquivos cujos nomes terminam com ".mp3", com
   mais do que 10MB de tamanho e ainda deletá-los com um único comando.

# find / -type f -name *.mp3 -size +10M -exec rm {} \;


- ------------------------------
- ------------------------------


   É isso.  Este post termina aqui.  Em um próximo artigo serão
   discutidos mais aspectos sobre outros comandos do GNU/Linux em
   profundidade, com exemplos práticos.  Envie a sua opinião sobre este
   artigo utilizando a seção de comentários.


   Ravi Saive



Comentários:


   1. Ernesto diz:
       21 de dezembro de 2012 as 12:03 am
      
       O número 34 precisa ter um outro 0 no comando.  O comando está
       atualmente configurado para encontrar arquivos maiores do que
       10MB e não 100MB conforme a descrição declara.

       Resposta:
          + Ravi Saive diz:
            December 21, 2012 at 11:30 am @Ernesto,
           
            Obrigado, corrigido agora.

            Resposta:
               o Melvin diz:
                 March 23, 2013 at 8:06 pm
                
                 Ao tempo em que este post é bastante antigo.  Posso
                 fazer duas sugestões?
                
                 34) ao invés de executar "-exec rm -rf", a opção que
                 menos sobrecarrega a CPU seria adicionar "-delete" ao
                 comando "find".  Seria bom anotar e utilizar "-print"
                 primeiro para confirmar o que está sendo deletado ou
                 simplesmente o comando "find" entubado para o comando
                 "head" para confirmar alguns dos arquivos é um bom
                 passo antes de utilizar quaisquer comandos/opções
                 adicionais que poderiam deletar.
                
                 35) Bem parecido com o 34, uma vez que no comando está
                 faltando a opção de deleção.


   2. robert h. williams diz:
       24 de dezembro de 2012 as 11:41 am
      
       Olá! estou contente por ter encontrado o seu site e os artigos
       informativos.  Pergunta: na linha de nº 3 "find /home -iname
       tecmint.txt", qual é a maneira adequada de filtrar os resultados
       desse comando de forma que os resultados em letras maiúsculas
       sejam organizados separados dos resultados de letras minúsculas?
       ex.: ……. Techmint.com Techmint.com1 Techmint.com2 …….
       techmint.com techmint.com1 techmint.com2, etc., etc., etc.
      
       Obrigado outra vez por toda a boa informação.  Tenha um
       Excelente, Prospero Dia! —rob


   3. Mac diz:
       29 de janeiro de 2013 as 9:27 pm
      
       Você poderia explicar esta opção para mim?  Eu sou novato em
       linha de comando - ainda estou aprendendo.

       #15 # find / -type f -perm 0777 -print -exec chmod 644 {} \;
      
       os símbolos {} e o \
      
       Eu estou um bocado confuso.  Qualquer ajuda/conselho seria ótima.

       Resposta:
          + Ravi Saive diz:
            30 de janeiro de 2013 as 10:56 am
           
            @Mac, Por favor, junte a nós no Facebook em Linux Inside
            <https://www.facebook.com/pages/Linux-Inside/273296659355468>,
            e você receberá a resposta para isso.
           
          + Melvin diz:
            23 de março de 2013 as 8:13 pm
           
            As chaves são marcadores de lugar para o arquivo que o
            comando "find" encontra, e a barra invertida (\) é para que
            o shell não interprete o ponto e vírgula (;), o qual
            normalmente finaliza o comando.


   4. vijaya diz:
       02 de julho de 2013 as 1:50 pm
      
       Isso é realmente de muita ajuda para iniciantes obrigado ...


   5. Luis diz:
       14 de julho de 2013 as 12:03 am
      
       Como recuperar os arquivos eliminados com o comando:
      
       # find / -type f -name *.mp3 -size +10M -exec ls -l {} \;


   6. Joe diz:
       16 de setembro de 2013 as 8:10 pm
      
       No exemplo 22, a descrição deveria ser "sob o diretório raiz /"
       ao invés de "sob o diretório /root".

       Resposta:
          + Ravi Saive diz:
            17 de setembro de 2013 as 1:07 pm Obrigado, corrigido no
            artigo.


   7. PDFformat diz:
       09 de outubro de 2013 as 9:51 pm
      
       Vocês poderiam por favor publicar as postagens no formato PDF?
       Obrigado pelo post :)


   8. Siddharth diz:
       22 de outubro de 2013 as 2:45 am
      
       35. Encontrar todos os arquivos do tipo ".mp3" com mais do que
       10MB e deletá-los utilizando um único comando.
       # find / -type f -name *.mp3 -size +10M -exec ls -l {} \;
       — mas, não existe um comando para deletar os arquivos.

       1) Como listar arquivos no intervalo (A001 to A090)?  Suponha que
       exista arquivos de logs cujos nomes iniciam com log.A001 até
       log.A00nésimo ou pode ter mais.
      
       2) Listar os arquivos criados em uma certa data.
      
       3) Pesquisar o padrão de string "xyz" em todos os arquivos e
       contar quantas vezes a string está presente em todas as
       localizações.
      
       Por favor, socorro.
      
      
   9. karna diz:
       13 de novembro de 2013 as 3:01 pm
      
       No exemplo 35 penso que deveria constar "rm" ao invés de "ls -l"
       Resposta:
          + Ravi Saive diz:
            13 de novembro de 2013 as 5:31 pm Sim! deveria ser o comando
            "rm".  Obrigado, corrigido agora.
    
      
   10. ram diz:
       06 de dezembro de 2013 as 3:42 pm
      
       Localizar arquivos regulares do usuário “username” e savar como
       /tmp/backup

       find / -user username -type f -exec cp -a ……………….
      
       por favor complete isso ... necessário antes


   11. Anudeep S P diz:
       27 de janeiro de 2014 as 3:29 pm
      
       Como nós podemos encontrar os arquivos dentro de um diretório com
       respeito ao intervalo de datas e removê-los? Exemplo: eu quero
       remover os arquivos criados entre “1º Jan 2012 8AM” e “5 Jan 2014
       10PM”

          + Ravi Saive diz:
            27 de janeiro de 2014 as 5:00 pm
           
            Anu, por favor poste as suas questões na nossa recém
            inaugurada seção "TecMint Ask" para respostas instantâneas
            pelos nossos especialistas.


   12. ngapakerz diz:
       24 de fevereiro de 2014 as 2:53 pm
      
       como eu utilizo estes dois como um único comando?

       find -name ‘*.jpg’ -mtime +7 -exec jpegoptim {} \;
       find -name ‘*.jpg’ -mtime +7 -exec chown www-data:www-data {} \;

       obrigado :)



   13. Rondinelli diz:
       09 de março de 2014 as 7:44 pm
      
       Incrível! muito útil!


   14. Dinkar diz:
       22 de abril de 2014 as 10:19 am
      
       Como deletar um arquivo em um diretório o qual foi criado há 13
       meses?


   15. sameer diz:
       04 de maio de 2014 as 7:00 am
      
       esta é uma página muito útil e eu utilizei muitos destes comandos
       após ver a sua página. muito obrigado por tal maravilhosa coleção
       de comandos com exemplos. Tudo de bom para você


   16. anonymous diz:
       09 de maio de 2014 as 7:07 am
      
       Este é um incrivelmente útil bloco de construção, obrigado!!


   17. snarker diz:
       03 de junho de 2014 as 7:19 pm
      
       Você sabe, com HTML você pode converter uma tabela de conteúdos
       em vínculos que levam o leitor direto a cada seção ...
       simplesmente dizendo.


   18. Sanjay diz:
       13 de junho de 2014 as 12:31 pm
      
       isto é muito útil para mim dado que eu sou novo em comandos de
       shell. obrigado por postar artigos ...


   19. Pravin shegokar diz:
       08 de julho de 2014 as 8:29 pm
      
       Alô, senhor.  Eu estou trabalhando em projeto de migração.  Eu
       tenho uma breve questão senhor: como migrar todos os dados do
       diretório "home" dos usuários para um novo sistema linux
       utilizando shell script?  Você vai me fornecer qualquer script ou
       ideia para isso?  Obrigado em antecipação.

          + Ravi Saive diz:
            10 de julho de 2014 as 4:00 pm
           
            Caro Pravin, Nós certamente fornecemos para você instruções
            passo-a-passo sobre como migrar todos os usuários do Linux
            de um servidor para um outro servidor utilizando alguns
            truques de linha de comando. Até lá fique ligado nas
            atualizações.


   20. Andre diz:
       02 de agosto de 2014 as 12:49 pm
      
       Encontrar todos os arquivos maiores do que 20M no diretório
       "home" e exibi-los ordenados:

       find /home -type f -size +20M -exec du -h {} \; | sort -h


   21. Bharath diz:
       20 de agosto de 2014 as 5:16 pm
      
       Eu quero deletar os arquivos e imprimir para o arquivo de saída
       com data, hora e tamanho.

       Resposta
          + Ravi Saive diz:
            28 de agosto de 2014 as 3:16 pm
           
            Bharath, eu entendo que você deveria tentar este comando:

# find /your-path -maxdepth 1 -type f -name "*.txt" >
# filestobedeleted.txt


   22. Jec diz:
       21 de outubro de 2014 as 6:43 pm
      
       Olá senhor, Existe uma maneira de utilizar "find"/"locate" em uma
       lista?  Exemplo:

       while read line do if locate “$line” then echo “Y: $line” else
       echo “N: $line” fi done < $1
      
       no meu caso, isso sempre retorna N: (line).  Eu entendo que o
       comando "locate" lê a minha variável como $line literalmente. 
       Também tentei utilizar o comando "find" aqui, mas com o mesmo
       resultado. Algum ensinamento?  Obrigado em antecipação.  :)

       Resposta
          + munaf diz:
            30 de novembro de 2014 as 1:25 pm
           
            Como descobrir o tamanho de um arquivo qualquer utilizando o
            comando "find"


   23. Farid Afshar diz:
       02 de dezembro de 2014 as 6:22 am
      
       Alô senhor, Eu estou tentando encontrar arquivos no GNU/Linux
       utilizando o comando "find".  Eu preciso procurar em um sistema
       de arquivos montado nfs para listar todos os arquivos
       pertencentes a um certo usuário. Exemplo:

       drwxrwxr-x 2 afsharf staff 126976 Oct 9 14:20 trevor/ -rw-rw-r– 1
       afsharf staff 22947599 Oct 9 08:52 troj.out -rwxr-xr-x 1 camachoe
       staff 11752 Jun 25 2013 runtnav_beta_h* -rwxr-xr-x 1 camachoe
       staff 11648 Jun 25 2013 runtnav_h*
      
       Eu gostaria de encontrar arquivos pertencentes a “camachoe” no
       diretório atual e sub-diretórios.  Qualquer ideia de como fazer
       isso utilizando o comando "find"?  Esse é um sistema de arquivos
       montado nfs. Obrigado em antecipação.

       Resposta
          + Ravi Saive diz:
            02 de dezembro de 2014 as 4:30 pm @Farid,
           
            find . -user camachoe -ls


   24. Rajkumar Yadav diz:
       11 de dezembro de 2014 as 1:49 pm
      
       Grandes artigos Obrigado!


   25. Sunny diz:
       22 de janeiro de 2015 as 6:07 pm
      
       Oi, Como ver os arquivos em uma data particular?  Suponha que eu
       queira ver arquivos de 18 de janeiro de 2015 entre todos os
       arquivos.  Eu tentei +mtime, mas não está funcionando

       find . -newermt 2015-01-18 -ls lrt
      
       o comando acima não está funcionando para mim.  Por favor, sugira
       algo.

       Resposta
          + Ravi Saive diz:
            23 de janeiro de 2015 as 5:55 pm @Sunny,
           
            Tente isto:

# find . -type f -newerat 2015-01-18 ! -newerat 2015-01-18


   26. Anup diz:
       11 de fevereiro de 2015 as 5:49 pm
      
       Boa informação Tudo em um só lugar obrigado


   27. Iv diz:
       18 de fevereiro de 2015 as 2:35 pm
      
       Oi. Grande artigo. Como encontrar arquivos executáveis no RHEL4 e
       Solaris 9 e 10? Eu tentei com:

       find / -executable -type f and find / -perm /u=x,g=x,o=x -type f
      
       mas isso funcionou apenas no RHEL6. Obrigado!


   28. md shamim diz:
       27 de fevereiro de 2015 as 12:30 pm
      
       Eu tenho de mover um diretório dentro do qual existem logs.  Cada
       diretório criado como 26022015 e eu quero mover o diretório,
       exceto os 3 dias mais recentes.


   29. Sandip Kasar diz:
       07 de março de 2015 as 12:18 pm
      
       Eu estou muito contente por você ter descrito o comando "find"
       com exemplos.  Obrigado mais uma vez e Mantenha postados os
       assuntos relacionados com GNU/Linux.


   30. Nagarjuna Reddy diz:
       13 de março de 2015 as 12:01 pm
      
       Muito Muito boa informação Comandos Find.


   31. sunny desouza diz:
       24 de abril de 2015 as 1:21 am
      
       Caros Tecmints, Eu entendo que isso funciona para encontrar um
       dos arquivos e para aplicar a ação executar sobre tais arquivos:

       $ find / -name “error_*.txt” -exec ls -lrathi ‘{}’ “;”
      
       porém, vocês podem fornecer exemplos acerca de múltiplos
       arquivos?  Como nós fazemos?
      
       Exemplos: – se existem “find_*.txt” “list_*.csv” e mais


   32. sunny desouza diz:
       25 de abril de 2015 as 8:48 am
      
       questão rápida :- Como nós encontramos um arquivo e então nós o
       renomeamos (mv) esse mesmo arquivo com um único comando? A opção
       -exec funciona com o mv? Algum exemplo?
      
       Resposta:
          + Ravi Saive diz:
            25 de abril de 2015 as 10:44 am @Sunny, Sim, você pode
            utilizar ambos os comandos em um único, assim:

# find / -name file; mv file path or newfilename




- --------------- Fim da Tradução ---------------



Jamenson Ferreira Espindula de Almeida Melo
Usuário GNU/Linux nº 166197
https://linuxcounter.net/cert/166197.png

Impressão digital da chave:
234D 1914 4224 7C53 BD13  6855 2AE0 25C0 08A8 6180



-----BEGIN PGP SIGNATURE-----
Version: GnuPG v2.0.26 (GNU/Linux)

iQEcBAEBCAAGBQJVYwARAAoJECrgJcAIqGGAP5YH/j0Rtz9AB8CW2USrXD5WJvUl
I15xq+PaJPLuucgtJEVMlyKP/yp6tQMB3BvO0IeZEw4Ibcv/TIvS4wp6s1bSI5CB
4h4SAgmKnNXBimwiPvggzbcS77b1Tc42zxkfWahc5lgBUzxqQ+WTnxXULl7DAxT3
TmDVl4yxtoUCJdG6muRMfWdBrbpj96w7uJjcFFmBjF5YH2Lq+9+r4hAT4/K8VkcI
OiYAn8Xlguz7XBlY4NMOhWwXVD1331TcCeHkLm73lqljvE0+OxOIffdjI3/P+nVM
6DtGU4ajASlAIRBp3bE3VztU1/5qynkEiJde5inBqaxm5JXpzb5khFbu/yLjbxw=
=0OB6
-----END PGP SIGNATURE-----

quinta-feira, 21 de maio de 2015

10 Incríveis e Misteriosos Usos do Símbolo ou Operador (!) nos Comandos Linux

-----BEGIN PGP SIGNED MESSAGE-----
Hash: SHA256



Jaboatão dos Guararapes, PE, Brasil, 21 de maio de 2015.

Eis uma tradução livre do artigo divulgado por Avishek Kumar.
Disponível em:
<http://www.tecmint.com/mysterious-uses-of-symbol-or-operator-in-linux-commands/>.
Acesso em: 21 maio 2015.


10 Incríveis e Misteriosos Usos do Símbolo ou Operador (!) nos Comandos
Linux

   por Avishek Kumar
   Atualização mais recente: 18 maio 2015


   O símbolo ou operador "!" no Linux pode ser utilizado como operador
   Lógico de Negação bem como para recuperar comandos do histórico com
   truques ou para executar comandos previamente executados com
   modificação.   Todos os comandos abaixo foram verificados
   explicitamente no Shell bash.   Apesar de eu não ter verificado, mas
   a maior parte deles não funcionará em outro shell. Aqui vamos nós
   para os incríveis e misteriosos usos do símbolo ou operador "!" nos
   comandos Linux.
  

1. Execute um comando a partir do histórico pelo número do comando.

   Você pode não estar consciente do fato de que você pode executar um
   comando a partir do seu histórico de comandos (comandos já/antes
   executados).   Para começar, primeiro encontre o número do comando
   executando o comando "history".

$ history

   Agora execute um comando a partir do histórico simplesmente pelo
   número pelo qual o comando é listado, na saída do comando "history".  
   Digamos execute um comando que aparece no número 1551 na saída do
   comando "history".

$ !1551

   E, o comando é executado (o comando "top" no caso), o qual foi
   listado no número 1551.   Essa forma de recuperar um comando já
   executado é muito útil especialmente no caso daqueles comandos que
   são longos.   Você simplesmente precisa chamá-lo utilizando ![Número
   no qual o comando aparece na saída do comando "history"].



- ------------------------------
- ------------------------------


2. Execute um comando previamente executado como o 2º comando mais
recente, 7º comando mais recente, etc.

   Você pode executar aqueles comandos que você executou previamente
   pela sequência de execução deles, sendo que o comando executado mais
   recentemente será representado como -1; o segundo mais recente como
   -2; o sétimo mais recente como -7.
  
   Primeiro execute o comando "history" para obter uma lista dos
   comandos executados mais recentemente.   É obrigatório executar o
   comando "history", de forma que você pode ter certeza de que não
   existe um comando como o comando "rm arquivo" e outros simplesmente
   para ter certeza de que você não está executando qualquer comando
   perigoso acidentalmente.   E então verifique o Sexto comando mais
   recente, o Oitavo comando mais recente e o Décimo comando mais
   recente.

$ history
$ !-6
$ !-8
$ !-10


- ------------------------------
- ------------------------------


3. Passe argumentos do comando mais recente que nós executamos para o
novo comando sem redigitar

   Eu preciso listar o conteúdo do diretório
   "/home/$USER/Binary/firefox", então eu disparo.

$ ls /home/$USER/Binary/firefox

   Então eu percebo que eu deveria ter disparado "ls -l" para ver qual
   arquivo é executável?   Então eu deveria digitar o comando inteiro
   outra vez!   Não, eu não preciso.   Eu preciso simplesmente carregar
   o último argumento para este novo comando assim:

$ ls -l !$

   Aqui "!$" carregará argumentos passados no último comando para esse
   novo comando.


- ------------------------------
- ------------------------------


4. Como manipular dois ou mais argumentos utilizando (!)

   Digamos que eu criei um arquivo de texto chamado "1.txt" na Área de
   Trabalho.

$ touch /home/avi/Desktop/1.txt

   e então eu copio ele para "/home/avi/Downloads" utilizando o caminho
   completo em ambos os lados com o comando "cp".

$ cp /home/avi/Desktop/1.txt /home/avi/downloads

   Agora nós passamos dois argumentos com o comando "cp".   O primeiro
   argumento é "/home/avi/Desktop/1.txt" e o segundo é
   "/home/avi/downloads".   Vamos manipulá-los diferentemente,
   simplesmente execute "echo [argumentos]" para imprimir ambos os
   argumentos diferentemente.

$ echo “1st Argument is : !^”
$ echo “2nd Argument is : !cp:2”

   Perceba que o 1º argumento pode ser impresso como “!^” e o restante
   os argumentos podem ser impressos executando
   “![Name_of_Command]:[Number_of_argument]”.
  
   No exemplo acima, o primeiro comando foi "cp" e o 2º argumento foi
   necessário para se imprimir.   Dado “!cp:2”, se qualquer comando,
   digamos "xyz", for executado com 5 argumentos e você precisa do 4º
   argumento, você pode utilizar “!xyz:4”, e utilizá-lo como quiser.  
   Todos os argumentos podem ser acessados via “!*”.


- ------------------------------
- ------------------------------


5. Execute o comando mais recente na base de palavras-chave

   Nós podemos executar o comando mais recentemente executado na base de
   palavras-chave.   Podemos entender as palavras-chave conforme a
   seguir:

$ ls /home > /dev/null                                          [Command 1]
$ ls -l /home/avi/Desktop > /dev/null                           [Command 2]
$ ls -la /home/avi/Downloads > /dev/null                        [Command 3]
$ ls -lA /usr/bin > /dev/null                                   [Command 4]

   Aqui nós utilizamos o mesmo comando (ls), mas com diferentes
   modificadores e para diferentes diretórios.   Além disso, nós
   enviamos a saída de cada comando para "/dev/null", uma vez que não
   vamos lidar com a saída do comando, o que também mantém o console
   limpo.
  
   Agora, execute o comando mais recentemente executado na base de
   palavras-chave.

$ ! ls                                  [Command 1]
$ ! ls -l                               [Command 2]
$ ! ls -la                              [Command 3]
$ ! ls -lA                              [Command 4]

   Verifique a saída e você ficará atônito, pois você está executando
   comandos já executados simplesmente por palavras-chave do "ls".


- ------------------------------
- ------------------------------


6. O poder do Operador !!

   Você pode executar/alterar o seu comando mais recentemente executado
   utilizando (!!).   Isso chamará o comando mais recentemente executado
   com alterações/modificações no comando atual.   Vamos te mostrar o
   cenário.
  
   Ontem eu executei um script de uma linha para obter o meu número IP
   privado, então eu executei:

$ ip addr show | grep inet | grep -v 'inet6'| grep -v '127.0.0.1' | awk '{print $2}' | cut -f1 -d/

   Então, repentinamente, eu percebi que eu preciso redirecionar a saída
   do scrip acima para um arquivo ip.txt, então o que eu deveria fazer?  
   Eu deveria redigitar o comando inteiro novamente e redirecionar a
   saída para um arquivo?   Bem, uma solução simples é utilizar a tecla
   de navegação UP e adicionar "> ip.txt" para redirecionar a saída para
   um arquivo, como:

$ ip addr show | grep inet | grep -v 'inet6'| grep -v '127.0.0.1' | awk '{print $2}' | cut -f1 -d/ > ip.txt

   Agradeça à tecla de navegação UP salvadora de vida aqui.   Agora,
   considere a condição abaixo, a próxima vez que eu executar o scrip de
   uma linha abaixo.

$ ifconfig | grep "inet addr:" | awk '{print $2}' | grep -v '127.0.0.1' | cut -f2 -d:

   Tão logo eu execute o script, o prompt do bash retornou um erro com a
   mensagem:
  
   “bash: ifconfig: comando não encontrado”
  
   Não foi difícil para mim perceber que eu executei esse comando como
   um usuário comum, onde ele deveria ter sido executado como usuário
   root.
  
   Então, qual é a solução?   É difícil se logar como usuário "root" e
   então digitar o comando inteiro novamente!   Também (a Tecla de
   Navegação UP) no exemplo mais recente não veio salvar aqui.   Então?  
   Nós precisamos chamar “!!” sem as aspas, o qual chamará o comando
   mais recente para aquele usuário.

$ su -c “!!” root

   Aqui "su" é "switch user" - "permuta usuário" - o qual usuário é
   "root", "-c" é para executar o comando específico como o usuário e a
   parte mais importante "!!" será substituída por "comando" e o comando
   mais recentemente executado será substituído aqui.   Isso!   Você
   precisa fornecer a senha do usuário "root".
  
   Eu faço uso do "!!" a maioria nos cenários seguintes:

   1. Quando eu executo o comando "apt-get" como usuário normal, eu
   normalmente recebo um erro dizendo que você não tem permissão para
   executar.

$ apt-get upgrade && apt-get dist-upgrade

   Opa! não se preocupe! execute o comando abaixo para fazê-lo com
   sucesso:

$ su -c !!

   Da mesma maneira eu faço para:

$ service apache2 start

ou

$ /etc/init.d/apache2 start

ou

$ systemctl start apache2

   Oops! Usuário não autorizado a carregar tal tarefa, então eu executo:

$ su -c 'service apache2 start'

ou

$ su -c '/etc/init.d/apache2 start'

ou

$ su -c 'systemctl start apache2'


- ------------------------------
- ------------------------------


7. Execute um comando que afeta todos os arquivos, exceto
![NOME_ARQUIVO]

   O "!" (NÃO Lógico) pode ser utilizado para executar o comando sobre
   todos os arquivos/extensões, exceto aqueles atrás de "!".
  
   A. Remova todos os arquivos de um diretório, exceto aquele cujo nome
   é "2.txt".

$ rm !(2.txt)

   B. Remova todos os arquivos do tipo de um diretório, exceto aquele
   cuja extensão é "pdf".

$ $ rm !(*.pdf)


- ------------------------------
- ------------------------------


8. Verificar se um diretório (digamos "/home/avi/Tecmint") existe ou
não? Se o dito diretório existe ou não, imprima uma mensagem com o
comando "printf"

   Aqui nós utilizaremos "! -d" para validar se o diretório existe ou
   não, seguido pelo Operador Lógico AND (&&) para imprimir caso aquele
   diretório não exista; e o Operador Lógico OR (||) para imprimir caso
   o diretório esteja presente.
  
   A lógica é: quando a saída de [ ! -d /home/avi/Tecmint ] for 0
   (zero), será executado aquilo que pertence ao Operador Lógico AND; do
   contrário, a execução irá para o Operador Lógico OR (||) e executa
   aquilo que pertencer ao Operador Lógico OR.

$ [ ! -d /home/avi/Tecmint ] && printf '\nnão existe o tal diretório /home/avi/Tecmint\n' || printf '\nexiste o diretório /home/avi/Tecmint\n'


- ------------------------------
- ------------------------------


9. Verificar se um diretório existe ou não? Se não, sair do comando.

   Semelhante à condição acima, mas aqui se o diretório desejado não
   existir, a execução saíra do comando.

$ [ ! -d /home/avi/Tecmint ] && exit


- ------------------------------
- ------------------------------


10. Criar um diretório (digamos "teste") no seu diretório "home", caso
ele já não exista.

   Uma implementação geral em Linguagem de Script onde se o diretório
   desejado não existir, a execução criará um.

[ ! -d /home/avi/Tecmint ] && mkdir /home/avi/Tecmint


- ------------------------------
- ------------------------------


   Por enquanto é isso.   Se você souber ou descobrir qualquer outro
   uso de "!" o qual valha a pena saber, você pode desejar nos fornecer
   a sua sugestão em feedback.   Mantenha-se conectado!




    1. Edgar Allen says:
       May 19, 2015 at 10:30 pm
      
       Você também pode mencionar "!?"
      
       Isso encontra o comando mais recente com o argumento string dele.
       Por exemplo, se ...
      
       1013 grep tornado /usr/share/dict/words
       1014 grep hurricane /usr/share/dict/words
       1015 wc -l /usr/share/dict/words
      
       estão todos no histórico, então "!?torn" pesquisará por tornado
       novamente, onde "!torn" procuraria em vão por um comando iniciando
       com "torn".
      
       E "wc !?torn?:2" funciona para selecionar o argumento dois do
       comando contendo "tornado" e executar um "wc" sobre ele.

       Resposta:
          + Avishek Kumar says:
            May 20, 2015 at 11:25 am
           
            Caro Edgar,
            Sua sugestão foi levada em conta.
            Obrigado pelo seu feedback.
           
    2. Stephen says:
       May 19, 2015 at 6:07 pm
      
       Eu não vi uma menção do contexto histórico no artigo, então eu
       darei algum aqui nos comentários.   Essa forma de substituição
       de histórico de comando originou-se com o Shell C (csh), criado
       por Bill Joy para o sabor BSD de UNIX, lá no começo dos anos 70.
       Mais tarde foi incorporado no tcsh, e bash (Bourne-Again SHell).
       Pessoalmente, eu sempre tenho preferido o mecanismo de
       substituição de histórico do C-shell, e nunca realmente olhei
       para o comando "fc" (o qual eu encontrei primeiramente no Korne
       shell).
      
       Resposta:
          + Avishek Kumar says:
            May 20, 2015 at 11:27 am
           
            Caro Stephen,
            Obrigado pelo pedaço maravilhoso de informação.   Mantenha-se
            conectado e nos mantenha ciente de tal contexto.
           
    3. suzy says:
       May 16, 2015 at 11:45 am
      
       4º comando.   Você pode acessá-lo muito mais simplesmente.   Existem
       atualmente expressões regulares:
      
       ^ está no começo da expressão
       $ está no fim da expressão
       :number qualquer parâmetro de número

       Exemplo:
       touch a.txt b.txt c.txt
       echo !^ –> exibe o primeiro parâmetro
       echo !:1 –> também exibe o primeiro parâmetro
       echo !:2 –> exibe o segundo parâmetro
       echo !:3 –> exibe o terceiro parâmetro
       echo !$ –> exibe o último (no nosso caso, o 3º) parâmetro
       echo !* –> exibe todos os parâmetros
       Resposta:
          + Avishek Kumar says:
            May 18, 2015 at 11:30 pm
           
            E nós dissemos o mesmo:
            echo “1st Argument is : !^”
            $ echo “2nd Argument is : !cp:2”
           
            echo seguido do 1º argumento e 2º argumento é simplesmente tornar
            o tutorial e comando ininteligível.   Eu tenho utilizado "!^".
            "!command:number" como você está sugerindo.
            Eu gostaria de saber se você quer dizer algo diferente?

    4. Tomasz Wiszkowski says:
       May 16, 2015 at 10:50 am
      
       Eu penso (5) funciona diferentemente do que você anotou, e o
       redirecionamento para /dev/null escondeu, porém ZSh ainda
       imprime o comando.   Quando você invoca “! ls…”, sempre pega o
       comando "ls" mais recente que você executou, simplesmente acrescenta
       seus modificadores ao final (depois /dev/null).   Uma coisa extra legal
       é o operador "!#", o qual pega argumentos da linha atual.   Particularmente
       bom se você precisa redigitar nomes de caminho longos que você já digitou
       na linha atual.   Simplesmente digamos, por exemplo
      
       cp /some/long/path/to/file.abc !#:1

       E pressione "tab".   Isso vai substituir o último argumento com o nome do
       arquivo e caminho inteiro.

       Resposta:
          + Avishek Kumar says:
            May 18, 2015 at 11:37 pm
           
            Tomasz,
           
            Para a sua primeira parte do feedback: não pega o comando executado
            mais recentemente e simplesmente para provar isso nós utilizamos 4
            modificadores diferentes para o mesmo comando.
            ($ ! ls $ ! ls -l $ ! ls -la $ ! ls -lA ).   Agora você pode verificar
            isso fornecendo as palavras-chave em qualquer ordem e em qualquer caso
            será exibido o mesmo resultado.   Mesmo que isso não esteja funcionando
            no ZSH como esperado, eu já mencionei que eu testei no BASH e a maioria
            deles pode não funcionar em outro shell.
           
            Para a segunda parte, o que você mencionou é uma HASH TAG na Linha de
            Comando do Linux e nós incluímos em um dos nossos artigos.   Você pode
            desejar lê-lo aqui: http://www.tecmint.com/linux-commandline-chat-server-and-remove-unwanted-packages/

    5. Manu says:
       May 16, 2015 at 8:55 am
      
       Artigo legal.
       Resposta:
          + Avishek Kumar says:
            May 18, 2015 at 11:30 pm
           
            Seja bem vindo Manu, Mantenha-se conectado!

    6. Tachyon says:
       May 16, 2015 at 4:40 am
      
       Grande post.   Obrigado, eu recompartilhei para G+
       Uma nota, "su" significa "switch user" e não "Suitable User".
       Nota menor.   Pelo menos isso ainda é representativo do que
       atualmente faz, diferente do que a maior parte das pessoas
       refere-se como "Super User", pensando que o comando concede
       apenas status de usuário "root", o que é absolutamente
       incorreto.
      
       Resposta:
          + Ravi Saive says:
            May 18, 2015 at 11:08 am
            @Tachyon,
            obrigado corrigido no texto acima..

Jamenson Ferreira Espindula de Almeida Melo
Usuário GNU/Linux nº 166197
https://linuxcounter.net/cert/166197.png

Impressão digital da chave:
234D 1914 4224 7C53 BD13  6855 2AE0 25C0 08A8 6180


-----BEGIN PGP SIGNATURE-----
Version: GnuPG v2.0.26 (GNU/Linux)

iQEcBAEBCAAGBQJVXmQhAAoJECrgJcAIqGGA5xIIAKfXnn8D75spCHUhuESdz/6w
GiPFOOb9YQu7Ha22giyVozw8oTTLf99s5ObM6cg1omj6g5ogjbwW7LUgMFe88taH
O0EnWwCfiFtHx2zoEY8/wI56twILSCgr+9oMl3BQMzlgyTuSXnrMRzUbtR5SVLZy
z204ignWQfuUfVA7OqEq3CZRvpX+sKas2t88LuW/2kYWE4Nc3w6VVE/uACn5Q/Pg
75DcppcDTavB2jjGmwahg0jKtagcN+bYCUFSu0YBHDbkniXKkDDqbevD0RsheNoT
+Jp5E2oybTFce/eFz4Gqr6f0Z6Uje7+4iXSGd68fJbgUUTv//06ShxGF2TjKCY0=
=CbfT
-----END PGP SIGNATURE-----