Programação para ambiente de redes – Aula 3 – Exercícios Complementares de Shell

1- De acordo com cada questão, execute os comandos para entender o que acontece no prompt.

Em caso de dúvida pesquise nos links externos cada uma das funcionalidade.

  • Experimente o comando pwd para
    ver aonde está neste momento.
  • Para obter ajuda sobre os comandos da linha de comandos utilize o comando man.
    Experimente o seguinte:

    1. man ls
    2. man cp
    3. man rm
    4. man man
  • Experimente os seguintes comandos para saber mais sobre os utilizadores
    do sistema:

    1. who
    2. whoami
    3. finger
  • O que faz cada um dos seguintes comandos?
    1. ls *
    2. ls *.c
    3. ls ?.c
    4. ls [a-c]*
    5. ls [a-z]*
    6. ls ??[c]*
    7. ls ?[e]
    8. ls [A-Za-z]*
    9. ls dir*/*.c
  • Qual a diferença entre utilizar o comando ls -l e ls -la?
  • Crie um diretório chamado RedesComputadores.
    Entre nesse diretório e crie outro chamado exercicios. Mostre o conteúdo do diretório RedesComputadores.
    Remova o diretório exercicios e crie um novo chamado exerc. Mude o nome do directório exerc para exercicios.
  • Pesquise a finalidade do comando rm -rf RedesComputadores
  • Redirecione o “output” do comando man para um ficheiro. Por exemplo, man ls > ls.man. Verifique o resultado usando o comando cat ou o comando more.
  • Experimente os seguintes comandos:

    echo ‘um’ > ficheiro.tmp

    echo ‘dois’ > ficheiro.tmp

    Qual é o conteúdo
    de ficheiro.tmp? Se usar alternativamente os seguintes comandos:

    echo ‘um’ > ficheiro.tmp

    echo ‘dois’ >> ficheiro.tmp

    Qual é o conteúdo
    de ficheiro.tmp? Porquê?

    Desenvolva um script simule uma agenda telefonica, onde os dados de Nome, telefone, email, deverão ser infomados durante a sua execução, e ao final atualizados no arquivo de agenda.

  • Consulte a página do manual do comando grep. Supondo que tem um ficheiro com um programa em linguagem C chamado teste.c, explique o que faz cada uma das instruções seguintes:
    1. grep -n main teste.c
    2. grep main *
    3. grep -v main teste.c
    4. grep -c main teste.c
    5. grep -cv main teste.c
  • Consulte a página do manual do comando find. O que faz cada uma das linhas seguintes?
    1. find /home -name ‘trabalho.c’
    2. find . -name ‘*.c’ -ls
    3. find ~ -name ‘core’ -exec rm {} \
  • Uma boa ferramenta para fazer cópia(s) de segurança do seu trabalho é o tar. Consulte a página de manual do tar e diga o que faz cada uma das seguintes linhas:
    1. tar cvf backup.tar .
    2. tar tvf backup.tar
    3. tar -zxvf backup.tar

    Como é que pode compactar um ficheiro tar?

  • Consulte a página do manual referente ao comando ps. Experimente visualizar os processos existentes no seu sistema. Pode experimentar ps e ps
    -aux
    .
  • Consulte a página de manual para o comando kill.
  • Experimente iniciar um processo que não faça nada durante
    5 minutos: sleep 5mSe agora tentar introduzir algum comando o que acontece? Para acabar um processo que corre em “foreground” faça CTRL-C. Acabe com o processo sleep 5m. O que acontece se introduzir comandos agora?
  • Inicie outro processo, desta vez em “background”: sleep 5m &Tente introduzir outros comandos. O que acontece?
  • Utilize o comando jobs. O que vê?
  • Inicie mais dois processos em background:sleep 10m & sleep 15m &

    Utilize novamente o comando jobs e analise o resultado.

  • Traga o segundo processo para “foreground” com fg %2. O que aconteceu?
  • Suspenda o processo com CTRL-Z. Experimente novamente o jobs.
    O que vê?
  • Coloque o processo novamente em “background” com bg %2.
  • Use o comando kill %2 e em seguida o jobs. O que vê?
  • Use o comando ps para ver os processos que correm e acabe com os sleeps recorrendo
    ao seu PID. Execute novamente o comando ps para verificar o
    que aconteceu.

2- Desenvolva um Script Shell que ao ser executado informe a seguinte
frase “Eu estou logado como usuário …., e meu diretório é o …..” .

3- Coloque o respectivo script para funcionar, em caso de falha procure
pelos erros e realize as correções.

#!/bin/bash

# Exemplo de Script com várias opção de seleção

Principal() {

   echo "Exemplo Final sobre o uso de scripts shell"

   echo "------------------------------------------"

   echo "Opções:"

   echo

   echo "1. Trasformar nomes de arquivos"

   echo "2. Adicionar um usuário no sistema"

   echo "3. Deletar um usuário no sistema"

   echo "4. Fazer backup dos arquivos do /etc"

   echo "5. Sair do exemplo"

   echo

   echo -n "Qual a opção desejada? "

   read opcao

   case $opcao in

      1) Transformar ;;

      2) Adicionar ;;

      3) Deletar ;;

      4) Backup ;;

      5) exit ;;

      *) "Opção desconhecida." ; echo ; Principal ;;

   esac

}

Transformar() {

   echo -n "Para Maiúsculo ou minúsculo? [M/m] "

   read var

   if [ $var = "M" ]; then

      echo -n "Que diretório? "

      read dir

      for x in `/bin/ls` $dir; do

         y=`echo $x | tr '[:lower:]' '[:upper:]'`

         if [ ! -e $y ]; then

            mv $x $y

         fi

      done

   elif [ $var = "m" ]; then

      echo -n "Que diretório? "

      read dir

      for x in `/bin/ls` $dir; do

         y=`echo $x | tr '[:upper:]' '[:lower:]'`

         if [ ! -e $y ]; then

            mv $x $y

         fi

      done

   fi

}

Adicionar() {

   clear

   echo -n "Qual o nome do usuário a se adicionar? "

   read nome

   adduser nome

   Principal

}

Deletar() {

   clear

   echo -n "Qual o nome do usuário a deletar? "

   read nome

   userdel nome

   Principal

}

Backup() {

   for x in `/bin/ls` /etc; do

      cp -R /etc/$x /etc/$x.bck

      mv /etc/$x.bck /usr/backup

   done

}

Principal

Deixe um comentário

O seu endereço de e-mail não será publicado. Campos obrigatórios são marcados com *