Buscar

Comandos Internos do Shell

Prévia do material em texto

Programação para Servidores
Mario Cavalcante
Aula 4
Objetivos
Conhecer e utilizar os comandos internos de um shell;
Adquirir conhecimento para o desenvolvimento de scripts mais eficientes utilizando-se os comandos para escrever scripts shell
2
‹nº›
Um comando interno (ou builtin) é um comando contido dentro do shell. 
Comandos são construídos internamente ao shell por razões de desempenho ou por necessidades específicas de acesso direto à informações internas ao shell.
3
Comandos internos
‹nº›
A maior parte dos comandos possui qualificadores, isto é, partículas que redefinem a execução default do comando. E cada comando possui detalhes específicos. 
Para facilitar podemos usar o help ou o man para buscar as possibilidades de um comando.
4
HELP e MAN
‹nº›
Ao digitar:
ls -- help
 
temos:
Uso: ls [OPÇÃO]... [ARQUIVO]...
Argumentos obrigatórios para opções longas também o são para opções curtas.
 -a, --all não ignora entradas começando com .
...
 -d, --directory lista os diretório em vez de seu conteúdo, e não
 -g o mesmo que -l, mas não lista o dono
5
HELP e MAN
‹nº›
O comando echo imprime na saída padrão uma expressão ou variável. Parâmetros
	-e 	 trata caracteres de escape
	-n 	 suprime o new line do final
6
Comandos de entrada e saída - echo
‹nº›
O comando printf é uma melhoria do comando echo, fornecendo uma saída formata. Sua sintaxe é:
	printf formato parâmetros
O formato segue o padrão do comando printf da linguagem C.
7
Comandos de entrada e saída - printf
‹nº›
Lê um valor a partir de STDIN (por padrão o teclado) e o armazena em uma variável. Parâmetros:
-s 		 não mostrar os caracteres digitados
-n N 		ler no máximo N caracteres
-p "string" 	mostrar "string" antes da leitura
8
read –p “Digite o nome” nome 
Comandos de entrada e saída - read
‹nº›
Lista os arquivos de um diretório
		ls /home
9
Comandos do sistema de arquivos - ls
‹nº›
Muda o diretório de trabalho (diretório no qual o script irá atuar durante sua execução).
		cd /home
10
Comandos do sistema de arquivos - cd
‹nº›
Retorna o diretório de trabalho corrente
11
Comandos do sistema de arquivos - pwd
‹nº›
Cria um novo diretório
		mkdir /home/teste
12
Comandos do sistema de arquivos - mkdir
‹nº›
Cria um novo diretório
		mkdir /home/teste
13
Comandos do sistema de arquivos - mkdir
‹nº›
Remove um diretório
	rmdir /home/teste
14
Comandos do sistema de arquivos - rmdir
‹nº›
Copia um arquivo
Sintaxe: cp origem destino
cp /etc/named.conf /home/teste
No Linux um arquivo não necessita de uma extensão. Neste caso a cópia de “named.conf” será salva com nome “teste”. Ambos, origem e destino, continuam sendo arquivos texto
15
Comandos do sistema de arquivos - cp
‹nº›
Move um arquivo para outro diretório, substitui o comando para renomear um arquivo
Sintaxe: mv origem destino, 
mv /home/teste/arquivo1.txt /home/teste1/arquivonovo.sh
16
Comandos do sistema de arquivos - mv
‹nº›
Exclui um arquivo ou diretório
17
Comandos do sistema de arquivos - rm
‹nº›
Usados em complemento, usando pipe (|), a um comando para parar a execução e permitir a leitura de saídas longas.
	ls /etc | more
Teste e descubra a diferença entre more e less.
18
Comandos do sistema de arquivos 
more e less
‹nº›
Cria um novo arquivo
		touch novoarquivo
Cria novoarquivo no diretório corrente.
19
Comandos do sistema de arquivos - touch
‹nº›
Exibe o conteúdo de um arquivo texto
	cat /etc/named.conf
São muitas opções, teste com:
	cat --help
20
Comandos do sistema de arquivos - cat
‹nº›
Exibe o final de um arquivo texto.
É muito usado com a opção –f , onde a exibição é automaticamente atualizada quando o arquivo de origem é modificado. Arquivos de log e de sistema são alterados automaticamente, assim é possível acompanhar algumas ações.
tail /etc/named.conf
21
Comandos do sistema de arquivos - tail
‹nº›
Abra 2 terminais, no primeiro, para exibir mensagens do sistema, digite:
tail –f /var/log/messages
No segundo digite:
service network restart
Observe no primeiro as mensagens do sistema
22
Exercício com tail
‹nº›
Cria um link semelhante a um atalho do Windows.
ln /home/aula/script1.sh programa
23
Comandos do sistema de arquivos - ln
‹nº›
No Shell podemos ter dois tipos de links: 
Link simbólico fica quebrado quando o arquivo referenciado é movido; 
Hard Link o Link se mantém mesmo quando o arquivo é movido.
Para criar um link simbólico use ln -s
24
Comandos do sistema de arquivos - ln
‹nº›
Executa operações matemáticas sobre variáveis e expressões
let soma=a+b
25
Comandos que atuam sobre variáveis - let
‹nº›
set
Altera o valor de variáveis internas do shell. O comando set sem parâmetros exibe as variáveis ativas (“setadas”) no sistema.
unset
Remove o valor de variáveis internas do shell. Na prática as coloca com valor null.
26
Comandos que atuam sobre variáveis - set
‹nº›
export
Torna a variável passada como parâmetro disponível para processos filho.
readonly
Torna uma variável disponível somente para leitura (a torna uma constante). Tentativas de alterar seu valor irão provocar uma mensagem de erro.
27
Comandos que atuam sobre variáveis - set
‹nº›
source
O comando source, que tem a mesma funcionalidade do comando ponto (.), importa os comandos do script passado como parâmetro e os executa localmente.
 
exit
Encerra a execução do script.
28
Comandos que afetam o comportamento do script
‹nº›
exec
Substitui o processo corrente pelo programa passado como parâmetro. 
29
Comandos que afetam o comportamento do script
‹nº›
jobs
Lista os processos executando em segundo plano no shell, fornecendo o número do job.
30
Comandos para controle de jobs
‹nº›
fg
Traz para o primeiro plano um job que está executando em segundo plano.
bg
Coloca em execução em segundo plano um job cuja execução tenha sido suspensa.
31
Comandos para controle de jobs
‹nº›
kill e killall
Força o encerramento de um processo enviando ao processo um código de encerramento.
 
ps e top
Exibem processos ativos
32
Comandos para controle de jobs
‹nº›
Script com erro (loop infinito) – script1.sh
#!/bin/bash
x=0
y=0
while [ $x -lt 5 ]
 do
	echo $y
	#let x=x+1 - incremento omitido para gerar o loop sem fim
	let y=y+1
 done
33
Exercício sobre controle de jobs
‹nº›
Abra 3 terminais:
Execute o Script
Digite: ps –ef | grep script1.sh
3.Depois de localizar interrompa o processo com kill -9 2233 (substitua pelo PID do seu script)
34
Exercício sobre controle de jobs
‹nº›
true
Sempre retorna um código de saída de sucesso (valor 0).
false
Sempre retorna um código de saída sem sucesso.
help
Fornece uma tela de ajuda sobre a utilização de comandos internos.
35
Outros Comandos
‹nº›
Programação para Servidores
Atividade Aula 4
Mario Cavalcante
Copie cada arquivo com extensão .conf em /etc/ para /home/teste, renomeie cada arquivo de forma que o novo nome do arquivo se inicie por um número inteiro sequencial.
37
Atividade
‹nº›
Na linha de comando:
mkdir /home/teste
cd /home /teste
cp *.conf /home/teste
 
Depois para cada arquivo copiado:
mv arquivo.conf 1-arquivo.conf
mv outro.conf 2-arquivo.conf
38
Solução
‹nº›
#!/bin/bash
rm -rf novo
mkdir novo
ls /etc/*.conf > /tmp/arquivo
x=1
while read line
do 
 let x+=1
 arq="${line:5}"
 echo "$x$arq"
 cp $line novo/$x$arq
done < /tmp/arquivo
39
Solução
‹nº›

Continue navegando