Depois de um tempo parado com essa série e com meus estudos por falta de tempo, agora vou voltar a estudar e criar posts sobre Linux, voltado para a certificação LPI 1. No post de hoje vamos ver alguns comandos avançados no terminal, todos eles de altíssima relevância e cobrados no exame. Mais específicamente vamos ver comandos de busca e manipulação de entradas e saídas de comandos com alguns operadores.
Vamos começar pelos comandos localizadores. Existem uma série de comandos úteis para localizar todo o tipo de arquivo no sistema. Vejamos os principais:
A sintaxe do comando find é find [diretório] [opções/expressão].
Algumas flags interessantes:
- name [expressão]: Procura pela [expressão] definida nos nomes de arquivos e diretórios processados.
- maxdepth [num]: Limita a recursividade de busca na árvore de diretórios. Por exemplo, limitando a 1, a busca será feita apenas no diretório especificado e não irá incluir nenhum subdiretório.
- amin [num]: Procura por arquivos que foram acessados [num] minutos atrás. Caso seja antecedido por “-”, procura por arquivos que foram acessados entre [num] minutos atrás e o momento atual.
- atime [num]: Procura por arquivos que foram acessados [num] dias atrás. Caso seja antecedido por “-”, procura por arquivos que foram acessados entre [num] dias atrás e a data atual.
- uid [num]: Procura por arquivos que pertençam ao usuário com o “uid 1000” [num].
- user [nome]: Procura por arquivos que pertençam ao usuário “aluno” [nome].
- perm [modo]: Procura por arquivos que possuem os modos de permissão [modo]. Os [modo] de permissão podem ser numérico (octal) ou literal.
- size [num]: Procura por arquivos que tenham o tamanho [num]. O tamanho é especificado em bytes. Você pode usar os sufixos k, M ou G para representar o tamanho em Quilobytes, Megabytes ou Gigabytes, respectivamente. O valor de [num] Pode ser antecedido de “+” ou “-” para especificar um arquivo maior ou menor que [num].
- type [tipo]: Procura por arquivos do [tipo] especificado. Os seguintes tipos são aceitos: b - bloco; c - caractere; d - diretório; p - pipe; f - arquivo regular; l - “link” simbólico; s - “socket”.
Outra forma de procurar por arquivos e/ou diretórios e executar um comando é através do comando xargs que obtém como a entrada a saída ok do comando antes do pipe e envia como stdin do próximo comando, no caso o ls -ld:
O comando time permite medir o tempo de execução de um programa:
Outro método de busca é o comando locate, mas este em específico não faz a busca recursivamente, e sim por uma base de dados. Então, antes de usar esse comando você precisa atualizar a base de dados com o comando:
Pode ser que a primeira vez ele demore um pouco, porque ele está varrendo, verificando e catalogando todos os arquivos do disco. A sintaxe do comando é bem simples, apenas o comando e o que você pretende procurar.
A saída do comando acima será parecida com:
Antes de vermos os operadores de redirecionamento e os comandos, vamos a um pouco de teoria que pode ser necessário. O Linux tem três fluxos de dados, Entrada (INPUT), Saída (OUTPUT) e, Diagnósticos e Erros.
Por padrão, a entrada de dados é pelo teclado, e a saída é na tela. Normalmente erros também são mostrados na tela. Normalmente é utilizado alguns termos para identificar essas entradas e saídas padrões. São elas: 0 - Entrada de dados, representada por “stdin” (Standard Input); 1 - Saída de dados, representada por “stdout” (Standard Output); 2 - Saída de erros, representada por “stderr” (Standard Error).
> (maior): Direciona a saída do comando para um arquivo, substituindo o seu conteúdo, caso o arquivo já exista;
>> (maior-maior): Direciona a saída do comando para um arquivo, adicionando o texto ao final do arquivo, caso ele já exista;
< (menor): Passa o conteúdo do arquivo como argumento para o comando;
2> (dois-maior): Direciona as saídas de erro geradas pelo programa para um arquivo, substituindo seu conteúdo, caso o arquivo já exista;
2>> (dois-maior-maior): Direciona as saídas de erro geradas pelo programa para um arquivo, adicionando o texto ao final do arquivo, caso ele já exista;
2>&1 (dois-maior-e-um): Direciona as saídas de erro para a saída do comando, no caso para STDOUT;
&> (e-maior): Direciona todas as saídas (normal e de erro) para um arquivo, substituindo seu conteúdo, caso ele já exista; &» (e-maior-maior): Direciona todas as saídas (normal e de erro) para um arquivo, adicionando o texto ao final do arquivo, caso ele já exista;
| (barra vertical ou pipe): Utiliza a saída do primeiro comando como argumento do segundo comando; tee: mostra saída na tela e redireciona para um arquivo ou outra localização ao mesmo tempo;
<<: marca o fim de um bloco.
tee: Este comando permite que a saída seja exibida na tela e ao mesmo tempo redirecionada a um arquivo. Caso o arquivo não exista será criado um arquivo.
dd: O comando dd dos sistemas baseados em Linux e Unix, é um programa para copiar e converter arquivos de um local para outro, servindo até para clonar dispositivos ou áreas de discos fixos ou removíveis como CD(s), DVD(s), disquetes, HD(s), dispositivos USB entre outros. A sintaxe do comando é dd if=<origem> of=<destino>.
wc: A maioria dos arquivos de configuração no Unix é separada em linhas, temos este comando para contar as linhas de um arquivo. Este comando indica quantas linhas, palavras e caracteres tem um arquivo. Caso queira apenas ver a contagem de linhas use a flag -l, para contagens de palavras a flag -w e para a contagem de caracteres use a flag -c.
split: Usado para dividir um determinado arquivo em arquivos menores.
file: Informa o tipo do arquivo.
who: Determina quais usuários estão logados no sistema.
w: Mostra tempo que o sistema está ligado, média de carga do sistema, usuários logados.
ln: O comando ln permite criar links. Existem dois tipos de links suportados pelo Linux, os hard links e os links simbólicos. Os links simbólicos têm uma função parecida com os atalhos do Windows: eles apontam para um arquivo, mas se o arquivo é movido para outro diretório, o link fica quebrado. Os hard links por sua vez são semelhantes aos atalhos do OS/2 da IBM, eles são mais intimamente ligados ao arquivo e são alterados junto com ele. Se o arquivo muda de lugar, o link é automaticamente atualizado. Isto é possível porque nos sistemas de arquivos usados pelo Linux cada arquivo possui um código de identificação (chamado de inode), que nunca muda. O sistema sabe que o arquivo renomeado é o mesmo do atalho simplesmente procurando-o pelo inode ao invés do nome.
stat: Um inode é, na realidade, uma estrutura de dados que possui informações sobre um determinado arquivo ou diretório como, por exemplo, dono, grupo, tipo e permissão de acesso. Para sabermos essa e outras informações de um arquivo usamos o comando stat.
sort: Comando usado para organizar em ordem as linhas de um arquivo. Pode-se usar algumas flags para customizar a organização, como por exemplo, -f para ignorar caixa alta e caixa baixa, -n para classificação numerica e -r para ordem invertida.
uniq: Remove linhas duplicadas.
E era isso por hoje!
No próximo post sobre a série preparatória da certificação LPI 1 abordaremos mais um pouco de filtragem de comandos e administração da Shell. Eu fico por aqui, mas recomendo que estudem isso, pois mesmo que não prestem a prova, esse tipo de conhecimento pode fazer a diferença.
Bons estudos!
Localizadores
Vamos começar pelos comandos localizadores. Existem uma série de comandos úteis para localizar todo o tipo de arquivo no sistema. Vejamos os principais:
Find
Este comando procura por diretórios e arquivos por uma infinidade de características, por exemplo, data de criação, data de modificação, nome, tamanho, etc.A sintaxe do comando find é find [diretório] [opções/expressão].
Algumas flags interessantes:
- name [expressão]: Procura pela [expressão] definida nos nomes de arquivos e diretórios processados.
# find /etc -name*.conf
- maxdepth [num]: Limita a recursividade de busca na árvore de diretórios. Por exemplo, limitando a 1, a busca será feita apenas no diretório especificado e não irá incluir nenhum subdiretório.
# find /etc -maxdepth 1 -name*.conf
- amin [num]: Procura por arquivos que foram acessados [num] minutos atrás. Caso seja antecedido por “-”, procura por arquivos que foram acessados entre [num] minutos atrás e o momento atual.
# find ~ -amin -5
- atime [num]: Procura por arquivos que foram acessados [num] dias atrás. Caso seja antecedido por “-”, procura por arquivos que foram acessados entre [num] dias atrás e a data atual.
# find ~ -atime -10
- uid [num]: Procura por arquivos que pertençam ao usuário com o “uid 1000” [num].
# find / -uid 1000
- user [nome]: Procura por arquivos que pertençam ao usuário “aluno” [nome].
# find / -user aluno
- perm [modo]: Procura por arquivos que possuem os modos de permissão [modo]. Os [modo] de permissão podem ser numérico (octal) ou literal.
# find / -perm 644
- size [num]: Procura por arquivos que tenham o tamanho [num]. O tamanho é especificado em bytes. Você pode usar os sufixos k, M ou G para representar o tamanho em Quilobytes, Megabytes ou Gigabytes, respectivamente. O valor de [num] Pode ser antecedido de “+” ou “-” para especificar um arquivo maior ou menor que [num].
# find / -size +1 M
- type [tipo]: Procura por arquivos do [tipo] especificado. Os seguintes tipos são aceitos: b - bloco; c - caractere; d - diretório; p - pipe; f - arquivo regular; l - “link” simbólico; s - “socket”.
# find / dev - type b
Xargs
Outra forma de procurar por arquivos e/ou diretórios e executar um comando é através do comando xargs que obtém como a entrada a saída ok do comando antes do pipe e envia como stdin do próximo comando, no caso o ls -ld:
# find / etc -type d | xargs ls -ld
Time
O comando time permite medir o tempo de execução de um programa:
# time find / -name *.conf
Locate
Outro método de busca é o comando locate, mas este em específico não faz a busca recursivamente, e sim por uma base de dados. Então, antes de usar esse comando você precisa atualizar a base de dados com o comando:
# updatedb
Pode ser que a primeira vez ele demore um pouco, porque ele está varrendo, verificando e catalogando todos os arquivos do disco. A sintaxe do comando é bem simples, apenas o comando e o que você pretende procurar.
# locate howto
A saída do comando acima será parecida com:
/usr/share/doc/python2.4-xml/howto.cls
/usr/share/doc/python2.4-xml/xml-howto.tex.gz
/usr/share/doc/python2.4-xml/xml-howto.txt.gz
/usr/share/vim/vim64/doc/howto.txt
Redirecionamentos
Antes de vermos os operadores de redirecionamento e os comandos, vamos a um pouco de teoria que pode ser necessário. O Linux tem três fluxos de dados, Entrada (INPUT), Saída (OUTPUT) e, Diagnósticos e Erros.
Por padrão, a entrada de dados é pelo teclado, e a saída é na tela. Normalmente erros também são mostrados na tela. Normalmente é utilizado alguns termos para identificar essas entradas e saídas padrões. São elas: 0 - Entrada de dados, representada por “stdin” (Standard Input); 1 - Saída de dados, representada por “stdout” (Standard Output); 2 - Saída de erros, representada por “stderr” (Standard Error).
Operadores e Comandos
> (maior): Direciona a saída do comando para um arquivo, substituindo o seu conteúdo, caso o arquivo já exista;
>> (maior-maior): Direciona a saída do comando para um arquivo, adicionando o texto ao final do arquivo, caso ele já exista;
< (menor): Passa o conteúdo do arquivo como argumento para o comando;
2> (dois-maior): Direciona as saídas de erro geradas pelo programa para um arquivo, substituindo seu conteúdo, caso o arquivo já exista;
2>> (dois-maior-maior): Direciona as saídas de erro geradas pelo programa para um arquivo, adicionando o texto ao final do arquivo, caso ele já exista;
2>&1 (dois-maior-e-um): Direciona as saídas de erro para a saída do comando, no caso para STDOUT;
&> (e-maior): Direciona todas as saídas (normal e de erro) para um arquivo, substituindo seu conteúdo, caso ele já exista; &» (e-maior-maior): Direciona todas as saídas (normal e de erro) para um arquivo, adicionando o texto ao final do arquivo, caso ele já exista;
| (barra vertical ou pipe): Utiliza a saída do primeiro comando como argumento do segundo comando; tee: mostra saída na tela e redireciona para um arquivo ou outra localização ao mesmo tempo;
<<: marca o fim de um bloco.
tee: Este comando permite que a saída seja exibida na tela e ao mesmo tempo redirecionada a um arquivo. Caso o arquivo não exista será criado um arquivo.
dd: O comando dd dos sistemas baseados em Linux e Unix, é um programa para copiar e converter arquivos de um local para outro, servindo até para clonar dispositivos ou áreas de discos fixos ou removíveis como CD(s), DVD(s), disquetes, HD(s), dispositivos USB entre outros. A sintaxe do comando é dd if=<origem> of=<destino>.
wc: A maioria dos arquivos de configuração no Unix é separada em linhas, temos este comando para contar as linhas de um arquivo. Este comando indica quantas linhas, palavras e caracteres tem um arquivo. Caso queira apenas ver a contagem de linhas use a flag -l, para contagens de palavras a flag -w e para a contagem de caracteres use a flag -c.
split: Usado para dividir um determinado arquivo em arquivos menores.
file: Informa o tipo do arquivo.
who: Determina quais usuários estão logados no sistema.
w: Mostra tempo que o sistema está ligado, média de carga do sistema, usuários logados.
ln: O comando ln permite criar links. Existem dois tipos de links suportados pelo Linux, os hard links e os links simbólicos. Os links simbólicos têm uma função parecida com os atalhos do Windows: eles apontam para um arquivo, mas se o arquivo é movido para outro diretório, o link fica quebrado. Os hard links por sua vez são semelhantes aos atalhos do OS/2 da IBM, eles são mais intimamente ligados ao arquivo e são alterados junto com ele. Se o arquivo muda de lugar, o link é automaticamente atualizado. Isto é possível porque nos sistemas de arquivos usados pelo Linux cada arquivo possui um código de identificação (chamado de inode), que nunca muda. O sistema sabe que o arquivo renomeado é o mesmo do atalho simplesmente procurando-o pelo inode ao invés do nome.
stat: Um inode é, na realidade, uma estrutura de dados que possui informações sobre um determinado arquivo ou diretório como, por exemplo, dono, grupo, tipo e permissão de acesso. Para sabermos essa e outras informações de um arquivo usamos o comando stat.
sort: Comando usado para organizar em ordem as linhas de um arquivo. Pode-se usar algumas flags para customizar a organização, como por exemplo, -f para ignorar caixa alta e caixa baixa, -n para classificação numerica e -r para ordem invertida.
uniq: Remove linhas duplicadas.
E era isso por hoje!
No próximo post sobre a série preparatória da certificação LPI 1 abordaremos mais um pouco de filtragem de comandos e administração da Shell. Eu fico por aqui, mas recomendo que estudem isso, pois mesmo que não prestem a prova, esse tipo de conhecimento pode fazer a diferença.
Bons estudos!
0 comentários:
Postar um comentário