Linux Professional Institute Learning Logo.
Ir para o conteúdo principal
  • Home
    • Todos os recursos
    • LPI Materiais Didáticos
    • Colabore Conosco
    • Publishing Partners
    • Seja um Publishing Partner
    • Quem Somos
    • FAQ
    • Colaboradores
    • Contato
  • LPI.org
103.1 Lição 1
Tópico 101: Arquitetura de Sistema
101.1 Identificar e editar configurações de hardware
  • 101.1 Lição 1
101.2 Início (boot) do sistema
  • 101.2 Lição 1
101.3 Alternar runlevels/boot targets, desligar e reiniciar o sistema
  • 101.3 Lição 1
Tópico 102: Instalação do Linux e administração de Pacotes
102.1 Dimensionar partições de disco
  • 102.1 Lição 1
102.2 Instalar o gerenciador de inicialização
  • 102.2 Lição 1
102.3 Controle de bibliotecas compartilhadas
  • 102.3 Lição 1
102.4 Utilização do sistema de pacotes Debian
  • 102.4 Lição 1
102.5 Utilização do sistema de pacotes RPM e YUM
  • 102.5 Lição 1
102.6 Linux virtualizado
  • 102.6 Lição 1
Tópico 103: Comandos GNU e Unix
103.1 Trabalhar na linha de comando
  • 103.1 Lição 1
  • 103.1 Lição 2
103.2 Processar fluxos de texto usando filtros
  • 103.2 Lição 1
103.3 Gerenciamento básico de arquivos
  • 103.3 Lição 1
  • 103.3 Lição 2
103.4 Fluxos, pipes (canalização) e redirecionamentos de saída
  • 103.4 Lição 1
  • 103.4 Lição 2
103.5 Criar, monitorar e finalizar processos
  • 103.5 Lição 1
  • 103.5 Lição 2
103.6 Modificar a prioridade de execução de um processo
  • 103.6 Lição 1
103.7 Procurar em arquivos de texto usando expressões regulares
  • 103.7 Lição 1
  • 103.7 Lição 2
103.8 Edição básica de arquivos com o vi
  • 103.8 Lição 1
Tópico 104: Dispositivos, sistemas de arquivos Linux e padrão FHS
104.1 Criar partições e sistemas de arquivos
  • 104.1 Lição 1
104.2 Manutenção da integridade de sistemas de arquivos
  • 104.2 Lição 1
104.3 Controle da montagem e desmontagem dos sistemas de arquivos
  • 104.3 Lição 1
104.5 Controlar permissões e propriedades de arquivos
  • 104.5 Lição 1
104.6 Criar e alterar links simbólicos e hardlinks
  • 104.6 Lição 1
104.7 Encontrar arquivos de sistema e conhecer sua localização correta
  • 104.7 Lição 1
How to get certified
  1. Tópico 103: Comandos GNU e Unix
  2. 103.1 Trabalhar na linha de comando
  3. 103.1 Lição 1

103.1 Lição 1

Certificação:

LPIC-1

Versão:

5.0

Tópico:

103 Comandos GNU e Unix

Objetivo:

103.1 Trabalho na linha de comando

Lição:

1 de 2

Introdução

É comum que os recém-chegados ao mundo da administração do Linux e do shell Bash se sintam um pouco perdidos longe do conforto de uma interface gráfica. Eles estão habituados a acessar, com o botão direito do mouse, as dicas visuais e informações contextuais disponibilizadas pelos utilitários gráficos de gerenciamento de arquivos. Portanto, é importante aprender rapidamente a dominar o conjunto relativamente pequeno de ferramentas de linha de comando que permitem acessar instantaneamente todos os dados oferecidos por sua antiga interface gráfica - e muito mais.

Obtendo informações sobre o sistema

De olhos arregalados diante do tracinho piscando de um prompt de linha de comando, você provavelmente se pergunta “Onde estou?” Ou, mais precisamente, “Onde estou agora no sistema de arquivos do Linux? E, se eu criar um novo arquivo, onde ele vai parar?” O que você está procurando é o diretório de trabalho atual, e o comando pwd responderá às suas dúvidas:

$ pwd
/home/frank

Vamos supor que Frank esteja atualmente logado no sistema e em seu diretório pessoal: /home/frank/. Se Frank criar um arquivo vazio usando o comando touch sem especificar qualquer outro local no sistema de arquivos, o arquivo será criado em /home/frank/. Se usarmos ls para listar o conteúdo do diretório, veremos esse novo arquivo:

$ touch newfile
$ ls
newfile

Além de sua localização no sistema de arquivos, você também pode precisar de informações sobre o sistema Linux que está executando, como por exemplo o número exato da versão de sua distribuição ou a versão do kernel do Linux atualmente carregada. A ferramenta uname é a resposta. E, em particular, uname mais a opção -a (“all”).

$ uname -a
Linux base 4.18.0-18-generic #19~18.04.1-Ubuntu SMP Fri Apr 5 10:22:13 UTC 2019 x86_64 x86_64 x86_64 GNU/Linux

Neste caso, uname mostra que a máquina de Frank tem o kernel do Linux versão 4.18.0 instalado e está executando o Ubuntu 18.04 em uma CPU de 64 bits (x86_64).

Obtendo informações sobre comandos

Freqüentemente, você encontrará documentações falando sobre comandos do Linux com os quais ainda não está familiarizado. A própria linha de comando oferece todo tipo de informações úteis sobre o que os comandos fazem e como usá-los com eficácia. As referências mais úteis provavelmente estarão nos muitos arquivos do sistema man.

Como regra, os desenvolvedores Linux escrevem arquivos man e os distribuem junto com os utilitários que criam. Os arquivos man são documentos altamente estruturados cujo conteúdo é dividido intuitivamente em cabeçalhos padronizados. Basta digitar man seguido do nome de um comando para exibir informações como o nome do comando, uma breve sinopse de seu uso, uma descrição mais detalhada e alguns dados importantes sobre o histórico e as licenças de uso. Eis um exemplo:

$ man uname
UNAME(1)             User Commands            UNAME(1)
NAME
   uname - print system information
SYNOPSIS
   uname [OPTION]...
DESCRIPTION
   Print certain system information.  With no OPTION, same as -s.
   -a, --all
      print  all information, in the following order, except omit -p
      and -i if unknown:
   -s, --kernel-name
      print the kernel name
   -n, --nodename
      print the network node hostname
   -r, --kernel-release
      print the kernel release
   -v, --kernel-version
      print the kernel version
   -m, --machine
      print the machine hardware name
   -p, --processor
      print the processor type (non-portable)
   -i, --hardware-platform
      print the hardware platform (non-portable)
   -o, --operating-system
      print the operating system
   --help display this help and exit
   --version
      output version information and exit
AUTHOR
   Written by David MacKenzie.
REPORTING BUGS
   GNU coreutils online help: <http://www.gnu.org/software/coreutils/>
   Report uname translation bugs to
   <http://translationproject.org/team/>
COPYRIGHT
   Copyright©2017 Free Software Foundation, Inc. License  GPLv3+: GNU
   GPL version 3 or later <http://gnu.org/licenses/gpl.html>.
   This is free software: you are free to change and redistribute it.
   There is NO WARRANTY, to the extent permitted by law.
SEE ALSO
   arch(1), uname(2)
   Full documentation at: <http://www.gnu.org/software/coreutils/uname>
   or available locally via: info '(coreutils) uname invocation'
GNU coreutils 8.28       January 2018             UNAME(1)

O comando man só funciona quando fornecemos um nome de comando exato. Porém, se não tiver certeza do nome do comando que deseja pesquisar, use o comando apropos para explorar os nomes e descrições das páginas man. Se, por exemplo, você não consegue se lembrar de que uname informa a versão atual do kernel do Linux, pode passar a palavra kernel para apropros. Aparecerão muitas linhas de saída, mas dentre elas haverá o seguinte:

$ apropos kernel
systemd-udevd-kernel.socket (8) - Device event managing daemon
uname (2)            - get name and information about current kernel
urandom (4)          - kernel random number source devices

Caso não precise da documentação completa de um comando, pode obter seus dados básicos rapidamente usando type. Neste exemplo, usamos type para consultar quatro comandos separados ao mesmo tempo. Os resultados mostram que cp (“copy”) é um programa que vive em /bin/cp e que kill (muda o estado de um processo em execução) é um comando interno do shell (shell builtin) — o que significa que é, na verdade, parte do próprio shell Bash:

$ type uname cp kill which
uname is hashed (/bin/uname)
cp is /bin/cp
kill is a shell builtin
which is /usr/bin/which

Note que, além de ser um comando binário regular como cp, uname também aparece como “hashed”. A razão para isso é que Frank recentemente usou uname e, para aumentar a eficiência do sistema, o comando foi adicionado a uma tabela de hash para ficar mais acessível na próxima vez que for executado. Se Frank rodasse type uname após a inicialização do sistema, ele constataria que type voltaria a descrever uname como um binário regular.

Note

Uma maneira mais rápida de limpar a tabela de hash é executar o comando hash -d.

Às vezes — principalmente ao trabalhar com scripts automatizados — precisamos de uma fonte mais simples de informações sobre um comando. O comando which, que o comando type do exemplo anterior rastreou para nós, retorna somente a localização absoluta de um comando. Este exemplo localiza os comandos uname e which.

$ which uname which
/bin/uname
/usr/bin/which
Note

Se quiser exibir informações sobre comandos internos do shell (“builtin”), use o comando help.

Usando o histórico de comandos

Pode acontecer de você pesquisar cuidadosamente o uso adequado de um comando e executá-lo com êxito junto com uma seleção complicada de opções e argumentos. Mas o que ocorre algumas semanas depois, quando você precisa executar o mesmo comando com as mesmas opções e argumentos, mas não consegue se lembrar dos detalhes? Ao invés de recomeçar a pesquisa do zero, vale a pena tentar recuperar o comando original usando history.

Digite history para exibir os comandos mais recentes em ordem de execução. É fácil pesquisar nesses comandos usando um pipe para canalizar uma string específica para o comando grep. O exemplo abaixo procura por qualquer comando que inclua o texto bash_history:

$ history | grep bash_history
1605 sudo find /home -name ".bash_history" | xargs grep sudo

Aqui, um único comando é retornado junto com seu número na seqüência, 1605.

E por falar em bash_history, esse é na verdade o nome de um arquivo oculto que costuma estar no diretório inicial do usuário. Por se tratar de um arquivo oculto (indicado pelo ponto que precede seu nome de arquivo), ele só será visível ao se listar o conteúdo do diretório, usando ls com o argumento -a:

$ ls /home/frank
newfile
$ ls -a /home/frank
.  ..  .bash_history  .bash_logout  .bashrc  .profile  .ssh  newfile

O que contém o arquivo .bash_history? Dê uma olhada: você encontrará ali centenas e centenas de seus comandos recentes. No entanto, você pode se surpreender ao descobrir que alguns de seus comandos mais recentes estão ausentes. Isso porque, embora eles sejam instantaneamente adicionados ao banco de dados dinâmico history, as últimas adições ao seu histórico de comandos não são gravadas no arquivo .bash_history até o encerramento da sessão.

Para aproveitar o conteúdo de history e tornar sua experiência na linha de comando muito mais rápida e eficiente, use as setinhas para cima e para baixo de seu teclado. Pressione a tecla para cima várias vezes para preencher a linha de comando com os comandos recentes. Quando chegar ao que está procurando, basta dar Enter para executá-lo. Assim, é fácil recuperar e, se desejado, modificar comandos diversas vezes durante uma sessão no shell.

Exercícios Guiados

  1. Consultando o sistema man, descubra como fazer o apropos mostrar apenas uma explicação curta de seu uso e em seguida voltar ao shell.

  2. Use o sistema man para determinar qual licença de copyright é atribuída ao comando grep.

Exercícios Exploratórios

  1. Identifique a arquitetura de hardware e a versão do kernel do Linux que estão sendo usadas no seu computador em um formato de saída fácil de ler.

  2. Imprima na tela as últimas vinte linhas do banco de dados dinâmico history e do arquivo .bash_history para compará-los.

  3. Use a ferramenta apropos para identificar a página man na qual se encontra o comando necessário para mostrar o tamanho de um dispositivo de bloco físico conectado em bytes, ao invés de megabytes ou gigabytes.

Resumo

Nesta lição, você aprendeu:

  • Como obter informações sobre a localização do sistema de arquivos e a pilha de software do sistema operacional.

  • Como encontrar ajuda para o uso de comandos.

  • Como identificar a localização do sistema de arquivos e os tipos de binários de comandos.

  • Como encontrar e reutilizar comandos executados anteriormente.

Os seguintes comandos foram abordados nesta lição:

pwd

Exibe o caminho para o diretório de trabalho atual.

uname

Exibe a arquitetura de hardware do sistema, a versão do kernel do Linux, a distribuição e a versão da distribuição.

man

Acessa os arquivos de ajuda com a documentação do uso dos comandos.

type

Exibe a localização de um ou mais comandos no sistema de arquivos e seu tipo.

which

Exibe a localização de um comando no sistema de arquivos.

history

Exibe ou reutiliza comandos executados anteriormente.

Respostas aos Exercícios Guiados

  1. Consultando o sistema man, descubra como fazer o apropos mostrar apenas uma explicação curta de seu uso e em seguida voltar ao shell.

    Rode man apropos e desça a sessão “Options” até encontrar o parágrafo --usage.

  2. Use o sistema man para determinar qual licença de copyright é atribuída ao comando grep.

    Rode man grep e desça até a seção “Copyright” do documento. Note que o programa usa um copyright da Free Software Foundation.

Respostas aos Exercícios Exploratórios

  1. Identifique a arquitetura de hardware e a versão do kernel do Linux que estão sendo usadas no seu computador em um formato de saída fácil de ler.

    Rode man uname, leia a seção “Description” e identifique os argumentos de comandos que permitem exibir somente os resultados exatos que se deseja. Note que -v mostra a versão do kernel e -i a plataforma de hardware.

    $ man uname
    $ uname -v
    $ uname -i
  2. Imprima na tela as últimas vinte linhas do banco de dados dinâmico history e do arquivo .bash_history para compará-los.

    $ history 20
    $ tail -n 20 .bash_history
  3. Use a ferramenta apropos para identificar a página man na qual se encontra o comando necessário para mostrar o tamanho de um dispositivo de bloco físico conectado em bytes, ao invés de megabytes ou gigabytes.

    Uma maneira seria executar apropos com o string block, ler os resultados, notar que lsblk lista os dispositivos de bloco (e assim seria a ferramenta mais provável para dar a resposta que buscamos), rodar man lsblk, descer pela seção “Description” e notar que -b exibe o tamanho de um dispositivo em bytes. Finalmente, executamos lsblk -b para ver o que aparece.

    $ apropos block
    $ man lsblk
    $ lsblk -b

Linux Professional Insitute Inc. Todos os direitos reservados. Visite o site dos Materiais Didáticos: https://learning.lpi.org
31/5000 Este trabalho está licenciado sob a Licença Creative Commons Atribuição-Uso Não-Comercial-NãoDerivativos 4.0 Internacional.

Próxima Lição

103.1 Trabalhar na linha de comando (103.1 Lição 2)

Ir para a próxima lição

Linux Professional Insitute Inc. Todos os direitos reservados. Visite o site dos Materiais Didáticos: https://learning.lpi.org
31/5000 Este trabalho está licenciado sob a Licença Creative Commons Atribuição-Uso Não-Comercial-NãoDerivativos 4.0 Internacional.

A LPI é uma organização sem fins lucrativos.

© 2023 O Linux Professional Institute (LPI) é um organismo de apoio aos profissionais de Open Source e referência mundial em certificação. Com mais de 200.000 pessoas certificadas, somos o principal organismo de certificação independente para Linux e Open Source do mundo. O LPI certificou profissionais de mais de 180 países, oferece exames em diversos idiomas e tem centenas de parcerias de formação em todo o globo.

Nossa missão é proporcionar oportunidades econômicas e criativas para todos, tornando universalmente acessível a certificação de conhecimentos e competências em matéria de Open Source.

  • LinkedIn
  • flogo-RGB-HEX-Blk-58 Facebook
  • Twitter
  • Entre em Contato
  • Política de Privacidade e Cookies

Encontrou um erro ou quer ajudar a aprimorar esta página? Escreva pra nós.

© 1999–2023 The Linux Professional Institute Inc. Todos os direitos reservados.