Shell script ii direcionadores

10

Click here to load reader

Transcript of Shell script ii direcionadores

Page 1: Shell script ii  direcionadores

Shell Script

Carlos Melo

Sistemas Operacionais

Page 2: Shell script ii  direcionadores

DirecionadoresDirecionadores de fluxo fazem o que o nome sugere:

direcionam o fluxo da saída dos programas, enviando-as para locais diferentes da saída padrão. Esses locais podem ser arquivos, dispositivos, processos e outros programas.

O direcionadores utilizados no GNU/Linux são: > (maior): Direciona a saída do comando para um arquivo, substituindo o seu conteúdo, caso o arquivo já exista;

>> (maior-maior): Direciona a saída do comando para um arquivo, adicionando o texto ao final do arquivo, caso ele já exista;

< (menor): Passa o conteúdo do arquivo como argumento para o comando;

2> (dois-maior): Direciona as saídas de erro geradas pelo programa para um arquivo, substituindo seu conteúdo, caso o arquivo já exista;

Page 3: Shell script ii  direcionadores

Direcionadores

2>> (dois-maior-maior): Direciona as saídas de erro geradas pelo programa para um arquivo, adicionando o texto ao final do arquivo, caso ele já exista;

&> (e-maior): Direciona todas as saídas (normal e de erro) para um arquivo, substituindo seu conteúdo, caso ele já exista;

&>> (e-maior-maior): Direciona todas as saídas (normal e de erro) para um arquivo, adicionando o texto ao final do arquivo, caso ele já exista;

| (barra vertical ou pipe): Utiliza a saída do primeiro comando como argumento do segundo comando.

Page 4: Shell script ii  direcionadores

O direcionador >

O direcionador > direciona a saída padrão de um comando para um arquivo. Caso o arquivo exista, o seu conteúdo é substituído.

$ ps aux > processos.list

Agora, nada é impresso no terminal. Por que? Porque a saída foi direcionada para o arquivo processos.list. Verifique o conteúdo do arquivo.

Page 5: Shell script ii  direcionadores

O direcionador 2>

Uma restrição ao uso do direcionador > é que ele não funciona para mensagens de erro. Por exemplo, vamos usar o comando ps aux usando como parâmetro um processo inexistente.

$ ls diretorio_inexistente > diretorios.list

Observe que, mesmo usando o direcionador >, a mensagem de erro foi exibida. Se visualizarmos o conteúdo do arquivo ls_out veremos que nada foi gravado.

Para gravar as mensagens de erro, devemos usar o direcionador 2>:

$ ls diretorio_inexistente 2> diretorios.list

Agora sim, nenhuma mensagem de erro foi exibida na tela, porque ela foi enviada para o arquivo diretorios.list, verifique o resultado.

Page 6: Shell script ii  direcionadores

O direcionador <

Uma função muito útil dos direcionadores é utilizar o conteúdo de arquivos como parâmetros de comandos. Para isso utilizamos o direcionador <. Como exemplo, vamos criar um lista de programas que devem ser executados em seqüência, no arquivo lista.exec, da seguinte forma:

$ cat lista.execlscat arquivo_inexistente

Agora, utilizamos o comando exec para executar os comandos listados no arquivo lista.exec, da seguinte forma:

$ exec < lista.exec

Page 7: Shell script ii  direcionadores

O direcionador <<Temos ainda o direcionador <<, utilizado para marcar o fim de

exibição de um bloco. Um dos usos mais freqüentes desse direcionador é em conjunto com o comando cat.

O comando abaixo termina o comando cat quando for digitada a palavra "fim":

$ cat << fim> O comando só termina> quando for digitada> a palavra especificada> depois do direcionador> <<, nesse caso, a palavra> é "fim"> fim

Page 8: Shell script ii  direcionadores

Exemplo:

Poderiámos usar isso para inserir texto em um arquivo sem precisar usar nenhum editor de texto. Vamos inserir, por exemplo, uma linha ao final do arquivo /etc/fstab:

$ cat << FIM >> /etc/fstab> /dev/sda /mnt/usb vfat rw,user,noauto,sync 0 0> FIM

Page 9: Shell script ii  direcionadores

O direcionador |

Por fim, temos o último direcionador, o |, também conhecido como pipe (duto, cano), utilizado para direcionar a saída de um comando para outro comando, e é utilizado todo o tempo para a realização de todo tipo de tarefas e procedimentos.

Um dos usos mais comuns do | é com os comandos ls e more (ou less), para ver o conteúdo de um diretório, quando este não cabe na tela, como o diretório /etc, por exemplo. Para que possamos ver todos os arquivos, direcionamos a saída do ls para o more, que faz a paginação do conteúdo:

$ ls /etc | more

Page 10: Shell script ii  direcionadores

Fim

Dúvidas?