Biblioteca Linux - Mais além do desktop

Esse artigo contém uma boa parte dos comandos do Linux e suas opções, recomendado para usuários iniciantes no sistema, pode-se chamar de biblioteca de comandos.

[ Hits: 26.952 ]

Por: Perfil removido em 19/10/2007


Um pouco mais avançado 01



cmp

Esse comando é utilizado para comparar dois arquivos e mostrar a primeira diferença entre eles. Use para certificar-se de que dois arquivos possuem ou não o mesmo conteúdo.

Sintaxe:

cmp [opções] [arquivo1] [arquivo2]

Opções:
  • -b: Imprime os bytes que são diferentes entre si;
  • -i [n]: Não considera os primeiros [n] bytes de cada arquivo;
  • -l: Mostra os número dos bytes e os valores diferentes;
  • -s: Não mostra nenhum detalhe, apenas sai com status 1 se alguma diferença for encontrada.

Exemplos de uso:

Vamos comparar os arquivos file1 e file2:

$ cmp file1 file2
file1 file2 differ: byte 10, line 2

diff

Esse comando compara dois arquivos de texto e mostra as diferenças entre eles.

Sintaxe:

diff [opções] [arquivo1] [arquivo2]

Opções:
  • -i: Ignora as diferenças de letras maiúsculas/minúsculas;
  • -E: Ignora as diferenças de tabulação;
  • -b: Ignora diferenças na quantidade de espaço em branco;
  • -w: Ignora qualquer espaço em branco;
  • -B: Ignora linhas em branco a mais ou a menos;
  • -a: Compara os arquivos como arquivos de texto, ainda que não sejam;
  • -u [n]: Mostra [n] linhas do conteúdo final do arquivo1, adicionadas as diferenças do arquivo2;
  • -q: Mostra apenas se o conteúdo dos arquivos são ou não diferentes;
  • -y: Mostra os arquivos em duas colunas, indicando as diferenças;
  • -t: Expande as tabulações, convertendo-as em espaços, na saída;
  • -r: Compara recursivamente todo o conteúdo de um diretório;
  • -S [arquivo]: Quando comparar diretórios, inicia a comparação pelo arquivo especificado.

Exemplos de uso:

Vamos considerar os arquivos file1 e file2, com o seguinte conteúdo:

$ cat file1
5 f j 33
diferença
2 a c 1
1 t 4 f
6 b c _
10 i r 3

$ cat file2
5 f j 33
2 a c 1
1 t 4 f
6 b c _
10 i r 3
outra diferença

Aplicando o diff nos dois arquivos, temos o seguinte retorno:

$ diff file1 file2
2d1
< diferença
6a6
> outra diferença

O diff exibe informações sobre o que é necessário fazer para que o conteúdo de file1 seja igual ao de file2. Nesse caso, 2d1 quer dizer que a diferença foi encontrada na linha 2, e que é necessário apagar (d = delete) a palavra diferença do arquivo file1. O 6a6 nos diz que a diferença foi encontrada na linha 6, e que é necessário adicionar (a = add) a linha outra diferença no arquivo file1.

O parâmetro -y exibe esses parâmetros de forma mais clara:

$ diff -y file1 file2
5 f j 33                5 f j 33
diferença               <
2 a c 1                 2 a c 1
1 t 4 f                 1 t 4 f
6 b c _                 6 b c _
10 i r 3                10 i r 3
                        > outradiferença 

Veja que os sinais de maior e menor (>, <) sempre apontam para a linha que é diferente. Se a diferença estiver no primeiro arquivo, listado à esquerda, ela deve ser apagada. Se a diferença estiver no segundo arquivo, listado à direita, ela deve ser adicionada.

O diff, quando usado em conjunto com o utilitário patch, fornece uma grande funcionalidade para atualizações. Um grande exemplo é o código-fonte do kernel Linux. Ao invés de gravar a nova versão do kernel inteira, é possível gravar a penas as diferenças entre eles, algo como:

$ diff [kernel-antigo] [kernel-novo] > diferenças.diff

E depois utilizar o utilitário patch para gravar as diferenças no kernel-antigo, fazendo-o ficar com o mesmo conteúdo de kernel-novo. A grande vantagem é que não é necessário o usuário baixar todo o kernel, que é muito grande, mas apenas o arquivo com as diferenças, bem pequeno.

patch

Utilizamos esse comando para atualizar as diferenças geradas através do comando diff. Suponhamos os arquivos file1 e file2, que são diferentes. Podemos criar as diferenças entre os dois arquivos com o comando diff:

$ diff file1 file2 > file.diff

Esse comando gera um arquivo file.diff com as diferenças entre os arquivos file1 e file2. Podemos agora usar o comando patch para aplicar as diferenças no arquivo file1, fazendo seu conteúdo ficar igual ao de file2:

$ patch file1 file.diff

Sintaxe:

patch [opções] [arquivo] [arquivo de patch] (para arquivos)
patch [opções] < [arquivo de patch] (para diretórios)


Opções:
  • -p [n]: Nível do diretório onde será aplicado o patch. Se [n] for 0, o patch será aplicado no diretório atual. Se for 1, será aplicado no diretório acima (..), se 2, 2 diretórios acima (../..) e assim por diante;
  • -b: Cria cópias dos arquivos originais antes de aplicar o patch;
  • -binary: Lê e grava usando o modo binário;
  • -d [diretório]: Muda para o diretório especificado antes de aplicar o patch;
  • -E: Remove arquivos vazios após a aplicação do patch;
  • -n: Interpreta o arquivo de patch como um .diff normal;
  • -N: Não desfaz patches já aplicados;
  • -s: Modo silencioso, não exibe mensagens de erro;
  • -u: Interpreta o patch em formato unificado. Use isso se o arquivo de patch foi gerado com diff -u.

grep

O grep é utilizado para encontrar padrões em arquivos de texto, ou, em outras palavras, procura num arquivo todas as linhas que possuem a palavra ou expressão informada e as exibe na tela.

Sintaxe:

grep [expressão] [arquivo]

Assim, se você quiser varrer o arquivo /etc/fstab procurando pelas linhas que contém o texto "/dev/fd0", digite:

$ grep /dev/fd0 /etc/fstab
/dev/fd0        /media/floppy0  auto    rw,user,noauto  0       0

Se o padrão informado não for encontrado no arquivo especificado, não é exibida nenhuma mensagem.

cut

O cut é utilizado para selecionar colunas de texto em um arquivo. Suponhamos que você tenha um arquivo da seguinte forma:

A1 B1 C1
A2 B2 C2
A3 B3 C3

E precise, por algum motivo, que somente a terceira coluna seja exibida na tela, dessa forma:

C1
C2
C3

É exatamente isso que o cut fará para nós.

Sintaxe:

cut [opções] [arquivo]

Opções:
  • -c: Especifica quais caracteres serão exibidos;
  • -d: Especifica qual o caracter será usado como delimitador de campo;
  • -f: Lista dos campos que serão exibidos;
  • -s: Não exibe as linhas que não contém os delimitadores especificados em -d;
  • --output-delimiter=[string]: Utiliza a string (seqüência de caracteres) especificada como o delimitador dos campos na saída.

Exemplos de uso:

Considerando o arquivo lista.txt com o conteúdo mostrado acima, se quisermos exibir somente o quinto caracter de cada linha, usamos:

$ cut -c 5 lista.txt
1
2
3

Se quisermos exibir os primeiros 5 caracteres, utilizamos -5 ao invés de 5:

$ cut -c -5 lista.txt
A1 B1
A2 B2
A3 B3

Se quisermos exibir do quinto caracter em diante, usamos 5-, assim:

$ cut -c 5- lista.txt
1 C1
2 C3
3 C3

Por fim, para exibir do segundo até o sexto caracter:

$ cut -c 2-6 lista.txt
1 B1
2 B2
3 B3

Repare agora que o delimitador de cada coluna é o espaço em branco. Assim, se quisermos exibir apenas o primeiro campo, usamos:

$ cut -f1 -d' ' lista.txt
A1
A2
A3

O parâmetro -f1 informa que queremos que seja exibido o primeiro campo, enquanto -d' ' (dois acentos agudos separados por espaço) informa que o separador de campos é o espaço em branco. O parâmetro -d não precisa ser utilizado no caso de o arquivo utilizar TAB (tabulação) como separador de campos.

Seguindo esse raciocínio, se quisermos exibir os campos 1 e 3, usamos:

$ cut -f1,3 -d' ' lista.txt
A1 C1
A2 C3
A3 C3

Com o uso do direcionador | (pipe) podemos processar o mesmo arquivo várias vezes com o cut, de modo a podermos fazer um processamento poderoso do arquivo de texto. Além disso, ele aceita a saída de outros programas como entrada, através do mesmo direcionador |.

head

Usamos esse comando para exibir as linhas iniciais de um arquivo.

Sintaxe:

head [opções] [arquivo]

Opções:
  • -c [-][n]: Sem o - (hífen), mostra os primeiros [n] bytes do arquivo. Com o -, mostra todos os bytes com exceção dos [n] últimos;
  • -n [-][n]: Sem o -, mostra as primeiras [n] linhas do arquivo. Com o -, mostra todas as linhas com exceção das [n] últimas;
  • -v: Imprime um cabeçalho com o nome do arquivo.

Exemplos de uso:

Para ver as primeiras 5 linhas do arquivo file, faça:

$ head -n 5 file
1
2
3
4
5

Se quiser exibir todas as linhas menos as 3 últimas:

$ head -n -3 file
1
2
3
4
5
6
7

more

Usamos esse comando para realizar a paginação de arquivos de texto cujo conteúdo não cabe na tela.

Sintaxe:

more [opções] [arquivo]

Opções:
  • -d: Exibe as mensagens [Press space to continue, 'q' to quit] (pressione espaço para continuar, 'q' para sair). Ao se pressionar espaço, a tela rola uma página inteira. Se for pressionada alguma tecla inválida, é exibida a mensagem [Press 'h' for instructions.] (pressione 'h' para instruções.);
  • -l: Evita que ocorram pausas toda vez que seja encontrado o caracter "^L" (alimentação de formulário) no texto;
  • -s: Se houver múltiplas linhas em branco num arquivo, trunca elas em apenas uma;
  • +/[padrão]: Começa a mostrar o texto a partir da primeira linha que contém o padrão informado;
  • +[número]: Especifica qual linha deve ser a primeira a ser mostrada;
  • -[número]: Especifica o tamanho da tela, em linhas.

Assim, quando quiser ler um texto muito extenso sem precisar abrir um editor de textos para isso, use o more. O texto será exibido até ocupar a tela inteira, e então aparecerá um prompt escrito "--More--(xx%)". Pressione Enter para rolar o texto linha por linha. Se quiser cancelar a exibição e voltar para o prompt de comando, pressione "q".

É possível usar o more para exibir vários arquivos seqüencialmente. Basta informar todos os arquivos separados por espaço.

less

O less tem a mesma utilidade do more, com a vantagem de poder rolar o texto exibido para cima e para baixo através do uso dos direcionais, além de contar com um localizador de texto. Para digitar o padrão que você deseja procurar precedido de / (barra).

Sintaxe:

less [arquivo]

sort

Usamos esse comando para classificar as linhas de um arquivo de texto.

Sintaxe:

sort [opções] [arquivo]

Opções:
  • -b: Ignora linhas em branco;
  • -d: Descarta quaisquer linhas iniciadas com caracteres que não sejam espaço em branco ou alfanuméricos;
  • -f: Ignora a diferença entre caracteres maiúsculos e minúsculos;
  • -r: Exibe a lista na ordem inversa;
  • -n: Organiza os números na ordem aritmética. Sem essa opção, a seqüência de caracteres 100, 10, 50 seria exibida na ordem 10, 100, 50. Com a opção -n, eles são exibidos na ordem 10, 50, 100;
  • -c: Verifica se o arquivo já está organizado. Se não estiver, retorna a mensagem disorder on [arquivo] (desordem em [arquivo]);
  • -o [arquivo]: Grava a saída do comando sort no arquivo especificado;
  • -m [arquivo1] [arquivo2]: Combina o conteúdo dos dois arquivos gerando um único arquivo. Esse comando só funciona se ambos os arquivos já estiverem ordenados;
  • -i: ignora os caracteres fora da faixa octal ASCII 040-0176;
  • -t [caracter]: Usa o caracter especificado ao invés de espaço em branco como delimitador durante a organização das linhas;
  • +[número 1] +[número 2]: Especifica qual campo (coluna) será usado como referência na organização. Os campos começam a ser contados de 0, e o separador de campos padrão é o espaço. Para selecionar outro delimitador, use o parâmetro -t. Os campos serão organizados de [número 1] até [número 2]. Se [número 2] não for especificado, os campos serão organizados de [número 1] até o final da linha;
  • -k [número 1] [número 2]: Idêntico ao parâmetro anterior, mas os campos começam a ser contados de 1.

Exemplos de uso:

Suponha que você tenha um arquivo file.list com o seguinte conteúdo:

$ cat file.list
5 f j 33
2 a c 1
1 t 4 f
6 b c _
10 i r 3

Ao usarmos o comando sort, as linhas serão organizadas de acordo com a primeira coluna:

$ sort file.list
10 i r 3
1 t 4 f
2 a c 1
5 f j 33
6 b c _

Veja, entretanto, que temos um problema aqui: o 10 foi posto antes do 1, seguindo a ordem alfabética e não aritmética. Para corrigir isso, acrescentamos o parâmetro -n:

$ sort -n file.list
1 t 4 f
2 a c 1
5 f j 33
6 b c _
10 i r 3

Agora, se quisermos organizar as linhas tomando como referência a segunda coluna ao invés da primeira, fazemos o seguinte:

$ sort +1 file.list
2 a c 1
6 b c _
5 f j 33
10 i r 3
1 t 4 f

Podemos obter o mesmo resultado de outra forma:

$ sort -k 2 file.list
2 a c 1
6 b c _
5 f j 33
10 i r 3
1 t 4 f

Por fim, para gravar o resultado no arquivo fileorder.list, basta acrescentar o parâmetro -o fileorder.list.

tail

Esse comando é utilizando para mostrar as últimas linhas de um arquivo de texto.

Sintaxe:

tail [opções] [arquivo]

Opções:
  • -c [n]: Exibe apenas os últimos [n] bytes do arquivo;
  • -n [n]: Exibe as últimas [n] linhas do arquivo;
  • -f: Fica monitorando o arquivo, e exibe todas as novas linhas adicionadas a ele, em tempo real. Isso é muito utilizado para monitorar arquivos de log.

wc

Conta o número de linhas, palavras, caracteres e bytes nos arquivos.

Sintaxe:

wc [opção] [arquivo]

Opções:
  • -c: Exibe apenas o número de bytes;
  • -m: Exibe o número de caracteres;
  • -l: Exibe o número de linhas;
  • -L: Exibe o comprimento, em caracteres, da maior linha do arquivo;
  • -w: Exibe o número de palavras encontradas.

Se for usado sem argumentos, o wc exibe o número de linhas, palavras e caracteres do arquivo, respectivamente:

$ wc file.list
20 42 file.list

Página anterior     Próxima página

Páginas do artigo
   1. Para que introdução? Vamos ao que interessa!
   2. Um pouco mais avançado 01
   3. Um pouco mais avançado 02
Outros artigos deste autor

Backuppc - Solução de backup corporativo

O "HACKER" da família

Usando classes em conexão e consultas à banco de dados em PHP

Captive Portal Customizado

Algumas Distribuições GNU/Linux Excêntricas!

Leitura recomendada

Sim! Outro artigo na linha "Por onde começo?"

Mamãe, quero Arch! (parte 2 - final)

Slackware 13.37 - Compreendendo o processo de inicialização

Lucaschess: software para base de dados, jogar e treinar xadrez

Partições - Montagem na marra!

  
Comentários
[1] Comentário enviado por maran em 19/10/2007 - 19:55h

a uma boa iniciativa cara...

[2] Comentário enviado por edirlf em 19/10/2007 - 20:42h

eu achei show de bola esse artigo!! bem objetivo.
parabéns cara

[3] Comentário enviado por VonNaturAustreVe em 19/10/2007 - 23:41h

ficou muito bom,pratico e rapido,vai ajudar muita gente.

[]'s

[4] Comentário enviado por Teixeira em 20/10/2007 - 19:40h

Muito bom, andreiipiuco!
Já copiei para consulta offline.
Gostaria de colaborar, esclarecendo que "find" em inlgês não é propriamente "procurar" (que seria "search"), mas sim "localizar", "encontrar", embora no frigir dos ovos seja quase a mesma coisa.
Os termos ingleses utilizados em informática nem sempre são sinônimos perfeitos.
Outros exemplos que me lembro agora são "sort" e "merge" que significam genericamente "ordenar".
A diferença é que "sort" é "classificar" ou "colocar em ordem", enquanto "merge" é simplesmente incluir no meio, como se faz com uma carta no baralho.

[5] Comentário enviado por mrazec em 22/10/2007 - 13:24h

Muito bom artigo, de uma olhada no ótimo guia de referencia para Slackware em Portugês http://www.linuxhome.eti.br/site/index.php?option=com_content&task=view&id=573&Itemid=1

[]'s
Razec

[6] Comentário enviado por cirocolares em 23/10/2007 - 12:58h

Gostei desse artigo, muito direto e claro...
Parabéns!

[7] Comentário enviado por thiagoreis3p em 23/10/2007 - 19:33h

Excelente.. to iniciando e sei que vai quebrar varias...
abraço...

[8] Comentário enviado por andrade.ti em 23/10/2007 - 21:27h

Carinha, seu artigo ficou simplesmente NOTA 10! Esta me ajudando a estudar para as provas da LPI. Valeu...

[9] Comentário enviado por davidsonpaulo em 06/11/2007 - 10:52h

Faltou citar a fonte:

http://www.vivaolinux.com.br/artigos/verArtigo.php?codigo=5024

[10] Comentário enviado por cvs em 06/11/2007 - 11:54h

heuehueheue...
ja era malandro...

[11] Comentário enviado por removido em 08/11/2007 - 20:12h

quero deixar claro que peguei algumas informacoes de outros artigos, porque cada um falava um pouco de cada coisa, intao resolvi reescrever em um so.

[12] Comentário enviado por Teixeira em 31/03/2008 - 13:19h

Mas é isso mesmo!

Nenhum desses comandos é "novo".

O que o amigo fez foi colecionar as informações já existentes e enriquecê-las segundo o seu próprio "feeling" e passá-las adiante.

Nem sempre as primeiras informações sobre um determinado assunto são objetivas ou realmente esclarecedoras.

Se algo pode ser melhorado, isso certamente deve ser feito.

E se já era bom, deve ser divulgado.

Acho que seu trabalho não desmerece em nada aos demais artigos e dicas já publicados no VOL ou em outros sites.

Sempre que possível, em especial em nossa comunidade, será importante citar as fontes.




Contribuir com comentário




Patrocínio

Site hospedado pelo provedor RedeHost.
Linux banner

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts