Shell: mudanças entre as edições

De Eriberto Wiki
Ir para navegação Ir para pesquisar
Sem resumo de edição
 
(Uma revisão intermediária pelo mesmo usuário não está sendo mostrada)
Linha 47: Linha 47:
'''Resolva as questões a seguir, todas baseadas no arquivo [http://eriberto.pro.br/files/shell/chapeuzinho_vermelho_na_imprensa.txt.gz chapeuzinho_vermelho_na_imprensa.txt.gz].'''
'''Resolva as questões a seguir, todas baseadas no arquivo [http://eriberto.pro.br/files/shell/chapeuzinho_vermelho_na_imprensa.txt.gz chapeuzinho_vermelho_na_imprensa.txt.gz].'''
# Quantas linhas iniciam com o caractere “-”?
# Quantas linhas iniciam com o caractere “-”?
# Quantas palavras estão totalmente em caixa alta?
# Quantas palavras estão totalmente em caixa alta? (considere como palavras duas ou letras alfanuméricas)
# Quantas palavras não possuem as vogais “a” e “e”? (sem acento)
# Quantas palavras não possuem as vogais “a” e “e”? (sem acento)
# Retire todas as linhas em branco existentes no texto.
# Retire todas as linhas em branco existentes no texto.
<br><br>
<br><br>
==== Parte 6 ====
==== Parte 6 ====
'''Resolva as questões a seguir, todas baseadas no arquivo [http://eriberto.pro.br/files/shell/people.20091103.txt.bz2 people.20091103.txt.bz2].'''
'''Resolva as questões a seguir, todas baseadas no arquivo [http://eriberto.pro.br/files/shell/people.20091103.txt.bz2 people.20091103.txt.bz2].'''
# Quantos e-mails diferentes existem no arquivo?
# Quantos e-mails diferentes existem no arquivo?
# Quantos e-mails diferentes não possuem qualquer algarismo?
# Quantos e-mails diferentes não possuem qualquer algarismo?
# Quantos pacotes diferentes existem nas linhas marcadas como “main”?
# Quantos pacotes diferentes existem nas linhas marcadas como “main”? (ignore as linhas marcadas como "non-us/main")
<br><br>
<br><br>
==== Parte 7 ====
==== Parte 7 ====
'''[http://lintian.debian.org/tags/hardening-no-fortify-functions.html Neste site] há uma relação de pacotes que possuem problemas de hardening no Debian. [http://wnpp.debian.net 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.'''
'''[http://lintian.debian.org/tags/hardening-no-fortify-functions.html Neste site] há uma relação de pacotes que possuem problemas de hardening no Debian. [http://wnpp.debian.net 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.'''

Edição atual tal como às 10h45min de 14 de agosto de 2017



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



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".