2. Shell
Shell
“É qualquer interface de usuário para o SO Unix. que receba
do usuário um input e a converta em instrução para que o SO
entenda.”
Shell Script
“É um arquivo que contém uma série de comandos, funções,
rotinas que são executadas quando o shell script é executado.
Se digitarmos comando a comando diretamente no shell, o
resultado será o mesmo”
3. Shell
Exemplos de Shell
Bourne(sh), C shell (csh), Korn (ksh) - comercial, bash (free)
Fonte: Linux Magazine, vol 01. Por Julio Cezar Neves
Qual Shell estou usando ?
[root@localhost fred_m]# echo $SHELL
/bin/bash
4. Comandos
– Definem como o programa será executado.
– Consiste em uma ou mais palavras, que são separadas por espaços ou TABs.
– A primeira palavra é o comando
– As palavras restantes são os argumentos/parâmetros
Ex:
• [root@localhost fred_m]# vi teste.txt
• [root@localhost fred_m]# ls /tmp
• [root@localhost fred_m]# ls
5. Argumento
– Informação extra passada para a execução do comando
– Podem ser nome de objetos ou definir como o comando irá funcionar
– Ex: [root@localhost fred_m]# cat /proc/cpuinfo
– Opções
• Argumentos especiais que dá ao comando instruções específicas de como
se comportar
• Usualmente consiste em um – seguido de uma letra
EX:
– [root@localhost fred_m]# uname -s
– [root@localhost fred_m]# uname -m
– [root@localhost fred_m]# uname -p
– [root@localhost fred_m]# uname -a
• Podem conter seus próprios argumentos
EX:
– [root@localhost fred_m]# lp -d lp1 -h myfile
Onde: -d define a impressora lp1 | -h imprimir banner | myfile arquivo a ser impress
6. Arquivos
- Arquivos Regulares
– Arquivos de texto
- Arquivos Executáveis
– Também chamados de programas
– São executados como comandos
– Podem ser:
• Compilados
• Shell Scripts
- Diretórios
7. Atribuições
• Identificada quando o Shell encontra um sinal de igualdade (=)
• Separa dois campos sem espaços em branco, entre o (=).
• Criam variáveis
• Variáveis podem ser lidas pelo comando echo
Ex:
Errado:
[root@madeira ~]# $VAR=a
bash: =a: command not found...
Certo:
[root@madeira ~]# VAR=ab
8. Variáveis
Armazenam informações durante execução do script ou sistema
– Atribuindo valor
VARIAVEL=“Teste Linux”
– Exibindo o valor
echo $VARIAVEL
– Atribuindo a saída de um comando
VARIAVEL=$(date)
VARIAVEL=`date`
– Limpando uma variável
unset VARIAVEL
– Listando todas as variáveis
env ou set
10. Prática
– Atribuindo valor
NOME=”Frederico Madeira”
– Exibindo o valor
echo $VARIAVEL
– Atribuindo a saída de um comando
HOJE=$(date +"%Y%m%d")
echo $HOJE
AGORA=`+"%H:%M"`
echo $AGORA
– Visualizando todas as variáveis
set
env
– Limpando uma variável
unset NOME
unset HOJE AGORA
11. Características de um Shell
- Metacaracteres
Caracteres com significado especial
Ex: &, >, <, |
- Caracteres Coringas (wildcards)
Caracteres especiais usados junto com os argumentos
Ex: *, ?, [abc], [a-c],[!0-9]
12. Conceitos
- Entrada Padrão (stdin)
Entrada padrão de comandos para o shell
Ex: teclado, pipe
- Saída Padrão (stdout)
Saída padrão do do comando
Ex: tela, arquivo
- Saída de Erro (stderr)
Saída padrão para erros de execução do comando
Ex: tela, arquivo
13. Conceitos
É Case Sensitive
.. - Indica o diretório anterior
. - Indica o diretório atual
~ - Indica o diretório home do usuário
# - Comentário
[fred_m@localhost teste]$ - Indica conexão sem privilégios de root
[root@localhost teste]# - Indica conexão com privilégios de root
14. Conceitos
$ - Definição de variáveis
.xxxx - arquivos ocultos
| - pipe
& (como bg) - Envia aplicativo para background
--help – Obtém ajuda sobre utilização do comando
15. Redirecionamento
> : Redireciona a saída padrão do comando a esquerda para o arquivo a direita,
sobrescrevendo todo o conteúdo.
>> : Redireciona a saída padrão do comando a esquerda para o arquivo a direita,
adicionando o conteúdo ao final do arquivo.
| : Pipe, redireciona a saída padrão do primeiro comando para a entrada padrão do
segundo comando.
Ex:
$ cat /etc/passwd | grep root > /tmp/root
$ ping -c 1 www.madeira.eng.br > /dev/null
OBS: /dev/null , representa lugar nenhum
16. Redirecionamento Saída Padrão/Erro
stderr (2): Saída de Erro.
Para redirecionar a saída de erro, usamos: 2>
stdout(1): Saída do comando
Para redirecionar a saída do comando, usamos: 1>
Para redirecionar ambas usamos: &>
Ex:
Saída do comando
[fred@localhost Linux]$ ping www.madeira.eng.br
PING www.madeira.eng.br (69.16.250.4) 56(84) bytes of data.
64 bytes from noc88.noc88.com (69.16.250.4): icmp_seq=1 ttl=45 time=300 ms
Saída de erro
[fred@localhost Linux]$ ping www.madeira.eng.br1
ping: unknown host www.madeira.eng.br1
17. Redirecionamento Saída Padrão/Erro
Comando ok, redir saída de erro
[fred@localhost Linux]$ ping -c 1 www.madeira.eng.br 2> /dev/null
PING www.madeira.eng.br (69.16.250.4) 56(84) bytes of data.
64 bytes from noc88.noc88.com (69.16.250.4): icmp_seq=1 ttl=45 time=250 ms
Comando errado, redir saída de erro
[fred@localhost Linux]$ ping -c 1 www.madeira.eng.br1 2> /dev/null
Comando ok, redir saída do comando
[fred@localhost Linux]$ ping -c 1 www.madeira.eng.br 1> /dev/null
Comando errado, redir saída do comando
[fred@localhost Linux]$ ping -c 1 www.madeira.eng.br1 1> /dev/null
ping: unknown host www.madeira.eng.br1
Comando ok, redir saída do comando e saída de erro
[fred@localhost Linux]$ ping -c 1 www.madeira.eng.br &> /dev/null
Comando errado, redir saída do comando e saída de erro
[fred@localhost Linux]$ ping -c 1 www.madeira.eng.br1 &> /dev/null
18. Lógica
&& - equivalente ao E. O próximo comando só será executado se o anterior
tiver sido bem sucedido.
|| - equivalente ao OU. Se o comando anterior não for bem sucedido, será
executado o próximo comando. OU um OU outro.
Ex:
$ ping -c 1 www.madeira.eng.br && echo “Site está ok” || echo “Site fora do ar”
Forma mais elegante:
$ ping -c 1 www.madeira.eng.br &> /dev/null && echo “Site está ok” || echo
“Site fora do ar”
$ mkfs.ext3 /dev/sda1 && echo “Formatação OK” || echo “Erro na formatação”
19. Redirecionamento Saída Padrão/Erro
Prática
1. Redirecione a saída de erro dos comandos abaixo para o arquivo /tmp/error.log
tar xvfz teste.tar.gz
ifconfig ppp0
ifconfig eth0
2. Repita a questão anterior, redirecionando também a saída padrão para /tmp/saida.log (Não
sobrescreva os arquivos)
3. Execute os comandos abaixo e retorne as seguintes mensagens (Execute o com ando com um
usuário normal):
Comando Mensagem Mensagem em caso de NOK
OK
cat /etc/passwd Listagem OK Falha na listagem
cat /etc/audit Listagem OK Falha na listagem