Resolução dos exercícios Shell Linux – Do aprendiz ao administrador
QUESTÕES DO CAPÍTULO 1 (INTRODUÇÃO)
1) Cite os cinco shells mais conhecidos. 2) Você encontra-se logado em um ambiente gráfico e deseja acessar o primeiro tty do sistema, quais conjunto de teclas devem ser utilizados? 3) Quando o terminal de comandos é acessado por qualquer usuário que não seja o root, é apresentado a seguinte linha: 4) Qual a variável de ambiente do sistema operacional GNU/Linux armazena o Shell padrão? 1) Quais diretórios do GNU/Linux são considerados especiais? 2) Qual variável do sistema que armazena os diretórios onde ficam os arquivos executáveis do sistema? 3) Qual o diretório que é indicado para instalar programas opcionais? 4) Seu sistema está demorando para carregar, provavelmente pode ser alguma falha durante o boot. Sabemos que o GNU/Linux armazena os arquivos de log em um diretório específico, qual seria ele? Dê o caminho absoluto. 5) Existem diretórios no GNU/Linux que são indicados para montar unidades temporárias como pendrives e HDs externos, quais são estes diretórios? 6) Mario efetua downloads constantemente. Após reiniciar seu computador, ele percebeu que seus arquivos baixados não estavam mais no diretório que deveria estar. Qual o possível diretório que Mario usa para armazenar seus downloads? 7) Dos seguintes diretórios: /var, /tmp, /usr, /root e /etc, qual é mais importante em uma rotina de backup? 8) Dentre os diretórios: /etc, /home, /lib, /usr e /root, quais precisam ser parte do diretório principal? 9) Que variável guarda a lista de diretórios que o shell usa para encontrar arquivos executáveis? 10) Informe qual diretório é usado para obter informações sobre os processos. 1) A seguinte estrutura de diretórios deve ser criada: “/ -> home -> usuario -> cap3 -> principais -> comandos”. Como podemos criar tal estrutura com apenas um comando? 2) Execute o comando que transforme o arquivo “Capítulo3.odt” em um arquivo oculto no sistema. 3) Um usuário deseja remover com confirmação cada arquivo do diretório /mnt/lixo. Qual comando ele deve usar? 4) O comando locate pesquisa por arquivos baseando em um banco de dados próprio. Qual comando é responsável por atualizar este banco de dados? ou apenas executado como root 5) O comando para exibir os processos apenas do usuário bruno é: 6) Tales deseja encontrar um arquivo chamado exercícios.txt. Porém ele não lembra se o nome do arquivo contém alguma letra maiúscula. É sabido que este arquivo está salvo em /home. Utilizando o comando find, como Tales poderia encontrar seu arquivo independente de letras maiúsculas ou minúsculas? 7) Qual o comando utilizado para desmontar um pendrive montado em /media/pendrive? 8) Qual arquivo no sistema operacional GNU/Linux apresenta todas as variações de Shell presentes no mesmo? Dê o caminho absoluto. 9) O comando mount -a monta todos os dispositivos de armazenamento situados em qual arquivo? Dê o caminho absoluto. 10) Alexandre Martins é uma administrador de sistema GNU/Linux e está passando pela seguinte situação: Toda vez que ele executa o comando rm, o mesmo solicita a confirmação para a exclusão do arquivo. O que está acontecendo com o sistema de Alexandre? 11) O administrador precisa cancelar um shutdown programado para as 23:00. Qual comando deverá ser executado? 12) É correto afirmar que o comando pwd retorna o diretório atual e o comando tty retorna o console atual em que se está logado? 13) Qual comando irá exibir as últimas linhas de um arquivo /var/log/cups/access_log? 14) Qual comando copia arquivos com a extensão .txt de /dir1 para /dir2, preservando as informações atuais do arquivo, como datas? 15) Deseja-se efetuar uma busca em todo o sistema por todos arquivos que contenha em seu nome a palavra config, salvando o seu resultado no arquivo $HOME/configuracoes. Todo o resultado não desejado da pesquisa deverá ser descartado, exibindo apenas o que foi pedido. 16) Um arquivo chamado bigbashview.tar.gz foi baixado para o diretório /tmp. Qual o comando utilizado para descompactar o arquivo para dentro do diretório ~/scripts, independente em qual lugar do sistema você esteja? 1) Ao executar o comando kill -9 2234, qual sinal é passado para o processo 2234? 2) Sabendo que o comando pgrep é responsável por mostrar o PID de um determinado processo, qual será a saída exibida pelo comando pgrep init? 3) Ao executar um comando precedido pelo comando sudo, uma senha é solicitada ao usuário. A quem pertence tal senha? 4) Qual o UID do usuário root? 5) Qual a função do comando pstree? 6) Qual o comando usado para saber os usuários das tty/pts e o que foi aberto por eles? 7) Um processo com PID 2891 está no seu sistema sem funcionar. O superusuário digita o seguinte comando: kill 2891. Porém, nada muda. O que pode ser feito para finalizar o programa? 8) Qual o sinal enviado ao processo quando executado kill 6891? 9) O SIGKILL é equivalente a qual identificação? 10) Analisando a saída do comando ls -l abaixo, qual dos arquivos possui mais dados? Resposta 11) Lendo o manual de instalação de um produto específico, há uma restrição para permissionar o diretório cache para 777. Qual o potencial problema desse pemissionamento? 12) Visualize a saída do comando ls -l abaixo e diga quais dos arquivos são executáveis. Resposta 13) Para impedir que haja problemas, você precisa retirar somente a permissão de gravação do arquivo abaixo. Qual comando e sintaxe deverá ser utilizado? Resposta 14) Adicione o grupo restritos e altere o grupo do diretório /mnt/dados para restritos e o dono para dados, recursivamente. 15) Deseja-se criar um usuário para liberar acesso a um novo aluno. Como deverá ser criado o usuário chamado alunoshell34? 16) Como alterar a senha do usuário convidado? 17) Converta a permissão -r–r–r– para o formato octal. 18) Converta a permissão -rwx—r-x para a o formato octal. 19) Qual o formato octal para retirar todas as permissões de um arquivo ou diretório? Qual seria o comando para realizar tal procedimento? 20) Qual será a permissão do arquivo codificar-arquivo.sh após a execução do comando chmod o=x codificar-arquivo.sh? 21) Crie um arquivo chamado lista-de-arquivos.txt com a saída do comando ls -l ~ 1) Bruno utilizou o comando wget para baixar o arquivo http://biglinux.c3sl.ufpr.br/iso/BIGLINUX-4.2.iso, porém quando estava 93% completado, sua conexão foi interrompida. Qual o comando completo deve se utilizar para retornar o download de onde parou, sem que seja preciso baixar o arquivo novamente? 2) Deseja-se baixar um arquivo grande pela rede, porém a velocidade de download deve ser limitada a 100 kbps para que não prejudique a conexão de outros utilizadores que estiveram na mesma rede. Suponha que o arquivo a ser baixado seja o http://biglinux.c3sl.ufpr.br/iso/BIGLINUX-4.2.iso. Qual comando deverá 3) Existe um arquivo de áudio chamado gravação-29-12-2015.mp3 e precisa ser reproduzido, porém a interface gráfica encontra-se inativa. Como reproduzir esse arquivo direto do terminal de comandos? 4) Ao editar um arquivo de texto sobre software livre, deseja-se que o mesmo seja aberto e o cursor posicionado na primeira palavra chamada “liberdade”. Suponha que o arquivo chame Liberdades do Software Livre, como deverá ser procedida a edição? 5) Como é feita a checagem de integridade de um arquivo utilizando o md5? 6) Adriano tenta acessar seu servidor Linux utilizando o seguinte comando: Porém percebe que a conexão não é realizada, apresentando a seguinte mensagem na tela: Então ele percebe que a porta correta para a conexão é a 2020 e não a 22, que é definida por padrão. Qual o comando completo para que ele consiga se conectar em seu servidor? 7) Bruno pretende enviar o arquivo kaiana.iso para o servidor kaiana.com.br via ssh. Supondo que o arquivo kaiana.iso esteja no diretório local ~/Distro/kaiana.iso e deseja-se copiar para o servidor em /home/kaiana/downloads/, através da porta 2222. Qual o comando utilizado para realizar tal cópia? 1) Dentre os comandos: ls, df, ps, top e du, quais exibem os processos no Linux? 2) Qual o comando que informa o uso dos sistemas de arquivos montados? 3) O sistema está com o processamento muito elevado e a máquina está esquentando cada vez mais, você decide verificar o que está acontecendo executando o comando ‘top’, então percebe que exite um processo que está comprometendo o sistema, qual o procedimento para matar o processo diretamente da execução do comando ‘top’? 4) Qual a maneira mais simples de verificar a quantidade de memórias livres e utilizadas no sistema em Mega Bytes? 5) Acessando um diretório, verifica-se que existem diversos arquivos e diretórios. Como descobrir o espaço total, em formato humano (Kilo byte, Mega byte e Giga byte), ocupado no diretório corrente? 6) Existe uma interface de rede, wlan0, que encontra-se desconfigurada. Levando em conta que o ip deverá ser o 192.168.1.12 e a mascara de rede 255.255.255.0, qual o comando utilizado para realizar a configuração da rede? 1) Qual comando é usado para atualizar a lista de repositórios em uma distribuição Debian e uma distribuição Fedora? 2) Qual comando é usado para instalar o pacote vim em uma distribuição Debian? 3) Qual o comando é usado para atualizar todo o sistema em uma distribuição Debian, removendo pacotes obsoletos? 4) Deseja-se instalar o aplicativo gimp, mas antes é interessante realizar uma pesquisa pelo aplicativo. Tendo em mente que a pesquisa pelo pacote será feita em uma distribuição Debian qual comando deverá ser utilizado? 5) A utilização do aplicativo apache não é mais necessária no sistema. Qual comando utilizado para removê-lo? 6) Qual o comando utilizado para remover todas as dependências não utilizadas em uma distribuição Debian? 7) Você acabou de fazer uma grande atualização do sistema e está com pouco espaço em seu sistema raiz que está em uma partição separada e possui um espaço limitado. Como você poderia liberar algum espaço, caso utilize uma distribuição Debian? 8) Em uma distribuição Debian deseja-se instalar o aplicativo skype.deb que foi baixado da internet. Qual o procedimento para instalá-lo? 9) Um sistema Debian estava sendo atualizado, instalando e configurando os pacotes baixados, quando a energia acaba e a atualização é interrompida bruscamente. Alguns pacotes quando estavam sendo configurados acabaram sendo corrompidos durante a instalação. Quais comandos devem ser usados para concertar o problema e finalizar a atualização? 10) Através do comando ‘rpm’, qual o comando para exibir a lista de pacotes instalados? 11) Deseja-se instalar um pacote ‘rpm’ que foi baixado manualmente, porém esse pacote possui dependências. Qual o comando utilizado para instalar esse pacote e suas dependências de forma automática? 12) Através do comando ‘rpm’, qual o comando para exibir informações sobre um pacote instalado? 13) Qual o comando utilizado para manter todo o sistema RedHat atualizado? 14) Mario deseja instalar o Java livre no seu sistema RedHat, porém não sabe o nome corretamente. Como ele poderá pesquisar pelo pacote para que assim possa instalá-lo? 1) Crie um comando, usando um ou mais comandos a seguir: cut, tac ou cat, que informe somente o nome de todas as contas do arquivo /etc/passwd com seus respectivos UID e GID. 2) Crie um comando para converter todos os caracteres de um arquivo /etc/passwd para maiúsculo. 3) Qual comando mostra a linha completa dos usuários talesam e bigbruno do arquivo /etc/passwd? 4) Usando o comando grep ou sed, crie um comando para exibir apenas os comentários do arquivo ~/.bashrc. 5) Defina a sintaxe para direcionar a saída padrão de CMD1 para entrada padrão de CMD2. 6) Qual o caminho completo do arquivo que contém a lista de usuário do sistema? 7) Mario está trabalhando em um diretório contendo somente um arquivo, chamado ARQ1. O que será exibido após executar os seguintes comandos?. Resposta 8) Qual expressão regular combina com Linux e linux, mas não com linux.com e não com TurboLinux? 9) Como eu posso verificar o sucesso ou não de um comando executado? 10) Descreve uma maneira de como identificar o caractere ‘*’ dentro de um arquivo. 11) Este exercício consiste em fazer o download de uma página da web, classifica e filtrar os resultados para subdomínios e servidores, por fim salvar o resultado em um arquivo texto. Dica: utilize os comandos wget, cat, cut, grep e sort. Exemplo da saída do arquivo subdominios.txt: a) Baixe a página principal do kde.org. b) Agora precisamos tentar filtrar os resultados de subdomínios de kde.org. Para fazer isso, pode procurar as linhas com kde.org do texto correspondente: c) O resultado será muito grande para ser utilizado. Se queremos continuar a filtrar o resultado, podemos supor que a maioria dos domínios têm uma “http: //” na frente deles, e nós podemos tentar cortar as linhas com base em um delimitador de dois pontos, obtendo assim o segundo campo d) Agora, a maioria das linhas vai começar com // para que possamos cortar com base em um “/”, pegue o terceiro campo: e) Remover linhas duplicadas com comando sort: f) Caso precise remover caracteres à direita de uma linha com um nome de domínio, como neste exemplo: ev.kde.org”>KDE e.V.< Então você pode ter um problema, porque o caráter de fuga começa com uma aspa. Neste caso você precisará usar uma barra invertida para escapar das aspas para funcionar como uma cadeia em vez de um ponto de demarcação. Veja abaixo: g) Salvar os resultados em texto: h) Exibir a saída do arquivo texto para que seja mostrado apenas os subdomínios: i) Grava a saída no arquivo texto, sobrescrevendo o conteúdo original: 1) Na confecção de um novo script bash, qual deve ser o valor de sua primeira linha? 2) Como executar um script em bash que não possui permissão de execução? 3) Como criar um comentário em Shell Script e quais os meios de fazer? 4) Existe um script chamado nome-da-musica.sh o qual precisa ser passado três ou No ultimo parâmetro o nome está entre aspas pois existe espaço no nome. b) echo "Gênero: $1" 1) Veja a seguir o script em bash e diga o que será feito: Resposta 2) Considere o seguinte script, gravado em um arquivo e com a permissão de Qual a saída produzida no terminal por esse script? 3) Observe o seguinte script testando.sh: Qual será o resultado exibido para o usuário? 4) Crie um script em shell que mostre a linha de um arquivo contendo a palavra “incerteza”. O arquivo deverá ser passado como parâmetro, ou seja, a execução será algo como: bash script.sh arquivo. Caso nenhum arquivo seja passado como parâmetro, deverá obter a saída: “Erro, arquivo faltando”. Obs.: Use o arquivo medo.txt como parâmetro. # Verifica se o arquivo existe com o parâmetro $1 que recebe o arquivo. 5) Faça um script em shell para verificar se hoje é dia 30, caso afirmativo mostrar: “Finalmente, dia de pagamento”, senão exibir: “Preciso economizar nas contas”. #Podemos utilizar o comando date diretamente dentro da checagem if, mas em alguns scripts podem ficar com uma apresentacao melhor transformando comandos em variaveis, como no caso que irá transformar o resultado do comando date para dia em uma variavel chamada $DIA 6) Faça um script em bash para cumprimento ao root. Caso o usuário seja o root, #Confere com o comando whoami se o usuario que está executando o script tem poderes de root 7) Existe um arquivo tar chamado poemas.tar contendo três arquivos txt dentro. Em cada arquivo txt existe um poema. Crie um script que possa varrer os três arquivos txt e formar um novo poema utilizando apenas as frases: “incerta”, “ódio”, e “ilude”, em sequência. Cada palavra corresponde a uma frase, que deverá aparecer uma em baixo da outra, em um arquivo txt chamado poema_final.txt que deverá ser compactado gerando o arquivo poema_final.txt.gz. ARQUIVOS=$(tar -tf poemas.tar) 8) Faça um script em Shell para trocar a codificação de um arquivo texto. Por exemplo: de iso-8859-1 para UTF-8. O arquivo deverá funcionar da seguinte maneira: Informações adicionais Para descobrir todos os tipos de codificações disponíveis: Para converter de um formato para outro: Resposta # Convertendo arquivo… # Testa se o arquivo é binário, se for sai do script, senão codifica. # Testa se a saída foi bem sucedida. # Testa a remoção do arquivo antigo # Testa se a saída foi bem sucedida. else 9) Crie um script em shell para realizar um becape. O arquivo de becape gerado deverá conter o seguinte formato: becape-data_de_criação.tar.bz2. Junto a esse arquivo deverá ser gerado um arquivo de log chamado logBKP aonde deverá conter as seguintes informações: O diretório aonde ficará armazenado o becape deverá ser o “$HOME/becape/”, assim como o arquivo de log. O diretório a ser compactado é de sua escolha. Deverá ter uma condição (0 ou 1) para informar se deseja (1) ou não (0) gerar o log. O becape deverá ser feito de forma recursiva, preservando as permissões dos arquivos. # Formato da data que será acoplada ao nome do arquivo. # Diretório onde ficará o becape # Cria o diretório de becape caso o mesmo não exista # Diretório dos arquivos que serão copiados # Nome do arquivo de log e diretório a ser gravado # Criar Log? (padrão = 1) # Configurações gerais #Confere se é para gerar histórico do becape #Compacta os arquivos e insere no histórico de becape os arquivos copiados #Inclui informações finais no histórico de becape 10) Utilizando como base o arquivo /etc/passwd do seu sistema, desenvolva um script em shell capaz de verificar quantos usuário “humanos” há em seu sistema. Obs, normalmente nos sistemas GNU/Linux usuário humanos utilizam o UID (terceira coluna do arquivo) a partir de 1000 e a cada usuário adicionado é somado um número. #Com o comando cut especificamos o delimitador como dois pontos, selecionamos para trabalhar com a terceira ocorrência e utilizamos essa regra em todas as linhas do arquivo /etc/passwd, o resultado será repassado para o grep, aonde serão filtradas as linhas que possuam qualquer número entre 1000 e 1999, então o resultado do grep é repassado para o comando wc, que conta o número de linhas que recebeu da saída do grep. Dessa forma temos o número de usuários humanos cadastrados no sistema. numero_usuarios="$(cut -d: -f3 /etc/passwd | grep 1[0-9][0-9][0-9] | wc -l)" echo "O número de usuários é $numero_usuarios"[/bash]
11) Qual é o comando que fecha a estrutura de repetição for e while? 12) Qual comando fecha uma estrutura case? 1) Utilize o comando read para perguntar o nome do usuário, exibi-lo na tela e, por fim, salvar no arquivo “/tmp/usuario”. echo "Qual seu nome?" 2) Utilizando o kdialog, crie um diálogo de sim/não perguntando se o usuário deseja apagar a pasta de cache do navegador Firefox, nesse mesmo diálogo informe também quanto de espaço em disco esse diretório está utilizando. O endereço do diretório é: “$HOME/.cache/mozilla/firefox”. kdialog –title $"Apagar cache do Firefox" –yesno $"Deseja apagar o diretório de cache do navegador Firefox? 3) Utilizando o dialog, exiba na tela a data e hora atual. dialog –msgbox "Agora são $(date +%H:%M\ do\ dia\ %d/%m/%Y.)" 0 0[/bash]
4) Em quais situações é mais vantajoso utilizar o dialog? 5) Em quais situações é mais vantajoso utilizar o kdialog? 6) Em quais situações é mais vantajoso utilizar o zenity? 7) Crie um temporizador utilizando zenity, aonde deve ser apresentada uma escala com até 600 segundos. Ao final do período estipulado exiba uma mensagem ao usuário informando quanto tempo passou. temporizador=$(zenity \ sleep $temporizador zenity \ 8) Utilize o kdialog para criar uma interface que exiba um diálogo para abrir um arquivo de imagem, depois um diálogo para salvar um arquivo de imagem, logo após, um diálogo de menu com as opções de resolução: 640×480, 1280×720 e 1920×1080. Crie com esses diálogos um script de redimensionamento de imagem. img_origem="$(kdialog –title "Redimensionar imagem" –getopenfilename "$HOME" "*.jpg *.png *.gif *.tiff *.bmp")" img_destino="$(kdialog –title "Redimensionar imagem" –getsavefilename "$HOME" "*.jpg *.png *.gif *.tiff *.bmp")" resolucao=$(kdialog –title "Redimensionar imagem" –menu "Escolha uma resolução:" 640×480 "640×480" 1280×720 "1280×720" 1920×1080 "1920×1080") convert "$img_origem" -resize $resolucao "$img_destino" kdialog –title "Redimensionar imagem" –msgbox "Conversão concluída!"[/bash]
1) Qual a principal função de um sistema init? 2) Cite 3 tipos de inits. 3) Qual o procedimento utilizado para ativar o serviço samba no Upstart? 4) Qual o procedimento para parar e iniciar o servidor samba no Upstart? Iniciar o serviço samba: 5) O Desktop Manager Gnome acabou de ser instalado, jundo com o GDM (Gnome Display Manager), o qual deseja-se que inicie o serviço junto com o boot. Qual o procedimento utilizado para habilitar o serviço gdm no boot para o init Systemd? 6) O Gnome acaba de ser atualizado, porém você encontra-se logado no Gnome, e para que as mudanças surjam efeito é preciso reiniciar o servidor X, o que pode ser feito reiniciando o serviço do gdm. Como proceder para reiniciar o gdm? 1) Defina o que é um sistema multitarefas e um sistema multiusuário. Dê exemplo de cada um deles. 2) Defina o que é a GPL e para que ela serve? 3) Quantas são as liberdades ou regras criadas para proteger o software livre e quais são? 4) O que é o projeto GNU?
Resposta
Resposta
tales@orion ~$
Descreva detalhadamente o que significa cada item.
Resposta
Resposta
QUESTÕES DO CAPÍTULO 2 (ÁRVORE DE DIRETÓRIOS)
Resposta
Resposta
Resposta
Resposta
Resposta
Resposta
Resposta
Resposta
Resposta
Resposta
QUESTÕES DO CAPÍTULO 3 (PRINCIPAIS COMANDOS)
Resposta
Resposta
Resposta
Resposta
Resposta
Resposta
Resposta
Resposta
Resposta
Resposta
Resposta
Resposta
Resposta
Resposta
Resposta
Resposta
QUESTÕES DO CAPÍTULO 4 (ATRIBUTOS INTRODUTÓRIOS AO SHELL)
Resposta
Resposta
Resposta
Resposta
Resposta
Resposta
Resposta
Resposta
Resposta-rw-r--r-- 1 talesam users 0 Set 10 23:15 codificar-arquivo.sh
-rw-r--r-- 1 talesam users 0 Set 10 23:16 cumprimento-ao-root.sh
-rw-r--r-- 1 talesam users 0 Set 10 23:16 enviar-email.sh
Resposta-rw-r--r-- 1 talesam users 1461 Set 2 01:49 codificar-arquivo.sh
-rwxr-xr-x 1 talesam users 1146 Set 8 02:07 cumprimento-ao-root.sh
-rwxr-xr-x 1 talesam users 1613 Set 10 01:51 enviar-email.sh
-rw-r--r-- 1 talesam users 0 Set 11 00:31 dados.php
Resposta
chown -R dados:restritos /mnt/dados/[/bash]
Resposta
Resposta
Resposta
Resposta
Resposta
Comando:
[bash]chmod 000 arquivo[/bash]
Resposta
Resposta
QUESTÕES DO CAPÍTULO 5 (APLICATIVOS PARA O DIA A DIA)
Resposta
ser utilizado?
Resposta
Resposta
Resposta
Respostassh [email protected]
ssh: connect to host deskfacil.com port 22: Connection timed out
Resposta
Resposta
QUESTÕES DO CAPÍTULO 6 (MONITORANDO O SISTEMA)
Resposta
Resposta
Resposta
Resposta
Resposta
Resposta
QUESTÕES DO CAPÍTULO 7 (MANIPULAÇÃO DE PACOTES)
Resposta
Resposta
Resposta
Resposta
Resposta
Resposta
Resposta
Resposta
Resposta
Resposta
Resposta
Resposta
Resposta
Resposta
QUESTÕES DO CAPÍTULO 8 (MANIPULAR TEXTOS DE FORMA NÃO INTERATIVA)
Resposta
Resposta
Resposta
Resposta
Resposta
Resposta$ MINHAVAR=ls
$ echo $MINHAVAR “$MINHAVAR” ‘$MINHAVAR’ `$MINHAVAR`
Resposta
Resposta
Resposta$ cat subdominios.txt
nome1.kde.org
nome2.kde.org
nome3.kde.org
b) Filtre todos os resultados que contenha kde.org.
c) Supondo que os subdomínios possuem “http://” na frente do domínio, filtre novamente para reduzir a saída do conteúdo.
d) A maioria das linhas terá //, use outro filtro para remover as barras.
e) Remova todas as linhas duplicadas.
f) Remova todos os caracteres que não fazem parte do domínio principal.
Exemplo: nome1.kde.org”>KDE. Nesse caso deveria ficar apenas nome1.kde.org.
g) Salve o conteúdo filtrado em um arquivo texto chamado subdominios.txt.
h) Filtre a saída do arquivo texto para que seja exibida apenas os subsomínios e mais nenhum caractere solto.
i) Salve o resultado final no arquivo subdominios.txt sobrescrevendo o conteúdo atual.
Resposta
a) Baixar a homepage usando wget:
[bash]$ wget kde.org[/bash]
QUESTÕES DO CAPÍTULO 9 (SHELL SCRIPT)
Resposta
Resposta
Resposta
# Isso é um comentário.
O comentário para iniciar em uma linha nova ou na frente do comando, por exemplo:
[bash]echo “Isso será exibido na tela” # Isso não será exibido na tela.[/bash]
parâmetros: gênero, artista e nome da música. Levando em conta que os parâmetros
a serem executados são: Rock, Roxette e Listen to Your Heart. Pede-se:
a) Com o script deverá ser executado com os parâmetros?
b) Após o script ser executado e como resultado obter a seguinte saída:
Gênero: Rock
Artista: Roxette
Nome da música: Listen to Your Heart
Resposta
echo "Artista: $2"
echo "Nome da música: $3"[/bash]
QUESTÕES DO CAPÍTULO 10 (COMANDOS CONDICIONAIS)for i in `ls *.JPG`; do
mv -v $i ${i/.JPG/.jpg}
done
execução:#!/bin/bash
for $i in j; do
echo $i
done
Resposta
for i in j; do
echo $i
done[/bash]
#!/bin/bash
if [ -d “$1” ]; then
echo “0”
else
echo “1”
fi
$ bash testando.sh /sbin
Resposta
Resposta
if [ -z $1 ]; then
echo "Erro, arquivo faltando"
else
# Caso o arquivo existe, é realizado um filtro com o grep e procura da palavra "inceteza". Se a palavra existir, é exibida a linha em que ela esteja.
cat $1 | grep -i "incerta"
fi[/bash]
Resposta
DIA=$(date +%d)
#Confere se hoje é dia 30
if [ $DIA = 30 ]; then
#Caso seja dia 30 exibe a mensagem a seguir
echo "Finalmente, dia de pagamento."
else
#Caso NÃO seja dia 30 exibe a mensagem a seguir
echo "Preciso economizar nas contas"
fi[/bash]
deverá:
a) Cumprimentá-lo com um “Olá, root”.
b) Informar as horas com minuto e segundos, assim como o dia, mês e ano.
c) Exibir a memória RAM livre no momento.
d) Exibir a memória RAM em uso no momento.
e) Caso o usuário não seja o root, exibir uma mensagem dizendo que ele não é.
f) o root e dizendo para ele executar o script novamente como root ou com o comando sudo.
Resposta
if [ $(whoami) = ‘root’ ]; then
#Exibe a mensagem para o usuario informando o nome do usuario através da variavel $USER
echo "Olá, $USER."
#Informa a hora, minuto e segundo usando o comando date e depois informa também o dia, mes e ano novamente com o comando date
echo "Agora são: $(date +"%T") do dia $(date +"%d/%m/%Y")."
#Com o comando free -m recebemos informacoes sobre a memória, então com o awk filtramos a parte referente apenas a memoria livre
echo "Memória livre no momento: $(free -m | awk ‘/buffers\/cache/ {print $4}’)M."
#Com o comando free -m recebemos informacoes sobre a memoria, então com o awk filtramos a parte referente apenas a memória em uso
echo "Memória em em uso no momento: $(free -m | awk ‘/buffers\/cache/ {print $3}’)M."
else
#Caso o usuario não tenha poderes de root é exibida a mensagem informando que nao possui poderes
echo "Você não é o usuário root, tente executar novamente esse script com o usuário root ou utilizando o comando sudo."
fi[/bash]
Resposta
tar -xf poemas.tar
for i in $ARQUIVOS; do
grep -h -e incerta -e ódio -e ilude medo.txt minhas-lutas.txt ser-quem-sou.txt > poema_final.txt
done
gzip -9 poema_final.txt[/bash]
a) Testar se o arquivo é binário, caso positivo o script é encerrado, senão codifica o arquivo.
b) Testar se a conversão foi bem sucedida.
c) Criar uma condição perguntando se deseja remover o arquivo antigo, ou seja, com a codificação original.
d) Testar se a remoção do arquivo foi bem sucedida.
Para descobrir a codificação do arquivo:file -i arquivo
iconv -l
iconv -f códigoOrigem -t códigoDestino arquivoAtual > novoArquivo
# Configuração padrão
COD="UTF-8"
# —————————————————————- #
extensao="$(echo "$1" | rev | cut -d. -f1 | rev)"
nome="$(echo "$1" | rev | cut -d. -f2- | rev)"
nomeAntigo="$(echo ${nome}-ANTIGO.${extensao})"
novoNome="$(echo ${nome}.${extensao})"
codOrigem=`file -i "$1" | awk -F "=" ‘{print $2}’`
clear
echo ""
if [ "$codOrigem" = "binary" ]; then
echo "Erro na conversão do arquivo."
echo "Esse arquivo é do tipo binário."
echo "A codificação só é válida para arquivos do tipo texto."
exit 0
else
echo "Convertendo o arquivo ($1) para $COD"
sleep 1
mv -f "$1" "${nomeAntigo}"
iconv -f $codOrigem -t $COD "${nomeAntigo}" > $novoNome
fi
if [ "$?" = "0" ]; then
echo "Conversão bem sucedida!"
echo "Deseja remover o arquivo ANTIGO? [S/N]" ; read resp
if [ "$resp" = "s" ] || [ "$resp" = "S" ]; then
echo "Removendo o arquivo antigo (${nomeAntigo})"
sleep 1
rm "${nomeAntigo}"
if [ "$?" = "0" ]; then
echo "Arquivo removido com sucesso!"
exit 1
else
echo "Erro ao remover arquivo."
exit 0
fi
else
echo "Conversão concluída e arquivo não removido!"
exit 1
fi
echo "Erro na conversão do arquivo."
exit 0
fi[/bash]
Execução do Becape - dd/mm/aaaa
Horário de início - hh:mm:ss
Arquivos compactados:
Caminho completo do arquivo1
Caminho completo do arquivo2
Caminho completo do arquivo3...
Diretório de becape: /mnt/becape/
Horário da Finalização do becape - 20:26:08
Resposta
DATA=$(date +%d_%m_%y)
DIR="$HOME/becape/"
mkdir -p "$DIR" 2>/dev/null
BKP=("$HOME/scripts/")
ARQ_LOG="$DIR/logBKP"
# 1 = sim, 0 = não
LOG="1"
# Nome do arquivo compactado
ARQ="becape-$DATA.tar.bz2"
if [ $LOG -eq 1 ]; then
#Insere linhas no histórico de becape com informações sobre data de início
echo "Execução do becape – $(date +%d/%m/%Y)" >> "$ARQ_LOG"
echo "Horário de início – $(date +%k:%M:%S)" >> "$ARQ_LOG"
echo >> "$ARQ_LOG"
echo "Arquivos compactados:" >> "$ARQ_LOG"
tar -cvpjf "$DIR$ARQ" "$BKP" >> "$ARQ_LOG"
echo >> "$ARQ_LOG"
echo "Diretório de becape: ${DIR}" >> "$ARQ_LOG";
echo >> "$ARQ_LOG";
echo "Horário da Finalização do becape – $(date +%k:%M:%S)" >> "$ARQ_LOG"
echo "============================================" >> "$ARQ_LOG"
echo >> "$ARQ_LOG"
else
#Caso o histórico do becape não seja ativado apenas compacta os arquivos e salva no local determinado.
tar -cvpjf "$DIR$ARQ" "$BKP"
fi[/bash]
Resposta
Resposta
Resposta
QUESTÕES DO CAPÍTULO 11 (INTERAÇÃO COM SHELLSCRIPT)
Resposta
read nomeusuario;
echo "$nomeusuario" > /tmp/usuario
echo "O nome do usuário é: $nomeusuario"[/bash]
Resposta
Espaço utilizado: $(du -hs "$HOME/.cache/mozilla/firefox")"
if [ "$?" -ne 1 ]; then
rm -Rf "$HOME/.cache/mozilla/firefox"
fi[/bash]
Resposta
Resposta
Resposta
Resposta
Resposta
–title="Temporizador" \
–scale \
–text="Quantos segundos devo aguardar?" \
–value="60" \
–min-value="1" \
–max-value="600")
–title="O tempo passou" \
–info –no-markup \
–text="Já se pasaram $temporizador segundos."[/bash]
Resposta
QUESTÕES DO CAPÍTULO 12 (EXECUTANDO SHELLSCRIPT AUTOMATICAMENTE NO BOOT)
Resposta
Resposta
Resposta
Resposta
Resposta
Resposta
QUESTÕES DO CAPÍTULO 15 (MAIS ALGUNS CONCEITOS)
Resposta
Exemplo de sistema multitarefas: Windows, Gnu/Linux, MacOS. Exemplo de sistemas multiusuários: Gnu/Linux, FreeBSD.
Resposta
Resposta
Resposta