Shell: mudanças entre as edições
Sem resumo de edição |
m →Parte 5 |
||
(5 revisões intermediárias pelo mesmo usuário não estão sendo mostradas) | |||
Linha 16: | Linha 16: | ||
'''Resolva as questões a seguir, todas baseadas no arquivo [http://eriberto.pro.br/files/shell/arq1.txt arq1.txt].''' | '''Resolva as questões a seguir, todas baseadas no arquivo [http://eriberto.pro.br/files/shell/arq1.txt arq1.txt].''' | ||
# Quantas linhas o arquivo possui? | # Quantas linhas o arquivo possui? | ||
# Quais números estão | # Quais números estão repetidos? | ||
# Quantos números não estão | # Quantos números não estão repetidos? | ||
# Quantos números não possuem o algarismo 9? | # Quantos números não possuem o algarismo 9? | ||
# Substitua todos os algarismos 8 por 0 e apague todos os algarismos 5. | # Substitua todos os algarismos 8 por 0 e apague todos os algarismos 5. | ||
Linha 23: | Linha 23: | ||
# Qual é a soma de todos os números? | # Qual é a soma de todos os números? | ||
<br><br> | <br><br> | ||
==== Parte 2 ==== | ==== Parte 2 ==== | ||
'''Resolva as questões a seguir, todas baseadas no arquivo [http://eriberto.pro.br/files/shell/arq2.tar.bz2 arq2.tar.bz2].''' | '''Resolva as questões a seguir, todas baseadas no arquivo [http://eriberto.pro.br/files/shell/arq2.tar.bz2 arq2.tar.bz2].''' | ||
Linha 39: | Linha 40: | ||
'''Resolva as questões a seguir, todas baseadas no arquivo [http://eriberto.pro.br/files/shell/arq4.txt.gz arq4.txt.gz].''' | '''Resolva as questões a seguir, todas baseadas no arquivo [http://eriberto.pro.br/files/shell/arq4.txt.gz arq4.txt.gz].''' | ||
# Quantas vezes o nome “eriberto”, não importando a caixa dos caracteres, aparece no interior do arquivo? | # Quantas vezes o nome “eriberto”, não importando a caixa dos caracteres, aparece no interior do arquivo? | ||
# Quantas sentenças de 5 caracteres aparecem no arquivo? | # Quantas sentenças de 5 caracteres alfanuméricos aparecem no arquivo? | ||
# Faça com que todos os caracteres existentes no arquivo sejam apresentados em caixa baixa. | # Faça com que todos os caracteres existentes no arquivo sejam apresentados em caixa baixa. | ||
<br><br> | <br><br> | ||
==== Parte 5 ==== | ==== Parte 5 ==== | ||
'''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> | |||
==== 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.''' | |||
<br><br> | |||
==== 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. | |||
<br><br> | |||
==== 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". | |||
<br><br> |
Edição atual tal como às 10h45min de 14 de agosto de 2017
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.
- Quantas linhas o arquivo possui?
- Quais números estão repetidos?
- Quantos números não estão repetidos?
- Quantos números não possuem o algarismo 9?
- Substitua todos os algarismos 8 por 0 e apague todos os algarismos 5.
- Depois da operação anterior, quais números ficam triplicados?
- Qual é a soma de todos os números?
Parte 2
Resolva as questões a seguir, todas baseadas no arquivo arq2.tar.bz2.
- Quais arquivos possuem o mesmo conteúdo? (dica: use hash md5)?
- Quantas linhas, no total, possuem todos os arquivos juntos?
- Quantas linhas começam com “E” e terminam com “O”?
Parte 3
Resolva as questões a seguir, todas baseadas no arquivo arq3.gz.
- Quantos nomes diferentes de pessoas aparecem nos logs?
- Quantas perdas de conexão ocorreram entre 12:08 e 12:13 (incluindo os dois horários)?
- Altere todos os nomes “renata” para “luciana”, apenas nas linhas nas quais houver perda de conexão.
- 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.
- Quantas vezes o nome “eriberto”, não importando a caixa dos caracteres, aparece no interior do arquivo?
- Quantas sentenças de 5 caracteres alfanuméricos aparecem no arquivo?
- 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.
- Quantas linhas iniciam com o caractere “-”?
- 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)
- 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.
- Quantos e-mails diferentes existem no arquivo?
- Quantos e-mails diferentes não possuem qualquer algarismo?
- 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".