103.1 Trabalho na linha de comando
Resumo Conciso
Informações do sistema e comandos
-
pwd— Exibe o caminho para o directório de trabalho atual -
uname -a— Exibe informações do sistema (kernel, distribuição, arquitetura) -
man <comando>— Exibe a documentação (página man) de um comando -
apropos <termo>— Pesquisa nomes e descrições das páginas man -
type <comando>— Exibe a localização e tipo de um comando (binário, builtin, hashed) -
which <comando>— Retorna apenas a localização absoluta de um comando -
hash -d— Limpa a tabela de hash do shell
Usando o histórico de comandos:
history— Exibe comandos executados anteriormentehistory | grep <termo>— Pesquisa no histórico~/.bash_history— Ficheiro oculto com o histórico persistido- Seta para cima/baixo — Navega pelo histórico na linha de comando
Variáveis de ambiente
env— Exibe todas as variáveis de ambienteset— Exibe variáveis, funções e configurações do shellecho $VARIAVEL— Exibe o valor de uma variávelmyvar=valor— Cria uma variável local (sem espaços ao redor do=)export myvar— Exporta a variável para shells filhosunset myvar— Remove uma variável de ambiente
Aspas e caracteres especiais:
"..."— Aspas duplas preservam todos os caracteres exceto$,`,\e!'...'— Aspas simples preservam o valor literal de todos os caracteres\— Barra invertida escapa caracteres especiais
Exercícios Guiados
Exercício Guiado 1 — Consultar apropos no man
Enunciado: Consultando o sistema man, descubra como fazer o apropos mostrar apenas uma explicação curta de seu uso e em seguida voltar ao shell.
Solução: Rode man apropos e desça a sessão "Options" até encontrar o parágrafo --usage.
Exercício Guiado 2 — Licença do grep no man
Enunciado: Use o sistema man para determinar qual licença de copyright é atribuída ao comando grep.
Solução: Rode man grep e desça até a seção "Copyright" do documento. Note que o programa usa um copyright da Free Software Foundation.
Exercício Guiado 3 — Adicionar diretório ao PATH
-
Use o comando export para adicionar um novo directório ao seu caminho (PATH) — ele não sobreviverá a uma reinicialização.
$ export PATH="/home/yourname/myfiles:$PATH"$ touch myfiles/myscript.sh$ echo '#!/bin/bash' >> myfiles/myscript.sh$ echo 'echo Hello' >> myfiles/myscript.sh$ chmod +x myfiles/myscript.sh$ myscript.shHello -
Use o comando unset para remover a variável PATH. Tente executar um comando (como
sudo cat /etc/shadow) usando sudo. O que aconteceu? Por quê?- O comando
unset PATHapaga as configurações de caminho atuais. Não será possível invocar um binário sem seu endereço absoluto. A solução é usar o caminho absoluto:/usr/bin/sudo /bin/cat /etc/shadow, ou simplesmente sair do shell.
- O comando
Exercícios Exploratórios
Exercício Exploratório 1 — Identificar arquitetura e kernel
Enunciado: 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.
$ $ uname -v$ $ uname -mUse uname -m para arquitetura (ex: x86_64). O -i é obsoleto e pode devolver unknown.
Exercício Exploratório 2 — Comparar histórico de comandos
Enunciado: Imprima na tela as últimas vinte linhas do banco de dados dinâmico history e do ficheiro .bash_history para compará-los.
$ $ history 20$ $ tail -n 20 .bash_historyExercício Exploratório 3 — Descobrir tamanho de bloco
Enunciado: 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.
$ $ apropos block$ $ man lsblk$ $ lsblk -bExercício Exploratório 4 — Caracteres especiais e escaping
Enunciado: Procure na internet a lista completa de caracteres especiais e explore-os.
- Lista:
& ; | * ? " ' [ ] ( ) $ < > { } # / \ ! ~
Exercício Exploratório 5 — Diferenças entre aspas
Enunciado: Tente executar comandos usando strings compostas de caracteres especiais e diversos métodos para escapar deles. Existem diferenças de comportamento entre esses métodos?
$ $ echo "$mynewvar" # Preserva valores especiais de cifrão, crase e barra invertida$ $ echo '$mynewvar' # Todos os caracteres são interpretados literalmenteExercício Exploratório 6 — Descobrir tipo de comando
Enunciado: Use o comando type para descobrir se cd, ls e hash são builtins do shell ou binários externos.
$ type cdcd is a shell builtin$ type lsls is aliased to `ls --color=auto'$ type hashhash is a shell builtinExercício Exploratório 7 — Localizar binários
Enunciado: Use os comandos which e whereis para localizar os binários de gcc e python3, e compare os resultados.
$ which gcc/usr/bin/gcc$ whereis gccgcc: /usr/bin/gcc /usr/lib/gcc /usr/share/man/man1/gcc.1.gz$ which python3/usr/bin/python3$ whereis python3python3: /usr/bin/python3.8 /usr/bin/python3.8-config /usr/lib/python3.8 /usr/share/man/man1/python3.1.gzExercício Exploratório 8 — Navegar no info
Enunciado: Use o comando info para obter documentação sobre o coreutils e navegue para encontrar a descrição do comando ls.
$ info coreutilsNo menu que aparece, navegue com as setas ou/Page Down/Page Up até encontrar a entrada relativa a ls. O info apresenta documentação em formato de nós hiperligados, ao contrário do man que é mais linear.
Exercício Exploratório 9 — Exportar variável EDITOR
Enunciado: Crie uma variável de ambiente EDITOR com o valor /usr/bin/nano, exporte-a e verifique que está disponível para shells filhos.
$ EDITOR=/usr/bin/nano$ export EDITOR$ echo $EDITOR/usr/bin/nano$ bash -c 'echo $EDITOR'/usr/bin/nano