| Entradas e saídas Padrão no Shell |
|
|
|
| Escrito por Prof. Carlos A. Maziero |
| Ter, 25 de Janeiro de 2011 01:09 |
|
A maioria dos comandos UNIX pode comunicar-se com o sistema através de descritores de arquivos especiais conhecidos como entradas e saídas padrão. Eles são: ~> rev No exemplo, as linhas em azul indicam as saídas geradas pelo comando rev. O caractere ^D (Control-D) no final indica o final da entrada padrão (ou seja, o fim de arquivo). Ao receber esse caractere, o comando rev encerra sua execução, pois chegou ao final de seu arquivo de entrada (que neste caso é o teclado). Outro exemplo de uso da entrada e saída padrão é comando sort: ~> sort Normalmente o shell direciona a entrada padrão para o teclado e a saída padrão para a tela da sessão do usuário, mas ele pode ser instruído para redirecioná-las para arquivos ou mesmo para outros programas, como será visto na seqüência. Redireção para arquivos O shell pode redirecionar as entrada e saídas padrão de comandos para arquivos normais no disco, usando operadores de redireção, como mostra a figura abaixo: A sintaxe de redireção é específica para cada shell, isto é, não é a mesma entre o C-Shell e o Bourne Shell; aqui será apresentada a sintaxe do shell Bash. Os principais operadores de redireção para arquivos são: Saída em arquivo: a saída padrão (stdout) do comando é desviada para um arquivo usando o operador >: ~> ls > listagem.txt Entrada de arquivo: a entrada padrão (stdin) pode ser obtida a partir de um arquivo usando o operador <: ~> rev < listagem.txt Uso combinado: os dois operadores podem ser usados simultaneamente. ~> rev < listagem.txt > listrev.txt Concatenação: a saída padrão pode ser concatenada a um arquivo existente usando-se o operador », como mostra o exemplo: ~> ls /etc >> listagem.txt Saída de erros: a saída de erros (stderr) também pode ser redirecionada, através do operador 2> (que faz referência ao descritor 2): ~> ls /xpto > teste.txt As saídas padrão e de erro podem ser redirecionadas de forma independente: ~> ll /xpto /etc/passwd > acerto.txt 2> erro.txt Além disso, a saída de erro pode ser sobreposta à saída padrão:
Forçar um desvio: Caso a saída seja redirecionada para um arquivo já existente, o shell recusa a operação indicando o erro (somente se a variável noclobber estiver setada através do comando set -C). Essa operação pode ser forçada através do operador !:
Atenção: a sintaxe dos operadores de redireção depende do tipo de shell. Isso significa que a sintaxe de redireção do Bash e do C-Shell, embora similares, são diferentes. A sintaxe apresentada aqui corresponde ao shell Bash. Redireção usando pipes O shell permite a construção de comandos complexos através da combinação de vários comandos simples. O operador |, conhecido como pipe, ou tubo, permite conectar a saída padrão de um comando à entrada padrão de outro. Com isso, um mesmo fluxo de dados pode ser tratado por diversos comandos consecutivamente, como mostra a figura: É importante ressaltar que os comandos conectados são lançados simultaneamente pelo shell e executam ao mesmo tempo. O shell controla a execução de cada um para que não haja acumulo de dados entre os comandos (a cada pipe é associado um buffer de tamanho limitado). A sintaxe usada para redireção é simples. Eis alguns exemplos: ~> ls -l /etc | more Filtros
: qualquer programa que leia dados de stdin e escreva sua saída em stdout pode ser usado como filtro Exercícios Use o comando find para listar os proprietários de todos os arquivos dentro de /tmp (dica: use a opção -printf do comando find).
4.O arquivo /var/log/secure contém um registro de conexões de usuários ao servidor. Monte uma linha de comandos usando pipes para gerar uma listagem constando quantas vezes cada usuário se logou via SSH (shell seguro) no servidor durante este mês, ordenada por número de acessos, e armazene o resultado no arquivo users-ssh.txt. Siga os seguintes passos:
|
| Última atualização em Ter, 25 de Janeiro de 2011 01:26 |


