Resumo LPI 102: Tópico 105 - Shells, Scripts e Administração de Dados

Publicado por Pedro Martelotta em 18/02/2013

[ Hits: 5.355 ]

Blog: http://pedromartelotta.wordpress.com

 


Resumo LPI 102: Tópico 105 - Shells, Scripts e Administração de Dados



Como parte da minha preparação para a prova LPI 102, compartilho o resumo que fiz para facilitar nos dias próximos à prova. :)

Para ajudar no aprendizado, é importante associar o nome dos comandos e seus parâmetros às suas respectivas descrições. Sempre estude lendo manpages, testando comandos e parâmetros.

105.1 - Personalizar e trabalhar em ambiente shell

VARIÁVEIS:

Variáveis globais - São utilizadas por todos os processos e todos usuários do sistema.

Exemplos:
  • PATH :: Define os diretórios onde estão os comandos;
  • HOME :: Define o diretório pessoal do usuário;
  • SHELL :: Define o shell padrão do sistema.

Variáveis locais - São utilizadas apenas no shell atual, criada por usuários e scripts. Exemplo sobre como definir uma variável:

$ NOME=Pedro

Comandos:
  • env :: Exibe todas variáveis globais;
  • set :: Exibe todas as variáveis do sistema;
  • unset :: Exclui uma variável. Somente da sessão atual, se for global;
  • export :: Transforma uma variável local em global;
  • alias :: Cria uma alias (apelido) para um ou mais comandos.

Arquivos de configuração:

1. /etc/profile :: Define as varáveis globais e alias para o sistema;
2. ~/.bash_profile :: Define variáveis globais para usuários.

A sequência de leitura dos arquivos de configuração do shell, quando é iniciada com a opção de login, é a seguinte:
  1. /etc/profile
  2. ~/.bash_profile
  3. ~/.bash_login
  4. ~/.profile

Ao sair do shell, é lido o arquivo: ~/.bash_logout

Já no caso de iniciar um shell sem a opção de login, a sequência de leitura dos arquivos de configuração é:
  1. /etc/bash.bashrc
  2. ~/.bashrc

FUNÇÕES: As funções servem para simplificação de tarefas feitas com frequência no shell. Podem ser usadas numa sessão tradicional do shell e em scripts.

Para torná-las disponíveis em outras sessões, basta gravar no arquivo ~/.bashrc. Sua estrutura é:

function versao () {
   DIST=$(cut -d" " -f1 /etc/issue)
   ARQ=$(uname -m)
   echo "Você está usando ${DIST}, arquitetura ${ARQ}."
}

Obs.: No arquivo "~/.bashrc", coloque o caracter "}" na penúltima linha da estrutura acima.

105.2 - Escrever e editar scripts simples

Duas regras básicas na construção e execução de shell script:

1. Na primeira linha de um shell script, deverá ter a informação sobre qual interpretador de comandos ele usará. Essa primeira linha é chamada de shebang:

#!/bin/bash

2. Para serem executados, os scripts devem ter a permissão de execução (+ x).

# chmod +x script.sh

Variáveis especiais:
  • $* :: Exibe os parâmetros passados ao script;
  • $# :: Exibe o total de parâmetros passados ao script;
  • $0 :: Exibe o nome do script;
  • $n :: Exibe o parâmetro passado ao script, na posição 'n';
  • $! :: Exibe o PID do último programa executado;
  • $$ :: Exibe o PID do shell atual;
  • $? :: Exibe o código de retorno do último comando executado:

    0 (Executou com sucesso)
    * Se for diferente de zero, houve algum problema.

COMANDO read:

O comando read é usado para coleta de dados a partir da interação com o usuário.

Exemplo:

echo "Digite seu nome"; read NOME ; echo $NOME

Se a variável NOME não fosse especificada para armazenar "seu nome", o shell usaria a variável de retorno padrão REPLY.

SUBSTITUIÇÃO DE COMANDOS:

É comum utilizar uma variável para armazenar a saída de algum comando. Seguem alguns exemplos:

LINUX=`cut -d" " -f1 /etc/issue`
$ echo "Eu uso $LINUX!"


Outro:

ADM=$(head -c4 /etc/passwd)
$ echo "O super usuário do sistema é o $ADM"


Ou, para fazer algum tipo de cálculo com o comando expr, por exemplo:

ANONASC=1988; ANOATUAL=2013
$ IDADE=`expr $((ANOATUAL - ANONASC))`
$ echo $IDADE


COMANDO test:

O comando test é bastante usado em condicionais e laços (if e while, por exemplo). Principais parâmetros:

Testes em arquivos:
  • -d (Diretory) :: É um diretório;
  • -f (File) :: É um arquivo;
  • -L (Link) :: É um link simbólico;
  • -r (Read) :: O arquivo tem permissão de leitura;
  • -s (Size) :: O arquivo tem tamanho maior que zero;
  • -w (Write) :: O arquivo tem permissão de escrita;
  • -x (Execute) :: O arquivo tem permissão de leitura;
  • -ot (OlderThan) :: O arquivo é mais antigo;
  • -nt (NewerThan) :: O arquivo é mais recente.

Testes em variáveis:
  • -lt (LessThan) :: O número é menor;
  • -gt (GreaterThan) :: O número é maior;
  • -le (LessEqual) :: O número é menor ou igual;
  • -ge (GreaterEqual) :: O número é maior ou igual;
  • -eq (Equal) :: O número é igual;
  • -ne (NotEqual) :: O número é diferente;
  • -n (null) :: A string é nula;
  • -z (??) ::- A string não é nula;
  • = (Igual) :: A string é igual;
  • != (Diferente) :: A string é diferente.

USANDO O if: Um exemplo do uso do if com o comando test:

if test -d /var/log ; then
    echo "O diretório existe."
else
    echo "Diretório inexistente."
fi

O comando test pode assumir outra forma, sendo substituído por colchetes:

if [ -f /var/log/messages ] ; then
    echo "Arquivo existe."
else
    echo "É Ubuntu :p"
fi

Obs.: Ao utilizar colchetes, é necessário deixar espaços em volta deles, caso contrário, não funcionará.

COMANDO seq:

O comando seq é bastante usado com a instrução for, pois lhe entrega uma sequência numérica. Exemplo:

seq 3
1
2
3

USANDO O for:

Estrutura do for, usando o comando seq, como exemplo:

for num in $(seq 3) ; do
    echo "Número $num."
done



USANDO O while:

Estrutura do while, usando o comando test em forma de colchete:

NUM=0
while [ $NUM -lt 5 ] ; do
    NUM=$((NUM + 1))
done

105.3 - Administração de dados SQL

De acordo com os simulados que vi e do que tem no livro do Luciano Siqueira, cai basicamente:
INSERT 	    - Insere dados em uma tabela;
SELECT 	    - Consulta dados numa tabela;
WHERE 	    - Especifica uma ou mais linhas;
ORDER BY    - Ordena uma tabela;
GROUP BY    - Seleciona um grupo de dados a partir de um item especificado;
UPDATE	    - Altera dados em uma tabela;
DELETE	    - Exclui dados de uma tabela;
INNER JOIN  - Relaciona tabelas diferentes;

Referências

Como base, utilizei os livros:
  • Certificação LPI-1 - 4ªedição - Luciano Siqueira
  • Shell Script Profissional - Aurelio Marinho Jargas (recomendo)

À medida que for estudando ou achando necessário, estarei atualizando o post no meu blog. Fiquem à vontade para dar opiniões:
Inté.

Outras dicas deste autor

DIA - Adicionando forma/folha de rede

Enviando alertas de e-mail pelo Zabbix usando Gmail, CentOS e Postfix

Leitura recomendada

Recuperar a senha de root no Debian alterando o arquivo shadow

Criando sua própria distribuição Linux

Como Habilitar Virtualização Aninhada (Nested) no KVM

Alta disponibilidade - HA - Channel Bonding em 5 minutos - CentOS 6.x

Instalando o htop no Oracle Linux Server 7 a partir do código fonte

  

Comentários
[1] Comentário enviado por alexunix em 04/08/2015 - 12:07h


Muito Obrigado Pedro!! Estou voltando a estudar a para a 102 e Resumos dos Tópicos são de grande valia!!
;)



Contribuir com comentário




Patrocínio

Site hospedado pelo provedor RedeHost.
Linux banner
Linux banner
Linux banner

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts