Buscar

doc 11.redir pipe(74 80)

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes
Você viu 3, do total de 7 páginas

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes
Você viu 6, do total de 7 páginas

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Prévia do material em texto

Universidade do Grande Rio “Professor José de Souza Herdy”
Sistemas Operacionais Abertos
Conceitos de Redirecionamento e PIPE (canalização).
Para facilitar o controle do computador foram desenvolvidas linguagens de comando. A maioria das linguagens de comando foi desenvolvida para que haja comandos fáceis para especificar ações comuns. A maioria dos sistemas operacionais fornece um interpretador de comandos para desempenhar essa função, e no LINUX/UNIX este interpretador é chamado de shell, que fornece uma abundância de características, que torna possível especificar comandos muito poderosos. 
Entretanto, estes comandos quando utilizados isoladamente têm uma função específica e rendem muito menos do que poderiam render ao administrador/usuário do sistema., mas quando utilizamos um conjunto de comandos de forma unificada, eles se tornam ferramentas poderosas capazes de realizadas todas as tarefas no sistema 
A figura abaixo mostra que, para cada processo submetido ao sistema, o shell abre automaticamente 3 arquivos. Esses arquivos serão, a partir de agora, referenciados como:
Entrada padrão - é o teclado por default.
Saída padrão - é o vídeo por default.
Saída padrão para erros - é o vídeo por default.
Esses padrões default, podem ser modificados usando o conceito de redirecionamento que será mostrado mais adiante.
 
Símbolos utilizados para o redirecionamento
O conceito de redirecionamento é usado para alterar o fluxo default (padrão) de entrada(0), saída(1) e saída de erros padrão(2) apresentados anteriormente. Desse modo, podemos ter três tipos de redirecionamento:
< : redirecionamento da entrada padrão(0), é usado para indicar ao Shell, que a entrada de dados será de algum lugar, e não do teclado. 
 	Ex.: wall < arq.msg
	(o comando wall mostrará na tela, a mensagem armazenada no arquivo arq.msg)
> e >> : Redirecionamento de saída padrão(1). Usados para enviar os dados de saída para algum lugar que não seja o padrão (vídeo). 
ls -l > saida.txt
(Neste exemplo, criará o arquivo saída.txt caso este não exista com o conteúdo do comando ls –l e, caso o arquivo saída.txt exista, seu conteúdo será pertido) 
cat texto2 >> texto1
Neste exemplo, criará o arquivo texto1 caso este não exista com o contéudo do arquivo texto2 e, caso o arquivo texto1 exista, o seu conteúdo será preservado. 
2> e 2>> : Redirecionamento da saída de erros padrão(2). Usada para redirecionar os erros que ocorram durante a execução de um comando. 
Exemplos:
cat arq1 arq.txt 2> arqerro
Neste exemplo, o comando cat está sendo utilizado para mostrar o contéudo dos arquivos “arq1 e arq.txt”. Suponha que o arquivo ‘arq.txt”, não exista. Será exibida a mensagem:“cat: arq.txt: No such file or directory”. Utilizando o recurso de redirecionamento da saída de erros, a mensagem “cat: arq.txt: No such file or directory” será enviada para o arquivo “arqerro”.
cat arq1 arq.sh 2> /dev/null
Neste exemplo, as mensagens de erro que venham o correr, serão desprezadas, já que “/dev/null” é um arquivo nulo.
 
�
PIPE (canalização)
O conceito de canalização, permite enviar a saída de um comando, para que seja a entrada do próximo comando dando continuidade ao processamento. Os dados enviados são processados pelo próximo comando que mostrará o resultado do processamento.
O símbolo que representa o PIPE é o caracter “|” (código ascii=124), que é um arquivo especial do tipo FIFO e pode ser usado várias vezes numa mesma linha de comando. 
Exemplos: 
ls -la | wc –l
(mostrará quantos arquivos (incluindo os ocultos) têm no seu diretório corrente)
who | grep sopii | wc -l
(mostrará quantos usuários estão logados como “sopii”)
cat cidades.txt | sort | tee cidades.ordenada | wc –l
(mostrará o número de linha no arquivo cidades.txt e, criará o arquivo cidades.ordenada, que terá o conteúdo do arquivo cidades.txt com as linhas em ordem crescente)
Obs.: Este tipo de conexão (tee), tem como finalidade enviar o resultado do programa para a saída padrão (tela) e para um arquivo ao mesmo tempo.O comando deve ser usado com o pipe "|".
Diferença entre o "|" e o ">": A principal diferença entre o "|" e o ">", é que o Pipe envolve o processamento entre comandos, ou seja, a saída de um comando é utilizada como a entrada do próximo comando, e o ">" redireciona a saída de um comando para um arquivo/dispositivo.
�
Curingas e Metacaracteres.
Curingas ou referência global, é um recurso usado para especificar um ou mais arquivos ou diretórios do sistema de uma só vez. Este recurso permite que você faça a filtragem do que será listado, copiado, apagado, etc. São usados 3 tipos de curingas no Linux:
 * - Faz referência a um nome completo/restante de um arquivo/diretório. 
 ? - Faz referência a uma letra naquela posição.
 [padrão] - Faz referência a um padrão contido em um arquivo. Padrão pode ser: 
 [a-z][0-9] - Faz referência a caracteres de a até z ou de 0 até 9. 
 [a,z][0,9] - Faz referência aos caracteres a e z ou 0 e 9 naquela posição. 
 [a-z,0,9] - Faz referência aos caracteres de a até z e 0 e 9 naquela posição. 
A procura de caracteres é "Case Sensitive". Assim se você deseja que sejam localizados todos os caracteres alfabéticos, você deve usar [a-zA-Z]. 
Caso a expressão seja seguida de um “^” ou “!”, faz referência a qualquer caracter exceto o da expressão.
 Por exemplo [^abc] faz referência a qualquer caracter exceto a, b e c. 
 Por exemplo [!abc] faz referência a qualquer caracter exceto a, b e c. 
Outros exemplos.
Suponha que existam 5 arquivos no diretório /usr/teste: 
teste1.txt, teste2.txt, teste3.txt, teste4.new, teste5.new. 
Caso deseje listar todos os arquivos do diretório /usr/teste você pode usar o curinga * para especificar todos os arquivos do diretório: 
cd /usr/teste e ls * ou ls /usr/teste/*. 
Não tem muito sentido usar o comando ls com * porque todos os arquivos serão listados se o “ls” for usado sem nenhum Curinga. 
Agora para listar todos os arquivos teste1.txt, teste2.txt, teste3.txt com exceção de teste4.new, teste5.new, podemos usar inicialmente 3 métodos: 
Usando o comando ls *.txt que pega todos os arquivos que começam com qualquer nome e terminam com .txt. 
Usando o comando ls teste?.txt, que pega todos os arquivos que começam com o nome teste, tenham qualquer caracter no lugar do curinga ? e terminem com .txt. Com o exemplo acima teste*.txt também faria a mesma coisa, mas se também tivéssemos um arquivo chamado teste10.txt, este também seria listado. 
Usando o comando ls teste[1-3].txt, que pega todos os arquivos que começam com o nome teste, tenham qualquer caracter entre o número 1-3 no lugar da 6ª letra e terminem com .txt. Neste caso se obtém uma filtragem mais exata, pois o curinga “?” especifica qualquer caracter naquela posição e [] especifica números, letras ou intervalos que serão usados. 
Listar todos os arquivos que começam com a letra c:
ls c*
Apagar os arquivos que começam com a letra c seguida de mais um caracter qualquer:
rm c?
Tenha muito cuidado com o comando abaixo:
rm *
Copiar todos os arquivos que começam com uf para o diretório /u/ricardo:
cp uf* /u/ricardo
Remover os arquivos co1, co2 e co3 deixando co4 e co5 intactos: 
rm co[123]
Apagar os arquivos lot, cor, tom, boa:
rm [lctb]o[trma]
Listar os arquivos que começam com letras entre a e g:
ls [a-g]
	Símbolo
	É curinga?
	Função
	*
	sim
	Compara qualquer série de caracteres
	?
	sim
	Compara qualquer caractere simples
	[
	sim
	Introduz um grupo de caracteres
	]
	sim
	Termina um grupo de caracteres
	-
	não
	Indica o limite dos caracteres
	!
	sim
	Negação
	>
	não
	Redireção de saída
	<
	não
	Redireção de entrada
	&
	não
	Processamento em background
	$
	nãoMacros
�
Metacaracteres
São caracteres capazes de, com poucos caracteres, representar funções específicas para uma dada situação, na utilização com comandos:
	
CARACTER
	
FUNÇÃO
	<
	Avisa ao Shell que a entrada padrão não será o teclado, mas sim o arquivo especificado.
	
	<<
	Inclusão de dados. Indica ao Shell que o escopo de um comando começa na linha seguinte e termina quando encontra uma linha cujo conteúdo seja o label após o sinal <<. 
	>
	Redireciona a saída de um comando para um arquivo especificado, criando-o caso não exista ou destruindo-o caso exista. Deve-se ter muito cuidado ao se redirecionar a saída de um comando.
	>>
	Redireciona a saída de um comando para um arquivo especificado, anexando-o ao seu fim. Caso este arquivo não exista, será criado.
	;
	Processamento sequencial de comandos
	 
| 
	Este é o pipe, utilizado para direcionar a saída de um comando para a entrada de outro. Muito utilizado em processamento paralelo de comandos em conexão.
	&
	processamento paralelo de comandos em retaguarda
	&&
	conector lógico “ e “
	| |
	conector lógico “ ou “
Exemplos:
Inclusão de Dados
- um comando pode receber dados quando este vier seguido pelo caracter "<<" mais uma cadeia delimitadora, que indica o final da inclusão de dados.
$ ed provas << !
> g/reprovado/p
> !
- a partir de "<<!" tudo que for digitado até "!" será armazenado e enviado ao comando como sua entrada; no exemplo, o comando ED pesquisa no arquivo provas, todas as ocorrências da cadeia reprovado.
Sequência de Comandos Condicionais
- comandos do sistema separados por operadores condicionais.
&& = executa o próximo se o comando anterior for verdadeiro
|| = executa o próximo se o comando anterior for falso
Ex.: test -f arq.txt && imp arq (se o arquivo arq.txt existir então o arquivo
será impresso)
test -f arq.txt || echo "arquivo arq não existe" 
(se o arquivo arq.txt não existir, o comando echo será executado)
�PAGE �
�PAGE �80�
Versão 2006-2

Outros materiais