Shell

De Eriberto Wiki
Ir para: navegação, pesquisa
Shell.png



Nesta página, alguns exercícios sobre scripts em shell Bash.



Twitter.png

by (C) João Eriberto Mota Filho <eriberto (a) eriberto pro br>

Artigo criado em: 04 de setembro de 2012.

Última atualização: veja o rodapé desta página.

Tiny URL ou bit.ly: http://bit.ly/shellbash



Esta página está também disponível pela URL http://eriberto.pro.br/shell.

Exercícios de fixação

Os exercícios a seguir contêm questões que fixam os conhecimentos adquiridos em sala de aula, principalmente em cursos de pós-graduação.

Utilize o Canivete Suíço do Shell Bash, disponível em http://aurelio.net/shell/canivete, como auxiliar para resolver as questões.


Parte 1

Resolva as questões a seguir, todas baseadas no arquivo arq1.txt.

  1. Quantas linhas o arquivo possui?
  2. Quais números estão repetidos?
  3. Quantos números não estão repetidos?
  4. Quantos números não possuem o algarismo 9?
  5. Substitua todos os algarismos 8 por 0 e apague todos os algarismos 5.
  6. Depois da operação anterior, quais números ficam triplicados?
  7. Qual é a soma de todos os números?



Parte 2

Resolva as questões a seguir, todas baseadas no arquivo arq2.tar.bz2.

  1. Quais arquivos possuem o mesmo conteúdo? (dica: use hash md5)?
  2. Quantas linhas, no total, possuem todos os arquivos juntos?
  3. Quantas linhas começam com “E” e terminam com “O”?



Parte 3

Resolva as questões a seguir, todas baseadas no arquivo arq3.gz.

  1. Quantos nomes diferentes de pessoas aparecem nos logs?
  2. Quantas perdas de conexão ocorreram entre 12:08 e 12:13 (incluindo os dois horários)?
  3. Altere todos os nomes “renata” para “luciana”, apenas nas linhas nas quais houver perda de conexão.
  4. Crie um novo arquivo, invertendo a posição do horário com a posição do nome do usuário.



Parte 4

Resolva as questões a seguir, todas baseadas no arquivo arq4.txt.gz.

  1. Quantas vezes o nome “eriberto”, não importando a caixa dos caracteres, aparece no interior do arquivo?
  2. Quantas sentenças de 5 caracteres alfanuméricos aparecem no arquivo?
  3. Faça com que todos os caracteres existentes no arquivo sejam apresentados em caixa baixa.



Parte 5

Resolva as questões a seguir, todas baseadas no arquivo chapeuzinho_vermelho_na_imprensa.txt.gz.

  1. Quantas linhas iniciam com o caractere “-”?
  2. Quantas palavras estão totalmente em caixa alta? (considere como palavras duas ou letras alfanuméricas)
  3. Quantas palavras não possuem as vogais “a” e “e”? (sem acento)
  4. Retire todas as linhas em branco existentes no texto.



Parte 6

Resolva as questões a seguir, todas baseadas no arquivo people.20091103.txt.bz2.

  1. Quantos e-mails diferentes existem no arquivo?
  2. Quantos e-mails diferentes não possuem qualquer algarismo?
  3. Quantos pacotes diferentes existem nas linhas marcadas como “main”? (ignore as linhas marcadas como "non-us/main")



Parte 7

Neste site há uma relação de pacotes que possuem problemas de hardening no Debian. Neste outro site é possivel obter uma lista de pacotes órfãos. Faça uma relação dos pacotes órfãos que possuem problemas de hardening.

Parte 8

Crie um script que faça o seguinte:

  • Gere um número inteiro aleatório entre 1 e 100 e que dê ao usuário 10 chances para que o mesmo adivinhe tal número.
  • Deverá haver mensagens de erro caso:
    • O usuário não escolha um número, mas sim outro caractere qualquer. Utilize uma função para fazer essa validação.
    • O usuário escolha um número fora do range. Utilize uma função para fazer essa validação.
    • O usuário escolha um número não inteiro. Utilize uma função para fazer essa validação.
  • Sempre imprima na tela: "O número escolhido por você é maior/menor do que o escolhido por mim. Restam x tentativas".
  • No caso de acerto, escreva na tela em amarelo: você acertou.
  • No caso de erro após as 10 tentativas, escreva na tela em vermelho: você errou.



Parte 9

Crie um script que faça o seguinte:

  • Verifique se existe o arquivo /etc/bash.bashrc.
  • Caso não exista, utilize uma função para escrever uma mensagem sobre isso no log /var/log/syslog e termine a execução do script. Também deverá haver uma mensagem (a mesma) para o usuário na sua tela (via função).
  • Caso exista, verifique se há a linha "alias ls='ls --color=auto'".
    • Havendo, escreva no log e na tela do usuário, via função, "nada a fazer, saindo.".
    • Não havendo, escreva no log e na tela do usuário, via função, "adicionado alias para o comando ls".