Dica de alguns comandos.

Iniciado por Ioca100, 13 de Janeiro de 2009, 07:50

tópico anterior - próximo tópico

Ioca100

Matéria extraída do GDH, boa para todos:
"Apesar da interface gráfica ser muito mais fácil de usar, é bom você ter pelo menos uma boa noção de como as coisas funcionam pelo prompt de comando, isso vai lhe dar um domínio muito maior sobre o sistema.

Vamos então a um guia rápido dos comandos básicos do terminal. Este post foi carinhosamente apelidado de YASI (Yet Another Shell Intro), ou "mais uma introdução à linha de comando" :)

Comandos básicos: Começando do básico, o comando cd permite navegar entre os diretórios. Ao abrir o terminal, você começa dentro do seu diretório home (como "/home/gdh") e pode acessar outros diretórios diretamente especificando-os no comando, como em "cd /etc" ou "cd /mnt/cdrom". Para subir um diretório use "cd .." e, para voltar ao home, digite simplesmente "cd", sem parâmetro algum. Sempre que quiser confirmar em qual diretório está, use o comando "pwd".

Em seguida temos o ls, que serve para listar os arquivos dentro da pasta. Na maioria das distribuições, a listagem aparece colorida, permitindo diferenciar as pastas e os diferentes tipos de arquivos. As pastas aparecem em azul, os links em azul claro, os arquivos compactados em vermelho, as imagens em rosa, os executáveis em verde e os arquivos de texto e outros formatos em preto.

Para incluir os arquivos ocultos (que no Linux começam com "."), use "ls -a". Para ver mais detalhes sobre cada arquivo, incluindo o tamanho, permissões de acesso e dono, use "ls -lh". Para incluir os ocultos, adicione o "a", como em "ls -lha". A ordem dos parâmetros não altera o resultado do comando. Tanto faz digitar "ls -lha" ou "ls -alh", você pode simplesmente decorar os parâmetros na ordem que achar mais fácil de lembrar.

Para copiar arquivos de uma pasta para a outra usamos o cp, especificando o nome do arquivo e a pasta para onde ele vai, como em "cp arquivo.zip /mnt/sda1/". Se você quiser copiar um arquivo que está em outra pasta para o diretório atual, inclua a localização completa do arquivo e em seguida o "./" (que representa o diretório atual), como em "cp /mnt/cdrom/video.avi ./". Você pode também usar o "*" como curinga para copair vários arquivos. Para copiar todos os arquivos da pasta atual para a pasta "/mnt/hda6", por exemplo, use "cp * /mnt/hda6".

O cp é por padrão um comando bastante chato e difícil de entender, já que por default ele omite pastas, altera a permissão dos arquivos e assim por diante. Um parâmetro bastante útil é o "-a", que faz com que o cp sempre copie recursivamente, mantenha as permissões do arquivo original e preserve os links simbólicos que encontrar pelo caminho. Em resumo, faz o cp se comportar de uma forma mais simples e lógica. Para copiar uma pasta do CD-ROM para o diretório atual, por exemplo, você poderia usar "cp -a /mnt/cdrom/musicas ./".

O cp faz par com o mv, que serve tanto para mover quanto para renomear arquivos. Para mover o arquivo foto.png para a pasta "/mnt/hda6/", o comando seria "mv foto.png /mnt/hda6". Para renomear um arquivo, basta especificar o nome original e o novo, como em "mv antigo.txt novo.txt".

Para criar diretórios, usamos o comando "mkdir", como em "mkdir arquivos" (que cria a pasta arquivos no diretório atual) ou "mkdir /mnt/sda6/arquivos". É possível também criar pastas recursivamente, criando se necessário todas as pastas necessárias até chegar a que você pediu, adicionando o parâmetro "-p" como em "mkdir -p /mnt/hda6/arquivos/novos/2009". Mesmo que a pasta "novos" não exista, ela será criada.

Em seguida temos o rm, que serve tanto para remover arquivos quanto diretórios, de acordo com os parâmetros usados. Para remover um arquivo simples, basta usá-lo diretamente, como em "rm arquivo". Para que ele remova sem pedir a confirmação, adicione o parâmetro "-f", como em "rm -f arquivo". Para remover uma pasta e todos os arquivos e diretórios dentro dela, adicione o parâmetro "-r", como em "rm -rf arquivos/".

Tome cuidado ao usar o "-rf", pois ele não pede confirmação, deleta os arquivos diretamente, sem escalas. Respire fundo e verifique se realmente está deletando a pasta certa antes de confirmar o comando.

É possível também usar caracteres curingas na hora de remover arquivos. Para remover todos que possuírem a extensão ".jpg", use "rm -f *.jpg". Para remover todos os arquivos que começarem com "img", use "rm -f img*". Você pode usar também o "?" quando quiser usar o curinga para apenas um caractere específico. Se você quiser remover os arquivos "doc1.txt", "doc2.txt" e "doc3.txt", você poderia usar o comando "rm -f doc?.txt".

Temos também o comando rmdir, uma variação do mkdir, que permite remover diretórios. A diferença entre ele e o "rm -rf" é que o rmdir só remove diretórios vazios. Acostume-se a usá-lo no lugar do "rm -rf" ao deletar uma pasta que acha que está vazia, assim você evita acidentes.

Para verificar o espaço em disco disponível, use o df. Ele mostra o espaço disponível (assim como outras informações, incluindo a capacidade e o diretório de montagem) de cada uma das partições do sistema, incluindo pendrives e outros dispositivos de armazenamento que estejam montados. Ele faz par com o free, que permite checar rapidamente o uso da memória RAM (ignore a primeira linha e veja diretamente a linha "-/+ buffers/cache", que mostra o uso real, descartando o usado pelo cache de disco).

Outro comando útil é o du, que permite ver uma lista com o espaço ocupado por cada pasta dentro do diretório atual. Para facilitar, use sempre o "du -h", que exibe o tamanho dos arquivos de forma amigável, escrevendo "2,8G" ao invés de "2876322", por exemplo.

Você também pode executar uma fila de comandos de uma vez. Basta separá-los por ponto e vírgula, como em "ls; pwd" ou "cd /mnt/arquivos; ls"


Localizando arquivos e comandos:Uma forma rápida de localizar arquivos é usar o comando locate, que permite realizar buscas de forma quase instantânea. Para procurar um arquivo, simplesmente use "locate arquivo" (funciona também se você especificar também apenas parte do nome, ou usar o asterisco para encontrar arquivos de determinadas extensões).

O locate é tão rápido pois executa a busca dentro de uma base de dados, que é gerada ao rodar o comando "updatedb". A desvantagem dessa abordagem é que você precisa rodar o updatedb (como root) de vez em quando, a fim de incluir as últimas modificações.

Se você está procurando por um programa, experimente o comando "which", uma variante do locate que mostra apenas executáveis.

Temos também o find, que também permite localizar arquivos, mas funciona da forma tradicional, realmente vasculhando os diretórios em busca dos arquivos. Embora seja lento ao procurar em diretórios com muitos arquivos e subdiretórios, o find é eficiente se você souber previamente onde procurar. Por exemplo, o diretório "/etc" concentra as configurações do sistema. Se você estiver procurando pelo arquivo "smb.conf" (onde é armazenada a configuração do Samba), você poderia ir direto à fonte, usando o comando "find /etc -name smb.conf".

Note que além do diretório onde ele vai procurar (/etc no exemplo), você deve usar o parâmetro "-name" antes de indicar o nome do arquivo que está procurando. Omitindo o diretório, ele simplesmente procura dentro do diretório atual. Você pode também fazer buscas por todos os arquivos com uma determinada extensão, como em "find /mnt/hda6 -name *.mp3".

Assim como outros comandos do terminal, o find pode ser usado de forma mais amigável através de ferramentas gráficas. No KDE, você pode usar o kfind. Através dele você pode procurar pelo nome ou tipo de arquivo (você pode fazer uma busca incluindo apenas arquivos de imagem, por exemplo), procurar dentro de pastas específicas ou localizar arquivos pertencentes a um determinado usuário ou grupo do sistema, ou até mesmo procurar por arquivos modificados recentemente. No Gnome, você pode utilizar o gnome-search-tool, disponível no "Locais > Pesquisar por arquivos".

Assim como no caso dos nomes de arquivos, você pode completar os comandos usando a tecla Tab, o que reduz a necessidade de realmente decorá-los. Outra dica é usar o comando apropos para ajudar a localizar comandos quando você tem apenas uma vaga idéia do nome. Basta chamá-lo incluindo algumas letras que façam parte do comando (não importa se do começo ou do final), como em "apropos keyg" ou "apropos ogg". Ele mostra uma lista com todos os comandos que contêm os caracteres especificados no nome, juntamente com uma pequena descrição.


Desligando: Assim como no Windows, você precisa desligar o sistema corretamente para evitar perda de arquivos e danos à estrutura das partições (sem falar em evitar o chato fsck no boot seguinte). Além das opções nos menus do KDE ou Gnome, você pode desligar via terminal, usando os comandos halt (desligar) e reboot (reiniciar). Existe também o Ctrl+Alt+Del, que se executado em um dos terminais de texto puro reinicia o micro e, se pressionado dentro do ambiente gráfico abre (na maioria das distribuições) o diálogo com as opções de desligar e reiniciar.


Informações sobre o hardware: Como comentei no post sobre os diretórios, a pasta "/proc" não armazena arquivos, mas sim informações sobre o hardware e sobre a configuração do sistema. Embora seja possível ver o conteúdo dos arquivos usando qualquer editor de texto (como no caso do "cat /proc/cpuinfo"), a maior parte das informações são crípticas demais para qualquer ser humano normal.

Se você quer apenas descobrir qual é o chipset da placa wireless ou da placa de som, por exemplo, pode ver uma listagem resumida do hardware da máquina usando o comando lspci. Para os dispositivos USB (que não aparecem na lista do lspci), temos o lsusb.

Dois outros comandos relacionados são o lshal (que mostra todos os componentes detectados pelo HAL, responsável por detectar o hardware e carregar os módulos apropriados) e o lshw que mostra uma longa lista de detalhes sobre a máquina, lembrando um pouco o gerenciador de dispositivos do Windows, porém em modo texto. Complementando, temos o clássico "uname -a", que permite verificar rapidamente qual versão do kernel está sendo usada.


Rede: O comando básico para gerenciar a configuração de rede no Linux é o ifconfig. Quando chamado sem argumentos ele mostra a configuração atual da rede (o que o torna uma opção para verificar rapidamente qual endereço IP seu PC está usando, ou se ele obteve a configuração corretamente a partir do servidor DHCP), mas ele pode ser usado também para alterar a configuração da rede rapidamente. Ao digitar "ifconfig eth0 192.168.1.2", por exemplo, você troca o endereço da placa eth0.

Ele é complementado pelo iwconfig, que se aplica às placas wireless. Ao chamá-lo sem argumentos, ele mostra a configuração atual, incluindo o SSID da rede, o endereço MAC do ponto de acesso, a qualidade do sinal e a velocidade atual de transmissão, mas ele pode ser usado também para configurar a rede Wi-Fi manualmente."
fonte:   http://www.gdhpress.com.br/blog/yasi/

   
Usuário Linux- 449417

clcampos

Bom texto Ioca100!

Pode ajudar (principalmente aos iniciantes) a se virar no terminal.
Cristiano/Timóteo - MG
.: Como Fazer Perguntas de Forma Inteligente :.                
Com dúvida? pesquise!

Arthur Cruz

Muito utéis essas informações. Obrigado!

Agora tenho mais uma dúvida. Eu gostaria de apagar arquivos de extensões especificas dentro de um diretório e seus subdiretórios.
É que quero limpar os arquivos 'alienigenas' da minha pasta de musicas  :D
Eu teria que combinar de alguma forma, por exemplo, o "find" com o "rm"?

Abraços!

clcampos

#3
A forma que eu sei fazer é conforme o exemplo abaixo, porém já vi formas mais simples (se não me engano apresentadas na ocasião pelo alacon).

Citarfind /home/seu-usuario/diretório-com-as-músicas -name *.exe -exec rm -i {} \;

Claro que você deve adaptar o comando as sua realidade ai, substituindo as partes em negrito (atente para substituir o *.exe pela extensão que deseja remover).

Muito cuidado que você estará removendo os arquivos encontrados pelo find, e se fizer algo errado pode remover mais do que deseja. Até para tentar evitar isto eu coloquei o comando rm -i para que ele vá pedindo confirmação a cada arquivo encontrado.

Então boa sorte e cuidado ao executar o comando.

[]'s

Cristiano
Cristiano/Timóteo - MG
.: Como Fazer Perguntas de Forma Inteligente :.                
Com dúvida? pesquise!

marcospinho

#4
existe algum comando que crie um texto exibindo todos componentes de um diretório como arquivos, diretorios, subdiretórios e arquivos anexos em árvore? queria fazer isso para comparar o conteudo dos backups em dvd que tenho.
pensei em algo assim ~/media/cdrom ls -r *> /home/marcos/listadocd.txt

celeron 2.66Ghz, 1G Ram, DVDrw monitor AOC 17pol, HDsata500g, L-Ubuntu Maverick-i386, /root 20G /home 50G /win 40G /win7 50G /dados 20G /teste(nathy+Kde) 15G /acervo 220G  Linux Counter #478143. Ubuntu counter is # 24448

Felix

Citação de: marcospinho online 17 de Fevereiro de 2009, 12:17
existe algum comando que crie um texto exibindo todos componentes de um diretório como arquivos, diretorios, subdiretórios e arquivos anexos em árvore? queria fazer isso para comparar o conteudo dos backups em dvd que tenho.
pensei em algo assim ~/media/cdrom ls -r *> /home/marcos/listadocd.txt



Use o comando tree em substituição ao ls ele lista a estrutura de diretórios em 'árvore'

marcospinho

#6
assim?
/media/cdrom tree -r *> /home/marcos/listadocd.txt
ou
~cd /media/cdrom
/media/cdrom~ tree -r *> /home/marcos/listadocd.txt
celeron 2.66Ghz, 1G Ram, DVDrw monitor AOC 17pol, HDsata500g, L-Ubuntu Maverick-i386, /root 20G /home 50G /win 40G /win7 50G /dados 20G /teste(nathy+Kde) 15G /acervo 220G  Linux Counter #478143. Ubuntu counter is # 24448

Felix

execute somente do comando tree e veja o que ele faz, depois veja o manual dele com um man tree, após isso é só ver se ele se encaixa para o que você quer

Arthur Cruz

Citação de: clcampos online 17 de Fevereiro de 2009, 10:00
A forma que eu sei fazer é conforme o exemplo abaixo, porém já vi formas mais simples (se não me engano apresentadas na ocasião pelo alacon).

Citarfind /home/seu-usuario/diretório-com-as-músicas -name *.exe -exec rm -i {} \;

Claro que você deve adaptar o comando as sua realidade ai, substituindo as partes em negrito (atente para substituir o *.exe pela extensão que deseja remover).

Muito cuidado que você estará removendo os arquivos encontrados pelo find, e se fizer algo errado pode remover mais do que deseja. Até para tentar evitar isto eu coloquei o comando rm -i para que ele vá pedindo confirmação a cada arquivo encontrado.

Então boa sorte e cuidado ao executar o comando.

[]'s

Cristiano

Funcionou perfeitamente! obrigado.

Arthur Cruz

Esse comando continua a me ajudar! haha

Muito obrigado novamente!
Desculpe a desenterrada de tópico, mas pra quem quiser limpar a pasta de músicas... é perfeito!

cesargcomp

Citação de: marcospinho online 17 de Fevereiro de 2009, 12:17
existe algum comando que crie um texto exibindo todos componentes de um diretório como arquivos, diretorios, subdiretórios e arquivos anexos em árvore? queria fazer isso para comparar o conteudo dos backups em dvd que tenho.
pensei em algo assim ~/media/cdrom ls -r *> /home/marcos/listadocd.txt



Se quer usar o comando ls faça assim:
ls -laR ~/media/cdrom >> /home/marcos/listadocd.txt

Espero ter ajudado!
Use Ubuntu. Segurança, facilidade e gratuidade em suas mãos.