Fundamentos do sistema Linux - direcionadores

Direcionadores 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. Nesse artigo veremos como utilizar os direcionadores do Linux para facilitar a vida do administrador de sistemas.

[ Hits: 92.845 ]

Por: Davidson Rodrigues Paulo em 26/06/2006 | Blog: http://davidsonpaulo.com/


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 /usr/bin/, 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 /usr/bin | more
[
411toppm
822-date
a2p
aaxine
aclocal
aclocal-1.4
aconnect
acpi
acpi_available
acpi_listen
activation-client
addr2line
alsamixer
amidi
amixer
anytopnm
aplay
aplaymidi
apm_available
apropos
apt-cache
apt-cdrom
--More--

Agora, basta pressionar Enter para rolar a lista, de forma que podemos ver todos os arquivos. O | pode usado também para diversas tarefas. Veja esse uso avançado do |, onde direcionamos vários comandos para instalar o OpenOffice.org e todos os seus pacotes para o português brasileiro (pt-br), através do APT, no Debian:

# apt-cache search openoffice |\
   grep pt-br |\
   cut -d' ' -f1 |\
   tr '\n' ' ' |\
   xargs apt-get install -y

Vamos entender agora cada comando executado.

Primeiramente, rodamos o comando apt-cache search openoffice. A saída desse comando é a seguinte:

# apt-cache search openoffice
boxshade - [Biology] Pretty-printing of multiple sequence alignments
dictionaries-common - Common utilities for spelling dictionary tools
dmake - make utility used to build OpenOffice.org
extract - displays meta-data from files of arbitrary type
fig2sxd - convert XFig files to OpenOffice.org format
gkrellm-hdplop - A hard drive activity monitor GKrellM plugin
gramps - Genealogical Research and Analysis Management Program
libaltlinuxhyph-dev - ALTLinux hyphenation library development files
libextractor1 - extracts meta-data from files of arbitrary type
libooolib-perl - Perl library for creating OpenOffice.org documents (calc/writer)
libspreadsheet-writeexcel-perl - create Excel spreadsheets
myspell-bg - The Bulgarian dictionary for myspell
myspell-ca - Catalan dictionary for myspell
myspell-de-at - Austrian (German) dictionary for myspell
myspell-de-ch - Swiss (German) dictionary for myspell
myspell-de-de - German dictionary for myspell
myspell-de-de-oldspell - German dictionary for myspell (old orthography)
myspell-el-gr - Greek (el_GR) dictionary for myspell
myspell-en-gb - English (GB) dictionary for myspell
myspell-en-us - English (US) dictionary for myspell
myspell-eo - The Esperanto dictionary for myspell
myspell-es - The Spanish dictionary for myspell
myspell-fi - The Finnish dictionary for myspell
myspell-fr-gut - The French dictionary for myspell (GUTenberg version)
myspell-ga - An Irish (Gaeilge) dictionary for OpenOffice and Mozilla
myspell-gd - Scots Gaelic dictionary for myspell
myspell-gl-es - Galician dictionary for myspell
myspell-gv - Manx Gaelic dictionary for myspell
myspell-he - Hebrew dictionary for myspell
myspell-hu - The Hungarian dictionary for myspell
myspell-it - Italian dictionary for myspell
myspell-lt - myspell dictionary for Lithuanian (LT)
myspell-lv - Latvian MySpell dictionary
myspell-nb - Norwegian bokm�¥l dictionary for myspell
myspell-nl - Dutch dictionary for myspell
myspell-nn - Norwegian nynorsk dictionary for myspell
myspell-pl - The Polish dictionary for myspell
myspell-pt-br - The Brazilian Portuguese dictionary for myspell
myspell-ru - The Russian dictionary for myspell
myspell-sl - Slovenian dictionary for myspell
myspell-sv-se - Swedish (SE) dictionary for myspell
myspell-uk - Ukrainian dictionary for myspell
oooqs-kde - OpenOffice.org QuickStarter applet for KDE
ooqstart-gnome - OpenOffice.org QuickStarter applet for GNOME 2
openoffice.org - high-quality office productivity suite
openoffice.org-bin - OpenOffice.org office suite binary files
openoffice.org-debian-files - Debian specific parts of OpenOffice.org
openoffice.org-dev - OpenOffice.org SDK - development files
openoffice.org-dev-doc - OpenOffice.org SDK - documentation and examples
openoffice.org-evolution - Evolution 2 Addressbook support for OpenOffice.org
openoffice.org-gnomevfs - GNOME VFS support for OpenOffice.org
openoffice.org-gtk-gnome - Gtk UI Plugin and GNOME File Picker for OpenOffice.org
openoffice.org-help-de - OpenOffice.org office suite help (German)
openoffice.org-help-el - OpenOffice.org office suite help (Greek)
openoffice.org-help-en - OpenOffice.org office suite help (English)
openoffice.org-help-es - OpenOffice.org office suite help (Spanish)
openoffice.org-help-fr - OpenOffice.org office suite help (French)
openoffice.org-help-it - OpenOffice.org office suite help (Italian)
openoffice.org-help-ja - OpenOffice.org office suite help (Japanese)
openoffice.org-help-ko - OpenOffice.org office suite help (Korean)
openoffice.org-help-pt-br - OpenOffice.org office suite help (Brazilian Portuguese)
openoffice.org-help-sv - OpenOffice.org office suite help (Swedish)
openoffice.org-help-tr - OpenOffice.org office suite help (Turkish
openoffice.org-help-zh-cn - OpenOffice.org office suite help (simplified Chinese)
openoffice.org-help-zh-tw - OpenOffice.org office suite help (traditional Chinese)
openoffice.org-kde - KDE UI Plugin and KDE File Picker for OpenOffice.org
openoffice.org-l10n-af - Afrikaans language package for OpenOffice.org
openoffice.org-l10n-ar - Arabic language package for OpenOffice.org
openoffice.org-l10n-ca - Catalan language package for OpenOffice.org
openoffice.org-l10n-cs - Czech language package for OpenOffice.org
openoffice.org-l10n-cy - Welsh language package for OpenOffice.org
openoffice.org-l10n-da - Danish language package for OpenOffice.org
openoffice.org-l10n-de - German language package for OpenOffice.org
openoffice.org-l10n-el - Greek language package for OpenOffice.org
openoffice.org-l10n-en - English (US) language package for OpenOffice.org
openoffice.org-l10n-es - Spanish language package for OpenOffice.org
openoffice.org-l10n-et - Estonian language package for OpenOffice.org
openoffice.org-l10n-eu - Basque language package for OpenOffice.org
openoffice.org-l10n-fi - Finnish language package for OpenOffice.org
openoffice.org-l10n-fr - French language package for OpenOffice.org
openoffice.org-l10n-gl - Galician language package for OpenOffice.org
openoffice.org-l10n-he - Hebrew language package for OpenOffice.org
openoffice.org-l10n-hi - Hindi language package for OpenOffice.org
openoffice.org-l10n-hu - Hungarian language package for OpenOffice.org
openoffice.org-l10n-it - Italian language package for OpenOffice.org
openoffice.org-l10n-ja - Japanese language package for OpenOffice.org
openoffice.org-l10n-kn - Kannada language package for OpenOffice.org
openoffice.org-l10n-ko - Korean language package for OpenOffice.org
openoffice.org-l10n-lt - Lithuanian language package for OpenOffice.org
openoffice.org-l10n-nb - Norwegian Bokmal language package for OpenOffice.org
openoffice.org-l10n-nl - Dutch language package for OpenOffice.org
openoffice.org-l10n-nn - Norwegian Nynorsk language package for OpenOffice.org
openoffice.org-l10n-ns - Northern Sotho language package for OpenOffice.org
openoffice.org-l10n-pl - Polish language package for OpenOffice.org
openoffice.org-l10n-pt - Portuguese language package for OpenOffice.org
openoffice.org-l10n-pt-br - Portuguese (Brazil) language package for OpenOffice.org
openoffice.org-l10n-ru - Russian language package for OpenOffice.org
openoffice.org-l10n-sk - Slovak language package for OpenOffice.org
openoffice.org-l10n-sl - Slovenian language package for OpenOffice.org
openoffice.org-l10n-sv - Swedish language package for OpenOffice.org
openoffice.org-l10n-th - Thai language package for OpenOffice.org
openoffice.org-l10n-tn - Tswana language package for OpenOffice.org
openoffice.org-l10n-tr - Turkish language package for OpenOffice.org
openoffice.org-l10n-zh-cn - Chinese Simplified language package for OpenOffice.org
openoffice.org-l10n-zh-tw - Chinese Traditional language package for OpenOffice.org
openoffice.org-l10n-zu - Zulu language package for OpenOffice.org
openoffice.org-mimelnk - OpenOffice.org MIME bindings for KDE
openoffice.org-thesaurus-de - German Thesaurus for OpenOffice.org
openoffice.org-thesaurus-en-us - English (US) Thesaurus for OpenOffice.org
openoffice.org-thesaurus-it - Italian Thesaurus for OpenOffice.org
tex4ht - LaTeX and TeX for Hypertext (HTML)
ttf-opensymbol - The OpenSymbol TrueType font
wmhdplop - A hard drive activity monitor dockapp
wpd2sxw - WordPerfect to OpenOffice.org converter
zope-textindexng2 - full text index for Zope
mozilla-mplayer - MPlayer-Plugin for Mozilla, Konqueror and OpenOffice.org
openoffice.org-hyphenation-da - Danish hyphenation pattern for OpenOffice.org
openoffice.org-hyphenation-de - German hyphenation pattern for OpenOffice.org
openoffice.org-hyphenation-en-gb - English (GB) hyphenation pattern for OpenOffice.org
openoffice.org-hyphenation-en-us - English (US) hyphenation pattern for OpenOffice.org
openoffice.org-hyphenation-it - Italian hyphenation pattern for OpenOffice.org
openoffice.org-hyphenation-ru - Russian hyphenation pattern for OpenOffice.org

Realmente, uma lista muito grande. Temos muitos pacotes específicos para outros idiomas. Como estamos no Brasil, interessa-nos somente os pacotes para o português brasileiro. Para isso, utilizamos o comando grep, para só exibir as linhas onde aparecer o padrão "pt-br", sigla de "português brasileiro":

# apt-cache search openoffice | grep pt-br
myspell-pt-br - The Brazilian Portuguese dictionary for myspell
openoffice.org-help-pt-br - OpenOffice.org office suite help (Brazilian Portuguese)
openoffice.org-l10n-pt-br - Portuguese (Brazil) language package for OpenOffice.org

A lista já está consideravelmente menor. Agora, vamos filtrar essa lista para que ela possa ser utilizada pelo apt-get. Primeiramente, usamos o comando cut para excluir a descrição do arquivo, deixando somente o nome do pacote:

# apt-cache search openoffice | grep pt-br | cut -d' ' -f1
myspell-pt-br
openoffice.org-help-pt-br
openoffice.org-l10n-pt-br

Agora, temos somente os nomes dos pacotes. Precisamos agora colocá-los em seqüência, separados por espaços. Para isso, vamos usar o comando tr, para substituir os caracteres de novas linhas (\n) por espaços:

# apt-cache search openoffice | grep pt-br | cut -d' ' -f1 |\
   tr '\n' ' '
myspell-pt-br openoffice.org-help-pt-br openoffice.org-l10n-pt-br

Agora, basta jogar essa linha como argumentos para o comando apt-get install -y. Para isso, usamos o comando xargs:

# apt-cache search openoffice |\
   grep pt-br |\
   cut -d' ' -f1 |\
   tr '\n' ' ' |\
   xargs apt-get install -y

Esse comando acima é equivalente a:

# apt-get install -y myspell-pt-br openoffice.org-help-pt-br \
   openoffice.org-l10n-pt-br

Dessa forma, o direcionador | nos poupou um enorme trabalho. Imagine se você tivesse que procurar em toda a lista gerada pelo apt-cache search openoffice pelos pacotes que você quer, anotar seus nomes e depois utilizar o apt-get install -y, digitando o nome de cada pacote. Muito mais trabalho. Com o | fazemos a mesma coisa com apenas um comando!

Página anterior     Próxima página

Páginas do artigo
   1. Introdução
   2. O direcionador >
   3. O direcionador 2>
   4. O direcionador &>
   5. Os direcionadores >>, 2>> e &>>
   6. O direcionador <
   7. O direcionador <<
   8. O direcionador |
   9. O comando tee
Outros artigos deste autor

Hyperic HQ: monitore sua rede like a boss

Fundamentos do sistema Linux: discos e partições

Instalando e atualizando pacotes no Fedora em computadores sem internet

Fundamentos do sistema Linux - Gerenciadores de inicialização

Seu Slackware atualizado com SWARET

Leitura recomendada

Porque o XFCE é tão bom

Concatenação, conexão e recursividade de comandos no GNU/Linux

O que é o Linux

Caracteristica e descrição das principais distribuições Linux

Arch Linux: Uma distribuição otimizada para i686

  
Comentários
[1] Comentário enviado por JuNiOx em 26/06/2006 - 09:51h

muito bom, bem explicado.
direcionadores é matéria para LPI, caso alguém tiver interesse.

valeu

[2] Comentário enviado por jllitvay em 26/06/2006 - 10:58h

Muit bom o artigo, mas , me ajudem:

Como eu executo um comando em um terminal tty1
mas que a execução e saída do comando se dê no tty2.

Obrigado

[3] Comentário enviado por davidsonpaulo em 26/06/2006 - 11:21h

Salve, jllitvay!

Bom, você pode fazer o seguinte:

$ [comando] &> /dev/tty2 &

Onde:

* comando: o comando que você quer executar, com todos os parâmetros;
* &> /dev/tty2: envia todas a saída do programa para o tty2 (você tem ue ter permissão de escrita no tty2);
* &: roda o programa em plano de fundo, para que o tty atual fique livre para executar mais comandos.

Eu testei aqui. Abri um terminal gráfico e executei o comando:

# ls -R / &> /dev/tty6 &

O terminal ficou livre e, ao ir para o /dev/tty6, eis que lá estava aparecendo a saída do comando ls -R /.

Abraços,

Davidson


[4] Comentário enviado por removido em 26/06/2006 - 14:35h

Muito bom artigo sobre um tema pouco abordado. Bastante oportuno.

[5] Comentário enviado por wanderleihuttel em 27/06/2006 - 09:13h

Cara muito bom mesmo este artigo. Não conhecia o "tr", para excluir caracteres. Agora acho que vu conseguir fazer um relatório no meu arquivo secure, bem legal.

Valeu

[6] Comentário enviado por agk em 28/06/2006 - 09:03h

Parabéns, muito bom esse artigo.

[7] Comentário enviado por JuNiOx em 20/07/2006 - 02:29h

algumas partes estão muito parecidas com o guiafoca, a descrição do ">>" está idêntica.
creio que poderia ter citado também nos "créditos" caso tenha retirado de lá também.

até mais

[8] Comentário enviado por davidsonpaulo em 20/07/2006 - 17:19h

Descrição do direcionador >>, de acordo com o Guia Foca Linux Iniciante, versão online:

"Redireciona a saída de um programa/comando/script para algum dispositivo ou final de arquivo ao invés do dispositivo de saída padrão (tela). A diferença entre este redirecionamento duplo e o simples, é se caso for usado com arquivos, adiciona a saída do comando ao final do arquivo existente ao invés de substituir seu conteúdo. .

Por exemplo, você pode acrescentar a saída do comando ls ao arquivo listagem do capítulo anterior usando ls / >>listagem. Use o comando cat para visualizar o conteúdo do arquivo listagem."

http://www.guiafoca.org/guia/iniciante/ch-redir.htm#s-redir-maior2

Sinto muito desapontá-lo, JuNiOx, mas eu não extraí nada do que está nesse artigo do Guia Foca Linux, as diferenças entre os dois textos são gritantes e as semelhanças são coisa da sua cabeça.

[9] Comentário enviado por volcom em 26/08/2009 - 10:52h

Ahhhhh!!

Eu já estava usando tooooodos os direcionadores, mas o tee me salvou a pele pra executar um Script enviando as mensagens para a tela e para o arquivo de log ao mesmo tempo...

Ops, mas o tee sobrescreve o arquivo anterior...para resolver isso usei a opção tee -a para ele adicionar/concatenar o conteúdo!

Muito bom!

[10] Comentário enviado por doradu em 08/02/2010 - 18:52h

marquei pra ler mais tarde

[11] Comentário enviado por gilsoncwb em 09/01/2012 - 16:35h

Muito legal seu exemplo , parabens !

[12] Comentário enviado por gustavo_logicus em 28/04/2013 - 12:16h

Muito bacana o artigo! Parabéns!

[13] Comentário enviado por crivellari em 22/07/2014 - 09:08h

Olá tenho uma pequena dúvida
O direcionador 2>&1 é igual a &> (pelo menos fazem a mesma função)
Pelo que vejo nos exemplos e descrição que procurei na net. Quando usar um e quando usar ou outro?
Agradeço antecipadamente pela ajuda.
Um grande abraço
Crivellari


Contribuir com comentário